Salome HOME
Update of CheckDone master
authoryoann.audouin <yoann.audouin@edf.fr>
Thu, 21 Mar 2024 14:25:31 +0000 (15:25 +0100)
committeryoann.audouin <yoann.audouin@edf.fr>
Thu, 21 Mar 2024 14:25:31 +0000 (15:25 +0100)
Removed the isDone argument using cxx isComputedOK instead (now in the
idl)
Corrected a bug when doing multiple compute checkCompute was not
properly removed.

3349 files changed:
CMakeLists.txt
CTestTestfileInstall.cmake.in [new file with mode: 0644]
README
SMESH_version.h.in
SalomeSMESHConfig.cmake.in
adm_local/CMakeLists.txt
adm_local/unix/CMakeLists.txt
adm_local/unix/config_files/CMakeLists.txt
adm_local/unix/config_files/check_Platform.m4
adm_local/unix/config_files/check_SMESH.m4
adm_local/unix/config_files/check_cgal.m4
adm_local/unix/config_files/check_cgns.m4
adm_local/unix/config_files/check_f77.m4
adm_local/unix/config_files/check_padder.m4
adm_local/unix/config_files/check_qwt.m4
bin/CMakeLists.txt
bin/smesh_setenv.py
bin/smesh_test.py
bin/smesh_wget.py [new file with mode: 0644]
doc/CMakeLists.txt
doc/examples/0README [new file with mode: 0644]
doc/examples/CMakeLists.txt [new file with mode: 0644]
doc/examples/CTestTestfileInstall.cmake [new file with mode: 0644]
doc/examples/MGAdaptTests_without_session.py [new file with mode: 0644]
doc/examples/a3DmeshOnModified2Dmesh.py [new file with mode: 0644]
doc/examples/cartesian_algo.py [new file with mode: 0644]
doc/examples/create_dual_mesh.py [new file with mode: 0644]
doc/examples/creating_meshes_ex01.py [new file with mode: 0644]
doc/examples/creating_meshes_ex02.py [new file with mode: 0644]
doc/examples/creating_meshes_ex03.py [new file with mode: 0644]
doc/examples/creating_meshes_ex04.py [new file with mode: 0644]
doc/examples/creating_meshes_ex05.py [new file with mode: 0644]
doc/examples/creating_meshes_ex06.py [new file with mode: 0644]
doc/examples/creating_meshes_ex07.py [new file with mode: 0644]
doc/examples/creating_meshes_ex08.py [new file with mode: 0644]
doc/examples/creating_parallel_2D_mesh.py [new file with mode: 0644]
doc/examples/creating_parallel_gmsh_mesh.py [new file with mode: 0644]
doc/examples/creating_parallel_mesh.py [new file with mode: 0644]
doc/examples/data/test_01.med [new file with mode: 0644]
doc/examples/data/test_02.med [new file with mode: 0644]
doc/examples/data/test_02_bg.med [new file with mode: 0644]
doc/examples/data/test_04.med [new file with mode: 0644]
doc/examples/data/test_06.med [new file with mode: 0644]
doc/examples/data/test_07.med [new file with mode: 0644]
doc/examples/data/test_08.med [new file with mode: 0644]
doc/examples/data/test_08_bg.med [new file with mode: 0644]
doc/examples/data/test_10.med [new file with mode: 0644]
doc/examples/data/test_11.med [new file with mode: 0644]
doc/examples/data/test_13.med [new file with mode: 0644]
doc/examples/data/test_homard_adapt.med [new file with mode: 0644]
doc/examples/data/tutorial_4.00.med [new file with mode: 0644]
doc/examples/data/tutorial_4.xao [new file with mode: 0644]
doc/examples/data/tutorial_5.00.med [new file with mode: 0644]
doc/examples/data/tutorial_5.fr.med [new file with mode: 0644]
doc/examples/defining_hypotheses_adaptive1d.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex01.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex02.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex03.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex04.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex05.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex06.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex07.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex08.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex09.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex10.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex11.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex12.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex13.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex14.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex15.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex16.py [new file with mode: 0644]
doc/examples/defining_hypotheses_ex17.py [new file with mode: 0644]
doc/examples/defining_hypotheses_len_near_vertex.py [new file with mode: 0644]
doc/examples/defining_hypotheses_vlapi_ex17.py [new file with mode: 0644]
doc/examples/filters_belong2group.py [new file with mode: 0644]
doc/examples/filters_ex01.py [new file with mode: 0644]
doc/examples/filters_ex02.py [new file with mode: 0644]
doc/examples/filters_ex03.py [new file with mode: 0644]
doc/examples/filters_ex04.py [new file with mode: 0644]
doc/examples/filters_ex05.py [new file with mode: 0644]
doc/examples/filters_ex06.py [new file with mode: 0644]
doc/examples/filters_ex07.py [new file with mode: 0644]
doc/examples/filters_ex08.py [new file with mode: 0644]
doc/examples/filters_ex09.py [new file with mode: 0644]
doc/examples/filters_ex10.py [new file with mode: 0644]
doc/examples/filters_ex11.py [new file with mode: 0644]
doc/examples/filters_ex12.py [new file with mode: 0644]
doc/examples/filters_ex13.py [new file with mode: 0644]
doc/examples/filters_ex14.py [new file with mode: 0644]
doc/examples/filters_ex15.py [new file with mode: 0644]
doc/examples/filters_ex16.py [new file with mode: 0644]
doc/examples/filters_ex17.py [new file with mode: 0644]
doc/examples/filters_ex18.py [new file with mode: 0644]
doc/examples/filters_ex19.py [new file with mode: 0644]
doc/examples/filters_ex20.py [new file with mode: 0644]
doc/examples/filters_ex21.py [new file with mode: 0644]
doc/examples/filters_ex22.py [new file with mode: 0644]
doc/examples/filters_ex23.py [new file with mode: 0644]
doc/examples/filters_ex24.py [new file with mode: 0644]
doc/examples/filters_ex25.py [new file with mode: 0644]
doc/examples/filters_ex26.py [new file with mode: 0644]
doc/examples/filters_ex27.py [new file with mode: 0644]
doc/examples/filters_ex28.py [new file with mode: 0644]
doc/examples/filters_ex29.py [new file with mode: 0644]
doc/examples/filters_ex30.py [new file with mode: 0644]
doc/examples/filters_ex31.py [new file with mode: 0644]
doc/examples/filters_ex32.py [new file with mode: 0644]
doc/examples/filters_ex33.py [new file with mode: 0644]
doc/examples/filters_ex34.py [new file with mode: 0644]
doc/examples/filters_ex35.py [new file with mode: 0644]
doc/examples/filters_ex36.py [new file with mode: 0644]
doc/examples/filters_ex37.py [new file with mode: 0644]
doc/examples/filters_ex38.py [new file with mode: 0644]
doc/examples/filters_ex39.py [new file with mode: 0644]
doc/examples/filters_ex40.py [new file with mode: 0644]
doc/examples/filters_ex41.py [new file with mode: 0644]
doc/examples/filters_node_nb_conn.py [new file with mode: 0644]
doc/examples/generate_flat_elements.py [new file with mode: 0644]
doc/examples/grouping_elements_ex01.py [new file with mode: 0644]
doc/examples/grouping_elements_ex02.py [new file with mode: 0644]
doc/examples/grouping_elements_ex03.py [new file with mode: 0644]
doc/examples/grouping_elements_ex04.py [new file with mode: 0644]
doc/examples/grouping_elements_ex05.py [new file with mode: 0644]
doc/examples/grouping_elements_ex06.py [new file with mode: 0644]
doc/examples/grouping_elements_ex07.py [new file with mode: 0644]
doc/examples/grouping_elements_ex08.py [new file with mode: 0644]
doc/examples/grouping_elements_ex09.py [new file with mode: 0644]
doc/examples/measurements_ex01.py [new file with mode: 0644]
doc/examples/measurements_ex02.py [new file with mode: 0644]
doc/examples/measurements_ex03.py [new file with mode: 0644]
doc/examples/measurements_ex04.py [new file with mode: 0644]
doc/examples/mechanic.py [new file with mode: 0644]
doc/examples/mesh_3d.py [new file with mode: 0644]
doc/examples/modifying_meshes_cut_triangles.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex01.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex02.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex03.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex04.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex05.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex06.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex07.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex08.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex09.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex10.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex11.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex12.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex13.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex15.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex16.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex17.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex18.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex19.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex20.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex21.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex22.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex23.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex24.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex25.py [new file with mode: 0644]
doc/examples/modifying_meshes_ex26.py [new file with mode: 0644]
doc/examples/modifying_meshes_split_vol.py [new file with mode: 0644]
doc/examples/notebook_smesh.py [new file with mode: 0644]
doc/examples/prism_3d_algo.py [new file with mode: 0644]
doc/examples/quad_medial_axis_algo.py [new file with mode: 0644]
doc/examples/quality_controls_defl.py [new file with mode: 0644]
doc/examples/quality_controls_ex01.py [new file with mode: 0644]
doc/examples/quality_controls_ex02.py [new file with mode: 0644]
doc/examples/quality_controls_ex03.py [new file with mode: 0644]
doc/examples/quality_controls_ex04.py [new file with mode: 0644]
doc/examples/quality_controls_ex05.py [new file with mode: 0644]
doc/examples/quality_controls_ex06.py [new file with mode: 0644]
doc/examples/quality_controls_ex07.py [new file with mode: 0644]
doc/examples/quality_controls_ex08.py [new file with mode: 0644]
doc/examples/quality_controls_ex09.py [new file with mode: 0644]
doc/examples/quality_controls_ex10.py [new file with mode: 0644]
doc/examples/quality_controls_ex11.py [new file with mode: 0644]
doc/examples/quality_controls_ex12.py [new file with mode: 0644]
doc/examples/quality_controls_ex13.py [new file with mode: 0644]
doc/examples/quality_controls_ex14.py [new file with mode: 0644]
doc/examples/quality_controls_ex15.py [new file with mode: 0644]
doc/examples/quality_controls_ex16.py [new file with mode: 0644]
doc/examples/quality_controls_ex17.py [new file with mode: 0644]
doc/examples/quality_controls_ex18.py [new file with mode: 0644]
doc/examples/quality_controls_ex19.py [new file with mode: 0644]
doc/examples/quality_controls_ex20.py [new file with mode: 0644]
doc/examples/quality_controls_ex21.py [new file with mode: 0644]
doc/examples/quality_controls_ex22.py [new file with mode: 0644]
doc/examples/quality_controls_ex23.py [new file with mode: 0644]
doc/examples/quality_controls_ex24.py [new file with mode: 0644]
doc/examples/radial_prism_3d_algo.py [new file with mode: 0644]
doc/examples/split_biquad.py [new file with mode: 0644]
doc/examples/test_homard_adapt.py [new file with mode: 0644]
doc/examples/test_uniform_refinement.py [new file with mode: 0644]
doc/examples/tests.set [new file with mode: 0644]
doc/examples/transforming_meshes_ex01.py [new file with mode: 0644]
doc/examples/transforming_meshes_ex02.py [new file with mode: 0644]
doc/examples/transforming_meshes_ex03.py [new file with mode: 0644]
doc/examples/transforming_meshes_ex04.py [new file with mode: 0644]
doc/examples/transforming_meshes_ex05.py [new file with mode: 0644]
doc/examples/transforming_meshes_ex06.py [new file with mode: 0644]
doc/examples/transforming_meshes_ex07.py [new file with mode: 0644]
doc/examples/transforming_meshes_ex08.py [new file with mode: 0644]
doc/examples/transforming_meshes_ex09.py [new file with mode: 0644]
doc/examples/transforming_meshes_ex10.py [new file with mode: 0644]
doc/examples/transforming_meshes_ex11.py [new file with mode: 0644]
doc/examples/transforming_meshes_ex12.py [new file with mode: 0644]
doc/examples/transforming_meshes_ex13.py [new file with mode: 0644]
doc/examples/transforming_meshes_ex14.py [new file with mode: 0644]
doc/examples/transforming_meshes_ex15.py [new file with mode: 0644]
doc/examples/use_existing_faces.py [new file with mode: 0644]
doc/examples/viewing_meshes_ex01.py [new file with mode: 0644]
doc/examples/viewing_meshes_ex02.py [new file with mode: 0644]
doc/examples/viewing_meshes_ex03.py [new file with mode: 0644]
doc/gui/CMakeLists.txt [new file with mode: 0644]
doc/gui/collect_mesh_methods.py [new file with mode: 0755]
doc/gui/conf.py.in [new file with mode: 0644]
doc/gui/images/2d_from_3d_dlg.png [new file with mode: 0644]
doc/gui/images/2d_from_3d_example.png [new file with mode: 0644]
doc/gui/images/2d_from_3d_ico.png [new file with mode: 0644]
doc/gui/images/2d_from_3d_menu.png [new file with mode: 0644]
doc/gui/images/2d_mesh_from_3d_elements.jpg [new file with mode: 0644]
doc/gui/images/2d_mesh_from_3d_elements_dlg.png [new file with mode: 0644]
doc/gui/images/2d_mesh_from_3d_elements_icon.png [new file with mode: 0644]
doc/gui/images/Clipping_Absolute.png [new file with mode: 0644]
doc/gui/images/Clipping_Relative.png [new file with mode: 0644]
doc/gui/images/Nut_sharp_edges.png [new file with mode: 0644]
doc/gui/images/a-arithmetic1d.png [new file with mode: 0644]
doc/gui/images/a-averagelength.png [new file with mode: 0644]
doc/gui/images/a-clipping2.png [new file with mode: 0644]
doc/gui/images/a-creategroup.png [new file with mode: 0644]
doc/gui/images/a-createpolyhedralvolume.png [new file with mode: 0644]
doc/gui/images/a-cuttingofquadrangles.png [new file with mode: 0644]
doc/gui/images/a-deflection1d.png [new file with mode: 0644]
doc/gui/images/a-filteronfaces.png [new file with mode: 0644]
doc/gui/images/a-geometric1d.png [new file with mode: 0644]
doc/gui/images/a-maxelarea.png [new file with mode: 0644]
doc/gui/images/a-maxelvolume.png [new file with mode: 0644]
doc/gui/images/a-maxsize1d.png [new file with mode: 0644]
doc/gui/images/a-nbsegments1.png [new file with mode: 0644]
doc/gui/images/a-nbsegments2.png [new file with mode: 0644]
doc/gui/images/a-patterntype.png [new file with mode: 0644]
doc/gui/images/a-patterntype1.png [new file with mode: 0644]
doc/gui/images/a-standmeshinfo.png [new file with mode: 0644]
doc/gui/images/a-startendlength.png [new file with mode: 0644]
doc/gui/images/a-transparency.png [new file with mode: 0644]
doc/gui/images/a-unionoftriangles.png [new file with mode: 0644]
doc/gui/images/a-viewgeneral.png [new file with mode: 0644]
doc/gui/images/adaptation_01.png [new file with mode: 0644]
doc/gui/images/adaptation_02.png [new file with mode: 0644]
doc/gui/images/adaptation_with_homard_advanced.png [new file with mode: 0644]
doc/gui/images/adaptation_with_homard_arguments.png [new file with mode: 0644]
doc/gui/images/adaptation_with_homard_boundary_analytical.png [new file with mode: 0644]
doc/gui/images/adaptation_with_homard_boundary_cao.png [new file with mode: 0644]
doc/gui/images/adaptation_with_homard_boundary_discrete.png [new file with mode: 0644]
doc/gui/images/adaptation_with_homard_boundary_groups.png [new file with mode: 0644]
doc/gui/images/adaptive1d.png [new file with mode: 0644]
doc/gui/images/adaptive1d_sample_mesh.png [new file with mode: 0644]
doc/gui/images/add.gif [new file with mode: 0644]
doc/gui/images/add.png [new file with mode: 0644]
doc/gui/images/add0delement.png [new file with mode: 0644]
doc/gui/images/add_0delement.png [new file with mode: 0644]
doc/gui/images/add_ball.png [new file with mode: 0644]
doc/gui/images/add_edge.png [new file with mode: 0644]
doc/gui/images/add_node.png [new file with mode: 0644]
doc/gui/images/add_node_on_face-dlg.png [new file with mode: 0644]
doc/gui/images/add_node_on_face.png [new file with mode: 0644]
doc/gui/images/add_node_on_segment-dlg.png [new file with mode: 0644]
doc/gui/images/add_node_on_segment.png [new file with mode: 0644]
doc/gui/images/add_polygone.png [new file with mode: 0644]
doc/gui/images/add_polyhedron.png [new file with mode: 0644]
doc/gui/images/add_quadrangle.png [new file with mode: 0644]
doc/gui/images/add_triangle.png [new file with mode: 0644]
doc/gui/images/addball.png [new file with mode: 0644]
doc/gui/images/addedge.png [new file with mode: 0644]
doc/gui/images/addhexahedron.png [new file with mode: 0644]
doc/gui/images/addinfo_group.png [new file with mode: 0644]
doc/gui/images/addinfo_mesh.png [new file with mode: 0644]
doc/gui/images/addinfo_submesh.png [new file with mode: 0644]
doc/gui/images/addnode.png [new file with mode: 0644]
doc/gui/images/addnode_notebook.png [new file with mode: 0644]
doc/gui/images/addpolygon.png [new file with mode: 0644]
doc/gui/images/addquadrangle.png [new file with mode: 0644]
doc/gui/images/addtetrahedron.png [new file with mode: 0644]
doc/gui/images/addtriangle.png [new file with mode: 0644]
doc/gui/images/advanced_mesh_infos.png [new file with mode: 0644]
doc/gui/images/analyticdensity.png [new file with mode: 0644]
doc/gui/images/angle_measure.png [new file with mode: 0644]
doc/gui/images/aqt.png [new file with mode: 0644]
doc/gui/images/automaticlength.png [new file with mode: 0644]
doc/gui/images/b-art_end_length.png [new file with mode: 0644]
doc/gui/images/b-erage_length.png [new file with mode: 0644]
doc/gui/images/b-flection1d.png [new file with mode: 0644]
doc/gui/images/b-ithmetic1d.png [new file with mode: 0644]
doc/gui/images/b-mberofsegments.png [new file with mode: 0644]
doc/gui/images/b-mesh_infos.png [new file with mode: 0644]
doc/gui/images/bare_border_faces_smpl.png [new file with mode: 0644]
doc/gui/images/bare_border_volumes_smpl.png [new file with mode: 0644]
doc/gui/images/basic_props.png [new file with mode: 0644]
doc/gui/images/before_clipping.png [new file with mode: 0644]
doc/gui/images/before_clipping_preview.png [new file with mode: 0644]
doc/gui/images/block_renumber_hyp.png [new file with mode: 0644]
doc/gui/images/bnd_box.png [new file with mode: 0644]
doc/gui/images/bnd_box_preview.png [new file with mode: 0644]
doc/gui/images/buildcompound.png [new file with mode: 0644]
doc/gui/images/buildcompound_groups.png [new file with mode: 0644]
doc/gui/images/cartesian3D_hyp.png [new file with mode: 0644]
doc/gui/images/cartesian3D_sphere.png [new file with mode: 0644]
doc/gui/images/cartesian_implement_edge.png [new file with mode: 0644]
doc/gui/images/choose_geom_selection_way.png [new file with mode: 0644]
doc/gui/images/circle_angles_after.png [new file with mode: 0644]
doc/gui/images/circle_simple_after.png [new file with mode: 0644]
doc/gui/images/circle_simple_before.png [new file with mode: 0644]
doc/gui/images/colors_size.png [new file with mode: 0644]
doc/gui/images/connectivity_edge.png [new file with mode: 0644]
doc/gui/images/connectivity_hex_prism.png [new file with mode: 0644]
doc/gui/images/connectivity_hexa.png [new file with mode: 0644]
doc/gui/images/connectivity_penta.png [new file with mode: 0644]
doc/gui/images/connectivity_polygon.png [new file with mode: 0644]
doc/gui/images/connectivity_polyhedron.png [new file with mode: 0644]
doc/gui/images/connectivity_pyramid.png [new file with mode: 0644]
doc/gui/images/connectivity_quad.png [new file with mode: 0644]
doc/gui/images/connectivity_tetra.png [new file with mode: 0644]
doc/gui/images/connectivity_tria.png [new file with mode: 0644]
doc/gui/images/controls_popup.png [new file with mode: 0644]
doc/gui/images/convert.png [new file with mode: 0644]
doc/gui/images/copy_mesh_dlg.png [new file with mode: 0644]
doc/gui/images/copy_mesh_icon.png [new file with mode: 0644]
doc/gui/images/crack_emulation_double_nodes.png [new file with mode: 0644]
doc/gui/images/crack_emulation_double_nodes_with_elems.png [new file with mode: 0644]
doc/gui/images/create_boundary_1.png [new file with mode: 0644]
doc/gui/images/create_boundary_an_1.png [new file with mode: 0644]
doc/gui/images/create_boundary_an_2.png [new file with mode: 0644]
doc/gui/images/create_boundary_an_3.png [new file with mode: 0644]
doc/gui/images/create_boundary_an_4.png [new file with mode: 0644]
doc/gui/images/create_boundary_an_co_1.png [new file with mode: 0644]
doc/gui/images/create_boundary_an_co_2.png [new file with mode: 0644]
doc/gui/images/create_boundary_an_cy.png [new file with mode: 0644]
doc/gui/images/create_boundary_an_sp.png [new file with mode: 0644]
doc/gui/images/create_boundary_an_to.png [new file with mode: 0644]
doc/gui/images/create_boundary_cao_1.png [new file with mode: 0644]
doc/gui/images/create_boundary_cao_2.png [new file with mode: 0644]
doc/gui/images/create_boundary_di_1.png [new file with mode: 0644]
doc/gui/images/create_boundary_di_2.png [new file with mode: 0644]
doc/gui/images/create_boundary_di_3.png [new file with mode: 0644]
doc/gui/images/create_dual_mesh_dlg.png [new file with mode: 0644]
doc/gui/images/create_dual_mesh_icon.png [new file with mode: 0644]
doc/gui/images/create_group.png [new file with mode: 0644]
doc/gui/images/create_groups_from_geometry.png [new file with mode: 0644]
doc/gui/images/creategroup.png [new file with mode: 0644]
doc/gui/images/creategroup_on_filter.png [new file with mode: 0644]
doc/gui/images/createmesh-inv.png [new file with mode: 0644]
doc/gui/images/createmesh-inv2.png [new file with mode: 0644]
doc/gui/images/createmesh-inv3.png [new file with mode: 0644]
doc/gui/images/ctrlinfo.png [new file with mode: 0644]
doc/gui/images/curvi_angles_after.png [new file with mode: 0644]
doc/gui/images/curvi_simple_after.png [new file with mode: 0644]
doc/gui/images/curvi_simple_before.png [new file with mode: 0644]
doc/gui/images/custom_point_marker.png [new file with mode: 0644]
doc/gui/images/cut_groups1.png [new file with mode: 0644]
doc/gui/images/cutgroups.png [new file with mode: 0644]
doc/gui/images/dataset_clipping.png [new file with mode: 0644]
doc/gui/images/deflection_2d.png [new file with mode: 0644]
doc/gui/images/deletegroups.png [new file with mode: 0644]
doc/gui/images/diagonalinversion.png [new file with mode: 0644]
doc/gui/images/diagram_parallel_mesh.png [new file with mode: 0644]
doc/gui/images/dialog.png [new file with mode: 0644]
doc/gui/images/dimgroup_0d.png [new file with mode: 0644]
doc/gui/images/dimgroup_1d.png [new file with mode: 0644]
doc/gui/images/dimgroup_2d.png [new file with mode: 0644]
doc/gui/images/dimgroup_dlg.png [new file with mode: 0644]
doc/gui/images/dimgroup_src.png [new file with mode: 0644]
doc/gui/images/dimgroup_tui1.png [new file with mode: 0644]
doc/gui/images/display_entity_choose_item.png [new file with mode: 0644]
doc/gui/images/display_entity_dlg.png [new file with mode: 0644]
doc/gui/images/distribution_of_layers.png [new file with mode: 0644]
doc/gui/images/distributionwithanalyticdensity.png [new file with mode: 0644]
doc/gui/images/distributionwithtabledensity.png [new file with mode: 0644]
doc/gui/images/dlg_0D_on_all_nodes.png [new file with mode: 0644]
doc/gui/images/double_faces.png [new file with mode: 0644]
doc/gui/images/double_nodes.png [new file with mode: 0644]
doc/gui/images/duplicate01.png [new file with mode: 0644]
doc/gui/images/duplicate02.png [new file with mode: 0644]
doc/gui/images/duplicate03.png [new file with mode: 0644]
doc/gui/images/duplicate04.png [new file with mode: 0644]
doc/gui/images/duplicate_nodes.png [new file with mode: 0644]
doc/gui/images/edge_wire_3d_after.png [new file with mode: 0644]
doc/gui/images/edge_wire_3d_before.png [new file with mode: 0644]
doc/gui/images/edge_wire_after.png [new file with mode: 0644]
doc/gui/images/edge_wire_before.png [new file with mode: 0644]
doc/gui/images/edit_mesh1.png [new file with mode: 0644]
doc/gui/images/edit_mesh_change_value_hyp.png [new file with mode: 0644]
doc/gui/images/edit_mesh_remove_hyp.png [new file with mode: 0644]
doc/gui/images/editgroup.png [new file with mode: 0644]
doc/gui/images/editing_groups1.png [new file with mode: 0644]
doc/gui/images/elem_info.png [new file with mode: 0644]
doc/gui/images/eleminfo1.png [new file with mode: 0644]
doc/gui/images/eleminfo2.png [new file with mode: 0644]
doc/gui/images/extr_along_wire_after.png [new file with mode: 0644]
doc/gui/images/extr_along_wire_before.png [new file with mode: 0644]
doc/gui/images/extru_rib_segs.png [new file with mode: 0644]
doc/gui/images/extrusion_along_path_dlg.png [new file with mode: 0644]
doc/gui/images/extrusion_box.png [new file with mode: 0644]
doc/gui/images/extrusion_groups.png [new file with mode: 0644]
doc/gui/images/extrusion_groups_res.png [new file with mode: 0644]
doc/gui/images/extrusionalongaline1.png [new file with mode: 0644]
doc/gui/images/extrusionalongaline2.png [new file with mode: 0644]
doc/gui/images/extrusionalongaline3.png [new file with mode: 0644]
doc/gui/images/extrusionbynormal_alongavgnorm.png [new file with mode: 0644]
doc/gui/images/extrusionbynormal_useonly.png [new file with mode: 0644]
doc/gui/images/failed_computation.png [new file with mode: 0644]
doc/gui/images/find_geom_by_mesh_elem.png [new file with mode: 0644]
doc/gui/images/findelement1.png [new file with mode: 0644]
doc/gui/images/findelement2.png [new file with mode: 0644]
doc/gui/images/findelement3.png [new file with mode: 0644]
doc/gui/images/formula1.png [new file with mode: 0644]
doc/gui/images/formula2.png [new file with mode: 0644]
doc/gui/images/formula4.png [new file with mode: 0644]
doc/gui/images/formula5.png [new file with mode: 0644]
doc/gui/images/free_borders1.png [new file with mode: 0644]
doc/gui/images/free_edges.png [new file with mode: 0644]
doc/gui/images/free_faces.png [new file with mode: 0644]
doc/gui/images/free_nodes.png [new file with mode: 0644]
doc/gui/images/ghs3dprl_parameters_basic.png [new file with mode: 0644]
doc/gui/images/groups_by_sharp_edges_dlg.png [new file with mode: 0644]
doc/gui/images/groups_in_OB.png [new file with mode: 0644]
doc/gui/images/hexa_ijk_mesh.png [new file with mode: 0644]
doc/gui/images/hyp_source_edges.png [new file with mode: 0644]
doc/gui/images/hyp_source_faces.png [new file with mode: 0644]
doc/gui/images/hypo_fixedpnt_dlg.png [new file with mode: 0644]
doc/gui/images/hypo_quad_params_1.png [new file with mode: 0644]
doc/gui/images/hypo_quad_params_2.png [new file with mode: 0644]
doc/gui/images/hypo_quad_params_dialog.png [new file with mode: 0644]
doc/gui/images/hypo_quad_params_dialog_corners.png [new file with mode: 0644]
doc/gui/images/hypo_quad_params_dialog_enf.png [new file with mode: 0644]
doc/gui/images/hypo_quad_params_dialog_vert.png [new file with mode: 0644]
doc/gui/images/hypo_quad_params_enfnodes_algo1.png [new file with mode: 0644]
doc/gui/images/hypo_quad_params_enfnodes_algo2.png [new file with mode: 0644]
doc/gui/images/hypo_quad_params_enfnodes_algo3.png [new file with mode: 0644]
doc/gui/images/hypo_quad_params_res.png [new file with mode: 0644]
doc/gui/images/hypo_quad_params_res_2.png [new file with mode: 0644]
doc/gui/images/hypo_radquad_dlg.png [new file with mode: 0644]
doc/gui/images/hypo_sets.png [new file with mode: 0644]
doc/gui/images/image10.jpg [new file with mode: 0644]
doc/gui/images/image101.png [new file with mode: 0644]
doc/gui/images/image105.gif [new file with mode: 0644]
doc/gui/images/image106.gif [new file with mode: 0644]
doc/gui/images/image120.png [new file with mode: 0644]
doc/gui/images/image121.png [new file with mode: 0644]
doc/gui/images/image122.png [new file with mode: 0644]
doc/gui/images/image123.gif [new file with mode: 0644]
doc/gui/images/image124.gif [new file with mode: 0644]
doc/gui/images/image125.gif [new file with mode: 0644]
doc/gui/images/image126.gif [new file with mode: 0644]
doc/gui/images/image127.gif [new file with mode: 0644]
doc/gui/images/image130.gif [new file with mode: 0644]
doc/gui/images/image131.gif [new file with mode: 0644]
doc/gui/images/image132.gif [new file with mode: 0644]
doc/gui/images/image133.gif [new file with mode: 0644]
doc/gui/images/image134.gif [new file with mode: 0644]
doc/gui/images/image135.gif [new file with mode: 0644]
doc/gui/images/image136.gif [new file with mode: 0644]
doc/gui/images/image137.gif [new file with mode: 0644]
doc/gui/images/image138.gif [new file with mode: 0644]
doc/gui/images/image143.gif [new file with mode: 0644]
doc/gui/images/image144.png [new file with mode: 0644]
doc/gui/images/image145.png [new file with mode: 0644]
doc/gui/images/image146.png [new file with mode: 0644]
doc/gui/images/image147.gif [new file with mode: 0644]
doc/gui/images/image148.gif [new file with mode: 0644]
doc/gui/images/image15.jpg [new file with mode: 0644]
doc/gui/images/image151.gif [new file with mode: 0644]
doc/gui/images/image152.png [new file with mode: 0644]
doc/gui/images/image154.png [new file with mode: 0644]
doc/gui/images/image155.gif [new file with mode: 0644]
doc/gui/images/image156.gif [new file with mode: 0644]
doc/gui/images/image157.gif [new file with mode: 0644]
doc/gui/images/image160.gif [new file with mode: 0644]
doc/gui/images/image161.png [new file with mode: 0644]
doc/gui/images/image22.jpg [new file with mode: 0644]
doc/gui/images/image23.jpg [new file with mode: 0644]
doc/gui/images/image24.gif [new file with mode: 0644]
doc/gui/images/image25.jpg [new file with mode: 0644]
doc/gui/images/image25.png [new file with mode: 0644]
doc/gui/images/image27.jpg [new file with mode: 0644]
doc/gui/images/image28.png [new file with mode: 0644]
doc/gui/images/image30.jpg [new file with mode: 0644]
doc/gui/images/image31.jpg [new file with mode: 0644]
doc/gui/images/image32.jpg [new file with mode: 0644]
doc/gui/images/image32.png [new file with mode: 0644]
doc/gui/images/image33.gif [new file with mode: 0644]
doc/gui/images/image34.png [new file with mode: 0644]
doc/gui/images/image35.png [new file with mode: 0644]
doc/gui/images/image36.jpg [new file with mode: 0644]
doc/gui/images/image36.png [new file with mode: 0644]
doc/gui/images/image37.jpg [new file with mode: 0644]
doc/gui/images/image37.png [new file with mode: 0644]
doc/gui/images/image38.jpg [new file with mode: 0644]
doc/gui/images/image38.png [new file with mode: 0644]
doc/gui/images/image39.png [new file with mode: 0644]
doc/gui/images/image40.png [new file with mode: 0644]
doc/gui/images/image41.gif [new file with mode: 0644]
doc/gui/images/image42.png [new file with mode: 0644]
doc/gui/images/image43.png [new file with mode: 0644]
doc/gui/images/image46.gif [new file with mode: 0644]
doc/gui/images/image49.png [new file with mode: 0644]
doc/gui/images/image5.jpg [new file with mode: 0644]
doc/gui/images/image50.gif [new file with mode: 0644]
doc/gui/images/image51.jpg [new file with mode: 0644]
doc/gui/images/image52.jpg [new file with mode: 0644]
doc/gui/images/image53.gif [new file with mode: 0644]
doc/gui/images/image55.gif [new file with mode: 0644]
doc/gui/images/image56.gif [new file with mode: 0644]
doc/gui/images/image56.jpg [new file with mode: 0644]
doc/gui/images/image58.png [new file with mode: 0644]
doc/gui/images/image59.png [new file with mode: 0644]
doc/gui/images/image63.png [new file with mode: 0644]
doc/gui/images/image64.png [new file with mode: 0644]
doc/gui/images/image67.png [new file with mode: 0644]
doc/gui/images/image7.jpg [new file with mode: 0644]
doc/gui/images/image70.jpg [new file with mode: 0644]
doc/gui/images/image70.png [new file with mode: 0644]
doc/gui/images/image71.jpg [new file with mode: 0644]
doc/gui/images/image71.png [new file with mode: 0644]
doc/gui/images/image74.gif [new file with mode: 0644]
doc/gui/images/image75.jpg [new file with mode: 0644]
doc/gui/images/image76.jpg [new file with mode: 0644]
doc/gui/images/image77.jpg [new file with mode: 0644]
doc/gui/images/image78.jpg [new file with mode: 0644]
doc/gui/images/image79.jpg [new file with mode: 0644]
doc/gui/images/image79.png [new file with mode: 0644]
doc/gui/images/image80.png [new file with mode: 0644]
doc/gui/images/image81.png [new file with mode: 0644]
doc/gui/images/image82.png [new file with mode: 0644]
doc/gui/images/image83.gif [new file with mode: 0644]
doc/gui/images/image84.png [new file with mode: 0644]
doc/gui/images/image86.jpg [new file with mode: 0644]
doc/gui/images/image88.gif [new file with mode: 0644]
doc/gui/images/image88.jpg [new file with mode: 0644]
doc/gui/images/image90.jpg [new file with mode: 0644]
doc/gui/images/image91.png [new file with mode: 0644]
doc/gui/images/image92.jpg [new file with mode: 0644]
doc/gui/images/image92.png [new file with mode: 0644]
doc/gui/images/image93.jpg [new file with mode: 0644]
doc/gui/images/image94.gif [new file with mode: 0644]
doc/gui/images/image94.jpg [new file with mode: 0644]
doc/gui/images/image95.gif [new file with mode: 0644]
doc/gui/images/image95.jpg [new file with mode: 0644]
doc/gui/images/image96.gif [new file with mode: 0644]
doc/gui/images/image96.jpg [new file with mode: 0644]
doc/gui/images/image97.gif [new file with mode: 0644]
doc/gui/images/image97.jpg [new file with mode: 0644]
doc/gui/images/image98.png [new file with mode: 0644]
doc/gui/images/image99.gif [new file with mode: 0644]
doc/gui/images/image_octa12.png [new file with mode: 0644]
doc/gui/images/image_warping3D.jpg [new file with mode: 0644]
doc/gui/images/intersect_groups1.png [new file with mode: 0644]
doc/gui/images/intersectgroups.png [new file with mode: 0644]
doc/gui/images/length-crit.png [new file with mode: 0644]
doc/gui/images/length2d.png [new file with mode: 0644]
doc/gui/images/lengthnearvertex.png [new file with mode: 0644]
doc/gui/images/max_el_area.png [new file with mode: 0644]
doc/gui/images/max_element_length_2d.png [new file with mode: 0644]
doc/gui/images/max_element_length_3d.png [new file with mode: 0644]
doc/gui/images/mergeelems.png [new file with mode: 0644]
doc/gui/images/mergeelems_auto.png [new file with mode: 0644]
doc/gui/images/mergeelems_ico.png [new file with mode: 0644]
doc/gui/images/mergenodes.png [new file with mode: 0644]
doc/gui/images/mergenodes_auto.png [new file with mode: 0644]
doc/gui/images/mergenodes_ico.png [new file with mode: 0644]
doc/gui/images/merging_nodes1.png [new file with mode: 0644]
doc/gui/images/merging_nodes2.png [new file with mode: 0644]
doc/gui/images/mesh_clear.png [new file with mode: 0644]
doc/gui/images/mesh_cylinder_hexa.png [new file with mode: 0644]
doc/gui/images/mesh_deflection.png [new file with mode: 0644]
doc/gui/images/mesh_evaluation_succeed.png [new file with mode: 0644]
doc/gui/images/mesh_fixedpnt.png [new file with mode: 0644]
doc/gui/images/mesh_for_extr_along_path.png [new file with mode: 0644]
doc/gui/images/mesh_node_to_point.png [new file with mode: 0644]
doc/gui/images/mesh_order_123.png [new file with mode: 0644]
doc/gui/images/mesh_order_123_res.png [new file with mode: 0644]
doc/gui/images/mesh_order_213.png [new file with mode: 0644]
doc/gui/images/mesh_order_213_res.png [new file with mode: 0644]
doc/gui/images/mesh_order_321.png [new file with mode: 0644]
doc/gui/images/mesh_order_321_res.png [new file with mode: 0644]
doc/gui/images/mesh_order_no_concurrent.png [new file with mode: 0644]
doc/gui/images/mesh_order_preview.png [new file with mode: 0644]
doc/gui/images/mesh_precompute.png [new file with mode: 0644]
doc/gui/images/mesh_radquad_01.png [new file with mode: 0644]
doc/gui/images/mesh_radquad_02.png [new file with mode: 0644]
doc/gui/images/mesh_split_diag_interactive.png [new file with mode: 0644]
doc/gui/images/mesh_split_face_interactive.png [new file with mode: 0644]
doc/gui/images/meshcomputationfail.png [new file with mode: 0644]
doc/gui/images/meshcomputationsucceed.png [new file with mode: 0644]
doc/gui/images/meshcut_plugin.png [new file with mode: 0644]
doc/gui/images/meshexportgroupwarning.png [new file with mode: 0644]
doc/gui/images/meshexportmesh.png [new file with mode: 0644]
doc/gui/images/meshimportmesh.png [new file with mode: 0644]
doc/gui/images/meshtopass1.png [new file with mode: 0644]
doc/gui/images/meshtopass2.png [new file with mode: 0644]
doc/gui/images/meshtopass3.png [new file with mode: 0644]
doc/gui/images/meshtrianglemergeelem1.png [new file with mode: 0644]
doc/gui/images/min_distance.png [new file with mode: 0644]
doc/gui/images/min_distance_preview.png [new file with mode: 0644]
doc/gui/images/movenodes.png [new file with mode: 0644]
doc/gui/images/moving_nodes1.png [new file with mode: 0644]
doc/gui/images/moving_nodes2.png [new file with mode: 0644]
doc/gui/images/number_of_layers.png [new file with mode: 0644]
doc/gui/images/offset_filter_for_faces_gui.png [new file with mode: 0644]
doc/gui/images/offset_mesh.png [new file with mode: 0644]
doc/gui/images/offset_mesh_from_filter.png [new file with mode: 0644]
doc/gui/images/opengl_clipping.png [new file with mode: 0644]
doc/gui/images/orientaation1.png [new file with mode: 0644]
doc/gui/images/over_constrained_faces.png [new file with mode: 0644]
doc/gui/images/over_constrained_volumes.png [new file with mode: 0644]
doc/gui/images/pattern2d.png [new file with mode: 0644]
doc/gui/images/patternmapping1.png [new file with mode: 0644]
doc/gui/images/patternmapping2.png [new file with mode: 0644]
doc/gui/images/point_marker_widget1.png [new file with mode: 0644]
doc/gui/images/point_marker_widget2.png [new file with mode: 0644]
doc/gui/images/pref21.png [new file with mode: 0644]
doc/gui/images/pref22.png [new file with mode: 0644]
doc/gui/images/pref23.png [new file with mode: 0644]
doc/gui/images/pref24.png [new file with mode: 0644]
doc/gui/images/preview_mesh_1D.png [new file with mode: 0644]
doc/gui/images/preview_mesh_2D.png [new file with mode: 0644]
doc/gui/images/preview_tmp_data.png [new file with mode: 0644]
doc/gui/images/prism_mesh.png [new file with mode: 0644]
doc/gui/images/prism_needs_hyps.png [new file with mode: 0644]
doc/gui/images/prism_ok_ko.png [new file with mode: 0644]
doc/gui/images/prism_stack.png [new file with mode: 0644]
doc/gui/images/prism_tui_sample.png [new file with mode: 0644]
doc/gui/images/projection_1d.png [new file with mode: 0644]
doc/gui/images/projection_2d.png [new file with mode: 0644]
doc/gui/images/projection_3d.png [new file with mode: 0644]
doc/gui/images/propagation_chain.png [new file with mode: 0644]
doc/gui/images/quad_from_ma_medial_axis.png [new file with mode: 0644]
doc/gui/images/quad_from_ma_mesh.png [new file with mode: 0644]
doc/gui/images/quad_from_ma_ring_mesh.png [new file with mode: 0644]
doc/gui/images/quad_mesh_invalid.png [new file with mode: 0644]
doc/gui/images/quad_meshes.png [new file with mode: 0644]
doc/gui/images/radial_prism_mesh.png [new file with mode: 0644]
doc/gui/images/reduce_three_to_one.png [new file with mode: 0644]
doc/gui/images/remove.gif [new file with mode: 0644]
doc/gui/images/remove.png [new file with mode: 0644]
doc/gui/images/remove_elements1.png [new file with mode: 0644]
doc/gui/images/remove_elements2.png [new file with mode: 0644]
doc/gui/images/remove_elements_icon.png [new file with mode: 0644]
doc/gui/images/remove_node_reconnection.png [new file with mode: 0644]
doc/gui/images/remove_node_reconnection_dlg.png [new file with mode: 0644]
doc/gui/images/remove_node_reconnection_icon.png [new file with mode: 0644]
doc/gui/images/remove_nodes1.png [new file with mode: 0644]
doc/gui/images/remove_nodes2.png [new file with mode: 0644]
doc/gui/images/remove_nodes_icon.png [new file with mode: 0644]
doc/gui/images/remove_orphan_nodes_icon.png [new file with mode: 0644]
doc/gui/images/removeelements.png [new file with mode: 0644]
doc/gui/images/removenodes.png [new file with mode: 0644]
doc/gui/images/removeorphannodes.png [new file with mode: 0644]
doc/gui/images/renumberelements.png [new file with mode: 0644]
doc/gui/images/renumbernodes.png [new file with mode: 0644]
doc/gui/images/reorient_2d_face.png [new file with mode: 0644]
doc/gui/images/reorient_2d_point.png [new file with mode: 0644]
doc/gui/images/reorient_2d_refgroup.png [new file with mode: 0644]
doc/gui/images/reorient_2d_volume.png [new file with mode: 0644]
doc/gui/images/reorient_faces_face.png [new file with mode: 0644]
doc/gui/images/reorient_faces_point.png [new file with mode: 0644]
doc/gui/images/reorient_faces_ref_groups.png [new file with mode: 0644]
doc/gui/images/reorient_faces_volume.png [new file with mode: 0644]
doc/gui/images/rev_edges_helper_dlg.png [new file with mode: 0644]
doc/gui/images/revolution1.png [new file with mode: 0644]
doc/gui/images/revolutionsn1.png [new file with mode: 0644]
doc/gui/images/revolutionsn2.png [new file with mode: 0644]
doc/gui/images/rotation.png [new file with mode: 0644]
doc/gui/images/rotation1.png [new file with mode: 0644]
doc/gui/images/rotation2.png [new file with mode: 0644]
doc/gui/images/rotation_ico.png [new file with mode: 0644]
doc/gui/images/scalar_bar_dlg.png [new file with mode: 0644]
doc/gui/images/scale01.png [new file with mode: 0644]
doc/gui/images/scale02.png [new file with mode: 0644]
doc/gui/images/scale03.png [new file with mode: 0644]
doc/gui/images/scale04.png [new file with mode: 0644]
doc/gui/images/scale06.png [new file with mode: 0644]
doc/gui/images/scale07.png [new file with mode: 0644]
doc/gui/images/scale09.png [new file with mode: 0644]
doc/gui/images/scaled_jacobian.png [new file with mode: 0644]
doc/gui/images/scaled_jacobian_hexa.png [new file with mode: 0644]
doc/gui/images/scaled_jacobian_mesh_hexa.png [new file with mode: 0644]
doc/gui/images/scaled_jacobian_tetra.png [new file with mode: 0644]
doc/gui/images/scaleinit01.png [new file with mode: 0644]
doc/gui/images/scaleinit02.png [new file with mode: 0644]
doc/gui/images/scaleres03.png [new file with mode: 0644]
doc/gui/images/scaleres04.png [new file with mode: 0644]
doc/gui/images/scaleres06.png [new file with mode: 0644]
doc/gui/images/scaleres07.png [new file with mode: 0644]
doc/gui/images/scaleres09.png [new file with mode: 0644]
doc/gui/images/selectionfilterlibrary.png [new file with mode: 0644]
doc/gui/images/sew_after_merge.png [new file with mode: 0644]
doc/gui/images/sew_using_merge.png [new file with mode: 0644]
doc/gui/images/sewing.png [new file with mode: 0644]
doc/gui/images/sewing1.png [new file with mode: 0644]
doc/gui/images/sewing2.png [new file with mode: 0644]
doc/gui/images/sewing3.png [new file with mode: 0644]
doc/gui/images/sewing4.png [new file with mode: 0644]
doc/gui/images/sewing_auto.png [new file with mode: 0644]
doc/gui/images/sewing_manual.png [new file with mode: 0644]
doc/gui/images/show_bad_mesh.png [new file with mode: 0644]
doc/gui/images/smesh_sort.png [new file with mode: 0644]
doc/gui/images/smesh_sort_groups.png [new file with mode: 0644]
doc/gui/images/smoothing.png [new file with mode: 0644]
doc/gui/images/smoothing1.png [new file with mode: 0644]
doc/gui/images/smoothing2.png [new file with mode: 0644]
doc/gui/images/sort.gif [new file with mode: 0644]
doc/gui/images/sort.png [new file with mode: 0644]
doc/gui/images/split_biquad_to_linear_dlg.png [new file with mode: 0644]
doc/gui/images/split_biquad_to_linear_icon.png [new file with mode: 0644]
doc/gui/images/split_biquad_to_linear_mesh.png [new file with mode: 0644]
doc/gui/images/split_into_prisms.png [new file with mode: 0644]
doc/gui/images/split_into_tetra.png [new file with mode: 0644]
doc/gui/images/split_into_tetra_icon.png [new file with mode: 0644]
doc/gui/images/std_point_marker.png [new file with mode: 0644]
doc/gui/images/straight_after.png [new file with mode: 0644]
doc/gui/images/straight_before.png [new file with mode: 0644]
doc/gui/images/swap.png [new file with mode: 0644]
doc/gui/images/symmetry.png [new file with mode: 0644]
doc/gui/images/symmetry1.png [new file with mode: 0644]
doc/gui/images/symmetry2.png [new file with mode: 0644]
doc/gui/images/symmetry3.png [new file with mode: 0644]
doc/gui/images/topo_equality.png [new file with mode: 0644]
doc/gui/images/translation.png [new file with mode: 0644]
doc/gui/images/translation1.png [new file with mode: 0644]
doc/gui/images/translation2.png [new file with mode: 0644]
doc/gui/images/union_groups1.png [new file with mode: 0644]
doc/gui/images/uniongroups.png [new file with mode: 0644]
doc/gui/images/unionoftwotriangles.png [new file with mode: 0644]
doc/gui/images/uniting_a_set_of_triangles1.png [new file with mode: 0644]
doc/gui/images/uniting_a_set_of_triangles2.png [new file with mode: 0644]
doc/gui/images/uniting_two_triangles1.png [new file with mode: 0644]
doc/gui/images/uniting_two_triangles2.png [new file with mode: 0644]
doc/gui/images/use_existing_face_sample_mesh.png [new file with mode: 0644]
doc/gui/images/using_notebook_smesh.png [new file with mode: 0644]
doc/gui/images/viscous_layers_2d_hyp.png [new file with mode: 0644]
doc/gui/images/viscous_layers_extrusion_method.png [new file with mode: 0644]
doc/gui/images/viscous_layers_hyp.png [new file with mode: 0644]
doc/gui/images/viscous_layers_mesh.png [new file with mode: 0644]
doc/gui/images/viscous_layers_on_submesh.png [new file with mode: 0644]
doc/gui/input/1d_meshing_hypo.rst [new file with mode: 0644]
doc/gui/input/2d_meshing_hypo.rst [new file with mode: 0644]
doc/gui/input/3d_meshing_hypo.rst [new file with mode: 0644]
doc/gui/input/StdMeshersBuilder.rst [new file with mode: 0644]
doc/gui/input/about_filters.rst [new file with mode: 0644]
doc/gui/input/about_hypo.rst [new file with mode: 0644]
doc/gui/input/about_meshes.rst [new file with mode: 0644]
doc/gui/input/about_quality_controls.rst [new file with mode: 0644]
doc/gui/input/adaptation.rst [new file with mode: 0644]
doc/gui/input/add_node_on_face.rst [new file with mode: 0644]
doc/gui/input/add_node_on_segment.rst [new file with mode: 0644]
doc/gui/input/adding_nodes_and_elements.rst [new file with mode: 0644]
doc/gui/input/adding_quadratic_elements.rst [new file with mode: 0644]
doc/gui/input/additional_hypo.rst [new file with mode: 0644]
doc/gui/input/area.rst [new file with mode: 0644]
doc/gui/input/aspect_ratio.rst [new file with mode: 0644]
doc/gui/input/aspect_ratio_3d.rst [new file with mode: 0644]
doc/gui/input/bare_border_face.rst [new file with mode: 0644]
doc/gui/input/bare_border_volumes.rst [new file with mode: 0644]
doc/gui/input/basic_meshing_algos.rst [new file with mode: 0644]
doc/gui/input/borders_at_multi_connection.rst [new file with mode: 0644]
doc/gui/input/borders_at_multi_connection_2d.rst [new file with mode: 0644]
doc/gui/input/building_compounds.rst [new file with mode: 0644]
doc/gui/input/cartesian_algo.rst [new file with mode: 0644]
doc/gui/input/changing_orientation_of_elements.rst [new file with mode: 0644]
doc/gui/input/clipping.rst [new file with mode: 0644]
doc/gui/input/colors_size.rst [new file with mode: 0644]
doc/gui/input/connectivity.rst [new file with mode: 0644]
doc/gui/input/constructing_meshes.rst [new file with mode: 0644]
doc/gui/input/constructing_submeshes.rst [new file with mode: 0644]
doc/gui/input/convert_to_from_quadratic_mesh.rst [new file with mode: 0644]
doc/gui/input/copy_mesh.rst [new file with mode: 0644]
doc/gui/input/create_dual_mesh.rst [new file with mode: 0644]
doc/gui/input/create_groups_from_geometry.rst [new file with mode: 0644]
doc/gui/input/creating_groups.rst [new file with mode: 0644]
doc/gui/input/cut_mesh_by_plane.rst [new file with mode: 0644]
doc/gui/input/cutting_quadrangles.rst [new file with mode: 0644]
doc/gui/input/define_mesh_by_script.rst [new file with mode: 0644]
doc/gui/input/deflection_2d.rst [new file with mode: 0644]
doc/gui/input/deleting_groups.rst [new file with mode: 0644]
doc/gui/input/diagonal_inversion_of_elements.rst [new file with mode: 0644]
doc/gui/input/display_entity.rst [new file with mode: 0644]
doc/gui/input/display_mode.rst [new file with mode: 0644]
doc/gui/input/double_elements_control.rst [new file with mode: 0644]
doc/gui/input/double_nodes_control.rst [new file with mode: 0644]
doc/gui/input/double_nodes_page.rst [new file with mode: 0644]
doc/gui/input/editing_groups.rst [new file with mode: 0644]
doc/gui/input/editing_meshes.rst [new file with mode: 0644]
doc/gui/input/extrusion.rst [new file with mode: 0644]
doc/gui/input/extrusion_along_path.rst [new file with mode: 0644]
doc/gui/input/face_groups_by_sharp_edges.rst [new file with mode: 0644]
doc/gui/input/find_element_by_point.rst [new file with mode: 0644]
doc/gui/input/free_borders.rst [new file with mode: 0644]
doc/gui/input/free_edges.rst [new file with mode: 0644]
doc/gui/input/free_faces.rst [new file with mode: 0644]
doc/gui/input/free_nodes.rst [new file with mode: 0644]
doc/gui/input/generate_flat_elements.rst [new file with mode: 0644]
doc/gui/input/group_of_underlying_elements.rst [new file with mode: 0644]
doc/gui/input/grouping_elements.rst [new file with mode: 0644]
doc/gui/input/homard_create_boundary.rst [new file with mode: 0644]
doc/gui/input/importing_exporting_meshes.rst [new file with mode: 0644]
doc/gui/input/index.rst [new file with mode: 0644]
doc/gui/input/length.rst [new file with mode: 0644]
doc/gui/input/length_2d.rst [new file with mode: 0644]
doc/gui/input/make_2dmesh_from_3d.rst [new file with mode: 0644]
doc/gui/input/make_2dmesh_from_3d_elements.rst [new file with mode: 0644]
doc/gui/input/max_element_length_2d.rst [new file with mode: 0644]
doc/gui/input/max_element_length_3d.rst [new file with mode: 0644]
doc/gui/input/measurements.rst [new file with mode: 0644]
doc/gui/input/merging_elements.rst [new file with mode: 0644]
doc/gui/input/merging_nodes.rst [new file with mode: 0644]
doc/gui/input/mesh_infos.rst [new file with mode: 0644]
doc/gui/input/mesh_preferences.rst [new file with mode: 0644]
doc/gui/input/mesh_through_point.rst [new file with mode: 0644]
doc/gui/input/minimum_angle.rst [new file with mode: 0644]
doc/gui/input/modifying_meshes.rst [new file with mode: 0644]
doc/gui/input/modules.rst [new file with mode: 0644]
doc/gui/input/numbering.rst [new file with mode: 0644]
doc/gui/input/offset_elements.rst [new file with mode: 0644]
doc/gui/input/over_constrained_faces.rst [new file with mode: 0644]
doc/gui/input/over_constrained_volumes.rst [new file with mode: 0644]
doc/gui/input/parallel_compute.rst [new file with mode: 0644]
doc/gui/input/pattern_mapping.rst [new file with mode: 0644]
doc/gui/input/point_marker.rst [new file with mode: 0644]
doc/gui/input/prism_3d_algo.rst [new file with mode: 0644]
doc/gui/input/projection_algos.rst [new file with mode: 0644]
doc/gui/input/quad_from_ma_algo.rst [new file with mode: 0644]
doc/gui/input/quad_ijk_algo.rst [new file with mode: 0644]
doc/gui/input/radial_prism_algo.rst [new file with mode: 0644]
doc/gui/input/radial_quadrangle_1D2D_algo.rst [new file with mode: 0644]
doc/gui/input/removing_nodes_and_elements.rst [new file with mode: 0644]
doc/gui/input/reorient_faces.rst [new file with mode: 0644]
doc/gui/input/revolution.rst [new file with mode: 0644]
doc/gui/input/rotation.rst [new file with mode: 0644]
doc/gui/input/scalar_bar.rst [new file with mode: 0644]
doc/gui/input/scale.rst [new file with mode: 0644]
doc/gui/input/scaled_jacobian.rst [new file with mode: 0644]
doc/gui/input/segments_around_vertex_algo.rst [new file with mode: 0644]
doc/gui/input/selection_filter_library.rst [new file with mode: 0644]
doc/gui/input/sewing_meshes.rst [new file with mode: 0644]
doc/gui/input/skew.rst [new file with mode: 0644]
doc/gui/input/smeshBuilder.rst [new file with mode: 0644]
doc/gui/input/smesh_migration.rst [new file with mode: 0644]
doc/gui/input/smesh_module.rst [new file with mode: 0644]
doc/gui/input/smeshpy_interface.rst [new file with mode: 0644]
doc/gui/input/smeshstudytools.rst [new file with mode: 0644]
doc/gui/input/smoothing.rst [new file with mode: 0644]
doc/gui/input/split_biquad_to_linear.rst [new file with mode: 0644]
doc/gui/input/split_to_tetra.rst [new file with mode: 0644]
doc/gui/input/symmetry.rst [new file with mode: 0644]
doc/gui/input/taper.rst [new file with mode: 0644]
doc/gui/input/tools.rst [new file with mode: 0644]
doc/gui/input/translation.rst [new file with mode: 0644]
doc/gui/input/transparency.rst [new file with mode: 0644]
doc/gui/input/tui_adaptation.rst [new file with mode: 0644]
doc/gui/input/tui_creating_meshes.rst [new file with mode: 0644]
doc/gui/input/tui_defining_hypotheses.rst [new file with mode: 0644]
doc/gui/input/tui_filters.rst [new file with mode: 0644]
doc/gui/input/tui_grouping_elements.rst [new file with mode: 0644]
doc/gui/input/tui_measurements.rst [new file with mode: 0644]
doc/gui/input/tui_modifying_meshes.rst [new file with mode: 0644]
doc/gui/input/tui_notebook_smesh.rst [new file with mode: 0644]
doc/gui/input/tui_quality_controls.rst [new file with mode: 0644]
doc/gui/input/tui_transforming_meshes.rst [new file with mode: 0644]
doc/gui/input/tui_viewing_meshes.rst [new file with mode: 0644]
doc/gui/input/tui_work_on_objects_from_gui.rst [new file with mode: 0644]
doc/gui/input/uniting_set_of_triangles.rst [new file with mode: 0644]
doc/gui/input/uniting_two_triangles.rst [new file with mode: 0644]
doc/gui/input/use_existing_algos.rst [new file with mode: 0644]
doc/gui/input/using_notebook_smesh_page.rst [new file with mode: 0644]
doc/gui/input/using_operations_on_groups.rst [new file with mode: 0644]
doc/gui/input/viewing_meshes_overview.rst [new file with mode: 0644]
doc/gui/input/volume.rst [new file with mode: 0644]
doc/gui/input/warping.rst [new file with mode: 0644]
doc/gui/input/warping_3d.rst [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/1d_meshing_hypo.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/2d_meshing_hypo.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/about_filters.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/about_hypo.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/about_meshes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/about_quality_controls.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/adding_nodes_and_elements.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/adding_quadratic_elements.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/additional_hypo.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/area.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/aspect_ratio.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/aspect_ratio_3d.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/bare_border_face.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/bare_border_volumes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/basic_meshing_algos.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/borders_at_multi_connection.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/borders_at_multi_connection_2d.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/building_compounds.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/cartesian_algo.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/changing_orientation_of_elements.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/clipping.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/colors_size.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/connectivity.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/constructing_meshes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/constructing_submeshes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/convert_to_from_quadratic_mesh.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/copy_mesh.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/create_groups_from_geometry.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/creating_groups.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/cut_mesh_by_plane.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/cutting_quadrangles.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/define_mesh_by_script.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/deleting_groups.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/diagonal_inversion_of_elements.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/display_entity.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/display_mode.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/double_elements_control.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/double_nodes_control.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/double_nodes_page.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/editing_groups.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/editing_meshes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/extrusion.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/extrusion_along_path.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/find_element_by_point.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/free_borders.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/free_edges.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/free_faces.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/free_nodes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/generate_flat_elements.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/group_of_underlying_elements.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/grouping_elements.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/importing_exporting_meshes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/index.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/introduction.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/length.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/length_2d.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/make_2dmesh_from_3d.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/max_element_length_2d.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/max_element_length_3d.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/max_element_volume_hypo.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/measurements.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/merging_elements.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/merging_nodes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/mesh_infos.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/mesh_preferences.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/mesh_through_point.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/minimum_angle.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/modifying_meshes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/modules.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/numbering.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/over_constrained_faces.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/over_constrained_volumes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/pattern_mapping.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/point_marker.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/prism_3d_algo.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/projection_algos.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/python_api.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/quad_from_ma_algo.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/quad_ijk_algo.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/radial_prism_algo.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/radial_quadrangle_1D2D_algo.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/removing_nodes_and_elements.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/reorient_faces.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/revolution.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/rotation.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/scalar_bar.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/scale.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/segments_around_vertex_algo.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/selection_filter_library.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/sewing_meshes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/skew.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/smesh_migration.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/smeshpy_interface.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/smoothing.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/split_biquad_to_linear.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/split_to_tetra.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/symmetry.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/taper.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tools.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/translation.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/transparency.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_cartesian_algo.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_creating_meshes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_defining_hypotheses.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_filters.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_generate_flat_elements.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_grouping_elements.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_measurements.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_modifying_meshes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_notebook_smesh.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_prism_3d_algo.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_quality_controls.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_transforming_meshes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_use_existing_faces.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_viewing_meshes.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/tui_work_on_objects_from_gui.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/uniting_set_of_triangles.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/uniting_two_triangles.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/use_existing_algos.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/using_notebook_smesh_page.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/using_operations_on_groups.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/viewing_meshes_overview.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/volume.po [new file with mode: 0644]
doc/gui/locale/fr/LC_MESSAGES/warping.po [new file with mode: 0644]
doc/gui/merge_mesh_class.py [new file with mode: 0755]
doc/gui/static/switchers.js.in [new file with mode: 0644]
doc/gui/templates/layout.html [new file with mode: 0644]
doc/salome/CMakeLists.txt [deleted file]
doc/salome/examples/3dmesh.py [deleted file]
doc/salome/examples/CMakeLists.txt [deleted file]
doc/salome/examples/CTestTestfileInstall.cmake [deleted file]
doc/salome/examples/MGAdaptTests_without_session.py [deleted file]
doc/salome/examples/MGAdapt_med_files/test_01.med [deleted file]
doc/salome/examples/MGAdapt_med_files/test_02.med [deleted file]
doc/salome/examples/MGAdapt_med_files/test_02_bg.med [deleted file]
doc/salome/examples/MGAdapt_med_files/test_04.med [deleted file]
doc/salome/examples/MGAdapt_med_files/test_06.med [deleted file]
doc/salome/examples/MGAdapt_med_files/test_07.med [deleted file]
doc/salome/examples/MGAdapt_med_files/test_08.med [deleted file]
doc/salome/examples/MGAdapt_med_files/test_08_bg.med [deleted file]
doc/salome/examples/MGAdapt_med_files/test_10.med [deleted file]
doc/salome/examples/MGAdapt_med_files/test_11.med [deleted file]
doc/salome/examples/MGAdapt_med_files/test_13.med [deleted file]
doc/salome/examples/Mesh_tri.med [deleted file]
doc/salome/examples/a3DmeshOnModified2Dmesh.py [deleted file]
doc/salome/examples/basic_geom_smesh_without_session.py [deleted file]
doc/salome/examples/basic_shaper_smesh_without_session.py [deleted file]
doc/salome/examples/basic_smesh_output_with_mc_field.py [deleted file]
doc/salome/examples/blocFissure_01_without_session.py [deleted file]
doc/salome/examples/blocFissure_02_without_session.py [deleted file]
doc/salome/examples/blocFissure_03_without_session.py [deleted file]
doc/salome/examples/blocFissure_04_without_session.py [deleted file]
doc/salome/examples/blocFissure_05_without_session.py [deleted file]
doc/salome/examples/blocFissure_06_without_session.py [deleted file]
doc/salome/examples/blocFissure_07_without_session.py [deleted file]
doc/salome/examples/cartesian_algo.py [deleted file]
doc/salome/examples/create_penta_biquad.py [deleted file]
doc/salome/examples/creating_meshes_ex01.py [deleted file]
doc/salome/examples/creating_meshes_ex02.py [deleted file]
doc/salome/examples/creating_meshes_ex03.py [deleted file]
doc/salome/examples/creating_meshes_ex04.py [deleted file]
doc/salome/examples/creating_meshes_ex05.py [deleted file]
doc/salome/examples/creating_meshes_ex06.py [deleted file]
doc/salome/examples/creating_meshes_ex07.py [deleted file]
doc/salome/examples/creating_meshes_ex08.py [deleted file]
doc/salome/examples/defining_hypotheses_adaptive1d.py [deleted file]
doc/salome/examples/defining_hypotheses_ex01.py [deleted file]
doc/salome/examples/defining_hypotheses_ex02.py [deleted file]
doc/salome/examples/defining_hypotheses_ex03.py [deleted file]
doc/salome/examples/defining_hypotheses_ex04.py [deleted file]
doc/salome/examples/defining_hypotheses_ex05.py [deleted file]
doc/salome/examples/defining_hypotheses_ex06.py [deleted file]
doc/salome/examples/defining_hypotheses_ex07.py [deleted file]
doc/salome/examples/defining_hypotheses_ex08.py [deleted file]
doc/salome/examples/defining_hypotheses_ex09.py [deleted file]
doc/salome/examples/defining_hypotheses_ex10.py [deleted file]
doc/salome/examples/defining_hypotheses_ex11.py [deleted file]
doc/salome/examples/defining_hypotheses_ex12.py [deleted file]
doc/salome/examples/defining_hypotheses_ex13.py [deleted file]
doc/salome/examples/defining_hypotheses_ex14.py [deleted file]
doc/salome/examples/defining_hypotheses_ex15.py [deleted file]
doc/salome/examples/defining_hypotheses_ex16.py [deleted file]
doc/salome/examples/defining_hypotheses_ex17.py [deleted file]
doc/salome/examples/defining_hypotheses_len_near_vertex.py [deleted file]
doc/salome/examples/doublenodes_polyhedra.py [deleted file]
doc/salome/examples/ex_MakePolyLine.py [deleted file]
doc/salome/examples/extrusion_penta_biquad.py [deleted file]
doc/salome/examples/filters_belong2group.py [deleted file]
doc/salome/examples/filters_ex01.py [deleted file]
doc/salome/examples/filters_ex02.py [deleted file]
doc/salome/examples/filters_ex03.py [deleted file]
doc/salome/examples/filters_ex04.py [deleted file]
doc/salome/examples/filters_ex05.py [deleted file]
doc/salome/examples/filters_ex06.py [deleted file]
doc/salome/examples/filters_ex07.py [deleted file]
doc/salome/examples/filters_ex08.py [deleted file]
doc/salome/examples/filters_ex09.py [deleted file]
doc/salome/examples/filters_ex10.py [deleted file]
doc/salome/examples/filters_ex11.py [deleted file]
doc/salome/examples/filters_ex12.py [deleted file]
doc/salome/examples/filters_ex13.py [deleted file]
doc/salome/examples/filters_ex14.py [deleted file]
doc/salome/examples/filters_ex15.py [deleted file]
doc/salome/examples/filters_ex16.py [deleted file]
doc/salome/examples/filters_ex17.py [deleted file]
doc/salome/examples/filters_ex18.py [deleted file]
doc/salome/examples/filters_ex19.py [deleted file]
doc/salome/examples/filters_ex20.py [deleted file]
doc/salome/examples/filters_ex21.py [deleted file]
doc/salome/examples/filters_ex22.py [deleted file]
doc/salome/examples/filters_ex23.py [deleted file]
doc/salome/examples/filters_ex24.py [deleted file]
doc/salome/examples/filters_ex25.py [deleted file]
doc/salome/examples/filters_ex26.py [deleted file]
doc/salome/examples/filters_ex27.py [deleted file]
doc/salome/examples/filters_ex28.py [deleted file]
doc/salome/examples/filters_ex29.py [deleted file]
doc/salome/examples/filters_ex30.py [deleted file]
doc/salome/examples/filters_ex31.py [deleted file]
doc/salome/examples/filters_ex32.py [deleted file]
doc/salome/examples/filters_ex33.py [deleted file]
doc/salome/examples/filters_ex34.py [deleted file]
doc/salome/examples/filters_ex35.py [deleted file]
doc/salome/examples/filters_ex36.py [deleted file]
doc/salome/examples/filters_ex37.py [deleted file]
doc/salome/examples/filters_ex38.py [deleted file]
doc/salome/examples/filters_ex39.py [deleted file]
doc/salome/examples/filters_node_nb_conn.py [deleted file]
doc/salome/examples/find_salome_actor_delegate_to_vtk.py [deleted file]
doc/salome/examples/generate_flat_elements.py [deleted file]
doc/salome/examples/grouping_elements_ex01.py [deleted file]
doc/salome/examples/grouping_elements_ex02.py [deleted file]
doc/salome/examples/grouping_elements_ex03.py [deleted file]
doc/salome/examples/grouping_elements_ex04.py [deleted file]
doc/salome/examples/grouping_elements_ex05.py [deleted file]
doc/salome/examples/grouping_elements_ex06.py [deleted file]
doc/salome/examples/grouping_elements_ex07.py [deleted file]
doc/salome/examples/grouping_elements_ex08.py [deleted file]
doc/salome/examples/grouping_elements_ex09.py [deleted file]
doc/salome/examples/measurements_ex01.py [deleted file]
doc/salome/examples/measurements_ex02.py [deleted file]
doc/salome/examples/measurements_ex03.py [deleted file]
doc/salome/examples/measurements_ex04.py [deleted file]
doc/salome/examples/modifying_meshes_ex01.py [deleted file]
doc/salome/examples/modifying_meshes_ex02.py [deleted file]
doc/salome/examples/modifying_meshes_ex03.py [deleted file]
doc/salome/examples/modifying_meshes_ex04.py [deleted file]
doc/salome/examples/modifying_meshes_ex05.py [deleted file]
doc/salome/examples/modifying_meshes_ex06.py [deleted file]
doc/salome/examples/modifying_meshes_ex07.py [deleted file]
doc/salome/examples/modifying_meshes_ex08.py [deleted file]
doc/salome/examples/modifying_meshes_ex09.py [deleted file]
doc/salome/examples/modifying_meshes_ex10.py [deleted file]
doc/salome/examples/modifying_meshes_ex11.py [deleted file]
doc/salome/examples/modifying_meshes_ex12.py [deleted file]
doc/salome/examples/modifying_meshes_ex13.py [deleted file]
doc/salome/examples/modifying_meshes_ex14.py [deleted file]
doc/salome/examples/modifying_meshes_ex15.py [deleted file]
doc/salome/examples/modifying_meshes_ex16.py [deleted file]
doc/salome/examples/modifying_meshes_ex17.py [deleted file]
doc/salome/examples/modifying_meshes_ex18.py [deleted file]
doc/salome/examples/modifying_meshes_ex19.py [deleted file]
doc/salome/examples/modifying_meshes_ex20.py [deleted file]
doc/salome/examples/modifying_meshes_ex21.py [deleted file]
doc/salome/examples/modifying_meshes_ex22.py [deleted file]
doc/salome/examples/modifying_meshes_ex23.py [deleted file]
doc/salome/examples/modifying_meshes_ex24.py [deleted file]
doc/salome/examples/modifying_meshes_ex25.py [deleted file]
doc/salome/examples/modifying_meshes_ex26.py [deleted file]
doc/salome/examples/modifying_meshes_split_vol.py [deleted file]
doc/salome/examples/notebook_smesh.py [deleted file]
doc/salome/examples/prism_3d_algo.py [deleted file]
doc/salome/examples/quad_medial_axis_algo.py [deleted file]
doc/salome/examples/quality_controls_defl.py [deleted file]
doc/salome/examples/quality_controls_ex01.py [deleted file]
doc/salome/examples/quality_controls_ex02.py [deleted file]
doc/salome/examples/quality_controls_ex03.py [deleted file]
doc/salome/examples/quality_controls_ex04.py [deleted file]
doc/salome/examples/quality_controls_ex05.py [deleted file]
doc/salome/examples/quality_controls_ex06.py [deleted file]
doc/salome/examples/quality_controls_ex07.py [deleted file]
doc/salome/examples/quality_controls_ex08.py [deleted file]
doc/salome/examples/quality_controls_ex09.py [deleted file]
doc/salome/examples/quality_controls_ex10.py [deleted file]
doc/salome/examples/quality_controls_ex11.py [deleted file]
doc/salome/examples/quality_controls_ex12.py [deleted file]
doc/salome/examples/quality_controls_ex13.py [deleted file]
doc/salome/examples/quality_controls_ex14.py [deleted file]
doc/salome/examples/quality_controls_ex15.py [deleted file]
doc/salome/examples/quality_controls_ex16.py [deleted file]
doc/salome/examples/quality_controls_ex17.py [deleted file]
doc/salome/examples/quality_controls_ex18.py [deleted file]
doc/salome/examples/quality_controls_ex19.py [deleted file]
doc/salome/examples/quality_controls_ex20.py [deleted file]
doc/salome/examples/quality_controls_ex21.py [deleted file]
doc/salome/examples/quality_controls_ex22.py [deleted file]
doc/salome/examples/radial_prism_3d_algo.py [deleted file]
doc/salome/examples/shaper_smesh_groups_without_session.py [deleted file]
doc/salome/examples/split_biquad.py [deleted file]
doc/salome/examples/ssl_hdf5_symbols_conflicts.py [deleted file]
doc/salome/examples/test_polyhedron_per_solid.py [deleted file]
doc/salome/examples/test_smeshplugin_mg_tetra_parallele.py [deleted file]
doc/salome/examples/test_smeshplugins.py [deleted file]
doc/salome/examples/testme.py [deleted file]
doc/salome/examples/tests.py.in [deleted file]
doc/salome/examples/tests.set [deleted file]
doc/salome/examples/transforming_meshes_ex01.py [deleted file]
doc/salome/examples/transforming_meshes_ex02.py [deleted file]
doc/salome/examples/transforming_meshes_ex03.py [deleted file]
doc/salome/examples/transforming_meshes_ex04.py [deleted file]
doc/salome/examples/transforming_meshes_ex05.py [deleted file]
doc/salome/examples/transforming_meshes_ex06.py [deleted file]
doc/salome/examples/transforming_meshes_ex07.py [deleted file]
doc/salome/examples/transforming_meshes_ex08.py [deleted file]
doc/salome/examples/transforming_meshes_ex09.py [deleted file]
doc/salome/examples/transforming_meshes_ex10.py [deleted file]
doc/salome/examples/transforming_meshes_ex11.py [deleted file]
doc/salome/examples/transforming_meshes_ex12.py [deleted file]
doc/salome/examples/transforming_meshes_ex13.py [deleted file]
doc/salome/examples/use_existing_faces.py [deleted file]
doc/salome/examples/viewing_meshes_ex01.py [deleted file]
doc/salome/examples/viewing_meshes_ex02.py [deleted file]
doc/salome/gui/CMakeLists.txt [deleted file]
doc/salome/gui/SMESH/CMakeLists.txt [deleted file]
doc/salome/gui/SMESH/collect_mesh_methods.py [deleted file]
doc/salome/gui/SMESH/conf.py.in [deleted file]
doc/salome/gui/SMESH/images/2d_from_3d_dlg.png [deleted file]
doc/salome/gui/SMESH/images/2d_from_3d_example.png [deleted file]
doc/salome/gui/SMESH/images/2d_from_3d_ico.png [deleted file]
doc/salome/gui/SMESH/images/2d_from_3d_menu.png [deleted file]
doc/salome/gui/SMESH/images/Clipping_Absolute.png [deleted file]
doc/salome/gui/SMESH/images/Clipping_Relative.png [deleted file]
doc/salome/gui/SMESH/images/Nut_sharp_edges.png [deleted file]
doc/salome/gui/SMESH/images/a-arithmetic1d.png [deleted file]
doc/salome/gui/SMESH/images/a-averagelength.png [deleted file]
doc/salome/gui/SMESH/images/a-clipping2.png [deleted file]
doc/salome/gui/SMESH/images/a-creategroup.png [deleted file]
doc/salome/gui/SMESH/images/a-createpolyhedralvolume.png [deleted file]
doc/salome/gui/SMESH/images/a-cuttingofquadrangles.png [deleted file]
doc/salome/gui/SMESH/images/a-deflection1d.png [deleted file]
doc/salome/gui/SMESH/images/a-filteronfaces.png [deleted file]
doc/salome/gui/SMESH/images/a-geometric1d.png [deleted file]
doc/salome/gui/SMESH/images/a-maxelarea.png [deleted file]
doc/salome/gui/SMESH/images/a-maxelvolume.png [deleted file]
doc/salome/gui/SMESH/images/a-maxsize1d.png [deleted file]
doc/salome/gui/SMESH/images/a-nbsegments1.png [deleted file]
doc/salome/gui/SMESH/images/a-nbsegments2.png [deleted file]
doc/salome/gui/SMESH/images/a-patterntype.png [deleted file]
doc/salome/gui/SMESH/images/a-patterntype1.png [deleted file]
doc/salome/gui/SMESH/images/a-standmeshinfo.png [deleted file]
doc/salome/gui/SMESH/images/a-startendlength.png [deleted file]
doc/salome/gui/SMESH/images/a-transparency.png [deleted file]
doc/salome/gui/SMESH/images/a-unionoftriangles.png [deleted file]
doc/salome/gui/SMESH/images/a-viewgeneral.png [deleted file]
doc/salome/gui/SMESH/images/adaptation_01.png [deleted file]
doc/salome/gui/SMESH/images/adaptation_02.png [deleted file]
doc/salome/gui/SMESH/images/adaptive1d.png [deleted file]
doc/salome/gui/SMESH/images/adaptive1d_sample_mesh.png [deleted file]
doc/salome/gui/SMESH/images/add.gif [deleted file]
doc/salome/gui/SMESH/images/add.png [deleted file]
doc/salome/gui/SMESH/images/add0delement.png [deleted file]
doc/salome/gui/SMESH/images/add_0delement.png [deleted file]
doc/salome/gui/SMESH/images/add_ball.png [deleted file]
doc/salome/gui/SMESH/images/add_edge.png [deleted file]
doc/salome/gui/SMESH/images/add_node.png [deleted file]
doc/salome/gui/SMESH/images/add_polygone.png [deleted file]
doc/salome/gui/SMESH/images/add_polyhedron.png [deleted file]
doc/salome/gui/SMESH/images/add_quadrangle.png [deleted file]
doc/salome/gui/SMESH/images/add_triangle.png [deleted file]
doc/salome/gui/SMESH/images/addball.png [deleted file]
doc/salome/gui/SMESH/images/addedge.png [deleted file]
doc/salome/gui/SMESH/images/addhexahedron.png [deleted file]
doc/salome/gui/SMESH/images/addinfo_group.png [deleted file]
doc/salome/gui/SMESH/images/addinfo_mesh.png [deleted file]
doc/salome/gui/SMESH/images/addinfo_submesh.png [deleted file]
doc/salome/gui/SMESH/images/addnode.png [deleted file]
doc/salome/gui/SMESH/images/addnode_notebook.png [deleted file]
doc/salome/gui/SMESH/images/addpolygon.png [deleted file]
doc/salome/gui/SMESH/images/addquadrangle.png [deleted file]
doc/salome/gui/SMESH/images/addtetrahedron.png [deleted file]
doc/salome/gui/SMESH/images/addtriangle.png [deleted file]
doc/salome/gui/SMESH/images/advanced_mesh_infos.png [deleted file]
doc/salome/gui/SMESH/images/analyticdensity.png [deleted file]
doc/salome/gui/SMESH/images/angle_measure.png [deleted file]
doc/salome/gui/SMESH/images/aqt.png [deleted file]
doc/salome/gui/SMESH/images/automaticlength.png [deleted file]
doc/salome/gui/SMESH/images/b-art_end_length.png [deleted file]
doc/salome/gui/SMESH/images/b-erage_length.png [deleted file]
doc/salome/gui/SMESH/images/b-flection1d.png [deleted file]
doc/salome/gui/SMESH/images/b-ithmetic1d.png [deleted file]
doc/salome/gui/SMESH/images/b-mberofsegments.png [deleted file]
doc/salome/gui/SMESH/images/b-mesh_infos.png [deleted file]
doc/salome/gui/SMESH/images/bare_border_faces_smpl.png [deleted file]
doc/salome/gui/SMESH/images/bare_border_volumes_smpl.png [deleted file]
doc/salome/gui/SMESH/images/basic_props.png [deleted file]
doc/salome/gui/SMESH/images/before_clipping.png [deleted file]
doc/salome/gui/SMESH/images/before_clipping_preview.png [deleted file]
doc/salome/gui/SMESH/images/block_renumber_hyp.png [deleted file]
doc/salome/gui/SMESH/images/bnd_box.png [deleted file]
doc/salome/gui/SMESH/images/bnd_box_preview.png [deleted file]
doc/salome/gui/SMESH/images/buildcompound.png [deleted file]
doc/salome/gui/SMESH/images/buildcompound_groups.png [deleted file]
doc/salome/gui/SMESH/images/cartesian3D_hyp.png [deleted file]
doc/salome/gui/SMESH/images/cartesian3D_sphere.png [deleted file]
doc/salome/gui/SMESH/images/cartesian_implement_edge.png [deleted file]
doc/salome/gui/SMESH/images/choose_geom_selection_way.png [deleted file]
doc/salome/gui/SMESH/images/circle_angles_after.png [deleted file]
doc/salome/gui/SMESH/images/circle_simple_after.png [deleted file]
doc/salome/gui/SMESH/images/circle_simple_before.png [deleted file]
doc/salome/gui/SMESH/images/colors_size.png [deleted file]
doc/salome/gui/SMESH/images/connectivity_edge.png [deleted file]
doc/salome/gui/SMESH/images/connectivity_hex_prism.png [deleted file]
doc/salome/gui/SMESH/images/connectivity_hexa.png [deleted file]
doc/salome/gui/SMESH/images/connectivity_penta.png [deleted file]
doc/salome/gui/SMESH/images/connectivity_polygon.png [deleted file]
doc/salome/gui/SMESH/images/connectivity_polyhedron.png [deleted file]
doc/salome/gui/SMESH/images/connectivity_pyramid.png [deleted file]
doc/salome/gui/SMESH/images/connectivity_quad.png [deleted file]
doc/salome/gui/SMESH/images/connectivity_tetra.png [deleted file]
doc/salome/gui/SMESH/images/connectivity_tria.png [deleted file]
doc/salome/gui/SMESH/images/controls_popup.png [deleted file]
doc/salome/gui/SMESH/images/convert.png [deleted file]
doc/salome/gui/SMESH/images/copy_mesh_dlg.png [deleted file]
doc/salome/gui/SMESH/images/copy_mesh_icon.png [deleted file]
doc/salome/gui/SMESH/images/crack_emulation_double_nodes.png [deleted file]
doc/salome/gui/SMESH/images/crack_emulation_double_nodes_with_elems.png [deleted file]
doc/salome/gui/SMESH/images/create_group.png [deleted file]
doc/salome/gui/SMESH/images/create_groups_from_geometry.png [deleted file]
doc/salome/gui/SMESH/images/creategroup.png [deleted file]
doc/salome/gui/SMESH/images/creategroup_on_filter.png [deleted file]
doc/salome/gui/SMESH/images/createmesh-inv.png [deleted file]
doc/salome/gui/SMESH/images/createmesh-inv2.png [deleted file]
doc/salome/gui/SMESH/images/createmesh-inv3.png [deleted file]
doc/salome/gui/SMESH/images/ctrlinfo.png [deleted file]
doc/salome/gui/SMESH/images/curvi_angles_after.png [deleted file]
doc/salome/gui/SMESH/images/curvi_simple_after.png [deleted file]
doc/salome/gui/SMESH/images/curvi_simple_before.png [deleted file]
doc/salome/gui/SMESH/images/custom_point_marker.png [deleted file]
doc/salome/gui/SMESH/images/cut_groups1.png [deleted file]
doc/salome/gui/SMESH/images/cutgroups.png [deleted file]
doc/salome/gui/SMESH/images/dataset_clipping.png [deleted file]
doc/salome/gui/SMESH/images/deflection_2d.png [deleted file]
doc/salome/gui/SMESH/images/deletegroups.png [deleted file]
doc/salome/gui/SMESH/images/diagonalinversion.png [deleted file]
doc/salome/gui/SMESH/images/dialog.png [deleted file]
doc/salome/gui/SMESH/images/dimgroup_0d.png [deleted file]
doc/salome/gui/SMESH/images/dimgroup_1d.png [deleted file]
doc/salome/gui/SMESH/images/dimgroup_2d.png [deleted file]
doc/salome/gui/SMESH/images/dimgroup_dlg.png [deleted file]
doc/salome/gui/SMESH/images/dimgroup_src.png [deleted file]
doc/salome/gui/SMESH/images/dimgroup_tui1.png [deleted file]
doc/salome/gui/SMESH/images/display_entity_choose_item.png [deleted file]
doc/salome/gui/SMESH/images/display_entity_dlg.png [deleted file]
doc/salome/gui/SMESH/images/distribution_of_layers.png [deleted file]
doc/salome/gui/SMESH/images/distributionwithanalyticdensity.png [deleted file]
doc/salome/gui/SMESH/images/distributionwithtabledensity.png [deleted file]
doc/salome/gui/SMESH/images/dlg_0D_on_all_nodes.png [deleted file]
doc/salome/gui/SMESH/images/double_faces.png [deleted file]
doc/salome/gui/SMESH/images/double_nodes.png [deleted file]
doc/salome/gui/SMESH/images/duplicate01.png [deleted file]
doc/salome/gui/SMESH/images/duplicate02.png [deleted file]
doc/salome/gui/SMESH/images/duplicate03.png [deleted file]
doc/salome/gui/SMESH/images/duplicate04.png [deleted file]
doc/salome/gui/SMESH/images/duplicate_nodes.png [deleted file]
doc/salome/gui/SMESH/images/edge_wire_3d_after.png [deleted file]
doc/salome/gui/SMESH/images/edge_wire_3d_before.png [deleted file]
doc/salome/gui/SMESH/images/edge_wire_after.png [deleted file]
doc/salome/gui/SMESH/images/edge_wire_before.png [deleted file]
doc/salome/gui/SMESH/images/edit_mesh1.png [deleted file]
doc/salome/gui/SMESH/images/edit_mesh_change_value_hyp.png [deleted file]
doc/salome/gui/SMESH/images/edit_mesh_remove_hyp.png [deleted file]
doc/salome/gui/SMESH/images/editgroup.png [deleted file]
doc/salome/gui/SMESH/images/editing_groups1.png [deleted file]
doc/salome/gui/SMESH/images/elem_info.png [deleted file]
doc/salome/gui/SMESH/images/eleminfo1.png [deleted file]
doc/salome/gui/SMESH/images/eleminfo2.png [deleted file]
doc/salome/gui/SMESH/images/extr_along_wire_after.png [deleted file]
doc/salome/gui/SMESH/images/extr_along_wire_before.png [deleted file]
doc/salome/gui/SMESH/images/extru_rib_segs.png [deleted file]
doc/salome/gui/SMESH/images/extrusion_along_path_dlg.png [deleted file]
doc/salome/gui/SMESH/images/extrusion_box.png [deleted file]
doc/salome/gui/SMESH/images/extrusion_groups.png [deleted file]
doc/salome/gui/SMESH/images/extrusion_groups_res.png [deleted file]
doc/salome/gui/SMESH/images/extrusionalongaline1.png [deleted file]
doc/salome/gui/SMESH/images/extrusionalongaline2.png [deleted file]
doc/salome/gui/SMESH/images/extrusionalongaline3.png [deleted file]
doc/salome/gui/SMESH/images/extrusionbynormal_alongavgnorm.png [deleted file]
doc/salome/gui/SMESH/images/extrusionbynormal_useonly.png [deleted file]
doc/salome/gui/SMESH/images/failed_computation.png [deleted file]
doc/salome/gui/SMESH/images/find_geom_by_mesh_elem.png [deleted file]
doc/salome/gui/SMESH/images/findelement1.png [deleted file]
doc/salome/gui/SMESH/images/findelement2.png [deleted file]
doc/salome/gui/SMESH/images/findelement3.png [deleted file]
doc/salome/gui/SMESH/images/formula1.png [deleted file]
doc/salome/gui/SMESH/images/formula2.png [deleted file]
doc/salome/gui/SMESH/images/formula4.png [deleted file]
doc/salome/gui/SMESH/images/formula5.png [deleted file]
doc/salome/gui/SMESH/images/free_borders1.png [deleted file]
doc/salome/gui/SMESH/images/free_edges.png [deleted file]
doc/salome/gui/SMESH/images/free_faces.png [deleted file]
doc/salome/gui/SMESH/images/free_nodes.png [deleted file]
doc/salome/gui/SMESH/images/ghs3dprl_parameters_basic.png [deleted file]
doc/salome/gui/SMESH/images/groups_by_sharp_edges_dlg.png [deleted file]
doc/salome/gui/SMESH/images/groups_in_OB.png [deleted file]
doc/salome/gui/SMESH/images/hexa_ijk_mesh.png [deleted file]
doc/salome/gui/SMESH/images/hyp_source_edges.png [deleted file]
doc/salome/gui/SMESH/images/hyp_source_faces.png [deleted file]
doc/salome/gui/SMESH/images/hypo_fixedpnt_dlg.png [deleted file]
doc/salome/gui/SMESH/images/hypo_quad_params_1.png [deleted file]
doc/salome/gui/SMESH/images/hypo_quad_params_2.png [deleted file]
doc/salome/gui/SMESH/images/hypo_quad_params_dialog.png [deleted file]
doc/salome/gui/SMESH/images/hypo_quad_params_dialog_corners.png [deleted file]
doc/salome/gui/SMESH/images/hypo_quad_params_dialog_enf.png [deleted file]
doc/salome/gui/SMESH/images/hypo_quad_params_dialog_vert.png [deleted file]
doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo1.png [deleted file]
doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo2.png [deleted file]
doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo3.png [deleted file]
doc/salome/gui/SMESH/images/hypo_quad_params_res.png [deleted file]
doc/salome/gui/SMESH/images/hypo_quad_params_res_2.png [deleted file]
doc/salome/gui/SMESH/images/hypo_radquad_dlg.png [deleted file]
doc/salome/gui/SMESH/images/hypo_sets.png [deleted file]
doc/salome/gui/SMESH/images/image10.jpg [deleted file]
doc/salome/gui/SMESH/images/image101.png [deleted file]
doc/salome/gui/SMESH/images/image105.gif [deleted file]
doc/salome/gui/SMESH/images/image106.gif [deleted file]
doc/salome/gui/SMESH/images/image120.png [deleted file]
doc/salome/gui/SMESH/images/image121.png [deleted file]
doc/salome/gui/SMESH/images/image122.png [deleted file]
doc/salome/gui/SMESH/images/image123.gif [deleted file]
doc/salome/gui/SMESH/images/image124.gif [deleted file]
doc/salome/gui/SMESH/images/image125.gif [deleted file]
doc/salome/gui/SMESH/images/image126.gif [deleted file]
doc/salome/gui/SMESH/images/image127.gif [deleted file]
doc/salome/gui/SMESH/images/image130.gif [deleted file]
doc/salome/gui/SMESH/images/image131.gif [deleted file]
doc/salome/gui/SMESH/images/image132.gif [deleted file]
doc/salome/gui/SMESH/images/image133.gif [deleted file]
doc/salome/gui/SMESH/images/image134.gif [deleted file]
doc/salome/gui/SMESH/images/image135.gif [deleted file]
doc/salome/gui/SMESH/images/image136.gif [deleted file]
doc/salome/gui/SMESH/images/image137.gif [deleted file]
doc/salome/gui/SMESH/images/image138.gif [deleted file]
doc/salome/gui/SMESH/images/image143.gif [deleted file]
doc/salome/gui/SMESH/images/image144.png [deleted file]
doc/salome/gui/SMESH/images/image145.png [deleted file]
doc/salome/gui/SMESH/images/image146.png [deleted file]
doc/salome/gui/SMESH/images/image147.gif [deleted file]
doc/salome/gui/SMESH/images/image148.gif [deleted file]
doc/salome/gui/SMESH/images/image15.jpg [deleted file]
doc/salome/gui/SMESH/images/image151.gif [deleted file]
doc/salome/gui/SMESH/images/image152.png [deleted file]
doc/salome/gui/SMESH/images/image154.png [deleted file]
doc/salome/gui/SMESH/images/image155.gif [deleted file]
doc/salome/gui/SMESH/images/image156.gif [deleted file]
doc/salome/gui/SMESH/images/image157.gif [deleted file]
doc/salome/gui/SMESH/images/image160.gif [deleted file]
doc/salome/gui/SMESH/images/image161.png [deleted file]
doc/salome/gui/SMESH/images/image22.jpg [deleted file]
doc/salome/gui/SMESH/images/image23.jpg [deleted file]
doc/salome/gui/SMESH/images/image24.gif [deleted file]
doc/salome/gui/SMESH/images/image25.jpg [deleted file]
doc/salome/gui/SMESH/images/image25.png [deleted file]
doc/salome/gui/SMESH/images/image27.jpg [deleted file]
doc/salome/gui/SMESH/images/image28.png [deleted file]
doc/salome/gui/SMESH/images/image30.jpg [deleted file]
doc/salome/gui/SMESH/images/image31.jpg [deleted file]
doc/salome/gui/SMESH/images/image32.jpg [deleted file]
doc/salome/gui/SMESH/images/image32.png [deleted file]
doc/salome/gui/SMESH/images/image33.gif [deleted file]
doc/salome/gui/SMESH/images/image34.png [deleted file]
doc/salome/gui/SMESH/images/image35.png [deleted file]
doc/salome/gui/SMESH/images/image36.jpg [deleted file]
doc/salome/gui/SMESH/images/image36.png [deleted file]
doc/salome/gui/SMESH/images/image37.jpg [deleted file]
doc/salome/gui/SMESH/images/image37.png [deleted file]
doc/salome/gui/SMESH/images/image38.jpg [deleted file]
doc/salome/gui/SMESH/images/image38.png [deleted file]
doc/salome/gui/SMESH/images/image39.png [deleted file]
doc/salome/gui/SMESH/images/image40.png [deleted file]
doc/salome/gui/SMESH/images/image41.gif [deleted file]
doc/salome/gui/SMESH/images/image42.png [deleted file]
doc/salome/gui/SMESH/images/image43.png [deleted file]
doc/salome/gui/SMESH/images/image46.gif [deleted file]
doc/salome/gui/SMESH/images/image49.png [deleted file]
doc/salome/gui/SMESH/images/image5.jpg [deleted file]
doc/salome/gui/SMESH/images/image50.gif [deleted file]
doc/salome/gui/SMESH/images/image51.jpg [deleted file]
doc/salome/gui/SMESH/images/image52.jpg [deleted file]
doc/salome/gui/SMESH/images/image53.gif [deleted file]
doc/salome/gui/SMESH/images/image55.gif [deleted file]
doc/salome/gui/SMESH/images/image56.gif [deleted file]
doc/salome/gui/SMESH/images/image56.jpg [deleted file]
doc/salome/gui/SMESH/images/image58.png [deleted file]
doc/salome/gui/SMESH/images/image59.png [deleted file]
doc/salome/gui/SMESH/images/image63.png [deleted file]
doc/salome/gui/SMESH/images/image64.png [deleted file]
doc/salome/gui/SMESH/images/image67.png [deleted file]
doc/salome/gui/SMESH/images/image7.jpg [deleted file]
doc/salome/gui/SMESH/images/image70.jpg [deleted file]
doc/salome/gui/SMESH/images/image70.png [deleted file]
doc/salome/gui/SMESH/images/image71.jpg [deleted file]
doc/salome/gui/SMESH/images/image71.png [deleted file]
doc/salome/gui/SMESH/images/image74.gif [deleted file]
doc/salome/gui/SMESH/images/image75.jpg [deleted file]
doc/salome/gui/SMESH/images/image76.jpg [deleted file]
doc/salome/gui/SMESH/images/image77.jpg [deleted file]
doc/salome/gui/SMESH/images/image78.jpg [deleted file]
doc/salome/gui/SMESH/images/image79.jpg [deleted file]
doc/salome/gui/SMESH/images/image79.png [deleted file]
doc/salome/gui/SMESH/images/image80.png [deleted file]
doc/salome/gui/SMESH/images/image82.png [deleted file]
doc/salome/gui/SMESH/images/image83.gif [deleted file]
doc/salome/gui/SMESH/images/image84.png [deleted file]
doc/salome/gui/SMESH/images/image86.jpg [deleted file]
doc/salome/gui/SMESH/images/image88.gif [deleted file]
doc/salome/gui/SMESH/images/image88.jpg [deleted file]
doc/salome/gui/SMESH/images/image90.jpg [deleted file]
doc/salome/gui/SMESH/images/image91.png [deleted file]
doc/salome/gui/SMESH/images/image92.jpg [deleted file]
doc/salome/gui/SMESH/images/image92.png [deleted file]
doc/salome/gui/SMESH/images/image93.jpg [deleted file]
doc/salome/gui/SMESH/images/image94.gif [deleted file]
doc/salome/gui/SMESH/images/image94.jpg [deleted file]
doc/salome/gui/SMESH/images/image95.gif [deleted file]
doc/salome/gui/SMESH/images/image95.jpg [deleted file]
doc/salome/gui/SMESH/images/image96.gif [deleted file]
doc/salome/gui/SMESH/images/image96.jpg [deleted file]
doc/salome/gui/SMESH/images/image97.gif [deleted file]
doc/salome/gui/SMESH/images/image97.jpg [deleted file]
doc/salome/gui/SMESH/images/image98.png [deleted file]
doc/salome/gui/SMESH/images/image99.gif [deleted file]
doc/salome/gui/SMESH/images/image_octa12.png [deleted file]
doc/salome/gui/SMESH/images/intersect_groups1.png [deleted file]
doc/salome/gui/SMESH/images/intersectgroups.png [deleted file]
doc/salome/gui/SMESH/images/length-crit.png [deleted file]
doc/salome/gui/SMESH/images/length2d.png [deleted file]
doc/salome/gui/SMESH/images/lengthnearvertex.png [deleted file]
doc/salome/gui/SMESH/images/max_el_area.png [deleted file]
doc/salome/gui/SMESH/images/max_element_length_2d.png [deleted file]
doc/salome/gui/SMESH/images/max_element_length_3d.png [deleted file]
doc/salome/gui/SMESH/images/mergeelems.png [deleted file]
doc/salome/gui/SMESH/images/mergeelems_auto.png [deleted file]
doc/salome/gui/SMESH/images/mergeelems_ico.png [deleted file]
doc/salome/gui/SMESH/images/mergenodes.png [deleted file]
doc/salome/gui/SMESH/images/mergenodes_auto.png [deleted file]
doc/salome/gui/SMESH/images/mergenodes_ico.png [deleted file]
doc/salome/gui/SMESH/images/merging_nodes1.png [deleted file]
doc/salome/gui/SMESH/images/merging_nodes2.png [deleted file]
doc/salome/gui/SMESH/images/mesh_clear.png [deleted file]
doc/salome/gui/SMESH/images/mesh_cylinder_hexa.png [deleted file]
doc/salome/gui/SMESH/images/mesh_evaluation_succeed.png [deleted file]
doc/salome/gui/SMESH/images/mesh_fixedpnt.png [deleted file]
doc/salome/gui/SMESH/images/mesh_for_extr_along_path.png [deleted file]
doc/salome/gui/SMESH/images/mesh_node_to_point.png [deleted file]
doc/salome/gui/SMESH/images/mesh_order_123.png [deleted file]
doc/salome/gui/SMESH/images/mesh_order_123_res.png [deleted file]
doc/salome/gui/SMESH/images/mesh_order_213.png [deleted file]
doc/salome/gui/SMESH/images/mesh_order_213_res.png [deleted file]
doc/salome/gui/SMESH/images/mesh_order_321.png [deleted file]
doc/salome/gui/SMESH/images/mesh_order_321_res.png [deleted file]
doc/salome/gui/SMESH/images/mesh_order_no_concurrent.png [deleted file]
doc/salome/gui/SMESH/images/mesh_order_preview.png [deleted file]
doc/salome/gui/SMESH/images/mesh_precompute.png [deleted file]
doc/salome/gui/SMESH/images/mesh_radquad_01.png [deleted file]
doc/salome/gui/SMESH/images/mesh_radquad_02.png [deleted file]
doc/salome/gui/SMESH/images/meshcomputationfail.png [deleted file]
doc/salome/gui/SMESH/images/meshcomputationsucceed.png [deleted file]
doc/salome/gui/SMESH/images/meshcut_plugin.png [deleted file]
doc/salome/gui/SMESH/images/meshexportgroupwarning.png [deleted file]
doc/salome/gui/SMESH/images/meshexportmesh.png [deleted file]
doc/salome/gui/SMESH/images/meshimportmesh.png [deleted file]
doc/salome/gui/SMESH/images/meshtopass1.png [deleted file]
doc/salome/gui/SMESH/images/meshtopass2.png [deleted file]
doc/salome/gui/SMESH/images/meshtrianglemergeelem1.png [deleted file]
doc/salome/gui/SMESH/images/min_distance.png [deleted file]
doc/salome/gui/SMESH/images/min_distance_preview.png [deleted file]
doc/salome/gui/SMESH/images/movenodes.png [deleted file]
doc/salome/gui/SMESH/images/moving_nodes1.png [deleted file]
doc/salome/gui/SMESH/images/moving_nodes2.png [deleted file]
doc/salome/gui/SMESH/images/number_of_layers.png [deleted file]
doc/salome/gui/SMESH/images/opengl_clipping.png [deleted file]
doc/salome/gui/SMESH/images/orientaation1.png [deleted file]
doc/salome/gui/SMESH/images/over_constrained_faces.png [deleted file]
doc/salome/gui/SMESH/images/over_constrained_volumes.png [deleted file]
doc/salome/gui/SMESH/images/pattern2d.png [deleted file]
doc/salome/gui/SMESH/images/patternmapping1.png [deleted file]
doc/salome/gui/SMESH/images/patternmapping2.png [deleted file]
doc/salome/gui/SMESH/images/point_marker_widget1.png [deleted file]
doc/salome/gui/SMESH/images/point_marker_widget2.png [deleted file]
doc/salome/gui/SMESH/images/pref21.png [deleted file]
doc/salome/gui/SMESH/images/pref22.png [deleted file]
doc/salome/gui/SMESH/images/pref23.png [deleted file]
doc/salome/gui/SMESH/images/pref24.png [deleted file]
doc/salome/gui/SMESH/images/preview_mesh_1D.png [deleted file]
doc/salome/gui/SMESH/images/preview_mesh_2D.png [deleted file]
doc/salome/gui/SMESH/images/preview_tmp_data.png [deleted file]
doc/salome/gui/SMESH/images/prism_mesh.png [deleted file]
doc/salome/gui/SMESH/images/prism_needs_hyps.png [deleted file]
doc/salome/gui/SMESH/images/prism_ok_ko.png [deleted file]
doc/salome/gui/SMESH/images/prism_stack.png [deleted file]
doc/salome/gui/SMESH/images/prism_tui_sample.png [deleted file]
doc/salome/gui/SMESH/images/projection_1d.png [deleted file]
doc/salome/gui/SMESH/images/projection_2d.png [deleted file]
doc/salome/gui/SMESH/images/projection_3d.png [deleted file]
doc/salome/gui/SMESH/images/propagation_chain.png [deleted file]
doc/salome/gui/SMESH/images/quad_from_ma_medial_axis.png [deleted file]
doc/salome/gui/SMESH/images/quad_from_ma_mesh.png [deleted file]
doc/salome/gui/SMESH/images/quad_from_ma_ring_mesh.png [deleted file]
doc/salome/gui/SMESH/images/quad_mesh_invalid.png [deleted file]
doc/salome/gui/SMESH/images/quad_meshes.png [deleted file]
doc/salome/gui/SMESH/images/radial_prism_mesh.png [deleted file]
doc/salome/gui/SMESH/images/reduce_three_to_one.png [deleted file]
doc/salome/gui/SMESH/images/remove.gif [deleted file]
doc/salome/gui/SMESH/images/remove.png [deleted file]
doc/salome/gui/SMESH/images/remove_elements1.png [deleted file]
doc/salome/gui/SMESH/images/remove_elements2.png [deleted file]
doc/salome/gui/SMESH/images/remove_elements_icon.png [deleted file]
doc/salome/gui/SMESH/images/remove_nodes1.png [deleted file]
doc/salome/gui/SMESH/images/remove_nodes2.png [deleted file]
doc/salome/gui/SMESH/images/remove_nodes_icon.png [deleted file]
doc/salome/gui/SMESH/images/remove_orphan_nodes_icon.png [deleted file]
doc/salome/gui/SMESH/images/removeelements.png [deleted file]
doc/salome/gui/SMESH/images/removenodes.png [deleted file]
doc/salome/gui/SMESH/images/removeorphannodes.png [deleted file]
doc/salome/gui/SMESH/images/renumberelements.png [deleted file]
doc/salome/gui/SMESH/images/renumbernodes.png [deleted file]
doc/salome/gui/SMESH/images/reorient_2d_face.png [deleted file]
doc/salome/gui/SMESH/images/reorient_2d_point.png [deleted file]
doc/salome/gui/SMESH/images/reorient_2d_refgroup.png [deleted file]
doc/salome/gui/SMESH/images/reorient_2d_volume.png [deleted file]
doc/salome/gui/SMESH/images/reorient_faces_face.png [deleted file]
doc/salome/gui/SMESH/images/reorient_faces_point.png [deleted file]
doc/salome/gui/SMESH/images/reorient_faces_ref_groups.png [deleted file]
doc/salome/gui/SMESH/images/reorient_faces_volume.png [deleted file]
doc/salome/gui/SMESH/images/rev_edges_helper_dlg.png [deleted file]
doc/salome/gui/SMESH/images/revolution1.png [deleted file]
doc/salome/gui/SMESH/images/revolutionsn1.png [deleted file]
doc/salome/gui/SMESH/images/revolutionsn2.png [deleted file]
doc/salome/gui/SMESH/images/rotation.png [deleted file]
doc/salome/gui/SMESH/images/rotation1.png [deleted file]
doc/salome/gui/SMESH/images/rotation2.png [deleted file]
doc/salome/gui/SMESH/images/rotation_ico.png [deleted file]
doc/salome/gui/SMESH/images/scalar_bar_dlg.png [deleted file]
doc/salome/gui/SMESH/images/scale01.png [deleted file]
doc/salome/gui/SMESH/images/scale02.png [deleted file]
doc/salome/gui/SMESH/images/scale03.png [deleted file]
doc/salome/gui/SMESH/images/scale04.png [deleted file]
doc/salome/gui/SMESH/images/scale06.png [deleted file]
doc/salome/gui/SMESH/images/scale07.png [deleted file]
doc/salome/gui/SMESH/images/scale09.png [deleted file]
doc/salome/gui/SMESH/images/scaleinit01.png [deleted file]
doc/salome/gui/SMESH/images/scaleinit02.png [deleted file]
doc/salome/gui/SMESH/images/scaleres03.png [deleted file]
doc/salome/gui/SMESH/images/scaleres04.png [deleted file]
doc/salome/gui/SMESH/images/scaleres06.png [deleted file]
doc/salome/gui/SMESH/images/scaleres07.png [deleted file]
doc/salome/gui/SMESH/images/scaleres09.png [deleted file]
doc/salome/gui/SMESH/images/selectionfilterlibrary.png [deleted file]
doc/salome/gui/SMESH/images/sew_after_merge.png [deleted file]
doc/salome/gui/SMESH/images/sew_using_merge.png [deleted file]
doc/salome/gui/SMESH/images/sewing.png [deleted file]
doc/salome/gui/SMESH/images/sewing1.png [deleted file]
doc/salome/gui/SMESH/images/sewing2.png [deleted file]
doc/salome/gui/SMESH/images/sewing3.png [deleted file]
doc/salome/gui/SMESH/images/sewing4.png [deleted file]
doc/salome/gui/SMESH/images/sewing_auto.png [deleted file]
doc/salome/gui/SMESH/images/sewing_manual.png [deleted file]
doc/salome/gui/SMESH/images/show_bad_mesh.png [deleted file]
doc/salome/gui/SMESH/images/smesh_sort.png [deleted file]
doc/salome/gui/SMESH/images/smesh_sort_groups.png [deleted file]
doc/salome/gui/SMESH/images/smoothing.png [deleted file]
doc/salome/gui/SMESH/images/smoothing1.png [deleted file]
doc/salome/gui/SMESH/images/smoothing2.png [deleted file]
doc/salome/gui/SMESH/images/sort.gif [deleted file]
doc/salome/gui/SMESH/images/sort.png [deleted file]
doc/salome/gui/SMESH/images/split_biquad_to_linear_dlg.png [deleted file]
doc/salome/gui/SMESH/images/split_biquad_to_linear_icon.png [deleted file]
doc/salome/gui/SMESH/images/split_biquad_to_linear_mesh.png [deleted file]
doc/salome/gui/SMESH/images/split_into_prisms.png [deleted file]
doc/salome/gui/SMESH/images/split_into_tetra.png [deleted file]
doc/salome/gui/SMESH/images/split_into_tetra_icon.png [deleted file]
doc/salome/gui/SMESH/images/std_point_marker.png [deleted file]
doc/salome/gui/SMESH/images/straight_after.png [deleted file]
doc/salome/gui/SMESH/images/straight_before.png [deleted file]
doc/salome/gui/SMESH/images/swap.png [deleted file]
doc/salome/gui/SMESH/images/symmetry.png [deleted file]
doc/salome/gui/SMESH/images/symmetry1.png [deleted file]
doc/salome/gui/SMESH/images/symmetry2.png [deleted file]
doc/salome/gui/SMESH/images/symmetry3.png [deleted file]
doc/salome/gui/SMESH/images/topo_equality.png [deleted file]
doc/salome/gui/SMESH/images/translation.png [deleted file]
doc/salome/gui/SMESH/images/translation1.png [deleted file]
doc/salome/gui/SMESH/images/translation2.png [deleted file]
doc/salome/gui/SMESH/images/union_groups1.png [deleted file]
doc/salome/gui/SMESH/images/uniongroups.png [deleted file]
doc/salome/gui/SMESH/images/unionoftwotriangles.png [deleted file]
doc/salome/gui/SMESH/images/uniting_a_set_of_triangles1.png [deleted file]
doc/salome/gui/SMESH/images/uniting_a_set_of_triangles2.png [deleted file]
doc/salome/gui/SMESH/images/uniting_two_triangles1.png [deleted file]
doc/salome/gui/SMESH/images/uniting_two_triangles2.png [deleted file]
doc/salome/gui/SMESH/images/use_existing_face_sample_mesh.png [deleted file]
doc/salome/gui/SMESH/images/using_notebook_smesh.png [deleted file]
doc/salome/gui/SMESH/images/viscous_layers_2d_hyp.png [deleted file]
doc/salome/gui/SMESH/images/viscous_layers_extrusion_method.png [deleted file]
doc/salome/gui/SMESH/images/viscous_layers_hyp.png [deleted file]
doc/salome/gui/SMESH/images/viscous_layers_mesh.png [deleted file]
doc/salome/gui/SMESH/images/viscous_layers_on_submesh.png [deleted file]
doc/salome/gui/SMESH/input/1d_meshing_hypo.rst [deleted file]
doc/salome/gui/SMESH/input/2d_meshing_hypo.rst [deleted file]
doc/salome/gui/SMESH/input/3d_meshing_hypo.rst [deleted file]
doc/salome/gui/SMESH/input/StdMeshersBuilder.rst [deleted file]
doc/salome/gui/SMESH/input/about_filters.rst [deleted file]
doc/salome/gui/SMESH/input/about_hypo.rst [deleted file]
doc/salome/gui/SMESH/input/about_meshes.rst [deleted file]
doc/salome/gui/SMESH/input/about_quality_controls.rst [deleted file]
doc/salome/gui/SMESH/input/adaptation.rst [deleted file]
doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst [deleted file]
doc/salome/gui/SMESH/input/adding_quadratic_elements.rst [deleted file]
doc/salome/gui/SMESH/input/additional_hypo.rst [deleted file]
doc/salome/gui/SMESH/input/area.rst [deleted file]
doc/salome/gui/SMESH/input/aspect_ratio.rst [deleted file]
doc/salome/gui/SMESH/input/aspect_ratio_3d.rst [deleted file]
doc/salome/gui/SMESH/input/bare_border_face.rst [deleted file]
doc/salome/gui/SMESH/input/bare_border_volumes.rst [deleted file]
doc/salome/gui/SMESH/input/basic_meshing_algos.rst [deleted file]
doc/salome/gui/SMESH/input/borders_at_multi_connection.rst [deleted file]
doc/salome/gui/SMESH/input/borders_at_multi_connection_2d.rst [deleted file]
doc/salome/gui/SMESH/input/building_compounds.rst [deleted file]
doc/salome/gui/SMESH/input/cartesian_algo.rst [deleted file]
doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst [deleted file]
doc/salome/gui/SMESH/input/clipping.rst [deleted file]
doc/salome/gui/SMESH/input/colors_size.rst [deleted file]
doc/salome/gui/SMESH/input/connectivity.rst [deleted file]
doc/salome/gui/SMESH/input/constructing_meshes.rst [deleted file]
doc/salome/gui/SMESH/input/constructing_submeshes.rst [deleted file]
doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst [deleted file]
doc/salome/gui/SMESH/input/copy_mesh.rst [deleted file]
doc/salome/gui/SMESH/input/create_groups_from_geometry.rst [deleted file]
doc/salome/gui/SMESH/input/creating_groups.rst [deleted file]
doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst [deleted file]
doc/salome/gui/SMESH/input/cutting_quadrangles.rst [deleted file]
doc/salome/gui/SMESH/input/define_mesh_by_script.rst [deleted file]
doc/salome/gui/SMESH/input/deleting_groups.rst [deleted file]
doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst [deleted file]
doc/salome/gui/SMESH/input/display_entity.rst [deleted file]
doc/salome/gui/SMESH/input/display_mode.rst [deleted file]
doc/salome/gui/SMESH/input/double_elements_control.rst [deleted file]
doc/salome/gui/SMESH/input/double_nodes_control.rst [deleted file]
doc/salome/gui/SMESH/input/double_nodes_page.rst [deleted file]
doc/salome/gui/SMESH/input/editing_groups.rst [deleted file]
doc/salome/gui/SMESH/input/editing_meshes.rst [deleted file]
doc/salome/gui/SMESH/input/extrusion.rst [deleted file]
doc/salome/gui/SMESH/input/extrusion_along_path.rst [deleted file]
doc/salome/gui/SMESH/input/face_groups_by_sharp_edges.rst [deleted file]
doc/salome/gui/SMESH/input/find_element_by_point.rst [deleted file]
doc/salome/gui/SMESH/input/free_borders.rst [deleted file]
doc/salome/gui/SMESH/input/free_edges.rst [deleted file]
doc/salome/gui/SMESH/input/free_faces.rst [deleted file]
doc/salome/gui/SMESH/input/free_nodes.rst [deleted file]
doc/salome/gui/SMESH/input/generate_flat_elements.rst [deleted file]
doc/salome/gui/SMESH/input/group_of_underlying_elements.rst [deleted file]
doc/salome/gui/SMESH/input/grouping_elements.rst [deleted file]
doc/salome/gui/SMESH/input/importing_exporting_meshes.rst [deleted file]
doc/salome/gui/SMESH/input/index.rst [deleted file]
doc/salome/gui/SMESH/input/length.rst [deleted file]
doc/salome/gui/SMESH/input/length_2d.rst [deleted file]
doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst [deleted file]
doc/salome/gui/SMESH/input/max_element_length_2d.rst [deleted file]
doc/salome/gui/SMESH/input/max_element_length_3d.rst [deleted file]
doc/salome/gui/SMESH/input/measurements.rst [deleted file]
doc/salome/gui/SMESH/input/merging_elements.rst [deleted file]
doc/salome/gui/SMESH/input/merging_nodes.rst [deleted file]
doc/salome/gui/SMESH/input/mesh_infos.rst [deleted file]
doc/salome/gui/SMESH/input/mesh_preferences.rst [deleted file]
doc/salome/gui/SMESH/input/mesh_through_point.rst [deleted file]
doc/salome/gui/SMESH/input/minimum_angle.rst [deleted file]
doc/salome/gui/SMESH/input/modifying_meshes.rst [deleted file]
doc/salome/gui/SMESH/input/modules.rst [deleted file]
doc/salome/gui/SMESH/input/numbering.rst [deleted file]
doc/salome/gui/SMESH/input/over_constrained_faces.rst [deleted file]
doc/salome/gui/SMESH/input/over_constrained_volumes.rst [deleted file]
doc/salome/gui/SMESH/input/pattern_mapping.rst [deleted file]
doc/salome/gui/SMESH/input/point_marker.rst [deleted file]
doc/salome/gui/SMESH/input/prism_3d_algo.rst [deleted file]
doc/salome/gui/SMESH/input/projection_algos.rst [deleted file]
doc/salome/gui/SMESH/input/quad_from_ma_algo.rst [deleted file]
doc/salome/gui/SMESH/input/quad_ijk_algo.rst [deleted file]
doc/salome/gui/SMESH/input/radial_prism_algo.rst [deleted file]
doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst [deleted file]
doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst [deleted file]
doc/salome/gui/SMESH/input/reorient_faces.rst [deleted file]
doc/salome/gui/SMESH/input/revolution.rst [deleted file]
doc/salome/gui/SMESH/input/rotation.rst [deleted file]
doc/salome/gui/SMESH/input/scalar_bar.rst [deleted file]
doc/salome/gui/SMESH/input/scale.rst [deleted file]
doc/salome/gui/SMESH/input/segments_around_vertex_algo.rst [deleted file]
doc/salome/gui/SMESH/input/selection_filter_library.rst [deleted file]
doc/salome/gui/SMESH/input/sewing_meshes.rst [deleted file]
doc/salome/gui/SMESH/input/skew.rst [deleted file]
doc/salome/gui/SMESH/input/smeshBuilder.rst [deleted file]
doc/salome/gui/SMESH/input/smesh_migration.rst [deleted file]
doc/salome/gui/SMESH/input/smesh_module.rst [deleted file]
doc/salome/gui/SMESH/input/smeshpy_interface.rst [deleted file]
doc/salome/gui/SMESH/input/smeshstudytools.rst [deleted file]
doc/salome/gui/SMESH/input/smoothing.rst [deleted file]
doc/salome/gui/SMESH/input/split_biquad_to_linear.rst [deleted file]
doc/salome/gui/SMESH/input/split_to_tetra.rst [deleted file]
doc/salome/gui/SMESH/input/symmetry.rst [deleted file]
doc/salome/gui/SMESH/input/taper.rst [deleted file]
doc/salome/gui/SMESH/input/tools.rst [deleted file]
doc/salome/gui/SMESH/input/translation.rst [deleted file]
doc/salome/gui/SMESH/input/transparency.rst [deleted file]
doc/salome/gui/SMESH/input/tui_adaptation.rst [deleted file]
doc/salome/gui/SMESH/input/tui_creating_meshes.rst [deleted file]
doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst [deleted file]
doc/salome/gui/SMESH/input/tui_filters.rst [deleted file]
doc/salome/gui/SMESH/input/tui_grouping_elements.rst [deleted file]
doc/salome/gui/SMESH/input/tui_measurements.rst [deleted file]
doc/salome/gui/SMESH/input/tui_modifying_meshes.rst [deleted file]
doc/salome/gui/SMESH/input/tui_notebook_smesh.rst [deleted file]
doc/salome/gui/SMESH/input/tui_quality_controls.rst [deleted file]
doc/salome/gui/SMESH/input/tui_transforming_meshes.rst [deleted file]
doc/salome/gui/SMESH/input/tui_viewing_meshes.rst [deleted file]
doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst [deleted file]
doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst [deleted file]
doc/salome/gui/SMESH/input/uniting_two_triangles.rst [deleted file]
doc/salome/gui/SMESH/input/use_existing_algos.rst [deleted file]
doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst [deleted file]
doc/salome/gui/SMESH/input/using_operations_on_groups.rst [deleted file]
doc/salome/gui/SMESH/input/viewing_meshes_overview.rst [deleted file]
doc/salome/gui/SMESH/input/volume.rst [deleted file]
doc/salome/gui/SMESH/input/warping.rst [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/1d_meshing_hypo.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/2d_meshing_hypo.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_filters.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_hypo.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_meshes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_quality_controls.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/adding_nodes_and_elements.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/adding_quadratic_elements.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/additional_hypo.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/area.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/aspect_ratio.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/aspect_ratio_3d.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/bare_border_face.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/bare_border_volumes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/basic_meshing_algos.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/borders_at_multi_connection.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/borders_at_multi_connection_2d.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/building_compounds.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cartesian_algo.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/changing_orientation_of_elements.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/clipping.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/colors_size.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/connectivity.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/constructing_meshes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/constructing_submeshes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/convert_to_from_quadratic_mesh.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/copy_mesh.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/create_groups_from_geometry.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/creating_groups.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cut_mesh_by_plane.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cutting_quadrangles.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/define_mesh_by_script.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/deleting_groups.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/diagonal_inversion_of_elements.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/display_entity.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/display_mode.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_elements_control.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_nodes_control.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_nodes_page.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/editing_groups.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/editing_meshes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/extrusion.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/extrusion_along_path.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/find_element_by_point.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_borders.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_edges.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_faces.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_nodes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/generate_flat_elements.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/group_of_underlying_elements.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/grouping_elements.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/importing_exporting_meshes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/index.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/introduction.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/length.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/length_2d.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/make_2dmesh_from_3d.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_length_2d.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_length_3d.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_volume_hypo.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/measurements.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/merging_elements.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/merging_nodes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_infos.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_preferences.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_through_point.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/minimum_angle.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/modifying_meshes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/modules.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/numbering.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/over_constrained_faces.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/over_constrained_volumes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/pattern_mapping.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/point_marker.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/prism_3d_algo.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/projection_algos.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/python_api.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/quad_from_ma_algo.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/quad_ijk_algo.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/radial_prism_algo.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/radial_quadrangle_1D2D_algo.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/removing_nodes_and_elements.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/reorient_faces.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/revolution.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/rotation.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/scalar_bar.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/scale.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/segments_around_vertex_algo.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/selection_filter_library.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/sewing_meshes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/skew.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smesh_migration.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smeshpy_interface.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smoothing.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/split_biquad_to_linear.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/split_to_tetra.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/symmetry.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/taper.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tools.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/translation.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/transparency.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_cartesian_algo.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_creating_meshes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_defining_hypotheses.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_filters.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_generate_flat_elements.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_grouping_elements.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_measurements.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_modifying_meshes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_notebook_smesh.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_prism_3d_algo.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_quality_controls.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_transforming_meshes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_use_existing_faces.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_viewing_meshes.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_work_on_objects_from_gui.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/uniting_set_of_triangles.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/uniting_two_triangles.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/use_existing_algos.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/using_notebook_smesh_page.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/using_operations_on_groups.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/viewing_meshes_overview.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/volume.po [deleted file]
doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/warping.po [deleted file]
doc/salome/gui/SMESH/merge_mesh_class.py [deleted file]
doc/salome/gui/SMESH/static/switchers.js.in [deleted file]
doc/salome/gui/SMESH/templates/layout.html [deleted file]
doc/salome/tui/CMakeLists.txt [deleted file]
doc/salome/tui/doxyfile.in [deleted file]
doc/salome/tui/images/application.gif [deleted file]
doc/salome/tui/images/head.png [deleted file]
doc/salome/tui/images/logocorp.gif [deleted file]
doc/salome/tui/images/smeshscreen.png [deleted file]
doc/salome/tui/input/index.doc [deleted file]
doc/salome/tui/static/footer.html [deleted file]
doc/salome/tui/static/header.html.in [deleted file]
doc/salome/tui/static/salome_extra.css [deleted file]
doc/tui/CMakeLists.txt [new file with mode: 0644]
doc/tui/doxyfile.in [new file with mode: 0644]
doc/tui/images/application.gif [new file with mode: 0644]
doc/tui/images/head.png [new file with mode: 0755]
doc/tui/images/logocorp.gif [new file with mode: 0755]
doc/tui/images/smeshscreen.png [new file with mode: 0755]
doc/tui/input/index.doc [new file with mode: 0644]
doc/tui/static/footer.html [new file with mode: 0644]
doc/tui/static/header.html.in [new file with mode: 0644]
doc/tui/static/salome_extra.css [new file with mode: 0644]
idl/CMakeLists.txt
idl/MG_ADAPT.idl
idl/SMESH_BasicHypothesis.idl
idl/SMESH_Filter.idl
idl/SMESH_Gen.idl
idl/SMESH_Group.idl
idl/SMESH_Homard.idl [new file with mode: 0644]
idl/SMESH_Hypothesis.idl
idl/SMESH_Measurements.idl
idl/SMESH_Mesh.idl
idl/SMESH_MeshEditor.idl
idl/SMESH_Pattern.idl
idl/SMESH_smIdType.idl.in
resources/CMakeLists.txt
resources/SalomeApp.xml.in
resources/StdMeshers.xml.in
resources/adapt_homard.png [new file with mode: 0644]
resources/bare_border_face.png
resources/bare_border_volume.png
resources/mesh_2d_from_3d_elements.png [new file with mode: 0644]
resources/mesh_algo_mefisto.png [deleted file]
resources/mesh_algo_tri.png [new file with mode: 0644]
resources/mesh_bounding_box.png [changed mode: 0755->0644]
resources/mesh_create_dual_mesh.png [new file with mode: 0644]
resources/mesh_min_dist.png [changed mode: 0755->0644]
resources/mesh_move_node_interactive.png [new file with mode: 0644]
resources/mesh_rem_node_recon.png [new file with mode: 0644]
resources/mesh_scaled_jacobian.png [new file with mode: 0644]
resources/mesh_show.png
resources/mesh_split_diag_interactive.png [new file with mode: 0644]
resources/mesh_split_face_interactive.png [new file with mode: 0644]
resources/mesh_tree_algo_mefisto.png [deleted file]
resources/mesh_tree_algo_tri.png [new file with mode: 0644]
resources/mesh_tree_mesh_geom_modif.png
resources/over_constrained_face.png
resources/over_constrained_volume.png
resources/reorient_faces_ref_groups.png
src/CMakeLists.txt
src/Controls/CMakeLists.txt
src/Controls/SMESH_Controls.cxx
src/Controls/SMESH_ControlsDef.hxx
src/Driver/CMakeLists.txt
src/Driver/Driver_Mesh.cxx
src/Driver/Driver_Mesh.h
src/Driver/Driver_SMDS_Mesh.cxx
src/Driver/Driver_SMDS_Mesh.h
src/Driver/Driver_SMESHDS_Mesh.cxx
src/Driver/Driver_SMESHDS_Mesh.h
src/DriverCGNS/CMakeLists.txt
src/DriverCGNS/DriverCGNS_Read.cxx
src/DriverCGNS/DriverCGNS_Read.hxx
src/DriverCGNS/DriverCGNS_Write.cxx
src/DriverCGNS/DriverCGNS_Write.hxx
src/DriverCGNS/SMESH_DriverCGNS.hxx
src/DriverDAT/CMakeLists.txt
src/DriverDAT/DriverDAT_R_SMDS_Mesh.cxx
src/DriverDAT/DriverDAT_R_SMDS_Mesh.h
src/DriverDAT/DriverDAT_W_SMDS_Mesh.cxx
src/DriverDAT/DriverDAT_W_SMDS_Mesh.h
src/DriverDAT/SMESH_DriverDAT.hxx
src/DriverGMF/CMakeLists.txt
src/DriverGMF/DriverGMF.cxx
src/DriverGMF/DriverGMF.hxx
src/DriverGMF/DriverGMF_Read.cxx
src/DriverGMF/DriverGMF_Read.hxx
src/DriverGMF/DriverGMF_Write.cxx
src/DriverGMF/DriverGMF_Write.hxx
src/DriverGMF/SMESH_DriverGMF.hxx
src/DriverMED/CMakeLists.txt
src/DriverMED/DriverMED.hxx
src/DriverMED/DriverMED_Family.cxx
src/DriverMED/DriverMED_Family.h
src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx
src/DriverMED/DriverMED_R_SMESHDS_Mesh.h
src/DriverMED/DriverMED_W_Field.cxx
src/DriverMED/DriverMED_W_Field.h
src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx
src/DriverMED/DriverMED_W_SMESHDS_Mesh.h
src/DriverMED/SMESH_DriverMED.hxx
src/DriverSTL/CMakeLists.txt
src/DriverSTL/DriverSTL_R_SMDS_Mesh.cxx
src/DriverSTL/DriverSTL_R_SMDS_Mesh.h
src/DriverSTL/DriverSTL_W_SMDS_Mesh.cxx
src/DriverSTL/DriverSTL_W_SMDS_Mesh.h
src/DriverSTL/SMESH_DriverSTL.hxx
src/DriverUNV/CMakeLists.txt
src/DriverUNV/DriverUNV_R_SMDS_Mesh.cxx
src/DriverUNV/DriverUNV_R_SMDS_Mesh.h
src/DriverUNV/DriverUNV_W_SMDS_Mesh.cxx
src/DriverUNV/DriverUNV_W_SMDS_Mesh.h
src/DriverUNV/SMESH_DriverUNV.hxx
src/DriverUNV/UNV164_Structure.cxx
src/DriverUNV/UNV164_Structure.hxx
src/DriverUNV/UNV2411_Structure.cxx
src/DriverUNV/UNV2411_Structure.hxx
src/DriverUNV/UNV2412_Structure.cxx
src/DriverUNV/UNV2412_Structure.hxx
src/DriverUNV/UNV2417_Structure.cxx
src/DriverUNV/UNV2417_Structure.hxx
src/DriverUNV/UNV2420_Structure.cxx
src/DriverUNV/UNV2420_Structure.hxx
src/DriverUNV/UNV_Utilities.cxx
src/DriverUNV/UNV_Utilities.hxx
src/MEDWrapper/CMakeLists.txt
src/MEDWrapper/MED_Algorithm.cxx
src/MEDWrapper/MED_Algorithm.hxx
src/MEDWrapper/MED_Common.cxx
src/MEDWrapper/MED_Common.hxx
src/MEDWrapper/MED_CoordUtils.cxx
src/MEDWrapper/MED_CoordUtils.hxx
src/MEDWrapper/MED_Factory.cxx
src/MEDWrapper/MED_Factory.hxx
src/MEDWrapper/MED_GaussDef.cxx
src/MEDWrapper/MED_GaussDef.hxx
src/MEDWrapper/MED_GaussUtils.cxx
src/MEDWrapper/MED_GaussUtils.hxx
src/MEDWrapper/MED_SharedPtr.hxx
src/MEDWrapper/MED_SliceArray.hxx
src/MEDWrapper/MED_Structures.cxx
src/MEDWrapper/MED_Structures.hxx
src/MEDWrapper/MED_TFile.hxx
src/MEDWrapper/MED_TStructures.hxx
src/MEDWrapper/MED_Utilities.cxx
src/MEDWrapper/MED_Utilities.hxx
src/MEDWrapper/MED_Vector.hxx
src/MEDWrapper/MED_Wrapper.cxx
src/MEDWrapper/MED_Wrapper.hxx
src/MEDWrapper/MED_WrapperDef.hxx
src/MEDWrapper/mprint_version.cxx
src/MEFISTO2/CMakeLists.txt [deleted file]
src/MEFISTO2/Rn.h [deleted file]
src/MEFISTO2/aptrte.cxx [deleted file]
src/MEFISTO2/aptrte.h [deleted file]
src/MEFISTO2/areteideale.f [deleted file]
src/MEFISTO2/trte.f [deleted file]
src/OBJECT/CMakeLists.txt
src/OBJECT/SMESH_Actor.cxx
src/OBJECT/SMESH_Actor.h
src/OBJECT/SMESH_ActorDef.h
src/OBJECT/SMESH_ActorProps.cxx
src/OBJECT/SMESH_ActorProps.h
src/OBJECT/SMESH_ActorUtils.cxx
src/OBJECT/SMESH_ActorUtils.h
src/OBJECT/SMESH_CellLabelActor.cxx
src/OBJECT/SMESH_CellLabelActor.h
src/OBJECT/SMESH_DeviceActor.cxx
src/OBJECT/SMESH_DeviceActor.h
src/OBJECT/SMESH_ExtractGeometry.cxx
src/OBJECT/SMESH_ExtractGeometry.h
src/OBJECT/SMESH_FaceOrientationFilter.cxx
src/OBJECT/SMESH_FaceOrientationFilter.h
src/OBJECT/SMESH_NodeLabelActor.cxx
src/OBJECT/SMESH_NodeLabelActor.h
src/OBJECT/SMESH_Object.cxx
src/OBJECT/SMESH_Object.h
src/OBJECT/SMESH_ObjectDef.h
src/OBJECT/SMESH_PreviewActorsCollection.cxx
src/OBJECT/SMESH_PreviewActorsCollection.h
src/OBJECT/SMESH_SVTKActor.cxx
src/OBJECT/SMESH_SVTKActor.h
src/OBJECT/SMESH_ScalarBarActor.cxx
src/OBJECT/SMESH_ScalarBarActor.h
src/PluginUtils/CMakeLists.txt
src/PluginUtils/GeomSelectionTools.cxx
src/PluginUtils/GeomSelectionTools.h
src/PluginUtils/SMESH_AdvOptionsWdg.cxx
src/PluginUtils/SMESH_AdvOptionsWdg.h
src/PluginUtils/SMESH_PluginUtils.h
src/SMDS/CMakeLists.txt
src/SMDS/ObjectPool.hxx
src/SMDS/SMDSAbs_ElementType.hxx
src/SMDS/SMDS_BallElement.cxx
src/SMDS/SMDS_BallElement.hxx
src/SMDS/SMDS_CellOfNodes.cxx
src/SMDS/SMDS_CellOfNodes.hxx
src/SMDS/SMDS_Downward.cxx
src/SMDS/SMDS_Downward.hxx
src/SMDS/SMDS_EdgePosition.hxx
src/SMDS/SMDS_ElemIterator.hxx
src/SMDS/SMDS_ElementFactory.cxx
src/SMDS/SMDS_ElementFactory.hxx
src/SMDS/SMDS_ElementHolder.cxx
src/SMDS/SMDS_ElementHolder.hxx
src/SMDS/SMDS_FaceOfNodes.cxx
src/SMDS/SMDS_FaceOfNodes.hxx
src/SMDS/SMDS_FacePosition.cxx
src/SMDS/SMDS_FacePosition.hxx
src/SMDS/SMDS_Iterator.hxx
src/SMDS/SMDS_IteratorOnIterators.hxx
src/SMDS/SMDS_LinearEdge.cxx
src/SMDS/SMDS_LinearEdge.hxx
src/SMDS/SMDS_MemoryLimit.cxx
src/SMDS/SMDS_Mesh.cxx
src/SMDS/SMDS_Mesh.hxx
src/SMDS/SMDS_Mesh0DElement.hxx
src/SMDS/SMDS_MeshCell.cxx
src/SMDS/SMDS_MeshCell.hxx
src/SMDS/SMDS_MeshEdge.hxx
src/SMDS/SMDS_MeshElement.cxx
src/SMDS/SMDS_MeshElement.hxx
src/SMDS/SMDS_MeshFace.hxx
src/SMDS/SMDS_MeshGroup.cxx
src/SMDS/SMDS_MeshGroup.hxx
src/SMDS/SMDS_MeshInfo.hxx
src/SMDS/SMDS_MeshNode.cxx
src/SMDS/SMDS_MeshNode.hxx
src/SMDS/SMDS_MeshObject.cxx
src/SMDS/SMDS_MeshObject.hxx
src/SMDS/SMDS_MeshVolume.cxx
src/SMDS/SMDS_MeshVolume.hxx
src/SMDS/SMDS_PolygonalFaceOfNodes.cxx
src/SMDS/SMDS_PolygonalFaceOfNodes.hxx
src/SMDS/SMDS_Position.hxx
src/SMDS/SMDS_SetIterator.hxx
src/SMDS/SMDS_SpacePosition.cxx
src/SMDS/SMDS_SpacePosition.hxx
src/SMDS/SMDS_StdIterator.hxx
src/SMDS/SMDS_TypeOfPosition.hxx
src/SMDS/SMDS_UnstructuredGrid.cxx
src/SMDS/SMDS_UnstructuredGrid.hxx
src/SMDS/SMDS_VertexPosition.hxx
src/SMDS/SMDS_VolumeOfNodes.cxx
src/SMDS/SMDS_VolumeOfNodes.hxx
src/SMDS/SMDS_VolumeTool.cxx
src/SMDS/SMDS_VolumeTool.hxx
src/SMDS/SMDS_VtkCellIterator.cxx
src/SMDS/SMDS_VtkCellIterator.hxx
src/SMDS/SMESH_SMDS.hxx
src/SMDS/chrono.cxx
src/SMDS/chrono.hxx
src/SMESH/CMakeLists.txt
src/SMESH/MG_ADAPT.cxx
src/SMESH/MG_ADAPT.hxx
src/SMESH/SMESH_Algo.cxx
src/SMESH/SMESH_Algo.hxx
src/SMESH/SMESH_DriverMesh.cxx [new file with mode: 0644]
src/SMESH/SMESH_DriverMesh.hxx [new file with mode: 0644]
src/SMESH/SMESH_DriverShape.cxx [new file with mode: 0644]
src/SMESH/SMESH_DriverShape.hxx [new file with mode: 0644]
src/SMESH/SMESH_Gen.cxx
src/SMESH/SMESH_Gen.hxx
src/SMESH/SMESH_Group.cxx
src/SMESH/SMESH_Group.hxx
src/SMESH/SMESH_Homard.cxx [new file with mode: 0644]
src/SMESH/SMESH_Homard.hxx [new file with mode: 0644]
src/SMESH/SMESH_HypoFilter.cxx
src/SMESH/SMESH_HypoFilter.hxx
src/SMESH/SMESH_Hypothesis.cxx
src/SMESH/SMESH_Hypothesis.hxx
src/SMESH/SMESH_Mesh.cxx
src/SMESH/SMESH_Mesh.hxx
src/SMESH/SMESH_MeshEditor.cxx
src/SMESH/SMESH_MeshEditor.hxx
src/SMESH/SMESH_MeshLocker.cxx [new file with mode: 0644]
src/SMESH/SMESH_MeshLocker.hxx [new file with mode: 0644]
src/SMESH/SMESH_MesherHelper.cxx
src/SMESH/SMESH_MesherHelper.hxx
src/SMESH/SMESH_ParallelMesh.cxx [new file with mode: 0644]
src/SMESH/SMESH_ParallelMesh.hxx [new file with mode: 0644]
src/SMESH/SMESH_Pattern.cxx
src/SMESH/SMESH_Pattern.hxx
src/SMESH/SMESH_ProxyMesh.cxx
src/SMESH/SMESH_ProxyMesh.hxx
src/SMESH/SMESH_SMESH.hxx
src/SMESH/SMESH_SequentialMesh.cxx [new file with mode: 0644]
src/SMESH/SMESH_SequentialMesh.hxx [new file with mode: 0644]
src/SMESH/SMESH_subMesh.cxx
src/SMESH/SMESH_subMesh.hxx
src/SMESH/SMESH_subMeshEventListener.hxx
src/SMESH/memoire.h
src/SMESHClient/CMakeLists.txt
src/SMESHClient/SMESHClientBin.cxx
src/SMESHClient/SMESH_Client.cxx
src/SMESHClient/SMESH_Client.hxx
src/SMESHDS/CMakeLists.txt
src/SMESHDS/SMESHDS_Command.cxx
src/SMESHDS/SMESHDS_Command.hxx
src/SMESHDS/SMESHDS_CommandType.hxx
src/SMESHDS/SMESHDS_DataMapOfShape.hxx
src/SMESHDS/SMESHDS_Document.cxx
src/SMESHDS/SMESHDS_Document.hxx
src/SMESHDS/SMESHDS_Group.cxx
src/SMESHDS/SMESHDS_Group.hxx
src/SMESHDS/SMESHDS_GroupBase.cxx
src/SMESHDS/SMESHDS_GroupBase.hxx
src/SMESHDS/SMESHDS_GroupOnFilter.cxx
src/SMESHDS/SMESHDS_GroupOnFilter.hxx
src/SMESHDS/SMESHDS_GroupOnGeom.cxx
src/SMESHDS/SMESHDS_GroupOnGeom.hxx
src/SMESHDS/SMESHDS_Hypothesis.cxx
src/SMESHDS/SMESHDS_Hypothesis.hxx
src/SMESHDS/SMESHDS_Mesh.cxx
src/SMESHDS/SMESHDS_Mesh.hxx
src/SMESHDS/SMESHDS_Script.cxx
src/SMESHDS/SMESHDS_Script.hxx
src/SMESHDS/SMESHDS_SubMesh.cxx
src/SMESHDS/SMESHDS_SubMesh.hxx
src/SMESHDS/SMESHDS_TSubMeshHolder.hxx
src/SMESHDS/SMESH_Controls.hxx
src/SMESHDS/SMESH_SMESHDS.hxx
src/SMESHFiltersSelection/CMakeLists.txt
src/SMESHFiltersSelection/SMESH_LogicalFilter.cxx
src/SMESHFiltersSelection/SMESH_LogicalFilter.hxx
src/SMESHFiltersSelection/SMESH_NumberFilter.cxx
src/SMESHFiltersSelection/SMESH_NumberFilter.hxx
src/SMESHFiltersSelection/SMESH_Type.h
src/SMESHFiltersSelection/SMESH_TypeFilter.cxx
src/SMESHFiltersSelection/SMESH_TypeFilter.hxx
src/SMESHGUI/CMakeLists.txt
src/SMESHGUI/SMESHGUI.cxx
src/SMESHGUI/SMESHGUI.h
src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.cxx
src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.h
src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx
src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h
src/SMESHGUI/SMESHGUI_AddNodeOnFaceDlg.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_AddNodeOnFaceDlg.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_AddNodeOnSegmentDlg.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_AddNodeOnSegmentDlg.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx
src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.h
src/SMESHGUI/SMESHGUI_BuildCompoundDlg.cxx
src/SMESHGUI/SMESHGUI_BuildCompoundDlg.h
src/SMESHGUI/SMESHGUI_ClippingDlg.cxx
src/SMESHGUI/SMESHGUI_ClippingDlg.h
src/SMESHGUI/SMESHGUI_ComputeDlg.cxx
src/SMESHGUI/SMESHGUI_ComputeDlg.h
src/SMESHGUI/SMESHGUI_ConvToQuadDlg.cxx
src/SMESHGUI/SMESHGUI_ConvToQuadDlg.h
src/SMESHGUI/SMESHGUI_ConvToQuadOp.cxx
src/SMESHGUI/SMESHGUI_ConvToQuadOp.h
src/SMESHGUI/SMESHGUI_CopyMeshDlg.cxx
src/SMESHGUI/SMESHGUI_CopyMeshDlg.h
src/SMESHGUI/SMESHGUI_CreateDualMeshDlg.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_CreateDualMeshDlg.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_CreateDualMeshOp.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_CreateDualMeshOp.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_CreatePatternDlg.cxx
src/SMESHGUI/SMESHGUI_CreatePatternDlg.h
src/SMESHGUI/SMESHGUI_CreatePolyhedralVolumeDlg.cxx
src/SMESHGUI/SMESHGUI_CreatePolyhedralVolumeDlg.h
src/SMESHGUI/SMESHGUI_DeleteGroupDlg.cxx
src/SMESHGUI/SMESHGUI_DeleteGroupDlg.h
src/SMESHGUI/SMESHGUI_Dialog.cxx
src/SMESHGUI/SMESHGUI_Dialog.h
src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx
src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.h
src/SMESHGUI/SMESHGUI_Displayer.cxx
src/SMESHGUI/SMESHGUI_Displayer.h
src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx
src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.h
src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.cxx
src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.h
src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx
src/SMESHGUI/SMESHGUI_ExtrusionDlg.h
src/SMESHGUI/SMESHGUI_FaceGroupsSeparatedByEdgesDlg.cxx
src/SMESHGUI/SMESHGUI_FaceGroupsSeparatedByEdgesDlg.h
src/SMESHGUI/SMESHGUI_FieldSelectorWdg.cxx
src/SMESHGUI/SMESHGUI_FieldSelectorWdg.h
src/SMESHGUI/SMESHGUI_FileInfoDlg.cxx
src/SMESHGUI/SMESHGUI_FileInfoDlg.h
src/SMESHGUI/SMESHGUI_FileValidator.cxx
src/SMESHGUI/SMESHGUI_FileValidator.h
src/SMESHGUI/SMESHGUI_Filter.cxx
src/SMESHGUI/SMESHGUI_Filter.h
src/SMESHGUI/SMESHGUI_FilterDlg.cxx
src/SMESHGUI/SMESHGUI_FilterDlg.h
src/SMESHGUI/SMESHGUI_FilterLibraryDlg.cxx
src/SMESHGUI/SMESHGUI_FilterLibraryDlg.h
src/SMESHGUI/SMESHGUI_FilterUtils.cxx
src/SMESHGUI/SMESHGUI_FilterUtils.h
src/SMESHGUI/SMESHGUI_FindElemByPointDlg.cxx
src/SMESHGUI/SMESHGUI_FindElemByPointDlg.h
src/SMESHGUI/SMESHGUI_GEOMGenUtils.cxx
src/SMESHGUI/SMESHGUI_GEOMGenUtils.h
src/SMESHGUI/SMESHGUI_GroupDlg.cxx
src/SMESHGUI/SMESHGUI_GroupDlg.h
src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.cxx
src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.h
src/SMESHGUI/SMESHGUI_GroupOpDlg.cxx
src/SMESHGUI/SMESHGUI_GroupOpDlg.h
src/SMESHGUI/SMESHGUI_GroupUtils.cxx
src/SMESHGUI/SMESHGUI_GroupUtils.h
src/SMESHGUI/SMESHGUI_HomardAdaptDlg.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_HomardAdaptDlg.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_HomardBoundaryDlg.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_HomardBoundaryDlg.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_HomardListGroup.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_HomardListGroup.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_HomardUtils.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_HomardUtils.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_Homard_msg_en.ts [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_Homard_msg_fr.ts [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_Homard_msg_ja.ts [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_Hypotheses.cxx
src/SMESHGUI/SMESHGUI_Hypotheses.h
src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx
src/SMESHGUI/SMESHGUI_HypothesesUtils.h
src/SMESHGUI/SMESHGUI_IdPreview.cxx
src/SMESHGUI/SMESHGUI_IdPreview.h
src/SMESHGUI/SMESHGUI_IdValidator.h
src/SMESHGUI/SMESHGUI_InteractiveOp.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_InteractiveOp.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_MG_ADAPTDRIVER.cxx
src/SMESHGUI/SMESHGUI_MG_ADAPTDRIVER.h
src/SMESHGUI/SMESHGUI_Make2DFrom3DOp.cxx
src/SMESHGUI/SMESHGUI_Make2DFrom3DOp.h
src/SMESHGUI/SMESHGUI_MakeFull2DFrom3DOp.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_MakeFull2DFrom3DOp.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_MakeNodeAtPointDlg.cxx
src/SMESHGUI/SMESHGUI_MakeNodeAtPointDlg.h
src/SMESHGUI/SMESHGUI_Measurements.cxx
src/SMESHGUI/SMESHGUI_Measurements.h
src/SMESHGUI/SMESHGUI_MergeDlg.cxx
src/SMESHGUI/SMESHGUI_MergeDlg.h
src/SMESHGUI/SMESHGUI_MeshDlg.cxx
src/SMESHGUI/SMESHGUI_MeshDlg.h
src/SMESHGUI/SMESHGUI_MeshEditPreview.cxx
src/SMESHGUI/SMESHGUI_MeshEditPreview.h
src/SMESHGUI/SMESHGUI_MeshInfo.cxx
src/SMESHGUI/SMESHGUI_MeshInfo.h
src/SMESHGUI/SMESHGUI_MeshInfosBox.cxx
src/SMESHGUI/SMESHGUI_MeshInfosBox.h
src/SMESHGUI/SMESHGUI_MeshOp.cxx
src/SMESHGUI/SMESHGUI_MeshOp.h
src/SMESHGUI/SMESHGUI_MeshOrderDlg.cxx
src/SMESHGUI/SMESHGUI_MeshOrderDlg.h
src/SMESHGUI/SMESHGUI_MeshOrderOp.cxx
src/SMESHGUI/SMESHGUI_MeshOrderOp.h
src/SMESHGUI/SMESHGUI_MeshPatternDlg.cxx
src/SMESHGUI/SMESHGUI_MeshPatternDlg.h
src/SMESHGUI/SMESHGUI_MeshUtils.cxx
src/SMESHGUI/SMESHGUI_MeshUtils.h
src/SMESHGUI/SMESHGUI_MgAdaptDlg.cxx
src/SMESHGUI/SMESHGUI_MgAdaptDlg.h
src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx
src/SMESHGUI/SMESHGUI_MultiEditDlg.h
src/SMESHGUI/SMESHGUI_NodesDlg.cxx
src/SMESHGUI/SMESHGUI_NodesDlg.h
src/SMESHGUI/SMESHGUI_OffsetDlg.cxx
src/SMESHGUI/SMESHGUI_OffsetDlg.h
src/SMESHGUI/SMESHGUI_Operation.cxx
src/SMESHGUI/SMESHGUI_Operation.h
src/SMESHGUI/SMESHGUI_Operations.h
src/SMESHGUI/SMESHGUI_PatternUtils.cxx
src/SMESHGUI/SMESHGUI_PatternUtils.h
src/SMESHGUI/SMESHGUI_PatternWidget.cxx
src/SMESHGUI/SMESHGUI_PatternWidget.h
src/SMESHGUI/SMESHGUI_PreVisualObj.cxx
src/SMESHGUI/SMESHGUI_PreVisualObj.h
src/SMESHGUI/SMESHGUI_Preferences_ScalarBarDlg.cxx
src/SMESHGUI/SMESHGUI_Preferences_ScalarBarDlg.h
src/SMESHGUI/SMESHGUI_PreviewDlg.cxx
src/SMESHGUI/SMESHGUI_PreviewDlg.h
src/SMESHGUI/SMESHGUI_PropertiesDlg.cxx
src/SMESHGUI/SMESHGUI_PropertiesDlg.h
src/SMESHGUI/SMESHGUI_RemoveElementsDlg.cxx
src/SMESHGUI/SMESHGUI_RemoveElementsDlg.h
src/SMESHGUI/SMESHGUI_RemoveNodeReconnectionDlg.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_RemoveNodeReconnectionDlg.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_RemoveNodesDlg.cxx
src/SMESHGUI/SMESHGUI_RemoveNodesDlg.h
src/SMESHGUI/SMESHGUI_RenumberingDlg.cxx
src/SMESHGUI/SMESHGUI_RenumberingDlg.h
src/SMESHGUI/SMESHGUI_ReorientFacesDlg.cxx
src/SMESHGUI/SMESHGUI_ReorientFacesDlg.h
src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx
src/SMESHGUI/SMESHGUI_RevolutionDlg.h
src/SMESHGUI/SMESHGUI_RotationDlg.cxx
src/SMESHGUI/SMESHGUI_RotationDlg.h
src/SMESHGUI/SMESHGUI_ScaleDlg.cxx
src/SMESHGUI/SMESHGUI_ScaleDlg.h
src/SMESHGUI/SMESHGUI_Selection.cxx
src/SMESHGUI/SMESHGUI_Selection.h
src/SMESHGUI/SMESHGUI_SelectionOp.cxx
src/SMESHGUI/SMESHGUI_SelectionOp.h
src/SMESHGUI/SMESHGUI_SelectionProxy.cxx
src/SMESHGUI/SMESHGUI_SelectionProxy.h
src/SMESHGUI/SMESHGUI_SewingDlg.cxx
src/SMESHGUI/SMESHGUI_SewingDlg.h
src/SMESHGUI/SMESHGUI_ShapeByMeshDlg.cxx
src/SMESHGUI/SMESHGUI_ShapeByMeshDlg.h
src/SMESHGUI/SMESHGUI_SingleEditDlg.cxx
src/SMESHGUI/SMESHGUI_SingleEditDlg.h
src/SMESHGUI/SMESHGUI_SmoothingDlg.cxx
src/SMESHGUI/SMESHGUI_SmoothingDlg.h
src/SMESHGUI/SMESHGUI_SpinBox.cxx
src/SMESHGUI/SMESHGUI_SpinBox.h
src/SMESHGUI/SMESHGUI_SplitBiQuad.cxx
src/SMESHGUI/SMESHGUI_SplitBiQuad.h
src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx
src/SMESHGUI/SMESHGUI_SymmetryDlg.h
src/SMESHGUI/SMESHGUI_TranslationDlg.cxx
src/SMESHGUI/SMESHGUI_TranslationDlg.h
src/SMESHGUI/SMESHGUI_TransparencyDlg.cxx
src/SMESHGUI/SMESHGUI_TransparencyDlg.h
src/SMESHGUI/SMESHGUI_Utils.cxx
src/SMESHGUI/SMESHGUI_Utils.h
src/SMESHGUI/SMESHGUI_VTKUtils.cxx
src/SMESHGUI/SMESHGUI_VTKUtils.h
src/SMESHGUI/SMESHGUI_XmlHandler.cxx
src/SMESHGUI/SMESHGUI_XmlHandler.h
src/SMESHGUI/SMESH_SMESHGUI.hxx
src/SMESHGUI/SMESH_images.ts
src/SMESHGUI/SMESH_msg_en.ts
src/SMESHGUI/SMESH_msg_fr.ts
src/SMESHGUI/SMESH_msg_ja.ts
src/SMESHUtils/CMakeLists.txt
src/SMESHUtils/SMESH_Block.cxx
src/SMESHUtils/SMESH_Block.hxx
src/SMESHUtils/SMESH_BoostTxtArchive.cxx
src/SMESHUtils/SMESH_BoostTxtArchive.hxx
src/SMESHUtils/SMESH_Comment.hxx
src/SMESHUtils/SMESH_ComputeError.hxx
src/SMESHUtils/SMESH_ControlPnt.cxx
src/SMESHUtils/SMESH_ControlPnt.hxx
src/SMESHUtils/SMESH_DeMerge.cxx
src/SMESHUtils/SMESH_Delaunay.cxx
src/SMESHUtils/SMESH_Delaunay.hxx
src/SMESHUtils/SMESH_File.cxx
src/SMESHUtils/SMESH_File.hxx
src/SMESHUtils/SMESH_FillHole.cxx
src/SMESHUtils/SMESH_FreeBorders.cxx
src/SMESHUtils/SMESH_Indexer.hxx
src/SMESHUtils/SMESH_MAT2d.cxx
src/SMESHUtils/SMESH_MAT2d.hxx
src/SMESHUtils/SMESH_MGLicenseKeyGen.cxx
src/SMESHUtils/SMESH_MGLicenseKeyGen.hxx
src/SMESHUtils/SMESH_MeshAlgos.cxx
src/SMESHUtils/SMESH_MeshAlgos.hxx
src/SMESHUtils/SMESH_Octree.cxx
src/SMESHUtils/SMESH_Octree.hxx
src/SMESHUtils/SMESH_OctreeNode.cxx
src/SMESHUtils/SMESH_OctreeNode.hxx
src/SMESHUtils/SMESH_Offset.cxx
src/SMESHUtils/SMESH_PolyLine.cxx
src/SMESHUtils/SMESH_Quadtree.cxx
src/SMESHUtils/SMESH_Quadtree.hxx
src/SMESHUtils/SMESH_Slot.cxx
src/SMESHUtils/SMESH_Tree.hxx
src/SMESHUtils/SMESH_Triangulate.cxx
src/SMESHUtils/SMESH_TryCatch.cxx
src/SMESHUtils/SMESH_TryCatch.hxx
src/SMESHUtils/SMESH_TypeDefs.hxx
src/SMESHUtils/SMESH_Utils.hxx
src/SMESH_I/CMakeLists.txt
src/SMESH_I/MG_ADAPT_i.cxx
src/SMESH_I/MG_ADAPT_i.hxx
src/SMESH_I/SMESH.hxx
src/SMESH_I/SMESH_0D_Algo_i.cxx
src/SMESH_I/SMESH_0D_Algo_i.hxx
src/SMESH_I/SMESH_1D_Algo_i.cxx
src/SMESH_I/SMESH_1D_Algo_i.hxx
src/SMESH_I/SMESH_2D_Algo_i.cxx
src/SMESH_I/SMESH_2D_Algo_i.hxx
src/SMESH_I/SMESH_2smeshpy.cxx
src/SMESH_I/SMESH_2smeshpy.hxx
src/SMESH_I/SMESH_3D_Algo_i.cxx
src/SMESH_I/SMESH_3D_Algo_i.hxx
src/SMESH_I/SMESH_Algo_i.cxx
src/SMESH_I/SMESH_Algo_i.hxx
src/SMESH_I/SMESH_Component_Generator.cxx [deleted file]
src/SMESH_I/SMESH_Component_Generator.hxx [deleted file]
src/SMESH_I/SMESH_Filter_i.cxx
src/SMESH_I/SMESH_Filter_i.hxx
src/SMESH_I/SMESH_Gen_No_Session_i.cxx
src/SMESH_I/SMESH_Gen_No_Session_i.hxx
src/SMESH_I/SMESH_Gen_Session_i.cxx
src/SMESH_I/SMESH_Gen_Session_i.hxx
src/SMESH_I/SMESH_Gen_i.cxx
src/SMESH_I/SMESH_Gen_i.hxx
src/SMESH_I/SMESH_Gen_i_1.cxx
src/SMESH_I/SMESH_Group_i.cxx
src/SMESH_I/SMESH_Group_i.hxx
src/SMESH_I/SMESH_Homard_i.cxx [new file with mode: 0644]
src/SMESH_I/SMESH_Homard_i.hxx [new file with mode: 0644]
src/SMESH_I/SMESH_Hypothesis_i.cxx
src/SMESH_I/SMESH_Hypothesis_i.hxx
src/SMESH_I/SMESH_Measurements_i.cxx
src/SMESH_I/SMESH_Measurements_i.hxx
src/SMESH_I/SMESH_MeshEditor_i.cxx
src/SMESH_I/SMESH_MeshEditor_i.hxx
src/SMESH_I/SMESH_MeshPartDS.hxx
src/SMESH_I/SMESH_Mesh_i.cxx
src/SMESH_I/SMESH_Mesh_i.hxx
src/SMESH_I/SMESH_NoteBook.cxx
src/SMESH_I/SMESH_NoteBook.hxx
src/SMESH_I/SMESH_ParallelMesh_i.cxx [new file with mode: 0644]
src/SMESH_I/SMESH_ParallelMesh_i.hxx [new file with mode: 0644]
src/SMESH_I/SMESH_Pattern_i.cxx
src/SMESH_I/SMESH_Pattern_i.hxx
src/SMESH_I/SMESH_PreMeshInfo.cxx
src/SMESH_I/SMESH_PreMeshInfo.hxx
src/SMESH_I/SMESH_PythonDump.cxx
src/SMESH_I/SMESH_PythonDump.hxx
src/SMESH_I/SMESH_SequentialMesh_i.hxx [new file with mode: 0644]
src/SMESH_I/SMESH_subMesh_i.cxx
src/SMESH_I/SMESH_subMesh_i.hxx
src/SMESH_PY/CMakeLists.txt
src/SMESH_PY/__init__.py
src/SMESH_PY/smeshstudytools.py
src/SMESH_SWIG/CMakeLists.txt
src/SMESH_SWIG/PAL_MESH_041_mesh.py [deleted file]
src/SMESH_SWIG/PAL_MESH_043_2D.py [deleted file]
src/SMESH_SWIG/PAL_MESH_043_3D.py [deleted file]
src/SMESH_SWIG/SMESH_AdvancedEditor.py [deleted file]
src/SMESH_SWIG/SMESH_BelongToGeom.py [deleted file]
src/SMESH_SWIG/SMESH_BuildCompound.py [deleted file]
src/SMESH_SWIG/SMESH_GroupFromGeom.py [deleted file]
src/SMESH_SWIG/SMESH_GroupFromGeom2.py [deleted file]
src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py [deleted file]
src/SMESH_SWIG/SMESH_Nut.py [deleted file]
src/SMESH_SWIG/SMESH_Partition1_tetra.py [deleted file]
src/SMESH_SWIG/SMESH_Sphere.py [deleted file]
src/SMESH_SWIG/SMESH_blocks.py [deleted file]
src/SMESH_SWIG/SMESH_box.py [deleted file]
src/SMESH_SWIG/SMESH_box2_tetra.py [deleted file]
src/SMESH_SWIG/SMESH_box3_tetra.py [deleted file]
src/SMESH_SWIG/SMESH_box_tetra.py [deleted file]
src/SMESH_SWIG/SMESH_controls.py [deleted file]
src/SMESH_SWIG/SMESH_demo_hexa2_upd.py [deleted file]
src/SMESH_SWIG/SMESH_fixation.py [deleted file]
src/SMESH_SWIG/SMESH_fixation_hexa.py [deleted file]
src/SMESH_SWIG/SMESH_fixation_netgen.py [deleted file]
src/SMESH_SWIG/SMESH_fixation_tetra.py [deleted file]
src/SMESH_SWIG/SMESH_flight_skin.py [deleted file]
src/SMESH_SWIG/SMESH_freebord.py [deleted file]
src/SMESH_SWIG/SMESH_hexaedre.py [deleted file]
src/SMESH_SWIG/SMESH_mechanic.py [deleted file]
src/SMESH_SWIG/SMESH_mechanic_editor.py [deleted file]
src/SMESH_SWIG/SMESH_mechanic_netgen.py [deleted file]
src/SMESH_SWIG/SMESH_mechanic_tetra.py [deleted file]
src/SMESH_SWIG/SMESH_reg.py [deleted file]
src/SMESH_SWIG/SMESH_shared_modules.py [deleted file]
src/SMESH_SWIG/SMESH_test.py [deleted file]
src/SMESH_SWIG/SMESH_test0.py [deleted file]
src/SMESH_SWIG/SMESH_test1.py [deleted file]
src/SMESH_SWIG/SMESH_test1_AndDisplay.py [deleted file]
src/SMESH_SWIG/SMESH_test2.py [deleted file]
src/SMESH_SWIG/SMESH_test3.py [deleted file]
src/SMESH_SWIG/SMESH_test4.py [deleted file]
src/SMESH_SWIG/SMESH_test5.py [deleted file]
src/SMESH_SWIG/SMeshHelper.cxx
src/SMESH_SWIG/SMeshHelper.h
src/SMESH_SWIG/SMeshHelper.i
src/SMESH_SWIG/StdMeshersBuilder.py
src/SMESH_SWIG/YACS_geomesh0.py [deleted file]
src/SMESH_SWIG/__init__.py
src/SMESH_SWIG/ex00_all.py [deleted file]
src/SMESH_SWIG/ex01_cube2build.py [deleted file]
src/SMESH_SWIG/ex02_cube2primitive.py [deleted file]
src/SMESH_SWIG/ex03_cube2partition.py [deleted file]
src/SMESH_SWIG/ex04_cube5tetraHexa.py [deleted file]
src/SMESH_SWIG/ex05_hole1build.py [deleted file]
src/SMESH_SWIG/ex06_hole1boolean.py [deleted file]
src/SMESH_SWIG/ex07_hole1partition.py [deleted file]
src/SMESH_SWIG/ex08_hole2build.py [deleted file]
src/SMESH_SWIG/ex09_grid4build.py [deleted file]
src/SMESH_SWIG/ex10_grid4geometry.py [deleted file]
src/SMESH_SWIG/ex11_grid3partition.py [deleted file]
src/SMESH_SWIG/ex12_grid17partition.py [deleted file]
src/SMESH_SWIG/ex13_hole1partial.py [deleted file]
src/SMESH_SWIG/ex14_cyl1holed.py [deleted file]
src/SMESH_SWIG/ex15_cyl2geometry.py [deleted file]
src/SMESH_SWIG/ex16_cyl2complementary.py [deleted file]
src/SMESH_SWIG/ex17_dome1.py [deleted file]
src/SMESH_SWIG/ex18_dome2.py [deleted file]
src/SMESH_SWIG/ex19_sphereINcube.py [deleted file]
src/SMESH_SWIG/ex21_lamp.py [deleted file]
src/SMESH_SWIG/ex24_cylinder.py [deleted file]
src/SMESH_SWIG/ex29_refine.py [deleted file]
src/SMESH_SWIG/ex30_groupsOp.py [deleted file]
src/SMESH_SWIG/ex30_tepal.py [deleted file]
src/SMESH_SWIG/ex31_dimGroup.py [deleted file]
src/SMESH_SWIG/mesher_launcher.py [new file with mode: 0644]
src/SMESH_SWIG/send_files.py [new file with mode: 0644]
src/SMESH_SWIG/smeshBuilder.py
src/SMESH_SWIG/smesh_algorithm.py
src/SMESH_SWIG/smesh_selection.py
src/SMESH_SWIG/smesh_tools.py [new file with mode: 0644]
src/SMESH_SWIG_WITHIHM/CMakeLists.txt
src/SMESH_SWIG_WITHIHM/libSMESH_Swig.cxx
src/SMESH_SWIG_WITHIHM/libSMESH_Swig.h
src/SMESH_SWIG_WITHIHM/libSMESH_Swig.i
src/SalomeSessionless/CMakeLists.txt [deleted file]
src/SalomeSessionless/SMESH_SalomeSessionless.py [deleted file]
src/StdMeshers/CMakeLists.txt
src/StdMeshers/SMESH_StdMeshers.hxx
src/StdMeshers/StdMeshers_Adaptive1D.cxx
src/StdMeshers/StdMeshers_Adaptive1D.hxx
src/StdMeshers/StdMeshers_Arithmetic1D.cxx
src/StdMeshers/StdMeshers_Arithmetic1D.hxx
src/StdMeshers/StdMeshers_AutomaticLength.cxx
src/StdMeshers/StdMeshers_AutomaticLength.hxx
src/StdMeshers/StdMeshers_BlockRenumber.cxx
src/StdMeshers/StdMeshers_BlockRenumber.hxx
src/StdMeshers/StdMeshers_CartesianParameters3D.cxx
src/StdMeshers/StdMeshers_CartesianParameters3D.hxx
src/StdMeshers/StdMeshers_Cartesian_3D.cxx
src/StdMeshers/StdMeshers_Cartesian_3D.hxx
src/StdMeshers/StdMeshers_Cartesian_VL.cxx [new file with mode: 0644]
src/StdMeshers/StdMeshers_Cartesian_VL.hxx [new file with mode: 0644]
src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx
src/StdMeshers/StdMeshers_CompositeHexa_3D.hxx
src/StdMeshers/StdMeshers_CompositeSegment_1D.cxx
src/StdMeshers/StdMeshers_CompositeSegment_1D.hxx
src/StdMeshers/StdMeshers_Deflection1D.cxx
src/StdMeshers/StdMeshers_Deflection1D.hxx
src/StdMeshers/StdMeshers_Distribution.cxx
src/StdMeshers/StdMeshers_Distribution.hxx
src/StdMeshers/StdMeshers_FaceSide.cxx
src/StdMeshers/StdMeshers_FaceSide.hxx
src/StdMeshers/StdMeshers_FixedPoints1D.cxx
src/StdMeshers/StdMeshers_FixedPoints1D.hxx
src/StdMeshers/StdMeshers_Geometric1D.cxx
src/StdMeshers/StdMeshers_Geometric1D.hxx
src/StdMeshers/StdMeshers_HexaFromSkin_3D.cxx
src/StdMeshers/StdMeshers_HexaFromSkin_3D.hxx
src/StdMeshers/StdMeshers_Hexa_3D.cxx
src/StdMeshers/StdMeshers_Hexa_3D.hxx
src/StdMeshers/StdMeshers_ImportSource.cxx
src/StdMeshers/StdMeshers_ImportSource.hxx
src/StdMeshers/StdMeshers_Import_1D.cxx
src/StdMeshers/StdMeshers_Import_1D.hxx
src/StdMeshers/StdMeshers_Import_1D2D.cxx
src/StdMeshers/StdMeshers_Import_1D2D.hxx
src/StdMeshers/StdMeshers_LayerDistribution.cxx
src/StdMeshers/StdMeshers_LayerDistribution.hxx
src/StdMeshers/StdMeshers_LayerDistribution2D.cxx
src/StdMeshers/StdMeshers_LayerDistribution2D.hxx
src/StdMeshers/StdMeshers_LengthFromEdges.cxx
src/StdMeshers/StdMeshers_LengthFromEdges.hxx
src/StdMeshers/StdMeshers_LocalLength.cxx
src/StdMeshers/StdMeshers_LocalLength.hxx
src/StdMeshers/StdMeshers_MEFISTO_2D.cxx [deleted file]
src/StdMeshers/StdMeshers_MEFISTO_2D.hxx [deleted file]
src/StdMeshers/StdMeshers_MaxElementArea.cxx
src/StdMeshers/StdMeshers_MaxElementArea.hxx
src/StdMeshers/StdMeshers_MaxElementVolume.cxx
src/StdMeshers/StdMeshers_MaxElementVolume.hxx
src/StdMeshers/StdMeshers_MaxLength.cxx
src/StdMeshers/StdMeshers_MaxLength.hxx
src/StdMeshers/StdMeshers_NotConformAllowed.cxx
src/StdMeshers/StdMeshers_NotConformAllowed.hxx
src/StdMeshers/StdMeshers_NumberOfLayers.cxx
src/StdMeshers/StdMeshers_NumberOfLayers.hxx
src/StdMeshers/StdMeshers_NumberOfLayers2D.cxx
src/StdMeshers/StdMeshers_NumberOfLayers2D.hxx
src/StdMeshers/StdMeshers_NumberOfSegments.cxx
src/StdMeshers/StdMeshers_NumberOfSegments.hxx
src/StdMeshers/StdMeshers_Penta_3D.cxx
src/StdMeshers/StdMeshers_Penta_3D.hxx
src/StdMeshers/StdMeshers_PolygonPerFace_2D.cxx
src/StdMeshers/StdMeshers_PolygonPerFace_2D.hxx
src/StdMeshers/StdMeshers_PolyhedronPerSolid_3D.cxx
src/StdMeshers/StdMeshers_PolyhedronPerSolid_3D.hxx
src/StdMeshers/StdMeshers_Prism_3D.cxx
src/StdMeshers/StdMeshers_Prism_3D.hxx
src/StdMeshers/StdMeshers_ProjectionSource1D.cxx
src/StdMeshers/StdMeshers_ProjectionSource1D.hxx
src/StdMeshers/StdMeshers_ProjectionSource2D.cxx
src/StdMeshers/StdMeshers_ProjectionSource2D.hxx
src/StdMeshers/StdMeshers_ProjectionSource3D.cxx
src/StdMeshers/StdMeshers_ProjectionSource3D.hxx
src/StdMeshers/StdMeshers_ProjectionUtils.cxx
src/StdMeshers/StdMeshers_ProjectionUtils.hxx
src/StdMeshers/StdMeshers_Projection_1D.cxx
src/StdMeshers/StdMeshers_Projection_1D.hxx
src/StdMeshers/StdMeshers_Projection_1D2D.cxx
src/StdMeshers/StdMeshers_Projection_1D2D.hxx
src/StdMeshers/StdMeshers_Projection_2D.cxx
src/StdMeshers/StdMeshers_Projection_2D.hxx
src/StdMeshers/StdMeshers_Projection_3D.cxx
src/StdMeshers/StdMeshers_Projection_3D.hxx
src/StdMeshers/StdMeshers_Propagation.cxx
src/StdMeshers/StdMeshers_Propagation.hxx
src/StdMeshers/StdMeshers_QuadFromMedialAxis_1D2D.cxx
src/StdMeshers/StdMeshers_QuadFromMedialAxis_1D2D.hxx
src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cxx
src/StdMeshers/StdMeshers_QuadToTriaAdaptor.hxx
src/StdMeshers/StdMeshers_QuadrangleParams.cxx
src/StdMeshers/StdMeshers_QuadrangleParams.hxx
src/StdMeshers/StdMeshers_QuadranglePreference.cxx
src/StdMeshers/StdMeshers_QuadranglePreference.hxx
src/StdMeshers/StdMeshers_Quadrangle_2D.cxx
src/StdMeshers/StdMeshers_Quadrangle_2D.hxx
src/StdMeshers/StdMeshers_QuadraticMesh.cxx
src/StdMeshers/StdMeshers_QuadraticMesh.hxx
src/StdMeshers/StdMeshers_RadialPrism_3D.cxx
src/StdMeshers/StdMeshers_RadialPrism_3D.hxx
src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cxx
src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.hxx
src/StdMeshers/StdMeshers_Regular_1D.cxx
src/StdMeshers/StdMeshers_Regular_1D.hxx
src/StdMeshers/StdMeshers_Reversible1D.cxx
src/StdMeshers/StdMeshers_Reversible1D.hxx
src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.cxx
src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.hxx
src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.cxx
src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.hxx
src/StdMeshers/StdMeshers_StartEndLength.cxx
src/StdMeshers/StdMeshers_StartEndLength.hxx
src/StdMeshers/StdMeshers_UseExisting_1D2D.cxx
src/StdMeshers/StdMeshers_UseExisting_1D2D.hxx
src/StdMeshers/StdMeshers_ViscousLayerBuilder.cxx [new file with mode: 0644]
src/StdMeshers/StdMeshers_ViscousLayerBuilder.hxx [new file with mode: 0644]
src/StdMeshers/StdMeshers_ViscousLayers.cxx
src/StdMeshers/StdMeshers_ViscousLayers.hxx
src/StdMeshers/StdMeshers_ViscousLayers2D.cxx
src/StdMeshers/StdMeshers_ViscousLayers2D.hxx
src/StdMeshersGUI/CMakeLists.txt
src/StdMeshersGUI/SMESH_StdMeshersGUI.hxx
src/StdMeshersGUI/StdMeshersGUI.cxx
src/StdMeshersGUI/StdMeshersGUI_BlockRenumberCreator.cxx
src/StdMeshersGUI/StdMeshersGUI_BlockRenumberCreator.h
src/StdMeshersGUI/StdMeshersGUI_CartesianParamCreator.cxx
src/StdMeshersGUI/StdMeshersGUI_CartesianParamCreator.h
src/StdMeshersGUI/StdMeshersGUI_DistrPreview.cxx
src/StdMeshersGUI/StdMeshersGUI_DistrPreview.h
src/StdMeshersGUI/StdMeshersGUI_DistrTable.cxx
src/StdMeshersGUI/StdMeshersGUI_DistrTable.h
src/StdMeshersGUI/StdMeshersGUI_FixedPointsParamWdg.cxx
src/StdMeshersGUI/StdMeshersGUI_FixedPointsParamWdg.h
src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.cxx
src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.h
src/StdMeshersGUI/StdMeshersGUI_NameCheckableGrpWdg.cxx
src/StdMeshersGUI/StdMeshersGUI_NameCheckableGrpWdg.h
src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.cxx
src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.h
src/StdMeshersGUI/StdMeshersGUI_ObjectReferenceParamWdg.cxx
src/StdMeshersGUI/StdMeshersGUI_ObjectReferenceParamWdg.h
src/StdMeshersGUI/StdMeshersGUI_PropagationHelperWdg.cxx
src/StdMeshersGUI/StdMeshersGUI_PropagationHelperWdg.h
src/StdMeshersGUI/StdMeshersGUI_QuadrangleParamWdg.cxx
src/StdMeshersGUI/StdMeshersGUI_QuadrangleParamWdg.h
src/StdMeshersGUI/StdMeshersGUI_RadioButtonsGrpWdg.cxx
src/StdMeshersGUI/StdMeshersGUI_RadioButtonsGrpWdg.h
src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx
src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.h
src/StdMeshersGUI/StdMeshersGUI_SubShapeSelectorWdg.cxx
src/StdMeshersGUI/StdMeshersGUI_SubShapeSelectorWdg.h
src/StdMeshersGUI/StdMeshers_images.ts
src/StdMeshersGUI/StdMeshers_msg_en.ts
src/StdMeshersGUI/StdMeshers_msg_fr.ts
src/StdMeshers_I/CMakeLists.txt
src/StdMeshers_I/SMESH_StdMeshers_I.hxx
src/StdMeshers_I/StdMeshers_Adaptive1D_i.cxx
src/StdMeshers_I/StdMeshers_Adaptive1D_i.hxx
src/StdMeshers_I/StdMeshers_Arithmetic1D_i.cxx
src/StdMeshers_I/StdMeshers_Arithmetic1D_i.hxx
src/StdMeshers_I/StdMeshers_AutomaticLength_i.cxx
src/StdMeshers_I/StdMeshers_AutomaticLength_i.hxx
src/StdMeshers_I/StdMeshers_BlockRenumber_i.cxx
src/StdMeshers_I/StdMeshers_BlockRenumber_i.hxx
src/StdMeshers_I/StdMeshers_CartesianParameters3D_i.cxx
src/StdMeshers_I/StdMeshers_CartesianParameters3D_i.hxx
src/StdMeshers_I/StdMeshers_Cartesian_3D_i.cxx
src/StdMeshers_I/StdMeshers_Cartesian_3D_i.hxx
src/StdMeshers_I/StdMeshers_CompositeSegment_1D_i.cxx
src/StdMeshers_I/StdMeshers_CompositeSegment_1D_i.hxx
src/StdMeshers_I/StdMeshers_Deflection1D_i.cxx
src/StdMeshers_I/StdMeshers_Deflection1D_i.hxx
src/StdMeshers_I/StdMeshers_FixedPoints1D_i.cxx
src/StdMeshers_I/StdMeshers_FixedPoints1D_i.hxx
src/StdMeshers_I/StdMeshers_Geometric1D_i.cxx
src/StdMeshers_I/StdMeshers_Geometric1D_i.hxx
src/StdMeshers_I/StdMeshers_Hexa_3D_i.cxx
src/StdMeshers_I/StdMeshers_Hexa_3D_i.hxx
src/StdMeshers_I/StdMeshers_ImportSource1D_i.cxx
src/StdMeshers_I/StdMeshers_ImportSource1D_i.hxx
src/StdMeshers_I/StdMeshers_ImportSource2D_i.cxx
src/StdMeshers_I/StdMeshers_ImportSource2D_i.hxx
src/StdMeshers_I/StdMeshers_Import_1D2D_i.cxx
src/StdMeshers_I/StdMeshers_Import_1D2D_i.hxx
src/StdMeshers_I/StdMeshers_Import_1D_i.cxx
src/StdMeshers_I/StdMeshers_Import_1D_i.hxx
src/StdMeshers_I/StdMeshers_LayerDistribution2D_i.cxx
src/StdMeshers_I/StdMeshers_LayerDistribution2D_i.hxx
src/StdMeshers_I/StdMeshers_LayerDistribution_i.cxx
src/StdMeshers_I/StdMeshers_LayerDistribution_i.hxx
src/StdMeshers_I/StdMeshers_LengthFromEdges_i.cxx
src/StdMeshers_I/StdMeshers_LengthFromEdges_i.hxx
src/StdMeshers_I/StdMeshers_LocalLength_i.cxx
src/StdMeshers_I/StdMeshers_LocalLength_i.hxx
src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.cxx [deleted file]
src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.hxx [deleted file]
src/StdMeshers_I/StdMeshers_MaxElementArea_i.cxx
src/StdMeshers_I/StdMeshers_MaxElementArea_i.hxx
src/StdMeshers_I/StdMeshers_MaxElementVolume_i.cxx
src/StdMeshers_I/StdMeshers_MaxElementVolume_i.hxx
src/StdMeshers_I/StdMeshers_MaxLength_i.cxx
src/StdMeshers_I/StdMeshers_MaxLength_i.hxx
src/StdMeshers_I/StdMeshers_NotConformAllowed_i.cxx
src/StdMeshers_I/StdMeshers_NotConformAllowed_i.hxx
src/StdMeshers_I/StdMeshers_NumberOfLayers2D_i.cxx
src/StdMeshers_I/StdMeshers_NumberOfLayers2D_i.hxx
src/StdMeshers_I/StdMeshers_NumberOfLayers_i.cxx
src/StdMeshers_I/StdMeshers_NumberOfLayers_i.hxx
src/StdMeshers_I/StdMeshers_NumberOfSegments_i.cxx
src/StdMeshers_I/StdMeshers_NumberOfSegments_i.hxx
src/StdMeshers_I/StdMeshers_ObjRefUlils.cxx
src/StdMeshers_I/StdMeshers_ObjRefUlils.hxx
src/StdMeshers_I/StdMeshers_PolygonPerFace_2D_i.cxx
src/StdMeshers_I/StdMeshers_PolygonPerFace_2D_i.hxx
src/StdMeshers_I/StdMeshers_PolyhedronPerSolid_3D_i.cxx
src/StdMeshers_I/StdMeshers_PolyhedronPerSolid_3D_i.hxx
src/StdMeshers_I/StdMeshers_Prism_3D_i.cxx
src/StdMeshers_I/StdMeshers_Prism_3D_i.hxx
src/StdMeshers_I/StdMeshers_ProjectionSource1D_i.cxx
src/StdMeshers_I/StdMeshers_ProjectionSource1D_i.hxx
src/StdMeshers_I/StdMeshers_ProjectionSource2D_i.cxx
src/StdMeshers_I/StdMeshers_ProjectionSource2D_i.hxx
src/StdMeshers_I/StdMeshers_ProjectionSource3D_i.cxx
src/StdMeshers_I/StdMeshers_ProjectionSource3D_i.hxx
src/StdMeshers_I/StdMeshers_Projection_1D_2D_3D_i.cxx
src/StdMeshers_I/StdMeshers_Projection_1D_2D_3D_i.hxx
src/StdMeshers_I/StdMeshers_Propagation_i.cxx
src/StdMeshers_I/StdMeshers_Propagation_i.hxx
src/StdMeshers_I/StdMeshers_QuadrangleParams_i.cxx
src/StdMeshers_I/StdMeshers_QuadrangleParams_i.hxx
src/StdMeshers_I/StdMeshers_QuadranglePreference_i.cxx
src/StdMeshers_I/StdMeshers_QuadranglePreference_i.hxx
src/StdMeshers_I/StdMeshers_Quadrangle_2D_i.cxx
src/StdMeshers_I/StdMeshers_Quadrangle_2D_i.hxx
src/StdMeshers_I/StdMeshers_QuadraticMesh_i.cxx
src/StdMeshers_I/StdMeshers_QuadraticMesh_i.hxx
src/StdMeshers_I/StdMeshers_RadialQuadrangle_1D2D_i.cxx
src/StdMeshers_I/StdMeshers_RadialQuadrangle_1D2D_i.hxx
src/StdMeshers_I/StdMeshers_Regular_1D_i.cxx
src/StdMeshers_I/StdMeshers_Regular_1D_i.hxx
src/StdMeshers_I/StdMeshers_Reversible1D_i.cxx
src/StdMeshers_I/StdMeshers_Reversible1D_i.hxx
src/StdMeshers_I/StdMeshers_SegmentAroundVertex_0D_i.cxx
src/StdMeshers_I/StdMeshers_SegmentAroundVertex_0D_i.hxx
src/StdMeshers_I/StdMeshers_SegmentLengthAroundVertex_i.cxx
src/StdMeshers_I/StdMeshers_SegmentLengthAroundVertex_i.hxx
src/StdMeshers_I/StdMeshers_StartEndLength_i.cxx
src/StdMeshers_I/StdMeshers_StartEndLength_i.hxx
src/StdMeshers_I/StdMeshers_UseExisting_1D2D_i.cxx
src/StdMeshers_I/StdMeshers_UseExisting_1D2D_i.hxx
src/StdMeshers_I/StdMeshers_ViscousLayerBuilder_i.cxx [new file with mode: 0644]
src/StdMeshers_I/StdMeshers_ViscousLayerBuilder_i.hxx [new file with mode: 0644]
src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.cxx
src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.hxx
src/StdMeshers_I/StdMeshers_ViscousLayers_i.cxx
src/StdMeshers_I/StdMeshers_ViscousLayers_i.hxx
src/StdMeshers_I/StdMeshers_i.cxx
src/Tools/CMakeLists.txt
src/Tools/MGCleanerPlug/CMakeLists.txt
src/Tools/MGCleanerPlug/MGCleanerMonPlugDialog.py
src/Tools/MGCleanerPlug/MGCleanerMonViewText.py
src/Tools/MGCleanerPlug/MGCleanerplug_plugin.py
src/Tools/MGCleanerPlug/doc/CMakeLists.txt
src/Tools/MGCleanerPlug/doc/conf.py.in
src/Tools/MacMesh/CMakeLists.txt
src/Tools/MacMesh/Example/PressureValve.py.in
src/Tools/MacMesh/MacMesh/Alarms.py
src/Tools/MacMesh/MacMesh/CentralUnrefine.py
src/Tools/MacMesh/MacMesh/CompositeBox.py
src/Tools/MacMesh/MacMesh/CompositeBoxF.py
src/Tools/MacMesh/MacMesh/Config.py
src/Tools/MacMesh/MacMesh/CutnGroup.py
src/Tools/MacMesh/MacMesh/Cylinder.py
src/Tools/MacMesh/MacMesh/GenFunctions.py
src/Tools/MacMesh/MacMesh/MacObject.py
src/Tools/MacMesh/MacMesh/PublishGroups.py
src/Tools/MacMesh/MacMesh/SharpAngle.py
src/Tools/MeshCut/AUTHORS
src/Tools/MeshCut/CMakeLists.txt
src/Tools/MeshCut/MeshCut_Carre.cxx
src/Tools/MeshCut/MeshCut_Carre.hxx
src/Tools/MeshCut/MeshCut_Cas.cxx
src/Tools/MeshCut/MeshCut_Cas.hxx
src/Tools/MeshCut/MeshCut_Cube.cxx
src/Tools/MeshCut/MeshCut_Cube.hxx
src/Tools/MeshCut/MeshCut_DC.cxx
src/Tools/MeshCut/MeshCut_Fonctions.cxx
src/Tools/MeshCut/MeshCut_Fonctions.hxx
src/Tools/MeshCut/MeshCut_Globals.hxx
src/Tools/MeshCut/MeshCut_Maillage.cxx
src/Tools/MeshCut/MeshCut_Maillage.hxx
src/Tools/MeshCut/MeshCut_Utils.cxx
src/Tools/MeshCut/MeshCut_Utils.hxx
src/Tools/MeshCut/meshcut_plugin.py
src/Tools/TopIIVolMeshPlug/CMakeLists.txt [new file with mode: 0644]
src/Tools/TopIIVolMeshPlug/README [new file with mode: 0644]
src/Tools/TopIIVolMeshPlug/TopIIVolMeshMonitor.py [new file with mode: 0644]
src/Tools/TopIIVolMeshPlug/TopIIVolMeshMonitor.ui [new file with mode: 0644]
src/Tools/TopIIVolMeshPlug/TopIIVolMeshPlugin.py [new file with mode: 0644]
src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.py [new file with mode: 0644]
src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.ui [new file with mode: 0644]
src/Tools/TopIIVolMeshPlug/TopIIVolMeshPlugin_plugin.py [new file with mode: 0644]
src/Tools/TopIIVolMeshPlug/doc/CMakeLists.txt [new file with mode: 0644]
src/Tools/TopIIVolMeshPlug/doc/TopIIVolMesh.rst [new file with mode: 0644]
src/Tools/TopIIVolMeshPlug/doc/conf.py.in [new file with mode: 0644]
src/Tools/TopIIVolMeshPlug/doc/images/callTopIIVolMesh.png [new file with mode: 0644]
src/Tools/TopIIVolMeshPlug/doc/index.rst [new file with mode: 0644]
src/Tools/Verima/Base/CMakeLists.txt
src/Tools/Verima/Base/__init__.py
src/Tools/Verima/Base/dataBase.py
src/Tools/Verima/Base/exportToCSV.py
src/Tools/Verima/Base/importFromCSV.py
src/Tools/Verima/Base/tableDeBase.py
src/Tools/Verima/Base/tableGroupeRatios.py
src/Tools/Verima/Base/tableGroupeTailles.py
src/Tools/Verima/Base/tableGroupes.py
src/Tools/Verima/Base/tableGroupesRef.py
src/Tools/Verima/Base/tableMachines.py
src/Tools/Verima/Base/tableMaillages.py
src/Tools/Verima/Base/tableMailles.py
src/Tools/Verima/Base/tableMailleurs.py
src/Tools/Verima/Base/tablePerfs.py
src/Tools/Verima/Base/tableRatios.py
src/Tools/Verima/Base/tableTailles.py
src/Tools/Verima/Base/tableVersions.py
src/Tools/Verima/Base/versions.py
src/Tools/Verima/CMakeLists.txt
src/Tools/Verima/CreeDocuments/CMakeLists.txt
src/Tools/Verima/CreeDocuments/__init__.py
src/Tools/Verima/CreeDocuments/jobHtml.py
src/Tools/Verima/CreeDocuments/templatesHtml/CMakeLists.txt
src/Tools/Verima/Doc/CMakeLists.txt
src/Tools/Verima/Doc/conf.py.in
src/Tools/Verima/Doc/makefile
src/Tools/Verima/Gui/CMakeLists.txt
src/Tools/Verima/Gui/__init__.py
src/Tools/Verima/Gui/desFenetreChoix.py
src/Tools/Verima/Gui/maFenetreChoix.py
src/Tools/Verima/Gui/makefile
src/Tools/Verima/Gui/monEditor.py
src/Tools/Verima/Gui/monNomBase.py
src/Tools/Verima/Gui/myMain.py
src/Tools/Verima/Gui/nomBase.py
src/Tools/Verima/Gui/visualiseDatabase.py
src/Tools/Verima/Stats/CMakeLists.txt
src/Tools/Verima/Stats/Type_Maille.py
src/Tools/Verima/Stats/__init__.py
src/Tools/Verima/Stats/getCritere.py
src/Tools/Verima/Stats/getStats.py
src/Tools/Verima/Stats/job.py
src/Tools/Verima/Stats/ref.py
src/Tools/Verima/Stats/utiles.py
src/Tools/Verima/__init__.py
src/Tools/Verima/ajoutEnreg.py
src/Tools/Verima/compareVersions.py
src/Tools/Verima/createDatabase.py
src/Tools/Verima/lance.py
src/Tools/Verima/makefile
src/Tools/Verima/passeJobs.py
src/Tools/YamsPlug/CMakeLists.txt
src/Tools/YamsPlug/doc/CMakeLists.txt
src/Tools/YamsPlug/doc/conf.py.in
src/Tools/YamsPlug/monViewText.py
src/Tools/YamsPlug/monYamsPlugDialog.py
src/Tools/YamsPlug/yamsplug_plugin.py
src/Tools/ZCracksPlug/CMakeLists.txt
src/Tools/ZCracksPlug/Zset.py
src/Tools/ZCracksPlug/__init__.py
src/Tools/ZCracksPlug/casTests/CMakeLists.txt
src/Tools/ZCracksPlug/casTests/__init__.py
src/Tools/ZCracksPlug/casTests/genereCube.py
src/Tools/ZCracksPlug/casTests/launchCas.py
src/Tools/ZCracksPlug/casTests/launchManuel.py
src/Tools/ZCracksPlug/doc/CMakeLists.txt
src/Tools/ZCracksPlug/doc/conf.py.in
src/Tools/ZCracksPlug/ellipse.py
src/Tools/ZCracksPlug/genereCrack.py
src/Tools/ZCracksPlug/main.py
src/Tools/ZCracksPlug/output.py
src/Tools/ZCracksPlug/readme.sh
src/Tools/ZCracksPlug/rectangle.py
src/Tools/ZCracksPlug/sphere.py
src/Tools/ZCracksPlug/utilityFunctions.py
src/Tools/ZCracksPlug/zcracksLaunch.py
src/Tools/ZCracksPlug/zcracks_plugin.py
src/Tools/blocFissure/AREextradosLauncher.py
src/Tools/blocFissure/AREintradosLauncher.py
src/Tools/blocFissure/CMakeLists.txt
src/Tools/blocFissure/CasTests/CMakeLists.txt
src/Tools/blocFissure/CasTests/__init__.py
src/Tools/blocFissure/CasTests/blocFissureTest.py
src/Tools/blocFissure/CasTests/cubeAngle.py
src/Tools/blocFissure/CasTests/cubeAngle_2.py
src/Tools/blocFissure/CasTests/cubeCoin.py
src/Tools/blocFissure/CasTests/cubeMilieu.py
src/Tools/blocFissure/CasTests/cubeTransverse.py
src/Tools/blocFissure/CasTests/cylindre.py
src/Tools/blocFissure/CasTests/cylindre_2.py
src/Tools/blocFissure/CasTests/disquePerce.py
src/Tools/blocFissure/CasTests/ellipse_1.py
src/Tools/blocFissure/CasTests/ellipse_2.py
src/Tools/blocFissure/CasTests/eprouvetteCourbe.py
src/Tools/blocFissure/CasTests/eprouvetteDroite.py
src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py
src/Tools/blocFissure/CasTests/faceGauche.py
src/Tools/blocFissure/CasTests/faceGauche_2.py
src/Tools/blocFissure/CasTests/fissureCoude_1.py
src/Tools/blocFissure/CasTests/fissureCoude_10.py
src/Tools/blocFissure/CasTests/fissureCoude_2.py
src/Tools/blocFissure/CasTests/fissureCoude_3.py
src/Tools/blocFissure/CasTests/fissureCoude_4.py
src/Tools/blocFissure/CasTests/fissureCoude_5.py
src/Tools/blocFissure/CasTests/fissureCoude_6.py
src/Tools/blocFissure/CasTests/fissureCoude_7.py
src/Tools/blocFissure/CasTests/fissureCoude_8.py
src/Tools/blocFissure/CasTests/fissureCoude_9.py
src/Tools/blocFissure/CasTests/fissure_Coude.py
src/Tools/blocFissure/CasTests/fissure_Coude_4.py
src/Tools/blocFissure/CasTests/tube.py
src/Tools/blocFissure/CasTests/vis_1.py
src/Tools/blocFissure/__init__.py
src/Tools/blocFissure/doc/CMakeLists.txt
src/Tools/blocFissure/doc/conf.py.in
src/Tools/blocFissure/exemple.py
src/Tools/blocFissure/exemple2.py
src/Tools/blocFissure/fissureLauncher.py
src/Tools/blocFissure/gmu/CMakeLists.txt
src/Tools/blocFissure/gmu/__init__.py
src/Tools/blocFissure/gmu/ajustePointsEdgePipeFissure.py
src/Tools/blocFissure/gmu/blocDefaut.py
src/Tools/blocFissure/gmu/calculePointsAxiauxPipe.py
src/Tools/blocFissure/gmu/calculePointsAxiauxPipe_a.py
src/Tools/blocFissure/gmu/calculePointsAxiauxPipe_b.py
src/Tools/blocFissure/gmu/calculePointsAxiauxPipe_c.py
src/Tools/blocFissure/gmu/casStandard.py
src/Tools/blocFissure/gmu/checkDecoupePartition.py
src/Tools/blocFissure/gmu/commonSubShapes.py
src/Tools/blocFissure/gmu/compoundFromList.py
src/Tools/blocFissure/gmu/construitEdgesRadialesDebouchantes.py
src/Tools/blocFissure/gmu/construitEdgesRadialesDebouchantes_a.py
src/Tools/blocFissure/gmu/construitEdgesRadialesDebouchantes_b.py
src/Tools/blocFissure/gmu/construitEdgesRadialesDebouchantes_c.py
src/Tools/blocFissure/gmu/construitFissureGenerale.py
src/Tools/blocFissure/gmu/construitFissureGenerale_a.py
src/Tools/blocFissure/gmu/construitFissureGenerale_b.py
src/Tools/blocFissure/gmu/construitFissureGenerale_c.py
src/Tools/blocFissure/gmu/construitMaillagePipe.py
src/Tools/blocFissure/gmu/construitMaillagePipe_a.py
src/Tools/blocFissure/gmu/construitMaillagePipe_b.py
src/Tools/blocFissure/gmu/construitMaillagePipe_c.py
src/Tools/blocFissure/gmu/construitMaillagePipe_d.py
src/Tools/blocFissure/gmu/construitPartitionsPeauFissure.py
src/Tools/blocFissure/gmu/creePointsPipePeau.py
src/Tools/blocFissure/gmu/creeZoneDefautDansObjetSain.py
src/Tools/blocFissure/gmu/creeZoneDefautFilling.py
src/Tools/blocFissure/gmu/creeZoneDefautGeom.py
src/Tools/blocFissure/gmu/creeZoneDefautMaillage.py
src/Tools/blocFissure/gmu/distance2.py
src/Tools/blocFissure/gmu/eliminateDoubles.py
src/Tools/blocFissure/gmu/elimineExtremitesPipe.py
src/Tools/blocFissure/gmu/ellipsoideDefaut.py
src/Tools/blocFissure/gmu/enleveDefaut.py
src/Tools/blocFissure/gmu/extractionOrientee.py
src/Tools/blocFissure/gmu/extractionOrienteeMulti.py
src/Tools/blocFissure/gmu/extractionOrientee_a.py
src/Tools/blocFissure/gmu/facesCirculaires.py
src/Tools/blocFissure/gmu/facesFissure.py
src/Tools/blocFissure/gmu/facesToreInBloc.py
src/Tools/blocFissure/gmu/facesVolumesToriques.py
src/Tools/blocFissure/gmu/findWireEndVertices.py
src/Tools/blocFissure/gmu/findWireIntermediateVertices.py
src/Tools/blocFissure/gmu/findWireVertices.py
src/Tools/blocFissure/gmu/fissError.py
src/Tools/blocFissure/gmu/fissureCoude.py
src/Tools/blocFissure/gmu/fissureGenerique.py
src/Tools/blocFissure/gmu/fusionMaillageAttributionDefaut.py
src/Tools/blocFissure/gmu/genereElemsFissureElliptique.py
src/Tools/blocFissure/gmu/genereMeshCalculZoneDefaut.py
src/Tools/blocFissure/gmu/geomsmesh.py
src/Tools/blocFissure/gmu/getCentreFondFiss.py
src/Tools/blocFissure/gmu/getStatsMaillageFissure.py
src/Tools/blocFissure/gmu/getSubshapeIds.py
src/Tools/blocFissure/gmu/identifieEdgesPeau.py
src/Tools/blocFissure/gmu/identifieEdgesPeau_a.py
src/Tools/blocFissure/gmu/identifieEdgesPeau_b.py
src/Tools/blocFissure/gmu/identifieEdgesPeau_c.py
src/Tools/blocFissure/gmu/identifieElementsDebouchants.py
src/Tools/blocFissure/gmu/identifieElementsDebouchants_a.py
src/Tools/blocFissure/gmu/identifieElementsDebouchants_b.py
src/Tools/blocFissure/gmu/identifieElementsDebouchants_c.py
src/Tools/blocFissure/gmu/identifieElementsDebouchants_d.py
src/Tools/blocFissure/gmu/identifieElementsFissure.py
src/Tools/blocFissure/gmu/identifieElementsGeometriquesPeau.py
src/Tools/blocFissure/gmu/identifieFacesEdgesFissureExterne.py
src/Tools/blocFissure/gmu/identifieFacesPeau.py
src/Tools/blocFissure/gmu/initEtude.py
src/Tools/blocFissure/gmu/initLog.py
src/Tools/blocFissure/gmu/insereFissureElliptique.py
src/Tools/blocFissure/gmu/insereFissureLongue.py
src/Tools/blocFissure/gmu/insereFissureLongue_a.py
src/Tools/blocFissure/gmu/insereFissureLongue_b.py
src/Tools/blocFissure/gmu/insereFissureLongue_c.py
src/Tools/blocFissure/gmu/insereFissureLongue_d.py
src/Tools/blocFissure/gmu/insereFissureLongue_e.py
src/Tools/blocFissure/gmu/insereFissureLongue_f.py
src/Tools/blocFissure/gmu/insereFissureLongue_g.py
src/Tools/blocFissure/gmu/listOfExtraFunctions.py
src/Tools/blocFissure/gmu/mailleAretesEtJonction.py
src/Tools/blocFissure/gmu/mailleFacesFissure.py
src/Tools/blocFissure/gmu/mailleFacesPeau.py
src/Tools/blocFissure/gmu/meshBlocPart.py
src/Tools/blocFissure/gmu/orderEdgesFromWire.py
src/Tools/blocFissure/gmu/partitionBlocDefaut.py
src/Tools/blocFissure/gmu/partitionVolumeSain.py
src/Tools/blocFissure/gmu/partitionneFissureParPipe.py
src/Tools/blocFissure/gmu/peauInterne.py
src/Tools/blocFissure/gmu/produitMixte.py
src/Tools/blocFissure/gmu/projettePointSurCourbe.py
src/Tools/blocFissure/gmu/prolongeVertices.py
src/Tools/blocFissure/gmu/prolongeWire.py
src/Tools/blocFissure/gmu/propagateTore.py
src/Tools/blocFissure/gmu/putName.py
src/Tools/blocFissure/gmu/quadranglesToShape.py
src/Tools/blocFissure/gmu/quadranglesToShapeNoCorner.py
src/Tools/blocFissure/gmu/quadranglesToShapeWithCorner.py
src/Tools/blocFissure/gmu/regroupeSainEtDefaut.py
src/Tools/blocFissure/gmu/restreintFaceFissure.py
src/Tools/blocFissure/gmu/rotTrans.py
src/Tools/blocFissure/gmu/shapeSurFissure.py
src/Tools/blocFissure/gmu/shapesSurFissure.py
src/Tools/blocFissure/gmu/sortEdges.py
src/Tools/blocFissure/gmu/sortFaces.py
src/Tools/blocFissure/gmu/sortGeneratrices.py
src/Tools/blocFissure/gmu/sortSolids.py
src/Tools/blocFissure/gmu/substractSubShapes.py
src/Tools/blocFissure/gmu/toreFissure.py
src/Tools/blocFissure/gmu/triedreBase.py
src/Tools/blocFissure/gmu/trouveEdgesFissPeau.py
src/Tools/blocFissure/gmu/whichSide.py
src/Tools/blocFissure/gmu/whichSideMulti.py
src/Tools/blocFissure/gmu/whichSideVertex.py
src/Tools/blocFissure/ihm/CMakeLists.txt
src/Tools/blocFissure/ihm/__init__.py
src/Tools/blocFissure/ihm/fissureCoude_ihm.py
src/Tools/blocFissure/ihm/fissureCoude_plugin.py
src/Tools/blocFissure/ihm/fissureGenerale_plugin.py
src/Tools/blocFissure/lanceurSoudureArrondieTest.py
src/Tools/blocFissure/lanceurSoudureViveTest.py
src/Tools/blocFissure/lanceurTestAubry.py
src/Tools/blocFissure/materielCasTests/CMakeLists.txt
src/Tools/blocFissure/materielCasTests/__init__.py
src/Tools/blocFissure/materielCasTests/cubeAngle.py
src/Tools/blocFissure/materielCasTests/cubeFin.py
src/Tools/blocFissure/materielCasTests/decoupeCylindre.py
src/Tools/blocFissure/materielCasTests/disquePerce.py
src/Tools/blocFissure/materielCasTests/ellipse.py
src/Tools/blocFissure/materielCasTests/ellipse_disque.py
src/Tools/blocFissure/materielCasTests/ellipse_probleme.py
src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py
src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py
src/Tools/blocFissure/materielCasTests/fissureGauche.py
src/Tools/blocFissure/materielCasTests/fissureGauche_2.py
src/Tools/blocFissure/materielCasTests/genereMateriel.py
src/Tools/blocFissure/materielCasTests/tube.py
src/Tools/blocFissure/materielCasTests/vis.py
src/Tools/padder/CMakeLists.txt
src/Tools/padder/doc/CMakeLists.txt
src/Tools/padder/doc/static/footer.html
src/Tools/padder/meshjob/CMakeLists.txt
src/Tools/padder/meshjob/idl/CMakeLists.txt
src/Tools/padder/meshjob/idl/MESHJOB.idl
src/Tools/padder/meshjob/idl/SPADDERPluginTest.idl
src/Tools/padder/meshjob/impl/CMakeLists.txt
src/Tools/padder/meshjob/impl/MeshJobManager_i.cxx
src/Tools/padder/meshjob/impl/MeshJobManager_i.hxx
src/Tools/padder/meshjob/impl/SMeshPadderHelper.cxx [new file with mode: 0644]
src/Tools/padder/meshjob/impl/SMeshPadderHelper.h [new file with mode: 0644]
src/Tools/padder/meshjob/impl/SMeshPadderHelper.i [new file with mode: 0644]
src/Tools/padder/meshjob/impl/SPADDERPluginTester_i.cxx
src/Tools/padder/meshjob/impl/SPADDERPluginTester_i.hxx
src/Tools/padder/meshjob/impl/testhelper.hxx
src/Tools/padder/resources/CMakeLists.txt
src/Tools/padder/resources/testdata/buildparticules.py
src/Tools/padder/spadderpy/CMakeLists.txt
src/Tools/padder/spadderpy/__init__.py
src/Tools/padder/spadderpy/configreader.py
src/Tools/padder/spadderpy/gui/CMakeLists.txt
src/Tools/padder/spadderpy/gui/__init__.py
src/Tools/padder/spadderpy/gui/inputdata.py
src/Tools/padder/spadderpy/gui/inputdialog.py
src/Tools/padder/spadderpy/gui/plugindialog.py
src/Tools/padder/spadderpy/plugin/CMakeLists.txt
src/Tools/padder/spadderpy/plugin/envPlugins.sh.in
src/Tools/padder/spadderpy/plugin/spadderPlugin.py
src/Tools/padder/unittests/CMakeLists.txt
src/Tools/padder/unittests/__init__.py
src/Tools/padder/unittests/autotest.sh.in
src/Tools/padder/unittests/usecase_meshJobManager.py
src/Tools/padder/unittests/usecase_spadderPluginTester.py
src/Tools/smesh_plugins.py
test/0README [new file with mode: 0644]
test/CMakeLists.txt
test/CTestTestfileInstall.cmake [new file with mode: 0644]
test/PAL_MESH_041_mesh.py [new file with mode: 0644]
test/PAL_MESH_043_2D.py [new file with mode: 0644]
test/PAL_MESH_043_3D.py [new file with mode: 0644]
test/SMESH_AdvancedEditor.py [new file with mode: 0644]
test/SMESH_BelongToGeom.py [new file with mode: 0644]
test/SMESH_BuildCompound.py [new file with mode: 0644]
test/SMESH_GroupFromGeom.py [new file with mode: 0644]
test/SMESH_GroupFromGeom2.py [new file with mode: 0644]
test/SMESH_GroupLyingOnGeom.py [new file with mode: 0644]
test/SMESH_Nut.py [new file with mode: 0644]
test/SMESH_Partition1_tetra.py [new file with mode: 0644]
test/SMESH_Sphere.py [new file with mode: 0644]
test/SMESH_blocks.py [new file with mode: 0644]
test/SMESH_box.py [new file with mode: 0644]
test/SMESH_box2_tetra.py [new file with mode: 0644]
test/SMESH_box3_tetra.py [new file with mode: 0644]
test/SMESH_box_tetra.py [new file with mode: 0644]
test/SMESH_controls.py [new file with mode: 0644]
test/SMESH_controls_3D_warping.py [new file with mode: 0644]
test/SMESH_controls_scaled_jacobian.py [new file with mode: 0644]
test/SMESH_create_dual_mesh_adapt.py [new file with mode: 0644]
test/SMESH_create_dual_mesh_tpipe.py [new file with mode: 0644]
test/SMESH_demo_hexa2_upd.py [new file with mode: 0644]
test/SMESH_fixation.py [new file with mode: 0644]
test/SMESH_fixation_hexa.py [new file with mode: 0644]
test/SMESH_fixation_netgen.py [new file with mode: 0644]
test/SMESH_fixation_tetra.py [new file with mode: 0644]
test/SMESH_flight_skin.py [new file with mode: 0644]
test/SMESH_freebord.py [new file with mode: 0644]
test/SMESH_hexaedre.py [new file with mode: 0644]
test/SMESH_mechanic.py [new file with mode: 0644]
test/SMESH_mechanic_editor.py [new file with mode: 0644]
test/SMESH_mechanic_netgen.py [new file with mode: 0644]
test/SMESH_mechanic_tetra.py [new file with mode: 0644]
test/SMESH_reg.py [new file with mode: 0644]
test/SMESH_test.py [new file with mode: 0644]
test/SMESH_test0.py [new file with mode: 0644]
test/SMESH_test1.py [new file with mode: 0644]
test/SMESH_test1_AndDisplay.py [new file with mode: 0644]
test/SMESH_test2.py [new file with mode: 0644]
test/SMESH_test3.py [new file with mode: 0644]
test/SMESH_test4.py [new file with mode: 0644]
test/SMESH_test5.py [new file with mode: 0644]
test/basic_geom_smesh_without_session.py [new file with mode: 0644]
test/basic_shaper_smesh_without_session.py [new file with mode: 0644]
test/basic_smesh_output_with_mc_field.py [new file with mode: 0644]
test/blocFissure_01_without_session.py [new file with mode: 0644]
test/blocFissure_02_without_session.py [new file with mode: 0644]
test/blocFissure_03_without_session.py [new file with mode: 0644]
test/blocFissure_04_without_session.py [new file with mode: 0644]
test/blocFissure_05_without_session.py [new file with mode: 0644]
test/blocFissure_06_without_session.py [new file with mode: 0644]
test/blocFissure_07_without_session.py [new file with mode: 0644]
test/body_fitting_quanta_sphere.py [new file with mode: 0644]
test/body_fitting_viscous_layer_cylinder.py [new file with mode: 0644]
test/body_fitting_viscous_layer_tpipe.py [new file with mode: 0644]
test/create_penta_biquad.py [new file with mode: 0644]
test/data/Mesh_tri.med [new file with mode: 0644]
test/doublenodes_polyhedra.py [new file with mode: 0644]
test/ex00_all.py [new file with mode: 0644]
test/ex01_cube2build.py [new file with mode: 0644]
test/ex02_cube2primitive.py [new file with mode: 0644]
test/ex03_cube2partition.py [new file with mode: 0644]
test/ex04_cube5tetraHexa.py [new file with mode: 0644]
test/ex05_hole1build.py [new file with mode: 0644]
test/ex06_hole1boolean.py [new file with mode: 0644]
test/ex07_hole1partition.py [new file with mode: 0644]
test/ex08_hole2build.py [new file with mode: 0644]
test/ex09_grid4build.py [new file with mode: 0644]
test/ex10_grid4geometry.py [new file with mode: 0644]
test/ex11_grid3partition.py [new file with mode: 0644]
test/ex12_grid17partition.py [new file with mode: 0644]
test/ex13_hole1partial.py [new file with mode: 0644]
test/ex14_cyl1holed.py [new file with mode: 0644]
test/ex15_cyl2geometry.py [new file with mode: 0644]
test/ex16_cyl2complementary.py [new file with mode: 0644]
test/ex17_dome1.py [new file with mode: 0644]
test/ex18_dome2.py [new file with mode: 0644]
test/ex19_sphereINcube.py [new file with mode: 0644]
test/ex21_lamp.py [new file with mode: 0644]
test/ex24_cylinder.py [new file with mode: 0644]
test/ex29_refine.py [new file with mode: 0644]
test/ex30_groupsOp.py [new file with mode: 0644]
test/ex31_dimGroup.py [new file with mode: 0644]
test/ex_MakePolyLine.py [new file with mode: 0644]
test/extrusion_penta_biquad.py [new file with mode: 0644]
test/gmsh_runner.py [new file with mode: 0644]
test/netgen_runner.py [new file with mode: 0644]
test/netgen_runner_1D2D3D.py [new file with mode: 0644]
test/netgen_runner_2D.py [new file with mode: 0644]
test/shaper_smesh_groups_without_session.py [new file with mode: 0644]
test/ssl_hdf5_symbols_conflicts.py [new file with mode: 0644]
test/test_helper.py [new file with mode: 0755]
test/test_import_1D2D_with_tetras_and_pyras.py [new file with mode: 0644]
test/test_polyhedron_per_solid.py [new file with mode: 0644]
test/test_smeshplugins.py [new file with mode: 0644]
test/test_vlapi_growthlayer.py [new file with mode: 0644]
test/test_vlapi_shrinkgeometry.py [new file with mode: 0644]
test/tests.set [new file with mode: 0644]

index 2f4705da4a45398b6c82d6fb417b2ab9c3642ac8..2a6a4f30c494ed0358ec644e89a21a0fd4071538 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -38,7 +38,7 @@ ENDIF()
 
 # Versioning
 # ===========
-SALOME_SETUP_VERSION(9.7.0 DEVELOPMENT)
+SALOME_SETUP_VERSION(9.12.0)
 MESSAGE(STATUS "Building ${PROJECT_NAME_UC} ${${PROJECT_NAME_UC}_VERSION} from \"${${PROJECT_NAME_UC}_GIT_SHA1}\"")
 
 # Find KERNEL
@@ -89,13 +89,6 @@ ELSE(SMESH_USE_MESHGEMS_HYPOSET)
   SET(SMESH_USE_MESHGEMS_HYPOSET_VAR "false")
 ENDIF(SMESH_USE_MESHGEMS_HYPOSET)
 
-#On Linux use Fortran to compile MEFISTO2D
-IF(NOT WIN32)
-  ENABLE_LANGUAGE(Fortran)
-  SET(SALOME_SMESH_ENABLE_MEFISTO ON)
-  ADD_DEFINITIONS(-DENABLE_MEFISTO)
-ENDIF(NOT WIN32)
-
 MARK_AS_ADVANCED(SALOME_BUILD_GUI SALOME_SMESH_USE_CGNS SALOME_SMESH_USE_TBB SALOME_SMESH_DYNLOAD_LOCAL SMESH_USE_MESHGEMS_HYPOSET)
 
 # Prerequisites
@@ -231,34 +224,22 @@ ENDIF(SALOME_SMESH_USE_TBB)
 
 FIND_PACKAGE(SalomeMEDFile REQUIRED)
 
-#On Windows use f2c to generate C MEFISTO2D code
-IF(WIN32)
-  SET(SALOME_SMESH_ENABLE_MEFISTO OFF)
-  FIND_PACKAGE(Salomef2c QUIET)
-  IF(${F2C_FOUND})
-    ADD_DEFINITIONS(-DENABLE_MEFISTO)
-    SET(SALOME_SMESH_ENABLE_MEFISTO ON)
-    MESSAGE(STATUS "Build MEFISTO2D mesher using Fortran to C generator")
-  ELSE(${F2C_FOUND})
-    MESSAGE(FATAL "Fortran to C generator is not found: MEFISTO2D mesher cannot be compiled! Please define F2C_ROOT_DIR !")
-  ENDIF(${F2C_FOUND})
-ENDIF(WIN32)
-
 
 SET (SALOME_SMESH_DISABLE_MG_ADAPT OFF)
+SET (SALOME_SMESH_DISABLE_HOMARD_ADAPT OFF)
 IF(WIN32)
   # On Windows temporarily disable MG_ADAPT
   SET (SALOME_SMESH_DISABLE_MG_ADAPT ON)
+  SET (SALOME_SMESH_DISABLE_HOMARD_ADAPT ON)
 ENDIF()
 IF(SALOME_SMESH_DISABLE_MG_ADAPT)
   ADD_DEFINITIONS(-DDISABLE_MG_ADAPT)
 ENDIF()
 
-IF(SALOME_SMESH_ENABLE_MEFISTO)
- SET(MEFISTO2D_NAME "MEFISTO_2D")
-ELSE(SALOME_SMESH_ENABLE_MEFISTO)
- SET(MEFISTO2D_NAME "NOT_FOUND")
-ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
+IF(SALOME_SMESH_DISABLE_HOMARD_ADAPT)
+  ADD_DEFINITIONS(-DDISABLE_HOMARD_ADAPT)
+ENDIF()
+
 
 # Detection summary:
 SALOME_PACKAGE_REPORT_AND_CHECK()
@@ -309,6 +290,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
 # ========
 
@@ -317,9 +309,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()
@@ -343,11 +333,6 @@ SET(_${PROJECT_NAME}_exposed_targets
   SPADDERPluginTesterEngine SalomeIDLSMESH SalomeIDLSPADDER
 )
 
-IF(SALOME_SMESH_ENABLE_MEFISTO)
-  LIST(APPEND _${PROJECT_NAME}_exposed_targets
-       MEFISTO2D)
-ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
-
 IF(SALOME_BUILD_GUI)
   LIST(APPEND _${PROJECT_NAME}_exposed_targets
       SMESHObject SMESHFiltersSelection SMESH PluginUtils StdMeshersGUI
diff --git a/CTestTestfileInstall.cmake.in b/CTestTestfileInstall.cmake.in
new file mode 100644 (file)
index 0000000..2b2e1a3
--- /dev/null
@@ -0,0 +1,29 @@
+# Copyright (C) 2007-2024  CEA, EDF, 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/README b/README
index 74932ecbadce56251a3fb5536ca5225cc8a9fab9..8fbee1e84e91e99bed5520e380f6d36079f32308 100644 (file)
--- a/README
+++ b/README
@@ -20,7 +20,7 @@ SALOME Mesh module implements the functionalities for:
 
 For more information please visit the SALOME platform web site:
 
-  <http://www.salome-platform.org/>
+  <https://www.salome-platform.org/>
 
 =======
 License
@@ -29,10 +29,6 @@ License
 SALOME platform is distributed under the GNU Lesser General Public License.
 See COPYING file for more details.
 
-Also, additional information can be found at SALOME platform web site:
-
-  <http://www.salome-platform.org/downloads/license/>
-
 ============
 Installation
 ============
@@ -49,11 +45,7 @@ site:
 
 * Check Release Notes and Software Requirements of the latest SALOME release at
 
-  <http://www.salome-platform.org/downloads/current-version/>
-
-* Pre-requisites page at SALOME web site:
-
-  <http://www.salome-platform.org/downloads/license/>
+  <https://www.salome-platform.org/?page_id=15/>
 
 Note: SALOME Mesh module needs SALOME KERNEL, SALOME GUI and SALOME Geometry as
 pre-requisites.
index 22c7dba2a5e992077e43a179afe98cee4c256efd..d58522b4d17a4489e60c92349022f0819d142e67 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 045516be690734dea62f9aa064718200aa10a04d..a1239a29acc4f48a1fe195ad7febd1e84edbcdb5 100644 (file)
@@ -5,7 +5,7 @@
 #
 
 ###############################################################
-# Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 #
 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -58,14 +58,11 @@ SET(SALOME_SMESH_BUILD_TESTS @SALOME_BUILD_TESTS@)
 SET(SALOME_SMESH_BUILD_GUI @SALOME_BUILD_GUI@)
 SET(SALOME_SMESH_USE_CGNS  @SALOME_SMESH_USE_CGNS@)
 SET(SALOME_SMESH_USE_TBB   @SALOME_SMESH_USE_TBB@)
-SET(SALOME_SMESH_ENABLE_MEFISTO   @SALOME_SMESH_ENABLE_MEFISTO@)
 SET(SALOME_SMESH_DISABLE_MG_ADAPT @SALOME_SMESH_DISABLE_MG_ADAPT@)
+SET(SALOME_SMESH_DISABLE_HOMARD_ADAPT @SALOME_SMESH_DISABLE_HOMARD_ADAPT@)
 IF(SALOME_SMESH_DISABLE_MG_ADAPT)
   LIST(APPEND SMESH_DEFINITIONS "-DDISABLE_MG_ADAPT")
 ENDIF()
-IF(NOT WIN32)
-  LIST(APPEND SMESH_DEFINITIONS "-DENABLE_MEFISTO")
-ENDIF(NOT WIN32)
 
 # Level 1 prerequisites:
 SET_AND_CHECK(GEOM_ROOT_DIR_EXP "@PACKAGE_GEOM_ROOT_DIR@")
@@ -144,9 +141,6 @@ SET(SMESH_MeshDriverMED MeshDriverMED)
 SET(SMESH_MeshDriverSTL MeshDriverSTL)
 SET(SMESH_MeshDriverUNV MeshDriverUNV)
 SET(SMESH_MEDWrapper MEDWrapper)
-IF(SALOME_SMESH_ENABLE_MEFISTO)
-  SET(SMESH_MEFISTO2D MEFISTO2D)
-ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
 SET(SMESH_SMESHObject SMESHObject)
 SET(SMESH_PluginUtils PluginUtils)
 SET(SMESH_SMDS SMDS)
index 0cefd144a374067c1edc82b0671b4fa7415d8d15..9b4dcbe0d927a8e3d44d832a4bf43dd202b434ae 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 #
 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 495a7e9f6b68eebf948f497b248edae35422b947..91fdf33384da0136599b49483c7f4b911478655b 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6609924bacac5906ead95ea164d019a62aeae50b..6c57206f978a10769eaccf602f419168bfac83b4 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 #
 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index feb1452af8b07c763ff8eacd045389e30f725b31..7382ea2aee80f7be58119a1fd92df25e8f5811ab 100644 (file)
@@ -1,4 +1,4 @@
-dnl Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+dnl Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 dnl
 dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 02fc936818e4c9695117d4b75c05039ba12e8668..b78babe07b67364bfce93ee241fdccaf50b28225 100644 (file)
@@ -1,4 +1,4 @@
-dnl Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+dnl Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 dnl
 dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9f5d608c6ec19e20d24cd3a87fea1a1a08d4719d..8c65e1d9f8a67f0e4f871fe163c2fadf7668f2af 100644 (file)
@@ -1,4 +1,4 @@
-dnl Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+dnl Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 dnl
 dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f66df81f921cf13198348f07ea68924373501015..4d7126967c65ce5c634d1d5646ea741c8281d4fd 100644 (file)
@@ -1,4 +1,4 @@
-dnl Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+dnl Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 dnl
 dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a632a767d8bb256bcf03b792164371c5405cccaf..d1a0bd2cdcb26f9c4c86646eedae99697ddf5e51 100644 (file)
@@ -1,4 +1,4 @@
-dnl Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+dnl Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 dnl
 dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ffeaffdf360d659eef9ded010d2c4b9890d8f639..27727aaf3d190ddeea9b589a742fc2ac5e3f1337 100644 (file)
@@ -1,4 +1,4 @@
-dnl Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+dnl Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 dnl
 dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2c83a7c2746c34bfd0f968604acd6ffec3d88415..d6632181e398bbabe71d677a6ea7ec01a9a60076 100644 (file)
@@ -1,4 +1,4 @@
-dnl Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+dnl Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 dnl
 dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 85aead148fc6db4d9ca32059818f18d6e04561ea..ac68cc044ea96bd69092e98db64520d7e93c2d85 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -25,6 +25,7 @@ SALOME_CONFIGURE_FILE(VERSION.in VERSION INSTALL ${SALOME_INSTALL_BINS})
 SET(_bin_SCRIPTS
   smesh_setenv.py
   smesh_test.py
+  smesh_wget.py
 )
 
 # --- rules ---
index 33e00ca8f99195f2636796b0f547275a4c8cdcae..06ef92f575e61fd14c3739851b45393e4ebafff3 100644 (file)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index c1c919f531d9b9af205ceb799a3e96ccb78b01d9..a0123d3d9fec8fdf622763cd1e5ee11162973c85 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2018-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2018-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -55,7 +55,6 @@ class TestMesh(unittest.TestCase):
         import SMESH
         from salome.smesh import smeshBuilder
         smesh = smeshBuilder.New()
-        lib = 'StdMeshersEngine'
         self.processGuiEvents()
 
         # ---- create hypotheses 
@@ -63,7 +62,7 @@ class TestMesh(unittest.TestCase):
 
         # **** create local length 
         print('...... Local Length')
-        local_length = smesh.CreateHypothesis('LocalLength', lib)
+        local_length = smesh.CreateHypothesis('LocalLength')
         self.assertIsNotNone(local_length)
         local_length.SetLength(100)
         self.assertEqual(local_length.GetName(), 'LocalLength')
@@ -72,7 +71,7 @@ class TestMesh(unittest.TestCase):
 
         # **** create number of segments
         print('...... Number Of Segments')
-        nb_segments= smesh.CreateHypothesis('NumberOfSegments', lib)
+        nb_segments = smesh.CreateHypothesis('NumberOfSegments')
         self.assertIsNotNone(nb_segments)
         nb_segments.SetNumberOfSegments(7)
         self.assertEqual(nb_segments.GetName(), 'NumberOfSegments')
@@ -81,7 +80,7 @@ class TestMesh(unittest.TestCase):
 
         # **** create max element area
         print('...... Max Element Area')
-        max_area = smesh.CreateHypothesis('MaxElementArea', lib)
+        max_area = smesh.CreateHypothesis('MaxElementArea')
         max_area.SetMaxElementArea(2500)
         self.assertEqual(max_area.GetName(), 'MaxElementArea')
         self.assertEqual(max_area.GetMaxElementArea(), 2500)
@@ -92,23 +91,23 @@ class TestMesh(unittest.TestCase):
 
         # **** create regular 1d
         print('...... Regular 1D')
-        regular = smesh.CreateHypothesis('Regular_1D', lib)
-        listHyp = regular.GetCompatibleHypothesis()
+        regular = smesh.CreateHypothesis('Regular_1D')
+        self.assertTrue(len(regular.GetCompatibleHypothesis()) > 0)
         self.assertEqual(regular.GetName(), 'Regular_1D')
         self.processGuiEvents()
 
-        # **** create mefisto 2d
-        print('...... Mefisto 2D')
-        mefisto = smesh.CreateHypothesis( 'MEFISTO_2D', lib )
-        listHyp = mefisto.GetCompatibleHypothesis()
-        self.assertEqual(mefisto.GetName(), 'MEFISTO_2D')
+        # **** create quadrangle mapping
+        print('...... Quadrangle_2D')
+        quad = smesh.CreateHypothesis('Quadrangle_2D')
+        self.assertTrue(len(quad.GetCompatibleHypothesis()) > 0)
+        self.assertEqual(quad.GetName(), 'Quadrangle_2D')
         self.processGuiEvents()
 
         # ---- create mesh on box
         print('... Create mesh on box')
         mesh = smesh.CreateMesh(box)
         self.assertEqual(mesh.AddHypothesis(box, regular)[0], SMESH.HYP_OK)
-        self.assertEqual(mesh.AddHypothesis(box, mefisto)[0], SMESH.HYP_OK)
+        self.assertEqual(mesh.AddHypothesis(box, quad)[0], SMESH.HYP_OK)
         self.assertEqual(mesh.AddHypothesis(box, nb_segments)[0], SMESH.HYP_OK)
         self.assertEqual(mesh.AddHypothesis(box, max_area)[0], SMESH.HYP_OK)
         self.processGuiEvents()
diff --git a/bin/smesh_wget.py b/bin/smesh_wget.py
new file mode 100644 (file)
index 0000000..b51b908
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/env python3
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+import os
+import os.path as osp
+import sys
+import subprocess as sp
+
+p = sp.Popen(["wget"]+sys.argv[1:-1],stdout=sp.PIPE,stderr=sp.PIPE)
+stdout, stderr = p.communicate()
+ret = p.returncode
+with open(sys.argv[-1],"wb") as f:
+    f.write( stdout + stderr )
+sys.exit( ret )
index 2ec39a2184aabbfd435bb5b2255071643c6a3b18..d61526a9ebf3ffdcab67aefc9083af53c30098fe 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 #
 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -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 (file)
index 0000000..39e339f
--- /dev/null
@@ -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 (file)
index 0000000..1c69d3a
--- /dev/null
@@ -0,0 +1,57 @@
+# Copyright (C) 2012-2024  CEA, EDF, 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)
+    SET(testname "EXAMPLES_${testname}")
+    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 (file)
index 0000000..0414df3
--- /dev/null
@@ -0,0 +1,34 @@
+# Copyright (C) 2007-2024  CEA, EDF, 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)
+
+SET(_all_tests ${GOOD_TESTS} ${BAD_TESTS})
+LIST(SORT _all_tests)
+FOREACH(tfile ${_all_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 (file)
index 0000000..dac79ea
--- /dev/null
@@ -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/examples/a3DmeshOnModified2Dmesh.py b/doc/examples/a3DmeshOnModified2Dmesh.py
new file mode 100644 (file)
index 0000000..4e830b7
--- /dev/null
@@ -0,0 +1,66 @@
+import salome
+salome.salome_init_without_session()
+
+from salome.geom import geomBuilder
+geompy = geomBuilder.New()
+
+# This script demonstrates generation of 3D mesh basing on a modified 2D mesh
+#
+# Purpose is to get a tetrahedral mesh in a sphere cut by a cube.
+# The requirement is to have a surface mesh on the cube comprised of
+# triangles of exactly the same size arranged in a grid pattern.
+#
+# To fulfill this requirement we mesh the box using Quadrangle: Mapping
+# meshing algorithm, split quadrangles into triangles and then generate
+# tetrahedrons.
+
+
+# Make the geometry
+
+Box_1    = geompy.MakeBox(-100,-100,-100, 100, 100, 100)
+Sphere_1 = geompy.MakeSphereR( 300 )
+Cut_1    = geompy.MakeCut(Sphere_1, Box_1, theName="Cut_1")
+# get a spherical face
+Sph_Face = geompy.ExtractShapes( Sphere_1, geompy.ShapeType["FACE"] )[0]
+
+# get the shape Sph_Face turned into during MakeCut()
+Sph_Face = geompy.GetInPlace(Cut_1, Sph_Face, isNewImplementation=True, theName="Sphere_1")
+
+
+# 1) Define a mesh with 1D and 2D meshers
+
+import  SMESH
+from salome.smesh import smeshBuilder
+smesh = smeshBuilder.New()
+
+Mesh_1 = smesh.Mesh(Cut_1)
+
+# "global" meshers (assigned to Cut_1) that will be used for the box
+Regular_1D = Mesh_1.Segment()
+Local_Length_1 = Regular_1D.LocalLength(20)
+Quadrangle_2D = Mesh_1.Quadrangle()
+
+# a "local" mesher (assigned to a sub-mesh on Sphere_1) to mesh the sphere
+algo_2D = Mesh_1.Triangle( smeshBuilder.NETGEN_1D2D, Sph_Face )
+algo_2D.SetMaxSize( 70. )
+algo_2D.SetFineness( smeshBuilder.Moderate )
+algo_2D.SetMinSize( 7. )
+
+# 2) Compute 2D mesh
+isDone = Mesh_1.Compute()
+if not isDone:
+  raise Exception("Error when computing Mesh")
+
+# 3) Split quadrangles into triangles
+Mesh_1.SplitQuadObject( Mesh_1, Diag13=True )
+
+# 4) Define a 3D mesher
+Mesh_1.Tetrahedron()
+
+# 5) Compute 3D mesh
+isDone = Mesh_1.Compute()
+if not isDone:
+  raise Exception("Error when computing Mesh")
+
+if salome.sg.hasDesktop():
+  salome.sg.updateObjBrowser()
diff --git a/doc/examples/cartesian_algo.py b/doc/examples/cartesian_algo.py
new file mode 100644 (file)
index 0000000..690aaff
--- /dev/null
@@ -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
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+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)
+
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+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 )
+
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+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 )
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+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 )
+
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+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 )
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+print("Default axes")
+print("   nb hex:",mesh.NbHexas())
+
+# set axes using edges of the box
+algo.SetAxesDirs( xDir, [-0.1,1,0], zDir )
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+print("Manual axes")
+print("   nb hex:",mesh.NbHexas())
+
+# set optimal orthogonal axes
+algo.SetOptimalAxesDirs( isOrthogonal=True )
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+print("Optimal orthogonal axes")
+print("   nb hex:",mesh.NbHexas())
+
+# set optimal non-orthogonal axes
+algo.SetOptimalAxesDirs( isOrthogonal=False )
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+print("Optimal non-orthogonal axes")
+print("   nb hex:",mesh.NbHexas())
diff --git a/doc/examples/create_dual_mesh.py b/doc/examples/create_dual_mesh.py
new file mode 100644 (file)
index 0000000..97d827a
--- /dev/null
@@ -0,0 +1,64 @@
+# Creating dual Mesh
+
+
+import sys
+import salome
+
+salome.salome_init()
+import salome_notebook
+notebook = salome_notebook.NoteBook()
+sys.path.insert(0, r'/home/B61570/work_in_progress/dual_mesh')
+
+###
+### GEOM component
+###
+
+import GEOM
+from salome.geom import geomBuilder
+import math
+import SALOMEDS
+
+
+# Creating a sphere
+geompy = geomBuilder.New()
+
+O = geompy.MakeVertex(0, 0, 0)
+OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
+OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
+OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
+Sphere_1 = geompy.MakeSphereR(100)
+[geomObj_1] = geompy.ExtractShapes(Sphere_1, geompy.ShapeType["FACE"], True)
+geompy.addToStudy( O, 'O' )
+geompy.addToStudy( OX, 'OX' )
+geompy.addToStudy( OY, 'OY' )
+geompy.addToStudy( OZ, 'OZ' )
+geompy.addToStudy( Sphere_1, 'Sphere_1' )
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+
+# Meshing sphere in Tetrahedron
+NETGEN_3D_Parameters_1 = smesh.CreateHypothesisByAverageLength( 'NETGEN_Parameters', 'NETGENEngine', 34.641, 0 )
+Mesh_1 = smesh.Mesh(Sphere_1,'Mesh_1')
+status = Mesh_1.AddHypothesis( Sphere_1, NETGEN_3D_Parameters_1 )
+NETGEN_1D_2D_3D = Mesh_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)
+isDone = Mesh_1.Compute()
+if not isDone:
+  raise Exception("Error when computing Mesh")
+
+# Creating Dual mesh with projection on shape
+dual_Mesh_1 = smesh.CreateDualMesh( Mesh_1, 'dual_Mesh_1', True)
+
+assert(dual_Mesh_1.NbPolyhedrons() > 0)
+assert(dual_Mesh_1.NbTetras() == 0)
+
+# Creating Dual mesh withour projection on shape
+dual_Mesh_2 = smesh.CreateDualMesh( Mesh_1, 'dual_Mesh_2', False)
+
+assert(dual_Mesh_2.NbPolyhedrons() > 0)
+assert(dual_Mesh_2.NbTetras() == 0)
+
+if salome.sg.hasDesktop():
+  salome.sg.updateObjBrowser()
diff --git a/doc/examples/creating_meshes_ex01.py b/doc/examples/creating_meshes_ex01.py
new file mode 100644 (file)
index 0000000..0a174d8
--- /dev/null
@@ -0,0 +1,33 @@
+# 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 not ret:
+    raise Exception("problem when computing the mesh")
+
+print("mesh computed")
diff --git a/doc/examples/creating_meshes_ex02.py b/doc/examples/creating_meshes_ex02.py
new file mode 100644 (file)
index 0000000..bb03588
--- /dev/null
@@ -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
+if not mesh.Compute( surfaces[0] ): raise Exception("Error when computing Mesh")
+
+# method 2: a sub-mesh is created
+submesh = mesh.GetSubMesh( surfaces[2], "submesh 2" )
+if not submesh.Compute(): raise Exception("Error when computing Mesh")
+
+# compute the whole mesh
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/creating_meshes_ex03.py b/doc/examples/creating_meshes_ex03.py
new file mode 100644 (file)
index 0000000..88b3d0b
--- /dev/null
@@ -0,0 +1,51 @@
+# 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 = geom_builder.MakeBoxDXDYDZ(200, 200, 200)
+[Face_1, Face_2, Face_3, Face_4, Face_5, Face_6] = geom_builder.SubShapeAllSorted(box, geom_builder.ShapeType["FACE"])
+
+# create Mesh object on Box shape
+mesh = smesh_builder.Mesh(box)
+
+# assign mesh algorithms and hypotheses
+mesh.Segment().NumberOfSegments(20)
+mesh.Triangle().MaxElementArea(1200)
+mesh.Tetrahedron().MaxElementVolume(40000)
+
+# create sub-mesh and assign algorithms on Face_1
+mesh.Segment(geom=Face_1).NumberOfSegments(4)
+mesh.Triangle(geom=Face_1)
+
+# create sub-mesh and assign algorithms on Face_2
+mesh.Segment(geom=Face_2).NumberOfSegments(8)
+mesh.Triangle(geom=Face_2)
+
+# create sub-mesh and assign algorithms on Face_3
+mesh.Segment(geom=Face_3).NumberOfSegments(12)
+mesh.Triangle(geom=Face_3)
+
+# get existing sub-mesh priority order: F1 -> F2 -> F3
+[[SubMesh_F1, SubMesh_F3, SubMesh_F2]] = mesh.GetMeshOrder()
+isDone = mesh.Compute()
+if not isDone: raise Exception("Error when computing Mesh")
+print("Nb elements at initial order of sub-meshes:", mesh.NbElements())
+
+# set new sub-mesh order: F2 -> F1 -> F3
+isDone = mesh.SetMeshOrder([[SubMesh_F2, SubMesh_F1, SubMesh_F3]])
+isDone = mesh.Compute()
+if not isDone: raise Exception("Error when computing Mesh")
+print("Nb elements at new order of sub-meshes:", mesh.NbElements())
+
+# compute with other sub-mesh order: F3 -> F2 -> F1
+isDone = mesh.SetMeshOrder([[SubMesh_F3, SubMesh_F2, SubMesh_F1]])
+isDone = mesh.Compute()
+if not isDone: raise Exception("Error when computing Mesh")
+print("Nb elements at another order of sub-meshes:", mesh.NbElements())
diff --git a/doc/examples/creating_meshes_ex04.py b/doc/examples/creating_meshes_ex04.py
new file mode 100644 (file)
index 0000000..405fcd9
--- /dev/null
@@ -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
+if not tria.Compute(): raise Exception("Error when computing Mesh")
+PrintMeshInfo(tria)
+
+# remove a local hypothesis
+tria.RemoveHypothesis(hyp4, edge)
+
+# compute the mesh
+if not tria.Compute(): raise Exception("Error when computing Mesh")
+PrintMeshInfo(tria)
+
+# change the value of the 2D hypothesis
+hyp2.SetMaxElementArea(2.)
+
+# compute the mesh
+if not tria.Compute(): raise Exception("Error when computing Mesh")
+PrintMeshInfo(tria)
diff --git a/doc/examples/creating_meshes_ex05.py b/doc/examples/creating_meshes_ex05.py
new file mode 100644 (file)
index 0000000..4f4f6d1
--- /dev/null
@@ -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
+if not tetra.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 <face>
+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 (file)
index 0000000..0d70685
--- /dev/null
@@ -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()
+
+if not hexa.Compute(): raise Exception("Error when computing Mesh")
+
+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 (file)
index 0000000..d0d4c8e
--- /dev/null
@@ -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()
+if not Mesh_inf.Compute(): raise Exception("Error when computing Mesh")
+
+# 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()
+if not Mesh_sup.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..aa67143
--- /dev/null
@@ -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()
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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" )
+if not newMesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/creating_parallel_2D_mesh.py b/doc/examples/creating_parallel_2D_mesh.py
new file mode 100644 (file)
index 0000000..2515543
--- /dev/null
@@ -0,0 +1,112 @@
+# contains function to compute a mesh in parallel
+import salome
+
+salome.salome_init()
+import salome_notebook
+notebook = salome_notebook.NoteBook()
+
+###
+### GEOM component
+###
+
+import GEOM
+from salome.geom import geomBuilder
+from salome.smesh import smeshBuilder
+import SALOMEDS
+
+import numpy as np
+
+geompy = geomBuilder.New()
+
+
+nbox = 2
+boxsize = 100
+offset = 0
+# Create 3D faces
+boxes = []
+# First creating all the boxes
+# for i in range(nbox):
+#     for j in range(nbox):
+#         for k in range(nbox):
+
+#             x_orig = i*(boxsize+offset)
+#             y_orig = j*(boxsize+offset)
+#             z_orig = k*(boxsize+offset)
+
+#             tmp_box = geompy.MakeBoxDXDYDZ(boxsize, boxsize, boxsize)
+
+#             if not i == j == k == 0:
+#                 box = geompy.MakeTranslation(tmp_box, x_orig,
+#                                              y_orig, z_orig)
+#             else:
+#                 box = tmp_box
+
+#             geompy.addToStudy(box, 'box_{}:{}:{}'.format(i, j, k))
+
+#             boxes.append(box)
+
+#With 6 boxes works
+#But simplify for 2 boxes to also Test possibility of rewritting the
+# input mesh from other parallel tests. In that case this test will break
+# because the input mesh will not match the exported/imported box geometry.
+for i in range(nbox):
+    for j in range(1):
+        for k in range(1):
+
+            x_orig = i*(boxsize+offset)
+            y_orig = j*(boxsize+offset)
+            z_orig = k*(boxsize+offset)
+
+            tmp_box = geompy.MakeBoxDXDYDZ(boxsize, boxsize, boxsize)
+
+            if not i == j == k == 0:
+                box = geompy.MakeTranslation(tmp_box, x_orig,
+                                             y_orig, z_orig)
+            else:
+                box = tmp_box
+
+            geompy.addToStudy(box, 'box_{}:{}:{}'.format(i, j, k))
+
+            boxes.append(box)
+
+# Create fuse of all boxes
+all_boxes = geompy.MakeCompound(boxes)
+geompy.addToStudy(all_boxes, 'Compound_1')
+
+# Removing duplicates faces and edges
+all_boxes = geompy.MakeGlueFaces(all_boxes, 1e-07)
+geompy.addToStudy(all_boxes, 'Glued_Faces_1')
+
+rubik_cube = geompy.MakeGlueEdges(all_boxes, 1e-07)
+geompy.addToStudy(rubik_cube, 'rubik_cube')
+
+
+smesh = smeshBuilder.New()
+print("Creating Parallel Mesh")
+par_mesh = smesh.ParallelMesh(rubik_cube, name="par_mesh")
+
+print("Creating hypoehtesis for netgen")
+NETGEN_2D_Parameters_1 = smesh.CreateHypothesisByAverageLength( 'NETGEN_Parameters_2D',
+                                         'NETGENEngine', 34.641, 0 )
+
+print("Adding hypothesis")
+par_mesh.Add2DGlobalHypothesis(NETGEN_2D_Parameters_1)
+
+print("Setting parallelism method")
+par_mesh.SetParallelismMethod(smeshBuilder.MULTITHREAD)
+
+print("Setting parallelism options")
+param = par_mesh.GetParallelismSettings()
+param.SetNbThreads(6)
+
+print("Starting parallel compute")
+is_done = par_mesh.Compute()
+if not is_done:
+    raise Exception("Error when computing Mesh")
+
+print("  Triangle: ", par_mesh.NbTriangles())
+print("  edge: ", par_mesh.NbEdges())
+
+assert  par_mesh.NbTetras() == 0
+assert  par_mesh.NbTriangles() > 0
+assert  par_mesh.NbEdges() > 0
diff --git a/doc/examples/creating_parallel_gmsh_mesh.py b/doc/examples/creating_parallel_gmsh_mesh.py
new file mode 100644 (file)
index 0000000..5146521
--- /dev/null
@@ -0,0 +1,89 @@
+# contains function to compute a mesh in parallel
+import salome
+
+salome.salome_init()
+import salome_notebook
+notebook = salome_notebook.NoteBook()
+
+###
+### GEOM component
+###
+
+import GEOM
+from salome.geom import geomBuilder
+from salome.smesh import smeshBuilder
+import SALOMEDS
+
+import numpy as np
+
+geompy = geomBuilder.New()
+
+
+nbox = 2
+boxsize = 100
+offset = 0
+# Create 3D faces
+boxes = []
+# First creating all the boxes
+for i in range(nbox):
+    for j in range(nbox):
+        for k in range(nbox):
+
+            x_orig = i*(boxsize+offset)
+            y_orig = j*(boxsize+offset)
+            z_orig = k*(boxsize+offset)
+
+            tmp_box = geompy.MakeBoxDXDYDZ(boxsize, boxsize, boxsize)
+
+            if not i == j == k == 0:
+                box = geompy.MakeTranslation(tmp_box, x_orig,
+                                             y_orig, z_orig)
+            else:
+                box = tmp_box
+
+            geompy.addToStudy(box, 'box_{}:{}:{}'.format(i, j, k))
+
+            boxes.append(box)
+
+# Create fuse of all boxes
+all_boxes = geompy.MakeCompound(boxes)
+geompy.addToStudy(all_boxes, 'Compound_1')
+
+# Removing duplicates faces and edges
+all_boxes = geompy.MakeGlueFaces(all_boxes, 1e-07)
+geompy.addToStudy(all_boxes, 'Glued_Faces_1')
+
+rubik_cube = geompy.MakeGlueEdges(all_boxes, 1e-07)
+geompy.addToStudy(rubik_cube, 'rubik_cube')
+
+smesh = smeshBuilder.New()
+print("Creating Parallel Mesh")
+par_mesh = smesh.ParallelMesh(rubik_cube, name="par_mesh")
+
+print("Creating hypoehtesis for gmsh")
+GMSH_3D_Parameters_1 = smesh.CreateHypothesis( 'GMSH_Parameters',
+                                         'libGMSHEngine.so' )
+GMSH_3D_Parameters_1.SetMaxSize(10)
+GMSH_3D_Parameters_1.SetMinSize(0.141421)
+print("Adding hypothesis")
+par_mesh.AddGlobalHypothesis(GMSH_3D_Parameters_1)
+
+print("Setting parallelism method")
+par_mesh.SetParallelismMethod(smeshBuilder.MULTITHREAD)
+
+print("Setting parallelism options")
+param = par_mesh.GetParallelismSettings()
+param.SetNbThreads(6)
+
+print("Starting parallel compute")
+is_done = par_mesh.Compute()
+if not is_done:
+    raise Exception("Error when computing Mesh")
+
+print("  Tetrahedron: ",  par_mesh.NbTetras())
+print("  Triangle: ", par_mesh.NbTriangles())
+print("  edge: ", par_mesh.NbEdges())
+
+assert  par_mesh.NbTetras() > 0
+assert  par_mesh.NbTriangles() > 0
+assert  par_mesh.NbEdges() > 0
diff --git a/doc/examples/creating_parallel_mesh.py b/doc/examples/creating_parallel_mesh.py
new file mode 100644 (file)
index 0000000..1a69fbd
--- /dev/null
@@ -0,0 +1,88 @@
+# contains function to compute a mesh in parallel
+import salome
+
+salome.salome_init()
+import salome_notebook
+notebook = salome_notebook.NoteBook()
+
+###
+### GEOM component
+###
+
+import GEOM
+from salome.geom import geomBuilder
+from salome.smesh import smeshBuilder
+import SALOMEDS
+
+import numpy as np
+
+geompy = geomBuilder.New()
+
+
+nbox = 2
+boxsize = 100
+offset = 0
+# Create 3D faces
+boxes = []
+# First creating all the boxes
+for i in range(nbox):
+    for j in range(nbox):
+        for k in range(nbox):
+
+            x_orig = i*(boxsize+offset)
+            y_orig = j*(boxsize+offset)
+            z_orig = k*(boxsize+offset)
+
+            tmp_box = geompy.MakeBoxDXDYDZ(boxsize, boxsize, boxsize)
+
+            if not i == j == k == 0:
+                box = geompy.MakeTranslation(tmp_box, x_orig,
+                                             y_orig, z_orig)
+            else:
+                box = tmp_box
+
+            geompy.addToStudy(box, 'box_{}:{}:{}'.format(i, j, k))
+
+            boxes.append(box)
+
+# Create fuse of all boxes
+all_boxes = geompy.MakeCompound(boxes)
+geompy.addToStudy(all_boxes, 'Compound_1')
+
+# Removing duplicates faces and edges
+all_boxes = geompy.MakeGlueFaces(all_boxes, 1e-07)
+geompy.addToStudy(all_boxes, 'Glued_Faces_1')
+
+rubik_cube = geompy.MakeGlueEdges(all_boxes, 1e-07)
+geompy.addToStudy(rubik_cube, 'rubik_cube')
+
+
+smesh = smeshBuilder.New()
+print("Creating Parallel Mesh")
+par_mesh = smesh.ParallelMesh(rubik_cube, name="par_mesh")
+
+print("Creating hypoehtesis for netgen")
+NETGEN_3D_Parameters_1 = smesh.CreateHypothesisByAverageLength( 'NETGEN_Parameters',
+                                         'NETGENEngine', 34.641, 0 )
+print("Adding hypothesis")
+par_mesh.AddGlobalHypothesis(NETGEN_3D_Parameters_1)
+
+print("Setting parallelism method")
+par_mesh.SetParallelismMethod(smeshBuilder.MULTITHREAD)
+
+print("Setting parallelism options")
+param = par_mesh.GetParallelismSettings()
+param.SetNbThreads(6)
+
+print("Starting parallel compute")
+is_done = par_mesh.Compute()
+if not is_done:
+    raise Exception("Error when computing Mesh")
+
+print("  Tetrahedron: ",  par_mesh.NbTetras())
+print("  Triangle: ", par_mesh.NbTriangles())
+print("  edge: ", par_mesh.NbEdges())
+
+assert  par_mesh.NbTetras() > 0
+assert  par_mesh.NbTriangles() > 0
+assert  par_mesh.NbEdges() > 0
diff --git a/doc/examples/data/test_01.med b/doc/examples/data/test_01.med
new file mode 100644 (file)
index 0000000..71664bb
Binary files /dev/null and b/doc/examples/data/test_01.med differ
diff --git a/doc/examples/data/test_02.med b/doc/examples/data/test_02.med
new file mode 100644 (file)
index 0000000..1b22c43
Binary files /dev/null and b/doc/examples/data/test_02.med differ
diff --git a/doc/examples/data/test_02_bg.med b/doc/examples/data/test_02_bg.med
new file mode 100644 (file)
index 0000000..15f1b86
Binary files /dev/null and b/doc/examples/data/test_02_bg.med differ
diff --git a/doc/examples/data/test_04.med b/doc/examples/data/test_04.med
new file mode 100644 (file)
index 0000000..81c116f
Binary files /dev/null and b/doc/examples/data/test_04.med differ
diff --git a/doc/examples/data/test_06.med b/doc/examples/data/test_06.med
new file mode 100644 (file)
index 0000000..4c5f24d
Binary files /dev/null and b/doc/examples/data/test_06.med differ
diff --git a/doc/examples/data/test_07.med b/doc/examples/data/test_07.med
new file mode 100644 (file)
index 0000000..e100452
Binary files /dev/null and b/doc/examples/data/test_07.med differ
diff --git a/doc/examples/data/test_08.med b/doc/examples/data/test_08.med
new file mode 100644 (file)
index 0000000..e23077e
Binary files /dev/null and b/doc/examples/data/test_08.med differ
diff --git a/doc/examples/data/test_08_bg.med b/doc/examples/data/test_08_bg.med
new file mode 100644 (file)
index 0000000..c28c32d
Binary files /dev/null and b/doc/examples/data/test_08_bg.med differ
diff --git a/doc/examples/data/test_10.med b/doc/examples/data/test_10.med
new file mode 100644 (file)
index 0000000..221291f
Binary files /dev/null and b/doc/examples/data/test_10.med differ
diff --git a/doc/examples/data/test_11.med b/doc/examples/data/test_11.med
new file mode 100644 (file)
index 0000000..7d8b6cf
Binary files /dev/null and b/doc/examples/data/test_11.med differ
diff --git a/doc/examples/data/test_13.med b/doc/examples/data/test_13.med
new file mode 100644 (file)
index 0000000..32a8af1
Binary files /dev/null and b/doc/examples/data/test_13.med differ
diff --git a/doc/examples/data/test_homard_adapt.med b/doc/examples/data/test_homard_adapt.med
new file mode 100644 (file)
index 0000000..1dae05c
Binary files /dev/null and b/doc/examples/data/test_homard_adapt.med differ
diff --git a/doc/examples/data/tutorial_4.00.med b/doc/examples/data/tutorial_4.00.med
new file mode 100644 (file)
index 0000000..9a70e0c
Binary files /dev/null and b/doc/examples/data/tutorial_4.00.med differ
diff --git a/doc/examples/data/tutorial_4.xao b/doc/examples/data/tutorial_4.xao
new file mode 100644 (file)
index 0000000..415904a
--- /dev/null
@@ -0,0 +1,652 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XAO version="1.0" author="">
+  <geometry name="PIQUAGE">
+    <shape format="BREP"><![CDATA[
+CASCADE Topology V1, (c) Matra-Datavision
+Locations 7
+1
+              1               0               0 -534.522483824849 
+              0               1               0 -1069.0449676497 
+              0               0               1 -1603.56745147455 
+1
+0.807692307692308 0.40061078589092 -0.432601588441991 -1.04060827541297 
+0.0609276756475414 0.673076923076923 0.737058528179065 7.32968958609865 
+0.586447742288145 -0.62167391279445 0.519230769230769 -17.826635656644 
+2  1 -1 0
+1
+0.807692307692308 0.40061078589092 -0.432601588441991 -1.04060827541297 
+0.0609276756475414 0.673076923076923 0.737058528179065 7.32968958609865 
+0.586447742288145 -0.62167391279445 0.519230769230769 -17.826635656644 
+2  2 -1 0
+1
+              1               0               0            -430 
+              0               1               0            -300 
+              0               0               1            -150 
+2  4 -1 0
+Curve2ds 28
+1 0 0 1 0 
+2 0 0 1 0 -0 1 100
+2 1.8130356967816779e-13 -7.2683125793014326e-14 1 -1.3877787807814454e-17 1.3877787807814454e-17 1 75
+1 0 2000.0000000000005 1 0 
+1 6.2831853071795862 -0 0 1 
+1 0 -0 0 1 
+7 0 0  10 29 4  -8.8817841970012523e-16 173.95702523587832  0.15707963267948788 185.8650793221527  0.31415926537619221 199.6698320244096  0.47123889799979857 214.96320078073768  0.6283185309860766 231.25353286676108  0.78539816341501734 247.98958079097793  0.94247779586141966 264.59134380389003  1.09955742884115 280.48484713386279  1.2566370613944304 295.13640897581155  1.4137166941154078 308.08203903909123  1.8064157758141324 335.25024546226928  2.0420352253465595 346.87488770345226  2.2776546731372278 352.56634160876274  2.5132741239983503 351.53130944818258  2.7488935673506845 343.6061642318964  2.9845130231594581 329.33749985694885  3.2201324690147217 309.93021438643336  3.4557519195411501 287.05796310072765  3.6913713679680082 262.61206938958122  4.1626102660064763 214.29828441075293  4.3982297148074636 190.43039388000034  4.6338491648682307 168.71414977032691  4.8694686100250024 150.98356996849179  5.105088069791897 138.79772076755762  5.3407075095353562 133.20016832277179  5.5763269613860089 134.55077791586518  5.8119464090311581 142.50043463776819  6.0475658581603415 156.09494410646596  6.2831853071795756 173.95702523587741 
+ 3.9726563532452057 11 5.543452680040108 9 7.8996471702324484 9 10.255841660424792 11
+3 -30.523442721219304 18.279086410430914 -0.26385650108450426 -0.96456194556671326 0.96456194556671326 -0.26385650108450426 143.29456840136453 100
+7 0 0  8 219 32  2.9508920214831567 229.98284082035067  2.9390204700117688 230.53256857863784  2.926890709437874 231.04265225778227  2.9145189005250791 231.51455000382717  2.9019182831440897 231.94951794883494  2.8890993490113557 232.34860622944851  2.8760700144277247 232.71265500545277  2.8628357930170942 233.04229047833675  2.8347913758786278 233.65935592960167  2.8199442951164415 233.94059389898013  2.8048650532611217 234.18210798347167  2.7895581662204769 234.38407649754188  2.7740264510854207 234.54639038628372  2.7582713560983678 234.66865464875607  2.7422935082321303 234.75018370301808  2.7092662583164957 234.83133882518615  2.6926617667255313 234.82653648625248  2.6763151685905915 234.77877754235919  2.6602566709227431 234.69119723201209  2.6445094560967202 234.56685111293982  2.6290900531585133 234.40869177590196  2.61400786387714 234.21948653231235  2.5702167411533758 233.57254443714584  2.5421884826288745 233.02811132692233  2.5151735700878173 232.38227788036011  2.4891463419809616 231.64602752730084  2.4640684837634819 230.82807336686585  2.439894255824453 229.93518269253431  2.4165732028871969 228.97231363558325  2.3707731434476087 226.87843211451616  2.3483948099731053 225.74492668532039  2.3269028029582199 224.54853991219824  2.3062795658158763 223.29481680424814  2.286506402608385 221.98870481953111  2.267564036467788 220.63466000082826  2.2494328958027912 219.23671171164244  2.2087817006379806 215.86497308454901  2.1869126433451487 213.85967247641469  2.1664357635954183 211.79160755818597  2.1473032640530452 209.66876262197653  2.1294690934866094 207.49834668490237  2.1128884390251801 205.28697565598898  2.0975173577105473 203.04078324314517  2.0662733280425254 198.03612310805218  2.0509136336147464 195.26509435085532  2.0371448525932836 192.46006778243759  2.0248875476985284 189.62773045468791  2.0140690921070714 186.77400923321304  2.0046226264217846 183.90424029812235  1.9964866893660191 181.02327383923239  1.9805306116672494 174.32778188716003  1.9736371424292738 170.5083713651737  1.9687856415012497 166.68348337089429  1.9658653282941594 162.85800711938333  1.9647904528896527 159.03595046757209  1.9654995971505358 155.22098246035731  1.967956306980581 151.41711845019267  1.976194630327003 143.97676683253741  1.9818383868917719 140.35400568085433  1.9890651844579168 136.75110424602966  1.9979169288179677 133.16020063062496  2.0084859709861225 129.57843588891251  2.020906381449211 126.01064980655073  2.0353458088095486 122.47234457602271  2.0560523494592844 118.14651259534823  2.0602413310460723 117.30228437545412  2.0645730689186057 116.46028299432211  2.0690544086622427 115.62044395191796  2.0736924885549515 114.78285306128343  2.0784946947039726 113.9477542077596  2.0834686161824756 113.11555710820984  2.0937286464780396 111.46564888428071  2.099008241265063 110.64840097587155  2.1044747000638484 109.83457370943871  2.1101423437553963 109.02399019846644  2.1160257944653695 108.21683762808884  2.1221398714643116 107.41368057767829  2.1284994870678675 106.61547434343423  2.1459642121997349 104.52633060775325  2.1572673871876336 103.27477337557613  2.1692804394888019 102.04485217755152  2.1822676442050217 100.82400388988933  2.196484009848751 99.613034972083611  2.2121672873409612 98.426965232577288  2.2295396517760162 97.29496228767573  2.2530661394230047 96.032075893913515  2.2574343571227247 95.807339527643308  2.26192478908612 95.586512319173451  2.2665504860173615 95.369794081968465  2.2713241822900692 95.157583084013481  2.2762581386810434 94.950487967218137  2.2813641344798206 94.749331168087792  2.2933135493663666 94.310643930709517  2.3005159082309463 94.067958071205155  2.3081859834045519 93.835601366127449  2.31624589499783 93.621282327024332  2.3246195063625366 93.431221667418797  2.3332290527688944 93.270074667502286  2.3419970684619327 93.140797480754287  2.3570256267286958 92.977505578006415  2.3633507671414216 92.925391334337377  2.3697486932372449 92.890225164140077  2.3761497191995087 92.872844146631394  2.38248290874294 92.873032662573337  2.3886731681462434 92.88951699014136  2.3946372459174352 92.919959896020472  2.4037610149351485 92.986260758886914  2.40717328254562 93.015969946670012  2.4105189318400324 93.049734785444315  2.4138012680465337 93.087245898044998  2.4170238130983432 93.12823471529012  2.4201902930730714 93.172472453704344  2.4233045937395459 93.21976837167287  2.4335698651268536 93.387834405131372  2.4405153301484739 93.52190354890547  2.447222064852808 93.669688974637779  2.4537073498321162 93.829181328623065  2.45999079448407 93.998842166770402  2.4660941907547196 94.177589783796506  2.4720411868354897 94.364776369003096  2.4888093396229483 94.928117570207661  2.499293686211713 95.325067026561612  2.5093391414016679 95.744709721588066  2.518980738666095 96.182273516994826  2.5282596956496595 96.634500379349845  2.5372233816811764 97.099615183366851  2.54592478127983 97.577272211435243  2.5791628128431028 99.498819569624374  2.6022578412064719 101.0492284590804  2.6238145296209017 102.67137897150143  2.6439829638254624 104.33289594458506  2.6629547017153627 106.01650680242003  2.6809651614670678 107.71968874264442  2.6982903224505335 109.4540596321296  2.7376157922063369 113.60908478811466  2.7589358723033071 116.0296704907208  2.7792613596283093 118.48568256623662  2.798675215015106 120.96430838554126  2.8172710630102391 123.45932696174947  2.8351512834727295 125.97060583506642  2.8524234134406607 128.50352494771172  2.8860303701597818 133.64292733269724  2.9022869507126838 136.23827580047555  2.917990918820669 138.85045915196133  2.9331671869984528 141.47729378691133  2.947838086334003 144.11804840412296  2.9620216074433712 146.77311943950724  2.97572905842449 149.44365980323758  3.0013845125460814 154.65401553908197  3.0133656680733685 157.18710718332659  3.0249159517130764 159.73283232401388  3.0360348147647507 162.29342861929689  3.0467088524442736 164.8704922156206  3.0569100334303552 167.46459472455868  3.0665942487125766 170.0749926269259  3.0848303366042651 175.33075954256603  3.0933327082100099 177.96281315383499  3.1012205058196471 180.61161421475171  3.1084554318887614 183.28833288021605  3.1149465688606197 185.99845644020471  3.1205501113954832 188.74163849487115  3.1250702588935528 191.51220011301126  3.1306440803643518 196.38189766747371  3.1322713212950739 198.46056898576074  3.1330845601214334 200.55617845547167  3.1329587528806431 202.68149959155991  3.1317024858855769 204.84180016954784  3.1290559627809569 207.0354030496996  3.1246894031782286 209.25475461617097  3.1165796038356448 212.04267929175862  3.114829505464026 212.59982634783935  3.1129378334334867 213.1585859517792  3.1108963943038126 213.71895089554229  3.108696392093302 214.28086054287715  3.1063284125880894 214.84420133612983  3.1037824076514648 215.40880730305784  3.099797493492944 216.23305000267624  3.0985078018178349 216.49187167026176  3.0971775334343863 216.75091339902721  3.095805583274807 217.01016026365642  3.0943908121169916 217.26959451092645  3.0929320464245196 217.52919548974256  3.0914280781866559 217.78893958117411  3.0890833709642891 218.18192953531943  3.0882768820889464 218.31509032658147  3.0874580288305005 218.4482792713624  3.0866266388878882 218.58149297736051  3.0857825369608061 218.71472789088574  3.0849255447497073 218.84798029685967  3.084055480955803 218.98124631881541  3.0827168168241257 219.18322445941232  3.0822579498476097 219.25192954219406  3.0817955350989976 219.32063661273708  3.0813295471083197 219.38934510347607  3.0808599601881448 219.45805443378575  3.080386748433579 219.52676400998075  3.0799098857222691 219.59547322531569  3.0791859065765235 219.69898870420906  3.0789415237031053 219.73379569662498  3.0786961936695572 219.76860235658759  3.0784499130368803 219.80340860252352  3.078202678351682 219.83821435193138  3.077954486146167 219.87301952138171  3.0777053329381405 219.90782402651692  3.0721766532605015 220.67713707570317  3.0664246432960391 221.41741686207985  3.0601757214040206 222.15960732453661  3.0534110224697306 222.89962710765337  3.0461166151186361 223.63347434018965  3.0382838944100987 224.35734624693984  3.0299099741688584 225.06766828661091  3.0129562542391719 226.38686838759443  3.004681658434563 226.98290724458815  2.9961882721753987 227.55016421379625  2.9874895992499693 228.08950176181196  2.9785985983643011 228.60172154815808  2.9695276442851664 229.08756679343568  2.9602884602270616 229.54772639931221  2.9508920214831567 229.98284082035067 
+ 0 9 0.018319831392875258 7 0.038238739386516812 7 0.058928815347170885 7 0.099676523702549119 7 0.14180018139943834 7 0.19843083503506309 7 0.26636149385935876 7 0.35593390730355601 7 0.44231953468895702 7 0.46334162919646005 7 0.48417306766917673 7 0.51829816977584031 7 0.5258415232310033 7 0.53533930688121534 7 0.54197727483116187 7 0.54607409935094864 7 0.55569344397157039 7 0.57380963950471575 7 0.62656197371599442 7 0.69628114357816095 7 0.7662666329709622 7 0.83196454640748263 7 0.89783540057505784 7 0.94701610830345462 7 0.95925610590166366 7 0.96485164354498199 7 0.96771829881469151 7 0.9691960374231734 7 0.96994465232925553 7 0.98574365440354217 7 1 9
+7 0 0  8 219 32  0 62.872621651498271  0.025608676180104782 63.141000511257971  0.051217110358952232 63.442447223943084  0.07683970623683925 63.774349954739534  0.10249228660274312 64.134414281868246  0.12819219586968281 64.520644825076815  0.15395840261008029 64.931326874131045  0.17981160209112165 65.365008017306522  0.23400323394040751 66.315708123168648  0.26236193321882451 66.836702161505713  0.29087531175934861 67.381837897313275  0.31956868349749668 67.949772282304011  0.34846831369002174 68.539417626329595  0.3776015413780176 69.149914708159841  0.40699649181342662 69.780604578192779  0.46751552737981511 71.106573793158461  0.49781511292401059 71.784842006946107  0.52756066074738617 72.462751899213657  0.55673425080491701 73.137761781708974  0.58532419939477753 73.807867472228878  0.61332515627907869 74.471534722696958  0.64073981559596926 75.127686515938294  0.72046499060847879 77.052498075971585  0.77166195497981727 78.310746105210825  0.82131147885135802 79.547595411198117  0.86954316617425131 80.762895375414487  0.91648518020586234 81.958012218326772  0.96226573496194812 83.135232681736127  1.0070144125010465 84.297561359213091  1.0961917224211739 86.638354549456068  1.1404696288009097 87.813706113113355  1.1837554707782116 88.976128787012811  1.2261020704164545 90.127415939261653  1.2675578245574461 91.269417877152193  1.3081674819680609 92.403940241418866  1.3479727014627856 93.532699856790742  1.4394987812955691 96.169224051410723  1.4905750635401167 97.672855302929463  1.5403393284654281 99.172100248125915  1.5888750208558173 100.67027874564032  1.6362550382516365 102.17007338736698  1.6825442587090145 103.67351555520644  1.7278012631756516 105.18201758386451  1.8251924127932098 108.51307250793549  1.8768925817318429 110.33807943430891  1.9273139261918153 112.17439722983991  1.9765723680666252 114.02379989134928  2.0247717060430843 115.88712997046545  2.0720067183585735 117.76446565543208  2.1183650830153753 119.65526197487479  2.2240111486966172 124.06806705223131  2.2827107568580782 126.59917927028677  2.3402815313484071 129.15206702769797  2.3969530681518347 131.72558639396652  2.4529444120416359 134.31769163127984  2.5084697852693982 136.92549295073704  2.5637427009159266 139.54495698305735  2.6722593962590495 144.70226723060568  2.7252885688357615 147.22939683835287  2.7784829674560392 149.75659028782485  2.83223672318071 152.28677086828293  2.8869246894750669 154.81883861767093  2.9429019449403842 157.34521992397924  3.0005076856101698 159.84889923872731  3.0745729370990609 162.89623855139601  3.0892037167571469 163.49029830303041  3.1039855199952879 164.08199583993169  3.1189340914855106 164.67122638790696  3.1340644736820464 165.25776128593878  3.1493910308386783 165.84123939731253  3.1649274730260708 166.42115852074323  3.1963033602164557 167.56735380148243  3.212128770140724 168.13334051848253  3.2281960485888055 168.69495712580104  3.2445359970896543 169.25205061811494  3.2611773694067083 169.80416848472859  3.278146960910294 170.35054238282143  3.2954696979500393 170.89007181069601  3.3421624610045035 172.29155405585678  3.3715232832497897 173.12025302420179  3.4019164637503554 173.92202493478626  3.433934466046149 174.70228344951235  3.4680652045738789 175.45565255020227  3.5046905465617089 176.16504726331081  3.5441161183054364 176.80116924519334  3.5959840550934365 177.4368822991562  3.6055595046893809 177.54677097493766  3.6153464823265016 177.65119014923943  3.6253700167710909 177.74971456844  3.6356536746058663 177.84175396579565  3.6462192821641239 177.92654431705461  3.6570869887148727 178.00314343115247  3.682363262491561 178.15515202782183  3.6974917915862036 178.22831115267701  3.7134785350320136 178.28398714718165  3.7301407212768272 178.31696428279278  3.747308073347952 178.32322718243029  3.7648154090723742 178.3001138352069  3.7825057291453996 178.24641751212997  3.812604795438574 178.10374515329434  3.8252093256503872 178.0292684913365  3.8378940283454339 177.93865723151407  3.8505214293291696 177.83246505166636  3.8629554160449588 177.71218833552868  3.8750550173973051 177.58033423112374  3.8866661132459175 177.44050755739389  3.9043674823472232 177.2092474329645  3.9109725286394079 177.11843517414144  3.917434573266076 177.02531372063675  3.9237613154374049 176.93008910086857  3.9299607062583037 176.83292806040319  3.9360409388791866 176.73395901372805  3.9420103763344132 176.63327427265659  3.961653229640052 176.29063752158314  3.9748876196630381 176.04080914069232  3.9876193343980546 175.7833312759611  3.999889441040271 175.51963469441534  4.0117417077527264 175.25069756206835  4.0232225962414558 174.97705719263934  4.0343808658723397 174.698834045761  4.0657683438211745 173.88266717677018  4.0852999134646293 173.33249427963696  4.1039396917212114 172.77023954338557  4.1217705719326005 172.19946718833864  4.1388823318809065 171.62229686254179  4.1553726332596783 171.03941990365178  4.1713468360559922 170.45015039520101  4.2322541192875685 168.11225202376852  4.2743267615649252 166.2947244113619  4.3134831209453495 164.44104062210263  4.3500826799525552 162.57764650491779  4.3845240014704219 160.71671386315353  4.417266190346238 158.85632993135374  4.4488352752158997 156.98117562183509  4.5207405301638239 152.53109185417424  4.5599146509444584 149.96939461299755  4.5975171168862854 147.39632516294799  4.6337392661905765 144.82242686589859  4.6687835779040201 142.25211516954607  4.7028687911724072 139.68419999609713  4.7362327198354874 137.1125692908665  4.8021584794200809 131.93162171035686  4.8345708766002282 129.33366948266521  4.8664610438075888 126.73697729754508  4.8979213073472678 124.14389098117637  4.9290459541778953 121.55560479692036  4.9599317214291636 118.97253560133198  4.9906780511843394 116.39476829534921  5.0502148166702572 111.40795929112768  5.0789558809234441 109.00276321143002  5.1077094768122837 106.6059689710073  5.136570541514212 104.21714369538603  5.165629002096539 101.83695285980788  5.1949700063184325 99.467594271216029  5.2246747698073017 97.113135146411352  5.2850478905555756 92.44019703262704  5.3155647707966622 90.133733702124317  5.3466566085609566 87.849672935498035  5.3785732870992273 85.58357218547944  5.4115345118082026 83.338052439487498  5.4457388947328331 81.123059644411342  5.4813789472988796 78.955459772939165  5.5465002439769373 75.2917634253632  5.5750838327361087 73.774252052933988  5.6048047882255165 72.295694378899299  5.6360256656447216 70.855323509754371  5.6690850687114498 69.461538831266196  5.704319175365451 68.131481458246711  5.7420884529558789 66.890140288588725  5.7929608686667216 65.49006680841768  5.8032963409432732 65.218126166734862  5.8138412573966578 64.953655024142449  5.8246076680680714 64.697121339789064  5.8356078635768105 64.449057531717798  5.8468544583579964 64.210058663420114  5.858360473900313 63.980780630389944  5.8755241899847634 63.661894190080915  5.8809662764974133 63.564025795645804  5.886467163352223 63.468398493299155  5.8920283550332799 63.375080825281906  5.8976513798339569 63.284144514221794  5.9033377910126603 63.195664431205827  5.9090891679485713 63.109718563852766  5.9178877165217729 62.983696815103116  5.9208858070514374 62.941691797670373  5.9239016128241788 62.900383733049466  5.9269353613807336 62.859783629368373  5.9299872838647767 62.819902701920974  5.9330576150229257 62.78075237316714  5.9361465932047377 62.742344272732673  5.9408565418330177 62.685279873578502  5.9424636427064419 62.666069890103024  5.9440757961341326 62.647061908924421  5.9456930355269879 62.62825756709465  5.947315394555635 62.609658516776193  5.9489429071504478 62.591266425242004  5.9505756075015395 62.573082974875454  5.9530432933432236 62.546004775671243  5.9538743968456362 62.536953669187419  5.9547068450448792 62.527956764428019  5.9555406424368798 62.519014283110991  5.9563757935346091 62.510126447963053  5.9572123028680926 62.501293482719802  5.9580501749843986 62.492515612125608  5.9766009853940814 62.299709646741718  5.9950687575598636 62.138735537044397  6.0142798522312164 62.00447388422748  6.0342141573689156 61.900307054530842  6.0548482587363477 61.829163542890356  6.0761566080196596 61.793409472798118  6.0981112506587021 61.794811193176308  6.1410478087696125 61.870342941125656  6.1613955377991001 61.936443895039446  6.1817267060388801 62.030997045052715  6.2020430289650657 62.152261904014068  6.2223458896451742 62.298581970555283  6.2426364462071202 62.468387431722142  6.2629158118189876 62.660197395252105  6.2831853071795862 62.872621651498271 
+ 0 9 0.018319831392875258 7 0.038238739386516812 7 0.058928815347170885 7 0.099676523702549119 7 0.14180018139943834 7 0.19843083503506309 7 0.26636149385935876 7 0.35593390730355601 7 0.44231953468895702 7 0.46334162919646005 7 0.48417306766917673 7 0.51829816977584031 7 0.5258415232310033 7 0.53533930688121534 7 0.54197727483116187 7 0.54607409935094864 7 0.55569344397157039 7 0.57380963950471575 7 0.62656197371599442 7 0.69628114357816095 7 0.7662666329709622 7 0.83196454640748263 7 0.89783540057505784 7 0.94701610830345462 7 0.95925610590166366 7 0.96485164354498199 7 0.96771829881469151 7 0.9691960374231734 7 0.96994465232925553 7 0.98574365440354217 7 1 9
+7 0 0  9 34 5  0 2191.2528426246377  0.17453292519943275 2201.1762210298662  0.34906585038763893 2212.8777544163167  0.5235987755629381 2225.9202112443745  0.69813170099653377 2239.7618983387947  0.87266462583350091 2253.7926203012466  1.0471975511797851 2267.3825231604278  1.2217304763623602 2279.9364764746279  1.3962634015954656 2290.9409960962744  1.7016960206944729 2306.7891165097949  1.8325957145985594 2312.4851645977215  1.9634954084562128 2316.9168734110426  2.094395102383567 2319.9521273399391  2.2252947962926299 2321.5028111454512  2.3561944901685461 2321.5301002563597  2.4870941840949765 2320.0462938574979  2.6179938779914931 2317.1129928117252  2.9452431127404282 2306.4209952363253  3.1415926534943779 2296.9829264590517  3.3379421945762502 2284.8797251470387  3.534291734879595 2270.6938980966806  3.730641276361645 2255.195429854095  3.9269908168541647 2239.2696148566902  4.1233403578305357 2223.81886116229  4.3196898986859633 2209.6690171571336  4.7123889803846843 2185.3284854917574  4.9087385212395898 2175.1377964955459  5.1050880620569483 2167.6053621903993  5.3014376029494432 2163.2626182430736  5.4977871437976766 2162.4233348661414  5.69413668460286 2165.1354166022502  5.8904862254852777 2171.1757185130937  6.0868357663302142 2180.0890419187554  6.2831853071795756 2191.2528426246372 
+ 3.9726563532452048 10 5.5434526800401605 8 6.7215499251363182 8 8.488695792780554 8 10.255841660424791 10
+3 -30.523442721219361 18.279086410430939 -0.26385650108450426 -0.96456194556671326 0.96456194556671326 -0.26385650108450426 107.4709263010234 75
+1 6.2831853071795862 -0 0 1 
+1 0 -0 0 1 
+7 0 0  8 163 24  0 55.948476944696331  0.026835155340074329 56.063812121665613  0.05361590345828747 56.20285210498443  0.080350821430583308 56.364213163397686  0.107048239584543 56.546602345526388  0.13371635743674187 56.74881822147335  0.16036339261496971 56.969751060113396  0.18699776276531416 57.208382442068547  0.23980517493090478 57.714835288953999  0.26610646337594085 57.983318853192223  0.29249581371823469 58.268203640365925  0.31893027925202072 58.568280055365769  0.34536299525515102 58.882190758997758  0.37174274501572285 59.208438071385103  0.39801324866624155 59.545392454912225  0.48387191051147382 60.683300880901619  0.54013407300252481 61.487744571172897  0.5932185459183843 62.288610915231672  0.64350232331322887 63.078814680725259  0.69142457965386739 63.856848788336521  0.73748486956197756 64.625267599713752  0.78223300146445229 65.389688893067955  0.88349914284311049 67.157173010177203  0.93871311173197658 68.148984078050887  0.9920792870327626 69.130243796325558  1.0437859923152459 70.100152452005887  1.0940207470796552 71.05921569741318  1.1429717882997377 72.008810085271548  1.1908284979154296 72.951008488371002  1.2803587070748523 74.738421215054984  1.3220982111153925 75.582596557836624  1.3630671694570828 76.421274044128268  1.403321664215283 77.254806183987014  1.4429147189631137 78.08363152885785  1.4818975285022737 78.908246397777802  1.520319907241197 79.729181489365502  1.6624861640772663 82.79601566184229  1.762727088591322 85.018314280800467  1.8598092975149005 87.221826702600907  1.9544131496544903 89.412885412559518  2.0471603644894643 91.59526129548982  2.1386337471740346 93.77027794573138  2.2294251319250162 95.936573970336269  2.385620911104585 99.639920583606724  2.4507669570000155 101.1773994150352  2.5161449425325513 102.70543896155426  2.5822742460910151 104.22708240611058  2.6496530101393114 105.74214199452594  2.7187592788836263 107.24557861127408  2.790058856963141 108.72511828493634  2.88133725044537 110.49298100206708  2.8988190618257446 110.82616500279788  2.9164961305807413 111.15728773140609  2.9343902471501204 111.48626359316376  2.9525222764461709 111.8129160143814  2.9709121867460868 112.13697002259067  2.9895790785843519 112.4580448267271  3.0262695282983541 113.0725823994913  3.044244004019935 113.36628311641714  3.0625048027006403 113.65678351669685  3.0810895591406569 113.94394516564091  3.1000334748119083 114.22744458095033  3.1193694116203936 114.50676158840251  3.1391279856685155 114.78116767753772  3.1895496830449455 115.45117247409819  3.220232568671153 115.83239590690397  3.2519747053458867 116.19841945940155  3.2853029579338329 116.55038051447266  3.3206563084716891 116.88493386576953  3.3583878934006806 117.19388310780829  3.3987830520117117 117.46389392614327  3.4567093558156325 117.74786761505405  3.4717344679353825 117.81330962640286  3.4872345312610626 117.87196387897964  3.5032790666562299 117.92297467808396  3.5199296295075237 117.96514515704897  3.5372404989327579 117.99693391207373  3.5552593474762291 118.01645053335729  3.5862636353235531 118.02470934731109  3.598663198207245 118.02175759311808  3.6111900286809839 118.01223701517237  3.623809391805608 117.99588607152344  3.6364879727659214 117.97254055886806  3.6491934806724813 117.94213473836648  3.6618942523633948 117.90470246145831  3.695697024219355 117.78639795843807  3.7172958171789898 117.69125318277896  3.7390144749913965 117.57443520975067  3.7605364403893526 117.43704901627672  3.7815433084375556 117.28198464517408  3.8017039324003514 117.11398789824152  3.8206497441420213 116.93983121020472  3.853058299459041 116.61862222980979  3.8675897568755113 116.46413717149281  3.8815607937585757 116.30618027058335  3.8950177474848346 116.14549287909881  3.9080099602101876 115.98255610846513  3.9205901032205275 115.81759482886883  3.9328134109139952 115.65059677559806  3.966502567155767 115.17234712093854  3.98725712847807 114.85597386372726  4.007081927633906 114.53461953000368  4.0260635726694334 114.20995690987938  4.0442951883571094 113.88292954065996  4.0618774772443187 113.55376179148406  4.0789185138182571 113.22198853625392  4.1465518004579742 111.8562593744343  4.193799731995278 110.7858136820882  4.2377015363527324 109.69918401154806  4.2786855816744245 108.61146418297761  4.3172219309968556 107.52914471245549  4.3538506054690336 106.45028576223086  4.3891900862600011 105.36502013323553  4.5026851604515619 101.74330445073554  4.5763908700869154 99.172928088291258  4.6458997523076446 96.596177281175699  4.7120271523898953 94.039674138586747  4.7756342995696528 91.510286073042835  4.8376773829861204 88.999309075346147  4.8992126875899995 86.488370503250962  4.9951419331295694 82.588086741177349  5.028787494350901 81.222790409413008  5.0624601485405885 79.863712743424799  5.0962791557479372 78.510745961753685  5.1303592181311588 77.16434280645251  5.1648108759430444 75.825779930982534  5.1997415266961946 74.497371870201945  5.2732229168617479 71.777169165009056  5.3116003786163137 70.39683011180432  5.3508229287048241 69.033675803282605  5.3912781809741199 67.684355816844999  5.4333123047717518 66.350965989321935  5.4772433524822155 65.041413289393319  5.5233848156875895 63.769335805974436  5.6061718440778705 61.702540454998832  5.6411969171549412 60.887018159310998  5.6777834566111292 60.09890260769383  5.7165139189298468 59.337244025823502  5.7579199723131893 58.608808726318443  5.8025155567752433 57.927966017055304  5.8508364928966579 57.316240127943018  5.9166264236502899 56.673809662367312  5.9300346696986788 56.551538800473942  5.9437683080774804 56.43534993032813  5.9578520715002492 56.325689341349907  5.9723107140090441 56.223090854427511  5.9871691288929325 56.128175178224474  6.0024525699059055 56.041648406733593  6.0403621078841567 55.855288950429603  6.0641298260384566 55.761082313780157  6.0892183319301996 55.688072011872976  6.1153892752317018 55.641081383422787  6.1424169905081953 55.623293643404239  6.1700755459902812 55.636240720327741  6.1981286535336446 55.679832487268733  6.2334325658924588 55.77072503972078  6.2405463643704753 55.790864255241992  6.2476585968214842 55.81279869533271  6.2547689628042145 55.836502336174185  6.2618771491331824 55.861948825776913  6.2689828298786994 55.889111483980663  6.2760856663668685 55.91796330245441  6.2831853071795862 55.948476944696331 
+ 0 9 0.019018792544694442 7 0.03771359140072162 7 0.080513130083090079 7 0.13620373571084127 7 0.18669066289317413 7 0.32553447142552394 7 0.42569392882468893 7 0.44913196049583526 7 0.4710449359591512 7 0.50380327007174419 7 0.51487078242699613 7 0.52208600645225844 7 0.53412875327587039 7 0.54468267199311748 7 0.56395095467861356 7 0.62312231751858249 7 0.75733674355307057 7 0.83015966140350028 7 0.90800720301377802 7 0.96250659343954059 7 0.97606625983306905 7 0.99517644396296179 7 1 9
+7 0 0  8 163 24  2.9304339690808727 2223.2891945726697  2.9223214203894314 2223.5944486375092  2.91399287895109 2223.8733805583483  2.9054634548317826 2224.126701394352  2.8967473469576333 2224.3550612103631  2.8878578555030296 2224.5590491142761  2.8788073893467612 2224.7391934158632  2.8696074685962216 2224.8959619070442  2.8510890655103953 2225.161283270882  2.8417303458204382 2225.2712558667959  2.8322160203908959 2225.3594612934457  2.8225730010516576 2225.4258169477735  2.8128305455579614 2225.4704176956957  2.8030201179598127 2225.4935586471142  2.7931752729765282 2225.4957499456714  2.7607924452531267 2225.4364890337906  2.7392397841892353 2225.2911337700007  2.7187498601208482 2225.0661385634512  2.699287835139653 2224.7791219868609  2.6807486105044847 2224.4419483408724  2.6629799657500479 2224.0612802812916  2.6458011020998784 2223.6390200130836  2.6071970429049323 2222.5664148085834  2.5863523208451857 2221.8940430779148  2.5664733469434595 2221.1662453000322  2.5475217139922912 2220.3908353291285  2.5294474372089075 2219.5735251870624  2.5121951864109007 2218.7182533655473  2.4957082448915555 2217.8273633325794  2.4656271606657154 2216.0625041832545  2.4519382169774837 2215.1965834866978  2.4388480658891525 2214.306551248585  2.4263406762445872 2213.3946546954676  2.4143998908437734 2212.4628045193363  2.4030097254906289 2211.5126160177015  2.3921547425098901 2210.5454483661774  2.3534003542648865 2206.8590819255837  2.3289568785026118 2204.0395851977432  2.308215240361851 2201.1324890601381  2.2909538857398082 2198.1577892276637  2.2770002429115923 2195.131014362204  2.2662346510407803 2192.064938617661  2.2585950591984614 2188.9711065917918  2.2508445025031407 2183.6208657623661  2.2492430393431526 2181.3810207908368  2.2492523519017902 2179.1381502129902  2.2509002339961879 2176.8879304088459  2.2542752332621987 2174.6291132282295  2.2595223854371174 2172.3657067613094  2.2668382758957373 2170.109688734789  2.2787191821726429 2167.3640235774865  2.2811022141466357 2166.8442641971733  2.2836211345851747 2166.3252464128923  2.2862823961436392 2165.8069068586897  2.2890929997731249 2165.2892917682793  2.292060446161388 2164.772565105754  2.2951926871737971 2164.2570166962983  2.3015883936494594 2163.2625652665988  2.3048279834955983 2162.7837832128143  2.308227819504554 2162.3063679573247  2.3117996967119936 2161.8301799969017  2.3155561247756986 2161.355308569563  2.3195102202338673 2160.8820836608243  2.3236755987634181 2160.4110880099543  2.3346300036899046 2159.2436637713677  2.3415804879762292 2158.5634744920321  2.3490539965824668 2157.8921307356186  2.3572034060637019 2157.2240825251156  2.3661867836697188 2156.5595742627347  2.3761625565783278 2155.9050189339864  2.3872876366525952 2155.2731454134691  2.4039134621533207 2154.4838737160517  2.408279457098538 2154.2884492115777  2.4128393979079856 2154.0968667139618  2.4176188688071583 2153.9095276719595  2.4226425104161171 2153.7272824673964  2.4279339989600639 2153.5514282423769  2.4335159968864133 2153.3837084256375  2.4432525908794314 2153.1237040573233  2.4471791275298536 2153.0267806877046  2.4511791089027155 2152.9362415561213  2.4552419371619147 2152.8526611711563  2.4593569146305105 2152.7764928929278  2.4635131658490592 2152.7080709829688  2.4676995596339615 2152.6476126541115  2.47892320897824 2152.5077730754597  2.4861802160604825 2152.440473596138  2.4935656582182713 2152.3966496362214  2.5009694183721409 2152.3776163066482  2.5082736916901607 2152.3826949132158  2.5153506987771785 2152.4092207874396  2.5220553348959416 2152.4525418489807  2.5335987554260999 2152.5529776943304  2.5388080922992096 2152.6098336126433  2.5438452697177274 2152.6751608784562  2.5487220164351405 2152.7477518152  2.5534521829262657 2152.8266676103181  2.5580516991676703 2152.9112314070699  2.5625381643772132 2153.001013307538  2.5749483656629617 2153.2688725945222  2.5826480612190941 2153.4585690328422  2.5900465329800926 2153.6615467678307  2.5971659434541441 2153.8752303054584  2.6040334258264473 2154.0978118600387  2.610680922489641 2154.3282337257929  2.6171446763368231 2154.5661596515656  2.6428716659558549 2155.5666924276029  2.6610184956816911 2156.3992879884777  2.6779633450486915 2157.2795289103769  2.6938116357783333 2158.1871175401479  2.7087101916106699 2159.1110183808623  2.7228462170043644 2160.0491784600858  2.7364421216419323 2161.0081030764859  2.7798945760234259 2164.2556991985766  2.8077742485092365 2166.6337932862921  2.8335111938547288 2169.075482360945  2.8573107136679212 2171.5470589910428  2.8794184867374915 2174.0368044943543  2.900093730319905 2176.5514036641066  2.9195598671979277 2179.1109585117306  2.9478658319636173 2183.1676592076055  2.9574083425780922 2184.6030424881201  2.966545162478182 2186.0479640721196  2.9752753713021547 2187.5035203311263  2.9835874427410833 2188.9705588993002  2.9914578132204643 2190.4494329906411  2.9988496788656032 2191.9398008073799  3.0130479701868698 2195.0446755858939  3.019729203290316 2196.6498039159519  3.0257696919781334 2198.2676380632956  3.0311265929609839 2199.9066137314667  3.0356985649360286 2201.5708573490992  3.0393251218759336 2203.2598422027086  3.0417864240205672 2204.9684497126245  3.0435144276177217 2207.890504526697  3.0435112115081449 2209.0875426960802  3.0427319019555235 2210.2943607616071  3.0410405113407375 2211.5210696531799  3.0382278875434396 2212.7710216432233  3.0340095145491142 2214.0408418221386  3.0280236676937626 2215.3207782562204  3.0177841022489358 2216.9107907815319  3.0156022264149565 2217.2279011872183  3.0132685695653136 2217.5453826544663  3.0107722662211311 2217.8631956248601  3.0081015703248788 2218.1812121512703  3.0052438542029791 2218.4992128585486  3.0021855945891347 2218.8168847579768  2.9942992241905371 2219.5804894013763  2.9891141138153201 2220.0397322872723  2.9833617414400067 2220.5013226948722  2.9770558898742072 2220.9566797644015  2.9702252730416272 2221.3986226642119  2.9629165864087117 2221.8212651592271  2.9551962327636132 2222.2199802295791  2.9451218542014868 2222.685105633951  2.9430736971999827 2222.776974089365  2.9410081511027886 2222.866975965243  2.9389256207476468 2222.9551169159863  2.9368265171316859 2223.041402882197  2.9347112574114114 2223.1258400906795  2.9325802649027155 2223.208435054436  2.9304339690808727 2223.2891945726697 
+ 0 9 0.019018792544694442 7 0.03771359140072162 7 0.080513130083090079 7 0.13620373571084127 7 0.18669066289317413 7 0.32553447142552394 7 0.42569392882468893 7 0.44913196049583526 7 0.4710449359591512 7 0.50380327007174419 7 0.51487078242699613 7 0.52208600645225844 7 0.53412875327587039 7 0.54468267199311748 7 0.56395095467861356 7 0.62312231751858249 7 0.75733674355307057 7 0.83015966140350028 7 0.90800720301377802 7 0.96250659343954059 7 0.97606625983306905 7 0.99517644396296179 7 1 9
+1 6.2831853071795862 -0 0 1 
+1 0 -0 0 1 
+7 0 0  10 29 4  6.2831853071795853 325.96290154168219  6.1261056745000957 331.95063627806417  5.9690260418174557 337.65157569629838  5.8119464091446034 342.86051757580361  5.6548667764537344 347.38491875585174  5.4977871437630608 351.0568852769469  5.3407075110910229 353.74427240579382  5.1836278784228744 355.3591179629924  5.026548245739618 355.86231989451522  4.8694686130641802 355.26415654993508  4.4767695313654565 351.156104305805  4.2411500823528794 346.33989590221444  4.005530633304625 339.36235606358389  3.7699111843539868 330.64668363202361  3.5342917352463701 320.82392325811088  3.2986722861794986 310.66515732984988  3.063052837284522 300.9762063324917  2.8274333882236591 292.48553408953137  2.5918139392115793 285.75851587208206  2.1205750411731104 276.5424102831077  1.8849555921369756 274.0533224826213  1.6493361432731035 274.0385113582015  1.4137166934669949 276.64321025088429  1.1780972463020589 281.7556589320302  0.94247779542638455 288.99887574464083  0.70685834729374619 297.77475742809474  0.47123889802242047 307.35440622083843  0.23561944901923434 316.98129943710921  0 325.96290154168213 
+ 4.9802262541359505 11 6.5510225809308 9 8.9072170711231831 9 11.263411561315536 11
+3 75.625 -111.87499999999997 -0.31622776601683794 0.94868329805051388 -0.94868329805051388 -0.31622776601683794 63.737743919909803 50
+1 6.2831853071795862 -0 0 1 
+1 0 -0 0 1 
+3 75.625 -111.87499999999997 -0.31622776601683794 0.94868329805051388 -0.94868329805051388 -0.31622776601683794 31.868871959954902 25
+7 0 0  10 20 3  6.2831853071795845 320.73236697261785  5.9690260418206051 326.72010170899983  5.6548667765382561 332.13424483733252  5.3407075117575005 336.15400379151106  5.0265482451068237 338.0597138479352  4.7123889828799292 337.42558240145445  4.3982297139591537 334.27951177954674  4.0840704503061716 329.13450380414724  3.7699111843030551 322.8203583736904  3.4557519189487746 316.25903257087128  2.827433388230816 304.28356309810732  2.5132741229790554 298.86941998684779  2.1991148570887162 294.84966088831425  1.8849555931228679 292.9439510628581  1.5707963258901145 293.57808217406273  1.2566370627610013 296.72415326535702  0.94247779574652668 301.86916085518897  0.62831853080569999 308.18330644490197  0.31415926535897837 314.74463223623587  -8.8817841970012523e-16 320.73236697261785 
+ 4.9802262541359497 11 8.1218189077257428 9 11.263411561315536 11
+1 0 400 1 0 
+2 0 0 1 0 -0 1 100
+2 3.941381949525385e-14 -1.5800679520220506e-14 1 -1.3877787807814454e-17 1.3877787807814454e-17 1 75
+1 0 2400.0000000000005 1 0 
+Curves 14
+2 -66.815310478106099 -108.6306209562122 -225.44593143431831 0.2672612419124244 0.53452248382484879 0.80178372573727319 2.7755575615628907e-17 0.83205029433784372 -0.55470019622522926 -0.96362411165943151 0.14824986333222029 0.22237479499833029 100
+2 -66.815310478105971 -108.63062095621194 -225.44593143431825 0.2672612419124244 0.53452248382484879 0.80178372573727319 2.7755575615628907e-17 0.83205029433784372 -0.55470019622522926 -0.96362411165943151 0.14824986333222029 0.22237479499833029 75
+1 -66.815310478106056 -25.425591522427826 -280.91595105684121 0.2672612419124244 0.53452248382484879 0.80178372573727319 
+3 -1.8333333333333286 21.333333333333343 -30.5 0.69631062382279141 0.69631062382279141 0.17407765595569785 -0.30530408919874125 0.067845353155275859 0.94983494417386161 0.64956980246163099 -0.71452678270779402 0.25982792098465241 143.29456840136453 100
+7 0 0  8 219 32  -23.615004462056191 -64.586253346542151 17.630053216125148  -24.591316577007998 -63.932377173955153 18.205204115221107  -25.599713190110389 -63.279154835767564 18.742040882778308  -26.637808756877774 -62.625406829437154 19.240800629910925  -27.70352330071346 -61.970059134121421 19.701640689128208  -28.795062957890359 -61.312131507533536 20.124619361505815  -29.910900522531847 -60.650725782798631 20.509676663857164  -31.049755991592541 -59.985014165309813 20.856615075904752  -33.4727224077714 -58.584890179592371 21.500470392102187  -34.760848188260994 -57.849545728737503 21.790381393549694  -36.073418309765621 -57.107312140883117 22.034303361565787  -37.409094727138161 -56.357452416025446 22.23152134497483  -38.766716840715794 -55.599355138495028 22.381104851408118  -40.145264212711716 -54.832535065436559 22.481897586972316  -41.54380265090952 -54.056653755566948 22.532507455831819  -44.433908008400458 -52.45607153192897 22.530039313348343  -45.88651318027997 -51.653054814072163 22.472906989751024  -47.315217119853628 -50.86385286649795 22.363441136169023  -48.716680294645471 -50.089835045097971 22.20535180844513  -50.088392572222482 -49.332199380532273 22.002411932939395  -51.428608568554978 -48.591914062069762 21.758367702179964  -52.736347750610889 -47.869645518196336 21.476788001181475  -56.523555524544044 -45.778793222672967 20.53841050574534  -58.934428765347548 -44.448908357641635 19.776417619841908  -61.243605065255984 -43.177869708334129 18.89328812493396  -63.453735842307779 -41.967052505139236 17.904521391156905  -65.569285771021853 -40.817083771827626 16.822890803055117  -67.59571890260446 -39.727991616047973 15.658676747307293  -69.539095054441177 -38.699469620814227 14.419878761294646  -73.335340099717556 -36.73003643576169 11.760809232908359  -75.179153471797505 -35.795220095806897 10.338473142948146  -76.940703468051936 -34.92780985663471 8.8552265131790726  -78.623930736448287 -34.128496240213678 7.319759082447149  -80.23292669666364 -33.397537865885951 5.7397776344693217  -81.771789212923608 -32.734822943764527 4.122131259124032  -83.244541034911364 -32.139935562394996 2.4729090980373645  -86.551417396333619 -30.902726167152125 -1.45490195842887  -88.334338120600023 -30.314991806888184 -3.7534672348946345  -90.013501857208482 -29.847169837365989 -6.0849574282427366  -91.59787662436726 -29.496690309614159 -8.4381383365366087  -93.095663702908098 -29.260381130521189 -10.80339970419608  -94.5142624114347 -29.134590318388554 -13.172458257856116  -95.860284082216722 -29.115293608252234 -15.538142985561025  -98.674222428034312 -29.297621723867138 -20.72051931413322  -100.11274296999207 -29.54408909675573 -23.532780957671964  -101.46656474927376 -29.930199506148323 -26.322582884902623  -102.74508654711643 -30.448634523020857 -29.083330902455295  -103.95604548649624 -31.092245077272885 -31.809819915881118  -105.10576048608274 -31.854124612107746 -34.497892604215345  -106.19932639598356 -32.727668547298777 -37.144204488112834  -108.61405738321483 -34.997477092622447 -43.176834102338937  -109.89669425431714 -36.471568606616941 -46.530202666870544  -111.09941258662091 -38.115904520993034 -49.803546085667406  -112.22921239604227 -39.919598381491234 -52.995690733645134  -113.29022881146604 -41.873823879396653 -56.106143764525854  -114.28411225327771 -43.97163364542785 -59.134410514758713  -115.21003657003774 -46.207658115644811 -62.079338052989854  -116.88841913627125 -50.863404108607611 -67.695795399068601  -117.64252299515279 -53.264457834097456 -70.362101970352995  -118.32777468705343 -55.784462800114355 -72.947289018183781  -118.94118863140449 -58.430296519024068 -75.457572236717894  -119.4751913224291 -61.209928302854351 -77.893728984995249  -119.91662416563774 -64.13007234773174 -80.249633057173142  -120.24533897879971 -67.193492375986978 -82.510823401437591  -120.47793438196005 -71.175063410317193 -85.174171305641863  -120.51512781582896 -71.963552877435149 -85.689051434636923  -120.54357146063197 -72.761820174605731 -86.197552250717678  -120.56277115954255 -73.57037839484309 -86.699576856493479  -120.57215461403293 -74.389673041838691 -87.194911988011953  -120.57106830096988 -75.220072252791041 -87.683225883056053  -120.55877438971051 -76.061857021235227 -88.164066149440487  -120.51034155551059 -77.760826477130365 -89.105361221431451  -120.47443540504219 -78.617260466427865 -89.565661169830889  -120.4259204154024 -79.485786781092983 -90.017836224269573  -120.36382545279393 -80.367502577075598 -90.461699274959471  -120.28701207055921 -81.263308027700262 -90.896796227690274  -120.19416953772641 -82.173885578419089 -91.322404874958053  -120.08380986755583 -83.099679201564697 -91.737533767093893  -119.74204488806812 -85.582695006108622 -92.801731587441637  -119.4830411039308 -87.131666419601871 -93.416384694074551  -119.16920578441072 -88.719523081112811 -93.996406604816428  -118.78727786922497 -90.37221897137357 -94.544583987599765  -118.31910790530814 -92.106957548659921 -95.054491856192669  -117.74153590698012 -93.930825810857371 -95.510392548193209  -117.02588227722261 -95.84045694548918 -95.887712061903471  -115.94139513548659 -98.258829825035733 -96.21205525741  -115.73587509997697 -98.701802312475408 -96.265542439264081  -115.52023513187663 -99.150814614675156 -96.313500812421537  -115.29347022376339 -99.606623529584027 -96.35551163621551  -115.05450930869335 -100.0698351391742 -96.391031150863128  -114.80222006065306 -100.54088452800703 -96.419387632162184  -114.53540709147995 -101.02003080944375 -96.439781042050541  -113.89697939172746 -102.12096963187393 -96.465770174421237  -113.50268265681134 -102.77073194055824 -96.466709993231447  -113.071339165897 -103.44602596425462 -96.450094868374833  -112.60492451379925 -104.13646966858511 -96.412573421456074  -112.10592720655256 -104.83270287602984 -96.351797675884839  -111.57763612083242 -105.52622842663575 -96.266529958255489  -111.02407931896917 -106.20965958125801 -96.156665102706725  -110.04919182850028 -107.3425613835125 -95.93002051606571  -109.6314544562226 -107.80839618241892 -95.823707655813777  -109.20104449862075 -108.26794532917347 -95.704671464006452  -108.76243175880445 -108.71584223398216 -95.573955711589463  -108.32064827412111 -109.14733419479224 -95.433320445254566  -107.88149594227444 -109.55810196657838 -95.285299806009562  -107.45182865448493 -109.94400343453461 -95.133285615415929  -106.78563534217295 -110.52094656127485 -94.888029597261905  -106.53426602323316 -110.73338422853382 -94.793140391427926  -106.28571382240679 -110.93851656308443 -94.697124082531957  -106.03988727719808 -111.13677215533271 -94.60011129225316  -105.79666163174217 -111.32856788203877 -94.502200652661017  -105.55588010466315 -111.51430844744606 -94.403459964511939  -105.31735773016428 -111.69438428487445 -94.303928490782198  -104.52565627398808 -112.27955958403172 -93.968096938217442  -103.98080900725253 -112.66146263668837 -93.727897057977984  -103.44642318687484 -113.01754156301062 -93.484318903939453  -102.92220355660453 -113.35031293908038 -93.238289281842  -102.40748095860131 -113.66214354608523 -92.990372167073062  -101.90122808242749 -113.9552437216924 -92.740785561521562  -101.40209239364032 -114.23165584750747 -92.489426684159525  -99.978758143647767 -114.98587786789052 -91.758446831648001  -99.068723153986554 -115.42582168743675 -91.27341299332322  -98.179167898499387 -115.81931074239976 -90.784218978626498  -97.309830900912786 -116.17199397841486 -90.293137884722569  -96.459331790900208 -116.48893111105107 -89.801320172959848  -95.625188661371666 -116.77458421173019 -89.308832401633822  -94.803883575334865 -117.03279774412353 -88.814715426244987  -91.623880973755547 -117.94805949183558 -86.867951172695285  -89.31942087497292 -118.42625001667977 -85.38361123114305  -87.092402884654376 -118.74208143101264 -83.892219135938959  -84.947265783145212 -118.92906521345675 -82.410333229617763  -82.878534081829926 -119.01317209283536 -80.944007542914648  -80.871006235012359 -119.01276176276777 -79.489215949343148  -78.90051080153593 -118.93855121599893 -78.032380908332769  -74.33978883261706 -118.6016126902781 -74.595020392745269  -71.799503636435048 -118.28928510034358 -72.630999726603434  -69.31949313213687 -117.87632470959099 -70.669791580418348  -66.899966500153539 -117.37859451383137 -68.71673105296955  -64.537389301843987 -116.80797242526971 -66.772836616177585  -62.22497595800138 -116.17245002425169 -64.835207615938117  -59.953342988057585 -115.47629184341284 -62.897418890502344  -55.460738763157174 -113.96133054848849 -58.994966862957241  -53.249941453596449 -113.14542309959387 -57.038869343502355  -51.079220143957528 -112.27829126681668 -55.082565957668287  -48.948219835512589 -111.36445204193178 -53.125887138508176  -46.856189900866227 -110.40730390198951 -51.167729536636202  -44.802291578214415 -109.40928775932191 -49.206251021980414  -42.785964527148401 -108.37208593878391 -47.239078893151117  -38.949957629459334 -106.28750488622173 -43.409013218508193  -37.129265499645662 -105.2465262086139 -41.550576026165345  -35.344249738192445 -104.17459804398726 -39.685122963945702  -33.594853631234777 -103.07205963460247 -37.80965592492884  -31.882345395819051 -101.93922550327989 -35.921551743828815  -30.209611956956813 -100.77666744735943 -34.018753989183544  -28.58138587468774 -99.585439223740678 -32.099909967751785  -25.423263168000872 -97.145785079830674 -28.22396059823172  -23.901681802859208 -95.903432689062797 -26.276641701465117  -22.434370096507095 -94.63370748448375 -24.308593721399617  -21.022199589590613 -93.331502328851258 -22.30899927181715  -19.672589246809181 -91.993819557262299 -20.270539954709825  -18.399576914479599 -90.620149357297976 -18.189308399414919  -17.223594450031321 -89.212206118152778 -16.064433932323453  -15.38505388437548 -86.698050195826823 -12.279804793756284  -14.672706176275696 -85.612341679064883 -10.64850107670577  -14.03426776682177 -84.50466908702569 -8.9860780572092409  -13.478371889053747 -83.366617756463086 -7.279336394081966  -13.022065643955969 -82.192570254119389 -5.5197686056189497  -12.690809502857164 -80.979079179621237 -3.7032778955863392  -12.518428419712805 -79.723561544608188 -1.8297322857971494  -12.554590139840428 -78.097372122781081 0.57534832508789435  -12.574277190791889 -77.769972683066854 1.0585288482297728  -12.607162504200588 -77.439018111843168 1.5457499050542851  -12.654034033470761 -77.104288972116422 2.0371188653671495  -12.715750906714085 -76.765566283981784 2.5327004919089546  -12.793244213916793 -76.4226265956368 3.0325145488614904  -12.887517794106788 -76.075237054394933 3.5365334103540813  -13.050910021924343 -75.562193445003572 4.2769796752062268  -13.10590570945797 -75.40024642822415 4.5101542279908582  -13.16474140136204 -75.237280191778325 4.7442037669675683  -13.227526286767347 -75.073264959782549 4.9791262227846156  -13.294373432748506 -74.908170300942103 5.2149168547779068  -13.365399789377475 -74.741965013441302 5.4515680886541489  -13.440726194777046 -74.574617009833275 5.6890693541739967  -13.561334786639554 -74.319756607880933 6.0495098717784979  -13.603353788497149 -74.233110868901775 6.1718330658297482  -13.64655127833535 -74.146151315779406 6.2943749933862554  -13.690944459620768 -74.058873157230281 6.417133963804428  -13.736550846698318 -73.971271479900523 6.5401081073997869  -13.783388264791252 -73.883341248365909 6.6632953754469559  -13.831474850001149 -73.795077305131841 6.7866935401796757  -13.906270757132701 -73.660800243535959 6.9740184687368076  -13.932049311631317 -73.615036034853503 7.0377921412810274  -13.958167240445462 -73.569181020601278 7.1016208807245285  -13.984627093785193 -73.523234467369861 7.1655043403194103  -14.011431444428945 -73.477195632325277 7.229442158268788  -14.03858288772353 -73.431063763208911 7.2934339577267906  -14.066084041584114 -73.384838098337511 7.35747934679857  -14.108047991225591 -73.315052271449645 7.4540499308359784  -14.122248862783781 -73.291562406792821 7.4865355916789049  -14.136540504476633 -73.268048172356586 7.5190348480717635  -14.150923261109142 -73.244509467220624 7.5515476459293813  -14.165397478983484 -73.22094618982031 7.5840739300787083  -14.179963505899035 -73.197358237946858 7.6166136442588277  -14.194621691152349 -73.173745508747302 7.6491667311209497  -14.520675632760067 -72.651252416755241 8.3690246014052629  -14.87576875543564 -72.137169359893676 9.0679580480636233  -15.277856482701928 -71.608633511801074 9.7753042004634398  -15.729731449861717 -71.066466334266607 10.487451233806055  -16.233653286709874 -70.511377512940243 11.200634271358467  -16.791267428568165 -69.943919370539987 11.911027112658815  -17.403548765661803 -69.364509255883391 12.614774717509441  -18.672813916374317 -68.240150929413275 13.933622484259457  -19.304228020577511 -67.710974959049366 14.534700936103595  -19.963245076384201 -67.185214771355461 15.111360239262659  -20.648166589677871 -66.662196960033228 15.663660976316955  -21.357350209646366 -66.141310924481814 16.191648475011203  -22.089214271427409 -65.622008903229272 16.695357298369984  -22.842244726676356 -65.103802163446346 17.174816153077977  -23.615004462056191 -64.586253346542151 17.630053216125148 
+ 0 9 0.018319831392875258 7 0.038238739386516812 7 0.058928815347170885 7 0.099676523702549119 7 0.14180018139943834 7 0.19843083503506309 7 0.26636149385935876 7 0.35593390730355601 7 0.44231953468895702 7 0.46334162919646005 7 0.48417306766917673 7 0.51829816977584031 7 0.5258415232310033 7 0.53533930688121534 7 0.54197727483116187 7 0.54607409935094864 7 0.55569344397157039 7 0.57380963950471575 7 0.62656197371599442 7 0.69628114357816095 7 0.7662666329709622 7 0.83196454640748263 7 0.89783540057505784 7 0.94701610830345462 7 0.95925610590166366 7 0.96485164354498199 7 0.96771829881469151 7 0.9691960374231734 7 0.96994465232925553 7 0.98574365440354217 7 1 9
+3 -1.8333333333332575 21.333333333333485 -30.5 0.69631062382279141 0.69631062382279141 0.17407765595569785 -0.30530408919874125 0.067845353155275859 0.94983494417386161 0.64956980246163099 -0.71452678270779402 0.25982792098465241 107.4709263010234 75
+1 -66.815310478106085 -46.226848880873916 -267.0484461512105 0.2672612419124244 0.53452248382484879 0.80178372573727319 
+7 0 0  8 163 24  -22.286427363480353 -47.964820522610189 -2.2422046750504947  -22.778130683187499 -47.60735031742162 -1.9358983297576757  -23.290993013438861 -47.254362433647742 -1.6523802481845626  -23.823592900814472 -46.905446801202743 -1.3915107816026644  -24.374584741655344 -46.56023993540304 -1.1531700143822958  -24.942699130404112 -46.21842603018581 -0.93725687244852041  -25.526743367456586 -45.879736632384613 -0.74368897305905834  -26.125602126523958 -45.543948897062208 -0.57240321590416687  -27.34043790392678 -44.883489887975273 -0.27685008253728327  -27.95889676366825 -44.557124333412375 -0.1511142403882797  -28.591830793252804 -44.232218537348693 -0.046728599166720564  -29.23719108899801 -43.90930473133718 0.035875670125207648  -29.892740780182024 -43.588982520609761 0.09647099933477854  -30.556072008018482 -43.27192055518023 0.13506860227329298  -31.224622913210112 -42.958856278280805 0.15194241554494958  -33.432231272396038 -41.944745682091629 0.13782679491954042  -34.915118275699292 -41.294745052088473 0.017498843845388024  -36.333718589593019 -40.695379469128945 -0.18982976561115095  -37.687350399201719 -40.141654563374743 -0.46574166436087694  -38.981501197545256 -39.627995455734421 -0.79732689091234477  -40.225684146835803 -39.148596261721302 -1.1769751895794229  -41.431931794186454 -38.69784196197854 -1.6020465908341421  -44.150037262171004 -37.715674344117893 -2.6885635755833235  -45.623320487252613 -37.208516035260153 -3.3741695906996654  -47.03333539299885 -36.748095100884669 -4.1188352222638196  -48.382576280849321 -36.332920997072264 -4.9129771439932952  -49.674695033801861 -35.961413253702148 -5.7493075653720025  -50.913920178769366 -35.632040427683329 -6.622525777283462  -52.104746533563478 -35.343521706797276 -7.5290645638305893  -54.291661639390981 -34.869606375343999 -9.3172025070861242  -55.29325548008029 -34.677590492344514 -10.1913413390657  -56.258074286514862 -34.518461354580545 -11.08588639483107  -57.187676759809023 -34.391741105845092 -11.997833894206835  -58.083641282235284 -34.296929102844551 -12.924608420360277  -58.947529792396452 -34.233518886519697 -13.864012336512269  -59.780855383249545 -34.201018981839098 -14.814173738539862  -62.796674584111145 -34.193363330261633 -18.411711180238285  -64.785021162592699 -34.418110322729731 -21.115627912015142  -66.577538145108832 -34.862712317970605 -23.847506833404019  -68.196492182810616 -35.516705365967766 -26.581962656145109  -69.65852951997806 -36.370471994128991 -29.300490636030119  -70.974954085281084 -37.415969401192626 -31.988752495601091  -72.151700774250273 -38.64706712596174 -34.634458267096072  -73.9352629161328 -41.077404020082376 -39.09263566386781  -74.606284105389079 -42.185538037910305 -40.923783416548332  -75.205136474260968 -43.384835334047516 -42.721985517890843  -75.732022547496143 -44.679316832897058 -44.489886344927257  -76.182849099819435 -46.074337283178572 -46.226837190374617  -76.548649144941265 -47.575118128346112 -47.927347120628795  -76.814516994394154 -49.184662720320624 -49.579443614036308  -76.991451722305996 -51.302302599113155 -51.533151558014261  -77.018348047650022 -51.71031889347789 -51.90042909488664  -77.038293990515257 -52.125149131443564 -52.264555864095605  -77.050931069737331 -52.547135720375934 -52.625502119013532  -77.055834540056438 -52.976584964633574 -52.983147574915478  -77.05251137712736 -53.413758363546549 -53.337277741209924  -77.040398262529663 -53.858863909395183 -53.68758025366941  -76.998722345894933 -54.735743305300566 -54.357184807852647  -76.970359818606909 -55.166215655622622 -54.67680355279991  -76.933242077720692 -55.604183150149453 -54.992639242497312  -76.886724608961515 -56.05028150890746 -55.304656892781431  -76.830046273609568 -56.505047602802293 -55.612641003259334  -76.762327289136167 -56.968903598266529 -55.91619182623689  -76.682567209840428 -57.442141101907062 -56.214721635646953  -76.4507277086432 -58.646603328043071 -56.945060493890438  -76.284863191692494 -59.376756415727769 -57.361925021561163  -76.087571708942249 -60.127806657845227 -57.764301462815709  -75.851896882684741 -60.910204433673535 -58.154463728199929  -75.56863064003393 -61.731239950884316 -58.530316213779784  -75.226301718709934 -62.594455807350897 -58.885322543529746  -74.811064513112868 -63.499273854599281 -59.208607655748068  -74.136201278991848 -64.758455774860579 -59.578502212551243  -73.954831698384709 -65.082016364089043 -59.66698886017457  -73.760986888489569 -65.412401275057988 -59.750292545288481  -73.553024992577775 -65.75053520717087 -59.827843392630619  -73.3291906862394 -66.097015569927393 -59.898767624857562  -73.087613296010105 -66.452106924077299 -59.961894605513386  -72.82630614729527 -66.81573198735326 -60.015763643305732  -72.358580823468714 -67.429798681256358 -60.086576710412217  -72.167051244955559 -67.672515561981101 -60.109493330060886  -71.968919863770452 -67.914664411177981 -60.127026694484847  -71.764573622475837 -68.155372717928387 -60.13891295868072  -71.554449531819046 -68.393837249728179 -60.144976501324017  -71.339039254073001 -68.629320406042311 -60.145128271301317  -71.118893686376666 -68.86114657185928 -60.139364134242314  -70.520310632586501 -69.46849955627755 -60.108400426702119  -70.124573469738166 -69.846479841189804 -60.072263155686528  -69.712488925014071 -70.215334752081887 -60.018379477780506  -69.28988984152025 -70.569016048736017 -59.947197040571972  -68.863821580210313 -70.902405265488966 -59.860626181248826  -68.442688658325466 -71.211241951456245 -59.762029120153947  -68.036686522404196 -71.491817810430248 -59.656281736173121  -67.327663020663991 -71.957746733982674 -59.45673811350148  -67.003229738910065 -72.160365946166038 -59.358891277050475  -66.685501816939166 -72.349389293056078 -59.257307604219775  -66.374260757858735 -72.526134668807416 -59.152687568519468  -66.069063576183083 -72.69184774699913 -59.045519287704202  -65.769246533267818 -72.847701157841001 -58.936086443191037  -65.473953968320416 -72.994782919044582 -58.824485087009784  -64.649522995861972 -73.388377977954875 -58.502819478634954  -64.128849808835596 -73.616607106622197 -58.287631428637773  -63.620462924875433 -73.82174322229875 -58.067178599016671  -63.124082308198588 -74.006505260070512 -57.842953917062147  -62.638844104760132 -74.173346309254839 -57.615864646132856  -62.163313808214596 -74.324445539138921 -57.386255366367415  -61.695526113350944 -74.461695115375207 -57.153939114607773  -59.812828589095311 -74.970507212486638 -56.194413273894909  -58.435534269930223 -75.240629272602263 -55.435000896691719  -57.109771017044281 -75.419874707878307 -54.659571708282982  -55.837589263651687 -75.527156292796732 -53.880149335889456  -54.614928235724776 -75.577140208809141 -53.102073599420898  -53.431826216257356 -75.580144106771996 -52.324347143801489  -52.272997624304715 -75.54210268202138 -51.539995166181647  -48.502688155521867 -75.288274019569073 -48.915520090917454  -45.976239826445351 -74.912523625462228 -47.042165360098288  -43.557604060140612 -74.387416404190049 -45.153127442260825  -41.249207975245668 -73.749298069254749 -43.265407375510257  -39.042117998162695 -73.020950510990986 -41.381410855506957  -36.919831531096797 -72.212858734819278 -39.491311342544499  -34.863616244923065 -71.325054609242486 -37.57626008749962  -31.775982875868838 -69.822180630693836 -34.547792488000027  -30.71530628589764 -69.272628778064217 -33.47748176827929  -29.679485564457622 -68.70270575460178 -32.400570185044003  -28.668581815170683 -68.11266604140522 -31.315500300808488  -27.683437709861842 -67.502627893919495 -30.220855202470176  -26.725860442583627 -66.872730099832182 -29.115499431634206  -25.798770540308173 -66.223258500369923 -27.998695215195603  -23.952280143302247 -64.840068785081968 -25.663859274376851  -23.044275615004786 -64.108463468107701 -24.452317570831596  -22.178384509006406 -63.355025181869571 -23.225446434330042  -21.355591483009079 -62.575394021696148 -21.975303077925236  -20.582211202263764 -61.766432630873801 -20.696727623619047  -19.870050780827086 -60.926584484638532 -19.387478977038139  -19.236398994559067 -60.055748745679217 -18.048245428240936  -18.331169963235943 -58.523599866894145 -15.726978364661221  -18.011475062276624 -57.883665341244608 -14.767197445856851  -17.744994031475841 -57.225228389759501 -13.789815847255767  -17.538796339970148 -56.540508829027694 -12.785053323173614  -17.407011504117733 -55.823881382370352 -11.747769200559148  -17.370902084612844 -55.071530651684128 -10.677628810144014  -17.458903749236676 -54.280596161095076 -9.5792233779193836  -17.768507279476907 -53.2400742807325 -8.1866094179491373  -17.840234687809666 -53.029664633301408 -7.9074672161730097  -17.922698369264197 -52.815872980828175 -7.6265381316393963  -18.01667454383314 -52.598433677801609 -7.3437898593714594  -18.123022848514768 -52.377094031088966 -7.0592638938998009  -18.242686143705324 -52.151611572942031 -6.7730812024727367  -18.376690567810861 -51.921749523665866 -6.4854479575997814  -18.736779176425372 -51.356809630392192 -5.7896626987262447  -18.984720804065301 -51.006793515623812 -5.367583053913684  -19.272246309926167 -50.642149191511159 -4.9391330486151421  -19.600515527502402 -50.267007813705938 -4.5118741803510147  -19.969216334497478 -49.884977804910378 -4.0924609453465761  -20.376382435478696 -49.499350447201728 -3.6866960123466903  -20.818303595509995 -49.113285909878577 -3.2994802544848953  -21.40836692190852 -48.633290482798692 -2.8426761287236917  -21.528982898540381 -48.53686695432107 -2.7521730605603576  -21.651262081143603 -48.440755181348472 -2.6632357871075598  -21.775171311117326 -48.344953422962121 -2.5758694695655833  -21.900676910740138 -48.249460189834856 -2.4900789174929674  -22.027744683170038 -48.154274244231125 -2.4058685888065061  -22.15633991244448 -48.059394600006996 -2.3232425897812479  -22.286427363480353 -47.964820522610189 -2.2422046750504947 
+ 0 9 0.019018792544694442 7 0.03771359140072162 7 0.080513130083090079 7 0.13620373571084127 7 0.18669066289317413 7 0.32553447142552394 7 0.42569392882468893 7 0.44913196049583526 7 0.4710449359591512 7 0.50380327007174419 7 0.51487078242699613 7 0.52208600645225844 7 0.53412875327587039 7 0.54468267199311748 7 0.56395095467861356 7 0.62312231751858249 7 0.75733674355307057 7 0.83015966140350028 7 0.90800720301377802 7 0.96250659343954059 7 0.97606625983306905 7 0.99517644396296179 7 1 9
+1 47.5 -42.5 -12.500000000000011 -0.78446454055273618 -0.58834840541455213 -0.19611613513818404 
+3 -229.99999999999997 -188.12500000000003 -74.375 1 0 -0 0 -0.94868329805051388 -0.31622776601683794 -0 0.31622776601683794 -0.94868329805051388 63.737743919909803 50
+1 32.5 -22.5 -12.500000000000005 -0.78446454055273618 -0.58834840541455213 -0.19611613513818404 
+3 -229.99999999999997 -188.12500000000003 -74.375 1 0 -0 0 -0.94868329805051388 -0.31622776601683794 -0 0.31622776601683794 -0.94868329805051388 31.868871959954902 25
+2 40.089186286863665 105.17837257372733 95.267558860590952 0.2672612419124244 0.53452248382484879 0.80178372573727319 2.7755575615628907e-17 0.83205029433784372 -0.55470019622522926 -0.96362411165943151 0.14824986333222029 0.22237479499833029 100
+2 40.089186286863765 105.17837257372753 95.26755886059118 0.2672612419124244 0.53452248382484879 0.80178372573727319 2.7755575615628907e-17 0.83205029433784372 -0.55470019622522926 -0.96362411165943151 0.14824986333222029 0.22237479499833029 75
+Polygon3D 0
+PolygonOnTriangulations 34
+37 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 2 
+p 1.76798081482709 1 0 0.174532925199433 0.349065850398866 0.523598775598299 0.698131700797732 0.872664625997165 1.0471975511966 1.22173047639603 1.39626340159546 1.5707963267949 1.74532925199433 1.91986217719376 2.0943951023932 2.26892802759263 2.44346095279206 2.61799387799149 2.79252680319093 2.96705972839036 3.14159265358979 3.31612557878922 3.49065850398866 3.66519142918809 3.83972435438752 4.01425727958696 4.18879020478639 4.36332312998582 4.53785605518525 4.71238898038469 4.88692190558412 5.06145483078355 5.23598775598299 5.41052068118242 5.58505360638185 5.75958653158128 5.93411945678072 6.10865238198015 6.28318530717959 
+37 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 1 
+p 1.76798081482709 1 0 0.174532925199433 0.349065850398866 0.523598775598299 0.698131700797732 0.872664625997165 1.0471975511966 1.22173047639603 1.39626340159546 1.5707963267949 1.74532925199433 1.91986217719376 2.0943951023932 2.26892802759263 2.44346095279206 2.61799387799149 2.79252680319093 2.96705972839036 3.14159265358979 3.31612557878922 3.49065850398866 3.66519142918809 3.83972435438752 4.01425727958696 4.18879020478639 4.36332312998582 4.53785605518525 4.71238898038469 4.88692190558412 5.06145483078355 5.23598775598299 5.41052068118242 5.58505360638185 5.75958653158128 5.93411945678072 6.10865238198015 6.28318530717959 
+37 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 47 
+p 1.76798081482709 1 0 0.174532925199433 0.349065850398866 0.523598775598299 0.698131700797732 0.872664625997165 1.0471975511966 1.22173047639603 1.39626340159546 1.5707963267949 1.74532925199433 1.91986217719376 2.0943951023932 2.26892802759263 2.44346095279206 2.61799387799149 2.79252680319093 2.96705972839036 3.14159265358979 3.31612557878922 3.49065850398866 3.66519142918809 3.83972435438752 4.01425727958696 4.18879020478639 4.36332312998582 4.53785605518525 4.71238898038469 4.88692190558412 5.06145483078355 5.23598775598299 5.41052068118242 5.58505360638185 5.75958653158128 5.93411945678072 6.10865238198015 6.28318530717959 
+37 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 37 
+p 1.76798081482709 1 0 0.174532925199433 0.349065850398866 0.523598775598299 0.698131700797732 0.872664625997165 1.0471975511966 1.22173047639603 1.39626340159546 1.5707963267949 1.74532925199433 1.91986217719376 2.0943951023932 2.26892802759263 2.44346095279206 2.61799387799149 2.79252680319093 2.96705972839036 3.14159265358979 3.31612557878922 3.49065850398866 3.66519142918809 3.83972435438752 4.01425727958696 4.18879020478639 4.36332312998582 4.53785605518525 4.71238898038469 4.88692190558412 5.06145483078355 5.23598775598299 5.41052068118242 5.58505360638185 5.75958653158128 5.93411945678072 6.10865238198015 6.28318530717959 
+2 2 39 
+p 1.76798081482709 1 0 173.957025235878 
+2 1 38 
+p 1.76798081482709 1 0 173.957025235878 
+46 38 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 39 
+p 1.76798081482709 1 3.97265635324521 4.17423217547692 4.37580799770864 4.57738381994035 4.77895964217207 4.98053546440378 5.1821112866355 5.38368710886722 5.56510534887576 5.72838176488345 5.87533053929037 6.0075844362566 6.12661294352621 6.23373860006886 6.3408642566115 6.44798991315415 6.5551155696968 6.66224122623944 6.76936688278209 6.87649253932474 6.98361819586738 7.09074385241003 7.23357806113356 7.39426654594753 7.5549550307615 7.71564351557547 7.87633200038944 8.03702048520341 8.19770897001738 8.35839745483135 8.51908593964533 8.6797744244593 8.84046290927327 8.98508254560584 9.11524021830516 9.23238212373454 9.33780983862099 9.44323755350744 9.54866526839388 9.65409298328033 9.75952069816678 9.86494841305323 9.97037612793967 10.0758038428261 10.1658227516255 10.2558416604248 
+46 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 2 
+p 1.76798081482709 1 3.97265635324521 4.17423217547692 4.37580799770864 4.57738381994035 4.77895964217207 4.98053546440378 5.1821112866355 5.38368710886722 5.56510534887576 5.72838176488345 5.87533053929037 6.0075844362566 6.12661294352621 6.23373860006886 6.3408642566115 6.44798991315415 6.5551155696968 6.66224122623944 6.76936688278209 6.87649253932474 6.98361819586738 7.09074385241003 7.23357806113356 7.39426654594753 7.5549550307615 7.71564351557547 7.87633200038944 8.03702048520341 8.19770897001738 8.35839745483135 8.51908593964533 8.6797744244593 8.84046290927327 8.98508254560584 9.11524021830516 9.23238212373454 9.33780983862099 9.44323755350744 9.54866526839388 9.65409298328033 9.75952069816678 9.86494841305323 9.97037612793967 10.0758038428261 10.1658227516255 10.2558416604248 
+46 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 1 
+p 1.76798081482709 1 3.97265635324521 4.17423217547692 4.37580799770864 4.57738381994035 4.77895964217207 4.98053546440378 5.1821112866355 5.38368710886722 5.56510534887576 5.72838176488345 5.87533053929037 6.0075844362566 6.12661294352621 6.23373860006886 6.3408642566115 6.44798991315415 6.5551155696968 6.66224122623944 6.76936688278209 6.87649253932474 6.98361819586738 7.09074385241003 7.23357806113356 7.39426654594753 7.5549550307615 7.71564351557547 7.87633200038944 8.03702048520341 8.19770897001738 8.35839745483135 8.51908593964533 8.6797744244593 8.84046290927327 8.98508254560584 9.11524021830516 9.23238212373454 9.33780983862099 9.44323755350744 9.54866526839388 9.65409298328033 9.75952069816678 9.86494841305323 9.97037612793967 10.0758038428261 10.1658227516255 10.2558416604248 
+53 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 84 
+p 1.76798081482709 1 0 0.0118487787628229 0.0236975575256458 0.0355463362884688 0.0473951150512917 0.0592438938141146 0.0710926725769376 0.0829414513397605 0.0987398230235244 0.112322392475317 0.130095560619552 0.150090374781815 0.170085188944079 0.190080003106343 0.208956887651551 0.232718833606894 0.259451022806654 0.286183212006414 0.312915401206175 0.339647590405935 0.375290509338949 0.41538879313859 0.444184002267057 0.474257715116787 0.489294571541652 0.505737374042242 0.517112408077797 0.525404807889716 0.531647934464159 0.537428607218273 0.5427810819906 0.548133556762928 0.555270189792698 0.563298901951189 0.574003851495844 0.58604691973358 0.602104344050563 0.626190480526036 0.662319685239246 0.702965040541607 0.757158847611422 0.818126880564964 0.879094913518506 0.901051864907698 0.923914877265276 0.940308446508075 0.953587237594742 0.963232570933095 0.972725025738035 0.98151433574261 0.986780669767372 0.993390334883686 1 
+53 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 1 
+p 1.76798081482709 1 0 0.0118487787628229 0.0236975575256458 0.0355463362884688 0.0473951150512917 0.0592438938141146 0.0710926725769376 0.0829414513397605 0.0987398230235244 0.112322392475317 0.130095560619552 0.150090374781815 0.170085188944079 0.190080003106343 0.208956887651551 0.232718833606894 0.259451022806654 0.286183212006414 0.312915401206175 0.339647590405935 0.375290509338949 0.41538879313859 0.444184002267057 0.474257715116787 0.489294571541652 0.505737374042242 0.517112408077797 0.525404807889716 0.531647934464159 0.537428607218273 0.5427810819906 0.548133556762928 0.555270189792698 0.563298901951189 0.574003851495844 0.58604691973358 0.602104344050563 0.626190480526036 0.662319685239246 0.702965040541607 0.757158847611422 0.818126880564964 0.879094913518506 0.901051864907698 0.923914877265276 0.940308446508075 0.953587237594742 0.963232570933095 0.972725025738035 0.98151433574261 0.986780669767372 0.993390334883686 1 
+46 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 2 
+p 1.76798081482709 1 3.9726563532452 4.16119171871392 4.34972708418263 4.53826244965135 4.72679781512006 4.91533318058878 5.10386854605749 5.29240391152621 5.48093927699492 5.65062110591677 5.80333475194643 5.94077703337312 6.06447508665714 6.18817313994117 6.29950138789679 6.39969681105685 6.49989223421691 6.60008765737697 6.70028308053703 6.80047850369709 6.90067392685715 7.0008693500172 7.13446324756395 7.28475638230404 7.43504951704413 7.58534265178422 7.73563578652431 7.88592892126439 8.03622205600448 8.18651519074457 8.33680832548466 8.48710146022475 8.63739459496484 8.78768772970493 8.93798086444502 9.0732446857111 9.19498212485057 9.31671956399004 9.43845700312951 9.56019444226898 9.68193188140845 9.80366932054792 9.92540675968739 10.0471441988269 10.1514929296258 10.2558416604248 
+46 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 1 
+p 1.76798081482709 1 3.9726563532452 4.16119171871392 4.34972708418263 4.53826244965135 4.72679781512006 4.91533318058878 5.10386854605749 5.29240391152621 5.48093927699492 5.65062110591677 5.80333475194643 5.94077703337312 6.06447508665714 6.18817313994117 6.29950138789679 6.39969681105685 6.49989223421691 6.60008765737697 6.70028308053703 6.80047850369709 6.90067392685715 7.0008693500172 7.13446324756395 7.28475638230404 7.43504951704413 7.58534265178422 7.73563578652431 7.88592892126439 8.03622205600448 8.18651519074457 8.33680832548466 8.48710146022475 8.63739459496484 8.78768772970493 8.93798086444502 9.0732446857111 9.19498212485057 9.31671956399004 9.43845700312951 9.56019444226898 9.68193188140845 9.80366932054792 9.92540675968739 10.0471441988269 10.1514929296258 10.2558416604248 
+46 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 46 
+p 1.76798081482709 1 3.9726563532452 4.16119171871392 4.34972708418263 4.53826244965135 4.72679781512006 4.91533318058878 5.10386854605749 5.29240391152621 5.48093927699492 5.65062110591677 5.80333475194643 5.94077703337312 6.06447508665714 6.18817313994117 6.29950138789679 6.39969681105685 6.49989223421691 6.60008765737697 6.70028308053703 6.80047850369709 6.90067392685715 7.0008693500172 7.13446324756395 7.28475638230404 7.43504951704413 7.58534265178422 7.73563578652431 7.88592892126439 8.03622205600448 8.18651519074457 8.33680832548466 8.48710146022475 8.63739459496484 8.78768772970493 8.93798086444502 9.0732446857111 9.19498212485057 9.31671956399004 9.43845700312951 9.56019444226898 9.68193188140845 9.80366932054792 9.92540675968739 10.0471441988269 10.1514929296258 10.2558416604248 
+2 47 2 
+p 1.76798081482709 1 2000 2191.25284262464 
+2 48 1 
+p 1.76798081482709 1 2000 2191.25284262464 
+52 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 84 
+p 1.76798081482709 1 0 0.00954987821484543 0.0190997564296909 0.0286496346445363 0.0381995128593817 0.0477493910742272 0.0604825620273544 0.0748073793496225 0.0890738922437453 0.108018486610221 0.129331155272506 0.147894690481756 0.169453375908132 0.193706897012804 0.217960418117477 0.242213939222149 0.266467460326822 0.298805488466385 0.335185770123394 0.371566051780403 0.407946333437412 0.441332819237133 0.46615045341866 0.47593252430297 0.484763679054806 0.497327606359204 0.507155106592981 0.51500756115823 0.521551273295938 0.527440614219874 0.533329955143811 0.539219296067747 0.547071750632996 0.555905762018901 0.567684443866774 0.585352466638583 0.605228992256869 0.631731026414583 0.671484077651155 0.716206260292298 0.775835837147155 0.84291911110887 0.89182281782696 0.917771998363719 0.936639169165451 0.95298898629318 0.964908002979294 0.975352573935589 0.984056383065835 0.993010919208064 0.996505459604032 1 
+52 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 1 
+p 1.76798081482709 1 0 0.00954987821484543 0.0190997564296909 0.0286496346445363 0.0381995128593817 0.0477493910742272 0.0604825620273544 0.0748073793496225 0.0890738922437453 0.108018486610221 0.129331155272506 0.147894690481756 0.169453375908132 0.193706897012804 0.217960418117477 0.242213939222149 0.266467460326822 0.298805488466385 0.335185770123394 0.371566051780403 0.407946333437412 0.441332819237133 0.46615045341866 0.47593252430297 0.484763679054806 0.497327606359204 0.507155106592981 0.51500756115823 0.521551273295938 0.527440614219874 0.533329955143811 0.539219296067747 0.547071750632996 0.555905762018901 0.567684443866774 0.585352466638583 0.605228992256869 0.631731026414583 0.671484077651155 0.716206260292298 0.775835837147155 0.84291911110887 0.89182281782696 0.917771998363719 0.936639169165451 0.95298898629318 0.964908002979294 0.975352573935589 0.984056383065835 0.993010919208064 0.996505459604032 1 
+2 1 2 
+p 1.76798081482709 1 62.8726216514981 325.962901541682 
+2 3 55 
+p 1.76798081482709 1 62.8726216514981 325.962901541682 
+51 2 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 55 
+p 1.76798081482709 1 4.98022625413595 5.16698843883022 5.3537506235245 5.52183658974934 5.6731139593517 5.82439132895406 5.96054096159619 6.0830756309741 6.20561030035201 6.32814496972993 6.45067963910784 6.57321430848575 6.69574897786367 6.81828364724158 6.94081831661949 7.06335298599741 7.18588765537532 7.30842232475323 7.43095699413114 7.55349166350906 7.67602633288697 7.79856100226488 7.9210956716428 8.04363034102071 8.16616501039862 8.28869967977653 8.41123434915444 8.53376901853235 8.65630368791027 8.77883835728818 8.90137302666609 9.023907696044 9.14644236542191 9.26897703479982 9.39151170417773 9.51404637355564 9.63658104293355 9.75911571231147 9.88165038168938 10.0041850510673 10.1267197204452 10.2492543898231 10.371789059201 10.4943237285789 10.6168583979568 10.7393930673348 10.8619277367127 10.9844624060906 11.1069970754685 11.185204318392 11.2634115613155 
+51 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 1 
+p 1.76798081482709 1 4.98022625413595 5.16698843883022 5.3537506235245 5.52183658974934 5.6731139593517 5.82439132895406 5.96054096159619 6.0830756309741 6.20561030035201 6.32814496972993 6.45067963910784 6.57321430848575 6.69574897786367 6.81828364724158 6.94081831661949 7.06335298599741 7.18588765537532 7.30842232475323 7.43095699413114 7.55349166350906 7.67602633288697 7.79856100226488 7.9210956716428 8.04363034102071 8.16616501039862 8.28869967977653 8.41123434915444 8.53376901853235 8.65630368791027 8.77883835728818 8.90137302666609 9.023907696044 9.14644236542191 9.26897703479982 9.39151170417773 9.51404637355564 9.63658104293355 9.75911571231147 9.88165038168938 10.0041850510673 10.1267197204452 10.2492543898231 10.371789059201 10.4943237285789 10.6168583979568 10.7393930673348 10.8619277367127 10.9844624060906 11.1069970754685 11.185204318392 11.2634115613155 
+2 1 2 
+p 1.76798081482709 1 55.9484769446956 320.732366972618 
+2 3 54 
+p 1.76798081482709 1 55.9484769446956 320.732366972618 
+49 2 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 54 
+p 1.76798081482709 1 4.98022625413595 5.17277091113056 5.36531556812517 5.53860575942031 5.69456693158595 5.85052810375158 5.99089315870065 6.11722170815481 6.24355025760897 6.36987880706314 6.4962073565173 6.62253590597146 6.74886445542562 6.87519300487978 7.00152155433395 7.12785010378811 7.25417865324227 7.38050720269643 7.50683575215059 7.63316430160476 7.75949285105892 7.88582140051308 8.01214994996724 8.1384784994214 8.26480704887557 8.39113559832973 8.51746414778389 8.64379269723805 8.77012124669221 8.89644979614637 9.02277834560053 9.14910689505469 9.27543544450886 9.40176399396302 9.52809254341718 9.65442109287134 9.7807496423255 9.90707819177966 10.0334067412338 10.159735290688 10.2860638401421 10.4123923895963 10.5387209390505 10.6650494885046 10.7913780379588 10.917706587413 11.0440351368671 11.1537233490913 11.2634115613155 
+49 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 51 
+p 1.76798081482709 1 4.98022625413595 5.17277091113056 5.36531556812517 5.53860575942031 5.69456693158595 5.85052810375158 5.99089315870065 6.11722170815481 6.24355025760897 6.36987880706314 6.4962073565173 6.62253590597146 6.74886445542562 6.87519300487978 7.00152155433395 7.12785010378811 7.25417865324227 7.38050720269643 7.50683575215059 7.63316430160476 7.75949285105892 7.88582140051308 8.01214994996724 8.1384784994214 8.26480704887557 8.39113559832973 8.51746414778389 8.64379269723805 8.77012124669221 8.89644979614637 9.02277834560053 9.14910689505469 9.27543544450886 9.40176399396302 9.52809254341718 9.65442109287134 9.7807496423255 9.90707819177966 10.0334067412338 10.159735290688 10.2860638401421 10.4123923895963 10.5387209390505 10.6650494885046 10.7913780379588 10.917706587413 11.0440351368671 11.1537233490913 11.2634115613155 
+2 2 48 
+p 1.76798081482709 1 173.957025235878 400 
+2 1 47 
+p 1.76798081482709 1 173.957025235878 400 
+37 47 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 48 
+p 1.76798081482709 1 0 0.174532925199433 0.349065850398866 0.523598775598299 0.698131700797732 0.872664625997165 1.0471975511966 1.22173047639603 1.39626340159546 1.5707963267949 1.74532925199433 1.91986217719376 2.0943951023932 2.26892802759263 2.44346095279206 2.61799387799149 2.79252680319093 2.96705972839036 3.14159265358979 3.31612557878922 3.49065850398866 3.66519142918809 3.83972435438752 4.01425727958696 4.18879020478639 4.36332312998582 4.53785605518525 4.71238898038469 4.88692190558412 5.06145483078355 5.23598775598299 5.41052068118242 5.58505360638185 5.75958653158128 5.93411945678072 6.10865238198015 6.28318530717959 
+37 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 1 
+p 1.76798081482709 1 0 0.174532925199433 0.349065850398866 0.523598775598299 0.698131700797732 0.872664625997165 1.0471975511966 1.22173047639603 1.39626340159546 1.5707963267949 1.74532925199433 1.91986217719376 2.0943951023932 2.26892802759263 2.44346095279206 2.61799387799149 2.79252680319093 2.96705972839036 3.14159265358979 3.31612557878922 3.49065850398866 3.66519142918809 3.83972435438752 4.01425727958696 4.18879020478639 4.36332312998582 4.53785605518525 4.71238898038469 4.88692190558412 5.06145483078355 5.23598775598299 5.41052068118242 5.58505360638185 5.75958653158128 5.93411945678072 6.10865238198015 6.28318530717959 
+37 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 2 
+p 1.76798081482709 1 0 0.174532925199433 0.349065850398866 0.523598775598299 0.698131700797732 0.872664625997165 1.0471975511966 1.22173047639603 1.39626340159546 1.5707963267949 1.74532925199433 1.91986217719376 2.0943951023932 2.26892802759263 2.44346095279206 2.61799387799149 2.79252680319093 2.96705972839036 3.14159265358979 3.31612557878922 3.49065850398866 3.66519142918809 3.83972435438752 4.01425727958696 4.18879020478639 4.36332312998582 4.53785605518525 4.71238898038469 4.88692190558412 5.06145483078355 5.23598775598299 5.41052068118242 5.58505360638185 5.75958653158128 5.93411945678072 6.10865238198015 6.28318530717959 
+37 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 37 
+p 1.76798081482709 1 0 0.174532925199433 0.349065850398866 0.523598775598299 0.698131700797732 0.872664625997165 1.0471975511966 1.22173047639603 1.39626340159546 1.5707963267949 1.74532925199433 1.91986217719376 2.0943951023932 2.26892802759263 2.44346095279206 2.61799387799149 2.79252680319093 2.96705972839036 3.14159265358979 3.31612557878922 3.49065850398866 3.66519142918809 3.83972435438752 4.01425727958696 4.18879020478639 4.36332312998582 4.53785605518525 4.71238898038469 4.88692190558412 5.06145483078355 5.23598775598299 5.41052068118242 5.58505360638185 5.75958653158128 5.93411945678072 6.10865238198015 6.28318530717959 
+2 1 2 
+p 1.76798081482709 1 2191.25284262464 2400 
+2 3 48 
+p 1.76798081482709 1 2191.25284262464 2400 
+Surfaces 8
+1 -66.815310478106099 -108.6306209562122 -225.44593143431831 0.2672612419124244 0.53452248382484879 0.80178372573727319 1.3877787807814454e-17 0.83205029433784372 -0.55470019622522926 -0.96362411165943151 0.14824986333222026 0.22237479499833032 
+2 -66.815310478106099 -108.6306209562122 -225.44593143431831 0.2672612419124244 0.53452248382484879 0.80178372573727319 1.3877787807814454e-17 0.83205029433784372 -0.55470019622522926 -0.96362411165943151 0.14824986333222026 0.22237479499833032 100
+2 -66.815310478106099 -108.6306209562122 -225.44593143431831 0.2672612419124244 0.53452248382484879 0.80178372573727319 1.3877787807814454e-17 0.83205029433784372 -0.55470019622522926 -0.96362411165943151 0.14824986333222026 0.22237479499833032 75
+1 17.5 -2.5 -12.5 0.6963106238227913 0.6963106238227913 0.17407765595569782 0.70710678118654757 -0.70710678118654757 0 0.12309149097933274 0.12309149097933274 -0.9847319278346619 
+2 17.5 -2.5 -12.5 -0.78446454055273618 -0.58834840541455213 -0.19611613513818404 0.59999999999999998 -0.79999999999999993 0 -0.15689290811054724 -0.11766968108291043 0.98058067569092022 50
+2 17.5 -2.5 -12.5 -0.78446454055273618 -0.58834840541455213 -0.19611613513818404 0.59999999999999998 -0.79999999999999993 0 -0.15689290811054724 -0.11766968108291043 0.98058067569092022 25
+1 200 0 0 1 0 -0 0 0 1 0 -1 0 
+1 40.089186286863665 105.17837257372733 95.267558860590952 0.2672612419124244 0.53452248382484879 0.80178372573727319 1.3877787807814454e-17 0.83205029433784372 -0.55470019622522926 -0.96362411165943151 0.14824986333222026 0.22237479499833032 
+Triangulations 10
+72 72 1 1.65978342181461e-13
+-66.8153104781061 -25.4255915224278 -280.915951056841 -83.5484675726636 -24.1153310195112 -276.211739027267 -99.773196156289 -25.373024834521 -269.965033622718 -114.996516061078 -29.160458577312 -262.365637825928 -128.755874415094 -35.3625529901433 -253.644455432702 -140.633200077323 -43.7908605726923 -244.066475156926 -150.267606517734 -54.1892914639926 -233.922719082589 -157.366357171881 -66.2418946032721 -223.52140010502 -161.713760093277 -79.5824577430552 -213.178557038033 -163.177721644049 -93.8056346229902 -203.208451934485 -161.713760093277 -108.479261210855 -193.914021392833 -157.366357171881 -123.157486787991 -185.577671981874 -150.267606517734 -137.394320897777 -178.452699460066 -140.633200077323 -150.757184539973 -172.755592512072 -128.755874415094 -162.840053864746 -168.659454849633 -114.996516061078 -173.27579700189 -166.288745542876 -99.7731961562891 -181.747329176924 -165.715497394449 -83.5484675726637 -187.997247171511 -166.957128259267 -66.8153104781062 -191.835650389997 -169.975911811795 -50.0821533835488 -193.145910892913 -174.68012384137 -33.8574247999234 -191.888217077903 -180.926829245918 -18.6341048951347 -188.100783335113 -188.526225042709 -4.87474654111818 -181.898688922281 -197.247407435935 7.00257912111068 -173.470381339732 -206.825387711711 16.6369855615218 -163.071950448432 -216.969143786048 23.7357362156682 -151.019347309152 -227.370462763616 28.0831391370648 -137.678784169369 -237.713305830604 29.5471006878371 -123.455607289434 -247.683410934151 28.0831391370649 -108.78198070157 -256.977841475804 23.7357362156684 -94.1037551244337 -265.314190886762 16.6369855615221 -79.8669210146477 -272.439163408571 7.00257912111104 -66.5040573724516 -278.136270356564 -4.87474654111773 -54.4211880476783 -282.232408019004 -18.6341048951342 -43.9854449105342 -284.603117325761 -33.8574247999228 -35.5139127355006 -285.176365474187 -50.0821533835482 -29.2639947409137 -283.93473460937 -66.815310478106 -46.2268488808736 -267.048446151211 -79.3651782990241 -45.2441535036862 -263.520287129029 -91.5337247367431 -46.1874238649436 -258.835258075618 -102.951214665335 -49.0279991720368 -253.135711228025 -113.270733430847 -53.6795699816602 -246.594824433106 -122.178727677519 -60.000800668572 -239.411339226274 -129.404532507827 -67.7996238370472 -231.803522170521 -134.728595498437 -76.8390761915069 -224.002532937345 -137.989147689484 -86.8444985463442 -216.245400637104 -139.087118852563 -97.5118812062954 -208.767821809443 -137.989147689484 -108.517101147194 -201.796998903204 -134.728595498437 -119.525770330046 -195.544736844985 -129.404532507827 -130.203395912386 -190.201007453629 -122.178727677519 -140.225543644033 -185.928177242634 -113.270733430847 -149.287695637613 -182.856073995804 -102.951214665335 -157.114502990471 -181.078042015736 -91.5337247367432 -163.468152121746 -180.648105904417 -79.3651782990242 -168.155590617686 -181.57932905303 -66.8153104781061 -171.03439303155 -183.843416717426 -54.265442657188 -172.017088408738 -187.371575739607 -42.0968962194689 -171.07381804748 -192.056604793018 -30.6794062908774 -168.233242740387 -197.756151640611 -20.359887525365 -163.581671930764 -204.297038435531 -11.4518932786934 -157.260441243852 -211.480523642362 -4.22608844838504 -149.461618075377 -219.088340698115 1.09797454222478 -140.422165720917 -226.889329931292 4.35852673327223 -130.41674336608 -234.646462231532 5.45649789635139 -119.749360706129 -242.124041059193 4.3585267332723 -108.74414076523 -249.094863965432 1.0979745422249 -97.7354715823781 -255.347126023651 -4.22608844838484 -87.0578460000386 -260.690855415008 -11.4518932786931 -77.0356982683915 -264.963685626003 -20.3598875253647 -67.9735462748115 -268.035788872832 -30.679406290877 -60.1467389219535 -269.8138208529 -42.0968962194685 -53.7930897906782 -270.24375696422 -54.2654426571875 -49.105651294738 -269.312533815607 100 0 98.4807753012208 17.364817766693 93.9692620785908 34.2020143325669 86.6025403784439 50 76.6044443118978 64.2787609686539 64.278760968654 76.6044443118978 50 86.6025403784438 34.2020143325669 93.9692620785908 17.364817766693 98.4807753012208 0 100 -17.364817766693 98.4807753012208 -34.2020143325669 93.9692620785908 -50 86.6025403784439 -64.2787609686539 76.6044443118979 -76.6044443118978 64.278760968654 -86.6025403784438 50.0000000000001 -93.9692620785908 34.202014332567 -98.4807753012208 17.3648177666932 -100 1.4210854715202e-13 -98.4807753012208 -17.3648177666929 -93.9692620785909 -34.2020143325667 -86.602540378444 -49.9999999999998 -76.604444311898 -64.2787609686538 -64.2787609686541 -76.6044443118977 -50.0000000000002 -86.6025403784437 -34.2020143325671 -93.9692620785908 -17.3648177666933 -98.4807753012208 -2.8421709430404e-13 -100 17.3648177666927 -98.4807753012209 34.2020143325666 -93.969262078591 49.9999999999997 -86.602540378444 64.2787609686536 -76.604444311898 76.6044443118976 -64.2787609686542 86.6025403784437 -50.0000000000004 93.9692620785907 -34.2020143325673 98.4807753012207 -17.3648177666935 75.0000000000002 -8.5265128291212e-14 73.8605814759158 13.0236133250197 70.4769465589433 25.6515107494251 64.9519052838331 37.4999999999999 57.4533332339235 48.2090707264904 48.2090707264906 57.4533332339233 37.5000000000002 64.9519052838328 25.6515107494253 70.476946558943 13.02361332502 73.8605814759155 1.84741111297626e-13 74.9999999999999 -13.0236133250196 73.8605814759155 -25.651510749425 70.476946558943 -37.4999999999998 64.9519052838328 -48.2090707264902 57.4533332339233 -57.4533332339231 48.2090707264904 -64.9519052838327 37.5 -70.4769465589429 25.6515107494252 -73.8605814759154 13.0236133250198 -74.9999999999998 4.2632564145606e-14 -73.8605814759154 -13.0236133250197 -70.476946558943 -25.6515107494251 -64.9519052838328 -37.4999999999999 -57.4533332339233 -48.2090707264904 -48.2090707264904 -57.4533332339233 -37.5 -64.9519052838329 -25.6515107494251 -70.4769465589431 -13.0236133250198 -73.8605814759156 -2.8421709430404e-14 -75.0000000000001 13.0236133250197 -73.8605814759157 25.6515107494251 -70.4769465589433 37.4999999999999 -64.9519052838331 48.2090707264904 -57.4533332339236 57.4533332339234 -48.2090707264907 64.9519052838329 -37.5000000000003 70.4769465589432 -25.6515107494255 73.8605814759157 -13.0236133250202 3 40 39 51 15 52 3 39 2 7 8 44 7 44 43 4 40 3 4 41 40 33 68 32 33 69 68 5 41 4 5 42 41 14 15 51 14 51 50 6 7 43 6 42 5 6 43 42 60 24 25 34 69 33 34 70 69 13 50 49 59 23 24 13 14 50 59 24 60 61 25 26 71 70 34 61 60 25 58 22 23 58 23 59 35 71 34 12 49 48 12 13 49 62 26 27 62 61 26 57 21 22 57 22 58 63 62 27 63 27 28 56 20 21 56 21 57 36 71 35 36 72 71 36 37 72 11 12 48 64 28 29 11 48 47 64 63 28 55 20 56 55 19 20 65 64 29 54 18 19 54 19 55 10 47 46 10 11 47 30 65 29 1 38 37 1 37 36 66 65 30 53 18 54 53 17 18 31 66 30 67 66 31 9 46 45 9 10 46 52 17 53 52 16 17 2 39 38 2 38 1 32 67 31 15 16 52 8 9 45 68 67 32 8 45 44 
+135 135 1 0.617269495737421
+-66.8153104781061 -25.4255915224278 -280.915951056841 -66.8153104781061 -25.4255915224278 -280.915951056841 -83.5484675726636 -24.1153310195112 -276.211739027267 -99.773196156289 -25.373024834521 -269.965033622718 -114.996516061078 -29.160458577312 -262.365637825928 -128.755874415094 -35.3625529901433 -253.644455432702 -140.633200077323 -43.7908605726923 -244.066475156926 -150.267606517734 -54.1892914639926 -233.922719082589 -157.366357171881 -66.2418946032721 -223.52140010502 -161.713760093277 -79.5824577430552 -213.178557038033 -163.177721644049 -93.8056346229902 -203.208451934485 -161.713760093277 -108.479261210855 -193.914021392833 -157.366357171881 -123.157486787991 -185.577671981874 -150.267606517734 -137.394320897777 -178.452699460066 -140.633200077323 -150.757184539973 -172.755592512072 -128.755874415094 -162.840053864746 -168.659454849633 -114.996516061078 -173.27579700189 -166.288745542876 -99.7731961562891 -181.747329176924 -165.715497394449 -83.5484675726637 -187.997247171511 -166.957128259267 -66.8153104781062 -191.835650389997 -169.975911811795 -50.0821533835488 -193.145910892913 -174.68012384137 -33.8574247999234 -191.888217077903 -180.926829245918 -18.6341048951347 -188.100783335113 -188.526225042709 -4.87474654111818 -181.898688922281 -197.247407435935 7.00257912111068 -173.470381339732 -206.825387711711 16.6369855615218 -163.071950448432 -216.969143786048 23.7357362156682 -151.019347309152 -227.370462763616 28.0831391370648 -137.678784169369 -237.713305830604 29.5471006878371 -123.455607289434 -247.683410934151 28.0831391370649 -108.78198070157 -256.977841475804 23.7357362156684 -94.1037551244337 -265.314190886762 16.6369855615221 -79.8669210146477 -272.439163408571 7.00257912111104 -66.5040573724516 -278.136270356564 -4.87474654111773 -54.4211880476783 -282.232408019004 -18.6341048951342 -43.9854449105342 -284.603117325761 -33.8574247999228 -35.5139127355006 -285.176365474187 -50.0821533835482 -29.2639947409137 -283.93473460937 -20.3233398741743 67.5583496854358 -141.440039245046 -20.3233398741743 67.5583496854358 -141.440039245046 -35.1855262004392 77.7035384339573 -122.572048934072 -48.6971017063958 85.5659924533034 -99.9755629876303 -60.3109095633921 90.827318421781 -74.5656354335556 -69.556643827254 93.2744567720475 -47.3712517791741 -76.0598946716704 92.8083096262563 -19.4936598183435 -79.5573102686927 89.4477538055348 7.93822585263177 -79.9072613297378 83.3288764053193 33.8135396976741 -77.5167641728392 75.6661584208742 54.9024230078599 -73.2374600487666 67.2365406565743 71.5036775687694 -67.7578354967252 58.5988160312175 84.1360778620306 -61.6071971021387 50.1323916335827 93.399221874224 -55.17556563886 42.0781423884772 99.8896930015315 -48.7388800846726 34.5749815850854 104.155593998349 -41.7644254490259 26.9200061348011 106.877677256899 -34.3321634064522 19.2009798395967 108.024734267422 -26.5273043640062 11.5064008402688 107.583614094949 -18.4393305294195 3.92448699093632 105.559374153933 -10.1609700033356 -3.45783555299158 101.975222225309 -1.78713365759029 -10.5559289376054 96.8722503807827 6.58617301183938 -17.2884139780553 90.3089638648638 14.8629505816812 -23.5781031656799 82.3606103359952 25.5847810319654 -31.1517610854722 69.7679202140274 36.9688872129791 -38.3875287424818 53.1745661180107 47.3532434132246 -44.0845718143738 34.4253136045972 56.4702938133358 -48.0961044053576 14.0032423680875 64.0851350795899 -50.3187682649458 -7.56546725857611 70.0015687134911 -50.6952958419625 -29.7250914861143 74.0671561605332 -49.2159857988918 -51.9046814465653 76.1771464318613 -45.9189529695317 -73.5327738493182 76.2771750425701 -40.8891463197232 -94.0521148913876 74.3646647277448 -34.2561602136706 -112.934018056297 70.4888918464067 -26.1908953791826 -129.691985868896 65.4036338933146 -17.8786297904701 -142.600016411378 59.6230083497372 -9.69229948335874 -152.222835465514 53.528373648904 -1.87170173475039 -159.126687656614 47.39181209029 5.44193016641362 -163.834969026814 40.7086194880131 12.9320315167513 -167.062604019058 33.5530107685251 20.5154269008719 -168.773750677588 26.0044469030168 28.1079049000452 -168.949407212248 18.1467525162495 35.6251532357201 -167.587623007879 10.0671850382717 42.9836950330629 -164.703520285338 1.85546573582257 50.1018158075777 -160.329126173601 -6.39721661645979 56.9004708808912 -154.513017057726 -13.4071402034809 62.3956703166524 -148.454120452686 -23.615004462056 -64.586253346542 17.6300532161252 -29.009902385954 -61.1939812514149 20.1597173165064 -34.9880216893461 -57.7257904899999 21.7960139557403 -41.4383707111624 -54.1158301572543 22.5063167604849 -48.047997153028 -50.4592292690093 22.2379809934335 -54.1669555674689 -47.0798334510796 21.1220432090507 -59.7589921082537 -43.9982887249958 19.3520134823694 -64.8865235104902 -41.1981153358782 17.0566785916219 -71.0612883280843 -37.9100781558483 13.3518439767453 -75.8290514087411 -35.4955498492353 9.70207743510968 -81.3803608128641 -32.9311767839816 4.45839451219417 -86.8095492185451 -30.8540237583208 -1.86578023339614 -91.504364938426 -29.6119482005143 -8.44064584847071 -95.5887140334666 -29.1633807999117 -15.1100911550616 -98.9796456750289 -29.418761209448 -21.3866567995678 -102.724447257937 -30.5958582498838 -29.1535718421494 -106.377877012087 -32.9408426023242 -37.6158839341697 -109.553573630587 -36.2355933729998 -45.7121955785007 -112.331994542397 -40.368187691758 -53.4105544494629 -114.756424008461 -45.2558375522077 -60.7009318693995 -117.443168108153 -52.8399371290984 -69.7587551094942 -119.623963487137 -62.790420160154 -79.0215044479946 -120.462859312851 -70.9507526355449 -85.0213457209572 -120.335278752761 -80.5526321709034 -90.5370522289084 -119.668251389871 -85.9023486069992 -92.9070773357592 -118.187485076373 -92.2850797175821 -95.0288303012165 -116.378861706727 -97.2728988179204 -96.0758006310156 -114.382223865994 -101.282423794925 -96.4451327921304 -112.133720795134 -104.755808466805 -96.3368525767004 -109.401453386115 -108.039293558505 -95.7533114386424 -106.643883919347 -110.638203360024 -94.8333887760415 -104.143222818954 -112.536950919873 -93.7948816450386 -101.08251619837 -114.400347580557 -92.3250301583427 -97.8840965362817 -115.912305919513 -90.6066511098729 -93.9212828113656 -117.286755951375 -88.2743686229117 -89.70074191771 -118.252094756809 -85.5920891133436 -84.4073553376621 -118.863644023118 -81.9937787802057 -77.046745623355 -118.801498937649 -76.6351813713114 -66.7091584705236 -117.249618090693 -68.5235877941795 -56.0019755027259 -114.126133203767 -59.45601641046 -42.8851767117907 -108.398097845665 -47.3166375408164 -29.7220271593066 -100.385601686676 -33.4054792397095 -18.8151484287358 -90.9746030635084 -18.7333275909045 -15.7685988483331 -87.2089827221248 -13.049273809458 -13.4651352372019 -83.049598096038 -6.80589983557332 -12.614831921392 -79.81852689937 -1.97740214405515 -12.6856825931079 -77.0008060440776 2.18698737320632 -13.3460744639715 -74.7934810382628 5.37767943676456 -14.6865704867699 -72.4348160589257 8.6584385189762 -16.7515671724958 -70.0155003182394 11.8064617072594 -18.4254196405347 -68.4637193244915 13.6684561861196 -20.875812277194 -66.5124362699467 15.7956136581649 0 0 6.28318530717959 0 0.174532925199433 0 0.349065850398866 0 0.523598775598299 0 0.698131700797732 0 0.872664625997165 0 1.0471975511966 0 1.22173047639603 0 1.39626340159546 0 1.5707963267949 0 1.74532925199433 0 1.91986217719376 0 2.0943951023932 0 2.26892802759263 0 2.44346095279206 0 2.61799387799149 0 2.79252680319093 0 2.96705972839036 0 3.14159265358979 0 3.31612557878922 0 3.49065850398866 0 3.66519142918809 0 3.83972435438752 0 4.01425727958696 0 4.18879020478639 0 4.36332312998582 0 4.53785605518525 0 4.71238898038469 0 4.88692190558412 0 5.06145483078355 0 5.23598775598299 0 5.41052068118242 0 5.58505360638185 0 5.75958653158128 0 5.93411945678072 0 6.10865238198015 0 0 173.957025235878 6.28318530717958 173.957025235877 0.201575822238879 190.535817917975 0.403151644497022 209.244850609485 0.604727466740452 229.326493309338 0.806303288942124 249.967531601463 1.00787911114277 270.332098122658 1.20945493337517 289.595521339622 1.41103075561639 306.977720976516 1.5924489956323 320.429436598651 1.75572541169211 330.377924241926 1.90267418610797 337.353810447214 2.0349280830181 341.899181637182 2.15395659018577 344.516884275958 2.26108224660634 345.646882700112 2.36820790301701 345.601649666387 2.47533355944112 344.381703778192 2.58245921590188 342.001031646771 2.68958487241637 338.486927527655 2.79671052899083 333.879680391699 2.90383618561884 328.232112019353 3.01096184228298 321.608971410739 3.11808749895964 314.086192449228 3.26092170784184 302.806817695584 3.42161019276766 288.677386280077 3.58229867761381 273.374679083942 3.74298716239411 257.292974555001 3.90367564714655 240.846622314493 4.06436413194624 224.459367190358 4.22505261675518 208.553431330417 4.38574110160767 193.538635633286 4.54642958656816 179.801840449197 4.70711807166649 167.696978092757 4.86780655683732 157.5359337259 5.01242619344128 150.270485402991 5.14258386626291 145.385906151398 5.25972577167464 142.401935521473 5.36515348644875 140.896147764946 5.47058120115759 140.525751767202 5.57600891583603 141.294860677533 5.68143663051811 143.194933771424 5.78686434522856 146.2048712861 5.89229205997901 150.29124872518 5.99771977477058 155.408688034393 6.10314748960075 161.500361524681 6.19316639838097 167.422112982515 2.95089202148316 229.982840820351 2.88665220382334 232.382482914584 2.81736720919716 233.950545281245 2.74349756607112 234.725731183664 2.66789572780876 234.698622350319 2.59746562795577 233.974884217239 2.53241907840191 232.708323498609 2.47202502990956 230.994326562674 2.39820673250917 228.13110494863 2.34039336589454 225.221162918442 2.27237235442984 220.903928502628 2.20564928762713 215.492581471577 2.14868138862969 209.630136254911 2.10078771844928 203.430864697981 2.06330136255055 197.355645338105 2.02588908273361 189.498234102258 1.99557223857738 180.483422950835 1.97645095415472 171.382073048191 1.96741617387325 162.25812538722 1.96766333997584 153.15230464393 1.98164827611679 141.117955071217 2.01617878364523 127.789634409663 2.05490540363922 118.392973796197 2.11147366177377 108.872246922485 2.14847722974806 104.290726206438 2.19866443339788 99.5735773658124 2.24351469887844 96.5514070675913 2.28422087040572 94.6457252107153 2.32392950900475 93.4768780463363 2.36668418390818 92.919884408283 2.40567060725024 93.005279146097 2.43838412252273 93.4913437922432 2.47580243510979 94.4918276346539 2.51246482084195 95.9162338746336 2.55514952769549 98.1106520891657 2.59794006890928 100.873251852584 2.64850023740579 104.846148756343 2.71427420988265 111.143008590493 2.79982271985911 121.239103896191 2.88191115657184 133.040522980925 2.97495975911459 149.341055020994 3.05966807318566 168.295654398392 3.11827992565562 188.004923126202 3.12941659274989 195.389338306804 3.13156348421453 203.234085099687 3.12422908715649 209.05982929015 3.11010420209174 213.885968544504 3.09335935908897 217.447581208065 3.06960626056014 220.98053727968 3.03900270883492 224.245856120386 3.01628412343262 226.120878932693 2.98473373838955 228.214508861572 38 1 3 40 3 4 40 38 3 41 4 5 41 40 4 42 5 6 42 41 5 43 6 7 43 42 6 44 7 8 44 43 7 45 8 9 45 9 10 45 44 8 46 10 11 46 45 10 47 11 12 47 46 11 48 47 12 103 12 13 104 103 13 102 48 12 102 12 103 105 13 14 105 104 13 106 105 14 107 106 14 49 102 101 49 48 102 49 101 100 108 107 14 109 14 15 109 108 14 110 109 15 111 110 15 50 49 100 50 98 97 50 99 98 50 100 99 112 111 15 113 15 16 113 112 15 114 113 16 51 96 95 51 97 96 51 50 97 115 114 16 116 115 16 117 116 16 52 51 95 52 94 93 52 95 94 17 117 16 118 117 17 119 118 17 53 52 93 53 93 92 120 119 17 54 53 92 54 91 90 54 92 91 121 17 18 121 120 17 122 121 18 55 54 90 55 89 88 55 90 89 123 18 19 123 122 18 56 55 88 56 88 87 124 123 19 57 56 87 57 87 86 125 19 20 125 124 19 58 85 84 58 86 85 58 57 86 126 125 20 127 126 20 127 20 21 59 133 132 59 134 133 59 135 134 59 84 135 59 58 84 60 129 128 60 130 129 60 131 130 60 132 131 60 59 132 61 127 21 61 60 128 61 128 127 62 21 22 62 61 21 63 62 22 63 22 23 64 23 24 64 63 23 65 24 25 65 64 24 66 25 26 66 65 25 67 26 27 67 66 26 68 27 28 68 67 27 69 68 28 70 28 29 70 69 28 71 29 30 71 70 29 72 30 31 72 71 30 73 31 32 73 72 31 74 73 32 75 32 33 75 74 32 76 33 34 76 75 33 77 76 34 78 34 35 78 77 34 79 78 35 80 35 36 80 79 35 81 36 37 81 80 36 82 81 37 83 37 2 83 82 37 39 83 2 
+134 134 1 0.285397643119074
+-15.7008382389641 56.0020955974101 -113.705029433785 -15.7008382389641 56.0020955974101 -113.705029433785 -26.15234778884 63.1675721644597 -100.560897502478 -35.7419813011805 68.8504258208211 -84.9337780785615 -44.129878155887 72.8492538575074 -67.3775028064806 -51.0187677823276 75.0223361374071 -48.5142734203172 -56.1645050526181 75.2926577161826 -29.0126106542571 -59.3847228870057 73.6506382840889 -9.56366158833183 -60.5652954194041 70.1544716961558 9.14329489299404 -59.6643826657913 64.9280635576406 26.4452764326035 -57.0987666580374 58.8968618542912 40.3076192149857 -53.4294430847669 52.5406890590679 51.0550161027971 -49.0972085531216 46.1944893354701 59.1108768706067 -44.4333424766111 40.0783971151619 64.9197814457979 -39.1184755100888 33.6758483083243 69.2705088070589 -33.8454320444925 27.7494338100392 71.8839929378139 -28.758849752436 22.3456247739376 73.1528999139946 -23.4021849567436 16.9316617187845 73.3820929518374 -17.8291688994329 11.5618506297938 72.5692730785572 -12.0957029829553 6.29005461586162 70.7225934683758 -6.25929803849168 1.16915362342743 67.8605776602579 -0.378497450506579 -3.7494859878304 64.0119337533488 5.48771007595662 -8.41652668692407 59.2152664438707 13.1850118517501 -14.1673812905526 51.4294777552111 21.5179016408397 -19.8761997788089 40.9331925518778 29.3243252252944 -24.6559270855357 28.8264074409663 36.4282825691065 -28.3988016770436 15.3820764317496 42.6696111170697 -31.020438424118 0.903309228194225 47.9075967460911 -32.4617311103343 -14.2834625430266 52.0241462410971 -32.6901850136309 -29.835844909864 54.9264497703497 -31.7006495173688 -45.4032010119227 56.5490733332302 -29.5154342337651 -60.6345563978594 56.8554340051248 -26.1838060216367 -75.1865119339515 55.8386247192184 -21.7808782384584 -88.7309859230394 53.5215699900466 -16.4059172691496 -100.962610883587 49.9565090679337 -10.180104511812 -111.605618224486 45.7467859202098 -3.96505935554597 -119.626906258655 41.2123302056887 2.02704978893822 -125.457519978507 36.0407250447429 8.30492495168059 -129.882599985693 30.3085190393574 14.7756428424864 -132.836647527374 24.1005586428761 21.3434257689438 -134.275937647279 17.5087322873698 27.911059310092 -134.179166389846 10.6306102776736 34.3813312561279 -132.547766135205 3.56800058398993 40.6584705153853 -129.4058843975 -3.57455809020503 46.6495646902995 -124.800026400377 -9.68038132273777 51.4898632858793 -119.737927852565 -66.815310478106 -46.2268488808736 -267.048446151211 -66.815310478106 -46.2268488808736 -267.048446151211 -79.3651782990241 -45.2441535036862 -263.520287129029 -91.5337247367431 -46.1874238649436 -258.835258075618 -102.951214665335 -49.0279991720368 -253.135711228025 -113.270733430847 -53.6795699816602 -246.594824433106 -122.178727677519 -60.000800668572 -239.411339226274 -129.404532507827 -67.7996238370472 -231.803522170521 -134.728595498437 -76.8390761915069 -224.002532937345 -137.989147689484 -86.8444985463442 -216.245400637104 -139.087118852563 -97.5118812062954 -208.767821809443 -137.989147689484 -108.517101147194 -201.796998903204 -134.728595498437 -119.525770330046 -195.544736844985 -129.404532507827 -130.203395912386 -190.201007453629 -122.178727677519 -140.225543644033 -185.928177242634 -113.270733430847 -149.287695637613 -182.856073995804 -102.951214665335 -157.114502990471 -181.078042015736 -91.5337247367432 -163.468152121746 -180.648105904417 -79.3651782990242 -168.155590617686 -181.57932905303 -66.8153104781061 -171.03439303155 -183.843416717426 -54.265442657188 -172.017088408738 -187.371575739607 -42.0968962194689 -171.07381804748 -192.056604793018 -30.6794062908774 -168.233242740387 -197.756151640611 -20.359887525365 -163.581671930764 -204.297038435531 -11.4518932786934 -157.260441243852 -211.480523642362 -4.22608844838504 -149.461618075377 -219.088340698115 1.09797454222478 -140.422165720917 -226.889329931292 4.35852673327223 -130.41674336608 -234.646462231532 5.45649789635139 -119.749360706129 -242.124041059193 4.3585267332723 -108.74414076523 -249.094863965432 1.0979745422249 -97.7354715823781 -255.347126023651 -4.22608844838484 -87.0578460000386 -260.690855415008 -11.4518932786931 -77.0356982683915 -264.963685626003 -20.3598875253647 -67.9735462748115 -268.035788872832 -30.679406290877 -60.1467389219535 -269.8138208529 -42.0968962194685 -53.7930897906782 -270.24375696422 -54.2654426571875 -49.105651294738 -269.312533815607 -22.2864273634798 -47.9648205226098 -2.24220467505033 -24.4012506975562 -46.557797906447 -1.17173881126472 -26.7591109772225 -45.1995399293933 -0.418292057057864 -29.3260653053367 -43.8729869733416 0.0224904104707955 -32.0351144673397 -42.5866519711117 0.146361916534837 -34.6897352127164 -41.4087440370025 -0.0250214194525966 -37.9679871091143 -40.0451150014351 -0.60083769088918 -41.3392128391102 -38.7387862395033 -1.59395083483286 -44.4612057385451 -37.6196675565716 -2.87447840889123 -48.2609945155088 -36.39591905645 -4.91638206633261 -52.1002173490519 -35.3574885454383 -7.55462201153391 -55.1217491942948 -34.7272235169081 -10.0755905380922 -58.2901589522796 -34.3050056113102 -13.1869689750541 -61.4633690248443 -34.213103102464 -16.8444660330036 -64.2692959516993 -34.5093370691993 -20.5980527290128 -66.7495015010916 -35.1754034210909 -24.3919261552404 -68.9381654584316 -36.1940274613222 -28.1843455811586 -71.4459138248419 -38.0741764539622 -33.1830132480231 -73.7443262264718 -40.8674410502666 -38.6551045773484 -75.4940486033119 -44.3483597547277 -43.8897654746452 -76.6534823422074 -48.5621360553353 -48.8636323445793 -77.0482239734598 -53.1303440341735 -53.1000282921383 -76.7379777937274 -57.0754558821442 -55.9767291108246 -76.4061164945813 -58.7938425396278 -57.017880049682 -75.9682730815984 -60.4304487807114 -57.8886231931889 -75.0135518414438 -62.9936011576077 -59.0027125667279 -73.8631613071862 -65.2269642568203 -59.6981790068215 -72.515103840102 -67.2242148052284 -60.0628180084393 -71.0269460748299 -68.9531410939977 -60.1337420604279 -69.4720247510213 -70.3968013049681 -59.9651652629317 -67.8625873353056 -71.6044565684176 -59.6061891116245 -66.4238864197703 -72.4906533578111 -59.1649617670997 -64.6590113659328 -73.375413455398 -58.5015445205678 -62.8126560037815 -74.1022249912955 -57.6907151823445 -60.5210650121961 -74.7680674691023 -56.5491723572055 -57.2959718283776 -75.3364883334365 -54.7365854351627 -53.950648133433 -75.5460428374445 -52.6473959588335 -49.7873068077512 -75.3517766317091 -49.7968596147923 -43.9338950130003 -74.3464030233711 -45.3713274012454 -37.9344192621972 -72.5181438755294 -40.3335100180792 -30.7004823416434 -69.2391388731129 -33.4376561658325 -23.6892694064044 -64.6037284452599 -25.2821232244669 -19.7012757088791 -60.6164585842255 -18.9205808886417 -18.2178719308714 -58.2391407790846 -15.3050888503074 -17.5857420686368 -56.3657771413405 -12.546236284659 -17.4868157734707 -54.5764206605305 -10.00474204745 -17.8032583705486 -53.1508589585831 -8.06945954976648 -18.4644050596923 -51.7856449514469 -6.31816713625769 -19.4199997641545 -50.504854994627 -4.79482944173709 -20.8732719405704 -49.078213100337 -3.27314228350858 -21.5551378668998 -48.5174632673474 -2.73513548959891 0 2191.25284262464 6.28318530717959 2191.25284262464 0.188535365466375 2202.82841860735 0.377070730941541 2215.83266433576 0.565606096417356 2229.80470391073 0.754141461875146 2244.2493623891 0.9426768273232 2258.65471504074 1.1312121927849 2272.51023015794 1.31974755826542 2285.32486248635 1.50828292374811 2296.64445610695 1.67796475267081 2305.22093375783 1.83067839869405 2311.42117237675 1.96812068011583 2315.64588238386 2.09181873339922 2318.28064937068 2.21551678668491 2319.76714341421 2.3268450346428 2320.10407080595 2.42704045780544 2319.59244864553 2.52723588096854 2318.31395580075 2.62743130413111 2316.28141648357 2.7276267272918 2313.51521854804 2.82782215044748 2310.04310896911 2.92801757359851 2305.89991551908 3.02821299675011 2301.12719744964 3.16180689428471 2293.86790813911 3.31210002901051 2284.62772411998 3.46239316374259 2274.45218357779 3.61268629848579 2263.57069959366 3.76297943323685 2252.22860111976 3.91327256798843 2240.68160187766 4.06356570273708 2229.19003518372 4.21385883748551 2218.01298462731 4.36415197223525 2207.40244286197 4.51444510697952 2197.59763025523 4.66473824171966 2188.81960159644 4.8150313764585 2181.26626240252 4.96532451119757 2175.10790657125 5.10058833246398 2170.87355383284 5.22232577160434 2168.1896954466 5.34406321074441 2166.61523418097 5.46580064988361 2166.1734746831 5.58753808902201 2166.87095570686 5.70927552816037 2168.69735336982 5.83101296729955 2171.62563392478 5.95275040643995 2175.61245382851 6.07448784558093 2180.5988012772 6.17883657638065 2185.61290802981 6.28318530717959 2000 0 2000 0.174532925199433 2000 0.349065850398866 2000 0.523598775598299 2000 0.698131700797732 2000 0.872664625997165 2000 1.0471975511966 2000 1.22173047639603 2000 1.39626340159546 2000 1.5707963267949 2000 1.74532925199433 2000 1.91986217719376 2000 2.0943951023932 2000 2.26892802759263 2000 2.44346095279206 2000 2.61799387799149 2000 2.79252680319093 2000 2.96705972839036 2000 3.14159265358979 2000 3.31612557878922 2000 3.49065850398866 2000 3.66519142918809 2000 3.83972435438752 2000 4.01425727958696 2000 4.18879020478639 2000 4.36332312998582 2000 4.53785605518525 2000 4.71238898038469 2000 4.88692190558412 2000 5.06145483078355 2000 5.23598775598299 2000 5.41052068118242 2000 5.58505360638185 2000 5.75958653158128 2000 5.93411945678072 2000 6.10865238198015 2000 2.93043396908087 2223.28919457267 2.89642387523164 2224.33435159411 2.85995058442315 2225.03430770081 2.82130086991154 2225.4107448892 2.78128709830523 2225.47361418383 2.74260274940947 2225.25634285161 2.69533139606102 2224.64740344213 2.64714202438972 2223.64840560466 2.60282817657799 2222.38550583397 2.54930376997572 2220.38692553223 2.49581545704875 2217.80061667313 2.45434493881637 2215.30869761053 2.41177977276453 2212.19293685197 2.37061356671161 2208.46146312643 2.3360966740555 2204.54363916954 2.30781523673033 2200.48288294275 2.28542283861992 2196.31276026645 2.26428453868698 2190.62970402847 2.25201538088333 2184.13493097198 2.25188892092698 2177.60960276744 2.26477820891996 2171.05940738169 2.29021891494358 2165.11542504108 2.32052670998118 2160.78309893619 2.33616775626278 2159.118498416 2.35254484799285 2157.66256647553 2.38142021811138 2155.65440515621 2.41035798689933 2154.21046349454 2.43999365574336 2153.21081006615 2.46941460130909 2152.62752123378 2.49764173685159 2152.40658472886 2.52487764095403 2152.47902731639 2.54789459147794 2152.74361310498 2.57474838126565 2153.27428879038 2.60149769910654 2154.02936067778 2.63312095676921 2155.2011768165 2.67521185369625 2157.21258818941 2.71644533542759 2159.66973008284 2.76495178706568 2163.17178316114 2.82881644394051 2168.82188777167 2.88977044068275 2175.4418007235 2.95740005785278 2184.65683698096 3.01483919883019 2195.54736713989 3.03949663673255 2203.84506979348 3.04315517788353 2208.41109862436 3.03937497188613 2211.79340050999 3.02951695455883 2214.81401966352 3.01680611181455 2217.04311961515 3.00027403441843 2219.00031606813 2.98072483236336 2220.65092104189 2.95432116801802 2222.24515388318 2.94263952511239 2222.79401603412 1 48 49 3 1 49 3 49 50 4 3 50 4 50 51 5 51 52 5 4 51 6 52 53 6 5 52 7 53 54 7 6 53 8 54 55 8 7 54 9 55 56 9 8 55 10 56 57 10 9 56 11 57 58 11 10 57 12 58 59 12 11 58 13 59 60 13 12 59 14 13 60 103 60 61 103 14 60 104 103 61 102 14 103 105 104 61 106 105 61 107 106 61 108 107 61 108 61 62 109 108 62 15 102 101 15 14 102 15 101 100 110 109 62 111 110 62 112 111 62 113 112 62 16 15 100 16 98 97 16 99 98 16 100 99 114 113 62 114 62 63 115 114 63 116 115 63 117 116 63 17 16 97 17 95 94 17 96 95 17 97 96 118 117 63 119 118 63 18 17 94 18 93 92 18 94 93 120 119 63 120 63 64 121 120 64 19 18 92 19 91 90 19 92 91 122 121 64 20 19 90 20 89 88 20 90 89 123 64 65 123 122 64 124 123 65 21 20 88 21 87 86 21 88 87 125 65 66 125 124 65 22 133 132 22 134 133 22 84 134 22 85 84 22 86 85 22 21 86 126 125 66 127 126 66 23 129 128 23 130 129 23 131 130 23 132 131 23 22 132 24 127 66 24 128 127 24 23 128 25 24 66 25 66 67 26 25 67 26 67 68 27 26 68 27 68 69 28 27 69 28 69 70 29 28 70 29 70 71 30 29 71 30 71 72 31 30 72 31 72 73 32 31 73 33 32 73 33 73 74 34 33 74 34 74 75 35 34 75 35 75 76 36 35 76 36 76 77 37 36 77 37 77 78 38 37 78 39 38 78 39 78 79 40 39 79 40 79 80 41 40 80 42 80 81 42 41 80 43 81 82 43 42 81 44 43 82 45 82 83 45 44 82 46 83 47 46 45 83 2 46 47 
+83 81 1 0.507480342377606
+-20.3233398741743 67.5583496854358 -141.440039245046 -20.3233398741743 67.5583496854358 -141.440039245046 -35.1855262004392 77.7035384339573 -122.572048934072 -48.6971017063958 85.5659924533034 -99.9755629876303 -60.3109095633921 90.827318421781 -74.5656354335556 -69.556643827254 93.2744567720475 -47.3712517791741 -76.0598946716704 92.8083096262563 -19.4936598183435 -79.5573102686927 89.4477538055348 7.93822585263177 -79.9072613297378 83.3288764053193 33.8135396976741 -77.5167641728392 75.6661584208742 54.9024230078599 -73.2374600487666 67.2365406565743 71.5036775687694 -67.7578354967252 58.5988160312175 84.1360778620306 -61.6071971021387 50.1323916335827 93.399221874224 -55.17556563886 42.0781423884772 99.8896930015315 -48.7388800846726 34.5749815850854 104.155593998349 -41.7644254490259 26.9200061348011 106.877677256899 -34.3321634064522 19.2009798395967 108.024734267422 -26.5273043640062 11.5064008402688 107.583614094949 -18.4393305294195 3.92448699093632 105.559374153933 -10.1609700033356 -3.45783555299158 101.975222225309 -1.78713365759029 -10.5559289376054 96.8722503807827 6.58617301183938 -17.2884139780553 90.3089638648638 14.8629505816812 -23.5781031656799 82.3606103359952 25.5847810319654 -31.1517610854722 69.7679202140274 36.9688872129791 -38.3875287424818 53.1745661180107 47.3532434132246 -44.0845718143738 34.4253136045972 56.4702938133358 -48.0961044053576 14.0032423680875 64.0851350795899 -50.3187682649458 -7.56546725857611 70.0015687134911 -50.6952958419625 -29.7250914861143 74.0671561605332 -49.2159857988918 -51.9046814465653 76.1771464318613 -45.9189529695317 -73.5327738493182 76.2771750425701 -40.8891463197232 -94.0521148913876 74.3646647277448 -34.2561602136706 -112.934018056297 70.4888918464067 -26.1908953791826 -129.691985868896 65.4036338933146 -17.8786297904701 -142.600016411378 59.6230083497372 -9.69229948335874 -152.222835465514 53.528373648904 -1.87170173475039 -159.126687656614 47.39181209029 5.44193016641362 -163.834969026814 40.7086194880131 12.9320315167513 -167.062604019058 33.5530107685251 20.5154269008719 -168.773750677588 26.0044469030168 28.1079049000452 -168.949407212248 18.1467525162495 35.6251532357201 -167.587623007879 10.0671850382717 42.9836950330629 -164.703520285338 1.85546573582257 50.1018158075777 -160.329126173601 -6.39721661645979 56.9004708808912 -154.513017057726 -13.4071402034809 62.3956703166524 -148.454120452686 40.0891862868637 188.383402007512 39.797539238068 40.0891862868637 188.383402007512 39.797539238068 23.3560291923062 189.693662510428 44.5017512676428 7.13130060868077 188.435968695418 50.7484566721911 -8.09201929610791 184.648534952628 58.3478524689813 -21.8513776501244 178.446440539796 67.0690348622077 -33.7287033123532 170.018132957247 76.6470151379833 -43.3631097527643 159.619702065947 86.7907712123205 -50.4618604069107 147.567098926667 97.192090189889 -54.8092633283073 134.226535786884 107.534933256877 -56.2732248790795 120.003358906949 117.505038360424 -54.8092633283073 105.329732319084 126.799468902077 -50.4618604069107 90.6515067419486 135.135818313035 -43.3631097527644 76.4146726321626 142.260790834843 -33.7287033123533 63.0518089899665 147.957897782837 -21.8513776501245 50.9689396651932 152.054035445276 -8.09201929610798 40.5331965280492 154.424744752034 7.13130060868068 32.0616643530156 154.99799290046 23.3560291923061 25.8117463584287 153.756362035643 40.0891862868635 21.973343139943 150.737578483114 56.822343381421 20.6630826370263 146.033366453539 73.0470719650464 21.9207764520362 139.786661048991 88.2703918698351 25.708210194827 132.187265252201 102.029750223852 31.9103046076583 123.466082858974 113.90707588608 40.3386121902073 113.888102583199 123.541482326492 50.7370430815076 103.744346508861 130.640232980638 62.789646220787 93.343027531293 134.987635902035 76.1302093605701 83.0001844643055 136.451597452807 90.3533862405051 73.0300793607581 134.987635902035 105.02701282837 63.7356488191055 130.640232980638 119.705238405506 55.3992994081471 123.541482326492 133.942072515292 48.2743268863385 113.907075886081 147.304936157488 42.5772199383448 102.029750223852 159.387805482261 38.4810822759056 88.2703918698356 169.823548619405 36.1103729691483 73.0470719650469 178.295080794439 35.5371248207221 56.8223433814216 184.544998789026 36.7787556855393 -8.88178419700125e-16 173.957025235878 6.28318530717958 173.957025235877 0.201575822238879 190.535817917975 0.403151644497022 209.244850609485 0.604727466740452 229.326493309338 0.806303288942124 249.967531601463 1.00787911114277 270.332098122658 1.20945493337517 289.595521339622 1.41103075561639 306.977720976516 1.5924489956323 320.429436598651 1.75572541169211 330.377924241926 1.90267418610797 337.353810447214 2.0349280830181 341.899181637182 2.15395659018577 344.516884275958 2.26108224660634 345.646882700112 2.36820790301701 345.601649666387 2.47533355944112 344.381703778192 2.58245921590188 342.001031646771 2.68958487241637 338.486927527655 2.79671052899083 333.879680391699 2.90383618561884 328.232112019353 3.01096184228298 321.608971410739 3.11808749895964 314.086192449228 3.26092170784184 302.806817695584 3.42161019276766 288.677386280077 3.58229867761381 273.374679083942 3.74298716239411 257.292974555001 3.90367564714655 240.846622314493 4.06436413194624 224.459367190358 4.22505261675518 208.553431330417 4.38574110160767 193.538635633286 4.54642958656816 179.801840449197 4.70711807166649 167.696978092757 4.86780655683732 157.5359337259 5.01242619344128 150.270485402991 5.14258386626291 145.385906151398 5.25972577167464 142.401935521473 5.36515348644875 140.896147764946 5.47058120115759 140.525751767202 5.57600891583603 141.294860677533 5.68143663051811 143.194933771424 5.78686434522856 146.2048712861 5.89229205997901 150.29124872518 5.99771977477058 155.408688034393 6.10314748960075 161.500361524681 6.19316639838097 167.422112982515 0 400 6.28318530717959 400 0.174532925199433 400 0.349065850398866 400 0.523598775598299 400 0.698131700797732 400 0.872664625997165 400 1.0471975511966 400 1.22173047639603 400 1.39626340159546 400 1.5707963267949 400 1.74532925199433 400 1.91986217719376 400 2.0943951023932 400 2.26892802759263 400 2.44346095279206 400 2.61799387799149 400 2.79252680319093 400 2.96705972839036 400 3.14159265358979 400 3.31612557878922 400 3.49065850398866 400 3.66519142918809 400 3.83972435438752 400 4.01425727958696 400 4.18879020478639 400 4.36332312998582 400 4.53785605518525 400 4.71238898038469 400 4.88692190558412 400 5.06145483078355 400 5.23598775598299 400 5.41052068118242 400 5.58505360638185 400 5.75958653158128 400 5.93411945678072 400 6.10865238198015 400 72 29 30 72 71 29 47 1 3 49 47 3 73 30 31 50 3 4 73 72 30 50 49 3 51 4 5 63 17 18 51 50 4 74 31 32 63 18 19 63 62 17 74 73 31 52 51 5 52 5 6 53 6 7 53 52 6 75 32 33 64 19 20 54 53 7 64 63 19 75 74 32 8 54 7 55 54 8 76 75 33 76 33 34 21 64 20 76 34 35 9 55 8 56 55 9 77 76 35 77 35 36 57 9 10 57 56 9 65 21 22 65 64 21 78 77 36 78 36 37 58 57 10 78 37 38 58 10 11 12 58 11 79 78 38 79 38 39 59 58 12 66 22 23 66 23 24 66 65 22 80 79 39 80 39 40 80 40 41 13 59 12 67 24 25 81 80 41 67 66 24 81 41 42 81 42 43 60 13 14 82 81 43 60 59 13 82 43 44 68 25 26 68 67 25 83 82 44 83 44 45 83 45 46 61 14 15 69 26 27 61 60 14 48 46 2 69 68 26 48 83 46 16 61 15 70 27 28 70 69 27 71 28 29 71 70 28 62 16 17 62 61 16 
+90 90 1 1.19015908239817e-13
+-20.3233398741743 67.5583496854358 -141.440039245046 -35.1855262004392 77.7035384339573 -122.572048934072 -48.6971017063958 85.5659924533034 -99.9755629876303 -60.3109095633921 90.827318421781 -74.5656354335556 -69.556643827254 93.2744567720475 -47.3712517791741 -76.0598946716704 92.8083096262563 -19.4936598183435 -79.5573102686927 89.4477538055348 7.93822585263177 -79.9072613297378 83.3288764053193 33.8135396976741 -77.5167641728392 75.6661584208742 54.9024230078599 -73.2374600487666 67.2365406565743 71.5036775687694 -67.7578354967252 58.5988160312175 84.1360778620306 -61.6071971021387 50.1323916335827 93.399221874224 -55.17556563886 42.0781423884772 99.8896930015315 -48.7388800846726 34.5749815850854 104.155593998349 -41.7644254490259 26.9200061348011 106.877677256899 -34.3321634064522 19.2009798395967 108.024734267422 -26.5273043640062 11.5064008402688 107.583614094949 -18.4393305294195 3.92448699093632 105.559374153933 -10.1609700033356 -3.45783555299158 101.975222225309 -1.78713365759029 -10.5559289376054 96.8722503807827 6.58617301183938 -17.2884139780553 90.3089638648638 14.8629505816812 -23.5781031656799 82.3606103359952 25.5847810319654 -31.1517610854722 69.7679202140274 36.9688872129791 -38.3875287424818 53.1745661180107 47.3532434132246 -44.0845718143738 34.4253136045972 56.4702938133358 -48.0961044053576 14.0032423680875 64.0851350795899 -50.3187682649458 -7.56546725857611 70.0015687134911 -50.6952958419625 -29.7250914861143 74.0671561605332 -49.2159857988918 -51.9046814465653 76.1771464318613 -45.9189529695317 -73.5327738493182 76.2771750425701 -40.8891463197232 -94.0521148913876 74.3646647277448 -34.2561602136706 -112.934018056297 70.4888918464067 -26.1908953791826 -129.691985868896 65.4036338933146 -17.8786297904701 -142.600016411378 59.6230083497372 -9.69229948335874 -152.222835465514 53.528373648904 -1.87170173475039 -159.126687656614 47.39181209029 5.44193016641362 -163.834969026814 40.7086194880131 12.9320315167513 -167.062604019058 33.5530107685251 20.5154269008719 -168.773750677588 26.0044469030168 28.1079049000452 -168.949407212248 18.1467525162495 35.6251532357201 -167.587623007879 10.0671850382717 42.9836950330629 -164.703520285338 1.85546573582257 50.1018158075777 -160.329126173601 -6.39721661645979 56.9004708808912 -154.513017057726 -13.4071402034809 62.3956703166524 -148.454120452686 -15.7008382389641 56.0020955974101 -113.705029433785 -26.15234778884 63.1675721644597 -100.560897502478 -35.7419813011805 68.8504258208211 -84.9337780785615 -44.129878155887 72.8492538575074 -67.3775028064806 -51.0187677823276 75.0223361374071 -48.5142734203172 -56.1645050526181 75.2926577161826 -29.0126106542571 -59.3847228870057 73.6506382840889 -9.56366158833183 -60.5652954194041 70.1544716961558 9.14329489299404 -59.6643826657913 64.9280635576406 26.4452764326035 -57.0987666580374 58.8968618542912 40.3076192149857 -53.4294430847669 52.5406890590679 51.0550161027971 -49.0972085531216 46.1944893354701 59.1108768706067 -44.4333424766111 40.0783971151619 64.9197814457979 -39.1184755100888 33.6758483083243 69.2705088070589 -33.8454320444925 27.7494338100392 71.8839929378139 -28.758849752436 22.3456247739376 73.1528999139946 -23.4021849567436 16.9316617187845 73.3820929518374 -17.8291688994329 11.5618506297938 72.5692730785572 -12.0957029829553 6.29005461586162 70.7225934683758 -6.25929803849168 1.16915362342743 67.8605776602579 -0.378497450506579 -3.7494859878304 64.0119337533488 5.48771007595662 -8.41652668692407 59.2152664438707 13.1850118517501 -14.1673812905526 51.4294777552111 21.5179016408397 -19.8761997788089 40.9331925518778 29.3243252252944 -24.6559270855357 28.8264074409663 36.4282825691065 -28.3988016770436 15.3820764317496 42.6696111170697 -31.020438424118 0.903309228194225 47.9075967460911 -32.4617311103343 -14.2834625430266 52.0241462410971 -32.6901850136309 -29.835844909864 54.9264497703497 -31.7006495173688 -45.4032010119227 56.5490733332302 -29.5154342337651 -60.6345563978594 56.8554340051248 -26.1838060216367 -75.1865119339515 55.8386247192184 -21.7808782384584 -88.7309859230394 53.5215699900466 -16.4059172691496 -100.962610883587 49.9565090679337 -10.180104511812 -111.605618224486 45.7467859202098 -3.96505935554597 -119.626906258655 41.2123302056887 2.02704978893822 -125.457519978507 36.0407250447429 8.30492495168059 -129.882599985693 30.3085190393574 14.7756428424864 -132.836647527374 24.1005586428761 21.3434257689438 -134.275937647279 17.5087322873698 27.911059310092 -134.179166389846 10.6306102776736 34.3813312561279 -132.547766135205 3.56800058398993 40.6584705153853 -129.4058843975 -3.57455809020503 46.6495646902995 -124.800026400377 -9.68038132273777 51.4898632858793 -119.737927852565 -76.2838742534622 130.939228840253 -93.9667587485192 111.778694102172 -109.080479967142 88.8318541473326 -121.013001528565 63.0279507337926 -129.281111045566 35.4119235839675 -133.54998800959 7.10209511914772 -133.646762485484 -20.7551164686755 -129.567515550891 -47.0316218948171 -122.45881895172 -68.4474841351715 -113.472254102881 -85.3061378374174 -103.489780767165 -98.134400978066 -93.1539565457555 -107.541168190908 -82.9108920653977 -114.132272778711 -73.0539321772548 -118.464315719776 -62.7093629585985 -121.228604336411 -51.995784231243 -122.393446237135 -41.0360264873239 -121.945486584357 -29.9557426455931 -119.88986120673 -18.8819674487744 -116.250137717206 -7.94166101839571 -111.068045311867 2.73974673485171 -104.402996347373 13.0397941569846 -96.331405182104 25.9766580485853 -83.5434679110357 39.1428971042896 -66.6928371688154 50.5141635805865 -47.6528812341667 59.79747364096 -26.9141698557147 66.7536402254006 -5.01104168753265 71.2034357713845 17.49216309457 73.0322100617622 40.0156431742928 72.1928442194208 61.9790748366653 68.7069647382289 82.8165641696147 62.6643862704207 101.991227477657 54.2207975271558 119.009024239309 44.7473177796394 132.117191221226 34.8711885850842 141.889210165808 25.031633358297 148.900105208362 15.520910354617 153.681387542279 5.49887808897302 156.959066371421 -4.92317166062503 158.696744017654 -15.6295050373708 158.875124071854 -26.5012312967644 157.492225674964 -37.4176230540425 154.56340551486 -48.257456926969 150.121187294764 -58.9003596865348 144.214900566898 -67.7428169755161 138.062061978265 -64.8437663704014 102.774193232797 -77.3008567177488 89.4262641571052 -88.1001359603225 73.5568493628891 -96.8588731277185 55.7283675437958 -103.266654913614 36.5726675477146 -107.096386853094 16.7686353894982 -108.212341645413 -2.98186575317497 -106.57496938627 -21.9788698641931 -102.24229923294 -39.5491151772043 -96.1634311327942 -53.6263908199919 -89.0743346658711 -64.5404239532975 -81.5235413915339 -72.7211892358082 -73.9009597789453 -78.6201597180231 -65.6154956276203 -83.0383442393962 -57.6962829557461 -85.6923499204162 -50.2784561103049 -86.9809310462165 -42.6624721193354 -87.2136776764053 -34.9247248388335 -86.3882551930828 -27.1428294991065 -84.5129431838114 -19.3948441675904 -81.6065523913332 -11.7584867696872 -77.698236028146 -4.31035552147475 -72.8271973485883 5.19892704887167 -64.9206915589569 15.1279141912262 -54.2616635467204 24.0276668354178 -41.9671651470054 31.6975352512734 -28.3143824665661 37.9645981128155 -13.6111248648827 42.6875611029523 1.81111477409721 45.7599424701708 17.6046337280685 47.1124737171351 33.4133585820396 46.7146612963724 48.8808730957907 44.5754741037695 63.6584538005116 40.7431412699716 77.4129321577544 35.3040648085826 89.8342060240789 28.3808716361023 100.642231071364 21.0094472760524 108.787887576893 13.5660418816497 114.708903799728 5.47003670370785 119.202593789974 -3.15873353359234 122.202443249691 -12.1925482719411 123.664049275881 -21.4976916016179 123.5657775994 -30.9364314856656 121.909082809145 -40.3690584296163 118.718486821653 -49.6559534209715 114.041215914787 -57.3960303933239 108.900630538478 65 20 21 65 64 20 51 5 6 51 6 52 43 44 88 43 88 87 66 65 21 22 66 21 67 66 22 50 5 51 29 75 28 29 76 75 42 43 87 42 87 86 68 67 22 4 5 50 23 68 22 49 4 50 69 68 23 57 10 11 24 69 23 56 9 10 56 10 57 58 57 11 58 11 12 70 69 24 58 12 13 48 3 4 48 4 49 25 70 24 55 8 9 41 42 86 55 9 56 59 13 14 30 76 29 71 70 25 30 77 76 47 3 48 59 58 13 60 14 15 2 3 47 40 41 86 60 59 14 40 86 85 31 78 77 54 8 55 26 72 71 26 71 25 61 60 15 31 77 30 61 15 16 61 16 17 39 40 85 46 2 47 39 85 84 38 39 84 62 17 18 62 61 17 32 78 31 1 46 90 32 79 78 32 80 79 1 2 46 27 73 72 27 72 26 53 7 8 37 38 84 53 8 54 37 84 83 33 80 32 63 18 19 33 81 80 74 73 27 63 62 18 36 37 83 45 1 90 36 83 82 45 90 89 35 36 82 35 82 81 34 81 33 64 19 20 34 35 81 64 63 19 52 6 7 44 45 89 52 7 53 44 89 88 28 74 27 28 75 74 
+104 102 1 0.227238537066723
+-23.615004462056 -64.586253346542 17.6300532161252 -230 -219.375 -33.9661956683608 -23.615004462056 -64.586253346542 17.6300532161252 -29.009902385954 -61.1939812514149 20.1597173165064 -34.9880216893461 -57.7257904899999 21.7960139557403 -41.4383707111624 -54.1158301572543 22.5063167604849 -48.047997153028 -50.4592292690093 22.2379809934335 -54.1669555674689 -47.0798334510796 21.1220432090507 -59.7589921082537 -43.9982887249958 19.3520134823694 -64.8865235104902 -41.1981153358782 17.0566785916219 -71.0612883280843 -37.9100781558483 13.3518439767453 -75.8290514087411 -35.4955498492353 9.70207743510968 -81.3803608128641 -32.9311767839816 4.45839451219417 -86.8095492185451 -30.8540237583208 -1.86578023339614 -91.504364938426 -29.6119482005143 -8.44064584847071 -95.5887140334666 -29.1633807999117 -15.1100911550616 -98.9796456750289 -29.418761209448 -21.3866567995678 -102.724447257937 -30.5958582498838 -29.1535718421494 -106.377877012087 -32.9408426023242 -37.6158839341697 -109.553573630587 -36.2355933729998 -45.7121955785007 -112.331994542397 -40.368187691758 -53.4105544494629 -114.756424008461 -45.2558375522077 -60.7009318693995 -117.443168108153 -52.8399371290984 -69.7587551094942 -119.623963487137 -62.790420160154 -79.0215044479946 -120.462859312851 -70.9507526355449 -85.0213457209572 -120.335278752761 -80.5526321709034 -90.5370522289084 -119.668251389871 -85.9023486069992 -92.9070773357592 -118.187485076373 -92.2850797175821 -95.0288303012165 -116.378861706727 -97.2728988179204 -96.0758006310156 -114.382223865994 -101.282423794925 -96.4451327921304 -112.133720795134 -104.755808466805 -96.3368525767004 -109.401453386115 -108.039293558505 -95.7533114386424 -106.643883919347 -110.638203360024 -94.8333887760415 -104.143222818954 -112.536950919873 -93.7948816450386 -101.08251619837 -114.400347580557 -92.3250301583427 -97.8840965362817 -115.912305919513 -90.6066511098729 -93.9212828113656 -117.286755951375 -88.2743686229117 -89.70074191771 -118.252094756809 -85.5920891133436 -84.4073553376621 -118.863644023118 -81.9937787802057 -77.046745623355 -118.801498937649 -76.6351813713114 -66.7091584705236 -117.249618090693 -68.5235877941795 -56.0019755027259 -114.126133203767 -59.45601641046 -42.8851767117907 -108.398097845665 -47.3166375408164 -29.7220271593066 -100.385601686676 -33.4054792397095 -18.8151484287358 -90.9746030635084 -18.7333275909045 -15.7685988483331 -87.2089827221248 -13.049273809458 -13.4651352372019 -83.049598096038 -6.80589983557332 -12.614831921392 -79.81852689937 -1.97740214405515 -12.6856825931079 -77.0008060440776 2.18698737320632 -13.3460744639715 -74.7934810382628 5.37767943676456 -14.6865704867699 -72.4348160589257 8.6584385189762 -16.7515671724958 -70.0155003182394 11.8064617072594 -18.4254196405347 -68.4637193244915 13.6684561861196 -20.875812277194 -66.5124362699467 15.7956136581649 -230 -219.375 -33.9661956683608 -230 -228.881716692235 -40.6087857661369 -230 -236.9709618013 -48.4257258369284 -230 -242.805639017784 -56.2410404649089 -230 -246.742884773844 -63.7184466407158 -230 -249.341225775738 -71.4392616329755 -230 -250.485261015954 -78.4504041091191 -230 -250.528239799038 -84.6996216675505 -230 -249.635421612559 -90.7940115327487 -230 -247.820195129222 -96.6421824310307 -230 -245.109781426772 -102.156435380393 -230 -241.544825781595 -107.254078821615 -230 -237.178788153464 -111.85866865821 -230 -232.07714150171 -115.901154609633 -230 -226.316389954833 -119.320915687053 -230 -219.982921557065 -122.066669263747 -230 -213.171712796046 -124.097240107716 -230 -205.984904338481 -125.382177844134 -230 -198.530269331998 -125.902213588185 -230 -190.91959724251 -125.649548900638 -230 -183.267017462987 -124.627972732992 -230 -175.687287832766 -122.852804608479 -230 -168.294073732698 -120.350664890989 -230 -161.198243562765 -117.159075586953 -230 -154.50620616313 -113.325897666546 -230 -148.318315110612 -108.908613342121 -230 -142.727363819678 -103.973464066811 -230 -137.817194015405 -98.5944571798348 -230 -133.66143844567 -92.8522560948285 -230 -130.322416686844 -86.8329706738959 -230 -127.850200601432 -80.6268659268985 -230 -126.281863462046 -74.3270084002804 -230 -125.6409240018 -68.0278705541424 -230 -125.936993728148 -61.8239140562802 -230 -127.165632789033 -55.8081732380633 -230 -129.308416552759 -50.070859954605 -230 -132.333211903178 -44.6980107706956 -230 -136.194659106859 -39.7701967592538 -230 -140.834852026189 -35.3613152601185 -230 -146.184206477942 -31.5374817179256 -230 -152.162503715443 -28.3560382170353 -230 -158.680093386308 -25.8646935814853 -230 -165.639237926228 -24.1008079350064 -230 -172.935578228335 -23.0908324498123 -230 -180.459698608994 -22.8499126856756 -230 -188.098767601865 -23.381661467602 -230 -195.738229974932 -24.6781047080235 -230 -203.263524597061 -26.7198009859576 -230 -210.561802393025 -29.4761330899293 -230 -215.050703054116 -31.5903877357607 6.28318530717959 62.8726216514981 6.28318530717959 325.962901541682 0 62.8726216514983 0.132737504726219 64.6127819482327 0.267036985217637 66.9409958839595 0.404726180432513 69.7378497195384 0.542828258176546 72.8241369611988 0.670856540856283 75.8548341270287 0.789869357667035 78.775697966021 0.902035692388418 81.6007391908959 1.0427855138446 85.2366896507324 1.15716153372049 88.2720249545422 1.29852798772423 92.146456360616 1.44765135336057 96.4236451874471 1.58751064808875 100.665225703764 1.71923910641869 104.913324662241 1.83699686318778 108.954578747351 1.97736367277356 114.108003327405 2.12661319274435 120.013253167237 2.26854963385678 126.030753266729 2.40518296271031 132.151503617121 2.53852774450195 138.358784209235 2.71439412740659 146.704917864164 2.91628139542095 156.086599934625 3.07039244803821 162.722468244561 3.24801437676881 169.353355375613 3.3483345617515 172.442393360579 3.47230912090536 175.452164357201 3.57488878994859 177.173266645363 3.6631235220419 178.038404681693 3.74576687485895 178.296858589009 3.83177202749808 177.97088307654 3.90805654907023 177.156320372074 3.97079888632238 176.108097505153 4.04141991400306 174.51514655344 4.10967062228413 172.558656162814 4.18825069894009 169.801226571977 4.26638190238265 166.532279155036 4.35829800412067 162.033922403653 4.4780614092663 155.172314710398 4.63625058006733 144.558983150269 4.79421329362162 132.543583375398 4.98938550858636 116.503111302354 5.20453176358166 98.734745296597 5.4372658041091 81.7642939755317 5.53332316421375 76.0441524758817 5.64575909134693 70.5655732662525 5.73986225170353 67.0505985741603 5.8280622829947 64.6316728643484 5.90159359369311 63.2253045265863 5.98447643021971 62.2457495522009 6.07361311942742 61.8248875292731 6.13253041814664 61.8598104024992 6.20793860013348 62.2168523604884 0 325.962901541682 6.09642312248465 332.858882247092 5.90966093778883 339.151204729253 5.74157497156104 344.116737173829 5.59029760195602 347.899649436389 5.43902023235273 350.942555516707 5.30287059971174 352.990644968196 5.18033593033589 354.241503931948 5.05780126096015 354.911424018845 4.93526659158393 354.990359044612 4.81273192220718 354.477125392034 4.69019725282976 353.379419587804 4.5676625834522 351.713702688751 4.44512791407435 349.504953699047 4.32259324469625 346.786295022753 4.20005857531789 343.598495603417 4.07752390593886 339.98935953699 3.95498923655867 336.013009269371 3.83245456717713 331.729074017442 3.70991989779468 327.201795565619 3.58738522841226 322.499064868542 3.46485055903111 317.691403934629 3.34231588965224 312.850908274846 3.21978122027609 308.050165776082 3.09724655090223 303.361168199128 2.97471188152948 298.854231607291 2.85217721215629 294.596941903239 2.72964254278146 290.653141288699 2.60710787340474 287.081970864157 2.48457320402707 283.936983753717 2.36203853464944 281.265342073779 2.23950386527117 279.107109706117 2.11696919589272 277.494651435667 1.99443452651226 276.452147620465 1.87189985713181 275.995231610133 1.74936518775661 276.130755313594 1.62683051839035 276.856686428963 1.50429584903201 278.162138911734 1.3817611796761 280.027536227478 1.25922651031531 282.424904931438 1.13669184094402 285.318294162916 1.01415717156087 288.664314760073 0.891622502169082 292.412789913802 0.769087832774656 296.507507610639 0.646553163383151 300.887063587299 0.524018493996868 305.485782156311 0.401483824614131 310.23470108645 0.278949155231658 315.062605756177 0.156414485848844 319.897097066138 0.0782072429236074 322.9527740632 104 3 4 104 55 3 103 4 5 103 104 4 102 5 6 102 103 5 101 102 6 100 6 7 100 101 6 99 7 8 99 100 7 98 8 9 98 99 8 97 9 10 97 98 9 96 10 11 96 97 10 95 11 12 95 96 11 94 12 13 94 95 12 93 13 14 93 94 13 92 14 15 92 93 14 91 15 16 91 92 15 90 16 17 90 91 16 89 17 18 89 90 17 88 18 19 88 89 18 87 88 19 86 19 20 86 87 19 85 20 21 85 86 20 84 21 22 84 85 21 83 22 23 83 84 22 82 83 23 81 23 24 81 82 23 80 81 24 80 24 25 79 80 25 79 25 26 78 79 26 77 78 26 77 26 27 76 77 27 76 27 28 76 28 29 75 76 29 75 29 30 74 75 30 74 30 31 73 74 31 73 31 32 73 32 33 72 33 34 72 34 35 72 73 33 71 35 36 71 72 35 70 36 37 70 37 38 70 71 36 69 38 39 69 70 38 68 39 40 68 69 39 67 40 41 67 68 40 66 41 42 66 67 41 65 66 42 64 42 43 64 65 42 63 43 44 63 64 43 62 63 44 61 44 45 61 62 44 60 45 46 60 61 45 59 46 47 59 60 46 58 47 48 58 48 49 58 59 47 57 49 50 57 50 51 57 58 49 56 51 52 56 52 53 56 53 54 56 57 51 2 56 54 2 54 1 
+83 81 1 0.332993148283988
+-15.7008382389641 56.0020955974101 -113.705029433785 40.0891862868638 167.582144649066 53.6650441436989 -15.7008382389641 56.0020955974101 -113.705029433785 -26.15234778884 63.1675721644597 -100.560897502478 -35.7419813011805 68.8504258208211 -84.9337780785615 -44.129878155887 72.8492538575074 -67.3775028064806 -51.0187677823276 75.0223361374071 -48.5142734203172 -56.1645050526181 75.2926577161826 -29.0126106542571 -59.3847228870057 73.6506382840889 -9.56366158833183 -60.5652954194041 70.1544716961558 9.14329489299404 -59.6643826657913 64.9280635576406 26.4452764326035 -57.0987666580374 58.8968618542912 40.3076192149857 -53.4294430847669 52.5406890590679 51.0550161027971 -49.0972085531216 46.1944893354701 59.1108768706067 -44.4333424766111 40.0783971151619 64.9197814457979 -39.1184755100888 33.6758483083243 69.2705088070589 -33.8454320444925 27.7494338100392 71.8839929378139 -28.758849752436 22.3456247739376 73.1528999139946 -23.4021849567436 16.9316617187845 73.3820929518374 -17.8291688994329 11.5618506297938 72.5692730785572 -12.0957029829553 6.29005461586162 70.7225934683758 -6.25929803849168 1.16915362342743 67.8605776602579 -0.378497450506579 -3.7494859878304 64.0119337533488 5.48771007595662 -8.41652668692407 59.2152664438707 13.1850118517501 -14.1673812905526 51.4294777552111 21.5179016408397 -19.8761997788089 40.9331925518778 29.3243252252944 -24.6559270855357 28.8264074409663 36.4282825691065 -28.3988016770436 15.3820764317496 42.6696111170697 -31.020438424118 0.903309228194225 47.9075967460911 -32.4617311103343 -14.2834625430266 52.0241462410971 -32.6901850136309 -29.835844909864 54.9264497703497 -31.7006495173688 -45.4032010119227 56.5490733332302 -29.5154342337651 -60.6345563978594 56.8554340051248 -26.1838060216367 -75.1865119339515 55.8386247192184 -21.7808782384584 -88.7309859230394 53.5215699900466 -16.4059172691496 -100.962610883587 49.9565090679337 -10.180104511812 -111.605618224486 45.7467859202098 -3.96505935554597 -119.626906258655 41.2123302056887 2.02704978893822 -125.457519978507 36.0407250447429 8.30492495168059 -129.882599985693 30.3085190393574 14.7756428424864 -132.836647527374 24.1005586428761 21.3434257689438 -134.275937647279 17.5087322873698 27.911059310092 -134.179166389846 10.6306102776736 34.3813312561279 -132.547766135205 3.56800058398993 40.6584705153853 -129.4058843975 -3.57455809020503 46.6495646902995 -124.800026400377 -9.68038132273777 51.4898632858793 -119.737927852565 40.0891862868638 167.582144649066 53.6650441436989 27.5393184659456 168.564840026253 57.1932031658801 15.3707720282266 167.621569664996 61.8782322192913 3.95328209963509 164.780994357903 67.5777790668839 -6.3662366658773 160.129423548279 74.1186658618037 -15.2742309125489 153.808192861368 81.3021510686354 -22.5000357428572 146.009369692892 88.9099681243884 -27.824098733467 136.969917338433 96.7109573575647 -31.0846509245145 126.964494983595 104.468089657805 -32.1826220875936 116.297112323644 111.945668485466 -31.0846509245145 105.291892382745 118.916491391705 -27.824098733467 94.2832231998935 125.168753449924 -22.5000357428572 83.6055976175539 130.512482841281 -15.2742309125489 73.5834498859069 134.785313052276 -6.36623666587734 64.521297892327 137.857416299105 3.95328209963503 56.6944905394689 139.635448279173 15.3707720282265 50.3408414081937 140.065384390493 27.5393184659456 45.6534029122536 139.13416124188 40.0891862868637 42.7746004983893 136.870073577483 52.6390541077818 41.7919051212018 133.341914555302 64.8076005455008 42.7351754824591 128.656885501891 76.2250904740923 45.5757507895523 122.957338654298 86.5446092396047 50.2273215991758 116.416451859379 95.4526034862764 56.5485522860875 109.232966652547 102.678408316585 64.3473754545627 101.625149596794 108.002471307195 73.3868278090223 93.8241603636177 111.263023498242 83.3922501638596 86.0670280633771 112.360994661321 94.0596328238108 78.5894492357165 111.263023498242 105.064852764709 71.6186263294771 108.002471307195 116.073521947561 65.3663642712583 102.678408316585 126.751147529901 60.0226348799019 95.4526034862766 136.773295261548 55.7498046689066 86.544609239605 145.835447255128 52.6777014220771 76.2250904740927 153.662254607986 50.8996694420092 64.8076005455012 160.015903739261 50.4697333306895 52.6390541077822 164.703342235201 51.4009564793024 6.28318530717959 2191.25284262464 6.28318530717959 2400 0 2191.25284262464 0.188535365466375 2202.82841860735 0.377070730941541 2215.83266433576 0.565606096417356 2229.80470391073 0.754141461875146 2244.2493623891 0.9426768273232 2258.65471504074 1.1312121927849 2272.51023015794 1.31974755826542 2285.32486248635 1.50828292374811 2296.64445610695 1.67796475267081 2305.22093375783 1.83067839869405 2311.42117237675 1.96812068011583 2315.64588238386 2.09181873339922 2318.28064937068 2.21551678668491 2319.76714341421 2.3268450346428 2320.10407080595 2.42704045780544 2319.59244864553 2.52723588096854 2318.31395580075 2.62743130413111 2316.28141648357 2.7276267272918 2313.51521854804 2.82782215044748 2310.04310896911 2.92801757359851 2305.89991551908 3.02821299675011 2301.12719744964 3.16180689428471 2293.86790813911 3.31210002901051 2284.62772411998 3.46239316374259 2274.45218357779 3.61268629848579 2263.57069959366 3.76297943323685 2252.22860111976 3.91327256798843 2240.68160187766 4.06356570273708 2229.19003518372 4.21385883748551 2218.01298462731 4.36415197223525 2207.40244286197 4.51444510697952 2197.59763025523 4.66473824171966 2188.81960159644 4.8150313764585 2181.26626240252 4.96532451119757 2175.10790657125 5.10058833246398 2170.87355383284 5.22232577160434 2168.1896954466 5.34406321074441 2166.61523418097 5.46580064988361 2166.1734746831 5.58753808902201 2166.87095570686 5.70927552816037 2168.69735336982 5.83101296729955 2171.62563392478 5.95275040643995 2175.61245382851 6.07448784558093 2180.5988012772 6.17883657638065 2185.61290802981 0 2400 0.174532925199433 2400 0.349065850398866 2400 0.523598775598299 2400 0.698131700797732 2400 0.872664625997165 2400 1.0471975511966 2400 1.22173047639603 2400 1.39626340159546 2400 1.5707963267949 2400 1.74532925199433 2400 1.91986217719376 2400 2.0943951023932 2400 2.26892802759263 2400 2.44346095279206 2400 2.61799387799149 2400 2.79252680319093 2400 2.96705972839036 2400 3.14159265358979 2400 3.31612557878922 2400 3.49065850398866 2400 3.66519142918809 2400 3.83972435438752 2400 4.01425727958696 2400 4.18879020478639 2400 4.36332312998582 2400 4.53785605518525 2400 4.71238898038469 2400 4.88692190558412 2400 5.06145483078355 2400 5.23598775598299 2400 5.41052068118242 2400 5.58505360638185 2400 5.75958653158128 2400 5.93411945678072 2400 6.10865238198015 2400 70 29 30 70 69 29 62 17 18 48 3 4 62 18 19 62 61 17 71 30 31 71 70 30 49 48 4 50 4 5 72 31 32 50 49 4 72 71 31 51 5 6 51 50 5 52 51 6 52 6 7 73 32 33 63 19 20 63 20 21 63 62 19 53 7 8 53 52 7 73 72 32 54 8 9 54 53 8 74 33 34 74 34 35 74 73 33 55 9 10 55 54 9 75 74 35 75 35 36 56 10 11 56 55 10 64 21 22 64 63 21 76 75 36 57 11 12 57 56 11 76 36 37 65 22 23 65 23 24 65 64 22 77 76 37 58 12 13 77 37 38 58 57 12 78 77 38 78 38 39 78 39 40 59 13 14 59 58 13 79 78 40 79 40 41 66 24 25 66 65 24 80 79 41 60 14 15 80 41 42 80 42 43 60 59 14 16 60 15 67 25 26 67 26 27 67 66 25 81 80 43 81 43 44 82 81 44 82 44 45 82 45 46 68 27 28 68 67 27 83 46 47 83 82 46 61 16 17 61 60 16 2 83 47 2 47 1 69 28 29 69 68 28 
+101 99 1 0.136228772871728
+-22.2864273634798 -47.9648205226098 -2.24220467505033 -230 -203.75 -54.1705978341804 -22.2864273634798 -47.9648205226098 -2.24220467505033 -24.4012506975562 -46.557797906447 -1.17173881126472 -26.7591109772225 -45.1995399293933 -0.418292057057864 -29.3260653053367 -43.8729869733416 0.0224904104707955 -32.0351144673397 -42.5866519711117 0.146361916534837 -34.6897352127164 -41.4087440370025 -0.0250214194525966 -37.9679871091143 -40.0451150014351 -0.60083769088918 -41.3392128391102 -38.7387862395033 -1.59395083483286 -44.4612057385451 -37.6196675565716 -2.87447840889123 -48.2609945155088 -36.39591905645 -4.91638206633261 -52.1002173490519 -35.3574885454383 -7.55462201153391 -55.1217491942948 -34.7272235169081 -10.0755905380922 -58.2901589522796 -34.3050056113102 -13.1869689750541 -61.4633690248443 -34.213103102464 -16.8444660330036 -64.2692959516993 -34.5093370691993 -20.5980527290128 -66.7495015010916 -35.1754034210909 -24.3919261552404 -68.9381654584316 -36.1940274613222 -28.1843455811586 -71.4459138248419 -38.0741764539622 -33.1830132480231 -73.7443262264718 -40.8674410502666 -38.6551045773484 -75.4940486033119 -44.3483597547277 -43.8897654746452 -76.6534823422074 -48.5621360553353 -48.8636323445793 -77.0482239734598 -53.1303440341735 -53.1000282921383 -76.7379777937274 -57.0754558821442 -55.9767291108246 -76.4061164945813 -58.7938425396278 -57.017880049682 -75.9682730815984 -60.4304487807114 -57.8886231931889 -75.0135518414438 -62.9936011576077 -59.0027125667279 -73.8631613071862 -65.2269642568203 -59.6981790068215 -72.515103840102 -67.2242148052284 -60.0628180084393 -71.0269460748299 -68.9531410939977 -60.1337420604279 -69.4720247510213 -70.3968013049681 -59.9651652629317 -67.8625873353056 -71.6044565684176 -59.6061891116245 -66.4238864197703 -72.4906533578111 -59.1649617670997 -64.6590113659328 -73.375413455398 -58.5015445205678 -62.8126560037815 -74.1022249912955 -57.6907151823445 -60.5210650121961 -74.7680674691023 -56.5491723572055 -57.2959718283776 -75.3364883334365 -54.7365854351627 -53.950648133433 -75.5460428374445 -52.6473959588335 -49.7873068077512 -75.3517766317091 -49.7968596147923 -43.9338950130003 -74.3464030233711 -45.3713274012454 -37.9344192621972 -72.5181438755294 -40.3335100180792 -30.7004823416434 -69.2391388731129 -33.4376561658325 -23.6892694064044 -64.6037284452599 -25.2821232244669 -19.7012757088791 -60.6164585842255 -18.9205808886417 -18.2178719308714 -58.2391407790846 -15.3050888503074 -17.5857420686368 -56.3657771413405 -12.546236284659 -17.4868157734707 -54.5764206605305 -10.00474204745 -17.8032583705486 -53.1508589585831 -8.06945954976648 -18.4644050596923 -51.7856449514469 -6.31816713625769 -19.4199997641545 -50.504854994627 -4.79482944173709 -20.8732719405704 -49.078213100337 -3.27314228350858 -21.5551378668998 -48.5174632673474 -2.73513548959891 -230 -203.75 -54.1705978341804 -230 -208.640012066942 -57.6047506812288 -230 -212.771808783459 -61.658716006206 -230 -215.715265636146 -65.7137755634207 -230 -217.659772940617 -69.5887917353205 -230 -218.887334769788 -73.5799913079223 -230 -219.354150941483 -77.1913528455115 -230 -219.249089902313 -80.3962214888144 -230 -218.647982772543 -83.5051257717285 -230 -217.560409811152 -86.4685169421317 -230 -216.003704418649 -89.2391653907533 -230 -214.002676882711 -91.772913382036 -230 -211.589218959514 -94.0293788264285 -230 -208.801795592818 -95.9725988776025 -230 -205.68483187162 -97.5716030971423 -230 -202.288004996869 -98.800907051786 -230 -198.665452541647 -99.6409184764177 -230 -194.87490962332 -100.078249529511 -230 -190.976788739144 -100.105930164397 -230 -187.03321693063 -99.7235192157022 -230 -183.107045622019 -98.9371114305082 -230 -179.260848913784 -97.7592403321627 -230 -175.555926296025 -96.2086784648719 -230 -172.051325676205 -94.3101382027137 -230 -168.802902291927 -92.0938778914854 -230 -165.862428507472 -89.5952196005741 -230 -163.276768681922 -86.8539861707709 -230 -161.087132259541 -83.9138665301872 -230 -159.328416986434 -80.8217193936702 -230 -158.028652721095 -77.6268264431402 -230 -157.208554703216 -74.3801068914312 -230 -156.881193400621 -71.1333059476706 -230 -157.051786196211 -67.9381701181873 -230 -157.717614234922 -64.8456224867445 -230 -158.868065756007 -61.9049511182266 -230 -160.484805219974 -59.1630235207493 -230 -162.542065534739 -56.6635396858531 -230 -165.007058723538 -54.4463356115933 -230 -167.840498489534 -52.5467484087591 -230 -170.997226348633 -50.9950531089638 -230 -174.426931351387 -49.8159801505809 -230 -178.074951923311 -49.028321232689 -230 -181.883147044096 -48.6446298188005 -230 -185.790822881155 -48.6710210636543 -230 -189.735700109104 -49.1070743517759 -230 -193.654906498332 -49.9458400011172 -230 -197.485978953089 -51.1739500249323 -230 -200.693522814965 -52.5410579899282 6.28318530717959 55.9484769446956 6.28318530717959 320.732366972618 0 55.9484769446963 0.107473408927845 56.5697257192074 0.214535305123206 57.4724915197748 0.32212856914855 58.6192562970394 0.42952998629414 59.963302954831 0.531072681239146 61.3863495809173 0.653753954604568 63.268659841692 0.778861830606972 65.3394559525883 0.895341396998996 67.3812491042423 1.03981672756338 70.0425084363072 1.1910237661019 72.9606850988344 1.31544401863933 75.4545568692879 1.45290274304149 78.3018422568815 1.60009624187215 81.4543365312843 1.74088787456119 84.5659144064699 1.8765947945065 87.6474665828414 2.00842787464752 90.7074563189814 2.18011516316467 94.7611980344866 2.37056918340126 99.2807992368989 2.56186861075524 103.727988830426 2.76137226290383 108.092147600169 2.95894007676774 111.920331892669 3.12383740216267 114.562222477272 3.19579975919143 115.51708560375 3.26514164863477 116.307274424186 3.37667529330798 117.284846981091 3.47865857452881 117.832794207661 3.57588514607685 118.021881693193 3.66704523941172 117.88559507163 3.75066451164444 117.482128982839 3.82855764125936 116.859703433111 3.89267601784647 116.165954246811 3.96589989763668 115.171912714785 4.03750069327727 113.992114096031 4.12087095007483 112.362314614796 4.2304856669081 109.811295339494 4.33732615490095 106.900574816751 4.46376490155112 102.961248793302 4.63481244913248 96.9100265661038 4.80884838612677 90.1399999486567 5.0299092546923 81.1836473753891 5.28545301036348 71.3569315073072 5.49401185213562 64.634986902534 5.62198465252599 61.3635617743666 5.72744297917923 59.2244323007994 5.83345710689778 57.5956350706326 5.92236134229536 56.6256059891535 6.01159655246717 55.9975739391081 6.09910046822572 55.6949022699735 6.20083274933834 55.6971528721796 6.24199754532451 55.79662442962 0 320.732366972618 6.0906406502035 324.282890568926 5.89809599326136 327.508874550548 5.7248058020278 330.03591530866 5.56884462992331 331.939916311877 5.41288345782232 333.444889008789 5.27251840293127 334.427785804278 5.14618985352445 334.994499721679 5.0198613041074 335.250545558581 4.89353275467483 335.191842556177 4.76720420522307 334.819326310566 4.64087565575123 334.13893385807 4.51454710626162 333.161509059067 4.38821855675934 331.902629785006 4.26189000725107 330.382359656215 4.13556145774337 328.624928279882 4.00923290824107 326.65834507983 3.88290435874618 324.513952873874 3.75657580925792 322.225928322162 3.63024725977407 319.830737222483 3.50391871029326 317.366553347605 3.37759016081718 314.872650086777 3.2512616113504 312.388774550073 3.12493306189426 309.954514003017 2.99860451244402 307.608664864929 2.87227596299182 305.388614612252 2.74594741353787 303.329745692875 2.61961886408642 301.464871688995 2.49329031464053 299.82371438544 2.36696176520085 298.432430063087 2.24063321576628 297.313192604066 2.11430466633495 296.483840074371 1.98797611690498 295.957590423939 1.86164756747473 295.742830832884 1.73531901804274 295.842984053709 1.60899046860739 296.256453871549 1.48266191916681 296.976650546284 1.3563333697189 297.99209583024 1.23000482026178 299.286605891537 1.10367627079445 300.839549234611 0.977347721317443 302.626175514378 0.8510191718333 304.618010007494 0.724690622346399 306.78330745164 0.598362072862037 309.087558010267 0.472033523384775 311.49403728423 0.345704973916474 313.964391591688 0.219376424455116 316.459249192126 0.10968821222684 318.614514456842 101 3 4 101 4 5 101 54 3 100 5 6 100 101 5 99 6 7 99 100 6 98 7 8 98 99 7 97 8 9 97 98 8 96 9 10 96 97 9 95 10 11 95 96 10 94 11 12 94 95 11 93 12 13 93 94 12 92 13 14 92 93 13 91 14 15 91 92 14 90 15 16 90 91 15 89 16 17 89 90 16 88 89 17 87 17 18 87 88 17 86 18 19 86 87 18 85 19 20 85 86 19 84 20 21 84 85 20 83 84 21 82 21 22 82 83 21 81 22 23 81 82 22 80 81 23 79 23 24 79 80 23 78 24 25 78 79 24 77 25 26 77 78 25 76 77 26 76 26 27 75 27 28 75 28 29 75 76 27 74 75 29 74 29 30 73 74 30 73 30 31 72 73 31 72 31 32 72 32 33 71 72 33 71 33 34 71 34 35 70 35 36 70 71 35 69 36 37 69 37 38 69 70 36 68 38 39 68 69 38 67 39 40 67 68 39 66 40 41 66 67 40 65 66 41 64 41 42 64 65 41 63 42 43 63 64 42 62 63 43 61 43 44 61 62 43 60 61 44 59 44 45 59 60 44 58 45 46 58 59 45 57 46 47 57 47 48 57 58 46 56 48 49 56 49 50 56 57 48 55 50 51 55 51 52 55 56 50 2 52 53 2 53 1 2 55 52 
+98 98 1 3.44906109698464e-14
+-230 -219.375 -33.9661956683608 -230 -228.881716692235 -40.6087857661369 -230 -236.9709618013 -48.4257258369284 -230 -242.805639017784 -56.2410404649089 -230 -246.742884773844 -63.7184466407158 -230 -249.341225775738 -71.4392616329755 -230 -250.485261015954 -78.4504041091191 -230 -250.528239799038 -84.6996216675505 -230 -249.635421612559 -90.7940115327487 -230 -247.820195129222 -96.6421824310307 -230 -245.109781426772 -102.156435380393 -230 -241.544825781595 -107.254078821615 -230 -237.178788153464 -111.85866865821 -230 -232.07714150171 -115.901154609633 -230 -226.316389954833 -119.320915687053 -230 -219.982921557065 -122.066669263747 -230 -213.171712796046 -124.097240107716 -230 -205.984904338481 -125.382177844134 -230 -198.530269331998 -125.902213588185 -230 -190.91959724251 -125.649548900638 -230 -183.267017462987 -124.627972732992 -230 -175.687287832766 -122.852804608479 -230 -168.294073732698 -120.350664890989 -230 -161.198243562765 -117.159075586953 -230 -154.50620616313 -113.325897666546 -230 -148.318315110612 -108.908613342121 -230 -142.727363819678 -103.973464066811 -230 -137.817194015405 -98.5944571798348 -230 -133.66143844567 -92.8522560948285 -230 -130.322416686844 -86.8329706738959 -230 -127.850200601432 -80.6268659268985 -230 -126.281863462046 -74.3270084002804 -230 -125.6409240018 -68.0278705541424 -230 -125.936993728148 -61.8239140562802 -230 -127.165632789033 -55.8081732380633 -230 -129.308416552759 -50.070859954605 -230 -132.333211903178 -44.6980107706956 -230 -136.194659106859 -39.7701967592538 -230 -140.834852026189 -35.3613152601185 -230 -146.184206477942 -31.5374817179256 -230 -152.162503715443 -28.3560382170353 -230 -158.680093386308 -25.8646935814853 -230 -165.639237926228 -24.1008079350064 -230 -172.935578228335 -23.0908324498123 -230 -180.459698608994 -22.8499126856756 -230 -188.098767601865 -23.381661467602 -230 -195.738229974932 -24.6781047080235 -230 -203.263524597061 -26.7198009859576 -230 -210.561802393025 -29.4761330899293 -230 -215.050703054116 -31.5903877357607 -230 -203.75 -54.1705978341804 -230 -208.640012066942 -57.6047506812288 -230 -212.771808783459 -61.658716006206 -230 -215.715265636146 -65.7137755634207 -230 -217.659772940617 -69.5887917353205 -230 -218.887334769788 -73.5799913079223 -230 -219.354150941483 -77.1913528455115 -230 -219.249089902313 -80.3962214888144 -230 -218.647982772543 -83.5051257717285 -230 -217.560409811152 -86.4685169421317 -230 -216.003704418649 -89.2391653907533 -230 -214.002676882711 -91.772913382036 -230 -211.589218959514 -94.0293788264285 -230 -208.801795592818 -95.9725988776025 -230 -205.68483187162 -97.5716030971423 -230 -202.288004996869 -98.800907051786 -230 -198.665452541647 -99.6409184764177 -230 -194.87490962332 -100.078249529511 -230 -190.976788739144 -100.105930164397 -230 -187.03321693063 -99.7235192157022 -230 -183.107045622019 -98.9371114305082 -230 -179.260848913784 -97.7592403321627 -230 -175.555926296025 -96.2086784648719 -230 -172.051325676205 -94.3101382027137 -230 -168.802902291927 -92.0938778914854 -230 -165.862428507472 -89.5952196005741 -230 -163.276768681922 -86.8539861707709 -230 -161.087132259541 -83.9138665301872 -230 -159.328416986434 -80.8217193936702 -230 -158.028652721095 -77.6268264431402 -230 -157.208554703216 -74.3801068914312 -230 -156.881193400621 -71.1333059476706 -230 -157.051786196211 -67.9381701181873 -230 -157.717614234922 -64.8456224867445 -230 -158.868065756007 -61.9049511182266 -230 -160.484805219974 -59.1630235207493 -230 -162.542065534739 -56.6635396858531 -230 -165.007058723538 -54.4463356115933 -230 -167.840498489534 -52.5467484087591 -230 -170.997226348633 -50.9950531089638 -230 -174.426931351387 -49.8159801505809 -230 -178.074951923311 -49.028321232689 -230 -181.883147044096 -48.6446298188005 -230 -185.790822881155 -48.6710210636543 -230 -189.735700109104 -49.1070743517759 -230 -193.654906498332 -49.9458400011172 -230 -197.485978953089 -51.1739500249323 -230 -200.693522814965 -52.5410579899282 116.033804331639 -80.6249999999999 109.391214233863 -71.1182833077653 101.574274163072 -63.0290381987003 93.7589595350911 -57.1943609822165 86.2815533592842 -53.2571152261564 78.5607383670245 -50.6587742242621 71.5495958908809 -49.5147389840456 65.3003783324495 -49.4717602009622 59.2059884672513 -50.3645783874406 53.3578175689693 -52.179804870778 47.8435646196071 -54.8902185732281 42.7459211783854 -58.455174218405 38.1413313417896 -62.8212118465356 34.0988453903667 -67.92285849829 30.6790843129471 -73.6836100451671 27.933330736253 -80.0170784429349 25.9027598922838 -86.8282872039539 24.6178221558659 -94.0150956615192 24.0977864118151 -101.469730668002 24.3504510993617 -109.08040275749 25.3720272670075 -116.732982537013 27.1471953915206 -124.312712167234 29.6493351090105 -131.705926267302 32.8409244130465 -138.801756437235 36.6741023334541 -145.49379383687 41.0913866578794 -151.681684889388 46.0265359331894 -157.272636180322 51.4055428201652 -162.182805984595 57.1477439051715 -166.33856155433 63.1670293261041 -169.677583313156 69.3731340731015 -172.149799398568 75.6729915997196 -173.718136537954 81.9721294458576 -174.3590759982 88.1760859437198 -174.063006271852 94.1918267619367 -172.834367210967 99.9291400453949 -170.691583447241 105.301989229304 -167.666788096822 110.229803240746 -163.805340893141 114.638684739882 -159.165147973811 118.462518282074 -153.815793522058 121.643961782965 -147.837496284557 124.135306418515 -141.319906613692 125.899192064994 -134.360762073772 126.909167550188 -127.064421771665 127.150087314324 -119.540301391006 126.618338532398 -111.901232398135 125.321895291976 -104.261770025068 123.280199014042 -96.736475402939 120.523866910071 -89.4381976069749 118.409612264239 -84.9492969458841 95.8294021658196 -96.25 92.3952493187712 -91.3599879330581 88.341283993794 -87.2281912165414 84.2862244365793 -84.2847343638536 80.4112082646795 -82.3402270593827 76.4200086920777 -81.1126652302121 72.8086471544885 -80.6458490585166 69.6037785111856 -80.7509100976869 66.4948742282715 -81.352017227457 63.5314830578683 -82.439590188848 60.7608346092467 -83.9962955813511 58.227086617964 -85.9973231172893 55.9706211735715 -88.4107810404859 54.0274011223976 -91.1982044071823 52.4283969028577 -94.3151681283804 51.199092948214 -97.7119950031309 50.3590815235823 -101.334547458353 49.9217504704885 -105.12509037668 49.8940698356028 -109.023211260856 50.2764807842978 -112.96678306937 51.0628885694918 -116.892954377981 52.2407596678373 -120.739151086216 53.7913215351281 -124.444073703975 55.6898617972863 -127.948674323795 57.9061221085146 -131.197097708073 60.4047803994259 -134.137571492528 63.1460138292291 -136.723231318078 66.0861334698128 -138.912867740459 69.1782806063298 -140.671583013566 72.3731735568598 -141.971347278905 75.6198931085688 -142.791445296784 78.8666940523294 -143.118806599379 82.0618298818127 -142.948213803789 85.1543775132555 -142.282385765078 88.0950488817734 -141.131934243993 90.8369764792507 -139.515194780026 93.3364603141469 -137.457934465261 95.5536643884067 -134.992941276462 97.4532515912409 -132.159501510466 99.0049468910362 -129.002773651367 100.184019849419 -125.573068648613 100.971678767311 -121.925048076689 101.355370181199 -118.116852955904 101.328978936346 -114.209177118845 100.892925648224 -110.264299890896 100.054159998883 -106.345093501668 98.8260499750677 -102.514021046911 97.4589420100718 -99.3064771850346 45 93 92 42 90 89 73 24 74 73 23 24 66 17 18 80 29 30 9 10 59 66 18 67 46 93 45 12 13 61 39 86 38 80 79 29 46 94 93 46 95 94 8 59 58 8 9 59 72 22 23 47 95 46 87 86 39 72 23 73 81 80 30 81 30 31 47 96 95 65 16 17 65 17 66 7 58 57 7 8 58 71 22 72 48 96 47 71 21 22 48 97 96 6 7 57 82 31 32 82 32 33 6 57 56 43 90 42 64 15 16 43 91 90 82 81 31 64 16 65 49 97 48 40 88 87 40 87 39 49 98 97 5 56 55 5 6 56 70 21 71 11 61 60 11 12 61 50 98 49 50 51 98 1 52 51 83 33 34 1 51 50 83 82 33 4 5 55 63 14 15 4 55 54 63 15 64 2 53 52 2 52 1 3 4 54 3 54 53 3 53 2 69 20 21 69 21 70 84 83 34 84 34 35 62 14 63 84 35 36 76 25 26 41 88 40 41 89 88 77 76 26 77 26 27 68 19 20 68 20 69 75 25 76 44 91 43 85 36 37 44 92 91 13 14 62 85 84 36 61 13 62 78 27 28 78 77 27 74 24 25 74 25 75 67 18 19 10 11 60 67 19 68 79 28 29 86 85 37 86 37 38 10 60 59 79 78 28 45 92 44 42 89 41 
+72 72 1 2.18491891246231e-13
+40.0891862868637 188.383402007512 39.797539238068 23.3560291923062 189.693662510428 44.5017512676428 7.13130060868077 188.435968695418 50.7484566721911 -8.09201929610791 184.648534952628 58.3478524689813 -21.8513776501244 178.446440539796 67.0690348622077 -33.7287033123532 170.018132957247 76.6470151379833 -43.3631097527643 159.619702065947 86.7907712123205 -50.4618604069107 147.567098926667 97.192090189889 -54.8092633283073 134.226535786884 107.534933256877 -56.2732248790795 120.003358906949 117.505038360424 -54.8092633283073 105.329732319084 126.799468902077 -50.4618604069107 90.6515067419486 135.135818313035 -43.3631097527644 76.4146726321626 142.260790834843 -33.7287033123533 63.0518089899665 147.957897782837 -21.8513776501245 50.9689396651932 152.054035445276 -8.09201929610798 40.5331965280492 154.424744752034 7.13130060868068 32.0616643530156 154.99799290046 23.3560291923061 25.8117463584287 153.756362035643 40.0891862868635 21.973343139943 150.737578483114 56.822343381421 20.6630826370263 146.033366453539 73.0470719650464 21.9207764520362 139.786661048991 88.2703918698351 25.708210194827 132.187265252201 102.029750223852 31.9103046076583 123.466082858974 113.90707588608 40.3386121902073 113.888102583199 123.541482326492 50.7370430815076 103.744346508861 130.640232980638 62.789646220787 93.343027531293 134.987635902035 76.1302093605701 83.0001844643055 136.451597452807 90.3533862405051 73.0300793607581 134.987635902035 105.02701282837 63.7356488191055 130.640232980638 119.705238405506 55.3992994081471 123.541482326492 133.942072515292 48.2743268863385 113.907075886081 147.304936157488 42.5772199383448 102.029750223852 159.387805482261 38.4810822759056 88.2703918698356 169.823548619405 36.1103729691483 73.0470719650469 178.295080794439 35.5371248207221 56.8223433814216 184.544998789026 36.7787556855393 40.0891862868638 167.582144649066 53.6650441436989 27.5393184659456 168.564840026253 57.1932031658801 15.3707720282266 167.621569664996 61.8782322192913 3.95328209963509 164.780994357903 67.5777790668839 -6.3662366658773 160.129423548279 74.1186658618037 -15.2742309125489 153.808192861368 81.3021510686354 -22.5000357428572 146.009369692892 88.9099681243884 -27.824098733467 136.969917338433 96.7109573575647 -31.0846509245145 126.964494983595 104.468089657805 -32.1826220875936 116.297112323644 111.945668485466 -31.0846509245145 105.291892382745 118.916491391705 -27.824098733467 94.2832231998935 125.168753449924 -22.5000357428572 83.6055976175539 130.512482841281 -15.2742309125489 73.5834498859069 134.785313052276 -6.36623666587734 64.521297892327 137.857416299105 3.95328209963503 56.6944905394689 139.635448279173 15.3707720282265 50.3408414081937 140.065384390493 27.5393184659456 45.6534029122536 139.13416124188 40.0891862868637 42.7746004983893 136.870073577483 52.6390541077818 41.7919051212018 133.341914555302 64.8076005455008 42.7351754824591 128.656885501891 76.2250904740923 45.5757507895523 122.957338654298 86.5446092396047 50.2273215991758 116.416451859379 95.4526034862764 56.5485522860875 109.232966652547 102.678408316585 64.3473754545627 101.625149596794 108.002471307195 73.3868278090223 93.8241603636177 111.263023498242 83.3922501638596 86.0670280633771 112.360994661321 94.0596328238108 78.5894492357165 111.263023498242 105.064852764709 71.6186263294771 108.002471307195 116.073521947561 65.3663642712583 102.678408316585 126.751147529901 60.0226348799019 95.4526034862766 136.773295261548 55.7498046689066 86.544609239605 145.835447255128 52.6777014220771 76.2250904740927 153.662254607986 50.8996694420092 64.8076005455012 160.015903739261 50.4697333306895 52.6390541077822 164.703342235201 51.4009564793024 100 0 98.4807753012208 17.364817766693 93.9692620785908 34.2020143325669 86.6025403784439 50 76.6044443118978 64.2787609686539 64.278760968654 76.6044443118978 50 86.6025403784438 34.2020143325669 93.9692620785908 17.364817766693 98.4807753012208 0 100 -17.364817766693 98.4807753012208 -34.2020143325669 93.9692620785908 -50 86.6025403784439 -64.2787609686539 76.6044443118979 -76.6044443118978 64.278760968654 -86.6025403784438 50.0000000000001 -93.9692620785908 34.202014332567 -98.4807753012208 17.3648177666932 -100 1.4210854715202e-13 -98.4807753012208 -17.3648177666929 -93.9692620785909 -34.2020143325667 -86.602540378444 -49.9999999999998 -76.604444311898 -64.2787609686538 -64.2787609686541 -76.6044443118977 -50.0000000000002 -86.6025403784437 -34.2020143325671 -93.9692620785908 -17.3648177666933 -98.4807753012208 -2.8421709430404e-13 -100 17.3648177666927 -98.4807753012209 34.2020143325666 -93.969262078591 49.9999999999997 -86.602540378444 64.2787609686536 -76.604444311898 76.6044443118976 -64.2787609686542 86.6025403784437 -50.0000000000004 93.9692620785907 -34.2020143325673 98.4807753012207 -17.3648177666935 75.0000000000001 -2.8421709430404e-14 73.8605814759156 13.0236133250198 70.4769465589432 25.6515107494251 64.951905283833 37.5 57.4533332339234 48.2090707264904 48.2090707264905 57.4533332339233 37.5000000000001 64.9519052838329 25.6515107494252 70.4769465589431 13.0236133250198 73.8605814759156 4.2632564145606e-14 75 -13.0236133250197 73.8605814759156 -25.6515107494251 70.4769465589431 -37.4999999999999 64.9519052838329 -48.2090707264904 57.4533332339234 -57.4533332339233 48.2090707264905 -64.9519052838328 37.5000000000001 -70.4769465589431 25.6515107494252 -73.8605814759155 13.0236133250199 -75 9.9475983006414e-14 -73.8605814759156 -13.0236133250197 -70.4769465589431 -25.651510749425 -64.9519052838329 -37.4999999999999 -57.4533332339234 -48.2090707264903 -48.2090707264905 -57.4533332339233 -37.5000000000001 -64.9519052838328 -25.6515107494253 -70.4769465589431 -13.0236133250199 -73.8605814759156 -1.70530256582424e-13 -75 13.0236133250196 -73.8605814759157 25.651510749425 -70.4769465589432 37.4999999999998 -64.951905283833 48.2090707264903 -57.4533332339235 57.4533332339232 -48.2090707264907 64.9519052838328 -37.5000000000003 70.476946558943 -25.6515107494255 73.8605814759156 -13.0236133250201 7 8 44 51 15 52 7 44 43 4 40 3 5 41 40 5 42 41 5 40 4 6 42 5 6 7 43 6 43 42 33 68 32 33 69 68 14 15 51 14 51 50 34 69 33 60 24 25 34 70 69 13 50 49 13 14 50 59 23 24 59 24 60 61 25 26 61 60 25 58 22 23 58 23 59 35 70 34 35 71 70 12 49 48 12 13 49 62 26 27 62 61 26 57 21 22 57 22 58 63 62 27 63 27 28 36 71 35 56 20 21 36 72 71 36 37 72 56 21 57 11 12 48 11 48 47 64 28 29 64 63 28 55 20 56 55 18 19 55 19 20 65 64 29 10 47 46 10 11 47 54 18 55 1 37 36 30 65 29 66 65 30 53 18 54 53 17 18 31 66 30 9 46 45 9 10 46 2 38 37 2 39 38 67 66 31 52 17 53 2 37 1 52 16 17 8 9 45 32 67 31 8 45 44 15 16 52 3 39 2 3 40 39 68 67 32 
+
+TShapes 57
+Ve
+1e-07
+-66.8153104781061 -25.4255915224278 -280.915951056841
+0 0
+
+0101101
+*
+Ed
+ 1e-07 1 1 0
+1  1 0 0 6.28318530717959
+2  1 2 0 0 6.28318530717959
+2  2 1 0 0 6.28318530717959
+6  1 2 0
+6  2 1 0
+0
+
+0101000
++57 0 -57 0 *
+Wi
+
+0101100
++56 0 *
+Ve
+1.00000127897692e-07
+-66.815310478106 -46.2268488808736 -267.048446151211
+0 0
+
+0101101
+*
+Ed
+ 1e-07 1 1 0
+1  2 0 0 6.28318530717959
+2  3 1 0 0 6.28318530717959
+2  4 3 1 0 6.28318530717959
+6  3 3 0
+6  4 1 0
+0
+
+0101000
++54 0 -54 0 *
+Wi
+
+0101100
+-53 0 *
+Fa
+0  1e-07 1 0
+2  1
+0101000
++55 0 +52 0 *
+Ve
+1.21184741353775e-07
+-20.3233398741743 67.5583496854358 -141.440039245046
+0 0
+
+0101101
+*
+Ed
+ 1e-07 1 1 0
+1  3 0 0 173.957025235878
+3  5 6CN 2 0 0 173.957025235878
+7  5 6 2 0
+0
+
+0101000
++57 0 -50 0 *
+Ed
+ 1.2118468276092e-07 1 1 0
+1  4 0 3.97265635324521 10.2558416604248
+2  7 2 0 3.97265635324521 10.2558416604248
+2  8 4 0 3.97265635324521 10.2558416604248
+6  7 2 0
+6  8 4 0
+6  9 5 0
+0
+
+0101000
++50 0 -50 0 *
+Wi
+
+0101100
++56 0 -49 0 -48 0 +49 0 *
+Ve
+4.04294319991397e-07
+-23.615004462056 -64.586253346542 17.6300532161252
+0 0
+
+0101101
+*
+Ed
+ 4.04293319991397e-07 1 1 0
+1  5 0 0 1
+2  9 2 0 0 1
+2  10 5 2 0 1
+6  10 2 0
+6  11 6 0
+0
+
+0101000
++46 0 -46 0 *
+Wi
+
+0101100
+-45 0 *
+Fa
+0  1e-07 2 0
+2  2
+0101000
++47 0 +44 0 *
+Ve
+1.00000326405267e-07
+-15.7008382389641 56.0020955974101 -113.705029433785
+0 0
+
+0101101
+*
+Ed
+ 1e-07 1 1 0
+1  6 0 3.9726563532452 10.2558416604248
+2  11 3 1 3.9726563532452 10.2558416604248
+2  12 4 0 3.9726563532452 10.2558416604248
+6  12 3 0
+6  13 7 0
+6  14 5 0
+0
+
+0101000
++42 0 -42 0 *
+Ed
+ 1e-07 1 1 0
+1  7 0 2000 2191.25284262464
+3  13 14CN 3 0 2000 2191.25284262464
+7  15 16 3 3
+0
+
+0101000
++54 3 -42 3 *
+Wi
+
+0101100
+-41 0 +40 1 +53 0 -40 1 *
+Ve
+1.00000714166147e-07
+-22.2864273634798 -47.9648205226098 -2.24220467505033
+0 0
+
+0101101
+*
+Ed
+ 1e-07 1 1 0
+1  8 0 0 1
+2  15 6 4 0 1
+2  16 3 1 0 1
+6  17 3 0
+6  18 8 0
+0
+
+0101000
++38 0 -38 0 *
+Wi
+
+0101100
+-37 0 *
+Fa
+0  1e-07 3 1
+2  3
+0101000
++39 0 +36 0 *
+Wi
+
+0101100
++48 0 *
+Wi
+
+0101100
+-41 0 *
+Fa
+0  1e-07 4 0
+2  5
+0101000
++34 0 +33 0 *
+Ve
+1.000000536448e-07
+-230 -219.375 -33.9661956683608
+0 0
+
+0101101
+*
+Ed
+ 1e-07 1 1 0
+1  9 0 62.8726216514981 325.962901541682
+3  17 18CN 5 0 62.8726216514981 325.962901541682
+7  19 20 6 5
+0
+
+0101000
++46 5 -31 5 *
+Ed
+ 1e-07 1 1 0
+1  10 0 4.98022625413595 11.2634115613155
+2  19 5 2 4.98022625413595 11.2634115613155
+2  20 7 6 4.98022625413595 11.2634115613155
+6  21 6 0
+6  22 9 0
+0
+
+0101000
++31 0 -31 0 *
+Wi
+
+0101100
++30 2 +45 0 -30 2 +29 0 *
+Fa
+0  1e-07 5 2
+2  6
+0101000
++28 0 *
+Ve
+1.00000049227845e-07
+-230 -203.75 -54.1705978341804
+0 0
+
+0101101
+*
+Ed
+ 1e-07 1 1 0
+1  11 0 55.9484769446956 320.732366972618
+3  21 22CN 6 0 55.9484769446956 320.732366972618
+7  23 24 8 7
+0
+
+0101000
++38 7 -26 7 *
+Ed
+ 1e-07 1 1 0
+1  12 0 4.98022625413595 11.2634115613155
+2  23 7 6 4.98022625413595 11.2634115613155
+2  24 6 4 4.98022625413595 11.2634115613155
+6  25 8 0
+6  26 9 0
+0
+
+0101000
++26 0 -26 0 *
+Wi
+
+0101100
++25 4 +37 0 -25 4 +24 0 *
+Fa
+0  1e-07 6 4
+2  8
+0101000
++23 0 *
+Wi
+
+0101100
++29 0 *
+Wi
+
+0101100
+-24 0 *
+Fa
+0  1e-07 7 6
+2  9
+0101000
++21 0 +20 0 *
+Sh
+
+0101100
+-51 0 +43 0 -35 0 +32 0 +27 0 -22 0 -19 0 *
+So
+
+0100000
++18 0 *
+Ve
+1e-07
+40.0891862868637 188.383402007512 39.797539238068
+0 0
+
+0101101
+*
+Ed
+ 1e-07 1 1 0
+1  3 0 173.957025235878 400
+3  5 6CN 2 0 173.957025235878 400
+7  27 28 4 0
+0
+
+0101000
++50 0 -16 0 *
+Ed
+ 1e-07 1 1 0
+1  13 0 0 6.28318530717959
+2  25 2 0 0 6.28318530717959
+2  26 8 0 0 6.28318530717959
+6  29 4 0
+6  30 10 0
+0
+
+0101000
++16 0 -16 0 *
+Wi
+
+0101100
++48 0 -15 0 -14 0 +15 0 *
+Fa
+0  1e-07 2 0
+2  4
+0101000
++13 0 *
+Wi
+
+0101100
++14 0 *
+Ve
+1.00000120792265e-07
+40.0891862868638 167.582144649066 53.6650441436989
+0 0
+
+0101101
+*
+Ed
+ 1e-07 1 1 0
+1  14 0 0 6.28318530717959
+2  27 8 0 0 6.28318530717959
+2  28 3 1 0 6.28318530717959
+6  31 7 0
+6  32 10 0
+0
+
+0101000
++10 0 -10 0 *
+Wi
+
+0101100
+-9 0 *
+Fa
+0  1e-07 8 0
+2  10
+0101000
++11 0 +8 0 *
+Ed
+ 1e-07 1 1 0
+1  7 0 2191.25284262464 2400
+3  13 14CN 3 0 2191.25284262464 2400
+7  33 34 7 3
+0
+
+0101000
++42 3 -10 3 *
+Wi
+
+0101100
++6 1 +41 0 -6 1 -9 0 *
+Fa
+0  1e-07 3 1
+2  7
+0101000
++5 0 *
+Sh
+
+0101100
++12 0 -32 0 +7 0 -4 0 *
+So
+
+0100000
++3 0 *
+Co
+
+1100000
++17 0 +2 0 *
+
++1 0 ]]></shape>
+    <topology>
+      <vertices count="10">
+        <vertex index="0" name="" reference="7"/>
+        <vertex index="1" name="" reference="10"/>
+        <vertex index="2" name="" reference="14"/>
+        <vertex index="3" name="" reference="18"/>
+        <vertex index="4" name="" reference="22"/>
+        <vertex index="5" name="" reference="26"/>
+        <vertex index="6" name="" reference="33"/>
+        <vertex index="7" name="" reference="38"/>
+        <vertex index="8" name="" reference="48"/>
+        <vertex index="9" name="" reference="54"/>
+      </vertices>
+      <edges count="16">
+        <edge index="0" name="" reference="6"/>
+        <edge index="1" name="" reference="9"/>
+        <edge index="2" name="" reference="13"/>
+        <edge index="3" name="" reference="15"/>
+        <edge index="4" name="" reference="17"/>
+        <edge index="5" name="" reference="21"/>
+        <edge index="6" name="" reference="23"/>
+        <edge index="7" name="" reference="25"/>
+        <edge index="8" name="" reference="32"/>
+        <edge index="9" name="" reference="34"/>
+        <edge index="10" name="" reference="37"/>
+        <edge index="11" name="" reference="39"/>
+        <edge index="12" name="" reference="47"/>
+        <edge index="13" name="" reference="49"/>
+        <edge index="14" name="" reference="53"/>
+        <edge index="15" name="" reference="57"/>
+      </edges>
+      <faces count="10">
+        <face index="0" name="" reference="4"/>
+        <face index="1" name="" reference="11"/>
+        <face index="2" name="" reference="19"/>
+        <face index="3" name="" reference="27"/>
+        <face index="4" name="" reference="30"/>
+        <face index="5" name="" reference="35"/>
+        <face index="6" name="" reference="40"/>
+        <face index="7" name="" reference="45"/>
+        <face index="8" name="" reference="50"/>
+        <face index="9" name="" reference="55"/>
+      </faces>
+      <solids count="2">
+        <solid index="0" name="" reference="2"/>
+        <solid index="1" name="" reference="43"/>
+      </solids>
+    </topology>
+  </geometry>
+  <groups count="15">
+    <group name="IN1" dimension="face" count="1">
+      <element index="0"/>
+    </group>
+    <group name="IN2" dimension="face" count="1">
+      <element index="6"/>
+    </group>
+    <group name="IN2_E" dimension="edge" count="1">
+      <element index="9"/>
+    </group>
+    <group name="IN2_I" dimension="edge" count="1">
+      <element index="11"/>
+    </group>
+    <group name="INT_E" dimension="edge" count="1">
+      <element index="4"/>
+    </group>
+    <group name="INT_I" dimension="edge" count="1">
+      <element index="7"/>
+    </group>
+    <group name="OUT" dimension="face" count="1">
+      <element index="8"/>
+    </group>
+    <group name="POINT" dimension="vertex" count="1">
+      <element index="3"/>
+    </group>
+    <group name="T1_EXT_I" dimension="face" count="1">
+      <element index="1"/>
+    </group>
+    <group name="T1_EXT_O" dimension="face" count="1">
+      <element index="7"/>
+    </group>
+    <group name="T1_INT_I" dimension="face" count="1">
+      <element index="2"/>
+    </group>
+    <group name="T1_INT_O" dimension="face" count="1">
+      <element index="9"/>
+    </group>
+    <group name="T2_EXT" dimension="face" count="1">
+      <element index="4"/>
+    </group>
+    <group name="T2_INT" dimension="face" count="1">
+      <element index="5"/>
+    </group>
+    <group name="VOLUME" dimension="solid" count="2">
+      <element index="0"/>
+      <element index="1"/>
+    </group>
+  </groups>
+  <fields count="0"/>
+</XAO>
diff --git a/doc/examples/data/tutorial_5.00.med b/doc/examples/data/tutorial_5.00.med
new file mode 100644 (file)
index 0000000..9c1893a
Binary files /dev/null and b/doc/examples/data/tutorial_5.00.med differ
diff --git a/doc/examples/data/tutorial_5.fr.med b/doc/examples/data/tutorial_5.fr.med
new file mode 100644 (file)
index 0000000..d4faa4c
Binary files /dev/null and b/doc/examples/data/tutorial_5.fr.med differ
diff --git a/doc/examples/defining_hypotheses_adaptive1d.py b/doc/examples/defining_hypotheses_adaptive1d.py
new file mode 100644 (file)
index 0000000..e0f567a
--- /dev/null
@@ -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 )
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex01.py b/doc/examples/defining_hypotheses_ex01.py
new file mode 100644 (file)
index 0000000..48571de
--- /dev/null
@@ -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
+if not hexa.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex02.py b/doc/examples/defining_hypotheses_ex02.py
new file mode 100644 (file)
index 0000000..b98b1a1
--- /dev/null
@@ -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
+if not hexa.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex03.py b/doc/examples/defining_hypotheses_ex03.py
new file mode 100644 (file)
index 0000000..56be06d
--- /dev/null
@@ -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
+if not hexa.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex04.py b/doc/examples/defining_hypotheses_ex04.py
new file mode 100644 (file)
index 0000000..f27cb3b
--- /dev/null
@@ -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
+if not hexa.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex05.py b/doc/examples/defining_hypotheses_ex05.py
new file mode 100644 (file)
index 0000000..e18cceb
--- /dev/null
@@ -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
+if not tria_mesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex06.py b/doc/examples/defining_hypotheses_ex06.py
new file mode 100644 (file)
index 0000000..351dc79
--- /dev/null
@@ -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:
+    raise Exception("problem when computing the mesh")
+
+print("Computation succeeded")
diff --git a/doc/examples/defining_hypotheses_ex07.py b/doc/examples/defining_hypotheses_ex07.py
new file mode 100644 (file)
index 0000000..3cc6860
--- /dev/null
@@ -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
+if not tria.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex08.py b/doc/examples/defining_hypotheses_ex08.py
new file mode 100644 (file)
index 0000000..d59d443
--- /dev/null
@@ -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
+if not hexa.Compute(): raise Exception("Error when computing Mesh")
+
+# 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
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex09.py b/doc/examples/defining_hypotheses_ex09.py
new file mode 100644 (file)
index 0000000..cb02c91
--- /dev/null
@@ -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
+if not hexa.Compute(): raise Exception("Error when computing Mesh")
+
+# 2. Create a tetrahedral mesh on the box
+tetra = smesh_builder.Mesh(box, "Box : tetrahedrical mesh")
+
+# create a 1D algorithm for edges
+algo1D = tetra.Segment()
+
+# create a 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
+if not tetra.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex10.py b/doc/examples/defining_hypotheses_ex10.py
new file mode 100644 (file)
index 0000000..92e0f11
--- /dev/null
@@ -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
+if not src_mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 )
+if not tgt_mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..0fb36d3
--- /dev/null
@@ -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 default algorithm
+src_mesh = smesh_builder.Mesh(Face_1, "Source mesh")
+src_mesh.Segment().NumberOfSegments(15)
+src_mesh.Triangle()
+if not src_mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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)
+if not tgt_mesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex12.py b/doc/examples/defining_hypotheses_ex12.py
new file mode 100644 (file)
index 0000000..d391b5f
--- /dev/null
@@ -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
+if not Mesh_1.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex13.py b/doc/examples/defining_hypotheses_ex13.py
new file mode 100644 (file)
index 0000000..0ef0433
--- /dev/null
@@ -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
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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)
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# Define own parameters of Radial Quadrange algorithm
+# The number of radial layers will be 4
+radial_Quad_algo.NumberOfLayers( 4 )
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex14.py b/doc/examples/defining_hypotheses_ex14.py
new file mode 100644 (file)
index 0000000..bc7ce0b
--- /dev/null
@@ -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
+if not Mesh_1.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex15.py b/doc/examples/defining_hypotheses_ex15.py
new file mode 100644 (file)
index 0000000..06ec83c
--- /dev/null
@@ -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)
+if not Mesh_1.Compute(): raise Exception("Error when computing Mesh")
+
+# Change type to Reduced and compute again
+Quadrangle_Parameters_1.SetQuadType( smeshBuilder.QUAD_REDUCED )
+if not Mesh_1.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex16.py b/doc/examples/defining_hypotheses_ex16.py
new file mode 100644 (file)
index 0000000..c3fb9ec
--- /dev/null
@@ -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()
+if not srcMesh.Compute(): raise Exception("Error when computing Mesh")
+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()
+if not tgtMesh.Compute(): raise Exception("Error when computing Mesh")
+
+# Import the whole source mesh with groups
+import2hyp.SetCopySourceMesh(True,True)
+if not tgtMesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_ex17.py b/doc/examples/defining_hypotheses_ex17.py
new file mode 100644 (file)
index 0000000..9861b2a
--- /dev/null
@@ -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
+
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 )
+
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_len_near_vertex.py b/doc/examples/defining_hypotheses_len_near_vertex.py
new file mode 100644 (file)
index 0000000..5fca17b
--- /dev/null
@@ -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 )
+
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/defining_hypotheses_vlapi_ex17.py b/doc/examples/defining_hypotheses_vlapi_ex17.py
new file mode 100644 (file)
index 0000000..3f4ed36
--- /dev/null
@@ -0,0 +1,84 @@
+# 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]
+# 4 left, 34 middle, 50 right
+# Have to pass the middle face id, otherwise it is going to create two disjoint boxes
+# because the common face is not going to be ignored and both boxes are going to shrink
+# in this direction too
+ignoreFaces = [4,34,50]
+
+geom_builder.addToStudy( shape, "shape" )
+geom_builder.addToStudyInFather( shape, face1, "face1")
+
+# 3D Viscous layers
+mesh = smesh_builder.Mesh(shape, "CFD")
+
+ViscousBuilder = mesh.ViscousLayerBuilder()
+thickness = 20 
+numberOfLayers = 10
+stretchFactor = 1.5
+groupName = "Boundary layers"
+ViscousBuilder.setBuilderParameters( thickness, numberOfLayers, stretchFactor, 
+                                                ignoreFaces,                # optional
+                                                groupName = groupName )     # optional
+
+Shrinkshape = ViscousBuilder.GetShrinkGeometry()
+
+shrinkMesh = smesh_builder.Mesh(Shrinkshape, "Shrink")
+shrinkMesh.Segment().NumberOfSegments( 4 )
+faces = geom_builder.SubShapeAllSorted(Shrinkshape, geom_builder.ShapeType["FACE"])
+shrinkFace1 = faces[1]
+
+shrinkMesh.Triangle()
+shrinkMesh.Quadrangle(shrinkFace1)
+algo3D = shrinkMesh.Tetrahedron()
+
+if not shrinkMesh.Compute(): raise Exception("Error when computing Mesh")
+
+#Add viscous layer
+FinalMesh = ViscousBuilder.AddLayers( shrinkMesh )
+
+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,"Face1")
+ViscousBuilder = mesh.ViscousLayerBuilder()
+ViscousBuilder.setBuilderParameters( 2, 3, 1.5, 
+                                    edgeIds, True, # optional
+                                    groupName = groupName )     # optional
+
+#For 2D, edges are not selectable (to be developed in occt) the entire face is shrink
+shrinkFace = ViscousBuilder.GetShrinkGeometry()
+shrinkMesh = smesh_builder.Mesh(shrinkFace, "VicsousLayers2D")
+
+shrinkMesh.Segment().NumberOfSegments( 5 )
+algo2D = shrinkMesh.Triangle()
+
+if not shrinkMesh.Compute(): raise Exception("Error when computing Mesh of shrink face")
+
+FinalMeshFace = ViscousBuilder.AddLayers( shrinkMesh )
\ No newline at end of file
diff --git a/doc/examples/filters_belong2group.py b/doc/examples/filters_belong2group.py
new file mode 100644 (file)
index 0000000..e8d0395
--- /dev/null
@@ -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 (file)
index 0000000..5f1604f
--- /dev/null
@@ -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 (file)
index 0000000..1e00b70
--- /dev/null
@@ -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 (file)
index 0000000..c10c1eb
--- /dev/null
@@ -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 (file)
index 0000000..96d9e2e
--- /dev/null
@@ -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 (file)
index 0000000..f3ddf6a
--- /dev/null
@@ -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 (file)
index 0000000..a62dbf6
--- /dev/null
@@ -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 (file)
index 0000000..1684de1
--- /dev/null
@@ -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 (file)
index 0000000..a56e45b
--- /dev/null
@@ -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 (file)
index 0000000..30bf3d9
--- /dev/null
@@ -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)
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..741bfe1
--- /dev/null
@@ -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)
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..3c4751b
--- /dev/null
@@ -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 (file)
index 0000000..9dc0213
--- /dev/null
@@ -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 (file)
index 0000000..89e7acd
--- /dev/null
@@ -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 (file)
index 0000000..a5e0273
--- /dev/null
@@ -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 (file)
index 0000000..ff022e6
--- /dev/null
@@ -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 (file)
index 0000000..01b2fa4
--- /dev/null
@@ -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()
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+# 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 (file)
index 0000000..9d6c27c
--- /dev/null
@@ -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()
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+# 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 (file)
index 0000000..22369a4
--- /dev/null
@@ -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()
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+# 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 (file)
index 0000000..b55a08a
--- /dev/null
@@ -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 (file)
index 0000000..d0a22f6
--- /dev/null
@@ -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 (file)
index 0000000..229a0ca
--- /dev/null
@@ -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 (file)
index 0000000..96f8bda
--- /dev/null
@@ -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 (file)
index 0000000..8a34c16
--- /dev/null
@@ -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 (file)
index 0000000..2d8075c
--- /dev/null
@@ -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 (file)
index 0000000..2cae3e1
--- /dev/null
@@ -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 (file)
index 0000000..71bfc4b
--- /dev/null
@@ -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 (file)
index 0000000..8ac06e3
--- /dev/null
@@ -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 (file)
index 0000000..19e6983
--- /dev/null
@@ -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 (file)
index 0000000..5b2b9db
--- /dev/null
@@ -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 (file)
index 0000000..b34bdad
--- /dev/null
@@ -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 (file)
index 0000000..5bbad4e
--- /dev/null
@@ -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 (file)
index 0000000..f0e0781
--- /dev/null
@@ -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 (file)
index 0000000..8d90a65
--- /dev/null
@@ -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 (file)
index 0000000..5fcb89a
--- /dev/null
@@ -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 (file)
index 0000000..a44fce5
--- /dev/null
@@ -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 (file)
index 0000000..ebf39f3
--- /dev/null
@@ -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 (file)
index 0000000..821e241
--- /dev/null
@@ -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 (file)
index 0000000..1aee732
--- /dev/null
@@ -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 (file)
index 0000000..587138e
--- /dev/null
@@ -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 ) ])
+
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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_ex40.py b/doc/examples/filters_ex40.py
new file mode 100644 (file)
index 0000000..8abb7e4
--- /dev/null
@@ -0,0 +1,9 @@
+# Scaled Jacobian
+
+# create mesh with volumes
+from mechanic import *
+
+# get volumes with scaled jacobian > 0.75
+filter = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_ScaledJacobian, SMESH.FT_MoreThan, 0.75 )
+ids = mesh.GetIdsFromFilter(filter)
+print("Number of volumes with scaled jacobian > 0.75:", len(ids))
diff --git a/doc/examples/filters_ex41.py b/doc/examples/filters_ex41.py
new file mode 100644 (file)
index 0000000..30fec54
--- /dev/null
@@ -0,0 +1,9 @@
+# Warping 3D
+
+# create mesh
+from mechanic import *
+
+# get faces with warping angle = 2.0e-13 with tolerance 5.0e-14
+filter = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_Warping3D, "=", 2.0e-13, Tolerance=5.0e-14)
+ids = mesh.GetIdsFromFilter(filter)
+print("Number of volumes with warping = 2.0e-13 (tolerance 5.0e-14):", len(ids))
diff --git a/doc/examples/filters_node_nb_conn.py b/doc/examples/filters_node_nb_conn.py
new file mode 100644 (file)
index 0000000..052ff9d
--- /dev/null
@@ -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 (file)
index 0000000..f816da0
--- /dev/null
@@ -0,0 +1,62 @@
+# 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)
+Mesh_1.Segment().NumberOfSegments(15)
+Mesh_1.Triangle().LengthFromEdges()
+Mesh_1.Tetrahedron()
+if not Mesh_1.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..e76dbde
--- /dev/null
@@ -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 (file)
index 0000000..fff4b40
--- /dev/null
@@ -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
+if not quadra.Compute(): raise Exception("Error when computing Mesh")
+
+# create SMESH group on the face with name "SMESHGroup1"
+aSmeshGroup1 = quadra.GroupOnGeom(face, "SMESHGroup1")
+
+# create SMESH group on <aGeomGroupE> 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 (file)
index 0000000..2c592ae
--- /dev/null
@@ -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()
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 )
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+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 (file)
index 0000000..d3b88c1
--- /dev/null
@@ -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 (file)
index 0000000..a1ef0a5
--- /dev/null
@@ -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 (file)
index 0000000..e6bbd49
--- /dev/null
@@ -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 (file)
index 0000000..98108fd
--- /dev/null
@@ -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 (file)
index 0000000..244e8c7
--- /dev/null
@@ -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 (file)
index 0000000..e46deda
--- /dev/null
@@ -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 (file)
index 0000000..9e1053d
--- /dev/null
@@ -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)
+
+if not mesh1.Compute(): raise Exception("Error when computing Mesh")
+if not mesh2.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..e4d8338
--- /dev/null
@@ -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)
+
+if not mesh1.Compute(): raise Exception("Error when computing Mesh")
+if not mesh2.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..77a59ee
--- /dev/null
@@ -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)
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..ab66d2c
--- /dev/null
@@ -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 (file)
index 0000000..37a372e
--- /dev/null
@@ -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
+
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/mesh_3d.py b/doc/examples/mesh_3d.py
new file mode 100644 (file)
index 0000000..0041b61
--- /dev/null
@@ -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
+if not tetra.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..f45cc19
--- /dev/null
@@ -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 (file)
index 0000000..ceeb3c0
--- /dev/null
@@ -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 (file)
index 0000000..1f1aeca
--- /dev/null
@@ -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 (file)
index 0000000..d5a5249
--- /dev/null
@@ -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 (file)
index 0000000..ffd16eb
--- /dev/null
@@ -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 (file)
index 0000000..ba62dfc
--- /dev/null
@@ -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 (file)
index 0000000..449f753
--- /dev/null
@@ -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 (file)
index 0000000..898c3a2
--- /dev/null
@@ -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 (file)
index 0000000..5face16
--- /dev/null
@@ -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 (file)
index 0000000..b015f10
--- /dev/null
@@ -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 <nb_vert> 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 (file)
index 0000000..d880897
--- /dev/null
@@ -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 (file)
index 0000000..4555823
--- /dev/null
@@ -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)
+
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+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 (file)
index 0000000..74c9797
--- /dev/null
@@ -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 (file)
index 0000000..0ef3c30
--- /dev/null
@@ -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 (file)
index 0000000..5b570e3
--- /dev/null
@@ -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()
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..49c009e
--- /dev/null
@@ -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 (file)
index 0000000..cc82746
--- /dev/null
@@ -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 (file)
index 0000000..40a890b
--- /dev/null
@@ -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 (file)
index 0000000..79f4cc9
--- /dev/null
@@ -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 (file)
index 0000000..87f3877
--- /dev/null
@@ -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 (file)
index 0000000..c351259
--- /dev/null
@@ -0,0 +1,18 @@
+# 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)
+res0 = mesh.SmoothObject(group_smooth, [], 20, 2., smesh_builder.CENTROIDAL_SMOOTH)
+res1 = mesh.SmoothObject(group_smooth, [], 20, 2., smesh_builder.LAPLACIAN_SMOOTH)
+print("\nSmoothing ... ", end=' ')
+if not (res0 and res1): 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 (file)
index 0000000..ca1e30e
--- /dev/null
@@ -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 (file)
index 0000000..acfb757
--- /dev/null
@@ -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: raise Exception('Mesh %s: computation failed' % name)
+  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 (file)
index 0000000..07f6980
--- /dev/null
@@ -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 (file)
index 0000000..b01e6be
--- /dev/null
@@ -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: raise Exception('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: raise Exception('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: raise Exception('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: raise Exception('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 (file)
index 0000000..1a8ea2a
--- /dev/null
@@ -0,0 +1,50 @@
+# 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 tetrahedral mesh
+
+Mesh = smesh_builder.Mesh(Sphere)
+Mesh.Segment().NumberOfSegments(5)
+Mesh.Triangle()
+Mesh.Tetrahedron()
+
+# compute mesh
+
+if not Mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..f41fafe
--- /dev/null
@@ -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 (file)
index 0000000..9e65604
--- /dev/null
@@ -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
+if not tetra.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..481fdad
--- /dev/null
@@ -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
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/quad_medial_axis_algo.py b/doc/examples/quad_medial_axis_algo.py
new file mode 100644 (file)
index 0000000..669cfd8
--- /dev/null
@@ -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
+
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/quality_controls_defl.py b/doc/examples/quality_controls_defl.py
new file mode 100644 (file)
index 0000000..e9c4074
--- /dev/null
@@ -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()
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..76b8be6
--- /dev/null
@@ -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.)
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..e4c6c52
--- /dev/null
@@ -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.)
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..cfe71c9
--- /dev/null
@@ -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.)
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..b4c1dd2
--- /dev/null
@@ -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 (file)
index 0000000..008ee2f
--- /dev/null
@@ -0,0 +1,49 @@
+# 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")
+mesh.Segment().NumberOfSegments(10)
+mesh.Triangle().MaxElementArea(150.)
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..22d6a9b
--- /dev/null
@@ -0,0 +1,74 @@
+# 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)
+Mesh_1.Segment().MaxSize(34.641)
+Mesh_1.Triangle()
+Mesh_1.Tetrahedron()
+if not Mesh_1.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..5b1b695
--- /dev/null
@@ -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()
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..61c7a25
--- /dev/null
@@ -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 (file)
index 0000000..c05ba61
--- /dev/null
@@ -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 (file)
index 0000000..b369234
--- /dev/null
@@ -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 (file)
index 0000000..731b3b0
--- /dev/null
@@ -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.)
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..1e875a8
--- /dev/null
@@ -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.)
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..994025f
--- /dev/null
@@ -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 (file)
index 0000000..23f9f5e
--- /dev/null
@@ -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 (file)
index 0000000..2775b20
--- /dev/null
@@ -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 (file)
index 0000000..df4ba5e
--- /dev/null
@@ -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 (file)
index 0000000..b8ebd9a
--- /dev/null
@@ -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 (file)
index 0000000..1ca2cb4
--- /dev/null
@@ -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 (file)
index 0000000..daf2f83
--- /dev/null
@@ -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 (file)
index 0000000..2767919
--- /dev/null
@@ -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 (file)
index 0000000..1fb8bb4
--- /dev/null
@@ -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 (file)
index 0000000..c33c3ec
--- /dev/null
@@ -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/quality_controls_ex23.py b/doc/examples/quality_controls_ex23.py
new file mode 100644 (file)
index 0000000..f34704a
--- /dev/null
@@ -0,0 +1,25 @@
+# Warping
+
+from mechanic import *
+
+# Criterion : WARP ANGLE > 1e-15
+wa_margin = 1e-15
+
+aFilter = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_Warping3D, 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.VOLUME, "Warp > " + repr(wa_margin))
+
+aGroup.Add(anIds)
diff --git a/doc/examples/quality_controls_ex24.py b/doc/examples/quality_controls_ex24.py
new file mode 100644 (file)
index 0000000..3bce488
--- /dev/null
@@ -0,0 +1,24 @@
+# Scaled Jacobian
+
+from mechanic import *
+
+# Criterion : Scaled Jacobian > 0.75
+scaledJacobian = 0.75
+
+aFilter = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_ScaledJacobian, SMESH.FT_MoreThan, scaledJacobian)
+
+anIds = mesh.GetIdsFromFilter(aFilter) 
+
+# print the result
+print("Criterion: Scaled Jacobian > ", scaledJacobian, " 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, "Scaled Jacobian > " + repr(scaledJacobian))
+aGroup.Add(anIds)
\ No newline at end of file
diff --git a/doc/examples/radial_prism_3d_algo.py b/doc/examples/radial_prism_3d_algo.py
new file mode 100644 (file)
index 0000000..a84ecc8
--- /dev/null
@@ -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
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/split_biquad.py b/doc/examples/split_biquad.py
new file mode 100644 (file)
index 0000000..a8e51ed
--- /dev/null
@@ -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] )
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..0c1d88f
--- /dev/null
@@ -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)
+if smeshhomard.Compute() != 0: raise Exception("Error when computing Mesh")
+
+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)
+if smeshhomard.Compute() != 0: raise Exception("Error when computing Mesh")
+
+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 (file)
index 0000000..1b362b0
--- /dev/null
@@ -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)
+if smeshhomard.Compute() != 0: raise Exception("Error when computing Mesh")
+
+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)
+if smeshhomard.Compute() != 0: raise Exception("Error when computing Mesh")
+
+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 (file)
index 0000000..ca05a2a
--- /dev/null
@@ -0,0 +1,208 @@
+# Copyright (C) 2015-2024  CEA, EDF, 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_ex04.py
+  creating_meshes_ex05.py
+  creating_meshes_ex08.py
+  defining_hypotheses_ex02.py
+  defining_hypotheses_ex05.py
+  defining_hypotheses_ex06.py
+  defining_hypotheses_ex07.py
+  defining_hypotheses_ex09.py
+  defining_hypotheses_ex10.py
+  defining_hypotheses_ex11.py
+  defining_hypotheses_ex17.py
+  defining_hypotheses_vlapi_ex17.py
+  defining_hypotheses_adaptive1d.py
+  filters_ex01.py
+  filters_ex02.py
+  filters_ex03.py
+  filters_ex04.py
+  filters_ex05.py
+  filters_ex06.py
+  filters_ex07.py
+  filters_ex08.py
+  filters_ex09.py
+  filters_ex10.py
+  filters_ex11.py
+  filters_ex12.py
+  filters_ex13.py
+  filters_ex14.py
+  filters_ex15.py
+  filters_ex19.py
+  filters_ex20.py
+  filters_ex21.py
+  filters_ex22.py
+  filters_ex23.py
+  filters_ex24.py
+  filters_ex25.py
+  filters_ex26.py
+  filters_ex27.py
+  filters_ex28.py
+  filters_ex29.py
+  filters_ex30.py
+  filters_ex31.py
+  filters_ex32.py
+  filters_ex33.py
+  filters_ex34.py
+  filters_ex35.py
+  filters_ex36.py
+  filters_ex37.py
+  filters_ex38.py
+  filters_ex40.py
+  filters_node_nb_conn.py
+  filters_belong2group.py
+  generate_flat_elements.py
+  grouping_elements_ex01.py
+  grouping_elements_ex04.py
+  grouping_elements_ex05.py
+  grouping_elements_ex06.py
+  grouping_elements_ex07.py
+  grouping_elements_ex08.py
+  measurements_ex01.py
+  measurements_ex02.py
+  measurements_ex03.py
+  mesh_3d.py
+  modifying_meshes_ex04.py
+  modifying_meshes_ex05.py
+  modifying_meshes_ex06.py
+  modifying_meshes_ex07.py
+  modifying_meshes_ex08.py
+  modifying_meshes_ex11.py
+  modifying_meshes_ex12.py
+  modifying_meshes_ex13.py
+  modifying_meshes_ex26.py
+  modifying_meshes_ex20.py
+  modifying_meshes_ex21.py
+  modifying_meshes_ex24.py
+  modifying_meshes_ex25.py
+  prism_3d_algo.py
+  notebook_smesh.py
+  quality_controls_ex01.py
+  quality_controls_ex02.py
+  quality_controls_ex03.py
+  quality_controls_ex04.py
+  quality_controls_ex05.py
+  quality_controls_ex06.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_ex20.py
+  quality_controls_ex21.py
+  quality_controls_ex22.py
+  quality_controls_ex24.py
+  quality_controls_defl.py
+  split_biquad.py
+  transforming_meshes_ex01.py
+  transforming_meshes_ex02.py
+  transforming_meshes_ex04.py
+  transforming_meshes_ex05.py
+  transforming_meshes_ex06.py
+  transforming_meshes_ex15.py
+  viewing_meshes_ex01.py
+  radial_prism_3d_algo.py
+  create_dual_mesh.py
+  creating_parallel_mesh.py  
+  creating_parallel_gmsh_mesh.py
+  creating_parallel_2D_mesh.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_ex06.py
+  creating_meshes_ex07.py
+  defining_hypotheses_ex01.py
+  defining_hypotheses_ex03.py
+  defining_hypotheses_ex04.py
+  defining_hypotheses_ex08.py
+  defining_hypotheses_ex12.py
+  defining_hypotheses_ex13.py
+  defining_hypotheses_ex14.py
+  defining_hypotheses_ex15.py
+  defining_hypotheses_ex16.py
+  filters_ex16.py
+  filters_ex17.py
+  filters_ex18.py
+  filters_ex39.py
+  grouping_elements_ex02.py
+  grouping_elements_ex03.py
+  grouping_elements_ex09.py
+  measurements_ex04.py
+  modifying_meshes_ex01.py
+  modifying_meshes_ex02.py
+  modifying_meshes_ex03.py
+  modifying_meshes_ex09.py
+  modifying_meshes_ex10.py
+  modifying_meshes_ex15.py
+  modifying_meshes_ex16.py
+  modifying_meshes_ex17.py
+  modifying_meshes_ex18.py
+  modifying_meshes_ex19.py
+  modifying_meshes_ex22.py
+  modifying_meshes_ex23.py
+  modifying_meshes_cut_triangles.py
+  modifying_meshes_split_vol.py
+  quality_controls_ex07.py
+  quality_controls_ex08.py
+  quality_controls_ex09.py
+  quality_controls_ex10.py
+  transforming_meshes_ex03.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
+  transforming_meshes_ex14.py
+  use_existing_faces.py
+  viewing_meshes_ex02.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 (file)
index 0000000..27dd161
--- /dev/null
@@ -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 (file)
index 0000000..d516a79
--- /dev/null
@@ -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 (file)
index 0000000..750040b
--- /dev/null
@@ -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()
+if not Mesh1.Compute(): raise Exception("Error when computing Mesh")
+
+#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 (file)
index 0000000..cd421fe
--- /dev/null
@@ -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 (file)
index 0000000..4d3b349
--- /dev/null
@@ -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 (file)
index 0000000..72fd27d
--- /dev/null
@@ -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()
+
+if not trias.Compute(): raise Exception("Error when computing Mesh")
+
+# 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)
+if not circlemesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..e54dec1
--- /dev/null
@@ -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()
+
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..50249a7
--- /dev/null
@@ -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()
+
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..7941b29
--- /dev/null
@@ -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()
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..317a61b
--- /dev/null
@@ -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()
+
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..a08d21f
--- /dev/null
@@ -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
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..edf9120
--- /dev/null
@@ -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 (file)
index 0000000..8ee0260
--- /dev/null
@@ -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 )
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+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/transforming_meshes_ex14.py b/doc/examples/transforming_meshes_ex14.py
new file mode 100644 (file)
index 0000000..38010b2
--- /dev/null
@@ -0,0 +1,47 @@
+# Create 2D mesh from 3D 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])
+
+## -----------
+##
+## Create 2D from 3D elements
+##
+## -----------
+
+init_mesh = smesh_builder.Mesh(box, "box")
+init_mesh.AutomaticHexahedralization() # it makes 3 x 3 x 3 hexahedrons
+init_mesh.Compute()
+
+mesh_1 = smesh_builder.CopyMesh(init_mesh, "Mesh_1")
+#Return the number of created faces in the original mesh.
+nb, new_mesh, new_group = mesh_1.MakeBoundaryOfEachElement()
+
+if nb != 54: raise Exception("Error on MakeBoundaryOfEachElement call. The number of created elements does not match.")
+if new_mesh.GetId() != mesh_1.GetId(): raise Exception("The mesh created from MakeBoundaryElements should be the same of the call")
+if new_group: raise Exception("The group created from MakeBoundaryElements should be undefined")
+
+mesh_2 = smesh_builder.CopyMesh(init_mesh, "Mesh_2")
+
+#Return the number of created faces and a new_mesh and new_group 
+nb, new_mesh, new_group = mesh_2.MakeBoundaryOfEachElement("MyFacesElements", "Face_Mesh")
+if nb != 54: raise Exception("Error on MakeBoundaryOfEachElement call. The number of created elements does not match.")
+if new_mesh.GetId() == mesh_2.GetId(): raise Exception("The mesh created from MakeBoundaryElements should be the different of the call")
+if not new_group: raise Exception("The group created from MakeBoundaryElements should be defined")
diff --git a/doc/examples/transforming_meshes_ex15.py b/doc/examples/transforming_meshes_ex15.py
new file mode 100644 (file)
index 0000000..42dfa64
--- /dev/null
@@ -0,0 +1,40 @@
+# Offset 2D mesh, sub-mesh, group or elements from 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(100, 100, 100)
+
+## -----------
+##
+## Offset mesh
+##
+## -----------
+
+init_mesh = smesh_builder.Mesh(box, "box")
+init_mesh.AutomaticTetrahedralization()
+init_mesh.Compute()
+
+#Offset triangular elements in mesh (expand the entire mesh)
+offset = 20
+mesh, mesh_group = init_mesh.Offset( init_mesh, offset, MakeGroups=False, CopyElements=False )
+assert isinstance( mesh, smeshBuilder.Mesh )
+assert len( mesh_group ) == 0
+offsetMeshArea = smesh_builder.GetArea(mesh)
+
+#Offset triangular elements in mesh (shrink the entire mesh)
+offset = -20
+mesh, mesh_group = init_mesh.Offset( init_mesh, offset, MakeGroups=False, CopyElements=False, NewMeshName="MeshShrink" )
+assert isinstance( mesh, smeshBuilder.Mesh )
+assert len( mesh_group ) == 0
+assert mesh.GetName() == "MeshShrink"
+shrinkMeshArea = smesh_builder.GetArea(mesh)
+
+assert offsetMeshArea > shrinkMeshArea
\ No newline at end of file
diff --git a/doc/examples/use_existing_faces.py b/doc/examples/use_existing_faces.py
new file mode 100644 (file)
index 0000000..ef13199
--- /dev/null
@@ -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 )
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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)
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# compute 3D mesh
+mesh.Prism()
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
diff --git a/doc/examples/viewing_meshes_ex01.py b/doc/examples/viewing_meshes_ex01.py
new file mode 100644 (file)
index 0000000..ded69ba
--- /dev/null
@@ -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)
+if not tetra.Compute(): raise Exception("Error when computing Mesh")
+submesh = Regular_1D_1_1.GetSubMesh()
+
+# compute the mesh
+if not tetra.Compute(): raise Exception("Error when computing Mesh")
+
+# 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 (file)
index 0000000..ddaba32
--- /dev/null
@@ -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()
+if not mesh.Compute(): raise Exception("Error when computing Mesh")
+
+# 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/examples/viewing_meshes_ex03.py b/doc/examples/viewing_meshes_ex03.py
new file mode 100644 (file)
index 0000000..a46ecc4
--- /dev/null
@@ -0,0 +1,306 @@
+#!/usr/bin/env python
+
+###
+### This file shows how to get the information that are displayed when using Mesh Information for elements/nodes
+###
+
+import sys
+import salome
+
+salome.salome_init()
+import salome_notebook
+notebook = salome_notebook.NoteBook()
+sys.path.insert(0, r'/local00/home/B61570/work_in_progress/mesh_info')
+
+###
+### GEOM component
+###
+
+import GEOM
+from salome.geom import geomBuilder
+import math
+import SALOMEDS
+
+
+geompy = geomBuilder.New()
+
+Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200)
+geompy.addToStudy( Box_1, 'Box_1' )
+bottom = geompy.CreateGroup(Box_1, geompy.ShapeType["FACE"])
+geompy.UnionIDs(bottom, [31])
+
+###
+### SMESH component
+###
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+
+
+## Tetra
+NETGEN_3D_Parameters_1 = smesh.CreateHypothesisByAverageLength( 'NETGEN_Parameters', 'NETGENEngine', 25, 0 )
+Mesh_tetra = smesh.Mesh(Box_1,'Mesh_tetra')
+status = Mesh_tetra.AddHypothesis( Box_1, NETGEN_3D_Parameters_1 )
+NETGEN_1D_2D_3D = Mesh_tetra.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)
+isDone = Mesh_tetra.Compute()
+if not isDone:
+    raise ("Could not compute mesh: "+Mesh_tetra.GetName())
+
+## Tetra
+Mesh_quadratic = smesh.Mesh(Box_1,'Mesh_quadratic')
+NETGEN_1D_2D_3D_1 = Mesh_quadratic.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)
+NETGEN_3D_Parameters_2 = NETGEN_1D_2D_3D_1.Parameters()
+NETGEN_3D_Parameters_2.SetMaxSize( 34.641 )
+NETGEN_3D_Parameters_2.SetMinSize( 0.34641 )
+NETGEN_3D_Parameters_2.SetSecondOrder( 1 )
+isDone = Mesh_quadratic.Compute()
+if not isDone:
+    raise ("Could not compute mesh: "+Mesh_quadratic.GetName())
+
+
+# Hexa mesh
+Mesh_hexa = smesh.Mesh(Box_1,'Mesh_hexa')
+Regular_1D = Mesh_hexa.Segment()
+Number_of_Segments_1 = Regular_1D.NumberOfSegments(15)
+Quadrangle_2D = Mesh_hexa.Quadrangle(algo=smeshBuilder.QUADRANGLE)
+Hexa_3D = Mesh_hexa.Hexahedron(algo=smeshBuilder.Hexa)
+isDone = Mesh_hexa.Compute()
+if not isDone:
+    raise ("Could not compute mesh: "+Mesh_hexa.GetName())
+
+# Poly Mesh
+Mesh_poly = smesh.CreateDualMesh(Mesh_tetra, 'dual_Mesh_1', True)
+
+# Prism mesh
+
+Mesh_prism = smesh.Mesh(Box_1,'Mesh_prism')
+Regular_1D_1 = Mesh_prism.Segment()
+Number_of_Segments_2 = Regular_1D_1.NumberOfSegments(15)
+NETGEN_1D_2D = Mesh_prism.Triangle(algo=smeshBuilder.NETGEN_1D2D,geom=bottom)
+NETGEN_2D_Parameters_1 = NETGEN_1D_2D.Parameters()
+NETGEN_2D_Parameters_1.SetMaxSize(35)
+NETGEN_2D_Parameters_1.SetMinSize(0.3)
+Prism_3D = Mesh_prism.Prism()
+isDone = Mesh_prism.Compute()
+if not isDone:
+    raise ("Could not compute mesh: "+Mesh_prism.GetName())
+
+# Pyramid mesh
+Mesh_pyramids = smesh.Mesh(Box_1,'Mesh_pyramids')
+Regular_1D_2 = Mesh_pyramids.Segment()
+Number_of_Segments_3 = Regular_1D_2.NumberOfSegments(15)
+Quadrangle_2D_1 = Mesh_pyramids.Quadrangle(algo=smeshBuilder.QUADRANGLE)
+NETGEN_3D = Mesh_pyramids.Tetrahedron()
+bottom_1 = Mesh_pyramids.GroupOnGeom(bottom,'bottom',SMESH.FACE)
+isDone = Mesh_pyramids.Compute()
+if not isDone:
+    raise ("Could not compute mesh: "+Mesh_pyramids.GetName())
+
+
+## Set names of Mesh objects
+smesh.SetName(NETGEN_1D_2D_3D.GetAlgorithm(), 'NETGEN 1D-2D-3D')
+smesh.SetName(NETGEN_3D_Parameters_1, 'NETGEN 3D Parameters_1')
+smesh.SetName(Mesh_tetra.GetMesh(), 'Mesh_tetra')
+smesh.SetName(Mesh_hexa.GetMesh(), 'Mesh_hexa')
+
+if salome.sg.hasDesktop():
+  salome.sg.updateObjBrowser()
+
+# Look in SMESH_GUI/SMESHGUI_MeshInfo.cxx +1666 for list of what is
+
+def face_info(mesh, elem_id):
+    """
+    Print equivalent of Mesh Information for a face
+    """
+    elem_type = mesh.GetElementGeomType(elem_id)
+
+    conn = mesh.GetElemNodes(elem_id)
+
+    nb_nodes = len(conn)
+
+    position = mesh.GetElementPosition(elem_id)
+    pos = f"{position.shapeType} #{position.shapeID}"
+
+    grav_center = mesh.BaryCenter(elem_id)
+
+    normal = mesh.GetFaceNormal(elem_id, normalized=True)
+
+    aspect_ratio = mesh.GetAspectRatio(elem_id)
+    #aspect_ratio = mesh.FunctorValue(SMESH.FT_AspectRatio, elem_id, isElem=True)
+
+    warping = mesh.GetWarping(elem_id)
+    #warping = mesh.FunctorValue(SMESH.FT_Warping, elem_id, isElem=True)
+
+    min_angle = mesh.GetMinimumAngle(elem_id)
+    #min_angle = mesh.FunctorValue(SMESH.FT_MinimumAngle, elem_id, isElem=True)
+
+    taper = mesh.GetTaper(elem_id)
+    #taper = mesh.FunctorValue(SMESH.FT_Taper, elem_id, isElem=True)
+
+    skew = mesh.GetSkew(elem_id)
+    #skew = mesh.FunctorValue(SMESH.FT_Skew, elem_id, isElem=True)
+
+    area = mesh.GetArea(elem_id)
+    #area = mesh.FunctorValue(SMESH.FT_Area, elem_id, isElem=True)
+
+    diameter = mesh.GetMaxElementLength(elem_id)
+    #diameter = mesh.FunctorValue(SMESH.FT_MaxElementLength2D, elem_id, isElem=True)
+
+    min_length = mesh.FunctorValue(SMESH.FT_Length2D, elem_id, isElem=True)
+
+    string = f"""
+Id: {elem_id}
+Type: {elem_type}
+Nb Nodes: {nb_nodes}
+Connectivity: {conn}
+Position: {pos}
+Gravity center:
+ - X: {grav_center[0]}
+ - Y: {grav_center[1]}
+ - Z: {grav_center[2]}
+Normal:
+ - X: {normal[0]}
+ - Y: {normal[1]}
+ - Z: {normal[2]}
+Quality:
+ - Aspect Ratio: {aspect_ratio}
+ - Warping: {warping}
+ - Minimum Angle: {min_angle}
+ - Taper: {taper}
+ - Skew: {skew}
+ - Area: {area}
+ - Element Diameter 2D: {diameter}
+ - Minimum Edge Length: {min_length}
+"""
+    print(string)
+
+def volume_info(mesh, elem_id):
+    """
+    Print equivalent of Mesh Information for a volume
+    """
+    elem_type = mesh.GetElementGeomType(elem_id)
+
+    if elem_type in [SMESH.Entity_Polyhedra, SMESH.Entity_Quad_Polyhedra]:
+        iface = 1
+        face_conn = [12]
+        conn = []
+        while face_conn != []:
+            face_conn = mesh.GetElemFaceNodes(elem_id, iface)
+            iface += 1
+            conn.append(face_conn)
+            nb_nodes = len(mesh.GetElemNodes(elem_id))
+    else:
+        conn = mesh.GetElemNodes(elem_id)
+        nb_nodes = len(conn)
+
+
+    position = mesh.GetElementPosition(elem_id)
+    pos = f"{position.shapeType} #{position.shapeID}"
+
+    grav_center = mesh.BaryCenter(elem_id)
+
+    aspect_ratio = mesh.GetAspectRatio(elem_id)
+    #aspect_ratio = mesh.FunctorValue(SMESH.FT_AspectRatio3D, elem_id, isElem=True)
+
+    volume = mesh.GetVolume(elem_id)
+    #volume = mesh.FunctorValue(SMESH.FT_Volume3D, elem_id, isElem=True)
+
+    jacob = mesh.GetScaledJacobian(elem_id)
+    #jacob = mesh.FunctorValue(SMESH.FT_ScaledJacobian, elem_id, isElem=True)
+
+    diameter = mesh.GetMaxElementLength(elem_id)
+    #diameter = mesh.FunctorValue(SMESH.FT_MaxElementLength3D, elem_id, isElem=True)
+
+    min_length = mesh.FunctorValue(SMESH.FT_Length3D, elem_id, isElem=True)
+
+    string = f"""
+Id: {elem_id}
+Type: {elem_type}
+Nb Nodes: {nb_nodes}
+Connectivity: {conn}
+Position: {pos}
+Gravity center:
+ - X: {grav_center[0]}
+ - Y: {grav_center[1]}
+ - Z: {grav_center[2]}
+Quality:
+ - Aspect Ratio 3D: {aspect_ratio}
+ - Volume: {volume}
+ - Scaled Jacobian: {jacob}
+ - Element Diameter 3D: {diameter}
+ - Minimum Edge Length: {min_length}
+"""
+    print(string)
+
+def node_info(mesh, node_id):
+
+    coord = mesh.GetNodeXYZ(node_id)
+
+    conn_edge = mesh.GetNodeInverseElements(node_id, SMESH.EDGE)
+    conn_face = mesh.GetNodeInverseElements(node_id, SMESH.FACE)
+    conn_vol = mesh.GetNodeInverseElements(node_id, SMESH.VOLUME)
+
+    position = mesh.GetNodePosition(node_id)
+    pos = f"{position.shapeType} #{position.shapeID}"
+
+    vec = [None, None]
+    vec[0:len(position.params)] = position.params
+
+    string = f"""
+Id: {node_id}
+Coordinates:
+- X: {coord[0]}
+- Y: {coord[1]}
+- Z: {coord[2]}
+Connectivity
+- Edges: {conn_edge}
+- Faces: {conn_face}
+- Volumes: {conn_vol}
+Position: {pos}
+- U: {vec[0]}
+- V: {vec[1]}
+"""
+    print(string)
+
+###
+# Volume
+##
+
+# Tetrahedron
+volume_info(Mesh_tetra, 3000)
+# Hexahedron
+volume_info(Mesh_hexa, 3000)
+# Polyhedron
+volume_info(Mesh_poly, 3000)
+# Prism
+volume_info(Mesh_prism, 1400)
+# Pyramids
+volume_info(Mesh_pyramids, 8176)
+# Quadratic tetra
+volume_info(Mesh_quadratic, 1180)
+
+###
+# Face
+##
+
+## Triangle
+face_info(Mesh_tetra, 147)
+#Quadrangle
+face_info(Mesh_hexa, 1464)
+# Polygon
+face_info(Mesh_poly, 771)
+# Quadratic triangle
+face_info(Mesh_quadratic, 138)
+
+
+###
+# Node
+###
+# U & V
+node_info(Mesh_tetra, 152)
+# U
+node_info(Mesh_tetra, 32)
+# None
+node_info(Mesh_tetra, 2)
diff --git a/doc/gui/CMakeLists.txt b/doc/gui/CMakeLists.txt
new file mode 100644 (file)
index 0000000..687ee92
--- /dev/null
@@ -0,0 +1,89 @@
+# Copyright (C) 2012-2024  CEA, EDF, 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(UseSphinx)
+
+SALOME_INSTALL_SCRIPTS(collect_mesh_methods.py ${SALOME_INSTALL_BINS})
+
+#SET(DOC_SMESH_MeshersList StdMeshers)
+SET(smesh_file "${CMAKE_CURRENT_SOURCE_DIR}/collect_mesh_methods.py")
+SET(smesh_merge_file "${CMAKE_CURRENT_SOURCE_DIR}/merge_mesh_class.py")
+
+# Define requared environment variables
+#SALOME_ACCUMULATE_ENVIRONMENT(SMESH_MeshersList NOCHECK ${DOC_SMESH_MeshersList})
+#SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH NOCHECK ${CMAKE_CURRENT_BINARY_DIR}/tmp1)
+#SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH NOCHECK ${CMAKE_CURRENT_BINARY_DIR}/tmp2)
+
+SET(ADD_VAR)
+LIST(APPEND ADD_VAR SMESH_MeshersList=StdMeshers)
+LIST(APPEND ADD_VAR PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}/tmp1)
+LIST(APPEND ADD_VAR PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}/tmp2)
+
+# Make configuration file
+SALOME_CONFIGURE_FILE(conf.py.in conf.py)
+
+IF(SALOME_SMESH_BUILD_FRENCH_DOC)
+  SET(BUILD_LANGUAGE_SWITCHER "true")
+  SALOME_CONFIGURE_FILE(static/switchers.js.in static/switchers.js)
+  ADD_MULTI_LANG_DOCUMENTATION(TARGET_NAME usr_docs MODULE SMESH LANGUAGES fr ADDITIONAL_ENVIRONMENT ${ADD_VAR})
+ELSE()
+  SET(BUILD_LANGUAGE_SWITCHER "false")
+  SALOME_CONFIGURE_FILE(static/switchers.js.in static/switchers.js)
+  ADD_MULTI_LANG_DOCUMENTATION(TARGET_NAME usr_docs MODULE SMESH ADDITIONAL_ENVIRONMENT ${ADD_VAR})
+ENDIF()
+
+# 1. Options for generating temporary python modules
+SET(_cmd_tmp_gen_options ${smesh_file} -o tmp1/smeshBuilder_dynamic.py -f sphinx StdMeshers)
+SALOME_GENERATE_ENVIRONMENT_SCRIPT(_cmd_tmp_gen env_script "${PYTHON_EXECUTABLE}" "${_cmd_tmp_gen_options}" CONTEXT "SMESH_DOC" ADDITIONAL_VARIABLES ${ADD_VAR})
+
+# 2. Options for generating final smeshBuilder.py script
+SET(_cmd_smeshBuilder_gen_options ${smesh_merge_file} -o tmp2/smeshBuilder.py smeshBuilder)
+SALOME_GENERATE_ENVIRONMENT_SCRIPT(_cmd_smeshBuilder_gen env_script "${PYTHON_EXECUTABLE}" "${_cmd_smeshBuilder_gen_options}" CONTEXT "SMESH_DOC" ADDITIONAL_VARIABLES ${ADD_VAR})
+
+ADD_CUSTOM_TARGET(pre_usr_docs
+  # 1. Make temporary directories for python modules
+  COMMAND ${CMAKE_COMMAND} -E make_directory tmp1
+  COMMAND ${CMAKE_COMMAND} -E make_directory tmp2
+
+  # 2. Copy python module to the temporary file
+  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/src/SMESH_SWIG/smeshBuilder.py ${CMAKE_CURRENT_BINARY_DIR}/tmp1/smeshBuilder_origin.py
+
+  # 3. Copy python modules to be documented into memporary directory
+  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/src/SMESH_SWIG/StdMeshersBuilder.py ${CMAKE_CURRENT_BINARY_DIR}/tmp2/StdMeshersBuilder.py
+  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/src/SMESH_SWIG/smesh_algorithm.py ${CMAKE_CURRENT_BINARY_DIR}/tmp2/smesh_algorithm.py
+  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/src/SMESH_PY/smeshstudytools.py ${CMAKE_CURRENT_BINARY_DIR}/tmp2/smeshstudytools.py
+
+  # 4. Collect methods from StdMeshers into temporary python module
+  COMMAND ${_cmd_tmp_gen}
+
+  # 5. Generate smeshBuilder.py script
+  COMMAND ${_cmd_smeshBuilder_gen}
+  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+)
+
+ADD_DEPENDENCIES(usr_docs pre_usr_docs)
+
+INSTALL(CODE "EXECUTE_PROCESS(COMMAND \"${CMAKE_COMMAND}\" --build ${PROJECT_BINARY_DIR} --target usr_docs)")
+INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/SMESH DESTINATION ${SALOME_INSTALL_DOC}/gui)
+IF(SALOME_SMESH_BUILD_FRENCH_DOC)
+  INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/SMESH_fr DESTINATION ${SALOME_INSTALL_DOC}/gui)
+ENDIF()
+
+SET(make_clean_files tmp1 tmp2)
+SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${make_clean_files}")
diff --git a/doc/gui/collect_mesh_methods.py b/doc/gui/collect_mesh_methods.py
new file mode 100755 (executable)
index 0000000..e13aa0c
--- /dev/null
@@ -0,0 +1,199 @@
+#!/usr/bin/env python3
+# Copyright (C) 2012-2024  CEA, EDF, 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
+#
+
+#################################################################################
+#
+# File:   collect_mesh_methods.py
+# Author: Vadim SANDLER, Open CASCADE S.A.S (vadim.sandler@opencascade.com)
+#
+#################################################################################
+#
+# Extraction of the meshing algorithm classes
+# dynamically added by the plug-in to the Mesh
+# class.
+# 
+# This script is intended for internal usage - only
+# for generation of the extra developer documentation for
+# the meshing plug-in(s).
+# 
+# Usage:
+#       collect_mesh_methods.py <plugin_name>
+# where
+#   <plugin_name> is a name of the plug-in module
+#
+# Notes:
+# - the script is supposed to be run in correct environment
+# i.e. PYTHONPATH, SMESH_MeshersList and other important
+# variables are set properly; otherwise the script will fail.
+#
+################################################################################
+
+import inspect
+import sys
+
+def main(plugin_name, dummymeshhelp = True, output_file = "smeshBuilder.py", format = "doxygen"):
+    plugin_module_name  = plugin_name + "Builder"
+    plugin_module       = "salome.%s.%s" % (plugin_name, plugin_module_name)
+    try:
+        exec("from salome.smesh.smeshBuilder import *", globals())
+        exec("import %s" % plugin_module, globals())
+        exec("mod = %s" % plugin_module , globals())
+        methods = {}
+        for attr in dir( mod ):
+            if attr.startswith( '_' ): continue
+            algo = getattr( mod, attr )
+            if inspect.isclass(algo) and hasattr(algo, "meshMethod"):
+                method = getattr( algo, "meshMethod" )
+                if method not in methods: methods[ method ] = []
+                methods[ method ].append( algo )
+                pass
+            pass
+        if methods:
+            output = []
+            if dummymeshhelp:
+                if format == "doxygen":
+                    output.append( "## @package smeshBuilder" )
+                    output.append( "#  Documentation of the methods dynamically added by the " + plugin_name + " meshing plug-in to the Mesh class." )
+                    output.append( "" )
+                elif format == "sphinx":
+                    output.append( '"""' )
+                    output.append( 'Documentation of the methods dynamically added by the ' + plugin_name + ' meshing plug-in to the Mesh class.' )
+                    output.append( '"""' )
+                    output.append( '' )
+                pass
+            if format == "doxygen":
+                output.append( "## This class allows defining and managing a mesh." )
+                output.append( "#" )
+            elif format == "sphinx":
+                output.append( "class Mesh:" )
+                output.append( '    """' )
+                output.append( '    This class allows defining and managing a mesh.' )
+                output.append( '    ' )
+            if dummymeshhelp:
+                # Add dummy Mesh help
+                # This is supposed to be done when generating documentation for meshing plug-ins
+                if format == "doxygen":
+                    output.append( "#  @note The documentation below does not provide complete description of class @b %Mesh" )
+                    output.append( "#  from @b smeshBuilder package. This documentation provides only information about" )
+                    output.append( "#  the methods dynamically added to the %Mesh class by the " + plugin_name + " plugin" )
+                    output.append( "#  For more details on the %Mesh class, please refer to the SALOME %Mesh module" )
+                    output.append( "#  documentation." )
+                elif format == "sphinx":
+                    output.append( '    The documentation below does not provide complete description of class @b %Mesh' )
+                    output.append( '    from @b smeshBuilder package. This documentation provides only information about' )
+                    output.append( '    the methods dynamically added to the %Mesh class by the " + plugin_name + " plugin' )
+                    output.append( '    For more details on the %Mesh class, please refer to the SALOME %Mesh module' )
+                    output.append( '    documentation.' )
+                    output.append( '    """' )
+                    output.append( '    ' )
+                pass
+            else:
+                # Extend documentation for Mesh class with information about dynamically added methods.
+                # This is supposed to be done only when building documentation for SMESH module
+                if format ==  "doxygen":
+                    output.append( "#  @note Some methods are dynamically added to the @b %Mesh class in runtime by meshing " )
+                    output.append( "#  plug-in modules. If you fail to find help on some methods in the documentation of SMESH module, " )
+                    output.append( "#  try to look into the documentation for the meshing plug-ins." )
+                elif format == "sphinx":
+                    output.append( "    Note:")
+                    output.append( "        Some methods are dynamically added to the @b %Mesh class in runtime by meshing " )
+                    output.append( "        plug-in modules. If you fail to find help on some methods in the documentation of SMESH module, " )
+                    output.append( "        try to look into the documentation for the meshing plug-ins." )
+                    output.append( '    """' )
+                    output.append( '    ' )
+                pass
+            if format == "doxygen":
+                output.append( "class Mesh:" )
+            for method in methods:
+                docHelper = ""
+                for algo in methods[ method ]:
+                    if hasattr( algo, "docHelper" ): docHelper = getattr( algo, "docHelper" )
+                    if docHelper: break
+                    pass
+                if not docHelper: docHelper = "Create new algorithm."
+                if format == "doxygen":
+                    output.append( " ## %s" % docHelper )
+                    output.append( " #" )
+                    output.append( " #  This method is dynamically added to %Mesh class by the meshing plug-in(s). " )
+                    output.append( " #" )
+                    output.append( " #  If the optional @a geom_shape parameter is not set, this algorithm is global (applied to whole mesh)." )
+                    output.append( " #  Otherwise, this algorithm defines a submesh based on @a geom_shape subshape." )
+                    output.append( " #  @param algo_type type of algorithm to be created; allowed values are specified by classes implemented by plug-in" )
+                    output.append( " #  @param geom_shape if defined, the subshape to be meshed (GEOM_Object)" )
+                    output.append( " #  @return An instance of Mesh_Algorithm sub-class according to the specified @a algo_type, see " )
+                    output.append( " #  %s" % ", ".join( [ "%s.%s" % ( plugin_module_name, algo.__name__ ) for algo in methods[ method ] ] ) )
+                    output.append( " def %s(algo_type, geom_shape=0):" % method )
+                    output.append( "   pass" )
+                elif format == "sphinx":
+                    output.append( '    def %s(algo_type, geom_shape=0):' % method )
+                    output.append( '        """' )
+                    output.append( '        %s' % docHelper )
+                    output.append( '        ' )
+                    output.append( '        This method is dynamically added to :class:`Mesh <smeshBuilder.Mesh>` class by the meshing plug-in(s). ' )
+                    output.append( '        ' )
+                    output.append( '        If the optional *geom_shape* parameter is not set, this algorithm is global (applied to whole mesh).' )
+                    output.append( '        Otherwise, this algorithm defines a submesh based on *geom_shape* subshape.' )
+                    output.append( '        ' )
+                    output.append( '        Parameters:' )
+                    output.append( '            algo_type: type of algorithm to be created; allowed values are specified by classes implemented by plug-in' )
+                    output.append( '            geom_shape (GEOM_Object): if defined, the subshape to be meshed' )
+                    output.append( '        ' )
+                    output.append( '        Returns:')
+                    output.append( '            An instance of Mesh_Algorithm sub-class according to the specified *algo_type*, see ' )
+                    output.append( '            %s' % ", ".join( [ ":class:`~%s.%s`" % ( plugin_module_name, algo.__name__ ) for algo in methods[ method ] ] ) )
+                    output.append( '        """' )
+                    output.append( '        pass' )
+                pass
+            with open(output_file, "w", encoding='utf8') as f:
+                f.write('\n'.join(output))
+            pass
+        pass
+    except Exception as e:
+        print(e)
+        pass
+    pass
+    
+if __name__ == "__main__":
+    import argparse
+    parser = argparse.ArgumentParser()
+    h  = "Output file (smesh.py by default)"
+    parser.add_argument("-o", "--output", dest="output",
+                      action="store", default='smesh.py', metavar="file",
+                      help=h)
+    h  = "If this option is True, dummy help for Mesh class is added. "
+    h += "This option should be False (default) when building documentation for SMESH module "
+    h += "and True when building documentation for meshing plug-ins."
+    parser.add_argument("-d", "--dummy-mesh-help", dest="dummymeshhelp",
+                      action="store_true", default=False,
+                      help=h)
+    h = "Format of the documentation strings in the output file. Possible values are: "
+    h+= "'doxygen' - documentation strings are generated in the doxygen format, before a method definition."
+    h+= "'sphinx' - documentation strings are generated in the sphinx format, after a method definition."
+    parser.add_argument("-f", "--format", dest="format",
+                      action="store", default="doxygen", help=h)
+
+    parser.add_argument("plugin_name")
+
+
+    args = parser.parse_args()
+
+    if args.plugin_name is None : sys.exit("Plugin name is not specified")
+    main( args.plugin_name, args.dummymeshhelp, args.output, args.format )
+    pass
diff --git a/doc/gui/conf.py.in b/doc/gui/conf.py.in
new file mode 100644 (file)
index 0000000..854a10d
--- /dev/null
@@ -0,0 +1,249 @@
+# -*- coding: utf-8 -*-
+#
+# yacs documentation build configuration file, created by
+# sphinx-quickstart on Fri Aug 29 09:57:25 2008.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# The contents of this file are pickled, so don't put values in the namespace
+# that aren't pickleable (module imports are okay, they're removed automatically).
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import importlib
+import sys, os
+import sphinx
+
+# If your extensions are in another directory, add it here. If the directory
+# is relative to the documentation root, use os.path.abspath to make it
+# absolute, like shown here.
+#sys.path.append(os.path.abspath('.'))
+
+# General configuration
+# ---------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc','sphinx.ext.autosummary']
+# Optional extensions
+extra_extensions = ['sphinx_rtd_theme']
+if sphinx.version_info[:2] < (1,3):
+    extra_extensions += ['sphinxcontrib.napoleon']
+else:
+    extra_extensions += ['sphinx.ext.napoleon']
+for ext in extra_extensions:
+    try:
+        importlib.import_module(ext)
+        extensions.append(ext)
+        globals().update({'use_{}'.format(ext):True})
+    except:
+        globals().update({'use_{}'.format(ext):False})
+
+#add pdfbuilder to build a pdf with rst2pdf
+#extensions = ['rst2pdf.pdfbuilder']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = [os.path.join('@CMAKE_CURRENT_SOURCE_DIR@','templates')]
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = 'Mesh'
+
+# Copyright is shown via custom footer
+html_show_copyright = False
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '@SALOMESMESH_VERSION@'
+# The full version, including alpha/beta/rc tags.
+release = '@SALOMESMESH_VERSION@'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directory, that shouldn't be searched
+# for source files.
+exclude_trees = ['.build','ref','images','CVS']
+
+# A list of glob-style patterns that should be excluded when looking for source
+# files. They are matched against the source file names relative to the
+# source directory, using slashes as directory separators on all platforms.
+exclude_patterns = ['**/CVS']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# Options for HTML output
+# -----------------------
+
+# The theme to use for HTML and HTML Help pages.  Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+if use_sphinx_rtd_theme:
+  html_theme = 'sphinx_rtd_theme'
+else:
+  html_theme = 'default' if sphinx.version_info[:2] < (1,3) else 'classic'
+
+themes_options = {}
+themes_options['classic'] = {
+  'body_max_width':'none',
+  'body_min_width':0,
+}
+html_theme_options = themes_options.get(html_theme, {})
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = [os.path.join('@CMAKE_CURRENT_BINARY_DIR@','static')]
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+html_sidebars = { '**': ['globaltoc.html', 'relations.html', 'sourcelink.html', 'searchbox.html'],}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+html_use_modindex = True 
+
+# If false, no index is generated.
+html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, the reST sources are included in the HTML build as _sources/<name>.
+#html_copy_source = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'smeshdoc'
+
+extensions += ['sphinx.ext.mathjax']
+
+# Options for LaTeX output
+# ------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'a4'
+
+# The font size ('10pt', '11pt' or '12pt').
+latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, document class [howto/manual]).
+latex_documents = [
+  ('index', 'Smesh.tex', 'SMESH User Documentation', '', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+latex_preamble = """
+\RecustomVerbatimEnvironment
+ {Verbatim}{Verbatim}
+ {fontsize=\scriptsize}
+"""
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+latex_use_modindex = True
+
+#Options for rst2pdf output (through reportlab)
+pdf_documents = [
+  ('index', 'Smesh.tex', 'SMESH User Documentation', '', 'manual'),
+]
+
+# A comma-separated list of custom stylesheets.
+pdf_stylesheets = ['sphinx','kerning','a4']
+
+# Create a compressed PDF
+# Use True/False or 1/0
+#pdf_compressed = False
+
+# A colon-separated list of folders to search for fonts. Example:
+# pdf_font_path = ['/usr/share/fonts', '/usr/share/texmf-dist/fonts/']
+
+# Language to be used for hyphenation support
+#pdf_language = "en_US"
+
+# Example configuration for intersphinx: refer to the Python standard library.
+intersphinx_mapping = {'https://docs.python.org/': None}
+
+locale_dirs = [os.path.join('@CMAKE_CURRENT_BINARY_DIR@','locale')]   # path is example but recommended.
+gettext_compact = False     # optional
diff --git a/doc/gui/images/2d_from_3d_dlg.png b/doc/gui/images/2d_from_3d_dlg.png
new file mode 100644 (file)
index 0000000..e0c8ca5
Binary files /dev/null and b/doc/gui/images/2d_from_3d_dlg.png differ
diff --git a/doc/gui/images/2d_from_3d_example.png b/doc/gui/images/2d_from_3d_example.png
new file mode 100644 (file)
index 0000000..d01efd5
Binary files /dev/null and b/doc/gui/images/2d_from_3d_example.png differ
diff --git a/doc/gui/images/2d_from_3d_ico.png b/doc/gui/images/2d_from_3d_ico.png
new file mode 100644 (file)
index 0000000..b0842d3
Binary files /dev/null and b/doc/gui/images/2d_from_3d_ico.png differ
diff --git a/doc/gui/images/2d_from_3d_menu.png b/doc/gui/images/2d_from_3d_menu.png
new file mode 100644 (file)
index 0000000..acb7b34
Binary files /dev/null and b/doc/gui/images/2d_from_3d_menu.png differ
diff --git a/doc/gui/images/2d_mesh_from_3d_elements.jpg b/doc/gui/images/2d_mesh_from_3d_elements.jpg
new file mode 100644 (file)
index 0000000..2edba32
Binary files /dev/null and b/doc/gui/images/2d_mesh_from_3d_elements.jpg differ
diff --git a/doc/gui/images/2d_mesh_from_3d_elements_dlg.png b/doc/gui/images/2d_mesh_from_3d_elements_dlg.png
new file mode 100644 (file)
index 0000000..77ed543
Binary files /dev/null and b/doc/gui/images/2d_mesh_from_3d_elements_dlg.png differ
diff --git a/doc/gui/images/2d_mesh_from_3d_elements_icon.png b/doc/gui/images/2d_mesh_from_3d_elements_icon.png
new file mode 100644 (file)
index 0000000..2cb269d
Binary files /dev/null and b/doc/gui/images/2d_mesh_from_3d_elements_icon.png differ
diff --git a/doc/gui/images/Clipping_Absolute.png b/doc/gui/images/Clipping_Absolute.png
new file mode 100644 (file)
index 0000000..9657d81
Binary files /dev/null and b/doc/gui/images/Clipping_Absolute.png differ
diff --git a/doc/gui/images/Clipping_Relative.png b/doc/gui/images/Clipping_Relative.png
new file mode 100644 (file)
index 0000000..4fd7dbe
Binary files /dev/null and b/doc/gui/images/Clipping_Relative.png differ
diff --git a/doc/gui/images/Nut_sharp_edges.png b/doc/gui/images/Nut_sharp_edges.png
new file mode 100644 (file)
index 0000000..754710b
Binary files /dev/null and b/doc/gui/images/Nut_sharp_edges.png differ
diff --git a/doc/gui/images/a-arithmetic1d.png b/doc/gui/images/a-arithmetic1d.png
new file mode 100644 (file)
index 0000000..9bc67b0
Binary files /dev/null and b/doc/gui/images/a-arithmetic1d.png differ
diff --git a/doc/gui/images/a-averagelength.png b/doc/gui/images/a-averagelength.png
new file mode 100644 (file)
index 0000000..c8ca5ac
Binary files /dev/null and b/doc/gui/images/a-averagelength.png differ
diff --git a/doc/gui/images/a-clipping2.png b/doc/gui/images/a-clipping2.png
new file mode 100644 (file)
index 0000000..9d1249c
Binary files /dev/null and b/doc/gui/images/a-clipping2.png differ
diff --git a/doc/gui/images/a-creategroup.png b/doc/gui/images/a-creategroup.png
new file mode 100644 (file)
index 0000000..553fb98
Binary files /dev/null and b/doc/gui/images/a-creategroup.png differ
diff --git a/doc/gui/images/a-createpolyhedralvolume.png b/doc/gui/images/a-createpolyhedralvolume.png
new file mode 100644 (file)
index 0000000..6c6bb61
Binary files /dev/null and b/doc/gui/images/a-createpolyhedralvolume.png differ
diff --git a/doc/gui/images/a-cuttingofquadrangles.png b/doc/gui/images/a-cuttingofquadrangles.png
new file mode 100644 (file)
index 0000000..1e533e6
Binary files /dev/null and b/doc/gui/images/a-cuttingofquadrangles.png differ
diff --git a/doc/gui/images/a-deflection1d.png b/doc/gui/images/a-deflection1d.png
new file mode 100644 (file)
index 0000000..57fd859
Binary files /dev/null and b/doc/gui/images/a-deflection1d.png differ
diff --git a/doc/gui/images/a-filteronfaces.png b/doc/gui/images/a-filteronfaces.png
new file mode 100644 (file)
index 0000000..93014f9
Binary files /dev/null and b/doc/gui/images/a-filteronfaces.png differ
diff --git a/doc/gui/images/a-geometric1d.png b/doc/gui/images/a-geometric1d.png
new file mode 100644 (file)
index 0000000..cb5b9cc
Binary files /dev/null and b/doc/gui/images/a-geometric1d.png differ
diff --git a/doc/gui/images/a-maxelarea.png b/doc/gui/images/a-maxelarea.png
new file mode 100644 (file)
index 0000000..4306ed5
Binary files /dev/null and b/doc/gui/images/a-maxelarea.png differ
diff --git a/doc/gui/images/a-maxelvolume.png b/doc/gui/images/a-maxelvolume.png
new file mode 100644 (file)
index 0000000..033e700
Binary files /dev/null and b/doc/gui/images/a-maxelvolume.png differ
diff --git a/doc/gui/images/a-maxsize1d.png b/doc/gui/images/a-maxsize1d.png
new file mode 100644 (file)
index 0000000..c2ddd0c
Binary files /dev/null and b/doc/gui/images/a-maxsize1d.png differ
diff --git a/doc/gui/images/a-nbsegments1.png b/doc/gui/images/a-nbsegments1.png
new file mode 100644 (file)
index 0000000..0cd778f
Binary files /dev/null and b/doc/gui/images/a-nbsegments1.png differ
diff --git a/doc/gui/images/a-nbsegments2.png b/doc/gui/images/a-nbsegments2.png
new file mode 100644 (file)
index 0000000..d9f9c56
Binary files /dev/null and b/doc/gui/images/a-nbsegments2.png differ
diff --git a/doc/gui/images/a-patterntype.png b/doc/gui/images/a-patterntype.png
new file mode 100644 (file)
index 0000000..82c6efb
Binary files /dev/null and b/doc/gui/images/a-patterntype.png differ
diff --git a/doc/gui/images/a-patterntype1.png b/doc/gui/images/a-patterntype1.png
new file mode 100644 (file)
index 0000000..b84257e
Binary files /dev/null and b/doc/gui/images/a-patterntype1.png differ
diff --git a/doc/gui/images/a-standmeshinfo.png b/doc/gui/images/a-standmeshinfo.png
new file mode 100644 (file)
index 0000000..dc037ef
Binary files /dev/null and b/doc/gui/images/a-standmeshinfo.png differ
diff --git a/doc/gui/images/a-startendlength.png b/doc/gui/images/a-startendlength.png
new file mode 100644 (file)
index 0000000..33293d3
Binary files /dev/null and b/doc/gui/images/a-startendlength.png differ
diff --git a/doc/gui/images/a-transparency.png b/doc/gui/images/a-transparency.png
new file mode 100644 (file)
index 0000000..df10f7a
Binary files /dev/null and b/doc/gui/images/a-transparency.png differ
diff --git a/doc/gui/images/a-unionoftriangles.png b/doc/gui/images/a-unionoftriangles.png
new file mode 100644 (file)
index 0000000..24e9a8b
Binary files /dev/null and b/doc/gui/images/a-unionoftriangles.png differ
diff --git a/doc/gui/images/a-viewgeneral.png b/doc/gui/images/a-viewgeneral.png
new file mode 100644 (file)
index 0000000..638870e
Binary files /dev/null and b/doc/gui/images/a-viewgeneral.png differ
diff --git a/doc/gui/images/adaptation_01.png b/doc/gui/images/adaptation_01.png
new file mode 100644 (file)
index 0000000..67cb8b6
Binary files /dev/null and b/doc/gui/images/adaptation_01.png differ
diff --git a/doc/gui/images/adaptation_02.png b/doc/gui/images/adaptation_02.png
new file mode 100644 (file)
index 0000000..1f3f9ed
Binary files /dev/null and b/doc/gui/images/adaptation_02.png differ
diff --git a/doc/gui/images/adaptation_with_homard_advanced.png b/doc/gui/images/adaptation_with_homard_advanced.png
new file mode 100644 (file)
index 0000000..dc05826
Binary files /dev/null and b/doc/gui/images/adaptation_with_homard_advanced.png differ
diff --git a/doc/gui/images/adaptation_with_homard_arguments.png b/doc/gui/images/adaptation_with_homard_arguments.png
new file mode 100644 (file)
index 0000000..2bdd411
Binary files /dev/null and b/doc/gui/images/adaptation_with_homard_arguments.png differ
diff --git a/doc/gui/images/adaptation_with_homard_boundary_analytical.png b/doc/gui/images/adaptation_with_homard_boundary_analytical.png
new file mode 100644 (file)
index 0000000..2beb58d
Binary files /dev/null and b/doc/gui/images/adaptation_with_homard_boundary_analytical.png differ
diff --git a/doc/gui/images/adaptation_with_homard_boundary_cao.png b/doc/gui/images/adaptation_with_homard_boundary_cao.png
new file mode 100644 (file)
index 0000000..8d823b9
Binary files /dev/null and b/doc/gui/images/adaptation_with_homard_boundary_cao.png differ
diff --git a/doc/gui/images/adaptation_with_homard_boundary_discrete.png b/doc/gui/images/adaptation_with_homard_boundary_discrete.png
new file mode 100644 (file)
index 0000000..31d2cdf
Binary files /dev/null and b/doc/gui/images/adaptation_with_homard_boundary_discrete.png differ
diff --git a/doc/gui/images/adaptation_with_homard_boundary_groups.png b/doc/gui/images/adaptation_with_homard_boundary_groups.png
new file mode 100644 (file)
index 0000000..815591e
Binary files /dev/null and b/doc/gui/images/adaptation_with_homard_boundary_groups.png differ
diff --git a/doc/gui/images/adaptive1d.png b/doc/gui/images/adaptive1d.png
new file mode 100644 (file)
index 0000000..8091c8d
Binary files /dev/null and b/doc/gui/images/adaptive1d.png differ
diff --git a/doc/gui/images/adaptive1d_sample_mesh.png b/doc/gui/images/adaptive1d_sample_mesh.png
new file mode 100644 (file)
index 0000000..034207f
Binary files /dev/null and b/doc/gui/images/adaptive1d_sample_mesh.png differ
diff --git a/doc/gui/images/add.gif b/doc/gui/images/add.gif
new file mode 100644 (file)
index 0000000..26350e4
Binary files /dev/null and b/doc/gui/images/add.gif differ
diff --git a/doc/gui/images/add.png b/doc/gui/images/add.png
new file mode 100644 (file)
index 0000000..87995aa
Binary files /dev/null and b/doc/gui/images/add.png differ
diff --git a/doc/gui/images/add0delement.png b/doc/gui/images/add0delement.png
new file mode 100644 (file)
index 0000000..06621cc
Binary files /dev/null and b/doc/gui/images/add0delement.png differ
diff --git a/doc/gui/images/add_0delement.png b/doc/gui/images/add_0delement.png
new file mode 100644 (file)
index 0000000..fa1075b
Binary files /dev/null and b/doc/gui/images/add_0delement.png differ
diff --git a/doc/gui/images/add_ball.png b/doc/gui/images/add_ball.png
new file mode 100644 (file)
index 0000000..1fe4f64
Binary files /dev/null and b/doc/gui/images/add_ball.png differ
diff --git a/doc/gui/images/add_edge.png b/doc/gui/images/add_edge.png
new file mode 100644 (file)
index 0000000..8a532e1
Binary files /dev/null and b/doc/gui/images/add_edge.png differ
diff --git a/doc/gui/images/add_node.png b/doc/gui/images/add_node.png
new file mode 100644 (file)
index 0000000..cb50bf6
Binary files /dev/null and b/doc/gui/images/add_node.png differ
diff --git a/doc/gui/images/add_node_on_face-dlg.png b/doc/gui/images/add_node_on_face-dlg.png
new file mode 100644 (file)
index 0000000..64dc225
Binary files /dev/null and b/doc/gui/images/add_node_on_face-dlg.png differ
diff --git a/doc/gui/images/add_node_on_face.png b/doc/gui/images/add_node_on_face.png
new file mode 100644 (file)
index 0000000..8443493
Binary files /dev/null and b/doc/gui/images/add_node_on_face.png differ
diff --git a/doc/gui/images/add_node_on_segment-dlg.png b/doc/gui/images/add_node_on_segment-dlg.png
new file mode 100644 (file)
index 0000000..25cbb08
Binary files /dev/null and b/doc/gui/images/add_node_on_segment-dlg.png differ
diff --git a/doc/gui/images/add_node_on_segment.png b/doc/gui/images/add_node_on_segment.png
new file mode 100644 (file)
index 0000000..0601b8a
Binary files /dev/null and b/doc/gui/images/add_node_on_segment.png differ
diff --git a/doc/gui/images/add_polygone.png b/doc/gui/images/add_polygone.png
new file mode 100644 (file)
index 0000000..a76bace
Binary files /dev/null and b/doc/gui/images/add_polygone.png differ
diff --git a/doc/gui/images/add_polyhedron.png b/doc/gui/images/add_polyhedron.png
new file mode 100644 (file)
index 0000000..2e23634
Binary files /dev/null and b/doc/gui/images/add_polyhedron.png differ
diff --git a/doc/gui/images/add_quadrangle.png b/doc/gui/images/add_quadrangle.png
new file mode 100644 (file)
index 0000000..f25b94d
Binary files /dev/null and b/doc/gui/images/add_quadrangle.png differ
diff --git a/doc/gui/images/add_triangle.png b/doc/gui/images/add_triangle.png
new file mode 100644 (file)
index 0000000..41c3359
Binary files /dev/null and b/doc/gui/images/add_triangle.png differ
diff --git a/doc/gui/images/addball.png b/doc/gui/images/addball.png
new file mode 100644 (file)
index 0000000..c38c9fa
Binary files /dev/null and b/doc/gui/images/addball.png differ
diff --git a/doc/gui/images/addedge.png b/doc/gui/images/addedge.png
new file mode 100644 (file)
index 0000000..7a5a030
Binary files /dev/null and b/doc/gui/images/addedge.png differ
diff --git a/doc/gui/images/addhexahedron.png b/doc/gui/images/addhexahedron.png
new file mode 100644 (file)
index 0000000..0cf7fe8
Binary files /dev/null and b/doc/gui/images/addhexahedron.png differ
diff --git a/doc/gui/images/addinfo_group.png b/doc/gui/images/addinfo_group.png
new file mode 100644 (file)
index 0000000..7dfcdf0
Binary files /dev/null and b/doc/gui/images/addinfo_group.png differ
diff --git a/doc/gui/images/addinfo_mesh.png b/doc/gui/images/addinfo_mesh.png
new file mode 100644 (file)
index 0000000..75215b3
Binary files /dev/null and b/doc/gui/images/addinfo_mesh.png differ
diff --git a/doc/gui/images/addinfo_submesh.png b/doc/gui/images/addinfo_submesh.png
new file mode 100644 (file)
index 0000000..44b1dda
Binary files /dev/null and b/doc/gui/images/addinfo_submesh.png differ
diff --git a/doc/gui/images/addnode.png b/doc/gui/images/addnode.png
new file mode 100644 (file)
index 0000000..1fd9a9f
Binary files /dev/null and b/doc/gui/images/addnode.png differ
diff --git a/doc/gui/images/addnode_notebook.png b/doc/gui/images/addnode_notebook.png
new file mode 100644 (file)
index 0000000..804f806
Binary files /dev/null and b/doc/gui/images/addnode_notebook.png differ
diff --git a/doc/gui/images/addpolygon.png b/doc/gui/images/addpolygon.png
new file mode 100644 (file)
index 0000000..200999d
Binary files /dev/null and b/doc/gui/images/addpolygon.png differ
diff --git a/doc/gui/images/addquadrangle.png b/doc/gui/images/addquadrangle.png
new file mode 100644 (file)
index 0000000..bd24622
Binary files /dev/null and b/doc/gui/images/addquadrangle.png differ
diff --git a/doc/gui/images/addtetrahedron.png b/doc/gui/images/addtetrahedron.png
new file mode 100644 (file)
index 0000000..0a6a740
Binary files /dev/null and b/doc/gui/images/addtetrahedron.png differ
diff --git a/doc/gui/images/addtriangle.png b/doc/gui/images/addtriangle.png
new file mode 100644 (file)
index 0000000..67682c8
Binary files /dev/null and b/doc/gui/images/addtriangle.png differ
diff --git a/doc/gui/images/advanced_mesh_infos.png b/doc/gui/images/advanced_mesh_infos.png
new file mode 100644 (file)
index 0000000..c3585ea
Binary files /dev/null and b/doc/gui/images/advanced_mesh_infos.png differ
diff --git a/doc/gui/images/analyticdensity.png b/doc/gui/images/analyticdensity.png
new file mode 100644 (file)
index 0000000..b1c9972
Binary files /dev/null and b/doc/gui/images/analyticdensity.png differ
diff --git a/doc/gui/images/angle_measure.png b/doc/gui/images/angle_measure.png
new file mode 100644 (file)
index 0000000..80a2116
Binary files /dev/null and b/doc/gui/images/angle_measure.png differ
diff --git a/doc/gui/images/aqt.png b/doc/gui/images/aqt.png
new file mode 100644 (file)
index 0000000..46ee94d
Binary files /dev/null and b/doc/gui/images/aqt.png differ
diff --git a/doc/gui/images/automaticlength.png b/doc/gui/images/automaticlength.png
new file mode 100644 (file)
index 0000000..15fb8b3
Binary files /dev/null and b/doc/gui/images/automaticlength.png differ
diff --git a/doc/gui/images/b-art_end_length.png b/doc/gui/images/b-art_end_length.png
new file mode 100644 (file)
index 0000000..26da5fa
Binary files /dev/null and b/doc/gui/images/b-art_end_length.png differ
diff --git a/doc/gui/images/b-erage_length.png b/doc/gui/images/b-erage_length.png
new file mode 100644 (file)
index 0000000..f64077c
Binary files /dev/null and b/doc/gui/images/b-erage_length.png differ
diff --git a/doc/gui/images/b-flection1d.png b/doc/gui/images/b-flection1d.png
new file mode 100644 (file)
index 0000000..b0e366b
Binary files /dev/null and b/doc/gui/images/b-flection1d.png differ
diff --git a/doc/gui/images/b-ithmetic1d.png b/doc/gui/images/b-ithmetic1d.png
new file mode 100644 (file)
index 0000000..72f76b9
Binary files /dev/null and b/doc/gui/images/b-ithmetic1d.png differ
diff --git a/doc/gui/images/b-mberofsegments.png b/doc/gui/images/b-mberofsegments.png
new file mode 100644 (file)
index 0000000..27f6868
Binary files /dev/null and b/doc/gui/images/b-mberofsegments.png differ
diff --git a/doc/gui/images/b-mesh_infos.png b/doc/gui/images/b-mesh_infos.png
new file mode 100644 (file)
index 0000000..6abd3c1
Binary files /dev/null and b/doc/gui/images/b-mesh_infos.png differ
diff --git a/doc/gui/images/bare_border_faces_smpl.png b/doc/gui/images/bare_border_faces_smpl.png
new file mode 100644 (file)
index 0000000..6b7ead8
Binary files /dev/null and b/doc/gui/images/bare_border_faces_smpl.png differ
diff --git a/doc/gui/images/bare_border_volumes_smpl.png b/doc/gui/images/bare_border_volumes_smpl.png
new file mode 100644 (file)
index 0000000..3508518
Binary files /dev/null and b/doc/gui/images/bare_border_volumes_smpl.png differ
diff --git a/doc/gui/images/basic_props.png b/doc/gui/images/basic_props.png
new file mode 100644 (file)
index 0000000..abf3aa3
Binary files /dev/null and b/doc/gui/images/basic_props.png differ
diff --git a/doc/gui/images/before_clipping.png b/doc/gui/images/before_clipping.png
new file mode 100644 (file)
index 0000000..41e14d2
Binary files /dev/null and b/doc/gui/images/before_clipping.png differ
diff --git a/doc/gui/images/before_clipping_preview.png b/doc/gui/images/before_clipping_preview.png
new file mode 100644 (file)
index 0000000..f0740cf
Binary files /dev/null and b/doc/gui/images/before_clipping_preview.png differ
diff --git a/doc/gui/images/block_renumber_hyp.png b/doc/gui/images/block_renumber_hyp.png
new file mode 100644 (file)
index 0000000..4c610f7
Binary files /dev/null and b/doc/gui/images/block_renumber_hyp.png differ
diff --git a/doc/gui/images/bnd_box.png b/doc/gui/images/bnd_box.png
new file mode 100644 (file)
index 0000000..4c0bbd3
Binary files /dev/null and b/doc/gui/images/bnd_box.png differ
diff --git a/doc/gui/images/bnd_box_preview.png b/doc/gui/images/bnd_box_preview.png
new file mode 100644 (file)
index 0000000..902101c
Binary files /dev/null and b/doc/gui/images/bnd_box_preview.png differ
diff --git a/doc/gui/images/buildcompound.png b/doc/gui/images/buildcompound.png
new file mode 100644 (file)
index 0000000..d1f4801
Binary files /dev/null and b/doc/gui/images/buildcompound.png differ
diff --git a/doc/gui/images/buildcompound_groups.png b/doc/gui/images/buildcompound_groups.png
new file mode 100644 (file)
index 0000000..ee12892
Binary files /dev/null and b/doc/gui/images/buildcompound_groups.png differ
diff --git a/doc/gui/images/cartesian3D_hyp.png b/doc/gui/images/cartesian3D_hyp.png
new file mode 100644 (file)
index 0000000..768150d
Binary files /dev/null and b/doc/gui/images/cartesian3D_hyp.png differ
diff --git a/doc/gui/images/cartesian3D_sphere.png b/doc/gui/images/cartesian3D_sphere.png
new file mode 100644 (file)
index 0000000..45bffda
Binary files /dev/null and b/doc/gui/images/cartesian3D_sphere.png differ
diff --git a/doc/gui/images/cartesian_implement_edge.png b/doc/gui/images/cartesian_implement_edge.png
new file mode 100644 (file)
index 0000000..59ac9ba
Binary files /dev/null and b/doc/gui/images/cartesian_implement_edge.png differ
diff --git a/doc/gui/images/choose_geom_selection_way.png b/doc/gui/images/choose_geom_selection_way.png
new file mode 100644 (file)
index 0000000..ffee00d
Binary files /dev/null and b/doc/gui/images/choose_geom_selection_way.png differ
diff --git a/doc/gui/images/circle_angles_after.png b/doc/gui/images/circle_angles_after.png
new file mode 100644 (file)
index 0000000..f4c606b
Binary files /dev/null and b/doc/gui/images/circle_angles_after.png differ
diff --git a/doc/gui/images/circle_simple_after.png b/doc/gui/images/circle_simple_after.png
new file mode 100644 (file)
index 0000000..99f65b5
Binary files /dev/null and b/doc/gui/images/circle_simple_after.png differ
diff --git a/doc/gui/images/circle_simple_before.png b/doc/gui/images/circle_simple_before.png
new file mode 100644 (file)
index 0000000..95b9037
Binary files /dev/null and b/doc/gui/images/circle_simple_before.png differ
diff --git a/doc/gui/images/colors_size.png b/doc/gui/images/colors_size.png
new file mode 100644 (file)
index 0000000..0b1d3e5
Binary files /dev/null and b/doc/gui/images/colors_size.png differ
diff --git a/doc/gui/images/connectivity_edge.png b/doc/gui/images/connectivity_edge.png
new file mode 100644 (file)
index 0000000..9d7af87
Binary files /dev/null and b/doc/gui/images/connectivity_edge.png differ
diff --git a/doc/gui/images/connectivity_hex_prism.png b/doc/gui/images/connectivity_hex_prism.png
new file mode 100644 (file)
index 0000000..d5cbfcd
Binary files /dev/null and b/doc/gui/images/connectivity_hex_prism.png differ
diff --git a/doc/gui/images/connectivity_hexa.png b/doc/gui/images/connectivity_hexa.png
new file mode 100644 (file)
index 0000000..326b3ef
Binary files /dev/null and b/doc/gui/images/connectivity_hexa.png differ
diff --git a/doc/gui/images/connectivity_penta.png b/doc/gui/images/connectivity_penta.png
new file mode 100644 (file)
index 0000000..1990a1d
Binary files /dev/null and b/doc/gui/images/connectivity_penta.png differ
diff --git a/doc/gui/images/connectivity_polygon.png b/doc/gui/images/connectivity_polygon.png
new file mode 100644 (file)
index 0000000..3594178
Binary files /dev/null and b/doc/gui/images/connectivity_polygon.png differ
diff --git a/doc/gui/images/connectivity_polyhedron.png b/doc/gui/images/connectivity_polyhedron.png
new file mode 100644 (file)
index 0000000..c59506f
Binary files /dev/null and b/doc/gui/images/connectivity_polyhedron.png differ
diff --git a/doc/gui/images/connectivity_pyramid.png b/doc/gui/images/connectivity_pyramid.png
new file mode 100644 (file)
index 0000000..40cc35a
Binary files /dev/null and b/doc/gui/images/connectivity_pyramid.png differ
diff --git a/doc/gui/images/connectivity_quad.png b/doc/gui/images/connectivity_quad.png
new file mode 100644 (file)
index 0000000..0b7cdd3
Binary files /dev/null and b/doc/gui/images/connectivity_quad.png differ
diff --git a/doc/gui/images/connectivity_tetra.png b/doc/gui/images/connectivity_tetra.png
new file mode 100644 (file)
index 0000000..cd86363
Binary files /dev/null and b/doc/gui/images/connectivity_tetra.png differ
diff --git a/doc/gui/images/connectivity_tria.png b/doc/gui/images/connectivity_tria.png
new file mode 100644 (file)
index 0000000..593ff05
Binary files /dev/null and b/doc/gui/images/connectivity_tria.png differ
diff --git a/doc/gui/images/controls_popup.png b/doc/gui/images/controls_popup.png
new file mode 100644 (file)
index 0000000..c32f9ea
Binary files /dev/null and b/doc/gui/images/controls_popup.png differ
diff --git a/doc/gui/images/convert.png b/doc/gui/images/convert.png
new file mode 100644 (file)
index 0000000..9139f60
Binary files /dev/null and b/doc/gui/images/convert.png differ
diff --git a/doc/gui/images/copy_mesh_dlg.png b/doc/gui/images/copy_mesh_dlg.png
new file mode 100644 (file)
index 0000000..97ca1ca
Binary files /dev/null and b/doc/gui/images/copy_mesh_dlg.png differ
diff --git a/doc/gui/images/copy_mesh_icon.png b/doc/gui/images/copy_mesh_icon.png
new file mode 100644 (file)
index 0000000..263479f
Binary files /dev/null and b/doc/gui/images/copy_mesh_icon.png differ
diff --git a/doc/gui/images/crack_emulation_double_nodes.png b/doc/gui/images/crack_emulation_double_nodes.png
new file mode 100644 (file)
index 0000000..032d9d6
Binary files /dev/null and b/doc/gui/images/crack_emulation_double_nodes.png differ
diff --git a/doc/gui/images/crack_emulation_double_nodes_with_elems.png b/doc/gui/images/crack_emulation_double_nodes_with_elems.png
new file mode 100644 (file)
index 0000000..9a0fd5e
Binary files /dev/null and b/doc/gui/images/crack_emulation_double_nodes_with_elems.png differ
diff --git a/doc/gui/images/create_boundary_1.png b/doc/gui/images/create_boundary_1.png
new file mode 100644 (file)
index 0000000..f6e34b6
Binary files /dev/null and b/doc/gui/images/create_boundary_1.png differ
diff --git a/doc/gui/images/create_boundary_an_1.png b/doc/gui/images/create_boundary_an_1.png
new file mode 100644 (file)
index 0000000..2e634da
Binary files /dev/null and b/doc/gui/images/create_boundary_an_1.png differ
diff --git a/doc/gui/images/create_boundary_an_2.png b/doc/gui/images/create_boundary_an_2.png
new file mode 100644 (file)
index 0000000..25c6e9b
Binary files /dev/null and b/doc/gui/images/create_boundary_an_2.png differ
diff --git a/doc/gui/images/create_boundary_an_3.png b/doc/gui/images/create_boundary_an_3.png
new file mode 100644 (file)
index 0000000..6f38d9f
Binary files /dev/null and b/doc/gui/images/create_boundary_an_3.png differ
diff --git a/doc/gui/images/create_boundary_an_4.png b/doc/gui/images/create_boundary_an_4.png
new file mode 100644 (file)
index 0000000..abf1042
Binary files /dev/null and b/doc/gui/images/create_boundary_an_4.png differ
diff --git a/doc/gui/images/create_boundary_an_co_1.png b/doc/gui/images/create_boundary_an_co_1.png
new file mode 100644 (file)
index 0000000..7212cba
Binary files /dev/null and b/doc/gui/images/create_boundary_an_co_1.png differ
diff --git a/doc/gui/images/create_boundary_an_co_2.png b/doc/gui/images/create_boundary_an_co_2.png
new file mode 100644 (file)
index 0000000..017b56d
Binary files /dev/null and b/doc/gui/images/create_boundary_an_co_2.png differ
diff --git a/doc/gui/images/create_boundary_an_cy.png b/doc/gui/images/create_boundary_an_cy.png
new file mode 100644 (file)
index 0000000..2efc3fd
Binary files /dev/null and b/doc/gui/images/create_boundary_an_cy.png differ
diff --git a/doc/gui/images/create_boundary_an_sp.png b/doc/gui/images/create_boundary_an_sp.png
new file mode 100644 (file)
index 0000000..be7b28b
Binary files /dev/null and b/doc/gui/images/create_boundary_an_sp.png differ
diff --git a/doc/gui/images/create_boundary_an_to.png b/doc/gui/images/create_boundary_an_to.png
new file mode 100644 (file)
index 0000000..38e3940
Binary files /dev/null and b/doc/gui/images/create_boundary_an_to.png differ
diff --git a/doc/gui/images/create_boundary_cao_1.png b/doc/gui/images/create_boundary_cao_1.png
new file mode 100644 (file)
index 0000000..96c2382
Binary files /dev/null and b/doc/gui/images/create_boundary_cao_1.png differ
diff --git a/doc/gui/images/create_boundary_cao_2.png b/doc/gui/images/create_boundary_cao_2.png
new file mode 100644 (file)
index 0000000..94da749
Binary files /dev/null and b/doc/gui/images/create_boundary_cao_2.png differ
diff --git a/doc/gui/images/create_boundary_di_1.png b/doc/gui/images/create_boundary_di_1.png
new file mode 100644 (file)
index 0000000..8f5770b
Binary files /dev/null and b/doc/gui/images/create_boundary_di_1.png differ
diff --git a/doc/gui/images/create_boundary_di_2.png b/doc/gui/images/create_boundary_di_2.png
new file mode 100644 (file)
index 0000000..33ed85f
Binary files /dev/null and b/doc/gui/images/create_boundary_di_2.png differ
diff --git a/doc/gui/images/create_boundary_di_3.png b/doc/gui/images/create_boundary_di_3.png
new file mode 100644 (file)
index 0000000..e682a39
Binary files /dev/null and b/doc/gui/images/create_boundary_di_3.png differ
diff --git a/doc/gui/images/create_dual_mesh_dlg.png b/doc/gui/images/create_dual_mesh_dlg.png
new file mode 100644 (file)
index 0000000..b28beaa
Binary files /dev/null and b/doc/gui/images/create_dual_mesh_dlg.png differ
diff --git a/doc/gui/images/create_dual_mesh_icon.png b/doc/gui/images/create_dual_mesh_icon.png
new file mode 100644 (file)
index 0000000..b9c48f8
Binary files /dev/null and b/doc/gui/images/create_dual_mesh_icon.png differ
diff --git a/doc/gui/images/create_group.png b/doc/gui/images/create_group.png
new file mode 100644 (file)
index 0000000..82e8f86
Binary files /dev/null and b/doc/gui/images/create_group.png differ
diff --git a/doc/gui/images/create_groups_from_geometry.png b/doc/gui/images/create_groups_from_geometry.png
new file mode 100644 (file)
index 0000000..7da08fc
Binary files /dev/null and b/doc/gui/images/create_groups_from_geometry.png differ
diff --git a/doc/gui/images/creategroup.png b/doc/gui/images/creategroup.png
new file mode 100644 (file)
index 0000000..710064b
Binary files /dev/null and b/doc/gui/images/creategroup.png differ
diff --git a/doc/gui/images/creategroup_on_filter.png b/doc/gui/images/creategroup_on_filter.png
new file mode 100644 (file)
index 0000000..98e5a58
Binary files /dev/null and b/doc/gui/images/creategroup_on_filter.png differ
diff --git a/doc/gui/images/createmesh-inv.png b/doc/gui/images/createmesh-inv.png
new file mode 100644 (file)
index 0000000..d17ce53
Binary files /dev/null and b/doc/gui/images/createmesh-inv.png differ
diff --git a/doc/gui/images/createmesh-inv2.png b/doc/gui/images/createmesh-inv2.png
new file mode 100644 (file)
index 0000000..30e6248
Binary files /dev/null and b/doc/gui/images/createmesh-inv2.png differ
diff --git a/doc/gui/images/createmesh-inv3.png b/doc/gui/images/createmesh-inv3.png
new file mode 100644 (file)
index 0000000..f53ab0a
Binary files /dev/null and b/doc/gui/images/createmesh-inv3.png differ
diff --git a/doc/gui/images/ctrlinfo.png b/doc/gui/images/ctrlinfo.png
new file mode 100644 (file)
index 0000000..100fbe0
Binary files /dev/null and b/doc/gui/images/ctrlinfo.png differ
diff --git a/doc/gui/images/curvi_angles_after.png b/doc/gui/images/curvi_angles_after.png
new file mode 100644 (file)
index 0000000..9d06262
Binary files /dev/null and b/doc/gui/images/curvi_angles_after.png differ
diff --git a/doc/gui/images/curvi_simple_after.png b/doc/gui/images/curvi_simple_after.png
new file mode 100644 (file)
index 0000000..ae1d98f
Binary files /dev/null and b/doc/gui/images/curvi_simple_after.png differ
diff --git a/doc/gui/images/curvi_simple_before.png b/doc/gui/images/curvi_simple_before.png
new file mode 100644 (file)
index 0000000..a0bbf73
Binary files /dev/null and b/doc/gui/images/curvi_simple_before.png differ
diff --git a/doc/gui/images/custom_point_marker.png b/doc/gui/images/custom_point_marker.png
new file mode 100644 (file)
index 0000000..a46e33e
Binary files /dev/null and b/doc/gui/images/custom_point_marker.png differ
diff --git a/doc/gui/images/cut_groups1.png b/doc/gui/images/cut_groups1.png
new file mode 100644 (file)
index 0000000..d78c4fe
Binary files /dev/null and b/doc/gui/images/cut_groups1.png differ
diff --git a/doc/gui/images/cutgroups.png b/doc/gui/images/cutgroups.png
new file mode 100644 (file)
index 0000000..213a52a
Binary files /dev/null and b/doc/gui/images/cutgroups.png differ
diff --git a/doc/gui/images/dataset_clipping.png b/doc/gui/images/dataset_clipping.png
new file mode 100644 (file)
index 0000000..b50e38a
Binary files /dev/null and b/doc/gui/images/dataset_clipping.png differ
diff --git a/doc/gui/images/deflection_2d.png b/doc/gui/images/deflection_2d.png
new file mode 100644 (file)
index 0000000..f815962
Binary files /dev/null and b/doc/gui/images/deflection_2d.png differ
diff --git a/doc/gui/images/deletegroups.png b/doc/gui/images/deletegroups.png
new file mode 100644 (file)
index 0000000..52494c8
Binary files /dev/null and b/doc/gui/images/deletegroups.png differ
diff --git a/doc/gui/images/diagonalinversion.png b/doc/gui/images/diagonalinversion.png
new file mode 100644 (file)
index 0000000..1329ebe
Binary files /dev/null and b/doc/gui/images/diagonalinversion.png differ
diff --git a/doc/gui/images/diagram_parallel_mesh.png b/doc/gui/images/diagram_parallel_mesh.png
new file mode 100644 (file)
index 0000000..466b29b
Binary files /dev/null and b/doc/gui/images/diagram_parallel_mesh.png differ
diff --git a/doc/gui/images/dialog.png b/doc/gui/images/dialog.png
new file mode 100644 (file)
index 0000000..c9cc22c
Binary files /dev/null and b/doc/gui/images/dialog.png differ
diff --git a/doc/gui/images/dimgroup_0d.png b/doc/gui/images/dimgroup_0d.png
new file mode 100644 (file)
index 0000000..caabdc4
Binary files /dev/null and b/doc/gui/images/dimgroup_0d.png differ
diff --git a/doc/gui/images/dimgroup_1d.png b/doc/gui/images/dimgroup_1d.png
new file mode 100644 (file)
index 0000000..23af4a7
Binary files /dev/null and b/doc/gui/images/dimgroup_1d.png differ
diff --git a/doc/gui/images/dimgroup_2d.png b/doc/gui/images/dimgroup_2d.png
new file mode 100644 (file)
index 0000000..bbfa059
Binary files /dev/null and b/doc/gui/images/dimgroup_2d.png differ
diff --git a/doc/gui/images/dimgroup_dlg.png b/doc/gui/images/dimgroup_dlg.png
new file mode 100644 (file)
index 0000000..22bdbc6
Binary files /dev/null and b/doc/gui/images/dimgroup_dlg.png differ
diff --git a/doc/gui/images/dimgroup_src.png b/doc/gui/images/dimgroup_src.png
new file mode 100644 (file)
index 0000000..93606a8
Binary files /dev/null and b/doc/gui/images/dimgroup_src.png differ
diff --git a/doc/gui/images/dimgroup_tui1.png b/doc/gui/images/dimgroup_tui1.png
new file mode 100644 (file)
index 0000000..91617ce
Binary files /dev/null and b/doc/gui/images/dimgroup_tui1.png differ
diff --git a/doc/gui/images/display_entity_choose_item.png b/doc/gui/images/display_entity_choose_item.png
new file mode 100644 (file)
index 0000000..d099618
Binary files /dev/null and b/doc/gui/images/display_entity_choose_item.png differ
diff --git a/doc/gui/images/display_entity_dlg.png b/doc/gui/images/display_entity_dlg.png
new file mode 100644 (file)
index 0000000..d0f4fa0
Binary files /dev/null and b/doc/gui/images/display_entity_dlg.png differ
diff --git a/doc/gui/images/distribution_of_layers.png b/doc/gui/images/distribution_of_layers.png
new file mode 100644 (file)
index 0000000..02975ef
Binary files /dev/null and b/doc/gui/images/distribution_of_layers.png differ
diff --git a/doc/gui/images/distributionwithanalyticdensity.png b/doc/gui/images/distributionwithanalyticdensity.png
new file mode 100644 (file)
index 0000000..53c618c
Binary files /dev/null and b/doc/gui/images/distributionwithanalyticdensity.png differ
diff --git a/doc/gui/images/distributionwithtabledensity.png b/doc/gui/images/distributionwithtabledensity.png
new file mode 100644 (file)
index 0000000..75bd698
Binary files /dev/null and b/doc/gui/images/distributionwithtabledensity.png differ
diff --git a/doc/gui/images/dlg_0D_on_all_nodes.png b/doc/gui/images/dlg_0D_on_all_nodes.png
new file mode 100644 (file)
index 0000000..78ac7c8
Binary files /dev/null and b/doc/gui/images/dlg_0D_on_all_nodes.png differ
diff --git a/doc/gui/images/double_faces.png b/doc/gui/images/double_faces.png
new file mode 100644 (file)
index 0000000..47bed1f
Binary files /dev/null and b/doc/gui/images/double_faces.png differ
diff --git a/doc/gui/images/double_nodes.png b/doc/gui/images/double_nodes.png
new file mode 100644 (file)
index 0000000..27a209b
Binary files /dev/null and b/doc/gui/images/double_nodes.png differ
diff --git a/doc/gui/images/duplicate01.png b/doc/gui/images/duplicate01.png
new file mode 100644 (file)
index 0000000..af668e1
Binary files /dev/null and b/doc/gui/images/duplicate01.png differ
diff --git a/doc/gui/images/duplicate02.png b/doc/gui/images/duplicate02.png
new file mode 100644 (file)
index 0000000..e8a6a8c
Binary files /dev/null and b/doc/gui/images/duplicate02.png differ
diff --git a/doc/gui/images/duplicate03.png b/doc/gui/images/duplicate03.png
new file mode 100644 (file)
index 0000000..0291103
Binary files /dev/null and b/doc/gui/images/duplicate03.png differ
diff --git a/doc/gui/images/duplicate04.png b/doc/gui/images/duplicate04.png
new file mode 100644 (file)
index 0000000..7bab0da
Binary files /dev/null and b/doc/gui/images/duplicate04.png differ
diff --git a/doc/gui/images/duplicate_nodes.png b/doc/gui/images/duplicate_nodes.png
new file mode 100644 (file)
index 0000000..61ff32b
Binary files /dev/null and b/doc/gui/images/duplicate_nodes.png differ
diff --git a/doc/gui/images/edge_wire_3d_after.png b/doc/gui/images/edge_wire_3d_after.png
new file mode 100644 (file)
index 0000000..3fab598
Binary files /dev/null and b/doc/gui/images/edge_wire_3d_after.png differ
diff --git a/doc/gui/images/edge_wire_3d_before.png b/doc/gui/images/edge_wire_3d_before.png
new file mode 100644 (file)
index 0000000..28f9868
Binary files /dev/null and b/doc/gui/images/edge_wire_3d_before.png differ
diff --git a/doc/gui/images/edge_wire_after.png b/doc/gui/images/edge_wire_after.png
new file mode 100644 (file)
index 0000000..408480e
Binary files /dev/null and b/doc/gui/images/edge_wire_after.png differ
diff --git a/doc/gui/images/edge_wire_before.png b/doc/gui/images/edge_wire_before.png
new file mode 100644 (file)
index 0000000..186528e
Binary files /dev/null and b/doc/gui/images/edge_wire_before.png differ
diff --git a/doc/gui/images/edit_mesh1.png b/doc/gui/images/edit_mesh1.png
new file mode 100644 (file)
index 0000000..4369e51
Binary files /dev/null and b/doc/gui/images/edit_mesh1.png differ
diff --git a/doc/gui/images/edit_mesh_change_value_hyp.png b/doc/gui/images/edit_mesh_change_value_hyp.png
new file mode 100644 (file)
index 0000000..7dee01f
Binary files /dev/null and b/doc/gui/images/edit_mesh_change_value_hyp.png differ
diff --git a/doc/gui/images/edit_mesh_remove_hyp.png b/doc/gui/images/edit_mesh_remove_hyp.png
new file mode 100644 (file)
index 0000000..0a45639
Binary files /dev/null and b/doc/gui/images/edit_mesh_remove_hyp.png differ
diff --git a/doc/gui/images/editgroup.png b/doc/gui/images/editgroup.png
new file mode 100644 (file)
index 0000000..1a9db08
Binary files /dev/null and b/doc/gui/images/editgroup.png differ
diff --git a/doc/gui/images/editing_groups1.png b/doc/gui/images/editing_groups1.png
new file mode 100644 (file)
index 0000000..a565ed3
Binary files /dev/null and b/doc/gui/images/editing_groups1.png differ
diff --git a/doc/gui/images/elem_info.png b/doc/gui/images/elem_info.png
new file mode 100644 (file)
index 0000000..9937d6d
Binary files /dev/null and b/doc/gui/images/elem_info.png differ
diff --git a/doc/gui/images/eleminfo1.png b/doc/gui/images/eleminfo1.png
new file mode 100644 (file)
index 0000000..9f9e03a
Binary files /dev/null and b/doc/gui/images/eleminfo1.png differ
diff --git a/doc/gui/images/eleminfo2.png b/doc/gui/images/eleminfo2.png
new file mode 100644 (file)
index 0000000..34061d9
Binary files /dev/null and b/doc/gui/images/eleminfo2.png differ
diff --git a/doc/gui/images/extr_along_wire_after.png b/doc/gui/images/extr_along_wire_after.png
new file mode 100644 (file)
index 0000000..eb39bdd
Binary files /dev/null and b/doc/gui/images/extr_along_wire_after.png differ
diff --git a/doc/gui/images/extr_along_wire_before.png b/doc/gui/images/extr_along_wire_before.png
new file mode 100644 (file)
index 0000000..2f30cee
Binary files /dev/null and b/doc/gui/images/extr_along_wire_before.png differ
diff --git a/doc/gui/images/extru_rib_segs.png b/doc/gui/images/extru_rib_segs.png
new file mode 100644 (file)
index 0000000..24f04cf
Binary files /dev/null and b/doc/gui/images/extru_rib_segs.png differ
diff --git a/doc/gui/images/extrusion_along_path_dlg.png b/doc/gui/images/extrusion_along_path_dlg.png
new file mode 100644 (file)
index 0000000..74176d8
Binary files /dev/null and b/doc/gui/images/extrusion_along_path_dlg.png differ
diff --git a/doc/gui/images/extrusion_box.png b/doc/gui/images/extrusion_box.png
new file mode 100644 (file)
index 0000000..fb08486
Binary files /dev/null and b/doc/gui/images/extrusion_box.png differ
diff --git a/doc/gui/images/extrusion_groups.png b/doc/gui/images/extrusion_groups.png
new file mode 100644 (file)
index 0000000..c58e397
Binary files /dev/null and b/doc/gui/images/extrusion_groups.png differ
diff --git a/doc/gui/images/extrusion_groups_res.png b/doc/gui/images/extrusion_groups_res.png
new file mode 100644 (file)
index 0000000..7063c82
Binary files /dev/null and b/doc/gui/images/extrusion_groups_res.png differ
diff --git a/doc/gui/images/extrusionalongaline1.png b/doc/gui/images/extrusionalongaline1.png
new file mode 100644 (file)
index 0000000..cc97577
Binary files /dev/null and b/doc/gui/images/extrusionalongaline1.png differ
diff --git a/doc/gui/images/extrusionalongaline2.png b/doc/gui/images/extrusionalongaline2.png
new file mode 100644 (file)
index 0000000..f0e6d9e
Binary files /dev/null and b/doc/gui/images/extrusionalongaline2.png differ
diff --git a/doc/gui/images/extrusionalongaline3.png b/doc/gui/images/extrusionalongaline3.png
new file mode 100644 (file)
index 0000000..75c359b
Binary files /dev/null and b/doc/gui/images/extrusionalongaline3.png differ
diff --git a/doc/gui/images/extrusionbynormal_alongavgnorm.png b/doc/gui/images/extrusionbynormal_alongavgnorm.png
new file mode 100644 (file)
index 0000000..ecb550e
Binary files /dev/null and b/doc/gui/images/extrusionbynormal_alongavgnorm.png differ
diff --git a/doc/gui/images/extrusionbynormal_useonly.png b/doc/gui/images/extrusionbynormal_useonly.png
new file mode 100644 (file)
index 0000000..1c63a2b
Binary files /dev/null and b/doc/gui/images/extrusionbynormal_useonly.png differ
diff --git a/doc/gui/images/failed_computation.png b/doc/gui/images/failed_computation.png
new file mode 100644 (file)
index 0000000..e44a538
Binary files /dev/null and b/doc/gui/images/failed_computation.png differ
diff --git a/doc/gui/images/find_geom_by_mesh_elem.png b/doc/gui/images/find_geom_by_mesh_elem.png
new file mode 100644 (file)
index 0000000..d71495e
Binary files /dev/null and b/doc/gui/images/find_geom_by_mesh_elem.png differ
diff --git a/doc/gui/images/findelement1.png b/doc/gui/images/findelement1.png
new file mode 100644 (file)
index 0000000..1c11a03
Binary files /dev/null and b/doc/gui/images/findelement1.png differ
diff --git a/doc/gui/images/findelement2.png b/doc/gui/images/findelement2.png
new file mode 100644 (file)
index 0000000..c9898b5
Binary files /dev/null and b/doc/gui/images/findelement2.png differ
diff --git a/doc/gui/images/findelement3.png b/doc/gui/images/findelement3.png
new file mode 100644 (file)
index 0000000..26cfff2
Binary files /dev/null and b/doc/gui/images/findelement3.png differ
diff --git a/doc/gui/images/formula1.png b/doc/gui/images/formula1.png
new file mode 100644 (file)
index 0000000..b3468a1
Binary files /dev/null and b/doc/gui/images/formula1.png differ
diff --git a/doc/gui/images/formula2.png b/doc/gui/images/formula2.png
new file mode 100644 (file)
index 0000000..dd45fbf
Binary files /dev/null and b/doc/gui/images/formula2.png differ
diff --git a/doc/gui/images/formula4.png b/doc/gui/images/formula4.png
new file mode 100644 (file)
index 0000000..3a5d31f
Binary files /dev/null and b/doc/gui/images/formula4.png differ
diff --git a/doc/gui/images/formula5.png b/doc/gui/images/formula5.png
new file mode 100644 (file)
index 0000000..8cd035f
Binary files /dev/null and b/doc/gui/images/formula5.png differ
diff --git a/doc/gui/images/free_borders1.png b/doc/gui/images/free_borders1.png
new file mode 100644 (file)
index 0000000..871beba
Binary files /dev/null and b/doc/gui/images/free_borders1.png differ
diff --git a/doc/gui/images/free_edges.png b/doc/gui/images/free_edges.png
new file mode 100644 (file)
index 0000000..6f1100c
Binary files /dev/null and b/doc/gui/images/free_edges.png differ
diff --git a/doc/gui/images/free_faces.png b/doc/gui/images/free_faces.png
new file mode 100644 (file)
index 0000000..8b5bee4
Binary files /dev/null and b/doc/gui/images/free_faces.png differ
diff --git a/doc/gui/images/free_nodes.png b/doc/gui/images/free_nodes.png
new file mode 100644 (file)
index 0000000..ea043ea
Binary files /dev/null and b/doc/gui/images/free_nodes.png differ
diff --git a/doc/gui/images/ghs3dprl_parameters_basic.png b/doc/gui/images/ghs3dprl_parameters_basic.png
new file mode 100644 (file)
index 0000000..0628058
Binary files /dev/null and b/doc/gui/images/ghs3dprl_parameters_basic.png differ
diff --git a/doc/gui/images/groups_by_sharp_edges_dlg.png b/doc/gui/images/groups_by_sharp_edges_dlg.png
new file mode 100644 (file)
index 0000000..936d0ba
Binary files /dev/null and b/doc/gui/images/groups_by_sharp_edges_dlg.png differ
diff --git a/doc/gui/images/groups_in_OB.png b/doc/gui/images/groups_in_OB.png
new file mode 100644 (file)
index 0000000..1ffb96a
Binary files /dev/null and b/doc/gui/images/groups_in_OB.png differ
diff --git a/doc/gui/images/hexa_ijk_mesh.png b/doc/gui/images/hexa_ijk_mesh.png
new file mode 100644 (file)
index 0000000..577ee8e
Binary files /dev/null and b/doc/gui/images/hexa_ijk_mesh.png differ
diff --git a/doc/gui/images/hyp_source_edges.png b/doc/gui/images/hyp_source_edges.png
new file mode 100644 (file)
index 0000000..2305e17
Binary files /dev/null and b/doc/gui/images/hyp_source_edges.png differ
diff --git a/doc/gui/images/hyp_source_faces.png b/doc/gui/images/hyp_source_faces.png
new file mode 100644 (file)
index 0000000..fe9e6c6
Binary files /dev/null and b/doc/gui/images/hyp_source_faces.png differ
diff --git a/doc/gui/images/hypo_fixedpnt_dlg.png b/doc/gui/images/hypo_fixedpnt_dlg.png
new file mode 100644 (file)
index 0000000..d1c131a
Binary files /dev/null and b/doc/gui/images/hypo_fixedpnt_dlg.png differ
diff --git a/doc/gui/images/hypo_quad_params_1.png b/doc/gui/images/hypo_quad_params_1.png
new file mode 100644 (file)
index 0000000..eca8767
Binary files /dev/null and b/doc/gui/images/hypo_quad_params_1.png differ
diff --git a/doc/gui/images/hypo_quad_params_2.png b/doc/gui/images/hypo_quad_params_2.png
new file mode 100644 (file)
index 0000000..4102a76
Binary files /dev/null and b/doc/gui/images/hypo_quad_params_2.png differ
diff --git a/doc/gui/images/hypo_quad_params_dialog.png b/doc/gui/images/hypo_quad_params_dialog.png
new file mode 100644 (file)
index 0000000..f0c381a
Binary files /dev/null and b/doc/gui/images/hypo_quad_params_dialog.png differ
diff --git a/doc/gui/images/hypo_quad_params_dialog_corners.png b/doc/gui/images/hypo_quad_params_dialog_corners.png
new file mode 100644 (file)
index 0000000..4f30c07
Binary files /dev/null and b/doc/gui/images/hypo_quad_params_dialog_corners.png differ
diff --git a/doc/gui/images/hypo_quad_params_dialog_enf.png b/doc/gui/images/hypo_quad_params_dialog_enf.png
new file mode 100644 (file)
index 0000000..cc1be66
Binary files /dev/null and b/doc/gui/images/hypo_quad_params_dialog_enf.png differ
diff --git a/doc/gui/images/hypo_quad_params_dialog_vert.png b/doc/gui/images/hypo_quad_params_dialog_vert.png
new file mode 100644 (file)
index 0000000..c819144
Binary files /dev/null and b/doc/gui/images/hypo_quad_params_dialog_vert.png differ
diff --git a/doc/gui/images/hypo_quad_params_enfnodes_algo1.png b/doc/gui/images/hypo_quad_params_enfnodes_algo1.png
new file mode 100644 (file)
index 0000000..3040015
Binary files /dev/null and b/doc/gui/images/hypo_quad_params_enfnodes_algo1.png differ
diff --git a/doc/gui/images/hypo_quad_params_enfnodes_algo2.png b/doc/gui/images/hypo_quad_params_enfnodes_algo2.png
new file mode 100644 (file)
index 0000000..f0a4c62
Binary files /dev/null and b/doc/gui/images/hypo_quad_params_enfnodes_algo2.png differ
diff --git a/doc/gui/images/hypo_quad_params_enfnodes_algo3.png b/doc/gui/images/hypo_quad_params_enfnodes_algo3.png
new file mode 100644 (file)
index 0000000..f6db339
Binary files /dev/null and b/doc/gui/images/hypo_quad_params_enfnodes_algo3.png differ
diff --git a/doc/gui/images/hypo_quad_params_res.png b/doc/gui/images/hypo_quad_params_res.png
new file mode 100644 (file)
index 0000000..8aae276
Binary files /dev/null and b/doc/gui/images/hypo_quad_params_res.png differ
diff --git a/doc/gui/images/hypo_quad_params_res_2.png b/doc/gui/images/hypo_quad_params_res_2.png
new file mode 100644 (file)
index 0000000..6dc37e2
Binary files /dev/null and b/doc/gui/images/hypo_quad_params_res_2.png differ
diff --git a/doc/gui/images/hypo_radquad_dlg.png b/doc/gui/images/hypo_radquad_dlg.png
new file mode 100644 (file)
index 0000000..e658a68
Binary files /dev/null and b/doc/gui/images/hypo_radquad_dlg.png differ
diff --git a/doc/gui/images/hypo_sets.png b/doc/gui/images/hypo_sets.png
new file mode 100644 (file)
index 0000000..14af9af
Binary files /dev/null and b/doc/gui/images/hypo_sets.png differ
diff --git a/doc/gui/images/image10.jpg b/doc/gui/images/image10.jpg
new file mode 100644 (file)
index 0000000..c52d80c
Binary files /dev/null and b/doc/gui/images/image10.jpg differ
diff --git a/doc/gui/images/image101.png b/doc/gui/images/image101.png
new file mode 100644 (file)
index 0000000..0e2c966
Binary files /dev/null and b/doc/gui/images/image101.png differ
diff --git a/doc/gui/images/image105.gif b/doc/gui/images/image105.gif
new file mode 100644 (file)
index 0000000..0f74545
Binary files /dev/null and b/doc/gui/images/image105.gif differ
diff --git a/doc/gui/images/image106.gif b/doc/gui/images/image106.gif
new file mode 100644 (file)
index 0000000..71bda2e
Binary files /dev/null and b/doc/gui/images/image106.gif differ
diff --git a/doc/gui/images/image120.png b/doc/gui/images/image120.png
new file mode 100644 (file)
index 0000000..65318de
Binary files /dev/null and b/doc/gui/images/image120.png differ
diff --git a/doc/gui/images/image121.png b/doc/gui/images/image121.png
new file mode 100644 (file)
index 0000000..16ed2a4
Binary files /dev/null and b/doc/gui/images/image121.png differ
diff --git a/doc/gui/images/image122.png b/doc/gui/images/image122.png
new file mode 100644 (file)
index 0000000..7fa491b
Binary files /dev/null and b/doc/gui/images/image122.png differ
diff --git a/doc/gui/images/image123.gif b/doc/gui/images/image123.gif
new file mode 100644 (file)
index 0000000..2780e70
Binary files /dev/null and b/doc/gui/images/image123.gif differ
diff --git a/doc/gui/images/image124.gif b/doc/gui/images/image124.gif
new file mode 100644 (file)
index 0000000..98f0c40
Binary files /dev/null and b/doc/gui/images/image124.gif differ
diff --git a/doc/gui/images/image125.gif b/doc/gui/images/image125.gif
new file mode 100644 (file)
index 0000000..1983513
Binary files /dev/null and b/doc/gui/images/image125.gif differ
diff --git a/doc/gui/images/image126.gif b/doc/gui/images/image126.gif
new file mode 100644 (file)
index 0000000..e2e6955
Binary files /dev/null and b/doc/gui/images/image126.gif differ
diff --git a/doc/gui/images/image127.gif b/doc/gui/images/image127.gif
new file mode 100644 (file)
index 0000000..79bccc6
Binary files /dev/null and b/doc/gui/images/image127.gif differ
diff --git a/doc/gui/images/image130.gif b/doc/gui/images/image130.gif
new file mode 100644 (file)
index 0000000..cc8c3a5
Binary files /dev/null and b/doc/gui/images/image130.gif differ
diff --git a/doc/gui/images/image131.gif b/doc/gui/images/image131.gif
new file mode 100644 (file)
index 0000000..8ca3453
Binary files /dev/null and b/doc/gui/images/image131.gif differ
diff --git a/doc/gui/images/image132.gif b/doc/gui/images/image132.gif
new file mode 100644 (file)
index 0000000..e7577ea
Binary files /dev/null and b/doc/gui/images/image132.gif differ
diff --git a/doc/gui/images/image133.gif b/doc/gui/images/image133.gif
new file mode 100644 (file)
index 0000000..60a4b96
Binary files /dev/null and b/doc/gui/images/image133.gif differ
diff --git a/doc/gui/images/image134.gif b/doc/gui/images/image134.gif
new file mode 100644 (file)
index 0000000..60148ba
Binary files /dev/null and b/doc/gui/images/image134.gif differ
diff --git a/doc/gui/images/image135.gif b/doc/gui/images/image135.gif
new file mode 100644 (file)
index 0000000..13b7b08
Binary files /dev/null and b/doc/gui/images/image135.gif differ
diff --git a/doc/gui/images/image136.gif b/doc/gui/images/image136.gif
new file mode 100644 (file)
index 0000000..9b17450
Binary files /dev/null and b/doc/gui/images/image136.gif differ
diff --git a/doc/gui/images/image137.gif b/doc/gui/images/image137.gif
new file mode 100644 (file)
index 0000000..7f4cd13
Binary files /dev/null and b/doc/gui/images/image137.gif differ
diff --git a/doc/gui/images/image138.gif b/doc/gui/images/image138.gif
new file mode 100644 (file)
index 0000000..1659aab
Binary files /dev/null and b/doc/gui/images/image138.gif differ
diff --git a/doc/gui/images/image143.gif b/doc/gui/images/image143.gif
new file mode 100644 (file)
index 0000000..de9df14
Binary files /dev/null and b/doc/gui/images/image143.gif differ
diff --git a/doc/gui/images/image144.png b/doc/gui/images/image144.png
new file mode 100644 (file)
index 0000000..75219e9
Binary files /dev/null and b/doc/gui/images/image144.png differ
diff --git a/doc/gui/images/image145.png b/doc/gui/images/image145.png
new file mode 100644 (file)
index 0000000..52b21ca
Binary files /dev/null and b/doc/gui/images/image145.png differ
diff --git a/doc/gui/images/image146.png b/doc/gui/images/image146.png
new file mode 100644 (file)
index 0000000..06c1c03
Binary files /dev/null and b/doc/gui/images/image146.png differ
diff --git a/doc/gui/images/image147.gif b/doc/gui/images/image147.gif
new file mode 100644 (file)
index 0000000..7b9a354
Binary files /dev/null and b/doc/gui/images/image147.gif differ
diff --git a/doc/gui/images/image148.gif b/doc/gui/images/image148.gif
new file mode 100644 (file)
index 0000000..0ef4147
Binary files /dev/null and b/doc/gui/images/image148.gif differ
diff --git a/doc/gui/images/image15.jpg b/doc/gui/images/image15.jpg
new file mode 100644 (file)
index 0000000..15edee5
Binary files /dev/null and b/doc/gui/images/image15.jpg differ
diff --git a/doc/gui/images/image151.gif b/doc/gui/images/image151.gif
new file mode 100644 (file)
index 0000000..5c4a20e
Binary files /dev/null and b/doc/gui/images/image151.gif differ
diff --git a/doc/gui/images/image152.png b/doc/gui/images/image152.png
new file mode 100644 (file)
index 0000000..d30ae67
Binary files /dev/null and b/doc/gui/images/image152.png differ
diff --git a/doc/gui/images/image154.png b/doc/gui/images/image154.png
new file mode 100644 (file)
index 0000000..72421a4
Binary files /dev/null and b/doc/gui/images/image154.png differ
diff --git a/doc/gui/images/image155.gif b/doc/gui/images/image155.gif
new file mode 100644 (file)
index 0000000..fe03093
Binary files /dev/null and b/doc/gui/images/image155.gif differ
diff --git a/doc/gui/images/image156.gif b/doc/gui/images/image156.gif
new file mode 100644 (file)
index 0000000..36b37c8
Binary files /dev/null and b/doc/gui/images/image156.gif differ
diff --git a/doc/gui/images/image157.gif b/doc/gui/images/image157.gif
new file mode 100644 (file)
index 0000000..4592151
Binary files /dev/null and b/doc/gui/images/image157.gif differ
diff --git a/doc/gui/images/image160.gif b/doc/gui/images/image160.gif
new file mode 100644 (file)
index 0000000..5aff389
Binary files /dev/null and b/doc/gui/images/image160.gif differ
diff --git a/doc/gui/images/image161.png b/doc/gui/images/image161.png
new file mode 100644 (file)
index 0000000..5b1aed2
Binary files /dev/null and b/doc/gui/images/image161.png differ
diff --git a/doc/gui/images/image22.jpg b/doc/gui/images/image22.jpg
new file mode 100644 (file)
index 0000000..b6a5e8d
Binary files /dev/null and b/doc/gui/images/image22.jpg differ
diff --git a/doc/gui/images/image23.jpg b/doc/gui/images/image23.jpg
new file mode 100644 (file)
index 0000000..74f899b
Binary files /dev/null and b/doc/gui/images/image23.jpg differ
diff --git a/doc/gui/images/image24.gif b/doc/gui/images/image24.gif
new file mode 100644 (file)
index 0000000..3d8032b
Binary files /dev/null and b/doc/gui/images/image24.gif differ
diff --git a/doc/gui/images/image25.jpg b/doc/gui/images/image25.jpg
new file mode 100644 (file)
index 0000000..79ddf05
Binary files /dev/null and b/doc/gui/images/image25.jpg differ
diff --git a/doc/gui/images/image25.png b/doc/gui/images/image25.png
new file mode 100644 (file)
index 0000000..aeef930
Binary files /dev/null and b/doc/gui/images/image25.png differ
diff --git a/doc/gui/images/image27.jpg b/doc/gui/images/image27.jpg
new file mode 100644 (file)
index 0000000..d2f32b1
Binary files /dev/null and b/doc/gui/images/image27.jpg differ
diff --git a/doc/gui/images/image28.png b/doc/gui/images/image28.png
new file mode 100644 (file)
index 0000000..7c16b0c
Binary files /dev/null and b/doc/gui/images/image28.png differ
diff --git a/doc/gui/images/image30.jpg b/doc/gui/images/image30.jpg
new file mode 100644 (file)
index 0000000..997a36e
Binary files /dev/null and b/doc/gui/images/image30.jpg differ
diff --git a/doc/gui/images/image31.jpg b/doc/gui/images/image31.jpg
new file mode 100644 (file)
index 0000000..aa00403
Binary files /dev/null and b/doc/gui/images/image31.jpg differ
diff --git a/doc/gui/images/image32.jpg b/doc/gui/images/image32.jpg
new file mode 100644 (file)
index 0000000..77d595d
Binary files /dev/null and b/doc/gui/images/image32.jpg differ
diff --git a/doc/gui/images/image32.png b/doc/gui/images/image32.png
new file mode 100644 (file)
index 0000000..cad35fd
Binary files /dev/null and b/doc/gui/images/image32.png differ
diff --git a/doc/gui/images/image33.gif b/doc/gui/images/image33.gif
new file mode 100644 (file)
index 0000000..6613182
Binary files /dev/null and b/doc/gui/images/image33.gif differ
diff --git a/doc/gui/images/image34.png b/doc/gui/images/image34.png
new file mode 100644 (file)
index 0000000..eb7ca81
Binary files /dev/null and b/doc/gui/images/image34.png differ
diff --git a/doc/gui/images/image35.png b/doc/gui/images/image35.png
new file mode 100644 (file)
index 0000000..00031d3
Binary files /dev/null and b/doc/gui/images/image35.png differ
diff --git a/doc/gui/images/image36.jpg b/doc/gui/images/image36.jpg
new file mode 100644 (file)
index 0000000..9b44dc7
Binary files /dev/null and b/doc/gui/images/image36.jpg differ
diff --git a/doc/gui/images/image36.png b/doc/gui/images/image36.png
new file mode 100644 (file)
index 0000000..6a250d0
Binary files /dev/null and b/doc/gui/images/image36.png differ
diff --git a/doc/gui/images/image37.jpg b/doc/gui/images/image37.jpg
new file mode 100644 (file)
index 0000000..5fba91a
Binary files /dev/null and b/doc/gui/images/image37.jpg differ
diff --git a/doc/gui/images/image37.png b/doc/gui/images/image37.png
new file mode 100644 (file)
index 0000000..266cef9
Binary files /dev/null and b/doc/gui/images/image37.png differ
diff --git a/doc/gui/images/image38.jpg b/doc/gui/images/image38.jpg
new file mode 100644 (file)
index 0000000..29d5e71
Binary files /dev/null and b/doc/gui/images/image38.jpg differ
diff --git a/doc/gui/images/image38.png b/doc/gui/images/image38.png
new file mode 100644 (file)
index 0000000..fb8a690
Binary files /dev/null and b/doc/gui/images/image38.png differ
diff --git a/doc/gui/images/image39.png b/doc/gui/images/image39.png
new file mode 100644 (file)
index 0000000..54729b8
Binary files /dev/null and b/doc/gui/images/image39.png differ
diff --git a/doc/gui/images/image40.png b/doc/gui/images/image40.png
new file mode 100644 (file)
index 0000000..bbde0d4
Binary files /dev/null and b/doc/gui/images/image40.png differ
diff --git a/doc/gui/images/image41.gif b/doc/gui/images/image41.gif
new file mode 100644 (file)
index 0000000..2e132c2
Binary files /dev/null and b/doc/gui/images/image41.gif differ
diff --git a/doc/gui/images/image42.png b/doc/gui/images/image42.png
new file mode 100644 (file)
index 0000000..d0120fa
Binary files /dev/null and b/doc/gui/images/image42.png differ
diff --git a/doc/gui/images/image43.png b/doc/gui/images/image43.png
new file mode 100644 (file)
index 0000000..7b6b895
Binary files /dev/null and b/doc/gui/images/image43.png differ
diff --git a/doc/gui/images/image46.gif b/doc/gui/images/image46.gif
new file mode 100644 (file)
index 0000000..0f00ea7
Binary files /dev/null and b/doc/gui/images/image46.gif differ
diff --git a/doc/gui/images/image49.png b/doc/gui/images/image49.png
new file mode 100644 (file)
index 0000000..6e5b317
Binary files /dev/null and b/doc/gui/images/image49.png differ
diff --git a/doc/gui/images/image5.jpg b/doc/gui/images/image5.jpg
new file mode 100644 (file)
index 0000000..f195ac8
Binary files /dev/null and b/doc/gui/images/image5.jpg differ
diff --git a/doc/gui/images/image50.gif b/doc/gui/images/image50.gif
new file mode 100644 (file)
index 0000000..22bdf55
Binary files /dev/null and b/doc/gui/images/image50.gif differ
diff --git a/doc/gui/images/image51.jpg b/doc/gui/images/image51.jpg
new file mode 100644 (file)
index 0000000..dfe3bc6
Binary files /dev/null and b/doc/gui/images/image51.jpg differ
diff --git a/doc/gui/images/image52.jpg b/doc/gui/images/image52.jpg
new file mode 100644 (file)
index 0000000..1c83b35
Binary files /dev/null and b/doc/gui/images/image52.jpg differ
diff --git a/doc/gui/images/image53.gif b/doc/gui/images/image53.gif
new file mode 100644 (file)
index 0000000..8f72820
Binary files /dev/null and b/doc/gui/images/image53.gif differ
diff --git a/doc/gui/images/image55.gif b/doc/gui/images/image55.gif
new file mode 100644 (file)
index 0000000..cc1b80e
Binary files /dev/null and b/doc/gui/images/image55.gif differ
diff --git a/doc/gui/images/image56.gif b/doc/gui/images/image56.gif
new file mode 100644 (file)
index 0000000..ffe1e95
Binary files /dev/null and b/doc/gui/images/image56.gif differ
diff --git a/doc/gui/images/image56.jpg b/doc/gui/images/image56.jpg
new file mode 100644 (file)
index 0000000..6f19970
Binary files /dev/null and b/doc/gui/images/image56.jpg differ
diff --git a/doc/gui/images/image58.png b/doc/gui/images/image58.png
new file mode 100644 (file)
index 0000000..a496170
Binary files /dev/null and b/doc/gui/images/image58.png differ
diff --git a/doc/gui/images/image59.png b/doc/gui/images/image59.png
new file mode 100644 (file)
index 0000000..5b8106e
Binary files /dev/null and b/doc/gui/images/image59.png differ
diff --git a/doc/gui/images/image63.png b/doc/gui/images/image63.png
new file mode 100644 (file)
index 0000000..b9e65be
Binary files /dev/null and b/doc/gui/images/image63.png differ
diff --git a/doc/gui/images/image64.png b/doc/gui/images/image64.png
new file mode 100644 (file)
index 0000000..554959b
Binary files /dev/null and b/doc/gui/images/image64.png differ
diff --git a/doc/gui/images/image67.png b/doc/gui/images/image67.png
new file mode 100644 (file)
index 0000000..0d456ba
Binary files /dev/null and b/doc/gui/images/image67.png differ
diff --git a/doc/gui/images/image7.jpg b/doc/gui/images/image7.jpg
new file mode 100644 (file)
index 0000000..cbd6170
Binary files /dev/null and b/doc/gui/images/image7.jpg differ
diff --git a/doc/gui/images/image70.jpg b/doc/gui/images/image70.jpg
new file mode 100644 (file)
index 0000000..0df360f
Binary files /dev/null and b/doc/gui/images/image70.jpg differ
diff --git a/doc/gui/images/image70.png b/doc/gui/images/image70.png
new file mode 100644 (file)
index 0000000..30a2d92
Binary files /dev/null and b/doc/gui/images/image70.png differ
diff --git a/doc/gui/images/image71.jpg b/doc/gui/images/image71.jpg
new file mode 100644 (file)
index 0000000..cb1223d
Binary files /dev/null and b/doc/gui/images/image71.jpg differ
diff --git a/doc/gui/images/image71.png b/doc/gui/images/image71.png
new file mode 100644 (file)
index 0000000..ef9407a
Binary files /dev/null and b/doc/gui/images/image71.png differ
diff --git a/doc/gui/images/image74.gif b/doc/gui/images/image74.gif
new file mode 100644 (file)
index 0000000..c66029e
Binary files /dev/null and b/doc/gui/images/image74.gif differ
diff --git a/doc/gui/images/image75.jpg b/doc/gui/images/image75.jpg
new file mode 100644 (file)
index 0000000..54718d4
Binary files /dev/null and b/doc/gui/images/image75.jpg differ
diff --git a/doc/gui/images/image76.jpg b/doc/gui/images/image76.jpg
new file mode 100644 (file)
index 0000000..cdeb880
Binary files /dev/null and b/doc/gui/images/image76.jpg differ
diff --git a/doc/gui/images/image77.jpg b/doc/gui/images/image77.jpg
new file mode 100644 (file)
index 0000000..9205644
Binary files /dev/null and b/doc/gui/images/image77.jpg differ
diff --git a/doc/gui/images/image78.jpg b/doc/gui/images/image78.jpg
new file mode 100644 (file)
index 0000000..80c2a16
Binary files /dev/null and b/doc/gui/images/image78.jpg differ
diff --git a/doc/gui/images/image79.jpg b/doc/gui/images/image79.jpg
new file mode 100644 (file)
index 0000000..0efc736
Binary files /dev/null and b/doc/gui/images/image79.jpg differ
diff --git a/doc/gui/images/image79.png b/doc/gui/images/image79.png
new file mode 100644 (file)
index 0000000..e8d648c
Binary files /dev/null and b/doc/gui/images/image79.png differ
diff --git a/doc/gui/images/image80.png b/doc/gui/images/image80.png
new file mode 100644 (file)
index 0000000..114b38d
Binary files /dev/null and b/doc/gui/images/image80.png differ
diff --git a/doc/gui/images/image81.png b/doc/gui/images/image81.png
new file mode 100644 (file)
index 0000000..47e03cc
Binary files /dev/null and b/doc/gui/images/image81.png differ
diff --git a/doc/gui/images/image82.png b/doc/gui/images/image82.png
new file mode 100644 (file)
index 0000000..c37c5fb
Binary files /dev/null and b/doc/gui/images/image82.png differ
diff --git a/doc/gui/images/image83.gif b/doc/gui/images/image83.gif
new file mode 100644 (file)
index 0000000..331b64a
Binary files /dev/null and b/doc/gui/images/image83.gif differ
diff --git a/doc/gui/images/image84.png b/doc/gui/images/image84.png
new file mode 100644 (file)
index 0000000..2c0b285
Binary files /dev/null and b/doc/gui/images/image84.png differ
diff --git a/doc/gui/images/image86.jpg b/doc/gui/images/image86.jpg
new file mode 100644 (file)
index 0000000..168b43e
Binary files /dev/null and b/doc/gui/images/image86.jpg differ
diff --git a/doc/gui/images/image88.gif b/doc/gui/images/image88.gif
new file mode 100644 (file)
index 0000000..553656d
Binary files /dev/null and b/doc/gui/images/image88.gif differ
diff --git a/doc/gui/images/image88.jpg b/doc/gui/images/image88.jpg
new file mode 100644 (file)
index 0000000..9499ab2
Binary files /dev/null and b/doc/gui/images/image88.jpg differ
diff --git a/doc/gui/images/image90.jpg b/doc/gui/images/image90.jpg
new file mode 100644 (file)
index 0000000..a78c439
Binary files /dev/null and b/doc/gui/images/image90.jpg differ
diff --git a/doc/gui/images/image91.png b/doc/gui/images/image91.png
new file mode 100644 (file)
index 0000000..64fcc31
Binary files /dev/null and b/doc/gui/images/image91.png differ
diff --git a/doc/gui/images/image92.jpg b/doc/gui/images/image92.jpg
new file mode 100644 (file)
index 0000000..bf6e610
Binary files /dev/null and b/doc/gui/images/image92.jpg differ
diff --git a/doc/gui/images/image92.png b/doc/gui/images/image92.png
new file mode 100644 (file)
index 0000000..3068b0f
Binary files /dev/null and b/doc/gui/images/image92.png differ
diff --git a/doc/gui/images/image93.jpg b/doc/gui/images/image93.jpg
new file mode 100644 (file)
index 0000000..f9780b4
Binary files /dev/null and b/doc/gui/images/image93.jpg differ
diff --git a/doc/gui/images/image94.gif b/doc/gui/images/image94.gif
new file mode 100644 (file)
index 0000000..7313f5d
Binary files /dev/null and b/doc/gui/images/image94.gif differ
diff --git a/doc/gui/images/image94.jpg b/doc/gui/images/image94.jpg
new file mode 100644 (file)
index 0000000..7891667
Binary files /dev/null and b/doc/gui/images/image94.jpg differ
diff --git a/doc/gui/images/image95.gif b/doc/gui/images/image95.gif
new file mode 100644 (file)
index 0000000..6491f27
Binary files /dev/null and b/doc/gui/images/image95.gif differ
diff --git a/doc/gui/images/image95.jpg b/doc/gui/images/image95.jpg
new file mode 100644 (file)
index 0000000..047dccf
Binary files /dev/null and b/doc/gui/images/image95.jpg differ
diff --git a/doc/gui/images/image96.gif b/doc/gui/images/image96.gif
new file mode 100644 (file)
index 0000000..1392ee7
Binary files /dev/null and b/doc/gui/images/image96.gif differ
diff --git a/doc/gui/images/image96.jpg b/doc/gui/images/image96.jpg
new file mode 100644 (file)
index 0000000..5f3128e
Binary files /dev/null and b/doc/gui/images/image96.jpg differ
diff --git a/doc/gui/images/image97.gif b/doc/gui/images/image97.gif
new file mode 100644 (file)
index 0000000..480b584
Binary files /dev/null and b/doc/gui/images/image97.gif differ
diff --git a/doc/gui/images/image97.jpg b/doc/gui/images/image97.jpg
new file mode 100644 (file)
index 0000000..275f2e3
Binary files /dev/null and b/doc/gui/images/image97.jpg differ
diff --git a/doc/gui/images/image98.png b/doc/gui/images/image98.png
new file mode 100644 (file)
index 0000000..a2c131d
Binary files /dev/null and b/doc/gui/images/image98.png differ
diff --git a/doc/gui/images/image99.gif b/doc/gui/images/image99.gif
new file mode 100644 (file)
index 0000000..2672e99
Binary files /dev/null and b/doc/gui/images/image99.gif differ
diff --git a/doc/gui/images/image_octa12.png b/doc/gui/images/image_octa12.png
new file mode 100644 (file)
index 0000000..1a5ed8c
Binary files /dev/null and b/doc/gui/images/image_octa12.png differ
diff --git a/doc/gui/images/image_warping3D.jpg b/doc/gui/images/image_warping3D.jpg
new file mode 100644 (file)
index 0000000..1795d1b
Binary files /dev/null and b/doc/gui/images/image_warping3D.jpg differ
diff --git a/doc/gui/images/intersect_groups1.png b/doc/gui/images/intersect_groups1.png
new file mode 100644 (file)
index 0000000..ad2ff52
Binary files /dev/null and b/doc/gui/images/intersect_groups1.png differ
diff --git a/doc/gui/images/intersectgroups.png b/doc/gui/images/intersectgroups.png
new file mode 100644 (file)
index 0000000..8114b10
Binary files /dev/null and b/doc/gui/images/intersectgroups.png differ
diff --git a/doc/gui/images/length-crit.png b/doc/gui/images/length-crit.png
new file mode 100644 (file)
index 0000000..96836cd
Binary files /dev/null and b/doc/gui/images/length-crit.png differ
diff --git a/doc/gui/images/length2d.png b/doc/gui/images/length2d.png
new file mode 100644 (file)
index 0000000..9a5264a
Binary files /dev/null and b/doc/gui/images/length2d.png differ
diff --git a/doc/gui/images/lengthnearvertex.png b/doc/gui/images/lengthnearvertex.png
new file mode 100644 (file)
index 0000000..4a59c7b
Binary files /dev/null and b/doc/gui/images/lengthnearvertex.png differ
diff --git a/doc/gui/images/max_el_area.png b/doc/gui/images/max_el_area.png
new file mode 100644 (file)
index 0000000..88db3d6
Binary files /dev/null and b/doc/gui/images/max_el_area.png differ
diff --git a/doc/gui/images/max_element_length_2d.png b/doc/gui/images/max_element_length_2d.png
new file mode 100644 (file)
index 0000000..012d552
Binary files /dev/null and b/doc/gui/images/max_element_length_2d.png differ
diff --git a/doc/gui/images/max_element_length_3d.png b/doc/gui/images/max_element_length_3d.png
new file mode 100644 (file)
index 0000000..fdf1b76
Binary files /dev/null and b/doc/gui/images/max_element_length_3d.png differ
diff --git a/doc/gui/images/mergeelems.png b/doc/gui/images/mergeelems.png
new file mode 100644 (file)
index 0000000..f35955a
Binary files /dev/null and b/doc/gui/images/mergeelems.png differ
diff --git a/doc/gui/images/mergeelems_auto.png b/doc/gui/images/mergeelems_auto.png
new file mode 100644 (file)
index 0000000..ffbb092
Binary files /dev/null and b/doc/gui/images/mergeelems_auto.png differ
diff --git a/doc/gui/images/mergeelems_ico.png b/doc/gui/images/mergeelems_ico.png
new file mode 100644 (file)
index 0000000..1342fe8
Binary files /dev/null and b/doc/gui/images/mergeelems_ico.png differ
diff --git a/doc/gui/images/mergenodes.png b/doc/gui/images/mergenodes.png
new file mode 100644 (file)
index 0000000..2676025
Binary files /dev/null and b/doc/gui/images/mergenodes.png differ
diff --git a/doc/gui/images/mergenodes_auto.png b/doc/gui/images/mergenodes_auto.png
new file mode 100644 (file)
index 0000000..e01aacc
Binary files /dev/null and b/doc/gui/images/mergenodes_auto.png differ
diff --git a/doc/gui/images/mergenodes_ico.png b/doc/gui/images/mergenodes_ico.png
new file mode 100644 (file)
index 0000000..a0c1146
Binary files /dev/null and b/doc/gui/images/mergenodes_ico.png differ
diff --git a/doc/gui/images/merging_nodes1.png b/doc/gui/images/merging_nodes1.png
new file mode 100644 (file)
index 0000000..05c8175
Binary files /dev/null and b/doc/gui/images/merging_nodes1.png differ
diff --git a/doc/gui/images/merging_nodes2.png b/doc/gui/images/merging_nodes2.png
new file mode 100644 (file)
index 0000000..862ed17
Binary files /dev/null and b/doc/gui/images/merging_nodes2.png differ
diff --git a/doc/gui/images/mesh_clear.png b/doc/gui/images/mesh_clear.png
new file mode 100644 (file)
index 0000000..956e903
Binary files /dev/null and b/doc/gui/images/mesh_clear.png differ
diff --git a/doc/gui/images/mesh_cylinder_hexa.png b/doc/gui/images/mesh_cylinder_hexa.png
new file mode 100644 (file)
index 0000000..f95dc67
Binary files /dev/null and b/doc/gui/images/mesh_cylinder_hexa.png differ
diff --git a/doc/gui/images/mesh_deflection.png b/doc/gui/images/mesh_deflection.png
new file mode 100644 (file)
index 0000000..f9d8542
Binary files /dev/null and b/doc/gui/images/mesh_deflection.png differ
diff --git a/doc/gui/images/mesh_evaluation_succeed.png b/doc/gui/images/mesh_evaluation_succeed.png
new file mode 100644 (file)
index 0000000..b9aeb52
Binary files /dev/null and b/doc/gui/images/mesh_evaluation_succeed.png differ
diff --git a/doc/gui/images/mesh_fixedpnt.png b/doc/gui/images/mesh_fixedpnt.png
new file mode 100644 (file)
index 0000000..5d044ab
Binary files /dev/null and b/doc/gui/images/mesh_fixedpnt.png differ
diff --git a/doc/gui/images/mesh_for_extr_along_path.png b/doc/gui/images/mesh_for_extr_along_path.png
new file mode 100644 (file)
index 0000000..4ee52eb
Binary files /dev/null and b/doc/gui/images/mesh_for_extr_along_path.png differ
diff --git a/doc/gui/images/mesh_node_to_point.png b/doc/gui/images/mesh_node_to_point.png
new file mode 100644 (file)
index 0000000..e7e2866
Binary files /dev/null and b/doc/gui/images/mesh_node_to_point.png differ
diff --git a/doc/gui/images/mesh_order_123.png b/doc/gui/images/mesh_order_123.png
new file mode 100644 (file)
index 0000000..952f207
Binary files /dev/null and b/doc/gui/images/mesh_order_123.png differ
diff --git a/doc/gui/images/mesh_order_123_res.png b/doc/gui/images/mesh_order_123_res.png
new file mode 100644 (file)
index 0000000..02208a0
Binary files /dev/null and b/doc/gui/images/mesh_order_123_res.png differ
diff --git a/doc/gui/images/mesh_order_213.png b/doc/gui/images/mesh_order_213.png
new file mode 100644 (file)
index 0000000..959ca38
Binary files /dev/null and b/doc/gui/images/mesh_order_213.png differ
diff --git a/doc/gui/images/mesh_order_213_res.png b/doc/gui/images/mesh_order_213_res.png
new file mode 100644 (file)
index 0000000..8706fb4
Binary files /dev/null and b/doc/gui/images/mesh_order_213_res.png differ
diff --git a/doc/gui/images/mesh_order_321.png b/doc/gui/images/mesh_order_321.png
new file mode 100644 (file)
index 0000000..7ad61fa
Binary files /dev/null and b/doc/gui/images/mesh_order_321.png differ
diff --git a/doc/gui/images/mesh_order_321_res.png b/doc/gui/images/mesh_order_321_res.png
new file mode 100644 (file)
index 0000000..7a5f017
Binary files /dev/null and b/doc/gui/images/mesh_order_321_res.png differ
diff --git a/doc/gui/images/mesh_order_no_concurrent.png b/doc/gui/images/mesh_order_no_concurrent.png
new file mode 100644 (file)
index 0000000..6df59a1
Binary files /dev/null and b/doc/gui/images/mesh_order_no_concurrent.png differ
diff --git a/doc/gui/images/mesh_order_preview.png b/doc/gui/images/mesh_order_preview.png
new file mode 100644 (file)
index 0000000..f4b5e3b
Binary files /dev/null and b/doc/gui/images/mesh_order_preview.png differ
diff --git a/doc/gui/images/mesh_precompute.png b/doc/gui/images/mesh_precompute.png
new file mode 100644 (file)
index 0000000..dd90498
Binary files /dev/null and b/doc/gui/images/mesh_precompute.png differ
diff --git a/doc/gui/images/mesh_radquad_01.png b/doc/gui/images/mesh_radquad_01.png
new file mode 100644 (file)
index 0000000..dfd8eb5
Binary files /dev/null and b/doc/gui/images/mesh_radquad_01.png differ
diff --git a/doc/gui/images/mesh_radquad_02.png b/doc/gui/images/mesh_radquad_02.png
new file mode 100644 (file)
index 0000000..63432eb
Binary files /dev/null and b/doc/gui/images/mesh_radquad_02.png differ
diff --git a/doc/gui/images/mesh_split_diag_interactive.png b/doc/gui/images/mesh_split_diag_interactive.png
new file mode 100644 (file)
index 0000000..1342df9
Binary files /dev/null and b/doc/gui/images/mesh_split_diag_interactive.png differ
diff --git a/doc/gui/images/mesh_split_face_interactive.png b/doc/gui/images/mesh_split_face_interactive.png
new file mode 100644 (file)
index 0000000..5323e3f
Binary files /dev/null and b/doc/gui/images/mesh_split_face_interactive.png differ
diff --git a/doc/gui/images/meshcomputationfail.png b/doc/gui/images/meshcomputationfail.png
new file mode 100644 (file)
index 0000000..8d09dba
Binary files /dev/null and b/doc/gui/images/meshcomputationfail.png differ
diff --git a/doc/gui/images/meshcomputationsucceed.png b/doc/gui/images/meshcomputationsucceed.png
new file mode 100644 (file)
index 0000000..943387c
Binary files /dev/null and b/doc/gui/images/meshcomputationsucceed.png differ
diff --git a/doc/gui/images/meshcut_plugin.png b/doc/gui/images/meshcut_plugin.png
new file mode 100644 (file)
index 0000000..305e920
Binary files /dev/null and b/doc/gui/images/meshcut_plugin.png differ
diff --git a/doc/gui/images/meshexportgroupwarning.png b/doc/gui/images/meshexportgroupwarning.png
new file mode 100644 (file)
index 0000000..613cd46
Binary files /dev/null and b/doc/gui/images/meshexportgroupwarning.png differ
diff --git a/doc/gui/images/meshexportmesh.png b/doc/gui/images/meshexportmesh.png
new file mode 100644 (file)
index 0000000..f60679e
Binary files /dev/null and b/doc/gui/images/meshexportmesh.png differ
diff --git a/doc/gui/images/meshimportmesh.png b/doc/gui/images/meshimportmesh.png
new file mode 100644 (file)
index 0000000..9190987
Binary files /dev/null and b/doc/gui/images/meshimportmesh.png differ
diff --git a/doc/gui/images/meshtopass1.png b/doc/gui/images/meshtopass1.png
new file mode 100644 (file)
index 0000000..1705f5e
Binary files /dev/null and b/doc/gui/images/meshtopass1.png differ
diff --git a/doc/gui/images/meshtopass2.png b/doc/gui/images/meshtopass2.png
new file mode 100644 (file)
index 0000000..2bb53dc
Binary files /dev/null and b/doc/gui/images/meshtopass2.png differ
diff --git a/doc/gui/images/meshtopass3.png b/doc/gui/images/meshtopass3.png
new file mode 100644 (file)
index 0000000..bdbf86f
Binary files /dev/null and b/doc/gui/images/meshtopass3.png differ
diff --git a/doc/gui/images/meshtrianglemergeelem1.png b/doc/gui/images/meshtrianglemergeelem1.png
new file mode 100644 (file)
index 0000000..0f9bd52
Binary files /dev/null and b/doc/gui/images/meshtrianglemergeelem1.png differ
diff --git a/doc/gui/images/min_distance.png b/doc/gui/images/min_distance.png
new file mode 100644 (file)
index 0000000..294178f
Binary files /dev/null and b/doc/gui/images/min_distance.png differ
diff --git a/doc/gui/images/min_distance_preview.png b/doc/gui/images/min_distance_preview.png
new file mode 100644 (file)
index 0000000..c5373d9
Binary files /dev/null and b/doc/gui/images/min_distance_preview.png differ
diff --git a/doc/gui/images/movenodes.png b/doc/gui/images/movenodes.png
new file mode 100644 (file)
index 0000000..3027c76
Binary files /dev/null and b/doc/gui/images/movenodes.png differ
diff --git a/doc/gui/images/moving_nodes1.png b/doc/gui/images/moving_nodes1.png
new file mode 100644 (file)
index 0000000..295b3a3
Binary files /dev/null and b/doc/gui/images/moving_nodes1.png differ
diff --git a/doc/gui/images/moving_nodes2.png b/doc/gui/images/moving_nodes2.png
new file mode 100644 (file)
index 0000000..a89e8b3
Binary files /dev/null and b/doc/gui/images/moving_nodes2.png differ
diff --git a/doc/gui/images/number_of_layers.png b/doc/gui/images/number_of_layers.png
new file mode 100644 (file)
index 0000000..8baa821
Binary files /dev/null and b/doc/gui/images/number_of_layers.png differ
diff --git a/doc/gui/images/offset_filter_for_faces_gui.png b/doc/gui/images/offset_filter_for_faces_gui.png
new file mode 100644 (file)
index 0000000..ef39a7b
Binary files /dev/null and b/doc/gui/images/offset_filter_for_faces_gui.png differ
diff --git a/doc/gui/images/offset_mesh.png b/doc/gui/images/offset_mesh.png
new file mode 100644 (file)
index 0000000..53aaeed
Binary files /dev/null and b/doc/gui/images/offset_mesh.png differ
diff --git a/doc/gui/images/offset_mesh_from_filter.png b/doc/gui/images/offset_mesh_from_filter.png
new file mode 100644 (file)
index 0000000..a5d2402
Binary files /dev/null and b/doc/gui/images/offset_mesh_from_filter.png differ
diff --git a/doc/gui/images/opengl_clipping.png b/doc/gui/images/opengl_clipping.png
new file mode 100644 (file)
index 0000000..475151a
Binary files /dev/null and b/doc/gui/images/opengl_clipping.png differ
diff --git a/doc/gui/images/orientaation1.png b/doc/gui/images/orientaation1.png
new file mode 100644 (file)
index 0000000..b1c2ec0
Binary files /dev/null and b/doc/gui/images/orientaation1.png differ
diff --git a/doc/gui/images/over_constrained_faces.png b/doc/gui/images/over_constrained_faces.png
new file mode 100644 (file)
index 0000000..9d584e8
Binary files /dev/null and b/doc/gui/images/over_constrained_faces.png differ
diff --git a/doc/gui/images/over_constrained_volumes.png b/doc/gui/images/over_constrained_volumes.png
new file mode 100644 (file)
index 0000000..7611443
Binary files /dev/null and b/doc/gui/images/over_constrained_volumes.png differ
diff --git a/doc/gui/images/pattern2d.png b/doc/gui/images/pattern2d.png
new file mode 100644 (file)
index 0000000..ff488eb
Binary files /dev/null and b/doc/gui/images/pattern2d.png differ
diff --git a/doc/gui/images/patternmapping1.png b/doc/gui/images/patternmapping1.png
new file mode 100644 (file)
index 0000000..e0eb867
Binary files /dev/null and b/doc/gui/images/patternmapping1.png differ
diff --git a/doc/gui/images/patternmapping2.png b/doc/gui/images/patternmapping2.png
new file mode 100644 (file)
index 0000000..5c8c520
Binary files /dev/null and b/doc/gui/images/patternmapping2.png differ
diff --git a/doc/gui/images/point_marker_widget1.png b/doc/gui/images/point_marker_widget1.png
new file mode 100644 (file)
index 0000000..3d788cd
Binary files /dev/null and b/doc/gui/images/point_marker_widget1.png differ
diff --git a/doc/gui/images/point_marker_widget2.png b/doc/gui/images/point_marker_widget2.png
new file mode 100644 (file)
index 0000000..d44f388
Binary files /dev/null and b/doc/gui/images/point_marker_widget2.png differ
diff --git a/doc/gui/images/pref21.png b/doc/gui/images/pref21.png
new file mode 100644 (file)
index 0000000..b0d756f
Binary files /dev/null and b/doc/gui/images/pref21.png differ
diff --git a/doc/gui/images/pref22.png b/doc/gui/images/pref22.png
new file mode 100644 (file)
index 0000000..cf08621
Binary files /dev/null and b/doc/gui/images/pref22.png differ
diff --git a/doc/gui/images/pref23.png b/doc/gui/images/pref23.png
new file mode 100644 (file)
index 0000000..23d804b
Binary files /dev/null and b/doc/gui/images/pref23.png differ
diff --git a/doc/gui/images/pref24.png b/doc/gui/images/pref24.png
new file mode 100644 (file)
index 0000000..9a7a5a8
Binary files /dev/null and b/doc/gui/images/pref24.png differ
diff --git a/doc/gui/images/preview_mesh_1D.png b/doc/gui/images/preview_mesh_1D.png
new file mode 100644 (file)
index 0000000..3922a19
Binary files /dev/null and b/doc/gui/images/preview_mesh_1D.png differ
diff --git a/doc/gui/images/preview_mesh_2D.png b/doc/gui/images/preview_mesh_2D.png
new file mode 100644 (file)
index 0000000..55ec7b8
Binary files /dev/null and b/doc/gui/images/preview_mesh_2D.png differ
diff --git a/doc/gui/images/preview_tmp_data.png b/doc/gui/images/preview_tmp_data.png
new file mode 100644 (file)
index 0000000..6f9fb31
Binary files /dev/null and b/doc/gui/images/preview_tmp_data.png differ
diff --git a/doc/gui/images/prism_mesh.png b/doc/gui/images/prism_mesh.png
new file mode 100644 (file)
index 0000000..95a3121
Binary files /dev/null and b/doc/gui/images/prism_mesh.png differ
diff --git a/doc/gui/images/prism_needs_hyps.png b/doc/gui/images/prism_needs_hyps.png
new file mode 100644 (file)
index 0000000..d56d430
Binary files /dev/null and b/doc/gui/images/prism_needs_hyps.png differ
diff --git a/doc/gui/images/prism_ok_ko.png b/doc/gui/images/prism_ok_ko.png
new file mode 100644 (file)
index 0000000..0394985
Binary files /dev/null and b/doc/gui/images/prism_ok_ko.png differ
diff --git a/doc/gui/images/prism_stack.png b/doc/gui/images/prism_stack.png
new file mode 100644 (file)
index 0000000..bba6334
Binary files /dev/null and b/doc/gui/images/prism_stack.png differ
diff --git a/doc/gui/images/prism_tui_sample.png b/doc/gui/images/prism_tui_sample.png
new file mode 100644 (file)
index 0000000..0df7e48
Binary files /dev/null and b/doc/gui/images/prism_tui_sample.png differ
diff --git a/doc/gui/images/projection_1d.png b/doc/gui/images/projection_1d.png
new file mode 100644 (file)
index 0000000..6115327
Binary files /dev/null and b/doc/gui/images/projection_1d.png differ
diff --git a/doc/gui/images/projection_2d.png b/doc/gui/images/projection_2d.png
new file mode 100644 (file)
index 0000000..e137309
Binary files /dev/null and b/doc/gui/images/projection_2d.png differ
diff --git a/doc/gui/images/projection_3d.png b/doc/gui/images/projection_3d.png
new file mode 100644 (file)
index 0000000..03eedc3
Binary files /dev/null and b/doc/gui/images/projection_3d.png differ
diff --git a/doc/gui/images/propagation_chain.png b/doc/gui/images/propagation_chain.png
new file mode 100644 (file)
index 0000000..420dee0
Binary files /dev/null and b/doc/gui/images/propagation_chain.png differ
diff --git a/doc/gui/images/quad_from_ma_medial_axis.png b/doc/gui/images/quad_from_ma_medial_axis.png
new file mode 100644 (file)
index 0000000..b02ceab
Binary files /dev/null and b/doc/gui/images/quad_from_ma_medial_axis.png differ
diff --git a/doc/gui/images/quad_from_ma_mesh.png b/doc/gui/images/quad_from_ma_mesh.png
new file mode 100644 (file)
index 0000000..3e3c63b
Binary files /dev/null and b/doc/gui/images/quad_from_ma_mesh.png differ
diff --git a/doc/gui/images/quad_from_ma_ring_mesh.png b/doc/gui/images/quad_from_ma_ring_mesh.png
new file mode 100644 (file)
index 0000000..9a43e6d
Binary files /dev/null and b/doc/gui/images/quad_from_ma_ring_mesh.png differ
diff --git a/doc/gui/images/quad_mesh_invalid.png b/doc/gui/images/quad_mesh_invalid.png
new file mode 100644 (file)
index 0000000..cce9980
Binary files /dev/null and b/doc/gui/images/quad_mesh_invalid.png differ
diff --git a/doc/gui/images/quad_meshes.png b/doc/gui/images/quad_meshes.png
new file mode 100644 (file)
index 0000000..c6cbd0c
Binary files /dev/null and b/doc/gui/images/quad_meshes.png differ
diff --git a/doc/gui/images/radial_prism_mesh.png b/doc/gui/images/radial_prism_mesh.png
new file mode 100644 (file)
index 0000000..6d9a986
Binary files /dev/null and b/doc/gui/images/radial_prism_mesh.png differ
diff --git a/doc/gui/images/reduce_three_to_one.png b/doc/gui/images/reduce_three_to_one.png
new file mode 100644 (file)
index 0000000..d5f4a38
Binary files /dev/null and b/doc/gui/images/reduce_three_to_one.png differ
diff --git a/doc/gui/images/remove.gif b/doc/gui/images/remove.gif
new file mode 100644 (file)
index 0000000..8b81cb2
Binary files /dev/null and b/doc/gui/images/remove.gif differ
diff --git a/doc/gui/images/remove.png b/doc/gui/images/remove.png
new file mode 100644 (file)
index 0000000..cbf4069
Binary files /dev/null and b/doc/gui/images/remove.png differ
diff --git a/doc/gui/images/remove_elements1.png b/doc/gui/images/remove_elements1.png
new file mode 100644 (file)
index 0000000..538460f
Binary files /dev/null and b/doc/gui/images/remove_elements1.png differ
diff --git a/doc/gui/images/remove_elements2.png b/doc/gui/images/remove_elements2.png
new file mode 100644 (file)
index 0000000..888188c
Binary files /dev/null and b/doc/gui/images/remove_elements2.png differ
diff --git a/doc/gui/images/remove_elements_icon.png b/doc/gui/images/remove_elements_icon.png
new file mode 100644 (file)
index 0000000..2a31c3e
Binary files /dev/null and b/doc/gui/images/remove_elements_icon.png differ
diff --git a/doc/gui/images/remove_node_reconnection.png b/doc/gui/images/remove_node_reconnection.png
new file mode 100644 (file)
index 0000000..02eef9c
Binary files /dev/null and b/doc/gui/images/remove_node_reconnection.png differ
diff --git a/doc/gui/images/remove_node_reconnection_dlg.png b/doc/gui/images/remove_node_reconnection_dlg.png
new file mode 100644 (file)
index 0000000..ecc57bd
Binary files /dev/null and b/doc/gui/images/remove_node_reconnection_dlg.png differ
diff --git a/doc/gui/images/remove_node_reconnection_icon.png b/doc/gui/images/remove_node_reconnection_icon.png
new file mode 100644 (file)
index 0000000..3180b11
Binary files /dev/null and b/doc/gui/images/remove_node_reconnection_icon.png differ
diff --git a/doc/gui/images/remove_nodes1.png b/doc/gui/images/remove_nodes1.png
new file mode 100644 (file)
index 0000000..94caae6
Binary files /dev/null and b/doc/gui/images/remove_nodes1.png differ
diff --git a/doc/gui/images/remove_nodes2.png b/doc/gui/images/remove_nodes2.png
new file mode 100644 (file)
index 0000000..e9f8064
Binary files /dev/null and b/doc/gui/images/remove_nodes2.png differ
diff --git a/doc/gui/images/remove_nodes_icon.png b/doc/gui/images/remove_nodes_icon.png
new file mode 100644 (file)
index 0000000..0818837
Binary files /dev/null and b/doc/gui/images/remove_nodes_icon.png differ
diff --git a/doc/gui/images/remove_orphan_nodes_icon.png b/doc/gui/images/remove_orphan_nodes_icon.png
new file mode 100644 (file)
index 0000000..16df2e5
Binary files /dev/null and b/doc/gui/images/remove_orphan_nodes_icon.png differ
diff --git a/doc/gui/images/removeelements.png b/doc/gui/images/removeelements.png
new file mode 100644 (file)
index 0000000..78e4959
Binary files /dev/null and b/doc/gui/images/removeelements.png differ
diff --git a/doc/gui/images/removenodes.png b/doc/gui/images/removenodes.png
new file mode 100644 (file)
index 0000000..52a5ac6
Binary files /dev/null and b/doc/gui/images/removenodes.png differ
diff --git a/doc/gui/images/removeorphannodes.png b/doc/gui/images/removeorphannodes.png
new file mode 100644 (file)
index 0000000..fdf8395
Binary files /dev/null and b/doc/gui/images/removeorphannodes.png differ
diff --git a/doc/gui/images/renumberelements.png b/doc/gui/images/renumberelements.png
new file mode 100644 (file)
index 0000000..0f09c6a
Binary files /dev/null and b/doc/gui/images/renumberelements.png differ
diff --git a/doc/gui/images/renumbernodes.png b/doc/gui/images/renumbernodes.png
new file mode 100644 (file)
index 0000000..46fe28b
Binary files /dev/null and b/doc/gui/images/renumbernodes.png differ
diff --git a/doc/gui/images/reorient_2d_face.png b/doc/gui/images/reorient_2d_face.png
new file mode 100644 (file)
index 0000000..0407faf
Binary files /dev/null and b/doc/gui/images/reorient_2d_face.png differ
diff --git a/doc/gui/images/reorient_2d_point.png b/doc/gui/images/reorient_2d_point.png
new file mode 100644 (file)
index 0000000..8440c91
Binary files /dev/null and b/doc/gui/images/reorient_2d_point.png differ
diff --git a/doc/gui/images/reorient_2d_refgroup.png b/doc/gui/images/reorient_2d_refgroup.png
new file mode 100644 (file)
index 0000000..f080f46
Binary files /dev/null and b/doc/gui/images/reorient_2d_refgroup.png differ
diff --git a/doc/gui/images/reorient_2d_volume.png b/doc/gui/images/reorient_2d_volume.png
new file mode 100644 (file)
index 0000000..1d04de0
Binary files /dev/null and b/doc/gui/images/reorient_2d_volume.png differ
diff --git a/doc/gui/images/reorient_faces_face.png b/doc/gui/images/reorient_faces_face.png
new file mode 100644 (file)
index 0000000..23c241f
Binary files /dev/null and b/doc/gui/images/reorient_faces_face.png differ
diff --git a/doc/gui/images/reorient_faces_point.png b/doc/gui/images/reorient_faces_point.png
new file mode 100644 (file)
index 0000000..63fae72
Binary files /dev/null and b/doc/gui/images/reorient_faces_point.png differ
diff --git a/doc/gui/images/reorient_faces_ref_groups.png b/doc/gui/images/reorient_faces_ref_groups.png
new file mode 100644 (file)
index 0000000..f9cf53b
Binary files /dev/null and b/doc/gui/images/reorient_faces_ref_groups.png differ
diff --git a/doc/gui/images/reorient_faces_volume.png b/doc/gui/images/reorient_faces_volume.png
new file mode 100644 (file)
index 0000000..e58bdb6
Binary files /dev/null and b/doc/gui/images/reorient_faces_volume.png differ
diff --git a/doc/gui/images/rev_edges_helper_dlg.png b/doc/gui/images/rev_edges_helper_dlg.png
new file mode 100644 (file)
index 0000000..e8790a1
Binary files /dev/null and b/doc/gui/images/rev_edges_helper_dlg.png differ
diff --git a/doc/gui/images/revolution1.png b/doc/gui/images/revolution1.png
new file mode 100644 (file)
index 0000000..18928d1
Binary files /dev/null and b/doc/gui/images/revolution1.png differ
diff --git a/doc/gui/images/revolutionsn1.png b/doc/gui/images/revolutionsn1.png
new file mode 100644 (file)
index 0000000..3e7a7a1
Binary files /dev/null and b/doc/gui/images/revolutionsn1.png differ
diff --git a/doc/gui/images/revolutionsn2.png b/doc/gui/images/revolutionsn2.png
new file mode 100644 (file)
index 0000000..064dd6c
Binary files /dev/null and b/doc/gui/images/revolutionsn2.png differ
diff --git a/doc/gui/images/rotation.png b/doc/gui/images/rotation.png
new file mode 100644 (file)
index 0000000..c8f11e6
Binary files /dev/null and b/doc/gui/images/rotation.png differ
diff --git a/doc/gui/images/rotation1.png b/doc/gui/images/rotation1.png
new file mode 100644 (file)
index 0000000..5a4ad99
Binary files /dev/null and b/doc/gui/images/rotation1.png differ
diff --git a/doc/gui/images/rotation2.png b/doc/gui/images/rotation2.png
new file mode 100644 (file)
index 0000000..366771a
Binary files /dev/null and b/doc/gui/images/rotation2.png differ
diff --git a/doc/gui/images/rotation_ico.png b/doc/gui/images/rotation_ico.png
new file mode 100644 (file)
index 0000000..8f3d4bf
Binary files /dev/null and b/doc/gui/images/rotation_ico.png differ
diff --git a/doc/gui/images/scalar_bar_dlg.png b/doc/gui/images/scalar_bar_dlg.png
new file mode 100644 (file)
index 0000000..564689a
Binary files /dev/null and b/doc/gui/images/scalar_bar_dlg.png differ
diff --git a/doc/gui/images/scale01.png b/doc/gui/images/scale01.png
new file mode 100644 (file)
index 0000000..685bbc1
Binary files /dev/null and b/doc/gui/images/scale01.png differ
diff --git a/doc/gui/images/scale02.png b/doc/gui/images/scale02.png
new file mode 100644 (file)
index 0000000..982f468
Binary files /dev/null and b/doc/gui/images/scale02.png differ
diff --git a/doc/gui/images/scale03.png b/doc/gui/images/scale03.png
new file mode 100644 (file)
index 0000000..891ae8d
Binary files /dev/null and b/doc/gui/images/scale03.png differ
diff --git a/doc/gui/images/scale04.png b/doc/gui/images/scale04.png
new file mode 100644 (file)
index 0000000..a042834
Binary files /dev/null and b/doc/gui/images/scale04.png differ
diff --git a/doc/gui/images/scale06.png b/doc/gui/images/scale06.png
new file mode 100644 (file)
index 0000000..2bd8219
Binary files /dev/null and b/doc/gui/images/scale06.png differ
diff --git a/doc/gui/images/scale07.png b/doc/gui/images/scale07.png
new file mode 100644 (file)
index 0000000..8ee0923
Binary files /dev/null and b/doc/gui/images/scale07.png differ
diff --git a/doc/gui/images/scale09.png b/doc/gui/images/scale09.png
new file mode 100644 (file)
index 0000000..2816bac
Binary files /dev/null and b/doc/gui/images/scale09.png differ
diff --git a/doc/gui/images/scaled_jacobian.png b/doc/gui/images/scaled_jacobian.png
new file mode 100644 (file)
index 0000000..e25a7fa
Binary files /dev/null and b/doc/gui/images/scaled_jacobian.png differ
diff --git a/doc/gui/images/scaled_jacobian_hexa.png b/doc/gui/images/scaled_jacobian_hexa.png
new file mode 100644 (file)
index 0000000..b05f8dc
Binary files /dev/null and b/doc/gui/images/scaled_jacobian_hexa.png differ
diff --git a/doc/gui/images/scaled_jacobian_mesh_hexa.png b/doc/gui/images/scaled_jacobian_mesh_hexa.png
new file mode 100644 (file)
index 0000000..4c88186
Binary files /dev/null and b/doc/gui/images/scaled_jacobian_mesh_hexa.png differ
diff --git a/doc/gui/images/scaled_jacobian_tetra.png b/doc/gui/images/scaled_jacobian_tetra.png
new file mode 100644 (file)
index 0000000..5761c37
Binary files /dev/null and b/doc/gui/images/scaled_jacobian_tetra.png differ
diff --git a/doc/gui/images/scaleinit01.png b/doc/gui/images/scaleinit01.png
new file mode 100644 (file)
index 0000000..97990a8
Binary files /dev/null and b/doc/gui/images/scaleinit01.png differ
diff --git a/doc/gui/images/scaleinit02.png b/doc/gui/images/scaleinit02.png
new file mode 100644 (file)
index 0000000..008d2e3
Binary files /dev/null and b/doc/gui/images/scaleinit02.png differ
diff --git a/doc/gui/images/scaleres03.png b/doc/gui/images/scaleres03.png
new file mode 100644 (file)
index 0000000..99b65d7
Binary files /dev/null and b/doc/gui/images/scaleres03.png differ
diff --git a/doc/gui/images/scaleres04.png b/doc/gui/images/scaleres04.png
new file mode 100644 (file)
index 0000000..0880989
Binary files /dev/null and b/doc/gui/images/scaleres04.png differ
diff --git a/doc/gui/images/scaleres06.png b/doc/gui/images/scaleres06.png
new file mode 100644 (file)
index 0000000..059fa97
Binary files /dev/null and b/doc/gui/images/scaleres06.png differ
diff --git a/doc/gui/images/scaleres07.png b/doc/gui/images/scaleres07.png
new file mode 100644 (file)
index 0000000..b75f83c
Binary files /dev/null and b/doc/gui/images/scaleres07.png differ
diff --git a/doc/gui/images/scaleres09.png b/doc/gui/images/scaleres09.png
new file mode 100644 (file)
index 0000000..4708be5
Binary files /dev/null and b/doc/gui/images/scaleres09.png differ
diff --git a/doc/gui/images/selectionfilterlibrary.png b/doc/gui/images/selectionfilterlibrary.png
new file mode 100644 (file)
index 0000000..38f297b
Binary files /dev/null and b/doc/gui/images/selectionfilterlibrary.png differ
diff --git a/doc/gui/images/sew_after_merge.png b/doc/gui/images/sew_after_merge.png
new file mode 100644 (file)
index 0000000..43d6869
Binary files /dev/null and b/doc/gui/images/sew_after_merge.png differ
diff --git a/doc/gui/images/sew_using_merge.png b/doc/gui/images/sew_using_merge.png
new file mode 100644 (file)
index 0000000..80cc44c
Binary files /dev/null and b/doc/gui/images/sew_using_merge.png differ
diff --git a/doc/gui/images/sewing.png b/doc/gui/images/sewing.png
new file mode 100644 (file)
index 0000000..fcd2dfd
Binary files /dev/null and b/doc/gui/images/sewing.png differ
diff --git a/doc/gui/images/sewing1.png b/doc/gui/images/sewing1.png
new file mode 100644 (file)
index 0000000..55e0d83
Binary files /dev/null and b/doc/gui/images/sewing1.png differ
diff --git a/doc/gui/images/sewing2.png b/doc/gui/images/sewing2.png
new file mode 100644 (file)
index 0000000..2ba3e43
Binary files /dev/null and b/doc/gui/images/sewing2.png differ
diff --git a/doc/gui/images/sewing3.png b/doc/gui/images/sewing3.png
new file mode 100644 (file)
index 0000000..d2d97d5
Binary files /dev/null and b/doc/gui/images/sewing3.png differ
diff --git a/doc/gui/images/sewing4.png b/doc/gui/images/sewing4.png
new file mode 100644 (file)
index 0000000..ad66682
Binary files /dev/null and b/doc/gui/images/sewing4.png differ
diff --git a/doc/gui/images/sewing_auto.png b/doc/gui/images/sewing_auto.png
new file mode 100644 (file)
index 0000000..f81cfe2
Binary files /dev/null and b/doc/gui/images/sewing_auto.png differ
diff --git a/doc/gui/images/sewing_manual.png b/doc/gui/images/sewing_manual.png
new file mode 100644 (file)
index 0000000..ff125bc
Binary files /dev/null and b/doc/gui/images/sewing_manual.png differ
diff --git a/doc/gui/images/show_bad_mesh.png b/doc/gui/images/show_bad_mesh.png
new file mode 100644 (file)
index 0000000..9c17681
Binary files /dev/null and b/doc/gui/images/show_bad_mesh.png differ
diff --git a/doc/gui/images/smesh_sort.png b/doc/gui/images/smesh_sort.png
new file mode 100644 (file)
index 0000000..0b00568
Binary files /dev/null and b/doc/gui/images/smesh_sort.png differ
diff --git a/doc/gui/images/smesh_sort_groups.png b/doc/gui/images/smesh_sort_groups.png
new file mode 100644 (file)
index 0000000..0176a30
Binary files /dev/null and b/doc/gui/images/smesh_sort_groups.png differ
diff --git a/doc/gui/images/smoothing.png b/doc/gui/images/smoothing.png
new file mode 100644 (file)
index 0000000..26a427e
Binary files /dev/null and b/doc/gui/images/smoothing.png differ
diff --git a/doc/gui/images/smoothing1.png b/doc/gui/images/smoothing1.png
new file mode 100644 (file)
index 0000000..567bab5
Binary files /dev/null and b/doc/gui/images/smoothing1.png differ
diff --git a/doc/gui/images/smoothing2.png b/doc/gui/images/smoothing2.png
new file mode 100644 (file)
index 0000000..45ce704
Binary files /dev/null and b/doc/gui/images/smoothing2.png differ
diff --git a/doc/gui/images/sort.gif b/doc/gui/images/sort.gif
new file mode 100644 (file)
index 0000000..28a5dff
Binary files /dev/null and b/doc/gui/images/sort.gif differ
diff --git a/doc/gui/images/sort.png b/doc/gui/images/sort.png
new file mode 100644 (file)
index 0000000..1dcf44a
Binary files /dev/null and b/doc/gui/images/sort.png differ
diff --git a/doc/gui/images/split_biquad_to_linear_dlg.png b/doc/gui/images/split_biquad_to_linear_dlg.png
new file mode 100644 (file)
index 0000000..c3df009
Binary files /dev/null and b/doc/gui/images/split_biquad_to_linear_dlg.png differ
diff --git a/doc/gui/images/split_biquad_to_linear_icon.png b/doc/gui/images/split_biquad_to_linear_icon.png
new file mode 100644 (file)
index 0000000..0b9b7a0
Binary files /dev/null and b/doc/gui/images/split_biquad_to_linear_icon.png differ
diff --git a/doc/gui/images/split_biquad_to_linear_mesh.png b/doc/gui/images/split_biquad_to_linear_mesh.png
new file mode 100644 (file)
index 0000000..4a25e8f
Binary files /dev/null and b/doc/gui/images/split_biquad_to_linear_mesh.png differ
diff --git a/doc/gui/images/split_into_prisms.png b/doc/gui/images/split_into_prisms.png
new file mode 100644 (file)
index 0000000..6d48e69
Binary files /dev/null and b/doc/gui/images/split_into_prisms.png differ
diff --git a/doc/gui/images/split_into_tetra.png b/doc/gui/images/split_into_tetra.png
new file mode 100644 (file)
index 0000000..a54f445
Binary files /dev/null and b/doc/gui/images/split_into_tetra.png differ
diff --git a/doc/gui/images/split_into_tetra_icon.png b/doc/gui/images/split_into_tetra_icon.png
new file mode 100644 (file)
index 0000000..c9ea7b4
Binary files /dev/null and b/doc/gui/images/split_into_tetra_icon.png differ
diff --git a/doc/gui/images/std_point_marker.png b/doc/gui/images/std_point_marker.png
new file mode 100644 (file)
index 0000000..2a62693
Binary files /dev/null and b/doc/gui/images/std_point_marker.png differ
diff --git a/doc/gui/images/straight_after.png b/doc/gui/images/straight_after.png
new file mode 100644 (file)
index 0000000..4572fea
Binary files /dev/null and b/doc/gui/images/straight_after.png differ
diff --git a/doc/gui/images/straight_before.png b/doc/gui/images/straight_before.png
new file mode 100644 (file)
index 0000000..200aad8
Binary files /dev/null and b/doc/gui/images/straight_before.png differ
diff --git a/doc/gui/images/swap.png b/doc/gui/images/swap.png
new file mode 100644 (file)
index 0000000..6470710
Binary files /dev/null and b/doc/gui/images/swap.png differ
diff --git a/doc/gui/images/symmetry.png b/doc/gui/images/symmetry.png
new file mode 100644 (file)
index 0000000..64fd26c
Binary files /dev/null and b/doc/gui/images/symmetry.png differ
diff --git a/doc/gui/images/symmetry1.png b/doc/gui/images/symmetry1.png
new file mode 100644 (file)
index 0000000..879a41d
Binary files /dev/null and b/doc/gui/images/symmetry1.png differ
diff --git a/doc/gui/images/symmetry2.png b/doc/gui/images/symmetry2.png
new file mode 100644 (file)
index 0000000..83d2338
Binary files /dev/null and b/doc/gui/images/symmetry2.png differ
diff --git a/doc/gui/images/symmetry3.png b/doc/gui/images/symmetry3.png
new file mode 100644 (file)
index 0000000..8654659
Binary files /dev/null and b/doc/gui/images/symmetry3.png differ
diff --git a/doc/gui/images/topo_equality.png b/doc/gui/images/topo_equality.png
new file mode 100644 (file)
index 0000000..119251a
Binary files /dev/null and b/doc/gui/images/topo_equality.png differ
diff --git a/doc/gui/images/translation.png b/doc/gui/images/translation.png
new file mode 100644 (file)
index 0000000..2362d79
Binary files /dev/null and b/doc/gui/images/translation.png differ
diff --git a/doc/gui/images/translation1.png b/doc/gui/images/translation1.png
new file mode 100644 (file)
index 0000000..790e365
Binary files /dev/null and b/doc/gui/images/translation1.png differ
diff --git a/doc/gui/images/translation2.png b/doc/gui/images/translation2.png
new file mode 100644 (file)
index 0000000..5df23cc
Binary files /dev/null and b/doc/gui/images/translation2.png differ
diff --git a/doc/gui/images/union_groups1.png b/doc/gui/images/union_groups1.png
new file mode 100644 (file)
index 0000000..598c33d
Binary files /dev/null and b/doc/gui/images/union_groups1.png differ
diff --git a/doc/gui/images/uniongroups.png b/doc/gui/images/uniongroups.png
new file mode 100644 (file)
index 0000000..831f3cf
Binary files /dev/null and b/doc/gui/images/uniongroups.png differ
diff --git a/doc/gui/images/unionoftwotriangles.png b/doc/gui/images/unionoftwotriangles.png
new file mode 100644 (file)
index 0000000..e897cfa
Binary files /dev/null and b/doc/gui/images/unionoftwotriangles.png differ
diff --git a/doc/gui/images/uniting_a_set_of_triangles1.png b/doc/gui/images/uniting_a_set_of_triangles1.png
new file mode 100644 (file)
index 0000000..fb00167
Binary files /dev/null and b/doc/gui/images/uniting_a_set_of_triangles1.png differ
diff --git a/doc/gui/images/uniting_a_set_of_triangles2.png b/doc/gui/images/uniting_a_set_of_triangles2.png
new file mode 100644 (file)
index 0000000..16d1351
Binary files /dev/null and b/doc/gui/images/uniting_a_set_of_triangles2.png differ
diff --git a/doc/gui/images/uniting_two_triangles1.png b/doc/gui/images/uniting_two_triangles1.png
new file mode 100644 (file)
index 0000000..e94be3a
Binary files /dev/null and b/doc/gui/images/uniting_two_triangles1.png differ
diff --git a/doc/gui/images/uniting_two_triangles2.png b/doc/gui/images/uniting_two_triangles2.png
new file mode 100644 (file)
index 0000000..5cac5f5
Binary files /dev/null and b/doc/gui/images/uniting_two_triangles2.png differ
diff --git a/doc/gui/images/use_existing_face_sample_mesh.png b/doc/gui/images/use_existing_face_sample_mesh.png
new file mode 100644 (file)
index 0000000..2110540
Binary files /dev/null and b/doc/gui/images/use_existing_face_sample_mesh.png differ
diff --git a/doc/gui/images/using_notebook_smesh.png b/doc/gui/images/using_notebook_smesh.png
new file mode 100644 (file)
index 0000000..0946bff
Binary files /dev/null and b/doc/gui/images/using_notebook_smesh.png differ
diff --git a/doc/gui/images/viscous_layers_2d_hyp.png b/doc/gui/images/viscous_layers_2d_hyp.png
new file mode 100644 (file)
index 0000000..f9b952f
Binary files /dev/null and b/doc/gui/images/viscous_layers_2d_hyp.png differ
diff --git a/doc/gui/images/viscous_layers_extrusion_method.png b/doc/gui/images/viscous_layers_extrusion_method.png
new file mode 100644 (file)
index 0000000..cf6fe21
Binary files /dev/null and b/doc/gui/images/viscous_layers_extrusion_method.png differ
diff --git a/doc/gui/images/viscous_layers_hyp.png b/doc/gui/images/viscous_layers_hyp.png
new file mode 100644 (file)
index 0000000..b7bbffb
Binary files /dev/null and b/doc/gui/images/viscous_layers_hyp.png differ
diff --git a/doc/gui/images/viscous_layers_mesh.png b/doc/gui/images/viscous_layers_mesh.png
new file mode 100644 (file)
index 0000000..9373a5e
Binary files /dev/null and b/doc/gui/images/viscous_layers_mesh.png differ
diff --git a/doc/gui/images/viscous_layers_on_submesh.png b/doc/gui/images/viscous_layers_on_submesh.png
new file mode 100644 (file)
index 0000000..3897baa
Binary files /dev/null and b/doc/gui/images/viscous_layers_on_submesh.png differ
diff --git a/doc/gui/input/1d_meshing_hypo.rst b/doc/gui/input/1d_meshing_hypo.rst
new file mode 100644 (file)
index 0000000..4fc4c2d
--- /dev/null
@@ -0,0 +1,303 @@
+.. _a1d_meshing_hypo_page:
+
+*********************
+1D Meshing Hypotheses
+*********************
+
+Basic 1D hypothesis specifies:
+       * how a :ref:`Wire Discretization <a1d_algos_anchor>` should divide the edge;
+       * how a :ref:`Composite Side Discretization <a1d_algos_anchor>` should divide the group of C1-continuous edges.
+
+1D hypotheses can be categorized by type of nodes distribution as follows:
+       * Uniform distribution:
+               * :ref:`Local Length <average_length_anchor>`
+               * :ref:`Max Size <max_length_anchor>`
+               * :ref:`Number of Segments <number_of_segments_anchor>` with Equidistant distribution
+               * :ref:`Automatic Length <automatic_length_anchor>`
+
+       * Constantly increasing or decreasing length of segments:
+               * :ref:`Arithmetic Progression <arithmetic_1d_anchor>` 
+               * :ref:`Geometric Progression <geometric_1d_anchor>`
+               * :ref:`Start and end length <start_and_end_length_anchor>` 
+               * :ref:`Number of Segments <number_of_segments_anchor>` with Scale distribution
+
+       * Distribution depending on curvature:
+               * :ref:`Adaptive <adaptive_1d_anchor>` 
+               * :ref:`Deflection <deflection_1d_anchor>` 
+
+       * Arbitrary distribution:
+               * :ref:`Fixed Points <fixed_points_1d_anchor>` 
+               * :ref:`Number of Segments <number_of_segments_anchor>` with :ref:`Analytic Density Distribution <analyticdensity_anchor>` or Table Density Distribution
+
+
+.. _adaptive_1d_anchor:
+
+Adaptive hypothesis
+###################
+
+**Adaptive** hypothesis allows to split edges into segments with a length that depends on the curvature of edges and faces and is limited by **Min. Size** and **Max Size**. The length of a segment also depends on the lengths of adjacent segments (that can't differ more than twice) and on the  distance to close geometrical entities (edges and faces) to avoid creation of narrow 2D elements.
+
+       .. image:: ../images/adaptive1d.png
+               :align: center
+
+* **Min size** parameter limits the minimal segment size. 
+* **Max size** parameter defines the length of segments on straight edges. 
+* **Deflection** parameter gives maximal distance of a segment from a curved edge.
+
+       .. image:: ../images/adaptive1d_sample_mesh.png 
+               :align: center
+
+       .. centered::
+               Adaptive hypothesis and NETGEN 2D algorithm - the size of mesh segments reflects the size of geometrical features
+
+**See Also** a :ref:`sample TUI Script <tui_1d_adaptive>` that uses Adaptive hypothesis.
+
+.. _arithmetic_1d_anchor:
+
+Arithmetic Progression hypothesis
+#################################
+
+**Arithmetic Progression** hypothesis allows to split edges into segments with a length that changes in arithmetic progression (Lk = Lk-1 + d) beginning from a given starting length and up to a given end length.
+
+The splitting direction is defined by the orientation of the underlying geometrical edge. **Reverse Edges** list box allows specifying the edges, for which the splitting should be made in the direction opposite to their orientation. This list box is usable only if a geometry object is selected for meshing. In this case it is possible to select edges to be reversed either directly picking them in the 3D viewer or by selecting the edges or groups of edges in the Object Browser. Use 
+**Add** button to add the selected edges to the list.
+
+:ref:`Helper <reversed_edges_helper_anchor>` group assists you in defining **Reversed Edges** parameter.
+
+
+.. image:: ../images/a-arithmetic1d.png
+       :align: center
+
+
+.. image:: ../images/b-ithmetic1d.png 
+       :align: center
+
+.. centered::
+       Arithmetic Progression hypothesis - the size of mesh elements gradually increases
+
+**See Also** a sample TUI Script of :ref:`Defining Arithmetic Progression and Geometric Progression hypothesis <tui_1d_arithmetic>` operation.  
+
+.. _geometric_1d_anchor:
+
+Geometric Progression hypothesis
+################################
+
+**Geometric Progression** hypothesis allows splitting edges into segments with a length that changes in geometric progression (Lk = Lk-1 * d) starting from a given **Start Length** and with a given **Common Ratio**.
+
+The splitting direction is defined by the orientation of the underlying geometrical edge.
+**Reverse Edges** list box allows specifying the edges, for which the splitting should be made in the direction opposite to their orientation. This list box is usable only if a geometry object is selected for meshing. In this case it is possible to select edges to be reversed either directly picking them in the 3D viewer or by selecting the edges or groups of edges in the Object Browser. Use **Add** button to add the selected edges to the list.
+
+:ref:`Helper <reversed_edges_helper_anchor>` group assists you in defining **Reversed Edges** parameter.
+
+.. image:: ../images/a-geometric1d.png
+       :align: center
+
+**See Also** a sample TUI Script of :ref:`Defining Arithmetic Progression and Geometric Progression hypothesis <tui_1d_arithmetic>` operation.  
+
+.. _deflection_1d_anchor:
+
+Deflection hypothesis
+#####################
+
+**Deflection** hypothesis can be applied for meshing curvilinear edges composing your geometrical object. It defines only one parameter: the value of deflection (or chord error).
+
+A geometrical edge is divided into segments of length depending on edge curvature. The more curved the edge, the shorter the segment. Nodes on the edge are placed so that the maximum distance between the edge and a segment approximating a part of edge between two nodes should not exceed the value of deflection.
+
+.. image:: ../images/a-deflection1d.png
+       :align: center
+
+.. image:: ../images/b-flection1d.png 
+       :align: center
+
+.. centered::
+       Deflection hypothesis - useful for meshing curvilinear edges
+
+**See Also** a sample TUI Script of :ref:`Defining Deflection hypothesis <tui_deflection_1d>` operation.
+
+.. _average_length_anchor:
+
+Local Length hypothesis
+#######################
+
+**Local Length** hypothesis can be applied for meshing of edges composing your geometrical object. Definition of this hypothesis consists of setting the **length** of segments, which will approximate these edges, and the **precision** of rounding.
+
+The **precision** parameter is used to round a *number of segments*, calculated by dividing the *edge length* by the specified **length** of segment, to the higher integer if the *remainder* exceeds the **precision** and to the lower integer otherwise. 
+Use value 0.5 to provide rounding to the nearest integer, 1.0 for the lower integer, 0.0 for the higher integer. Default value is 1e-07.
+
+For example: if *edge length* is 10.0 and the segment **length**
+is 3.0 then their division gives 10./3. = 3.33(3) and the *remainder* is 0.33(3).
+If **precision** is less than 0.33(3) then the edge is divided into 3 segments.
+If **precision** is more than 0.33(3) then the edge is divided into 4 segments.
+
+
+.. image:: ../images/image41.gif
+       :align: center
+
+.. image:: ../images/a-averagelength.png
+       :align: center
+
+.. image:: ../images/b-erage_length.png 
+       :align: center
+
+.. centered::
+       Local Length hypothesis - all 1D mesh segments are equal
+
+**See Also** a sample TUI Script of :ref:`Defining Local Length <tui_average_length>` hypothesis
+operation.
+
+.. _max_length_anchor:
+
+Max Size
+########
+
+**Max Size** hypothesis allows splitting geometrical edges into segments not longer than the given length. Definition of this hypothesis consists of setting the maximal allowed **length** of segments.
+**Use preestimated length** check box lets you use **length** automatically calculated basing on size of your geometrical object, namely as diagonal of bounding box divided by ten. The divider can be changed via :ref:`Ratio Bounding Box Diagonal / Max Size <diagonal_size_ratio_pref>` preference parameter.
+**Use preestimated length** check box is enabled only if the geometrical object has been selected before hypothesis definition.
+
+.. image:: ../images/a-maxsize1d.png
+       :align: center
+
+.. _number_of_segments_anchor:
+
+Number of Segments hypothesis
+#############################
+
+**Number of Segments** hypothesis can be applied for approximating edges by a definite number of mesh segments with length depending on the selected type of distribution of nodes. The default number of segments can be set via :ref:`Automatic Parameters / Default Number of Segments <nb_segments_pref>` preference parameter.
+
+The direction of the splitting is defined by the orientation of the underlying geometrical edge. **Reverse Edges** list box allows to specify the edges for which the splitting should be made in the direction opposing to their orientation. This list box is enabled only if the geometry object is selected for the meshing. In this case it is possible to select edges to be reversed either by directly picking them in the 3D viewer or by selecting the edges or groups of edges in the Object Browser.
+
+:ref:`Helper <reversed_edges_helper_anchor>` group assists you in defining **Reversed Edges** parameter.
+
+You can set the type of node distribution for this hypothesis in the **Hypothesis Construction** dialog box:
+
+.. image:: ../images/a-nbsegments1.png
+       :align: center
+
+**Equidistant Distribution** - all segments will have the same length, you define only the **Number of Segments**.
+
+**Scale Distribution** - length of segments gradually changes depending on the **Scale Factor**, which is a ratio of the first segment length to the last segment length.
+
+Length of segments changes in geometric progression with the common ratio (A) depending on the **Scale Factor** (S) and **Number of Segments** (N) as follows: A = S**(1/(N-1)). For an edge of length L, length of the first segment is L * (1 - A)/(1 - A**N)
+
+.. image:: ../images/a-nbsegments2.png
+       :align: center
+
+.. _analyticdensity_anchor:
+
+**Distribution with Analytic Density** - you input the formula, which will rule the change of length of segments and the module shows in the plot the density function curve in red and the node distribution as blue crosses.
+
+.. image:: ../images/distributionwithanalyticdensity.png
+       :align: center
+
+The node distribution is computed so that to have the density function integral on the range between two nodes equal for all segments.
+
+.. image:: ../images/analyticdensity.png
+       :align: center
+
+**Distribution with Table Density** - you input a number of pairs **t - F(t)**, where **t** ranges from 0 to 1, and the module computes the formula, which will rule the change of length of segments and shows in the plot the density function curve in red and the node distribution as blue crosses. The node distribution is computed in the same way as for :ref:`Distribution with Analytic Density <analyticdensity_anchor>`. You can select the **Conversion mode** from **Exponent** and **Cut negative**.
+
+.. image:: ../images/distributionwithtabledensity.png
+       :align: center
+
+
+**See Also** a sample TUI Script of :ref:`Defining Number of Segments <tui_deflection_1d>` hypothesis operation.
+
+.. note:: The plot functionality is available only if GUI module is built with Plot 2D Viewer (option SALOME_USE_PLOT2DVIEWER is ON when building GUI module).
+
+.. _start_and_end_length_anchor:
+
+Start and End Length hypothesis
+###############################
+
+**Start and End Length** hypothesis allows to divide a geometrical edge into segments so that the first and the last segments have a specified length. The length of medium segments changes with automatically chosen geometric progression.
+
+The direction of the splitting is defined by the orientation of the underlying geometrical edge. **Reverse Edges** list box allows to specify the edges, for which the splitting should be made in the direction opposing to their orientation. This list box is enabled only if the geometry object is selected for the meshing. In this case it is possible to select edges to be reversed either by directly picking them in the 3D viewer or by selecting the edges or groups of edges in the Object Browser.
+
+:ref:`Helper <reversed_edges_helper_anchor>` group assists you in defining **Reversed Edges** parameter.
+
+
+.. image:: ../images/a-startendlength.png
+       :align: center
+
+.. image:: ../images/b-art_end_length.png 
+       :align: center
+
+.. centered::
+        The lengths of the first and the last segment are strictly defined
+
+**See Also** a sample TUI Script of :ref:`Defining Start and End Length <tui_start_and_end_length>` hypothesis operation.
+
+
+.. _automatic_length_anchor:
+
+Automatic Length
+################
+
+The dialog box prompts you to define the quality of the future mesh by only one parameter, which is **Fineness**, ranging from 0 (coarse mesh, low number of segments) to 1 (extremely fine mesh, great number of segments). 
+
+.. image:: ../images/automaticlength.png
+       :align: center
+
+Compare one and the same object (sphere) meshed with minimum and maximum value of this parameter.
+
+.. image:: ../images/image147.gif
+       :align: center
+.. centered::
+       Example of a rough mesh at Automatic Length Fineness of 0.
+
+.. image:: ../images/image148.gif
+       :align: center
+.. centered::
+       Example of a fine mesh at Automatic Length Fineness of 1.
+
+.. _fixed_points_1d_anchor:
+
+Fixed Points hypothesis
+#######################
+
+**Fixed Points** hypothesis allows splitting edges through a set of points parametrized on the edge (from 1 to 0) and a number of segments for each interval limited by the points.
+
+.. image:: ../images/hypo_fixedpnt_dlg.png
+       :align: center
+
+It is possible to check in **Same Nb. Segments for all intervals** option and to define one value for all intervals.
+
+The splitting direction is defined by the orientation of the underlying geometrical edge. **Reverse Edges** list box allows to specify the edges for which the splitting should be made in the direction opposite to their orientation. This list box is enabled only if the geometrical object is selected for meshing. In this case it is possible to select the edges to be reversed either directly picking them in the 3D viewer or selecting the edges or groups of edges in the Object Browser.
+
+:ref:`Helper <reversed_edges_helper_anchor>`  group assists in defining **Reversed Edges** parameter.
+
+
+.. image:: ../images/mesh_fixedpnt.png 
+       :align: center
+
+.. centered::
+       Example of a sub-mesh on the edge built using Fixed Points hypothesis
+
+**See Also** a sample TUI Script of a :ref:`Defining Fixed Points <tui_fixed_points>` hypothesis operation.
+
+
+.. _reversed_edges_helper_anchor:
+
+Reversed Edges Helper
+#####################
+
+.. image:: ../images/rev_edges_helper_dlg.png
+       :align: center
+
+**Helper** group assists in defining **Reversed Edges** parameter of the hypotheses depending on edge direction.
+
+**Show whole geometry** check-box allows seeing the whole geometrical model in the 3D Viewer, which can help to understand the location of a set of edges within the model.
+
+**Propagation chains** group allows defining **Reversed Edges** for splitting opposite edges of quadrilateral faces in a logically uniform direction. When this group is activated, the list is filled with propagation chains found within the shape on which a hypothesis is assigned. When a chain is selected in the list its edges are shown in the Viewer with arrows, which enables choosing a common direction for all chain edges. **Reverse** button inverts the common direction of chain edges. **Add** button is active if some edges of a chain have a different direction, so you can click **Add** button to add them to **Reversed Edges** list.
+
+.. image:: ../images/propagation_chain.png 
+       :align: center
+
+.. centered::
+       The whole geometry and a propagation chain
+
+.. note:: Alternatively, uniform direction of edges of one propagation chain can be achieved by :ref:`definition of a sub-mesh <constructing_submeshes_page>` on one edge of the chain and assigning a :ref:`Propagation <propagation_anchor>` additional hypothesis. Orientation of this edge (and hence of all the rest edges of the chain) can be controlled by using **Reversed Edges** field.
+
+
diff --git a/doc/gui/input/2d_meshing_hypo.rst b/doc/gui/input/2d_meshing_hypo.rst
new file mode 100644 (file)
index 0000000..f3987d7
--- /dev/null
@@ -0,0 +1,175 @@
+.. _a2d_meshing_hypo_page:
+
+*********************
+2D Meshing Hypotheses
+*********************
+
+- :ref:`max_element_area_anchor`
+- :ref:`length_from_edges_anchor`
+- :ref:`hypo_quad_params_anchor`
+
+.. _max_element_area_anchor:
+
+Max Element Area
+################
+
+**Max Element Area** hypothesis is applied for meshing of faces composing your geometrical object. Definition of this hypothesis consists of setting the **maximum area** of mesh faces, which will compose the mesh of these faces.
+
+.. image:: ../images/a-maxelarea.png
+       :align: center
+
+|    
+
+.. image:: ../images/max_el_area.png 
+       :align: center
+
+.. centered::
+       In this example, Max. element area is very small compared to the 1D hypothesis
+
+**See Also** a sample TUI Script of :ref:`tui_max_element_area` hypothesis operation. 
+
+.. _length_from_edges_anchor:
+
+Length from Edges
+#################
+
+**Length from edges** hypothesis defines the maximum linear size of mesh faces as an average length of mesh edges approximating the meshed face boundary.
+
+**See Also** a sample TUI Script of :ref:`tui_length_from_edges` hypothesis operation.
+
+.. _hypo_quad_params_anchor:
+
+Quadrangle parameters
+#####################
+
+**Quadrangle parameters** is a hypothesis for :ref:`quad_ijk_algo_page`.
+
+Quadrangle parameters dialog includes four tab pages:
+
+- :ref:`Transition <transition_anchor>`
+- :ref:`Base vertex <base_vertex_anchor>`
+- :ref:`Corner Vertices <corner_vertices_anchor>`
+- :ref:`Enforced nodes <enforced_nodes_anchor>`
+
+.. _transition_anchor:
+
+Transition tab
+--------------
+
+.. image:: ../images/ hypo_quad_params_dialog.png 
+       :align: center
+
+.. centered::
+       Quadrangle parameters: Transition
+
+**Transition** tab is used to define the algorithm of transition between opposite sides of the face with a different number of segments on them. The following types of transition algorithms are available:
+
+* **Standard** is the default case, when both triangles and quadrangles are possible in the transition area along the finer meshed sides.
+* **Triangle preference** forces building only triangles in the transition area along the finer meshed sides.
+
+  .. note:: This type corresponds to **Triangle Preference** additional hypothesis, which is obsolete now.
+
+* **Quadrangle preference** forces building only quadrangles in the transition area along the finer meshed sides. This hypothesis has a restriction: the total quantity of segments on all four face sides must be even (divisible by 2).
+
+  .. note:: This type corresponds to **Quadrangle Preference** additional hypothesis, which is obsolete now.
+
+* **Quadrangle preference (reversed)** works in the same way and with the same restriction as **Quadrangle preference**, but the transition area is located along the coarser meshed sides.
+* **Reduced** type forces building only quadrangles and the transition between the sides is made gradually, layer by layer. This type has a limitation on the number of segments: one pair of opposite sides must have the same number of segments, the other pair must have an even total number of segments. In addition, the number of rows between sides with different discretization should be enough for the transition. Following the fastest transition pattern, three segments become one (see the image below), hence the least number of face rows needed to reduce from Nmax segments to Nmin segments is log<sub>3</sub>( Nmax / Nmin ). The number of face rows is equal to the number of segments on each of equally discretized sides.
+
+.. image:: ../images/ reduce_three_to_one.png 
+       :align: center
+
+.. centered::
+       The fastest transition pattern: 3 to 1
+
+.. _base_vertex_anchor:
+
+Base vertex tab
+---------------
+
+.. image:: ../images/ hypo_quad_params_dialog_vert.png 
+       :align: center
+
+.. centered::
+       Quadrangle parameters: Base Vertex
+
+**Base vertex** tab allows using Quadrangle: Mapping algorithm for meshing of trilateral faces. In this case it is necessary to select the vertex, which will be used as the forth degenerated side of quadrangle.
+
+.. image:: ../images/hypo_quad_params_1.png 
+       :align: center
+
+.. centered::
+       A face built from 3 edges and the resulting mesh
+
+This parameter can be also used to mesh a segment of a circular face. Please, consider that there is a limitation on the selection of the vertex for the faces built with the angle > 180 degrees (see the picture). In this case, selection of a wrong vertex for the **Base vertex** parameter will generate a wrong mesh. The picture below shows the good (left) and the bad (right) results of meshing.
+
+.. image:: ../images/hypo_quad_params_2.png 
+       :align: center
+
+.. centered:: 
+       3/4 of a circular face and the resulting meshes
+
+
+.. _corner_vertices_anchor:
+
+Corner Vertices tab
+-------------------
+
+.. image:: ../images/hypo_quad_params_dialog_corners.png 
+       :align: center
+
+.. centered::
+       Quadrangle parameters: Corner Vertices
+
+**Corner Vertices** tab page allows specifying vertices that should be used as quadrangle corners. This can be useful for faces with more than four vertices, since in some cases Quadrangle Mapping algorithm chooses corner vertices differently than it is desired. **Quadrangle parameters** hypothesis can be global and define corners for all CAD faces that require it, but be sure that each specified vertex is a corner in all faces the hypothesis will be applied to.
+
+
+.. _enforced_nodes_anchor:
+
+Enforced nodes tab
+------------------
+
+.. image:: ../images/ hypo_quad_params_dialog_enf.png 
+       :align: center
+
+.. centered::
+       Quadrangle parameters: Enforced nodes
+
+**Enforced nodes** tab allows defining points, where the algorithm should create nodes. There are two ways to define positions of the enforced nodes.
+
+* **Vertices** group allows to set up shapes whose vertices will  define positions of the enforced nodes. Only vertices successfully projected to the meshed face and located close enough to the meshed face will be used to create the enforced nodes.
+* **Points** group allows to explicitly define coordinates of points used to create the enforced nodes. Only points successfully projected to the meshed face and located close enough to the meshed face will be used to create the enforced nodes.
+
+..  note::
+       **Enforced nodes** cannot be created at **Reduced** transition type.
+
+Let us see how the algorithm works:
+
+* Initially positions of nodes are computed without taking into account the enforced vertex (yellow point). 
+
+.. image:: ../images/ hypo_quad_params_enfnodes_algo1.png
+       :align: center
+
+.. centered::
+       Initial mesh
+
+* Then the node closest to the enforced vertex is detected. Extreme nodes of the row and column of the detected node are used to create virtual edges (yellow lines) ending at the enforced vertex. 
+
+       .. image:: ../images/ hypo_quad_params_enfnodes_algo2.png
+               :align: center
+       .. centered::
+                Creation of virtual edges
+       
+* Consequently, the meshed face is divided by the virtual edges into four quadrilateral sub-domains each of which is meshed as usually: the nodes of the row and column of the detected node are moved to the virtual edges and the quadrilateral elements are constructed. 
+       
+       .. image:: ../images/ hypo_quad_params_enfnodes_algo3.png 
+               :align: center
+       
+       .. centered::
+               Final mesh
+
+
+If there are several enforced vertices, the algorithm is applied recursively to the formed sub-domains.
+
+**See Also** a sample TUI Script of a :ref:`Quadrangle Parameters <tui_quadrangle_parameters>` hypothesis.
+
diff --git a/doc/gui/input/3d_meshing_hypo.rst b/doc/gui/input/3d_meshing_hypo.rst
new file mode 100644 (file)
index 0000000..bef317c
--- /dev/null
@@ -0,0 +1,42 @@
+.. _a3d_meshing_hypo_page:
+
+*********************
+3D Meshing Hypotheses
+*********************
+
+.. _max_element_volume_hypo:
+
+Max Element Volume hypothesis
+#############################
+
+**Max Element Volume** hypothesis is applied for meshing of 3D objects composing your geometrical object. Definition of this hypothesis consists of setting the **maximum volume** of 3D meshing elements (depending on the chosen meshing algorithm it can be **hexahedrons** or **tetrahedrons**), which will compose the mesh of these 3D objects.
+
+.. image:: ../images/a-maxelvolume.png
+       :align: center
+
+**See Also** a sample TUI Script of a :ref:`tui_max_element_volume` operation.  
+
+.. _block_renumber_hypo:
+
+Renumber hypothesis
+###################
+
+**Renumber** hypothesis is applied for meshing of 3D objects along with **Hexahedron (i,j,k)** algorithm.
+
+Order and hence numbering of hexahedral elements in the structured mesh generated by **Hexahedron (ijk)** algorithm depends on the order of faces in a block geometry. Nodes are not in a structured order, since geometrical edges and faces are discretized before construction of hexahedra. **Renumber** hypothesis allows for getting hexahedra and nodes ordered like in a structured grid.
+
+.. image:: ../images/block_renumber_hyp.png
+       :align: center
+
+**Renumber** hypothesis allows to define direction of **i, j** and **k** axes of a block. For that you specify two vertices of the block
+
+* **Vertex (0,0,0)** located at the origin of the block local coordinate system.
+* **Vertex (0,0,1)** located at the end of **k** axis of the block.
+
+Axes **i** and **j** are found automatically using the right-hand rule.
+
+For blocks with edges parallel to the axes of global coordinate system, their local coordinate system by default is defined as having axes parallel to the global ones. So, for such blocks specification of vertices is optional, it is enough just to assign **Renumber** hypothesis.
+
+**See Also** a sample TUI Script of a :ref:`tui_block_renumber` operation.  
+
+
diff --git a/doc/gui/input/StdMeshersBuilder.rst b/doc/gui/input/StdMeshersBuilder.rst
new file mode 100644 (file)
index 0000000..a1bf1d4
--- /dev/null
@@ -0,0 +1,9 @@
+smesh_algorithm module
+======================
+.. automodule:: smesh_algorithm
+   :members:
+
+StdMeshersBuilder module
+========================
+.. automodule:: StdMeshersBuilder
+   :members:
diff --git a/doc/gui/input/about_filters.rst b/doc/gui/input/about_filters.rst
new file mode 100644 (file)
index 0000000..c2cfce9
--- /dev/null
@@ -0,0 +1,23 @@
+.. _filters_page: 
+
+*************
+About filters
+*************
+
+**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 criteria can be combined together by using logical operators *AND* and *OR*. In addition, a filter criterion can be reverted using logical operator *NOT*.
+
+Some filtering criteria use the functionality of :ref:`mesh quality controls <quality_page>` to filter mesh nodes / elements by specific characteristic (Area, Length, etc).
+
+The functionality of mesh filters is available in both GUI and TUI modes:
+
+* In GUI, filters are available in some dialog boxes via "Set Filters" button, clicking on which opens the :ref:`dialog box <filtering_elements>` allowing to specify the list of filter criteria to be applied to the current selection. See :ref:`selection_filter_library_page` page to learn more about selection filters and their usage in GUI.
+
+* In Python scripts, filters can be used to choose only some mesh nodes or elements for the operations, which require the list of entities as input parameter (create/modify group, remove nodes/elements, etc) and for the operations, which accept objects (groups, sub-meshes) as input parameter. The page :ref:`tui_filters_page` provides examples of the filters usage in Python scripts.
+
+.. toctree::
+   :maxdepth: 2
+   :hidden:
+
+   selection_filter_library.rst
diff --git a/doc/gui/input/about_hypo.rst b/doc/gui/input/about_hypo.rst
new file mode 100644 (file)
index 0000000..a4609d9
--- /dev/null
@@ -0,0 +1,31 @@
+.. _about_hypo_page: 
+
+****************
+About Hypotheses
+****************
+
+**Hypotheses** represent boundary conditions which will be taken into account by meshing algorithms. The hypotheses allow you to manage the level of detail of the resulting mesh: when applying different hypotheses with different parameters you can preset the quantity or size of elements which will compose your mesh. So, it will be possible to generate a coarse or a more refined mesh.
+
+The choice of a hypothesis depends on the selected algorithm.
+
+Hypotheses are created during creation and edition of 
+:ref:`meshes <constructing_meshes_page>` and :ref:`sub-meshes <constructing_submeshes_page>`. 
+Once created a hypotheses can be reused during creation and edition of other meshes and sub-meshes. All created hypotheses and algorithms are present in the Object Browser in *Hypotheses* and *Algorithms* folders correspondingly. It is possible to open a dialog to modify the parameters of a hypothesis from its context menu. This menu also provides  **Unassign** command that will unassign the hypothesis from all meshes and sub-meshes using it. Modification of any parameter of a hypothesis and its unassignment leads to automatic removal of elements generated using it.
+
+In **MESH** there are:
+
+* :ref:`a1d_meshing_hypo_page` for meshing of **edges**
+* :ref:`a2d_meshing_hypo_page` for meshing of **faces**
+* :ref:`a3d_meshing_hypo_page` for meshing of **volumes**
+* :ref:`additional_hypo_page`
+
+**Table of Contents**
+
+.. toctree::
+   :maxdepth: 2
+
+   1d_meshing_hypo.rst
+   2d_meshing_hypo.rst
+   3d_meshing_hypo.rst
+   additional_hypo.rst 
+
diff --git a/doc/gui/input/about_meshes.rst b/doc/gui/input/about_meshes.rst
new file mode 100644 (file)
index 0000000..6350eea
--- /dev/null
@@ -0,0 +1,91 @@
+.. _about_meshes_page:
+
+************
+About meshes
+************
+
+**MESH** represents a discrete approximation of a subset of the three-dimensional space by `elementary geometrical elements`_.
+
+A SALOME study can contain multiple meshes, but they do not implicitly compose one super-mesh, and finally each of them can be used (e.g. exported) only individually.
+
+Mesh module provides several ways to create the mesh:
+
+* The main way is to :ref:`construct the mesh <constructing_meshes_page>` on the basis of the geometrical shape produced in the Geometry module. This way implies selection of
+
+  * a geometrical object (*main shape*) and
+  * *meshing parameters* (:ref:`meshing algorithms <basic_meshing_algos_page>` and characteristics (e.g. element size) of a required mesh encapsulated in :ref:`hypothesis <about_hypo_page>` objects).
+
+  Construction of :ref:`sub-meshes <constructing_submeshes_page>` allows to discretize some sub-shapes of the main shape, for example a face, using the meshing parameters that differ from those used for other sub-shapes.
+  Meshing parameters of meshes and sub-meshes can be :ref:`edited <editing_meshes_page>`. (Upon edition only mesh entities generated using changed meshing parameters are removed and will be re-computed).
+
+  .. note::
+       Algorithms and hypotheses used at mesh level are referred to as *global* ones and those used at sub-mesh level are referred to as *local* ones.
+
+* Bottom-up way, using :ref:`mesh modification <modifying_meshes_page>` operations, especially :ref:`extrusion <extrusion_page>` and :ref:`revolution <revolution_page>`. To create an empty mesh not based on geometry, use the same dialog as to :ref:`construct the mesh on geometry <constructing_meshes_page>` but specify neither the geometry nor meshing algorithms.
+
+* The mesh can be :ref:`imported <importing_exporting_meshes_page>` from (and exported to) the file in MED, UNV, STL, CGNS, DAT and GMF formats.
+
+* The 3D mesh can be generated from the 2D mesh not based on geometry, which was either :ref:`imported <importing_exporting_meshes_page>` or created in other way. To setup the meshing parameters of a mesh not based on geometry, just invoke :ref:`Edit mesh / sub-mesh <editing_meshes_page>` command on your 2D mesh.
+
+* Several meshes can be :ref:`combined <building_compounds_page>` into a new mesh.
+
+* The whole mesh or its part (sub-mesh or group) can be :ref:`copied <copy_mesh_page>` into a new mesh.
+
+* A new mesh can be created from a transformed, e.g. :ref:`translated <translation_page>`, part of the mesh.
+
+* A new mesh can be created from the gernation of the :ref:`dual <create_dual_mesh_page>` of a Tetrahedron Mesh.
+
+
+Meshes can be edited using the MESH functions destined for :ref:`modification <modifying_meshes_page>` of meshes.
+
+Attractive meshing capabilities include:
+
+* 3D and 2D :ref:`Viscous Layers <viscous_layers_anchor>` (boundary layers of highly stretched elements beneficial for high quality viscous computations);
+* automatic conformal transition between tetrahedral and hexahedral sub-meshes.
+
+The **structure** of a SALOME mesh is described by nodes and elements based on these nodes. The geometry of an element is defined by the sequence of nodes constituting it and the :ref:`connectivity convention <connectivity_page>` (adopted from MED library). Definition of the element basing on the elements of a lower dimension is NOT supported.
+
+.. _elementary geometrical elements:
+
+The mesh can include the following entities:
+
+* **Node** - a mesh entity defining a position in 3D space with coordinates (x, y, z).
+* **Edge** (or segment) - 1D mesh element linking two nodes.
+* **Face** - 2D mesh element representing a part of surface bound by links between face nodes. A face can be a triangle, quadrangle or polygon.
+* **Volume** - 3D mesh element representing a part of 3D space bound by volume facets. Nodes of a volume describing each facet are defined by the :ref:`connectivity convention <connectivity_page>`. A volume can be a tetrahedron, hexahedron, pentahedron, pyramid, hexagonal  or polyhedron.
+* **0D** element - mesh element defined by one node.
+* **Ball** element - discrete mesh element defined by a node and a diameter.
+
+
+Every mesh entity has an attribute associating it to a sub-shape it is generated on (if any). The node generated on the geometrical edge or surface in addition stores its position in parametric space of the associated geometrical entity. This attribute is set up by meshing algorithms generating elements and nodes.
+
+Mesh entities are identified by integer IDs starting from 1.
+Nodes and elements are counted separately, i.e. there can be a node and element with the same ID.
+
+SALOME supports elements of second order, without a central node (quadratic triangle, quadrangle, polygon, tetrahedron, hexahedron,
+pentahedron and pyramid) and with central nodes (bi-quadratic triangle and quadrangle and tri-quadratic hexahedron).
+
+Quadratic mesh can be obtained in three ways:
+
+* Using a global :ref:`quadratic_mesh_anchor` hypothesis. (Elements with the central node are not generated in this way).
+* Using :ref:`convert_to_from_quadratic_mesh_page` operation.
+* Using an appropriate option of some meshing algorithms, which generate elements of several dimensions starting from mesh segments.
+
+A work in progress allow you to compute your mesh in parralle :ref:`Parallel Computing<parallel_compute>`
+
+
+**Table of Contents**
+
+.. toctree::
+   :titlesonly:
+   :maxdepth: 2
+
+   constructing_meshes.rst
+   constructing_submeshes.rst
+   editing_meshes.rst
+   importing_exporting_meshes.rst
+   building_compounds.rst
+   copy_mesh.rst
+   create_dual_mesh.rst
+   connectivity.rst
+   parallel_compute.rst
diff --git a/doc/gui/input/about_quality_controls.rst b/doc/gui/input/about_quality_controls.rst
new file mode 100644 (file)
index 0000000..1c48d16
--- /dev/null
@@ -0,0 +1,106 @@
+.. _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:`warping_3d_page`
+* :ref:`max_element_length_3d_page`
+* :ref:`scaled_jacobian_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
+       warping_3d.rst
+       bare_border_volumes.rst
+       over_constrained_volumes.rst
+       scalar_bar.rst
+       scaled_jacobian.rst
\ No newline at end of file
diff --git a/doc/gui/input/adaptation.rst b/doc/gui/input/adaptation.rst
new file mode 100644 (file)
index 0000000..ceac1c9
--- /dev/null
@@ -0,0 +1,87 @@
+.. _adaptation_page:
+
+**********
+Adaptation
+**********
+
+Mesh module provides the possibility to perform different adaptations of a mesh.
+To refine the mesh means to cut out elements indicated according to indications provided by the user.
+
+.. _homard_adapt_anchor:
+
+HOMARD
+######
+
+HOMARD can treat meshes into 2 or 3 dimensions and comprising the following elements:
+   - mesh-points
+   - segments
+   - triangles
+   - quadrangles
+   - tetrahedra
+   - hexahedra
+   - prisms
+
+These elements can be present simultaneously. For example, HOMARD will be able to adapt a comprising mesh of the triangles and the quadrangles.
+
+To start operation, select **Remesh with HOMARD** item in **Adaptation** menu.
+
+.. image:: ../images/adaptation_with_homard_arguments.png
+  :align: center
+
+* **Mesh In** is the initial mesh to remesh.
+* **Mesh Out** is the resulting mesh after remeshing. By default, the name of the initial mesh is kept and the file name is based on the name of the initial mesh.
+* **Conformity type** is a choice between **Conformal** and **Non conformal**.
+* **Boundary type** is a choice between **No boundary**, **CAO** and **Non CAO**.
+
+- If the choice is **CAO**, a XAO file is required for each CAO boundary creation.
+
+.. image:: ../images/adaptation_with_homard_boundary_cao.png
+  :align: center
+
+**See more** at :ref:`homard_create_boundary_CAO`.
+
+- If the choice is **Non CAO**, some discrete and/or analytical boundaries can be created.
+
+.. image:: ../images/adaptation_with_homard_boundary_discrete.png
+  :align: center
+
+**See more** at :ref:`homard_create_boundary_Di`.
+
+.. image:: ../images/adaptation_with_homard_boundary_analytical.png
+  :align: center
+
+**See more** at :ref:`homard_create_boundary_An`.
+
+.. note::
+  The exhaustive description of HOMARD can be read into its documentation. It can be reached by the general help button.
+
+**See Also** a sample TUI Script of adaptation with :ref:`tui_homard_adapt`.
+
+
+.. _mg_adapt_anchor:
+
+MG_Adapt
+########
+
+For meshes made of triangles and/or tetrahedra, remeshing operations are available with the MG-Adapt plugin. The remeshing is based on wanted mesh sizes defined over the mesh or as a constant. The boundaries are dedeuced from the initial mesh.
+
+To start **Remeshing** operation, select **Remesh with MG_Adapt** item in **Adaptation** menu.
+
+.. image:: ../images/adaptation_01.png
+  :align: center
+
+
+* **Mesh In** is the initial mesh to remesh.
+* **Mesh Out** is the resulting mesh after remeshing. By default, the name of the initial mesh is kept and the file name is based on the name of the initial mesh.
+* **Size map definition** is a choice between **Local**, **Background** and **Constant**.
+
+- If the choice is **Background**, the name of the MED file must be given.
+- If the choice is **Local** or **Background**, the name of the field must be selected from the list, together with time step.
+
+.. image:: ../images/adaptation_02.png
+  :align: center
+
+.. note::
+  The exhaustive description of MG-Adapt can be read into its documentation. It can be reached by the general help button.
+
+**See Also** a sample TUI Script of :ref:`tui_adaptation_page`.
diff --git a/doc/gui/input/add_node_on_face.rst b/doc/gui/input/add_node_on_face.rst
new file mode 100644 (file)
index 0000000..1b7cddf
--- /dev/null
@@ -0,0 +1,37 @@
+.. _add_node_on_face_page:
+
+*****************************
+Cutting a face into triangles
+*****************************
+
+This operation cuts a face into triangles by adding a node on the face and connecting the new node with face nodes.
+
+   .. image:: ../images/add_node_on_face.png
+      :align: center
+
+*To cut a face:*
+
+.. |img| image:: ../images/mesh_split_face_interactive.png
+
+#. Select a mesh and display it in the 3D Viewer.
+#. In the **Modification** menu select the **Add node to triangle** item or click *"Add node to triangle"* button |img| in the toolbar.
+
+   The following dialog box will appear:
+
+      .. image:: ../images/add_node_on_face-dlg.png
+         :align: center
+                  
+                  
+#. Enter an **ID** of the face to split either by picking it in the 3D viewer or by typing its ID.
+   
+#. Press *Selection* button in **Node location by mouse click** group to activate specifying location of a new node. You can specify it
+
+       * by clicking with your mouse on the face in the Viewer,
+       * by typing coordinates in **X, Y, Z** fields,
+       * by setting coordinates using arrows of spin boxes.
+
+#. Activate **Preview** to see a result of the operation.
+
+#. Click the **Apply** or **Apply and Close** button to confirm the operation.
+
+**See Also** a sample TUI Script of a :ref:`tui_cutting_triangles` operation.  
diff --git a/doc/gui/input/add_node_on_segment.rst b/doc/gui/input/add_node_on_segment.rst
new file mode 100644 (file)
index 0000000..9ab16bb
--- /dev/null
@@ -0,0 +1,37 @@
+.. _add_node_on_segment_page:
+
+*****************
+Cutting triangles
+*****************
+
+This operation cuts triangles into two by adding a node on an edge bounding these triangles.
+
+   .. image:: ../images/add_node_on_segment.png
+      :align: center
+
+*To cut triangles:*
+
+.. |img| image:: ../images/mesh_split_diag_interactive.png
+
+#. Select a mesh and display it in the 3D Viewer.
+#. In the **Modification** menu select the **Add node on segment** item or click *"Add node on segment"* button |img| in the toolbar.
+
+   The following dialog box will appear:
+
+      .. image:: ../images/add_node_on_segment-dlg.png
+         :align: center
+                  
+                  
+#. Enter IDs of nodes forming the edge in the **Edge** field (the node IDs must be separated by a dash) or select the edge in the 3D viewer.
+   
+#. Enter location of a new node on the edge which is defined as a real number in the range between 0.0 and 1.0. You can define it
+
+       * by clicking with your mouse on the edge in the Viewer,
+       * by typing a number in a field,
+       * by setting a number using arrows of a spin box.
+
+#. Activate **Preview** to see a result of the operation.
+
+#. Click the **Apply** or **Apply and Close** button to confirm the operation.
+
+**See Also** a sample TUI Script of a :ref:`tui_cutting_triangles` operation.  
diff --git a/doc/gui/input/adding_nodes_and_elements.rst b/doc/gui/input/adding_nodes_and_elements.rst
new file mode 100644 (file)
index 0000000..d2df5f2
--- /dev/null
@@ -0,0 +1,220 @@
+.. _adding_nodes_and_elements_page: 
+
+*************************
+Adding nodes and elements
+*************************
+
+In MESH you can add to your mesh different elements such as:
+
+* :ref:`Nodes <adding_nodes_anchor>`
+* :ref:`0D Elements <adding_0delems_anchor>`
+* :ref:`0D elements on Element Nodes <adding_0delems_on_all_nodes_anchor>`
+* :ref:`Ball Elements <adding_balls_anchor>`
+* :ref:`Edges <adding_edges_anchor>`
+* :ref:`Triangles <adding_triangles_anchor>`
+* :ref:`Quadrangles <adding_quadrangles_anchor>`
+* :ref:`Polygons <adding_polygons_anchor>`
+* :ref:`Tetrahedrons <adding_tetrahedrons_anchor>`
+* :ref:`Hexahedrons <adding_hexahedrons_anchor>`
+* :ref:`Hexagonal prism <adding_octahedrons_anchor>`
+* :ref:`Polyhedrons <adding_polyhedrons_anchor>`
+
+
+The convention of nodal connectivity of elements used in SALOME is the MED library convention. You can consult the description of nodal connectivity of elements in the documentation on MED library or :ref:`here <connectivity_page>`.
+
+*To add a node or an element to your mesh:*
+
+#. Select your mesh in the Object Browser or in the 3D viewer.
+#. From the **Modification** menu choose the **Add** item, the following associated sub-menu will appear:
+
+       .. image:: ../images/image152.png
+               :align: center
+
+   From this sub-menu select the type of element which you would like to add to your mesh.
+
+   .. note:: All dialogs for new node or element adding to the mesh provide the possibility to automatically add a node or element to the specified group or to create it anew using **Add to group** box, that allows choosing an existing group for the created node or element or giving the name to a new group. By default, the **Add to group** check box is switched off. If the user switches this check box on, the combo box listing all currently existing groups of the corresponding type becomes available. By default, no group is selected. In this case, when the user presses **Apply** or **Apply & Close** button, the warning message box informs the user about the necessity to input new group name. The combo box lists groups of all the :ref:`three types <grouping_elements_page>`: both :ref:`standalone groups <standalone_group>`, :ref:`groups on filter <group_on_filter>`, and :ref:`groups on geometry <group_on_geom>`. If the user chooses a group on geometry or on filter, he is warned and proposed to convert this group to standalone. If the user rejects conversion operation, it is cancelled and a new node/element is not created!
+
+
+**See Also** sample TUI Scripts of :ref:`tui_adding_nodes_and_elements` operations.  
+
+.. _adding_nodes_anchor:
+
+Adding nodes
+############
+
+.. image:: ../images/addnode.png
+       :align: center
+
+In this dialog box set coordinates for your node in the **Coordinates** set of fields and click the **Apply** or **Apply and Close** button. Your node will be created:
+
+.. image:: ../images/add_node.png
+       :align: center
+
+
+.. _adding_0delems_anchor:
+
+Adding 0D elements
+##################
+
+.. image:: ../images/add0delement.png
+       :align: center
+
+In this dialog box specify nodes which will form your 0D elements by selecting them in the 3D viewer. Activate **Allow duplicate elements** 
+to get several 0D elements on a node. Click the **Apply** or **Apply and Close** button. Your 0D elements will be created:
+
+.. image:: ../images/add_0delement.png
+       :align: center
+
+
+.. _adding_0delems_on_all_nodes_anchor:
+
+Making 0D elements on Element Nodes
+###################################
+
+There is another way to create 0D elements. It is possible to create 0D elements on all nodes of the selected mesh, sub-mesh, or a group of elements or nodes.
+
+.. image:: ../images/dlg_0D_on_all_nodes.png
+       :align: center
+
+In this dialog
+
+*  The radio-buttons allow choosing the type of object to create 0D elements on.
+    
+       * **Mesh, sub-mesh, group** - this button allows selecting a mesh, a sub-mesh or a group to create 0D elements on the nodes of its elements. The name of the selected object is shown in the dialog. 
+       * **Elements** - this button allows selecting elements in the VTK viewer or typing their IDs in the dialog.
+       * **Nodes** - this button allows selecting nodes to create 0D elements on in the VTK viewer or typing their IDs in the dialog.
+  
+* **Set Filter** button allows selecting elements or nodes by filtering mesh elements or nodes with different criteria (see :ref:`Filter usage <filtering_elements>`).
+* Activate **Allow duplicate elements** to get several 0D elements on a node. 
+* Switching on **Add to group** check-box allows specifying the name of the group to which all created or found (existing) 0D elements will be added. You can either select an existing group from a drop-down list, or enter the name of the group to be created. If a selected existing :ref:`group <grouping_elements_page>` is not Standalone (Group On Geometry or Group On Filter) it will be converted to Standalone.
+
+.. warning:: If **Add to group** is activated it has to be filled in.
+
+
+
+
+.. _adding_balls_anchor:
+
+Adding ball elements
+####################
+
+.. image:: ../images/addball.png
+       :align: center
+
+In this dialog box specify the nodes, which will form your ball elements, either by selecting them in the 3D viewer or by manually entering their IDs, specify the ball diameter and click the **Apply** or **Apply and Close** button.
+
+.. image:: ../images/add_ball.png
+       :align: center
+
+
+.. _adding_edges_anchor:
+
+Adding edges
+############
+
+.. image:: ../images/addedge.png
+       :align: center
+
+In this dialog box specify the nodes which will form your edge by selecting them in the 3D viewer with pressed Shift button and click the **Apply** or **Apply and Close** button. Your edge will be created:
+
+.. image:: ../images/add_edge.png
+       :align: center
+
+
+.. _adding_triangles_anchor:
+
+Adding triangles
+################
+
+.. image:: ../images/addtriangle.png
+       :align: center
+
+In this dialog box specify the nodes which will form your triangle by selecting them in the 3D viewer with pressed Shift button and click the **Apply** or **Apply and Close** button. Your triangle will be created:
+
+.. image:: ../images/add_triangle.png
+       :align: center
+
+
+.. _adding_quadrangles_anchor:
+
+Adding quadrangles
+##################
+
+.. image:: ../images/addquadrangle.png
+       :align: center
+
+In this dialog box specify the nodes which will form your quadrangle by selecting them in the 3D viewer with pressed Shift button and click the **Apply** or **Apply and Close** button. Your quadrangle will be created:
+
+.. image:: ../images/add_quadrangle.png
+       :align: center
+
+
+.. _adding_polygons_anchor:
+
+Adding polygons
+###############
+
+.. image:: ../images/addpolygon.png
+       :align: center
+
+In this dialog box specify the nodes which will form your polygon by selecting them in the 3D viewer with pressed Shift button and click the **Apply** or **Apply and Close** button.
+
+.. image:: ../images/add_polygone.png
+       :align: center
+
+
+.. _adding_tetrahedrons_anchor:
+
+Adding tetrahedrons
+###################
+
+.. image:: ../images/addtetrahedron.png
+       :align: center
+
+In this dialog box specify the nodes which will form your tetrahedron by selecting them in the 3D viewer with pressed Shift button and click the **Apply** or **Apply and Close** button. Your tetrahedron will be created:
+
+.. image:: ../images/image70.jpg
+       :align: center
+
+
+.. _adding_hexahedrons_anchor:
+
+Adding hexahedrons
+##################
+
+.. image:: ../images/addhexahedron.png
+       :align: center
+
+In this dialog box specify the nodes which will form your hexahedron by selecting them in the 3D viewer with pressed Shift button and click
+the **Apply** or **Apply and Close** button. Your hexahedron will be created:
+
+.. image:: ../images/image71.jpg
+       :align: center
+
+.. _adding_octahedrons_anchor:
+
+Adding hexagonal prism
+######################
+
+In the Add Hexagonal Prism dialog box specify the nodes which will form your hexagonal prism by selecting them in the 3D viewer with pressed Shift button and click the **Apply** or **Apply and Close** button. Your hexagonal prism will be created:
+
+.. image:: ../images/image_octa12.png
+       :align: center
+
+
+.. _adding_polyhedrons_anchor:
+
+Adding polyhedrons
+##################
+
+.. image:: ../images/a-createpolyhedralvolume.png
+       :align: center
+
+There are two different ways to add polyhedral volumes. 
+
+If you select **Node** as **Elements Type** you will specify the nodes which will form the faces of your polyhedron by selecting the nodes in the 3D viewer with pressed Shift button and clicking the  **Add** button to add the face in the list of Faces by Nodes, which will form your polyhedron. Note, that it could be very useful to toggle Polyhedron Preview checkbox to see the results of your selection.
+The second way is somewhat simpler, however, there are cases when it does not provide you with the necessary level of precision. If you select **Face** as **Elements Type**, you will be able to select the faces which will form your polyhedron in the 3D viewer with pressed Shift button. If you've managed to obtain the necessary result, click the **Apply** or **Apply and Close** button. Your polyhedron will be created:
+
+.. image:: ../images/add_polyhedron.png
+       :align: center
+
diff --git a/doc/gui/input/adding_quadratic_elements.rst b/doc/gui/input/adding_quadratic_elements.rst
new file mode 100644 (file)
index 0000000..b706aa7
--- /dev/null
@@ -0,0 +1,45 @@
+                                    
+.. _adding_quadratic_elements_page: 
+
+*************************
+Adding Quadratic Elements
+*************************  
+
+MESH module allows you to work with **Quadratic Elements**.
+
+Quadratic elements are defined by the same corner nodes as the corresponding linear ones, but in addition they have *midside* nodes located between the corner nodes on element sides.
+
+If a quadratic 2D element has an additional node at the element center, it is a bi-quadratic element (both TRIA7 and QUAD9 elements are supported). If a quadratic hexahedral element has 7 additional nodes: at the element center and at the center of each side, it is a tri-quadratic element (or HEXA27).
+
+The convention of nodal connectivity of elements used in SALOME is the MED library convention. You can consult the description of nodal connectivity of elements in the documentation on MED library or :ref:`here <connectivity_page>`.
+
+There are several ways to create quadratic elements in your mesh:
+
+* manually (this way is described below);
+* use :ref:`quadratic_mesh_anchor` hypothesis to generate a quadratic mesh on your geometry;
+* convert an existing linear mesh to a quadratic one (see :ref:`convert_to_from_quadratic_mesh_page`).
+
+**To add a quadratic element to your mesh:**
+
+#. Select your mesh in the Object Browser or in the 3D viewer.
+
+#. From the **Modification** menu choose the **Add** item and select one of the following:
+
+       .. image:: ../images/image152.png
+               :align: center
+
+   .. note::
+       All dialogs for adding quadratic element to the mesh provide the possibility to automatically add an element to the specified group or to create the group anew using **Add to group** box, that allows choosing an existing group for the created node or element or giving the name to a new group. By default, the **Add to group** check box is switched off. If the user switches this check box on, the combo box listing all currently existing groups of the corresponding type becomes available. By default, no group is selected. In this case, when the user presses **Apply** or **Apply & Close** button, the warning message box informs the user about the necessity to input a new group name. The combo box lists groups of all the :ref:`three types <grouping_elements_page>`: both :ref:`standalone groups <standalone_group>`, :ref:`groups on filter <group_on_filter>`, and :ref:`groups on geometry <group_on_geom>`. If the user chooses a group on geometry or on filter, he is warned and proposed to convert this group to standalone. If the user rejects conversion operation, it is cancelled and a new node/element is not created!
+
+#. To create any **Quadratic Element** specify the nodes which will form your element by selecting them in the 3D viewer with pressed Shift button and click *Selection* button to the right of **Corner Nodes** label. Their numbers will appear in the dialog box as **Corner Nodes** (alternatively you can just input numbers in this field without selection; note that to use this way the mesh should be selected before invoking this operation). The edges formed by the corner nodes will appear in the table. To define the middle nodes for each edge, double-click on the respective field and input the number of the node (or pick the node in the viewer). For bi-quadratic and tri-quadratic elements, your also need to specify central nodes. As soon as all needed nodes are specified, a preview of a new quadratic element will be displayed in the 3D viewer. 
+
+#. Click **Apply** or **Apply and Close** button to add the element to the mesh.
+
+.. image:: ../images/aqt.png
+       :align: center
+
+**Reverse** button reverses the element.
+
+
+
+
diff --git a/doc/gui/input/additional_hypo.rst b/doc/gui/input/additional_hypo.rst
new file mode 100644 (file)
index 0000000..21c42ea
--- /dev/null
@@ -0,0 +1,190 @@
+.. _additional_hypo_page: 
+
+*********************
+Additional Hypotheses
+*********************
+
+**Additional Hypotheses** can be applied as a supplement to the main hypotheses, introducing additional concepts to mesh creation.
+
+An **Additional Hypothesis** can be defined in the same way as any main hypothesis in :ref:`Create Mesh <create_mesh_anchor>` or :ref:`Create Sub-Mesh <constructing_submeshes_page>` dialog.
+
+The following additional hypothesis are available:
+* :ref:`propagation_anchor` and :ref:`propagofdistribution_anchor` hypotheses are useful for creation of quadrangle and hexahedral meshes.
+* :ref:`Viscous Layers <viscous_layers_anchor>` and :ref:`Viscous Layers 2D <viscous_layers_anchor>` hypotheses allow creation of layers of highly stretched elements near mesh boundary, which is beneficial for high quality viscous computations.
+* :ref:`quadratic_mesh_anchor` hypothesis allows generation of second order meshes. 
+* :ref:`quadrangle_preference_anchor` hypothesis enables generation of quadrangles.
+
+
+
+.. _propagation_anchor:
+
+Propagation of 1D Hypothesis on opposite edges
+##############################################
+
+**Propagation of 1D Hypothesis on opposite edges** allows to mesh
+opposite sides of a quadrangle face and other adjacent quadrangles,
+using the same hypothesis assigned to only one edge.
+Thus you define a sub-mesh on the edge where you define 1D meshing
+parameters and the **Propagation hypothesis**. These local meshing
+parameters will be propagated via opposite sides of quadrangles to the
+whole geometry, and this propagation stops at an edge with other local
+meshing parameters.
+
+This hypothesis can be taken into account by 
+:ref:`Wire Discretization <a1d_algos_anchor>` and 
+:ref:`Composite Side Discretization <a1d_algos_anchor>` algorithms.
+
+**See Also** a sample TUI Script of a :ref:`Propagation hypothesis <tui_propagation>` operation
+
+.. _propagofdistribution_anchor:
+
+Propagation of Node Distribution on Opposite Edges
+##################################################
+
+**Propagation of Node Distribution on Opposite Edges** allows to propagate
+distribution of nodes onto an opposite edge. If a local hypothesis and
+propagation are defined on an edge of a quadrangular face, the
+opposite edge will have the same number of nodes and the same
+relations between segment lengths, unless another hypothesis
+has been locally defined on the opposite edge.
+This hypothesis can be taken into account by 
+:ref:`Wire Discretization <a1d_algos_anchor>` and 
+:ref:`Composite Side Discretization <a1d_algos_anchor>` algorithms.
+
+**See Also** a sample TUI Script of a :ref:`Propagation hypothesis <tui_propagation>` operation
+
+.. _viscous_layers_anchor:
+
+Viscous Layers and Viscous Layers 2D
+####################################
+
+**Viscous Layers** and **Viscous Layers 2D** additional
+hypotheses can be used by several 3D algorithms, for example
+Hexahedron(i,j,k), or 2D algorithms, for example Triangle
+(NETGEN_2D), correspondingly. These hypotheses allow creation of layers
+of highly stretched elements, prisms in 3D and quadrilaterals in 2D,
+near mesh boundary, which is beneficial for high quality viscous
+computations.
+
+.. image:: ../images/viscous_layers_hyp.png
+       :align: center
+
+.. image:: ../images/viscous_layers_2d_hyp.png
+       :align: center
+   
+
+* **Name** - allows to define the name of the hypothesis.
+* **Total thickness** - gives the total thickness of element layers.
+* **Number of layers** - defines the number of element layers.
+* **Stretch factor** - defines the growth factor of element height from the mesh boundary inwards.
+* **Extrusion method** (available in 3D only) - defines how positions of nodes are found during prism construction and how the creation of distorted and intersecting prisms is prevented.
+
+  * **Surface offset + smooth** method extrudes nodes along the normal to the underlying geometrical surface. Smoothing of the internal surface of element layers is possible to avoid creation of invalid prisms.
+  * **Face offset** method extrudes nodes along the average normal of surrounding mesh faces to the intersection with a neighbor mesh face translated along its own normal by the thickness of layers. The thickness of layers can be limited to avoid creation of invalid prisms.
+  * **Node offset** method extrudes nodes along the average normal of surrounding mesh faces by the thickness of layers. The thickness of layers can be limited to avoid creation of invalid prisms. 
+
+       .. image:: ../images/viscous_layers_extrusion_method.png 
+               :align: center
+
+       .. centered::
+               Prisms created by the tree extrusion methods at the same other parameters
+
+* **Specified Faces/Edges are** - defines how the shapes specified by the next parameter are used.     
+* **Faces/Edges with/without layers** - defines geometrical faces or edges on which element layers either should be or should not be constructed, depending on the value of the previous parameter (**Specified Faces/Edges are**). Faces (or edges) can be selected either in the Object Browser or in the VTK Viewer. **Add** button becomes active as soon as a suitable sub-shape is selected.
+
+  .. note:: 
+       A mesh shown in the 3D Viewer can prevent selection of faces and edges, just hide the mesh to avoid this. If a face, which should be selected, is hidden by other faces, consider creating a group of faces to be selected in the Geometry module. To avoid a long wait when a geometry with many faces (or edges) is displayed, the number of faces (edges) shown at a time is limited by the value of :ref:`Sub-shapes preview chunk size <chunk_size_pref>` preference (in Preferences/Mesh/General tab).
+
+
+  If faces/edges without layers are specified, the element layers are
+  not constructed on geometrical faces shared by several solids in 3D
+  case and edges shared by several faces in 2D case. In other words,
+  in this mode the element layers can be constructed on boundary faces
+  and edges only, and are not constructed on internal faces and
+  edges. There is an exception to this rule: if a hypothesis is
+  assigned to a sub-mesh, the element layers can be constructed on
+  boundary faces/edges of the shape of this sub-mesh, at same time
+  possibly being internal faces/edges within the whole model.
+
+* **Create groups from layers** - activates creation of a group containing elements of the layers.
+
+  .. image:: ../images/viscous_layers_on_submesh.png 
+     :align: center
+
+  .. centered::
+       2D viscous layers constructed on boundary edges of a sub-mesh on a disk face.
+
+  If you use **several** hypotheses to define viscous layers on faces of
+  one solid, keep in mind the following. Each hypothesis defines a set
+  of faces with viscous layers (even if you specify faces without
+  layers). The sets of faces with viscous layers defined by several
+  hypotheses should not intersect, else the module won't add an
+  hypothesis that is incompatible with another one.
+  Also you can't define different number of layers on adjacent faces
+  of a solid.
+  This logic is also valid for the 2D hypothesis.
+
+
+
+.. image:: ../images/viscous_layers_mesh.png
+       :align: center
+
+.. centered::
+       A group containing viscous layer prisms.
+
+**See also** a sample TUI script of a :ref:`tui_viscous_layers`.
+
+.. _viscous_layers_api_anchor:
+
+Viscous Layers API
+####################################
+
+The Viscous layer API is available on TUI. Allows to compute a shrink version of the geometry. This shrank version can be passed to any mesher and be used to
+build the viscous layer from the mesh computed in the shrank geometry. The current implementation only support the **Face offset** method to extrude the 
+nodes from the shrank mesh to the original geometry. 
+
+This implementation supports 3D (Solids and Solid Compound) and 2D (Face) geometries. For the 3D case, the faces Ids are
+used to identify the faces (perpendicular to it) where the solid is to be reduced. For the 2D case, the edges Ids can be provided but will not have any effect
+on the geometry computation (this control is not available in the opencascade library), therefore, for this case the entire face is shrank.
+
+The Viscous Layer API receive the same parameters as the Viscous Layers Hypothesis and implements four methods:
+
+* The constructor ``ViscousLayerBuilder()``
+* The parameters definitions ``setBuilderParameters(...)``
+* The ``GetShrinkGeometry()`` method that returns the shrink version of the original geomtry.
+* The ``AddLayers( shrinkMesh )`` method that returns the complet version of the mesh (shrink+viscous layer)
+
+**See also** a sample TUI script of a :ref:`tui_viscous_layers_api`.
+
+.. _quadratic_mesh_anchor:
+
+Quadratic Mesh
+##############
+
+Quadratic Mesh hypothesis allows to build a quadratic mesh (in which
+links between element nodes are not straight but curved lines due to
+presence of an additional mid-side node).
+
+This 1D hypothesis can be taken into account by 
+:ref:`Wire Discretization <a1d_algos_anchor>` and 
+:ref:`Composite Side Discretization <a1d_algos_anchor>` algorithms. To create a quadratic mes assign this hypothesis at 
+:ref:`mesh construction <constructing_meshes_page>`.
+
+See :ref:`adding_quadratic_elements_page` for more information about quadratic meshes.
+
+
+.. _quadrangle_preference_anchor:
+
+Quadrangle Preference
+#####################
+
+This additional hypothesis can be used together with 2D triangulation algorithms.
+It allows 2D triangulation algorithms to build quadrangular meshes.
+
+Usage of this hypothesis with :ref:`Quadrangle: Mapping <quad_ijk_algo_page>` meshing algorithm is obsolete since introducing :ref:`Quadrangle parameters <hypo_quad_params_anchor>` hypothesis.
+Usage of this hypothesis with :ref:`Quadrangle: Mapping <quad_ijk_algo_page>` meshing algorithm corresponds to specifying *Quadrangle Preference* transition type of :ref:`Quadrangle parameters <hypo_quad_params_anchor>` hypothesis.
+
+.. note::
+       *Quadrangle Preference* transition type can be used only if the total quantity of segments on all sides of the face is even (divisible by 2), else *Standard* transition type is used.
diff --git a/doc/gui/input/area.rst b/doc/gui/input/area.rst
new file mode 100644 (file)
index 0000000..11bbddd
--- /dev/null
@@ -0,0 +1,25 @@
+
+.. _area_page:
+
+****
+Area
+****
+
+**Area** mesh quality control is based on the algorithm of area calculation of mesh faces.
+
+*To apply the Area quality control to your mesh:*
+
+.. |img| image:: ../images/image35.png
+
+#. Display your mesh in the viewer.
+#. Choose **Controls > Face Controls > Area** or click         **"Area"** button |img|. 
+
+Your mesh will be displayed in the viewer with its faces colored
+according to the applied mesh quality control criterion:
+
+       .. image:: ../images/image5.jpg
+               :align: center
+
+
+**See Also** a sample TUI Script of an :ref:`tui_area` filter.  
+
diff --git a/doc/gui/input/aspect_ratio.rst b/doc/gui/input/aspect_ratio.rst
new file mode 100644 (file)
index 0000000..2199d5b
--- /dev/null
@@ -0,0 +1,33 @@
+.. _aspect_ratio_page: 
+
+************
+Aspect Ratio
+************
+
+The **Aspect Ratio** quality criterion for mesh elements reveals the degree of conformity of a mesh element to the regular element of its type (with all edges having the same length).
+  
+
+* The **Aspect Ratio** of a **triangle** 2D element consisting of 3 nodes is calculated by the formula:
+
+       .. image:: ../images/formula4.png
+               :align: center
+
+* The **Aspect Ratio** of a **quadrangle** 2D element consisting of 4 nodes is calculated using The Verdict Geometric Quality Library available within VTK. The calculation formula is:
+
+       .. image:: ../images/formula5.png
+               :align: center
+
+*To apply the Aspect Ratio quality criterion to your mesh:*
+
+.. |img| image:: ../images/image37.png
+
+#. Display your mesh in the viewer.
+#. Choose **Controls > Face Controls > Aspect Ratio** or click *Aspect Ratio* button |img| in the toolbar.
+   
+   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
+
+       .. image:: ../images/image94.jpg
+               :align: center
+
+
+**See Also** a sample TUI Script of an :ref:`tui_aspect_ratio` filter.
diff --git a/doc/gui/input/aspect_ratio_3d.rst b/doc/gui/input/aspect_ratio_3d.rst
new file mode 100644 (file)
index 0000000..dd1ac91
--- /dev/null
@@ -0,0 +1,32 @@
+.. _aspect_ratio_3d_page:
+
+***************
+Aspect ratio 3D
+***************
+
+The **Aspect Ratio 3D** mesh quality criterion calculates the same parameter as the :ref:`aspect_ratio_page` criterion, but it is applied to 3D mesh elements: tetrahedrons, pentahedrons, hexahedrons, etc.
+
+* The **Aspect Ratio** of a **tetrahedron** 3D element defined by vertices {a,b,c,d } is calculated by the formula:
+
+       .. image:: ../images/formula1.png
+               :align: center
+
+* Other element types like polyhedron, pentahedron and hexahedron use the following formula:
+
+       .. image:: ../images/formula2.png
+               :align: center
+
+*To apply the Aspect Ratio 3D quality criterion to your mesh:*
+
+.. |img| image:: ../images/image144.png
+
+#. Display your mesh in the viewer.
+#. Choose **Controls > Volume Controls > Aspect Ratio 3D** or click *"Aspect Ratio 3D"* button |img| of the toolbar.
+   
+   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
+
+       .. image:: ../images/image86.jpg
+               :align: center
+
+
+**See Also** a sample TUI Script of a :ref:`tui_aspect_ratio_3d` filter.
diff --git a/doc/gui/input/bare_border_face.rst b/doc/gui/input/bare_border_face.rst
new file mode 100644 (file)
index 0000000..fd50742
--- /dev/null
@@ -0,0 +1,15 @@
+.. _bare_border_faces_page:
+*****************
+Bare border faces
+*****************
+
+This mesh quality control highlights the faces having the border not
+shared with other faces (free border) and missing an edge based on
+nodes of the free border. The faces with bare border are shown with a
+color different from the color of shared faces.
+
+.. image:: ../images/bare_border_faces_smpl.png
+       :align: center
+
+**See also** a sample :ref:`TUI Script <tui_bare_border_faces>` making a group of faces highlighted in the picture.
diff --git a/doc/gui/input/bare_border_volumes.rst b/doc/gui/input/bare_border_volumes.rst
new file mode 100644 (file)
index 0000000..d58673d
--- /dev/null
@@ -0,0 +1,16 @@
+.. _bare_border_volumes_page:
+
+*******************
+Bare border volumes
+*******************
+
+This mesh quality control highlights the volumes having the border not
+shared with other volumes (free border) and missing a face based on
+nodes of the free border. The volumes with bare border are shown with a
+color different from the color of shared volumes.
+
+.. image:: ../images/bare_border_volumes_smpl.png
+       :align: center
+
+**See also** a sample :ref:`TUI Script <tui_bare_border_volumes>` making a group of volumes highlighted in the picture.
+
diff --git a/doc/gui/input/basic_meshing_algos.rst b/doc/gui/input/basic_meshing_algos.rst
new file mode 100644 (file)
index 0000000..b0df708
--- /dev/null
@@ -0,0 +1,83 @@
+.. _basic_meshing_algos_page:
+
+************************
+Basic meshing algorithms
+************************
+
+The MESH module contains a set of meshing algorithms, which are        used for meshing entities (1D, 2D, 3D sub-shapes) composing geometrical objects.
+
+.. note:: Algorithms added to the module as plug-ins are described in documentation of the plug-ins (menu **Help / User's Guide / Mesh module / Plugins**).
+
+An algorithm represents either an implementation of a certain meshing technique or an interface to the whole meshing program generating elements of several dimensions.
+
+.. _a1d_algos_anchor:
+
+* For meshing of 1D entities (**edges**):
+
+  * **Wire Discretization** meshing algorithm - splits an edge into a number of mesh segments following an 1D hypothesis.
+  * **Composite Side Discretization** algorithm - allows to apply a 1D hypothesis to a whole side of a geometrical face even if it is composed of several edges provided that they form C1 curve in all faces of the main shape.
+
+* For meshing of 2D entities (**faces**):
+
+  * :ref:`Quadrangle: Mapping <quad_ijk_algo_page>` meshing algorithm - splits faces into quadrangular elements.
+
+               .. image:: ../images/image123.gif
+                       :align: center 
+
+               .. centered::
+                       Example of a triangular 2D mesh
+
+               .. image:: ../images/image124.gif 
+                       :align: center 
+
+               .. centered::
+                       Example of a quadrangular 2D mesh
+
+* For meshing of 3D entities (**solid objects**):
+
+  * **Hexahedron (i,j,k)** meshing algorithm - solids are split into hexahedral elements thus forming a structured 3D mesh. The algorithm requires that 2D mesh generated on a solid could be considered as a mesh of a box, i.e. there should be eight nodes shared by three quadrangles and the rest nodes should be shared by four quadrangles.
+                       .. image:: ../images/hexa_ijk_mesh.png 
+                               :align: center 
+
+    .. centered::
+       Structured mesh generated by Hexahedron (i,j,k) on a solid bound by 16 faces
+
+  * :ref:`Body Fitting <cartesian_algo_page>` meshing algorithm - solids are split into hexahedral elements forming a Cartesian grid; polyhedra and other types of elements are generated where the geometrical boundary intersects Cartesian cells.
+
+  Some 3D meshing algorithms, such as Hexahedron(i,j,k) also can
+  generate 3D meshes from 2D meshes, working without geometrical objects.
+
+* There is also a number of more specific algorithms:
+
+   * :ref:`Extrusion 3D <prism_3d_algo_page>` - for meshing prismatic 3D shapes with hexahedra and prisms.
+   * :ref:`Quadrangle: Medial Axis Projection <quad_from_ma_algo_page>` - for quadrangle meshing of faces with sinuous borders and rings.
+   * **Polygon per Face** meshing algorithm - generates one mesh face (either a triangle, a quadrangle or a polygon) per a geometrical face using all nodes from the face boundary.
+   * **Polyhedron per Solid** meshing algorithm - generates one mesh volume (of a classical type or a polyhedron) per a geometrical solid using all faces of the solid boundary. It does not require that 2D mesh is generated on geometrical faces. It creates one mesh edge per geometrical edges and applies **Polygon per Face** to faces if they are not meshed by optional algorithms of lower dimensions.
+   * :ref:`Projection algorithms <projection_algos_page>` - for meshing by projection of another mesh.
+   * :ref:`Import algorithms <import_algos_page>` - for meshing by importing elements from another mesh.
+   * :ref:`Radial Prism <radial_prism_algo_page>` - for meshing 3D geometrical objects with cavities with hexahedra and prisms.
+   * :ref:`Radial Quadrangle 1D-2D <radial_quadrangle_1D2D_algo_page>` - for quadrangle meshing of disks and parts of disks.
+   * :ref:`Use Faces/Edges to be Created Manually <use_existing_page>` - to create a 1D or a 2D mesh in a python script.
+   * :ref:`Segments around Vertex <segments_around_vertex_algo_page>` - for defining the length of mesh segments around certain vertices.
+
+
+:ref:`constructing_meshes_page` page describes in detail how to apply meshing algorithms.
+
+**See Also** a sample TUI Script of a :ref:`tui_defining_meshing_algos` operation.  
+
+
+.. toctree::
+   :maxdepth: 2
+   :hidden:
+
+   quad_ijk_algo.rst
+   cartesian_algo.rst
+   prism_3d_algo.rst
+   quad_from_ma_algo.rst
+   projection_algos.rst
+   use_existing_algos.rst
+   radial_prism_algo.rst
+   radial_quadrangle_1D2D_algo.rst
+   define_mesh_by_script.rst
+   segments_around_vertex_algo.rst
+
diff --git a/doc/gui/input/borders_at_multi_connection.rst b/doc/gui/input/borders_at_multi_connection.rst
new file mode 100644 (file)
index 0000000..b7dce97
--- /dev/null
@@ -0,0 +1,15 @@
+.. _borders_at_multi_connection_page:
+
+***************************
+Borders at multi-connection
+***************************
+
+This mesh quality control highlights segments according to the number of elements, faces and volumes, to which the segment belongs.
+
+.. image:: ../images/image151.gif
+       :align: center
+
+In this picture the borders at multi-connection are displayed in blue.
+
+**See Also** a sample TUI Script of a :ref:`tui_borders_at_multiconnection` filter.
+
diff --git a/doc/gui/input/borders_at_multi_connection_2d.rst b/doc/gui/input/borders_at_multi_connection_2d.rst
new file mode 100644 (file)
index 0000000..7494952
--- /dev/null
@@ -0,0 +1,12 @@
+.. _borders_at_multi_connection_2d_page:
+
+******************************
+Borders at multi-connection 2D
+******************************
+
+This mesh quality control highlights borders of faces (links between nodes) according to the number of faces, to which the link belongs.
+
+.. image:: ../images/image127.gif
+       :align: center
+
+**See Also** a sample TUI Script of a :ref:`tui_borders_at_multiconnection_2d` filter.
diff --git a/doc/gui/input/building_compounds.rst b/doc/gui/input/building_compounds.rst
new file mode 100644 (file)
index 0000000..f7d41d1
--- /dev/null
@@ -0,0 +1,52 @@
+.. _building_compounds_page:
+
+************************
+Building Compound Meshes
+************************
+
+Compound Mesh is a combination of several mesh objects (meshes, groups, submeshes). All elements and groups present in input meshes are present in the compound mesh. However, it does not use geometry or hypotheses of the initial mesh objects.
+The links between the input meshes and the compound mesh are not supported, consequently the modification of an input mesh does not lead to the update of the compound mesh.
+
+There are two modes of building a compound:
+
+* joining selected mesh objects into a new mesh.
+* appending selected mesh objects to an existing mesh.
+
+*To Build a compound mesh:*
+
+.. |img| image:: ../images/image161.png
+
+From the **Mesh** menu select **Build Compound** or click *"Build Compound Mesh"* button |img| in the toolbar. The following dialog box will appear:
+
+       .. image:: ../images/buildcompound.png
+               :align: center
+
+* **Result** group allows selecting a mode of operation
+
+  * Activating **Create new mesh named** enables typing the name of the resulting compound mesh.
+  * Activating **Append to mesh** enables selection of a mesh to append other selected objects to.
+   
+* **Meshes, sub-meshes, groups** allows selecting the meshes, sub-meshes and groups to be concatenated. They can be chosen in the Object Browser while holding *Ctrl* button.
+* **Processing identical groups** allows selecting the method of processing the namesake groups existing in the input meshes. They can be either 
+
+  * **United** - all elements of *Group1* of *Mesh_1* and *Group1* of *Mesh_2* become the elements of *Group1* of the *Compound_Mesh*, or
+  * **Renamed** - *Group1* of *Mesh_1* becomes *Group1_1* and *Group1* of *Mesh_2* becomes *Group1_2*.
+    
+  See :ref:`grouping_elements_page` for more information about groups.
+* **Create groups from input objects** check-box permits to automatically create groups corresponding to every initial mesh.
+
+       .. image:: ../images/buildcompound_groups.png
+               :align: center
+
+       .. centered:: 
+               Groups created from input meshes 'Box_large' and 'Box_small'
+
+* You can choose to additionally :ref:`Merge coincident nodes <merging_nodes_page>` :ref:`and elements <merging_elements_page>` in the compound mesh, in which case it is possible to define the **Tolerance** for this operation.
+
+       .. image:: ../images/image160.gif
+               :align: center
+
+       .. centered::
+               Example of a compound of two meshed cubes
+
+**See Also** a sample script of :ref:`tui_building_compound`.
diff --git a/doc/gui/input/cartesian_algo.rst b/doc/gui/input/cartesian_algo.rst
new file mode 100644 (file)
index 0000000..199f304
--- /dev/null
@@ -0,0 +1,95 @@
+.. _cartesian_algo_page:
+
+*********************************
+Body Fitting 3D meshing algorithm
+*********************************
+
+Body Fitting algorithm generates hexahedrons of a Cartesian grid in
+the internal part of geometry and polyhedrons and other types of
+elements at the intersection of Cartesian cells with the geometrical
+boundary. The algorithm supports construction of 
+:ref:`viscous boundary layers<cartesian_VL_anchor>` (use 
+:ref:`Viscous Layers hypothesis <viscous_layers_anchor>` to define them).
+
+.. image:: ../images/cartesian3D_sphere.png 
+       :align: center
+
+.. centered::
+       A sphere meshed by Body Fitting algorithm
+
+The meshing algorithm is as follows.
+
+#. Lines of a Cartesian structured grid defined by :ref:`Body Fitting Parameters <cartesian_hyp_anchor>` hypothesis are intersected with the geometry boundary, thus nodes lying on the boundary are found. This step also allows finding out for each node of the Cartesian grid if it is inside or outside the geometry. 
+#. For each cell of the grid, check how many of its nodes are outside of the geometry boundary. Depending on a result of this check
+
+   * skip a cell, if all its nodes are outside 
+   * skip a cell, if it is too small according to **Size Threshold** parameter
+   * add a hexahedron in the mesh, if all nodes are inside 
+   * add a polyhedron or another cell type in the mesh, if some nodes are inside and some outside.  
+
+.. _cartesian_VL_anchor:
+
+**Viscous boundary layers** are constructed as follows:
+
+   * create an offset geometry with offset value equal to full layers thickness by using BRepOffset_MakeOffset OCCT class;
+   * mesh the offset geometry with the Body Fitting algorithm;
+   * create prisms of the layers by projecting boundary nodes of offset geometry onto the boundary of initial geometry.
+
+.. note:: Viscous layers can't be constructed on geometry with **shared/internal** faces.
+
+To apply the algorithm when you define your mesh, select **Body Fitting** in the list of 3D algorithms and add **Body Fitting  Parameters** hypothesis. The following dialog will appear:
+
+.. _cartesian_hyp_anchor:
+
+Body Fitting Parameters hypothesis
+##################################
+
+.. image:: ../images/cartesian3D_hyp.png 
+       :align: center
+
+.. centered::
+       Body Fitting Parameters hypothesis dialog
+
+This dialog allows to define
+
+* **Name** of the algorithm. 
+* Minimal size of a cell truncated by the geometry boundary. If the size of a truncated grid cell is **Threshold** times less than a initial cell size, then a mesh element is not created. 
+* **Implement Edges** check-box activates incorporation of geometrical edges in the mesh.
+  
+       .. image:: ../images/cartesian_implement_edge.png 
+               :align: center
+
+       .. centered::
+               Implement Edges switched off to the left and on to the right
+
+* **Create Faces** check-box activates creation on mesh faces.
+* **Consider Shared and Internal Faces** check-box activates treatment of faces shared by solids and internal. By default the algorithm considers only outer boundaries of the geometry.
+* **Apply Threshold to Shared / Internal Faces** check-box activates application of **Threshold** to cells cut by shared and internal faces, that can cause appearance of holes inside the mesh.
+* **Set Quanta** check-box activates application of **Quanta Value** to replace **polyhedrons** by hexahedrons at the boundary of the geometry. 
+* **Quanta Value** the relation between the volume of a polyhedrons and the equivalent hexahedron at the solid boundary. When **Set Quanta** is checked, those elements are replaced by hexahedrons if the volume of the polyhedron divided by the equivalente hexahedron is bigger than **Quanta**.  
+* **Definition mode** allows choosing how Cartesian structured grid is defined. Location of nodes along each grid axis is defined individually:
+    
+       * You can specify the **Coordinates** of grid nodes. **Insert** button inserts a node at **Step** distance (negative or positive) from the selected node. **Delete** button removes the selected node. Double click on a coordinate in the list enables its edition. **Note** that node coordinates are measured along directions of axes that can differ from the directions of the Global Coordinate System.
+       * You can define the **Spacing** of a grid as an algebraic formula *f(t)* where *t* is a position along a grid axis normalized at [0.0,1.0]. *f(t)* must be non-negative at 0. <= *t* <= 1. The whole extent of geometry can be divided into ranges with their own spacing formulas to apply; a t varies between 0.0 and 1.0 within each **Range**. **Insert** button divides a selected range into two. **Delete** button adds the selected sub-range to the previous one. Double click on a range in the list enables edition of its right boundary. Double click on a function in the list enables its edition.
+
+.. note:: The actual grid spacing can slightly differ from the defined one. This is done for the best fitting of polyhedrons and for a better mesh quality on the interval boundaries. For example, if a constant **Spacing** is defined along an axis, the actual grid will fill the shape's dimension L along this axis with round number of equal cells: Spacing_actual = L / round( L / Spacing_defined ).
+  
+* **Fixed Point** group allows defining an exact location of a grid node in the direction defined by spacing. The following cases are possible:
+   
+       * If all three directions are defined by spacing, there will be a mesh node at the **Fixed Point**. 
+       * If two directions are defined by spacing, there will be at least a link between mesh nodes passing through the **Fixed Point**. 
+       * If only one direction is defined by spacing, there will be at least an element facet passing through the **Fixed Point**.
+       * If no directions are defined by spacing, **Fixed Point** is disabled.
+       
+* **Directions of Axes** group allows setting the directions of grid axes.
+   
+       * If **Orthogonal Axes** check-box is activated the axes remain orthogonal during their modification. 
+       * Selection buttons enable snapping corresponding axes to direction of a geometrical edge selected in the Object Browser. Edge direction is defined by coordinates of its end points.
+       * **Optimal Axes** button runs an algorithm that tries to set the axes to maximize the number of generated hexahedra.
+       * **Reset** button returns the axes in a default position parallel to the axes of the Global Coordinate System. 
+  
+  
+
+**See Also** a sample TUI Script of a :ref:`tui_cartesian_algo`.
+
diff --git a/doc/gui/input/changing_orientation_of_elements.rst b/doc/gui/input/changing_orientation_of_elements.rst
new file mode 100644 (file)
index 0000000..61f979c
--- /dev/null
@@ -0,0 +1,29 @@
+.. _changing_orientation_of_elements_page:
+
+********************************
+Changing orientation of elements
+********************************
+
+Orientation of an element is changed by changing the :doc:`order <connectivity>` of its nodes.
+
+*To change orientation of elements:*
+
+.. |img| image:: ../images/image79.png
+
+#. Select a mesh (and display it in the 3D Viewer if you are going to pick elements by mouse).
+#. In the **Modification** menu select the **Orientation** item or click *Orientation* button |img| in the toolbar.
+
+   The following dialog box will appear:
+
+       .. image:: ../images/orientaation1.png
+               :align: center
+    
+       * Select type of elements to reorient: **Face** or **Volume**.
+       * **The main list** shall contain the elements which will be reoriented. You can click on an element in the 3D viewer and it will be highlighted. After that click the **Add** button and the ID of this element will be added to the list. To remove a selected element or elements from the list click the **Remove** button. The **Sort** button allows to sort the list of elements IDs. The **Set filter** button allows to apply a definite :ref:`filter <filtering_elements>` to the selection of elements.
+       * **Apply to all** radio button allows to modify the orientation of all elements of the selected mesh.
+       * *Select from** set of fields allows to choose a sub-mesh or an existing group whose elements can be added to the list.
+  
+#. Click the **Apply** or **Apply and Close** button to confirm the operation.
+
+**See Also** a sample TUI Script of a :ref:`tui_orientation` operation.
+
diff --git a/doc/gui/input/clipping.rst b/doc/gui/input/clipping.rst
new file mode 100644 (file)
index 0000000..6cafd29
--- /dev/null
@@ -0,0 +1,60 @@
+.. _clipping_page:
+
+********
+Clipping
+********
+
+**Clipping** allows creating cross-section views (clipping planes) of your mesh.
+It is available as a sub-item in the context menu of an active mesh in 3D Viewer.
+To create a clipping plane, click on the **New** button in the dialog and choose how it is defined: by **Absolute** or **Relative** coordinates.
+
+* **Absolute Coordinates**
+
+  .. image:: ../images/Clipping_Absolute.png
+       :align: center
+
+  * **Base point** - allows defining the coordinates of the base point for the clipping plane.
+     * **Reset** - returns the base point to the coordinate origin.
+  * **Direction** - allows defining the orientation of the clipping plane.
+     * **Invert** - allows selecting, which part of the object will be removed and which will remain after clipping.
+    
+* **Relative mode**  
+
+  .. image:: ../images/Clipping_Relative.png
+       :align: center
+
+  * **Orientation** ( ||X-Y, ||X-Z or ||Y-Z).
+  * **Distance** between the opposite extremities of the boundary box of selected objects, if it is set to 0.5 the boundary box is split in two halves.
+  * **Rotation** (in angle degrees) **around X** (Y to Z) and **around Y** (X to Z) (depending on the chosen Orientation)
+
+       .. image:: ../images/before_clipping_preview.png 
+               :align: center
+
+        .. centered:: 
+           The preview plane and the cut object
+
+The other parameters are available in both modes : 
+
+* **OpenGL clipping** check-box allows choosing OpenGL native clipping, which clips the whole presentation. If it is unchecked, the clipping is done on the dataset i.e. only the visibility of separate mesh cells is changed (see the examples).
+* The List contains **Meshes, sub-meshes and groups** to which the cross-section will be applied.
+* **Select all** check-box allows to selecting and deselecting all available objects at once.
+* **Show preview** check-box shows the clipping plane in the **3D Viewer**.
+* **Auto Apply** check-box shows button is on, you can preview the cross-section in the **3D Viewer**.
+
+It is also possible to interact with the clipping plane directly in 3D view using the mouse. 
+
+To get an object clipped, click **Apply**.
+
+**Examples:**
+
+       .. image:: ../images/dataset_clipping.png
+               :align: center
+
+        .. centered:: 
+           The cross-section using dataset
+
+       .. image:: ../images/opengl_clipping.png
+               :align: center
+
+        .. centered:: 
+           The OpenGL cross-section
diff --git a/doc/gui/input/colors_size.rst b/doc/gui/input/colors_size.rst
new file mode 100644 (file)
index 0000000..56a9ab1
--- /dev/null
@@ -0,0 +1,45 @@
+.. _colors_size_page:
+
+**********
+Properties
+**********
+
+.. image:: ../images/colors_size.png
+       :align: center                                                 
+
+Using this dialog you can customize different properties of the mesh visualization parameters.
+
+The GUI elements in the "Properties" dialog box are grouped according to the entity types of mesh data. If some data entities are not present in the mesh object, the corresponding GUI elements are not shown.
+
+*  **Nodes**:
+       * **Color** - color of nodes.
+       * **Type** and **Scale** - these options allow changing the nodes representation (see :ref:`point_marker_page` page for more details).
+* **Edges / wireframe**:
+       * **Color** - color of element borders in wireframe mode.
+       * **Width** - width of lines (edges and borders of elements in wireframe mode).
+* **Faces**:
+       * **Front** - surface color of face elements (seen in shading mode).
+       * **Back** - backside surface color of face elements. Use the slider to select this color generated on the base of the **Face** color by changing its brightness and saturation. 
+* **Volumes**:
+       * **Normal** - surface color of normal volume elements (seen in shading mode).
+       * **Reversed** - surface color of volume elements. Use the slider to select this color generated on the base of the **Normal** color by changing its brightness and saturation. 
+* **Outlines**:
+       * **Color** - color of element borders in shading mode.
+       * **Width** - width of outlines (borders of elements in shading mode).
+* **0D elements**:
+       * **Color** - color of 0D elements.
+       * **Size** - size of 0D elements.
+* **Balls**:
+       * **Color** - color of discrete ball elements.
+       * **Size** - size of discrete ball elements.
+       * **Scale** - scale factor of discrete ball elements.
+* **Orientation vectors**:
+       * **Color** - color of orientation vectors.
+       * **Scale** - size of orientation vectors.
+       * **3D vectors** - allows to choose between 2D planar and 3D vectors.
+* **Shrink coef.** - relative space of elements compared to gaps between them in shrink mode.
+
+.. toctree::
+   :hidden:
+
+   point_marker.rst
diff --git a/doc/gui/input/connectivity.rst b/doc/gui/input/connectivity.rst
new file mode 100644 (file)
index 0000000..c487d71
--- /dev/null
@@ -0,0 +1,67 @@
+.. _connectivity_page:
+
+******************************
+Nodal connectivity of elements
+******************************
+
+The following images show order of nodes in correctly defined elements.
+
++------------------------------------------------------------------------------+
+| Edge (segment): linear and quadratic                                         |
+|     .. image:: ../images/connectivity_edge.png                               |
+|              :align: center                                                 |
++------------------------------------------------------------------------------+
+| Triangle: linear, quadratic and bi-quadratic                                 |
+|     .. image:: ../images/connectivity_tria.png                               |
+|              :align: center                                                 |
++------------------------------------------------------------------------------+
+| Quadrangle: linear, quadratic and bi-quadratic                               |
+|     .. image:: ../images/connectivity_quad.png                               |
+|              :align: center                                                 |
++------------------------------------------------------------------------------+
+| Polygon: linear and quadratic                                                |
+|     .. image:: ../images/connectivity_polygon.png                            |
+|              :align: center                                                 |
++------------------------------------------------------------------------------+
+| Tetrahedron: linear and quadratic                                            |
+|     .. image:: ../images/connectivity_tetra.png                              |
+|              :align: center                                                 |
++------------------------------------------------------------------------------+
+| Hexahedron: linear, quadratic and tri-quadratic                              |
+|      .. image:: ../images/connectivity_hexa.png                             |
+|              :align: center                                                 |
++------------------------------------------------------------------------------+
+| Pentahedron: linear and quadratic                                            |
+|      .. image:: ../images/connectivity_penta.png                            |
+|              :align: center                                                 |
++------------------------------------------------------------------------------+
+| Pyramid: linear and quadratic                                                |
+|      .. image:: ../images/connectivity_pyramid.png                          |
+|              :align: center                                                 |
++------------------------------------------------------------------------------+
+| Hexagonal prism                                                              |
+|      .. image:: ../images/connectivity_hex_prism.png                        |
+|              :align: center                                                 |
++------------------------------------------------------------------------------+
+| Polyhedron is defined by                                                     |
+|      * a sequence of nodes defining all facets                              |
+|      * a sequence of number of nodes per facet                              |
+|                                                                              |
+|      **Nodes**:                                                              |
+|      Node1_of_Facet1, Node2_of_Facet1, ..., NodeN_of_Facet1,                 |
+|      Node1_of_Facet2, Node2_of_Facet2, ..., NodeN_of_Facet2,                 |
+|      Node1_of_FacetM, Node2_of_FacetM, ..., NodeN_of_FacetM                  |
+|                                                                              |
+|      **Quantity** of nodes per facet:                                        |
+|      NbNodes_in_Facet1, NbNodes_in_Facet2, ..., NbNodes_in_FacetM            |
+|                                                                              |
+|      For example the polyhedron shown in the image below is defined by nodes |
+|      [ 1,2,3, 1,4,5,2, 2,5,6,3, 3,6,4,1, 4,7,9,5, 5,9,8,6, 6,8,7,4, 7,8,9 ]  |
+|      and quantities [ 3, 4, 4, 4, 4, 4, 4, 3 ]                               |
+|                                                                              |
+|      .. image:: ../images/connectivity_polyhedron.png                       |
+|              :align: center                                                 |
+|                                                                              |
+|      Order of nodes of a facet must assure outward direction of its normal.  |
++------------------------------------------------------------------------------+
+
diff --git a/doc/gui/input/constructing_meshes.rst b/doc/gui/input/constructing_meshes.rst
new file mode 100644 (file)
index 0000000..923ecf9
--- /dev/null
@@ -0,0 +1,408 @@
+.. _constructing_meshes_page:
+
+*******************
+Constructing meshes
+*******************
+
+To create a mesh on geometry, it is necessary to create a mesh object by choosing
+
+* a geometrical shape produced in the Geometry module (*main shape*);
+* *meshing parameters*, including 
+
+  * :ref:`meshing algorithms <basic_meshing_algos_page>` and
+  * :ref:`hypotheses <about_hypo_page>` specifying constraints to be taken into account by the chosen meshing algorithms.
+
+Then you can launch mesh generation by invoking :ref:`Compute <compute_anchor>` command.
+The generated mesh will be automatically shown in the Viewer. You can
+switch off automatic visualization or limit mesh size until which it is
+automatically shown in :ref:`mesh_preferences_page` (*Automatic update* entry).
+
+Read more about meshing parameters:
+
+.. toctree::
+       :maxdepth: 1
+
+       basic_meshing_algos.rst
+       about_hypo.rst
+
+Mesh generation on the geometry is performed in the bottom-up
+flow: nodes on vertices are created first, then edges are divided into
+segments using nodes on vertices; the nodes of segments are then
+used to mesh faces; then the nodes of faces are used to mesh
+solids. This automatically assures the conformity of the mesh.
+
+It is required to choose a meshing algorithm for every dimension of
+sub-shapes up to the highest dimension to be generated. Note
+that some algorithms generate elements of several dimensions, and
+others of only one. It is not necessary to define meshing
+parameters for all dimensions at once; you can start from 1D
+meshing parameters only, compute the 1D mesh, then define 2D meshing
+parameters and compute the 2D mesh (note that 1D mesh will not be
+re-computed).
+
+An algorithm of a certain dimension chosen at mesh creation is applied
+to discretize every sub-shape of this dimension. It is possible to
+specify a different algorithm or hypothesis to be applied to one or
+a group of sub-shapes by creating a :ref:`sub-mesh <constructing_submeshes_page>`.
+You can specify no algorithms at all at mesh object
+creation and specify the meshing parameters on sub-meshes only; then
+only the sub-shapes, for which an algorithm and a hypothesis (if any)
+have been defined will be discretized.
+
+Construction of a mesh on a geometry includes at least two (:ref:`mesh creation <create_mesh_anchor>` and :ref:`computing <compute_anchor>`) of the following steps:
+
+* :ref:`create_mesh_anchor`, where you can specify meshing parameters to apply to all sub-shapes of the main shape.
+* :ref:`Creation of sub-meshes <constructing_submeshes_page>`, (optional) where you can specify meshing parameters to apply to the selected sub-shapes.
+* :ref:`evaluate_anchor` (optional) can be used to know an approximate number of elements before their actual generation.
+* :ref:`preview_anchor` (optional) can be used to generate mesh of only lower dimension(s) in order to visually estimate it before full mesh generation, which can be much longer.
+* :ref:`submesh_order_anchor` (optional) can be useful if there are concurrent sub-meshes defined.
+* :ref:`compute_anchor` uses defined meshing parameters to generate mesh elements.
+* :ref:`edit_anchor` (optional) can be used to :ref:`modify <modifying_meshes_page>` the mesh of a lower dimension before :ref:`computing <compute_anchor>` elements of an upper dimension.
+
+
+.. _create_mesh_anchor:
+
+Creation of a mesh object
+#########################
+
+To construct a mesh:
+
+.. |img| image:: ../images/image32.png
+.. |sel| image:: ../images/image120.png
+.. |add| image:: ../images/image121.png
+.. |edt| image:: ../images/image122.png
+.. |cmp| image:: ../images/image28.png
+.. |prv| image:: ../images/mesh_precompute.png
+
+#. Select a geometrical object for meshing.
+#. In the **Mesh** menu select **Create Mesh** or click *"Create Mesh"* button |img| in the toolbar.
+
+   The following dialog box will appear: 
+
+       .. image:: ../images/createmesh-inv.png
+               :align: center
+  
+#. To filter off irrelevant meshing algorithms, you can select **Mesh Type** in the corresponding list from **Any, Hexahedral, Tetrahedral, Triangular** and **Quadrilateral** (there can be less items for the geometry of lower dimensions). Selection of a mesh type hides all meshing algorithms that cannot generate elements of this type.
+
+#. Apply :ref:`meshing algorithms <basic_meshing_algos_page>` and :ref:`hypotheses <about_hypo_page>` which will be used to compute this mesh.
+
+   "Create mesh" dialog box contains several tab pages titled **3D**, **2D**, **1D** and **0D**. The title of each page reflects the dimension of the sub-shapes the algorithms listed on this page affect and the maximal dimension of elements the algorithms generate. For example, **3D** page lists the algorithms that affect 3D sub-shapes (solids) and generate 3D mesh elements (tetrahedra, hexahedra etc.)
+
+   As soon as you have selected an algorithm, you can create a hypothesis (or select an already created one). A set of accessible hypotheses includes only the hypotheses that can be used by the selected algorithm.
+
+   .. note::
+      * Some page(s) can be disabled if the geometrical object does not include shapes (sub-shapes) of the corresponding dimension(s). For example, if the input object is a geometrical face, **3D** page is disabled.
+      * Some algorithms affect the geometry of several dimensions, i.e. 1D+2D or 1D+2D+3D. If such an algorithm is selected, the dialog pages related to the corresponding lower dimensions are disabled.
+      * **0D** page refers to 0D geometry (vertices) rather than to 0D elements. Mesh module does not provide algorithms that produce 0D elements. Currently **0D** page provides only one algorithm "Segments around vertex" that allows specifying the required size of mesh edges about the selected vertex (or vertices).
+
+   For example, you need to mesh a 3D object.
+
+   First, you can change a default name of your mesh in the **Name** box. Then check that the selected geometrical object indicated in **Geometry** field, is what you wish to mesh; if not, select the correct object in the Object Browser. Click "Select" button |sel| near **Geometry** field if the name of the object has not yet appeared in **Geometry** field.
+
+   Now you can define 3D Algorithm and 3D Hypotheses, which will be applied to discretize the solids of your geometrical object using 3D elements. Click the *"Add Hypothesis"* button |add| to create  and add a hypothesis.
+
+   Click the *"Plus"* button to enable adding more additional hypotheses.
+
+   Click the *"Edit Hypothesis"* button |edt| to change the values for the current hypothesis.
+
+   Most 2D and 3D algorithms can work without hypotheses using default meshing parameters. Some algorithms do not require any hypotheses. After selection of an algorithm "Hypothesis" field of the dialog can contain:
+    
+   * *\<Default\>* if the algorithm can work using default parameters.
+   * *\<None\>* if the algorithm requires a hypothesis defining its parameters.
+   * If the algorithm does not use hypotheses, this field is grayed.
+    
+   After selection of an algorithm **Add. Hypothesis** field can contain:
+    
+   * *\<None\>* if the algorithm can be tuned using an additional hypothesis.
+   * If the algorithm does not use additional hypotheses, this field is grayed.
+    
+
+   Proceed in the same way with 2D and 1D Algorithms and Hypotheses that will be used to mesh faces and edges of your geometry. (Note that any object has edges, even if their existence is not apparent, for example, a sphere has 4 edges). Note that the choice of hypotheses and lower dimension algorithms depends on the higher dimension algorithm.
+
+   If you wish you can select other algorithms and/or hypotheses for meshing some sub-shapes of your CAD model by :ref:`constructing_submeshes_page`.
+
+   Some algorithms generate mesh of several dimensions, while others produce mesh of only one dimension. In the latter case there must be one Algorithm and zero or several Hypotheses for each dimension of your object, otherwise you will not get any mesh at all. Of course, if you wish to mesh a face, which is a 2D object, you do not need to define a 3D Algorithm and Hypotheses.
+
+   In the **Object Browser** the structure of the new mesh is displayed as follows:
+
+       .. image:: ../images/image88.jpg
+               :align: center
+
+   It contains: 
+    
+   * a mesh name (*Mesh_mechanic*);
+   * a reference to the geometrical object on the basis of which the mesh has been constructed (*mechanic*); 
+   * **Applied hypotheses** folder containing the references to the hypotheses chosen at the construction of the mesh;
+   * **Applied algorithms** folder containing the references to the algorithms chosen at the construction of the mesh. 
+   * **SubMeshes on Face** folder containing the sub-meshes defined on geometrical faces. There also can be folders for sub-meshes on vertices, edges, wires, shells, solids and compounds.
+   * **Groups of Faces** folder containing the groups of mesh faces. There also can be folders for groups of nodes, edges, volumes 0D elements and balls.
+
+
+   There is an alternative way to assign Algorithms and Hypotheses by clicking **Assign a set of hypotheses** button and selecting among pre-defined sets of algorithms and hypotheses. In addition to the built-in sets of hypotheses, it is possible to create custom sets by editing CustomMeshers.xml file located in the home directory. CustomMeshers.xml file must describe sets of hypotheses in the same way as ${SMESH_ROOT_DIR}/share/salome/resources/smesh/StdMeshers.xml file does (sets of hypotheses are enclosed between \<hypotheses-set-group\> tags). For example:
+       ::
+
+               <?xml version='1.0' encoding='us-ascii'?>
+               <!DOCTYPE meshers PUBLIC "" "desktop.dtd">
+               <meshers>
+               <hypotheses-set-group>
+                       <hypotheses-set name="My favorite hypotheses"
+                               hypos="AutomaticLength"
+                               algos="CompositeSegment_1D, Quadrangle_2D, GHS3D_3D"/>
+               </hypotheses-set-group>
+               </meshers>
+
+   If the file contents are incorrect, there can be an error at activation of Mesh module: *"fatal parsing error: error triggered by consumer in line ..."*
+
+       .. image:: ../images/hypo_sets.png
+               :align: center
+
+   .. centered::
+      List of sets of hypotheses. Tag *[custom]* is automatically added to the sets defined by the user.
+
+   .. note::
+      * The list of sets of hypotheses can be shorter than in the above image depending on the geometry dimension.
+  
+
+Consider trying a sample script for construction of a mesh from our :ref:`TUI Scripts <tui_creating_meshes_page>` section.
+
+.. _evaluate_anchor:
+
+Evaluating mesh size
+####################
+
+After the mesh object is created and all hypotheses are assigned and before :ref:`Compute <compute_anchor>` operation, it is possible to calculate the eventual mesh size. For this, select the mesh in the **Object Browser** and from the **Mesh** menu select **Evaluate**.
+The result of evaluation will be displayed in the following information box: 
+
+       .. image:: ../images/mesh_evaluation_succeed.png
+               :align: center
+
+.. _preview_anchor:
+
+Previewing the mesh
+###################
+
+Before :ref:`the mesh computation <compute_anchor>`, it is also possible to see the mesh preview. This operation allows to incrementally compute the mesh, dimension by dimension, and to discard an unsatisfactory mesh.
+
+For this, select the mesh in the Object Browser. From the **Mesh** menu select **Preview** or click "Preview" button |prv| in the toolbar or activate "Preview" item from the pop-up menu.
+
+Select **1D mesh** or **2D mesh** preview mode in the Preview dialog. 
+
+.. image:: ../images/preview_mesh_1D.png 
+       :align: center
+
+.. centered::
+       1D mesh preview shows nodes computed on geometry edges
+
+
+.. image:: ../images/preview_mesh_2D.png 
+       :align: center
+
+.. centered::
+       2D mesh preview shows edge mesh elements, computed on geometry faces
+
+
+**Compute** button computes the whole mesh.
+
+When the Preview dialog is closed, the question about the storage of temporarily created mesh elements appears:
+
+.. image:: ../images/preview_tmp_data.png
+       :align: center
+
+These elements can be kept in the mesh.
+
+
+.. _submesh_order_anchor:
+
+Changing sub-mesh priority
+##########################
+
+If the mesh contains concurrent :ref:`sub-meshes <constructing_submeshes_page>`, it is possible to change their :ref:`default priority <submesh_priority>`. Changing priority works in two ways:
+
+* For sub-meshes with assigned algorithms of same dimension generating mesh of *several dimensions*, it sets the order in which the sub-meshes are computed.
+* For the rest sub-meshes, it sets the order in which the sub-meshes are checked when looking for  meshing parameters to apply to a sub-shape. Examples below present this way. To impose the order in which sub-meshes with uni-dimensional algorithms are computed, invoke **Compute Sub-mesh** command on sub-meshes in a desired order.
+
+
+*To change sub-mesh priority:*
+
+Choose **Change sub-mesh priority** from the **Mesh** menu or a pop-up menu. The opened dialog shows a list of sub-meshes in the order of their priority. 
+
+There is an example of sub-mesh order modifications taking a Mesh created on a Box shape. The main Mesh object:
+
+* *1D* **Wire discretisation** with **Number of Segments** = 20
+* *2D* **Triangle** with Hypothesis **Max Element Area**
+  
+
+The first sub-mesh **Submesh_1** created on **Face_1** is:
+
+* *1D* **Wire discretisation** with **Number of Segments** = 4
+* *2D* **Triangle** with Hypothesis **MaxElementArea** = 1200
+
+The second sub-mesh **Submesh_2** created on **Face_2** is:
+
+* *1D* **Wire discretisation** with **Number of Segments** = 8
+* *2D* **Triangle** with Hypothesis **MaxElementArea** = 1200
+
+
+And the last sub-mesh **Submesh_3** created on **Face_3** is:
+
+* *1D* **Wire discretisation** with **Number of Segments** = 12
+* *2D* **Triangle** with Hypothesis **MaxElementArea** = 1200
+
+
+The sub-meshes become concurrent if they share sub-shapes that can be meshed with different algorithms (or different hypotheses). In the example, we have three sub-meshes with concurrent algorithms, because they have different hypotheses.
+
+The first mesh computation is made with:
+
+.. image:: ../images/mesh_order_123.png
+       :align: center
+
+.. centered::
+       Mesh order SubMesh_1, SubMesh_2, SubMesh_3
+
+
+.. image:: ../images/mesh_order_123_res.png
+       :align: center
+
+.. centered::
+       Result mesh with order SubMesh_1, SubMesh_2, SubMesh_3
+
+The next mesh computation is made with:
+
+.. image:: ../images/mesh_order_213.png
+       :align: center
+
+.. centered::
+       Mesh order SubMesh_2, SubMesh_1, SubMesh_3
+
+.. image:: ../images/mesh_order_213_res.png
+       :align: center
+
+.. centered::
+       Result mesh with order SubMesh_2, SubMesh_1, SubMesh_3
+
+And the last mesh computation is made with:
+
+.. image:: ../images/mesh_order_321.png
+       :align: center
+
+.. centered::
+       Mesh order SubMesh_3, SubMesh_2, SubMesh_1
+       
+
+.. image:: ../images/mesh_order_321_res.png
+       :align: center
+
+.. centered::
+       Result mesh with order SubMesh_3, SubMesh_2, SubMesh_1
+
+As we can see, each mesh computation has a different number of result
+elements and a different mesh discretization on the shared edges (the edges 
+that are shared between **Face_1**, **Face_2** and **Face_3**)
+
+Additionally, sub-mesh priority (the order of applied algorithms) can
+be modified not only in a separate dialog box, but also in
+the **Preview**. This helps to preview different mesh results,
+modifying the order of sub-meshes. 
+
+.. image:: ../images/mesh_order_preview.png
+       :align: center
+
+.. centered::
+       Preview with sub-mesh priority list box
+
+If there are no concurrent sub-meshes under the Mesh object, the user
+will see the following information.
+
+.. image:: ../images/mesh_order_no_concurrent.png
+       :align: center
+
+.. centered::
+       No concurrent submeshes detected
+
+
+.. _compute_anchor:
+
+Computing the mesh
+##################
+
+It is equally possible to skip  :ref:`Evaluation <evaluate_anchor>`
+and :ref:`Preview <preview_anchor>` and to **Compute** the mesh after
+the hypotheses are assigned. For this, select your mesh in
+the Object Browser. From the **Mesh** menu or the context menu
+select **Compute** or click *"Compute"* button |cmp| of the toolbar.
+
+After the mesh computation finishes, the Mesh Computation information
+box appears. If you close this box and click "Compute" button again,
+without previously changing meshing parameters, the mesh will NOT be
+re-computed and the Mesh Computation information box will be shown
+with the same contents. (To fully re-compute the mesh, invoke 
+:ref:`clear_mesh_anchor` command before). 
+
+.. _meshing_result_anchor:
+
+If the mesh computation has been a success, the box shows information on the number of entities of different types in the mesh.
+
+.. image:: ../images/meshcomputationsucceed.png
+       :align: center
+
+.. _meshing_failed_anchor:
+
+If the mesh computation has failed, the information about the cause of the failure is provided in **Errors** table.
+
+.. image:: ../images/meshcomputationfail.png
+       :align: center
+
+After you select an error in **Errors** table, **Show Sub-shape** button allows
+visualizing in magenta the geometrical entity meshing of which failed
+(Name of this entity or its ID and type is shown in *Sub-shape* column).
+
+.. image:: ../images/failed_computation.png 
+       :align: center
+
+.. centered::
+       3D algorithm failed to compute mesh on a box shown using **Show Sub-shape** button
+
+**Publish Sub-shape** button publishes the sub-shape, whose meshing
+has failed, in the Geometry component as a child of the main shape, which
+allows analyzing the problematic geometry and creating a sub-mesh on it in
+order to locally tune the hypotheses.
+
+If the failure is caused by an invalid input mesh and the algorithm has
+found which mesh entities are bad, **Show bad Mesh** 
+button appears in the dialog. Clicked, it shows the bad mesh entities in
+the Viewer in magenta. Sometimes the shown mesh entities are too small
+or/and hidden by other mesh elements. They can be seen after
+switching the mesh to Wireframe visualization mode or switching off
+the visualization of faces and volumes (if any).
+
+**Bad Mesh to Group** button creates groups of bad mesh entities to facilitate their analysis.
+
+.. image:: ../images/show_bad_mesh.png
+       :align: center
+
+Edges bounding a hole in the surface are shown in magenta using **Show bad Mesh** button
+
+.. note::
+       Mesh Computation Information box does not appear if you set :ref:`Mesh computation/Show a computation result notification <show_comp_result_pref>` preference to the "Never" value. This option gives the possibility to control mesh computation reporting. There are the following possibilities: always show the information box, show only if an error occurs or never. By default, the information box is always shown after mesh computation operation.
+
+.. _edit_anchor:
+
+Editing the mesh
+################
+
+It is possible to :ref:`edit the mesh <modifying_meshes_page>` of a 
+lower dimension before generation of the mesh of a higher dimension.
+
+For example you can generate a 2D mesh, modify it using e.g. :ref:`Pattern mapping <pattern_mapping_page>`, and then generate a 3D mesh basing on the modified 2D mesh. The workflow is as follows:
+
+* Define 1D and 2D meshing algorithms.
+* Compute the mesh. 2D mesh is generated.
+* Apply :ref:`Pattern mapping <pattern_mapping_page>`.
+* Define 3D meshing algorithms without modifying 1D and 2D algorithms and hypotheses.
+* Compute the mesh. 3D mesh is generated basing on a modified 2D mesh.
+
+.. note::
+   Nodes and elements added :ref:`manually <adding_nodes_and_elements_page>` cannot be used in this workflow because the manually created entities are not attached to any geometry and thus (usually) cannot be found by the mesher paving a geometry.
+
+**See Also** a sample TUI Script demonstrates the possibility of :ref:`tui_editing_while_meshing`.
+
diff --git a/doc/gui/input/constructing_submeshes.rst b/doc/gui/input/constructing_submeshes.rst
new file mode 100644 (file)
index 0000000..a2a6dd2
--- /dev/null
@@ -0,0 +1,147 @@
+.. _constructing_submeshes_page: 
+
+***********************
+Constructing sub-meshes
+***********************
+
+.. contents:: `Table of contents`
+
+What the sub-mesh is for
+########################
+
+By purpose, the sub-mesh is an object used to assign to a sub-shape
+different meshing parameters than those assigned to the main shape.
+
+Structurally, the sub-mesh is a mesh on a certain sub-shape, or a group of
+sub-shapes, possibly generated using different meshing algorithms
+and/or hypotheses than those used to generate the mesh on other
+sub-shapes. Elements generated on a sub-shape can be retrieved without
+explicit creation of a sub-mesh by creating a *Group on Geometry* using
+:ref:`Create Groups from Geometry <create_groups_from_geometry_page>` dialog.
+
+Creation of a sub-mesh allows to control individually meshing of a
+certain sub-shape, thus to get a locally coarser or finer mesh, to get
+elements of different types in the same mesh, etc.
+
+A sub-mesh can be meshed individually. To achieve this, select a
+sub-mesh and either invoke **Compute Sub-mesh** vai the contextual
+menu in the Object Browser or invoke **Mesh > Compute** menu.
+
+.. _submesh_shape_section: 
+
+How to get a sub-shape for sub-mesh construction
+################################################
+
+A sub-shape to create a sub-mesh on should be retrieved from the main shape
+in one of the following ways: 
+
+* In Geometry module, via **New Entity > Explode** menu.
+* In Geometry module, by creation of a group (**New Entity > Group > Create Group** menu). 
+* In Mesh module, by :ref:`selecting a mesh element <subshape_by_mesh_elem>` generated on a sub-shape of interest. This way is accessible if the mesh is already computed. 
+* In Mesh module, by clicking **Publish Sub-shape** button in a dialog showing :ref:`meshing errors <meshing_failed_anchor>`. 
+
+
+.. _submesh_priority: 
+
+How hypotheses are selected among sub-meshes
+############################################
+
+Internally, definition of meshing parameters to apply for
+discretization of a certain sub-shape, for example an edge of a
+compound of solids, starts from searching an algorithm, 1D as for the
+edge. The following sub-shapes are sequentially checked for presence
+of a sub-mesh where 1D algorithm is assigned:
+
+* the **edge** itself
+* **groups of edges** containing the edge, if any
+* **wires** sharing the edge
+* **faces** sharing the edge
+* **groups of faces** sharing the edge, if any
+* **shells** sharing the edge
+* **solids** sharing the edge
+* **groups of solids** sharing the edge, if any
+* the **main shape**
+
+(This sequence of sub-shapes defines the **priority** of sub-meshes. Thus more
+local, i.e. assigned to sub-shape of lower dimension, algorithms and
+hypotheses have higher priority during the search of hypotheses to
+apply.)
+
+As soon as a 1D algorithm is found, the search stops and the same
+sequence of sub-shapes is checked to find the main and additional 1D
+hypotheses, which can be taken into account by the found 1D algorithm. 
+
+The multi-dimensional algorithms have a higher priority than
+uni-dimensional ones if they are assigned to sub-meshes of the
+same priority.
+
+If meshing parameters are defined on sub-meshes of the same priority,
+for example, different 1D hypotheses are assigned to two faces sharing
+an edge, the hypothesis assigned to a sub-shape with a lower ID will
+be used for meshing. You can :ref:`change <submesh_order_anchor>` mutual
+priority of such concurrent sub-meshes. 
+
+.. _submesh_definition: 
+
+How to construct a sub-mesh
+###########################
+
+Construction of a sub-mesh consists of:
+
+* Selecting a mesh which will encapsulate the sub-mesh.
+* Selecting a sub-shape for meshing.
+* Selecting a :ref:`meshing algorithm <basic_meshing_algos_page>` which will be used for discretization of this sub-shape.
+* Creating or selecting one or several :ref:`hypotheses <about_hypo_page>`.
+
+
+*To construct a sub-mesh:*
+
+.. |img| image:: ../images/image33.gif
+
+From the **Mesh** menu select **Create Sub-mesh** or click *"Create Sum-mesh"* button |img| in the toolbar.
+
+The following dialog box will appear:
+
+       .. image:: ../images/createmesh-inv2.png
+               :align: center
+
+It allows to define the **Name**, the parent **Mesh** and the **Geometry** (e.g. a face if the parent mesh has been built on box) of the sub-mesh. You can define meshing algorithms and hypotheses in the same way as in :ref:`Create mesh <constructing_meshes_page>` dialog. 
+
+Later you can change the applied hypotheses or their parameters in :ref:`Edit mesh/sub-mesh <editing_meshes_page>` dialog. Mesh entities generated using changed hypotheses are automatically removed.
+
+.. _subshape_by_mesh_elem:
+
+If the parent mesh is already computed, then you can define the **Geometry** by picking mesh elements computed on a sub-shape of interest in the 3D Viewer, i.e. you do not have to extract this sub-shape in Geometry module beforehand. To start element selection, press *Selection* button to the right of **Geometry** label. If this button is already down, then click it to release and then click it again. The following pop-up menu allowing to choose a way of geometry definition will appear.
+
+.. image:: ../images/choose_geom_selection_way.png
+       :align: center
+
+**Direct geometry selection** enables selecting the sub-shape in the Object Browser.
+**Find geometry by mesh element selection** activates the following dialog.
+
+.. image:: ../images/find_geom_by_mesh_elem.png
+       :align: center
+
+In this dialog, **Element Type** defines a kind of element to pick in the Viewer. Instead of picking an element in the Viewer, you can type its ID in **Element ID** field. **Geometry name** field allows defining a name of the sub-shape, with which the sub-shape will appear in the Object Browser (if not yet there).
+
+
+.. _submesh_tree:
+
+Sub-mesh in the Object Browser
+##############################
+
+In the Object Browser the structure of the new sub-mesh will be displayed as follows:
+
+       .. image:: ../images/image10.jpg
+               :align: center
+
+It contains:
+
+* a sub-mesh name (*SubMeshFace1*)
+* a reference to the geometrical object on the basis of which the sub-mesh has been constructed (*Cylindrical Face_1*);
+* *Applied hypotheses* folder containing references to hypotheses assigned to the sub-mesh;
+* *Applied algorithms* folder containing references to algorithms assigned to the sub-mesh.
+
+
+**See Also** a sample TUI Script of a :ref:`tui_construction_submesh` operation.
+
diff --git a/doc/gui/input/convert_to_from_quadratic_mesh.rst b/doc/gui/input/convert_to_from_quadratic_mesh.rst
new file mode 100644 (file)
index 0000000..cd2a3e8
--- /dev/null
@@ -0,0 +1,50 @@
+.. _convert_to_from_quadratic_mesh_page:
+
+****************************************
+Convert to/from Quadratic Mesh
+****************************************
+
+This functionality allows transforming linear meshes (or sub-meshes) to quadratic and vice versa.
+
+.. Note::
+       that conversion of a sub-mesh most probably will produce a non-conformal mesh. Elements on the boundary between quadratic and linear sub-meshes become (or remain) quadratic.
+
+See :ref:`adding_quadratic_elements_page` for more information about quadratic meshes.
+
+*To produce a conversion:*
+
+.. |img| image:: ../images/image154.png
+
+#. Select a mesh or a sub-mesh in the Object Browser or in the Viewer.
+#. From the Modification menu or from the contextual menu in the Object Browser choose **Convert to/from Quadratic Mesh** item, or click *"Convert to/from quadratic"* button |img| in the toolbar.
+
+   The following dialog box will appear:
+
+       .. image:: ../images/convert.png
+               :align: center
+
+#. In this dialog box specify:
+
+   * If it is necessary to convert a linear mesh to quadratic or a quadratic mesh to linear. **Convert to bi-quadratic** creates some types of quadratic elements with additional central nodes: TRIA7, QUAD9 and HEXA27 elements instead of TRIA6, QUAD8, and HEXA20 elements respectively.
+   * If it is necessary to place **medium nodes** of the quadratic mesh **on the geometry** (meshed shape). This option is relevant for conversion to quadratic provided that the mesh is based on a geometry (not imported from file).
+
+               .. image:: ../images/image156.gif
+                       :align: center
+
+               .. centered::
+                       Linear mesh (coarse mesh on a torus)
+
+
+               .. image:: ../images/image155.gif
+                       :align: center
+
+               .. centered::
+                       Quadratic mesh
+
+
+#. Click the **Apply** or **Apply and Close** button.
+
+
+**See Also** a sample TUI Script of a :ref:`tui_quadratic` operation.
+
+
diff --git a/doc/gui/input/copy_mesh.rst b/doc/gui/input/copy_mesh.rst
new file mode 100644 (file)
index 0000000..1d1b975
--- /dev/null
@@ -0,0 +1,53 @@
+.. _copy_mesh_page:
+
+*********
+Copy Mesh
+*********
+
+A mesh can be created by copying a part of or the whole other mesh. There are two modes of the operation:
+
+* copy mesh elements only;
+* copy mesh definition to another geometry. This mode can be used only if the source mesh is based on geometry. It is supposed that the new geometry is a modified geometry of the source mesh.
+
+*To make a copy of a mesh:*
+
+.. |img| image:: ../images/copy_mesh_icon.png
+
+From the contextual menu in the Object Browser of from the **Mesh** menu select **Copy Mesh** or click *"Copy Mesh"* button |img| in the toolbar.
+
+The following dialog box will appear:
+
+.. image:: ../images/copy_mesh_dlg.png
+       :align: center
+
+
+In the dialog:
+
+* select the mode of the operation.
+* specify the part of mesh to copy:
+
+  * **Select whole mesh, sub-mesh or group** by mouse activating this checkbox; or
+  * choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
+  * input the **Source Element IDs** directly in this field. The selected elements will be highlighted in the viewer; or
+  * apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`selection_filter_library_page` page.
+
+* specify the **New Mesh Name**;
+* select the **New Geometry**;
+* specify the conditions of copying:
+
+  * activate **Generate groups** check-box to copy the groups of the source mesh to the newly created mesh. In the mode of copying to new geometry, standalone groups are copied only if **Copy Mesh Elements** is activated.
+  * activate **Reuse hypotheses** check-box to use hypotheses applied to the source mesh in the new mesh. Hypotheses having parameters defined as sub-shapes will be copied independently of this check-box state.
+  * activate **Copy Mesh Element** to copy mesh elements of sub-shapes that are not modified.
+
+* Click **Apply** or **Apply and Close** button to confirm the operation.
+
+---------------------------------------------------
+Limitations of copying the mesh to the new geometry
+---------------------------------------------------
+
+It can happen that a sub-shape used to define a sub-mesh, group or hypotheses is not found in the new geometry. In this case a new object depending on the not found sub-shape is marked with red color in the Object Browser in order to allow identifying such objects and to fix them, either by modifying their definition or by removing. If a depending object is a group on geometry, a standalone group is created instead. You can't transform it to a group on geometry, it can only be removed and re-created anew.
+
+Empty standalone groups are not constructed.
+
+**See Also** a sample script of :ref:`tui_copy_mesh`.
+
diff --git a/doc/gui/input/create_dual_mesh.rst b/doc/gui/input/create_dual_mesh.rst
new file mode 100644 (file)
index 0000000..2a540a1
--- /dev/null
@@ -0,0 +1,42 @@
+.. _create_dual_mesh_page:
+
+****************
+Create Dual Mesh
+****************
+
+We can create the dual of a Tetrahedron Mesh which will be a polyhedron mesh.
+The Mesh is created using MEDCoupling computeDualMesh function.
+
+*To create a dual mesh:*
+
+.. |img| image:: ../images/create_dual_mesh_icon.png
+
+From the contextual menu in the Object Browser of from the **Mesh** menu select
+**Create Dual Mesh** or click *"Create Dual Mesh"* button |img| in the toolbar.
+
+The following dialog box will appear:
+
+.. image:: ../images/create_dual_mesh_dlg.png
+       :align: center
+
+In the dialog:
+
+* specify the mesh for which to create the dual mesh:
+  * **Select whole mesh** from the study tree. If a mesh was selected before calling function it will be preselected.
+  * If the mesh is not made of only Tetrahedrons a error message will be displayed and you won't be allowed to go through.
+* specify the **New Mesh Name**;
+* activate **Project boundary elements on shape** for the boundary points of the
+  dual mesh to be projected on their associated shape.
+
+* Click **Apply** or **Apply and Close** button to confirm the operation.
+
+----------------------------
+Limitations of the dual mesh
+----------------------------
+
+Only 2d groups will be transferred to the dual mesh.
+
+If you have convex shape the projection might not improve the mesh.
+
+
+**See Also** a sample script of :ref:`tui_create_dual_mesh`.
diff --git a/doc/gui/input/create_groups_from_geometry.rst b/doc/gui/input/create_groups_from_geometry.rst
new file mode 100644 (file)
index 0000000..70f3a58
--- /dev/null
@@ -0,0 +1,20 @@
+.. _create_groups_from_geometry_page:
+
+***************************
+Create Groups from Geometry
+***************************
+
+This operation allows creating groups on geometry on all selected shapes. Only the main shape of the mesh and its sub-shapes can be selected.
+
+The type of each new group is defined automatically by the nature of the **Geometry**.
+The group names will be the same as the names of geometrical objects.
+
+To use this operation, select in the **Mesh** menu or in the contextual menu in the Object browser **Create Groups from Geometry** item.
+
+.. image:: ../images/create_groups_from_geometry.png
+       :align: center
+
+In this dialog **Elements** group contains a list of shapes, on which  groups of elements will be created; **Nodes** group contains a list of shapes, on which groups of nodes will be created.
+
+
+**See Also** a sample TUI Script of a  :ref:`tui_create_group_on_geometry` operation.
diff --git a/doc/gui/input/creating_groups.rst b/doc/gui/input/creating_groups.rst
new file mode 100644 (file)
index 0000000..a66df15
--- /dev/null
@@ -0,0 +1,113 @@
+.. _creating_groups_page:
+
+***************
+Creating groups
+***************
+
+In MESH you can create a group of elements of a certain type. The main way to create a group, is to
+select in the **Mesh** menu **Create Group** item (also available in the context menu of the mesh).
+To create a group you should define the following:
+
+* **Mesh** - the mesh whose elements will form your group. You can select your mesh in the Object Browser or in the 3D viewer.
+* **Elements Type** - set of radio buttons allows to select the type of elements which will form your group:
+       * **Nodes**
+       * **0D Element**
+       * **Ball**
+       * **Edges**
+       * **Faces**
+       * **Volumes**
+* **Name** field allows to enter the name of your new group.
+* **Color** - allows to assign to the group a certain color. The chosen color is used to display the elements of the group. Activation of **Auto Color** item in mesh context menu switches on a random choice of a color for a new group.
+
+Mesh module distinguishes between the three Group types:
+**Standalone Group**, **Group on Geometry** and **Group on Filter**.
+
+
+.. _standalone_group:
+
+"Standalone Group"
+##################
+
+**Standalone Group** contains a list of mesh elements, which you can define in
+the following ways:
+
+* By adding all entities of the chosen type existing in the mesh. For this, turn on the **Select All** check-box. In this mode all controls, which allow selecting the entities, are disabled.
+* By choosing entities manually with the mouse in the 3D Viewer. For this, turn on the **Enable manual edition** check box. You can click on an element in the 3D viewer and it will be highlighted. After that click the **Add** button and the ID of this element will be added to the list. The **Set filter** button allows to define the filter for selection of the elements for your group. See more about filters on the :ref:`selection_filter_library_page` page.
+* By adding entities from either a sub-mesh or another group. For this, turn on the **Enable manual edition** check box. **Select from** fields group allows to select a sub-mesh or a group of the appropriate type and to **Add** their elements to the group.
+
+In the **manual edition** mode you can
+
+* click the **Remove** button to remove the selected items from the list.
+* click the **Sort List** button to sort the list of IDs of mesh elements.
+
+.. image:: ../images/creategroup.png
+       :align: center
+
+For example, to create a new group containing all faces of an existing group and some other faces selected in the viewer:
+
+* Select the **Face** type of entities and input the name of the new group.
+* Check the **Group** checkbox in **Select From** group.
+* Select the existing group of faces in the object browser or in the viewer.
+* Click **Add** in **Content** group. **Id Elements** list will be filled with IDs of faces belonging to the selected group.
+* Select other faces in the viewer.
+* Click **Add** in **Content** group.
+* Click **Apply** button to create the new group.
+
+
+.. note:: The new group does not have references to the source group. It contains only the list of face IDs. So if the source group is changed, the new one is not updated accordingly.
+
+.. image:: ../images/image130.gif
+       :align: center
+
+.. centered::
+       Brown cells belong to a group defined manually
+
+**See Also** a sample TUI Script of a :ref:`tui_create_standalone_group` operation.
+
+
+.. _group_on_geom:
+
+"Group on Geometry"
+###################
+
+.. |sel| image:: ../images/image120.png
+
+To create a group on geometry check **Group on geometry** in the **Group** **type** field. The group on geometry contains the elements of a certain type generated on the selected geometrical object. Group contents are dynamically updated if the mesh is modified. The group on geometry can be created only if the mesh is based on geometry.
+
+To define a group, click the *Selection* button |sel| and choose
+
+* *Direct geometry selection* to select a shape in the Object Browser or in the Viewer;
+* *Find geometry by mesh element selection* to activate a dialog which retrieves a shape by the selected element generated on this shape.
+
+.. note::
+       This choice is available only if the mesh elements are already generated.
+
+.. image:: ../images/a-creategroup.png
+       :align: center
+
+After confirmation of the operation a new group of mesh elements will be created.
+
+.. image:: ../images/image132.gif
+       :align: center
+
+.. centered::
+   Cells belonging to a certain geometrical face are selected in green
+
+**See Also** a sample TUI Script of a  :ref:`tui_create_group_on_geometry` operation.
+
+
+.. _group_on_filter:
+
+"Group on Filter"
+#################
+
+To create a group on filter check **Group on filter** in the **Group type** field.
+The group on filter contains the elements of a certain type satisfying the defined filter.
+Group contents are dynamically updated if the mesh is modified.
+
+To define a group, click the **Set filter** button and define criteria of the filter in the opened dialog. After the operation is confirmed, a new group of mesh elements will be created. See more about filters on the :ref:`selection_filter_library_page` page.
+
+       .. image:: ../images/creategroup_on_filter.png
+               :align: center
+
+**See Also** a sample TUI Script of a :ref:`tui_create_group_on_filter` operation.
diff --git a/doc/gui/input/cut_mesh_by_plane.rst b/doc/gui/input/cut_mesh_by_plane.rst
new file mode 100644 (file)
index 0000000..d0a482e
--- /dev/null
@@ -0,0 +1,58 @@
+.. _cut_mesh_by_plane_page:
+
+*********************************
+Cut a tetrahedron mesh by a plane
+*********************************
+
+MeshCut works only with MED files and produces MED files, and is a standalone program. It can be used either directly from a command shell outside SALOME, or with a GUI interface in SMESH, provided in a python plugin that needs to be installed in your SALOME application.
+
+MeshCut allows to cut a mesh constituted of linear tetrahedrons by a plane.
+The tetrahedrons intersected by the plane are cut and replaced by elements of various types, (tetrahedron, pyramid, pentahedron).
+
+
+.. _meshcut_standalone:
+
+Using MeshCut as a standalone program, outside SALOME
+#####################################################
+
+MeshCut is a standalone program, reading and producing med files.                
+
+Syntax::
+
+       MeshCut input.med output.med resuMeshName aboveGroup belowGroup nx ny nz px py pz T
+
+where:
+
+* **input.med** = name of the original mesh file in med format
+* **output.med** = name of the result mesh file in med format 
+* **resuMeshName** = name of the result mesh                    
+* **aboveGroup** = name of the group of volumes above the cut plane 
+* **belowGroups** = name of the group of volumes below the cut plane 
+* **nx ny nz** = vector normal to the cut plane                       
+* **px py pz** = a point of the cut plane                              
+* **T** = 0 < T < 1 : vertices of a tetrahedron are considered as belonging to the cut plane if their distance from the plane is inferior to L*T, where L is the mean edge size of the tetrahedron   
+
+
+.. _meshcut_plugin:
+
+Using MeshCut inside SALOME
+###########################
+
+When the MeshCut plugin is installed, it can be found in the Mesh menu, sub-menu SMESH_plugins.
+If the plugin is not installed, the file meshcut_plugin.py is in SMESH installation in  subdirectory 
+*bin/salome/meshcut_plugin.py*.
+
+If there are already plugins defined in a smesh_plugins.py file, this file should be added at the end. If not, copied as 
+*${HOME}/Plugins/smesh_plugins.py* or *${APPLI}/Plugins/smesh_plugins.py* or in *${PLUGINPATH}* directory.
+From the Mesh menu, sub-menu SMESH_plugins, choose **"MeshCut"** item
+The following dialog box will appear:
+
+.. image:: ../images/meshcut_plugin.png 
+       :align: center
+
+.. centered::
+       MeshCut Plugin dialog box
+
+See above for the meaning of the parameters. 
+
diff --git a/doc/gui/input/cutting_quadrangles.rst b/doc/gui/input/cutting_quadrangles.rst
new file mode 100644 (file)
index 0000000..21c3311
--- /dev/null
@@ -0,0 +1,57 @@
+.. _cutting_quadrangles_page:
+
+*******************
+Cutting quadrangles
+*******************
+
+This operation allows cutting one or several quadrangle elements into two or four triangles.
+
+*To cut quadrangles:*
+
+.. |img| image:: ../images/image82.png
+
+#. Select a mesh (and display it in the 3D Viewer if you are going to pick elements by mouse).
+#. In the **Modification** menu select the **Cutting of quadrangles** item or click *"Cutting of quadrangles"* button |img| in the toolbar.
+
+   The following dialog box will appear:
+
+   .. image:: ../images/a-cuttingofquadrangles.png
+      :align: center
+
+
+   * The main list contains the list of quadrangles selected for cutting. You can click on a quadrangle in the 3D viewer and it will be highlighted (lock Shift keyboard button to select several quadrangles): 
+       * Click **Add** button and the ID of this quadrangle will be added to the list. 
+       * To remove a selected element or elements from the list click **Remove** button. 
+       * **Sort list** button allows sorting the list of IDs. 
+       * **Filter** button allows applying a definite :ref:`filter <filtering_elements>` to the selection of quadrangles.
+   * **Apply to all** check box allows cutting all quadrangles of the selected mesh.
+   * **Preview** provides a preview of cutting in the viewer. It is disabled for **Cut into 4 triangles** as this cutting way implies no ambiguity.
+   * **Criterion** defines the way of cutting:
+       * **Cut into 4 triangles** allows cutting a quadrangle into four triangles by inserting a new node at the center of the quadrangle. The other options allow cutting a quadrangle into two triangles by connecting the nodes of a diagonal.
+       * **Use diagonal 1-3** and **Use diagonal 2-4** allow specifying the opposite corners, which will be connected to form two new triangles.
+       * **Use numeric functor** allows selecting in the field below a quality metric, which will be optimized when choosing a diagonal for cutting a quadrangle: 
+               * **Minimum diagonal** cuts by the shortest diagonal.
+               * **Aspect Ratio** cuts by the diagonal splitting the quadrangle into triangles with :ref:`Aspect Ratio <aspect_ratio_page>` closer to 1
+               * **Minimum Angle** cuts by the diagonal splitting the quadrangle into triangles with :ref:`Minimum Angle <minimum_angle_page>` closer to 60 degrees.
+               * **Skew** cuts by the diagonal splitting the quadrangle into triangles with :ref:`Skew <skew_page>` closer to 0.0 degrees.
+   * **Select from** allows choosing a sub-mesh or an existing group, whose quadrangle elements then can be added to the main list.
+
+#. Click the **Apply** or **Apply and Close** button to confirm the operation.
+
+.. image:: ../images/image52.jpg 
+       :align: center
+
+.. centered::
+       The chosen quadrangular element
+
+|
+
+.. image:: ../images/image51.jpg 
+       :align: center
+
+.. centered::
+       Two resulting triangular elements
+
+**See Also** a sample TUI Script of a :ref:`tui_cutting_quadrangles` operation.  
+
+
diff --git a/doc/gui/input/define_mesh_by_script.rst b/doc/gui/input/define_mesh_by_script.rst
new file mode 100644 (file)
index 0000000..43d7f89
--- /dev/null
@@ -0,0 +1,28 @@
+.. _use_existing_page:
+
+**************************************
+Use Edges/Faces to be Created Manually
+**************************************
+
+The algorithms **Use Edges to be Created Manually** and **Use Faces to be Created Manually** allow  creating a 1D or a 2D mesh in a python script (using *AddNode, AddEdge* and *AddFace* commands) and then using such sub-meshes in the construction of a 2D or a 3D mesh. 
+
+For example, you want to use standard algorithms to generate 1D and 3D
+meshes and to create 2D mesh by your python code. For this, you
+
+#. create a mesh object, assign a 1D algorithm,
+#. invoke **Compute** command, which computes a 1D mesh,
+#. assign **Use Faces to be Created Manually** and a 3D algorithm,
+#. run your python code, which creates a 2D mesh,
+#. invoke **Compute** command, which computes a 3D mesh.
+
+  .. warning::
+     * **Use Edges to be Created Manually** and **Use Faces to be Created Manually** algorithms should be assigned *before* mesh generation by the Python code.
+     * Nodes and elements created in your script must be assigned to geometry entities by calling *SetMeshElementOnShape*, *SetNodeOnVertex*, *SetNodeOnEdge* etc. in order to be used by an algorithm of upper dimension.
+
+Consider trying a sample script demonstrating the usage of :ref:`Use Faces to be Created Manually <tui_use_existing_faces>` algorithm for construction of a 2D mesh using Python commands.
+
+.. figure:: ../images/use_existing_face_sample_mesh.png
+   :align: center
+
+**See also** :ref:`the sample script <tui_use_existing_faces>` creating the mesh shown in the image in a Shrink mode.
+  
diff --git a/doc/gui/input/deflection_2d.rst b/doc/gui/input/deflection_2d.rst
new file mode 100644 (file)
index 0000000..1af3376
--- /dev/null
@@ -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/gui/input/deleting_groups.rst b/doc/gui/input/deleting_groups.rst
new file mode 100644 (file)
index 0000000..8b2038c
--- /dev/null
@@ -0,0 +1,17 @@
+.. _deleting_groups_page:
+
+****************************
+Deleting groups with content
+****************************
+
+To delete groups and their content, in the menu select **Modification -> Remove -> Delete groups with Contents** and select one or several groups you wish to delete in the 3D viewer or in the Object Browser.
+
+The selected groups will be listed in **Delete groups with contents** menu. 
+Then click **Apply and Close** button to remove the selected groups and close the menu or **Apply** button to remove them and proceed with the selection.
+
+       .. image:: ../images/deletegroups.png
+               :align: center
+
+.. note:: This operation removes groups **with their elements**. To delete a group and leave its elements intact, right-click on the group in the Object Browser and select **Delete** in the pop-up menu or select the group and choose **Edit -> Delete** in the main menu.
+
+
diff --git a/doc/gui/input/diagonal_inversion_of_elements.rst b/doc/gui/input/diagonal_inversion_of_elements.rst
new file mode 100644 (file)
index 0000000..71302bb
--- /dev/null
@@ -0,0 +1,38 @@
+.. _diagonal_inversion_of_elements_page:
+
+***********************************
+Diagonal inversion of two triangles
+***********************************
+
+In MESH you can inverse the diagonal (edge) of a pseudo-quadrangle
+formed by two neighboring triangles with one common edge.
+
+*To inverse the diagonal:*
+
+#. From the **Modification** menu choose the **Diagonal inversion** item or click *"Diagonal Inversion"* |img| button in the toolbar.
+
+.. |img| image:: ../images/image70.png
+
+The following dialog box shall appear:
+
+       .. image:: ../images/diagonalinversion.png
+                 :align: center
+
+#. Enter IDs of nodes forming the required edge in the **Edge** field (the node IDs must be separated by dashes) or select this edge in the 3D viewer.
+#. Click the **Apply** or **Apply and Close** button.
+
+       .. image:: ../images/image38.jpg 
+                 :align: center
+
+       .. centered::
+               The selected edge
+
+       .. image:: ../images/image36.jpg 
+                 :align: center
+
+       .. centered::
+               The inverted edge
+
+**See Also** a sample TUI Script of a :ref:`tui_diagonal_inversion` operation.  
+
+
diff --git a/doc/gui/input/display_entity.rst b/doc/gui/input/display_entity.rst
new file mode 100644 (file)
index 0000000..09eb03a
--- /dev/null
@@ -0,0 +1,43 @@
+.. _display_entity_page:
+
+**************
+Display Entity
+**************
+
+In this submenu you can choose to display only volumes, faces or edges or combine them.
+
+.. image:: ../images/image56.jpg 
+       :align: center
+
+.. centered::
+       Only Faces
+
+.. image:: ../images/image58.png 
+       :align: center
+
+.. centered::
+       Only Edges
+
+.. image:: ../images/image59.png 
+       :align: center
+
+.. centered::
+       Edges + Faces
+
+If the mesh contains a lot of elements, select **Choose...** item, 
+
+.. image:: ../images/display_entity_choose_item.png 
+       :align: center
+
+.. centered::
+       Item to call 'Display Entity' dialog box
+
+and **Display Entity** dialog box will provide a way to display only some entities at the first display instead of displaying all entities, which can take a long time.
+
+.. image:: ../images/display_entity_dlg.png
+       :align: center
+
+.. centered::
+        'Display Entity' dialog allows to select entities before displaying
+
+This menu item is available from the context menu in both Object browser and 3D viewer.
diff --git a/doc/gui/input/display_mode.rst b/doc/gui/input/display_mode.rst
new file mode 100644 (file)
index 0000000..8414ebf
--- /dev/null
@@ -0,0 +1,41 @@
+.. _display_mode_page:
+
+************
+Display Mode
+************
+
+By default your objects are represented as defined in :ref:`mesh_tab_preferences`.
+However, right-clicking on the mesh in the **Object Browser**, and selecting **Display Mode**, you can display your mesh as:
+
+.. image:: ../images/image53.gif 
+       :align: center
+
+
+.. centered::
+       Wireframe
+
+.. image:: ../images/image37.jpg 
+       :align: center
+
+
+.. centered::
+       Shading
+
+.. image:: ../images/image56.gif 
+  :align: center
+
+
+.. centered::
+       Nodes
+
+**Wireframe** can combine with **Nodes** and **Shading**.
+
+**Shading** and **Wireframe** modes can combine with **Shrink**, however **Nodes** can't.
+
+.. image:: ../images/image55.gif 
+  :align: center
+
+
+.. centered::
+       Shrink
+
diff --git a/doc/gui/input/double_elements_control.rst b/doc/gui/input/double_elements_control.rst
new file mode 100644 (file)
index 0000000..1286bcc
--- /dev/null
@@ -0,0 +1,14 @@
+.. _double_elements_page: 
+
+********************************************
+Double edge, Double faces and Double volumes
+********************************************
+
+These mesh quality controls highlight the mesh elements basing on the same set of nodes.
+
+.. image:: ../images/double_faces.png
+       :align: center
+
+In this picture some faces are coincident after copying all elements with translation with subsequent Merge of nodes.
+
+**See also** a sample TUI Script of a :ref:`filter_double_elements` filters.
diff --git a/doc/gui/input/double_nodes_control.rst b/doc/gui/input/double_nodes_control.rst
new file mode 100644 (file)
index 0000000..816f29d
--- /dev/null
@@ -0,0 +1,15 @@
+.. _double_nodes_control_page:
+
+************
+Double nodes
+************
+
+This mesh quality control highlights the nodes which are coincident with other nodes (within a given tolerance). Distance at which two nodes are considered coincident is defined by :ref:`Quality Controls/Double nodes tolerance <dbl_nodes_tol_pref>` preference.
+
+.. image:: ../images/double_nodes.png
+       :align: center
+
+.. centered::
+   Some nodes are coincident after copying all elements with translation.
+
+**See also**: A sample TUI Script of a :ref:`tui_double_nodes_control` filter.
diff --git a/doc/gui/input/double_nodes_page.rst b/doc/gui/input/double_nodes_page.rst
new file mode 100644 (file)
index 0000000..104efb1
--- /dev/null
@@ -0,0 +1,139 @@
+.. _double_nodes_page:
+
+*******************************
+Duplicate Nodes or/and Elements
+*******************************
+
+This operation allows duplicating mesh nodes or/and elements, which can be useful to emulate a crack in the model.
+
+Duplication consists in creation of mesh elements "equal" to existing ones.
+
+*To duplicate nodes or/and elements:*
+
+.. |img| image:: ../images/duplicate_nodes.png 
+
+#. From the **Modification** menu choose **Transformation** -> **Duplicate Nodes or/and Elements** item or click *"Duplicate Nodes or/and Elements"* button |img| in the toolbar.
+#. Check in the dialog box one of four radio buttons corresponding to the type of duplication operation you would like to perform.
+#. Fill the other fields available in the dialog box (depending on the chosen operation mode).
+#. Click the **Apply** or **Apply and Close** button to perform the operation of duplication. 
+
+"Duplicate Nodes or/and Elements" dialog has four working modes:
+
+       * :ref:`mode_without_elem_anchor`
+       * :ref:`mode_with_elem_anchor`
+       * :ref:`mode_elem_only_anchor`
+       * :ref:`mode_group_boundary_anchor`
+
+
+
+.. _mode_without_elem_anchor:
+
+Duplicate nodes only
+####################
+   
+       .. image:: ../images/duplicate01.png 
+               :align: center
+
+
+Parameters to be defined in this mode:
+
+       * **Group of nodes to duplicate** (*mandatory*): these nodes will be duplicated.
+       * **Group of elements to replace nodes with new ones** (*optional*): the new nodes will replace the duplicated nodes within these elements. **Generate** button tries to automatically find such elements and creates a group of them. This button becomes active as soon as **Group of nodes to duplicate** is selected.
+       * **Construct group with newly created nodes** option (*checked by default*): if checked - the group with newly created nodes will be built. 
+
+A schema below illustrates how the crack is emulated using the node duplication.
+    
+.. image:: ../images/crack_emulation_double_nodes.png 
+       :align: center
+
+.. centered::
+       Crack emulation
+
+
+This schema shows a virtual crack in a 2D mesh created using this duplication mode:
+       * Black balls are **duplicated nodes**.
+       * Red balls are **new nodes**.
+       * **Elements to replace nodes with new ones** are marked with green.
+       
+.. note::
+       Note that in the reality **duplicated nodes** coincide with **new nodes**.
+
+
+.. _mode_with_elem_anchor:
+
+Duplicate nodes and border elements
+###################################
+
+.. image:: ../images/duplicate02.png 
+       :align: center
+
+Parameters to be defined in this mode:
+
+       * **Group of elements to duplicate** (*mandatory*): these elements will be duplicated. 
+       * **Group of nodes not to duplicate** (*optional*): group of nodes at crack bottom which will not be duplicated.
+       * **Group of elements to replace nodes with new ones** (*mandatory*): the new nodes will replace the nodes to duplicate within these elements. **Generate** button tries to automatically find such elements and creates a group of them. This button becomes active as soon as **Group of elements to duplicate** is selected.
+       * **Construct group with newly created elements** option (*checked by default*): if checked - the group of newly created elements will be built.
+       * **Construct group with newly created nodes** option (*checked by default*): if checked - the group of newly created nodes will be built.
+
+
+A schema below explains the crack emulation using the node duplication with border elements.
+
+       .. image:: ../images/crack_emulation_double_nodes_with_elems.png 
+               :align: center
+
+       .. centered::  
+               Crack emulation
+
+This schema shows a virtual crack in a 2D mesh created using this duplication mode. In this schema:
+
+* Black segments are **duplicated elements** (edges in 2D case).
+* Black balls (except for the lowest one) are duplicated nodes of **duplicated elements**.
+* The lowest black ball is the **non-duplicated node**.
+* Red balls are **newly created nodes**.
+* Red segments are **created elements** (edges).
+* **Elements to replace nodes with new ones** are marked with green.
+
+Note that in the reality **nodes to duplicate** coincide with **new nodes**.
+
+In a 3D case, where **elements to duplicate** are faces, the edges
+located at the "crack" (if any) are cloned automatically.
+
+
+.. _mode_elem_only_anchor:
+
+Duplicate elements only
+#######################
+
+This mode duplicates the given elements, i.e. creates new elements with the same nodes as the given elements.
+
+
+.. image:: ../images/duplicate03.png
+       :align: center
+
+Parameters to be defined in this mode:
+
+       * **Group of elements to duplicate** (*mandatory*): these elements will be duplicated.
+       * **Construct group with newly created elements** option (*checked by default*): if checked - the group of newly created elements will be built. The name of the created group starts from "DoubleElements".
+
+
+.. _mode_group_boundary_anchor:
+
+Duplicate nodes on group boundaries
+###################################
+
+This mode duplicates nodes located on boundaries between given groups of volumes.
+
+
+.. image:: ../images/duplicate04.png
+       :align: center
+
+Parameters to be defined in this mode:
+
+       * **Groups (faces or volumes)** (*mandatory*): list of mesh groups. These groups should be disjoint, i.e. should not have shared elements.
+       * If **Create joint elements** option is activated, flat elements are created on the duplicated nodes: a triangular facet shared by two volumes of two groups generates a flat prism, a quadrangular facet generates a flat hexahedron. Correspondingly 2D joint elements (null area faces) are generated where edges are shared by two faces. The created flat volumes (or faces) are stored in groups. These groups are named according to the position of the group in the list of groups: group "j_n_p" is a group of flat elements that are built between the group \#n and the group \#p in the group list. All flat elements are gathered into the group named "joints3D" (correspondingly "joints2D"). The flat elements of multiple junctions between the simple junction are stored in a group named "jointsMultiples".
+       * If **On all boundaries** option is activated, the volumes (or faces), which are not included into **Groups** input, are considered as another group and thus the nodes on the boundary between **Groups** and the remaining mesh are also duplicated.
+
+
+**See Also** a sample TUI Script of a :ref:`tui_duplicate_nodes` operation.
+
+
diff --git a/doc/gui/input/editing_groups.rst b/doc/gui/input/editing_groups.rst
new file mode 100644 (file)
index 0000000..b00f956
--- /dev/null
@@ -0,0 +1,44 @@
+.. _editing_groups_page:
+
+**************
+Editing groups
+**************
+
+*To edit an existing group of elements:*
+
+.. |img| image:: ../images/image74.gif
+
+#. Select your group in the Object Browser and in the **Mesh** menu click the **Edit Group** item or *"Edit Group"* button |img| in the toolbar.
+
+
+
+   The following dialog box will appear (if the selected group is **standalone**, else this dialog looks different):
+
+       .. image:: ../images/editgroup.png
+               :align: center
+
+   In this dialog box you can modify the name and the color of your group despite of its type. You can add or remove the elements composing a **standalone group**. You can change criteria of the filter of a **group on filter**. For more information see :ref:`creating_groups_page` page.
+
+#. Click the **Apply** or **Apply and Close** button to confirm modification of the group.
+
+
+.. _convert_to_standalone:
+
+Convert to stanalone group
+==========================
+
+*To convert an existing group on geometry or a group on filer into a standalone group and modify its contents:*
+
+.. |edit| image:: ../images/image74.gif
+
+#. Select your group on geometry or on filter in the Object Browser and in the **Mesh** menu click the **Edit Group as Standalone** item |edit|.
+
+
+
+   The selected group will be converted into a standalone group and its contents can be modified.
+
+#. Click the **Apply** or **Apply and Close** button to confirm modification of the group.
+
+**See also:** A sample TUI Script of an :ref:`tui_edit_group` operation.  
+
+
diff --git a/doc/gui/input/editing_meshes.rst b/doc/gui/input/editing_meshes.rst
new file mode 100644 (file)
index 0000000..09f63fb
--- /dev/null
@@ -0,0 +1,38 @@
+.. _editing_meshes_page:
+
+**************
+Editing Meshes
+**************
+
+After you have created a mesh or sub-mesh with definite applied meshing algorithms and hypotheses you can edit your mesh by **assigning** other algorithms and/or hypotheses or **unassigning** the applied hypotheses and algorithms. The editing proceeds in the same way as 
+:ref:`Mesh Creation <create_mesh_anchor>`.
+
+.. image:: ../images/createmesh-inv3.png
+       :align: center
+
+.. |img| image:: ../images/image122.png
+
+You can also change values for the current hypothesis by clicking the
+*"Edit Hypothesis"* |img| button.
+
+Mesh entities generated before using changed hypotheses are automatically removed.
+
+See how the mesh constructed on a geometrical object
+changes if we apply different meshing parameters to it.
+
+.. image:: ../images/edit_mesh1.png
+       :align: center
+
+.. centered::
+        Example of a mesh with Max. Element area 2D hypothesis roughly corresponding to 1D hypotheses on edges
+
+
+.. image:: ../images/edit_mesh_change_value_hyp.png
+       :align: center
+
+.. centered::
+       And now the Max Element area is greatly reduced
+
+**See Also** a sample TUI Script of an :ref:`Edit Mesh <tui_editing_mesh>` operation.  
+
+
diff --git a/doc/gui/input/extrusion.rst b/doc/gui/input/extrusion.rst
new file mode 100644 (file)
index 0000000..3cee68e
--- /dev/null
@@ -0,0 +1,167 @@
+.. _extrusion_page:
+
+*********
+Extrusion
+*********
+
+Extrusion is used to build mesh elements of plus one dimension than the input ones. Boundary elements around generated mesh of plus one dimension are additionally created. All created elements can be automatically grouped. Extrusion can be used to create a :ref:`structured mesh from scratch <extrusion_struct>`.
+
+.. image:: ../images/extrusion_box.png
+       :align: center
+
+.. centered::
+       If you extrude several quadrangles, you get exactly the same mesh as if you meshed a geometrical box (except for that the initial quadrangles can be incorrectly oriented): quadrangles and segments are created on the boundary of the generated mesh
+
+Any node, segment or 2D element can be extruded. Each type of elements is extruded into a corresponding type of result elements:
+
++----------------------+--------------------+
+| **Extruded element** | **Result element** |
++======================+====================+
+|Node                  | Segment            |
++----------------------+--------------------+
+|Segment               | Quadrilateral      |
++----------------------+--------------------+
+|Triangle              | Pentahedron        |
++----------------------+--------------------+
+|Quadrilateral         | Hexahedron         |
++----------------------+--------------------+
+|Polygon               | Polyhedron         |
++----------------------+--------------------+
+|Hexagonal polygon     | Hexagonal prism    |
++----------------------+--------------------+
+
+
+When 2D elements are extruded, in addition to 3D elements segments are created on the ribs of the resulting 3D mesh. Free edges of input 2D elements generate logically horizontal rib segments. Logically vertical rib segments are generated from the nodes belonging to a sole input 2D element (the figure below illustrates this rule).
+
+.. image:: ../images/extru_rib_segs.png
+       :align: center
+
+.. centered::
+       Two triangles extruded: no vertical rib segments generated from nodes #2 and #3 as they are shared by both triangles
+
+
+*To use extrusion:*
+
+.. |img| image:: ../images/image91.png
+.. |sel_img| image:: ../images/image120.png
+
+#. From the **Modification** menu choose the **Extrusion** item or click *"Extrusion"* button |img| in the toolbar. 
+
+   The following dialog will appear:
+
+       .. image:: ../images/extrusionalongaline1.png
+               :align: center
+
+
+#. In this dialog:
+
+       * Use *Selection* button |sel_img| to specify what you are going to select at a given moment, **Nodes**, **Edges** or **Faces**.
+  
+       * Specify **Nodes**, **Edges** and **Faces**, which will be extruded, by one of following means:
+               * **Select the whole mesh, sub-mesh or group** activating the corresponding check-box.
+               * Choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame. 
+               * Input the element IDs directly in **Node IDs**, **Edge IDs** and **Face IDs** fields. The selected elements will be highlighted in the viewer, if the mesh is shown there. 
+               * Apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`filtering_elements` page. 
+
+       * If the **Extrusion to distance** radio button is selected 
+               * specify the translation vector by which the elements will be extruded.
+
+       * If the **Extrusion along vector** radio button is selected
+
+               .. image:: ../images/extrusionalongaline2.png  
+                       :align: center
+    
+               * specify the components of the **Vector** along which the elements will be extruded, either directly or by selecting the mesh face (the normal to the face will define the vector),
+               * specify the **Distance** of extrusion along the vector (it can be negative).
+    
+  
+
+       * If the **Extrusion by normal** radio button is selected, every node of the selected faces is extruded along the *average* of the *normal* vectors to the faces sharing the node. (Nodes and edges cannot be extruded in this mode.)
+
+               .. image:: ../images/extrusionalongaline3.png 
+                       :align: center
+    
+               * Specify the **Distance** of extrusion (it can be negative),
+               * Use **Along average normal** check-box to specify along which vector the distance is measured.
+               * If it is *activated* the distance is measured along the average normal mentioned above. 
+               * If it is *deactivated* every node is extruded along the average normal till its intersection with a virtual plane obtained by translation of the face sharing the node along its own normal by the **Distance**.
+        
+               The picture below shows a cross-section of a 2D mesh extruded with **Along average normal** activated (to the left) and deactivated (to the right). 
+
+               .. image:: ../images/extrusionbynormal_alongavgnorm.png
+                       :align: center
+
+               .. centered::
+                       'Along average normal' activated (to the left) and deactivated (to the right)
+
+
+
+               * **Use only input elements** check-box specifies what elements will be used to compute the average normal.
+
+                  * If it is *activated* only selected faces, among faces sharing the node, are used to compute the average normal at the node. 
+                  * Else all faces sharing the node are used.
+
+                  The picture below shows a cross-section of a 2D mesh the upper plane of which is extruded with **Use only input elements** activated (to the left) and deactivated (to the right). 
+
+       .. image:: ../images/extrusionbynormal_useonly.png
+               :align: center
+
+       .. centered::
+               'Use only input elements' activated (to the left) and deactivated (to the right)
+  
+  
+        .. |add| image:: ../images/add.png
+        .. |rm| image:: ../images/remove.png
+
+
+       * Specify the **Number of steps**.
+       * Optionally specify **Scale factors**. Each scale factor in the list is applied to nodes of a corresponding extrusion step unless **Linear variation of factors** is checked, is which case the scale factors are spread over all extrusion steps.
+               * **Base point** serving as a scaling canter can be defined either using spin boxes or by picking a node in the Viewer or by picking a geometrical vertex in the Object Browser.
+               * **Add** button |add| adds a scale factor to the list.   
+               * **Remove** button |rm| removes selected scale factors from the list.
+
+        * The elements can also be rotated around the **Base point** to get the resulting mesh in a helical fashion. You can set the values of **Rotation angles** to the list by pressing the *"Add"* button |add| and remove them from the list by pressing the *"Remove"* button |rm|.
+
+          **Linear variation of angles** option allows defining the angle of gradual rotation for the whole path. At each step the elements will be rotated by *( angle / nb. of steps )*.
+
+       * If you activate **Generate Groups** check-box, the *result elements* created from *selected elements* contained in groups will be included into new groups named by pattern "<old group name>_extruded" and "<old group name>_top". For example if a selected quadrangle is included in *g_Faces* group (see figures below) then result hexahedra will be included in *g_Faces_extruded* group and a quadrangle created at the "top" of extruded mesh will be included in *g_Faces_top group*.  
+
+               .. image:: ../images/extrusion_groups.png
+                       :align: center
+
+               .. image:: ../images/extrusion_groups_res.png
+                       :align: center
+
+          This check-box is active only if there are some groups in the mesh.
+  
+
+
+#. Click **Apply** or **Apply and Close**  button to confirm the operation.
+
+.. _extrusion_struct:
+
+Example: creation of a structured mesh from scratch
+###################################################
+
+.. image:: ../images/image75.jpg
+       :align: center
+
+.. centered::
+       A node is extruded into a line of segments
+
+.. image:: ../images/image76.jpg
+       :align: center
+
+.. centered::
+       The line of segments is extruded into a quadrangle mesh
+
+.. image:: ../images/image77.jpg
+       :align: center
+
+.. centered::
+       The quadrangle mesh is revolved into a hexahedral mesh
+
+
+**See Also** a sample TUI Script of an :ref:`tui_extrusion` operation. 
+
+
diff --git a/doc/gui/input/extrusion_along_path.rst b/doc/gui/input/extrusion_along_path.rst
new file mode 100644 (file)
index 0000000..ce226f8
--- /dev/null
@@ -0,0 +1,160 @@
+.. _extrusion_along_path_page:
+
+********************
+Extrusion along Path
+********************
+
+In principle, **Extrusion along Path** works in the same way as :ref:`extrusion_page`, the main difference is that we define not a vector, but a path of extrusion which must be an 1D mesh or 1D sub-mesh.
+To get an idea of how this algorithm works, examine several examples, starting from the most simple case of extrusion along a straight edge.
+In the examples the sample mesh will be extruded along different paths and with different parameters.
+This 2D mesh has two quadrangle faces and seven edges. Look at the picture, where white digits are the node numbers and green are the element numbers:
+
+.. image:: ../images/mesh_for_extr_along_path.png
+       :align: center
+
+Extrusion along a straight edge
+*******************************
+(not using base point or angles)
+
+.. image:: ../images/straight_before.png
+       :align: center
+
+.. centered::
+       The image shows a 1D path mesh, built on a linear edge, and the initial 2D mesh.
+
+.. image:: ../images/straight_after.png
+       :align: center
+
+.. centered::
+       The image shows the result of extrusion of two edges (#1 and #2) of the initial mesh along the path. 
+
+.. note:: Node #1 of path mesh has been selected as Start node.
+
+Extrusion along a curvilinear edge
+##################################
+(with and without angles)
+
+.. image:: ../images/curvi_simple_before.png
+       :align: center
+
+.. centered::
+       The image shows a 1D path mesh, built on curvilinear edge, and the initial  2D mesh.
+
+.. image:: ../images/curvi_simple_after.png
+       :align: center
+
+.. centered::
+       The central image shows the result of extrusion of one edge (#2) of the initial mesh along the path. 
+
+.. note:: Node #1 of path mesh has been selected as **Start node**.
+
+.. image:: ../images/curvi_angles_after.png
+       :align: center
+
+.. centered::
+       The same, but using angles {45, 45, 45, 0, -45, -45, -45}
+
+Extrusion of a 2D face along a mesh built on a wire
+###################################################
+
+In this example the path mesh has been built on a wire containing 3 edges. Node 1 is a start node. Linear angle variation by 180 degrees has also been applied.
+
+.. image:: ../images/extr_along_wire_before.png
+       :align: center
+
+.. centered::
+       Meshed wire
+
+.. image:: ../images/extr_along_wire_after.png
+       :align: center
+
+.. centered::
+       The resulting extrusion
+
+Extrusion of 2d elements along a closed path
+############################################
+
+.. image:: ../images/circle_simple_before.png
+       :align: center
+
+.. centered::
+       The image shows a path mesh built on a closed edge (circle).
+
+.. image:: ../images/circle_simple_after.png
+       :align: center
+
+.. centered::
+       The central image shows the result of extrusion of both faces of the initial mesh. 
+
+.. note:: Note, that no sewing has been done, so, there are six coincident nodes and two coincident faces in the resulting mesh.
+
+.. image:: ../images/circle_angles_after.png
+       :align: center
+
+.. centered::
+       The same, but using angles {45, -45, 45, -45, 45, -45, 45, -45}
+
+
+*To use Extrusion along Path:*
+
+.. |img| image:: ../images/image101.png
+.. |sel| image:: ../images/image120.png
+
+#. From the **Modification** menu choose the **Extrusion along a path** item or click *"Extrusion along a path"* button |img| in the toolbar.
+
+   The following dialog will appear:
+
+       .. image:: ../images/extrusion_along_path_dlg.png
+
+#. In this dialog:
+
+       * Use *Selection* button |sel| to specify what you are going to select at a given moment, **Nodes**, **Edges** or **Faces**.
+
+       * Specify **Nodes**, **Edges** and **Faces**, which will be extruded, by one of following means:
+      
+               * **Select the whole mesh, sub-mesh or group** activating this check-box.
+               * Choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame.
+               * Input the element IDs directly in **Node IDs**, **Edge IDs** and **Face IDs** fields. The selected elements will be highlighted in the viewer, if the mesh is shown there.
+               * Apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`filtering_elements` page.
+    
+       * Define the **Path** along which the elements will be extruded.Path definition consists of several elements:
+      
+               * **Mesh or sub-mesh** - 1D mesh or sub-mesh, along which proceeds the extrusion.
+               * **Start node** - the start node of the Path. It is used to define the direction of extrusion. 
+      
+    
+       * If you activate **Generate groups** check-box, the *result elements* created from *selected elements* contained in groups will be included into new groups named by pattern "<old group name>_extruded" and "<old group name>_top". For example if a  selected quadrangle is included in *g_Faces* group (see figures below) then result hexahedra will be included in *g_Faces_extruded* group and a quadrangle created at the "top" of extruded mesh will be included in *g_Faces_top group*.  
+
+       .. image:: ../images/extrusion_groups.png
+               :align: center
+
+       .. image:: ../images/extrusion_groups_res.png
+               :align: center
+
+       This check-box is active only if there are some groups in the mesh.
+  
+
+
+
+#. There are two optional parameters, which can be very useful:
+
+   * If the path of extrusion is curvilinear, at each iteration the extruded elements are rotated to keep its initial angularity to the curve. By default, the **Base point** around which the elements are rotated is the mass center of the elements (note that it can differ from the gravity center computed by *Geometry* module for the  underlying shape), however, you can specify any point as the **Base point** and the elements will be rotated with respect to this point. Note that only the displacement of the **Base point** exactly equals to the path, and all other extruded elements simply keep their position relatively to the **Base point** at each iteration.
+
+   .. |add| image:: ../images/add.png
+   .. |rem| image:: ../images/remove.png
+
+   * The elements can also be rotated around the path with rotation center at the **Base point** to get the resulting mesh in a helical fashion. You can set the values of angles at the right, add them to **Rotation angles** list at the left by pressing the *"Add"* button |add| and remove them from the list by pressing the *"Remove"* button |rem|.
+
+     **Linear variation of angles** option allows defining the angle of gradual rotation for the whole path. At each step the elements will be rotated by *( angle / nb. of steps )*.
+
+   * Each of optional **Scale factors** in the list is applied to nodes of a corresponding extrusion step unless **Linear variation of factors** is checked, is which case the scale factors are spread over all extrusion steps. **Base point** serves as a scaling canter.
+       * *"Add"* button |add| adds a scale factor to the list.   
+       * *"Remove"* button |rem| removes selected scale factors from the list.
+
+
+#. Click **Apply** or **Apply and Close**  button to confirm the operation. Mesh edges will be extruded into faces, faces into volumes. The external surface of the resulting 3d mesh (if faces have been extruded) is covered with faces, and corners with edges. If the path is closed, the resulting mesh can contain duplicated nodes and faces, because no sewing is done.
+
+
+**See Also** a sample TUI Script of an :ref:`tui_extrusion_along_path` operation.  
+
+
diff --git a/doc/gui/input/face_groups_by_sharp_edges.rst b/doc/gui/input/face_groups_by_sharp_edges.rst
new file mode 100644 (file)
index 0000000..eed6996
--- /dev/null
@@ -0,0 +1,29 @@
+************************************
+Face Groups Separated By Sharp Edges
+************************************
+
+**Face groups separated by sharp edges** operation distributes all faces of the mesh among groups using sharp edges and optionally existing 1D elements as group boundaries. Edges where more than two faces meet are always considered as a group boundary. The operation is available in **Mesh** menu.
+
+The operation dialog looks as follows:
+
+.. image:: ../images/groups_by_sharp_edges_dlg.png
+       :align: center
+
+In this dialog box specify
+
+       * **Mesh** including the faces to distribute among groups.
+        * **Sharp angle** in degrees, by which edges used as group boundaries are detected. An edge is considered as a group boundary if an angle between normals of adjacent faces is more than this angle.
+       * Activate **Create edges** option if you wish that 1D elements to be created (if not yet exist) on the edges that served as group boundaries.
+       * Activate **Use existing edges** option if you wish that existing 1D elements to be used as group boundaries.
+       * Activate **Preview** to see the edges that will be used as group boundaries highlighted in the Viewer.
+
+
+.. image:: ../images/Nut_sharp_edges.png
+       :align: center
+
+.. centered:: 
+       **Preview of boundary edges detected at Sharp Angle = 10 degrees**
+
+**See Also** a sample TUI Script of a :ref:`tui_groups_by_sharp_edges` operation.
+
+
diff --git a/doc/gui/input/find_element_by_point.rst b/doc/gui/input/find_element_by_point.rst
new file mode 100644 (file)
index 0000000..1fd4ba7
--- /dev/null
@@ -0,0 +1,37 @@
+.. _find_element_by_point_page:
+
+*********************
+Find Element by Point
+*********************
+
+This functionality allows you to find all mesh elements to which belongs a certain point.
+
+*To find the elements:*
+
+.. |img| image:: ../images/findelement3.png
+
+#. Select a mesh or a group
+#. Select from the Mesh menu or from the context menu the Find Element by Point item |img|.
+
+
+   The following dialog box will appear:
+
+       .. image:: ../images/findelement2.png
+               :align: center
+
+
+#. In this dialog box you should select:
+       * the coordinates of the point;
+       * the type of elements to be found; it is also possible to find elements of all types related to the reference point. Choose type "All" to find elements of any type except for nodes and 0D elements.
+#. Click the **Find** button. IDs of found entities will be shown.
+
+.. image:: ../images/findelement1.png 
+       :align: center
+
+.. centered:: 
+       The reference point and the related elements.
+
+
+**See Also** a sample TUI Script of a :ref:`tui_find_element_by_point` operation.
+
+
diff --git a/doc/gui/input/free_borders.rst b/doc/gui/input/free_borders.rst
new file mode 100644 (file)
index 0000000..fc076f3
--- /dev/null
@@ -0,0 +1,16 @@
+.. _free_borders_page:
+
+************
+Free borders
+************
+
+This mesh quality control highlights 1D elements (segments) belonging to one element (face or volume) only.
+
+.. image:: ../images/free_borders1.png
+       :align: center
+
+In this picture the free borders are displayed in red. (Faces are explicitly shown via **Display Entity** menu as all elements but segments are hidden upon this control activation).
+
+**See Also** a sample TUI Script of a :ref:`tui_free_borders` filter.
+
+
diff --git a/doc/gui/input/free_edges.rst b/doc/gui/input/free_edges.rst
new file mode 100644 (file)
index 0000000..feeb58e
--- /dev/null
@@ -0,0 +1,15 @@
+.. _free_edges_page:
+
+**********
+Free edges
+**********
+
+This mesh quality control highlights borders of faces (links between nodes, not mesh segments) belonging to one face only.
+
+.. image:: ../images/free_edges.png
+       :align: center
+
+.. centered::
+       Some elements of mesh have been deleted and the "holes" are outlined in red.
+
+**See Also** a sample TUI Script of a :ref:`tui_free_edges` filter.
diff --git a/doc/gui/input/free_faces.rst b/doc/gui/input/free_faces.rst
new file mode 100644 (file)
index 0000000..cd8ca05
--- /dev/null
@@ -0,0 +1,14 @@
+.. _free_faces_page:
+
+**********
+Free faces
+**********
+
+This mesh quality control highlights the faces connected to less than two mesh volume elements. The free faces are shown with a color different from the color of shared faces.
+
+.. image:: ../images/free_faces.png
+       :align: center
+
+In this picture some volume mesh elements have been removed, as a result some faces became connected only to one volume. i.e. became free.
+
+**See also:** A sample TUI Script of a :ref:`tui_free_faces` filter.
diff --git a/doc/gui/input/free_nodes.rst b/doc/gui/input/free_nodes.rst
new file mode 100644 (file)
index 0000000..451699c
--- /dev/null
@@ -0,0 +1,14 @@
+.. _free_nodes_page:
+
+**********
+Free nodes
+**********
+
+This mesh quality control highlights the nodes which are not connected to any  mesh element. 
+
+.. image:: ../images/free_nodes.png
+       :align: center
+
+In this picture some nodes are not connected to any mesh element after deleting some elements and adding several isolated nodes.
+
+**See also:** A sample TUI Script of a :ref:`tui_free_nodes` filter.
diff --git a/doc/gui/input/generate_flat_elements.rst b/doc/gui/input/generate_flat_elements.rst
new file mode 100644 (file)
index 0000000..7308111
--- /dev/null
@@ -0,0 +1,14 @@
+.. _generate_flat_elements_page:
+
+******************************************************
+Generate flat elements on group boundaries or on faces
+******************************************************
+
+These functionalities, used in some mechanics calculations, allow to generate flat volume elements 
+on the boundaries of a list of groups of volumes, or on a list of groups of faces.
+
+.. note:: These functionalities are only available in python scripts.
+
+**See** a sample TUI Script of :ref:`tui_double_nodes_on_group_boundaries` operation.  
+
+
diff --git a/doc/gui/input/group_of_underlying_elements.rst b/doc/gui/input/group_of_underlying_elements.rst
new file mode 100644 (file)
index 0000000..a660030
--- /dev/null
@@ -0,0 +1,59 @@
+.. _group_of_underlying_elements_page:
+
+************************************
+Group Based on Nodes of Other Groups
+************************************
+
+
+To create a standalone group of entities basing on nodes of existing reference groups, in the **Mesh** menu select **Group of underlying entities**.
+
+The following dialog box will appear:
+
+.. image:: ../images/dimgroup_dlg.png
+       :align: center
+
+In this dialog box specify 
+
+       * the resulting **Group name**, 
+       * the **Elements Type** of entities of the resulting group,
+       * the criterion of inclusion of a mesh entity to the result group, which is **Number of common nodes** of the entity and the reference groups: 
+               * **All** - include if all nodes are common;
+               * **Main** - include if all corner nodes are common (meaningful for a quadratic mesh) 
+               * **At least one** - include if one or more nodes are common
+               * **Majority** - include if half or more nodes are common
+  
+       * select reference groups,
+       * If **Include underlying entities only** option is activated an entity can be included if it is based on nodes of one element of a reference group.
+
+
+In the figure below, there are two reference Volume groups:
+
+.. image:: ../images/dimgroup_src.png
+       :align: center
+
+.. centered:: 
+       Reference groups
+
+In this case the following results for Faces, Edges and Nodes are obtained:
+
+.. image:: ../images/dimgroup_2d.png
+       :align: center
+
+.. centered::
+       Faces
+
+.. image:: ../images/dimgroup_1d.png
+       :align: center
+
+.. centered::
+       Edges
+
+.. image:: ../images/dimgroup_0d.png
+       :align: center
+
+.. centered::
+       Nodes
+
+**See Also** a sample TUI Script of a :ref:`tui_create_dim_group` operation.
+
+
diff --git a/doc/gui/input/grouping_elements.rst b/doc/gui/input/grouping_elements.rst
new file mode 100644 (file)
index 0000000..2846fa9
--- /dev/null
@@ -0,0 +1,67 @@
+.. _grouping_elements_page:
+
+*****************
+Grouping elements
+*****************
+
+In Mesh module it is possible to create groups of mesh entities: nodes, edges, faces, volumes, 0D elements or balls. One group contains elements of only one type. Groups, unlike sub-meshes, are exported along with mesh entities into the files of following formats: MED, UNV, and CGNS. The group has a color attribute which is used for visualization only and is not exported.
+
+There are three types of groups different by their internal organization:
+
+#. **Standalone group** is a static set of mesh entities. Its contents can be explicitly controlled by the user. Upon removal of the entities included into the group, e.g. due to modification of  meshing parameter, the group becomes empty and its content can be restored only manually. Hence it is reasonable to create standalone groups when the mesh generation is finished and mesh quality is verified.
+       .. warning:: Creation and edition of large standalone groups in :ref:`Create group <creating_groups_page>` dialog using manual edition is problematic due to poor performance of the dialog.
+  
+#. **Group on geometry** is associated to a sub-shape or a group of sub-shapes of the main shape and includes mesh entities generated on these geometrical entities. The association to a geometry is established at group construction and cannot be changed. The group contents are always updated automatically, hence the group can be created even before mesh elements generation.
+
+#. **Group on filter** encapsulates a :ref:`filter <filters_page>`, which is used to select mesh entities composing the group from the whole mesh. Criteria of the filter can be changed at any time. The group contents are always updated automatically, hence the group can be created even before mesh elements generation.
+
+The group on geometry and group on filter can be converted to a standalone group.
+
+.. image:: ../images/groups_in_OB.png
+       :align: center
+
+.. centered::
+       Groups of different types look differently in the Object Browser
+
+The following ways of group creation are possible:
+
+* :ref:`Create group <creating_groups_page>` dialog allows creation of a group of any type: :ref:`Standalone group<standalone_group>`, :ref:`Group on geometry <group_on_geom>` and :ref:`Group on filter <group_on_filter>` using dedicated tabs.
+* :ref:`Create Groups from Geometry <create_groups_from_geometry_page>` dialog allows creation of several groups on geometry at once.
+* :doc:`face_groups_by_sharp_edges` operation distributes all faces of the mesh among groups using sharp edges and/or existing 1D elements as group boundaries.
+* Standalone groups of all nodes and elements of the chosen sub-mesh (type of elements depends on dimension of sub-mesh geometry) can be created using **Mesh -> Construct Group** menu item (available from the context menu as well).
+* Standalone groups of any element type can be created basing on nodes of other groups - using :ref:`Group based on nodes of other groups <group_of_underlying_elements_page>` dialog.
+* Standalone groups can be created by applying :ref:`Boolean operations <using_operations_on_groups_page>` to other groups.
+* Creation of standalone groups is an option of many :ref:`mesh modification <modifying_meshes_page>` operations.
+
+The created groups can be later:
+
+* :ref:`Edited <editing_groups_page>`
+* :ref:`Deleted <deleting_groups_page>`, either as an object or together with contained elements.
+* The group on geometry and group on filter can be :ref:`converted into the standalone <convert_to_standalone>` group.
+* :ref:`Exported <importing_exporting_meshes_page>` into a file as a whole mesh.
+
+In the Object Browser, if an item contains more than one child group, it is possible to sort the groups by name in ascending order using **Sort children** context menu item. 
+
+.. image:: ../images/smesh_sort_groups.png
+       :align: center
+
+.. centered::
+       Sorting groups
+
+An important tool, providing filters for creation of standalone groups and groups on filter is :ref:`selection_filter_library_page`.
+
+**See Also** sample TUI Scripts of :doc:`tui_grouping_elements` operations.
+
+
+**Table of Contents**
+
+.. toctree::
+       :maxdepth: 2
+
+       creating_groups.rst
+       create_groups_from_geometry.rst
+       face_groups_by_sharp_edges.rst
+       group_of_underlying_elements.rst
+       using_operations_on_groups.rst
+       editing_groups.rst
+       deleting_groups.rst
diff --git a/doc/gui/input/homard_create_boundary.rst b/doc/gui/input/homard_create_boundary.rst
new file mode 100644 (file)
index 0000000..230ce00
--- /dev/null
@@ -0,0 +1,169 @@
+.. _homard_create_boundary:
+
+The boundary
+############
+.. index:: single: boundary
+.. index:: single: frontière
+.. index:: single: CAO
+
+The object boundary contains all the geometrical definitions allowing to describe a curved boundary to be followed.
+
+There are two modes of description of a boundary:
+
+  - CAO: the boundary comes from the geometry of the domain
+  - Non CAO: if the CAO is not available, the boundary can be approximated by its descriptions:
+
+    * Discrete: to describe the set of 1D curves that defines the boundary
+    * Analytics: to describe every surface that defines the boundary
+
+This choice is:
+
+.. image:: ../images/create_boundary_1.png
+   :align: center
+
+.. _homard_create_boundary_CAO:
+
+CAO boundary
+************
+
+The follow-up of a CAO boundary will be made by selecting a boundary chosen in the list of the existing CAO boundaries.
+
+In the starting up, the list is empty. It is necessary to create a first CAO boundary by activation of the button "*New*":
+
+.. image:: ../images/create_boundary_cao_1.png
+   :align: center
+
+The window invites in the choice of a file that contains the CAO with XAO format. This CAO is the one that is the basis for the initial mesh. A name of boundary is automatically proposed: Boun_1, Boun_2, etc. This name can be modified. It must not already have been used for another boundary, whatever its type.
+
+.. image:: ../images/create_boundary_cao_2.png
+   :align: center
+
+.. note::
+  The coherence between this CAO and the initial mesh is not checked.
+
+Filtering by the groups
+***********************
+.. index:: single: group
+
+We can restrict the application of the boundary to groups. So elements not belonging to these groups will not be affected. We check the associated button **Filtering with groups**. The list of the present groups of elements in the mesh is shown. It is enough to check those wanted to restrict the boundary.
+
+.. image:: ../images/adaptation_with_homard_boundary_groups.png
+   :align: center
+
+.. _homard_create_boundary_Di:
+
+Discrete boundary
+*****************
+
+The follow-up of a discrete boundary will be made by selecting a boundary chosen in the list of the existing discrete boundaries.
+
+In the starting up, the list is empty. It is necessary to create a first discrete boundary by activation of the button "*New*":
+
+.. image:: ../images/create_boundary_di_1.png
+   :align: center
+
+The window invites in the choice of a file of mesh. This mesh is the one of all the lines constituting the boundary. A name of boundary is automatically proposed: Boun_1, Boun_2, etc. This name can be modified. It must not already have been used for another boundary, whatever its type.
+
+.. image:: ../images/create_boundary_di_2.png
+   :align: center
+
+.. note::
+  The file has to contain only a single mesh.
+
+If discrete boundaries were already defined for another case, we can select one of them. We can also create a new discrete boundary by activation of the button "*New*", as explained previously.
+
+.. image:: ../images/create_boundary_di_3.png
+   :align: center
+
+
+
+.. _homard_create_boundary_An:
+
+Analytical boundary
+*******************
+In the starting up, SALOME shows a table with one only one column. This column contains the list of all the groups of the initial mesh defining the case.
+
+.. image:: ../images/create_boundary_an_1.png
+   :align: center
+
+It is necessary to create a first analytical boundary by activation of the button "*New*". We shall have the choice between cylinder, sphere, cone or torus. When the boundary will be validated, its name will appear in header of the second column.
+
+.. image:: ../images/create_boundary_an_2.png
+   :align: center
+
+It is now necessary to establish the link enter the mesh defining the case and this boundary described analytically. It is made by checking the groups of the faces which have to be on the boundary.
+
+.. image:: ../images/create_boundary_an_3.png
+   :align: center
+
+This operation is repeated as often as we wish to place faces of meshs on a curved surface:
+
+.. image:: ../images/create_boundary_an_4.png
+   :align: center
+
+.. note::
+
+  A group can be checked very well never: it means that the elements which it defines belong to none of the described boundaries.
+
+  A group can be checked only once. Indeed, surface elements cannot belong to more than one surface.
+
+  Several groups can be checked for the same boundary. It occurs if the initial mesh of the zone was subdivided into several groups: all the surface elements belong to this surface but were distributed in several groups.
+
+  Conversely, a boundary can be very well retained by no group. It occurs if it was defined for a previous case and if it is groundless for the case in the course of definition.
+
+
+There are four types of analytical boundary:
+
+  - Cylindre
+  - Sphere
+  - Cone, described by an axis and an angle or by two radius
+  - Torus
+
+.. note::
+  The numerical values proposed by default take into account the geometry of the mesh.
+
+
+Cylindre
+========
+.. index:: single: cylindre
+
+The cylinder is defined by a point of the axis, its axis and its radius. The axis is defined by a vector. The standard of this vector is not inevitably equal to 1; also, its orientation has no importance. A name of boundary is automatically proposed: Boun_1, Boun_2, etc. This name can be modified. It must not already have been used for another boundary, whatever its type.
+
+.. image:: ../images/create_boundary_an_cy.png
+   :align: center
+
+Sphere
+======
+.. index:: single: sphere
+
+The sphere is defined by its center and its radius. A name of boundary is automatically proposed: Boun_1, Boun_2, etc. This name can be modified. It must not already have been used for another boundary, whatever its type.
+
+.. image:: ../images/create_boundary_an_sp.png
+   :align: center
+
+Cone
+====
+.. index:: single: cone
+
+A cone is defined by two different manners: the center, the axis and the angle of opening in degree or by two points centered on the axis and the associated radius. A name of boundary is automatically proposed: Boun_1, Boun_2, etc. This name can be modified. It must not already have been used for another boundary, whatever its type.
+
+Creation by an origin, an axis and an angle of opening:
+
+.. image:: ../images/create_boundary_an_co_1.png
+   :align: center
+
+Creation by two points centered on the axis and the associated radius:
+
+.. image:: ../images/create_boundary_an_co_2.png
+   :align: center
+
+.. index:: single: object browser
+
+Torus
+=====
+.. index:: single: torus
+
+The torus is defined by its centre, its axis, the revolution radius and the primary radius. The axis is defined by a vector. The standard of this vector is not inevitably equal to 1; also, its orientation has no importance. A name of boundary is automatically proposed: Boun_1, Boun_2, etc. This name can be modified. It must not already have been used for another boundary, whatever its type.
+
+.. image:: ../images/create_boundary_an_to.png
+   :align: center
diff --git a/doc/gui/input/importing_exporting_meshes.rst b/doc/gui/input/importing_exporting_meshes.rst
new file mode 100644 (file)
index 0000000..fe9aa27
--- /dev/null
@@ -0,0 +1,62 @@
+
+.. _importing_exporting_meshes_page:
+
+******************************
+Importing and exporting meshes
+******************************
+
+In MESH there is a functionality allowing import/export of meshes in the following formats:
+
+* **MED**,
+* **UNV** (I-DEAS 10),
+* **STL**, 
+* **CGNS**,
+* **GMF** (internal format of DISTENE products from the MeshGems suite),
+* **DAT** (simple ascii format).
+
+You can also export a group as a whole mesh.
+
+*To import a mesh:*
+
+#. From the **File** menu choose the **Import** item, from its sub-menu select the corresponding format (MED, UNV, STL, GMF and CGNS) of the file containing your mesh.
+#. In the standard **Search File** dialog box find the file for import. It is possible to select multiple files to be imported all at once.  
+#. Click the **OK** button.
+
+.. image:: ../images/meshimportmesh.png
+       :align: center
+
+*To export a mesh or a group:*
+
+#. Select the object you wish to export.
+#. From the **File** menu choose the **Export** item, from its sub-menu select the format (MED, UNV, DAT, STL, GMF and CGNS) of the file which will contain your exported mesh.
+#. In the standard **Search File** select a location for the exported file and enter its name.
+#. Click the **OK** button.
+
+.. image:: ../images/meshexportmesh.png
+       :align: center
+
+If you try to export a group, the warning will be shown:
+
+.. image:: ../images/meshexportgroupwarning.png
+       :align: center
+
+* **Don't show this warning anymore** check-box allows to switch off the warning. You can re-activate the warning in :ref:`Preferences <group_export_warning_pref>`.
+
+Only MED format supports all types of elements that can be created in the module. If you export a mesh or group that includes elements of types that are not supported by chosen format, you will be warned about that.
+
+There are additional parameters available at export to MED format files.
+
+.. _export_auto_groups:
+
+* **Z tolerance** field if enabled specifies distance of nodes from the XOY plane below which the nodes snap to this plane. A default value can be set in :ref:`Preferences <medexport_z_tolerance_pref>`.
+* **Automatically create groups** check-box specifies whether to create groups of all mesh entities of available dimensions or not. The created groups have names like "Group_On_All_Nodes", "Group_On_All_Faces", etc. A default state of this check-box can be set in :ref:`Preferences <export_auto_groups_pref>`.
+* **Automatically define space dimension** check-box specifies whether to define space dimension for export by mesh configuration or not. Usually the mesh is exported as a mesh in 3D space, just as it is in Mesh module. The mesh can be exported as a mesh of a lower dimension in the following cases, provided that this check-box is checked:
+
+  * **1D**: if all mesh nodes lie on OX coordinate axis. 
+  * **2D**: if all mesh nodes lie in XOY coordinate plane. 
+
+* :ref:`Save cell/node numbers to MED file <med_export_numbers_pref>` preference controls whether node and cell numbers are saved.
+
+**See Also** a sample TUI Script of an :ref:`Export Mesh <tui_export_mesh>` operation.
+
+
diff --git a/doc/gui/input/index.rst b/doc/gui/input/index.rst
new file mode 100644 (file)
index 0000000..fcd97b7
--- /dev/null
@@ -0,0 +1,62 @@
+.. SMESH documentation master file, created by
+   sphinx-quickstart on Tue Nov 21 15:18:10 2017.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+***************************
+Introduction to Mesh module
+***************************
+
+.. image:: ../images/a-viewgeneral.png
+       :align: center
+
+**Mesh** module of SALOME is destined for:
+
+* :ref:`creating meshes <about_meshes_page>` in different ways:
+
+  * by meshing geometrical models previously created or imported by the Geometry component;
+  * bottom-up, using :ref:`mesh edition <modifying_meshes_page>`, especially :ref:`extrusion <extrusion_page>` and :ref:`revolution <revolution_page>`;
+  * by generation of the 3D mesh from the 2D mesh not based on the geometry (:ref:`imported <importing_exporting_meshes_page>` for example);
+
+* :ref:`importing and exporting meshes <importing_exporting_meshes_page>` in various formats;
+* :ref:`modifying meshes <modifying_meshes_page>` with a vast array of dedicated operations;
+* :ref:`creating groups <grouping_elements_page>` of mesh elements;
+* filtering mesh entities (nodes or elements) using :ref:`Filters <filters_page>` functionality for :ref:`creating groups <grouping_elements_page>` and applying :ref:`mesh modifications <modifying_meshes_page>`;
+* :ref:`viewing meshes <viewing_meshes_overview_page>` in the VTK viewer and :ref:`getting info <mesh_infos_page>` on mesh and its sub-objects;
+* :ref:`remeshing meshes <adaptation_page>`;
+* applying to meshes :ref:`Quality Controls <quality_page>`, allowing to highlight important elements;
+* taking various :ref:`measurements <measurements_page>` of the mesh objects.
+
+There is a set of :ref:`tools <tools_page>` plugged-in the module to extend the basic functionality listed above.
+
+Almost all mesh module functionalities are accessible via :ref:`smeshpy_interface_page`.
+
+It is possible to use the variables predefined in :ref:`Salome notebook <using_notebook_mesh_page>` to set parameters of operations.
+
+Mesh module preferences are described in the :ref:`mesh_preferences_page` section of SALOME Mesh Help.
+
+.. image:: ../images/image7.jpg
+       :align: center
+
+.. centered::
+       Example of MESH module usage for engineering tasks
+
+
+**Table of Contents**
+
+.. toctree::
+   :titlesonly:
+   :maxdepth: 3
+
+   about_meshes
+   modifying_meshes
+   grouping_elements
+   about_filters
+   about_quality_controls
+   adaptation
+   measurements
+   viewing_meshes_overview
+   smeshpy_interface
+   tools
+   mesh_preferences
+   using_notebook_smesh_page
diff --git a/doc/gui/input/length.rst b/doc/gui/input/length.rst
new file mode 100644 (file)
index 0000000..a873984
--- /dev/null
@@ -0,0 +1,13 @@
+.. _length_page:
+
+******
+Length
+******
+
+Length quality control criterion returns a value of length of edge.
+
+.. image:: ../images/length-crit.png
+       :align: center
+
+**See Also** a sample TUI Script of a :ref:`tui_length_1d` filter.  
+
diff --git a/doc/gui/input/length_2d.rst b/doc/gui/input/length_2d.rst
new file mode 100644 (file)
index 0000000..7a1f811
--- /dev/null
@@ -0,0 +1,23 @@
+.. _length_2d_page:
+
+*********
+Length 2D
+*********
+
+This quality control criterion consists of calculation of length of the links between corner nodes of mesh faces.
+
+*To apply the Length 2D quality criterion to your mesh:*
+
+.. |img| image:: ../images/image34.png
+
+#. Display your mesh in the viewer. 
+#. Choose **Controls > Face Controls > Length 2D** or click *"Length 2D"* button |img| in the toolbar. 
+
+
+Your mesh will be displayed in the viewer with links colored according to the applied mesh quality control criterion:
+
+.. image:: ../images/length2d.png
+       :align: center
+
+
+**See Also** a sample TUI Script of a :ref:`tui_length_2d` filter.
diff --git a/doc/gui/input/make_2dmesh_from_3d.rst b/doc/gui/input/make_2dmesh_from_3d.rst
new file mode 100644 (file)
index 0000000..a88c20f
--- /dev/null
@@ -0,0 +1,55 @@
+.. _make_2dmesh_from_3d_page:
+
+**************************
+Generate boundary elements
+**************************
+
+This functionality allows to generate mesh elements on the borders of elements of a higher dimension, for example, to create 2D elements around a block of 3D elements as in the following figure.
+
+.. image:: ../images/2d_from_3d_example.png
+       :align: center
+
+.. centered::
+       Missing 2D elements were generated
+
+
+*To generate border elements:*
+
+.. |img| image:: ../images/2d_from_3d_ico.png
+
+#. Select a mesh or group in the Object Browser or in the 3D Viewer
+#. From the **Modification** menu choose **Create boundary elements** item, or click "Create boundary elements" button |img| in the toolbar
+
+   The following dialog box will appear:
+
+       .. image:: ../images/2d_from_3d_dlg.png 
+               :align: center
+
+       .. centered::
+                Create boundary elements dialog box
+
+#. Check in the dialog box one of two radio buttons corresponding to the type of operation you would like to perform.
+#. Fill the other fields available in the dialog box.
+#. Click the **Apply** or **Apply and Close** button to perform the operation.
+
+*Create boundary elements* dialog allows creation of boundary elements of two types.
+
+* **2D from 3D** creates missing mesh faces on free facets of volume elements
+* **1D from 2D** creates missing mesh edges on free edges of mesh faces
+
+Here a **free facet** means a facet shared by only one volume, a **free edge**
+means an edge shared by only one mesh face.
+
+In this dialog:
+
+* specify the **Target** mesh, where the boundary elements will be created.
+  
+       * **This mesh** adds elements in the selected mesh.
+       * **New mesh** adds elements to a new mesh. The new mesh appears in the Object Browser with the name that you can change in the adjacent box. 
+  
+* activate **Copy source mesh** checkbox to copy all elements of the selected mesh to the new mesh, else the new mesh will contain only boundary elements (old and created by this operation).
+* activate **Create group** checkbox to create a group to which all the boundary elements (old and new) are added. The new group appears in the Object Browser with the name that you can change in the adjacent box. 
+
+**See Also** a sample TUI Script of a :ref:`tui_make_2dmesh_from_3d` operation.  
+
+
diff --git a/doc/gui/input/make_2dmesh_from_3d_elements.rst b/doc/gui/input/make_2dmesh_from_3d_elements.rst
new file mode 100644 (file)
index 0000000..25e2233
--- /dev/null
@@ -0,0 +1,45 @@
+.. _make_2dmesh_from_3d_elements_page:
+
+**************************
+Generate 2D mesh from 3D elements
+**************************
+
+This functionality allows to generate 2D mesh elements from the 3D elements in the mesh.
+
+.. image:: ../images/2d_mesh_from_3d_elements.jpg
+       :align: center
+
+.. centered::
+       2D mesh created from the 3D elements
+
+
+*To generate 2D elements:*
+
+.. |img| image:: ../images/2d_mesh_from_3d_elements_icon.png
+
+#. Select a mesh or group in the Object Browser or in the 3D Viewer
+#. From the **Modification** menu choose **Create 2D mesh from 3D** item, or click "Create 2D mesh from 3D" button |img| in the toolbar
+
+   The following dialog box will appear:
+
+       .. image:: ../images/2d_mesh_from_3d_elements_dlg.png   
+               :align: center
+
+       .. centered::
+                Create 2D mesh from 3D elements dialog box
+
+#. Click the **Apply** or **Apply and Close** button to perform the operation.
+
+In this dialog:
+
+* specify the **Target** mesh, where the boundary elements will be created.
+  
+       * **This mesh** adds elements in the selected mesh.
+       * **New mesh** adds elements to a new mesh. The new mesh appears in the Object Browser with the name that you can change in the adjacent box. 
+  
+* activate **Copy source mesh** checkbox to copy all elements of the selected mesh to the new mesh, else the new mesh will contain only 2D elements (old and created by this operation).
+* activate **Create group** checkbox to create a group to which all the 2D elements (old and new) are added. The new group appears in the Object Browser with the name that you can change in the adjacent box. 
+
+**See Also** a sample TUI Script of a :ref:`tui_make_2dmesh_from_3d_elements` operation.  
+
+
diff --git a/doc/gui/input/max_element_length_2d.rst b/doc/gui/input/max_element_length_2d.rst
new file mode 100644 (file)
index 0000000..6e2fa03
--- /dev/null
@@ -0,0 +1,21 @@
+.. _max_element_length_2d_page:
+
+*******************
+Element Diameter 2D
+*******************
+
+This quality control criterion consists in calculation of the maximal length of edges and diagonals of 2D mesh elements (triangles and quadrangles). For polygons the value is always zero.
+
+*To apply the Element Diameter 2D quality criterion to your mesh:*
+
+.. |img| image:: ../images/image42.png
+
+#. Display your mesh in the viewer. 
+#. Choose **Controls > Face Controls > Element Diameter 2D** or click *"Element Diameter 2D"* button |img| in the toolbar. 
+
+   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
+
+       .. image:: ../images/max_element_length_2d.png
+               :align: center
+
+**See Also** a sample TUI Script of a :ref:`tui_max_element_length_2d` filter.
diff --git a/doc/gui/input/max_element_length_3d.rst b/doc/gui/input/max_element_length_3d.rst
new file mode 100644 (file)
index 0000000..9e2adb8
--- /dev/null
@@ -0,0 +1,22 @@
+.. _max_element_length_3d_page:
+
+*******************
+Element Diameter 3D
+*******************
+
+This quality control criterion consists in calculation of the maximal length of edges and diagonals of 3D mesh elements (tetrahedrons, pyramids, etc). For polyhedra the value is always zero. 
+
+*To apply the Element Diameter 3D quality criterion to your mesh:*
+
+.. |img| image:: ../images/image43.png
+
+#. Display your mesh in the viewer. 
+#. Choose **Controls > Volume Controls > Element Diameter 3D** or click *"Element Diameter 3D"* button |img| in the toolbar. 
+
+   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
+
+       .. image:: ../images/max_element_length_3d.png
+               :align: center
+
+
+**See Also** a sample TUI Script of a :ref:`tui_max_element_length_3d` filter.
diff --git a/doc/gui/input/measurements.rst b/doc/gui/input/measurements.rst
new file mode 100644 (file)
index 0000000..9fb3cac
--- /dev/null
@@ -0,0 +1,100 @@
+.. _measurements_page:
+
+************
+Measurements
+************
+
+Mesh module provides the possibility to perform different measurements of the selected mesh data.
+
+All measurement operations are available via **Measurements** top-level menu. Access to the measurements operations is implemented via a single dialog box, where each operation is represented as a separate tab page.
+
+.. _min_distance_anchor:
+
+Minimum Distance
+################
+
+This operation allows measuring the distance between two objects. Currently only node-to-node and node-to-origin operations are available, but this operation will be extended in the future to support other mesh objects - elements, meshes, sub-meshes and groups.
+
+To start **Minimum Distance** operation, select **Minimum Distance** tab in **Measurements** dialog.
+
+.. image:: ../images/min_distance.png
+       :align: center
+
+Choose the first and the second target by switching the corresponding radio buttons, then select the objects the distance between which is to be calculated (or input their IDs directly in case of nodes/elements) and press **Compute** button.
+
+The following targets are supported:
+
+* **Node:** single mesh node;
+* **Element:** single mesh element (not available in this version);
+* **Object:** mesh, sub-mesh or group object (not available in this version);
+* **Origin:** origin of the global coordinate system.
+
+The result will be shown in the bottom area of the dialog. In addition, a simple preview will be shown in the 3D viewer.
+
+.. image:: ../images/min_distance_preview.png
+       :align: center
+
+.. _bounding_box_anchor:
+
+Bounding Box
+############
+
+This operation allows calculating the bounding box of the selected object(s).
+
+To start **Bounding Box** operation, select **Bounding Box** tab in **Measurements** dialog.
+
+.. image:: ../images/bnd_box.png
+       :align: center
+
+Choose the required type of the object by switching the corresponding radio button, select the object(s) and press *Compute* button.
+
+The following types of input are available:
+
+* **Objects:** one or several mesh, sub-mesh or group objects;
+* **Nodes:** a set of mesh nodes;
+* **Elements:** a set of mesh elements.
+
+The result of calculation will be shown in the bottom area of the dialog. In addition, a simple preview will be shown in the 3D viewer.
+
+.. image:: ../images/bnd_box_preview.png
+       :align: center
+
+.. _basic_properties_anchor:
+
+Basic Properties
+################
+
+This operation provides calculation of length, area or volume for the the selected object:
+
+* **Length** is calculated as a sum of lengths of all 1D elements;
+* **Area** is a sum of areas of all 2D elements
+* **Volume** is a sum of volumes of all 3D elements. 
+
+To start a **Basic Properties** calculation, select **Length**, **Area** or **Volume** item.
+
+.. image:: ../images/basic_props.png
+       :align: center
+
+In the dialog box select the required type of calculation (length, area or volume) and the object (mesh, sub-mesh or group) and press **Compute** button.
+
+The result of calculation will be shown in the bottom area of the dialog.
+
+.. note::
+       * If the mesh consists of 3D elements only, its "length" and "area" will be 0.
+       * As calculation result is a sum of lengths, areas and volumes of all mesh elements, the duplication is not taken into account; i.e. all duplicated elements (elements built on the same set of nodes) will be included into the result.
+       * Similarly, intersection of elements is not taken into account.
+
+.. _angle_anchor:
+
+Angle
+#####
+
+This operation measures angle defined by three nodes. The second of the specified nodes is a vertex of angle. 
+
+You can specify nodes either by clicking them in the Viewer or by typing their IDs in **Tree nodes** field. If the nodes are correctly specified, upon pressing **Compute** button the angle measure will be displayed and the angle will be shown in the Viewer.
+
+.. image:: ../images/angle_measure.png
+       :align: center
+
+
+**See Also** a sample TUI Script of :ref:`tui_measurements_page`.
diff --git a/doc/gui/input/merging_elements.rst b/doc/gui/input/merging_elements.rst
new file mode 100644 (file)
index 0000000..628e364
--- /dev/null
@@ -0,0 +1,68 @@
+.. _merging_elements_page:
+
+****************
+Merging Elements
+****************
+
+This functionality allows to merge coincident elements of a mesh. Two elements are considered coincident if they are based on the same set of nodes.
+
+.. image:: ../images/mergeelems_ico.png
+       :align: center
+
+.. centered::
+       *"Merge elements"* menu button
+
+To merge elements choose in the main menu **Modification** -> **Transformation** -> **Merge elements** item. The following dialog box shall appear:
+
+.. image:: ../images/mergeelems_auto.png
+       :align: center
+
+.. |ad| image:: ../images/add.png
+.. |rm| image:: ../images/remove.png
+.. |mv| image:: ../images/sort.png
+
+In this dialog:
+
+       * **Names** contains names of the selected mesh objects whose elements will be merged.
+       * **Automatic** or **Manual** Mode allows choosing how the elements are processed. In the **Automatic** Mode all elements created on the same nodes will be merged. In **Manual** mode you can adjust groups of coincident elements detected by the program.
+       * **Exclude groups from detection** group allows to ignore the elements which belong to the specified mesh groups. This control is active provided that the mesh includes groups.
+       * **Elements to keep during the merge** group allows to specify elements to keep in the mesh. (By default an element being the first in a group of coincident elements is kept.) It is possible to either select elements in the Viewer or select groups whose elements will be kept.
+  
+               * *Selection* button activates selection of elements to keep.
+               * **Elements** button activates selection of elements in the Viewer.
+               * **Groups and sub-meshes** button activates selection of groups and sub-meshes.
+               * **Add** button adds selected elements or groups to the list.
+               * Elements or groups selected in the list can be removed using **Remove** button.
+
+
+         If the **Manual** Mode is selected, additional controls are available:
+
+               .. image:: ../images/mergeelems.png
+                       :align: center
+     
+                                  
+               * **Detect** button generates the list of coincident elements found in the selected object.
+               * **Coincident elements** is a list of groups of elements for merging. After the operation all elements of each group will be united into one element. The first element of a group is kept and the others are removed.
+               * **Remove** button deletes the selected group from the list.
+               * **Add** button adds to the list a group of elements selected in the viewer with pressed "Shift" key.
+               * **Select all** check-box selects all groups.
+               * **Show double elements IDs** check-box shows/hides identifiers of elements of the selected groups in the 3D viewer.
+               * **Edit selected group of coincident elements** list allows editing the selected group:
+    
+                       * |ad| adds to the group the elements selected in the viewer.
+                       * |rm| removes the selected elements from the group.
+                       * |mv| moves the selected element to the first position in the group in order to keep it in the mesh.
+    
+  
+
+       * To confirm your choice click **Apply** or **Apply and Close** button.
+
+
+In the following picture you see a triangle which coincides with one of the elements of the mesh. After we apply **Merge Elements** functionality, the triangle will be completely merged with the mesh.
+
+.. image:: ../images/meshtrianglemergeelem1.png
+       :align: center
+
+**See Also** a sample TUI Script of a :ref:`tui_merging_elements` operation.
+
+
diff --git a/doc/gui/input/merging_nodes.rst b/doc/gui/input/merging_nodes.rst
new file mode 100644 (file)
index 0000000..18096ba
--- /dev/null
@@ -0,0 +1,79 @@
+.. _merging_nodes_page:
+
+*************
+Merging nodes
+*************
+
+This functionality allows user to detect groups of coincident nodes with specified tolerance; each group of the coincident nodes can be then converted to the single node.
+
+.. image:: ../images/mergenodes_ico.png
+       :align: center
+
+.. centered::
+       *"Merge nodes"* menu button
+
+.. |ad| image:: ../images/add.png
+.. |rm| image:: ../images/remove.png
+.. |mv| image:: ../images/sort.png
+
+*To merge nodes of your mesh:*
+
+#. Choose **Modification** -> **Transformation** -> **Merge nodes** menu item. The following dialog box shall appear:
+
+       .. image:: ../images/mergenodes_auto.png
+               :align: center
+        
+       * **Names** contains names of the selected mesh objects whose nodes will be merged.
+       * **Automatic** or **Manual** mode allows choosing how the nodes are processed. In **Manual** mode you can adjust groups of coincident nodes detected by the program and/or select any nodes to be merged.
+       * **Tolerance** is a maximum distance between nodes sufficient for merging.
+       * Activation of **No merge of corner and medium nodes of quadratic cells** check-box prevents merging medium nodes of quadratic elements with corner nodes. This check-box is enabled provided that the selected mesh includes quadratic elements.
+       * Activation of **Avoid making holes** check-box prevents merging nodes that make elements invalid (but not degenerated) and hence removed. Thus, no holes in place of removed elements appear. 
+       * **Exclude groups from detection** group allows to ignore the nodes which belong to the specified mesh groups. This control is active provided that the mesh includes groups.
+       * **Nodes to keep during the merge** group allows to specify nodes to keep in the mesh. (By default a node being the first in a group of coincident nodes is kept.) It is possible to either select nodes in the Viewer or select groups of any element type whose nodes will be kept.
+  
+               * *Selection* button activates selection of nodes to keep.
+               * **Nodes** button activates selection of nodes in the Viewer.
+               * **Groups and sub-meshes** button activates selection of groups and sub-meshes.
+               * **Add** button adds selected nodes or groups to the list.
+               * Nodes or groups selected in the list can be removed using **Remove** button.
+
+#. **Automatic mode:**
+
+       * In the **Automatic** Mode all nodes within the indicated tolerance will be merged. The nodes which belong to the groups specified in **Exclude groups from detection** will NOT be taken into account.
+
+#. The **Manual** mode gives you full control of what the operation will do. In this mode additional controls are available:
+
+       * **Detect** button generates the list of coincident nodes for the given **Tolerance**.
+       * **Coincident nodes** is a list of groups of nodes for merging. Upon **Apply** all nodes of each group will be united into one node. The first node of a group is kept and the others are removed. By default the first node has a lowest ID within the group.
+
+               * **Remove** button deletes the selected group from the list.
+               * **Add** button adds to the list a group of nodes selected in the viewer.
+               * **Select all** check-box selects all groups.
+               * **Show double nodes IDs** check-box shows/hides identifiers of nodes of selected groups in the 3D viewer.
+
+       .. image:: ../images/mergenodes.png
+               :align: center
+
+
+       * **Edit selected group of coincident nodes** list allows editing the selected group:
+    
+         * |ad| adds to the group the nodes selected in the viewer.
+         * |rm| removes from the group the selected nodes.
+         * |mv| moves the selected node to the first position in the group in order to keep it in the mesh.
+
+#. To confirm your choice click **Apply** or **Apply and Close** button.
+
+.. figure:: ../images/merging_nodes1.png 
+   :align: center
+
+   The initial object. Nodes 25, 26 and 5 are added to **Nodes to keep during the merge** group.
+
+.. figure:: ../images/merging_nodes2.png
+   :align: center
+
+   The object has been merged
+
+
+**See Also** a sample TUI Script of a :ref:`tui_merging_nodes` operation.  
+
+
diff --git a/doc/gui/input/mesh_infos.rst b/doc/gui/input/mesh_infos.rst
new file mode 100644 (file)
index 0000000..f61e35e
--- /dev/null
@@ -0,0 +1,183 @@
+.. _mesh_infos_page:
+
+****************
+Mesh Information
+****************
+
+The user can obtain information about the selected mesh object (mesh, sub-mesh or group) using **Mesh Information** dialog box.
+
+.. |img| image:: ../images/image49.png
+
+To view the **Mesh Information**, select your mesh, sub-mesh or group in the **Object Browser** and invoke **Mesh Information** item from the **Mesh** menu or from the context menu, or click *"Mesh Information"* button |img| in the toolbar.
+
+
+The **Mesh Information** dialog box provides three tab pages:
+
+* :ref:`Base Info <advanced_mesh_infos_anchor>` - to show base and quantitative information about the selected mesh object.
+* :ref:`Element Info <mesh_element_info_anchor>` - to show detailed information about the selected mesh nodes or elements.
+* :ref:`Additional Info <mesh_addition_info_anchor>` - to show additional information available for the selected mesh, sub-mesh or group object.
+* :ref:`Quality Info <mesh_quality_info_anchor>` - to show overall quality information about the selected mesh, sub-mesh or group object.
+
+.. _dump_mesh_infos:
+
+Dump Mesh Infos
+###############
+
+The button **Dump** allows printing the information displayed in the dialog box to a .txt file. The dialog for choosing a file also allows to select which tab pages to dump via four check-boxes. The default state of the check-boxes can be changed via :ref:`Mesh information <mesh_information_pref>` preferences.
+
+.. _advanced_mesh_infos_anchor:
+
+Base Information
+################
+
+The **Base Info** tab page of the dialog box provides general information on the selected object - mesh, sub-mesh or mesh group: name, type, total number of nodes and elements separately for each type: 0D elements, edges, faces, volumes, balls.
+
+.. image:: ../images/advanced_mesh_infos.png
+       :align: center
+
+.. centered::
+       *"Base Info"* page
+
+.. _mesh_element_info_anchor:
+
+Mesh Element Information
+########################
+
+The **Element Info** tab page of the dialog box gives detailed information about the selected mesh node(s) or element(s), namely:
+
+* For a node:
+       * Node ID;
+       * Coordinates (X, Y, Z);
+       * Connectivity information (connected elements); double click in this line reveals information about these elements;
+       * Position on a shape (for meshes built on a geometry);
+       * Groups information (names of groups the node belongs to).
+
+       .. image:: ../images/eleminfo1.png
+               :align: center
+
+       .. centered::
+               *"Element Info"* page, node information
+
+
+* For an element:
+       * Element ID;
+       * Type (triangle, quadrangle, etc.);
+       * Gravity center (X, Y, Z coordinates);
+       * Connectivity information (connected nodes); double click in a line of a node reveals the information about this node;
+       * Quality controls (area, aspect ratio, volume, etc.);
+       * Position on a shape (for meshes built on a geometry);
+       * Groups information (names of groups the element belongs to).
+
+       .. image:: ../images/eleminfo2.png
+               :align: center
+
+       .. centered::
+               *"Element Info"* page, element information
+
+The user can either input the ID of a node or element he wants to analyze directly in the dialog box or select the node(s) or element(s) in the 3D viewer.
+
+If **Show IDs** is activated, IDs of selected nodes or elements are displayed in the 3D viewer.
+
+.. note::
+       The information about the groups, to which the node or element belongs, can be shown in a short or in a detailed form. By default, for performance reasons, this information is shown in a short form (group names only). The detailed information on groups can be switched on via :ref:`Show details on groups in element information tab <group_detail_info_pref>` option of :ref:`mesh_preferences_page`.
+
+.. _mesh_addition_info_anchor:
+
+Additional Information
+######################
+
+The **Additional Info** tab page of the dialog box provides an additional information on the selected object: mesh, sub-mesh or group.
+
+For a mesh object, the following information is shown:
+
+* Name
+* Type: based on geomerty, imported, standalone
+* Shape (if mesh is based on geometry)
+* File (if mesh is imported from the file)
+* Groups
+* Sub-meshes
+
+.. image:: ../images/addinfo_mesh.png
+       :align: center
+
+.. centered::
+       *"Additional Info"* page, mesh information
+
+
+For a sub-mesh object, the following information is shown:
+
+* Name
+* Parent mesh
+* Shape
+
+.. image:: ../images/addinfo_submesh.png
+       :align: center
+
+.. centered::
+       *"Additional Info"* page, sub-mesh information
+
+
+.. _mesh_addition_info_group_anchor:
+
+Additional info for Group
+=========================
+
+For a group object, the following information is shown:
+
+* Name
+* Parent mesh
+* Type: standalone, group on geometry, group on filter
+* Entity type: node, edge, face, volume
+* Size
+* Color
+* Number of underlying nodes (for non-nodal groups)
+
+.. image:: ../images/addinfo_group.png
+       :align: center
+
+.. centered::
+       *"Additional Info"* page, group information
+
+
+.. note::
+       For the performance reasons, the number of underlying nodes is computed only by demand. For this, the user should press the "Compute" button (see picture). Also, the number of underlying nodes is automatically calculated if the size of the group does not exceed the :ref:`Automatic nodes compute limit <nb_nodes_limit_pref>` preference value (zero value means no limit).
+
+.. _mesh_quality_info_anchor:
+
+Quality Information
+###################
+
+The **Quality Info** tab provides overall information about mesh quality controls  on the selected object - mesh, sub-mesh or mesh group:
+
+* Name;
+* Nodes information:
+       * Number of free nodes;
+       * Maximal number of elements connected to a node;
+       * Number of double nodes;
+* Edges information:
+       * Number of double edges;
+* Faces information:
+       * Number of double faces;
+       * Number of over-constrained faces;
+       * Aspect Ratio histogram;
+* Volume information:
+       * Number of double volumes;
+       * Number of over-constrained volumes;
+       * Aspect Ratio 3D histogram.
+
+.. image:: ../images/ctrlinfo.png
+       :align: center
+
+.. centered::
+       *"Quality Info"* page
+
+.. note::
+       It is possible to change **Double nodes tolerance**, which will be used upon consequent pressing *Compute* button. The default value of the tolerance can be set via the :ref:`Quality controls <dbl_nodes_tol_pref>` preferences.
+
+.. note::
+       For performance reasons, all quality control values for big meshes are computed only by demand. For this, press the *Compute* button. Also, values are automatically computed if the number of nodes / elements does not exceed the :ref:`Automatic controls compute limit <auto_control_limit_pref>` set via the :ref:`Mesh information <mesh_information_pref>` preferences (zero value means that there is no limit).
+
+.. note::
+       The plot functionality is available only if the GUI module is built with Plot 2D Viewer (option SALOME_USE_PLOT2DVIEWER is ON when building GUI module).
+
+See the :ref:`TUI Example <tui_viewing_mesh_infos>` for basic mesh information and :ref:`TUI Example <tui_node_element_mesh_infos>`.
diff --git a/doc/gui/input/mesh_preferences.rst b/doc/gui/input/mesh_preferences.rst
new file mode 100644 (file)
index 0000000..c7a5167
--- /dev/null
@@ -0,0 +1,228 @@
+.. _mesh_preferences_page:
+
+****************
+Mesh preferences
+****************
+
+In the Mesh module you can set mesh preferences, which can be used right now or in later sessions with this module according to the preferences.
+
+General Preferences
+###################
+
+.. image:: ../images/pref21.png
+       :align: center
+
+.. _automatic_update_pref:
+
+* **Automatic Update**
+
+  * **Automatic Update** - if activated, the mesh in your viewer will be automatically updated after it's computation, depending on values of additional preferences specified below.
+  * **Size limit (elements)** - allows specifying the maximum number of elements in the resulting mesh for which the automatic updating of the presentation is performed. This option affects only :ref:`Compute <compute_anchor>` operation. Zero value means "no limit". Default value is 500 000 mesh elements. 
+  * **Incremental limit check** - if activated, the mesh size limit check is not applied to the total number of elements in the resulting mesh, it is applied iteratively to each entity type in the following order: 0D elements, edges, faces, volumes, balls. At each step the number of entities of a certain type is added to the total number of elements computed at the previous step - if the resulting number of elements does not exceed the size limit, the entities of this type are shown, otherwise the user is warned that some entities are not shown.
+
+.. _display_mode_pref:
+
+* **Display**
+
+  * **Fit All upon Show Only** - if activated, *Show Only* command additionally performs *Fit All* command.
+
+  * **Default display mode** - allows to set Wireframe, Shading, Nodes or Shrink :ref:`presentation mode <display_mode_page>` as default.
+
+.. _quadratic_2d_mode_pref:
+
+* **Representation of the 2D quadratic elements**
+
+  * **Default mode of the 2D quadratic elements** - allows to select either *Lines* or *Arcs* as a default :ref:`representation <quadratic_2d_mode>` of 1D and 2D :ref:`quadratic elements <adding_quadratic_elements_page>`.
+  * **Maximum Angle** - maximum deviation angle used by the application to build arcs.
+
+* **Quality Controls**
+
+  * **Display entity** - if activated, only currently :ref:`controlled <quality_page>` entities are displayed in the viewer and other entities are temporarily hidden. For example if you activate :ref:`Length <length_page>` quality control, which controls the length of mesh segments, then only mesh segments are displayed and faces and volumes are hidden. 
+  * **Use precision** - if activated, all quality controls will be computed at precision defined by **Number of digits after point** - as integers by default.
+
+.. _dbl_nodes_tol_pref:
+
+  * **Double nodes tolerance** - defines the maximal distance between two mesh nodes, at which they are considered coincident by :ref:`Double nodes <double_nodes_control_page>` quality control. This value is also used in :ref:`Quality Info <mesh_quality_info_anchor>` tab page of :ref:`Mesh Information <mesh_infos_page>` dialog.
+
+* **Mesh export**
+
+.. _export_auto_groups_pref:
+
+  * **Automatically create groups for MED export** - defines a default state of a corresponding check-box in :ref:`MED Export <export_auto_groups>` dialog.
+
+.. _group_export_warning_pref:
+
+  * **Show warning when exporting group** - if activated, a warning is displayed when exporting a group.
+
+.. _med_export_numbers_pref:
+
+  * **Save cell/node numbers to MED file** - if activated, optional node and cell numbers are saved to MED file.
+
+.. _medexport_z_tolerance_pref:
+
+  * **Z tolerance for MED export** - defines Z tolerance in :ref:`MED Export <export_auto_groups>` dialog.
+
+.. _show_comp_result_pref:
+
+* **Mesh computation**
+
+  * **Show a computation result notification** - allows to select the notification mode about a :ref:`mesh computation <compute_anchor>` result. There are 3 possible modes:
+               * **Never** - not to show the :ref:`result dialog <meshing_result_anchor>` at all;
+               * **Errors only** - the result dialog will be shown if there were some errors during a mesh computation;
+               * **Always** - show the result dialog after each mesh computation. This is a default mode.
+
+.. _mesh_information_pref:
+
+* **Mesh information**
+
+  * **Mesh element information** - allows changing the way :ref:`mesh element information <mesh_element_info_anchor>` is shown:
+               * **Simple** - as a plain text
+               * **Tree** - in a tree-like form
+
+.. _nb_nodes_limit_pref:
+
+  * **Automatic nodes compute limit** - allows defining the size limit for the :ref:`mesh groups <mesh_addition_info_group_anchor>` for which the number of underlying nodes is calculated automatically. If the group size exceeds the value set in the preferences, the user will have to press \em Compute button explicitly. Zero value means "no limit". By default the value is set to 100 000 mesh elements.
+
+.. _auto_control_limit_pref:
+
+  * **Automatic controls compute limit** - allows defining a maximal number of mesh elements for which the quality controls in the :ref:`Quality Information <mesh_quality_info_anchor>` tab page are calculated automatically. If the number of mesh elements exceeds the value set in the preferences, it is necessary to press **Compute** button explicitly to calculate a quality measure. Zero value means "no limit". By default the value is set to 3 000 mesh elements.
+
+.. _group_detail_info_pref:
+
+  * **Show details on groups in element information tab** - when this option is switched off (default), only the names of groups, to which the node or element belongs, are shown in the :ref:`Element Info <mesh_element_info_anchor>` tab of "Mesh Information" dialog box. If this option is switched on, the detailed information on groups is shown.
+  * **Dump base information** - allows dumping base mesh information to the file, see :ref:`Mesh Information <dump_mesh_infos>`.
+  * **Dump element information** - allows dumping element information to the file, see :ref:`Mesh Information <dump_mesh_infos>`.
+  * **Dump additional information** - allows dumping additional mesh information to the file, see :ref:`Mesh Information <dump_mesh_infos>`.
+  * **Dump controls information** - allows dumping quality mesh information to the file, see :ref:`Mesh Information <dump_mesh_infos>`.
+
+* **Automatic Parameters**
+
+.. _diagonal_size_ratio_pref:
+       
+  * **Ratio Bounding Box Diagonal / Max Size** - defines the ratio between the bounding box of the meshed object and the Max Size of segments. It is used as a default value of :ref:`1D Meshing Hypotheses <a1d_meshing_hypo_page>` defining length of segments, especially by :ref:`Max Size <max_length_anchor>` hypothesis.
+
+.. _nb_segments_pref:
+
+  * **Default Number of Segments** - defines the default number of segments in :ref:`Number of Segments <number_of_segments_anchor>` hypothesis.
+
+.. _use_meshgems_pref:
+
+  * **Use MeshGems meshers when assigning set of hypotheses** - if activated, commercial meshers of MeshGems suite are used instead of a free mesher NETGEN when assigning a set of hypotheses in Create Mesh/Sub-mesh dialog.
+  
+* **Mesh loading**
+
+  * **No mesh loading from study file at hypothesis modification** - if activated, the mesh data will not be loaded from the study file when a hypothesis is modified. This allows saving time by omitting loading data of a large mesh that is planned to be recomputed with other parameters.
+
+* **Input fields precision** - allows to adjust input precision of different parameters. The semantics of the precision values is described in detail in **Using input widgets** chapter of GUI documentation (Introduction to Salome Platform / Introduction to GUI / Using input widgets). In brief: **positive** precision value is the maximum allowed number of digits after the decimal point in the fixed-point format; **negative** precision value is the maximum allowed number of significant digits in mantissa in either the fixed-point or scientific format.
+
+  * **Length precision** - allows to adjust input precision of coordinates and dimensions.
+  * **Angular precision** - allows to adjust input precision of angles.
+  * **Length tolerance precision** - allows to adjust input precision of tolerance of coordinates and dimensions.
+  * **Parametric precision** - allows to adjust input precision of parametric values.
+  * **Area precision** - allows to adjust input precision of mesh element area.
+  * **Volume precision** - allows to adjust input precision of mesh element volume.
+
+* **Preview**
+
+.. _chunk_size_pref:
+
+  * **Sub-shapes preview chunk size** - allows to limit the number of previewed sub-shapes shown in the hypotheses creation dialog boxes, for example "Reverse Edges" parameter of :ref:`Number of Segments <number_of_segments_anchor>` hypothesis.
+
+* **Python Dump**
+
+  * **Historical python dump** - allows switching between *Historical* and *Snapshot* dump mode:
+
+    * In *Historical* mode, Python Dump script includes all commands performed by SMESH engine.
+    * In *Snapshot* mode, the commands relating to objects removed from the Study as well as the commands not influencing the current state of meshes are excluded from the script.
+
+.. _mesh_tab_preferences:
+
+Mesh Preferences
+################
+
+**Mesh** tab page contains parameters defining the way the mesh is displayed in the 3D Viewer.
+
+.. image:: ../images/pref22.png
+       :align: center
+
+* **Nodes** - allows to define default parameters for nodes, which will be applied for a newly created mesh only. Existing meshes can be customized using :ref:`Properties dialog box <colors_size_page>` available from the context menu of a mesh.
+
+  * **Color** -  allows to select the color of nodes. Click on the downward arrow near the colored line to access to the **Select Color** dialog box.
+  * **Type of marker** - allows to define the shape of nodes.
+  * **Scale of marker** - allows to define the size of nodes.
+
+* **Elements** - allows to define default parameters for different elements, which will be applied to a newly created mesh only. Existing meshes can be customized using :ref:`Properties dialog box <colors_size_page>` available from the context menu of a mesh.
+
+  * **Surface color**  - allows to select the surface color of 2D elements (seen in Shading mode). Click on the downward arrow near the colored line to access to the **Select Color** dialog box.
+  * **Back surface color** - allows to select the back surface color of 2D elements. This is useful to differ 2d elements with reversed orientation. Use the slider to select the color generated basing on the **Surface color** by changing its brightness and saturation.
+  * **Volume color** - allows to select the surface color of 3D elements (seen in Shading mode).
+  * **Reversed volume color** - allows to select the surface color of reversed 3D elements. Use the slider to select the color generated basing on the **Volume color** by changing its brightness and saturation.
+  * **0D element color** - allows to choose color of 0D mesh elements.
+  * **Ball color** - allows to choose color of discrete mesh elements (balls).
+  * **Outline color** - allows to select the color of element borders.
+  * **Wireframe color** - allows to select the color of borders of elements in the wireframe mode.
+  * **Preview color** - allows to select the preview color of the elements, which is used while :ref:`manual creation of elements <adding_nodes_and_elements_page>`.
+  * **Size of 0D elements** - specifies default size of 0D elements.
+  * **Size of ball elements** - specifies default size of discrete elements (balls).
+  * **Scale factor of ball elements** - specifies default scale factor of discrete elements (balls) allowing to adjust their size in the Viewer.
+  * **Line width** - allows to define the width of 1D elements (segments).
+  * **Outline width** - allows to define the width of borders of 2D and 3D elements (shown in the Shading mode).
+  * **Shrink coef.** - allows to define relative size of a shrunk element compared a non-shrunk element in percents in the shrink mode.
+
+* **Groups**
+
+  * **Names color** - specifies color of group names to be used in the 3D viewer.
+  * **Default color** - specifies the default group color, which is used to create a new mesh group (see :ref:`Create Group dialog box <creating_groups_page>`).
+
+* **Numbering** allows to define properties of numbering functionality:
+
+  * **Nodes** - specifies text properties of nodes numbering (font family, size, attributes, color).
+  * **Elements** - same for elements.
+
+* **Orientation of Faces** - allows to define default properties of orientation vectors. These preferences will be applied to the newly created meshes only; properties of existing meshes can be customized using :ref:`Properties dialog box <colors_size_page>` available from the context menu of a mesh.
+
+  * **Color** - allows to define the color of orientation vectors;
+  * **Scale** - allows to define the size of orientation vectors;
+  * **3D Vector** - allows to choose between 2D planar and 3D vectors.
+
+Selection Preferences
+#####################
+
+.. image:: ../images/pref23.png
+       :align: center
+
+* **Selection** - performed with mouse-indexing (preselection) and left-clicking on an object, whose appearance changes as defined in the **Preferences**.
+
+  * **Object color** - allows to select the color of mesh (edges and borders of meshes) of the selected entity. Click on the colored line to access to the **Select Color** dialog box.
+  * **Element color** - allows to select the color of surface of selected elements (seen in Shading mode). Click on the colored line to access to the **Select Color** dialog box.
+
+* **Preselection** - performed with mouse-indexing on an object, whose appearance changes as defined in the **Preferences**.
+
+  * **Highlight color** - allows to select the color of mesh (edges and borders of meshes) of the entity. Click on the colored line to access to the **Select Color** dialog box.
+
+* **Precision** - in this menu you can set the value of precision used for **Nodes**, **Elements** and **Objects**.
+
+Scalar Bar Preferences
+######################
+
+.. image:: ../images/pref24.png
+       :align: center
+
+.. note::
+       The following settings are default and will be applied to a newly created mesh only. Existing meshes can be customized using local :ref:`Scalar Bar Properties dialog box <scalar_bar_dlg>` available from the context menu of a mesh.
+
+* **Font** - in this menu you can set type, face and color of the font of **Title** and **Labels**.
+
+* **Colors & Labels** - in this menu you can set the **number of colors** and the **number of labels** in use.
+
+* **Orientation** - here you can choose between vertical and horizontal orientation of the **Scalar Bar**.
+
+* **Origin & Size Vertical & Horizontal** - allows to define placement (**X** and **Y**) and lookout (**Width** and **Height**) of Scalar Bars.
+       * **X** - abscissa of the point of origin (from the left side).
+       * **Y** - ordinate of the origin of the bar (from the bottom).
+
+* **Distribution** in this menu you can Show/Hide distribution histogram of the values of the **Scalar Bar** and specify the **Coloring Type** of the histogram:
+       * **Multicolor** - the histogram is colored as **Scalar Bar**.
+       * **Monocolor** - the histogram is colored as selected with **Distribution color** selector.
+
+
diff --git a/doc/gui/input/mesh_through_point.rst b/doc/gui/input/mesh_through_point.rst
new file mode 100644 (file)
index 0000000..47bd8c4
--- /dev/null
@@ -0,0 +1,65 @@
+.. _mesh_through_point_page:
+
+************
+Moving nodes
+************
+
+In mesh you can define a node at a certain point either
+
+* by movement of the node closest to the point or 
+* by movement of a selected node to the point.
+* by movement of a selected node to the point specified by mouse click.
+
+*To displace a node:*
+
+#. From the **Modification** menu choose the **Move node** item or click *"Move Node"* button in the toolbar.
+
+       .. image:: ../images/image67.png
+               :align: center
+
+       .. centered::
+               *"Move Node"* button
+
+   The following dialog will appear:
+
+       .. image:: ../images/meshtopass1.png
+               :align: center
+
+       .. centered::
+               Manual node selection
+
+
+       .. image:: ../images/meshtopass2.png
+               :align: center
+
+       .. centered::
+               Automatic node selection
+
+       .. image:: ../images/meshtopass3.png
+               :align: center
+
+       .. centered::
+               Manual node selection with mouse location
+
+
+#. Specify the way of node selection: manually (the first radio button) or automatically (the second radio button).
+#. If the manual method is selected, select a node to move (X, Y, Z fields show the original coordinates of the node) or type the node ID.
+#. Enter the coordinates of the destination point. You can click **Update Destination** button to set the coordinates of the destination point equal to the coordinates of the node to move.
+#. Activate **Preview** check-box to show the result of move in the viewer.
+#. Click the **Apply** or **Apply and Close** button to confirm the operation.
+
+.. image:: ../images/moving_nodes1.png
+       :align: center
+
+.. centered::
+       The initial mesh
+
+.. image:: ../images/moving_nodes2.png
+       :align: center
+
+.. centered::
+       The modified mesh
+
+**See Also** a sample TUI Script of a :ref:`tui_moving_nodes` operation.  
+
+
diff --git a/doc/gui/input/minimum_angle.rst b/doc/gui/input/minimum_angle.rst
new file mode 100644 (file)
index 0000000..9eb9ae1
--- /dev/null
@@ -0,0 +1,22 @@
+.. _minimum_angle_page:
+
+*************
+Minimum angle
+*************
+
+**Minimum angle** mesh quality criterion consists of calculation of the minimum value of angle between two adjacent sides of a 2D meshing element (triangle or quadrangle).
+
+*To apply the Minimum angle quality criterion to your mesh:*
+
+.. |img| image:: ../images/image38.png
+
+#. Display your mesh in the viewer.
+#. Choose **Controls > Face Controls > Minimum angle** or click *"Minimum Angle"* button |img|.
+
+   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
+
+       .. image:: ../images/image92.jpg
+               :align: center
+
+**See Also** a sample TUI Script of a :ref:`tui_minimum_angle` filter.
+
diff --git a/doc/gui/input/modifying_meshes.rst b/doc/gui/input/modifying_meshes.rst
new file mode 100644 (file)
index 0000000..6e574f8
--- /dev/null
@@ -0,0 +1,89 @@
+.. _modifying_meshes_page:
+
+****************
+Modifying meshes
+****************
+
+Salome provides a vast specter of mesh modification and transformation operations, giving the possibility to:
+
+* :ref:`Add <adding_nodes_and_elements_page>` mesh elements from nodes to polyhedrons at an arbitrary place in the mesh.
+* :ref:`Add quadratic <adding_quadratic_elements_page>` mesh elements from quadratic segments to quadratic hexahedrons at an arbitrary place in the mesh.
+* :ref:`Remove <removing_nodes_and_elements_page>` any existing mesh elements and nodes.
+* :ref:`Convert linear mesh to quadratic <convert_to_from_quadratic_mesh_page>`, or vice versa.
+* :ref:`Generate boundary elements <make_2dmesh_from_3d_page>`.
+* :ref:`Generate 2D mesh from 3D elements <make_2dmesh_from_3d_elements_page>`.
+* :ref:`Translate <translation_page>` in the indicated direction the mesh or some of its elements.
+* :ref:`Rotate <rotation_page>` by the indicated axis and angle the mesh or some of its elements.
+* :ref:`Scale <scale_page>` the mesh or some of its elements.
+* :ref:`Offset <offset_elements_page>` the entire mesh, the sub-mesh or a selection of elements based on filters.
+* :ref:`Mirror <symmetry_page>` the mesh through a point, a vector or a plane of symmetry.
+* :ref:`double_nodes_page`. Duplication of nodes can be useful to emulate a crack in the model.
+* :ref:`Merge Nodes<merging_nodes_page>` coincident within the indicated tolerance.
+* :ref:`Merge Elements <merging_elements_page>` based on the same nodes.
+* Create an :ref:`extrusion <extrusion_page>` along a vector or by normal to a discretized surface.
+* Create an :ref:`extrusion along a path <extrusion_along_path_page>`.
+* Create elements by :ref:`revolution <revolution_page>` of the selected nodes and elements.
+* :ref:`Move Nodes <mesh_through_point_page>` to an arbitrary location with consequent transformation of all adjacent elements.
+* :ref:`Change orientation <changing_orientation_of_elements_page>` of the selected elements.
+* :ref:`Orient faces <reorient_faces_page>` by several means.
+* Unite meshes by :ref:`sewing <sewing_meshes_page>` free borders, border to side or side elements.
+* :ref:`Invert an edge <diagonal_inversion_of_elements_page>` between neighboring triangles.
+* :ref:`Unite two triangles <uniting_two_triangles_page>`.
+* :ref:`Unite several adjacent triangles <uniting_set_of_triangles_page>`.
+* :ref:`Cut a quadrangle <cutting_quadrangles_page>` into two triangles.
+* :ref:`Cut triangles <add_node_on_segment_page>` into two by adding a node on edge.
+* :ref:`Cut a face <add_node_on_face_page>` into triangles by adding a node on it.
+* :ref:`Split <split_to_tetra_page>` volumic elements into tetrahedra or prisms.
+* :ref:`Split bi-quadratic <split_biquad_to_linear_page>` elements into linear ones without creation of additional nodes.
+* :ref:`Smooth <smoothing_page>` elements, reducung distortions in them by adjusting the locations of nodes.
+* Apply :ref:`pattern mapping <pattern_mapping_page>`.
+* :ref:`generate_flat_elements_page`.
+* :ref:`cut_mesh_by_plane_page`.
+
+
+.. note::
+       You can use these operations to :ref:`modify the mesh <edit_anchor>` of a lower dimension before generation of the mesh of a higher dimension.
+
+.. note::
+       It is possible to use the variables defined in the SALOME **NoteBook** to specify the numerical parameters used for modification of any object.
+
+
+**Table of Contents**
+
+.. toctree::
+   :titlesonly:
+
+   adding_nodes_and_elements.rst
+   adding_quadratic_elements.rst 
+   removing_nodes_and_elements.rst 
+   translation.rst
+   rotation.rst
+   scale.rst
+   offset_elements.rst
+   symmetry.rst
+   double_nodes_page.rst 
+   sewing_meshes.rst
+   merging_nodes.rst
+   merging_elements.rst
+   mesh_through_point.rst 
+   diagonal_inversion_of_elements.rst 
+   uniting_two_triangles.rst 
+   uniting_set_of_triangles.rst
+   changing_orientation_of_elements.rst
+   reorient_faces.rst
+   cutting_quadrangles.rst
+   add_node_on_segment.rst
+   add_node_on_face.rst
+   split_to_tetra.rst
+   split_biquad_to_linear.rst
+   smoothing.rst
+   extrusion.rst
+   extrusion_along_path.rst
+   revolution.rst
+   pattern_mapping.rst
+   convert_to_from_quadratic_mesh.rst
+   make_2dmesh_from_3d.rst
+   make_2dmesh_from_3d_elements.rst
+   generate_flat_elements.rst
+   cut_mesh_by_plane.rst
+
diff --git a/doc/gui/input/modules.rst b/doc/gui/input/modules.rst
new file mode 100644 (file)
index 0000000..6cf84d1
--- /dev/null
@@ -0,0 +1,531 @@
+########################
+Structured documentation
+########################
+
+.. contents::
+
+.. currentmodule:: smeshBuilder
+
+***************
+Creating meshes
+***************
+
+.. autosummary::
+
+   smeshBuilder.Concatenate
+   smeshBuilder.CopyMesh
+
+Importing and exporting meshes
+==============================
+
+.. autosummary::
+
+   smeshBuilder.CreateMeshesFromUNV
+   smeshBuilder.CreateMeshesFromMED
+   smeshBuilder.CreateMeshesFromSTL
+   smeshBuilder.CreateMeshesFromCGNS
+   smeshBuilder.CreateMeshesFromGMF
+   Mesh.ExportMED
+   Mesh.ExportUNV
+   Mesh.ExportSTL
+   Mesh.ExportCGNS
+   Mesh.ExportDAT
+   Mesh.ExportGMF
+
+
+Constructing meshes
+===================
+
+.. autosummary::
+
+   smeshBuilder.Mesh
+   Mesh.SetName
+   Mesh.SetMeshOrder
+   Mesh.Compute
+   Mesh.Evaluate
+   Mesh.Clear
+   Mesh.GetMesh
+   Mesh.GetShape
+   Mesh.HasShapeToMesh
+   Mesh.GetComputeErrors
+   Mesh.GetAlgoState
+   Mesh.GetFailedShapes
+   Mesh.GetMeshOrder
+
+Defining Algorithms
+===================
+
+.. autosummary::
+
+   Mesh.Segment
+   Mesh.Triangle
+   Mesh.Quadrangle
+   Mesh.Hexahedron
+   Mesh.Prism
+   Mesh.BodyFitted
+   Mesh.Projection1D
+   Mesh.Projection2D
+   Mesh.Projection1D2D
+   Mesh.Projection3D
+   Mesh.UseExisting1DElements
+   Mesh.UseExisting2DElements
+   Mesh.UseExistingSegments
+   Mesh.UseExistingFaces
+   Mesh.AutomaticTetrahedralization
+   Mesh.AutomaticHexahedralization
+   smesh_algorithm.Mesh_Algorithm
+
+Defining hypotheses
+===================
+
+.. currentmodule:: StdMeshersBuilder
+
+1D Meshing Hypotheses
+---------------------
+
+.. autosummary::
+
+   StdMeshersBuilder_Segment.NumberOfSegments
+   StdMeshersBuilder_Segment.LocalLength
+   StdMeshersBuilder_Segment.MaxSize
+   StdMeshersBuilder_Segment.Arithmetic1D
+   StdMeshersBuilder_Segment.GeometricProgression
+   StdMeshersBuilder_Segment.FixedPoints1D
+   StdMeshersBuilder_Segment.StartEndLength
+   StdMeshersBuilder_Segment.Adaptive
+   StdMeshersBuilder_Segment.Deflection1D
+   StdMeshersBuilder_Segment.AutomaticLength
+   StdMeshersBuilder_Segment_Python.PythonSplit1D
+
+2D Meshing Hypotheses
+---------------------
+
+.. autosummary::
+
+   StdMeshersBuilder_Quadrangle.QuadrangleParameters
+   StdMeshersBuilder_Quadrangle.QuadranglePreference
+   StdMeshersBuilder_Quadrangle.TrianglePreference
+   StdMeshersBuilder_Quadrangle.Reduced
+   StdMeshersBuilder_Quadrangle.TriangleVertex
+
+Additional Hypotheses
+---------------------
+
+.. autosummary::
+
+   smesh_algorithm.Mesh_Algorithm.ViscousLayers
+   smesh_algorithm.Mesh_Algorithm.ViscousLayers2D
+   StdMeshersBuilder.StdMeshersBuilder_Segment.Propagation
+   StdMeshersBuilder.StdMeshersBuilder_Segment.PropagationOfDistribution
+   StdMeshersBuilder.StdMeshersBuilder_Segment.QuadraticMesh
+
+Constructing sub-meshes
+=======================
+
+.. currentmodule:: smeshBuilder
+
+.. autosummary::
+
+   Mesh.GetSubMesh
+   Mesh.ClearSubMesh
+
+Editing Meshes   
+==============
+
+.. autosummary::
+
+   Mesh.AddHypothesis
+   Mesh.RemoveHypothesis
+   Mesh.RemoveGlobalHypotheses
+   Mesh.GetHypothesisList
+   Mesh.IsUsedHypothesis
+
+*****************
+Grouping elements
+*****************
+
+.. autosummary::
+
+   Mesh.SetAutoColor
+   Mesh.GetAutoColor
+   Mesh.HasDuplicatedGroupNamesMED
+   
+Creating groups
+===============
+
+.. autosummary::
+
+   Mesh.CreateEmptyGroup
+   Mesh.Group
+   Mesh.GroupOnGeom
+   Mesh.GroupOnFilter
+   Mesh.MakeGroupByIds
+   Mesh.MakeGroup
+   Mesh.MakeGroupByCriterion
+   Mesh.MakeGroupByCriteria
+   Mesh.MakeGroupByFilter
+   Mesh.FaceGroupsSeparatedByEdges
+   Mesh.CreateDimGroup
+   Mesh.ConvertToStandalone
+   Mesh.GetGroups
+   Mesh.NbGroups
+   Mesh.GetGroupNames
+   Mesh.GetGroupByName
+
+
+Operations on groups
+====================
+
+.. autosummary::
+
+   Mesh.UnionGroups
+   Mesh.UnionListOfGroups
+   Mesh.IntersectGroups
+   Mesh.IntersectListOfGroups
+   Mesh.CutGroups
+   Mesh.CutListOfGroups
+
+Deleting Groups
+===============
+
+.. autosummary::
+
+   Mesh.RemoveGroup
+   Mesh.RemoveGroupWithContents
+
+****************
+Mesh Information
+****************
+
+.. autosummary::
+
+   smeshBuilder.GetMeshInfo
+   Mesh.GetEngine
+   Mesh.GetGeomEngine
+   Mesh.GetGeometryByMeshElement
+   Mesh.MeshDimension
+   Mesh.GetMeshInfo
+   Mesh.NbNodes
+   Mesh.NbElements
+   Mesh.Nb0DElements
+   Mesh.NbBalls
+   Mesh.NbEdges
+   Mesh.NbEdgesOfOrder
+   Mesh.NbFaces
+   Mesh.NbFacesOfOrder
+   Mesh.NbTriangles
+   Mesh.NbTrianglesOfOrder
+   Mesh.NbBiQuadTriangles
+   Mesh.NbQuadrangles
+   Mesh.NbQuadranglesOfOrder
+   Mesh.NbBiQuadQuadrangles
+   Mesh.NbPolygons
+   Mesh.NbVolumes
+   Mesh.NbVolumesOfOrder
+   Mesh.NbTetras
+   Mesh.NbTetrasOfOrder
+   Mesh.NbHexas
+   Mesh.NbHexasOfOrder
+   Mesh.NbTriQuadraticHexas
+   Mesh.NbPyramids
+   Mesh.NbPyramidsOfOrder
+   Mesh.NbPrisms
+   Mesh.NbPrismsOfOrder
+   Mesh.NbHexagonalPrisms
+   Mesh.NbPolyhedrons
+   Mesh.NbSubMesh
+   Mesh.GetNodesId
+   Mesh.GetElementsId
+   Mesh.GetElementsByType
+   Mesh.GetElementType
+   Mesh.GetElementGeomType
+   Mesh.GetElementShape
+   Mesh.GetSubMeshElementsId
+   Mesh.GetSubMeshNodesId
+   Mesh.GetSubMeshElementType
+   Mesh.GetNodeXYZ
+   Mesh.GetNodeInverseElements
+   Mesh.GetNodePosition
+   Mesh.GetElementPosition
+   Mesh.GetShapeID
+   Mesh.GetShapeIDForElem
+   Mesh.GetElemNbNodes
+   Mesh.GetElemNode
+   Mesh.GetElemNodes
+   Mesh.IsMediumNode
+   Mesh.IsMediumNodeOfAnyElem
+   Mesh.ElemNbEdges
+   Mesh.ElemNbFaces
+   Mesh.GetElemFaceNodes
+   Mesh.GetFaceNormal
+   Mesh.FindElementByNodes
+   Mesh.GetElementsByNodes
+   Mesh.IsPoly
+   Mesh.IsQuadratic
+   Mesh.GetBallDiameter
+   Mesh.BaryCenter
+   Mesh.FindNodeClosestTo
+   Mesh.FindElementsByPoint
+   Mesh.GetPointState
+   Mesh.Get1DBranches
+   Mesh.Dump
+
+******************************
+Quality controls and Filtering
+******************************
+
+.. autosummary::
+
+   smeshBuilder.GetEmptyCriterion
+   smeshBuilder.GetCriterion
+   smeshBuilder.GetFilter
+   smeshBuilder.GetFilterFromCriteria
+   smeshBuilder.GetFunctor
+   Mesh.GetIdsFromFilter
+   Mesh.GetMaxElementLength
+   Mesh.GetAspectRatio
+   Mesh.GetWarping
+   Mesh.GetMinimumAngle
+   Mesh.GetTaper
+   Mesh.GetSkew
+   Mesh.GetMinMax
+   Mesh.IsManifold
+   Mesh.IsCoherentOrientation2D
+
+************
+Measurements
+************
+
+.. autosummary::
+
+   smeshBuilder.MinDistance
+   smeshBuilder.GetMinDistance
+   smeshBuilder.BoundingBox
+   smeshBuilder.GetBoundingBox
+   smeshBuilder.GetLength
+   smeshBuilder.GetArea
+   smeshBuilder.GetVolume
+   smeshBuilder.GetAngle
+   Mesh.GetFreeBorders
+   Mesh.MinDistance
+   Mesh.GetMinDistance
+   Mesh.BoundingBox
+   Mesh.GetBoundingBox
+   Mesh.GetFunctor
+   Mesh.FunctorValue
+   Mesh.GetLength
+   Mesh.GetArea
+   Mesh.GetVolume
+   Mesh.GetAngle
+
+****************
+Modifying meshes
+****************
+
+.. autosummary::
+
+   smeshBuilder.GetPattern
+   Mesh.GetMeshEditor
+
+Adding nodes and elements
+=========================
+
+.. autosummary::
+
+   Mesh.AddNode
+   Mesh.Add0DElement
+   Mesh.Add0DElementsToAllNodes
+   Mesh.AddBall
+   Mesh.AddEdge
+   Mesh.AddFace
+   Mesh.AddPolygonalFace
+   Mesh.AddQuadPolygonalFace
+   Mesh.AddVolume
+   Mesh.AddPolyhedralVolume
+   Mesh.AddPolyhedralVolumeByFaces
+   Mesh.SetNodeOnVertex
+   Mesh.SetNodeOnEdge
+   Mesh.SetNodeOnFace
+   Mesh.SetNodeInVolume
+   Mesh.SetMeshElementOnShape
+   Mesh.Make2DMeshFrom3D
+   Mesh.MakeBoundaryMesh
+   Mesh.MakeBoundaryElements
+   Mesh.Append
+   Mesh.GetLastCreatedNodes
+   Mesh.GetLastCreatedElems
+   Mesh.ClearLastCreated
+
+Removing nodes and elements
+===========================
+
+.. autosummary::
+
+   Mesh.RemoveElements
+   Mesh.RemoveNodes
+   Mesh.RemoveNodeWithReconnection
+   Mesh.RemoveOrphanNodes
+
+Modifying nodes and elements
+============================
+
+.. autosummary::
+
+   Mesh.MoveNode
+   Mesh.MoveClosestNodeToPoint
+   Mesh.MeshToPassThroughAPoint
+   Mesh.ChangeElemNodes
+
+Convert to/from Quadratic Mesh
+==============================
+
+.. autosummary::
+
+   Mesh.ConvertToQuadratic
+   Mesh.ConvertFromQuadratic
+
+Extrusion and Revolution
+========================
+
+.. autosummary::
+
+   Mesh.RotationSweepObjects
+   Mesh.RotationSweep
+   Mesh.RotationSweepObject
+   Mesh.RotationSweepObject1D
+   Mesh.RotationSweepObject2D
+   Mesh.ExtrusionSweepObjects
+   Mesh.ExtrusionSweep
+   Mesh.ExtrusionByNormal
+   Mesh.ExtrusionSweepObject
+   Mesh.ExtrusionSweepObject1D
+   Mesh.ExtrusionSweepObject2D
+   Mesh.AdvancedExtrusion
+   Mesh.ExtrusionAlongPathObjects
+   Mesh.ExtrusionAlongPathX
+   Mesh.ExtrusionAlongPath
+   Mesh.ExtrusionAlongPathObject
+   Mesh.ExtrusionAlongPathObject1D
+   Mesh.ExtrusionAlongPathObject2D
+
+Transforming meshes (Translation, Rotation, Symmetry, Sewing, Merging)
+======================================================================
+
+.. autosummary::
+
+   Mesh.Mirror
+   Mesh.MirrorMakeMesh
+   Mesh.MirrorObject
+   Mesh.MirrorObjectMakeMesh
+   Mesh.Translate
+   Mesh.TranslateMakeMesh
+   Mesh.TranslateObject
+   Mesh.TranslateObjectMakeMesh
+   Mesh.Rotate
+   Mesh.RotateMakeMesh
+   Mesh.RotateObject
+   Mesh.RotateObjectMakeMesh
+   Mesh.FindCoincidentNodes
+   Mesh.FindCoincidentNodesOnPart
+   Mesh.MergeNodes
+   Mesh.FindEqualElements
+   Mesh.MergeElements
+   Mesh.MergeEqualElements
+   Mesh.FindFreeBorders
+   Mesh.FillHole
+   Mesh.FindCoincidentFreeBorders
+   Mesh.SewCoincidentFreeBorders
+   Mesh.SewFreeBorders
+   Mesh.SewConformFreeBorders
+   Mesh.SewBorderToSide
+   Mesh.SewSideElements
+
+Changing orientation of elements
+================================
+
+.. autosummary::
+
+   Mesh.Reorient
+   Mesh.ReorientObject
+   Mesh.Reorient2D
+   Mesh.Reorient2DByNeighbours
+   Mesh.Reorient2DBy3D
+
+Uniting triangles
+=================
+
+.. autosummary::
+
+   Mesh.DeleteDiag
+   Mesh.TriToQuad
+   Mesh.TriToQuadObject
+
+Cutting elements
+================
+
+.. autosummary::
+
+   Mesh.InverseDiag
+   Mesh.QuadToTri
+   Mesh.QuadToTriObject
+   Mesh.QuadTo4Tri
+   Mesh.SplitQuad
+   Mesh.SplitQuadObject
+   Mesh.BestSplit
+   Mesh.SplitVolumesIntoTetra
+   Mesh.SplitBiQuadraticIntoLinear
+   Mesh.SplitHexahedraIntoPrisms
+   Mesh.SplitQuadsNearTriangularFacets
+   Mesh.SplitHexaToTetras
+   Mesh.SplitHexaToPrisms
+   Mesh.AddNodeOnSegment
+   Mesh.AddNodeOnFace
+
+Smoothing
+=========
+
+.. autosummary::
+
+   Mesh.Smooth
+   Mesh.SmoothObject
+   Mesh.SmoothParametric
+   Mesh.SmoothParametricObject
+
+Duplication of nodes and elements (to emulate cracks)
+=====================================================
+
+.. autosummary::
+
+   Mesh.DoubleElements
+   Mesh.DoubleNodes
+   Mesh.DoubleNode
+   Mesh.DoubleNodeGroup
+   Mesh.DoubleNodeGroups
+   Mesh.DoubleNodeElem
+   Mesh.DoubleNodeElemInRegion
+   Mesh.DoubleNodeElemGroup
+   Mesh.DoubleNodeElemGroupInRegion
+   Mesh.DoubleNodeElemGroups
+   Mesh.DoubleNodeElemGroupsInRegion
+   Mesh.AffectedElemGroupsInRegion
+   Mesh.DoubleNodesOnGroupBoundaries
+   Mesh.CreateFlatElementsOnFacesGroups
+   
+Renumbering nodes and elements
+==============================
+
+.. autosummary::
+
+   Mesh.RenumberNodes
+   Mesh.RenumberElements
+
+
+*****************
+Auxiliary methods
+*****************
+
+.. autosummary::
+
+   GetName
+   DegreesToRadians
+   New
diff --git a/doc/gui/input/numbering.rst b/doc/gui/input/numbering.rst
new file mode 100644 (file)
index 0000000..16cc06f
--- /dev/null
@@ -0,0 +1,38 @@
+.. _numbering_page: 
+
+*********
+Numbering
+*********
+
+Displaying node numbers
+#######################
+
+In MESH you can display the ID numbers of all nodes of your mesh in the viewer.
+
+*To display ID numbers of nodes:*
+
+#. Display your mesh in the viewer
+#. Right-click on the mesh in the 3D viewer and from the associated pop-up menu choose **Numbering > Display Nodes #**.
+
+.. image:: ../images/image96.jpg
+       :align: center
+
+.. centered::
+       Displayed node numbers
+
+
+Displaying element numbers
+##########################
+
+In MESH you can display the ID numbers of all meshing elements composing your mesh in the viewer.
+
+*To display ID numbers of elements:*
+
+#. Display your mesh in the viewer
+#. Right-click on the mesh in the 3D viewer and from the associated pop-up menu choose **Numbering > Display Elements #**.
+
+.. image:: ../images/image95.jpg 
+       :align: center
+
+.. centered::
+       Displayed element numbers
diff --git a/doc/gui/input/offset_elements.rst b/doc/gui/input/offset_elements.rst
new file mode 100644 (file)
index 0000000..daa343c
--- /dev/null
@@ -0,0 +1,49 @@
+.. _offset_elements_page:
+
+********************************
+Offset mesh 
+********************************
+
+Offset 2D elements in mesh, submesh, group or elements from filter.
+
+*To offset all elements from mesh, sub-mesh or group:*
+
+.. |img| image:: ../images/image81.png
+
+#. In the **Modification** menu, select the **Transformations** then click *Offset* button |img| or click directly in the same button in the toolbar.
+
+   The following dialog box will appear:
+
+       .. image:: ../images/offset_mesh.png
+               :align: center
+    
+       * Check the option **Select whole mesh, sub-mesh or group** if it is not set.
+       * Set the name of the mesh, sub-mesh or created group.
+       * Set the **Offset** value (negative offsets are allowed).
+       * Select **Move Elements** to offset the current mesh, **Copy Elements** to offset and duplicate them, or **Create a new mesh** to create a new mesh from the offset elements.
+
+#. Click the **Apply** or **Apply and Close** button to confirm the operation.
+
+
+*To offset all elements ids from a filter:*
+
+#. In the **Modification** menu, select the **Transformations** then click *Offset* button |img| or click directly in the same button from the toolbar.
+       
+       * Uncheck the option **Select whole mesh, sub-mesh or group**.
+
+       .. image:: ../images/offset_mesh_from_filter.png
+               :align: center
+       
+       * Then click on **Set_Filter** button
+       
+       The dialog for filter for faces will appear:
+
+       .. image:: ../images/offset_filter_for_faces_gui.png
+               :align: center
+       
+       * Define the desired criterias and then click the **Apply and Close** button to confirm the selection of elements.
+       * Set **Offset** value and mesh creation **options** as done for the first case.
+
+#. Click the **Apply** or **Apply and Close** button to confirm the operation.
+
+**See also:** A sample TUI Script of a :ref:`tui_offset_elements` transformation.
\ No newline at end of file
diff --git a/doc/gui/input/over_constrained_faces.rst b/doc/gui/input/over_constrained_faces.rst
new file mode 100644 (file)
index 0000000..87af11c
--- /dev/null
@@ -0,0 +1,20 @@
+.. _over_constrained_faces_page:
+
+**********************
+Over-constrained faces
+**********************
+
+This mesh quality control highlights faces having all their points on the border.
+
+.. note::
+       The highlighted faces are actually over-constrained only if, at the computation time, the boundary conditions on the borders where the nodes are located are all Dirichlet boundary conditions.
+
+.. image:: ../images/over_constrained_faces.png
+       :align: center
+
+.. centered::
+       Over-constrained face is displayed in red
+
+**See Also** a sample TUI Script of a :ref:`tui_over_constrained_faces` filter.
+
+
diff --git a/doc/gui/input/over_constrained_volumes.rst b/doc/gui/input/over_constrained_volumes.rst
new file mode 100644 (file)
index 0000000..e601090
--- /dev/null
@@ -0,0 +1,19 @@
+.. _over_constrained_volumes_page:
+
+************************
+Over-constrained volumes
+************************
+
+This mesh quality control highlights volumes having all their points on the border.
+
+
+.. note::
+       The highlighted volumes are actually over-constrained only if, at the computation time, the boundary conditions on the borders where the nodes are located are all Dirichlet boundary conditions.
+
+.. image:: ../images/over_constrained_volumes.png
+       :align: center
+
+.. centered::
+       Over-constrained volume is displayed in red.
+
+**See Also** a sample TUI Script of a :ref:`tui_over_constrained_volumes` filter.
diff --git a/doc/gui/input/parallel_compute.rst b/doc/gui/input/parallel_compute.rst
new file mode 100644 (file)
index 0000000..dab61fc
--- /dev/null
@@ -0,0 +1,104 @@
+.. _parallel_compute_page:
+
+******************
+Parallel Computing
+******************
+
+
+.. warning::
+  This functionality is a work in progress.
+
+  It is only available for NETGEN.
+
+  It is only available in TUI.
+
+
+The goal here is to speed up computation by running sub-meshes in parallel
+(multi-threading).
+
+Concept
+#######
+
+.. image:: ../images/diagram_parallel_mesh.png
+
+In order to parallelise the computation of the mesh we split the geometry into:
+
+  * A 1D+2D compound
+  * A list of 3D solids
+
+Then create a sub-mesh for each of those geometry.
+And associate Hypothesis to the mesh using a hypothesis on the whole geometry
+
+We will first compute sequentially the 1D+2D compound with NETGEN_1D2D.
+
+Then we will compute all the solids in parallel. Having done the 1D+2D first
+ensure that all the solids can be computed without any concurrency.
+
+
+How to
+######
+
+You follow the same principle as the creation of a sequential Mesh.
+
+
+1. First you create the mesh:
+
+       .. code-block:: python
+
+               par_mesh = smesh.ParallelMesh(my_geom, name="par_mesh")
+
+2. Define the Global Hypothesis that will be split into an hypothesis for the
+   1D+2D compound and one for each of the 3D solids:
+
+  .. code-block:: python
+
+               NETGEN_3D_Parameters_1 = smesh.CreateHypothesisByAverageLength( 'NETGEN_Parameters',
+                                                 'NETGENEngine', 34.641, 0 )
+               par_mesh.AddGlobalHypothesis(NETGEN_3D_Parameters_1)
+
+3. Set the method for the parallelisation:
+
+  You have two methods for parallelisation:
+
+  * Multihtreading: Will run the computation on your computer using the processors on your computer.
+
+  .. code-block:: python
+
+     par_mesh.SetParallelismMethod(smeshBuilder.MULTITHREAD)
+
+
+  * MultiNodal: Will run the computation on a remote resource (cluster) that is defined in your salome catalog.
+
+  .. code-block:: python
+
+     par_mesh.SetParallelismMethod(smeshBuilder.MULTINODE)
+
+
+4.  Set the parameters for the parallelism:
+
+  *  Multithread:
+
+       .. code-block:: python
+
+               param = par_mesh.GetParallelismSettings()
+               param.SetNbThreads(6)
+
+  * Multinode:
+
+  .. code-block:: python
+
+     param = par_mesh.GetParallelismSettings()
+     param.SetResource("cronos")
+     param.SetNbProc(nbox**3)
+     param.SetNbProcPerNode(2)
+     param.SetNbNode(6)
+     param.SetWcKey("P11N0:SALOME_COFEE")
+
+5. Compute the mesh:
+       .. code-block:: python
+
+               is_done = par_mesh.Compute()
+               if not is_done:
+                   raise Exception("Error when computing Mesh")
+
+**See Also** a sample script of :ref:`tui_create_parallel_mesh`.
diff --git a/doc/gui/input/pattern_mapping.rst b/doc/gui/input/pattern_mapping.rst
new file mode 100644 (file)
index 0000000..e88a291
--- /dev/null
@@ -0,0 +1,197 @@
+.. _pattern_mapping_page:
+
+***************
+Pattern mapping
+***************
+
+About patterns
+##############
+
+The pattern describes a mesh to generate: positions of nodes within a
+geometrical domain and nodal connectivity of elements. A
+pattern also specifies the so-called key-points, i.e. the nodes that will be
+located at geometrical vertices. The pattern description is stored in
+\<pattern_name\>.smp file.
+
+The smp file contains 4 sections:
+
+       #. The first line indicates the total number of pattern nodes (N).
+       #. The next N lines describe nodes coordinates. Each line contains 2 node coordinates for a 2D pattern or 3 node coordinates for a 3D pattern. Note, that node coordinates of a 3D pattern can be defined only by relative values in range [0;1].
+       #. The key-points line contains the indices of the nodes to be mapped on geometrical vertices (for a 2D pattern only). Index n refers to the node described on the n-th line of section 2. The index of the first node is zero. For a 3D pattern the key points are not specified.
+       #. The remaining lines describe nodal connectivity of elements, one line for each element. Each line holds indices of nodes forming an element. Index n refers to the node described on the n-th line of section 2. The first node index is zero. There must be 3 or 4 indices on each line for a 2D pattern (only linear 2D elements are allowed) and 4, 5, 6 or 8 indices for a 3D pattern (only linear 3D elements are allowed).
+
+A 2D pattern must contain at least one element and at least one key-point. All key-points must lie on boundaries.
+
+A 3D pattern must contain at least one element.
+
+An example of a simple 2D pattern smp file:
+::
+
+       !!! SALOME 2D mesh pattern file
+       !!!
+       !!! Nb of points:
+       9
+               200     0       !- 0
+               100     0       !- 1
+                 0     0       !- 2
+                 0  -100       !- 3
+                 0  -200       !- 4
+               100  -200       !- 5
+               200  -200       !- 6
+               200  -100       !- 7
+               100  -100       !- 8
+       !!! Indices of 4 key-points
+        2 0 4 6
+       !!! Indices of points of 6 elements
+        0 1 8
+        8 5 6 7
+        2 3 8
+        8 3 4 5
+        8 7 0
+        8 1 2
+
+The image below provides a preview of the above pattern:
+
+.. image:: ../images/pattern2d.png
+       :align: center
+
+.. centered::
+       An example of a simple 3D pattern smp file:
+      
+::
+
+       !!! SALOME 3D mesh pattern file
+       !!!
+       !!! 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
+
+
+Application of pattern mapping
+##############################
+
+*To apply pattern mapping to a geometrical object or mesh elements:*
+
+.. |img| image:: ../images/image98.png
+
+From the **Modification** menu choose the **Pattern Mapping** item or click 
+*"Pattern mapping"* button |img| in the toolbar.
+
+
+The following dialog box will appear:
+
+For a **2D pattern**
+   
+
+.. image:: ../images/patternmapping1.png
+       :align: center
+
+In this dialog you should specify:
+
+* **Pattern**, which can be loaded from .smp pattern file previously created manually or generated automatically from an existing mesh or sub-mesh.
+* **Face** with the number of vertices equal to the number of key-points in the pattern; the number of key-points on internal boundaries of the pattern must also be equal to the number of vertices on internal boundaries of the face;
+* **Vertex** to which the first key-point should be mapped;
+
+
+Alternatively, it is possible to select **Refine selected mesh elements** check-box and apply the pattern to 
+
+* **Mesh Face** instead of a geometric Face
+* and select **Node** instead of vertex.
+
+
+Additionally it is possible to: 
+
+* **Reverse the order of key-points**. By default, the vertices of a face are ordered counterclockwise.
+* Enable to **Create polygons near boundary** 
+* and **Create polyhedrons near boundary**
+
+          
+For a **3D pattern**
+
+.. image:: ../images/patternmapping2.png
+       :align: center
+
+In this dialog you should specify:
+
+* **Pattern**, which can be loaded from .smp pattern file previously created manually or generated automatically from an existing mesh or sub-mesh.
+* A 3D block (Solid) object.
+* Two vertices that specify the order of nodes in the resulting mesh.
+
+
+Alternatively, it is possible to select **Refine selected mesh elements** check-box and apply the pattern to
+
+* One or several **Mesh volumes** instead of a geometric 3D object
+* and select two **Nodes** instead of vertices. 
+
+Additionally it is possible to:
+
+* Enable to **Create polygons near boundary** 
+* and **Create polyhedrons near boundary**
+
+
+
+Automatic Pattern Generation
+****************************
+
+To generate a pattern automatically from an existing mesh or sub-mesh, click **New** button.
+
+The following dialog box will appear:
+
+.. image:: ../images/a-patterntype1.png
+       :align: center
+
+In this dialog you should specify:
+
+
+* **Mesh or Sub-mesh**, which is a meshed geometrical face (for a 2D pattern) or a meshed solid block (for a 3D pattern). Mesh nodes lying on the face vertices become key-points of the pattern. 
+* A custom **Pattern Name** 
+* Additionally, for a 2D pattern you may choose to **Project nodes on the face** to get node coordinates instead of using "positions on face" generated by the mesher (if there is any). The faces having a seam edge cannot be used for automatic pattern creation.
+
+
+When a pattern is created from an existing mesh, two cases are possible:
+
+* A sub-mesh on a face/solid is selected. The pattern is created from the 2D/3D elements bound to the face/solid by the mesher. For a 2D pattern, the node coordinates are either "positions on face" computed by the mesher, or coordinates got by node projection on a geometrical surface, according to the user choice. For a 3D pattern, the node coordinates correspond to the nodes computed by the mesher.
+* A mesh, where the main shape is a face/solid, is selected. The pattern is created from all 2D/3D elements in a mesh. In addition, if all mesh elements of a 2D pattern are built by the mesher, the user can select how to get node coordinates, otherwise all nodes are projected on a face surface.
+
+
+Mapping algorithm
+#################
+
+The mapping algorithm for a 2D case is as follows:
+
+* The key-points are set counterclockwise in the order corresponding to their location on the pattern boundary. The first key-point is preserved.
+* The geometrical vertices corresponding to the key-points are found on face boundary. Here, "Reverse order of key-points" flag is set. 
+
+.. image:: ../images/image95.gif
+       :align: center
+
+* The boundary nodes of the pattern are mapped onto the edges of the face: a node located between two key-points on the pattern boundary is mapped on the geometrical edge limited by the corresponding geometrical vertices. The node position on the edge depends on its distance from the key-points. 
+
+.. image:: ../images/image96.gif
+       :align: center
+
+* The coordinates of a non-boundary node in the parametric space of the face are defined in the following way. In the parametric space of the pattern, the  node lies at the intersection of two iso-lines. Both of them intersect the pattern boundary at two points at least. If the mapped positions of boundary nodes are known, it is possible to find, where the points at the intersection of iso-lines and boundaries are mapped. Then it is possible to find the direction of mapped iso-line section and, finally, the positions of two nodes on two mapped isolines. The eventual mapped position of the node is found as an average of the positions on mapped iso-lines. 
+
+.. image:: ../images/image97.gif
+       :align: center
+
+The 3D algorithm is similar.
+
+**See Also** a sample TUI Script of a :ref:`tui_pattern_mapping` operation.
+
+
diff --git a/doc/gui/input/point_marker.rst b/doc/gui/input/point_marker.rst
new file mode 100644 (file)
index 0000000..2110fe3
--- /dev/null
@@ -0,0 +1,62 @@
+.. _point_marker_page:
+
+************
+Point Marker
+************
+
+You can change the representation of points in
+the 3D viewer either by selecting one of the predefined
+shapes or by loading a custom texture from an external file.
+
+Standard point markers
+----------------------
+
+The Mesh module provides a set of predefined point marker shapes
+which can be used to display points in the 3D viewer.
+Each standard point marker has two attributes: type (defines shape
+form) and scale factor (defines shape size).
+
+.. image:: ../images/point_marker_widget1.png
+       :align: center
+
+
+.. image:: ../images/std_point_marker.png
+       :align: center
+
+.. centered::
+       Mesh presentation with standard point markers
+
+Custom point markers
+--------------------
+
+It is also possible to load a point marker shape from an external file.
+This file should provide a description of the point texture as a set
+of lines; each line is represented as a sequence of "0" and "1" symbols,
+where "1" symbol means an opaque pixel and "0" symbol means a
+transparent pixel. The width of the texture corresponds to the length
+of the longest line in the file, expanded to the nearest byte-aligned
+value. The height of the texture is equal to the number of non-empty
+lines in the file. Note that missing symbols are replaced by "0".
+
+Here is a texture file sample:
+::
+
+       11111111
+       10000001
+       10011001
+       10111101
+       10111101
+       10011001
+       10000001
+       11111111
+
+
+.. image:: ../images/point_marker_widget2.png
+       :align: center
+
+
+.. image:: ../images/custom_point_marker.png 
+       :align: center
+
+.. centered::
+       Mesh presentation with custom point markers
diff --git a/doc/gui/input/prism_3d_algo.rst b/doc/gui/input/prism_3d_algo.rst
new file mode 100644 (file)
index 0000000..03dd68a
--- /dev/null
@@ -0,0 +1,93 @@
+.. _prism_3d_algo_page:
+
+******************************
+Extrusion 3D meshing algorithm
+******************************
+
+Extrusion 3D algorithm can be used for meshing prisms, i.e. 3D shapes
+defined by two opposing faces having the same number of vertices and
+edges. These two faces should be connected by quadrangle "side" faces.
+
+.. image:: ../images/prism_mesh.png 
+       :align: center
+
+.. centered::
+       Clipping view of a mesh of a prism with non-planar base and top faces
+
+The prism is allowed to have sides composed of several faces. (A prism
+side is a row of faces (or one face) connecting the corresponding edges of
+the top and base faces). However, a prism 
+side can be split only vertically as indicated in the
+picture below. 
+
+.. image:: ../images/prism_ok_ko.png 
+       :align: center
+
+.. centered::
+       A suitable and an unsuitable prism
+
+In this picture, the left prism is suitable for meshing with 3D
+extrusion algorithm: it has six sides, two of which are split
+vertically. The right prism cannot be meshed with this
+algorithm because one of the prism sides is split horizontally (the
+splitting edge is highlighted).
+
+The algorithm can propagate 2D mesh not only between horizontal
+(i.e. base and top) faces of one prism but also between faces of prisms
+organized in a stack and between stacks sharing prism sides.
+
+.. _prism_stacks:
+
+.. image:: ../images/prism_stack.png 
+       :align: center
+
+.. centered::
+       Prism stacks
+
+This picture shows four neighboring prism stacks, each comprising two prisms.
+The shown sub-mesh is used by the algorithm to mesh
+all eight prisms in the stacks.
+
+To use *Extrusion 3D* algorithm you need to assign algorithms
+and hypotheses of lower dimensions as follows.
+(A sample picture below shows algorithms and hypotheses used to
+mesh a cylinder with prismatic volumes).
+
+.. image:: ../images/prism_needs_hyps.png 
+       :align: center
+
+The **Global** algorithms and hypotheses to be chosen at 
+:ref:`create_mesh_anchor` are:
+
+* 1D algorithm and hypothesis that will be applied for meshing (logically) vertical edges of the prism (which connect the top and the base faces of the prism). In the sample picture above these are "Regular_1D" algorithm and "Number of Segments" hypothesis named "Vertical Nb. Segments".
+
+
+The **Local** algorithms and hypotheses to be chosen at 
+:ref:`constructing_submeshes_page` are:
+
+* 1D and 2D algorithms and hypotheses that will be applied for meshing the top and the base prism :ref:`faces <submesh_shape_section>`. These faces can be meshed with any type of 2D elements: quadrangles, triangles, polygons or their mix. It is enough to define a sub-mesh on either the top or the base face. In the sample picture above, "NETGEN_1D2D" algorithm meshes "bottom disk" face with triangles. (1D algorithm is not assigned as "NETGEN_1D2D" does not require divided edges to create a 2D mesh.)
+  
+* Optionally you can define a 1D sub-mesh on some vertical :ref:`edges <submesh_shape_section>` of stacked prisms, which will override the global 1D hypothesis mentioned above. In the :ref:`Prism stacks <prism_stacks>` picture, the vertical division is not equidistant on the whole length because a "Number Of Segments" hypothesis with Scale Factor=3 is assigned to the highlighted edge.
+
+
+If *Extrusion 3D* algorithm is assigned to a sub-mesh in a mesh
+with multiple sub-meshes, the described above approach may not work as
+expected. For example the bottom face may be meshed by other algorithm
+before *Extrusion 3D* have a chance to project a mesh from the
+base face. This thing can happen with vertical edges as well. All
+these can lead to either a meshing failure or to an incorrect meshing.
+In such a case, it's necessary to explicitly define algorithms
+that *Extrusion 3D* implicitly applies in a simple case:
+
+* assign :ref:`projection_1D2D` algorithm to the top face and
+* assign a 1D algorithm to a group of all vertical edges.
+
+.. image:: ../images/image157.gif
+       :align: center
+
+.. centered::
+       Prism with Extrusion 3D meshing. Vertical division is different on neighbor edges because several local 1D hypotheses are assigned
+
+**See Also** a sample TUI Script of :ref:`tui_prism_3d_algo`.
+
+
diff --git a/doc/gui/input/projection_algos.rst b/doc/gui/input/projection_algos.rst
new file mode 100644 (file)
index 0000000..ff0cbbb
--- /dev/null
@@ -0,0 +1,128 @@
+.. _projection_algos_page:
+
+*********************
+Projection Algorithms
+*********************
+
+.. contents:: `Table of contents`
+
+Projection algorithms allow to define the mesh of a geometrical
+object by the projection of another already meshed geometrical object.
+
+.. note::
+       Source and target geometrical objects mush be topologically equal, i.e. they must have same number of sub-shapes, connected to corresponding counterparts.
+
+.. image:: ../images/topo_equality.png 
+       :align: center
+
+.. centered::
+       Topologically equal faces suitable for 2D projection.
+
+
+.. _projection_1D:
+
+Projection 1D
+=============
+
+**Projection 1D** algorithm allows to define the mesh of an edge (or group of edges)
+by the projection of another already meshed edge (or group of edges).
+
+To apply this algorithm select the edge to be meshed (indicated in
+the field **Geometry** of **Create mesh** dialog box),
+**Projection1D** in the list of 1D algorithms and click the
+*"Add Hypothesis"* button.
+The following dialog box will appear:
+
+.. image:: ../images/projection_1d.png
+       :align: center
+
+In this dialog you can define
+
+* the **Name** of the algorithm,
+* the already meshed **Source Edge** and 
+* the **Source Mesh** (It can be omitted only when projecting a sub-mesh on another one of the same Mesh).
+* It could also be necessary to define the orientation of edges,  which is done by indicating the **Source Vertex** being the first point of the **Source Edge** and the **Target Vertex** being the first point of the edge being meshed.
+
+
+For a group of edges, **Source** and **Target** vertices should be
+shared by only one edge of the group. If **Source** and **Target**
+vertices are specified, the edges in the group must be connected.
+The source and target groups must contain equal number of edges
+and they must form topologically equal structures.
+
+.. _projection_2D:
+
+Projection 2D
+=============
+
+
+**Projection 2D** algorithm allows to define the mesh of a face
+(or group of faces) by the projection of another already meshed face
+(or group of faces). This algorithm works only if all edges of the
+target face have been discretized into the same number of
+segments as corresponding edges of the source face.
+
+To apply this algorithm select the face to be meshed (indicated in the
+field **Geometry** of **Create mesh** dialog box), **Projection
+2D** in the list of 2D algorithms and click the *"Add Hypothesis"* button. The following dialog box will appear:
+
+.. image:: ../images/projection_2d.png
+       :align: center
+
+In this dialog you can define 
+
+* the **Name** of the algorithm, 
+* the already meshed **Source Face** and 
+* the **Source Mesh** (It can be omitted only when projecting a submesh on another one of the same Mesh). 
+* It could also be necessary to define the orientation of mesh on the face, which is done by indicating two **Source Vertices**, which belong to the same edge of the **Source Face**, and two **Target Vertices**, which belong to the same edge of the face being meshed.
+
+
+The groups of faces are suitable for this algorithm only if they
+contain an equal number of faces and form topologically equal
+structures.
+
+.. _projection_1D2D:
+
+Projection 1D-2D
+================
+
+**Projection 1D-2D** algorithm differs from
+:ref:`projection_2D` algorithm in one aspect: it generates mesh segments
+on edges of the face according to the projected 2D elements; thus it
+does not require the edges to be meshed by any other 1D algorithm;
+moreover it does not allow to mesh edges of the face using another
+algorithm via definition of sub-meshes.
+
+
+.. _projection_3D:
+
+Projection 3D
+=============
+
+**Projection 3D** algorithm allows to define the mesh of a shape by
+the projection of another already meshed shape.  This algorithm works
+only if all faces and edges of the target shape have been meshed as 1D-2D
+Projections of the faces and edges of the source shape. Another
+limitation is that this algorithm currently works only on boxes.
+
+To apply this algorithm select the solid to be meshed (indicated in
+the field **Geometry** of **Create mesh** dialog box), **Projection 3D** 
+in the list of 3D algorithms and click the  button. The
+following dialog box will appear:
+
+.. image:: ../images/projection_3d.png
+       :align: center
+
+In this menu you can define the **Name** of the algorithm, the already
+meshed source **3D shape** and the **Mesh** (It can be omitted only when 
+projecting a submesh on another one from the same global Mesh). 
+It could also be necessary to define the orientation of mesh on the shape, which is
+done by indicating two **Source Vertices**, which belong to the same edge
+of the source **3D Shape**, and two **Target Vertices**, which belong to the
+same edge of the source **3D Shape**.
+
+**See Also** a sample TUI Script of a 
+:ref:`tui_projection`.
+
+
+
diff --git a/doc/gui/input/quad_from_ma_algo.rst b/doc/gui/input/quad_from_ma_algo.rst
new file mode 100644 (file)
index 0000000..0cc1979
--- /dev/null
@@ -0,0 +1,46 @@
+.. _quad_from_ma_algo_page:
+
+***************************************************
+Medial Axis Projection Quadrangle meshing algorithm
+***************************************************
+
+Medial Axis Projection algorithm can be used for meshing faces with
+sinuous borders and a channel-like shape, for which it can be
+difficult to define 1D hypotheses such that to obtain a good shape of
+resulting quadrangles. The algorithm can be also applied to faces with ring
+topology, which can be viewed as a closed 'channel'. In the latter
+case radial discretization of a ring can be specified by
+using *Number of Layers* or *Distribution of Layers*
+hypothesis.
+
+.. image:: ../images/quad_from_ma_mesh.png 
+       :align: center
+
+.. centered::
+       A mesh of a river model (to the left) and of a ring-face (to the right)
+
+The algorithm provides proper shape of quadrangles by constructing Medial
+Axis between sinuous borders of the face and using it to
+discretize the borders. (Shape of quadrangles can be not perfect at
+locations where opposite sides of a 'channel' are far from being parallel.)
+
+.. image:: ../images/quad_from_ma_medial_axis.png 
+       :align: center
+
+.. centered::
+       Medial Axis between two blue sinuous borders
+
+The Medial Axis is used in two ways:
+
+#. If there is a sub-mesh on a sinuous border, then the nodes of this border are mapped to the opposite border via the Medial Axis.
+#. If there are no sub-meshes on sinuous borders, then the part of the Medial Axis that can be mapped to both borders is discretized using a 1D hypothesis assigned to the face or its ancestor shapes, and the division points are mapped from the Medial Axis to both borders to find positions of nodes.
+
+.. image:: ../images/quad_from_ma_ring_mesh.png 
+       :align: center
+
+.. centered::
+       Mesh depends on defined sub-meshes: to the left - sub-meshes on both wires, to the right - a sub-mesh on internal wire only
+
+
+**See Also** a sample TUI Script of a :ref:`tui_quad_ma_proj_algo`.
+
diff --git a/doc/gui/input/quad_ijk_algo.rst b/doc/gui/input/quad_ijk_algo.rst
new file mode 100644 (file)
index 0000000..fdc6101
--- /dev/null
@@ -0,0 +1,55 @@
+.. _quad_ijk_algo_page:
+
+*************************************
+Quadrangle: Mapping meshing algorithm
+*************************************
+
+**Quadrangle: Mapping** meshing algorithm is intended for creating
+all-quadrangle and quad-dominant meshes on faces without holes and
+bound by at least three edges.
+
+The algorithm can create mesh on any face but its quality and
+validity depend on two factors:
+
+* face shape (number of edges and boundary concavity);
+* discretization of edges.
+
+.. image:: ../images/quad_mesh_invalid.png
+       :align: center
+
+.. centered::
+       "Invalid mesh on quadrilateral concave faces"
+
+The algorithm uses *Transfinite Interpolation* technique in the 
+parametric space of a face to locate nodes inside the face.
+
+The algorithm treats any face as quadrangle. If a face is bound by
+more than four edges, four most sharp vertices are considered as
+corners of the quadrangle and all edges between these vertices are
+treated as quadrangle sides. In the case of three edges, the vertex
+specified by the user is considered as a fourth degenerated side of the
+quadrangle.
+
+.. image:: ../images/quad_meshes.png 
+       :align: center
+
+.. centered::
+       Algorithm generates a structured mesh on complex faces provided that edges are properly discretized
+
+To get an all-quadrangle mesh you have to carefully define 1D
+hypotheses on edges of a face. To get a **structured** mesh you have to provide
+equal number of segments on opposite sides of the quadrangle. If this
+condition is not respected, the algorithm by default (without a 
+hypothesis) creates a **quad-dominant** mesh with triangles located near the
+side with the maximal number of segments. However, you can get an
+**all-quadrangle** mesh in this case by using 
+:ref:`hypo_quad_params_anchor` hypothesis to specify how to make transition mesh between opposite
+sides with different number of segments, provided that certain
+conditions are respected. In any case the total number of segments must be
+even. To use *Reduced* transition method, there must be an equal number
+of segments on one pair of opposite sides.
+
+The following hypotheses help to create quadrangle meshes. 
+
+* :ref:`Propagation <propagation_anchor>` additional 1D hypotheses help to get an equal number of segments on the opposite sides of a quadrilateral face.
+* :ref:`Composite Side Discretization <a1d_algos_anchor>` algorithm is useful to discretize several C1 continuous edges as one quadrangle side.
diff --git a/doc/gui/input/radial_prism_algo.rst b/doc/gui/input/radial_prism_algo.rst
new file mode 100644 (file)
index 0000000..7e2c148
--- /dev/null
@@ -0,0 +1,43 @@
+.. _radial_prism_algo_page:
+
+************
+Radial Prism
+************
+
+This algorithm applies to the meshing of a hollow 3D shape,
+i.e. such shape should be composed of two meshed shells: an outer
+shell and an internal shell without intersection with the outer
+shell. One of the shells should be a :ref:`2D Projection <projection_2D>` of the other
+shell. The meshes of the shells can consist both of triangles and
+quadrangles.
+
+The Radial Prism algorithm would fill the space between the two shells
+with prisms.
+
+.. image:: ../images/radial_prism_mesh.png 
+       :align: center
+
+.. centered::
+       Cut-view of a hollow sphere meshed by Radial Prism algorithm
+
+This algorithm also needs the information concerning the number and
+distribution of mesh layers between the inner and the outer shapes.
+This information can be defined using either of two hypotheses:
+
+.. image:: ../images/number_of_layers.png
+       :align: center
+
+.. centered::
+       *"Number of layers"* hypothesis
+
+.. image:: ../images/distribution_of_layers.png
+       :align: center
+
+.. centered::
+       *"Distribution of layers"* hypothesis
+
+*Distribution of layers* hypothesis allows using most of 
+:ref:`1D Hypotheses <a1d_meshing_hypo_page>` to define
+the distribution of mesh layers.
+
+**See also** a sample :ref:`TUI script <tui_radial_prism>`.
diff --git a/doc/gui/input/radial_quadrangle_1D2D_algo.rst b/doc/gui/input/radial_quadrangle_1D2D_algo.rst
new file mode 100644 (file)
index 0000000..817695b
--- /dev/null
@@ -0,0 +1,47 @@
+.. _radial_quadrangle_1D2D_algo_page:
+
+***********************
+Radial Quadrangle 1D-2D
+***********************
+
+This algorithm applies to the meshing of 2D shapes under the
+following conditions: the face must be a full ellipse or a part of ellipse
+(i.e. the number of edges is less or equal to 3 and one of them is an ellipse curve).
+The resulting mesh consists of triangles (near the center point) and
+quadrangles.
+
+This algorithm is optionally parametrized by the hypothesis indicating
+the number of mesh layers along the radius. The distribution of layers
+can be set with any 1D Hypothesis. If the face boundary includes
+radial edges, this distribution is applied to the longest radial
+edge. If the face boundary does not include radial edges, this
+distribution is applied to the longest virtual radial edge. The
+distribution is applied to the longest radial edge starting from its
+end lying on the elliptic curve.
+
+
+If no own hypothesis of the algorithm is assigned, any local or global
+hypothesis is used by the algorithm to discretize edges.
+
+If no 1D hypothesis is assigned to an edge, 
+:ref:`Default Number of Segments <nb_segments_pref>` preferences
+parameter is used to discretize the edge.
+
+.. image:: ../images/hypo_radquad_dlg.png
+       :align: center
+
+.. image:: ../images/mesh_radquad_01.png 
+       :align: center
+
+.. centered::
+       Radial Quadrangle 2D mesh on the top and the bottom faces of a cylinder
+
+.. image:: ../images/mesh_radquad_02.png 
+       :align: center
+
+.. centered::
+       Radial Quadrangle 2D mesh on a part of circle
+
+**See also** a sample :ref:`TUI Script <tui_radial_quadrangle>`.
+
+
diff --git a/doc/gui/input/removing_nodes_and_elements.rst b/doc/gui/input/removing_nodes_and_elements.rst
new file mode 100644 (file)
index 0000000..6d7281c
--- /dev/null
@@ -0,0 +1,157 @@
+.. _removing_nodes_and_elements_page:
+
+***************************
+Removing nodes and elements
+***************************
+
+In MESH you can remove nodes and all types of cells of your mesh.
+
+* :ref:`removing_nodes_anchor`
+* :ref:`removing_nodes_reconnect_anchor`
+* :ref:`removing_orphan_nodes_anchor`
+* :ref:`removing_elements_anchor`
+* :ref:`clear_mesh_anchor`
+
+
+
+.. _removing_nodes_anchor:
+
+Removing nodes
+##############
+
+**To remove a node:**
+
+.. |rmn| image:: ../images/remove_nodes_icon.png
+
+#. Select your mesh in the Object Browser or in the 3D viewer.
+#. From the **Modification** menu choose **Remove** and from the associated submenu select the **Nodes**, or just click *"Remove nodes"* button |rmn| in the toolbar.
+   The following dialog box will appear:
+
+       .. image:: ../images/removenodes.png
+               :align: center
+
+
+   In this dialog box you can specify one or several nodes:
+
+   * choose mesh nodes with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
+   * input the node IDs directly in **Node IDs** field. The selected nodes will be highlighted in the viewer; or
+   * apply Filters. **Set filter** button allows to apply a filter to the selection of nodes. See more about filters in the :ref:`selection_filter_library_page` page.
+
+#. Click **Apply** or **Apply and Close** to confirm deletion of the specified nodes.
+
+.. note::
+       Be careful while removing nodes because if you remove a definite node of your mesh all adjacent elements will be also deleted.
+
+
+.. _removing_nodes_reconnect_anchor:
+
+Removing node with reconnection
+###############################
+
+This operation removes a node and changes surrounding faces in order to cover a hole appearing in the mesh. This operation applies to 2D triangle mesh only.
+
+       .. image:: ../images/remove_node_reconnection.png
+               :align: center
+
+**To remove a node:**
+
+.. |rmnr| image:: ../images/remove_node_reconnection_icon.png
+
+#. Select your mesh in the Object Browser or in the 3D viewer.
+#. From the **Modification** menu choose **Remove** and from the associated submenu select the **Node with reconnection**, or just click *"Remove node with reconnection"* button |rmnr| in the toolbar.
+   The following dialog box will appear:
+
+       .. image:: ../images/remove_node_reconnection_dlg.png
+               :align: center
+
+
+   In this dialog box you can specify one node to remove:
+
+   * choose a mesh node with the mouse in the 3D Viewer or 
+   * input the node ID directly in **ID** field. The selected node will be highlighted in the viewer.
+
+   Activate **Preview** to see how faces will change.
+
+#. Click **Apply** or **Apply and Close** to confirm deletion of the specified node.
+
+
+.. _removing_orphan_nodes_anchor:
+
+Removing orphan nodes
+#####################
+
+There is a quick way to remove all orphan (free) nodes.
+
+*To remove orphan nodes:*
+
+.. |rmon| image:: ../images/remove_orphan_nodes_icon.png
+
+#. Select your mesh in the Object Browser or in the 3D viewer.
+#. From the **Modification** menu choose **Remove** and from the associated submenu select **Orphan Nodes**, or just click *"Remove orphan nodes"* button |rmon| in the toolbar.
+   The following Warning message box will appear:
+
+       .. image:: ../images/removeorphannodes.png
+               :align: center
+
+#. Confirm nodes removal by pressing "Yes" button.
+
+
+.. _removing_elements_anchor:
+
+Removing elements
+#################
+
+*To remove an element:*
+
+.. |rme| image:: ../images/remove_elements_icon.png
+
+#. Select your mesh in the Object Browser or in the 3D viewer.
+#. From the **Modification** menu choose **Remove** and from the associated submenu select the **Elements**, or just click *"Remove elements"* button |rme| in the toolbar.
+
+   The following dialog box will appear:
+
+       .. image:: ../images/removeelements.png
+               :align: center
+
+   In this dialog box you can specify one or several elements:
+
+   * choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
+   * input the element IDs directly in **ID Elements** field. The selected elements will be highlighted in the viewer; or
+   * apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`selection_filter_library_page` page.
+
+#. Click **Apply** or **Apply and Close** to confirm deletion of the specified elements.
+
+.. image:: ../images/remove_nodes1.png 
+       :align: center
+
+.. centered::
+       The initial mesh
+
+.. image:: ../images/remove_nodes2.png 
+       :align: center
+
+.. centered::
+       The mesh with some elements removed
+
+
+.. _clear_mesh_anchor:
+
+Clearing Mesh Data
+##################
+
+*To remove all nodes and all types of cells in your mesh at once:*
+
+.. |clr| image:: ../images/mesh_clear.png
+
+#. Select your mesh in the Object Browser or in the 3D viewer.
+#. From the **Modification** menu choose **Remove** and from the associated submenu select the **Clear Mesh Data**, or just click *"Clear Mesh Data"* button |clr| in the toolbar. You can also right-click on the mesh in the Object Browser and select **Clear Mesh Data** in the pop-up menu.
+
+.. note::
+   This command works in a different way in different situations: 
+               * if the mesh is computed on a geometry, then *Clear Mesh Data* removes all elements and nodes.
+               * if the mesh is not based on a geometry (imported, compound, created from scratch etc.), then *Clear Mesh Data* removes only the elements and nodes computed by algorithms. If no such elements or nodes have been created, can remove nothing.
+
+**See Also** a sample TUI Script of a :ref:`tui_removing_nodes_and_elements` operation.  
+
+
+
diff --git a/doc/gui/input/reorient_faces.rst b/doc/gui/input/reorient_faces.rst
new file mode 100644 (file)
index 0000000..87d5100
--- /dev/null
@@ -0,0 +1,86 @@
+
+.. _reorient_faces_page:
+
+************
+Orient faces
+************
+
+This operation allows fixing the orientation of a set of faces in the following ways:
+  
+* The required orientation of a set of neighboring faces can be defined by a vector giving the direction of a normal to a certain face. Since the direction of face normals in the set can be even opposite, it is necessary to specify a *control* face, the normal to which will be compared with the vector. This face can be either:
+       * found by proximity to a given point, or 
+       * specified explicitly. 
+* The required orientation is given by faces of specified reference groups or/and sub-meshes. The reference groups can be omitted, then orientation of an arbitrary selected face to orient defines common orientation.
+* Alternatively, the faces can be oriented relatively to the adjacent volumes.
+       
+The orientation of a face is changed by reverting the order of its nodes.
+
+*To set orientation of faces:*
+
+.. |imgfac| image:: ../images/reorient_faces_face.png
+.. |imgpnt| image:: ../images/reorient_faces_point.png
+.. |imggrp| image:: ../images/reorient_faces_ref_groups.png
+.. |imgvol| image:: ../images/reorient_faces_volume.png
+
+#. In the **Modification** menu select **Reorient faces** item or click *"Reorient faces"* button |imgfac| in the toolbar.
+#. In the "Reorient faces" dialog box
+
+   * Select a way to define orientation:
+
+       * |imgpnt| - by specifying a point and a vector
+       * |imgfac| - by specifying a face and a vector
+       * |imggrp| - by specifying reference face groups
+       * |imgvol| - by specifying reference volume groups
+
+   * Select the **Object(s)** (mesh, groups and/or sub-meshes) containing faces to reorient, in the Object Browser or in the 3D Viewer.
+   * To reorient by direction of the face normal:
+    
+       * Specify the coordinates of the **Point** by which the control face will be found. You can specify the **Point** by picking a node in the 3D Viewer or selecting a vertex in the Object Browser.
+       * Set up the **Direction** vector to be compared with the normal of the control face. There are following options: 
+
+               * adjust vector components directly;
+               * select a vertex in the Object Browser or a node in the 3D Viewer; their coordinates will define vector components;
+               * pick two nodes (holding Shift button), the **Direction** vector will go from the first to the second node.
+
+               .. image:: ../images/reorient_2d_point.png 
+                       :align: center
+
+               .. centered::
+                       The orientation of adjacent faces is chosen according to a vector. The control face is found by point.
+
+   * In the second mode it is possible to pick the **Face** by mouse in the 3D Viewer or directly enter the **Face** ID in the corresponding field.
+
+       .. image:: ../images/reorient_2d_face.png 
+               :align: center
+
+       .. centered::
+               The orientation of adjacent faces is chosen according to a vector. The control face is explicitly given.
+
+
+   * In the third mode, the faces can be reoriented equally to reference faces:
+
+     * If necessary, select 2D **Reference objects** (groups or/and sub-meshes) containing the reference faces, in the Object Browser or in the 3D Viewer. This field can be left empty, then orientation of an arbitrary face will be used as a reference.
+
+
+       .. image:: ../images/reorient_2d_refgroup.png
+               :align: center
+
+       .. centered::
+               The orientation of faces is given by reference face groups and/or sub-meshes.
+
+   * In the fourth mode, the faces can be reoriented according to volumes:
+
+     * Select an object (mesh, sub-mesh or group) containing reference **Volumes**, in the Object Browser or in the 3D Viewer.
+     * Specify whether face normals should point outside or inside the reference volumes using **Face normal outside volume** check-box.
+
+       .. image:: ../images/reorient_2d_volume.png 
+               :align: center
+
+       .. centered::
+               The orientation of faces is chosen relatively to adjacent volumes.
+
+#. Click the **Apply** or **Apply and Close** button to confirm the operation.
+
+**See Also** a sample TUI Script of a :ref:`tui_reorient_faces` operation. 
+
+
diff --git a/doc/gui/input/revolution.rst b/doc/gui/input/revolution.rst
new file mode 100644 (file)
index 0000000..ef70b40
--- /dev/null
@@ -0,0 +1,77 @@
+.. _revolution_page:
+
+**********
+Revolution
+**********
+
+Revolution is used to build mesh elements of plus one
+dimension than the input ones.  Boundary elements around generated
+mesh of plus one dimension are additionally created. All created
+elements can be automatically grouped. Revolution can be used to create
+a :ref:`structured mesh from scratch <extrusion_struct>`. 
+See :ref:`extrusion_page` page for general information on Revolution,
+which can be viewed as extrusion along a circular path.
+
+*To apply revolution:*
+
+.. |img| image:: ../images/image92.png
+.. |sel| image:: ../images/image120.png
+
+#. From the **Modification** menu choose the **Revolution** item or click  **"Revolution"** button in the toolbar.
+
+   The following dialog will appear:
+
+       .. image:: ../images/revolution1.png
+               :align: center
+  
+
+#. In this dialog:
+    
+       * Use *Selection* button |sel| to specify what you are going to select at a given moment, **Nodes**, **Edges** or **Faces**.
+
+       * Specify **Nodes**, **Edges** and **Faces**, which will be revolved, by one of following means:
+               * **Select the whole mesh, sub-mesh or group** activating this check-box.
+               * Choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame.
+               * Input the element IDs directly in **Node IDs**, **Edge IDs** and **Face IDs** fields. The selected elements will be highlighted in the viewer, if the mesh is shown there.
+               * Apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`filtering_elements` page.
+       * Specify the **Axis** of revolution:
+               * Specify the coordinates of the start **Point** of the axis of revolution; either directly or by picking a node in the Viewer (selection of nodes is activated as you click the *Selection* button).
+               * Specify the **Vector** of the axis in either of three ways:
+                       * directly adjust vector components;
+                       * click *Selection* button, choose **From Origin to selected Point** in the opened menu and pick a node in the Viewer; 
+                       * click *Selection* button, chose **Normal to selected Face** in the opened menu and pick a mesh face in the Viewer. 
+       * Specify the **Angle** of revolution and the **Number of steps** of revolution,
+               * **Angle by Step** - the elements are revolved by the specified angle at each step (i.e. for Angle=30 and Number of Steps=3, the elements will be extruded by 30 degrees twice for a total of 30*3=90)
+
+               .. image:: ../images/revolutionsn2.png 
+                       :align: center
+
+               .. centered::
+                       Example of Revolution with Angle by Step. Angle=30 and Number of Steps=3
+        
+               * **Total Angle** - the elements are revolved by the specified angle only once and the number of steps defines the number of iterations (i.e. for Angle=30 and Number of Steps=3, the elements will be revolved by 30/3=10 degrees twice for a total of 30).
+
+               .. image:: ../images/revolutionsn1.png 
+                       :align: center
+
+               .. centered::
+                       Example of Revolution with Total Angle. Angle=30 and Number of Steps=3
+        
+      
+    
+       * Specify the **Tolerance**, which is used to detect nodes lying on the axis of revolution.
+       * Activate  **Preview** check-box to see the result mesh in the viewer.
+       * If you activate **Generate Groups** check-box, the **result elements** created from **selected elements** contained in groups will be included into new groups named by pattern "<old group name>_rotated" and "<old group name>_top". For example if a selected quadrangle is included in *g_Faces* group (see figures below) then result hexahedra will be included in *g_Faces_rotated* group and a quadrangle created at the "top" of revolved mesh will be included in *g_Faces_top* group.  
+
+       .. image:: ../images/extrusion_groups.png
+               :align: center
+
+       .. image:: ../images/extrusion_groups_res.png
+               :align: center
+
+
+       This check-box is active only if there are some groups in the mesh.
+
+#. Click **Apply** or **Apply and Close** button to confirm the operation.
+
+**See Also** a sample TUI Script of a :ref:`tui_revolution` operation.
diff --git a/doc/gui/input/rotation.rst b/doc/gui/input/rotation.rst
new file mode 100644 (file)
index 0000000..4d38cae
--- /dev/null
@@ -0,0 +1,59 @@
+.. _rotation_page:
+
+********
+Rotation
+********
+
+This operation allows to rotate in space the mesh or some of its elements.
+
+*To rotate the mesh:*
+
+.. |img| image:: ../images/rotation_ico.png 
+
+#. From the **Modification** menu choose **Transformation** -> **Rotation** item  or click *"Rotation"* button |img| in the toolbar.
+   The following dialog will appear:
+
+       .. image:: ../images/rotation.png
+               :align: center
+
+#. In this dialog:
+
+       * specify the IDs of the elements which will be rotated:
+
+               * **Select the whole mesh, submesh or group** activating this checkbox; or
+               * choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
+               * input the element IDs directly in **ID Elements** field. The selected elements will be highlighted in the viewer; or
+               * apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`selection_filter_library_page` page.
+
+       * specify the axis of rotation:
+               * specify the coordinates of the start **Point** of the vector of rotation;
+               * specify the **Vector** of rotation through the coordinates of its end point with respect to the coordinates of the start point;
+
+       * specify the **Angle** of rotation 
+
+       * specify the conditions of rotation:
+
+               * activate **Move elements** radio button to create  the source mesh (or elements) at the new location and erase it from the previous location;
+               * activate **Copy elements** radio button to create the source mesh (or elements) at the new location, but leave it at the previous location, the source mesh will be considered one and single mesh with the result of the rotation;
+               * activate **Create as new mesh** radio button to leave the source mesh (or elements) at its previous location and create a new mesh at the new location, the new mesh appears in the Object Browser with the default name MeshName_rotated (it is possible to change this name in the adjacent box);
+               * activate **Copy groups** checkbox to copy the groups of elements of the source mesh to the newly created mesh.
+
+       * activate **Preview** checkbox to show the result of transformation in the viewer 
+       * click **Apply** or **Apply and Close** button to confirm the operation.
+
+
+.. image:: ../images/rotation1.png 
+       :align: center
+
+.. centered::
+       The initial mesh
+
+.. image:: ../images/rotation2.png 
+       :align: center
+
+.. centered::
+       The rotated mesh
+
+**See Also** a sample TUI Script of a :ref:`tui_rotation` operation.  
+
+
diff --git a/doc/gui/input/scalar_bar.rst b/doc/gui/input/scalar_bar.rst
new file mode 100644 (file)
index 0000000..fa1961e
--- /dev/null
@@ -0,0 +1,29 @@
+.. _scalar_bar_dlg:
+
+*********************
+Scalar Bar properties
+*********************
+
+In this dialog you can specify the properties of the scalar bar
+
+.. image:: ../images/scalar_bar_dlg.png
+       :align: center
+
+
+* **Scalar Range** - in this menu you can specify **Min value** and **Max value** of the **Scalar Bar**, and turn on/off **Logarithmic** scaling of the scalar bar.
+
+       .. note::
+               **Logarithmic scale** is not applicable in case of negative and zero values in the range. In such cases it is disabled.
+
+* **Font** - in this menu you can set type, face and color for the font of **Title** and **Labels** of the **Scalar Bar**
+
+* **Colors & Labels** - in this menu you can set the **number of colors** and the **number of labels** of the **Scalar Bar**
+
+* **Orientation** - allows choosing between vertical and horizontal orientation of the **Scalar Bar**.
+
+* **Origin & Size Vertical & Horizontal** - allows defining the location (**X** and **Y**) and size (**Width** and **Height**) of **Scalar Bar**
+       * **X**: abscissa of the origin (from the left side)
+       * **Y**: ordinate of the origin (from the bottom)
+* **Distribution** - in this menu you can Show/Hide distribution histogram of the values of the **Scalar Bar** and specify histogram properties
+       * **Multicolor** the histogram is colored as **Scalar Bar**
+       * **Monocolor** the histogram is colored as selected with **Distribution color** selector
diff --git a/doc/gui/input/scale.rst b/doc/gui/input/scale.rst
new file mode 100644 (file)
index 0000000..9ff8b37
--- /dev/null
@@ -0,0 +1,119 @@
+.. _scale_page:
+
+*****
+Scale
+*****
+
+This geometrical operation allows to scale in space your mesh or some of its elements.
+
+*To scale a mesh:*
+
+#. From the **Modification** menu choose **Transformation** -> **Scale Transform** item.
+
+   The following dialogs will appear, where you can select how to scale:
+
+       * with one scale factor:
+
+       .. image:: ../images/scale01.png
+               :align: center
+
+       * or with different scale factors for axes:
+
+       .. image:: ../images/scale02.png
+               :align: center
+
+#. In the dialog:
+       * specify the IDs of the translated elements:
+               * **Select the whole mesh, submesh or group** activating this checkbox; or
+               * choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
+               * input the element IDs directly in **ID Elements** field. The selected elements will be highlighted in the viewer; or
+               * apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`selection_filter_library_page` page.
+
+       * specify the base point for scale
+
+       * specify the scale factor
+
+       * specify the conditions of scale:
+
+               * activate **Move elements** radio button to scale the selected mesh (or elements) without creating a copy;
+               * activate **Copy elements** radio button to duplicate the selected mesh (or elements) and to apply scaling to the copy within the same mesh;
+               * activate **Create as new mesh** radio button to leave the selected mesh (or elements) at its previous location and create a new mesh of the scaled copy of the selected elements; the new mesh appears in the Object Browser with the default name MeshName_scaled (it is possible to change this name in the adjacent box);
+               * activate **Copy groups** checkbox to copy the groups of elements existing in the source mesh to the newly created mesh.
+
+       * activate **Preview** checkbox to show the result of transformation in the viewer 
+       * click **Apply** or **Apply and Close** button to confirm the operation.
+
+
+**Example of using:**
+
+#. Create quandrangle mesh 3x3 on a simple planar face (200x200)
+
+       .. image:: ../images/scaleinit01.png
+               :align: center
+
+   and union 3 faces (along axis Z) to group "gr_faces"
+
+       .. image:: ../images/scaleinit02.png
+               :align: center
+
+
+
+#. Perform scale operation for the whole mesh and create a new mesh:
+
+       .. image:: ../images/scale03.png
+               :align: center
+
+   result after operation:
+
+       .. image:: ../images/scaleres03.png
+               :align: center
+
+#. Perform scale operation for the whole mesh and copy elements:
+
+       .. image:: ../images/scale04.png
+               :align: center
+
+   result after operation:
+
+       .. image:: ../images/scaleres04.png
+               :align: center
+
+#. Perform scale operation for a group of faces and copy elements:
+
+       .. image:: ../images/scale06.png
+               :align: center
+
+   result after operation:
+
+       .. image:: ../images/scaleres06.png
+               :align: center
+
+
+
+#. Perform scale operation for two edges and move elements:
+
+       .. image:: ../images/scale07.png
+               :align: center
+
+   result after operation:
+
+       .. image:: ../images/scaleres07.png
+               :align: center
+
+
+
+#. Perform scale operation for one face and move elements:
+
+       .. image:: ../images/scale09.png
+               :align: center
+
+   result after operation:
+
+       .. image:: ../images/scaleres09.png
+               :align: center
+
+
+**See Also** a sample TUI Script of a :ref:`tui_scale` operation.  
+
+
+
diff --git a/doc/gui/input/scaled_jacobian.rst b/doc/gui/input/scaled_jacobian.rst
new file mode 100644 (file)
index 0000000..fddfd09
--- /dev/null
@@ -0,0 +1,49 @@
+.. _scaled_jacobian_page:
+
+***************
+Scaled Jacobian
+***************
+
+The **Scaled Jacobian** mesh quality criteria is a scalar measure of the deviation from the perfect element in the geometrical sense. This measure normalizes the range of reported values between [0,1] for a normal element, the value of 1 is considered a perfect element and 0 a element with a collapsed side. Negative values are also accepted for invalid elements.
+
+The **Scaled Jacobian** is implemented for all volumetric elements (except for polyhedrons, returning 0).
+
+For tetrahedrons and hexahedrons, the formulas are
+defined in `The Verdict Library Reference Manual [1] <https://gitlab.kitware.com/third-party/verdict/-/blob/master/SAND2007-2853p.pdf>`_.
+
+For pyramid, the minimum scaled jacobian of the four tetrahedrons formed
+in the four vertices of the pyramid base is reported.
+
+For pentahedron, a decomposition into tetrahedron is also done.
+
+For hexahedron prisms, the minimum scaled jacobian between two pentahedrons and one hexahedron is reported.
+
+* Geometrically the Scaled Jacobian of a **tetrahedron** can be understood by the follow figure:
+
+       .. image:: ../images/scaled_jacobian_tetra.png
+               :align: center
+
+       The reported Scaled Jacobian will be 1 if :math:`\alpha=45^{\circ}`
+
+* For **hexadrons** this measure return 1 for the perfect non rotated elements:
+
+       .. image:: ../images/scaled_jacobian_hexa.png
+               :align: center
+
+       The reported Scaled Jacobian will be 1 if :math:`\alpha=0^{\circ}` for all the vertices
+
+
+*To visualize the Scaled Jacobian quality criterion in your mesh:*
+
+.. |img| image:: ../images/scaled_jacobian.png
+
+#. Display your mesh in the viewer.
+#. Choose **Controls > Volume Controls > Scaled Jacobian** or click *"Scaled Jacobian"* button |img| of the toolbar.
+   
+   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
+
+       .. image:: ../images/scaled_jacobian_mesh_hexa.png
+               :align: center
+
+
+**See Also** a sample TUI Script of a :ref:`tui_scaled_jacobian` filter.
diff --git a/doc/gui/input/segments_around_vertex_algo.rst b/doc/gui/input/segments_around_vertex_algo.rst
new file mode 100644 (file)
index 0000000..e70c160
--- /dev/null
@@ -0,0 +1,25 @@
+.. _segments_around_vertex_algo_page:
+
+**********************
+Segments around Vertex
+**********************
+
+**Segments around Vertex** algorithm is considered to be a 0D meshing
+algorithm, but, of course, it doesn't mesh vertices. It allows to define
+the local size of the segments in the neighborhood of a certain
+vertex. If we assign this algorithm to a geometrical object of higher
+dimension, it applies to all its vertices.
+
+.. _note: To create 0D elements, use :ref:`adding_nodes_and_elements_page` operation.
+
+Length of segments near vertex is defined by **Length Near Vertex** hypothesis.
+This hypothesis is used by :ref:`Wire Discretization <a1d_algos_anchor>` or
+:ref:`Composite Side Discretization <a1d_algos_anchor>` algorithms as
+follows: a geometrical edge is discretized according to a 1D 
+hypotheses and then nodes near vertices are modified to assure the 
+segment length required by **Length Near Vertex** hypothesis.
+
+.. image:: ../images/lengthnearvertex.png
+       :align: center                                                 
+
+**See also** a sample :ref:`TUI Script <tui_segments_around_vertex>`.
diff --git a/doc/gui/input/selection_filter_library.rst b/doc/gui/input/selection_filter_library.rst
new file mode 100644 (file)
index 0000000..928678c
--- /dev/null
@@ -0,0 +1,148 @@
+.. _selection_filter_library_page:
+
+************************
+Selection filter library
+************************
+
+Selection filter library allows creating and storing in files
+the filters that can be later reused for operations on meshes. You can
+access it via menu **Tools > Selection filter library**.
+It is also possible to save/load a filter by invoking the filter library
+from :ref:`filtering_elements` launched from any mesh operation.
+
+.. image:: ../images/selectionfilterlibrary.png
+       :align: center
+
+**Library file name** shows the path and the file name where your
+filters will be stored. By clicking the **Browse** button you can
+load an existing filter library.
+
+**Names of filters** lists the filters created or uploaded for
+the current study. You can **Add** or **Delete** filters.
+
+In **Filter name** box you can specify the name for your
+filter. By default it is prefixed with the corresponding entity type.
+
+.. _filtering_elements:
+
+Filter Dialog
+#############
+
+When we use filters during group creation or another operation (by 
+clicking **Set Filter** button in the corresponding dialog), the
+dialog for setting filters looks as shown below.
+
+.. image:: ../images/a-filteronfaces.png
+       :align: center
+
+The **Add** button creates a new criterion at the end of the list of
+criteria. The **Insert** button creates a new criterion before the
+selected criterion. The **Remove** button deletes the selected
+criterion. The **Clear** button deletes all criteria.
+
+If there is a choice of **Entity type** in the dialog, only
+criteria of currently selected type are used to create or change a
+filter, and criteria of hidden types (if were specified) are ignored.
+
+Each **Entity type** has its specific list of criteria, however all
+filters have common syntax. The **Threshold Value** should be specified 
+for most criteria. For numerical criteria it is necessary to indicate if 
+the found elements should be **More**, **Less** or **Equal** to this
+**Value**. You can also reverse the sense of a criterion using **Unary**
+operator *Not* and you should specify logical relations between
+criteria using **Binary** operators *Or* and *And*.
+
+Some criteria have the additional parameter of **Tolerance**. 
+
+Switching on **Insert filter in viewer** check-box limits
+selection of elements in the Viewer to the current filter.
+
+In the **Source** field you choose if the filter will be applied to
+the whole **Mesh**, the **Initial Selection** or the **Current Dialog**. 
+If **Mesh** is chosen, the elements satisfying the filter
+will be selected in the 3D Viewer. If **Initial Selection** is
+chosen, the filter will be applied to the selected elements and the
+elements rejected by the filter will be deselected. If **Current Dialog** 
+is chosen, the filter will be applied to the list of
+elements in the current dialog and the elements rejected
+by the filter will be removed from the list.
+
+**Copy from...** button gives you a possibility to load an
+existing filter from **Selection filter library** and **Add to...** 
+button gives you a possibility to save your current filter in the Library.
+
+.. note::
+       If the button **Apply and Close** is disabled, there is no selected mesh in the Object Browser and the filter can not be created. You have to select the mesh and the button will be enabled.
+
+Some criteria are applicable to all **Entity types**:
+
+* **Belong to Geom** selects entities whose all nodes lie on the shape defined by **Threshold Value**. If the threshold shape is a sub-shape of the main shape of the mesh, the filtering algorithm works faster because node-to-shape association is used instead of measuring distance between nodes and the shape, and **Tolerance** is not used. If the threshold shape is any other shape, the algorithm works slower because distance between nodes and the shape is measured and is compared with **Tolerance**. The latter approach (distance measurement) is also used if an element is not associated to any shape.
+* **Lying on Geom** selects entities whose at least one node lies on the shape defined by the **Threshold Value**. If the threshold shape is a sub-shape of the main shape of the mesh, the filtering algorithm works faster because node-to-shape association is used instead of measuring distance between nodes and the shape, and **Tolerance** is not used. If the threshold shape is any other shape, the algorithm works slower because distance between nodes and the shape is measured and is compared with **Tolerance**. The latter approach (distance measurement) is also used if an element is not associated to any shape.
+* **Belong to Mesh Group** selects entities included into the mesh group defined by the **Threshold Value**.
+* **Range of IDs** allows selection of entities with the specified IDs. **Threshold Value** can be, for example: "1,2,3,50-60,63,67,70-78"
+* **Color of Group** allows selection of entities belonging to the Group with the color defined by the **Threshold Value**.
+* **Elements of a domain** allows selection of entities belonging to one domain of a mesh. The domain is mesh part not connected to other parts. **Threshold Value** locating any element of the domain can be either
+       * node ID (that you can pick in the Viewer) or
+       * geometrical vertex (that you can pick either in the Viewer or in the Object Browser) or
+       * 3 coordinates of a point (that you can enter in TUI mode only).
+
+Some criteria are applicable to entities of dimension more than zero, i.e. to **Edges**, **Faces** and **Volumes**:
+
+* **Linear** allows selection of Linear or Quadratic elements (if Unary is set to "Not")
+* **Geometry type** allows selection of elements by their geometric type defined by the **Threshold Value**. The list of available geometric types depends on the current entity type.
+* **Entity type** allows selection of elements by their type defined as a combination of geometry type and the number of nodes.
+
+The following criteria are applicable to Entities of **all** types except for *Volumes*:
+
+* **Belong to Plane** selects entities whose all nodes belong to a specified plane within a given **Tolerance**.
+* **Belong to Cylinder** selects entities whose all nodes belong to a specified cylinder within a given **Tolerance**.
+* **Belong to Surface** selects entities whose all nodes belong to a specified arbitrary surface within a given **Tolerance**.
+
+The following criteria allow selecting mesh **Nodes**:
+
+* **Free nodes** selects nodes not belonging to any mesh element.
+* **Double nodes** selects a node coincident with other nodes (within a given **Tolerance**). See also :ref:`Double Nodes quality control <tui_double_nodes_control>`.
+* **Connectivity number** selects nodes with a number of connected elements, which is more, less or equal to **Threshold Value**. Elements of the highest dimension are countered only.
+
+The following criteria allow selecting mesh **Edges**:
+
+* **Free Borders** selects free 1D mesh elements, i.e. edges belonging to one element (face or volume) only. See also a :ref:`Free Borders quality control <free_borders_page>`.
+* **Double edges** selects 1D mesh elements basing on the same set of nodes. See also :ref:`filter_double_elements` quality control.
+* **Borders at Multi-Connections** selects edges belonging to several faces. The number of faces should be more, less or equal (within a given **Tolerance**) to **Threshold Value**. See also a :ref:`borders_at_multi_connection_page` quality control.
+* **Length** selects edges with a value of length, which is more, less or equal (within a given **Tolerance**) to **Threshold Value**. See also a :ref:`length_page`  quality control.
+
+The following criteria allow selecting mesh **Faces**:
+
+* **Aspect ratio** selects 2D mesh elements with an aspect ratio (see also an :ref:`aspect_ratio_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
+* **Warping** selects quadrangles with warping angle (see also a :ref:`warping_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
+* **Minimum angle** selects triangles and quadrangles with minimum angle (see also a :ref:`minimum_angle_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
+* **Taper** selects quadrangles cells with taper value (see also a :ref:`taper_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
+* **Skew** selects triangles and quadrangles with skew value (see also a :ref:`skew_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
+* **Area** selects triangles and quadrangles with a value of area (see also an :ref:`area_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
+* **Free edges** selects 2D mesh elements having at least one edge, which is not shared with other faces. See also a :ref:`free_edges_page` quality control.
+* **Free faces** selects 2D mesh elements, which belong to less than two volumes.
+* **Double faces** selects 2D mesh elements basing on the same set of nodes. See also :ref:`filter_double_elements` quality control.
+* **Faces with bare border** selects 2D mesh elements having a free border without an edge on it. See also :ref:`bare_border_faces_page` quality control.
+* **Over-constrained faces** selects 2D mesh elements having only one border shared with other 2D elements. See also :ref:`over_constrained_faces_page` quality control.
+* **Borders at Multi-Connections 2D** selects cells consisting of edges belonging to several elements of mesh. The number of mesh elements should be more, less or equal (within a given **Tolerance**) to **Threshold Value**. See also a :ref:`borders_at_multi_connection_2d_page` quality control.
+* **Length 2D** selects triangles and quadrangles combining of the edges with a value of length, which is more, less or equal (within a given **Tolerance**) to **Threshold Value**. See also a :ref:`length_2d_page` quality control.
+* **Coplanar faces** selects mesh faces neighboring the one selected by ID in **Threshold Value** field, if the angle between the normal to the neighboring face and the normal to the selected face is less then the angular tolerance (defined in degrees). Selection continues among all neighbor faces of already selected ones.
+* **Element Diameter 2D** selects triangles and quadrangles composed of the edges and diagonals with a value of length, which is more, less or equal (within a given **Tolerance**) to **Threshold Value**. See also a :ref:`max_element_length_2d_page` quality control.
+
+The following criteria allow selecting mesh **Volumes**:
+
+* **Aspect ratio 3D** selects 3D mesh elements with an aspect ratio (see also an :ref:`aspect_ratio_3d_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
+* **Volume** selects 3D mesh elements with a value of volume (see also a :ref:`volume_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
+* **Element Diameter 3D** selects 3D mesh elements composed of the edges and diagonals with a value of length, which is more, less or equal (within a given **Tolerance**) to **Threshold Value**. See also a :ref:`max_element_length_3d_page` quality control.
+* **Double volumes** selects 3D mesh elements basing on the same set of nodes. See also :ref:`filter_double_elements` quality control.
+* **Bad oriented volume** selects mesh volumes, which are incorrectly oriented from the point of view of MED convention.
+* **Over-constrained volumes** selects mesh volumes having only one facet shared with other volumes. See also :ref:`over_constrained_volumes_page` quality control.
+* **Volumes with bare border** selects 3D mesh elements having a free border without a face on it. See also :ref:`bare_border_volumes_page` quality control.
+
+
+**See also** sample scripts of :ref:`tui_filters_page`.
+
+
+
+
+
diff --git a/doc/gui/input/sewing_meshes.rst b/doc/gui/input/sewing_meshes.rst
new file mode 100644 (file)
index 0000000..26e7a14
--- /dev/null
@@ -0,0 +1,250 @@
+.. _sewing_meshes_page:
+
+*************
+Sewing meshes
+*************
+
+In SMESH you can sew elements of a mesh. The current functionality allows you to sew:
+
+* :ref:`free_borders_anchor`
+* :ref:`conform_free_borders_anchor`
+* :ref:`border_to_side_anchor`
+* :ref:`side_elements_anchor`
+
+
+.. image:: ../images/sewing.png 
+       :align: center
+
+.. centered::
+       *"Sewing"* button
+
+*To sew elements of a mesh:*
+
+#. From the **Modification** menu choose the **Transformation** item and from its sub-menu select the **Sewing** item.
+#. Check in the dialog box one of the radio buttons corresponding to the type of sewing operation you would like to perform.
+#. Fill the other fields available in the dialog box.
+#. Click the **Apply** or **Apply and Close** button to perform the operation of sewing.
+
+
+
+.. _free_borders_anchor:
+
+Sew free borders
+################
+
+This functionality allows you to unite free borders of a 2D mesh.
+
+There are two working modes: *Automatic* and *Manual*.
+
+* In the **Automatic** mode, the program finds free borders coincident within the
+  specified tolerance and sews them. Optionally it is possible to
+  visually check and correct if necessary the found free borders before
+  sewing. 
+* In the **Manual** mode you are to define borders to sew by picking
+  three nodes of each of two borders.
+
+.. image:: ../images/sewing1.png
+       :align: center
+
+.. centered::
+       Default mode is *Automatic*
+
+To use **Automatic** sewing:
+
+* Specify the mesh you want to sew by selecting it or any its part (group or sub-mesh) in the Object Browser or in the VTK Viewer.
+* Specify the **Tolerance**, within which free borders are considered coincident. At the default zero **Tolerance**, the tolerance used by he search algorithm is defined as one tenth of an average size of elements adjacent to compared free borders.
+* To visually check the coincident free borders found by the algorithm, switch off **Auto Sewing** check-box. The controls to adjust groups of coincident free borders will become available in the dialog.
+
+       .. image:: ../images/sewing_auto.png
+               :align: center
+
+       .. centered::
+               Controls to adjust groups of coincident free borders
+
+* **Detect** button launches the algorithm of search of coincident free borders.
+* The found groups of **Coincident Free Borders** are shown in the list, one group per line. Each group has its own color, which is used to display the group borders in the VTK Viewer. A free border within a group is designated by the IDs of its first, second and last nodes within parenthesis. All borders present in the list will be sewn upon **Apply**. 
+* **Remove** button removes the selected groups from the list.
+* **Select All** check-box selects all groups in the list.
+* When a group is selected, its borders appear in **Edit Selected Group** list that allows you to change this group.
+
+       .. image:: ../images/sort.png
+               :align: center
+
+  * **Set First** button moves the selected border to the first position in the group, as a result other borders will be moved to this border during sewing.
+
+       .. image:: ../images/remove.png
+               :align: center
+
+  * **Remove Border** button removes the selected borders from the group. It is active if there are more than two borders in the group.
+
+
+* Selection of a border in the list allows changing its first and last nodes whose IDs appear in two fields below the list.
+
+  * *Arrow* buttons near each field move the corresponding end node by the number of nodes defined by **Step** field.
+       .. image:: ../images/swap.png
+               :align: center
+
+  * **Swap** button swaps the first and last nodes of a selected border.
+
+
+For sewing free borders manually you should switch the **Mode** to **Manual** and define three points on each border: the first, the second and the last node:
+
+       .. image:: ../images/sewing_manual.png
+               :align: center
+
+* the first node specifies beginning of the border;
+* the second node specifies the part of the border which should be considered (as far as the free border usually forms a closed contour);
+* the last node specifies the end of the border.
+
+
+You can select these nodes in the 3D viewer or define by its id.
+
+The first and the second nodes should belong to the same link of a
+face. The second and the last nodes of a border can be the same. The
+first and the last nodes of two borders can be the same. The
+corresponding end nodes of two borders will be merged. Intermediate
+nodes of two borders will be either merged or inserted into faces of
+the opposite border.
+
+In practice the borders to sew often coincide and in this case it is
+difficult to specify the first and the last nodes of a border since
+they coincide with the first and the last nodes of the other
+border. To cope with this,
+:ref:`merge <merging_nodes_page>` coincident nodes into one
+beforehand. Two figures below illustrate this approach.
+
+.. image:: ../images/sew_using_merge.png               
+       :align: center
+
+.. centered::
+       Merge coincident nodes, which are difficult to distinguish
+
+.. image:: ../images/sew_after_merge.png
+               :align: center
+
+.. centered::
+       After merging nodes it is easy to specify border nodes
+
+The sewing algorithm is as follows:
+
+#. The parameter (U) of each node within a border is computed. So that the first node has U=0.0, the last node has U=1.0, for the rest nodes 0.0 < U < 1.0;
+#. Compare node parameters of the two borders. If two nodes of the opposite borders have close parameters, they are merged, i.e. a node of the first border is replaced in all elements by a node of the second border. If a node has no node with a close parameter in the opposite border, it is inserted into an edge of element of the opposite border, an element is split. Two nodes are considered close enough to merge, if difference of their parameters is less than one fifth of minimum length of adjacent face edges on the borders.
+
+
+       .. image:: ../images/image22.jpg 
+               :align: center
+
+       .. centered::
+               Sewing free borders
+
+**See Also** a sample TUI Script of a 
+:ref:`tui_sew_free_borders` operation.
+
+
+.. _conform_free_borders_anchor:
+
+Sew conform free borders
+########################
+
+This functionality can be used to unite two free borders of a 2D mesh.
+
+.. image:: ../images/sewing2.png
+       :align: center
+
+The borders of meshes for sewing are defined as for :ref:`free_borders_anchor`
+except that the second free border is not limited and can be defined
+by the first and the second nodes only. The first nodes of two borders
+can be the same.
+
+The algorithm is following: counting nodes starting at the first ones,
+the n-th node of the first border is merged with the n-th node of the
+other border, until the end of either of borders. Nodes of the first
+border are replaced in all elements with corresponding nodes of the
+second border.
+
+.. note:: 
+       For sewing conform free borders you should define three points on the first border and two points on the second one. User can select these nodes in 3D viewer or define node by its id.
+
+.. image:: ../images/image23.jpg 
+       :align: center
+
+.. centered::
+       Sewing conform free borders
+
+**See Also** a sample TUI Script of a 
+:ref:`tui_sew_conform_free_borders` operation.
+
+
+.. _border_to_side_anchor:
+
+Sew border to side
+##################
+
+*Sew border to side* is intended to sew a free border to a mesh surface.
+
+The free border is defined as for :ref:`free_borders_anchor`. The place where to sew the border is defined by two nodes, between which the border faces are placed, so that the first border node is merged with the first node on the side and the last node of the border is merged with the second specified node on the side.
+
+.. image:: ../images/sewing3.png
+       :align: center
+
+The algorithm is following.
+
+#. Find a sequence of linked nodes on the side such that the found links to be most co-directed with the links of the free border.
+#. Sew two sequences of nodes using algorithm of :ref:`free_borders_anchor`.
+
+.. note:: 
+       For sewing border to side you should define three points on the border and two points on the side. User can select these nodes in 3D viewer or define node by its id.
+
+.. image:: ../images/image30.jpg 
+       :align: center
+
+.. centered::
+       Sewing border to side
+
+**See Also** a sample TUI Script of a 
+:ref:`tui_sew_meshes_border_to_side` operation.  
+
+
+.. _side_elements_anchor:
+
+Sew side elements
+=================
+
+This operation is intended to unite two mesh surfaces.
+
+.. image:: ../images/sewing4.png 
+       :align: center
+
+Surfaces may be defined by either 2d or 3d elements. The number of
+given elements of the sides must be the same. The sets of given
+elements must be topologically equal, i.e. each node of one element
+set must have a corresponding node in the other element set and
+corresponding nodes must be equally linked. If there are 3d elements
+in a set, only their free faces must obey to that rule.
+
+Two corresponding nodes on each side must be specified. They must belong to one element and must be located on an element set boundary.
+
+Sewing algorithm finds and merges the corresponding nodes starting
+from the specified ones.
+
+.. image:: ../images/image31.jpg 
+       :align: center
+
+.. centered::
+       Step-by-step sewing process
+
+.. image:: ../images/image32.jpg 
+       :align: center
+
+.. centered::
+       The result of side elements sewing
+
+For sewing side elements you should define elements for sewing and two
+nodes for merging on the each side. User can select these elements and
+nodes in 3D viewer or define them by its id.
+
+**See Also** a sample TUI Script of a 
+:ref:`tui_sew_side_elements` operation.  
+
+
diff --git a/doc/gui/input/skew.rst b/doc/gui/input/skew.rst
new file mode 100644 (file)
index 0000000..ed9dfa2
--- /dev/null
@@ -0,0 +1,29 @@
+.. _skew_page:
+
+****
+Skew
+****
+
+**Skew** mesh quality criterion reflects the angle between the lines
+that join opposite sides of a quadrangle element or the greatest angle
+between a median and a midline in a triangle element. This mesh quality
+criterion can be applied to elements composed of 4 and 3 nodes
+(quadrangles and triangles).
+
+.. image:: ../images/image27.jpg
+       :align: center
+
+*To apply the Skew quality criterion to your mesh:*
+
+.. |img| image:: ../images/image40.png
+
+#. Display your mesh in the viewer.
+#. Choose **Controls > Face Controls > Skew** or click *"Skew"* button |img| of the toolbar.
+
+   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
+
+       .. image:: ../images/image93.jpg
+               :align: center
+
+
+**See Also** a sample TUI Script of a :ref:`tui_skew` filter.
diff --git a/doc/gui/input/smeshBuilder.rst b/doc/gui/input/smeshBuilder.rst
new file mode 100644 (file)
index 0000000..5631ecd
--- /dev/null
@@ -0,0 +1,21 @@
+
+smeshBuilder module
+===================
+
+.. contents:: 
+
+.. automodule:: smeshBuilder
+   :synopsis: 
+   :members: GetName, DegreesToRadians, New
+
+smeshBuilder class
+------------------
+
+.. autoclass:: smeshBuilder
+   :members:
+
+Mesh class
+------------------
+.. autoclass:: Mesh
+   :members:
+
diff --git a/doc/gui/input/smesh_migration.rst b/doc/gui/input/smesh_migration.rst
new file mode 100644 (file)
index 0000000..645feb2
--- /dev/null
@@ -0,0 +1,108 @@
+.. _smesh_migration_page:
+
+******************************************************
+Modifying Mesh Python scripts from SALOME 6 and before
+******************************************************
+
+In SALOME 7.2, the Python interface for Mesh has been slightly modified to offer new functionality:
+
+
+Scripts generated for SALOME 6 and older versions must be adapted to work in SALOME 7.2 with full functionality.
+The compatibility mode allows old scripts to work in almost all cases, but with a warning.
+
+See also *"Modifying Geometry Python scripts from SALOME 6 and before"* page in the Geometry module's
+User Guide.
+
+* **Salome initialisation** must always be done as shown below.
+
+  (*salome_init()* can be invoked safely several times)::
+
+       import salome
+       salome.salome_init()
+
+* **smesh initialisation** is modified.
+
+  The old mode (from dump)::
+
+       import smesh, SMESH, SALOMEDS
+       smesh.SetCurrentStudy(salome.myStudy)
+
+  The new mode::
+
+       import SMESH, SALOMEDS
+       from salome.smesh import smeshBuilder
+       smesh =  smeshBuilder.New()
+
+
+* Of course, **from smesh import** * is **no more possible.**
+
+  You have to explicitly write *smesh.some_method()*.
+
+* All **algorithms** have been transferred from the namespace *smesh* to the namespace *smeshBuilder*.
+
+  For instance::
+
+       Quadrangle_2D_1 = Mesh_1.Quadrangle(algo=smesh.QUADRANGLE,geom=Face_1)
+
+  is replaced by::
+
+       Quadrangle_2D_1 = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE,geom=Face_1)
+
+  StdMeshers algorithms concerned are *REGULAR, PYTHON, COMPOSITE, Hexa, QUADRANGLE, RADIAL_QUAD*.
+
+  SMESH Plugins provide such algorithms as: *NETGEN, NETGEN_FULL, FULL_NETGEN, NETGEN_1D2D3D, NETGEN_1D2D, NETGEN_2D, NETGEN_3D*.
+
+  If you use DISTENE plugins, you also have *BLSURF, GHS3D, GHS3DPRL, Hexotic*.
+
+* Some **variables** were available in both namespaces *smesh* and *SMESH*. Now they are available only in namespace *SMESH*.
+
+  The dump function used only the namespace *SMESH*,
+  so, if your script was built with the help of the dump function, it should be already OK in this respect.
+
+  The most used variables concerned are:
+
+  * *NODE, EDGE, FACE, VOLUME, ALL.*
+  * *FT_xxx, geom_xxx, ADD_xxx...*
+
+  For instance::
+
+       srcFaceGroup = srcMesh.GroupOnGeom( midFace0, "src faces", smesh.FACE )
+       mesh.MakeGroup("Tetras",smesh.VOLUME,smesh.FT_ElemGeomType,"=",smesh.Geom_TETRA)
+       filter = smesh.GetFilter(smesh.FACE, smesh.FT_AspectRatio, smesh.FT_MoreThan, 6.5)
+
+  is replaced by::
+
+       srcFaceGroup = srcMesh.GroupOnGeom( midFace0, "src faces", SMESH.FACE )
+       mesh.MakeGroup("Tetras",SMESH.VOLUME,SMESH.FT_ElemGeomType,"=",SMESH.Geom_TETRA)
+       filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_AspectRatio, SMESH.FT_MoreThan, 6.5)
+
+
+* The namespace **smesh.smesh** does not exist any more, use **smesh** instead.
+
+  For instance::
+
+       Compound1 = smesh.smesh.Concatenate([Mesh_inf.GetMesh(), Mesh_sup.GetMesh()], 0, 1, 1e-05)
+
+  is replaced by::
+
+       Compound1 = smesh.Concatenate([Mesh_inf.GetMesh(), Mesh_sup.GetMesh()], 0, 1, 1e-05)
+
+* If you need to **import a SMESH Plugin** explicitly, keep in mind that they are now located in separate namespaces.
+
+  For instance::
+
+       import StdMeshers
+       import NETGENPlugin
+       import BLSURFPlugin
+       import GHS3DPlugin
+       import HexoticPLUGIN
+
+  is replaced by:: 
+
+       from salome.StdMeshers import StdMeshersBuilder
+       from salome.NETGENPlugin import NETGENPluginBuilder
+       from salome.BLSURFPlugin import BLSURFPluginBuilder
+       from salome.GHS3DPlugin import GHS3DPluginBuilder
+       from salome.HexoticPLUGIN import HexoticPLUGINBuilder
+
+
diff --git a/doc/gui/input/smesh_module.rst b/doc/gui/input/smesh_module.rst
new file mode 100644 (file)
index 0000000..831452e
--- /dev/null
@@ -0,0 +1,962 @@
+SMESH module
+============
+
+.. contents:: 
+
+.. py:module:: SMESH
+
+DriverMED_ReadStatus
+--------------------
+
+.. py:class:: DriverMED_ReadStatus
+
+   Enumeration for mesh read status
+
+   .. py:attribute:: DRS_OK 
+
+      Ok
+
+   .. py:attribute:: DRS_EMPTY
+                     
+      a file contains no mesh with the given name
+
+   .. py:attribute:: DRS_WARN_RENUMBER
+
+      a MED file has overlapped ranges of element numbers,
+      so the numbers from the file are ignored
+
+   .. py:attribute:: DRS_WARN_SKIP_ELEM
+      
+      some elements were skipped due to incorrect file data
+
+   .. py:attribute:: DRS_WARN_DESCENDING
+
+      some elements were skipped due to descending connectivity
+
+   .. py:attribute:: DRS_FAIL
+
+      general failure (exception etc.)
+
+ComputeErrorName
+----------------
+
+.. py:class:: ComputeErrorName
+
+   Enumeration of computation errors
+
+   .. py:attribute:: COMPERR_OK
+
+      Ok
+      
+   .. py:attribute:: COMPERR_BAD_INPUT_MESH
+
+      wrong mesh of lower sub-mesh
+
+   .. py:attribute:: COMPERR_STD_EXCEPTION
+
+      some std exception raised
+
+   .. py:attribute:: COMPERR_OCC_EXCEPTION
+
+      OCC exception raised
+
+   .. py:attribute:: COMPERR_SLM_EXCEPTION
+
+      SALOME exception raised
+
+   .. py:attribute:: COMPERR_EXCEPTION
+
+      other exception raised
+
+   .. py:attribute:: COMPERR_MEMORY_PB
+
+      memory allocation problem
+
+   .. py:attribute:: COMPERR_ALGO_FAILED
+
+      computation failed
+
+   .. py:attribute:: COMPERR_BAD_SHAPE
+
+      bad geometry
+
+   .. py:attribute:: COMPERR_WARNING
+
+      algo reports error but sub-mesh is computed anyway
+
+   .. py:attribute:: COMPERR_CANCELED
+
+      compute canceled
+
+   .. py:attribute:: COMPERR_NO_MESH_ON_SHAPE
+
+      no mesh elements assigned to sub-mesh
+
+   .. py:attribute:: COMPERR_BAD_PARMETERS
+
+      incorrect hypotheses parameters
+
+
+ComputeError
+------------
+
+.. py:class:: ComputeError
+
+   Error details
+
+   .. py:attribute:: code
+
+      ``int`` - :class:`ComputeErrorName` or, if negative, algo specific code
+
+   .. py:attribute:: comment
+                     
+      ``str`` - textual problem description
+
+   .. py:attribute:: algoName
+
+      ``str``
+
+   .. py:attribute:: subShapeID
+      
+      ``int`` - id of sub-shape of a shape to mesh
+
+   .. py:attribute:: hasBadMesh
+
+      ``boolean`` - there are elements preventing computation available for visualization
+
+Measure
+-------
+
+.. py:class:: Measure
+
+   Data returned by measure operations
+
+   .. py:attribute:: minX, minY, minZ
+
+      ``double`` - coordinates of one point
+
+   .. py:attribute:: maxX, maxY, maxZ
+
+      ``double`` - coordinates of another point
+
+   .. py:attribute:: node1, node2
+
+      ``long`` - IDs of two nodes
+
+   .. py:attribute:: elem1, elem2
+
+      ``long`` - IDs of two elements
+
+   .. py:attribute:: value
+
+      ``double`` - distance
+
+NodePosition
+------------
+
+.. py:class:: NodePosition
+
+   Node location on a shape
+
+   .. py:attribute:: shapeID             
+
+      ``long`` - ID of a shape
+
+   .. py:attribute:: shapeType 
+
+      ``GEOM.shape_type`` - type of shape
+
+   .. py:attribute:: params
+
+      ``list of float`` - 
+
+        * [U] on EDGE, 
+        * [U,V] on FACE,
+        * [] on the rest shapes
+
+ElementPosition
+---------------
+
+.. py:class:: ElementPosition
+
+   Element location on a shape
+
+   .. py:attribute:: shapeID
+
+      ``long`` - ID of a shape
+
+   .. py:attribute:: shapeType
+
+      ``GEOM.shape_type`` - type of shape
+
+PolySegment
+-----------
+
+.. py:class:: PolySegment
+
+   Define a cutting plane passing through two points. 
+   Used in :meth:`~smeshBuilder.Mesh.MakePolyLine`
+
+   .. py:attribute:: node1ID1, node1ID2
+
+      ``int,int`` - *point 1*: if *node1ID2* > 0, then the point is in the middle of a face edge defined
+                by two nodes, else it is at *node1ID1*
+
+   .. py:attribute:: node2ID1, node2ID2
+
+      ``int,int`` - *point 2*: if *node2ID2* > 0, then the point is in the middle of a face edge defined
+                by two nodes, else it is at *node2ID1*
+
+   .. py:attribute:: vector
+
+      ``SMESH.DirStruct`` - vector on the plane; to use a default plane set vector = (0,0,0)
+
+
+ElementType
+-----------
+
+.. py:class:: ElementType
+
+   Enumeration for element type, like in SMDS
+
+   .. py:attribute:: 
+    ALL
+    NODE
+    EDGE
+    FACE
+    VOLUME
+    ELEM0D
+    BALL
+    NB_ELEMENT_TYPES
+
+EntityType
+----------
+
+.. py:class:: EntityType
+
+   Enumeration of entity type
+
+   .. py:attribute:: 
+    Entity_Node
+    Entity_0D
+    Entity_Edge
+    Entity_Quad_Edge
+    Entity_Triangle
+    Entity_Quad_Triangle
+    Entity_BiQuad_Triangle
+    Entity_Quadrangle
+    Entity_Quad_Quadrangle
+    Entity_BiQuad_Quadrangle
+    Entity_Polygon
+    Entity_Quad_Polygon
+    Entity_Tetra
+    Entity_Quad_Tetra
+    Entity_Pyramid
+    Entity_Quad_Pyramid
+    Entity_Hexa
+    Entity_Quad_Hexa
+    Entity_TriQuad_Hexa
+    Entity_Penta
+    Entity_Quad_Penta
+    Entity_BiQuad_Penta
+    Entity_Hexagonal_Prism
+    Entity_Polyhedra
+    Entity_Quad_Polyhedra
+    Entity_Ball
+    Entity_Last
+
+GeometryType
+------------
+
+.. py:class:: GeometryType
+
+   Enumeration of element geometry type
+
+   .. py:attribute::
+    Geom_POINT
+    Geom_EDGE
+    Geom_TRIANGLE
+    Geom_QUADRANGLE
+    Geom_POLYGON
+    Geom_TETRA
+    Geom_PYRAMID
+    Geom_HEXA
+    Geom_PENTA
+    Geom_HEXAGONAL_PRISM
+    Geom_POLYHEDRA
+    Geom_BALL
+    Geom_LAST
+
+Hypothesis_Status
+-----------------
+
+.. py:class:: Hypothesis_Status
+
+   Enumeration of result of hypothesis addition/removal
+
+   .. py:attribute::  HYP_OK
+
+      Ok
+
+   .. py:attribute::  HYP_MISSING
+
+      algo misses a hypothesis
+
+   .. py:attribute::  HYP_CONCURRENT
+
+      several applicable hypotheses
+
+   .. py:attribute::  HYP_BAD_PARAMETER
+
+      hypothesis has a bad parameter value
+
+   .. py:attribute::  HYP_HIDDEN_ALGO
+
+      an algo is hidden by an upper dim algo generating all-dim elements
+
+   .. py:attribute::  HYP_HIDING_ALGO
+
+      an algo hides lower dim algos by generating all-dim elements
+
+   .. py:attribute::  HYP_UNKNOWN_FATAL
+
+       all statuses below should be considered as fatal for Add/RemoveHypothesis operations
+
+   .. py:attribute::  HYP_INCOMPATIBLE
+
+      hypothesis does not fit algorithm
+
+   .. py:attribute::  HYP_NOTCONFORM
+
+      not conform mesh is produced applying a hypothesis
+
+   .. py:attribute::  HYP_ALREADY_EXIST
+
+      such hypothesis already exist
+
+   .. py:attribute::  HYP_BAD_DIM
+
+      bad dimension
+
+   .. py:attribute::  HYP_BAD_SUBSHAPE
+
+      shape is neither the main one, nor its sub-shape, nor a group
+
+   .. py:attribute::  HYP_BAD_GEOMETRY
+
+      geometry mismatches algorithm's expectation
+
+   .. py:attribute::  HYP_NEED_SHAPE
+
+      algorithm can work on shape only
+
+   .. py:attribute::  HYP_INCOMPAT_HYPS
+
+      several additional hypotheses are incompatible one with other
+
+
+FunctorType
+-----------
+
+.. py:class:: FunctorType
+
+   Enumeration of functor types
+
+   .. py:attribute:: 
+    FT_AspectRatio
+    FT_AspectRatio3D
+    FT_Warping   
+    FT_MinimumAngle
+    FT_Taper       
+    FT_Skew         
+    FT_Area          
+    FT_Volume3D          
+    FT_MaxElementLength2D
+    FT_MaxElementLength3D
+    FT_FreeBorders
+    FT_FreeEdges
+    FT_FreeNodes
+    FT_FreeFaces
+    FT_EqualNodes
+    FT_EqualEdges
+    FT_EqualFaces
+    FT_EqualVolumes
+    FT_MultiConnection
+    FT_MultiConnection2D
+    FT_Length
+    FT_Length2D
+    FT_Deflection2D
+    FT_NodeConnectivityNumber
+    FT_BelongToMeshGroup
+    FT_BelongToGeom
+    FT_BelongToPlane
+    FT_BelongToCylinder
+    FT_BelongToGenSurface
+    FT_LyingOnGeom
+    FT_RangeOfIds
+    FT_BadOrientedVolume
+    FT_BareBorderVolume
+    FT_BareBorderFace
+    FT_OverConstrainedVolume
+    FT_OverConstrainedFace
+    FT_LinearOrQuadratic
+    FT_GroupColor
+    FT_ElemGeomType
+    FT_EntityType
+    FT_CoplanarFaces
+    FT_BallDiameter
+    FT_ConnectedElements
+    FT_LessThan
+    FT_MoreThan
+    FT_EqualTo
+    FT_LogicalNOT
+    FT_LogicalAND
+    FT_LogicalOR
+    FT_Undefined
+
+.. py:module:: SMESH.Filter
+   :noindex:
+
+Filter.Criterion
+----------------
+
+.. py:class:: Criterion
+
+   Structure containing information of a criterion
+
+   .. py:attribute:: Type
+
+      ``long`` - value of item of :class:`SMESH.FunctorType`
+
+   .. py:attribute:: Compare
+
+      ``long`` - value of item of :class:`SMESH.FunctorType` in ( FT_LessThan, FT_MoreThan, FT_EqualTo )
+
+   .. py:attribute:: Threshold
+
+      ``double`` - threshold value
+
+   .. py:attribute:: ThresholdStr
+
+      ``string`` - Threshold value defined as string. Used for:
+                       1. Diapason of identifiers. Example: "1,2,3,5-10,12,27-29".
+                       2. Storing name of shape.
+                       3. Storing group color "0.2;0;0.5".
+                       4. Storing point coordinates.
+
+   .. py:attribute:: ThresholdID
+
+      ``string`` - One more threshold value defined as string. Used for storing id of shape
+
+   .. py:attribute:: UnaryOp
+
+      ``long`` - unary logical operation: FT_LogicalNOT or FT_Undefined
+
+   .. py:attribute:: BinaryOp
+
+      ``long`` - binary logical operation FT_LogicalAND, FT_LogicalOR etc.
+
+   .. py:attribute:: Tolerance
+
+      ``double`` - Tolerance is used for 
+                       1. Comparison of real values.
+                       2. Detection of geometrical coincidence.
+
+   .. py:attribute:: TypeOfElement
+
+      ``ElementType`` - type of element :class:`SMESH.ElementType` (SMESH.NODE, SMESH.FACE etc.)
+
+   .. py:attribute:: Precision
+
+      ``long`` - Precision of numerical functors
+
+.. py:currentmodule:: SMESH
+
+FreeEdges.Border
+----------------
+
+.. py:class:: FreeEdges.Border
+
+   Free edge: edge connected to one face only
+
+   .. py:attribute:: myElemId
+
+      ``long`` - ID of a face
+
+   .. py:attribute:: myPnt1,myPnt2
+
+      ``long`` - IDs of two nodes
+
+PointStruct
+-----------
+
+.. py:class:: PointStruct
+
+   3D point. 
+
+   Use :meth:`GetPointStruct() <smeshBuilder.smeshBuilder.GetPointStruct>` 
+   to convert a vertex (GEOM.GEOM_Object) to PointStruct
+
+   .. py:attribute:: x,y,z
+
+      ``double`` - point coordinates
+
+DirStruct
+---------
+
+.. py:class:: DirStruct
+
+   3D vector.
+
+   Use :meth:`GetDirStruct() <smeshBuilder.smeshBuilder.GetDirStruct>` 
+   to convert a vector (GEOM.GEOM_Object) to DirStruct
+
+   .. py:attribute:: PS
+
+      :class:`PointStruct` - vector components
+      
+AxisStruct
+----------
+
+.. py:class:: AxisStruct
+
+   Axis defined by its origin and its vector.
+
+   Use :meth:`GetAxisStruct() <smeshBuilder.smeshBuilder.GetAxisStruct>` 
+   to convert a line or plane (GEOM.GEOM_Object) to AxisStruct
+
+   .. py:attribute:: x,y,z
+
+      ``double`` - coordinates of the origin
+
+   .. py:attribute:: vx,vy,vz
+
+      ``double`` - components of the vector
+
+Filter
+------
+
+.. py:class:: Filter
+
+   Filter of mesh entities
+
+   .. py:function:: GetElementsId( mesh )
+
+      Return satisfying elements
+
+      :param SMESH.SMESH_Mesh mesh: the mesh; 
+                                    it can be obtained via :meth:`~smeshBuilder.Mesh.GetMesh`
+
+      :return: list of IDs
+                                    
+   .. py:function:: GetIDs()
+
+      Return satisfying elements. 
+      A mesh to filter must be already set, either via :meth:`SetMesh` method 
+      or via ``mesh`` argument of :meth:`~smeshBuilder.smeshBuilder.GetFilter`
+
+      :return: list of IDs
+                                    
+   .. py:function:: SetMesh( mesh )
+
+      Set mesh to filter
+
+      :param SMESH.SMESH_Mesh mesh: the mesh;
+                                    it can be obtained via :meth:`~smeshBuilder.Mesh.GetMesh`
+
+   .. py:function:: SetCriteria( criteria )
+
+      Define filtering criteria
+
+      :param criteria:  list of :class:`SMESH.Filter.Criterion`
+
+NumericalFunctor
+----------------
+
+.. py:class:: NumericalFunctor
+
+   Calculate value by ID of mesh entity. Base class of various functors
+
+   .. py:function:: GetValue( elementID )
+
+      Compute a value
+
+      :param elementID: ID of element or node
+      :return: floating value
+
+SMESH_Mesh
+----------
+
+.. py:class:: SMESH_Mesh
+
+   Mesh. It is a Python wrap over a CORBA interface of mesh.
+
+   All its methods are exposed via :class:`smeshBuilder.Mesh` class that you can obtain by calling::
+
+     smeshBuilder_mesh = smesh.Mesh( smesh_mesh )
+
+SMESH_MeshEditor
+----------------
+
+.. py:class:: SMESH_MeshEditor
+
+   Mesh editor. It is a Python wrap over a CORBA SMESH_MeshEditor interface.
+   All its methods are exposed via :class:`smeshBuilder.Mesh` class.
+
+   .. py:class:: Extrusion_Error
+
+      Enumeration of errors of :meth:`~smeshBuilder.Mesh.ExtrusionAlongPathObjects`
+
+      .. py:attribute::
+         EXTR_OK
+         EXTR_NO_ELEMENTS
+         EXTR_PATH_NOT_EDGE
+         EXTR_BAD_PATH_SHAPE
+         EXTR_BAD_STARTING_NODE
+         EXTR_BAD_ANGLES_NUMBER
+         EXTR_CANT_GET_TANGENT
+
+.. py:class:: SMESH_MeshEditor.Sew_Error
+
+      Enumeration of errors of SMESH_MeshEditor.Sewing... methods
+
+      .. py:attribute::
+         SEW_OK
+         SEW_BORDER1_NOT_FOUND
+         SEW_BORDER2_NOT_FOUND
+         SEW_BOTH_BORDERS_NOT_FOUND
+         SEW_BAD_SIDE_NODES
+         SEW_VOLUMES_TO_SPLIT
+         SEW_DIFF_NB_OF_ELEMENTS
+         SEW_TOPO_DIFF_SETS_OF_ELEMENTS
+         SEW_BAD_SIDE1_NODES
+         SEW_BAD_SIDE2_NODES
+         SEW_INTERNAL_ERROR
+
+SMESH_Pattern
+-------------
+
+.. py:class:: SMESH_Pattern
+
+   Pattern mapper. Use a pattern defined by user for
+
+      * creating mesh elements on geometry, faces or blocks
+      * refining existing mesh elements, faces or hexahedra
+
+   The pattern is defined by a string as explained :doc:`here <pattern_mapping>`.
+
+   Usage work-flow is:
+
+      * Define a pattern via Load... method
+      * Compute future positions of nodes via Apply... method
+      * Create nodes and elements in a mesh via :meth:`MakeMesh` method
+
+   .. py:function:: LoadFromFile( patternFileContents )
+
+      Load a pattern from the string *patternFileContents*
+
+      :param str patternFileContents: string defining a pattern
+      :return: True if succeeded
+
+   .. py:function:: LoadFromFace( mesh, geomFace, toProject )
+
+      Create a 2D pattern from the mesh built on *geomFace*.
+
+      :param SMESH.SMESH_Mesh     mesh: source mesh
+      :param GEOM.GEOM_Object geomFace: geometrical face whose mesh forms a pattern
+      :param boolean         toProject: if True makes override nodes positions
+                                          on *geomFace* computed by mesher
+      :return: True if succeeded
+
+   .. py:function:: LoadFrom3DBlock( mesh, geomBlock )
+
+      Create a 3D pattern from the mesh built on *geomBlock*
+
+      :param SMESH.SMESH_Mesh      mesh: source mesh
+      :param GEOM.GEOM_Object geomBlock: geometrical block whose mesh forms a pattern
+      :return: True if succeeded
+
+   .. py:function:: ApplyToFace( geomFace, vertexOnKeyPoint1, toReverse )
+
+      Compute nodes coordinates by applying
+      the loaded pattern to *geomFace*. The first key-point
+      will be mapped into *vertexOnKeyPoint1*, which must
+      be in the outer wire of *geomFace*
+
+      :param GEOM.GEOM_Object geomFace: the geometrical face to generate faces on
+      :param GEOM.GEOM_Object vertexOnKeyPoint1: the vertex to be at the 1st key-point
+      :param boolean          toReverse: to reverse order of key-points
+      :return: list of :class:`SMESH.PointStruct` - computed coordinates of points of the pattern
+
+   .. py:function:: ApplyTo3DBlock( geomBlock, vertex000, vertex001 )
+
+      Compute nodes coordinates by applying
+      the loaded pattern to *geomBlock*. The (0,0,0) key-point
+      will be mapped into *vertex000*. The (0,0,1) 
+      key-point will be mapped into *vertex001*.
+
+      :param GEOM.GEOM_Object geomBlock: the geometrical block to generate volume elements on
+      :param GEOM.GEOM_Object vertex000: the vertex to superpose (0,0,0) key-point of pattern
+      :param GEOM.GEOM_Object vertex001: the vertex to superpose (0,0,1) key-point of pattern
+      :return: list of :class:`SMESH.PointStruct` - computed coordinates of points of the pattern
+
+   .. py:function:: ApplyToMeshFaces( mesh, facesIDs, nodeIndexOnKeyPoint1, toReverse )
+
+      Compute nodes coordinates by applying
+      the loaded pattern to mesh faces. The first key-point
+      will be mapped into *nodeIndexOnKeyPoint1* -th node of each mesh face
+
+      :param SMESH.SMESH_Mesh    mesh: the mesh where to refine faces
+      :param list_of_ids     facesIDs: IDs of faces to refine
+      :param int nodeIndexOnKeyPoint1: index of a face node to be at 1-st key-point of pattern
+      :param boolean        toReverse: to reverse order of key-points
+      :return: list of :class:`SMESH.PointStruct` - computed coordinates of points of the pattern
+
+   .. py:function:: ApplyToHexahedrons( mesh, volumesIDs, node000Index, node001Index )
+
+      Compute nodes coordinates by applying
+      the loaded pattern to hexahedra. The (0,0,0) key-point
+      will be mapped into *Node000Index* -th node of each volume.
+      The (0,0,1) key-point will be mapped into *node001Index* -th
+      node of each volume.
+
+      :param SMESH.SMESH_Mesh   mesh: the mesh where to refine hexahedra
+      :param list_of_ids  volumesIDs: IDs of volumes to refine
+      :param long       node000Index: index of a volume node to be at (0,0,0) key-point of pattern
+      :param long       node001Index: index of a volume node to be at (0,0,1) key-point of pattern
+      :return: list of :class:`SMESH.PointStruct` - computed coordinates of points of the pattern
+
+   .. py:function:: MakeMesh( mesh, createPolygons, createPolyedrs )
+
+      Create nodes and elements in *mesh* using nodes
+      coordinates computed by either of Apply...() methods.
+      If *createPolygons* is True, replace adjacent faces by polygons
+      to keep mesh conformity.
+      If *createPolyedrs* is True, replace adjacent volumes by polyedrs
+      to keep mesh conformity.
+
+      :param SMESH.SMESH_Mesh     mesh: the mesh to create nodes and elements in
+      :param boolean    createPolygons: to create polygons to to keep mesh conformity
+      :param boolean    createPolyedrs: to create polyherda to to keep mesh conformity
+      :return: True if succeeded
+
+
+SMESH_subMesh
+-------------
+
+.. py:class:: SMESH_subMesh
+
+   :doc:`Sub-mesh <constructing_submeshes>`
+
+   .. py:function:: GetNumberOfElements()
+
+      Return number of elements in the sub-mesh
+
+   .. py:function:: GetNumberOfNodes( all )
+
+      Return number of nodes in the sub-mesh
+
+      :param boolean all: if True, also return nodes assigned to boundary sub-meshes 
+
+   .. py:function:: GetElementsId()
+
+      Return IDs of elements in the sub-mesh
+
+   .. py:function:: GetNodesId()
+
+      Return IDs of nodes in the sub-mesh
+
+   .. py:function:: GetSubShape()
+
+      Return :class:`geom shape <GEOM.GEOM_Object>` the sub-mesh is dedicated to
+
+   .. py:function:: GetId()
+
+      Return ID of the :class:`geom shape <GEOM.GEOM_Object>` the sub-mesh is dedicated to
+
+   .. py:function:: GetMeshInfo()
+
+      Return number of mesh elements of each :class:`SMESH.EntityType`.
+      Use :meth:`~smeshBuilder.smeshBuilder.EnumToLong` to get an integer from 
+      an item of :class:`SMESH.EntityType`.
+
+      :return: array of number of elements per :class:`SMESH.EntityType`
+
+   .. py:function:: GetMesh()
+
+      Return the :class:`SMESH.SMESH_Mesh`
+
+SMESH_GroupBase
+---------------
+
+.. py:class:: SMESH_GroupBase
+
+   :doc:`Mesh group <grouping_elements>`. 
+   Base class of :class:`standalone group <SMESH_Group>`, 
+   :class:`group on geometry <SMESH_GroupOnGeom>` and 
+   :class:`group on filter <SMESH_GroupOnFilter>`.
+   Inherit all methods from :class:`SMESH_IDSource`.
+
+   .. py:function:: SetName( name )
+
+      Set group name
+
+   .. py:function:: GetName()
+
+      Return group name
+
+   .. py:function:: GetType()
+
+      Return :class:`group type <SMESH.ElementType>` (type of elements in the group)
+
+   .. py:function:: Size()
+
+      Return the number of elements in the group
+
+   .. py:function:: IsEmpty()
+
+      Return True if the group does not contain any elements
+
+   .. py:function:: Contains( elem_id )
+
+      Return True if the group contains an element with ID == *elem_id*
+
+   .. py:function:: GetID( elem_index )
+
+      Return ID of an element at position *elem_index* counted from 1
+
+   .. py:function:: GetNumberOfNodes()
+
+      Return the number of nodes of cells included to the group.
+      For a nodal group return the same value as Size() function
+
+   .. py:function:: GetNodeIDs()
+
+      Return IDs of nodes of cells included to the group.
+      For a nodal group return result of GetListOfID() function
+
+   .. py:function:: SetColor( color )
+
+      Set group color
+
+      :param SALOMEDS.Color color: color
+
+   .. py:function:: GetColor()
+
+      Return group color
+
+      :return: SALOMEDS.Color
+
+SMESH_Group
+-----------
+
+.. py:class:: SMESH_Group
+
+   :doc:`Standalone mesh group <grouping_elements>`. Inherits all methods of :class:`SMESH.SMESH_GroupBase`
+
+   .. py:function:: Clear()
+
+      Clears the group's contents
+
+   .. py:function:: Add( elem_ids )
+
+      Adds elements or nodes with specified identifiers to the group
+
+      :param list_of_ids elem_ids: IDs to add
+
+   .. py:function:: AddFrom( idSource )
+
+      Add all elements or nodes from the specified source to the group
+
+      :param SMESH.SMESH_IDSource idSource: an object to retrieve IDs from
+
+   .. py:function:: Remove( elem_ids )
+
+      Removes elements or nodes with specified identifiers from the group
+
+      :param list_of_ids elem_ids: IDs to remove
+
+SMESH_GroupOnGeom
+-----------------
+
+.. py:class:: SMESH_GroupOnGeom
+
+   Group linked to geometry. Inherits all methods of :class:`SMESH.SMESH_GroupBase`
+
+   .. py:function:: GetShape()
+
+      Return an associated geometry
+
+      :return: GEOM.GEOM_Object
+
+SMESH_GroupOnFilter
+-------------------
+
+.. py:class:: SMESH_GroupOnFilter
+
+   Group defined by filter. Inherits all methods of :class:`SMESH.SMESH_GroupBase`
+
+   .. py:function:: SetFilter( filter )
+
+      Set the :class:`filter <SMESH.Filter>`
+
+   .. py:function:: GetFilter()
+
+      Return the :class:`filter <SMESH.Filter>`
+
+
+SMESH_IDSource
+--------------
+
+.. py:class:: SMESH_IDSource
+
+   Base class for classes able to return IDs of mesh entities. These classes are:
+
+   * :class:`SMESH.SMESH_Mesh`
+   * :class:`SMESH.SMESH_subMesh`
+   * :class:`SMESH.SMESH_GroupBase`
+   * :class:`SMESH.Filter`
+   * temporal ID source created by :meth:`~smeshBuilder.Mesh.GetIDSource`
+
+   .. py:function:: GetIDs()
+
+      Return a sequence of all element IDs
+
+   .. py:function:: GetMeshInfo()
+
+      Return number of mesh elements of each :class:`SMESH.EntityType`.
+      Use :meth:`~smeshBuilder.smeshBuilder.EnumToLong` to get an integer from 
+      an item of :class:`SMESH.EntityType`.
+
+   .. py:function:: GetNbElementsByType()
+
+      Return number of mesh elements of each :class:`SMESH.ElementType`.
+      Use :meth:`~smeshBuilder.smeshBuilder.EnumToLong` to get an integer from 
+      an item of :class:`SMESH.ElementType`.
+
+
+   .. py:function:: GetTypes()
+
+      Return types of elements it contains.
+      It's empty if the object contains no IDs
+
+      :return: list of :class:`SMESH.ElementType`
+
+   .. py:function:: GetMesh()
+
+      Return the :class:`SMESH.SMESH_Mesh`
+
+SMESH_Hypothesis
+----------------
+
+.. py:class:: SMESH_Hypothesis
+
+   Base class of all :doc:`hypotheses <about_hypo>`
+
+   .. py:function:: GetName()
+
+      Return string of hypothesis type name, something like "Regular_1D"
+
+   .. py:function:: GetLibName()
+      
+      Return string of plugin library name
diff --git a/doc/gui/input/smeshpy_interface.rst b/doc/gui/input/smeshpy_interface.rst
new file mode 100644 (file)
index 0000000..5b637ac
--- /dev/null
@@ -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 <modules>`, where all methods and classes are grouped by their functionality.
+
+- :ref:`Linear documentation <modindex>` 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 <basic_meshing_algos_page>` by calling corresponding methods of the mesh. If a sub-shape is provided as an argument, a :ref:`sub-mesh <constructing_submeshes_page>` is implicitly created on this sub-shape:
+       .. code-block:: python
+
+               regular1D  = mesh.Segment()
+               quadrangle = mesh.Quadrangle()
+               # use other 2D algorithm on a face -- a sub-mesh appears in the mesh
+               triangle   = mesh.Triangle( face )
+
+#. Create and assign :ref:`hypotheses <about_hypo_page>` by calling corresponding methods of algorithms:
+       .. code-block:: python
+
+               regular1D.LocalLength( 10. )
+               quadrangle.Reduced()
+               triangle.SetMaxSize( 20. )
+               triangle.SetFineness( smeshBuilder.VeryCoarse )
+
+#. :ref:`Compute the mesh <compute_anchor>` (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 <SMESH.SMESH_GroupBase>` 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/gui/input/smeshstudytools.rst b/doc/gui/input/smeshstudytools.rst
new file mode 100644 (file)
index 0000000..288b721
--- /dev/null
@@ -0,0 +1,5 @@
+smeshstudytools module
+======================
+.. automodule:: smeshstudytools
+   :members:
+
diff --git a/doc/gui/input/smoothing.rst b/doc/gui/input/smoothing.rst
new file mode 100644 (file)
index 0000000..79041ad
--- /dev/null
@@ -0,0 +1,64 @@
+.. _smoothing_page:
+
+*********
+Smoothing
+*********
+
+Smoothing is used to improve quality of 2D mesh by adjusting the
+locations of element corners (nodes). 
+
+.. note:: Depending on the chosen method and mesh geometry the smoothing can actually decrease the quality of elements and even make some elements inverted.
+
+*To apply smoothing to the elements of your mesh:*
+
+.. |img| image:: ../images/image84.png
+
+#. In the **Modification** menu select the **Smoothing** item or click *"Smoothing"* button |img| in the toolbar.
+
+   The following dialog will appear:
+
+       .. image:: ../images/smoothing.png
+               :align: center
+
+#. In this dialog:
+
+       * specify the IDs of the elements which will be smoothed:
+               * **Select the whole mesh, sub-mesh or group** activating this   check-box; or
+               * choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
+               * input the element IDs directly in **ID Elements** field. The selected elements will be highlighted in the viewer; or
+               * apply Filters. **Set filters** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`filtering_elements` page.
+
+       * define the **Fixed nodes ids** that should remain at their location during smoothing. If a mesh is built on a shape, the nodes built on its geometric edges are always fixed. If the smoothing is applied to a part of the mesh (a set of element), the nodes on boundary of the element set are also fixed. It is possible to additionally fix any other nodes. The fixed nodes can be selected manually or by filters, just as the smoothed elements.
+       * choose the **Smoothing Method:**
+               * **Laplacian** smoothing pulls a node toward the center of surrounding nodes directly connected to that node along an element edge. 
+               * **Centroidal** smoothing pulls a node toward the element-area-weighted centroid of the surrounding elements. 
+
+               Laplacian method will produce the mesh with the least element edge length. It is also the fastest method. Centroidal smoothing produces a mesh with more uniform element sizes.
+
+
+               .. image:: ../images/image83.gif
+                       :align: center
+
+
+       * specify the **Iteration limit**. Both smoothing methods iterate through a number of steps to produce the resulting smoothed mesh. At each new step the smoothing is reevaluated with the updated nodal locations. This process continues till the limit of iterations has been exceeded, or till the aspect ratio of all element is less than or equal to the specified one.
+       * specify the  **Max. aspect ratio** - the target mesh quality at which the smoothing algorithm should stop the iterations.
+       * activate **in parametric space** check-box if it is necessary to improve the shape of faces in the parametric space of geometrical surfaces on which they are generated, else the shape of faces in the 3D space is improved that is suitable for **planar meshes only**. 
+
+#. Click **Apply** or **Apply and Close** button to confirm the operation.
+
+
+.. image:: ../images/smoothing1.png 
+       :align: center
+
+.. centered:: 
+       The initial mesh
+
+.. image:: ../images/smoothing2.png 
+       :align: center
+
+.. centered:: 
+       The smoothed mesh: mesh quality improved
+
+**See Also** a sample TUI Script of a :ref:`tui_smoothing` operation.  
+
+
diff --git a/doc/gui/input/split_biquad_to_linear.rst b/doc/gui/input/split_biquad_to_linear.rst
new file mode 100644 (file)
index 0000000..4778ec4
--- /dev/null
@@ -0,0 +1,41 @@
+.. _split_biquad_to_linear_page:
+
+******************************
+Split bi-quadratic into linear
+******************************
+
+This functionality allows to split bi-quadratic elements into
+linear ones without creation of additional nodes.
+
+So that
+
+* bi-quadratic triangle will be split into 3 linear quadrangles;
+* bi-quadratic quadrangle will be split into 4 linear quadrangles;
+* tri-quadratic hexahedron will be split into 8 linear hexahedra;
+* quadratic segments adjacent to the split bi-quadratic element will be split into 2 linear segments.
+
+.. image:: ../images/split_biquad_to_linear_mesh.png 
+       :align: center
+
+.. centered:: 
+       Mesh before and after splitting
+
+*To split bi-quadratic elements into linear:*
+
+.. |img| image:: ../images/split_biquad_to_linear_icon.png
+
+#. From the **Modification** menu choose the **Split bi-quadratic into linear** item or click *"Split bi-quadratic into linear"* button |img| in the toolbar.
+
+
+   The following dialog box shall appear:
+
+       .. image:: ../images/split_biquad_to_linear_dlg.png
+               :align: center
+
+#. Select a mesh, groups or sub-meshes in the Object Browser or in the Viewer.
+#. Click the **Apply** or **Apply and Close** button.
+
+**See Also** a sample TUI Script of a :ref:`tui_split_biquad` operation.
+
+
diff --git a/doc/gui/input/split_to_tetra.rst b/doc/gui/input/split_to_tetra.rst
new file mode 100644 (file)
index 0000000..775ade4
--- /dev/null
@@ -0,0 +1,53 @@
+.. _split_to_tetra_page:
+
+*****************
+Splitting volumes
+*****************
+
+This operation allows to split either any volumic elements into
+tetrahedra or hexahedra into prisms. 2D mesh is modified accordingly.
+
+*To split volumes:*
+
+.. |img| image:: ../images/split_into_tetra_icon.png
+
+#. Select a mesh, a sub-mesh or a group.
+#. In the **Modification** menu select the **Split Volumes** item or click *"Split Volumes"* button  |img| in the toolbar.
+
+   The following dialog box will appear:
+
+       .. image:: ../images/split_into_tetra.png
+               :align: center                                                 
+
+
+   * First it is possible to select the type of operation:
+
+       * If **Tetrahedron** button is checked, the operation will split volumes of any type into tetrahedra.
+       * If **Prism** button is checked, the operation will split hexahedra into prisms.
+   
+   * The main list contains the list of volumes to split. You can click on a volume in the 3D viewer and it will be highlighted (lock Shiftkeyboard button to select several volumes). Click **Add** button and the ID of this volume will be added to the list. To remove the selected element or elements from the list click **Remove** button. **Sort list** button allows to sort the list of IDs. **Filter** button allows applying a filter to the selection of volumes.
+     
+     .. note:: If you split not all adjacent non-tetrahedral volumes, your mesh becomes non-conform. 
+  
+   * **Apply to all** radio button allows splitting all volumes of the currently selected mesh.
+   * If **Tetrahedron** element type is selected, **Split hexahedron** group allows specifying the number of tetrahedra  a hexahedron will be split into. If the chosen method does not allow to get a conform mesh, a generic solution is applied: an additional node is created at the gravity center of a hexahedron, serving an apex of tetrahedra, all quadrangle sides of the hexahedron are split into two triangles each serving a base of a new tetrahedron. 
+   * If **Prism** element type is selected, the **Split hexahedron** group looks as follows:
+
+               .. image:: ../images/split_into_prisms.png
+                       :align: center                                                 
+
+               * **Into 2 (or 4) prisms** allows to specify the number of prisms a hexahedron will be split into. 
+               * **Facet to split** group allows to specify the side (facet) of the hexahedron, which is split into triangles.  This facet is defined by a point and a direction. The algorithm finds a hexahedron closest to the specified point and splits a facet whose normal is closest to the specified direction. Then the splitting is propagated from that hexahedron to all adjacent hexahedra. The point and the direction by which the first split hexahedron is found can be specified:
+
+                       * by input of coordinates in **Hexa location** and **Facet normal** fields, or 
+                       * by clicking **Selection** button and selecting in the viewer the element whose barycenter will be used as the start point and whose direction will be used as a normal to facet to split into triangles. Switch this button off to return to selection of volumes to split.
+
+    
+               * If **All domains** option is off, the operation stops when all hehexedra adjacent to the start hexahedron are split into prisms. Else the operation tries to continue splitting starting from  another hexahedron closest to the **Hexa location**. 
+
+   * **Select from** set of fields allows choosing a sub-mesh or an existing group whose elements will be added to the list as you click **Add** button.
+
+
+#. Click **Apply** or **Apply and Close** button to confirm the operation.
+
+**See also** a sample TUI script of :ref:`modifying_meshes_split_vol` operation.
diff --git a/doc/gui/input/symmetry.rst b/doc/gui/input/symmetry.rst
new file mode 100644 (file)
index 0000000..c80b489
--- /dev/null
@@ -0,0 +1,69 @@
+.. _symmetry_page: 
+
+********
+Symmetry
+********
+
+This geometrical operation allows to perform a symmetrical copy of your mesh or some of its elements.
+
+*To create a symmetrical copy:*
+
+.. |img| image:: ../images/symmetry.png 
+
+#. From the **Modification** menu choose **Transformation** -> **Symmetry** item  or click *"Symmetry"* button |img| in the toolbar.
+
+   The following dialogs will appear, where you can choose a way to mirror:
+
+       * through a point:
+
+       .. image:: ../images/symmetry1.png 
+               :align: center
+
+       * through an axis:
+
+       .. image:: ../images/symmetry2.png 
+               :align: center
+
+       * through a plane (defined by a point and a normal to the plane):
+
+       .. image:: ../images/symmetry3.png
+               :align: center
+
+
+#. In the dialog:
+
+       * specify the elements for the symmetry operation:
+
+               * **Select the whole mesh, submesh or group** activating this checkbox; or
+               * choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
+               * input the element IDs directly in **ID Elements** field. The selected elements will be highlighted in the viewer; or
+               * apply Filters. **Set Filter** button allows to apply a :ref:`filtering_elements` to the selection of elements. 
+
+       * depending on the nature of the mirror object: 
+
+               * if the mesh is mirrored through a point, specify the coordinates of the point, either directly or by picking a mesh node;
+               * if the mesh is mirrored through an axis: 
+
+                 * specify the coordinates of the start **Point** of the axis, either directly or by picking a mesh node;
+                 * specify the components of axis **Vector**, either directly or by picking a mesh node, in which case **Vector** is defined as a shift between the **Point** and the node;
+
+               * if the mesh is mirrored through a plane:
+
+                 * specify the coordinates of the **Point** lying on the plane, either directly or by picking a mesh node;
+                 * specify the components of plane **Normal**, either directly or by picking a mesh node, in which case **Normal** is defined as a shift between the **Point** and the node.
+
+               * specify the conditions of symmetry operation:
+
+                  * activate **Move elements** radio button to change the location of the selected elements within the current mesh;
+                  * activate **Copy elements** radio button to duplicate the selected elements at the new location within the current mesh;
+                  * activate **Create as new mesh** radio button to create a new element in a new mesh; the new mesh appears in the Object Browser with the default name *MeshName_mirrored* (it is possible to change this name in the adjacent box);
+                  * activate **Copy groups** check-box to put new mesh entities into new groups if source entities belong to some groups. New groups are named by pattern "<old group name>_mirrored".
+
+       * activate **Preview** check-box to show the result of transformation in the viewer;
+       * click **Apply** or **Apply and Close** button to confirm the operation.
+
+
+**See Also** a sample TUI Script of a 
+:ref:`tui_symmetry` operation.  
+
+
diff --git a/doc/gui/input/taper.rst b/doc/gui/input/taper.rst
new file mode 100644 (file)
index 0000000..db6d75f
--- /dev/null
@@ -0,0 +1,29 @@
+.. _taper_page:
+
+*****
+Taper
+*****
+
+**Taper** mesh quality criterion represents the ratio of the areas
+of two triangles separated by a diagonal within a quadrilateral face.
+
+::
+
+       **JA = 0.25 * (A1 + A2 + A3 + A4)**
+       **TAPER = MAX(|A1/JA - 1|, |A2/JA - 1|, |A3/JA - 1|, |A4/JA - 1|)**
+
+*To apply the Taper quality criterion to your mesh:*
+
+.. |img| image:: ../images/image36.png
+
+#. Display your mesh in the viewer.
+#. Choose **Controls > Face Controls > Taper** or click *"Taper"* button |img| in the toolbar.
+
+
+   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
+
+       .. image:: ../images/image90.jpg
+               :align: center
+
+**See Also** a sample TUI Script of a :ref:`tui_taper` filter.
+
diff --git a/doc/gui/input/tools.rst b/doc/gui/input/tools.rst
new file mode 100644 (file)
index 0000000..0812a8e
--- /dev/null
@@ -0,0 +1,19 @@
+.. _tools_page:
+
+*******
+Plugins
+*******
+
+The following plugins are accessible via **Mesh > SMESH plugins** menu:
+
+* `SpherePadder plugin <padder/padder_userguide_page.html>`_
+* `MGSurfOpt plugin <yams/index.html>`_
+* `MGCleaner plugin <MGCleaner/index.html>`_
+* `topIIVolMesh plugin <TopIIVolMesh/index.html>`_
+* `Z-cracks plugin <zcracks/index.html>`_
+* `MacMesh plugin <MacMesh/index.html>`_
+* `blocFissure plugin <blocFissure/index.html>`_
+* **MeshCut plugin** - allows to cut a mesh constituted of linear tetrahedrons by a plane.
+* **Get min or max value of control** - a sample plugin whose sources are located in *${GUI_ROOT_DIR}/share/salome/plugins/gui/demo* directory (files *minmax_plugin.py, minmax_ui.py and smesh_plugins.py*). You can find a detailed description of how to create your own plugin in documentation: **Help > User's Guide > GUI module > How-To's and Best Practices > Extend SALOME gui functions using python plugins**.
+
+
diff --git a/doc/gui/input/translation.rst b/doc/gui/input/translation.rst
new file mode 100644 (file)
index 0000000..ff477ac
--- /dev/null
@@ -0,0 +1,52 @@
+.. _translation_page:
+
+***********
+Translation
+***********
+
+This geometrical operation allows to translate in space your mesh or some of its elements.
+
+*To translate a mesh:*
+
+.. |img| image:: ../images/translation.png 
+
+#. From the **Modification** menu choose **Transformation** -> **Translation** item  or click *"Translation"* button |img| in the toolbar.
+   The following dialog will appear, where you can select a way to define the vector of thanslation:
+
+   * by two points:
+
+       .. image:: ../images/translation1.png 
+               :align: center
+
+   * by the vector from the origin of coordinates:
+
+       .. image:: ../images/translation2.png 
+               :align: center
+
+#. In the dialog:
+
+   * specify the IDs of the translated elements:
+
+     * **Select the whole mesh, submesh or group** activating this checkbox; or
+     * choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
+     * input the element IDs directly in **ID Elements** field. The selected elements will be highlighted in the viewer; or
+     * apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`selection_filter_library_page` page.
+
+   * specify the vector of translation:
+
+     * specify the coordinates of the start and end **Points** of the vector of translation; or
+     * specify the end point of the **Vector** of rotation starting at the origin of coordinates.
+
+   * specify the conditions of translation:
+
+     * activate **Move elements** radio button to create  the source mesh (or elements) at the new location and erase it from the previous location;
+     * activate **Copy elements** radio button to create the source mesh (or elements) at the new location, but leave it at the previous location, the source mesh will be considered one and single mesh with the result of the rotation;
+     * activate **Create as new mesh** radio button to leave the source mesh (or elements) at its previous location and create a new mesh at the new location, the new mesh appears in the Object Browser with the default name MeshName_rotated (it is possible to change this name in the adjacent box);
+     * activate **Copy groups** checkbox to copy the groups of elements of the source mesh to the newly created mesh.
+
+   * activate **Preview** checkbox to show the result of transformation in the viewer 
+   * click **Apply** or **Apply and Close** button to confirm the operation.
+
+**See Also** a sample TUI Script of a :ref:`tui_translation` operation.  
+
+
diff --git a/doc/gui/input/transparency.rst b/doc/gui/input/transparency.rst
new file mode 100644 (file)
index 0000000..5990033
--- /dev/null
@@ -0,0 +1,13 @@
+.. _transparency_page:
+
+************
+Transparency
+************
+
+.. image:: ../images/a-transparency.png
+       :align: center                                                 
+
+Using this slider you can set the transparency of shading. Absolutely
+transparent shading will be invisible. By default it is absolutely
+opaque.
+
diff --git a/doc/gui/input/tui_adaptation.rst b/doc/gui/input/tui_adaptation.rst
new file mode 100644 (file)
index 0000000..b8ec686
--- /dev/null
@@ -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 (file)
index 0000000..67e14d3
--- /dev/null
@@ -0,0 +1,128 @@
+.. _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>`
+
+.. _tui_create_dual_mesh:
+
+Creating Dual Mesh
+==================
+
+.. literalinclude:: ../../examples/create_dual_mesh.py
+    :language: python
+
+:download:`Download this script <../../examples/create_dual_mesh.py>`
+
+.. _tui_create_parallel_mesh:
+
+Creating Parallel Mesh
+======================
+
+.. literalinclude:: ../../examples/creating_parallel_mesh.py
+    :language: python
+
+:download:`Download this script <../../examples/creating_parallel_mesh.py>`
diff --git a/doc/gui/input/tui_defining_hypotheses.rst b/doc/gui/input/tui_defining_hypotheses.rst
new file mode 100644 (file)
index 0000000..0121a0c
--- /dev/null
@@ -0,0 +1,340 @@
+.. _tui_defining_hypotheses_page:
+
+**********************************
+Defining Hypotheses and Algorithms
+**********************************
+
+This page provides example codes of :ref:`defining algorithms <tui_defining_meshing_algos>`
+and hypotheses.
+
+* Wire discretisation 1D algorithm
+  
+    * :ref:`tui_1d_adaptive` hypothesis
+    * :ref:`Arithmetic Progression <tui_1d_arithmetic>` hypothesis
+    * :ref:`Geometric Progression <tui_1d_arithmetic>` hypothesis
+    * :ref:`Deflection and Number of Segments <tui_deflection_1d>` hypotheses
+    * :ref:`Start and End Length <tui_start_and_end_length>` hypothesis
+    * :ref:`tui_average_length` hypothesis
+    * :ref:`tui_propagation` additional hypotheses 
+    * :ref:`Fixed Points 1D <tui_fixed_points>` hypothesis
+  
+
+* Triangle: NETGEN 2D algorithm
+  
+    * :ref:`tui_max_element_area` hypothesis 
+    * :ref:`tui_length_from_edges` hypothesis 
+  
+* Quadrangle: Mapping 2D algorithm
+  
+    * :ref:`Quadrangle Parameters <tui_quadrangle_parameters>` hypothesis 
+
+* :ref:`Radial Quadrangle 1D-2D <tui_radial_quadrangle>` algorithm
+* NETGEN 3D algorithm
+  
+    *  :ref:`tui_max_element_volume` hypothesis 
+    *  :ref:`Viscous layers <tui_viscous_layers>` hypotheses
+
+* Hexahedron (i,j,k) 3D algorithm
+
+   *   :ref:`tui_block_renumber`
+
+* :ref:`tui_projection`
+* :ref:`Extrusion 3D <tui_prism_3d_algo>` algorithm
+* :ref:`Radial Prism <tui_radial_prism>` algorithm
+* :ref:`Body Fitting <tui_cartesian_algo>` algorithm
+* :ref:`Import 1D-2D Elements from Another Mesh <tui_import>` algorithm
+* :ref:`Use Faces to be Created Manually <tui_use_existing_faces>` algorithm
+* :ref:`Segments around Vertex <tui_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_viscous_layers_api:
+
+Viscous layers API construction
+###########################
+
+.. literalinclude:: ../../examples/defining_hypotheses_vlapi_ex17.py
+    :language: python
+
+:download:`Download this script <../../examples/defining_hypotheses_vlapi_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 (file)
index 0000000..db22d5e
--- /dev/null
@@ -0,0 +1,785 @@
+.. _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_scaled_jacobian:
+
+Scaled Jacobian
+===============
+
+filters 3D mesh elements (volumes) according to the scaled jacobian value:
+
+* element type is *SMESH.VOLUME*
+* functor type is *SMESH.FT_ScaledJacobian*
+* threshold is floating point value
+
+.. literalinclude:: ../../examples/filters_ex40.py
+    :language: python
+
+:download:`Download this script <../../examples/filters_ex40.py>`
+
+**See also:** :ref:`tui_scaled_jacobian`
+
+.. _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_warping_3d:
+
+Warping 3D
+=============
+
+filters 3D mesh elements (volumes) according to the maximum warping angle value of the faces of volumes:
+
+* element type is *SMESH.VOLUME*
+* functor type is *SMESH.FT_Warping3D*
+* threshold is floating point value (warping angle)
+
+.. literalinclude:: ../../examples/filters_ex41.py
+    :language: python
+
+:download:`Download this script <../../examples/filters_ex41.py>`
+
+**See also:** :ref:`tui_warping_3d`
+
+.. _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 (file)
index 0000000..90bd66b
--- /dev/null
@@ -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 (file)
index 0000000..a891e2a
--- /dev/null
@@ -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 (file)
index 0000000..c8297ee
--- /dev/null
@@ -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 (file)
index 0000000..7384e67
--- /dev/null
@@ -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 (file)
index 0000000..478b807
--- /dev/null
@@ -0,0 +1,262 @@
+.. _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>`
+
+.. _tui_scaled_jacobian:
+
+Scaled Jacobian
+===================
+
+.. literalinclude:: ../../examples/quality_controls_ex24.py
+    :language: python
+
+:download:`Download this script <../../examples/quality_controls_ex24.py>`
+
+.. _tui_warping_3d: 
+
+Warping 3D
+=======
+
+.. literalinclude:: ../../examples/quality_controls_ex23.py
+    :language: python
+
+:download:`Download this script <../../examples/quality_controls_ex23.py>`
diff --git a/doc/gui/input/tui_transforming_meshes.rst b/doc/gui/input/tui_transforming_meshes.rst
new file mode 100644 (file)
index 0000000..01c89f9
--- /dev/null
@@ -0,0 +1,158 @@
+.. _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>`
+
+.. _tui_make_2dmesh_from_3d_elements: 
+
+Create 2D mesh from 3D elements
+========================
+
+.. literalinclude:: ../../examples/transforming_meshes_ex14.py
+    :language: python
+
+:download:`Download this script <../../examples/transforming_meshes_ex14.py>`
+
+.. _tui_offset_elements: 
+
+Offset 2D mesh
+========================
+
+.. literalinclude:: ../../examples/transforming_meshes_ex15.py
+    :language: python
+
+:download:`Download this script <../../examples/transforming_meshes_ex15.py>`
\ No newline at end of file
diff --git a/doc/gui/input/tui_viewing_meshes.rst b/doc/gui/input/tui_viewing_meshes.rst
new file mode 100644 (file)
index 0000000..4a67295
--- /dev/null
@@ -0,0 +1,36 @@
+
+.. _tui_viewing_meshes_page:
+
+**************
+Viewing Meshes
+**************
+
+.. _tui_viewing_mesh_infos:
+
+Viewing Basic Mesh Infos
+########################
+
+.. literalinclude:: ../../examples/viewing_meshes_ex01.py
+    :language: python
+
+:download:`Download this script <../../examples/viewing_meshes_ex01.py>`
+
+.. _tui_node_element_mesh_infos:
+
+Viewing node element Mesh Infos
+###############################
+
+.. literalinclude:: ../../examples/viewing_meshes_ex03.py
+    :language: python
+
+:download:`Download this script <../../examples/viewing_meshes_ex03.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/gui/input/tui_work_on_objects_from_gui.rst b/doc/gui/input/tui_work_on_objects_from_gui.rst
new file mode 100644 (file)
index 0000000..d908627
--- /dev/null
@@ -0,0 +1,30 @@
+
+.. _tui_work_on_objects_from_gui: 
+
+***************************************
+How to work with objects from the GUI ?
+***************************************
+
+It is sometimes useful to work alternatively in the GUI of SALOME and in the Python Console. To fetch an object from the TUI simply type::
+
+  myMesh_ref = salome.IDToObject( ID )
+  # were ID is a string looking like "0:1:2:3" that appears in the Object Browser in the Entry column.
+  # ( If hidden, show it by right clicking and checking the checkbox Entry )
+  myMesh = smesh.Mesh(myMesh_ref)
+
+or:: 
+
+  myMesh_ref = salome.myStudy.FindObjectByPath("/Mesh/myMesh").GetObject() 
+  #'/Mesh/myMesh' is a path to the desired object in the Object Browser
+  myMesh = smesh.Mesh(myMesh_ref)
+
+or::
+
+  # get a selected mesh
+  from salome.gui import helper
+  myMesh_ref = helper.getSObjectSelected()[0].GetObject() 
+  myMesh = smesh.Mesh(myMesh_ref)
+
+A result myMesh is an object of :class:`Mesh <smeshBuilder.Mesh>` class.
+
+.. note:: The first statement only gives you access to a reference to the object created via the GUI (`myMesh_ref`). But the methods available on this reference differ from those of :class:`Mesh <smeshBuilder.Mesh>` class documented in these help pages. That's why you have to create an instance of :class:`Mesh <smeshBuilder.Mesh>` class with the last statement. 
diff --git a/doc/gui/input/uniting_set_of_triangles.rst b/doc/gui/input/uniting_set_of_triangles.rst
new file mode 100644 (file)
index 0000000..53a0322
--- /dev/null
@@ -0,0 +1,49 @@
+.. _uniting_set_of_triangles_page: 
+
+**************************
+Uniting a set of triangles
+**************************
+
+It is possible to unite many neighboring triangles into
+quadrangles by deletion of the common edge.
+
+*To union several triangles:*
+
+.. |img| image:: ../images/image80.png
+
+#. Select a mesh (and display it in the 3D Viewer if you are going to pick elements by mouse).
+#. In the **Modification** menu select the **Union of triangles** item or click *"Union of triangles"* button |img| in the tool-bar.
+
+   The following dialog box will appear:
+
+       .. image:: ../images/a-unionoftriangles.png
+               :align: center
+
+
+       * **The main list** shall contain the triangles which will be united. You can click on a triangle in the 3D viewer and it will be highlighted. After that click the **Add** button and the ID of this triangle will be added to the list. To remove a selected element or elements from the list click the **Remove** button. The **Sort** button allows to sort the list of IDs. The **Filter** button allows to apply a definite :ref:`filter <filtering_elements>` to selection of triangles.
+       * **Apply to all** radio button allows to apply the operation to all triangles of the selected mesh.
+       * **Preview** provides a preview in the viewer.
+       * **Criterion** menu allows to choose a quality criterion, which will be optimized to select triangles to unite.
+       * **Select from** set of fields allows to choose a sub-mesh or an existing group whose triangle elements then can be added to the list.
+
+#. Click the **Apply** or **Apply and Close** button to confirm the operation.
+
+If some selected triangle elements have no adjacent edges with one of
+the others, the operation on these elements shall take no effect.
+
+.. image:: ../images/uniting_a_set_of_triangles1.png 
+       :align: center
+
+.. centered::
+       The chosen triangles
+
+.. image:: ../images/uniting_a_set_of_triangles2.png 
+       :align: center
+
+.. centered::
+       The union of several triangles - several quadrangular cells are created
+
+**See Also** a sample TUI Script of a 
+:ref:`tui_uniting_set_of_triangles` operation.  
+
+
diff --git a/doc/gui/input/uniting_two_triangles.rst b/doc/gui/input/uniting_two_triangles.rst
new file mode 100644 (file)
index 0000000..dfc4236
--- /dev/null
@@ -0,0 +1,40 @@
+.. _uniting_two_triangles_page: 
+
+*********************
+Uniting two triangles
+*********************
+
+In MESH you can union two neighboring triangles by deletion of the common edge.
+
+*To unite two triangles:*
+
+.. |img| image:: ../images/image71.png
+
+#. From the **Modification** menu choose the **Union of two triangles** item or click *"Union of two triangles"* button |img| in the tool-bar.
+
+   The following dialog box shall appear:
+
+       .. image:: ../images/unionoftwotriangles.png
+               :align: center
+
+
+#. Enter IDs of nodes forming the required edge in the **Edge** field (a couple of node IDs separated by a dash) or select this edge in the 3D viewer.
+#. Click the **Apply** or **Apply and Close** button.
+
+.. image:: ../images/uniting_two_triangles1.png 
+       :align: center
+
+.. centered::
+       "The selected triangles"
+
+
+.. image:: ../images/uniting_two_triangles2.png 
+       :align: center
+
+.. centered::
+       "The union of two triangles" 
+
+**See Also** a sample TUI Script of a 
+:ref:`tui_uniting_two_triangles` operation.  
+
+
diff --git a/doc/gui/input/use_existing_algos.rst b/doc/gui/input/use_existing_algos.rst
new file mode 100644 (file)
index 0000000..d362c70
--- /dev/null
@@ -0,0 +1,62 @@
+.. _import_algos_page: 
+
+********************************************
+Import Elements from Another Mesh Algorithms
+********************************************
+
+**Import Elements from Another Mesh** algorithms allow to
+define the mesh of a geometrical 
+object by importing suitably located mesh elements from another
+mesh. The algorithms import elements whose all nodes lye on the geometry
+being meshed.
+The mesh elements to import from the other mesh should be contained in
+groups. If several groups are used to mesh the same geometry, validity of
+nodal connectivity of result mesh must be assured by connectivity of
+the source mesh; no geometrical checks are performed to merge
+different nodes at same locations.
+
+The source elements must totally cover the meshed geometry.
+The source elements lying partially over the geometry will not be used.
+
+These algorithms can be used to mesh a very complex geometry part by
+part, by storing meshes of parts in files and then fusing them
+together using these algorithms.
+
+
+**Import 1D Elements from Another Mesh** algorithm allows to define
+the mesh of a geometrical edge (or group of edges)
+by importing mesh edges contained in a group (or groups) from another mesh.
+To apply this algorithm select the edge to be meshed (indicated in
+the field **Geometry** of **Create mesh** dialog box),
+**Import 1D Elements from Another Mesh** in the list of 1D
+algorithms and click the *"Add Hypothesis"* button.
+The following dialog box will appear:
+
+.. image:: ../images/hyp_source_edges.png
+       :align: center                                                 
+
+In this dialog box you can define 
+
+* The **Name** of the algorithm. 
+* The **Groups of Edges** to import 1D elements from.
+* **To copy mesh** checkbox allows to import not only the edges of the selected **Groups of Edges**, but the whole source mesh. In this case **To copy groups** checkbox allows to create the same groups as in the imported source mesh.
+
+
+**Import 1D-2D Elements from Another Mesh** algorithm allows to define the mesh of a geometrical face (or group of faces) by importing mesh faces contained in a group (or groups) from another (or this) mesh. 1D elements on the boundary of the geometrical face (if not yet present) are also created by the algorithm in conformity with the created 2D elements. The algorithm imports a mesh face provided that all its nodes lye on the geometrical face.
+
+To apply this algorithm select the geometrical face to be meshed (indicated in the field **Geometry** of **Create mesh** dialog box), **Import 1D-2D Elements from Another Mesh** in the list of 2D algorithms and click the *"Add Hypothesis"* button.
+
+The following dialog box will appear:
+
+.. image:: ../images/hyp_source_faces.png
+       :align: center                                                 
+
+In this dialog box you can define 
+
+* The **Name** of the algorithm. 
+* The **Groups of Faces** to import 2D elements from.
+* **To copy mesh** checkbox allows to import not only the faces of the selected **Groups of Faces**, but the whole source mesh. In this case **To copy groups** checkbox allows to create the same groups as in the imported source mesh.
+
+
+**See Also** a sample TUI Script of :ref:`Import 2D Elements from Another Mesh <tui_import>`.
diff --git a/doc/gui/input/using_notebook_smesh_page.rst b/doc/gui/input/using_notebook_smesh_page.rst
new file mode 100644 (file)
index 0000000..71eea1b
--- /dev/null
@@ -0,0 +1,37 @@
+.. _using_notebook_mesh_page: 
+
+*********************
+Using SALOME NoteBook
+*********************
+
+**SALOME NoteBook** allows defining variables to be used for
+creation and modification of objects.
+
+.. image:: ../images/using_notebook_smesh.png 
+       :align: center
+
+.. centered::
+       Setting of variables in SALOME NoteBook
+
+.. image:: ../images/addnode_notebook.png 
+       :align: center
+
+.. centered::
+       Use of variables to add a node in MESH module
+
+The following limitations on the use of variables still exist:
+
+* :ref:`Distribution of Layers <radial_prism_algo_page>` hypothesis - parametrical values are correctly applied, but they are not restored after "Update study" operation.
+* :ref:`Number of Segments <a1d_meshing_hypo_page>` hypothesis, Distribution with Table Density and Distribution with Analytic Density - parametrical values are not applicable.
+* :ref:`Translation <translation_page>` dialog box, default mode (translation by two points) - parametrical values are correctly applied, but they are not restored after "Update study" operation.
+* :ref:`Merging nodes <merging_nodes_page>` dialog box - parametrical value (tolerance of coincident nodes detection) is correctly applied, but it is not restored after "Update study" operation.
+* :ref:`Revolution <revolution_page>` dialog box - it is impossible to use the angle of revolution as "total angle" if it is defined as variable.
+* :ref:`Extrusion along a path <extrusion_along_path_page>` dialog box - it is impossible to use "Linear variation of the angles" mode if at least one of those angles is defined as variable.
+* :ref:`Pattern mapping <pattern_mapping_page>` dialog box - parametrical values (indices of nodes) are correctly applied, but they are not restored after "Update study" operation.
+* :ref:`Clipping <clipping_page>` dialog box.
+* :ref:`Properties <colors_size_page>` dialog box.
+
+
+Our **TUI Scripts** provide you with useful examples of :ref:`Using SALOME NoteBook <tui_notebook_smesh>`.
+
+
diff --git a/doc/gui/input/using_operations_on_groups.rst b/doc/gui/input/using_operations_on_groups.rst
new file mode 100644 (file)
index 0000000..717901d
--- /dev/null
@@ -0,0 +1,150 @@
+.. _using_operations_on_groups_page: 
+
+****************************
+Boolean operations on groups
+****************************
+
+In MESH you can perform some Boolean operations on groups, which belong to one and the same mesh.
+
+* :ref:`union_anchor`
+* :ref:`intersection_anchor`
+* :ref:`cut_anchor` 
+
+
+
+
+.. _union_anchor:
+
+Union of groups
+###############
+
+This operation allows to create a new group in such a way that all
+mesh elements that are present in the initial groups will be added to
+the new one.
+
+*To union groups:*
+
+#. In the **Mesh** menu select the **Union Groups** item. The following dialog box will appear:
+
+       .. image:: ../images/uniongroups.png
+               :align: center                                                 
+
+   In this dialog box you should specify the name of the resulting group and set of groups which will be united.
+
+   For example, we have two groups Group1 and Group2. 
+   The result of their **Union** will be Group12:
+
+       .. image:: ../images/image133.gif
+               :align: center
+
+       .. centered::
+               Group1
+
+       .. image:: ../images/image134.gif
+               :align: center
+
+       .. centered::
+               Group2
+
+       .. image:: ../images/image135.gif
+               :align: center
+
+       .. centered::
+               Group12
+
+#. Click the **Apply** or **Apply and Close** button to confirm creation of the group.
+
+
+**See Also** a sample TUI Script of a :ref:`tui_union_of_groups` operation.
+
+
+.. _intersection_anchor:
+
+Intersection of groups
+######################
+
+This operation allows to create a new group in such a way that all
+mesh elements that are present in all initial groups together are added to the
+new one.
+
+*To intersect groups:*
+
+#. In the **Mesh** menu select the **Intersect Groups** item. The following dialog box will appear:
+
+       .. image:: ../images/intersectgroups.png
+               :align: center                                                 
+
+   In this dialog box you should specify the name of the resulting group and set of groups which will be intersected.
+
+   For example, we have two groups Group1 and Group2. 
+   The result of their **Intersection** will be Group12a:
+
+       .. image:: ../images/image133.gif
+               :align: center
+
+       .. centered::
+               Group1
+
+       .. image:: ../images/image134.gif
+               :align: center
+
+       .. centered::
+               Group2
+
+       .. image:: ../images/image136.gif
+               :align: center
+
+       .. centered::
+               Group12a
+
+#. Click the **Apply** or **Apply and Close** button to confirm creation of the group.
+
+
+**See Also** a sample TUI Script of an :ref:`tui_intersection_of_groups` operation.  
+
+
+.. _cut_anchor:
+
+Cut of groups
+#############
+
+This operation allows to create a new group in such a way that all
+mesh elements that are present in the main groups but are absent in the
+tool groups are added to the new one.
+
+*To cut groups:*
+
+#. In the **Mesh** menu select the **Cut Groups** item. The following dialog box will appear:
+
+       .. image:: ../images/cutgroups.png
+               :align: center                                                 
+
+   In this dialog box you should specify the name of the resulting group and groups which will be cut.
+
+   For example, we have two groups Group1 and Group2. 
+   The result of their **Cut** will be Group12b:
+
+       .. image:: ../images/image133.gif
+               :align: center
+
+       .. centered::
+               Group1
+
+       .. image:: ../images/image134.gif
+               :align: center
+
+       .. centered::
+               Group2
+
+       .. image:: ../images/image137.gif
+               :align: center
+
+       .. centered::
+               Group12b
+
+#. Click the **Apply** or **Apply and Close** button to confirm creation of the group.
+
+
+**See Also** a sample TUI Script of a :ref:`tui_cut_of_groups` operation.  
+
+
diff --git a/doc/gui/input/viewing_meshes_overview.rst b/doc/gui/input/viewing_meshes_overview.rst
new file mode 100644 (file)
index 0000000..06c9197
--- /dev/null
@@ -0,0 +1,70 @@
+.. _viewing_meshes_overview_page: 
+
+**************
+Viewing meshes
+**************
+
+By default a just :ref:`computed <compute_anchor>` mesh will be
+automatically displayed in the **VTK 3D Viewer**. (You can switch
+off :ref:`Automatic Update <automatic_update_pref>` preference parameter
+to prevent this.)
+Click **Display only** to hide all other objects at the same time.
+
+**VTK 3D Viewer** is described in detail in the documentation on **GUI module**.
+
+Use the following :ref:`preference parameters <mesh_preferences_page>` 
+to adjust how the mesh is displayed by default:
+
+* :ref:`Automatic Update <automatic_update_pref>` 
+* :ref:`Default display mode <display_mode_pref>` 
+* :ref:`Representation of the 2D quadratic elements <quadratic_2d_mode_pref>` 
+* All parameters of :ref:`Mesh <mesh_tab_preferences>` tab page of Preferences dialog.
+
+After the mesh has appeared in the Viewer, you can select it with
+left mouse click and  get information about it, change its
+presentation parameters and access to other useful options by
+right-clicking on the selected mesh.
+
+.. image:: ../images/dialog.png
+       :align: center
+
+
+* **Rename** - allows to rename the object in the Object browser.
+* **Hide all** - allows to hide all objects in the viewer.
+* **Update** - refreshes the presentation of your mesh in the 3D Viewer, applying all recent changes. 
+* :ref:`Mesh Information <mesh_infos_page>` -  provides information about the mesh.
+* :ref:`Find Element by Point <find_element_by_point_page>` - allows to find all mesh elements, to which belongs a point with the given coordinates.
+* **Auto Color** - switch on / off auto-assigning colors for the groups. If switched on, a default color of a new group in :ref:`Create Group <creating_groups_page>` dialog is chosen randomly. 
+* :ref:`Numbering <numbering_page>` - allows to display the ID numbers of all meshing elements or nodes composing your mesh in the viewer.
+* :ref:`Display Mode <display_mode_page>` - allows to select between Wireframe, Shading and Nodes presentation.
+* :ref:`Display Entity <display_entity_page>` - allows to display entities by types (Faces, Edges, Volumes etc.).
+
+.. _quadratic_2d_mode:
+
+* **2D Quadratic** - allows to select between the representation of quadratic edges as broken **lines** or as **arcs**. A default representation can be set in :ref:`Preferences <quadratic_2d_mode_pref>`. Arc representation applies to 1D and 2D elements only.
+* **Orientation of faces** - shows vectors of orientation of faces of the selected mesh. The orientation vector is shown for each 2D mesh element and for each free facet of a 3D mesh element. The vector direction is calculated by the first three nodes of the face produced by vectors n1-n2 and n1-n3.
+* :ref:`Properties <colors_size_page>` - allows to define several visual properties, including color of elements, shrink size, ...
+* :ref:`Transparency <transparency_page>` - allows to change the transparency of mesh elements.
+* :ref:`Controls <quality_page>` - graphically presents various information about the mesh. 
+* **Hide** - allows to hide the selected mesh from the viewer.
+* **Show Only** - allows to display only the selected mesh, hiding all others from the viewer. If :ref:`Fit All upon Show Only <display_mode_pref>` Preference option is active, *Fit All* command is additionally performed.
+* :doc:`clipping` - allows to create cross-sections of the displayed objects.
+* **Dump view** - exports an object from the viewer in bmp, png or jpeg image format.
+* **Change background** - allows to redefine the background color. By default it is black.
+* **View Operations** - allows to show/hide the  visualization toolbar in the Viewer window.
+* **Recording Operations** - allows to show/hide the recording toolbar in the Viewer window.
+
+**Table of Contents**
+
+.. toctree::
+   :maxdepth: 2
+   :titlesonly:
+
+   mesh_infos.rst
+   find_element_by_point.rst
+   numbering.rst
+   display_mode.rst
+   display_entity.rst
+   colors_size.rst
+   transparency.rst
+   clipping.rst
diff --git a/doc/gui/input/volume.rst b/doc/gui/input/volume.rst
new file mode 100644 (file)
index 0000000..f49b3bd
--- /dev/null
@@ -0,0 +1,22 @@
+.. _volume_page: 
+
+******
+Volume
+******
+
+**Volume** mesh quality criterion reflects the volume of meshes of a 3D object.
+
+*To apply the Volume quality criterion to your mesh:*
+
+.. |img| image:: ../images/image145.png
+
+#. Display your mesh in the viewer.
+#. Choose **Controls > Volume Controls > Volume** or click *"Volume"* button |img| in the toolbar.
+
+   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
+
+       .. image:: ../images/image143.gif
+               :align: center
+
+
+**See Also** a sample TUI Script of a :ref:`tui_volume` filter.
diff --git a/doc/gui/input/warping.rst b/doc/gui/input/warping.rst
new file mode 100644 (file)
index 0000000..3cb47f7
--- /dev/null
@@ -0,0 +1,37 @@
+.. _warping_page: 
+
+*******
+Warping
+*******
+
+.. image:: ../images/image24.gif
+       :align: center
+
+**Warping** indicates that a face is not planar and is applied only to
+2D elements with 4 nodes. This quality control criterion is based on a
+projection plane created by:
+
+#. bisecting the four element edges,
+#. creating a point on the plane at the vector average of the corners, where the x-axis extends from the point to the bisector on edge 2.
+
+The plane normal is in the direction of the cross product of the
+x-axis and the vector from the origin to the bisector of edge 3. Every
+corner of the quad will then be a distance *h* from the plane. The
+length of each half edge is measured and the shortest length is
+assigned *l*. The warp angle is the arcsine of the ratio of the
+projection height *h* to the half edge length *l*.
+
+*To apply the Warping quality criterion to your mesh:*
+
+.. |img| image:: ../images/image39.png
+
+#. Display your mesh in the viewer.
+#. Choose **Controls > Face Controls > Warping Angle** or click *"Warping angle"* button |img| of the toolbar.
+
+   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
+
+       .. image:: ../images/image97.jpg
+                       :align: center
+
+
+**See Also** a sample TUI Script of a :ref:`tui_warping` filter.
diff --git a/doc/gui/input/warping_3d.rst b/doc/gui/input/warping_3d.rst
new file mode 100644 (file)
index 0000000..6050357
--- /dev/null
@@ -0,0 +1,24 @@
+.. _warping_3d_page: 
+
+*******
+Warping 3D
+*******
+
+3D Warping control compute warping angle on each faces of volume elements.
+
+The page :ref:`warping_page` provide information about computing warping angle for 2D element
+
+*To apply the Warping quality criterion to your mesh:*
+
+.. |img| image:: ../images/image39.png
+
+#. Display your mesh in the viewer.
+#. Choose **Controls > Volume Controls > Warping 3D** or click *"Warping 3D"* button |img| of the toolbar.
+
+   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
+
+       .. image:: ../images/image_warping3D.jpg
+                       :align: center
+
+
+**See Also** a sample TUI Script of a :ref:`tui_warping_3d` filter.
diff --git a/doc/gui/locale/fr/LC_MESSAGES/1d_meshing_hypo.po b/doc/gui/locale/fr/LC_MESSAGES/1d_meshing_hypo.po
new file mode 100644 (file)
index 0000000..118250f
--- /dev/null
@@ -0,0 +1,565 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 004b45a20a744ffea4d3343da07f3dd2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:5
+msgid "1D Meshing Hypotheses"
+msgstr ""
+
+# 86fad262db614ff5b687e6d4575e44b7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:9
+msgid "Basic 1D hypothesis specifies:"
+msgstr ""
+
+# 0cffe55995b14ac2ae702078456fcf8d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:8
+msgid "how a :ref:`a1d_algos_anchor` should divide the edge;"
+msgstr ""
+
+# de1aea28d554437e962353fc3e399251
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:9
+msgid ""
+"how a :ref:`a1d_algos_anchor` should divide the group of C1-continuous "
+"edges."
+msgstr ""
+
+# 4101a67e6d984fdc8894696ae57ad18b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:31
+msgid "1D hypotheses can be categorized by type of nodes distribution as follows:"
+msgstr ""
+
+# dfe0bcbd0def470bab5fd53d3558f173
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:16
+msgid "Uniform distribution:"
+msgstr ""
+
+# b5ef1e537944499bb726f2709de38209
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:13
+msgid ":ref:`average_length_anchor`"
+msgstr ""
+
+# fdc4d53d08c748b4996b24b381922024
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:14
+msgid ":ref:`max_length_anchor`"
+msgstr ""
+
+# 646945b8efff4573b136d27f782b24e8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:15
+msgid ":ref:`number_of_segments_anchor` with Equidistant distribution"
+msgstr ""
+
+# 1f2e9941069d468a9007789f5610564b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:16
+msgid ":ref:`automatic_length_anchor`"
+msgstr ""
+
+# b2bcc6a61c5646569499bd49437ba22b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:22
+msgid "Constantly increasing or decreasing length of segments:"
+msgstr ""
+
+# 24a07317698d4f7ca649e76eddab2caa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:19
+msgid ":ref:`arithmetic_1d_anchor`"
+msgstr ""
+
+# f1618d2b2b364cabbf62bfda961a8299
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:20
+msgid ":ref:`geometric_1d_anchor`"
+msgstr ""
+
+# 086be4a5bbaa4ee0b1d6f8c63843fbb7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:21
+msgid ":ref:`start_and_end_length_anchor`"
+msgstr ""
+
+# 09c9820b8a2a4a4d94c980cd3133eab3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:22
+msgid ":ref:`number_of_segments_anchor` with Scale distribution"
+msgstr ""
+
+# ee781ed9a4fd46d08293c6a556068f51
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:26
+msgid "Distribution depending on curvature:"
+msgstr ""
+
+# 6f8fb1c713e24e0c9ab60a883453232d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:25
+msgid ":ref:`adaptive_1d_anchor`"
+msgstr ""
+
+# 71739427858f4114ba7556cb23ae3517
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:26
+msgid ":ref:`deflection_1d_anchor`"
+msgstr ""
+
+# c624c4d51045437da0ac9b8e5f4737ed
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:31
+msgid "Arbitrary distribution:"
+msgstr ""
+
+# 21a4015c89ab48d79f1839cb441b70da
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:29
+msgid ":ref:`fixed_points_1d_anchor`"
+msgstr ""
+
+# edb342ebdafc493badb3df1ffd43d68f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:30
+msgid ""
+":ref:`number_of_segments_anchor` \"Number of Segments\" with "
+":ref:`analyticdensity_anchor` or Table Density Distribution"
+msgstr ""
+
+# f1c27584812f4bf4ba9b7bfc11aa5699
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:36
+msgid "Adaptive hypothesis"
+msgstr ""
+
+# 5f9d7dbbbaae4e858e7ed744834f2133
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:38
+msgid ""
+"**Adaptive** hypothesis allows to split edges into segments with a length"
+" that depends on the curvature of edges and faces and is limited by "
+"**Min. Size** and **Max Size**. The length of a segment also depends on "
+"the lengths of adjacent segments (that can't differ more than twice) and "
+"on the  distance to close geometrical entities (edges and faces) to avoid"
+" creation of narrow 2D elements."
+msgstr ""
+
+# 77a9dd0ad94b42239280ee8477c645ad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:43
+msgid "**Min size** parameter limits the minimal segment size."
+msgstr ""
+
+# c65d0ae59eb4430c9cb9dc840c24f008
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:44
+msgid "**Max size** parameter defines the length of segments on straight edges."
+msgstr ""
+
+# c8f35ffc68954c699986f225ad24680d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:45
+msgid ""
+"**Deflection** parameter gives maximal distance of a segment from a "
+"curved edge."
+msgstr ""
+
+# 8074ca7c6943489eb587faca286e1fa8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:53
+msgid "**See Also** a :ref:`tui_1d_adaptive` that uses Adaptive hypothesis."
+msgstr ""
+
+# 6933bfa76bf240d48ac1e86ed2fc3a79
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:58
+msgid "Arithmetic Progression hypothesis"
+msgstr ""
+
+# 67b28a7ed2f44ff59afc61045ed1b8e1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:60
+msgid ""
+"**Arithmetic Progression** hypothesis allows to split edges into segments"
+" with a length that changes in arithmetic progression (Lk = Lk-1 + d) "
+"beginning from a given starting length and up to a given end length."
+msgstr ""
+
+# d091f0929168432b8599be4e633b3636
+# d7c3e8d76efb4b6f89ecc243430aca0f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:62
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:87
+msgid ""
+"The splitting direction is defined by the orientation of the underlying "
+"geometrical edge. **Reverse Edges** list box allows specifying the edges,"
+" for which the splitting should be made in the direction opposite to "
+"their orientation. This list box is usable only if a geometry object is "
+"selected for meshing. In this case it is possible to select edges to be "
+"reversed either directly picking them in the 3D viewer or by selecting "
+"the edges or groups of edges in the Object Browser. Use **Add** button to"
+" add the selected edges to the list."
+msgstr ""
+
+# b60f2b5edee442ff949282b80a9fe815
+# 5ccffba12a6e4b69ac3fc32709e4abf0
+# 6ad5f607d8c2493eb22c219025b1b163
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:65
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:170
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:227
+msgid ""
+":ref:`reversed_edges_helper_anchor` group assists you in defining "
+"**Reversed Edges** parameter."
+msgstr ""
+
+# 6c4e88f8eecf4733bccec96fd0a6147f
+# 4af587f46e6a4d1fbfe07aed5478fe41
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:78
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:96
+msgid "**See Also** a sample TUI Script of a :ref:`tui_1d_arithmetic` operation."
+msgstr ""
+
+# 4cf2061318094f2584bfb1dfcb2faea1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:83
+msgid "Geometric Progression hypothesis"
+msgstr ""
+
+# 8c6e5a2ca49440e9b7fb5fc16a9b9c9f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:85
+msgid ""
+"**Geometric Progression** hypothesis allows splitting edges into segments"
+" with a length that changes in geometric progression (Lk = Lk-1 * d) "
+"starting from a given **Start Length** and with a given **Common Ratio**."
+msgstr ""
+
+# b147c2168aef4864ad9445d3e81f545a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:90
+msgid ""
+":ref:'reversed_edges_helper_anchor' group assists you in defining "
+"**Reversed Edges** parameter."
+msgstr ""
+
+# ab382baae6a6429c8cfab692687e8be8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:101
+msgid "Deflection hypothesis"
+msgstr ""
+
+# b0fb0c4995874073a9baf66368b4d2d9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:103
+msgid ""
+"**Deflection** hypothesis can be applied for meshing curvilinear edges "
+"composing your geometrical object. It defines only one parameter: the "
+"value of deflection (or chord error)."
+msgstr ""
+
+# 19762b93397c4b29a546c596f90ce809
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:105
+msgid ""
+"A geometrical edge is divided into segments of length depending on edge "
+"curvature. The more curved the edge, the shorter the segment. Nodes on "
+"the edge are placed so that the maximum distance between the edge and a "
+"segment approximating a part of edge between two nodes should not exceed "
+"the value of deflection."
+msgstr ""
+
+# f5e2e15def0c420494fd4a6444cf3f05
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:116
+msgid "**See Also** a sample TUI Script of a :ref:`tui_deflection_1d` operation."
+msgstr ""
+
+# c100ce15e826460c8c6708e5d2e5d260
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:121
+msgid "Local Length hypothesis"
+msgstr ""
+
+# fa23f8b4ed594f6ba03c764fe24001a1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:123
+msgid ""
+"**Local Length** hypothesis can be applied for meshing of edges composing"
+" your geometrical object. Definition of this hypothesis consists of "
+"setting the **length** of segments, which will approximate these edges, "
+"and the **precision** of rounding."
+msgstr ""
+
+# 53b1305cc3f04666a7a6ef6edce60db5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:125
+msgid ""
+"The **precision** parameter is used to round a *number of segments*, "
+"calculated by dividing the *edge length* by the specified **length** of "
+"segment, to the higher integer if the *remainder* exceeds the "
+"**precision** and to the lower integer otherwise. Use value 0.5 to "
+"provide rounding to the nearest integer, 1.0 for the lower integer, 0.0 "
+"for the higher integer. Default value is 1e-07."
+msgstr ""
+
+# 72fc0a4076ea4a93b08374e05df59567
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:128
+msgid ""
+"For example: if *edge length* is 10.0 and the segment **length** is 3.0 "
+"then their division gives 10./3. = 3.33(3) and the *remainder* is "
+"0.33(3). If **precision** is less than 0.33(3) then the edge is divided "
+"into 3 segments. If **precision** is more than 0.33(3) then the edge is "
+"divided into 4 segments."
+msgstr ""
+
+# 1c4881233eab426eae3cad02798e9e6b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:146
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_average_length` "
+"hypothesis operation."
+msgstr ""
+
+# 195635da2ded4460afce43748b85a522
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:152
+msgid "Max Size"
+msgstr ""
+
+# 51e210538ae64364a24aaa64fe065bf0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:154
+msgid ""
+"**Max Size** hypothesis allows splitting geometrical edges into segments "
+"not longer than the given length. Definition of this hypothesis consists "
+"of setting the maximal allowed **length** of segments. **Use preestimated"
+" length** check box lets you use **length** automatically calculated "
+"basing on size of your geometrical object, namely as diagonal of bounding"
+" box divided by ten. The divider can be changed via "
+":ref:`diagonal_size_ratio_pref` preference parameter. **Use preestimated "
+"length** check box is enabled only if the geometrical object has been "
+"selected before hypothesis definition."
+msgstr ""
+
+# 3ec80bcd3e5d4e389b415192cecd9ded
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:164
+msgid "Number of Segments hypothesis"
+msgstr ""
+
+# 2f5a82b3f0df4f09b9fb863e794011ff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:166
+msgid ""
+"**Number of Segments** hypothesis can be applied for approximating edges "
+"by a definite number of mesh segments with length depending on the "
+"selected type of distribution of nodes. The default number of segments "
+"can be set via :ref:`nb_segments_pref` preference parameter."
+msgstr ""
+
+# b4ceedb976fd4cb3ba01bb43d5605dd0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:168
+msgid ""
+"The direction of the splitting is defined by the orientation of the "
+"underlying geometrical edge. **Reverse Edges** list box allows to specify"
+" the edges for which the splitting should be made in the direction "
+"opposing to their orientation. This list box is enabled only if the "
+"geometry object is selected for the meshing. In this case it is possible "
+"to select edges to be reversed either by directly picking them in the 3D "
+"viewer or by selecting the edges or groups of edges in the Object "
+"Browser."
+msgstr ""
+
+# 49a79b130d134cbb8474ca4038c17e5a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:172
+msgid ""
+"You can set the type of node distribution for this hypothesis in the "
+"**Hypothesis Construction** dialog bog :"
+msgstr ""
+
+# 606ec954acf545b1985044f64396c155
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:177
+msgid ""
+"**Equidistant Distribution** - all segments will have the same length, "
+"you define only the **Number of Segments**."
+msgstr ""
+
+# fbed83f6f7ad4bfa96532ccd7d96a0bb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:179
+msgid ""
+"**Scale Distribution** - length of segments gradually changes depending "
+"on the **Scale Factor**, which is a ratio of the first segment length to "
+"the last segment length."
+msgstr ""
+
+# f9f0925545cc4dc4a60a2bc2c14e5fbd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:181
+msgid ""
+"Length of segments changes in geometric progression with the common ratio"
+" (A) depending on the **Scale Factor** (S) and **Number of Segments** (N)"
+" as follows: <code> A = S**(1/(N-1))</code>. For an edge of length L, "
+"length of the first segment is"
+msgstr ""
+
+# cb4fd106e14148f9b1067acd152de378
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:192
+msgid ""
+"**Distribution with Analytic Density** - you input the formula, which "
+"will rule the change of length of segments and the module shows in the "
+"plot the density function curve in red and the nodedistribution as blue "
+"crosses."
+msgstr ""
+
+# 2981a618040c455b8a33bc91b0ed133d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:201
+msgid "Analytic Density"
+msgstr ""
+
+# c2415e1dfe4a404f9c7f32e83e5ce0d3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:203
+msgid ""
+"The node distribution is computed so that to have the density function "
+"integral on the range between two nodes equal for all segments."
+msgstr ""
+
+# b3be5eda49174bedbde04c3261e7c07e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:208
+msgid ""
+"**Distribution with Table Density** - you input a number of pairs **t - "
+"F(t)**, where **t** ranges from 0 to 1, and the module computes the "
+"formula, which will rule the change of length of segments and shows in "
+"the plot the density function curve in red and the node distribution as "
+"blue crosses. The node distribution is computed in the same way as for "
+":ref:`analyticdensity_anchor`. You can select the **Conversion mode** "
+"from **Exponent** and **Cut negative**."
+msgstr ""
+
+# 2c691371aa3e421bbd47bc5a1f61e756
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:214
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_deflection_1d` hypothesis"
+" operation."
+msgstr ""
+
+# 8fba9bba46a2466081ef68543e3aaa65
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:221
+msgid "Start and End Length hypothesis"
+msgstr ""
+
+# 6923eaee87c74f3a9068e15baa112ce4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:223
+msgid ""
+"**Start and End Length** hypothesis allows to divide a geometrical edge "
+"into segments so that the first and the last segments have a specified "
+"length. The length of medium segments changes with automatically chosen "
+"geometric progression."
+msgstr ""
+
+# b9b5660f27ec4fbd8c2af3c653be6250
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:225
+msgid ""
+"The direction of the splitting is defined by the orientation of the "
+"underlying geometrical edge. **Reverse Edges** list box allows to specify"
+" the edges, for which the splitting should be made in the direction "
+"opposing to their orientation. This list box is enabled only if the "
+"geometry object is selected for the meshing. In this case it is possible "
+"to select edges to be reversed either by directly picking them in the 3D "
+"viewer or by selecting the edges or groups of edges in the Object "
+"Browser."
+msgstr ""
+
+# f8cd39ac36d54c518c08b6cc74cea1c3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:239
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_start_and_end_length` "
+"hypothesis operation."
+msgstr ""
+
+# 4c846b04b34b49fcb87cbfa89cfa7e0a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:245
+msgid "Automatic Length"
+msgstr ""
+
+# 52fc64e5fd41412dbb1945c98092ebb2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:247
+msgid ""
+"The dialog box prompts you to define the quality of the future mesh by "
+"only one parameter, which is **Fineness**, ranging from 0 (coarse mesh, "
+"low number of segments) to 1 (extremely fine mesh, great number of "
+"segments)."
+msgstr ""
+
+# 4c413256d67e4a98aafa8e8b9c98e56b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:252
+msgid ""
+"Compare one and the same object (sphere) meshed with minimum and maximum "
+"value of this parameter."
+msgstr ""
+
+# 85443717ca1240b1becda59b7316192d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:269
+msgid "Fixed Points hypothesis"
+msgstr ""
+
+# ba6121ee533e44fc908101a79a72b5c2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:271
+msgid ""
+"**Fixed Points** hypothesis allows splitting edges through a set of "
+"points parametrized on the edge (from 1 to 0) and a number of segments "
+"for each interval limited by the points."
+msgstr ""
+
+# 11d4d0cdcf96464492c236b7131824b3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:276
+msgid ""
+"It is possible to check in **Same Nb. Segments for all intervals** option"
+" and to define one value for all intervals."
+msgstr ""
+
+# 32729bb178134117bd5426aa77af8b12
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:278
+msgid ""
+"The splitting direction is defined by the orientation of the underlying "
+"geometrical edge. **Reverse Edges** list box allows to specify the edges "
+"for which the splitting should be made in the direction opposite to their"
+" orientation. This list box is enabled only if the geometrical object is "
+"selected for meshing. In this case it is possible to select the edges to "
+"be reversed either directly picking them in the 3D viewer or selecting "
+"the edges or groups of edges in the Object Browser."
+msgstr ""
+
+# b16d91c1530f4b638bd208ddff660d04
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:280
+msgid ""
+":ref:`reversed_edges_helper_anchor`  group assists in defining **Reversed"
+" Edges** parameter."
+msgstr ""
+
+# f5f9b331c9a64c788d3c37e2743a3587
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:289
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_fixed_points` hypothesis "
+"operation."
+msgstr ""
+
+# 9e5041ec60644fc7a926ce0f6ba229ad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:295
+msgid "Reversed Edges Helper"
+msgstr ""
+
+# 7ae7f217195445b399770e626dfe9857
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:300
+msgid ""
+"**Helper** group assists in defining **Reversed Edges** parameter of the "
+"hypotheses depending on edge direction."
+msgstr ""
+
+# 3b468927664d456ab32566aaf29301d9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:302
+msgid ""
+"**Show whole geometry** check-box allows seeing the whole geometrical "
+"model in the 3D Viewer, which can help to understand the location of a "
+"set of edges within the model."
+msgstr ""
+
+# 93f2b49b20724274a478612609fc7b1e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:304
+msgid ""
+"**Propagation chains** group allows defining **Reversed Edges** for "
+"splitting opposite edges of quadrilateral faces in a logically uniform "
+"direction. When this group is activated, the list is filled with "
+"propagation chains found within the shape on which a hypothesis is "
+"assigned. When a chain is selected in the list its edges are shown in the"
+" Viewer with arrows, which enables choosing a common direction for all "
+"chain edges. **Reverse** button inverts the common direction of chain "
+"edges. **Add** button is active if some edges of a chain have a different"
+" direction, so you can click **Add** button to add them to **Reversed "
+"Edges** list."
+msgstr ""
+
+# 97e86e78b2844d0691ff69afce408f49
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:313
+msgid ""
+"Alternatively, uniform direction of edges of one propagation chain can be"
+" achieved by :ref:`constructing_submeshes_page` on one edge of the chain "
+"and assigning a :ref:`propagation_anchor` additional hypothesis. "
+"Orientation of this edge (and hence of all the rest edges of the chain) "
+"can be controlled by using **Reversed Edges** field."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/2d_meshing_hypo.po b/doc/gui/locale/fr/LC_MESSAGES/2d_meshing_hypo.po
new file mode 100644 (file)
index 0000000..8a6985d
--- /dev/null
@@ -0,0 +1,258 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# e09a6a3b97b64b3cb872ab20d9d9432d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:5
+msgid "2D Meshing Hypotheses"
+msgstr ""
+
+# 3c189747271e4baab0a6a8be1ebfe617
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:7
+msgid ":ref:`max_element_area_anchor`"
+msgstr ""
+
+# 626c5252da5d428fa87f21870252b8ec
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:8
+msgid ":ref:`length_from_edges_anchor`"
+msgstr ""
+
+# 0a330d38fd7a439ebca34824f94ce24a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:9
+msgid ":ref:`hypo_quad_params_anchor`"
+msgstr ""
+
+# e4c3135156f04dc8a7ab755cce1c926e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:14
+msgid "Max Element Area"
+msgstr ""
+
+# bce203b092324a5cae81a8d3cecd0775
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:16
+msgid ""
+"**Max Element Area** hypothesis is applied for meshing of faces composing"
+" your geometrical object. Definition of this hypothesis consists of "
+"setting the **maximum area** of mesh faces, which will compose the mesh "
+"of these faces."
+msgstr ""
+
+# 23f4d39a6f8e41a9afcb638757c9de85
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:29
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_max_element_area` "
+"hypothesis operation."
+msgstr ""
+
+# bc9dd7bbc2d84918ae8ed0c766421231
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:34
+msgid "Length from Edges"
+msgstr ""
+
+# 7e64f4443d73462497945de78b7d41b7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:36
+msgid ""
+"**Length from edges** hypothesis defines the maximum linear size of mesh "
+"faces as an average length of mesh edges approximating the meshed face "
+"boundary."
+msgstr ""
+
+# 1b22303db2b146a891123ae5a612fda8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:38
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_length_from_edges` "
+"hypothesis operation."
+msgstr ""
+
+# 27cb49c4b74e42a794fe9cdaf10ba349
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:43
+msgid "Quadrangle parameters"
+msgstr ""
+
+# 726853c1c3f444bb853c961e3766525c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:51
+msgid "**Quadrangle parameters** is a hypothesis for :ref:`quad_ijk_algo_page`."
+msgstr ""
+
+# a22ddb3e0ac443f5b199e4efd2ba09e8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:53
+msgid ""
+"**Transition** tab is used to define the algorithm of transition between "
+"opposite sides of the face with a different number of segments on them. "
+"The following types of transition algorithms are available:"
+msgstr ""
+
+# 1c874aacddc04fb283fa3a4baeea4a78
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:55
+msgid ""
+"**Standard** is the default case, when both triangles and quadrangles are"
+" possible in the transition area along the finer meshed sides."
+msgstr ""
+
+# 65541b3950864c14a539742e2cf126af
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:56
+msgid ""
+"**Triangle preference** forces building only triangles in the transition "
+"area along the finer meshed sides."
+msgstr ""
+
+# a5b18b9dbb824e7092954715a0d8bc8e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:59
+msgid ""
+"This type corresponds to **Triangle Preference** additional hypothesis, "
+"which is obsolete now."
+msgstr ""
+
+# cbdd1ae9654e473094535be74f398e2d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:61
+msgid ""
+"**Quadrangle preference** forces building only quadrangles in the "
+"transition area along the finer meshed sides. This hypothesis has a "
+"restriction: the total quantity of segments on all four face sides must "
+"be even (divisible by 2)."
+msgstr ""
+
+# 1d2c0415ad6448de9ca8cc4888852887
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:64
+msgid ""
+"This type corresponds to **Quadrangle Preference** additional hypothesis,"
+" which is obsolete now."
+msgstr ""
+
+# 86fed1d6a87d4261a98f062232709402
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:66
+msgid ""
+"**Quadrangle preference (reversed)** works in the same way and with the "
+"same restriction as **Quadrangle preference**, but the transition area is"
+" located along the coarser meshed sides."
+msgstr ""
+
+# f34e676eda8046a189ea5cd908adc1c1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:67
+msgid ""
+"**Reduced** type forces building only quadrangles and the transition "
+"between the sides is made gradually, layer by layer. This type has a "
+"limitation on the number of segments: one pair of opposite sides must "
+"have the same number of segments, the other pair must have an even total "
+"number of segments. In addition, the number of rows between sides with "
+"different discretization should be enough for the transition. Following "
+"the fastest transition pattern, three segments become one (see the image "
+"below), hence the least number of face rows needed to reduce from Nmax "
+"segments to Nmin segments is log<sub>3</sub>( Nmax / Nmin ). The number "
+"of face rows is equal to the number of segments on each of equally "
+"discretized sides."
+msgstr ""
+
+# ba8a0131a1ce4d6a8c769c79ca9ccca3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:75
+msgid ""
+"**Base vertex** tab allows using Quadrangle: Mapping algorithm for "
+"meshing of trilateral faces. In this case it is necessary to select the "
+"vertex, which will be used as the forth degenerated side of quadrangle."
+msgstr ""
+
+# ae5ff703b7b241049a1424f8be84add7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:95
+msgid ""
+"This parameter can be also used to mesh a segment of a circular face. "
+"Please, consider that there is a limitation on the selection of the "
+"vertex for the faces built with the angle > 180 degrees (see the "
+"picture)."
+msgstr ""
+
+# 36c47565de424a39bff9f2d3b1b0f2b5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:103
+msgid ""
+"In this case, selection of a wrong vertex for the **Base vertex** "
+"parameter will generate a wrong mesh. The picture below shows the good "
+"(left) and the bad (right) results of meshing."
+msgstr ""
+
+# a9b6a86af1fa41bf984f3466076bf2b3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:117
+msgid ""
+"**Enforced nodes** tab allows defining points, where the algorithm should"
+" create nodes. There are two ways to define positions of the enforced "
+"nodes."
+msgstr ""
+
+# cefb6744782b466f9c8320db9d4399cb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:119
+msgid ""
+"**Vertices** group allows to set up shapes whose vertices will  define "
+"positions of the enforced nodes. Only vertices successfully projected to "
+"the meshed face and located close enough to the meshed face will be used "
+"to create the enforced nodes."
+msgstr ""
+
+# 524446d9898844208f44b2963b1fc521
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:120
+msgid ""
+"**Points** group allows to explicitly define coordinates of points used "
+"to create the enforced nodes. Only points successfully projected to the "
+"meshed face and located close enough to the meshed face will be used to "
+"create the enforced nodes."
+msgstr ""
+
+# 4f40e9dbcb9345d7864be5c424006f41
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:123
+msgid "**Enforced nodes** cannot be created at **Reduced** transition type."
+msgstr ""
+
+# f06dce07c1944aeeb641ca1dbc820e5b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:126
+msgid "Let us see how the algorithm works:"
+msgstr ""
+
+# c803bbb4162541b293d406dd2b4830c4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:126
+msgid ""
+"Initially positions of nodes are computed without taking into account the"
+" enforced vertex (yellow point)."
+msgstr ""
+
+# 1ae3092675794e7f8784c2e7aecd9726
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:134
+msgid ""
+"Then the node closest to the enforced vertex is detected. Extreme nodes "
+"of the row and column of the detected node are used to create virtual "
+"edges (yellow lines) ending at the enforced vertex."
+msgstr ""
+
+# 53ca82d63dca4b5f8c582ef147410fff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:141
+msgid ""
+"Consequently, the meshed face is divided by the virtual edges into four "
+"quadrilateral sub-domains each of which is meshed as usually: the nodes "
+"of the row and column of the detected node are moved to the virtual edges"
+" and the quadrilateral elements are constructed."
+msgstr ""
+
+# 2824cf7b8268406f896ffa7b16377973
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:150
+msgid ""
+"If there are several enforced vertices, the algorithm is applied "
+"recursively to the formed sub-domains."
+msgstr ""
+
+# 5a699f46aaf34d3e83d8349558155473
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:152
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_quadrangle_parameters` "
+"hypothesis."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/about_filters.po b/doc/gui/locale/fr/LC_MESSAGES/about_filters.po
new file mode 100644 (file)
index 0000000..e0d9eac
--- /dev/null
@@ -0,0 +1,75 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 4c761ceb3e2b4589b9322427cd60a721
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_filters.rst:5
+msgid "About filters"
+msgstr ""
+
+# 6b9203e61ded4843bca733e95c9506bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_filters.rst:7
+msgid ""
+"**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."
+msgstr ""
+
+# 2f2442981da04ae390067a60888985b6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_filters.rst:9
+msgid ""
+"Several criteria can be combined together by using logical operators "
+"*AND* and *OR*. In addition, a filter criterion can be reverted using "
+"logical operator *NOT*."
+msgstr ""
+
+# b4f41bb37d9b46ada354aec2684e8658
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_filters.rst:11
+msgid ""
+"Some filtering criteria use the functionality of "
+":ref:`quality_page`:\"mesh quality controls\" to filter mesh nodes / "
+"elements by specific characteristic (Area, Length, etc)."
+msgstr ""
+
+# 62a6a4834fcd4a23889013edf25b754f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_filters.rst:13
+msgid "The functinality of mesh filters is available in both GUI and TUI modes:"
+msgstr ""
+
+# f5f025a85355430caf590bf217ce80e1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_filters.rst:15
+msgid ""
+"In GUI, filters are available in some dialog boxes via \"Set Filters\" "
+"button, clicking on which opens the dialog box allowing to specify the "
+"list of filter criteria to be applied to the current selection. See "
+":ref:`selection_filter_library_page` page to learn more about selection "
+"filters and their usage in GUI."
+msgstr ""
+
+# 06ad9d5a34d14a1d906a06c5cdfa2dc7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_filters.rst:17
+msgid ""
+"In Python scripts, filters can be used to choose only some mesh entities "
+"(nodes or elements) for the operations, which require the list of "
+"entities as input parameter (create/modify group, remove nodes/elements, "
+"etc) and for the operations, which accept objects (groups, sub-meshes) as"
+" input parameter. The page :ref:`tui_filters_page` provides examples of "
+"the filters usage in Python scripts."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/about_hypo.po b/doc/gui/locale/fr/LC_MESSAGES/about_hypo.po
new file mode 100644 (file)
index 0000000..1d1b3e0
--- /dev/null
@@ -0,0 +1,176 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# cf5c5ca41bf34fb1ad6c3de88dd1d060
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:5
+msgid "About Hypotheses"
+msgstr ""
+
+# 81550c4a85c94e458babb3434b2da0f2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:7
+msgid ""
+"**Hypotheses** represent boundary conditions which will be taken into "
+"account by meshing algorithms. The hypotheses allow you to manage the "
+"level of detail of the resulting mesh: when applying different hypotheses"
+" with different parameters you can preset the quantity or size of "
+"elements which will compose your mesh. So, it will be possible to "
+"generate a coarse or a more refined mesh."
+msgstr ""
+
+# 8c7553e9086446319f1133e6c2fa42a3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:9
+msgid "The choice of a hypothesis depends on the selected algorithm."
+msgstr ""
+
+# 849ac0846ee64c26a9c1bc76c9ce81fb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:11
+msgid ""
+"Hypotheses are created during creation and edition of "
+":ref:`constructing_meshes_page`:\"meshes\" and "
+":ref:`constructing_submeshes_page`:\"sub-meshes\". Once created a "
+"hypotheses can be reused during creation and edition of other meshes and "
+"sub-meshes. All created hypotheses and algorithms are present in the "
+"Object Browser in *Hypotheses* and *Algorithms* folders correspondingly. "
+"It is possible to open a dialog to modify the parameters of a hypothesis "
+"from its context menu. This menu also provides  **Unassign** command that"
+" will unassign the hypothesis from all meshes and sub-meshes using it. "
+"Modification of any parameter of a hypothesis and its unassignment leads "
+"to automatic removal of elements generated using it."
+msgstr ""
+
+# 274cef5d5ea04de697c378a00fba0f75
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:16
+msgid "In  **MESH** there are the following Basic Hypotheses:"
+msgstr ""
+
+# 71d2e621d7324f0ebb6ceb26cc82ab88
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:28
+msgid ":ref:`a1d_meshing_hypo_page` (for meshing of **edges**):"
+msgstr ""
+
+# 3448a2d7d3d34e969a0c77b659031f3a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:19
+msgid ":ref:`number_of_segments_anchor`"
+msgstr ""
+
+# b7a48255d4e04b40aa8f21ac290aafc7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:20
+msgid ":ref:`average_length_anchor`"
+msgstr ""
+
+# 73bde0a663a74b129cc144e2e6320bad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:21
+msgid ":ref:`max_length_anchor`"
+msgstr ""
+
+# 2ab941e1ce4d43c19545dcef537e3302
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:22
+msgid ":ref:`adaptive_1d_anchor`"
+msgstr ""
+
+# d202e9fcfb904f519d01d6ef62e127c9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:23
+msgid ":ref:`arithmetic_1d_anchor`"
+msgstr ""
+
+# d002a42bc00c4198b6848fb367705e1a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:24
+msgid ":ref:`geometric_1d_anchor`"
+msgstr ""
+
+# 08a40e5172de48a796fee45cd666e649
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:25
+msgid ":ref:`start_and_end_length_anchor`"
+msgstr ""
+
+# 46f1c6a5ac664195bce56d33434ddd68
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:26
+msgid ":ref:`deflection_1d_anchor`"
+msgstr ""
+
+# 076afced002441818a1b12f92f8b3108
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:27
+msgid ":ref:`automatic_length_anchor`"
+msgstr ""
+
+# 1424e2ee42694e7ba9ad71610b503d67
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:28
+msgid ":ref:`fixed_points_1d_anchor`"
+msgstr ""
+
+# 9c513d5204534df0a79b9a7f5c635cdc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:30
+msgid ":ref:`a2d_meshing_hypo_page` (for meshing of **faces**):"
+msgstr ""
+
+# 73d34e2054e140ea86e4ad6010c0a78b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:32
+msgid ":ref:`max_element_area_anchor`"
+msgstr ""
+
+# 68b2a01b7abb4ee087a50db8cb7aecf0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:33
+msgid ":ref:`length_from_edges_anchor`"
+msgstr ""
+
+# d22c0f63c7c24df686de9435ba9f30c2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:34
+msgid ":ref:`hypo_quad_params_anchor`"
+msgstr ""
+
+# 2d7fb7b4e93f43209fc61f61b5988406
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:36
+msgid "3D Hypothesis (for meshing of **volumes**):"
+msgstr ""
+
+# 302ca3189198469085114e21b9fe769a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:38
+msgid ":ref:`max_element_volume_hypo_page`"
+msgstr ""
+
+# 5207e8583dc9412bbd2b9ac42fb4e0e8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:42
+msgid "There also exist :ref:`additional_hypo_page`:"
+msgstr ""
+
+# a02afdc27184497ea23d14034586ed6d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:44
+msgid ":ref:`propagation_anchor`"
+msgstr ""
+
+# d9416ba6db414d4ab1550d022658ef2c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:45
+msgid ":ref:`propagofdistribution_anchor`"
+msgstr ""
+
+# db07dc3d875244ab8717f460c6a9ed69
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:46
+msgid ":ref:`viscous_layers_anchor`"
+msgstr ""
+
+# 10d4f8d7345041379fcd7107912ff551
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:47
+msgid ":ref:`quadratic_mesh_anchor`"
+msgstr ""
+
+# e4cee0c6f5164f2ebdda479a43ad432a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:48
+msgid ":ref:`quadrangle_preference_anchor`"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/about_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/about_meshes.po
new file mode 100644 (file)
index 0000000..99a6cf7
--- /dev/null
@@ -0,0 +1,265 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-03-30 11:57+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# bbd67fcb9bc849ffaa47f4f37c559bf7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:5
+msgid "About meshes"
+msgstr ""
+
+# a6955211ab2a48978a482d711a509878
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:7
+msgid ""
+"**MESH** represents a discrete approximation of a subset of the three-"
+"dimensional space by `elementary geometrical elements`_."
+msgstr ""
+
+# 593925037f2143348fa2405c2abf4c80
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:9
+msgid ""
+"A SALOME study can contain multiple meshes, but they do not implicitly "
+"compose one super-mesh, and finally each of them can be used (e.g. "
+"exported) only individually."
+msgstr ""
+
+# 9bbe3f87295e42bba99b865e81ae92b2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:11
+msgid "Mesh module provides several ways to create the mesh:"
+msgstr ""
+
+# a8667990ca9a4978985fc15bf31ccd8f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:13
+msgid ""
+"The main way is to :ref:`constructing_meshes_page` on the basis of the "
+"geometrical shape produced in the Geometry module. This way implies "
+"selection of"
+msgstr ""
+
+# b233fa907d3648feb4cd6dc4cc472f7a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:15
+msgid "a geometrical object (**main shape**) and"
+msgstr ""
+
+# ddeb34ea50a141dc86cf5c193550d735
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:16
+msgid ""
+"**meshing parameters** ( :ref:`basic_meshing_algos_page` and "
+"characteristics (e.g. element size) of a required mesh encapsulated in "
+":ref:`about_hypo_page` objects)."
+msgstr ""
+
+# 40217c32a4cf4aebb3e40671f1eada9b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:18
+msgid ""
+"Construction of :ref:`constructing_submeshes_page` allows to discretize "
+"some sub-shapes of the main shape, for example a face, using the meshing "
+"parameters that differ from those used for other sub-shapes. Meshing "
+"parameters of meshes and sub-meshes can be :ref:`editing_meshes_page`. "
+"(Upon edition only mesh entities generated using changed meshing "
+"parameters are removed and will be re-computed)."
+msgstr ""
+
+# 83c44881ecf64a0e83af2dba8c3daeaa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:22
+msgid ""
+"Algorithms and hypotheses used at mesh level are referred to as *global* "
+"ones and those used at sub-mesh level are referred to as *local* ones."
+msgstr ""
+
+# 02df38d2611d4ceca0ec7e13af4300f1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:24
+msgid ""
+"Bottom-up way, using :ref:`modifying_meshes_page` operations, especially "
+":ref:`extrusion_page` and :ref:`revolution_page`. To create an empty mesh"
+" not based on geometry, use the same dialog as to "
+":ref:`constructing_meshes_page` but specify neither the geometry nor "
+"meshing algorithms."
+msgstr ""
+
+# e626515a752544a5b5c5aef8b6060b2b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:26
+msgid ""
+"The mesh can be :ref:`importing_exporting_meshes_page` from (and exported"
+" to) the file in MED, UNV, STL, CGNS, DAT, GMF and SAUVE formats."
+msgstr ""
+
+# 885d481a9e524431bce283c16aa9cad0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:28
+msgid ""
+"The 3D mesh can be generated from the 2D mesh not based on geometry, "
+"which was either :ref:`importing_exporting_meshes_page` or created in "
+"other way. To setup the meshing parameters of a mesh not based on "
+"geometry, just invoke :ref:`editing_meshes_page` command on your 2D mesh."
+msgstr ""
+
+# 7132296945a343ee95409e55a308ed71
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:30
+msgid "Several meshes can be :ref:`building_compounds_page` into a new mesh."
+msgstr ""
+
+# 18a83115d76142c7b2e10e8b1407993f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:32
+msgid ""
+"The whole mesh or its part (sub-mesh or group) can be "
+":ref:`copy_mesh_page` into a new mesh."
+msgstr ""
+
+# b0ba309fef194333b29189b6995f8eeb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:34
+msgid ""
+"A new mesh can be created from a transformed, e.g. "
+":ref:`translation_page`, part of the mesh."
+msgstr ""
+
+# a9e6fa513d8348a6b3c381daab86e819
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:37
+msgid ""
+"Meshes can be edited using the MESH functions destined for "
+":ref:`modifying_meshes_page` of meshes."
+msgstr ""
+
+# 8a46a1bb6fb248f78f8979a3ad36ad98
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:39
+msgid "Attractive meshing capabilities include:"
+msgstr ""
+
+# 0e136eb5e8894447be7b3ab96cfbc686
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:41
+msgid ""
+"3D and 2D :ref:`viscous_layers_anchor` (boundary layers of highly "
+"stretched elements beneficial for high quality viscous computations);"
+msgstr ""
+
+# 7ef84d1258894100a88cae6cb66735eb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:42
+msgid ""
+"automatic conformal transition between tetrahedral and hexahedral sub-"
+"meshes."
+msgstr ""
+
+# e4a96ec14ead4e2f8c4fc6c3140acdfa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:44
+msgid ""
+"The **structure** of a SALOME mesh is described by nodes and elements "
+"based on these nodes. The geometry of an element is defined by the "
+"sequence of nodes constituting it and the :ref:`connectivity_page` "
+"(adopted from MED library). Definition of the element basing on the "
+"elements of a lower dimension is NOT supported."
+msgstr ""
+
+# 056ea079ede346ec8dc2c83e4cb7178a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:48
+msgid "The mesh can include the following entities:"
+msgstr ""
+
+# efdffee80b7340cab48a496d0f4160dd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:50
+msgid ""
+"**Node** - a mesh entity defining a position in 3D space with coordinates"
+" (x, y, z)."
+msgstr ""
+
+# f67ab5a07db443269e10005492f88c64
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:51
+msgid "**Edge** (or segment) - 1D mesh element linking two nodes."
+msgstr ""
+
+# 945cca5fbefc426bb3a1085eb7f7941c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:52
+msgid ""
+"**Face** - 2D mesh element representing a part of surface bound by links "
+"between face nodes. A face can be a triangle, quadrangle or polygon."
+msgstr ""
+
+# f9a85025f9734dbe86a1d00fc71901ab
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:53
+msgid ""
+"**Volume** - 3D mesh element representing a part of 3D space bound by "
+"volume facets. Nodes of a volume describing each facet are defined by the"
+" :ref:`connectivity_page`. A volume can be a tetrahedron, hexahedron, "
+"pentahedron, pyramid, hexagonal prism or polyhedron."
+msgstr ""
+
+# 4225f83b0bd840369cbc2865b6d15192
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:54
+msgid "**0D** element - mesh element defined by one node."
+msgstr ""
+
+# 677f8fe39ee94e6db57f3bf7060717eb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:55
+msgid "**Ball** element - discrete mesh element defined by a node and a diameter."
+msgstr ""
+
+# b2bfe06dd8c346dd9afe5838abde53f4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:58
+msgid ""
+"Every mesh entity has an attribute associating it to a sub-shape it is "
+"generated on (if any). The node generated on the geometrical edge or "
+"surface in addition stores its position in parametric space of the "
+"associated geometrical entity. This attribute is set up by meshing "
+"algorithms generating elements and nodes."
+msgstr ""
+
+# 4628312683d144fea8212d8214344361
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:60
+msgid ""
+"Mesh entities are identified by integer IDs starting from 1. Nodes and "
+"elements are counted separately, i.e. there can be a node and element "
+"with the same ID."
+msgstr ""
+
+# b1f9d522ea62433ebe533718f1339075
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:63
+msgid ""
+"SALOME supports elements of second order, without a central node "
+"(quadratic triangle, quadrangle, polygon, tetrahedron, hexahedron, "
+"pentahedron and pyramid) and with central nodes (bi-quadratic triangle "
+"and quadrangle and tri-quadratic hexahedron)."
+msgstr ""
+
+# 32aeee3bc51e400cbd796f90ab8ed466
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:66
+msgid "Quadratic mesh can be obtained in three ways:"
+msgstr ""
+
+# c0b41f83bb3c47599d98572d8c2c6ce8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:68
+msgid ""
+"Using a global :ref:`quadratic_mesh_anchor` hypothesis. (Elements with "
+"the central node are not generated in this way)."
+msgstr ""
+
+# d997d078e82f4dbb8b427bfacb344906
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:69
+msgid "Using :ref:`convert_to_from_quadratic_mesh_page` operation."
+msgstr ""
+
+# 5bef51942d2c47148f312db810ab424c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:70
+msgid ""
+"Using an appropriate option of some meshing algorithms, which generate "
+"elements of several dimensions starting from mesh segments."
+msgstr ""
+
+# e8043eb95dac4ea4a0767e3fa3b58b45
+#~ msgid ""
+#~ "**MESH** represents a discrete approximation"
+#~ " of a subset of the three-"
+#~ "dimensional space by `mesh_entities`_."
+#~ msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/about_quality_controls.po b/doc/gui/locale/fr/LC_MESSAGES/about_quality_controls.po
new file mode 100644 (file)
index 0000000..20d0a90
--- /dev/null
@@ -0,0 +1,252 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 1ee8b31425374381af2cfb8401ef4f22
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:5
+msgid "About quality controls"
+msgstr ""
+
+# f6ab5ca061f14d87958b45a6eccb1867
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:8
+msgid ""
+"**Mesh quality control** in MESH is destined for visual control of the "
+"generated mesh."
+msgstr ""
+
+# a45fbb955cd7401d9e4a8aae1f14bb08
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:10
+msgid ""
+"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."
+msgstr ""
+
+# ded5b6f9b30f4033bdf008efac6be875
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:12
+msgid ""
+"There are four types of quality controls, corresponding to node, edge, "
+"face and volume entity type."
+msgstr ""
+
+# 300e980259b048168030a8045bb7ef99
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:14
+msgid "Node quality controls:"
+msgstr ""
+
+# a56a842402c748b1a450684ac448f30b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:16
+msgid ":ref:`free_nodes_page`"
+msgstr ""
+
+# 9579927bc68945e7bb57df2cc60bcc7e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:17
+msgid ":ref:`double_nodes_control_page`"
+msgstr ""
+
+# eb9a884d72b84a20a80ef86bd2016aa4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:20
+msgid "Edge quality controls:"
+msgstr ""
+
+# de4c7ad561754197886c465f7ba9b493
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:22
+msgid ":ref:`free_borders_page`"
+msgstr ""
+
+# 514b8747c33343508f22259c2745a0d4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:23
+msgid ":ref:`length_page`"
+msgstr ""
+
+# 29ca9e18e3044f728d2bbabd9daf70ef
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:24
+msgid ":ref:`borders_at_multi_connection_page`"
+msgstr ""
+
+# 1f2a0b4bba2d49938eb08cd4fd88e506
+# 9f94241b84ec424093f789232f7741ca
+# 89e8eaaee4c442cdbef054f7b3e5e80f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:25
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:43
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:53
+msgid ":ref:`double_elements_page`"
+msgstr ""
+
+# f848afd5310a462dbab6c26cb8a547a7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:28
+msgid "Face quality controls:"
+msgstr ""
+
+# 0aa1f1e12ed94d5b8e66db9a11001bf1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:30
+msgid ":ref:`free_edges_page`"
+msgstr ""
+
+# 72064f0d04994068b33a360cdbba28e1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:31
+msgid ":ref:`free_faces_page`"
+msgstr ""
+
+# a129a1a3d9264e9bb1c59001e5bd5215
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:32
+msgid ":ref:`bare_border_faces_page`"
+msgstr ""
+
+# ac50d8b3124c4ef4b365f04a6501d770
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:33
+msgid ":ref:`over_constrained_faces_page`"
+msgstr ""
+
+# 518ba97e1b04492e8a65a09fc3e34c36
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:34
+msgid ":ref:`length_2d_page`"
+msgstr ""
+
+# 8465eafd82c941db8578142d9c8df8a5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:35
+msgid ":ref:`borders_at_multi_connection_2d_page`"
+msgstr ""
+
+# 176553bb796040aeb915efba7fecb379
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:36
+msgid ":ref:`area_page`"
+msgstr ""
+
+# e6254c2642c14e1a9f436dd528e96ff4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:37
+msgid ":ref:`taper_page`"
+msgstr ""
+
+# 3400cf1721384c5784a097bdd5b82e6d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:38
+msgid ":ref:`aspect_ratio_page`"
+msgstr ""
+
+# ccdb34f54e5747b7888ae9981b9e450e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:39
+msgid ":ref:`minimum_angle_page`"
+msgstr ""
+
+# 9cd991036b664bc8a1101d022982e5a1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:40
+msgid ":ref:`warping_page`"
+msgstr ""
+
+# 41f8256446cc4b1aac9eb970eeda4ce0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:41
+msgid ":ref:`skew_page`"
+msgstr ""
+
+# 78825a0aa02c4988a21bf69e73879db1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:42
+msgid ":ref:`max_element_length_2d_page`"
+msgstr ""
+
+# 5afb46f9acac4a9eb4756abdfc9f27cc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:46
+msgid "Volume quality controls:"
+msgstr ""
+
+# a9f0ee19881d492aa3a27ae458c996f1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:48
+msgid ":ref:`aspect_ratio_3d_page`"
+msgstr ""
+
+# 4bb9f6eab8164103923c4826e2ecc0f3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:49
+msgid ":ref:`volume_page`"
+msgstr ""
+
+# d7afca49a69c41d7ac8abb0299803a21
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:50
+msgid ":ref:`max_element_length_3d_page`"
+msgstr ""
+
+# 18158bdf984a4244844feb0237e2ade9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:51
+msgid ":ref:`bare_border_volumes_page`"
+msgstr ""
+
+# 867e8cad934641798deb2b24ae70e0d0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:52
+msgid ":ref:`over_constrained_volumes_page`"
+msgstr ""
+
+# e37bfbc3abe44516bc3624f19c0f361f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:56
+msgid ""
+"To manage the quality controls call pop-up in the VTK viewer and select "
+"\"Controls\" sub-menu"
+msgstr ""
+
+# b511cd0c11694da7880052ef367b4387
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:62
+msgid "**Reset** switches off quality controls;"
+msgstr ""
+
+# 07202335cad14c63aad3f0c725c35022
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:63
+msgid "**Node Controls** provides access to the node quality controls;"
+msgstr ""
+
+# b2fe1e355db74664ac3915b3c71f0213
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:64
+msgid "**Edge Controls** provides access to the edge quality controls;"
+msgstr ""
+
+# 2f26a38df6f2496c9ab9baf9251182f8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:65
+msgid "**Face Controls** provides access to the face quality controls;"
+msgstr ""
+
+# 5f6103624b344cf493f1711075e65f45
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:66
+msgid "**Volume Controls** provides access to the volume quality controls;"
+msgstr ""
+
+# 96197eb4535d4f8a968ddc916c251213
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:67
+msgid "**Scalar Bar Properties** allows setting :ref:scalar_bar_dlg;"
+msgstr ""
+
+# d75ea00701944ff4bdb5db1347f3e187
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:68
+msgid ""
+"**Distribution -> Export ...** allows saving the distribution of quality "
+"control values in the text file;"
+msgstr ""
+
+# 077eda1f512648b7873804a13d69ce46
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:69
+msgid ""
+"**Distribution -> Show** Shows/Hides the distribution histogram of the "
+"quality control values in the VTK Viewer."
+msgstr ""
+
+# 9ed4e072f8e144cc9ae6c0b2d3df0cc5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:70
+msgid ""
+"**Distribution -> Plot** Plots the distribution histogram of the quality "
+"control values in the Plot 2D Viewer."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/adding_nodes_and_elements.po b/doc/gui/locale/fr/LC_MESSAGES/adding_nodes_and_elements.po
new file mode 100644 (file)
index 0000000..1444e9c
--- /dev/null
@@ -0,0 +1,394 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 9011f6c867d54bab9004db957896dda8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:5
+msgid "Adding nodes and elements"
+msgstr ""
+
+# adfa44bc891e4ffe8e8043724eca539d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:7
+msgid "In MESH you can add to your mesh different elements such as:"
+msgstr ""
+
+# 642ddc8d028c4b1993cdccb23b1dd463
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:9
+msgid ":ref:`adding_nodes_anchor`"
+msgstr ""
+
+# 42da9857dda24c10a50ba14b1e492231
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:10
+msgid ":ref:`adding_0delems_anchor`"
+msgstr ""
+
+# efaeb514592241879792f25c253e797d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:11
+msgid ":ref:`adding_0delems_on_all_nodes_anchor`"
+msgstr ""
+
+# 97fef81c05d94c38a7eda819953100cf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:12
+msgid ":ref:`adding_balls_anchor`"
+msgstr ""
+
+# c0c6e29dca2b42099fd41451fc1caefd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:13
+msgid ":ref:`adding_edges_anchor`"
+msgstr ""
+
+# 38d32b86aa904d218b25825b33583ed6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:14
+msgid ":ref:`adding_triangles_anchor`"
+msgstr ""
+
+# 86f67a57ad1a40348aed6ff1044b29c8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:15
+msgid ":ref:`adding_quadrangles_anchor`"
+msgstr ""
+
+# 704e5d5a38174b35a93f10be72a0015d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:16
+msgid ":ref:`adding_polygons_anchor`"
+msgstr ""
+
+# 895cea43a2e8413ba004f60066187e1d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:17
+msgid ":ref:`adding_tetrahedrons_anchor`"
+msgstr ""
+
+# a44527882f3d49568a9c62ea73b75593
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:18
+msgid ":ref:`adding_hexahedrons_anchor`"
+msgstr ""
+
+# 2a22f5f9b84b4674b56bfd4b32f70360
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:19
+msgid ":ref:`adding_octahedrons_anchor`"
+msgstr ""
+
+# f4a79505995b4f6d96bff5cc5dea08a2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:20
+msgid ":ref:`adding_polyhedrons_anchor`"
+msgstr ""
+
+# 184027c7452945c39b3574a990e9a1af
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:23
+msgid ""
+"The convention of nodal connectivity of elements used in SALOME is the "
+"MED library convention. You can consult the description of nodal "
+"connectivity of elements in the documentation on MED library or "
+":ref:`connectivity_page`."
+msgstr ""
+
+# e99b10cc630d4ac3a21fc651c070a254
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:25
+msgid "**To add a node or an element to your mesh:**"
+msgstr ""
+
+# eb3d5c2d642d42ef9512a155e752f678
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:27
+msgid "Select your mesh in the Object Browser or in the 3D viewer."
+msgstr ""
+
+# 246ede0e2eca4b7bb2834e2777a35748
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:28
+msgid ""
+"From the **Modification** menu choose the **Add** item, the following "
+"associated sub-menu will appear:"
+msgstr ""
+
+# 4fc6d38cf50c428289475de65b222e1b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:33
+msgid ""
+"From this sub-menu select the type of element which you would like to add"
+" to your mesh."
+msgstr ""
+
+# 7508561f45bd4fc4bd38623d019e493e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:36
+msgid ""
+"All dialogs for new node or element adding to the mesh provide the "
+"possibility to automatically add a node or element to the specified group"
+" or to create it anew using **Add to group** box, that allows choosing an"
+" existing group for the created node or element or giving the name to a "
+"new group. By default, the **Add to group** check box is switched off. If"
+" the user switches this check box on, the combo box listing all currently"
+" existing groups of the corresponding type becomes available. By default,"
+" no group is selected. In this case, when the user presses **Apply** or "
+"**Apply & Close** button, the warning message box informs the user about "
+"the necessity to input new group name. The combo box lists groups of all "
+"the :ref:`grouping_elements_page`: both :ref:`standalone_group`, "
+":ref:`group_on_filter`, and :ref:`group_on_geom`. If the user chooses a "
+"group on geometry or on filter, he is warned and proposed to convert this"
+" group to standalone."
+msgstr ""
+
+# d82e77a7d51f4ef68fd1790112f5a877
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:42
+msgid ""
+"If the user rejects conversion operation, it is cancelled and a new "
+"node/element is not created!"
+msgstr ""
+
+# 56c1ce8fc400423c9560387c0547461a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:45
+msgid ""
+"**See Also** sample TUI Scripts of :ref:`tui_adding_nodes_and_elements` "
+"operations."
+msgstr ""
+
+# c94d9176d6d340568ce11f03af31828e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:50
+msgid "Adding nodes"
+msgstr ""
+
+# 39207b695ed74e9e8a4aadc52be65796
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:55
+msgid ""
+"In this dialog box set coordinates for your node in the **Coordinates** "
+"set of fields and click the **Apply** or **Apply and Close** button. Your"
+" node will be created:"
+msgstr ""
+
+# a457e82a39134103bd12041f43769061
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:64
+msgid "Adding 0D elements"
+msgstr ""
+
+# 1f49fadf1f5b4509a38683508be50f8c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:69
+msgid ""
+"In this dialog box specify nodes which will form your 0D elements by "
+"selecting them in the 3D viewer. Activate **Allow duplicate elements** to"
+" get several 0D elements on a node. Click the **Apply** or **Apply and "
+"Close** button. Your 0D elements will be created:"
+msgstr ""
+
+# 74f45e68dcde4c71844de9cf840a91e8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:79
+msgid "Making 0D elements on Element Nodes"
+msgstr ""
+
+# 5fe00d89f3ca4b118a6cde9e352bf619
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:81
+msgid ""
+"There is another way to create 0D elements. It is possible to create 0D "
+"elements on all nodes of the selected mesh, sub-mesh, or a group of "
+"elements or nodes."
+msgstr ""
+
+# bdde90f70f2d42359ae59e4a8e50d5a3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:86
+msgid "In this dialog"
+msgstr ""
+
+# 0b37680a44ba45aab10b560e6264c1e9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:88
+msgid ""
+"The radio-buttons allow choosing the type of object to create 0D elements"
+" on."
+msgstr ""
+
+# 98c02e71f24043049d821560dd2fa098
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:90
+msgid ""
+"**Mesh, sub-mesh, group** - this button allows selecting a mesh, a sub-"
+"mesh or a group to create 0D elements on the nodes of its elements. The "
+"name of the selected object is shown in the dialog."
+msgstr ""
+
+# 08eff5fd4c084bdf9f5993747ad57fb5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:91
+msgid ""
+"**Elements** - this button allows selecting elements in the VTK viewer or"
+" typing their IDs in the dialog."
+msgstr ""
+
+# e98b5fd256a54798baf8596b478295e2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:92
+msgid ""
+"**Nodes** - this button allows selecting nodes to create 0D elements on "
+"in the VTK viewer or typing their IDs in the dialog."
+msgstr ""
+
+# d8cbfc19bfc046e8a884bbcd39812eab
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:94
+msgid ""
+"**Set Filter** button allows selecting elements or nodes by filtering "
+"mesh elements or nodes with different criteria (see "
+":ref:`filtering_elements`)."
+msgstr ""
+
+# d6406fb702cf41e2b7d6fed2e25ce073
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:95
+msgid ""
+"Activate **Allow duplicate elements** to get several 0D elements on a "
+"node."
+msgstr ""
+
+# 0621972e7e39474c972dd2dcaf8cf3fc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:96
+msgid ""
+"Switching on **Add to group** check-box allows specifying the name of the"
+" group to which all created or found (existing) 0D elements will be "
+"added. You can either select an existing group from a drop-down list, or "
+"enter the name of the group to be created. If a selected existing "
+":ref:`grouping_elements_page` is not Standalone (Group On Geometry or "
+"Group On Filter) it will be converted to Standalone."
+msgstr ""
+
+# c93588d10bf8420b9ad16a2adc708750
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:98
+msgid "If **Add to group** is activated it has to be filled in."
+msgstr ""
+
+# bf9fba0f12844b20b3d18c133a0dcbf6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:106
+msgid "Adding ball elements"
+msgstr ""
+
+# 9eb74b7254d74e119ff0f90ad502635a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:111
+msgid ""
+"In this dialog box specify the nodes, which will form your ball elements,"
+" either by selecting them in the 3D viewer or by manually entering their "
+"IDs, specify the ball diameter and click the **Apply** or **Apply and "
+"Close** button."
+msgstr ""
+
+# a59b9c61819c45e786d432cb6a7b7c70
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:120
+msgid "Adding edges"
+msgstr ""
+
+# 25aef23b2cde4322b51a2dd73884391f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:125
+msgid ""
+"In this dialog box specify the nodes which will form your edge by "
+"selecting them in the 3D viewer with pressed Shift button and click the "
+"**Apply** or **Apply and Close** button. Your edge will be created:"
+msgstr ""
+
+# 29ba16103c444403aa381c6affc205f8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:134
+msgid "Adding triangles"
+msgstr ""
+
+# 2d5864296dc542aa8eccd57747e06f7c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:139
+msgid ""
+"In this dialog box specify the nodes which will form your triangle by "
+"selecting them in the 3D viewer with pressed Shift button and click the "
+"**Apply** or **Apply and Close** button. Your triangle will be created:"
+msgstr ""
+
+# 49fc0b3113ca4b71a249e5c94c2ca8e9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:148
+msgid "Adding quadrangles"
+msgstr ""
+
+# f1972b70655047b4b5ae718478b18b9e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:153
+msgid ""
+"In this dialog box specify the nodes which will form your quadrangle by "
+"selecting them in the 3D viewer with pressed Shift button and click the "
+"**Apply** or **Apply and Close** button. Your quadrangle will be created:"
+msgstr ""
+
+# aa9108d8c0f64e1abc0828f7e626f6ac
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:162
+msgid "Adding polygons"
+msgstr ""
+
+# c12a68103f8c4a4b8b2ab67c3defb0e1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:167
+msgid ""
+"In this dialog box specify the nodes which will form your polygon by "
+"selecting them in the 3D viewer with pressed Shift button and click the "
+"**Apply** or **Apply and Close** button."
+msgstr ""
+
+# e44cd567fda84be59db2caca77c12cb0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:176
+msgid "Adding tetrahedrons"
+msgstr ""
+
+# e2ff62697945475e973fca7863afa8c0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:181
+msgid ""
+"In this dialog box specify the nodes which will form your tetrahedron by "
+"selecting them in the 3D viewer with pressed Shift button and click the "
+"**Apply** or **Apply and Close** button. Your tetrahedron will be "
+"created:"
+msgstr ""
+
+# c1f8e7a2fb2542a39e83a71074f1ae33
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:190
+msgid "Adding hexahedrons"
+msgstr ""
+
+# aeea0dcca6014b878c5255f559e6ac97
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:195
+msgid ""
+"In this dialog box specify the nodes which will form your hexahedron by "
+"selecting them in the 3D viewer with pressed Shift button and click the "
+"**Apply** or **Apply and Close** button. Your hexahedron will be created:"
+msgstr ""
+
+# e7808586e846431089bc097d01c8cc05
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:204
+msgid "Adding hexagonal prism"
+msgstr ""
+
+# fd2284a74c4f438bb2be5863215bd473
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:206
+msgid ""
+"In the Add Hexagonal Prism dialog box specify the nodes which will form "
+"your hexagonal prism by selecting them in the 3D viewer with pressed "
+"Shift button and click the **Apply** or **Apply and Close** button. Your "
+"hexagonal prism will be created:"
+msgstr ""
+
+# a78a49d876004836ab2caf1771528327
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:215
+msgid "Adding polyhedrons"
+msgstr ""
+
+# 2dc6829556a34116a0411a28ff01fe2f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:220
+msgid "There are two different ways to add polyhedral volumes."
+msgstr ""
+
+# c213d91459524e18903370c3a2fa50d5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:222
+msgid ""
+"If you select **Node** as **Elements Type** you will specify the nodes "
+"which will form the faces of your polyhedron by selecting the nodes in "
+"the 3D viewer with pressed Shift button and clicking the  **Add** button "
+"to add the face in the list of Faces by Nodes, which will form your "
+"polyhedron. Note, that it could be very useful to toggle Polyhedron "
+"Preview checkbox to see the results of your selection. The second way is "
+"somewhat simpler, however, there are cases when it does not provide you "
+"with the necessary level of precision. If you select **Face** as "
+"**Elements Type**, you will be able to select the faces which will form "
+"your polyhedron in the 3D viewer with pressed Shift button. If you've "
+"managed to obtain the necessary result, click the **Apply** or **Apply "
+"and Close** button. Your polyhedron will be created:"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/adding_quadratic_elements.po b/doc/gui/locale/fr/LC_MESSAGES/adding_quadratic_elements.po
new file mode 100644 (file)
index 0000000..285271f
--- /dev/null
@@ -0,0 +1,141 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 97ca37c48b6a46eab1311e4da92675b5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:6
+msgid "Adding Quadratic Elements"
+msgstr ""
+
+# 2733f51dd3e24e8e96f1728a9b943693
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:8
+msgid "MESH module allows you to work with **Quadratic Elements**."
+msgstr ""
+
+# 04076a14890047139f3da74e87925b8d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:10
+msgid ""
+"Quadratic elements are defined by the same corner nodes as the "
+"corresponding linear ones, but in addition they have *midside* nodes "
+"located between the corner nodes on element sides."
+msgstr ""
+
+# 2f08f27e14214b69afbb69d7c6ebc4ae
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:12
+msgid ""
+"If a quadratic 2D element has an additional node at the element center, "
+"it is a bi-quadratic element (both TRIA7 and QUAD9 elements are "
+"supported). If a quadratic hexahedral element has 7 additional nodes: at "
+"the element center and at the center of each side, it is a tri-quadratic "
+"element (or HEXA27)."
+msgstr ""
+
+# 6b918686e0f34395848c30004d066fe6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:14
+msgid ""
+"The convention of nodal connectivity of elements used in SALOME is the "
+"MED library convention. You can consult the description of nodal "
+"connectivity of elements in the documentation on MED library or "
+":ref:`connectivity_page`."
+msgstr ""
+
+# c0ee8ff909f64400967daa896e9644f7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:16
+msgid "There are several ways to create quadratic elements in your mesh:"
+msgstr ""
+
+# 1c5f10266ac54e3c9e762d63fa3684c6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:18
+msgid "manually (this way is described below);"
+msgstr ""
+
+# 2afc5e742de948ca8ded56cca6b1fe6b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:19
+msgid ""
+"use :ref:`quadratic_mesh_anchor` hypothesis to generate a quadratic mesh "
+"on your geometry;"
+msgstr ""
+
+# ed047a38d6794df880b1c03db2b8cde4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:20
+msgid ""
+"convert an existing linear mesh to a quadratic one (see "
+":ref:`convert_to_from_quadratic_mesh_page`)."
+msgstr ""
+
+# 08ae2bbebab44a6381ea132a604ced63
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:22
+msgid "**To add a quadratic element to your mesh:**"
+msgstr ""
+
+# de31cde3181045cd8041bb1b0c7666e3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:24
+msgid "Select your mesh in the Object Browser or in the 3D viewer."
+msgstr ""
+
+# 5198fe6693f64e97b13bce6b42b2fac4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:26
+msgid ""
+"From the **Modification** menu choose the **Add** item and select one of "
+"the following:"
+msgstr ""
+
+# 0057e276f3fc4a95b2d276d3fce8c91d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:32
+msgid ""
+"All dialogs for adding quadratic element to the mesh provide the "
+"possibility to automatically add an element to the specified group or to "
+"create the group anew using **Add to group** box, that allows choosing an"
+" existing group for the created node or element or giving the name to a "
+"new group. By default, the **Add to group** check box is switched off. If"
+" the user switches this check box on, the combo box listing all currently"
+" existing groups of the corresponding type becomes available. By default,"
+" no group is selected. In this case, when the user presses **Apply** or "
+"**Apply & Close** button, the warning message box informs the user about "
+"the necessity to input a new group name. The combo box lists groups of "
+"all the :ref:`grouping_elements_page` both :ref:`standalone_group`, "
+":ref:`group_on_filter`, and :ref:`group_on_geom`. If the user chooses a "
+"group on geometry or on filter, he is warned and proposed to convert this"
+" group to standalone. If the user rejects conversion operation, it is "
+"cancelled and a new quadratic element is not created."
+msgstr ""
+
+# 1fd7382a5f4847499e07416870d8c573
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:40
+msgid ""
+"To create any **Quadratic Element** specify the nodes which will form "
+"your element by selecting them in the 3D viewer with pressed Shift button"
+" and click *Selection* button to the right of **Corner Nodes** label. "
+"Their numbers will appear in the dialog box as **Corner Nodes** "
+"(alternatively you can just input numbers in this field without "
+"selection; note that to use this way the mesh should be selected before "
+"invoking this operation). The edges formed by the corner nodes will "
+"appear in the table. To define the middle nodes for each edge, double-"
+"click on the respective field and input the number of the node (or pick "
+"the node in the viewer). For bi-quadratic and tri-quadratic elements, "
+"your also need to specify central nodes. As soon as all needed nodes are "
+"specified, a preview of a new quadratic element will be displayed in the "
+"3D viewer. Then you will be able to click **Apply** or **Apply and "
+"Close** button to add the element to the mesh."
+msgstr ""
+
+# 7e82eacc03904667b815fbeae8cda8fb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:45
+msgid "**Reverse** button reverses the element."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/additional_hypo.po b/doc/gui/locale/fr/LC_MESSAGES/additional_hypo.po
new file mode 100644 (file)
index 0000000..02ed335
--- /dev/null
@@ -0,0 +1,328 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 21ce6bac6a5e4379b28207f6350faf63
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:5
+msgid "Additional Hypotheses"
+msgstr ""
+
+# 3d823676662c4274bc0f890092158f98
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:7
+msgid ""
+"**Additional Hypotheses** can be applied as a supplement to the main "
+"hypotheses, introducing additional concepts to mesh creation."
+msgstr ""
+
+# 94acb0a8af534cd99b6d58f0a65a790c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:9
+msgid ""
+"An **Additional Hypothesis** can be defined in the same way as any main "
+"hypothesis in :ref:`create_mesh_anchor` or "
+":ref:`constructing_submeshes_page` dialog."
+msgstr ""
+
+# 44e1be27062e407297c7265310de5d86
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:11
+msgid "The following additional hypothesis are available:"
+msgstr ""
+
+# c2db6c2d772f4134a5e44cb1263a55de
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:13
+msgid ""
+":ref:`propagation_anchor` and :ref:`propagofdistribution_anchor` "
+"hypotheses are useful for creation of quadrangle and hexahedral meshes."
+msgstr ""
+
+# 916c32073e0e421cb0a385e1e9753f18
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:14
+msgid ""
+":ref:`viscous_layers_anchor`  and :ref:`viscous_layers_anchor` hypotheses"
+" allow creation of layers of highly stretched elements near mesh "
+"boundary, which is beneficial for high quality viscous computations."
+msgstr ""
+
+# 446a5b5e1eb0400aad0ff8c27a1d5082
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:15
+msgid ""
+":ref:`quadratic_mesh_anchor` hypothesis allows generation of second order"
+" meshes."
+msgstr ""
+
+# 8bb9e27c47b04d17873cd417f594aed4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:16
+msgid ":ref:`quadrangle_preference_anchor` enables generation of quadrangles."
+msgstr ""
+
+# 43d294e9c96a4aed95bb7e4e883fa806
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:23
+msgid "Propagation of 1D Hypothesis on opposite edges"
+msgstr ""
+
+# f85ded7f8a7b49048b92c0d124b4c639
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:25
+msgid ""
+"**Propagation of 1D Hypothesis on opposite edges** allows to mesh "
+"opposite sides of a quadrangle face and other adjacent quadrangles, using"
+" the same hypothesis assigned to only one edge. Thus you define a sub-"
+"mesh on the edge where you define 1D meshing parameters and the "
+"**Propagation hypothesis**. These local meshing parameters will be "
+"propagated via opposite sides of quadrangles to the whole geometry, and "
+"this propagation stops at an edge with other local meshing parameters."
+msgstr ""
+
+# 23d299b63f6b4df6afbe6482290ee731
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:34
+msgid ""
+"This hypothesis can be taken into account by :ref:`a1d_algos_anchor` and "
+":ref:`a1d_algos_anchor` \"Composite Side Discretization\" algorithms."
+msgstr ""
+
+# cda8f267f0674c1baedcd8432963c055
+# d1492bfb0b8046e79f66894a009d9b94
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:38
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:56
+msgid "**See Also** a sample TUI Script of a :ref:`tui_propagation` operation"
+msgstr ""
+
+# 8d25f661ff654a748453a7d263c1288e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:43
+msgid "Propagation of Node Distribution on Opposite Edges"
+msgstr ""
+
+# 17c2e5e1af4744d294aa217c8c803a69
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:45
+msgid ""
+"**Propagation of Node Distribution on Opposite Edges** allows to "
+"propagate distribution of nodes onto an opposite edge. If a local "
+"hypothesis and propagation are defined on an edge of a quadrangular face,"
+" the opposite edge will have the same number of nodes and the same "
+"relations between segment lengths, unless another hypothesis has been "
+"locally defined on the opposite edge."
+msgstr ""
+
+# 7bf90153c74e4e27b17402993b37102f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:52
+msgid ""
+"This hypothesis can be taken into account by :ref:`a1d_algos_anchor` "
+"\"Wire Discretization\" and :ref:`a1d_algos_anchor` \"Composite Side "
+"Discretization\" algorithms."
+msgstr ""
+
+# 74ad0ac67c314f3c98e36c1711006ed8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:61
+msgid "Viscous Layers and Viscous Layers 2D"
+msgstr ""
+
+# 28818a66c56e4793ba1162c70ac8157b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:63
+msgid ""
+"**Viscous Layers** and **Viscous Layers 2D** additional hypotheses can be"
+" used by several 3D algorithms, for example Hexahedron(i,j,k), or 2D "
+"algorithms, for example Triangle (MEFISTO), correspondingly. These "
+"hypotheses allow creation of layers of highly stretched elements, prisms "
+"in 3D and quadrilaterals in 2D, near mesh boundary, which is beneficial "
+"for high quality viscous computations."
+msgstr ""
+
+# e572f10f9e014eee840fb93955ac6416
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:78
+msgid "**Name** - allows to define the name of the hypothesis."
+msgstr ""
+
+# cb75b8d96754423686b8366fe91e1e08
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:79
+msgid "**Total thickness** - gives the total thickness of element layers."
+msgstr ""
+
+# 63b46ebf10c641d0a5eba40f01dcd543
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:80
+msgid "**Number of layers** - defines the number of element layers."
+msgstr ""
+
+# 413a63f3f74d426ebbd9adbc4c1285eb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:81
+msgid ""
+"**Stretch factor** - defines the growth factor of element height from the"
+" mesh boundary inwards."
+msgstr ""
+
+# 9c8388a59cfa4958b4ed94d0508d7dfe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:82
+msgid ""
+"**Extrusion method** (available in 3D only) - defines how positions of "
+"nodes are found during prism construction and how the creation of "
+"distorted and intersecting prisms is prevented."
+msgstr ""
+
+# f2f0f76bdd0a4f8381d6543afdb09a40
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:83
+msgid ""
+"**Surface offset + smooth** method extrudes nodes along the normal to the"
+" underlying geometrical surface. Smoothing of the internal surface of "
+"element layers is possible to avoid creation of invalid prisms."
+msgstr ""
+
+# 7c1cc6e7049a427490c6eb5fa0fb2340
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:84
+msgid ""
+"**Face offset** method extrudes nodes along the average normal of "
+"surrounding mesh faces to the intersection with a neighbor mesh face "
+"translated along its own normal by the thickness of layers. The thickness"
+" of layers can be limited to avoid creation of invalid prisms."
+msgstr ""
+
+# 0d52d4c1fff14dfda30416ee5a859000
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:85
+msgid ""
+"**Node offset** method extrudes nodes along the average normal of "
+"surrounding mesh faces by the thickness of layers. The thickness of "
+"layers can be limited to avoid creation of invalid prisms."
+msgstr ""
+
+# 3616587b04724a0da5435e3314c307f8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:93
+msgid ""
+"**Specified Faces/Edges are** - defines how the shapes specified by the "
+"next parameter are used."
+msgstr ""
+
+# f7015e9be22748e5b704b316b2ddfe87
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:94
+msgid ""
+"**Faces/Edges with/without layers** - defines geometrical faces or edges "
+"on which element layers either should be or should not be constructed, "
+"depending on the value of the previous parameter (**Specified Faces/Edges"
+" are**). Faces (or edges) can be selected either in the Object Browser or"
+" in the VTK Viewer. **Add** button becomes active as soon as a suitable "
+"sub-shape is selected."
+msgstr ""
+
+# 62efa77cc84f4ccfb38199c66c478fd7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:97
+msgid ""
+"A mesh shown in the 3D Viewer can prevent selection of faces and edges, "
+"just hide the mesh to avoid this. If a face, which should be selected, is"
+" hidden by other faces, consider creating a group of faces to be selected"
+" in the Geometry module. To avoid a long wait when a geometry with many "
+"faces (or edges) is displayed, the number of faces (edges) shown at a "
+"time is limited by the value of \"Sub-shapes preview chunk size\" "
+"preference (in Preferences/Mesh/General tab)."
+msgstr ""
+
+# 6373f8512fdd40abbce91d720c507b03
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:108
+msgid "If faces/edges without layers are specified, the element layers are"
+msgstr ""
+
+# 125dc9db375d4d91af01f31dc5b50bde
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:101
+msgid ""
+"not constructed on geometrical faces shared by several solids in 3D case "
+"and edges shared by several faces in 2D case. In other words, in this "
+"mode the element layers can be constructed on boundary faces and edges "
+"only, and are not constructed on internal faces and edges. There is an "
+"exception to this rule: if a hypothesis is assigned to a sub-mesh, the "
+"element layers can be constructed on boundary faces/edges of the shape of"
+" this sub-mesh, at same time possibly being internal faces/edges within "
+"the whole model."
+msgstr ""
+
+# 5ae310c718e9423c84c247965921c94e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:126
+msgid "If you use **several** hypotheses to define viscous layers on faces of"
+msgstr ""
+
+# 5eb0df6c10ab48f1b467d005508bfdbf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:117
+msgid ""
+"one solid, keep in mind the following. Each hypothesis defines a set of "
+"faces with viscous layers (even if you specify faces without layers). The"
+" sets of faces with viscous layers defined by several hypotheses should "
+"not intersect, else the module won't add an hypothesis that is "
+"incompatible with another one. Also you can't define different number of "
+"layers on adjacent faces of a solid. This logic is also valid for the 2D "
+"hypothesis."
+msgstr ""
+
+# 3754387d6a2b4dd1a575ff9c9dcd5a2c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:134
+msgid "**See also** a sample TUI script of a :ref:`tui_viscous_layers`."
+msgstr ""
+
+# bc47f9539cea4ba79712b94280f1e632
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:140
+msgid "Quadratic Mesh"
+msgstr ""
+
+# ba83c2c703aa43d583daf55bb192aeb7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:142
+msgid ""
+"Quadratic Mesh hypothesis allows to build a quadratic mesh (in which "
+"links between element nodes are not straight but curved lines due to "
+"presence of an additional mid-side node)."
+msgstr ""
+
+# d689d0d6a0dc4a91b87aab30b4c319db
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:146
+msgid ""
+"This 1D hypothesis can be taken into account by :ref:`a1d_algos_anchor` "
+"\"Wire Discretization\" and :ref:`a1d_algos_anchor` \"Composite Side "
+"Discretization\" algorithms. To create a quadratic mes assign this "
+"hypothesis at :ref:`constructing_meshes_page`."
+msgstr ""
+
+# d89df66697c9408db023f0301d6ccafd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:151
+msgid ""
+"See :ref:`adding_quadratic_elements_page` for more information about "
+"quadratic meshes."
+msgstr ""
+
+# 049d52c574fb4e049d4da534026aa905
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:157
+msgid "Quadrangle Preference"
+msgstr ""
+
+# 5bc9e3bdc1424a998a9cf23908454242
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:159
+msgid ""
+"This additional hypothesis can be used together with 2D triangulation "
+"algorithms. It allows 2D triangulation algorithms to build quadrangular "
+"meshes."
+msgstr ""
+
+# dacde0cdc252433ea47143272e826d0a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:162
+msgid ""
+"Usage of this hypothesis with \"Quadrangle: Mapping\" meshing algorithm "
+"is obsolete since introducing :ref:`hypo_quad_params_anchor` \"Quadrangle"
+" parameters\" hypothesis. Usage of this hypothesis with \"Quadrangle: "
+"Mapping\" meshing algorithm corresponds to specifying \"Quadrangle "
+"Preference\" transition type of :ref:`hypo_quad_params_anchor` "
+"\"Quadrangle parameters\" hypothesis."
+msgstr ""
+
+# 578441c1b67846f6a25815a070b31d28
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:166
+msgid ""
+"\"Quadrangle Preference\" transition type can be used only if the total "
+"quantity of segments on all sides of the face is even (divisible by 2), "
+"else \"Standard\" transition type is used."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/area.po b/doc/gui/locale/fr/LC_MESSAGES/area.po
new file mode 100644 (file)
index 0000000..d5d8081
--- /dev/null
@@ -0,0 +1,58 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# db55cbb79de0435090214d3b033d4c3b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/area.rst:6
+msgid "Area"
+msgstr ""
+
+# 8dccc331fadb42f28684db2bd0ba2125
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/area.rst:8
+msgid ""
+"**Area** mesh quality control is based on the algorithm of area "
+"calculation of mesh faces."
+msgstr ""
+
+# b62f3cc3e4d144a39abf63f3ef1c393e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/area.rst:11
+msgid "**To apply the Area quality control to your mesh:**"
+msgstr ""
+
+# 1d4a7fa016a74a89971d5200f8ef9b56
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/area.rst:13
+msgid "Display your mesh in the viewer."
+msgstr ""
+
+# 705801c6cdba479cbfb4546c4e13583b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/area.rst:14
+msgid "Choose **Controls > Face Controls > Area** or click  **\"Area\"** button."
+msgstr ""
+
+# f2936084fdc448ffb9d0af1b4325c570
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/area.rst:22
+msgid ""
+"Your mesh will be displayed in the viewer with its faces colored "
+"according to the applied mesh quality control criterion:"
+msgstr ""
+
+# 34b6e9d9faff413da4a5b4ed05bcb750
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/area.rst:29
+msgid "**See Also** a sample TUI Script of an :ref:`tui_area` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/aspect_ratio.po b/doc/gui/locale/fr/LC_MESSAGES/aspect_ratio.po
new file mode 100644 (file)
index 0000000..2c3e7a2
--- /dev/null
@@ -0,0 +1,76 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 8864e747737c4f0e99b4b6b55ea866bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:5
+msgid "Aspect Ratio"
+msgstr ""
+
+# 9fd308cc60b641d59f671994d5c260c8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:7
+msgid ""
+"The **Aspect Ratio** quality criterion for mesh elements reveals the "
+"degree of conformity of a mesh element to the regular element of its type"
+" (with all edges having the same length)."
+msgstr ""
+
+# 5d1d18e8f44d496e94a4844eb5b6f29c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:10
+msgid ""
+"The **Aspect Ratio** of a **triangle** 2D element consisting of 3 nodes "
+"is calculated by the formula:"
+msgstr ""
+
+# d3b211f181e541d99b735f09343b9345
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:15
+msgid ""
+"The **Aspect Ratio** of a **quadrangle** 2D element consisting of 4 nodes"
+" is calculated using The Verdict Geometric Quality Library available "
+"within VTK. The calculation formula is:"
+msgstr ""
+
+# e95e73027d274edfb7f807dd9b23135e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:20
+msgid "**To apply the Aspect Ratio quality criterion to your mesh:**"
+msgstr ""
+
+# 26a652d49e734e51845afecec6b3287d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:22
+msgid "Display your mesh in the viewer."
+msgstr ""
+
+# b86656d6ad1d4f75b782e9bfdea3b8ec
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:23
+msgid ""
+"Choose **Controls > Face Controls > Aspect Ratio** or click  **Aspect "
+"Ratio** button in the toolbar."
+msgstr ""
+
+# 275fe710e1a2456a9b6b4e556263e5ce
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:32
+msgid ""
+"Your mesh will be displayed in the viewer with its elements colored "
+"according to the applied mesh quality control criterion:"
+msgstr ""
+
+# aa48b40c005d41aa92e47b939df4c8e6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:38
+msgid "**See Also** a sample TUI Script of an :ref:`tui_aspect_ratio` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/aspect_ratio_3d.po b/doc/gui/locale/fr/LC_MESSAGES/aspect_ratio_3d.po
new file mode 100644 (file)
index 0000000..e401227
--- /dev/null
@@ -0,0 +1,77 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 61434f0743c3404cb4e01a3bf84d57cd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:5
+msgid "Aspect ratio 3D"
+msgstr ""
+
+# 156046dbe964465684b29538f5cf82f5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:7
+msgid ""
+"The **Aspect Ratio 3D** mesh quality criterion calculates the same "
+"parameter as the :ref:`aspect_ratio_page` criterion, but it is applied to"
+" 3D mesh elements: tetrahedrons, pentahedrons, hexahedrons, etc."
+msgstr ""
+
+# d676a6ab44454cdf921790e40a0e16e7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:9
+msgid ""
+"The **Aspect Ratio** of a **tetrahedron** 3D element defined by vertices "
+"{a,b,c,d } is calculated by the formula:"
+msgstr ""
+
+# 40ba4ecb72e3463abe86fdda2a486407
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:14
+msgid ""
+"Other element types like polyhedron, pentahedron and hexahedron use the "
+"following formula:"
+msgstr ""
+
+# adbb816c867c40f58ab1c290659b30e2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:19
+msgid "**To apply the Aspect Ratio 3D quality criterion to your mesh:**"
+msgstr ""
+
+# c1a14197106745bb92f4ea507ecdb17c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:21
+msgid "Display your mesh in the viewer."
+msgstr ""
+
+# bb851272ea6d4a09bcc1ae1f275d14ee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:22
+msgid ""
+"Choose **Controls > Volume Controls > Aspect Ratio 3D** or click "
+"**\"Aspect Ratio 3D\"** button of the toolbar."
+msgstr ""
+
+# 6daa4e9e21f5441ebd17641159f25dc1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:31
+msgid ""
+"Your mesh will be displayed in the viewer with its elements colored "
+"according to the applied mesh quality control criterion:"
+msgstr ""
+
+# 9d800e4d5fb04279952a7960f5c06ce5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:37
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_aspect_ratio_3d` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/bare_border_face.po b/doc/gui/locale/fr/LC_MESSAGES/bare_border_face.po
new file mode 100644 (file)
index 0000000..54bc35a
--- /dev/null
@@ -0,0 +1,40 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 4d2a7fab9f7f4f6b99e1e55c1d4c1afa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/bare_border_face.rst:5
+msgid "Bare border faces"
+msgstr ""
+
+# 127287f59f734105888c3f0ef2c0affe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/bare_border_face.rst:7
+msgid ""
+"This mesh quality control highlights the faces having the border not "
+"shared with other faces (free border) and missing an edge based on nodes "
+"of the free border. The faces with bare border are shown with a color "
+"different from the color of shared faces."
+msgstr ""
+
+# e82b80f6afed4c5999dc1c076ebdafc0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/bare_border_face.rst:15
+msgid ""
+"**See also** A sample TUI Script making a group of faces highlighted in "
+"the picture is :ref:`tui_bare_border_faces`."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/bare_border_volumes.po b/doc/gui/locale/fr/LC_MESSAGES/bare_border_volumes.po
new file mode 100644 (file)
index 0000000..1f74abb
--- /dev/null
@@ -0,0 +1,40 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# c54d596b4abd408ba45bb44439fd034e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/bare_border_volumes.rst:5
+msgid "Bare border volumes"
+msgstr ""
+
+# 2c5b52929f8e4ce08d892863f011f665
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/bare_border_volumes.rst:7
+msgid ""
+"This mesh quality control highlights the volumes having the border not "
+"shared with other volumes (free border) and missing a face based on nodes"
+" of the free border. The volumes with bare border are shown with a color "
+"different from the color of shared volumes."
+msgstr ""
+
+# 96579bbe562c4cd38e97920f542414f1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/bare_border_volumes.rst:15
+msgid ""
+"**See also** A sample TUI Script making a group of volumes highlighted in"
+" the picture is :ref:`tui_bare_border_volumes`."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/basic_meshing_algos.po b/doc/gui/locale/fr/LC_MESSAGES/basic_meshing_algos.po
new file mode 100644 (file)
index 0000000..2654e3a
--- /dev/null
@@ -0,0 +1,194 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# c8be38d4fe804083ad6a598447666cc6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:5
+msgid "Basic meshing algorithms"
+msgstr ""
+
+# 9824be8dcf4840d797bdba9ae3cecf81
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:7
+msgid ""
+"The MESH module contains a set of meshing algorithms, which are used for "
+"meshing entities (1D, 2D, 3D sub-shapes) composing geometrical objects."
+msgstr ""
+
+# 3b6a763ea0364cdfb1c0ef68894b2ec3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:9
+msgid ""
+"An algorithm represents either an implementation of a certain meshing "
+"technique or an interface to the whole meshing program generating "
+"elements of several dimensions."
+msgstr ""
+
+# 532ed39715344cf7acd0f68ea17ea3a7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:14
+msgid "1D Entities"
+msgstr ""
+
+# ae97621ae9b94b4b9fab931327e98d37
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:16
+msgid "For meshing of 1D entities (**edges**):"
+msgstr ""
+
+# 5d251d33c5a04aa9b83ecbb742f418a2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:17
+msgid ""
+"**Wire Discretization** meshing algorithm - splits an edge into a number "
+"of mesh segments following an 1D hypothesis."
+msgstr ""
+
+# e56a55bba65b476d9fb29dad45021df5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:18
+msgid ""
+"**Composite Side Discretization** algorithm - allows to apply a 1D "
+"hypothesis to a whole side of a geometrical face even if it is composed "
+"of several edges provided that they form C1 curve in all faces of the "
+"main shape."
+msgstr ""
+
+# d3e7fb14c1f54dcf84b9d7743ddf08c6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:19
+msgid "For meshing of 2D entities (**faces**):"
+msgstr ""
+
+# 96ff3177522e4abbac57c5166724c7db
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:22
+msgid ""
+"**Triangle: Mefisto** meshing algorithm - splits faces into triangular "
+"elements."
+msgstr ""
+
+# b8b884f144944a44bf4e6b6eebb78a3e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:23
+msgid ""
+":ref:`quad_ijk_algo_page` meshing algorithm - splits faces into "
+"quadrangular elements."
+msgstr ""
+
+# a13ad16fe701490fbbb2b492842b74ce
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:37
+msgid "For meshing of 3D entities (**solid objects**):"
+msgstr ""
+
+# 54752b6339e643ab9796cdba834e8c1c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:46
+msgid ""
+"**Hexahedron (i,j,k)** meshing algorithm - solids are split into "
+"hexahedral elements thus forming a structured 3D mesh. The algorithm "
+"requires that 2D mesh generated on a solid could be considered as a mesh "
+"of a box, i.e. there should be eight nodes shared by three quadrangles "
+"and the rest nodes should be shared by four quadrangles."
+msgstr ""
+
+# f6c22808144446399e41ec254795651e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:60
+msgid ""
+":ref:`cartesian_algo_page` meshing algorithm - solids are split into "
+"hexahedral elements forming a Cartesian grid; polyhedra and other types "
+"of elements are generated where the geometrical boundary intersects "
+"Cartesian cells."
+msgstr ""
+
+# c0f194ee2591455e82931c862e55b74b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:62
+msgid ""
+"Some 3D meshing algorithms, such as Hexahedron(i,j,k) also can generate "
+"3D meshes from 2D meshes, working without geometrical objects."
+msgstr ""
+
+# f9af97e91aee474fa52053b426338c65
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:66
+msgid "There is also a number of more specific algorithms:"
+msgstr ""
+
+# ad32f133509846b887e8976e5f34897d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:68
+msgid ""
+":ref:`prism_3d_algo_page` - for meshing prismatic 3D shapes with "
+"hexahedra and prisms."
+msgstr ""
+
+# f2548c6c528c4d198d067572c9d0e1a0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:69
+msgid ""
+":ref:`quad_from_ma_algo_page` - for quadrangle meshing of faces with "
+"sinuous borders and rings."
+msgstr ""
+
+# 69fc8fe1213d400199cbfbfe768c3209
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:70
+msgid ""
+"**Polygon per Face** meshing algorithm - generates one mesh face (either "
+"a triangle, a quadrangle or a polygon) per a geometrical face using all "
+"nodes from the face boundary."
+msgstr ""
+
+# 772e98a27e5143a1b8c2c49e9b2abd33
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:71
+msgid ":ref:`projection_algos_page` - for meshing by projection of another mesh."
+msgstr ""
+
+# 9400074a01ad41f8b32156cc5a6cb0c8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:72
+msgid ""
+":ref:`import_algos_page` - for meshing by importing elements from another"
+" mesh."
+msgstr ""
+
+# 1de827d6a65a46ccaacec4e084a8dfe6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:73
+msgid ""
+":ref:`radial_prism_algo_page` - for meshing 3D geometrical objects with "
+"cavities with hexahedra and prisms."
+msgstr ""
+
+# 45b998fde8e7426098f4e7ecb3bbd4f5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:74
+msgid ""
+":ref:`radial_quadrangle_1D2D_algo_page` - for quadrangle meshing of disks"
+" and parts of disks."
+msgstr ""
+
+# 46d628420f5249d38884a79134a14dc4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:75
+msgid ":ref:`use_existing_page` - to create a 1D or a 2D mesh in a python script."
+msgstr ""
+
+# 8772a29a46164088a85f1a3e7f6de471
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:76
+msgid ""
+":ref:`segments_around_vertex_algo_page` - for defining the length of mesh"
+" segments around certain vertices."
+msgstr ""
+
+# c72125844d894b53b9b111de5675d6c7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:79
+msgid ""
+":ref:`constructing_meshes_page` page describes in detail how to apply "
+"meshing algorithms."
+msgstr ""
+
+# dd2e5049652f42cfbca7837a60b05d0b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:81
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_defining_meshing_algos` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/borders_at_multi_connection.po b/doc/gui/locale/fr/LC_MESSAGES/borders_at_multi_connection.po
new file mode 100644 (file)
index 0000000..0879902
--- /dev/null
@@ -0,0 +1,43 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# d2f8fc9fd0cb4b8f97fac18b5b18c7f0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/borders_at_multi_connection.rst:5
+msgid "Borders at multi-connection"
+msgstr ""
+
+# f889610316e140149cb805bebd9de283
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/borders_at_multi_connection.rst:7
+msgid ""
+"This mesh quality control highlights segments according to the number of "
+"elements, faces and volumes, to which the segment belongs."
+msgstr ""
+
+# 76988886f4ab4173a8ac4f5800c0c9b9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/borders_at_multi_connection.rst:12
+msgid "In this picture the borders at multi-connection are displayed in blue."
+msgstr ""
+
+# 8d4a16bc2dc2420fa668c7b177723575
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/borders_at_multi_connection.rst:14
+msgid ""
+"**See Also** a sample TUI Script of a "
+":ref:`tui_borders_at_multiconnection` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/borders_at_multi_connection_2d.po b/doc/gui/locale/fr/LC_MESSAGES/borders_at_multi_connection_2d.po
new file mode 100644 (file)
index 0000000..88b74f9
--- /dev/null
@@ -0,0 +1,38 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 77167e3eb2d74d708cb40b566c7b6a00
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/borders_at_multi_connection_2d.rst:5
+msgid "Borders at multi-connection 2D"
+msgstr ""
+
+# 3d9688fbe2454312936f96dbc032904c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/borders_at_multi_connection_2d.rst:7
+msgid ""
+"This mesh quality control highlights borders of faces (links between "
+"nodes) according to the number of faces, to which the link belongs."
+msgstr ""
+
+# e6bded6db48249c99027c3783d9f727b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/borders_at_multi_connection_2d.rst:12
+msgid ""
+"**See Also** a sample TUI Script of a "
+":ref:`tui_borders_at_multiconnection_2d`  operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/building_compounds.po b/doc/gui/locale/fr/LC_MESSAGES/building_compounds.po
new file mode 100644 (file)
index 0000000..c4aad8f
--- /dev/null
@@ -0,0 +1,117 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 67e4b2dcef5f44219170b804924a32d4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:5
+msgid "Building Compound Meshes"
+msgstr ""
+
+# 343ff5ee2e404c4cacb3701d7e63c355
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:7
+msgid ""
+"Compound Mesh is a combination of several meshes. All elements and groups"
+" present in input meshes are present in the compound mesh. However, it "
+"does not use geometry or hypotheses of the initial meshes. The links "
+"between the input meshes and the compound mesh are not supported, "
+"consequently the modification of an input mesh does not lead to the "
+"update of the compound mesh."
+msgstr ""
+
+# 218176393db0429b83f003c7f27abeb2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:10
+msgid "**To Build a compound mesh:**"
+msgstr ""
+
+# 8ae6eecfc11b4cc4bb362110cec348a2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:12
+msgid ""
+"From the **Mesh** menu select **Build Compound** or click **\"Build "
+"Compound Mesh\"** button in the toolbar."
+msgstr ""
+
+# 48ee70b54e184ebfbd5038e12b55e040
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:17
+msgid "**\"Build Compound Mesh\" button**"
+msgstr ""
+
+# f1035bf666d34447a81f354e3abdde43
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:20
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# 7b2ce5d693c04a7d976032fe2a719fcf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:25
+msgid "**Name** - allows selecting the name of the resulting **Compound** mesh."
+msgstr ""
+
+# 45bb597168cd4515936ab86be4ab002d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:26
+msgid ""
+"**Meshes, sub-meshes, groups** - allows selecting the meshes, sub-meshes "
+"and groups to be concatenated. They can be chosen in the Object Browser "
+"while holding **Ctrl** button."
+msgstr ""
+
+# ada9e86048ff49ec9518d83ed23bcdae
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:27
+msgid ""
+"**Processing identical groups** - allows selecting the method of "
+"processing the namesake groups existing in the input meshes. They can be "
+"either"
+msgstr ""
+
+# 5ddde549badf4897bf5c070e00601711
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:29
+msgid ""
+"**United** - all elements of **Group1** of **Mesh_1** and **Group1** of "
+"**Mesh_2** become the elements of **Group1** of the **Compound_Mesh**, or"
+msgstr ""
+
+# cd183fb362f54a8d89255ee5a53fe390
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:30
+msgid ""
+"**Renamed** - **Group1** of **Mesh_1** becomes **Group1_1** and "
+"**Group1** of **Mesh_2** becomes **Group1_2**."
+msgstr ""
+
+# ac06126abbd94f50acff31e923c5e1c5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:32
+msgid "See :ref:`grouping_elements_page` for more information about groups."
+msgstr ""
+
+# 253ffe6ee5f044ff9859469e41b73457
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:33
+msgid ""
+"**Create groups from input objects** check-box permits to automatically "
+"create groups corresponding to every initial mesh."
+msgstr ""
+
+# 642a6a491eb54a51a35daf71ec5f8ad4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:41
+msgid ""
+"You can choose to additionally :ref:`merging_nodes_page`, "
+":ref:`merging_elements_page` in the compound mesh, in which case it is "
+"possible to define the **Tolerance** for this operation."
+msgstr ""
+
+# 188a4077b8a34a7c9b5f004b744f31b0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:49
+msgid "**See Also** a sample :ref:`tui_building_compound`."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/cartesian_algo.po b/doc/gui/locale/fr/LC_MESSAGES/cartesian_algo.po
new file mode 100644 (file)
index 0000000..a0b6377
--- /dev/null
@@ -0,0 +1,223 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# a8e930acb63f44f4b997deb515406300
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:5
+msgid "Body Fitting 3D meshing algorithm"
+msgstr ""
+
+# 9910dbcae2b54873a9fbe1949092c565
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:7
+msgid ""
+"Body Fitting algorithm generates hexahedrons of a Cartesian grid in the "
+"internal part of geometry and polyhedrons and other types of elements at "
+"the intersection of Cartesian cells with the geometrical boundary."
+msgstr ""
+
+# d7359f93f6a548bdad23de6ae3d468cf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:18
+msgid "The meshing algorithm is as follows."
+msgstr ""
+
+# 40dcc8dc839149ccae3463069ccedc40
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:20
+msgid ""
+"Lines of a Cartesian structured grid defined by "
+":ref:`cartesian_hyp_anchor` hypothesis are intersected with the geometry "
+"boundary, thus nodes lying on the boundary are found. This step also "
+"allows finding out for each node of the Cartesian grid if it is inside or"
+" outside the geometry."
+msgstr ""
+
+# 5086ae5fb11d492588240d7cb7c2ab6e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:21
+msgid ""
+"For each cell of the grid, check how many of its nodes are outside of the"
+" geometry boundary. Depending on a result of this check"
+msgstr ""
+
+# 8f9abd85d3314fbc960850ffc427d32c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:22
+msgid "skip a cell, if all its nodes are outside"
+msgstr ""
+
+# b4a9ee73831a4b78b1beed76ea20ebc3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:23
+msgid "skip a cell, if it is too small according to **Size Threshold** parameter"
+msgstr ""
+
+# a6636e49ee944dc49d1443efe959e6dc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:24
+msgid "add a hexahedron in the mesh, if all nodes are inside"
+msgstr ""
+
+# a342af446281426e939081be935cc062
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:25
+msgid ""
+"add a polyhedron or another cell type in the mesh, if some nodes are "
+"inside and some outside."
+msgstr ""
+
+# 1b709cb0a50c4116b737a084946641e8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:27
+msgid ""
+"To apply this algorithm when you define your mesh, select **Body "
+"Fitting** in the list of 3D algorithms and add **Body Fitting  "
+"Parameters** hypothesis. The following dialog will appear:"
+msgstr ""
+
+# 43f05e2d944c45a8ba6e9a588efd7a72
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:32
+msgid "Body Fitting Parameters hypothesis"
+msgstr ""
+
+# 2b52cecbc75c4291b7c67f8a35b75aa8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:40
+msgid "This dialog allows to define"
+msgstr ""
+
+# d87ae3b140c4486b99566c643801769f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:42
+msgid "**Name** of the algorithm."
+msgstr ""
+
+# ef240d03b53c43c786f69034ea33eff6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:43
+msgid ""
+"Minimal size of a cell truncated by the geometry boundary. If the size of"
+" a truncated grid cell is **Threshold** times less than a initial cell "
+"size, then a mesh element is not created."
+msgstr ""
+
+# bd47ac9350824864aa06382db8ee86bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:44
+msgid ""
+"**Implement Edges** check-box activates incorporation of geometrical "
+"edges in the mesh."
+msgstr ""
+
+# 5baff056db5e4d83a014f9b7ee4870d4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:52
+msgid ""
+"**Definition mode** allows choosing how Cartesian structured grid is "
+"defined. Location of nodes along each grid axis is defined individually:"
+msgstr ""
+
+# 04af1c69153943fc94b0eb1559764663
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:55
+msgid ""
+"You can specify the **Coordinates** of grid nodes. **Insert** button "
+"inserts a node at **Step** distance (negative or positive) from the "
+"selected node. **Delete** button removes the selected node. Double click "
+"on a coordinate in the list enables its edition."
+msgstr ""
+
+# 498e3aacb6d049dd9cbf56e2d276d388
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:56
+msgid ""
+"that node coordinates are measured along directions of axes that can "
+"differ from the directions of the Global Coordinate System."
+msgstr ""
+
+# 8e8eb1fa61b84f73b31fbd1309e136bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:57
+msgid ""
+"You can define the **Spacing** of a grid as an algebraic formula **f(t)**"
+" where *t* is a position along a grid axis normalized at [0.0,1.0]. "
+"**f(t)** must be non-negative at 0. <= *t* <= 1. The whole extent of "
+"geometry can be divided into ranges with their own spacing formulas to "
+"apply; a t varies between 0.0 and 1.0 within each **Range**. **Insert** "
+"button divides a selected range into two. **Delete** button adds the "
+"selected sub-range to the previous one. Double click on a range in the "
+"list enables edition of its right boundary. Double click on a function in"
+" the list enables its edition."
+msgstr ""
+
+# 77758a7e751a4659a9b8332760e46d53
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:59
+msgid ""
+"**Fixed Point** group allows defining an exact location of a grid node in"
+" the direction defined by spacing. The following cases are possible:"
+msgstr ""
+
+# 0d7a5b6700b5418b8ecff106ab703ff9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:61
+msgid ""
+"If all three directions are defined by spacing, there will be a mesh node"
+" at the **Fixed Point**."
+msgstr ""
+
+# 780deb00eb6543fe8c3cd80c09cf9f9f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:62
+msgid ""
+"If two directions are defined by spacing, there will be at least a link "
+"between mesh nodes passing through the **Fixed Point**."
+msgstr ""
+
+# 9f89cbedc11c4b808087371c5843b502
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:63
+msgid ""
+"If only one direction is defined by spacing, there will be at least an "
+"element facet passing through the **Fixed Point**."
+msgstr ""
+
+# 7c3cfc7fa79448998f6ad6e1c6fcb1a2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:64
+msgid "If no directions are defined by spacing, **Fixed Point** is disabled."
+msgstr ""
+
+# 1c1175fe90b24bd5be0f5c3a254698e6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:66
+msgid "**Directions of Axes** group allows setting the directions of grid axes."
+msgstr ""
+
+# 45a3134007e2474085d37c880226b945
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:68
+msgid ""
+"If **Orthogonal Axes** check-box is activated the axes remain orthogonal "
+"during their modification."
+msgstr ""
+
+# 5e62f1b6a9da4933b9311638965b67ab
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:69
+msgid ""
+"Selection buttons enable snapping corresponding axes to direction of a "
+"geometrical edge selected in the Object Browser. Edge direction is "
+"defined by coordinates of its end points."
+msgstr ""
+
+# 137f0b6c5afa4c35bb2460e208d31705
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:70
+msgid ""
+"**Optimal Axes** button runs an algorithm that tries to set the axes to "
+"maximize the number of generated hexahedra."
+msgstr ""
+
+# 3d3c72fee116466bbe4150c2ed3bbe66
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:71
+msgid ""
+"**Reset** button returns the axes in a default position parallel to the "
+"axes of the Global Coordinate System."
+msgstr ""
+
+# bca1ceb497d2487ab725b4d1cb3a4ec3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:76
+msgid "**See Also** a sample TUI Script of a :ref:`tui_cartesian_algo`."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/changing_orientation_of_elements.po b/doc/gui/locale/fr/LC_MESSAGES/changing_orientation_of_elements.po
new file mode 100644 (file)
index 0000000..5105c8a
--- /dev/null
@@ -0,0 +1,96 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# fe2d10c3ec6b438db0264d47280f4894
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:5
+msgid "Changing orientation of elements"
+msgstr ""
+
+# 4d5617c88bcf43cb8667c686d3bb0649
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:7
+msgid "Orientation of an element is changed by changing the order of its nodes."
+msgstr ""
+
+# 5bd693b83b37438b8a853857526df8a6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:9
+msgid "**To change orientation of elements:**"
+msgstr ""
+
+# 0989cbc9c32b4632b859c1a2b284426f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:11
+msgid ""
+"Select a mesh (and display it in the 3D Viewer if you are going to pick "
+"elements by mouse)."
+msgstr ""
+
+# f516165c8bcb42fcaee35e3aa6f2b5bc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:12
+msgid ""
+"In the **Modification** menu select the **Orientation** item or click "
+"**Orientation** button in the toolbar."
+msgstr ""
+
+# 1e49fcdcf3444562aa6a13fa03a496c5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:20
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# 03b85e641f264b93ba8db4173acaf1bd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:25
+msgid "Select type of elements to reorient: **Face** or **Volume**."
+msgstr ""
+
+# e65a101a42394045b9c9e79e71df9187
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:26
+msgid ""
+"**The main list** shall contain the elements which will be reoriented. "
+"You can click on an element in the 3D viewer and it will be highlighted. "
+"After that click the **Add** button and the ID of this element will be "
+"added to the list. To remove a selected element or elements from the list"
+" click the **Remove** button. The **Sort** button allows to sort the list"
+" of elements IDs. The **Set filter** button allows to apply a definite "
+":ref:`filtering_elements` \"filter\" to the selection of elements."
+msgstr ""
+
+# d715ca1c7caa411ca50d180fa6c0ab80
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:27
+msgid ""
+"**Apply to all** radio button allows to modify the orientation of all "
+"elements of the selected mesh."
+msgstr ""
+
+# 7d9a89decc7f41699a18cfe7d0d75f13
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:28
+msgid ""
+"*Select from** set of fields allows to choose a sub-mesh or an existing "
+"group whose elements can be added to the list."
+msgstr ""
+
+# c96eeaddc54c4a48b260b5f7e265fa3a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:30
+msgid ""
+"Click the **Apply** or **Apply and Close** button to confirm the "
+"operation."
+msgstr ""
+
+# 5fcf6f8346c946a49e70a860cd81931f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:32
+msgid "**See Also** a sample TUI Script of a :ref:`tui_orientation` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/clipping.po b/doc/gui/locale/fr/LC_MESSAGES/clipping.po
new file mode 100644 (file)
index 0000000..a2e56f8
--- /dev/null
@@ -0,0 +1,155 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# ceb118d3f4cb467c9ede1c28cacfc0a7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:5
+msgid "Clipping"
+msgstr ""
+
+# e19904b1f4e545ccb7382a3fb8372d4a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:7
+msgid ""
+"**Clipping** allows creating cross-section views (clipping planes) of "
+"your mesh. It is available as a sub-item in the context menu of an active"
+" mesh. To create a clipping plane, click on the **New** button in the "
+"dialog and choose how it is  defined: by **Absolute** or **Relative** "
+"coordinates. **Absolute Coordinates**"
+msgstr ""
+
+# 0d52999f90594fedbee68d90b3aab4af
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:15
+msgid ""
+"**Base point** - allows defining the coordinates of the base point for "
+"the clipping plane."
+msgstr ""
+
+# 3ba5b5e4f43d4f4e954bc31d09d62031
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:16
+msgid "**Reset** - returns the base point to coordinate origin."
+msgstr ""
+
+# 2e7752ba55ce4f6885e05619a6991789
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:17
+msgid "**Direction** - allows defining the orientation of the clipping plane."
+msgstr ""
+
+# 28e905d68bb341a68b0beae8da9c86f0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:18
+msgid ""
+"**Invert** - allows selecting, which part of the object will be removed "
+"and which will remain after clipping."
+msgstr ""
+
+# 1734f629e76a45d7b278ef60498609bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:20
+msgid "**Relative mode**"
+msgstr ""
+
+# 9f5a256c38f14fde80e06168db416a39
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:25
+msgid "**Orientation** ( ||X-Y, ||X-Z or ||Y-Z)."
+msgstr ""
+
+# 933953854d944d4097ac9485693e044e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:26
+msgid ""
+"**Distance** between the opposite extremities of the boundary box of "
+"selected objects, if it is set to 0.5 the boundary box is split in two "
+"halves."
+msgstr ""
+
+# 54f7cd8ae92c486e8567a4d21760e2a9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:27
+msgid ""
+"**Rotation** (in angle degrees) **around X** (Y to Z) and **around Y** (X"
+" to Z) (depending on the chosen Orientation)"
+msgstr ""
+
+# d19ba527c11f4ffa8a1acb71d26f97bd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:32
+msgid "\"The preview plane and the cut object\""
+msgstr ""
+
+# 77794a5cf0784f70859fcb0327a488d5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:34
+msgid "The other parameters are available in both modes :"
+msgstr ""
+
+# 957ea51506dc40b0adc032c5fd0096f5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:36
+msgid ""
+"**OpenGL clipping** check-box allows choosing OpenGL native clipping, "
+"which clips the whole presentation. If it is unchecked, the clipping is "
+"done on the dataset i.e. only the visibility of separate mesh cells is "
+"changed (see the examples)."
+msgstr ""
+
+# 639fff4f76f24519854f7e90eff8338b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:37
+msgid ""
+"The List contains **Meshes, sub-meshes and groups** to which the cross-"
+"section will be applied."
+msgstr ""
+
+# f02378bb1d49463dbb09a0b1f9a24a74
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:38
+msgid ""
+"**Select all** check-box allows to selecting and deselecting all "
+"available objects at once."
+msgstr ""
+
+# cf9db5bce38f4659bd092817cf5a32b4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:39
+msgid "**Show preview** check-box shows the clipping plane in the **3D Viewer**."
+msgstr ""
+
+# 3f8e80ea656d464c9daa6f17aa70d7b6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:40
+msgid ""
+"**Auto Apply** check-box shows button is on, you can preview the cross-"
+"section in the **3D Viewer**."
+msgstr ""
+
+# fe51b17a0ff6427980d17a9e399e40b4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:42
+msgid ""
+"It is also possible to interact  with the clipping plane directly in 3D "
+"view using the mouse."
+msgstr ""
+
+# 43e1d59fcd374017a1faddb5ea481ea9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:44
+msgid "To get a new object from **Clipping**, click **Apply**."
+msgstr ""
+
+# 0ca0d76ecbf94a36a2b63b9cadb7470b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:46
+msgid "**Examples:**"
+msgstr ""
+
+# 2b9286e5d01f46be8021b2a959fb9650
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:51
+msgid "\"The cross-section using dataset\""
+msgstr ""
+
+# 5521df28f71943719c6f67617bf9678e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:56
+msgid "\"The OpenGL cross-section\""
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/colors_size.po b/doc/gui/locale/fr/LC_MESSAGES/colors_size.po
new file mode 100644 (file)
index 0000000..2e863e0
--- /dev/null
@@ -0,0 +1,189 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 25d2f26ace5b4b829c8a87ada850ddf3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:5
+msgid "Properties"
+msgstr ""
+
+# 2997394fe84a44f88c477482d902c875
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:10
+msgid ""
+"Using this dialog you can customize different properties of the mesh "
+"visualization parameters."
+msgstr ""
+
+# 31ec38d757fc4badb8d42324193fcab7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:12
+msgid ""
+"The GUI elements in the \"Properties\" dialog box are grouped according "
+"to the entity types of mesh data. If some data entities are not present "
+"in the mesh object, the corresponding GUI elements are not shown."
+msgstr ""
+
+# 655c3a41d3fa45b2a7c4b5a535850a84
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:15
+msgid "**Nodes**:"
+msgstr ""
+
+# fcc0e7b140ea49df90de65f407fe638c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:15
+msgid "**Color** - color of nodes."
+msgstr ""
+
+# 2dc38fccf0464b21a18d71a9b469aea9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:16
+msgid ""
+"**Type** and **Scale** - these options allow changing the nodes "
+"representation (see :ref:point_marker_page \"Point Marker\" page for more"
+" details)."
+msgstr ""
+
+# faae687f9e164f03a8714f74be9ff516
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:18
+msgid "**Edges / wireframe**:"
+msgstr ""
+
+# f60f348a1e044ff6881398709e6ddf52
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:18
+msgid "**Color** - color of element borders in wireframe mode."
+msgstr ""
+
+# 6adaf5a525794040a264748695570501
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:19
+msgid ""
+"**Width** - width of lines (edges and borders of elements in wireframe "
+"mode)."
+msgstr ""
+
+# e48a7e183557491a9e3fcad995f0b6f8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:21
+msgid "**Faces**:"
+msgstr ""
+
+# ef55986094b643f38e984ff14d9a0ef2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:21
+msgid "**Front** - surface color of face elements (seen in shading mode)."
+msgstr ""
+
+# 99746ad5f3b2461aaf22ea0d1f88e4fe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:22
+msgid ""
+"**Back** - backside surface color of face elements. Use the slider to "
+"select this color generated on the base of the **Face** color by changing"
+" its brightness and saturation."
+msgstr ""
+
+# 996adee3928449c4844f05c8679d5c10
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:24
+msgid "**Volumes**:"
+msgstr ""
+
+# 8b8a404f6c3d49758ded898c5ebf4b28
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:24
+msgid ""
+"**Normal** - surface color of normal volume elements (seen in shading "
+"mode)."
+msgstr ""
+
+# 1b4f147aba284490a763af666ee1cf20
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:25
+msgid ""
+"**Reversed** - surface color of volume elements. Use the slider to select"
+" this color generated on the base of the **Normal** color by changing its"
+" brightness and saturation."
+msgstr ""
+
+# 1539339650874bd3960985a85822a812
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:27
+msgid "**Outlines**:"
+msgstr ""
+
+# 68b3ee1f2ef74b1fbf8101a25f1ea553
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:27
+msgid "**Color** - color of element borders in shading mode."
+msgstr ""
+
+# 760937016686488880f8c72c2494a896
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:28
+msgid "**Width** - width of outlines (borders of elements in shading mode)."
+msgstr ""
+
+# dd46341914784677b8cb0951668ce54d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:30
+msgid "**0D elements**:"
+msgstr ""
+
+# 524e211e12034fbca561d87318b9e099
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:30
+msgid "**Color** - color of 0D elements."
+msgstr ""
+
+# dcdae6f65e7e48de8be8b79cb374855b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:31
+msgid "**Size** - size of 0D elements."
+msgstr ""
+
+# db588562142a4bcba130e8f6ff2794ba
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:34
+msgid "**Balls**:"
+msgstr ""
+
+# 0bcfd9f2bf4a404598722f088e30324b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:33
+msgid "**Color** - color of discrete ball elements."
+msgstr ""
+
+# ff10af519b734385b6d2f8f04884b912
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:34
+msgid "**Size** - size of discrete ball elements."
+msgstr ""
+
+# edbd1c084f46466798861d0b55f02875
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:35
+msgid "**Scale** - scale factor of discrete ball elements."
+msgstr ""
+
+# 4fa0f7d6cb234b54b436bfdc82b471ac
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:38
+msgid "**Orientation vectors**:"
+msgstr ""
+
+# 3b45de37801e459d8f6de945985a070d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:37
+msgid "**Color** - color of orientation vectors."
+msgstr ""
+
+# c2e38c98b8aa4b2a9674bdf474a61ae3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:38
+msgid "**Scale** - size of orientation vectors."
+msgstr ""
+
+# 3faad5944dc640bbaca6ccd2a1db8748
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:39
+msgid "**3D vectors** - allows to choose between 2D planar and 3D vectors."
+msgstr ""
+
+# e5487d6283fc470dba1d0a129808aa9e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:40
+msgid ""
+"**Shrink coef.** - relative space of elements compared to gaps between "
+"them in shrink mode."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/connectivity.po b/doc/gui/locale/fr/LC_MESSAGES/connectivity.po
new file mode 100644 (file)
index 0000000..d5bc250
--- /dev/null
@@ -0,0 +1,117 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-03-30 11:57+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 544556706e884932836455c9bf692b72
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:5
+msgid "Nodal connectivity of elements"
+msgstr ""
+
+# dc5442a27c934a238e10c75791d0cdc2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:7
+msgid "The following images show order of nodes in correctly defined elements."
+msgstr ""
+
+# f1759ea9888d42ebad2675a17a089a4e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:11
+msgid "Edge (segment): linear and quadratic"
+msgstr ""
+
+# 9d98eb840a9e4d36b2191cc13a42daa1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:15
+msgid "Triangle: linear, quadratic and bi-quadratic"
+msgstr ""
+
+# 800aafe01e504ac4a445ed1daac9d5b4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:19
+msgid "Quadrangle: linear, quadratic and bi-quadratic"
+msgstr ""
+
+# e6fc703e57404d77ab85798ac02894be
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:23
+msgid "Polygon: linear and quadratic"
+msgstr ""
+
+# 81e9425d74ae48d6a3ebc41b6cd7ffc4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:27
+msgid "Tetrahedron: linear and quadratic"
+msgstr ""
+
+# b9a391223bd140ea93750191c3571353
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:31
+msgid "Hexahedron: linear, quadratic and tri-quadratic"
+msgstr ""
+
+# 52e941ab57c84d189bbfe581b827deb6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:35
+msgid "Pentahedron: linear and quadratic"
+msgstr ""
+
+# dee6d00802fd40d3aff3809035f795d1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:39
+msgid "Pyramid: linear and quadratic"
+msgstr ""
+
+# d68ca0fe106744ccbf4558512d170341
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:43
+msgid "Hexagonal prism"
+msgstr ""
+
+# 8cfa36e50a2f4d2c9a5a7c127610ff66
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:64
+msgid "Polyhedron is defined by"
+msgstr ""
+
+# 2f02aa9e96ec42c4a8d6bd7807c29b45
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:47
+msgid "a sequence of nodes defining all facets"
+msgstr ""
+
+# 8217a88659df44468bd5a3704f8d0593
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:48
+msgid "a sequence of number of nodes per facet"
+msgstr ""
+
+# 4fc8f1edb7ef425bb5ffe7aa3a421d7d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:50
+msgid ""
+"**Nodes**: Node1_of_Facet1, Node2_of_Facet1, ..., NodeN_of_Facet1, "
+"Node1_of_Facet2, Node2_of_Facet2, ..., NodeN_of_Facet2, Node1_of_FacetM, "
+"Node2_of_FacetM, ..., NodeN_of_FacetM"
+msgstr ""
+
+# e8077aac24b74221871679bd284551d2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:55
+msgid ""
+"**Quantity** of nodes per facet: NbNodes_in_Facet1, NbNodes_in_Facet2, "
+"..., NbNodes_in_FacetM"
+msgstr ""
+
+# 0710dc23cbe244a7bc6e9d9c13477ef9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:58
+msgid ""
+"For example the polyhedron shown in the image below is defined by nodes ["
+" 1,2,3, 1,4,5,2, 2,5,6,3, 3,6,4,1, 4,7,9,5, 5,9,8,6, 6,8,7,4, 7,8,9 ] and"
+" quantities [ 3, 4, 4, 4, 4, 4, 4, 3 ]"
+msgstr ""
+
+# d98803aeeded42439f1e54fe5a83db64
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:65
+msgid "Order of nodes of a facet must assure outward direction of its normal."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/constructing_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/constructing_meshes.po
new file mode 100644 (file)
index 0000000..6664de1
--- /dev/null
@@ -0,0 +1,819 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 35a6bce1095b465fabb44dde0652f678
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:5
+msgid "Constructing meshes"
+msgstr ""
+
+# 6799ee6badd440f88c4d2609a7a06b25
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:7
+msgid ""
+"To create a mesh on geometry, it is necessary to create a mesh object by "
+"choosing"
+msgstr ""
+
+# 8f06bf03ed5e458782b05086b05406fe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:9
+msgid "a geometrical shape produced in the Geometry module (*main shape*);"
+msgstr ""
+
+# 27fc703367ec47c9b3543de9a457d851
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:12
+msgid "*meshing parameters*, including"
+msgstr ""
+
+# 117c209f24f3493b990791363a4ff7a0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:11
+msgid ":ref:`basic_meshing_algos_page` and"
+msgstr ""
+
+# 9aefbc3f841d49908a17917248299c9d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:12
+msgid ""
+":ref:`about_hypo_page` specifying constraints to be taken into account by"
+" the chosen meshing algorithms."
+msgstr ""
+
+# 66d9db4d76a2413fb9252948963441c7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:14
+msgid ""
+"Then you can launch mesh generation by invoking :ref:`compute_anchor` "
+"command. The generated mesh will be automatically shown in the Viewer. "
+"You can switch off automatic visualization or limit mesh size until which"
+" it is automatically shown in :ref:`mesh_preferences_page` (**Automatic "
+"update** entry)."
+msgstr ""
+
+# 031fef73322d4036bec803d06c213857
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:20
+msgid ""
+"Sometimes *hypotheses* term is used to refer to both algorithms and "
+"hypotheses."
+msgstr ""
+
+# 5b1b5a16624b43aaabf130e214850262
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:22
+msgid ""
+"Mesh generation on the geometry is performed in the bottom-up flow: nodes"
+" on vertices are created first, then edges are divided into segments "
+"using nodes on vertices; the nodes of segments are then used to mesh "
+"faces; then the nodes of faces are used to mesh solids. This "
+"automatically assures the conformity of the mesh."
+msgstr ""
+
+# 01a7a1179d7242489aade2846022bb0c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:28
+msgid ""
+"It is required to choose a meshing algorithm for every dimension of sub-"
+"shapes up to the highest dimension to be generated. Note that some "
+"algorithms generate elements of several dimensions, and others of only "
+"one. It is not necessary to define meshing parameters for all dimensions "
+"at once; you can start from 1D meshing parameters only, compute the 1D "
+"mesh, then define 2D meshing parameters and compute the 2D mesh (note "
+"that 1D mesh will not be re-computed)."
+msgstr ""
+
+# db1f1b20a38c4773b327e70c23e7fa87
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:37
+msgid ""
+"An algorithm of a certain dimension chosen at mesh creation is applied to"
+" discretize every sub-shape of this dimension. It is possible to specify "
+"a different algorithm or hypothesis to be applied to one or a group of "
+"sub-shapes by creating a :ref:`constructing_submeshes_page`. You can "
+"specify no algorithms at all at mesh object creation and specify the "
+"meshing parameters on sub-meshes only; then only the sub-shapes, for "
+"which an algorithm and a hypothesis (if any) have been defined will be "
+"discretized."
+msgstr ""
+
+# 1cc36153af4b41c2b2e40dcdf79074fc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:46
+msgid ""
+"Construction of a mesh on a geometry includes at least two "
+"(:ref:`create_mesh_anchor` and :ref:`compute_anchor`) of the following "
+"steps:"
+msgstr ""
+
+# 3a3ed77dbdc24aea8491fcdf18e36e4f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:48
+msgid ""
+":ref:`create_mesh_anchor`, where you can specify meshing parameters to "
+"apply to all sub-shapes of the main shape."
+msgstr ""
+
+# 17d14027f31f4503bafb86c3addeba89
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:49
+msgid ""
+":ref:`constructing_submeshes_page`, (optional) where you can specify "
+"meshing parameters to apply to the selected sub-shapes."
+msgstr ""
+
+# 66722c0909e847459028d210bd99ac98
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:50
+msgid ""
+":ref:`evaluate_anchor` (optional) can be used to know an approximate "
+"number of elements before their actual generation."
+msgstr ""
+
+# 2297f50a14754737bb784d905947b5a6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:51
+msgid ""
+":ref:`preview_anchor` (optional) can be used to generate mesh of only "
+"lower dimension(s) in order to visually estimate it before full mesh "
+"generation, which can be much longer."
+msgstr ""
+
+# 3b4674e6440e48a183b41e5feb5b3881
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:52
+msgid ""
+":ref:`submesh_order_anchor` (optional) can be useful if there are "
+"concurrent sub-meshes defined."
+msgstr ""
+
+# 1fa25cbc35584fd886fea4763c4c72f2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:53
+msgid ""
+":ref:`compute_anchor` uses defined meshing parameters to generate mesh "
+"elements."
+msgstr ""
+
+# 45e6866d043e48a8930fe2ace94ed287
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:54
+msgid ""
+":ref:`edit_anchor` (optional) can be used to :ref:`modifying_meshes_page`"
+" the mesh of a lower dimension before :ref:`compute_anchor` elements of "
+"an upper dimension."
+msgstr ""
+
+# 520242a7013c4dd78c6e7772ca553008
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:60
+msgid "Creation of a mesh object"
+msgstr ""
+
+# 9ac62efda06c462199e0bb84bad38740
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:62
+msgid "**To construct a mesh:**"
+msgstr ""
+
+# 7bb8b082000840e3ae1bbf00611dcf19
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:64
+msgid "Select a geometrical object for meshing."
+msgstr ""
+
+# 884454ebff044f98b7f6a815d0ef5ad4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:65
+msgid ""
+"In the **Mesh** menu select **Create Mesh** or click **\"Create Mesh\"** "
+"button in the toolbar."
+msgstr ""
+
+# dfd67b2436424371903f4028dc636ecd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:73
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# 3215a25a328e43cea0c717ed5af5a1eb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:78
+msgid ""
+"To filter off irrelevant meshing algorithms, you can select **Mesh Type**"
+" in the corresponding list from **Any, Hexahedral, Tetrahedral, "
+"Triangular** and **Quadrilateral** (there can be less items for the "
+"geometry of lower dimensions). Selection of a mesh type hides all meshing"
+" algorithms that cannot generate elements of this type."
+msgstr ""
+
+# 91421ed52fd34f79b3eb4949a699a357
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:80
+msgid ""
+"Apply :ref:`basic_meshing_algos_page` and :ref:`about_hypo_page` which "
+"will be used to compute this mesh."
+msgstr ""
+
+# b04311b3ce03402da2227e8a2aeb22cb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:82
+msgid ""
+"\"Create mesh\" dialog box contains several tab pages titled **3D**, "
+"**2D**, **1D** and **0D**. The title of each page reflects the dimension "
+"of the sub-shapes the algorithms listed on this page affect and the "
+"maximal dimension of elements the algorithms generate. For example, "
+"**3D** page lists the algorithms that affect 3D sub-shapes (solids) and "
+"generate 3D mesh elements (tetrahedra, hexahedra etc.)"
+msgstr ""
+
+# a1cd5bdf6585476aa808f1365c919d1b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:84
+msgid ""
+"As soon as you have selected an algorithm, you can create a hypothesis "
+"(or select an already created one). A set of accessible hypotheses "
+"includes only the hypotheses that can be used by the selected algorithm."
+msgstr ""
+
+# b7da1d8d2df0427b8e8a42a3ac4cb43b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:87
+msgid ""
+"Some page(s) can be disabled if the geometrical object does not include "
+"shapes (sub-shapes) of the corresponding dimension(s). For example, if "
+"the input object is a geometrical face, **3D** page is disabled."
+msgstr ""
+
+# f8d6c54b422d437385cdf39ea7ff66b7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:88
+msgid ""
+"Some algorithms affect the geometry of several dimensions, i.e. 1D+2D or "
+"1D+2D+3D. If such an algorithm is selected, the dialog pages related to "
+"the corresponding lower dimensions are disabled."
+msgstr ""
+
+# bae8798576284526a61201c4b3bc4852
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:89
+msgid ""
+"**0D** page refers to 0D geometry (vertices) rather than to 0D elements. "
+"Mesh module does not provide algorithms that produce 0D elements. "
+"Currently **0D** page provides only one algorithm \"Segments around "
+"vertex\" that allows specifying the required size of mesh edges about the"
+" selected vertex (or vertices)."
+msgstr ""
+
+# 6d786dbce4a34dd8a8f4c55d29447059
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:91
+msgid "For example, you need to mesh a 3D object."
+msgstr ""
+
+# acc400d18f4d4e3e8233d3ba4c7ee40c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:98
+msgid ""
+"First, you can change a default name of your mesh in the **Name** box. "
+"Then check that the selected geometrical object indicated in **Geometry**"
+" field, is what you wish to mesh; if not, select the correct object in "
+"the Object Browser. Click \"Select\" button near **Geometry** field if "
+"the name of the object has not yet appeared in **Geometry** field."
+msgstr ""
+
+# b3d6b94bf1854d908d55066eff4793c0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:105
+msgid ""
+"Now you can define 3D Algorithm and 3D Hypotheses, which will be applied "
+"to discretize the solids of your geometrical object using 3D elements. "
+"Click the **\"Add Hypothesis\"** button to create  and add a hypothesis."
+msgstr ""
+
+# 43aad14857134ff694b57418c2b9c553
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:107
+msgid "Click the **\"Plus\"** button to enable adding more additional hypotheses."
+msgstr ""
+
+# 81bfbd32aedb4c9fa4f4866c44941d47
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:114
+msgid ""
+"Click the **\"Edit Hypothesis\"** button to change the values for the "
+"current hypothesis."
+msgstr ""
+
+# 3cf1d63b1511452a937f0afe68fc74cd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:116
+msgid ""
+"Most 2D and 3D algorithms can work without hypotheses using default "
+"meshing parameters. Some algorithms do not require any hypotheses. After "
+"selection of an algorithm \"Hypothesis\" field of the dialog can contain:"
+msgstr ""
+
+# e64c32c9aa484aad89b33cedd41b535e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:118
+msgid "**\\<Default\\>** if the algorithm can work using default parameters."
+msgstr ""
+
+# 837bde06cd3b4edda687a8ee03988eff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:119
+msgid ""
+"**\\<None\\>** if the algorithm requires a hypothesis defining its "
+"parameters."
+msgstr ""
+
+# 167fb1f44282436aae9e8168a8d2fc92
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:120
+msgid "If the algorithm does not use hypotheses, this field is grayed."
+msgstr ""
+
+# 0eb15e737c2c4807afc1db58d94f31ad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:122
+msgid "After selection of an algorithm **Add. Hypothesis** field can contain:"
+msgstr ""
+
+# 7c6acd80061c47aa82b914f790c43b50
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:124
+msgid ""
+"**\\<None\\>** if the algorithm can be tuned using an additional "
+"hypothesis."
+msgstr ""
+
+# 3dbebd2338684d7a8ac7e931736488f4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:125
+msgid "If the algorithm does not use additional hypotheses, this field is grayed."
+msgstr ""
+
+# a7246cd9501342cc851a57f1225011a3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:128
+msgid ""
+"Proceed in the same way with 2D and 1D Algorithms and Hypotheses that "
+"will be used to mesh faces and edges of your geometry. (Note that any "
+"object has edges, even if their existence is not apparent, for example, a"
+" sphere has 4 edges). Note that the choice of hypotheses and lower "
+"dimension algorithms depends on the higher dimension algorithm."
+msgstr ""
+
+# 8ead53be1024488e847e532a9476d06b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:130
+msgid ""
+"If you wish you can select other algorithms and/or hypotheses for meshing"
+" some sub-shapes of your CAD model by :ref:`constructing_submeshes_page`."
+msgstr ""
+
+# 396d01fdc08d473287f072274be2a413
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:132
+msgid ""
+"Some algorithms generate mesh of several dimensions, while others produce"
+" mesh of only one dimension. In the latter case there must be one "
+"Algorithm and zero or several Hypotheses for each dimension of your "
+"object, otherwise you will not get any mesh at all. Of course, if you "
+"wish to mesh a face, which is a 2D object, you do not need to define a 3D"
+" Algorithm and Hypotheses."
+msgstr ""
+
+# ea9666bc33b04d11885e95f751aa40e1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:134
+msgid ""
+"In the **Object Browser** the structure of the new mesh is displayed as "
+"follows:"
+msgstr ""
+
+# f7ac7badac6842f79434fcaa9791f7cf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:139
+msgid "It contains:"
+msgstr ""
+
+# fb3397d4abdb4b78859a81410ffee107
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:141
+msgid "a mesh name (**Mesh_mechanic**);"
+msgstr ""
+
+# 1167ac91887746d2bcab140eb8280f97
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:142
+msgid ""
+"a reference to the geometrical object on the basis of which the mesh has "
+"been constructed (*mechanic*);"
+msgstr ""
+
+# 799d3cc185da4b879bccc4b7f993f12d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:143
+msgid ""
+"**Applied hypotheses** folder containing the references to the hypotheses"
+" chosen at the construction of the mesh;"
+msgstr ""
+
+# 893ccebd1d654ddab671c14b92fca974
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:144
+msgid ""
+"**Applied algorithms** folder containing the references to the algorithms"
+" chosen at the construction of the mesh."
+msgstr ""
+
+# c04a128f95144a5885051b9ea865e54f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:145
+msgid ""
+"**SubMeshes on Face** folder containing the sub-meshes defined on "
+"geometrical faces. There also can be folders for sub-meshes on vertices, "
+"edges, wires, shells, solids and compounds."
+msgstr ""
+
+# dff4c4a8948a442499340b64b19b1221
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:146
+msgid ""
+"**Groups of Faces** folder containing the groups of mesh faces. There "
+"also can be folders for groups of nodes, edges, volumes 0D elements and "
+"balls."
+msgstr ""
+
+# 02316e8c5f54451bbbb1f692ca13778a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:149
+msgid ""
+"There is an alternative way to assign Algorithms and Hypotheses by "
+"clicking **Assign a set of hypotheses** button and selecting among pre-"
+"defined sets of algorithms and hypotheses. In addition to the built-in "
+"sets of hypotheses, it is possible to create custom sets by editing "
+"CustomMeshers.xml file located in the home directory. CustomMeshers.xml "
+"file must describe sets of hypotheses in the same way as "
+"${SMESH_ROOT_DIR}/share/salome/resources/smesh/StdMeshers.xml file does "
+"(sets of hypotheses are enclosed between \\<hypotheses-set-group\\> "
+"tags). For example: ::"
+msgstr ""
+
+# aeef8be810624f59be9f0d7834858269
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:162
+msgid ""
+"If the file contents are incorrect, there can be an error at activation "
+"of Mesh module: **\"fatal parsing error: error triggered by consumer in "
+"line ...\"**"
+msgstr ""
+
+# e229cf9561124f7fafba9ae4637112a9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:167
+msgid ""
+"List of sets of hypotheses. Tag **[custom]** is automatically added to "
+"the sets defined by the user."
+msgstr ""
+
+# a839bd695c4f4ffc8d7972e4eb743455
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:170
+msgid ""
+"*\"Automatic\"* in the names of predefined sets of hypotheses does not "
+"actually mean that they are suitable for meshing any geometry."
+msgstr ""
+
+# 10c50356cf44475cad554d56daebf771
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:171
+msgid ""
+"The list of sets of hypotheses can be shorter than in the above image "
+"depending on the geometry dimension."
+msgstr ""
+
+# d41cb527e2bc4fe9a5b9a782bf9775c1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:174
+msgid ""
+"Consider trying a sample script for construction of a mesh from our "
+":ref:`tui_creating_meshes_page` section."
+msgstr ""
+
+# 35525ecb30bd46fa9e42928143f8ced0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:179
+msgid "Evaluating mesh size"
+msgstr ""
+
+# 51368d5040804dc4b7927584b827f197
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:181
+msgid ""
+"After the mesh object is created and all hypotheses are assigned and "
+"before :ref:`compute_anchor` operation, it is possible to calculate the "
+"eventual mesh size. For this, select the mesh in the **Object Browser** "
+"and from the **Mesh** menu select **Evaluate**. The result of evaluation "
+"will be displayed in the following information box:"
+msgstr ""
+
+# 1fa07ee04a024eba9a896ddac279c8ac
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:190
+msgid "Previewing the mesh"
+msgstr ""
+
+# 77c3ec771e6b491aa62e6df1bab0215b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:192
+msgid ""
+"Before :ref:`compute_anchor` , it is also possible to see the mesh "
+"preview. This operation allows to incrementally compute the mesh, "
+"dimension by dimension, and to discard an unsatisfactory mesh."
+msgstr ""
+
+# 02eb9a3faafb465395536def97113eff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:194
+msgid ""
+"For this, select the mesh in the Object Browser. From the **Mesh** menu "
+"select **Preview** or click \"Preview\" button in the toolbar or activate"
+" \"Preview\" item from the pop-up menu."
+msgstr ""
+
+# cae5eac0aaa24cb0bc9edbaf677889b1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:202
+msgid "Select **1D mesh** or **2D mesh** preview mode in the Preview dialog."
+msgstr ""
+
+# 430d6d6c0f784909874e9c95c8f9ceb8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:218
+msgid "**Compute** button computes the whole mesh."
+msgstr ""
+
+# d5edccc13ca343c49e62430cbccb1903
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:220
+msgid ""
+"When the Preview dialog is closed, the question about the storage of "
+"temporarily created mesh elements appears:"
+msgstr ""
+
+# 2a13fbef304843fca5b33f991891a670
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:225
+msgid "These elements can be kept in the mesh."
+msgstr ""
+
+# a1e92798cd1f4a54b8ea76440e8cdf63
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:231
+msgid "Changing sub-mesh priority"
+msgstr ""
+
+# 004d8f83536b4c54b3738d0d87bb1867
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:233
+msgid ""
+"If the mesh contains concurrent :ref:`constructing_submeshes_page`, it is"
+" possible to change the priority of their computation, i.e. to change the"
+" priority of applying algorithms to the shared sub-shapes of the Mesh "
+"shape."
+msgstr ""
+
+# 75c42caf0e8043dcb989055191e9b406
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:235
+msgid "**To change sub-mesh priority:**"
+msgstr ""
+
+# 41e08c22f2524e14917e99a55da724af
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:237
+msgid ""
+"Choose \"Change sub-mesh priority\" from the Mesh menu or a pop-up menu. "
+"The opened dialog shows a list of sub-meshes in the order of their "
+"priority."
+msgstr ""
+
+# 54a55c30130e4ffeb0c17abe8ad883e5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:239
+msgid ""
+"There is an example of sub-mesh order modifications taking a Mesh created"
+" on a Box shape. The main Mesh object:"
+msgstr ""
+
+# a09339ed609242588c4e1e2e6698dfb4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:241
+msgid "*1D* **Wire discretisation** with **Number of Segments** =20"
+msgstr ""
+
+# 223a2036b61245b9a74d39e766c41171
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:242
+msgid "*2D* **Triangle: Mefisto** with Hypothesis **Max Element Area**"
+msgstr ""
+
+# af68c57a6c6541e4a5ee565e61ce82a8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:245
+msgid "The first sub-mesh **Submesh_1** created on **Face_1** is:"
+msgstr ""
+
+# 4191031e23f540e09498f3254a4d2fe5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:247
+msgid "*1D* **Wire discretisation** with **Number of Segments** =4"
+msgstr ""
+
+# 6370ac3a9fb84887b43f8a67bc8af0ae
+# 6d3a07784a6b42609cb8a8d5e067a24b
+# fb1de1eb32ee44638f5eab58a8312570
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:248
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:253
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:259
+msgid "*2D* **Triangle: Mefisto** with Hypothesis **MaxElementArea** =1200"
+msgstr ""
+
+# dae60f1eb8924fd19c98131c2b68967a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:250
+msgid "The second sub-mesh **Submesh_2** created on **Face_2** is:"
+msgstr ""
+
+# 6f7d66913e8846d2820e54b67b2ff311
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:252
+msgid "*1D* **Wire discretisation** with **Number of Segments** =8"
+msgstr ""
+
+# 0075cb1b57944449b460c5cbd84c8462
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:256
+msgid "And the last sub-mesh **Submesh_3** created on **Face_3** is:"
+msgstr ""
+
+# f320f5e7c50e46a6a3e8d991c71b4b05
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:258
+msgid "*1D* **Wire discretisation** with **Number of Segments** =12"
+msgstr ""
+
+# f3f15a180c4a4451a51b242d0471adc8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:262
+msgid ""
+"The sub-meshes become concurrent if they share sub-shapes that can be "
+"meshed with different algorithms (or different hypotheses). In the "
+"example, we have three sub-meshes with concurrent algorithms, because "
+"they have different hypotheses."
+msgstr ""
+
+# 879b05bdc25147548a35291dddc94263
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:264
+msgid "The first mesh computation is made with:"
+msgstr ""
+
+# 53ebc41a65514158af854ea7f525f409
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:279
+msgid "The next mesh computation is made with:"
+msgstr ""
+
+# 629461484abc4517b3a0972549a04cfc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:293
+msgid "And the last mesh computation is made with:"
+msgstr ""
+
+# d0f18c41144744baa9b41f3e2753ddb4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:308
+msgid ""
+"As we can see, each mesh computation has a different number of result "
+"elements and a different mesh discretization on the shared edges (the "
+"edges that are shared between **Face_1**, **Face_2** and **Face_3**)"
+msgstr ""
+
+# 5f57089459974700b9daaa0862b11370
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:312
+msgid ""
+"Additionally, sub-mesh priority (the order of applied algorithms) can be "
+"modified not only in a separate dialog box, but also in the **Preview**. "
+"This helps to preview different mesh results, modifying the order of sub-"
+"meshes."
+msgstr ""
+
+# 22f246ae649948639a3e6371b8288185
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:323
+msgid ""
+"If there are no concurrent sub-meshes under the Mesh object, the user "
+"will see the following information."
+msgstr ""
+
+# bd0286f95d4c43eab2cad76e77ebc982
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:336
+msgid "Computing the mesh"
+msgstr ""
+
+# fadce4968b754a0f9a41afeb7cb48573
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:338
+msgid ""
+"It is equally possible to skip  :ref:`evaluate_anchor` and "
+":ref:`preview_anchor` and to **Compute** the mesh after the hypotheses "
+"are assigned. For this, select your mesh in the **Object Browser**. From "
+"the **Mesh** menu or the context menu select **Compute** or click "
+"*\"Compute\"* button of the toolbar."
+msgstr ""
+
+# 0cc9e0020d0742d380060bc06afdc520
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:350
+msgid ""
+"After the mesh computation finishes, the Mesh Computation information box"
+" appears. If you close this box and click \"Compute\" button again, "
+"without previously changing meshing parameters, the mesh will NOT be re-"
+"computed and the Mesh Computation information box will be shown with the "
+"same contents. (To fully re-compute the mesh, invoke "
+":ref:`clear_mesh_anchor` command before)."
+msgstr ""
+
+# 6a2a4ad2643e4d949abd363984f0c0bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:360
+msgid "Meshing Results"
+msgstr ""
+
+# b93b73178564476197eea31627301e35
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:362
+msgid ""
+"If the mesh computation has been a success, the box shows information on "
+"the number of entities of different types in the mesh."
+msgstr ""
+
+# e04fbcc854d94f908dffc46beb04e701
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:370
+msgid "Meshing Failed"
+msgstr ""
+
+# 4212b5c23b1b43dfa0a5a8c4f6ea080a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:372
+msgid ""
+"If the mesh computation has failed, the information about the cause of "
+"the failure is provided in **Errors** table."
+msgstr ""
+
+# 6fdec30e41954175a4a96b60453ae773
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:377
+msgid ""
+"After you select an error in **Errors** table, **Show Sub-shape** button "
+"allows visualizing in magenta the geometrical entity meshing of which "
+"failed (Name of this entity or its ID and type is shown in *Sub-shape* "
+"column)."
+msgstr ""
+
+# 56bdf662a9ba4f9d9b02eeaf5b7e6319
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:387
+msgid ""
+"**Publish Sub-shape** button publishes the sub-shape, whose meshing has "
+"failed, in the Geometry component as a child of the main shape, which "
+"allows analyzing the problematic geometry and creating a sub-mesh on it "
+"in order to locally tune the hypotheses."
+msgstr ""
+
+# 12dd5ffbce32416fb376edbbc2459e28
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:392
+msgid ""
+"If the failure is caused by an invalid input mesh and the algorithm has "
+"found which mesh entities are bad, **Show bad Mesh** button appears in "
+"the dialog. Clicked, it shows the bad mesh entities in the Viewer in "
+"magenta. Sometimes the shown mesh entities are too small or/and hidden by"
+" other mesh elements. They can be seen after switching the mesh to "
+"Wireframe visualization mode or switching off the visualization of faces "
+"and volumes (if any)."
+msgstr ""
+
+# 9668bc680047467ebfa64d8a99edf715
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:400
+msgid ""
+"**Bad Mesh to Group** button creates groups of bad mesh entities to "
+"facilitate their analysis."
+msgstr ""
+
+# 3750b205e07d49ae946cd1ee904de0cf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:405
+msgid ""
+"Edges bounding a hole in the surface are shown in magenta using **Show "
+"bad Mesh** button"
+msgstr ""
+
+# cf8d66c5929c4fa3953306bf91e563c6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:408
+msgid ""
+"Mesh Computation Information box does not appear if you set "
+":ref:`show_comp_result_pref` preference to the \"Never\" value. This "
+"option gives the possibility to control mesh computation reporting. There"
+" are the following possibilities: always show the information box, show "
+"only if an error occurs or never. By default, the information box is "
+"always shown after mesh computation operation."
+msgstr ""
+
+# e498ca4e2a6848f99d7f37d6bc44857c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:413
+msgid "Editing the mesh"
+msgstr ""
+
+# 6a0b3dfdd3764cba94d01c7854ac28ac
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:415
+msgid ""
+"It is possible to :ref:`modifying_meshes_page` of a lower dimension "
+"before generation of the mesh of a higher dimension."
+msgstr ""
+
+# 5cfa5a1b73a247d4a450281973d2e37e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:418
+msgid ""
+"For example you can generate a 2D mesh, modify it using e.g. "
+":ref:`pattern_mapping_page`, and then generate a 3D mesh basing on the "
+"modified 2D mesh. The workflow is as follows:"
+msgstr ""
+
+# d0c505f4dc734c5bb42b132969cac374
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:420
+msgid "Define 1D and 2D meshing algorithms."
+msgstr ""
+
+# 58f9803c1a464650b1a217f141cc9020
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:421
+msgid "Compute the mesh. 2D mesh is generated."
+msgstr ""
+
+# f9ed216a02de432d97a491a91dfded16
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:422
+msgid "Apply :ref:`pattern_mapping_page`."
+msgstr ""
+
+# 164f7a63410043e2a98fa695d64d7025
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:423
+msgid ""
+"Define 3D meshing algorithms without modifying 1D and 2D algorithms and "
+"hypotheses."
+msgstr ""
+
+# c02d8786afe94ddc941f3db9b97013c4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:424
+msgid "Compute the mesh. 3D mesh is generated."
+msgstr ""
+
+# 0b39821ac1664579bc0a71abb488d558
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:427
+msgid ""
+"Nodes and elements added :ref:`adding_nodes_and_elements_page` cannot be "
+"used in this workflow because the manually created entities are not "
+"attached to any geometry and thus (usually) cannot be found by the mesher"
+" paving a geometry."
+msgstr ""
+
+# f4c5d8f58ed44c5c94387fccac9eb6d6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:429
+msgid ""
+"**See Also** a sample TUI Script demonstrates the possibility of "
+":ref:`tui_editing_while_meshing`."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/constructing_submeshes.po b/doc/gui/locale/fr/LC_MESSAGES/constructing_submeshes.po
new file mode 100644 (file)
index 0000000..85b7b52
--- /dev/null
@@ -0,0 +1,321 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 8dcecf5dd1c545e19147f8ccf3f4be58
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:5
+msgid "Constructing sub-meshes"
+msgstr ""
+
+# 6a506f87e68e48e5b7ea7b80010086de
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:0
+msgid "`Table of contents`"
+msgstr ""
+
+# 9092a8b32515476abde848cfc0ceb439
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:9
+msgid ""
+"By purpose, the sub-mesh is an object used to assign to a sub-shape "
+"different meshing parameters than those assigned to the main shape."
+msgstr ""
+
+# 0ee4acaa2bee42f6b8b3d7c4e68487ae
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:12
+msgid ""
+"Structurally, the sub-mesh is a mesh on a certain sub-shape, or a group "
+"of sub-shapes, possibly generated using different meshing algorithms "
+"and/or hypotheses than those used to generate the mesh on other sub-"
+"shapes."
+msgstr ""
+
+# a1ef92f87bf14e65ad3cedce5de22b00
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:17
+msgid ""
+"Creation of a sub-mesh allows to control individually meshing of a "
+"certain sub-shape, thus to get a locally coarser or finer mesh, to get "
+"elements of different types in the same mesh, etc."
+msgstr ""
+
+# 07a309342d234494bbb4235098782816
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:21
+msgid ""
+"A sub-mesh can be meshed individually. To achieve this, select a sub-mesh"
+" and either invoke **Compute Sub-mesh** vai the contextual menu in the "
+"Object Browser or invoke **Mesh > Compute** menu."
+msgstr ""
+
+# 9a43a2135eb3491b9c31fb6428d18d3c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:28
+msgid "How to get a sub-shape for sub-mesh construction"
+msgstr ""
+
+# 0bb30079b4c746d88498b51858622f24
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:30
+msgid ""
+"A sub-shape to create a sub-mesh on should be retrieved from the main "
+"shape in one of the following ways:"
+msgstr ""
+
+# 645bdeb400054a1c99a3604a20aa3369
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:33
+msgid "In Geometry module, via **New Entity > Explode** menu."
+msgstr ""
+
+# 7d3c9eca847f4aa395c002896d23ecac
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:34
+msgid ""
+"In Geometry module, by creation of a group (**New Entity > Group > Create"
+" Group** menu)."
+msgstr ""
+
+# 36f54e17062a477e867fc45a66074e7c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:35
+msgid ""
+"In Mesh module, by :ref:`subshape_by_mesh_elem` generated on a sub-shape "
+"of interest. This way is accessible if the mesh is already computed."
+msgstr ""
+
+# 94e83c99a6674985a9ed2f1f03d049d2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:36
+msgid ""
+"In Mesh module, by clicking **Publish Sub-shape** button in a dialog "
+"showing :ref:`meshing_failed_anchor`."
+msgstr ""
+
+# c2d5116a1495474b9fdc0d2830a70eb3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:42
+msgid "How hypotheses are selected among sub-meshes"
+msgstr ""
+
+# 208be946d3af4a4f8e7e1c9240b4511f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:44
+msgid ""
+"Internally, definition of meshing parameters to apply for discretization "
+"of a certain sub-shape, for example an edge of a compound of solids, "
+"starts from searching an algorithm, 1D as for the edge. The following "
+"sub-shapes are sequentially checked for presence of a sub-mesh where 1D "
+"algorithm is assigned:"
+msgstr ""
+
+# 554476f1034c4aacaac1b482fb64d3e3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:50
+msgid "the **edge** itself"
+msgstr ""
+
+# 944fe41bd1e941f78f84a485934e6265
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:51
+msgid "**groups of edges** containing the edge, if any"
+msgstr ""
+
+# 5c0913b3a7b442fb97490e9c84dcf059
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:52
+msgid "**wires** sharing the edge"
+msgstr ""
+
+# 22e406cc95824e26a54daaa69a53505c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:53
+msgid "**faces** sharing the edge"
+msgstr ""
+
+# b9fe4d05bde64b9ca29e2565c61f3c36
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:54
+msgid "**groups of faces** sharing the edge, if any"
+msgstr ""
+
+# 5bb54ee1fa174e20b062d17f0400b768
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:55
+msgid "**shells** sharing the edge"
+msgstr ""
+
+# dcaf3739ff2143a3a49f1f9ac3ff224e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:56
+msgid "**solids** sharing the edge"
+msgstr ""
+
+# 2c5e33f52d2048e48a3094420a361549
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:57
+msgid "**groups of solids** sharing the edge, if any"
+msgstr ""
+
+# a1e363cbd33244ad9f4d437db94f4967
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:58
+msgid "the **main shape**"
+msgstr ""
+
+# 4568223193074961bfbb99aca46ddc10
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:60
+msgid ""
+"(This sequence of sub-shapes defines the priority of sub-meshes. Thus "
+"more local, i.e. assigned to sub-shape of lower dimension, algorithms and"
+" hypotheses have higher priority during the search of hypotheses to "
+"apply.)"
+msgstr ""
+
+# e182833e02e642b6bc49abad0a6599da
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:65
+msgid ""
+"As soon as a 1D algorithm is found, the search stops and the same "
+"sequence of sub-shapes is checked to find the main and additional 1D "
+"hypotheses, which can be taken into account by the found 1D algorithm."
+msgstr ""
+
+# 7e0073bce488402484927894319d9062
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:69
+msgid ""
+"The multi-dimensional algorithms have a higher priority than uni-"
+"dimensional ones if they are assigned to sub-meshes of the same priority."
+msgstr ""
+
+# 9d39131c3a75497180864dce936d15ed
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:73
+msgid ""
+"If meshing parameters are defined on sub-meshes of the same priority, for"
+" example, different 1D hypotheses are assigned to two faces sharing an "
+"edge, the hypothesis assigned to a sub-shape with a lower ID will be used"
+" for meshing. You can :ref:`submesh_order_anchor` mutual priority of such"
+" concurrent sub-meshes."
+msgstr ""
+
+# a9fb3d57bf8240b1b5dba59ebbb5ff5d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:82
+msgid "How to construct a sub-mesh"
+msgstr ""
+
+# 44a1e0017c194945a7bd8fce1b79e2fb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:84
+msgid ""
+"Construction of a sub-mesh consists of: * Selecting a mesh which will "
+"encapsulate the sub-mesh * Selecting a sub-shape for meshing * Applying "
+"one or several :ref:`about_hypo_page` and :ref:`basic_meshing_algos_page`"
+" which will be used for discretization of this sub-shape."
+msgstr ""
+
+# 26bf66798e54426bba0c67e54f10cd9e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:90
+msgid ""
+"**To construct a sub-mesh:** From the **Mesh** menu select **Create Sub-"
+"mesh** or click **\"Create Sum-mesh\"** button in the toolbar."
+msgstr ""
+
+# e7dae80a8baa40a49d8435722a2520f4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:99
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# fe95d391d8f0472f95acb32614b037e0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:104
+msgid ""
+"It allows to define the **Name**, the parent **Mesh** and the "
+"**Geometry** (e.g. a face if the parent mesh has been built on box) of "
+"the sub-mesh. You can define meshing algorithms and hypotheses in the "
+"same way as in :ref:`constructing_meshes_page` dialog."
+msgstr ""
+
+# 47d9633bad064ecb8b5553aa565161b9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:106
+msgid ""
+"Later you can change the applied hypotheses or their parameters in "
+":ref:`editing_meshes_page` dialog. Mesh entities generated using changed "
+"hypotheses are automatically removed."
+msgstr ""
+
+# 935c4b2c834d4d98b3a2d2217f866043
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:111
+msgid "Subshape by mesh element"
+msgstr ""
+
+# 77f7de1583334f138b5f0b110ae7d51a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:113
+msgid ""
+"If the parent mesh is already computed, then you can define the "
+"**Geometry** by picking mesh elements computed on a sub-shape of interest"
+" in the 3D Viewer, i.e. you do not have to extract this sub-shape in "
+"Geometry module beforehand. To start element selection, press *Selection*"
+" button to the right of **Geometry** label. If this button is already "
+"down, then click it to release and then click it again. The following "
+"pop-up menu allowing to choose a way of geometry definition will appear."
+msgstr ""
+
+# 4c0c21e696c847999c8d837184fe4b4f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:118
+msgid ""
+"**Direct geometry selection** enables selecting the sub-shape in the "
+"Objec Browser. **Find geometry by mesh element selection** activates the "
+"following dialog."
+msgstr ""
+
+# bf06f2f5f21e459eb03cdbe983f5a4a7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:124
+msgid ""
+"In this dialog, **Element Type** defines a kind of element to pick in the"
+" Viewer. Instead of picking an element in the Viewer, you can type its ID"
+" in **Element ID** field. **Geometry name** field allows defining a name "
+"of the sub-shape, with which the sub-shape will appear in the Object "
+"Browser (if not yet there)."
+msgstr ""
+
+# 2b4738b5522c4e0c82797291770e76f2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:130
+msgid "Sub-mesh in the Object Browser"
+msgstr ""
+
+# 2ab4cc4af2cd419988c9bdb513d5bbc7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:132
+msgid ""
+"In the Object Browser the structure of the new sub-mesh will be displayed"
+" as follows:"
+msgstr ""
+
+# 84f4608ace094812a010ebc1e84b5d82
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:142
+msgid "It contains:"
+msgstr ""
+
+# 7d9cbfdf8cba4abfb1778fc5df746ff7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:138
+msgid "a sub-mesh name (*SubMeshFace1*)"
+msgstr ""
+
+# 92749880d92b40f188c986380776ff14
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:139
+msgid ""
+"a reference to the geometrical object on the basis of which the sub-mesh "
+"has been constructed (**Cylindrical Face_1**);"
+msgstr ""
+
+# b5aaa4b4a5f44ff985247f6517eb58b1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:140
+msgid ""
+"**Applied hypotheses** folder containing references to hypotheses "
+"assigned to the sub-mesh;"
+msgstr ""
+
+# c0e5a092c190496da996f8482ad11733
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:141
+msgid ""
+"**Applied algorithms** folder containing references to algorithms "
+"assigned to the sub-mesh."
+msgstr ""
+
+# fefc6a0043d24f1a9fcc14b8e8e031b7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:144
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_construction_submesh` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/convert_to_from_quadratic_mesh.po b/doc/gui/locale/fr/LC_MESSAGES/convert_to_from_quadratic_mesh.po
new file mode 100644 (file)
index 0000000..0582e24
--- /dev/null
@@ -0,0 +1,102 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 437a3b67c9b74dbeb3d875e7c0e8b1d4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:5
+msgid "Convert to/from Quadratic Mesh"
+msgstr ""
+
+# c001a095307b42058c85f22ceb9fe2ed
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:7
+msgid ""
+"This functionality allows transforming linear meshes (or sub-meshes) to "
+"quadratic and vice versa."
+msgstr ""
+
+# 0f85f2f27d3043d1adfaae24d89e5f06
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:10
+msgid ""
+"that conversion of a sub-mesh most probably will produce a non-conformal "
+"mesh. Elements on the boundary between quadratic and linear sub-meshes "
+"become (or remain) quadratic."
+msgstr ""
+
+# b529473bb5364b7b9b76ee74355b2c10
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:12
+msgid ""
+"See :ref:`adding_quadratic_elements_page` for more information about "
+"quadratic meshes."
+msgstr ""
+
+# b9b265c493d54d278f7f2ade025246c2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:14
+msgid "**To produce a conversion:**"
+msgstr ""
+
+# b7568e5f42ba4c0b98fda5b26036bc07
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:16
+msgid "Select a mesh or a sub-mesh in the Object Browser or in the Viewer."
+msgstr ""
+
+# 40d3bc8d12ed4c5e98f368db94916b52
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:17
+msgid ""
+"From the Modification menu or from the contextual menu in the Object "
+"Browser choose **Convert to/from Quadratic Mesh** item, or click "
+"**\"Convert to/from quadratic\"** button in the toolbar."
+msgstr ""
+
+# 5730d84d6bcb41c89c4817e13e541674
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:25
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# 55c98ecd42a84163931c4b731039438d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:30
+msgid "In this dialog box specify:"
+msgstr ""
+
+# f098a3dabcb24e3b97f890bddf872ee5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:32
+msgid ""
+"If it is necessary to convert a linear mesh to quadratic or a quadratic "
+"mesh to linear. **Convert to bi-quadratic** creates some types of "
+"quadratic elements with additional central nodes: TRIA7, QUAD9 and HEXA27"
+" elements instead of TRIA6, QUAD8, and HEXA20 elements respectively."
+msgstr ""
+
+# b8247159e5a34709a2e87fae094405a0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:33
+msgid ""
+"If it is necessary to place **medium nodes** of the quadratic mesh **on "
+"the geometry** (meshed shape). This option is relevant for conversion to "
+"quadratic provided that the mesh is based on a geometry (not imported "
+"from file)."
+msgstr ""
+
+# 825d7f71de5d48d28132a2499de90f29
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:49
+msgid "Click the **Apply** or **Apply and Close** button."
+msgstr ""
+
+# 992225f722ce406c8df8b165ff5fe521
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:52
+msgid "**See Also** a sample TUI Script of a :ref:`tui_quadratic` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/copy_mesh.po b/doc/gui/locale/fr/LC_MESSAGES/copy_mesh.po
new file mode 100644 (file)
index 0000000..f434c5c
--- /dev/null
@@ -0,0 +1,112 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# e7cd2a18c59c4648a1faaed666fd84b0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:5
+msgid "Copy Mesh"
+msgstr ""
+
+# cbc50f1b60a6483bb6e2e89bca786e62
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:7
+msgid "A mesh can be created by copying a part of or the whole other mesh."
+msgstr ""
+
+# 3781b11c6beb432c8d056ac6f6fcf99d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:9
+msgid "**To make a copy of a mesh:**"
+msgstr ""
+
+# 6e8c46cb80674215bbf3161c454f3661
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:11
+msgid ""
+"From the contextual menu in the Object Browser of from the **Mesh** menu "
+"select **Copy Mesh** or click **\"Copy Mesh\"** button in the toolbar."
+msgstr ""
+
+# 2bb71b2fbf554441aa9251c03c930ccb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:19
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# dabcb5bb2bef4d118b89bcd4a8dc0826
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:25
+msgid "In the dialog:"
+msgstr ""
+
+# 059682ffde4e4f088720752990795816
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:27
+msgid "specify the part of mesh to copy:"
+msgstr ""
+
+# 3f339c70213b4eeaa304464cf3db00a4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:29
+msgid ""
+"**Select whole mesh, sub-mesh or group** by mouse activating this "
+"checkbox; or"
+msgstr ""
+
+# 650efe9c14c74143a119a5ebf11a55f6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:30
+msgid ""
+"choose mesh elements with the mouse in the 3D Viewer. It is possible to "
+"select a whole area with a mouse frame; or"
+msgstr ""
+
+# 0358c0af28bb4938a6ac4b37c426ca12
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:31
+msgid ""
+"input the **Source Element IDs** directly in this field. The selected "
+"elements will be highlighted in the viewer; or"
+msgstr ""
+
+# 29ed8815de9b476b8e09e3e59d28fa46
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:32
+msgid ""
+"apply Filters. **Set filter** button allows to apply a filter to the "
+"selection of elements. See more about filters in the "
+":ref:`selection_filter_library_page` \"Selection filter library\" page."
+msgstr ""
+
+# 48cd5b14e17a4565bf59566249673382
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:34
+msgid "specify the **New Mesh Name**;"
+msgstr ""
+
+# f6122dd4855b4c228b945b0c2148dc6f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:35
+msgid "specify the conditions of copying:"
+msgstr ""
+
+# 5c5832137f004dfca00c8a4c2789b60e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:37
+msgid ""
+"activate **Generate groups** checkbox to copy the groups of the source "
+"mesh to the newly created mesh."
+msgstr ""
+
+# 9051de3d4349497fab059d46049e6a77
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:39
+msgid "Click **Apply** or **Apply and Close** button to confirm the operation."
+msgstr ""
+
+# 814e98a0b5f14d8f9aa10e9effedb459
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:42
+msgid "**See Also** a sample :ref:`tui_copy_mesh`."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/create_groups_from_geometry.po b/doc/gui/locale/fr/LC_MESSAGES/create_groups_from_geometry.po
new file mode 100644 (file)
index 0000000..fab7c45
--- /dev/null
@@ -0,0 +1,62 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 0d6e06249e844e90a8496e29693c6ff2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst:5
+msgid "Create Groups from Geometry"
+msgstr ""
+
+# 8cc71365dcc747bc96ae9a3b535de3b2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst:7
+msgid ""
+"This operation allows creating groups on geometry on all selected shapes."
+" Only the main shape of the mesh and its sub-shapes can be selected."
+msgstr ""
+
+# 512e020e985b49aba22a17772ddeea52
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst:9
+msgid ""
+"The type of each new group is defined automatically by the nature of the "
+"**Geometry**. The group names will be the same as the names of "
+"geometrical objects."
+msgstr ""
+
+# de5b54e7574a4b909af8aca4d5a6515d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst:12
+msgid ""
+"It's impossible to create a group of **0D elements** or **ball elements**"
+" with this operation. For this, it is necessary to use "
+":ref:`creating_groups_page` operation."
+msgstr ""
+
+# ef8a182d030b4f7584d9e8fb5d3042d7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst:14
+msgid ""
+"To use this operation, select in the **Mesh** menu or in the contextual "
+"menu in the Object browser **Create Groups from Geometry** item."
+msgstr ""
+
+# 448911b29b4d485a81fc2410aacd2258
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst:19
+msgid ""
+"In this dialog **Elements** group contains a list of shapes, on which  "
+"groups of elements will be created; **Nodes** group contains a list of "
+"shapes, on which groups of nodes will be created."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/creating_groups.po b/doc/gui/locale/fr/LC_MESSAGES/creating_groups.po
new file mode 100644 (file)
index 0000000..f9830e7
--- /dev/null
@@ -0,0 +1,305 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 7b54f64d1af4421d998f1fc6b018c4bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:5
+msgid "Creating groups"
+msgstr ""
+
+# 1a2bbb3796fe4d36a772b0c1923ab67e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:7
+msgid ""
+"In MESH you can create a :ref:`grouping_elements_page` of elements of a "
+"certain type. The main way to create a group, is to select in the "
+"**Mesh** menu **Create Group** item (also available in the context menu "
+"of the mesh). To create a group you should define the following:"
+msgstr ""
+
+# 9906a31c304346f0b167da2af922969a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:11
+msgid ""
+"**Mesh** - the mesh whose elements will form your group. You can select "
+"your mesh in the Objet Browser or in the 3D viewer."
+msgstr ""
+
+# 0643fcb5542c451190449bdcce19c077
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:17
+msgid ""
+"**Elements Type** - set of radio buttons allows to select the type of "
+"elements which will form your group:"
+msgstr ""
+
+# b669022b14074985840f2ec7a5f1b490
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:13
+msgid "**Nodes**"
+msgstr ""
+
+# 104815f6fcd6414cb630858f4aeb9155
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:14
+msgid "**0D Element**"
+msgstr ""
+
+# 16f9f2ac46844060b018663a48b0f49a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:15
+msgid "**Ball**"
+msgstr ""
+
+# d772a17c8bb7406b827b0d9986fd7760
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:16
+msgid "**Edges**"
+msgstr ""
+
+# a97b302e3d624ceb942cf29c101131a9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:17
+msgid "**Faces**"
+msgstr ""
+
+# 9e041daf0b254f09bead8e8505ccef71
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:18
+msgid "**Volumes**"
+msgstr ""
+
+# 82fcee6546ea49dea69dbd66206fd1ff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:19
+msgid "**Name** field allows to enter the name of your new group."
+msgstr ""
+
+# 009935b2e04e48be983cb6ee60d2ebf6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:20
+msgid ""
+"**Color** - allows to assign to the group a certain color. The chosen "
+"color is used to display the elements of the group. Activation of **Auto "
+"Color** item in mesh context menu switches on a random choice of a color "
+"for a new group."
+msgstr ""
+
+# 29f02f4147ad4112a5b0f9cf1725c2d3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:22
+msgid ""
+"Mesh module distinguishes between the three Group types: **Standalone "
+"Group**, **Group on Geometry** and **Group on Filter**."
+msgstr ""
+
+# aa77de8a33a44e7c8a05f8be00a8848d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:29
+msgid "\"Standalone Group\""
+msgstr ""
+
+# d28e986c4d66428ab7b6b1bbd28be910
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:31
+msgid ""
+"**Standalone Group** contains a list of mesh elements, which you can "
+"define in the following ways:"
+msgstr ""
+
+# e2a1743ffc8049499f82e8c5a3b866f4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:34
+msgid ""
+"By adding all entities of the chosen type existing in the mesh. For this,"
+" turn on the **Select All** check-box. In this mode all controls, which "
+"allow selecting the entities, are disabled."
+msgstr ""
+
+# 0839d03f970444c09025c467b4eb225f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:35
+msgid ""
+"By choosing entities manually with the mouse in the 3D Viewer. For this, "
+"turn on the **Enable manual edition** check box. You can click on an "
+"element in the 3D viewer and it will be highlighted. After that click the"
+" **Add** button and the ID of this element will be added to the list. The"
+" **Set filter** button allows to define the filter for selection of the "
+"elements for your group. See more about filters on the "
+":ref:`selection_filter_library_page` \"Selection filter library\" page."
+msgstr ""
+
+# 0070179b410344168305ec4f8297e9c9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:36
+msgid ""
+"By adding entities from either a sub-mesh or another group. For this, "
+"turn on the **Enable manual edition** check box. **Select from** fields "
+"group allows to select a sub-mesh or a group of the appropriate type and "
+"to **Add** their elements to the group."
+msgstr ""
+
+# a57d5e61ea084870a8bfce92c9c4c736
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:38
+msgid "In the **manual edition** mode you can"
+msgstr ""
+
+# c9d0e77cb7f343aebac268ab97ef13aa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:40
+msgid "click the **Remove** button to remove the selected items from the list."
+msgstr ""
+
+# 306bfea381614c17bb72e986779f6041
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:41
+msgid "click the **Sort List** button to sort the list of IDs of mesh elements."
+msgstr ""
+
+# e1dba82ca6c248abb9294aac985e0d31
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:46
+msgid ""
+"For example, to create a new group containing all faces of an existing "
+"group and some other faces selected in the viewer:"
+msgstr ""
+
+# ad44ce3ae9b84418b4e492c929ad93ff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:48
+msgid "Select the **Face** type of entities and input the name of the new group."
+msgstr ""
+
+# be572ffdc7934e85b5ebff340ff36f1a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:49
+msgid "Check the **Group** checkbox in **Select From** group."
+msgstr ""
+
+# 1e06ee64a1754bdd90d04beda8118a1a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:50
+msgid "Select the existing group of faces in the object browser or in the viewer."
+msgstr ""
+
+# 406b703bb7bd47d1b54e34c831d6cf51
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:51
+msgid ""
+"Click **Add** in **Content** group. **Id Elements** list will be filled "
+"with IDs of faces belonging to the selected group."
+msgstr ""
+
+# e8d5b9afe2b04a98b8e72e7773e65984
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:52
+msgid "Select other faces in the viewer."
+msgstr ""
+
+# 3b66eb0e9b284d11a31073d912ce7ea2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:53
+msgid "Click **Add** in **Content** group."
+msgstr ""
+
+# 9752692fb73f49a38a4d093aa566faba
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:54
+msgid "Click **Apply** button to create the new group."
+msgstr ""
+
+# fc9eec6d13f54a1d8dd9fe679a653732
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:57
+msgid ""
+"Please note that the new group does not have references to the source "
+"group. It contains only the list of face IDs. So if the source group is "
+"changed, the new one is not updated accordingly."
+msgstr ""
+
+# 692f98b5a544406397a569cd43d229dc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:65
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_create_standalone_group` "
+"operation."
+msgstr ""
+
+# 8f305bfbc5da4c4cbba5c2276c8b7b4b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:71
+msgid "\"Group on Geometry\""
+msgstr ""
+
+# d74e73205f87477a86be174722b0d464
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:73
+msgid ""
+"To create a group on geometry check **Group on geometry** in the "
+"**Group** **type** field. The group on geometry contains the elements of "
+"a certain type generated on the selected geometrical object. Group "
+"contents are dynamically updated if the mesh is modified. The group on "
+"geometry can be created only if the mesh is based on geometry."
+msgstr ""
+
+# c35bbf66e64749249b5648e96dac7b24
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:75
+msgid "To define a group, click the *Selection* button and choose"
+msgstr ""
+
+# 2637b093a3244394b8189c3922db7f61
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:77
+msgid ""
+"**Direct geometry selection** to select a shape in the Object Browser or "
+"in the Viewer;"
+msgstr ""
+
+# f12f05a2338b4868865af8499e4a9b81
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:78
+msgid ""
+"**Find geometry by mesh element selection** to activate a dialog which "
+"retrieves a shape by the selected element generated on this shape."
+msgstr ""
+
+# 6b3d4cd3c648491cbfd535924cdc3411
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:81
+msgid ""
+"that this choice is available only if the mesh elements are already "
+"generated."
+msgstr ""
+
+# fb65f6162e60441483b784741d0a41cf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:86
+msgid ""
+"After confirmation of the operation a new group of mesh elements will be "
+"created."
+msgstr ""
+
+# 0c16c230c7ce4c2793eb08c312636d8d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:91
+msgid ""
+"In this picture the cells which belong to a certain geometrical face are "
+"selected in green."
+msgstr ""
+
+# a308beb890254bf6badae10ed3fdc309
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:93
+msgid ""
+"**See Also** a sample TUI Script of a  "
+":ref:`tui_create_group_on_geometry` operation."
+msgstr ""
+
+# d5212a8c6d9144abbdd01cedbe1547ee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:99
+msgid "\"Group on Filter\""
+msgstr ""
+
+# 9d7c3b6e6af44b62b16e265da59bb6fc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:101
+msgid ""
+"To create a group on filter check **Group on filter** in the **Group "
+"type** field. The group on filter contains the elements of a certain type"
+" satisfying the defined filter. Group contents are dynamically updated if"
+" the mesh is modified."
+msgstr ""
+
+# dc10544f89244542a1654346a5f10ded
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:105
+msgid ""
+"To define a group, click the **Set filter** button and define criteria of"
+" the filter in the opened dialog. After the operation is confirmed, a new"
+" group of mesh elements will be created. See more about filters on the "
+":ref:`selection_filter_library_page` page."
+msgstr ""
+
+# 36b896624b0843ddacee7d59392b13d2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:110
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_create_group_on_filter` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/cut_mesh_by_plane.po b/doc/gui/locale/fr/LC_MESSAGES/cut_mesh_by_plane.po
new file mode 100644 (file)
index 0000000..d602662
--- /dev/null
@@ -0,0 +1,96 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# af5945204b1f448badc4da3616d663d3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:5
+msgid "Cut a tetrahedron mesh by a plane"
+msgstr ""
+
+# c7b3a5e99521490bada8067eeffdd439
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:7
+msgid ""
+"MeshCut works only with MED files and produces MED files, and is a "
+"standalone program. It can be used either directly from a command shell "
+"outside SALOME, or with a GUI interface in SMESH, provided in a python "
+"plugin that needs to be installed in your SALOME application."
+msgstr ""
+
+# 110ba66df0334b55932c69d60d8e056e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:9
+msgid ""
+"MeshCut allows to cut a mesh constituted of linear tetrahedrons by a "
+"plane. The tetrahedrons intersected by the plane are cut and replaced by "
+"elements of various types, (tetrahedron, pyramid, pentahedron)."
+msgstr ""
+
+# 76c56acbd34642e6a35c0336374bf1da
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:16
+msgid "Using MeshCut as a standalone program, outside SALOME"
+msgstr ""
+
+# e860a7c125d745bfac69448ca40db92e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:18
+msgid "MeshCut is a standalone program, reading and producing med files."
+msgstr ""
+
+# 95562602aa944727beb91b6c691118b6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:20
+msgid "Syntax::"
+msgstr ""
+
+# 323593bb8b9b41ac8e4c58e415639fcd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:24
+msgid "where::"
+msgstr ""
+
+# e8c88d96d6f04485bc837c8fb1cf79e8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:40
+msgid "Using MeshCut inside SALOME"
+msgstr ""
+
+# adefbc138ffb43c6b0b3b465af6001b5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:42
+msgid ""
+"When the MeshCut plugin is installed, it can be found in the Mesh menu, "
+"sub-menu SMESH_plugins. If the plugin is not installed, the file "
+"meshcut_plugin.py is in SMESH installation in  subdirectory "
+"*bin/salome/meshcut_plugin.py*."
+msgstr ""
+
+# 66e0dbab5f0d4123ab9b08d80341b5bb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:46
+msgid ""
+"If there are already plugins defined in a smesh_plugins.py file, this "
+"file should be added at the end. If not, copied as "
+"*${HOME}/Plugins/smesh_plugins.py* or *${APPLI}/Plugins/smesh_plugins.py*"
+" or in *${PLUGINPATH}* directory."
+msgstr ""
+
+# 80ecf33219494f3b839e3b71fd7e0615
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:49
+msgid ""
+"From the Mesh menu, sub-menu SMESH_plugins, choose **\"MeshCut\"** item "
+"The following dialog box will appear:"
+msgstr ""
+
+# d6d1a2389773477c9145c6ad8f4a3577
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:58
+msgid "See above for the meaning of the parameters."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/cutting_quadrangles.po b/doc/gui/locale/fr/LC_MESSAGES/cutting_quadrangles.po
new file mode 100644 (file)
index 0000000..607e69e
--- /dev/null
@@ -0,0 +1,180 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# cdc452a2e6774e6d861087c1cd0d6a49
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:5
+msgid "Cutting quadrangles"
+msgstr ""
+
+# 178f194a32ca460e8a97d7e24265fcce
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:7
+msgid ""
+"This operation allows cutting one or several quadrangle elements into two"
+" or four triangles."
+msgstr ""
+
+# b88b0d55219447ed957e38cfd39270e9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:9
+msgid "**To cut quadrangles:**"
+msgstr ""
+
+# 2eaf8d747bd246489f0973f678ca80a1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:11
+msgid ""
+"Select a mesh (and display it in the 3D Viewer if you are going to pick "
+"elements by mouse)."
+msgstr ""
+
+# 55601316ccca4fa0a3fb8843327d8a0a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:12
+msgid ""
+"In the **Modification** menu select the **Cutting of quadrangles** item "
+"or click **\"Cutting of quadrangles\"** button in the toolbar."
+msgstr ""
+
+# c6fc4bd52a504140b22929570d95373d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:20
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# a88495585e7d47c182be1ac590640969
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:29
+msgid ""
+"The main list contains the list of quadrangles selected for cutting. You "
+"can click on a quadrangle in the 3D viewer and it will be highlighted "
+"(lock Shift keyboard button to select several quadrangles):"
+msgstr ""
+
+# 1ab5287e6411489491330eeb2f0fb76f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:27
+msgid ""
+"Click **Add** button and the ID of this quadrangle will be added to the "
+"list."
+msgstr ""
+
+# 270eb065dd33474ba7ec99058b3f6ed4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:28
+msgid ""
+"To remove a selected element or elements from the list click **Remove** "
+"button."
+msgstr ""
+
+# 90cf7268f2f641cb8b950fbb8be22d89
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:29
+msgid "**Sort list** button allows sorting the list of IDs."
+msgstr ""
+
+# 0824ac72ed0e4b97890bd28a222d33f0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:30
+msgid ""
+"**Filter** button allows applying a definite :ref:`filtering_elements` "
+"\"filter\" to the selection of quadrangles."
+msgstr ""
+
+# d970753f7b3c4074922954dc9ff13824
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:31
+msgid ""
+"**Apply to all** check box allows cutting all quadrangles of the selected"
+" mesh."
+msgstr ""
+
+# b136f4c18bea4b68a2cfc0130fbec157
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:32
+msgid ""
+"**Preview** provides a preview of cutting in the viewer. It is disabled "
+"for **Cut into 4 triangles** as this cutting way implies no ambiguity."
+msgstr ""
+
+# d84debdc304c476b962913c0a43c09eb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:39
+msgid "**Criterion** defines the way of cutting:"
+msgstr ""
+
+# 393ad3ff52cd47e9b824f9b058385174
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:34
+msgid ""
+"**Cut into 4 triangles** allows cutting a quadrangle into four triangles "
+"by inserting a new node at the center of the quadrangle. The other "
+"options allow cutting a quadrangle into two triangles by connecting the "
+"nodes of a diagonal."
+msgstr ""
+
+# 6531eb4390d34c4da2bf582a77a09dfa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:35
+msgid ""
+"**Use diagonal 1-3** and **Use diagonal 2-4** allow specifying the "
+"opposite corners, which will be connected to form two new triangles."
+msgstr ""
+
+# eac79819eb4246b9a6862f68a0bf7ad9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:39
+msgid ""
+"**Use numeric functor** allows selecting in the field below a quality "
+"metric, which will be optimized when choosing a diagonal for cutting a "
+"quadrangle:"
+msgstr ""
+
+# 50994bc4fa624c1da5a9636faa3e6d61
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:37
+msgid "**Minimum diagonal** cuts by the shortest diagonal."
+msgstr ""
+
+# c370f34b03f1463cad2ca1d7083bcee9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:38
+msgid ""
+"**Aspect Ratio** cuts by the diagonal splitting the quadrangle into "
+"triangles with :ref:`aspect_ratio_page` \"Aspect Ratio\" closer to 1"
+msgstr ""
+
+# aa75cda04e014f508d4ad3e4c80798dd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:39
+msgid ""
+"**Minimum Angle** cuts by the diagonal splitting the quadrangle into "
+"triangles with :ref:`minimum_angle_page` \"Minimum Angle\" closer to 60 "
+"degrees."
+msgstr ""
+
+# 5da246103a434893bca74a0278ebcf63
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:40
+msgid ""
+"**Skew** cuts by the diagonal splitting the quadrangle into triangles "
+"with :ref:`skew_page` \"Skew\" closer to 0.0 degrees."
+msgstr ""
+
+# d01638fc455f49359ec17165a915cbf8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:41
+msgid ""
+"**Select from** allows choosing a sub-mesh or an existing group, whose "
+"quadrangle elements then can be added to the main list."
+msgstr ""
+
+# a0527c237dab4bb7b19297594cd2ee50
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:43
+msgid ""
+"Click the **Apply** or **Apply and Close** button to confirm the "
+"operation."
+msgstr ""
+
+# c97b46bf744d4d75868f54274d5b8b41
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:59
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_cutting_quadrangles` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/define_mesh_by_script.po b/doc/gui/locale/fr/LC_MESSAGES/define_mesh_by_script.po
new file mode 100644 (file)
index 0000000..f1b4594
--- /dev/null
@@ -0,0 +1,86 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 7a83ceb457994f0489883d15259eaf09
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:5
+msgid "Use Edges/Faces to be Created Manually"
+msgstr ""
+
+# ddfb94d55abf4777a40b1a0204d3f171
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:7
+msgid ""
+"The algorithms **Use Edges to be Created Manually** and **Use Faces to be"
+" Created Manually** allow  creating a 1D or a 2D mesh in a python script "
+"(using **AddNode, AddEdge** and **AddFace** commands) and then using such"
+" sub-meshes in the construction of a 2D or a 3D mesh."
+msgstr ""
+
+# 97ab6ee01a514db696c51dfc106d7cbb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:9
+msgid ""
+"For example, you want to use standard algorithms to generate 1D and 3D "
+"meshes and to create 2D mesh by your python code. For this, you"
+msgstr ""
+
+# b51c5c631ad54f7ea57be1f01dd6278a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:12
+msgid "create a mesh object, assign a 1D algorithm,"
+msgstr ""
+
+# 1606b74fadb94199897e3e4a0900958c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:13
+msgid "invoke **Compute** command, which computes a 1D mesh,"
+msgstr ""
+
+# 9eff4a607bdf43b8a5c6a70ab0397ca9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:15
+msgid "assign **Use Faces to be Created Manually** and a 3D algorithm,"
+msgstr ""
+
+# 3972a11e34084b7685f90a6f9a37718b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:16
+msgid "run your python code, which creates a 2D mesh,"
+msgstr ""
+
+# ec5b08b76d7d489d990cb8a48be0ca6f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:17
+msgid "invoke **Compute** command, which computes a 3D mesh."
+msgstr ""
+
+# bf07fde4deac4f89a7fc0e1dd4fd340d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:19
+msgid ""
+"**Use Edges to be Created Manually** and **Use Faces to be Created "
+"Manually** algorithms should be assigned _before_ mesh generation by the "
+"Python code."
+msgstr ""
+
+# 6778e7ee297443d3a2447643f28b7422
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:21
+msgid ""
+"Consider trying a sample script demonstrating the usage of "
+":ref:`tui_use_existing_faces` algorithm for construction of a 2D mesh "
+"using Python commands."
+msgstr ""
+
+# cd5cbe7268414edb841f7dff26f2d607
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:26
+msgid "**Mesh computed by** :ref:`tui_use_existing_faces` shown in a Shrink mode."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/deleting_groups.po b/doc/gui/locale/fr/LC_MESSAGES/deleting_groups.po
new file mode 100644 (file)
index 0000000..f834bde
--- /dev/null
@@ -0,0 +1,50 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# da0c8f0c6eea4ca89f85a0088293b1c2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/deleting_groups.rst:5
+msgid "Deleting groups with content"
+msgstr ""
+
+# 595cfb5f81104bceb787165f399b5e92
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/deleting_groups.rst:7
+msgid ""
+"To delete groups and their content, in the menu select **Modification -> "
+"Remove -> Delete groups with Contents** and select one or several groups "
+"you wish to delete in the 3D viewer or in the Object Browser."
+msgstr ""
+
+# 27e4c20df5cb437195a61c1305ebbf32
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/deleting_groups.rst:9
+msgid ""
+"The selected groups will be listed in **Delete groups with contents** "
+"menu. Then click **Apply and Close** button to remove the selected groups"
+" and close the menu or **Apply** button to remove them and proceed with "
+"the selection."
+msgstr ""
+
+# 660539b2cd4e442fb90d67f16e42cb49
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/deleting_groups.rst:16
+msgid ""
+"Please, note that this operation removes groups **with their elements**. "
+"To delete a group and leave its elements intact, right-click on the group"
+" in the Object Browser and select **Delete** in the pop-up menu or select"
+" the group and choose **Edit -> Delete** in the main menu."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/diagonal_inversion_of_elements.po b/doc/gui/locale/fr/LC_MESSAGES/diagonal_inversion_of_elements.po
new file mode 100644 (file)
index 0000000..fd6f7af
--- /dev/null
@@ -0,0 +1,68 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 42e4731d2e82498f9916eabbcf5abd95
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:5
+msgid "Diagonal inversion of two triangles"
+msgstr ""
+
+# e15d94f75cb844fbb2a7347756e1314d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:7
+msgid ""
+"In MESH you can inverse the diagonal (edge) of a pseudo-quadrangle formed"
+" by two neighboring triangles with one common edge."
+msgstr ""
+
+# e18a7165cf184b9e8478fe7b594bf5d7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:10
+msgid "**To inverse the diagonal:**"
+msgstr ""
+
+# cce53a91498d44728049c3ab70921683
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:12
+msgid ""
+"From the **Modification** menu choose the **Diagonal inversion** item or "
+"click **\"Diagonal Inversion\"** button in the toolbar."
+msgstr ""
+
+# fe71e652c0b6416295153408a1a1e23a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:20
+msgid "The following dialog box shall appear:"
+msgstr ""
+
+# bc40291f856d4747b0ee3434ee0c5c42
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:25
+msgid ""
+"Enter IDs of nodes forming the required edge in the **Edge** field (the "
+"node IDs must be separated by dashes) or select this edge in the 3D "
+"viewer."
+msgstr ""
+
+# ec9528ded57a4754a7255d0a51517eb8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:26
+msgid "Click the **Apply** or **Apply and Close** button."
+msgstr ""
+
+# dc1e251576e44f75b478608957b4ceab
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:40
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_diagonal_inversion` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/display_entity.po b/doc/gui/locale/fr/LC_MESSAGES/display_entity.po
new file mode 100644 (file)
index 0000000..49ac7d9
--- /dev/null
@@ -0,0 +1,51 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 135c20ba93794e7b807ec22eb6e52268
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_entity.rst:5
+msgid "Display Entity"
+msgstr ""
+
+# 8a6a82fcf8b74d7e9c01b3d73a4b7a90
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_entity.rst:7
+msgid ""
+"In this submenu you can choose to display only volumes, faces or edges or"
+" combine them."
+msgstr ""
+
+# 933a18f4dc8b4213a03dc29e45618189
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_entity.rst:27
+msgid "If the mesh contains a lot of elements, select **Choose...** item,"
+msgstr ""
+
+# 7f1150a0a698424ba4a5891da9ca54cd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_entity.rst:35
+msgid ""
+"and **Display Entity** dialog box will provide a way to display only some"
+" entities at the first display instead of displaying all entities, which "
+"can take a long time."
+msgstr ""
+
+# c6ba829de91b4525bf7e30e4acc36e2d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_entity.rst:43
+msgid ""
+"This menu item is available from the context menu in both Object browser "
+"and 3D viewer."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/display_mode.po b/doc/gui/locale/fr/LC_MESSAGES/display_mode.po
new file mode 100644 (file)
index 0000000..e60fd7c
--- /dev/null
@@ -0,0 +1,45 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# b95fbc8a990f483caaa996472e44c19f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_mode.rst:5
+msgid "Display Mode"
+msgstr ""
+
+# c327b45a291146048f471484f6afb38e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_mode.rst:7
+msgid ""
+"By default your objects are represented as defined in "
+":ref:`mesh_tab_preferences`. However, right-clicking on the mesh in the "
+"**Object Browser**, and selecting **Display Mode**, you can display your "
+"mesh as:"
+msgstr ""
+
+# 9fcd884d284f4b878665e4e2eba85f2c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_mode.rst:31
+msgid "**Wireframe** can combine with **Nodes** and **Shading**."
+msgstr ""
+
+# 0b6e084814334ae997c0429dd1c8130c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_mode.rst:33
+msgid ""
+"**Shading** and **Wireframe** modes can combine with **Shrink**, however "
+"**Nodes** can't."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/double_elements_control.po b/doc/gui/locale/fr/LC_MESSAGES/double_elements_control.po
new file mode 100644 (file)
index 0000000..c1d03ed
--- /dev/null
@@ -0,0 +1,43 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 29180c98e4a743249d7d78b1aeed590c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_elements_control.rst:5
+msgid "Double edge, Double faces and Double volumes"
+msgstr ""
+
+# 59d063c920a0439eabdc80c5a6e09d83
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_elements_control.rst:7
+msgid ""
+"These mesh quality controls highlight the mesh elements basing on the "
+"same set of nodes."
+msgstr ""
+
+# d28bb6f9dec048b98ecdf91fa9f056b1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_elements_control.rst:12
+msgid ""
+"In this picture some faces are coincident after copying all elements with"
+" translation with subsequent Merge of nodes."
+msgstr ""
+
+# 941183a3377e44e98a9fd65acdba5e32
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_elements_control.rst:14
+msgid "*A sample TUI Script of a* :ref:`filter_double_elements`:."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/double_nodes_control.po b/doc/gui/locale/fr/LC_MESSAGES/double_nodes_control.po
new file mode 100644 (file)
index 0000000..537c955
--- /dev/null
@@ -0,0 +1,46 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 88d8c854db4644f6a5b009412db1b608
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_control.rst:5
+msgid "Double nodes"
+msgstr ""
+
+# 22529b5a5a764ab8a59c1f4110f95a06
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_control.rst:7
+msgid ""
+"This mesh quality control highlights the nodes which are coincident with "
+"other nodes (within a given tolerance). Distance at which two nodes are "
+"considered coincident is defined by :ref:`dbl_nodes_tol_pref` preference."
+msgstr ""
+
+# 93d2ce3a6fbd44fba9a23d3e38513d3b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_control.rst:12
+msgid ""
+"In this picture some nodes are coincident after copying all elements with"
+" translation."
+msgstr ""
+
+# 6342070c6e5748f0a06f3032b1eb7f83
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_control.rst:14
+msgid ""
+"**See also**: A sample TUI Script of a :ref:`tui_double_nodes_control` "
+"filter."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/double_nodes_page.po b/doc/gui/locale/fr/LC_MESSAGES/double_nodes_page.po
new file mode 100644 (file)
index 0000000..4fd023e
--- /dev/null
@@ -0,0 +1,341 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 5147fa31ae3b483b8c1072e1e45c0684
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:5
+msgid "Duplicate Nodes or/and Elements"
+msgstr ""
+
+# bee16d2e37f34b0e9a398478b5ef8f3a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:7
+msgid ""
+"This operation allows duplicating mesh nodes or/and elements, which can "
+"be useful to emulate a crack in the model."
+msgstr ""
+
+# 012ca3a95eae461490b79abd136c6321
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:9
+msgid ""
+"Duplication consists in creation of mesh elements \"equal\" to existing "
+"ones."
+msgstr ""
+
+# 14b9d90e49ff464e9daddf7d5d95d55a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:11
+msgid "**To duplicate nodes or/and elements:**"
+msgstr ""
+
+# f3d3df00d1bb4492a58c77e0b45dc6f6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:13
+msgid ""
+"From the **Modification** menu choose **Transformation** -> **Duplicate "
+"Nodes or/and Elements** item or click **\"Duplicate Nodes or/and "
+"Elements\"** button in the toolbar."
+msgstr ""
+
+# b4ac34ca4ecf4579b08656c175d92774
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:21
+msgid ""
+"Check in the dialog box one of four radio buttons corresponding to the "
+"type of duplication operation you would like to perform."
+msgstr ""
+
+# 75b05a186ab14690b26409eaf534b482
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:22
+msgid ""
+"Fill the other fields available in the dialog box (depending on the "
+"chosen operation mode)."
+msgstr ""
+
+# 596eb28b911347c2a0926dff4afdccbe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:23
+msgid ""
+"Click the **Apply** or **Apply and Close** button to perform the "
+"operation of duplication."
+msgstr ""
+
+# ffc1a8b8bf904409b6a014fdbd9bd9cb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:25
+msgid "\"Duplicate Nodes or/and Elements\" dialog has four working modes:"
+msgstr ""
+
+# 9bf50c98e6724294a8470c6c1543e464
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:27
+msgid ":ref:`mode_without_elem_anchor`"
+msgstr ""
+
+# 2a5a2df31afa4348be54537af6de0bff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:28
+msgid ":ref:`mode_with_elem_anchor`"
+msgstr ""
+
+# e8263574ea36477aa7623c1955f44c89
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:29
+msgid ":ref:`mode_elem_only_anchor`"
+msgstr ""
+
+# f0791cde0a6241538036a1d6ebc102b3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:30
+msgid ":ref:`mode_group_boundary_anchor`"
+msgstr ""
+
+# 0551dca570624dc282f98101b99f422b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:37
+msgid "Duplicate nodes only"
+msgstr ""
+
+# 31ef20c3e6a34becbc14fb5049de5fda
+# 404278b79a2d4ac98f2ab3ba7bc24ba6
+# bb33b0bd56ce44bba3940061ccd07195
+# 753f34b88d864324aba9b816fc7b8412
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:43
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:75
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:118
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:136
+msgid "Parameters to be defined in this mode:"
+msgstr ""
+
+# cd8779af6bf54feabab3a81101c69a0b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:45
+msgid ""
+"**Group of nodes to duplicate** (**mandatory**): these nodes will be "
+"duplicated."
+msgstr ""
+
+# 2d4f75955d584bbfb4d867f2c9faa5b8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:46
+msgid ""
+"**Group of elements to replace nodes with new ones** (**optional**): the "
+"new nodes will replace the duplicated nodes within these elements."
+msgstr ""
+
+# 7ced7111b7af4ec3a9b624c8b4e3f9bb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:47
+msgid ""
+"**Construct group with newly created nodes** option (**checked by "
+"default**): if checked - the group with newly created nodes will be "
+"built."
+msgstr ""
+
+# 2792968de8484dd8a4d0f2cf0a5b5c9e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:49
+msgid ""
+"A schema below illustrates how the crack is emulated using the node "
+"duplication."
+msgstr ""
+
+# a5bf3d65e56b4d7f97788208e8dbc4e3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:61
+msgid ""
+"This schema shows a virtual crack in a 2D mesh created using this "
+"duplication mode:"
+msgstr ""
+
+# e6fc75f21ea6496198aa0b1e50a1f4cb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:59
+msgid "Black balls are **duplicated nodes**."
+msgstr ""
+
+# be004054e8874136bd29e6bad7160377
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:60
+msgid "Red balls are **new nodes**."
+msgstr ""
+
+# 1e6e9fd72cdb48cfbaa0987a2c5bb368
+# fc37f5c61c0e4c538566eb9323b68f1b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:61
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:99
+msgid "**Elements to replace nodes with new ones** are marked with green."
+msgstr ""
+
+# c38eb7cc23634448b1e7241575aea13b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:64
+msgid "Note that in the reality **duplicated nodes** coincide with **new nodes**."
+msgstr ""
+
+# 8601d651b0a64824b4f18c9378dbac33
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:70
+msgid "Duplicate nodes and border elements"
+msgstr ""
+
+# 83f41673be9c483998dd3136d1aa49b5
+# afb0565acf6e4c9f8b7df68e9a8726bb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:77
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:120
+msgid ""
+"**Group of elements to duplicate** (**mandatory**): these elements will "
+"be duplicated."
+msgstr ""
+
+# 0f9fb6bccd4e40e48897f8bff8b0fe59
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:78
+msgid ""
+"**Group of nodes not to duplicate** (**optional**): group of nodes at "
+"crack bottom which will not be duplicated."
+msgstr ""
+
+# 2a23e9b269054e63b9e14ca20067d4b9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:79
+msgid ""
+"**Group of elements to replace nodes with new ones** (**mandatory**): the"
+" new nodes will replace the nodes to duplicate within these elements."
+msgstr ""
+
+# 2e757ab99da4412cb9cf995c67938315
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:80
+msgid ""
+"**Construct group with newly created elements** option (**checked by "
+"default**): if checked - the group of newly created elements will be "
+"built."
+msgstr ""
+
+# 763d583bb74f42c0bcae4009e8b52386
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:81
+msgid ""
+"**Construct group with newly created nodes** option (**checked by "
+"default**): if checked - the group of newly created nodes will be built."
+msgstr ""
+
+# e97711ca7147448aacec7cb4cd6301c2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:84
+msgid ""
+"A schema below explains the crack emulation using the node duplication "
+"with border elements."
+msgstr ""
+
+# 07af94bbfb21422ca71f32b1349818f8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:92
+msgid ""
+"This schema shows a virtual crack in a 2D mesh created using this "
+"duplication mode. In this schema:"
+msgstr ""
+
+# 1830fc51702740339fc80233ee94fc63
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:94
+msgid "Black segments are **duplicated elements** (edges in 2D case)."
+msgstr ""
+
+# 441c4fa9022c4218b4fc87e40609c774
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:95
+msgid ""
+"Black balls (except for the lowest one) are duplicated nodes of "
+"**duplicated elements**."
+msgstr ""
+
+# 2bf9789260e1414bb7433c8e9ac53dbd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:96
+msgid "The lowest black ball is the **non-duplicated node**."
+msgstr ""
+
+# 1d1ce816d3bc4ddda2db246ddb4eab51
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:97
+msgid "Red balls are **newly created nodes**."
+msgstr ""
+
+# 50e8b24787c64773a93a0b28d3c8c679
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:98
+msgid "Red segments are **created elements** (edges)."
+msgstr ""
+
+# f32adbca95d34f38857ea4bba74da954
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:101
+msgid ""
+"Note that in the reality **nodes to duplicate** coincide with **new "
+"nodes**."
+msgstr ""
+
+# a36f630e3c774df5b1c653deef9263c7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:103
+msgid ""
+"In a 3D case, where **elements to duplicate** are faces, the edges "
+"located at the \"crack\" (if any) are cloned automatically."
+msgstr ""
+
+# fea519884d6f4cee99e7bb95a6a8339d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:110
+msgid "Duplicate elements only"
+msgstr ""
+
+# 703a787a2cb64a18a00ae013af7d2156
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:112
+msgid ""
+"This mode duplicates the given elements, i.e. creates new elements with "
+"the same nodes as the given elements."
+msgstr ""
+
+# 302ef6771b8647b995203c19fcf9251a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:121
+msgid ""
+"**Construct group with newly created elements** option (**checked by "
+"default**): if checked - the group of newly created elements will be "
+"built. The name of the created group starts from \"DoubleElements\"."
+msgstr ""
+
+# 178dd2990df74d3e88c6e21e26c629e2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:127
+msgid "Duplicate nodes on group boundaries"
+msgstr ""
+
+# db5d6ad28c224676ab8a8b812415a84a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:129
+msgid ""
+"This mode duplicates nodes located on boundaries between given groups of "
+"volumes."
+msgstr ""
+
+# abda119ffd214b52a8b0f82eddee5a35
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:138
+msgid ""
+"**Groups (faces or volumes)** (**mandatory**): list of mesh groups. These"
+" groups should be disjoint, i.e. should not have shared elements."
+msgstr ""
+
+# 04fb78bad6e14785881728cbadbd501f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:139
+msgid ""
+"If **Create joint elements** option is activated, flat elements are "
+"created on the duplicated nodes: a triangular facet shared by two volumes"
+" of two groups generates a flat prism, a quadrangular facet generates a "
+"flat hexahedron. Correspondingly 2D joint elements (null area faces) are "
+"generated where edges are shared by two faces. The created flat volumes "
+"(or faces) are stored in groups. These groups are named according to the "
+"position of the group in the list of groups: group \"j_n_p\" is a group "
+"of flat elements that are built between the group \\#n and the group \\#p"
+" in the group list. All flat elements are gathered into the group named "
+"\"joints3D\" (correspondingly \"joints2D\"). The flat elements of "
+"multiple junctions between the simple junction are stored in a group "
+"named \"jointsMultiples\"."
+msgstr ""
+
+# 9062bb490b184743b1d0695078653fb9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:140
+msgid ""
+"If **On all boundaries** option is activated, the volumes (or faces), "
+"which are not included into **Groups** input, are considered as another "
+"group and thus the nodes on the boundary between **Groups** and the "
+"remaining mesh are also duplicated."
+msgstr ""
+
+# 3ef21a415a784b9f84eceef20ff9221c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:143
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_duplicate_nodes` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/editing_groups.po b/doc/gui/locale/fr/LC_MESSAGES/editing_groups.po
new file mode 100644 (file)
index 0000000..1fb937b
--- /dev/null
@@ -0,0 +1,93 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 29f257717b9f47dd83a5976ef374f548
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:5
+msgid "Editing groups"
+msgstr ""
+
+# 97180320e8364896bd43f26e15cbb37f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:7
+msgid "**To edit an existing group of elements:**"
+msgstr ""
+
+# 3b1c90cdecf443b49812a63ca8afa82b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:9
+msgid ""
+"Select your group in the Object Browser and in the **Mesh** menu click "
+"the **Edit Group** item or **\"Edit Group\"** button in the toolbar."
+msgstr ""
+
+# 861e0c9d6f2b4949b3ef72d0a9d9b9a1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:19
+msgid ""
+"The following dialog box will appear (if the selected group is "
+"**standalone**, else this dialog looks different):"
+msgstr ""
+
+# 7206da41ad034d9ba2c06616de676708
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:24
+msgid ""
+"In this dialog box you can modify the name and the color of your group "
+"despite of its type. You can add or remove the elements composing a "
+"**standalone group**. You can change criteria of the filter of a **group "
+"on filter**. For more information see "
+":ref:`creating_groups_page`:\"Creating Groups\" page."
+msgstr ""
+
+# f736ea983fd144839115f9c87eff47cc
+# fd5aff08297941ffa9da1f0ec85ac9ba
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:26
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:47
+msgid ""
+"Click the **Apply** or **Apply and Close** button to confirm modification"
+" of the group."
+msgstr ""
+
+# fa8ff303c85f4974b5e851f92c96f11b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:32
+msgid "Convert to stanalone group"
+msgstr ""
+
+# 3524bfde667244ec84cf1438818e7057
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:34
+msgid ""
+"**To convert an existing group on geometry or a group on filer into a "
+"standalone group and modify its contents:**"
+msgstr ""
+
+# a51bcc3c5c0e4eda9f50971919f8946f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:36
+msgid ""
+"Select your group on geometry or on filter in the Object Browser and in "
+"the **Mesh** menu click the **Edit Group as Standalone** item."
+msgstr ""
+
+# 7d35ca78670d49d8baddaa74a1251aaf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:45
+msgid ""
+"The selected group will be converted into a standalone group and its "
+"contents can be modified."
+msgstr ""
+
+# 513bce03244d4bc887a30a2d14ec7f5a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:49
+msgid "**See also:** A sample TUI Script of an :ref:`tui_edit_group` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/editing_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/editing_meshes.po
new file mode 100644 (file)
index 0000000..adffa52
--- /dev/null
@@ -0,0 +1,60 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# e9c884fc93424691a36a5b5a08908d42
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_meshes.rst:5
+msgid "Editing Meshes"
+msgstr ""
+
+# 4108e447b8d44bf29f56a5724ab4c803
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_meshes.rst:7
+msgid ""
+"After you have created a mesh or sub-mesh with definite applied meshing "
+"algorithms and hypotheses you can edit your mesh by **assigning** other "
+"algorithms and/or hypotheses or **unassigning** the applied hypotheses "
+"and algorithms. The editing proceeds in the same way as "
+":ref:`create_mesh_anchor`:\"Mesh Creation\"."
+msgstr ""
+
+# d86646f92966449492afab0cc02d1f84
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_meshes.rst:14
+msgid ""
+"You can also change values for the current hypothesis by clicking the "
+"**\"Edit Hypothesis\"** button."
+msgstr ""
+
+# dc3c4db7324c4e3499d941a4dc820715
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_meshes.rst:23
+msgid ""
+"Mesh entities generated before using changed hypotheses are automatically"
+" removed."
+msgstr ""
+
+# 6beaa93e8a474a9a8e5ff92a0036705a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_meshes.rst:25
+msgid ""
+"See how the mesh constructed on a geometrical object changes if we apply "
+"different meshing parameters to it."
+msgstr ""
+
+# 15b4f649638048f0b81ba2cb2a899822
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_meshes.rst:41
+msgid "**See Also** a sample TUI Script of an :ref:`tui_editing_mesh` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/extrusion.po b/doc/gui/locale/fr/LC_MESSAGES/extrusion.po
new file mode 100644 (file)
index 0000000..f6cb477
--- /dev/null
@@ -0,0 +1,346 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 2364aec5fd98494fa6a3b3bea96909b9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:5
+msgid "Extrusion"
+msgstr ""
+
+# ebff233d82a74fcb981c8c470c7219cf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:7
+msgid ""
+"Extrusion is used to build mesh elements of plus one dimension than the "
+"input ones. Boundary elements around generated mesh of plus one dimension"
+" are additionally created. All created elements can be automatically "
+"grouped. Extrusion can be used to create a "
+":ref:`extrusion_struct`:\"structured mesh from scratch\"."
+msgstr ""
+
+# bc07284d8f4f4e28b6e5527d32132997
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:15
+msgid ""
+"Any node, segment or 2D element can be extruded. Each type of elements is"
+" extruded into a corresponding type of result elements:"
+msgstr ""
+
+# ee1ba33fc49041b8ae0e3ca45b004ae6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:18
+msgid "**Extruded element**"
+msgstr ""
+
+# 66f55ddccdce468ab1523f3f86a39835
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:18
+msgid "**Result element**"
+msgstr ""
+
+# 38c41b21cf1d40f7b4cd9739fcf5b02d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:20
+msgid "Node"
+msgstr ""
+
+# 632755e4966948b0b6b4193471772513
+# 1d43529b13fe4903a0dad1c935023197
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:20
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:22
+msgid "Segment"
+msgstr ""
+
+# f1ba62dcf07641cba2c6e659df2cc409
+# fc5653560d5f4a6cbbcf5a4e48603537
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:22
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:26
+msgid "Quadrilateral"
+msgstr ""
+
+# 8884d612e5f54aec87829e567d81bcc6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:24
+msgid "Triangle"
+msgstr ""
+
+# 63ba769c64114e27b40f0a74bd8d3604
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:24
+msgid "Pentahedron"
+msgstr ""
+
+# a322c15c31f142d488551274d60e8a9e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:26
+msgid "Hexahedron"
+msgstr ""
+
+# 7eb6eaf57f004d31927ac6eabf97b7cb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:28
+msgid "Polygon"
+msgstr ""
+
+# f611530d307e459aa62eefb31be44873
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:28
+msgid "Polyhedron"
+msgstr ""
+
+# de5e6214009d48b0a25cf0e005ac62ad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:30
+msgid "Hexagonal polygon"
+msgstr ""
+
+# 54d5dcd07ecb4111bd18c06a6da7be1a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:30
+msgid "Hexagonal prism"
+msgstr ""
+
+# 5783f80db812442fa92882f2cd6ed227
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:34
+msgid ""
+"When 2D elements are extruded, in addition to 3D elements segments are "
+"created on the ribs of the resulting 3D mesh. Free edges of input 2D "
+"elements generate logically horizontal rib segments. Logically vertical "
+"rib segments are generated from the nodes belonging to a sole input 2D "
+"element (the figure below illustrates this rule)."
+msgstr ""
+
+# b1cbf516acca40e5bcb88be731246438
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:43
+msgid "**To use extrusion:**"
+msgstr ""
+
+# e4b0a7aca4d349309ef5d31e63b00a66
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:45
+msgid ""
+"From the **Modification** menu choose the **Extrusion** item or click "
+"**\"Extrusion\"** button in the toolbar."
+msgstr ""
+
+# 693752be10014feb9a87762183d890d6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:53
+msgid "The following dialog will appear:"
+msgstr ""
+
+# c3703d1aa91c49ba8e99c04e8c52df4f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:60
+msgid "In this dialog:"
+msgstr ""
+
+# c30f5aa684394cba8f2b31d58410292f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:67
+msgid ""
+"Use *Selection* button to specify what you are going to  select at a "
+"given moment, **Nodes**, **Edges** or **Faces**."
+msgstr ""
+
+# d0159decd96a479591271a64f8f09a9d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:73
+msgid ""
+"Specify **Nodes**, **Edges** and **Faces**, which will be extruded, by "
+"one of following means:"
+msgstr ""
+
+# cf74b51d01e74797a40dcdc6ec5d65a1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:70
+msgid ""
+"**Select the whole mesh, sub-mesh or group** activating the corresponding"
+" check-box."
+msgstr ""
+
+# 496ae8d70e244acba70124abc8c6539a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:71
+msgid ""
+"Choose mesh elements with the mouse in the 3D Viewer. It is possible to "
+"select a whole area with a mouse frame."
+msgstr ""
+
+# 63c868c12f4a44e3ae22eed9bfb4826e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:72
+msgid ""
+"Input the element IDs directly in **Node IDs**, **Edge IDs** and **Face "
+"IDs** fields. The selected elements will be highlighted in the viewer, if"
+" the mesh is shown there."
+msgstr ""
+
+# c723cfa91f234662a336c6e696edad7c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:73
+msgid ""
+"Apply Filters. **Set filter** button allows to apply a filter to the "
+"selection of elements. See more about filters in the "
+":ref:`filtering_elements`:\"Selection filters\" page."
+msgstr ""
+
+# ee94b752be9d4b75b998a61ef027b8f8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:76
+msgid "If the **Extrusion to Distance** radio button is selected"
+msgstr ""
+
+# 80f0a501c039494fa6cdb49a95f3c8b6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:76
+msgid "specify the translation vector by which the elements will be extruded."
+msgstr ""
+
+# 46a93739cd43409782f9cc81529f5e6d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:78
+msgid "If the **Extrusion Along Vector** radio button is selected"
+msgstr ""
+
+# fefb6a7cb0f749b9953fe4b142909237
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:83
+msgid ""
+"specify the components of the **Vector** along which the elements will be"
+" extruded, either directly or by selecting the mesh face (the normal to "
+"the face will define the vector),"
+msgstr ""
+
+# 43be03535a7a4e1ea9dca1e8b3dc71fe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:84
+msgid ""
+"specify the **Distance** of extrusion along the vector (it can be "
+"negative)."
+msgstr ""
+
+# bb5c369c3e7846afbada8631f4c62600
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:88
+msgid ""
+"If the **Extrusion By Normal** radio button is selected, every node of "
+"the selected faces is extruded along the *average* of the *normal* "
+"vectors to the faces sharing the node. (Nodes and edges cannot be "
+"extruded in this mode.)"
+msgstr ""
+
+# 66f8279ea7fd47b3b42c0d87987bc3ad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:93
+msgid "Specify the **Distance** of extrusion (it can be negative),"
+msgstr ""
+
+# 5a68a26f70a343b68a8b65c58a0ca736
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:94
+msgid ""
+"Use **Along average normal** check-box to specify along which vector the "
+"distance is measured."
+msgstr ""
+
+# 774f7b697b244ed692daa2e4ea20c506
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:95
+msgid ""
+"If it is *activated* the distance is measured along the average normal "
+"mentioned above."
+msgstr ""
+
+# 141e69fb74d748b3801bb69d53369658
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:96
+msgid ""
+"If it is *deactivated* every node is extruded along the average normal "
+"till its intersection with a virtual plane obtained by translation of the"
+" face sharing the node along its own normal by the **Distance**."
+msgstr ""
+
+# 5a16428f873e499bbb978c871ebda02f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:98
+msgid ""
+"The picture below shows a cross-section of a 2D mesh extruded with "
+"**Along average normal** activated (to the left) and deactivated (to the "
+"right)."
+msgstr ""
+
+# 13537234a1ae43bf87fcc450c709eb58
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:108
+msgid ""
+"**Use only input elements** check-box specifies what elements will be "
+"used to compute the average normal."
+msgstr ""
+
+# 1aee516cd243484b96295b8061828dd2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:109
+msgid ""
+"If it is *activated* only selected faces, among faces sharing the node, "
+"are used to compute the average normal at the node."
+msgstr ""
+
+# d644b3e115f34653a56f746f7d775170
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:110
+msgid "Else all faces sharing the node are used."
+msgstr ""
+
+# c980870b2226438eb4237b372b558037
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:112
+msgid ""
+"The picture below shows a cross-section of a 2D mesh the upper plane of "
+"which is extruded with **Use only input elements** activated (to the "
+"left) and deactivated (to the right)."
+msgstr ""
+
+# b79e7639a6474f3182a838f2757aa90f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:122
+msgid "Specify the **Number of steps**."
+msgstr ""
+
+# b16bd8b181304246b9bcecf63b4a58cd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:141
+msgid ""
+"Optionally specify **Scale Factors**. Each scale factor in the list is "
+"applied to nodes of a corresponding extrusion step unless **Linear "
+"Variation of Scale Factors** is checked, is which case the scale factors "
+"are spread over all extrusion steps."
+msgstr ""
+
+# 68c3f5a414364ee8a09781e956586294
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:124
+msgid ""
+"**Scaling Center** can be defined either using spin boxes or by picking a"
+" node in the Viewer or by picking a geometrical vertex in the Object "
+"Browser."
+msgstr ""
+
+# 836c4b43b7c24aa4aa676a9173dc9e0c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:125
+msgid "**Add** button adds a scale factor to the list."
+msgstr ""
+
+# 08a65a077ad74266bb3dc428552672ed
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:133
+msgid "**Remove** button removes selected scale factors from the list."
+msgstr ""
+
+# 65c23b96ef0c4583af562130852040cc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:143
+msgid ""
+"If you activate **Generate Groups** check-box, the **result elements** "
+"created from **selected elements** contained in groups will be included "
+"into new groups named by pattern \"<old group name>_extruded\" and \"<old"
+" group name>_top\". For example if a selected quadrangle is included in "
+"*g_Faces* group (see figures below) then result hexahedra will be "
+"included in *g_Faces_extruded* group and a quadrangle created at the "
+"\"top\" of extruded mesh will be included in *g_Faces_top group*."
+msgstr ""
+
+# 67e7563b3d7e4482a49aa461a724ffa1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:151
+msgid "This check-box is active only if there are some groups in the mesh."
+msgstr ""
+
+# bd6a9b1d09cb4817b044a257b9c221cd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:155
+msgid "Click **Apply** or **Apply and Close**  button to confirm the operation."
+msgstr ""
+
+# f08ac327c1d042559c34b64d86c475bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:160
+msgid "Example: creation of a structured mesh from scratch"
+msgstr ""
+
+# 75d97cfe13ff4c22aadf096504c666df
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:181
+msgid "**See Also** a sample TUI Script of an :ref:`tui_extrusion` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/extrusion_along_path.po b/doc/gui/locale/fr/LC_MESSAGES/extrusion_along_path.po
new file mode 100644 (file)
index 0000000..525e613
--- /dev/null
@@ -0,0 +1,250 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 588d53aa2c134a96bf8bc6f57f04dbfc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:5
+msgid "Extrusion along Path"
+msgstr ""
+
+# 4aeec93989e04f0b8a5cd47900688c45
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:7
+msgid ""
+"In principle, **Extrusion along Path** works in the same way as "
+":ref:`extrusion_page`, the main difference is that we define not a "
+"vector, but a path of extrusion which must be an 1D mesh or 1D sub-mesh. "
+"To get an idea of how this algorithm works, examine several examples, "
+"starting from the most simple case of extrusion along a straight edge. In"
+" the examples the sample mesh will be extruded along different paths and "
+"with different parameters. This 2D mesh has two quadrangle faces and "
+"seven edges. Look at the picture, where white digits are the node numbers"
+" and green are the element numbers:"
+msgstr ""
+
+# 432bc14cb72f4d5eb8d0da786d0326f8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:16
+msgid "Extrusion along a straight edge"
+msgstr ""
+
+# 61ae00ddc63e4843a2b47f96ac7b23b5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:17
+msgid "(not using base point or angles)"
+msgstr ""
+
+# 3da83113d7064ebc94c32998cdfe1fd4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:31
+msgid "Node #1 of path mesh has been selected as Start node."
+msgstr ""
+
+# dbeb00b92d90425eb0d14084c6f2fa49
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:34
+msgid "Extrusion along a curvilinear edge"
+msgstr ""
+
+# 09c57ebbbd7d4cea88a63192af3991bb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:35
+msgid "(with and without angles)"
+msgstr ""
+
+# acf8f5192c864441883b3ecb898363cd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:49
+msgid "Node #1 of path mesh has been selected as **Start node**."
+msgstr ""
+
+# 3ec6691bd161445593511faff96e9bb4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:58
+msgid "Extrusion of a 2D face along a mesh built on a wire"
+msgstr ""
+
+# 4e26b95dea014ad79ce8a6b7e00ca07b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:60
+msgid ""
+"In this example the path mesh has been built on a wire containing 3 "
+"edges. Node 1 is a start node. Linear angle variation by 180 degrees has "
+"also been applied."
+msgstr ""
+
+# beba5dd38ec446dbba901980a6d730b2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:75
+msgid "Extrusion of 2d elements along a closed path"
+msgstr ""
+
+# 542a40ad28784840813301cd37adfb95
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:89
+msgid ""
+"Note, that no sewing has been done, so, there are six coincident nodes "
+"and two coincident faces in the resulting mesh."
+msgstr ""
+
+# ae6ed7ef04af4adf8c16d7c73551dd17
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:98
+msgid "**To use Extrusion along Path:**"
+msgstr ""
+
+# 972d0d7b8e2d4757a2bbb9204041a949
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:100
+msgid ""
+"From the **Modification** menu choose the **Extrusion along a path** item"
+" or click **\"Extrusion along a path\"** button in the toolbar."
+msgstr ""
+
+# 73d0abac14d740f3ad742d87e6f41e5c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:108
+msgid "The following dialog will appear:"
+msgstr ""
+
+# 76894b1abc2d4beda37f23172ad80977
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:113
+msgid "In this dialog:"
+msgstr ""
+
+# c0873410c52f4d3fa8c537276e27d53a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:115
+msgid ""
+"Use *Selection* button to specify what you are going to select at a given"
+" moment, **Nodes**, **Edges** or **Faces**."
+msgstr ""
+
+# 6778b72713654449bfc388a7513d6919
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:123
+msgid ""
+"Specify **Nodes**, **Edges** and **Faces**, which will be extruded, by "
+"one of following means:"
+msgstr ""
+
+# 32617b683fb443608c76c82457e647e6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:125
+msgid "**Select the whole mesh, sub-mesh or group** activating this check-box."
+msgstr ""
+
+# eb8f59b7bdfb4f6fb93d7060290737b0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:126
+msgid ""
+"Choose mesh elements with the mouse in the 3D Viewer. It is possible to "
+"select a whole area with a mouse frame."
+msgstr ""
+
+# d6b66337ef8d49bf902de528b4b63f5d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:127
+msgid ""
+"Input the element IDs directly in **Node IDs**, **Edge IDs** and **Face "
+"IDs** fields. The selected elements will be highlighted in the viewer, if"
+" the mesh is shown there."
+msgstr ""
+
+# fdd735e466c94dc58e0ba134a190976d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:128
+msgid ""
+"Apply Filters. **Set filter** button allows to apply a filter to the "
+"selection of elements. See more about filters in the "
+":ref:`filtering_elements` page."
+msgstr ""
+
+# bf5ac45174b54265a04afd558fa641ce
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:130
+msgid ""
+"Define the **Path** along which the elements will be extruded.Path "
+"definition consists of several elements:"
+msgstr ""
+
+# 1e63128e7c254a54be66ec3a0780fcc7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:132
+msgid ""
+"**Mesh or sub-mesh** - 1D mesh or sub-mesh, along which proceeds the "
+"extrusion."
+msgstr ""
+
+# c126f4fd09a942ca93778a4201572569
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:133
+msgid ""
+"**Start node** - the start node of the Path. It is used to define the "
+"direction of extrusion."
+msgstr ""
+
+# c81a11bc397d41aaa19c546989e03c5c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:136
+msgid ""
+"If you activate **Generate Groups** check-box, the **result elements** "
+"created from **selected elements** contained in groups will be included "
+"into new groups named by pattern \"<old group name>_extruded\" and \"<old"
+" group name>_top\". For example if a  selected quadrangle is included in "
+"*g_Faces* group (see figures below) then result hexahedra will be "
+"included in *g_Faces_extruded* group and a quadrangle created at the "
+"\"top\" of extruded mesh will be included in *g_Faces_top group*."
+msgstr ""
+
+# 3f041a51d0094365a3f3d036df4f2edb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:144
+msgid "This check-box is active only if there are some groups in the mesh."
+msgstr ""
+
+# d770e6d7fbd3438b99983300c7578f2a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:149
+msgid "There are two optional parameters, which can be very useful:"
+msgstr ""
+
+# 854e4054a12f473785e0d111bd04bb38
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:151
+msgid ""
+"If the path of extrusion is curvilinear, at each iteration the extruded "
+"elements are rotated to keep its initial angularity to the curve. By "
+"default, the **Base Point** around which the elements are rotated is the "
+"mass center of the elements (note that it can differ from the gravity "
+"center computed by *Geometry* module for the  underlying shape), however,"
+" you can specify any point as the **Base Point** and the elements will be"
+" rotated with respect to this point. Note that only the displacement of "
+"the **Base Point** exactly equals to the path, and all other extruded "
+"elements simply keep their position relatively to the **Base Point** at "
+"each iteration."
+msgstr ""
+
+# 8cda2b8fd95e4e55894e0c5ba64189d7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:153
+msgid ""
+"The elements can also be rotated around the path to get the resulting "
+"mesh in a helical fashion. You can set the values of angles at the right,"
+" add them to the list of angles at the left by pressing the **\"Add\"** "
+"button and remove them from the list by pressing the **\"Remove\"** "
+"button."
+msgstr ""
+
+# 73808985fda548e8b32349d633ce9c61
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:167
+msgid ""
+"**Linear variation of the angles** option allows defining the angle of "
+"gradual rotation for the whole path. At each step the elements will be "
+"rotated by *( angle / nb. of steps )*."
+msgstr ""
+
+# 13433694aaea4fd0ba18f3b9d35d08c3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:171
+msgid ""
+"Click **Apply** or **Apply and Close**  button to confirm the operation. "
+"Mesh edges will be extruded into faces, faces into volumes. The external "
+"surface of the resulting 3d mesh (if faces have been extruded) is covered"
+" with faces, and corners with edges. If the path is closed, the resulting"
+" mesh can contain duplicated nodes and faces, because no sewing is done."
+msgstr ""
+
+# 8c7e5234ca904017953ca8e334796d25
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:174
+msgid ""
+"**See Also** a sample TUI Script of an :ref:`tui_extrusion_along_path` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/find_element_by_point.po b/doc/gui/locale/fr/LC_MESSAGES/find_element_by_point.po
new file mode 100644 (file)
index 0000000..6081c19
--- /dev/null
@@ -0,0 +1,73 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 4dc0f3e4fe6748a0a6ce1f0e9807ce9d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:5
+msgid "Find Element by Point"
+msgstr ""
+
+# 073b2bfeb80f44cca499fa25b7521de3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:7
+msgid ""
+"This functionality allows you to find all mesh elements to which belongs "
+"a certain point."
+msgstr ""
+
+# 95619f5461e542d38f9ec4798818c2eb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:9
+msgid ""
+"**To find the elements:** #. Select a mesh or a group #. Select from the "
+"Mesh menu or from the context menu the Find Element by Point item."
+msgstr ""
+
+# 808cd972a4064043ab3b4519afbd56bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:19
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# a552b96c818645748f81db671bcd62b5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:26
+msgid "In this dialog box you should select:"
+msgstr ""
+
+# 936ef9f5e4974b3bbb3ea1fb48943b6e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:26
+msgid "the coordinates of the point;"
+msgstr ""
+
+# 8000622bf5b54cc782de0ecaf6ffe524
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:27
+msgid ""
+"the type of elements to be found; it is also possible to find elements of"
+" all types related to the reference point. Choose type \"All\" to find "
+"elements of any type except for nodes and 0D elements."
+msgstr ""
+
+# 468a7c6589434779ae54692db6406554
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:28
+msgid "Click the **Find** button."
+msgstr ""
+
+# cd9815de90004e28830104b04231c2b6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:37
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_find_element_by_point` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/free_borders.po b/doc/gui/locale/fr/LC_MESSAGES/free_borders.po
new file mode 100644 (file)
index 0000000..49ea459
--- /dev/null
@@ -0,0 +1,44 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# e744aed8ef694ea99b7130e99217c15d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_borders.rst:5
+msgid "Free borders"
+msgstr ""
+
+# 2f1cd2b0475b478096f3af6e60704e7f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_borders.rst:7
+msgid ""
+"This mesh quality control highlights 1D elements (segments) belonging to "
+"one element (face or volume) only."
+msgstr ""
+
+# 8548d598dbbd4a05812f4d4c733374bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_borders.rst:12
+msgid ""
+"In this picture the free borders are displayed in red. (Faces are "
+"explicitly shown via **Display Entity** menu as all elements but segments"
+" are hidden upon this control activation)."
+msgstr ""
+
+# fa891d3c4c794a4f94e45d3169e528ed
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_borders.rst:14
+msgid "**See Also** a sample TUI Script of a :ref:`tui_free_borders` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/free_edges.po b/doc/gui/locale/fr/LC_MESSAGES/free_edges.po
new file mode 100644 (file)
index 0000000..a435d5f
--- /dev/null
@@ -0,0 +1,36 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 5da48859829f4e028b17c84942927153
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_edges.rst:5
+msgid "Free edges"
+msgstr ""
+
+# a897c07e770b49948d19a31018ff06d0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_edges.rst:7
+msgid ""
+"This mesh quality control highlights borders of faces (links between "
+"nodes, not mesh segments) belonging to one face only."
+msgstr ""
+
+# 5e656e8b86c647f49fdeead239e846c1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_edges.rst:15
+msgid "**See Also** a sample TUI Script of a :ref:`tui_free_edges` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/free_faces.po b/doc/gui/locale/fr/LC_MESSAGES/free_faces.po
new file mode 100644 (file)
index 0000000..e420c8a
--- /dev/null
@@ -0,0 +1,44 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 37b63c6f8c2947a98e5027ee26e62a36
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_faces.rst:5
+msgid "Free faces"
+msgstr ""
+
+# b2eed9e5bb4742d09ea37734a74b1e54
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_faces.rst:7
+msgid ""
+"This mesh quality control highlights the faces connected to less than two"
+" mesh volume elements. The free faces are shown with a color different "
+"from the color of shared faces."
+msgstr ""
+
+# f2ddd55c17c24a6c8d3987369b20200f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_faces.rst:12
+msgid ""
+"In this picture some volume mesh elements have been removed, as a result "
+"some faces became connected only to one volume. i.e. became free."
+msgstr ""
+
+# f88c4d87e5aa48c989ca51b9d1541761
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_faces.rst:14
+msgid "**See also:** A sample TUI Script of a :ref:`tui_free_faces` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/free_nodes.po b/doc/gui/locale/fr/LC_MESSAGES/free_nodes.po
new file mode 100644 (file)
index 0000000..9817126
--- /dev/null
@@ -0,0 +1,43 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 00de523f05fb4028973b57a1043944ae
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_nodes.rst:5
+msgid "Free nodes"
+msgstr ""
+
+# 02fa9d9f90b14ce6acd7da029ef05cbc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_nodes.rst:7
+msgid ""
+"This mesh quality control highlights the nodes which are not connected to"
+" any  mesh element."
+msgstr ""
+
+# 1e3a78f5ddba4dd8959674d7be0dfb25
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_nodes.rst:12
+msgid ""
+"In this picture some nodes are not connected to any mesh element after "
+"deleting some elements and adding several isolated nodes."
+msgstr ""
+
+# 1c239db808994ddca40b15e4acefaa4b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_nodes.rst:14
+msgid "**See also:** A sample TUI Script of a :ref:`tui_free_nodes` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/generate_flat_elements.po b/doc/gui/locale/fr/LC_MESSAGES/generate_flat_elements.po
new file mode 100644 (file)
index 0000000..a3e6f44
--- /dev/null
@@ -0,0 +1,44 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 89411e86108a40ff9ef699aa212edc20
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/generate_flat_elements.rst:5
+msgid "Generate flat elements on group boundaries or on faces"
+msgstr ""
+
+# 4d4976b61bf94a46b7add0d0a5acd818
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/generate_flat_elements.rst:7
+msgid ""
+"These functionalities, used in some mechanics calculations, allow to "
+"generate flat volume elements on the boundaries of a list of groups of "
+"volumes, or on a list of groups of faces."
+msgstr ""
+
+# 7b495da34061472ab6f9cb826c9d8879
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/generate_flat_elements.rst:10
+msgid "These functionalities are only available in python scripts."
+msgstr ""
+
+# 93ea46b0809d42a3b7a9807af09e7282
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/generate_flat_elements.rst:12
+msgid ""
+"**See** a sample TUI Script of "
+":ref:`tui_double_nodes_on_group_boundaries` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/group_of_underlying_elements.po b/doc/gui/locale/fr/LC_MESSAGES/group_of_underlying_elements.po
new file mode 100644 (file)
index 0000000..f4296a1
--- /dev/null
@@ -0,0 +1,112 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# d607987c56ae4ed888b4297c350d3cc6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:5
+msgid "Group Based on Nodes of Other Groups"
+msgstr ""
+
+# a92ce49dadd64b8f8eebc759bfed0b4c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:8
+msgid ""
+"To create a standalone group of entities basing on nodes of existing "
+"reference groups, in the **Mesh** menu select **Group of underlying "
+"entities**."
+msgstr ""
+
+# 8e6c856a77a6408e98ef8a22b42366ce
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:10
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# 6fdd3d27da334237a0819be8ce25c2f5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:15
+msgid "In this dialog box specify"
+msgstr ""
+
+# 050d2fa8e0464b7a9bf49dddf09dd567
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:17
+msgid "the resulting **Group name**,"
+msgstr ""
+
+# cbc2c083b9254ae882b884f29cbb6fd4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:18
+msgid "the **Elements Type** of entities of the resulting group,"
+msgstr ""
+
+# e736defec9594c3aaf6fd65946e9b99b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:23
+msgid ""
+"the criterion of inclusion of a mesh entity to the result group, which is"
+" **Number of common nodes** of the entity and the reference groups:"
+msgstr ""
+
+# 4cb2886461674203b41470240952239a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:20
+msgid "**All** - include if all nodes are common;"
+msgstr ""
+
+# a948a443916841f5b9524653fc818827
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:21
+msgid ""
+"**Main** - include if all corner nodes are common (meaningful for a "
+"quadratic mesh)"
+msgstr ""
+
+# 8fabb8b4593e459ca24be8d29bd23d0a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:22
+msgid "**At least one** - include if one or more nodes are common"
+msgstr ""
+
+# 0801c9881b4d47ddb06da1e1eb374992
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:23
+msgid "**Majority** - include if half or more nodes are common"
+msgstr ""
+
+# 459841bfa1294ebf8e57a1577481e8e7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:25
+msgid "select reference groups,"
+msgstr ""
+
+# ac28c573d20143b4a10943d3569086d6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:26
+msgid ""
+"If **Include underlying entities only** option is activated an entity can"
+" be included if it is based on nodes of one element of a reference group."
+msgstr ""
+
+# f7212700b64f4017b7d411a4e862d964
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:29
+msgid "In the figure below, there are two reference Volume groups:"
+msgstr ""
+
+# 235e2411c07745e88d01d050fec69080
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:37
+msgid ""
+"In this case the following results for Faces, Edges and Nodes are "
+"obtained:"
+msgstr ""
+
+# 72befc0b56d94ee881b69420b3f361b1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:57
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_create_dim_group` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/grouping_elements.po b/doc/gui/locale/fr/LC_MESSAGES/grouping_elements.po
new file mode 100644 (file)
index 0000000..20e0abd
--- /dev/null
@@ -0,0 +1,185 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# c054b7a14c9042f8baa4816281a43d06
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:5
+msgid "Grouping elements"
+msgstr ""
+
+# 1783fde7b458439598ddf51139a28a13
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:7
+msgid ""
+"In Mesh module it is possible to create groups of mesh entities: nodes, "
+"edges, faces, volumes, 0D elements or balls. One group contains elements "
+"of only one type. Groups, unlike sub-meshes, are exported along with mesh"
+" entities into the files of following formats: MED, UNV, and CGNS. The "
+"group has a color attribute which is used for visualization only and is "
+"not exported."
+msgstr ""
+
+# 1886e7e9a93946fb9e44e3830cc6cc43
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:9
+msgid "There are three types of groups different by their internal organization:"
+msgstr ""
+
+# 8a37933afc084fbc8c2bcafbbda74046
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:12
+msgid ""
+"**Standalone group** is a static set of mesh entities. Its contents can "
+"be explicitly controlled by the user. Upon removal of the entities "
+"included into the group, e.g. due to modification of  meshing parameter, "
+"the group becomes empty and its content can be restored only manually. "
+"Hence it is reasonable to create standalone groups when the mesh "
+"generation is finished and mesh quality is verified."
+msgstr ""
+
+# dc50a15a6ae94ca19fefca74f810b38b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:12
+msgid ""
+"Creation and edition of large standalone groups in "
+":ref:`creating_groups_page` dialog using manual edition is problematic "
+"due to poor performance of the dialog."
+msgstr ""
+
+# f59ed29ed1034010af2b9d983b45b1ed
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:14
+msgid ""
+"**Group on geometry** is associated to a sub-shape or a group of sub-"
+"shapes of the main shape and includes mesh entities generated on these "
+"geometrical entities. The association to a geometry is established at "
+"group construction and cannot be changed. The group contents are always "
+"updated automatically, hence the group can be created even before mesh "
+"elements generation."
+msgstr ""
+
+# 436b9beb403f412c839cd9a89387c2b5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:15
+msgid ""
+"**Group on filter** encapsulates a :ref:`filters_page`, which is used to "
+"select mesh entities composing the group from the whole mesh. Criteria of"
+" the filter can be changed at any time. The group contents are always "
+"updated automatically, hence the group can be created even before mesh "
+"elements generation."
+msgstr ""
+
+# 2be721ade5a44ee8bd7699bd9a575ea3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:17
+msgid ""
+"The group on geometry and group on filter can be converted to a "
+"standalone group."
+msgstr ""
+
+# f54c459f93f5487dae0f85a72b5cbec1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:25
+msgid "The following ways of group creation are possible:"
+msgstr ""
+
+# c8177f2484ed4978adc64ac213c52cc5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:29
+msgid ":ref:`creating_groups_page` dialog allows creation of a group of any type:"
+msgstr ""
+
+# af3bd9c89f79492986f94cfadef74c57
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:28
+msgid ""
+":ref:`standalone_group`, :ref:`group_on_geom` and :ref:`group_on_filter` "
+"using dedicated tabs."
+msgstr ""
+
+# ea80b2d5ab544b319053510bcc9db387
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:31
+msgid ""
+":ref:`create_groups_from_geometry_page` dialog allows creation of several"
+" groups on geometry at once."
+msgstr ""
+
+# e1679917bf7442ef9961ada8446ae345
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:32
+msgid ""
+"Standalone groups of all nodes and elements of the chosen sub-mesh (type "
+"of elements depends on dimension of sub-mesh geometry) can be created "
+"using **Mesh -> Construct Group** menu item (available from the context "
+"menu as well)."
+msgstr ""
+
+# fdefd2688724460c9bc0225a193654e8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:33
+msgid ""
+"Standalone groups of any element type can be created basing on nodes of "
+"other groups - using :ref:`group_of_underlying_elements_page` dialog."
+msgstr ""
+
+# 5c01af8b22004819bf427db0d75ed41f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:34
+msgid ""
+"Standalone groups can be created by applying "
+":ref:`using_operations_on_groups_page` to other groups."
+msgstr ""
+
+# 02613856191a4626b7d68300684bd947
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:35
+msgid ""
+"Creation of standalone groups is an option of many "
+":ref:`modifying_meshes_page` operations."
+msgstr ""
+
+# 360436afa0e74f84b35a359b6204ed41
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:37
+msgid "The created groups can be later:"
+msgstr ""
+
+# 7d2bb01ba5f24c36971cadd38569fdc1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:39
+msgid ":ref:`editing_groups_page`"
+msgstr ""
+
+# 13739bd0dfd949e8874c483bfcd38ec6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:40
+msgid ""
+":ref:`deleting_groups_page`, either as an object or together with "
+"contained elements."
+msgstr ""
+
+# b729c98c1cbc40b890e982742ee7f96f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:41
+msgid ""
+"The group on geometry and group on filter can be "
+":ref:`convert_to_standalone` group."
+msgstr ""
+
+# 6944ca9fd13942869ba1e32184ba5829
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:42
+msgid ":ref:`importing_exporting_meshes_page` into a file as a whole mesh."
+msgstr ""
+
+# aeec28fb28344beaac90d9e5916c0aaf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:44
+msgid ""
+"In the Object Browser, if an item contains more than one child group, it "
+"is possible to sort the groups by name in ascending order using **Sort "
+"children** context menu item."
+msgstr ""
+
+# 453af779ec47485d9204318e5810a6ca
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:52
+msgid ""
+"An important tool, providing filters for creation of standalone groups "
+"and groups on filter is :ref:`selection_filter_library_page`."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/importing_exporting_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/importing_exporting_meshes.po
new file mode 100644 (file)
index 0000000..e17bbf6
--- /dev/null
@@ -0,0 +1,146 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 35714d67b5be489cb11ba9ff9345f570
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:6
+msgid "Importing and exporting meshes"
+msgstr ""
+
+# f62b0a75ed2b42e0a839deed88db6c75
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:8
+msgid ""
+"In MESH there is a functionality allowing import/export of meshes from/to"
+" **MED**, **UNV** (I-DEAS 10), **DAT** (simple ascii format), **STL**, "
+"**GMF** (internal format of DISTENE products, namely MG-CADSurf, MG-Tetra"
+" and MG-Hexa algorithms) and **CGNS** format files. You can also export a"
+" group as a whole mesh."
+msgstr ""
+
+# ff7a3149aefa4099a3db3a805c993434
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:10
+msgid "**To import a mesh:**"
+msgstr ""
+
+# f3055de8329a49c79a396b1e166c5cee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:12
+msgid ""
+"From the **File** menu choose the **Import** item, from its sub-menu "
+"select the corresponding format (MED, UNV, STL, GMF and CGNS) of the file"
+" containing your mesh."
+msgstr ""
+
+# 9465b08bc9e94b5d8e10cbf9ab684fb5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:13
+msgid ""
+"In the standard **Search File** dialog box find the file for import. It "
+"is possible to select multiple files to be imported all at once."
+msgstr ""
+
+# 799d071d6cde41179a6532a68f7dee2d
+# b9228a967592466bb7980eeace4010ca
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:14
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:24
+msgid "Click the **OK** button."
+msgstr ""
+
+# 0210e8579daa406cacf59960fc2c4fa7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:19
+msgid "**To export a mesh or a group:**"
+msgstr ""
+
+# e276963d75cd49fb93b2e9c6801b13d4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:21
+msgid "Select the object you wish to export."
+msgstr ""
+
+# 322c037300b54a30951303d98339ed50
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:22
+msgid ""
+"From the **File** menu choose the **Export** item, from its sub-menu "
+"select the format (MED, UNV, DAT, STL, GMF and CGNS) of the file which "
+"will contain your exported mesh."
+msgstr ""
+
+# bdf58ac99b8b4145b3e50307c0a5ff10
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:23
+msgid ""
+"In the standard **Search File** select a location for the exported file "
+"and enter its name."
+msgstr ""
+
+# 74a3fbc92aff45169859966b91e6b514
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:29
+msgid "If you try to export a group, the warning will be shown:"
+msgstr ""
+
+# 05edbd49b0854025ad97e15ad771d66f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:34
+msgid ""
+"**Don't show this warning anymore** check-box allows to switch off the "
+"warning. You can re-activate the warning in "
+":ref:`group_export_warning_pref`."
+msgstr ""
+
+# fee92e4eeceb43e3af929fd29deaf3c8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:36
+msgid ""
+"There are additional parameters available at export to MED and SAUV "
+"format files."
+msgstr ""
+
+# 6cd0b8de3c734386afe00b2849cae3b6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:41
+msgid "Auto Groups"
+msgstr ""
+
+# 343b2853b0ec4ef89cfc8c04f7e0361c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:43
+msgid ""
+"**Automatically create groups** check-box specifies whether to create "
+"groups of all mesh entities of available dimensions or not. The created "
+"groups have names like \"Group_On_All_Nodes\", \"Group_On_All_Faces\", "
+"etc. A default state of this check-box can be set in "
+":ref:`export_auto_groups_pref`."
+msgstr ""
+
+# 6befc5c462c14a5aa26387ad27a18b90
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:46
+msgid ""
+"**Automatically define space dimension** check-box specifies whether to "
+"define space dimension for export by mesh configuration or not. Usually "
+"the mesh is exported as a mesh in 3D space, just as it is in Mesh module."
+" The mesh can be exported as a mesh of a lower dimension in the following"
+" cases, provided that this check-box is checked:"
+msgstr ""
+
+# b985c52d03974cf096693ae06b59d265
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:45
+msgid "**1D**: if all mesh nodes lie on OX coordinate axis."
+msgstr ""
+
+# 683ece3abaee480187790486f255c7bb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:46
+msgid "**2D**: if all mesh nodes lie in XOY coordinate plane."
+msgstr ""
+
+# fa935c1bda3b4e76b8b6ea623fa4dfb7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:48
+msgid "**See Also** a sample TUI Script of an :ref:`tui_export_mesh` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/index.po b/doc/gui/locale/fr/LC_MESSAGES/index.po
new file mode 100644 (file)
index 0000000..524e83f
--- /dev/null
@@ -0,0 +1,23 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 7a782e28ee2747b0bf7eb0f71407f51e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/index.rst:7
+msgid "Welcome to SMESH's documentation!"
+msgstr "Bienvenue dans la documentation de SMESH!"
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/introduction.po b/doc/gui/locale/fr/LC_MESSAGES/introduction.po
new file mode 100644 (file)
index 0000000..0d247e3
--- /dev/null
@@ -0,0 +1,113 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-03-30 11:57+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 0bdabc52b48a44c1b7833e2c080c8fc7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:3
+msgid "Introduction to Mesh module"
+msgstr ""
+
+# 1eab875349524c43807a6e067ef1001d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:8
+msgid "**Mesh** module of SALOME is destined for:"
+msgstr ""
+
+# f2265307afc24e5dab8b9d21393d91e7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:13
+msgid ":ref:`creating meshes <about_meshes_page>` in different ways:"
+msgstr ""
+
+# 76a6036c50fc422a9be2ffa57b5b5424
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:11
+msgid ""
+"by meshing geometrical models previously created or imported by the "
+"Geometry component;"
+msgstr ""
+
+# e65b12af95174deaa457c0d7ab33b729
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:12
+msgid ""
+"bottom-up, using :ref:`modifying_meshes_page`, especially "
+":ref:`extrusion_page` and :ref:`revolution_page`;"
+msgstr ""
+
+# 0a6123fd41e24e07a907de9e5e3b3557
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:13
+msgid ""
+"by generation of the 3D mesh from the 2D mesh not based on the geometry "
+"(:ref:`importing_exporting_meshes_page` for example);"
+msgstr ""
+
+# 11f6d462475e49488c6c7f9947d4206f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:15
+msgid ":ref:`importing_exporting_meshes_page` in various formats;"
+msgstr ""
+
+# 5a0fdbb470b04bf99fe49aa780f18fd4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:16
+msgid ":ref:`modifying_meshes_page` with a vast array of dedicated operations;"
+msgstr ""
+
+# 50b4f8f5a5244ef39ec17255f10c665f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:17
+msgid ":ref:`grouping_elements_page` of mesh elements;"
+msgstr ""
+
+# 4ec2919033934d18a852857bd8148fbb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:18
+msgid ""
+"filtering mesh entities (nodes or elements) using :ref:`filters_page` "
+"functionality for :ref:`grouping_elements_page` and applying "
+":ref:`modifying_meshes_page`;"
+msgstr ""
+
+# 03efffcd260f40e185a2884eaf563a3b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:19
+msgid ""
+":ref:`viewing_meshes_overview_page` in the VTK viewer and "
+":ref:`mesh_infos_page` on mesh and its sub-objects;"
+msgstr ""
+
+# e5718414f14243cdadbaa06b45ec5acc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:20
+msgid ""
+"applying to meshes :ref:`quality_page`, allowing to highlight important "
+"elements;"
+msgstr ""
+
+# 8b99877b0d4549d1abb078f50f6f33cd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:21
+msgid "taking various :ref:`measurements_page` of the mesh objects."
+msgstr ""
+
+# 73b3d1abfbf549b394bcb42bff5bd696
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:24
+msgid ""
+"It is possible to use the variables predefined in "
+":ref:`using_notebook_mesh_page` to set parameters of operations. Mesh "
+"module preferences are described in the :ref:`mesh_preferences_page` "
+"section of SALOME Mesh Help. Almost all mesh module functionalities are "
+"accessible via :ref:`smeshpy_interface_page`. There is a set of "
+":ref:`tools_page` plugged-in the module to extend the basic functionality"
+" listed above."
+msgstr ""
+
+# d2c36cd2c8c443edab9f9e5683075b8b
+#~ msgid ":ref:`about_meshes_page` in different ways:"
+#~ msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/length.po b/doc/gui/locale/fr/LC_MESSAGES/length.po
new file mode 100644 (file)
index 0000000..35a06b7
--- /dev/null
@@ -0,0 +1,34 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 11cf0c544c364ac2952c99cf4e2c3530
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length.rst:5
+msgid "Length"
+msgstr ""
+
+# ed3d15c365174cf6a3183be3d3c6eb59
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length.rst:7
+msgid "Length quality control criterion returns a value of length of edge."
+msgstr ""
+
+# 88ba97200f8d4f9bbdeb5aafb3652a22
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length.rst:12
+msgid "**See Also** a sample TUI Script of a :ref:`tui_length_1d` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/length_2d.po b/doc/gui/locale/fr/LC_MESSAGES/length_2d.po
new file mode 100644 (file)
index 0000000..d622f98
--- /dev/null
@@ -0,0 +1,60 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 95b4af8ed0b2420ba49b9edfe08eba0b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length_2d.rst:5
+msgid "Length 2D"
+msgstr ""
+
+# 7f6f65cbea6749148c469fe81c9ff0ee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length_2d.rst:7
+msgid ""
+"This quality control criterion consists of calculation of length of the "
+"links between corner nodes of mesh faces."
+msgstr ""
+
+# 4e76fceae6094126b072a470a4805ad8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length_2d.rst:9
+msgid "**To apply the Length 2D quality criterion to your mesh:**"
+msgstr ""
+
+# 1e7e63a037cd428fbc91417e209aa19c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length_2d.rst:11
+msgid "Display your mesh in the viewer."
+msgstr ""
+
+# 94070e60503e47b785da82b2e1090cb3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length_2d.rst:12
+msgid ""
+"Choose **Controls > Face Controls > Length 2D** or click **\"Length "
+"2D\"** button in the toolbar."
+msgstr ""
+
+# 036a92ddf9bb460597dffcb929388121
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length_2d.rst:20
+msgid ""
+"Your mesh will be displayed in the viewer with links colored according to"
+" the applied mesh quality control criterion:"
+msgstr ""
+
+# e35eabd4b75e4ff1ae503171382a3e5d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length_2d.rst:26
+msgid "**See Also** a sample TUI Script of a :ref:`tui_length_2d` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/make_2dmesh_from_3d.po b/doc/gui/locale/fr/LC_MESSAGES/make_2dmesh_from_3d.po
new file mode 100644 (file)
index 0000000..3aa6219
--- /dev/null
@@ -0,0 +1,144 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 45e7bb44985d4a939a0893b7c72f64b5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:5
+msgid "Generate boundary elements"
+msgstr ""
+
+# 81dcd600380c4cedae1ad528c8312cd2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:7
+msgid ""
+"This functionality allows to generate mesh elements on the borders of "
+"elements of a higher dimension, for example, to create 2D elements around"
+" a block of 3D elements as in the following figure."
+msgstr ""
+
+# 230845ffba19429e8bb03f2f2727e88b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:16
+msgid "**To generate border elements:**"
+msgstr ""
+
+# 4a243378956441699e4dae772e14a9b1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:18
+msgid "Select a mesh or group in the Object Browser or in the 3D Viewer"
+msgstr ""
+
+# 4523e944e6a64901b5b06fe3e4ec2515
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:19
+msgid ""
+"From the Modification menu choose \"Create boundary elements\" item, or "
+"click \"Create boundary elements\" button in the toolbar"
+msgstr ""
+
+# 63f9d61107064b78a617115009fb8ba5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:28
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# 4d42e6e23f114646ae9e4dcfa643f2b1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:37
+msgid ""
+"Check in the dialog box one of two radio buttons corresponding to the "
+"type of operation you would like to perform."
+msgstr ""
+
+# 3a27e67ac6214278aa7298a993e72c0c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:38
+msgid "Fill the other fields available in the dialog box."
+msgstr ""
+
+# 44af91b085e04bfb8cee97be95a2bac7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:39
+msgid ""
+"Click the **Apply** or **Apply and Close** button to perform the "
+"operation."
+msgstr ""
+
+# e2f22c2cf1bc4bdaaa28c4ab85e405ca
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:41
+msgid ""
+"\"Create boundary elements\" dialog allows creation of boundary elements "
+"of two types."
+msgstr ""
+
+# bd438ed627bf43f0b4be802727f6603a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:43
+msgid ""
+"**2D from 3D** creates missing mesh faces on free facets of volume "
+"elements"
+msgstr ""
+
+# 3834e909e5ff4d6a8445aa188ea3d079
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:44
+msgid "**1D from 2D** creates missing mesh edges on free edges of mesh faces"
+msgstr ""
+
+# 0679ee21fde8464b88060eed26eb23f9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:46
+msgid ""
+"Here a **free facet** means a facet shared by only one volume, a **free "
+"edge** means an edge shared by only one mesh face."
+msgstr ""
+
+# ab132c23ffad42e28e68bcf5b353d166
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:49
+msgid "In this dialog:"
+msgstr ""
+
+# 325ea2589ed24f91afdc9bc4d123e3ad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:51
+msgid "specify the **Target** mesh, where the boundary elements will be created."
+msgstr ""
+
+# 58e483eeffa74cd3bb20054d19589c2e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:53
+msgid "**This mesh** adds elements in the selected mesh."
+msgstr ""
+
+# 4cd1d5e6c9fd45ccb6110cff9dcf48f5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:54
+msgid ""
+"**New mesh** adds elements to a new mesh. The new mesh appears in the "
+"Object Browser with the name that you can change in the adjacent box."
+msgstr ""
+
+# 99093f54748c4b05afda91533baf132a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:56
+msgid ""
+"activate **Copy source mesh** checkbox to copy all elements of the "
+"selected mesh to the new mesh, else the new mesh will contain only "
+"boundary elements (old and created by this operation)."
+msgstr ""
+
+# 4e85dfc4233e4db080fdde756adf6aec
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:57
+msgid ""
+"activate **Create group** checkbox to create a group to which all the "
+"boundary elements (old and new) are added. The new group appears in the "
+"Object Browser with the name that you can change in the adjacent box."
+msgstr ""
+
+# 649910b8deaf4b1684654f55e91496fb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:59
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_make_2dmesh_from_3d` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/max_element_length_2d.po b/doc/gui/locale/fr/LC_MESSAGES/max_element_length_2d.po
new file mode 100644 (file)
index 0000000..3aa1829
--- /dev/null
@@ -0,0 +1,63 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 18d5fec451fc4bec8e3bef94502ddf15
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_2d.rst:5
+msgid "Element Diameter 2D"
+msgstr ""
+
+# 8a1bb7fc885d4639a1851fdb7f3954ae
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_2d.rst:7
+msgid ""
+"This quality control criterion consists in calculation of the maximal "
+"length of edges and diagonals of 2D mesh elements (triangles and "
+"quadrangles). For polygons the value is always zero."
+msgstr ""
+
+# 598c6758c6794caead22d02d1d22e930
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_2d.rst:9
+msgid "**To apply the Element Diameter 2D quality criterion to your mesh:**"
+msgstr ""
+
+# 8871ae25af5a4df8b72f0afe00a04b67
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_2d.rst:11
+msgid "Display your mesh in the viewer."
+msgstr ""
+
+# 1d9cea8722f341ba88c488744b22592d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_2d.rst:12
+msgid ""
+"Choose **Controls > Face Controls > Element Diameter 2D** or click "
+"**\"Element Diameter 2D\"** button in the toolbar."
+msgstr ""
+
+# 6f9b96ffef0d4c879310362f2c00ed4c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_2d.rst:20
+msgid ""
+"Your mesh will be displayed in the viewer with its elements colored "
+"according to the applied mesh quality control criterion:"
+msgstr ""
+
+# 11b56c89c3e4454cb19ceaf0973bf052
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_2d.rst:25
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_max_element_length_2d` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/max_element_length_3d.po b/doc/gui/locale/fr/LC_MESSAGES/max_element_length_3d.po
new file mode 100644 (file)
index 0000000..67d5734
--- /dev/null
@@ -0,0 +1,63 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 12508cdad0f0423fafaf17bc9c8f378a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_3d.rst:5
+msgid "Element Diameter 3D"
+msgstr ""
+
+# 76def95f4aca4cc98b3288305dc01fbc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_3d.rst:7
+msgid ""
+"This quality control criterion consists in calculation of the maximal "
+"length of edges and diagonals of 3D mesh elements (tetrahedrons, "
+"pyramids, etc). For polyhedra the value is always zero."
+msgstr ""
+
+# 568b7a64cb374f168fa585b5771ec419
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_3d.rst:9
+msgid "**To apply the Element Diameter 3D quality criterion to your mesh:**"
+msgstr ""
+
+# 6dfd01f191d84de7afd67327d52827ff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_3d.rst:11
+msgid "Display your mesh in the viewer."
+msgstr ""
+
+# e9f0faa61067408b99223bdc6864b806
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_3d.rst:12
+msgid ""
+"Choose **Controls > Volume Controls > Element Diameter 3D** or click "
+"**\"Element Diameter 3D\"** button in the toolbar."
+msgstr ""
+
+# 41baa3271ea844e0bd78095589febfa4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_3d.rst:20
+msgid ""
+"Your mesh will be displayed in the viewer with its elements colored "
+"according to the applied mesh quality control criterion:"
+msgstr ""
+
+# 42b48187fab0442dba02a4ab5a8ac103
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_3d.rst:26
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_max_element_length_3d` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/max_element_volume_hypo.po b/doc/gui/locale/fr/LC_MESSAGES/max_element_volume_hypo.po
new file mode 100644 (file)
index 0000000..6d79654
--- /dev/null
@@ -0,0 +1,41 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 08b2b54fd0774b3696f319f6ceca5da3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_volume_hypo.rst:5
+msgid "Max Element Volume hypothesis"
+msgstr ""
+
+# 0457ac97e64c486ba51dca3fef86ef8a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_volume_hypo.rst:7
+msgid ""
+"**Max Element Volume** hypothesis is applied for meshing of 3D objects "
+"composing your geometrical object. Definition of this hypothesis consists"
+" of setting the **maximum volume** of 3D meshing elements (depending on "
+"the chosen meshing algorithm it can be **hexahedrons** or "
+"**tetrahedrons**), which will compose the mesh of these 3D objects."
+msgstr ""
+
+# 9d33c4d96b7c4e14a7a446a2cc78d0c2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_volume_hypo.rst:12
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_max_element_volume` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/measurements.po b/doc/gui/locale/fr/LC_MESSAGES/measurements.po
new file mode 100644 (file)
index 0000000..2379bf1
--- /dev/null
@@ -0,0 +1,229 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# fc322395f3114a83adb58370f446f95f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:5
+msgid "Measurements"
+msgstr ""
+
+# 5602a5a07c844159a417072a006f34d7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:7
+msgid ""
+"Mesh module provides the possibility to perform different measurements of"
+" the selected mesh data."
+msgstr ""
+
+# ca57bc0c665840db9be756b5f53834f2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:9
+msgid ""
+"All measurement operations are available via **Measurements** top-level "
+"menu. Access to the measurements operations is implemented via a single "
+"dialog box, where each operation is represented as a separate tab page."
+msgstr ""
+
+# f3defa3bd44e4c6e8c67384d1c7ce878
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:14
+msgid "Minimum Distance"
+msgstr ""
+
+# cda8821e60574c028b59127f8b5c1420
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:16
+msgid ""
+"This operation allows measuring the distance between two objects. "
+"Currently only node-to-node and node-to-origin operations are available, "
+"but this operation will be extended in the future to support other mesh "
+"objects - elements, meshes, sub-meshes and groups."
+msgstr ""
+
+# d58990a267a6467289d1c24c72d17bb1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:18
+msgid ""
+"To start **Minimum Distance** operation, select **Minimum Distance** tab "
+"in **Measurements** dialog."
+msgstr ""
+
+# f43b6ff99b8e479cb1afde93f509c84b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:23
+msgid ""
+"Choose the first and the second target by switching the corresponding "
+"radio buttons, then select the objects the distance between which is to "
+"be calculated (or input their IDs directly in case of nodes/elements) and"
+" press **Compute** button."
+msgstr ""
+
+# 0672e2abea29499f8ee4bf6f6cea1989
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:25
+msgid "The following targets are supported:"
+msgstr ""
+
+# da713fad99714e7188634cba70b2fd5d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:27
+msgid "**Node:** single mesh node;"
+msgstr ""
+
+# a9f97eb4ee2141b1bf3e286171e01028
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:28
+msgid "**Element:** single mesh element (not available in this version);"
+msgstr ""
+
+# b09e4ea655c24f0c87101b2ae1cd0322
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:29
+msgid ""
+"**Object:** mesh, sub-mesh or group object (not available in this "
+"version);"
+msgstr ""
+
+# 591c17d6e4794e4b9f26fcbee026ea1b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:30
+msgid "**Origin:** origin of the global co-ordinate system."
+msgstr ""
+
+# 5003e44fc8c0476e882b706cc7dc432c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:32
+msgid ""
+"The result will be shown in the bottom area of the dialog. In addition, a"
+" simple preview will be shown in the 3D viewer."
+msgstr ""
+
+# 3ad37ba999964ff3a6b7a1e88e984770
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:40
+msgid "Bounding Box"
+msgstr ""
+
+# da5bdcea8e5a49308d61c9e12ecca419
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:42
+msgid ""
+"This operation allows calculating the bounding box of the selected "
+"object(s)."
+msgstr ""
+
+# 4f60b9cfbf7a4f19968029f505ec96e1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:44
+msgid ""
+"To start **Bounding Box** operation, select **Bounding Box** tab in "
+"**Measurements** dialog."
+msgstr ""
+
+# 9a3d5692ef8e47b5a03c060ac103bb38
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:49
+msgid ""
+"Choose the required type of the object by switching the corresponding "
+"radio button, select the object(s) and press *Compute* button."
+msgstr ""
+
+# 6003a5bb337b4ac4b36dfedff847fc92
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:51
+msgid "The following types of input are available:"
+msgstr ""
+
+# afe2b77d7ec34faf981b09ec9c6ffcc6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:53
+msgid "**Objects:** one or several mesh, sub-mesh or group objects;"
+msgstr ""
+
+# 44f599f7d67d4e39bf4b91f9b980090c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:54
+msgid "**Nodes:** a set of mesh nodes;"
+msgstr ""
+
+# 11fef5ea64e6465e97e804f548f6b58f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:55
+msgid "**Elements:** a set of mesh elements."
+msgstr ""
+
+# 038b1e48ec5747f3973ef6c599bd3881
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:57
+msgid ""
+"The result of calculation will be shown in the bottom area of the dialog."
+" In addition, a simple preview will be shown in the 3D viewer."
+msgstr ""
+
+# 7cc54603cadd42a4841f479edf2facb3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:65
+msgid "Basic Properties"
+msgstr ""
+
+# 5b9cc739e81f4463a60775f822ac6d66
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:67
+msgid ""
+"This operation provides calculation of length, area or volume for the the"
+" selected object:"
+msgstr ""
+
+# 7c75bcf01add43d9848c2758084caa73
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:69
+msgid "**Length** is calculated as a sum of lengths of all 1D elements;"
+msgstr ""
+
+# bbb98a9329f14fdb8c678b837e5f3633
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:70
+msgid "**Area** is a sum of areas of all 2D elements"
+msgstr ""
+
+# b7ae3f6bc9764b319d3433773d047f94
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:71
+msgid "**Volume** is a sum of volumes of all 3D elements."
+msgstr ""
+
+# d1331a969e75457b99dbfe68629a44d9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:73
+msgid ""
+"To start a **Basic Properties** calculation, select **Length**, **Area** "
+"or **Volume** item."
+msgstr ""
+
+# 4893de06f03b48a3ada2aaddaa0cda4d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:78
+msgid ""
+"In the dialog box select the required type of calculation (length, area "
+"or volume) and the object (mesh, sub-mesh or group) and press **Compute**"
+" button."
+msgstr ""
+
+# 47114ce539c94a6e909d19dc534989f1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:80
+msgid "The result of calculation will be shown in the bottom area of the dialog."
+msgstr ""
+
+# 263c60be188e4fdea91b20b8baf75215
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:83
+msgid ""
+"If the mesh consists of 3D elements only, its \"length\" and \"area\" "
+"will be 0."
+msgstr ""
+
+# b9aed2df15ca451fb2a046b12b2cd1f7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:84
+msgid ""
+"As calculation result is a sum of lengths, areas and volumes of all mesh "
+"elements, the duplication is not taken into account; i.e. all duplicated "
+"elements (elements built on the same set of nodes) will be included into "
+"the result."
+msgstr ""
+
+# c83732dc863246aebcd686b2d67c5586
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:85
+msgid "Similarly, intersection of elements is not taken into account."
+msgstr ""
+
+# 1f23367c476649a6ad4e6a02af31278d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:87
+msgid "**See Also** a sample TUI Script of :ref:`tui_measurements_page`."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/merging_elements.po b/doc/gui/locale/fr/LC_MESSAGES/merging_elements.po
new file mode 100644 (file)
index 0000000..b6f95a7
--- /dev/null
@@ -0,0 +1,130 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 4d342a1a88494139abfd4eee43cd2342
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:5
+msgid "Merging Elements"
+msgstr ""
+
+# cb13ca6428bb483ba5e92301548d7898
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:7
+msgid ""
+"This functionality allows to merge coincident elements of a mesh. Two "
+"elements are considered coincident if they are based on the same set of "
+"nodes."
+msgstr ""
+
+# 21ca56be96e745baaa45970e787e1623
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:15
+msgid ""
+"To merge elements choose in the main menu **Modification** -> "
+"**Transformation** -> **Merge elements** item. The following dialog box "
+"shall appear:"
+msgstr ""
+
+# e0df42b78b6e4d75a945f60e3cbb99bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:20
+msgid "In this dialog:"
+msgstr ""
+
+# 0c5f4a7c5f854892ae22b6deae36ec6d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:22
+msgid "Name is the name of the mesh object whose elements will be merged."
+msgstr ""
+
+# 029510ba8a04488a8d964493ba6c91a4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:56
+msgid ""
+"**Automatic** or **Manual** Mode allows choosing how the elements are "
+"processed. In the **Automatic** Mode all elements created on the same "
+"nodes will be merged. In **Manual** mode you can adjust groups of "
+"coincident elements detected by the program."
+msgstr ""
+
+# e7f34bed11b54bee84d4698b250acf5f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:24
+msgid "If the **Manual** Mode is selected, additional controls are available:"
+msgstr ""
+
+# 78e2e2a85f554ce2bcb53a70fe6a5695
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:30
+msgid ""
+"**Detect** button generates the list of coincident elements found in the "
+"selected object."
+msgstr ""
+
+# 372b8fa63cf8418e943c01a1dda35d5e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:31
+msgid ""
+"**Coincident elements** is a list of groups of elements for merging. "
+"After the operation all elements of each group will be united into one "
+"element. The first element of a group is kept and the others are removed."
+msgstr ""
+
+# d5ea870ea665439284d4a4307bce646f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:32
+msgid "**Remove** button deletes the selected group from the list."
+msgstr ""
+
+# 5601dbe1cc144ef7a4f045a552635c9f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:33
+msgid ""
+"**Add** button adds to the list a group of elements selected in the "
+"viewer with pressed \"Shift\" key."
+msgstr ""
+
+# fe8d239588e84806bc36e51099174e8c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:34
+msgid "**Select all** check-box selects all groups."
+msgstr ""
+
+# 9845355362054dfaab8861e408fae237
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:35
+msgid ""
+"**Show double elements IDs** check-box shows/hides identifiers of "
+"elements of the selected groups in the 3D viewer."
+msgstr ""
+
+# c85c581433994456a264035acbd45287
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:36
+msgid ""
+"**Edit selected group of coincident elements** list allows editing the "
+"selected group:"
+msgstr ""
+
+# d09a69d7214340dd8dabfb42d5bd6fc5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:58
+msgid "To confirm your choice click **Apply** or **Apply and Close** button."
+msgstr ""
+
+# 56640a257385465b929f11a82b5e4fa7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:61
+msgid ""
+"In this picture you see a triangle which coincides with one of the "
+"elements of the mesh. After we apply **Merge Elements** functionality, "
+"the triangle will be completely merged with the mesh."
+msgstr ""
+
+# 2f7267831b3b45ed8c2356fb8940555d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:66
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_merging_elements` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/merging_nodes.po b/doc/gui/locale/fr/LC_MESSAGES/merging_nodes.po
new file mode 100644 (file)
index 0000000..1c76c47
--- /dev/null
@@ -0,0 +1,200 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 033566c4a91542a2bf913af827ba2fdf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:5
+msgid "Merging nodes"
+msgstr ""
+
+# 60bc4d8f71ac4807b7b0e8abc8c1bbfd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:7
+msgid ""
+"This functionality allows user to detect groups of coincident nodes with "
+"specified tolerance; each group of the coincident nodes can be then "
+"converted to the single node."
+msgstr ""
+
+# abf1019f274748b79cee33454902e06b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:15
+msgid "**To merge nodes of your mesh:**"
+msgstr ""
+
+# b9c33077e980439594561dcb5a89092f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:17
+msgid ""
+"Choose **Modification** -> **Transformation** -> **Merge nodes** menu "
+"item. The following dialog box shall appear:"
+msgstr ""
+
+# b5f31aaf0fd24a05b4ba5f14f4983d25
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:22
+msgid "**Name** is the name of the mesh whose nodes will be merged."
+msgstr ""
+
+# 068d08e8fbc441e0abe0f09e3bfaa863
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:23
+msgid ""
+"**Automatic** or **Manual** mode allows choosing how the nodes are "
+"processed. In **Manual** mode you can adjust groups of coincident nodes "
+"detected by the program and/or select any nodes to be merged."
+msgstr ""
+
+# d301ba18189443b286c7ca56a419a0f7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:24
+msgid "**Tolerance** is a maximum distance between nodes sufficient for merging."
+msgstr ""
+
+# 94d17edfe1b145e0a02c53cfa81ad4a1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:25
+msgid ""
+"Activation of **No merge of corner and medium nodes of quadratic cells** "
+"check-box prevents merging medium nodes of quadratic elements with corner"
+" nodes. This check-box is enabled provided that the selected mesh "
+"includes quadratic elements."
+msgstr ""
+
+# c0158f38e00543259da3f6c7075f1526
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:26
+msgid ""
+"Activation of **Avoid making holes** check-box prevents merging nodes "
+"that make elements invalid (but not degenerated) and hence removed. Thus,"
+" no holes in place of removed elements appear."
+msgstr ""
+
+# 1149123f535e4635ab06c10cc8f34826
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:27
+msgid ""
+"**Exclude groups from detection** group allows to ignore the nodes which "
+"belong to the specified mesh groups. This control is active provided that"
+" the mesh includes groups."
+msgstr ""
+
+# ca3d828d0b26461dade69760a26f5515
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:28
+msgid ""
+"**Nodes to keep during the merge** group allows to specify nodes to keep "
+"in the mesh. (By default a node being the first in a group of coincident "
+"nodes is kept.) It is possible to either select nodes in the Viewer or "
+"select groups of any element type whose nodes will be kept."
+msgstr ""
+
+# 7f0358cfb8084b21978e14a6f1696f32
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:30
+msgid "*Selection* button activates selection of nodes to keep."
+msgstr ""
+
+# a2776b8b7f3a4cf38f931d404e447523
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:31
+msgid "**Nodes** button activates selection of nodes in the Viewer."
+msgstr ""
+
+# 93619e16b7be492189784bc929141601
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:32
+msgid ""
+"**Groups and sub-meshes** button activates selection of groups and sub-"
+"meshes."
+msgstr ""
+
+# 93e33bcfae1d46e39eba7c2eb9ceaa87
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:33
+msgid "**Add** button adds selected nodes or groups to the list."
+msgstr ""
+
+# 04aa746a15af43eabc7946b31105c2f4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:34
+msgid ""
+"Nodes or groups selected in the list can be removed using **Remove** "
+"button."
+msgstr ""
+
+# b2323b67d3304401b4619872da0af4ee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:36
+msgid "**Automatic mode:**"
+msgstr ""
+
+# 438ef8a64eea4ab9b57982ab34522546
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:38
+msgid ""
+"In the **Automatic** Mode all nodes within the indicated tolerance will "
+"be merged. The nodes which belong to the groups specified in **Exclude "
+"groups from detection** will NOT be taken into account."
+msgstr ""
+
+# 113aa0679afe4c629bc55f1aaff30250
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:40
+msgid ""
+"The **Manual** mode gives you full control of what the operation will do."
+" In this mode additional controls are available:"
+msgstr ""
+
+# 74faf350ab90407ca867c8994ce95b37
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:42
+msgid ""
+"**Detect** button generates the list of coincident nodes for the given "
+"**Tolerance**."
+msgstr ""
+
+# 77344d7fdd4349258d0907932fab9cf4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:43
+msgid ""
+"**Coincident nodes** is a list of groups of nodes for merging. Upon "
+"**Apply** all nodes of each group will be united into one node. The first"
+" node of a group is kept and the others are removed. By default the first"
+" node has a lowest ID within the group."
+msgstr ""
+
+# c3993ce0ebf34ae2a3d8be122e80d412
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:45
+msgid "**Remove** button deletes the selected group from the list."
+msgstr ""
+
+# 4215b623a9bc4448b59f0e2c06b522a4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:46
+msgid "**Add** button adds to the list a group of nodes selected in the viewer."
+msgstr ""
+
+# b43143e8ac2f4696a4aa7ef2d4dadae8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:47
+msgid "**Select all** check-box selects all groups."
+msgstr ""
+
+# 9944a0f029844d2e97324b9e128e94b8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:48
+msgid ""
+"**Show double nodes IDs** check-box shows/hides identifiers of nodes of "
+"selected groups in the 3D viewer."
+msgstr ""
+
+# c2b3b7f1a2254beaa1125d16b862c301
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:54
+msgid ""
+"**Edit selected group of coincident nodes** list allows editing the "
+"selected group:"
+msgstr ""
+
+# 6d897aa5954b4aa49b4b5a64b5ac813f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:74
+msgid "To confirm your choice click **Apply** or **Apply and Close** button."
+msgstr ""
+
+# 00c92d262c8c442694dc4c48cdb9153b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:89
+msgid "**See Also** a sample TUI Script of a :ref:`tui_merging_nodes` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/mesh_infos.po b/doc/gui/locale/fr/LC_MESSAGES/mesh_infos.po
new file mode 100644 (file)
index 0000000..5db2f81
--- /dev/null
@@ -0,0 +1,436 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 7d81cefb54f44eccabd8805a64feaa52
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:5
+msgid "Mesh Information"
+msgstr ""
+
+# 89889e72c9494bc9bab03d542b54668d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:7
+msgid ""
+"The user can obtain information about the selected mesh object (mesh, "
+"sub-mesh or group) using **Mesh Information** dialog box."
+msgstr ""
+
+# ff1da796963248c6b9138f85926677c7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:9
+msgid ""
+"To view the **Mesh Information**, select your mesh, sub-mesh or group in "
+"the **Object Browser** and invoke **Mesh Information** item from the "
+"**Mesh** menu or from the context menu, or click **\"Mesh Information\"**"
+" button in the toolbar."
+msgstr ""
+
+# d3ce5678ec72425ab844167351ba1a35
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:17
+msgid "The **Mesh Information** dialog box provides three tab pages:"
+msgstr ""
+
+# 4c2a7d70e1174e1bbcb9c90c391dd3a8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:19
+msgid ""
+":ref:`advanced_mesh_infos_anchor` - to show base and quantitative "
+"information about the selected mesh object."
+msgstr ""
+
+# a8ff1a77f1b5478581b8215a4dc6b2ba
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:20
+msgid ""
+":ref:`mesh_element_info_anchor` - to show detailed information about the "
+"selected mesh nodes or elements."
+msgstr ""
+
+# cd9b845363d44e9fae8876cd3d670173
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:21
+msgid ""
+":ref:`mesh_addition_info_anchor` - to show additional information "
+"available for the selected mesh, sub-mesh or group object."
+msgstr ""
+
+# 7f7d5011ce48497f88dfc0e839c2e965
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:22
+msgid ""
+":ref:`mesh_quality_info_anchor` - to show overall quality information "
+"about the selected mesh, sub-mesh or group object."
+msgstr ""
+
+# 1e4e551877a5439d8f08ed509126a198
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:27
+msgid "Dump Mesh Infos"
+msgstr ""
+
+# 5fb38a9c54b24ebca3cc605d9aff7232
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:29
+msgid ""
+"The button **Dump** allows printing the information displayed in the "
+"dialog box to a .txt file. The dialog for choosing a file also allows to "
+"select which tab pages to dump via four check-boxes. The default state of"
+" the check-boxes can be changed via :ref:`mesh_information_pref` "
+"preferences."
+msgstr ""
+
+# c1c44a7afe60443b8efacb99b20d59f2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:34
+msgid "Base Information"
+msgstr ""
+
+# eff63d29c1cf4713a8ffd71cc3fabb41
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:36
+msgid ""
+"The **Base Info** tab page of the dialog box provides general information"
+" on the selected object - mesh, sub-mesh or mesh group: name, type, total"
+" number of nodes and elements separately for each type: 0D elements, "
+"edges, faces, volumes, balls."
+msgstr ""
+
+# b1c4af2d0db64aa88fa72e5684a82c56
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:47
+msgid "Mesh Element Information"
+msgstr ""
+
+# f0b643284c0f4b45891e9c5fa9aa004f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:49
+msgid ""
+"The **Element Info** tab page of the dialog box gives detailed "
+"information about the selected mesh node(s) or element(s), namely:"
+msgstr ""
+
+# 5b960ae15bcd42db9ff97b7a344bbf1c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:63
+msgid "For a node:"
+msgstr ""
+
+# 94bed98445e74cfca9dd6ff743401364
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:52
+msgid "Node ID;"
+msgstr ""
+
+# 5415384b459d4fa7afcee1758b0922e4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:53
+msgid "Coordinates (X, Y, Z);"
+msgstr ""
+
+# 1b08c9f6f3944697bc525dd4215a3f2c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:54
+msgid ""
+"Connectivity information (connected elements); double click in this line "
+"reveals information about these elements;"
+msgstr ""
+
+# 0f627abab9b744728eb4ad5bb8c58b9d
+# 9d9a93666d544376abb1cad2805a36ee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:55
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:71
+msgid "Position on a shape (for meshes built on a geometry);"
+msgstr ""
+
+# 8597b257b7854a6f9f4f0ee8406f1a57
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:56
+msgid "Groups information (names of groups the node belongs to)."
+msgstr ""
+
+# dd2bb96aa28d4ee9b0ecdc9324126484
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:78
+msgid "For an element:"
+msgstr ""
+
+# 9d20e03209e242aba37bd93975152f26
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:66
+msgid "Element ID;"
+msgstr ""
+
+# e43c243e3eb3444c9baf282b618c7b83
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:67
+msgid "Type (triangle, quadrangle, etc.);"
+msgstr ""
+
+# d4914e3826f248578a726208013df6b4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:68
+msgid "Gravity center (X, Y, Z coordinates);"
+msgstr ""
+
+# 6949234f920a486cb906d114eaf7cbe5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:69
+msgid ""
+"Connectivity information (connected nodes); double click in a line of a "
+"node reveals the information about this node;"
+msgstr ""
+
+# d01ae8daf8f6432392513fb4d5500c11
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:70
+msgid "Quality controls (area, aspect ratio, volume, etc.);"
+msgstr ""
+
+# 9cca653ec3a6480a8cce35f662566c21
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:72
+msgid "Groups information (names of groups the element belongs to)."
+msgstr ""
+
+# dd33bf5a33a5462fa39bf74dc8d3d546
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:80
+msgid ""
+"The user can either input the ID of a node or element he wants to analyze"
+" directly in the dialog box or select the node(s) or element(s) in the 3D"
+" viewer. If **Show IDs** is activated, IDs of selected nodes or elements "
+"are displayed in the 3D viewer."
+msgstr ""
+
+# cb077e2a6ceb4ebe8802bc582d157afa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:84
+msgid ""
+"The information about the groups, to which the node or element belongs, "
+"can be shown in a short or in a detailed form. By default, for "
+"performance rasons, this information is shown in a short form (group "
+"names only). The detailed information on groups can be switched on via "
+":ref:`group_detail_info_pref` option of :ref:`mesh_preferences_page`."
+msgstr ""
+
+# 923342b3ad7e41fab497b255dc88ae9a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:89
+msgid "Additional Information"
+msgstr ""
+
+# 34666d2627364d1b8ff0349498ad6e57
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:91
+msgid ""
+"The **Additional Info** tab page of the dialog box provides an additional"
+" information on the selected object: mesh, sub-mesh or group."
+msgstr ""
+
+# 49f856bfc49c47d1b5de64631e7fe99e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:93
+msgid "For a mesh object, the following information is shown:"
+msgstr ""
+
+# 72d5242b71b249c18ccb7c9d408c8a81
+# 1e3737d61dc9484ab536f8ab9965688f
+# 253b54618e784dcf88395abdb8604b2c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:95
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:111
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:129
+msgid "Name"
+msgstr ""
+
+# bcd90f5cf56f4a579276960c64730cbe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:96
+msgid "Type: based on geomerty, imported, standalone"
+msgstr ""
+
+# 6d9220fc431d4f4588e1afe817726d26
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:97
+msgid "Shape (if mesh is based on geometry)"
+msgstr ""
+
+# 634b1cb624254513af618f9651367165
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:98
+msgid "File (if mesh is imported from the file)"
+msgstr ""
+
+# 8fcef07cbd8e4c8e959110e25468684f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:99
+msgid "Groups"
+msgstr ""
+
+# 9dcc32d82d3f44ad93eea1172ee7fb40
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:100
+msgid "Sub-meshes"
+msgstr ""
+
+# 298123d371c84c8a9d3ec9b471d7bff7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:109
+msgid "For a sub-mesh object, the following information is shown:"
+msgstr ""
+
+# 1a263fbe0d5745e4bc68112252fbdbdb
+# 06eb31f75ff14b43a3b49ce8a677bbee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:112
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:130
+msgid "Parent mesh"
+msgstr ""
+
+# 73bd15df7e464f2ead8317d2cf2f8a56
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:113
+msgid "Shape"
+msgstr ""
+
+# ee1c32811a5049a3962557099124d789
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:125
+msgid "Additional info for Group"
+msgstr ""
+
+# 7753f2da8b704cf9b333ba51a9b40072
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:127
+msgid "For a group object, the following information is shown:"
+msgstr ""
+
+# d5e8c5de0daa4e9fb8c20dec46f70746
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:131
+msgid "Type: standalone, group on geometry, group on filter"
+msgstr ""
+
+# 96565ccb377740d895ab72f79ac15d87
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:132
+msgid "Entity type: node, edge, face, volume"
+msgstr ""
+
+# 9419ea2f0d5a4b32bb4717b4b10a6a9c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:133
+msgid "Size"
+msgstr ""
+
+# 4080fb1e1e0b4825816dbbe625f6c169
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:134
+msgid "Color"
+msgstr ""
+
+# 12b372eddf8149c0898bf18d651d7b07
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:135
+msgid "Number of underlying nodes (for non-nodal groups)"
+msgstr ""
+
+# e3558e0ab22d4028884b8c596684ecae
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:145
+msgid ""
+"For the performance reasons, the number of underlying nodes is computed "
+"only by demand. For this, the user should press the \"Compute\" button "
+"(see picture). Also, the number of underlying nodes is automatically "
+"calculated if the size of the group does not exceed the "
+":ref:`nb_nodes_limit_pref` preference value (zero value means no limit)."
+msgstr ""
+
+# 81192f0c71c2410782e931f954c62c3f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:150
+msgid "Quality Information"
+msgstr ""
+
+# a282f45cc58848c083e6fbd45260f34a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:152
+msgid ""
+"The **Quality Info** tab provides overall information about mesh quality "
+"controls  on the selected object - mesh, sub-mesh or mesh group:"
+msgstr ""
+
+# 29935d09cde24625aba1b0b9c81982b3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:154
+msgid "Name;"
+msgstr ""
+
+# c72c541d0e6f4bf5a502ae2d8b2acd53
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:157
+msgid "Nodes information:"
+msgstr ""
+
+# a8ca55f1558d4ed3be30a014467f1b1e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:156
+msgid "Number of free nodes;"
+msgstr ""
+
+# 61b9d1bf812448fd88d3dc10eb10bed3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:157
+msgid "Maximal number of elements connected to a node;"
+msgstr ""
+
+# 3442981518a4477baa330bbd7114d368
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:158
+msgid "Number of double nodes;"
+msgstr ""
+
+# 860bb75731654f308b0cff31d797a392
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:159
+msgid "Edges information:"
+msgstr ""
+
+# 18711f162ef241b19597cc663953188f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:160
+msgid "Number of double edges;"
+msgstr ""
+
+# d93fad97bf7149879d0f97abc3a4c762
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:163
+msgid "Faces information:"
+msgstr ""
+
+# 675e5690562d4bed8785e768ce37af80
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:162
+msgid "Number of double faces;"
+msgstr ""
+
+# 848b64f01b644b1b80df295406bb5324
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:163
+msgid "Number of over-constrained faces;"
+msgstr ""
+
+# 09cb4878ffdd4c928bb97ddee5520f53
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:164
+msgid "Aspect Ratio histogram;"
+msgstr ""
+
+# a6de74e7efeb4f7c89136c5f342d0014
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:168
+msgid "Volume information:"
+msgstr ""
+
+# 41046f4beb214cce946a7f7cf6b3ee69
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:166
+msgid "Number of double volumes;"
+msgstr ""
+
+# 9d0915c8f6a74c3fb94863f1864492e9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:167
+msgid "Number of over-constrained volumes;"
+msgstr ""
+
+# f26e5055bb3d4fc7acc4a31088a47548
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:168
+msgid "Aspect Ratio 3D histogram."
+msgstr ""
+
+# 54b7bdc3b32740b0b0bd4383e05f6401
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:177
+msgid ""
+"It is possible to change **Double nodes tolerance**, which will be used "
+"upon consequent pressing *Compute* button. The default value of the "
+"tolerance can be set via the :ref:`dbl_nodes_tol_pref` preferences."
+msgstr ""
+
+# e726dde442ef4e099274cf3a8c4901e6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:180
+msgid ""
+"For performance reasons, all quality control values for big meshes are "
+"computed only by demand. For this, press the *Compute* button. Also, "
+"values are automatically computed if the number of nodes / elements does "
+"not exceed the :ref:`auto_control_limit_pref` set via the "
+":ref:`mesh_information_pref` preferences (zero value means that there is "
+"no limit)."
+msgstr ""
+
+# 9dfb329bf1f740798ff18de7dab8728e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:183
+msgid ""
+"The plot functionality is available only if the GUI module is built with "
+"Plot 2D Viewer (option SALOME_USE_PLOT2DVIEWER is ON when building GUI "
+"module)."
+msgstr ""
+
+# 84fc0f1732a04cec94d12b8c0e36d41e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:185
+msgid "See the :ref:`tui_viewing_mesh_infos`."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/mesh_preferences.po b/doc/gui/locale/fr/LC_MESSAGES/mesh_preferences.po
new file mode 100644 (file)
index 0000000..4cda6ac
--- /dev/null
@@ -0,0 +1,792 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 86666e2cbeb4408eb608046a56bae1e4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:5
+msgid "Mesh preferences"
+msgstr ""
+
+# 1080a16d80af4f6698fcb587a5fb5edc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:7
+msgid ""
+"In the Mesh module you can set mesh preferences, which can be used right "
+"now or in later sessions with this module according to the preferences."
+msgstr ""
+
+# 0beca22f58e243ceb993d751a1a8944f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:10
+msgid "General Preferences"
+msgstr ""
+
+# b9d4edb0921f4a61a58226e0d1a62e62
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:18
+msgid "Automatic Update"
+msgstr ""
+
+# 2995e42634114a558ecf5246edc4cc3b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:20
+msgid "**Automatic Update**"
+msgstr ""
+
+# fba4cac0c7c947fb8146017a961bce44
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:22
+msgid ""
+"**Automatic Update** - if activated, the mesh in your viewer will be "
+"automatically updated after it's computation, depending on values of "
+"additional preferences specified below."
+msgstr ""
+
+# 708bc74a30ca48e4ada06ca8cc8ba142
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:23
+msgid ""
+"**Size limit (elements)** - allows specifying the maximum number of "
+"elements in the resulting mesh for which the automatic updating of the "
+"presentation is performed. This option affects only :ref:`compute_anchor`"
+" operation. Zero value means \"no limit\". Default value is 500 000 mesh "
+"elements."
+msgstr ""
+
+# 1480b086d8e2407d906f5478dd1bc3c5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:24
+msgid ""
+"**Incremental limit check** - if activated, the mesh size limit check is "
+"not applied to the total number of elements in the resulting mesh, it is "
+"applied iteratively to each entity type in the following order: 0D "
+"elements, edges, faces, volumes, balls. At each step the number of "
+"entities of a certain type is added to the total number of elements "
+"computed at the previous step - if the resulting number of elements does "
+"not exceed the size limit, the entities of this type are shown, otherwise"
+" the user is warned that some entities are not shown."
+msgstr ""
+
+# aff351500d1544bd97d70f959eaa383c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:29
+msgid "Display mode"
+msgstr ""
+
+# cb809edafa364c38b8433aee1e6bc506
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:32
+msgid "**Display mode**"
+msgstr ""
+
+# 8782e3f4895442dbb2ab8cb838c2ccca
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:32
+msgid ""
+"**Default display mode** - allows to set Wireframe, Shading, Nodes or "
+"Shrink :ref:`display_mode_page` as default."
+msgstr ""
+
+# 9c42d83b94c442a09353a74341f831b9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:37
+msgid "Quadratic 2D preferences"
+msgstr ""
+
+# 318d91232eab4675954fbf1c3c974649
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:41
+msgid "**Representation of the 2D quadratic elements**"
+msgstr ""
+
+# 4c5aa0543e0342e38e350eb599c73ffb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:40
+msgid ""
+"**Default mode of the 2D quadratic elements** - allows to select either "
+"*Lines* or *Arcs* as a default :ref:`quadratic_2d_mode` of 1D and 2D "
+":ref:`adding_quadratic_elements_page`."
+msgstr ""
+
+# 56b3c10d5a8243108db4b2c7ab50746b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:41
+msgid ""
+"**Maximum Angle** - maximum deviation angle used by the application to "
+"build arcs."
+msgstr ""
+
+# 82228d4240b24ab68f24d51af55a793b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:45
+msgid "**Quality Controls**"
+msgstr ""
+
+# db8abc18e3534199a5d1b7637945461b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:44
+msgid ""
+"**Display entity** - if activated, only currently :ref:`quality_page` "
+"entities are displayed in the viewer and other entities are temporarily "
+"hidden. For example if you activate :ref:`length_page` quality control, "
+"which controls the length of mesh segments, then only mesh segments are "
+"displayed and faces and volumes are hidden."
+msgstr ""
+
+# c7b8e4c2e550496c8dac1f4caaf238a5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:45
+msgid ""
+"**Use precision** - if activated, all quality controls will be computed "
+"at precision defined by **Number of digits after point** - as integers by"
+" default."
+msgstr ""
+
+# 825d67a587814e6ea3c73c46eea7ed63
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:50
+msgid "Double nodes tolerance"
+msgstr ""
+
+# c70001dcf1f642d38c6af2a7d997f4c1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:52
+msgid ""
+"**Double nodes tolerance** - defines the maximal distance between two "
+"mesh nodes, at which they are considered coincident by "
+":ref:`double_nodes_control_page` quality control. This value is also used"
+" in :ref:`mesh_quality_info_anchor` tab page of :ref:`mesh_infos_page` "
+"dialog."
+msgstr ""
+
+# 4c4a17a5d4464095bcfe63781192d2f6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:54
+msgid "**Mesh export**"
+msgstr ""
+
+# 5fad6433ed53451b800b0c057c951690
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:59
+msgid "Automatically create groups for MED export"
+msgstr ""
+
+# c00091fc9baa4238a97022d3bcc6c18d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:61
+msgid ""
+"**Automatically create groups for MED export** - defines a default state "
+"of a corresponding check-box in :ref:`export_auto_groups` dialog."
+msgstr ""
+
+# ae723b72a0064cd28894c59ab665457f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:66
+msgid "Show warning when exporting group"
+msgstr ""
+
+# 42789c858cf34959972e15e8ad73f74f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:68
+msgid ""
+"**Show warning when exporting group** - if activated, a warning is "
+"displayed when exporting a group."
+msgstr ""
+
+# 0e2314ebbb334c68b12b9424c20cad0c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:73
+msgid "Mesh computation"
+msgstr ""
+
+# 7660c985d55f4181a7dd4279285eca77
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:79
+msgid "**Mesh computation**"
+msgstr ""
+
+# 9db0838c8be64ab2adc3e575f76db3e7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:79
+msgid ""
+"**Show a computation result notification** - allows to select the "
+"notification mode about a :ref:`compute_anchor` result. There are 3 "
+"possible modes:"
+msgstr ""
+
+# cb70e77f347542c99f23f77235d63a7a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:77
+msgid "**Never** - not to show the :ref:`meshing_result_anchor` at all;"
+msgstr ""
+
+# 94b3a98b34a443a89dccea360d3fa397
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:78
+msgid ""
+"**Errors only** - the result dialog will be shown if there were some "
+"errors during a mesh computation;"
+msgstr ""
+
+# 867b39f49b4144a989ec2d53243880b6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:79
+msgid ""
+"**Always** - show the result dialog after each mesh computation. This is "
+"a default mode."
+msgstr ""
+
+# 40ae40b44bbc4809b2941b3a54c6de85
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:84
+msgid "Mesh information"
+msgstr ""
+
+# 8d70173df44042f48eaf242561e71f77
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:86
+msgid "**Mesh information**"
+msgstr ""
+
+# ddcdcb25a8b24745ad2f53287c0e7a2c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:90
+msgid ""
+"**Mesh element information** - allows changing the way "
+":ref:`mesh_element_info_anchor` is shown:"
+msgstr ""
+
+# a21c91e8ff0749a69a614b8a40094dfc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:89
+msgid "**Simple** - as a plain text"
+msgstr ""
+
+# 013890ff591d4fd5865a19533973a33e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:90
+msgid "**Tree** - in a tree-like form"
+msgstr ""
+
+# 7c139ca861ca4049842f3c636bfb3431
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:95
+msgid "Automatic nodes compute limit"
+msgstr ""
+
+# 73e888098e1f45dc90e2341559fc519e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:97
+msgid ""
+"**Automatic nodes compute limit** - allows defining the size limit for "
+"the :ref:`mesh_addition_info_group_anchor` for which the number of "
+"underlying nodes is calculated automatically. If the group size exceeds "
+"the value set in the preferences, the user will have to press \\em "
+"Compute button explicitly. Zero value means \"no limit\". By default the "
+"value is set to 100 000 mesh elements."
+msgstr ""
+
+# 55c0542ffcca4b22845f0dd00e60c78e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:102
+msgid "Automatic controls compute limit"
+msgstr ""
+
+# 02bd6a9486f640c1a5fcf04248e8c6a3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:104
+msgid ""
+"**Automatic controls compute limit** - allows defining a maximal number "
+"of mesh elements for which the quality controls in the "
+":ref:`mesh_quality_info_anchor` tab page are calculated automatically. If"
+" the number of mesh elements exceeds the value set in the preferences, it"
+" is necessary to press **Compute** button explicitly to calculate a "
+"quality measure. Zero value means \"no limit\". By default the value is "
+"set to 3 000 mesh elements."
+msgstr ""
+
+# 4ad8373601e4438cb7c1b466a6cf0bce
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:109
+msgid "Detailed info for groups"
+msgstr ""
+
+# 929ce657c75a430d9d2062a1fb848115
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:111
+msgid ""
+"**Show details on groups in element information tab** - when this option "
+"is switched off (default), only the names of groups, to which the node or"
+" element belongs, are shown in the :ref:`mesh_element_info_anchor` tab of"
+" \"Mesh Information\" dialog box. If this option is switched on, the "
+"detailed information on groups is shown."
+msgstr ""
+
+# 5534e2107e3740178ba5377cc16f9c58
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:112
+msgid ""
+"**Dump base information** - allows dumping base mesh information to the "
+"file, see :ref:`dump_mesh_infos`."
+msgstr ""
+
+# fa4b7f6a853540eb8a9e7becaec5e016
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:113
+msgid ""
+"**Dump element information** - allows dumping element information to the "
+"file, see :ref:`dump_mesh_infos`."
+msgstr ""
+
+# 4e9ca690ccb54fd19ec634e2313d24f1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:114
+msgid ""
+"**Dump additional information** - allows dumping additional mesh "
+"information to the file, see :ref:`dump_mesh_infos`."
+msgstr ""
+
+# 87a71ab143a44b168da433268838ea1d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:115
+msgid ""
+"**Dump controls information** - allows dumping quality mesh information "
+"to the file, see :ref:`dump_mesh_infos`."
+msgstr ""
+
+# ade975dfa7e242f99d48dcc46b238234
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:117
+msgid "**Automatic Parameters**"
+msgstr ""
+
+# b5aa47a535b84964835dc569d29580a3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:122
+msgid "Ratio Bounding Box Diagonal"
+msgstr ""
+
+# 7b436c68a4264dc3af6e68c7a2b3ace8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:124
+msgid ""
+"**Ratio Bounding Box Diagonal / Max Size** - defines the ratio between "
+"the bounding box of the meshed object and the Max Size of segments. It is"
+" used as a default value of :ref:`a1d_meshing_hypo_page` defining length "
+"of segments, especially by :ref:`max_length_anchor` hypothesis."
+msgstr ""
+
+# 3e2cd3f669414850ba68c3b68b8c7060
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:129
+msgid "Default Number of Segments"
+msgstr ""
+
+# d92bd97cf1394bef94493ef5a53459c7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:131
+msgid ""
+"**Default Number of Segments** - defines the default number of segments "
+"in :ref:`number_of_segments_anchor` hypothesis."
+msgstr ""
+
+# 40606083e2c74dc2a0057ea0531e70b2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:133
+msgid "**Mesh loading**"
+msgstr ""
+
+# 45553581d5f94aba9984043324a7a671
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:135
+msgid ""
+"**No mesh loading from study file at hypothesis modification** - if "
+"activated, the mesh data will not be loaded from the study file when a "
+"hypothesis is modified. This allows saving time by omitting loading data "
+"of a large mesh that is planned to be recomputed with other parameters."
+msgstr ""
+
+# aebbff71e88c47f6bf7544d54cb08225
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:137
+msgid ""
+"**Input fields precision** - allows to adjust input precision of "
+"different parameters. The semantics of the precision values is described "
+"in detail in **Using input widgets** chapter of GUI documentation "
+"(Introduction to Salome Platform / Introduction to GUI / Using input "
+"widgets). In brief: **positive** precision value is the maximum allowed "
+"number of digits after the decimal point in the fixed-point format; "
+"**negative** precision value is the maximum allowed number of significant"
+" digits in mantissa in either the fixed-point or scientific format."
+msgstr ""
+
+# 14aab516533d41d4a050872afd2d7129
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:139
+msgid ""
+"**Length precision** - allows to adjust input precision of coordinates "
+"and dimensions."
+msgstr ""
+
+# d5405bdf6e5d4627b8d964d6d5db2eba
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:140
+msgid "**Angular precision** - allows to adjust input precision of angles."
+msgstr ""
+
+# da60439d8a894f129cd270e031753a32
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:141
+msgid ""
+"**Length tolerance precision** - allows to adjust input precision of "
+"tolerance of coordinates and dimensions."
+msgstr ""
+
+# aac59c84886147de8d919059baef91f3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:142
+msgid ""
+"**Parametric precision** - allows to adjust input precision of parametric"
+" values."
+msgstr ""
+
+# 79555e19934a49abb6b1930101562e5a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:143
+msgid ""
+"**Area precision** - allows to adjust input precision of mesh element "
+"area."
+msgstr ""
+
+# dad33cd69f6e4ef88426e1acc4832395
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:144
+msgid ""
+"**Volume precision** - allows to adjust input precision of mesh element "
+"volume."
+msgstr ""
+
+# 5c78cd7db6cb401baffbf93527d8064d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:147
+msgid "**Preview**"
+msgstr ""
+
+# 8997363a1c8a4603baf5a97a12552ae7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:147
+msgid ""
+"**Sub-shapes preview chunk size** - allows to limit the number of "
+"previewed sub-shapes shown in the hypotheses creation dialog boxes, for "
+"example \"Reverse Edges\" parameter of :ref:`number_of_segments_anchor` "
+"hypothesis."
+msgstr ""
+
+# 00aa69a7e22d438da665287e8b618f32
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:152
+msgid "**Python Dump**"
+msgstr ""
+
+# 584a9e84ca8647beadbce1de3ebd1061
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:150
+msgid ""
+"**Historical python dump** - allows switching between *Historical* and "
+"*Snapshot* dump mode:"
+msgstr ""
+
+# e1f2a1c1f1fb4b66b71e7537f91396f3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:151
+msgid ""
+"In *Historical* mode, Python Dump script includes all commands performed "
+"by SMESH engine."
+msgstr ""
+
+# a95234780277478ea6f39395723b2274
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:152
+msgid ""
+"In *Snapshot* mode, the commands relating to objects removed from the "
+"Study as well as the commands not influencing the current state of meshes"
+" are excluded from the script."
+msgstr ""
+
+# e6208c776c314ae4bf5c7eac60b8fa14
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:157
+msgid "Mesh Preferences"
+msgstr ""
+
+# e29f953dd0ba4dc58ada2a9a6cc9dba1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:159
+msgid ""
+"**Mesh** tab page contains parameters defining the way the mesh is "
+"displayed in the 3D Viewer."
+msgstr ""
+
+# 6ecf85af43074d048a114c9ba06dc688
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:167
+msgid ""
+"**Nodes** - allows to define default parameters for nodes, which will be "
+"applied for a newly created mesh only. Existing meshes can be customized "
+"using :ref:`colors_size_page` available from the context menu of a mesh."
+msgstr ""
+
+# 8ccf649b8dc047868f28f3c3f0a9fd8b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:165
+msgid ""
+"**Color** -  allows to select the color of nodes. Click on the downward "
+"arrow near the colored line to access to the **Select Color** dialog box."
+msgstr ""
+
+# 62bc2f26045b48bc8a871b94c4594b91
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:166
+msgid "**Type of marker** - allows to define the shape of nodes."
+msgstr ""
+
+# b9edba04c49941fa9f94800bbbf57555
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:167
+msgid "**Scale of marker** - allows to define the size of nodes."
+msgstr ""
+
+# e3763e6d2df14a87a0ca9ed3390988d1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:184
+msgid ""
+"**Elements** - allows to define default parameters for different "
+"elements, which will be applied to a newly created mesh only. Existing "
+"meshes can be customized using :ref:`colors_size_page` available from the"
+" context menu of a mesh."
+msgstr ""
+
+# d4ced05a884144578beee7b41b229ac3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:170
+msgid ""
+"**Surface color**  - allows to select the surface color of 2D elements "
+"(seen in Shading mode). Click on the downward arrow near the colored line"
+" to access to the **Select Color** dialog box."
+msgstr ""
+
+# 4eb13db66ad340ef81e58ca2006dc05c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:171
+msgid ""
+"**Back surface color** - allows to select the back surface color of 2D "
+"elements. This is useful to differ 2d elements with reversed orientation."
+" Use the slider to select the color generated basing on the **Surface "
+"color** by changing its brightness and saturation."
+msgstr ""
+
+# 4ecb31a377fe40e884507dbb19654b59
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:172
+msgid ""
+"**Volume color** - allows to select the surface color of 3D elements "
+"(seen in Shading mode)."
+msgstr ""
+
+# 59054eccfc91434aaab74f4a4b673676
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:173
+msgid ""
+"**Reversed volume color** - allows to select the surface color of "
+"reversed 3D elements. Use the slider to select the color generated basing"
+" on the **Volume color** by changing its brightness and saturation."
+msgstr ""
+
+# 0eadab3ea42642a9ac2817e7ec68c13d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:174
+msgid "**0D element color** - allows to choose color of 0D mesh elements."
+msgstr ""
+
+# 12d2ced353384e17af983bbec65ec603
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:175
+msgid "**Ball color** - allows to choose color of discrete mesh elements (balls)."
+msgstr ""
+
+# 94058859794c4f1296afd0b57c603c7a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:176
+msgid "**Outline color** - allows to select the color of element borders."
+msgstr ""
+
+# 8d9ea519244d4eee81d556ae26af1a92
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:177
+msgid ""
+"**Wireframe color** - allows to select the color of borders of elements "
+"in the wireframe mode."
+msgstr ""
+
+# f0f6be573148448fb96233cfdbd68662
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:178
+msgid ""
+"**Preview color** - allows to select the preview color of the elements, "
+"which is used while :ref:`adding_nodes_and_elements_page`."
+msgstr ""
+
+# 128aa6ccf3974c04b0b1134b910f8714
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:179
+msgid "**Size of 0D elements** - specifies default size of 0D elements."
+msgstr ""
+
+# 9fae69316c3d4c2cb0866c29a81431c2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:180
+msgid ""
+"**Size of ball elements** - specifies default size of discrete elements "
+"(balls)."
+msgstr ""
+
+# bd02ccc8220b4310aef9dea39e221c3d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:181
+msgid ""
+"**Scale factor of ball elements** - specifies default scale factor of "
+"discrete elements (balls) allowing to adjust their size in the Viewer."
+msgstr ""
+
+# 1fe534c8fe2f48478a08a1e23f47d422
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:182
+msgid "**Line width** - allows to define the width of 1D elements (segments)."
+msgstr ""
+
+# d7ed3f0888834f70ac90d0c9a1746c7f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:183
+msgid ""
+"**Outline width** - allows to define the width of borders of 2D and 3D "
+"elements (shown in the Shading mode)."
+msgstr ""
+
+# f4445e8d16274349b65ffe42160b0b3d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:184
+msgid ""
+"**Shrink coef.** - allows to define relative size of a shrunk element "
+"compared a non-shrunk element in percents in the shrink mode."
+msgstr ""
+
+# ba8af4c61186416783c75abdddc55376
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:188
+msgid "**Groups**"
+msgstr ""
+
+# 2c3d1d895bce4fe4b0b9c64eef9b92e0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:187
+msgid ""
+"**Names color** - specifies color of group names to be used in the 3D "
+"viewer."
+msgstr ""
+
+# 3e367d8eb83041889295781fb9fb8b6b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:188
+msgid ""
+"**Default color** - specifies the default group color, which is used to "
+"create a new mesh group (see :ref:`creating_groups_page`)."
+msgstr ""
+
+# 9f28d514b76740b49b11f67f2abdd6e5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:192
+msgid "**Numbering** allows to define properties of numbering functionality:"
+msgstr ""
+
+# 13d5c7e6d97c4d6ca9ba3c3b47933c08
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:191
+msgid ""
+"**Nodes** - specifies text properties of nodes numbering (font family, "
+"size, attributes, color)."
+msgstr ""
+
+# fbb6f98ae4674d69a98679b3c0bf077f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:192
+msgid "**Elements** - same for elements."
+msgstr ""
+
+# 3b2821cfde164510b8f21340ab99d08d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:197
+msgid ""
+"**Orientation of Faces** - allows to define default properties of "
+"orientation vectors. These preferences will be applied to the newly "
+"created meshes only; properties of existing meshes can be customized "
+"using :ref:`colors_size_page` available from the context menu of a mesh."
+msgstr ""
+
+# b2873f76b99346cfbf7a9efa3725af30
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:195
+msgid "**Color** - allows to define the color of orientation vectors;"
+msgstr ""
+
+# b61f06ec5d92434fa51281eb9079901e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:196
+msgid "**Scale** - allows to define the size of orientation vectors;"
+msgstr ""
+
+# 0fe597ecf6414d71a73f4a2e081a534d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:197
+msgid "**3D Vector** - allows to choose between 2D planar and 3D vectors."
+msgstr ""
+
+# b8dd01b3567d42b4853155edd5b19938
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:200
+msgid "Selection Preferences"
+msgstr ""
+
+# 377d4d6db9bb4ecd909888cf3523a985
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:207
+msgid ""
+"**Selection** - performed with mouse-indexing (preselection) and left-"
+"clicking on an object, whose appearance changes as defined in the "
+"**Preferences**."
+msgstr ""
+
+# 37571072b8d84447ae82974380147c6a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:206
+msgid ""
+"**Object color** - allows to select the color of mesh (edges and borders "
+"of meshes) of the selected entity. Click on the colored line to access to"
+" the **Select Color** dialog box."
+msgstr ""
+
+# 014792f5a1bf478abe88ffa8a1d96fc6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:207
+msgid ""
+"**Element color** - allows to select the color of surface of selected "
+"elements (seen in Shading mode). Click on the colored line to access to "
+"the **Select Color** dialog box."
+msgstr ""
+
+# 875ecdc81187472c97afabdb3c0e1d99
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:210
+msgid ""
+"**Preselection** - performed with mouse-indexing on an object, whose "
+"appearance changes as defined in the **Preferences**."
+msgstr ""
+
+# 27f032e718204b42b067f9fc493ff400
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:210
+msgid ""
+"**Highlight color** - allows to select the color of mesh (edges and "
+"borders of meshes) of the entity. Click on the colored line to access to "
+"the **Select Color** dialog box."
+msgstr ""
+
+# e89697cf348d4119a626cb206ae809bd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:212
+msgid ""
+"**Precision** - in this menu you can set the value of precision used for "
+"**Nodes**, **Elements** and **Objects**."
+msgstr ""
+
+# b4e87347f0b5498a94add401c03f54d5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:215
+msgid "Scalar Bar Preferences"
+msgstr ""
+
+# 7fe95cdce3254c25b6066673b910d3c5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:221
+msgid ""
+"The following settings are default and will be applied to a newly created"
+" mesh only. Existing meshes can be customized using local "
+":ref:`scalar_bar_dlg` available from the context menu of a mesh."
+msgstr ""
+
+# 08f246d4c49f4f67b6c1a92ed2a56b13
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:223
+msgid ""
+"**Font** - in this menu you can set type, face and color of the font of "
+"**Title** and **Labels**."
+msgstr ""
+
+# b7bf0da17d79446c98c3a5cae06670fa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:225
+msgid ""
+"**Colors & Labels** - in this menu you can set the **number of colors** "
+"and the **number of labels** in use."
+msgstr ""
+
+# c425048b5ce148fd95e42f0b11ea5602
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:227
+msgid ""
+"**Orientation** - here you can choose between vertical and horizontal "
+"orientation of the **Scalar Bar**."
+msgstr ""
+
+# 54a8c11082074ffc84fd6480d3189cf3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:231
+msgid ""
+"**Origin & Size Vertical & Horizontal** - allows to define placement "
+"(**X** and **Y**) and lookout (**Width** and **Height**) of Scalar Bars."
+msgstr ""
+
+# 64390fb45cd844b2a17a9a19ee25c59b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:230
+msgid "**X** - abscissa of the point of origin (from the left side)."
+msgstr ""
+
+# ccd005065b8c4940b3945cac2d4645d8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:231
+msgid "**Y** - ordinate of the origin of the bar (from the bottom)."
+msgstr ""
+
+# 7bbe2195abfa475692d47d40581f2903
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:236
+msgid ""
+"**Distribution** in this menu you can Show/Hide distribution histogram of"
+" the values of the **Scalar Bar** and specify the **Coloring Type** of "
+"the histogram:"
+msgstr ""
+
+# 89b1d9cc918d4094bfc53d242697b1da
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:234
+msgid "**Multicolor** - the histogram is colored as **Scalar Bar**."
+msgstr ""
+
+# 5776b1b6f872431f9c3095827c9e6a69
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:235
+msgid ""
+"**Monocolor** - the histogram is colored as selected with **Distribution "
+"color** selector."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/mesh_through_point.po b/doc/gui/locale/fr/LC_MESSAGES/mesh_through_point.po
new file mode 100644 (file)
index 0000000..6ba529d
--- /dev/null
@@ -0,0 +1,88 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 1ffc38982adf47fcade31b8e5e698da0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:5
+msgid "Moving nodes"
+msgstr ""
+
+# a52fe3efbbf5414fb82bac9d49344fe7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:7
+msgid ""
+"In mesh you can define a node at a certain point either * by movement of "
+"the node closest to the point or * by movement of a selected node to the "
+"point."
+msgstr ""
+
+# 9b2db2d4c63c43d684267300f72cccb8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:11
+msgid "**To displace a node:**"
+msgstr ""
+
+# f2bbc2696ae54993aa4d87bef3570106
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:13
+msgid ""
+"From the **Modification** menu choose the **Move node** item or click "
+"**\"Move Node\"** button in the toolbar."
+msgstr ""
+
+# e388044d0bb6426d9b919415688b6bed
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:21
+msgid "The following dialog will appear:"
+msgstr ""
+
+# cc660e1218ff408091d02886affe3b76
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:38
+msgid ""
+"Specify the way of node selection: manually (the first radio button) or "
+"automatically (the second radio button)."
+msgstr ""
+
+# 220607f94c2446048817a084caad5621
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:39
+msgid ""
+"If the manual method is selected, select a node to move (X, Y, Z fields "
+"show the original coordinates of the node) or type the node ID."
+msgstr ""
+
+# e5409113789b411f8764353f9e31ed70
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:40
+msgid ""
+"Enter the coordinates of the destination point. You can click **Update "
+"Destination** button to set the coordinates of the destination point "
+"equal to the coordinates of the node to move."
+msgstr ""
+
+# 43d89a1d7ac94e65a87b159f7b846ece
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:41
+msgid "Activate **Preview** check-box to show the result of move in the viewer."
+msgstr ""
+
+# 1d61a59cc3074d3c8517729005d4c586
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:42
+msgid ""
+"Click the **Apply** or **Apply and Close** button to confirm the "
+"operation."
+msgstr ""
+
+# 93d94c236da04a568845b1ed95848ee9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:56
+msgid "**See Also** a sample TUI Script of a :ref:`tui_moving_nodes` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/minimum_angle.po b/doc/gui/locale/fr/LC_MESSAGES/minimum_angle.po
new file mode 100644 (file)
index 0000000..18eb025
--- /dev/null
@@ -0,0 +1,61 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 8c9833a8c4b34b6686d275f35ce51cb8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/minimum_angle.rst:5
+msgid "Minimum angle"
+msgstr ""
+
+# e2969f989b9d425da09b6e9415958e2d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/minimum_angle.rst:7
+msgid ""
+"**Minimum angle** mesh quality criterion consists of calculation of the "
+"minimum value of angle between two adjacent sides of a 2D meshing element"
+" (triangle or quadrangle)."
+msgstr ""
+
+# 3bc1eb4dd5ae4d6bbd8573ff0fcfa5fa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/minimum_angle.rst:9
+msgid "**To apply the Minimum angle quality criterion to your mesh:**"
+msgstr ""
+
+# 52f131a28705437fa82b4ef6268be568
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/minimum_angle.rst:11
+msgid "Display your mesh in the viewer."
+msgstr ""
+
+# 503b3b09b790497bacc2a83d60f5fc06
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/minimum_angle.rst:12
+msgid ""
+"Choose **Controls > Face Controls > Minimum angle** or click **\"Minimum "
+"Angle\"** button."
+msgstr ""
+
+# 69fc068d689f4ad9b58d3ddffd5cd835
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/minimum_angle.rst:20
+msgid ""
+"Your mesh will be displayed in the viewer with its elements colored "
+"according to the applied mesh quality control criterion:"
+msgstr ""
+
+# 1b79a35974814c9bba550884b6f6e2c2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/minimum_angle.rst:25
+msgid "**See Also** a sample TUI Script of a :ref:`tui_minimum_angle` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/modifying_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/modifying_meshes.po
new file mode 100644 (file)
index 0000000..58ad3e3
--- /dev/null
@@ -0,0 +1,216 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 766444ec7ead4382bf9a9624b129e90c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:5
+msgid "Modifying meshes"
+msgstr ""
+
+# b99424d3a44043c289ea11b4c5b4d71d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:7
+msgid ""
+"Salome provides a vast specter of mesh modification and transformation "
+"operations, giving the possibility to:"
+msgstr ""
+
+# 27b4caab85ab4022b129e2ce9e794246
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:9
+msgid ""
+":ref:`adding_nodes_and_elements_page` mesh elements from nodes to "
+"polyhedrons at an arbitrary place in the mesh."
+msgstr ""
+
+# 908e3ed5a71c4ae59dce473a7a0107ef
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:10
+msgid ""
+":ref:`adding_quadratic_elements_page` mesh elements from quadratic "
+"segments to quadratic hexahedrons at an arbitrary place in the mesh."
+msgstr ""
+
+# b343ea63a1f2423aabb45a296d82569b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:11
+msgid ""
+":ref:`removing_nodes_and_elements_page` any existin\" mesh elements and "
+"nodes."
+msgstr ""
+
+# d2890a80488d44a3b4bd107dbde60fd4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:12
+msgid ""
+":ref:`translation_page` in the indicated direction the mesh or some of "
+"its elements."
+msgstr ""
+
+# a99da6a135bf4032baf8b18f813237d1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:13
+msgid ""
+":ref:`rotation_page` by the indicated axis and angle the mesh or some of "
+"its elements."
+msgstr ""
+
+# b8a081a280be48a2b51ef68ee3df88d7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:14
+msgid ":ref:`scale_page` the mesh or some of its elements."
+msgstr ""
+
+# b559388bd7d947cf8e7575002ad2f316
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:15
+msgid ""
+":ref:`symmetry_page` the mesh through a point, a vector or a plane of "
+"symmetry."
+msgstr ""
+
+# a2573fe7b4cd4282b21f0ba208d19109
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:16
+msgid ""
+":ref:`double_nodes_page`. Duplication of nodes can be useful to emulate a"
+" crack in the model."
+msgstr ""
+
+# 8a13df333f3442479415aefa0bcb6d9c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:17
+msgid ""
+"Unite meshes by :ref:`sewing_meshes_page` free borders, border to side or"
+" side elements."
+msgstr ""
+
+# 19f0c2af911c4967974bee39cc3cab16
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:18
+msgid ":ref:`merging_nodes_page`, coincident within the indicated tolerance."
+msgstr ""
+
+# 15e001da164c49089b3ef370f7dd4c13
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:19
+msgid ":ref:`merging_elements_page` based on the same nodes."
+msgstr ""
+
+# a8f8b84148e142adb9c83a0f217b6622
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:20
+msgid ""
+":ref:`mesh_through_point_page` to an arbitrary location with consequent "
+"transformation of all adjacent elements."
+msgstr ""
+
+# ca7ee1d4df254c4bbd77cadcfa91d8b2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:21
+msgid ":ref:`diagonal_inversion_of_elements_page` between neighboring triangles."
+msgstr ""
+
+# 9cebbde1db824710b713cc4d69e85b1f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:22
+msgid ":ref:`uniting_two_triangles_page`."
+msgstr ""
+
+# 137a90a9bb2f4814a5b7cf6b24779cf4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:23
+msgid ":ref:`uniting_set_of_triangles_page`."
+msgstr ""
+
+# db6f2ee5a1a04f7daffa3b6aa71d3bac
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:24
+msgid ":ref:`changing_orientation_of_elements_page` of the selected elements."
+msgstr ""
+
+# 80f3f3ab13eb43febe9c059190c95bbf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:25
+msgid ":ref:`reorient_faces_page` by several means."
+msgstr ""
+
+# aed703cfc9ff45a7b270e7076f1c60db
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:26
+msgid ":ref:`cutting_quadrangles_page` into two triangles."
+msgstr ""
+
+# f349265200824d7e8e3584c4af8f698d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:27
+msgid ":ref:`split_to_tetra_page` volumic elements into tetrahedra or prisms."
+msgstr ""
+
+# 7799482f6ae34a23b5da41d5da7b6609
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:28
+msgid ""
+":ref:`split_biquad_to_linear_page` elements into linear ones without "
+"creation of additional nodes."
+msgstr ""
+
+# 82bae0fef4244cc4b142353235b5396b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:29
+msgid ""
+":ref:`smoothing_page` elements, reducung distortions in them by adjusting"
+" the locations of nodes."
+msgstr ""
+
+# e7247ed2cd3749e98530ebc18b727a6f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:30
+msgid ""
+"Create an :ref:`extrusion_page` along a vector or by normal to a "
+"discretized surface."
+msgstr ""
+
+# 60b895357efe4a218b2e541b17b66fa2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:31
+msgid "Create an :ref:`extrusion_along_path_page`."
+msgstr ""
+
+# 5f2876a7d88c4811ade4f18f430af9d5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:32
+msgid ""
+"Create elements by :ref:`revolution_page` of the selected nodes and "
+"elements."
+msgstr ""
+
+# 918249030bc648e88c6c8630a11f1524
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:33
+msgid "Apply :ref:`pattern_mapping_page`."
+msgstr ""
+
+# ced0d6b7e4864f8dac1921be77245e8b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:34
+msgid ":ref:`convert_to_from_quadratic_mesh_page`, or vice versa."
+msgstr ""
+
+# 35a85820daf940c0a5397a64a5c2c0f7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:35
+msgid ":ref:`make_2dmesh_from_3d_page`."
+msgstr ""
+
+# 5fd1fc86df7a4a178e56e5d9291d64a0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:36
+msgid ":ref:`generate_flat_elements_page`."
+msgstr ""
+
+# c6750c45022d4ad0b3ebca52813ec41f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:37
+msgid ":ref:`cut_mesh_by_plane_page`."
+msgstr ""
+
+# f4f3aad385cc4ca6bf93008ef0b474a9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:41
+msgid ""
+"It is possible to :ref:`edit_anchor` of a lower dimension before "
+"generation of the mesh of a higher dimension."
+msgstr ""
+
+# 3fb1488f7c8d4cc7a7c33a989b0d0568
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:45
+msgid ""
+"It is possible to use the variables defined in the SALOME **NoteBook** to"
+" specify the numerical parameters used for modification of any object."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/modules.po b/doc/gui/locale/fr/LC_MESSAGES/modules.po
new file mode 100644 (file)
index 0000000..afadf65
--- /dev/null
@@ -0,0 +1,2262 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2018.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.4.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-03-29 19:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# e41e3c671aa54728b4e5f5ca6bddbf86
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:5
+msgid "Modules"
+msgstr ""
+
+# aebf98fd861d4330b03ef7b64056fa02
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:9
+msgid "Auxiliary methods and structures"
+msgstr ""
+
+# 811bc64367414a5e9ff781cf8554a052
+# a0d581078ae54c05b39be45170c4ae0a
+# 833f3ba9a22943d1921a681210df069d
+# f705209abf3943bcb0a2e09c4a540f92
+# e601d074e02742daaae08693703243b8
+# 5037ee543108413b8ec8a2de598111a5
+# 05449a7321cd48fb94e0f1be9de0fb32
+# db8f2686329e4652953758af4947ece8
+# 4cb751468e10471e93d61039402100fd
+# 13970cfb87434b04a32db9eecfb903a5
+# 4033255d507a452aa311ae5473f7dc7a
+# d80bfa3e0976405f923273ec99aa2d32
+# 3ad42612015247b4bdb16b3e49e3e43e
+# 48dffecd658e401abb436f0cb8ee9418
+# 17ee12b84391457d8813dff553c9e848
+# f8f6b38cdf87402ebf89c6323e3310d1
+# 0bc2f8de0d494fa993a816fc52fadcde
+# f2082e2c86904a56bb80a3f631166244
+# a44d1f363dec46d780a728aa2d4273c6
+# 1132bc4b1642403ca7d5a215870d9975
+# 7987824601644f049d6f3e1f502c7c3c
+# e974e569b598409e8ae0982bfac3fbf2
+# 84e5f6e90539423abda4f8a842a8b445
+# b76ec16a72f74b488b47cd9d98a471d4
+# 264bfb3ce9974cf59bd283d458093656
+# 294f1c8a01084d1aaebc6c741c5ba9e5
+# 9bcc9b34bead4b80ae7dfaff61a97164
+# 44272bb07e564f4f9e86895a04480a07
+# fbd275b4f6bb40afbd87bf6d8f3fcccc
+# 093b90cc9407408faabdaad9815a1e63
+# a57c9921cd714979b517a9b1874fe079
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:11
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:81
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:90
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:124
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:187
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:213
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:239
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:269
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:279
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:296
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:312
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:325
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:342
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:483
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:507
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:519
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:551
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:573
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:584
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:594
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:644
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:670
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:680
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:739
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:752
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:785
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:800
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:815
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:858
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:869
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:905
+msgid "Functions:"
+msgstr ""
+
+# 90d7d9c366264e3cb33de218f9746a35
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:13
+msgid ":meth:`def ParseParameters <smeshBuilder.ParseParameters>`"
+msgstr ""
+
+# dff21f5a6faf431f85c1310c07d165f7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:15
+msgid ":meth:`def ParseAngles <smeshBuilder.ParseAngles>`"
+msgstr ""
+
+# 131d4ac6295a4a08b0354384a78fed31
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:17
+msgid ":meth:`def __initPointStruct <smeshBuilder.__initPointStruct>`"
+msgstr ""
+
+# 594dc5118b6e47f4a48eab53ca6ec2cd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:19
+msgid ":meth:`def __initAxisStruct <smeshBuilder.__initAxisStruct>`"
+msgstr ""
+
+# d8dd52dbcac94904af5331430d882ea8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:21
+msgid ":meth:`def IsEqual <smeshBuilder.IsEqual>`"
+msgstr ""
+
+# 5c241e5788bb496188e0da7d3ae7e675
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:23
+msgid ":meth:`def GetName <smeshBuilder.GetName>`"
+msgstr ""
+
+# 073745b0d49a44228c12d376085d0e50
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:25
+msgid ":meth:`def TreatHypoStatus <smeshBuilder.TreatHypoStatus>`"
+msgstr ""
+
+# 60a4a00c8fb140a7a8138c2ba80a0cd9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:27
+msgid ":meth:`def AssureGeomPublished <smeshBuilder.AssureGeomPublished>`"
+msgstr ""
+
+# e0d3b809865e4952938ce5cbbb6f05a7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:29
+msgid ":meth:`def FirstVertexOnCurve <smeshBuilder.FirstVertexOnCurve>`"
+msgstr ""
+
+# 4570428a6bb64ebdb16d35716cee8851
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:31
+msgid ":meth:`def DumpPython <smeshBuilder.smeshBuilder.DumpPython>`"
+msgstr ""
+
+# 07dd4d93980941c58f01921a273f450a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:33
+msgid ""
+":meth:`def SetDumpPythonHistorical "
+"<smeshBuilder.smeshBuilder.SetDumpPythonHistorical>`"
+msgstr ""
+
+# 54aea7ee63a447b78baf263a2fb67a45
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:35
+msgid ":meth:`def init_smesh <smeshBuilder.smeshBuilder.init_smesh>`"
+msgstr ""
+
+# d867ca13d77146db80d0116ffd8364f9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:37
+msgid ":meth:`def EnumToLong <smeshBuilder.smeshBuilder.EnumToLong>`"
+msgstr ""
+
+# b358173ebc07437abd819fc4fc66eb42
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:39
+msgid ":meth:`def ColorToString <smeshBuilder.smeshBuilder.ColorToString>`"
+msgstr ""
+
+# bd7f4d82ae644c6780db68f4a46ff570
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:41
+msgid ":meth:`def GetPointStruct <smeshBuilder.smeshBuilder.GetPointStruct>`"
+msgstr ""
+
+# 2090d4b1e0c84c81ad0481932b4633b5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:43
+msgid ":meth:`def GetDirStruct <smeshBuilder.smeshBuilder.GetDirStruct>`"
+msgstr ""
+
+# 70dac38e98f14d5cbe0ff0ee25c7b975
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:45
+msgid ":meth:`def MakeDirStruct <smeshBuilder.smeshBuilder.MakeDirStruct>`"
+msgstr ""
+
+# bbbe42f4edeb42a19355501cb85b45f2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:47
+msgid ":meth:`def GetAxisStruct <smeshBuilder.smeshBuilder.GetAxisStruct>`"
+msgstr ""
+
+# 22e3e252f0b94814a8c2addc678a2293
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:49
+msgid ":meth:`def SetName <smeshBuilder.smeshBuilder.SetName>`"
+msgstr ""
+
+# 32475d1ca7674396ba6cb634910d0850
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:51
+msgid ":meth:`def SetEmbeddedMode <smeshBuilder.smeshBuilder.SetEmbeddedMode>`"
+msgstr ""
+
+# 03385dd886c24fb6b92ddf0a436a4ce6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:53
+msgid ":meth:`def IsEmbeddedMode <smeshBuilder.smeshBuilder.IsEmbeddedMode>`"
+msgstr ""
+
+# 0d69434db52a486f964328ffce6173b2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:55
+msgid ":meth:`def SetCurrentStudy <smeshBuilder.smeshBuilder.SetCurrentStudy>`"
+msgstr ""
+
+# ddc249302ea34d25ba0d14c8160061b8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:57
+msgid ":meth:`def GetCurrentStudy <smeshBuilder.smeshBuilder.GetCurrentStudy>`"
+msgstr ""
+
+# 7bfb9cb67ee64872b6622ba365432dfd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:59
+msgid ":meth:`def GetSubShapesId <smeshBuilder.smeshBuilder.GetSubShapesId>`"
+msgstr ""
+
+# bb345a3a49834096bc496c663c98d0d4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:61
+msgid ""
+":meth:`def SetBoundaryBoxSegmentation "
+"<smeshBuilder.smeshBuilder.SetBoundaryBoxSegmentation>`"
+msgstr ""
+
+# d1b4f3f8b52a43c7b5c49b86630ff525
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:63
+msgid ":meth:`def GetSubShapeName <smeshBuilder.Mesh.GetSubShapeName>`"
+msgstr ""
+
+# f4612f5aa6f24f88ba2db64c4ac546de
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:65
+msgid ":meth:`def GetLog <smeshBuilder.Mesh.GetLog>`"
+msgstr ""
+
+# d8762a58cfda46a388041959f6d36997
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:67
+msgid ":meth:`def ClearLog <smeshBuilder.Mesh.ClearLog>`"
+msgstr ""
+
+# 26c352b4467b4740912f04a036f2b4b4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:69
+msgid ":meth:`def GetId <smeshBuilder.Mesh.GetId>`"
+msgstr ""
+
+# eedad0f5bf634ae59fe53170bc3ea2ff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:71
+msgid ":meth:`def GetStudyId <smeshBuilder.Mesh.GetStudyId>`"
+msgstr ""
+
+# af879cf7b64d42c690626af6f1ab445c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:73
+msgid ":meth:`def GetIDSource <smeshBuilder.Mesh.GetIDSource>`"
+msgstr ""
+
+# 073eb7535d8a4e928e9265895e21d19c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:79
+msgid "Creating Meshes"
+msgstr ""
+
+# 09e09d0d59d4427a9921e756d792d29d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:83
+msgid ":meth:`def Concatenate <smeshBuilder.smeshBuilder.Concatenate>`"
+msgstr ""
+
+# 322db18922f94b97bc77a091b2638883
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:85
+msgid ":meth:`def CopyMesh <smeshBuilder.smeshBuilder.CopyMesh>`"
+msgstr ""
+
+# f342c057d7014cc4a434b6334e4c72fd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:88
+msgid "Importing and exporting meshes"
+msgstr ""
+
+# 8bdbcc46f3c74735b19555ab43020932
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:92
+msgid ""
+":meth:`def CreateMeshesFromUNV "
+"<smeshBuilder.smeshBuilder.CreateMeshesFromUNV>`"
+msgstr ""
+
+# 62f1d7ae5d05468982a2e90912cd623f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:94
+msgid ""
+":meth:`def CreateMeshesFromMED "
+"<smeshBuilder.smeshBuilder.CreateMeshesFromMED>`"
+msgstr ""
+
+# 77a8b8ceb0114334a3e00ed3fb55e46e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:96
+msgid ""
+":meth:`def CreateMeshesFromSAUV "
+"<smeshBuilder.smeshBuilder.CreateMeshesFromSAUV>`"
+msgstr ""
+
+# 1812c824f8e046efb21b0b6b592cbc1a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:98
+msgid ""
+":meth:`def CreateMeshesFromSTL "
+"<smeshBuilder.smeshBuilder.CreateMeshesFromSTL>`"
+msgstr ""
+
+# c1e1c96d625246cba7c0ca455f3c70bd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:100
+msgid ""
+":meth:`def CreateMeshesFromCGNS "
+"<smeshBuilder.smeshBuilder.CreateMeshesFromCGNS>`"
+msgstr ""
+
+# 2f3b3d70b8d1423ba1ac125eb4f1705a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:102
+msgid ""
+":meth:`def CreateMeshesFromGMF "
+"<smeshBuilder.smeshBuilder.CreateMeshesFromGMF>`"
+msgstr ""
+
+# 91cb65d7c24a4e708418f70306cab7aa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:104
+msgid ":meth:`def ExportMED <smeshBuilder.Mesh.ExportMED>`"
+msgstr ""
+
+# e8f1566fabc643dfa22e9c46e764aaa4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:106
+msgid ":meth:`def ExportSAUV <smeshBuilder.Mesh.ExportSAUV>`"
+msgstr ""
+
+# 3070a5a1cef34fb3ac18a0ef1e93ff62
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:108
+msgid ":meth:`def ExportDAT <smeshBuilder.Mesh.ExportDAT>`"
+msgstr ""
+
+# 5d6fb5d0bc4f4fd4977fab31880b32b8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:110
+msgid ":meth:`def ExportUNV <smeshBuilder.Mesh.ExportUNV>`"
+msgstr ""
+
+# 3bef8c6c3906485faaa7556904ca9f91
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:112
+msgid ":meth:`def ExportSTL <smeshBuilder.Mesh.ExportSTL>`"
+msgstr ""
+
+# c1ed1d11d65a4f3cbbc10d9f41a23bf8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:114
+msgid ":meth:`def ExportCGNS <smeshBuilder.Mesh.ExportCGNS>`"
+msgstr ""
+
+# c1785d8ab26b4b46a22e82b5c25ac092
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:116
+msgid ":meth:`def ExportGMF <smeshBuilder.Mesh.ExportGMF>`"
+msgstr ""
+
+# a6e7032bfd0845cf8b9635dcef3c8ff1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:118
+msgid ":meth:`def ExportToMED <smeshBuilder.Mesh.ExportToMED>`"
+msgstr ""
+
+# 08e10ce37d254a75b17ad8f7b03245f2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:122
+msgid "Constructing meshes"
+msgstr ""
+
+# 7f80816f45cb427d86cd48312b85d454
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:126
+msgid ":meth:`def Mesh <smeshBuilder.smeshBuilder.Mesh>`"
+msgstr ""
+
+# 3570d5cef38140eab58ae7358e13155f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:128
+msgid ":meth:`def __init__ <smeshBuilder.Mesh.__init__>`"
+msgstr ""
+
+# 6c356fd86ca14d85ad70edb72f8f3280
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:130
+msgid ":meth:`def SetMesh <smeshBuilder.Mesh.SetMesh>`"
+msgstr ""
+
+# 1eec8d6fd56d4c00aaaf9c9f8fc4018d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:132
+msgid ":meth:`def GetMesh <smeshBuilder.Mesh.GetMesh>`"
+msgstr ""
+
+# d0ab7abc61a84800978083a708a8a3cf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:134
+msgid ":meth:`def SetName <smeshBuilder.Mesh.SetName>`"
+msgstr ""
+
+# 11854ab7467e44c9a85f9b5a02d75026
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:136
+msgid ":meth:`def GetShape <smeshBuilder.Mesh.GetShape>`"
+msgstr ""
+
+# 532b9f9ec8f54f159bdf2cba70ce60c0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:138
+msgid ":meth:`def SetShape <smeshBuilder.Mesh.SetShape>`"
+msgstr ""
+
+# b1e0499e07aa43739118022c31da07a5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:140
+msgid ":meth:`def IsReadyToCompute <smeshBuilder.Mesh.IsReadyToCompute>`"
+msgstr ""
+
+# 972c7173efca41ada77ca446bf67a4bb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:142
+msgid ":meth:`def GetAlgoState <smeshBuilder.Mesh.GetAlgoState>`"
+msgstr ""
+
+# 1bde60ad100e4364aefa49e3af9e5e26
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:144
+msgid ":meth:`def Evaluate <smeshBuilder.Mesh.Evaluate>`"
+msgstr ""
+
+# 77d84e818e4740bd88215858492a70a7
+# 552eaeaa3ffc496bb31c50ed8bd82cf7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:146
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:318
+msgid ":meth:`def Compute <smeshBuilder.Mesh.Compute>`"
+msgstr ""
+
+# 2a44df70cbfe4f589ee8d49facbe179b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:148
+msgid ":meth:`def GetComputeErrors <smeshBuilder.Mesh.GetComputeErrors>`"
+msgstr ""
+
+# 23f41325df7e47948c17cee6c046e070
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:150
+msgid ":meth:`def GetFailedShapes <smeshBuilder.Mesh.GetFailedShapes>`"
+msgstr ""
+
+# b3b68ca1b4c843c8835c266b631d5b9a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:152
+msgid ":meth:`def GetMeshOrder <smeshBuilder.Mesh.GetMeshOrder>`"
+msgstr ""
+
+# d59031835d3049e6856d66247321b127
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:154
+msgid ":meth:`def SetMeshOrder <smeshBuilder.Mesh.SetMeshOrder>`"
+msgstr ""
+
+# 0485a1cd38d847d6aad4ffa75e311793
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:156
+msgid ":meth:`def Clear <smeshBuilder.Mesh.Clear>`"
+msgstr ""
+
+# 2181954fca7242c6a25d119b4a67f00f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:160
+msgid "Defining Algorithms"
+msgstr ""
+
+# 2e0a6a7fa3cb4749a282f3d65f5b05fe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:163
+msgid "Basic meshing algorithms"
+msgstr ""
+
+# 82cc814736ee4f8a8898524b83a784c6
+# 7eb1d475c69141a7a86ef31e16de4ce7
+# ee2746236c2446019689dcfa6d1af203
+# 3d1bcf3b332848ca955b252c7047e982
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:165
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:199
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:220
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:961
+msgid "Data Structures:"
+msgstr ""
+
+# 4d3775c80aa84eb5a9784a3c5b66da23
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:167
+msgid ""
+":class:`class StdMeshersBuilder_Segment "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment>`"
+msgstr ""
+
+# a3f57976149d4bc789a124d482de506d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:169
+msgid ""
+":class:`class StdMeshersBuilder_Segment_Python "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment_Python>`"
+msgstr ""
+
+# b6808242be2242988b35bec91f2de31d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:171
+msgid ""
+":class:`class StdMeshersBuilder_Triangle_MEFISTO "
+"<StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO>`"
+msgstr ""
+
+# 573a1c516cf346dd90494b51060a74ad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:173
+msgid ""
+":class:`class StdMeshersBuilder_Quadrangle "
+"<StdMeshersBuilder.StdMeshersBuilder_Quadrangle>`"
+msgstr ""
+
+# d7bd792aa45c41c68cc326557392147a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:175
+msgid ""
+":class:`class StdMeshersBuilder_Hexahedron "
+"<StdMeshersBuilder.StdMeshersBuilder_Hexahedron>`"
+msgstr ""
+
+# c523efa55c0d49b4b9d22a6c5fc95c97
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:177
+msgid ""
+":class:`class StdMeshersBuilder_UseExistingElements_1D "
+"<StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D>`"
+msgstr ""
+
+# fccec022af6546739ebb61f95b173e23
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:179
+msgid ""
+":class:`class StdMeshersBuilder_UseExistingElements_1D2D "
+"<StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D>`"
+msgstr ""
+
+# 0ef9264751cb4f3fb47a0d70c74bbc99
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:181
+msgid ""
+":class:`class StdMeshersBuilder_Cartesian_3D "
+"<StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D>`"
+msgstr ""
+
+# 9fde0b802f9b4d82b4ef7c5e8bd814a2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:183
+msgid ""
+":class:`class StdMeshersBuilder_UseExisting_1D "
+"<StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D>`"
+msgstr ""
+
+# 6a68789b8da44b73a6608bfabc3c1cb5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:185
+msgid ""
+":class:`class StdMeshersBuilder_UseExisting_2D "
+"<StdMeshersBuilder.StdMeshersBuilder_UseExisting_2D>`"
+msgstr ""
+
+# 789c897757a34167ad0d5a317706f72f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:189
+msgid ""
+":meth:`def AutomaticTetrahedralization "
+"<smeshBuilder.Mesh.AutomaticTetrahedralization>`"
+msgstr ""
+
+# b9f75aa73ed1416db9ece9233006b3e7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:191
+msgid ""
+":meth:`def AutomaticHexahedralization "
+"<smeshBuilder.Mesh.AutomaticHexahedralization>`"
+msgstr ""
+
+# 45da06286cc8461281e6b31185600563
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:197
+msgid "Projection algorithms"
+msgstr ""
+
+# 45a100c2190d4dada6265984f58a9530
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:201
+msgid ""
+":class:`class StdMeshersBuilder_Projection1D "
+"<StdMeshersBuilder.StdMeshersBuilder_Projection1D>`"
+msgstr ""
+
+# 9640587e49e14b779ca8e2c0e0263ea1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:203
+msgid ""
+":class:`class StdMeshersBuilder_Projection2D "
+"<StdMeshersBuilder.StdMeshersBuilder_Projection2D>`"
+msgstr ""
+
+# 7a9fdc711da0407ab38489b2593dbb28
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:205
+msgid ""
+":class:`class StdMeshersBuilder_Projection1D2D "
+"<StdMeshersBuilder.StdMeshersBuilder_Projection1D2D>`"
+msgstr ""
+
+# 50a150525d0c454d96dd0689f930e112
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:207
+msgid ""
+":class:`class StdMeshersBuilder_Projection3D "
+"<StdMeshersBuilder.StdMeshersBuilder_Projection3D>`"
+msgstr ""
+
+# d32354a66a414814b0a324e0bbe26815
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:211
+msgid "Segments around vertex"
+msgstr ""
+
+# 4f8b799d533e4f959ce45f7f35690c8a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:215
+msgid ""
+":meth:`def LengthNearVertex "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment.LengthNearVertex>`"
+msgstr ""
+
+# 29a3b64774c24ff3b8406959c58ebd72
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:218
+msgid "3D extrusion meshing algorithms"
+msgstr ""
+
+# 7688de0666fd494bbcac9429c63df307
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:222
+msgid ""
+":class:`class StdMeshersBuilder_Prism3D "
+"<StdMeshersBuilder.StdMeshersBuilder_Prism3D>`"
+msgstr ""
+
+# e03cb08ed072472bb321b42e253ae4ad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:224
+msgid ""
+":class:`class StdMeshersBuilder_RadialPrism3D "
+"<StdMeshersBuilder.StdMeshersBuilder_RadialPrism3D>`"
+msgstr ""
+
+# 8e95711c2e614fceb1d30efcde1d660a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:228
+msgid "Mesh_Algorithm"
+msgstr ""
+
+# 784fb8424a394648947541d019b4eb90
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:230
+msgid ":class:`class Mesh_Algorithm <smesh_algorithm.Mesh_Algorithm>`"
+msgstr ""
+
+# cd6dc62a15e345ff8698f4d305e28599
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:234
+msgid "Defining hypotheses"
+msgstr ""
+
+# e3222cec51754113a7c63c6a07a85d14
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:237
+msgid "1D Meshing Hypotheses"
+msgstr ""
+
+# e160300eab7e40a490db844edc1d129d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:241
+msgid ""
+":meth:`def ReversedEdgeIndices "
+"<smesh_algorithm.Mesh_Algorithm.ReversedEdgeIndices>`"
+msgstr ""
+
+# fda4e0e314b9462e97fb97420d34681c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:243
+msgid ""
+":meth:`def LocalLength "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment.LocalLength>`"
+msgstr ""
+
+# a43d1314e3d243ec8d37e0017ac5a80e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:245
+msgid ":meth:`def MaxSize <StdMeshersBuilder.StdMeshersBuilder_Segment.MaxSize>`"
+msgstr ""
+
+# 1ac3613850f8427fa1c1bdc7d345b743
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:247
+msgid ""
+":meth:`def NumberOfSegments "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment.NumberOfSegments>`"
+msgstr ""
+
+# 3c41ce408a3e4bafb25cc5e301531183
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:249
+msgid ""
+":meth:`def Adaptive "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment.Adaptive>`"
+msgstr ""
+
+# c617340303ec4a7b9206b4f6d00d539e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:251
+msgid ""
+":meth:`def Arithmetic1D "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D>`"
+msgstr ""
+
+# e49a13a09dad4f00a9d967ec833decc4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:253
+msgid ""
+":meth:`def GeometricProgression "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression>`"
+msgstr ""
+
+# 290f0d2f9d1c4167aa864bdf3943cd82
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:255
+msgid ""
+":meth:`def FixedPoints1D "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D>`"
+msgstr ""
+
+# 99ae57b41f5d4d138715db6a2ff6088b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:257
+msgid ""
+":meth:`def StartEndLength "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment.StartEndLength>`"
+msgstr ""
+
+# 02dc50745d4a43aba8dcdecef7bed2aa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:259
+msgid ""
+":meth:`def Deflection1D "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment.Deflection1D>`"
+msgstr ""
+
+# 954928c224d24145b2fd1088db142bf4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:261
+msgid ""
+":meth:`def AutomaticLength "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment.AutomaticLength>`"
+msgstr ""
+
+# 905bcc87101e4f6581ea1ea69e5fb4b0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:263
+msgid ""
+":meth:`def PythonSplit1D "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment_Python.PythonSplit1D>`"
+msgstr ""
+
+# 141d450ce1c343069eaaa806ec964150
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:267
+msgid "2D Meshing Hypotheses"
+msgstr ""
+
+# 72267422f8d84d33bbc586872f988d24
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:271
+msgid ""
+":meth:`def MaxElementArea "
+"<StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.MaxElementArea>`"
+msgstr ""
+
+# 2375cc9407614359858e4688deb91feb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:273
+msgid ""
+":meth:`def LengthFromEdges "
+"<StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.LengthFromEdges>`"
+msgstr ""
+
+# 352ded15f52c41648176439a6c728b09
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:277
+msgid "Quadrangle Hypotheses"
+msgstr ""
+
+# 24564408c2314fd39fd3fdb482c80de1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:281
+msgid ""
+":meth:`def QuadrangleParameters "
+"<StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters>`"
+msgstr ""
+
+# df2f16d7acdb47a5a6e62770fde58ca9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:283
+msgid ""
+":meth:`def QuadranglePreference "
+"<StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadranglePreference>`"
+msgstr ""
+
+# 477b7334b8e6459b8afefab61f81494c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:285
+msgid ""
+":meth:`def TrianglePreference "
+"<StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TrianglePreference>`"
+msgstr ""
+
+# b4e8d5b6d0654d70a414985f2ec14982
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:287
+msgid ""
+":meth:`def Reduced "
+"<StdMeshersBuilder.StdMeshersBuilder_Quadrangle.Reduced>`"
+msgstr ""
+
+# 0222925902964a719bd740a908df1c40
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:289
+msgid ""
+":meth:`def TriangleVertex "
+"<StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TriangleVertex>`"
+msgstr ""
+
+# 333de62a8d074c2c9cf562b29955da75
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:294
+msgid "Additional Hypotheses"
+msgstr ""
+
+# 50e24034e723406a837308c0485dedd6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:298
+msgid ":meth:`def ViscousLayers <smesh_algorithm.Mesh_Algorithm.ViscousLayers>`"
+msgstr ""
+
+# 0780d4f66eb94546846a97e166306190
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:300
+msgid ""
+":meth:`def ViscousLayers2D "
+"<smesh_algorithm.Mesh_Algorithm.ViscousLayers2D>`"
+msgstr ""
+
+# c55f790b8d114d51860f7d09a9b0428e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:302
+msgid ""
+":meth:`def Propagation "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment.Propagation>`"
+msgstr ""
+
+# 589dde07b9fc49dd864c61694d0d7b5a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:304
+msgid ""
+":meth:`def PropagationOfDistribution "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment.PropagationOfDistribution>`"
+msgstr ""
+
+# 662f59f313a1498c989856b07829c8ca
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:306
+msgid ""
+":meth:`def QuadraticMesh "
+"<StdMeshersBuilder.StdMeshersBuilder_Segment.QuadraticMesh>`"
+msgstr ""
+
+# 6cf0c71b952044728b2d3a9fc7c5c09b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:310
+msgid "Constructing sub-meshes"
+msgstr ""
+
+# cfd057aa90b34826ad29c0a7ddac1829
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:314
+msgid ":meth:`def GetSubMesh <smeshBuilder.Mesh.GetSubMesh>`"
+msgstr ""
+
+# 8e48623eae2844edbd39655bb2e4c5f1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:316
+msgid ":meth:`def ClearSubMesh <smeshBuilder.Mesh.ClearSubMesh>`"
+msgstr ""
+
+# 6cc7defcbee94020b151cbaa5b7b2eb9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:323
+msgid "Editing meshes"
+msgstr ""
+
+# 51f75e073b484fa7aa578be23342b1b2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:327
+msgid ":meth:`def AddHypothesis <smeshBuilder.Mesh.AddHypothesis>`"
+msgstr ""
+
+# 038a297979fb4c578cbf75507e4662cb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:329
+msgid ":meth:`def IsUsedHypothesis <smeshBuilder.Mesh.IsUsedHypothesis>`"
+msgstr ""
+
+# 5dcc2cb2b10648ceb9fdb9a48013f88b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:331
+msgid ":meth:`def RemoveHypothesis <smeshBuilder.Mesh.RemoveHypothesis>`"
+msgstr ""
+
+# e1f482aa007b4bb5aa380e8f1ff7f546
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:333
+msgid ":meth:`def GetHypothesisList <smeshBuilder.Mesh.GetHypothesisList>`"
+msgstr ""
+
+# 92e6a6758ec94509b44d79e73bab869e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:335
+msgid ""
+":meth:`def RemoveGlobalHypotheses "
+"<smeshBuilder.Mesh.RemoveGlobalHypotheses>`"
+msgstr ""
+
+# 6c917e64889a4f0c8251d4b327d04c0f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:340
+msgid "Mesh Information"
+msgstr ""
+
+# c76db93a4c5b49b4ad8025a9d3b09e7f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:344
+msgid ":meth:`def GetMeshInfo <smeshBuilder.smeshBuilder.GetMeshInfo>`"
+msgstr ""
+
+# 43b487b08ef0490f8cd368a4f98eccc6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:346
+msgid ""
+":meth:`def GetGeometryByMeshElement "
+"<smeshBuilder.Mesh.GetGeometryByMeshElement>`"
+msgstr ""
+
+# 68b8092a4a8d470fa8eda8d8e16dbdf7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:348
+msgid ":meth:`def MeshDimension <smeshBuilder.Mesh.MeshDimension>`"
+msgstr ""
+
+# a8ae9becbd3e460fb1720d37f17bfdb5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:350
+msgid ":meth:`def GetMeshInfo <smeshBuilder.Mesh.GetMeshInfo>`"
+msgstr ""
+
+# 1f768de43b5c4149b5cc31f8f548690b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:352
+msgid ":meth:`def NbNodes <smeshBuilder.Mesh.NbNodes>`"
+msgstr ""
+
+# 954f4ea4947d41339b5c0697315ae2d9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:354
+msgid ":meth:`def NbElements <smeshBuilder.Mesh.NbElements>`"
+msgstr ""
+
+# 99840649cf174b6fb9df85babf5f791f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:356
+msgid ":meth:`def Nb0DElements <smeshBuilder.Mesh.Nb0DElements>`"
+msgstr ""
+
+# 00ae407333a74cebba243c9285822a24
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:358
+msgid ":meth:`def NbBalls <smeshBuilder.Mesh.NbBalls>`"
+msgstr ""
+
+# 4f98d77cd16d4963b2541702a2c38b64
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:360
+msgid ":meth:`def NbEdges <smeshBuilder.Mesh.NbEdges>`"
+msgstr ""
+
+# a66478403ed54b148f49be6276cbe3a4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:362
+msgid ":meth:`def NbEdgesOfOrder <smeshBuilder.Mesh.NbEdgesOfOrder>`"
+msgstr ""
+
+# a4dbc4ea31344be1ac3f6dcb73c52030
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:364
+msgid ":meth:`def NbFaces <smeshBuilder.Mesh.NbFaces>`"
+msgstr ""
+
+# 36e3ef6e66914db1a5ec72be05f287ee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:366
+msgid ":meth:`def NbFacesOfOrder <smeshBuilder.Mesh.NbFacesOfOrder>`"
+msgstr ""
+
+# eb5677ee000f49898342fbcd1de47a75
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:368
+msgid ":meth:`def NbTriangles <smeshBuilder.Mesh.NbTriangles>`"
+msgstr ""
+
+# 9f4cde40e15843eb87394059e3125ee4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:370
+msgid ":meth:`def NbTrianglesOfOrder <smeshBuilder.Mesh.NbTrianglesOfOrder>`"
+msgstr ""
+
+# 24c0622b6f2240c88cddfae7e49b0e61
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:372
+msgid ":meth:`def NbBiQuadTriangles <smeshBuilder.Mesh.NbBiQuadTriangles>`"
+msgstr ""
+
+# d4dc3b2edb1f400c8e9ad717c1f706d3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:374
+msgid ":meth:`def NbQuadrangles <smeshBuilder.Mesh.NbQuadrangles>`"
+msgstr ""
+
+# dba0d61b72fa4857a483ed61b75d7626
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:376
+msgid ":meth:`def NbQuadranglesOfOrder <smeshBuilder.Mesh.NbQuadranglesOfOrder>`"
+msgstr ""
+
+# 8c32f6cd75fa4f0fad55ec3112db66fe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:378
+msgid ":meth:`def NbBiQuadQuadrangles <smeshBuilder.Mesh.NbBiQuadQuadrangles>`"
+msgstr ""
+
+# ca5317db87e342b099898411f64a8c6d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:380
+msgid ":meth:`def NbPolygons <smeshBuilder.Mesh.NbPolygons>`"
+msgstr ""
+
+# 0bacba5c96004b4a98214bfd724ff178
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:382
+msgid ":meth:`def NbVolumes <smeshBuilder.Mesh.NbVolumes>`"
+msgstr ""
+
+# 4b685ff130574fa8ba6dfd07d55d9142
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:384
+msgid ":meth:`def NbVolumesOfOrder <smeshBuilder.Mesh.NbVolumesOfOrder>`"
+msgstr ""
+
+# 2c897a5f0dc04c91ba17c87e45eb96f7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:386
+msgid ":meth:`def NbTetras <smeshBuilder.Mesh.NbTetras>`"
+msgstr ""
+
+# 0a8310de5d624249be63362b43fbf5db
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:388
+msgid ":meth:`def NbTetrasOfOrder <smeshBuilder.Mesh.NbTetrasOfOrder>`"
+msgstr ""
+
+# 04a5850ba04f4aa28f57ec1dacf47d38
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:390
+msgid ":meth:`def NbHexas <smeshBuilder.Mesh.NbHexas>`"
+msgstr ""
+
+# a60ad57141f1498ba25460cf40f8c888
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:392
+msgid ":meth:`def NbHexasOfOrder <smeshBuilder.Mesh.NbHexasOfOrder>`"
+msgstr ""
+
+# a3256c58d04f4ee3983814ad7f40625b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:394
+msgid ":meth:`def NbTriQuadraticHexas <smeshBuilder.Mesh.NbTriQuadraticHexas>`"
+msgstr ""
+
+# f172dd6198d7481191541ca3413eb9c8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:396
+msgid ":meth:`def NbPyramids <smeshBuilder.Mesh.NbPyramids>`"
+msgstr ""
+
+# 76f711639d1546c494681cf375fdd28b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:398
+msgid ":meth:`def NbPyramidsOfOrder <smeshBuilder.Mesh.NbPyramidsOfOrder>`"
+msgstr ""
+
+# 503e7b5252da4fb4ae9cbde6c51b96b0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:400
+msgid ":meth:`def NbPrisms <smeshBuilder.Mesh.NbPrisms>`"
+msgstr ""
+
+# 238c818e887c4bcf955f2bd88704ea98
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:402
+msgid ":meth:`def NbPrismsOfOrder <smeshBuilder.Mesh.NbPrismsOfOrder>`"
+msgstr ""
+
+# f9c2a5ec351949ca84196ff81ace34e5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:404
+msgid ":meth:`def NbHexagonalPrisms <smeshBuilder.Mesh.NbHexagonalPrisms>`"
+msgstr ""
+
+# 751765671b034dc5bf0fbb7513d2ce06
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:406
+msgid ":meth:`def NbPolyhedrons <smeshBuilder.Mesh.NbPolyhedrons>`"
+msgstr ""
+
+# db8c6392653845a08bf83991f2b03e36
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:408
+msgid ":meth:`def NbSubMesh <smeshBuilder.Mesh.NbSubMesh>`"
+msgstr ""
+
+# 03924bc78b4545dbb6c7d56f211e4863
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:410
+msgid ":meth:`def GetElementsId <smeshBuilder.Mesh.GetElementsId>`"
+msgstr ""
+
+# 3c1aa5db6a984b3fbe3301404618abae
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:412
+msgid ":meth:`def GetElementsByType <smeshBuilder.Mesh.GetElementsByType>`"
+msgstr ""
+
+# 1827a79be5b2491fbaf7af844e732506
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:414
+msgid ":meth:`def GetNodesId <smeshBuilder.Mesh.GetNodesId>`"
+msgstr ""
+
+# bfbb4deb474b4edaa8eda767a56bdcf0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:416
+msgid ":meth:`def GetElementType <smeshBuilder.Mesh.GetElementType>`"
+msgstr ""
+
+# 380b0241657b4706b6a5516674895f10
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:418
+msgid ":meth:`def GetElementGeomType <smeshBuilder.Mesh.GetElementGeomType>`"
+msgstr ""
+
+# a2e56fdc555e4821b1d6c496adf48684
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:420
+msgid ":meth:`def GetElementShape <smeshBuilder.Mesh.GetElementShape>`"
+msgstr ""
+
+# addea412ef13465b9d05fdffcf9cc4b1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:422
+msgid ":meth:`def GetSubMeshElementsId <smeshBuilder.Mesh.GetSubMeshElementsId>`"
+msgstr ""
+
+# 7df8e273cad647aeb73d465346f6e7e2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:424
+msgid ":meth:`def GetSubMeshNodesId <smeshBuilder.Mesh.GetSubMeshNodesId>`"
+msgstr ""
+
+# 9020037c46694af999e88d5d07c816e8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:426
+msgid ""
+":meth:`def GetSubMeshElementType "
+"<smeshBuilder.Mesh.GetSubMeshElementType>`"
+msgstr ""
+
+# 69130589b557470281b5903f260affd8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:428
+msgid ":meth:`def Dump <smeshBuilder.Mesh.Dump>`"
+msgstr ""
+
+# b5f49f2df8904ff29222430605c3bc94
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:430
+msgid ":meth:`def GetNodeXYZ <smeshBuilder.Mesh.GetNodeXYZ>`"
+msgstr ""
+
+# c7d092db70ca422196290e502d2e7979
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:432
+msgid ""
+":meth:`def GetNodeInverseElements "
+"<smeshBuilder.Mesh.GetNodeInverseElements>`"
+msgstr ""
+
+# 4f9d3f65dc3648b09df64110ed5cf556
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:434
+msgid ":meth:`def GetNodePosition <smeshBuilder.Mesh.GetNodePosition>`"
+msgstr ""
+
+# 10c9dbd9f0924888a68ba51eb522da5e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:436
+msgid ":meth:`def GetElementPosition <smeshBuilder.Mesh.GetElementPosition>`"
+msgstr ""
+
+# 0539225d7f004145a6babe9bf75e68d9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:438
+msgid ":meth:`def GetShapeID <smeshBuilder.Mesh.GetShapeID>`"
+msgstr ""
+
+# 5e65e2e29cf9462b973c9967ee040034
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:440
+msgid ":meth:`def GetShapeIDForElem <smeshBuilder.Mesh.GetShapeIDForElem>`"
+msgstr ""
+
+# 49e95d91198645528ef66089459ca493
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:442
+msgid ":meth:`def GetElemNbNodes <smeshBuilder.Mesh.GetElemNbNodes>`"
+msgstr ""
+
+# b79913eff730480e9e242fb7f83f2ac6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:444
+msgid ":meth:`def GetElemNode <smeshBuilder.Mesh.GetElemNode>`"
+msgstr ""
+
+# c9899e9d096d47ba87fb0790e54d601c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:446
+msgid ":meth:`def GetElemNodes <smeshBuilder.Mesh.GetElemNodes>`"
+msgstr ""
+
+# c1c3eddb04de4ae4b80b02dce08782c1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:448
+msgid ":meth:`def IsMediumNode <smeshBuilder.Mesh.IsMediumNode>`"
+msgstr ""
+
+# 16820b1b996d47e0ae61f618c3e98e5b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:450
+msgid ""
+":meth:`def IsMediumNodeOfAnyElem "
+"<smeshBuilder.Mesh.IsMediumNodeOfAnyElem>`"
+msgstr ""
+
+# f9b41aff38f74d9cb673b3800591125a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:452
+msgid ":meth:`def ElemNbEdges <smeshBuilder.Mesh.ElemNbEdges>`"
+msgstr ""
+
+# 6780db8e9eb7424aa6c43a481af532a3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:454
+msgid ":meth:`def ElemNbFaces <smeshBuilder.Mesh.ElemNbFaces>`"
+msgstr ""
+
+# 99a23c156b124bb1abe5d7e479ddfc03
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:456
+msgid ":meth:`def GetElemFaceNodes <smeshBuilder.Mesh.GetElemFaceNodes>`"
+msgstr ""
+
+# aca35efb8db74b1588943f779371a20a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:458
+msgid ":meth:`def GetFaceNormal <smeshBuilder.Mesh.GetFaceNormal>`"
+msgstr ""
+
+# 323b4e444cbf45e68eb7509f287c9df2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:460
+msgid ":meth:`def FindElementByNodes <smeshBuilder.Mesh.FindElementByNodes>`"
+msgstr ""
+
+# 28a1af510c5948f990bff38d7e9db58b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:462
+msgid ":meth:`def GetElementsByNodes <smeshBuilder.Mesh.GetElementsByNodes>`"
+msgstr ""
+
+# 1ecc8de04b0f47c3b034d001b61559ca
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:464
+msgid ":meth:`def IsPoly <smeshBuilder.Mesh.IsPoly>`"
+msgstr ""
+
+# bd6b88ee9dc648a784d7059b01253a4c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:466
+msgid ":meth:`def IsQuadratic <smeshBuilder.Mesh.IsQuadratic>`"
+msgstr ""
+
+# 48adf66c10844d2390146a8b1dd0ae16
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:468
+msgid ":meth:`def GetBallDiameter <smeshBuilder.Mesh.GetBallDiameter>`"
+msgstr ""
+
+# 5764e34980c447a4abeba3c760979853
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:470
+msgid ":meth:`def BaryCenter <smeshBuilder.Mesh.BaryCenter>`"
+msgstr ""
+
+# cf6d71caf33e4cb2b0c8c32e614ae44b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:472
+msgid ":meth:`def FindNodeClosestTo <smeshBuilder.Mesh.FindNodeClosestTo>`"
+msgstr ""
+
+# ac85be2785674b55aa0d1d6f9aaaffff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:474
+msgid ":meth:`def FindElementsByPoint <smeshBuilder.Mesh.FindElementsByPoint>`"
+msgstr ""
+
+# 1d1d88770b364847bd44cb47868fde1d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:476
+msgid ":meth:`def GetPointState <smeshBuilder.Mesh.GetPointState>`"
+msgstr ""
+
+# dcd08ac271c146b88b2656967be6ccdb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:481
+msgid "Quality controls and Filtering"
+msgstr ""
+
+# fa2cb7ad03b54185925961b0d5977b38
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:485
+msgid ""
+":meth:`def GetEmptyCriterion "
+"<smeshBuilder.smeshBuilder.GetEmptyCriterion>`"
+msgstr ""
+
+# 43ff82d0338242f382b9359f4deb1f60
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:487
+msgid ":meth:`def GetCriterion <smeshBuilder.smeshBuilder.GetCriterion>`"
+msgstr ""
+
+# 0e0572b2e9d3445387b9cf60aad1bf25
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:489
+msgid ":meth:`def GetFilter <smeshBuilder.smeshBuilder.GetFilter>`"
+msgstr ""
+
+# d6d7c9fad5c04313a2a0727c5fdeaac1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:491
+msgid ""
+":meth:`def GetFilterFromCriteria "
+"<smeshBuilder.smeshBuilder.GetFilterFromCriteria>`"
+msgstr ""
+
+# 06e86322085c42a49cc8fcbffcba596e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:493
+msgid ":meth:`def GetFunctor <smeshBuilder.smeshBuilder.GetFunctor>`"
+msgstr ""
+
+# 364133b01cf244d68debd89ff78e203e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:495
+msgid ":meth:`def GetIdsFromFilter <smeshBuilder.Mesh.GetIdsFromFilter>`"
+msgstr ""
+
+# 14efcd4479ab4c5897492823160c73d0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:497
+msgid ":meth:`def IsManifold <smeshBuilder.Mesh.IsManifold>`"
+msgstr ""
+
+# 47949f78e0874c80bc948974d34678b8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:499
+msgid ""
+":meth:`def IsCoherentOrientation2D "
+"<smeshBuilder.Mesh.IsCoherentOrientation2D>`"
+msgstr ""
+
+# 7619e057b99142aea7ceddba0a2697b2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:505
+msgid "Grouping elements"
+msgstr ""
+
+# e1ddf65f695b444580732c0bfbf3420e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:509
+msgid ":meth:`def SetAutoColor <smeshBuilder.Mesh.SetAutoColor>`"
+msgstr ""
+
+# 43c393b9ce7a432db32738accfbb4479
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:511
+msgid ":meth:`def GetAutoColor <smeshBuilder.Mesh.GetAutoColor>`"
+msgstr ""
+
+# 7fcc1ad4de454a7cac102032b8a6d461
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:513
+msgid ""
+":meth:`def HasDuplicatedGroupNamesMED "
+"<smeshBuilder.Mesh.HasDuplicatedGroupNamesMED>`"
+msgstr ""
+
+# dc3bcded96994f2683443bf8f36789d9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:517
+msgid "Creating groups"
+msgstr ""
+
+# c1e4318a3e6a41339c9f925820b553e6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:521
+msgid ":meth:`def CreateEmptyGroup <smeshBuilder.Mesh.CreateEmptyGroup>`"
+msgstr ""
+
+# 7f59b73c5a034124bed02fe7a80aa1a9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:523
+msgid ":meth:`def Group <smeshBuilder.Mesh.Group>`"
+msgstr ""
+
+# 526937197efb4aa0ba5bc5117451db63
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:525
+msgid ":meth:`def GroupOnGeom <smeshBuilder.Mesh.GroupOnGeom>`"
+msgstr ""
+
+# afbd9e404c4142c58a910f71f5b42940
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:527
+msgid ":meth:`def GroupOnFilter <smeshBuilder.Mesh.GroupOnFilter>`"
+msgstr ""
+
+# b59a15e6bb8b4cc2804c8db67fcb3878
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:529
+msgid ":meth:`def MakeGroupByIds <smeshBuilder.Mesh.MakeGroupByIds>`"
+msgstr ""
+
+# b4fd00be80b94b7c95bf561e34be9f1d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:531
+msgid ":meth:`def MakeGroup <smeshBuilder.Mesh.MakeGroup>`"
+msgstr ""
+
+# dea817c333ea4921ac122bfe2258ad8a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:533
+msgid ":meth:`def MakeGroupByCriterion <smeshBuilder.Mesh.MakeGroupByCriterion>`"
+msgstr ""
+
+# 9ea5d2a9469947fa9a46e517f0546ddc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:535
+msgid ":meth:`def MakeGroupByCriteria <smeshBuilder.Mesh.MakeGroupByCriteria>`"
+msgstr ""
+
+# 6af590a3c4304e14ab438b9bf8fc38ef
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:537
+msgid ":meth:`def MakeGroupByFilter <smeshBuilder.Mesh.MakeGroupByFilter>`"
+msgstr ""
+
+# 3505dc6f56e04ddfa49953788330911d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:539
+msgid ":meth:`def GetGroups <smeshBuilder.Mesh.GetGroups>`"
+msgstr ""
+
+# 4ec6990ada494c00b604aa67bf5c2f5c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:541
+msgid ":meth:`def NbGroups <smeshBuilder.Mesh.NbGroups>`"
+msgstr ""
+
+# 5bf02958c3ed4323affefb4a87e216e9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:543
+msgid ":meth:`def GetGroupNames <smeshBuilder.Mesh.GetGroupNames>`"
+msgstr ""
+
+# 76206598280549248ed7cc370d413377
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:545
+msgid ":meth:`def GetGroupByName <smeshBuilder.Mesh.GetGroupByName>`"
+msgstr ""
+
+# 9d3ac80899df4bb4809c73351f46f7fa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:549
+msgid "Using operations on groups"
+msgstr ""
+
+# ea0222a6d2764631838be50b926307b3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:553
+msgid ":meth:`def UnionGroups <smeshBuilder.Mesh.UnionGroups>`"
+msgstr ""
+
+# d8c432df42a640e7a9227e38de0cfd2f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:555
+msgid ":meth:`def UnionListOfGroups <smeshBuilder.Mesh.UnionListOfGroups>`"
+msgstr ""
+
+# 1cad96c02561499094bf37d0bac8ed38
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:557
+msgid ":meth:`def IntersectGroups <smeshBuilder.Mesh.IntersectGroups>`"
+msgstr ""
+
+# 06a8959f158443a2b7686c3c3e2a0497
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:559
+msgid ""
+":meth:`def IntersectListOfGroups "
+"<smeshBuilder.Mesh.IntersectListOfGroups>`"
+msgstr ""
+
+# 06d24d6fff774547af488e3d58597afa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:561
+msgid ":meth:`def CutGroups <smeshBuilder.Mesh.CutGroups>`"
+msgstr ""
+
+# 6cc2630aae9e4368a78bc41cfd016f8c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:563
+msgid ":meth:`def CutListOfGroups <smeshBuilder.Mesh.CutListOfGroups>`"
+msgstr ""
+
+# 1ac1dd8f5d474d3a977ae209a22d2d6e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:565
+msgid ":meth:`def CreateDimGroup <smeshBuilder.Mesh.CreateDimGroup>`"
+msgstr ""
+
+# 5a314bffaeae4756a5af4293f5cb4806
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:567
+msgid ":meth:`def ConvertToStandalone <smeshBuilder.Mesh.ConvertToStandalone>`"
+msgstr ""
+
+# 8d5ec94d536c4b5d97909b4723a3d54f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:571
+msgid "Deleting groups"
+msgstr ""
+
+# b6c2d50d6e7b4a9a881ef1f9957a1a08
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:575
+msgid ":meth:`def RemoveGroup <smeshBuilder.Mesh.RemoveGroup>`"
+msgstr ""
+
+# 12886886c20f48aaa1ef06a3e0eedb91
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:577
+msgid ""
+":meth:`def RemoveGroupWithContents "
+"<smeshBuilder.Mesh.RemoveGroupWithContents>`"
+msgstr ""
+
+# db8216644ddb498d920616a88d964d44
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:582
+msgid "Modifying meshes"
+msgstr ""
+
+# fc9163a484d44811b09b7691af8917c8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:586
+msgid ":meth:`def GetPattern <smeshBuilder.smeshBuilder.GetPattern>`"
+msgstr ""
+
+# 1ca825356b6049d49779fda241585440
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:588
+msgid ":meth:`def GetMeshEditor <smeshBuilder.Mesh.GetMeshEditor>`"
+msgstr ""
+
+# 23d3f0b765364481af9352faa320c1df
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:592
+msgid "Adding nodes and elements"
+msgstr ""
+
+# 7a48ed64d3bf4268ba874d987232ffb0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:596
+msgid ":meth:`def AddNode <smeshBuilder.Mesh.AddNode>`"
+msgstr ""
+
+# 8e5db9e3a5fd4094a46e63d1d8a38ebd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:598
+msgid ":meth:`def Add0DElement <smeshBuilder.Mesh.Add0DElement>`"
+msgstr ""
+
+# 9ae4ac435eae4e0c9799797f70dab2e2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:600
+msgid ""
+":meth:`def Add0DElementsToAllNodes "
+"<smeshBuilder.Mesh.Add0DElementsToAllNodes>`"
+msgstr ""
+
+# 8e1607e1b4e44a358d83a2b601802ac9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:602
+msgid ":meth:`def AddBall <smeshBuilder.Mesh.AddBall>`"
+msgstr ""
+
+# 1681b79b28b64e45bc4fcef1d3b7f59c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:604
+msgid ":meth:`def AddEdge <smeshBuilder.Mesh.AddEdge>`"
+msgstr ""
+
+# 4532f45d09cb497a92e1fc8fb6b61e27
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:606
+msgid ":meth:`def AddFace <smeshBuilder.Mesh.AddFace>`"
+msgstr ""
+
+# b2259a8903ae44f3ac518ba7feb1e03e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:608
+msgid ":meth:`def AddPolygonalFace <smeshBuilder.Mesh.AddPolygonalFace>`"
+msgstr ""
+
+# ec5492e82bdc4cafbc8944bbb25d1aaa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:610
+msgid ":meth:`def AddQuadPolygonalFace <smeshBuilder.Mesh.AddQuadPolygonalFace>`"
+msgstr ""
+
+# 2e0296655d864cccb38c09f627595aa9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:612
+msgid ":meth:`def AddVolume <smeshBuilder.Mesh.AddVolume>`"
+msgstr ""
+
+# d7f163ff1f7642d9b7de09847b059f8c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:614
+msgid ":meth:`def AddPolyhedralVolume <smeshBuilder.Mesh.AddPolyhedralVolume>`"
+msgstr ""
+
+# a51315a53ba3474cb2229a96bf9e6022
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:616
+msgid ""
+":meth:`def AddPolyhedralVolumeByFaces "
+"<smeshBuilder.Mesh.AddPolyhedralVolumeByFaces>`"
+msgstr ""
+
+# 0ea3fae8f16444b1a647d45334981d2f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:618
+msgid ":meth:`def SetNodeOnVertex <smeshBuilder.Mesh.SetNodeOnVertex>`"
+msgstr ""
+
+# 1a9700a129354a86b4cf96e6185e66e0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:620
+msgid ":meth:`def SetNodeOnEdge <smeshBuilder.Mesh.SetNodeOnEdge>`"
+msgstr ""
+
+# f4c054f968f04bb584c52039f32d9e48
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:622
+msgid ":meth:`def SetNodeOnFace <smeshBuilder.Mesh.SetNodeOnFace>`"
+msgstr ""
+
+# 84d892a26de84848b69c9dada7132c7a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:624
+msgid ":meth:`def SetNodeInVolume <smeshBuilder.Mesh.SetNodeInVolume>`"
+msgstr ""
+
+# 63b28ca6e7eb410ca2b3623db87db04f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:626
+msgid ""
+":meth:`def SetMeshElementOnShape "
+"<smeshBuilder.Mesh.SetMeshElementOnShape>`"
+msgstr ""
+
+# c67ed93d1bd24cf6b5cb159a09baa71c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:628
+msgid ":meth:`def Make2DMeshFrom3D <smeshBuilder.Mesh.Make2DMeshFrom3D>`"
+msgstr ""
+
+# ab02c4c770ed41d398927abaea2dec53
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:630
+msgid ":meth:`def MakeBoundaryMesh <smeshBuilder.Mesh.MakeBoundaryMesh>`"
+msgstr ""
+
+# 330c552912024f259d8907e86251be24
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:632
+msgid ":meth:`def MakeBoundaryElements <smeshBuilder.Mesh.MakeBoundaryElements>`"
+msgstr ""
+
+# ebf6aad9b717442ebf64cdd3d48f208e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:634
+msgid ":meth:`def GetLastCreatedNodes <smeshBuilder.Mesh.GetLastCreatedNodes>`"
+msgstr ""
+
+# a04cc5c028a54d03861ece9fad317d41
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:636
+msgid ":meth:`def GetLastCreatedElems <smeshBuilder.Mesh.GetLastCreatedElems>`"
+msgstr ""
+
+# e9cc0fc3baa748718c0e1b9565d78fe5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:638
+msgid ":meth:`def ClearLastCreated <smeshBuilder.Mesh.ClearLastCreated>`"
+msgstr ""
+
+# 8f1aafa6c1cd4ef1b09d5e2731200a2d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:642
+msgid "Removing nodes and elements"
+msgstr ""
+
+# f3771c9094924a18abfbd1fd322b7332
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:646
+msgid ":meth:`def RemoveElements <smeshBuilder.Mesh.RemoveElements>`"
+msgstr ""
+
+# 2052ac8112504711a295bba532dd96a3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:648
+msgid ":meth:`def RemoveNodes <smeshBuilder.Mesh.RemoveNodes>`"
+msgstr ""
+
+# dab20ca75d0e41a1a84dd38d7ec55898
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:650
+msgid ":meth:`def RemoveOrphanNodes <smeshBuilder.Mesh.RemoveOrphanNodes>`"
+msgstr ""
+
+# 2affc8ab488f46208c25b84e320446dd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:654
+msgid "Modifying nodes and elements"
+msgstr ""
+
+# 3b56d50a33ce418ea0a42f50845cf428
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:656
+msgid "functions:"
+msgstr ""
+
+# 0b23874b7dea4f1cbeebff7c8fdf2781
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:658
+msgid ":meth:`def MoveNode <smeshBuilder.Mesh.MoveNode>`"
+msgstr ""
+
+# 87157a9a3b6242d0951e4a444db4e236
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:660
+msgid ""
+":meth:`def MoveClosestNodeToPoint "
+"<smeshBuilder.Mesh.MoveClosestNodeToPoint>`"
+msgstr ""
+
+# bbb8094228b540679b4dda8c2afa2061
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:662
+msgid ""
+":meth:`def MeshToPassThroughAPoint "
+"<smeshBuilder.Mesh.MeshToPassThroughAPoint>`"
+msgstr ""
+
+# 5cefaf2967764ad38f8bf3fe6545e1c7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:664
+msgid ":meth:`def ChangeElemNodes <smeshBuilder.Mesh.ChangeElemNodes>`"
+msgstr ""
+
+# b9fc90e122ae49b39407a81343b5a34f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:668
+msgid "Renumbering nodes and elements"
+msgstr ""
+
+# 79117ce1b05046eab44d776f7cdd3fc9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:672
+msgid ":meth:`def RenumberNodes <smeshBuilder.Mesh.RenumberNodes>`"
+msgstr ""
+
+# cb0bbc96cc174dc59f442fd1071d502c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:674
+msgid ":meth:`def RenumberElements <smeshBuilder.Mesh.RenumberElements>`"
+msgstr ""
+
+# c52bcd7c63374e8a8a809d46fccc6f07
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:678
+msgid "Transforming meshes (Translation, Rotation, Symmetry, Sewing, Merging)"
+msgstr ""
+
+# 52491266a8704bc8b19dfd0ca72f34e3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:682
+msgid ":meth:`def Mirror <smeshBuilder.Mesh.Mirror>`"
+msgstr ""
+
+# 156b889faa49438f9f5a1cbdd74560de
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:684
+msgid ":meth:`def MirrorMakeMesh <smeshBuilder.Mesh.MirrorMakeMesh>`"
+msgstr ""
+
+# d8cad3abefd346a7838a8bac25c45d4e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:686
+msgid ":meth:`def MirrorObject <smeshBuilder.Mesh.MirrorObject>`"
+msgstr ""
+
+# b80a51a5b08e475c955b74b18b25ce33
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:688
+msgid ":meth:`def MirrorObjectMakeMesh <smeshBuilder.Mesh.MirrorObjectMakeMesh>`"
+msgstr ""
+
+# cf6aa3d2564c4ee585c60755790c6d39
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:690
+msgid ":meth:`def Translate <smeshBuilder.Mesh.Translate>`"
+msgstr ""
+
+# 6477a78623b348598ff2c60ebded4af2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:692
+msgid ":meth:`def TranslateMakeMesh <smeshBuilder.Mesh.TranslateMakeMesh>`"
+msgstr ""
+
+# 0bec18ac771545adb8a9e2522cca87af
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:694
+msgid ":meth:`def TranslateObject <smeshBuilder.Mesh.TranslateObject>`"
+msgstr ""
+
+# dfe798659d3845bb9473d6dd05f92f62
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:696
+msgid ""
+":meth:`def TranslateObjectMakeMesh "
+"<smeshBuilder.Mesh.TranslateObjectMakeMesh>`"
+msgstr ""
+
+# 44934955eea347a49c7d6e0c924d11fb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:698
+msgid ":meth:`def Rotate <smeshBuilder.Mesh.Rotate>`"
+msgstr ""
+
+# 0f11692135754a8cb7e4b5c75156c9ac
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:700
+msgid ":meth:`def RotateMakeMesh <smeshBuilder.Mesh.RotateMakeMesh>`"
+msgstr ""
+
+# 0ae561bc02d845cd968efbb0e4922dcd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:702
+msgid ":meth:`def RotateObject <smeshBuilder.Mesh.RotateObject>`"
+msgstr ""
+
+# e17fc29d010e47ee8e892fd87383c9d3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:704
+msgid ":meth:`def RotateObjectMakeMesh <smeshBuilder.Mesh.RotateObjectMakeMesh>`"
+msgstr ""
+
+# 8bf17ed272fd42518c78e38e0b837058
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:706
+msgid ":meth:`def FindCoincidentNodes <smeshBuilder.Mesh.FindCoincidentNodes>`"
+msgstr ""
+
+# 4f00e1e07330450e9936d5cabfdf8f06
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:708
+msgid ""
+":meth:`def FindCoincidentNodesOnPart "
+"<smeshBuilder.Mesh.FindCoincidentNodesOnPart>`"
+msgstr ""
+
+# b7d412d18b2d4d718a8b64ba8bc0e91d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:710
+msgid ":meth:`def MergeNodes <smeshBuilder.Mesh.MergeNodes>`"
+msgstr ""
+
+# fc7ba0fe671a4280823c3e73ca014808
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:712
+msgid ":meth:`def FindEqualElements <smeshBuilder.Mesh.FindEqualElements>`"
+msgstr ""
+
+# 81a42d4e1f3b446fa353b41336b9aa47
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:714
+msgid ":meth:`def MergeElements <smeshBuilder.Mesh.MergeElements>`"
+msgstr ""
+
+# 3a267717d10e4a3b8490766360a90eb6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:716
+msgid ":meth:`def MergeEqualElements <smeshBuilder.Mesh.MergeEqualElements>`"
+msgstr ""
+
+# ab91a1c63aa7423ea4f56f147369e5ec
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:718
+msgid ":meth:`def FindFreeBorders <smeshBuilder.Mesh.FindFreeBorders>`"
+msgstr ""
+
+# bf5a5c514e3a47fbb7a39672c0bf9268
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:720
+msgid ":meth:`def FillHole <smeshBuilder.Mesh.FillHole>`"
+msgstr ""
+
+# 9ebfd371264846fd93d66da4209af34e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:722
+msgid ""
+":meth:`def FindCoincidentFreeBorders "
+"<smeshBuilder.Mesh.FindCoincidentFreeBorders>`"
+msgstr ""
+
+# 854cdfbc46dd46adbed52889be4b0961
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:724
+msgid ""
+":meth:`def SewCoincidentFreeBorders "
+"<smeshBuilder.Mesh.SewCoincidentFreeBorders>`"
+msgstr ""
+
+# 2952bf3fb43a49fc9c67818cf07bf3d9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:726
+msgid ":meth:`def SewFreeBorders <smeshBuilder.Mesh.SewFreeBorders>`"
+msgstr ""
+
+# a99e40b848264e7ca390eb4c52c72c17
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:728
+msgid ""
+":meth:`def SewConformFreeBorders "
+"<smeshBuilder.Mesh.SewConformFreeBorders>`"
+msgstr ""
+
+# 70e5c7cfce404fd6a69b8f327d0b4738
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:730
+msgid ":meth:`def SewBorderToSide <smeshBuilder.Mesh.SewBorderToSide>`"
+msgstr ""
+
+# a3e58b93634e4bbb8b6e70db7344793b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:732
+msgid ":meth:`def SewSideElements <smeshBuilder.Mesh.SewSideElements>`"
+msgstr ""
+
+# f19f69caa06d4df7bf33c51d0278bb14
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:737
+msgid "Uniting triangles"
+msgstr ""
+
+# afe2ce2d2f1443ebabb0a4f7f6860598
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:741
+msgid ":meth:`def DeleteDiag <smeshBuilder.Mesh.DeleteDiag>`"
+msgstr ""
+
+# 4c03aa5fedad421a9f0581d9602bcef8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:743
+msgid ":meth:`def TriToQuad <smeshBuilder.Mesh.TriToQuad>`"
+msgstr ""
+
+# b2a4a85adc744066ba34e7f63b42ca2f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:745
+msgid ":meth:`def TriToQuadObject <smeshBuilder.Mesh.TriToQuadObject>`"
+msgstr ""
+
+# bbf7eac775cb45a689f227964a979dc2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:750
+msgid "Cutting elements"
+msgstr ""
+
+# 92ea318045ff46b8b4eaf49171e75f31
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:754
+msgid ":meth:`def InverseDiag <smeshBuilder.Mesh.InverseDiag>`"
+msgstr ""
+
+# 9e4170fd36f0401bab37ec3cfe57c868
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:756
+msgid ":meth:`def QuadToTri <smeshBuilder.Mesh.QuadToTri>`"
+msgstr ""
+
+# 023be8af89b7452fb59b1f46881c7639
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:758
+msgid ":meth:`def QuadToTriObject <smeshBuilder.Mesh.QuadToTriObject>`"
+msgstr ""
+
+# 940bdd067de04b9c95aa86b571b07055
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:760
+msgid ":meth:`def QuadTo4Tri <smeshBuilder.Mesh.QuadTo4Tri>`"
+msgstr ""
+
+# e63a1d9a987d4e03afa474bd0ed2a078
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:762
+msgid ":meth:`def SplitQuad <smeshBuilder.Mesh.SplitQuad>`"
+msgstr ""
+
+# ff3671a6290b41d9afb3bfa7c608693c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:764
+msgid ":meth:`def SplitQuadObject <smeshBuilder.Mesh.SplitQuadObject>`"
+msgstr ""
+
+# c29477f93ce549568696b7cb0fb4bdb5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:766
+msgid ":meth:`def BestSplit <smeshBuilder.Mesh.BestSplit>`"
+msgstr ""
+
+# 9ca81aa1146f43a7a1984ee8ad125511
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:768
+msgid ""
+":meth:`def SplitVolumesIntoTetra "
+"<smeshBuilder.Mesh.SplitVolumesIntoTetra>`"
+msgstr ""
+
+# 5d2262b2b4514a099ce7d74a012108c2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:770
+msgid ""
+":meth:`def SplitBiQuadraticIntoLinear "
+"<smeshBuilder.Mesh.SplitBiQuadraticIntoLinear>`"
+msgstr ""
+
+# 573170162eac4e5e883119812daa935f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:772
+msgid ""
+":meth:`def SplitHexahedraIntoPrisms "
+"<smeshBuilder.Mesh.SplitHexahedraIntoPrisms>`"
+msgstr ""
+
+# 4138c66fa27d40d1aa162e2617d3ad1b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:774
+msgid ""
+":meth:`def SplitQuadsNearTriangularFacets "
+"<smeshBuilder.Mesh.SplitQuadsNearTriangularFacets>`"
+msgstr ""
+
+# cc61ba036c614a758cdb7bb96ca0203d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:776
+msgid ":meth:`def SplitHexaToTetras <smeshBuilder.Mesh.SplitHexaToTetras>`"
+msgstr ""
+
+# 1785c80335ba43edb7e621f0be17a09f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:778
+msgid ":meth:`def SplitHexaToPrisms <smeshBuilder.Mesh.SplitHexaToPrisms>`"
+msgstr ""
+
+# ef498fe64e9e4d1e980b62181c38df73
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:783
+msgid "Changing orientation of elements"
+msgstr ""
+
+# 021ec661a4e8415a940c810c165d5314
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:787
+msgid ":meth:`def Reorient <smeshBuilder.Mesh.Reorient>`"
+msgstr ""
+
+# 965fdd6ed4034fc792ae6c5c10ce94e5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:789
+msgid ":meth:`def ReorientObject <smeshBuilder.Mesh.ReorientObject>`"
+msgstr ""
+
+# d98cbd13f00445449dbbce77ea01109d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:791
+msgid ":meth:`def Reorient2D <smeshBuilder.Mesh.Reorient2D>`"
+msgstr ""
+
+# cd030f23da584d63be3dbd1d3cb3ec9c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:793
+msgid ":meth:`def Reorient2DBy3D <smeshBuilder.Mesh.Reorient2DBy3D>`"
+msgstr ""
+
+# 6577aae1aa8c4c6b9a7dcaee56e03ac0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:798
+msgid "Smoothing"
+msgstr ""
+
+# 2dceedca7f2b4b928100ad7ecdf9730c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:802
+msgid ":meth:`def Smooth <smeshBuilder.Mesh.Smooth>`"
+msgstr ""
+
+# 60d8cc4f3f844039b28e6f20fac77818
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:804
+msgid ":meth:`def SmoothObject <smeshBuilder.Mesh.SmoothObject>`"
+msgstr ""
+
+# 407ef83cb149412e9a0d793aeb886e3c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:806
+msgid ":meth:`def SmoothParametric <smeshBuilder.Mesh.SmoothParametric>`"
+msgstr ""
+
+# 7f4b74f8ee6444a796c878e07c3c1c0b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:808
+msgid ""
+":meth:`def SmoothParametricObject "
+"<smeshBuilder.Mesh.SmoothParametricObject>`"
+msgstr ""
+
+# 0561311ab1ec49b9bbf9ad43315e2ffa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:813
+msgid "Extrusion and Revolution"
+msgstr ""
+
+# b35f910325f94984a743685362d08967
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:817
+msgid ":meth:`def RotationSweepObjects <smeshBuilder.Mesh.RotationSweepObjects>`"
+msgstr ""
+
+# 1ce1f751992340f399961195f4f9f4d5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:819
+msgid ":meth:`def RotationSweep <smeshBuilder.Mesh.RotationSweep>`"
+msgstr ""
+
+# 0bda5290f2424c7aae39ffb6e78e45d1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:821
+msgid ":meth:`def RotationSweepObject <smeshBuilder.Mesh.RotationSweepObject>`"
+msgstr ""
+
+# bc677fcce521411db428433277b64bd9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:823
+msgid ""
+":meth:`def RotationSweepObject1D "
+"<smeshBuilder.Mesh.RotationSweepObject1D>`"
+msgstr ""
+
+# eabd288217db466a947aeefc138d48b5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:825
+msgid ""
+":meth:`def RotationSweepObject2D "
+"<smeshBuilder.Mesh.RotationSweepObject2D>`"
+msgstr ""
+
+# 57d64c25131c4b5b8fb2b69cf0d12330
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:827
+msgid ""
+":meth:`def ExtrusionSweepObjects "
+"<smeshBuilder.Mesh.ExtrusionSweepObjects>`"
+msgstr ""
+
+# 0158d23af530444397a3d6f10fb12059
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:829
+msgid ":meth:`def ExtrusionSweep <smeshBuilder.Mesh.ExtrusionSweep>`"
+msgstr ""
+
+# 867072ab3ce344029cd8ec07cbeaba43
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:831
+msgid ":meth:`def ExtrusionByNormal <smeshBuilder.Mesh.ExtrusionByNormal>`"
+msgstr ""
+
+# 6947db5c2f2040c4914549fa963fc251
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:833
+msgid ":meth:`def ExtrusionSweepObject <smeshBuilder.Mesh.ExtrusionSweepObject>`"
+msgstr ""
+
+# 9c10d33f9c7545d2b74bce4e5af10c4e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:835
+msgid ""
+":meth:`def ExtrusionSweepObject1D "
+"<smeshBuilder.Mesh.ExtrusionSweepObject1D>`"
+msgstr ""
+
+# cec00539b219405ebd95d14fac5fd20e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:837
+msgid ""
+":meth:`def ExtrusionSweepObject2D "
+"<smeshBuilder.Mesh.ExtrusionSweepObject2D>`"
+msgstr ""
+
+# 12a0e9f769aa487aa0e24e1f1be7dfcd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:839
+msgid ":meth:`def AdvancedExtrusion <smeshBuilder.Mesh.AdvancedExtrusion>`"
+msgstr ""
+
+# 39ac68db390949f1af51567f7ad6022c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:841
+msgid ""
+":meth:`def ExtrusionAlongPathObjects "
+"<smeshBuilder.Mesh.ExtrusionAlongPathObjects>`"
+msgstr ""
+
+# 153036bcd18442afb5f80202cc8df2a3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:843
+msgid ":meth:`def ExtrusionAlongPathX <smeshBuilder.Mesh.ExtrusionAlongPathX>`"
+msgstr ""
+
+# 4089ff73c66f42ebbab51b1440ba8dee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:845
+msgid ":meth:`def ExtrusionAlongPath <smeshBuilder.Mesh.ExtrusionAlongPath>`"
+msgstr ""
+
+# a803a9e0f9dc4d20bbde0cf23870c48b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:847
+msgid ""
+":meth:`def ExtrusionAlongPathObject "
+"<smeshBuilder.Mesh.ExtrusionAlongPathObject>`"
+msgstr ""
+
+# 296bd20c43124438b3d992ce449e687b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:849
+msgid ""
+":meth:`def ExtrusionAlongPathObject1D "
+"<smeshBuilder.Mesh.ExtrusionAlongPathObject1D>`"
+msgstr ""
+
+# 1ae49f032c0843d1b6b33fccf6edb66d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:851
+msgid ""
+":meth:`def ExtrusionAlongPathObject2D "
+"<smeshBuilder.Mesh.ExtrusionAlongPathObject2D>`"
+msgstr ""
+
+# ebdddf705f594ae9b198a6c8b42ed733
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:856
+msgid "Convert to/from Quadratic Mesh"
+msgstr ""
+
+# 082d34e5587a4de1af651d1c2200d4cd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:860
+msgid ":meth:`def ConvertToQuadratic <smeshBuilder.Mesh.ConvertToQuadratic>`"
+msgstr ""
+
+# 903b038e90554c6383d4fe5b57ccdf77
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:862
+msgid ":meth:`def ConvertFromQuadratic <smeshBuilder.Mesh.ConvertFromQuadratic>`"
+msgstr ""
+
+# c90b906ed17147e38eed9d95dfbd0156
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:867
+msgid "Duplication of nodes and elements (to emulate cracks)"
+msgstr ""
+
+# 443144e7223a495896fda9a019a54c89
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:871
+msgid ":meth:`def DoubleElements <smeshBuilder.Mesh.DoubleElements>`"
+msgstr ""
+
+# 177d508a7b6b4450afbbd69d1c8e2f47
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:873
+msgid ":meth:`def DoubleNodes <smeshBuilder.Mesh.DoubleNodes>`"
+msgstr ""
+
+# 565067fc88f64bd79c87db855cceb9d5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:875
+msgid ":meth:`def DoubleNode <smeshBuilder.Mesh.DoubleNode>`"
+msgstr ""
+
+# a4ba2d6b744543df90ac95bc3a71803d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:877
+msgid ":meth:`def DoubleNodeGroup <smeshBuilder.Mesh.DoubleNodeGroup>`"
+msgstr ""
+
+# d09a6b85b2f440bda3d76d558bb85aef
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:879
+msgid ":meth:`def DoubleNodeGroups <smeshBuilder.Mesh.DoubleNodeGroups>`"
+msgstr ""
+
+# 6ab0e0a9de4f47b58db11c9712f85510
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:881
+msgid ":meth:`def DoubleNodeElem <smeshBuilder.Mesh.DoubleNodeElem>`"
+msgstr ""
+
+# 745308aff91f4f74a5448462bdb0d268
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:883
+msgid ""
+":meth:`def DoubleNodeElemInRegion "
+"<smeshBuilder.Mesh.DoubleNodeElemInRegion>`"
+msgstr ""
+
+# e3a6b9baa7bb4fcb935ffbd705d695e0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:885
+msgid ":meth:`def DoubleNodeElemGroup <smeshBuilder.Mesh.DoubleNodeElemGroup>`"
+msgstr ""
+
+# 30af0bf0d14847c9868ae41f8d390caf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:887
+msgid ""
+":meth:`def DoubleNodeElemGroupInRegion "
+"<smeshBuilder.Mesh.DoubleNodeElemGroupInRegion>`"
+msgstr ""
+
+# ad4b709f35db437d9729704a400cfeb8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:889
+msgid ":meth:`def DoubleNodeElemGroups <smeshBuilder.Mesh.DoubleNodeElemGroups>`"
+msgstr ""
+
+# 0c85d6856abd4f0e869efd3c0319fcae
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:891
+msgid ""
+":meth:`def DoubleNodeElemGroupsInRegion "
+"<smeshBuilder.Mesh.DoubleNodeElemGroupsInRegion>`"
+msgstr ""
+
+# f4e3cd4e0d3b427b9f84253d4f7547cb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:893
+msgid ""
+":meth:`def AffectedElemGroupsInRegion "
+"<smeshBuilder.Mesh.AffectedElemGroupsInRegion>`"
+msgstr ""
+
+# 3bd0bc3edb4d40db97c1ce1904b95a5c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:895
+msgid ""
+":meth:`def DoubleNodesOnGroupBoundaries "
+"<smeshBuilder.Mesh.DoubleNodesOnGroupBoundaries>`"
+msgstr ""
+
+# 4bae5a9fa9224b4e83739225df7f26e8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:897
+msgid ""
+":meth:`def CreateFlatElementsOnFacesGroups "
+"<smeshBuilder.Mesh.CreateFlatElementsOnFacesGroups>`"
+msgstr ""
+
+# aa9625f8cc0c4f98a10c561807b0fd45
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:903
+msgid "Measurements"
+msgstr ""
+
+# ff946f026b284d88b6d33ba681bec784
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:908
+msgid ":meth:`def MinDistance <smeshBuilder.smeshBuilder.MinDistance>`"
+msgstr ""
+
+# f1597e5b1ace4148a543e81d917e16ad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:910
+msgid ":meth:`def GetMinDistance <smeshBuilder.smeshBuilder.GetMinDistance>`"
+msgstr ""
+
+# 8c061732c84243e4999c791d5013c457
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:912
+msgid ":meth:`def BoundingBox <smeshBuilder.smeshBuilder.BoundingBox>`"
+msgstr ""
+
+# cb9496005d9e4bd08374be8da5b6d955
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:914
+msgid ":meth:`def GetBoundingBox <smeshBuilder.smeshBuilder.GetBoundingBox>`"
+msgstr ""
+
+# ab581091987f47edb3536661186299d8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:916
+msgid ":meth:`def GetLength <smeshBuilder.smeshBuilder.GetLength>`"
+msgstr ""
+
+# ff8cba895f7e45c1b6a4125f7d2e6292
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:918
+msgid ":meth:`def GetArea <smeshBuilder.smeshBuilder.GetArea>`"
+msgstr ""
+
+# ac5dd4739c6349df9e30e171ba2112f6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:920
+msgid ":meth:`def GetVolume <smeshBuilder.smeshBuilder.GetVolume>`"
+msgstr ""
+
+# c1b1cf4ab290495c9c7b6fb25c9964be
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:922
+msgid ":meth:`def GetFreeBorders <smeshBuilder.Mesh.GetFreeBorders>`"
+msgstr ""
+
+# 7fc75b85d5444815a8949d02a41ff011
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:924
+msgid ":meth:`def MinDistance <smeshBuilder.Mesh.MinDistance>`"
+msgstr ""
+
+# 7f62a709e8114689b264f1e22222e72f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:926
+msgid ":meth:`def GetMinDistance <smeshBuilder.Mesh.GetMinDistance>`"
+msgstr ""
+
+# 9f7b563371434850ba91c4076e1e7d47
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:928
+msgid ":meth:`def BoundingBox <smeshBuilder.Mesh.BoundingBox>`"
+msgstr ""
+
+# 8dacd3983a9b4fe5abe7aeb8d1a3abd1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:930
+msgid ":meth:`def GetBoundingBox <smeshBuilder.Mesh.GetBoundingBox>`"
+msgstr ""
+
+# 49f25d14f1a8477b8e6634c2df06c9b8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:932
+msgid ":meth:`def GetFunctor <smeshBuilder.Mesh.GetFunctor>`"
+msgstr ""
+
+# 40708bb5cb564f7386340e94bb58097f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:934
+msgid ":meth:`def FunctorValue <smeshBuilder.Mesh.FunctorValue>`"
+msgstr ""
+
+# 0852d20741c34483bdf302ae17b9d6cc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:936
+msgid ":meth:`def GetLength <smeshBuilder.Mesh.GetLength>`"
+msgstr ""
+
+# 329b0f363aa14f87a300b439ce45950b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:938
+msgid ":meth:`def GetArea <smeshBuilder.Mesh.GetArea>`"
+msgstr ""
+
+# b67a175962b048b3a089e0cf1d4adce4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:940
+msgid ":meth:`def GetVolume <smeshBuilder.Mesh.GetVolume>`"
+msgstr ""
+
+# 8d7ea48673fb4afb828461ea52e24a51
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:942
+msgid ":meth:`def GetMaxElementLength <smeshBuilder.Mesh.GetMaxElementLength>`"
+msgstr ""
+
+# 9429fe5fd98f48e286ef1302ed70b7a5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:944
+msgid ":meth:`def GetAspectRatio <smeshBuilder.Mesh.GetAspectRatio>`"
+msgstr ""
+
+# 70f0db05da184f5d8bede2bc579da788
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:946
+msgid ":meth:`def GetWarping <smeshBuilder.Mesh.GetWarping>`"
+msgstr ""
+
+# 3923e5251d964e39b30978e8603d0bfc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:948
+msgid ":meth:`def GetMinimumAngle <smeshBuilder.Mesh.GetMinimumAngle>`"
+msgstr ""
+
+# dfc93a88fbbb413f8823bc2638fe9f44
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:950
+msgid ":meth:`def GetTaper <smeshBuilder.Mesh.GetTaper>`"
+msgstr ""
+
+# 41be6e44395240ab88848d50ad80a7ec
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:952
+msgid ":meth:`def GetSkew <smeshBuilder.Mesh.GetSkew>`"
+msgstr ""
+
+# 6c64d11fb1b44b7d849aa9230061297f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:954
+msgid ":meth:`def GetMinMax <smeshBuilder.Mesh.GetMinMax>`"
+msgstr ""
+
+# d3a8a9a4e3a8464082cb87f04506af4b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:959
+msgid "Accessing SMESH object in study"
+msgstr ""
+
+# a4f60f9a61a548678577ca804acca3f8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:963
+msgid ":class:`SMeshStudyTools <smeshstudytools.SMeshStudyTools>`"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/numbering.po b/doc/gui/locale/fr/LC_MESSAGES/numbering.po
new file mode 100644 (file)
index 0000000..f991868
--- /dev/null
@@ -0,0 +1,79 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 7d95f1ef3f0043dc91d5d1fcd1bc2944
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:5
+msgid "Numbering"
+msgstr ""
+
+# 55030336e52e4a75b6de75c17d34234a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:8
+msgid "Displaying node numbers"
+msgstr ""
+
+# 41a96e3d00214dc1a02d8738d1614d86
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:10
+msgid ""
+"In MESH you can display the ID numbers of all nodes of your mesh in the "
+"viewer."
+msgstr ""
+
+# 14db4614a8be43f2930a7a8076b8c79c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:12
+msgid "**To display ID numbers of nodes:**"
+msgstr ""
+
+# 44fad65bf5834169aac7bc005875f768
+# c832343967d146d386a35f0c8d810f36
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:14
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:31
+msgid "Display your mesh in the viewer"
+msgstr ""
+
+# 4e95ad9e84984429a8efda3ac16bcd06
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:15
+msgid ""
+"Right-click on the mesh in the 3D viewer and from the associated pop-up "
+"menu choose **Numbering > Display Nodes #**."
+msgstr ""
+
+# fea8ed3d37404dfe891fca4f6f4e0100
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:25
+msgid "Displaying element numbers"
+msgstr ""
+
+# d8cbb7e23d5445bda5eb5162a8295072
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:27
+msgid ""
+"In MESH you can display the ID numbers of all meshing elements composing "
+"your mesh in the viewer."
+msgstr ""
+
+# f4e486d693f2479dad2992508f50dd17
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:29
+msgid "**To display ID numbers of elements:**"
+msgstr ""
+
+# 09f8d1e8761b4eb48e2ca099c2fd4d9d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:32
+msgid ""
+"Right-click on the mesh in the 3D viewer and from the associated pop-up "
+"menu choose **Numbering > Display Elements #**."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/over_constrained_faces.po b/doc/gui/locale/fr/LC_MESSAGES/over_constrained_faces.po
new file mode 100644 (file)
index 0000000..90891f6
--- /dev/null
@@ -0,0 +1,47 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 7fdfea347e1d4091902dadb3d3a0c400
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_faces.rst:5
+msgid "Over-constrained faces"
+msgstr ""
+
+# 6709c7e9a6414872af4c0b7160eea96c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_faces.rst:7
+msgid ""
+"This mesh quality control highlights faces sharing only one border with "
+"other faces. In other words, the faces having all their nodes on the free"
+" border of the 2D mesh are highlighted."
+msgstr ""
+
+# 13eece5073274b6eb53dedc1b6afb106
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_faces.rst:12
+msgid ""
+"The highlighted faces are actually over-constrained only if, at the "
+"computation time, the boundary conditions on the borders where the nodes "
+"are located are all Dirichlet boundary conditions."
+msgstr ""
+
+# 5da724c689594f42a4628042beacd200
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_faces.rst:20
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_over_constrained_faces` "
+"filter."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/over_constrained_volumes.po b/doc/gui/locale/fr/LC_MESSAGES/over_constrained_volumes.po
new file mode 100644 (file)
index 0000000..dec1720
--- /dev/null
@@ -0,0 +1,47 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 1c76f867b1bd4081b8b10575d65b85d4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_volumes.rst:5
+msgid "Over-constrained volumes"
+msgstr ""
+
+# 1ceac26032bb4804bf5dc6931e08b4f6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_volumes.rst:7
+msgid ""
+"This mesh quality control highlights volumes sharing only one border with"
+" other volumes. In other words, the volumes having all their nodes on the"
+" external border of the mesh are highlighted."
+msgstr ""
+
+# c0c65d21a1cb48cca3707891a34f48e5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_volumes.rst:11
+msgid ""
+"The highlighted volumes are actually over-constrained only if, at the "
+"computation time, the boundary conditions on the borders where the nodes "
+"are located are all Dirichlet boundary conditions."
+msgstr ""
+
+# ae9f662b35ed4e059827aae378ff704a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_volumes.rst:19
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_over_constrained_volumes`"
+" filter."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/pattern_mapping.po b/doc/gui/locale/fr/LC_MESSAGES/pattern_mapping.po
new file mode 100644 (file)
index 0000000..124763f
--- /dev/null
@@ -0,0 +1,355 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# c83938bf26c24f74be1043ebf14552d8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:5
+msgid "Pattern mapping"
+msgstr ""
+
+# 8a5e89284905421995a2dfa8ab8b636f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:8
+msgid "About patterns"
+msgstr ""
+
+# 3550a3c3a90d4388bdc4d9a0e4db5435
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:10
+msgid ""
+"The pattern describes a mesh to generate: positions of nodes within a "
+"geometrical domain and nodal connectivity of elements. A pattern also "
+"specifies the so-called key-points, i.e. the nodes that will be located "
+"at geometrical vertices. The pattern description is stored in "
+"\\<pattern_name\\>.smp file."
+msgstr ""
+
+# 4009fa606e1c4c5b822b21dff8638900
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:16
+msgid "The smp file contains 4 sections:"
+msgstr ""
+
+# ff829ae0fb1b425f9cbc0ce1072a1e18
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:18
+msgid "The first line indicates the total number of pattern nodes (N)."
+msgstr ""
+
+# aeaaf04620194050a73e3d8250d3c138
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:19
+msgid ""
+"The next N lines describe nodes coordinates. Each line contains 2 node "
+"coordinates for a 2D pattern or 3 node coordinates for a 3D pattern. "
+"Note, that node coordinates of a 3D pattern can be defined only by "
+"relative values in range [0;1]."
+msgstr ""
+
+# fe96e67b421d4104beb3804802893513
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:20
+msgid ""
+"The key-points line contains the indices of the nodes to be mapped on "
+"geometrical vertices (for a 2D pattern only). Index n refers to the node "
+"described on the n-th line of section 2. The index of the first node is "
+"zero. For a 3D pattern the key points are not specified."
+msgstr ""
+
+# 929bbb6294a1412f8bf8a2da1370656c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:21
+msgid ""
+"The remaining lines describe nodal connectivity of elements, one line for"
+" each element. Each line holds indices of nodes forming an element. Index"
+" n refers to the node described on the n-th line of section 2. The first "
+"node index is zero. There must be 3 or 4 indices on each line for a 2D "
+"pattern (only liner 2d elements are allowed) and 4, 5, 6 or 8 indices for"
+" a 3D pattern (only linear 3d elements are allowed)."
+msgstr ""
+
+# 8d99602f52b64ed0b964677bbc0298dc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:23
+msgid ""
+"A 2D pattern must contain at least one element and at least one key-"
+"point. All key-points must lie on boundaries."
+msgstr ""
+
+# 2d2b937722444868af3eecb314c6ffb2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:25
+msgid "A 3D pattern must contain at least one element."
+msgstr ""
+
+# 9fcf969a83554a03ac70a6c524e0b891
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:27
+msgid "An example of a simple 2D pattern smp file: ::"
+msgstr ""
+
+# e5d838bf9c4749f28f49887d4fc67251
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:53
+msgid "The image below provides a preview of the above pattern:"
+msgstr ""
+
+# 969369d4f4064f74b5dc08f623b51c2a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:86
+msgid "Application of pattern mapping"
+msgstr ""
+
+# 13b96cae026945919cf0928e43d3a874
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:88
+msgid "**To apply pattern mapping to a geometrical object or mesh elements:**"
+msgstr ""
+
+# 2226092c305a4eb5b6e41c7a3e6f5364
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:90
+msgid ""
+"From the **Modification** menu choose the **Pattern Mapping** item or "
+"click **\"Pattern mapping\"** button in the toolbar."
+msgstr ""
+
+# a66db0a308a7471ebfe82759dfabc1b2
+# c5f77be0bb7945e4b192e923b3ff90de
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:99
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:156
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# 3833efecb3e34cfeb6abf4fcd97f6259
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:101
+msgid "For a **2D pattern**"
+msgstr ""
+
+# 327bfc771bd5449694eed60d94a3ab2b
+# 3a2a189ac97545edb3db1141f22eb91a
+# bb339f32b064419a8e6a36706724d88f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:107
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:132
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:161
+msgid "In this dialog you should specify:"
+msgstr ""
+
+# f3386e602bcc430199fd6750086acfda
+# 00d0e63ddd69486c8a050016482cb58c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:109
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:134
+msgid ""
+"**Pattern**, which can be loaded from .smp pattern file previously "
+"created manually or generated automatically from an existing mesh or sub-"
+"mesh."
+msgstr ""
+
+# d273cb2447914ebf8a2e7a45f89dc8c7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:110
+msgid ""
+"**Face** with the number of vertices equal to the number of key-points in"
+" the pattern; the number of key-points on internal boundaries of the "
+"pattern must also be equal to the number of vertices on internal "
+"boundaries of the face;"
+msgstr ""
+
+# 9f35137dce154a16a95f2f049d5b906b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:111
+msgid "**Vertex** to which the first key-point should be mapped;"
+msgstr ""
+
+# ae8e1ab88d1d4e61b531267dfd113382
+# e743a5b4079947159adfb93032f4e82e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:114
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:139
+msgid ""
+"Alternatively, it is possible to select **Refine selected mesh elements**"
+" check-box and apply the pattern to"
+msgstr ""
+
+# b3e08b4388a049599b91cf902f892ce9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:116
+msgid "**Mesh Face** instead of a geometric Face"
+msgstr ""
+
+# a8e8314bc7cc4f16a36f549f4e86269f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:117
+msgid "and select **Node** instead of vertex."
+msgstr ""
+
+# f22bda8580604a1e935ba3dc6e2fd8d1
+# ae2fdff186ac4cae9048e55b25f781e1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:120
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:144
+msgid "Additionally it is possible to:"
+msgstr ""
+
+# 570ae6cfabd3444d9ef4e6a5551fe8ad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:122
+msgid ""
+"**Reverse the order of key-points**. By default, the vertices of a face "
+"are ordered counterclockwise."
+msgstr ""
+
+# 8fcd7c5b92f848259c2e2bf00700a498
+# fcd34acf310642af88b94d08ad830de1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:123
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:146
+msgid "Enable to **Create polygons near boundary**"
+msgstr ""
+
+# 85e13224561c48a596162c654b5a0ff1
+# 8833494d15ec41c19fd516ea914c9a6c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:124
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:147
+msgid "and **Create polyhedrons near boundary**"
+msgstr ""
+
+# ab6bcc13f4324048a57537f0f6746707
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:127
+msgid "For a **3D pattern**"
+msgstr ""
+
+# 160ac2d750994567915eb090f16f67bb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:135
+msgid "A 3D block (Solid) object."
+msgstr ""
+
+# 3087f731ee27452fba7f533a95d5402d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:136
+msgid "Two vertices that specify the order of nodes in the resulting mesh."
+msgstr ""
+
+# ab6ec47757184294ba600a3b5423dbe8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:141
+msgid "One or several **Mesh volumes** instead of a geometric 3D object"
+msgstr ""
+
+# b63f393d8fc94c34997745086bb0aae0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:142
+msgid "and select two **Nodes** instead of vertices."
+msgstr ""
+
+# 93ac12e1c9fe447da2eeb1cc9d1ac7a5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:152
+msgid "Automatic Pattern Generation"
+msgstr ""
+
+# cd73e34977b247d8b807653626c727d0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:154
+msgid ""
+"To generate a pattern automatically from an existing mesh or sub-mesh, "
+"click **New** button."
+msgstr ""
+
+# ba136583468742a4a003239056493edd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:164
+msgid ""
+"**Mesh or Sub-mesh**, which is a meshed geometrical face (for a 2D "
+"pattern) or a meshed solid block (for a 3D pattern). Mesh nodes lying on "
+"the face vertices become key-points of the pattern."
+msgstr ""
+
+# 3bc616cb8d0e4c2bb081863c545bcb59
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:165
+msgid "A custom **Pattern Name**"
+msgstr ""
+
+# 05b4e73b55284d6fa4149d4bce33c4bc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:166
+msgid ""
+"Additionally, for a 2D pattern you may choose to **Project nodes on the "
+"face** to get node coordinates instead of using \"positions on face\" "
+"generated by the mesher (if there is any). The faces having a seam edge "
+"cannot be used for automatic pattern creation."
+msgstr ""
+
+# 5aa226ad57004fe883eb82ea6f121854
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:169
+msgid "When a pattern is created from an existing mesh, two cases are possible:"
+msgstr ""
+
+# 08018221e5e74d6fa964e3a1a86f3c55
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:171
+msgid ""
+"A sub-mesh on a face/solid is selected. The pattern is created from the "
+"2d/3d elements bound to the face/solid by the mesher. For a 2D pattern, "
+"the node coordinates are either \"positions on face\" computed by the "
+"mesher, or coordinates got by node projection on a geometrical surface, "
+"according to the user choice. For a 3D pattern, the node coordinates "
+"correspond to the nodes computed by the mesher."
+msgstr ""
+
+# 713cef75be124b7e867053d26fb54ca4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:172
+msgid ""
+"A mesh, where the main shape is a face/solid, is selected. The pattern is"
+" created from all 2d/3d elements in a mesh. In addition, if all mesh "
+"elements of a 2D pattern are built by the mesher, the user can select how"
+" to get node coordinates, otherwise all nodes are projected on a face "
+"surface."
+msgstr ""
+
+# c7724306e7b24801be95bf03e1b97916
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:176
+msgid "Mapping algorithm"
+msgstr ""
+
+# 589adef6a42f4539a64abcdb531fc54a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:178
+msgid "The mapping algorithm for a 2D case is as follows:"
+msgstr ""
+
+# b2c261010c374a469817645f0ff7db76
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:180
+msgid ""
+"The key-points are set counterclockwise in the order corresponding to "
+"their location on the pattern boundary. The first key-point is preserved."
+msgstr ""
+
+# dd71560977c54212a3888b9130bdabe5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:181
+msgid ""
+"The geometrical vertices corresponding to the key-points are found on "
+"face boundary. Here, \"Reverse order of key-points\" flag is set."
+msgstr ""
+
+# 9a9ccb3ee6154f5da4056cbcafd8db97
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:186
+msgid ""
+"The boundary nodes of the pattern are mapped onto the edges of the face: "
+"a node located between two key-points on the pattern boundary is mapped "
+"on the geometrical edge limited by the corresponding geometrical "
+"vertices. The node position on the edge depends on its distance from the "
+"key-points."
+msgstr ""
+
+# d440ef0d237a48368183cd94c02ec404
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:191
+msgid ""
+"The coordinates of a non-boundary node in the parametric space of the "
+"face are defined in the following way. In the parametric space of the "
+"pattern, the  node lies at the intersection of two iso-lines. Both of "
+"them intersect the pattern boundary at two points at least. If the mapped"
+" positions of boundary nodes are known, it is possible to find, where the"
+" points at the intersection of iso-lines and boundaries are mapped. Then "
+"it is possible to find the direction of mapped iso-line section and, "
+"finally, the positions of two nodes on two mapped isolines. The eventual "
+"mapped position of the node is found as an average of the positions on "
+"mapped iso-lines."
+msgstr ""
+
+# e10562bb4b5c4b8085517de679144722
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:196
+msgid "The 3D algorithm is similar."
+msgstr ""
+
+# f6d719e6414d40dfa409606b1f05e1f1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:198
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_pattern_mapping` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/point_marker.po b/doc/gui/locale/fr/LC_MESSAGES/point_marker.po
new file mode 100644 (file)
index 0000000..78e3ba8
--- /dev/null
@@ -0,0 +1,69 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 963e7da94a48431d9383310f5d9ea57a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/point_marker.rst:5
+msgid "Point Marker"
+msgstr ""
+
+# 10cc3fcf74624111a0478fc8b51ab83d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/point_marker.rst:7
+msgid ""
+"You can change the representation of points in the 3D viewer either by "
+"selecting one of the predefined shapes or by loading a custom texture "
+"from an external file."
+msgstr ""
+
+# 203e3a9b996846788a38cad64719931d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/point_marker.rst:11
+msgid "Standard point markers"
+msgstr ""
+
+# a18ec3d475b94b0780689f91c460df62
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/point_marker.rst:13
+msgid ""
+"The Mesh module provides a set of predefined point marker shapes which "
+"can be used to display points in the 3D viewer. Each standard point "
+"marker has two attributes: type (defines shape form) and scale factor "
+"(defines shape size)."
+msgstr ""
+
+# 13ebf72623394864a00b4e6fa3197834
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/point_marker.rst:28
+msgid "Custom point markers"
+msgstr ""
+
+# e899af8d220045a48bd59af333ba576e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/point_marker.rst:30
+msgid ""
+"It is also possible to load a point marker shape from an external file. "
+"This file should provide a description of the point texture as a set of "
+"lines; each line is represented as a sequence of \"0\" and \"1\" symbols,"
+" where \"1\" symbol means an opaque pixel and \"0\" symbol means a "
+"transparent pixel. The width of the texture corresponds to the length of "
+"the longest line in the file, expanded to the nearest byte-aligned value."
+" The height of the texture is equal to the number of non-empty lines in "
+"the file. Note that missing symbols are replaced by \"0\"."
+msgstr ""
+
+# ceac257a415b40cdba2e44cb9637115a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/point_marker.rst:39
+msgid "Here is a texture file sample: ::"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/prism_3d_algo.po b/doc/gui/locale/fr/LC_MESSAGES/prism_3d_algo.po
new file mode 100644 (file)
index 0000000..e9bbc69
--- /dev/null
@@ -0,0 +1,155 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 5883c75425df4f2c89c1427bfb185d89
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:5
+msgid "Extrusion 3D meshing algorithm"
+msgstr ""
+
+# 35b4ce80b6cb4ed6bd932df431fce354
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:7
+msgid ""
+"Extrusion 3D algorithm can be used for meshing prisms, i.e. 3D shapes "
+"defined by two opposing faces having the same number of vertices and "
+"edges. These two faces should be connected by quadrangle \"side\" faces."
+msgstr ""
+
+# 55f761ace9d54d8b9373b6a3f76e397b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:17
+msgid ""
+"The prism is allowed to have sides composed of several faces. (A prism "
+"side is a row of faces (or one face) connecting the corresponding edges "
+"of the top and base faces). However, a prism side can be split only "
+"vertically as indicated in the picture below."
+msgstr ""
+
+# bbcb105e95fd459db17209c5bb48d9d1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:29
+msgid ""
+"In this picture, the left prism is suitable for meshing with 3D extrusion"
+" algorithm: it has six sides, two of which are split vertically. The "
+"right prism cannot be meshed with this algorithm because one of the prism"
+" sides is split horizontally (the splitting edge is highlighted)."
+msgstr ""
+
+# 9be47428a7a241ab88225a19cecbf013
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:35
+msgid ""
+"The algorithm can propagate 2D mesh not only between horizontal (i.e. "
+"base and top) faces of one prism but also between faces of prisms "
+"organized in a stack and between stacks sharing prism sides."
+msgstr ""
+
+# 4d04532881c84454a01e611fcddc14b8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:45
+msgid ""
+"This picture shows four neighboring prism stacks, each comprising two "
+"prisms. The shown sub-mesh is used by the algorithm to mesh all eight "
+"prisms in the stacks."
+msgstr ""
+
+# 2913e96162ad409d937a3ece24f82772
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:49
+msgid ""
+"To use **Extrusion 3D** algorithm you need to assign algorithms and "
+"hypotheses of lower dimensions as follows. (A sample picture below shows "
+"algorithms and hypotheses used to mesh a cylinder with prismatic "
+"volumes)."
+msgstr ""
+
+# 4298d75d354f476b9551fc957558c147
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:57
+msgid ""
+"The **Global** algorithms and hypotheses to be chosen at "
+":ref:`create_mesh_anchor` are:"
+msgstr ""
+
+# 4e8e07e8e04741ffb136789ec959529e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:60
+msgid ""
+"1D algorithm and hypothesis that will be applied for meshing (logically) "
+"vertical edges of the prism (which connect the top and the base faces of "
+"the prism). In the sample picture above these are \"Regular_1D\" "
+"algorithm and \"Number of Segments\" hypothesis named \"Vertical Nb. "
+"Segments\"."
+msgstr ""
+
+# 1f459693925c48f8a6baeb2d3bea849b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:63
+msgid ""
+"The **Local** algorithms and hypotheses to be chosen at "
+":ref:`constructing_submeshes_page` are:"
+msgstr ""
+
+# 932d6d79dd0e493f865729fbb157f225
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:66
+msgid ""
+"1D and 2D algorithms and hypotheses that will be applied for meshing the "
+"top and the base prism :ref:`submesh_shape_section`. These faces can be "
+"meshed with any type of 2D elements: quadrangles, triangles, polygons or "
+"their mix. It is enough to define a sub-mesh on either the top or the "
+"base face. In the sample picture above, \"NETGEN_1D2D\" algorithm meshes "
+"\"bottom disk\" face with triangles. (1D algorithm is not assigned as "
+"\"NETGEN_1D2D\" does not require divided edges to create a 2D mesh.)"
+msgstr ""
+
+# e719ad1211954d938af134a7dbf6ae6c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:68
+msgid ""
+"Optionally you can define a 1D sub-mesh on some vertical "
+":ref:`submesh_shape_section` of stacked prisms, which will override the "
+"global 1D hypothesis mentioned above. In the **Prism stacks** picture, "
+"the vertical division is not equidistant on the whole length because a "
+"\"Number Of Segments\" hypothesis with Scale Factor=3 is assigned to the "
+"highlighted edge."
+msgstr ""
+
+# 9d61602dd3b04b098d4c05e67c0eff66
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:71
+msgid ""
+"If **Extrusion 3D** algorithm is assigned to a sub-mesh in a mesh with "
+"multiple sub-meshes, the described above approach may not work as "
+"expected. For example the bottom face may be meshed by other algorithm "
+"before **Extrusion 3D** have a chance to project a mesh from the base "
+"face. This thing can happen with vertical edges as well. All these can "
+"lead to either a meshing failure or to an incorrect meshing."
+msgstr ""
+
+# 0c81ba62aa31454f993160eff234b096
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:78
+msgid ""
+"In such a case, it's necessary to explicitly define algorithms that "
+"**Extrusion 3D** implicitly applies in a simple case:"
+msgstr ""
+
+# 532bac07503e476fa2a036de893f18f9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:81
+msgid "assign :ref:`projection_1D2D` algorithm to the top face and"
+msgstr ""
+
+# 6ad4f99c143242ba9e518b5d726bf011
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:82
+msgid "assign a 1D algorithm to a group of all vertical edges."
+msgstr ""
+
+# e9c2922ee00c4aa1aefcc15a3d35e940
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:90
+msgid "**See Also** a sample TUI Script of :ref:`tui_prism_3d_algo`."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/projection_algos.po b/doc/gui/locale/fr/LC_MESSAGES/projection_algos.po
new file mode 100644 (file)
index 0000000..2c81855
--- /dev/null
@@ -0,0 +1,220 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# fc4d677b1c234a72b7e97451677ac8e3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:5
+msgid "Projection Algorithms"
+msgstr ""
+
+# d55142e76e1a47fea92de81fe9bed3d9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:0
+msgid "`Table of contents`"
+msgstr ""
+
+# cfa42355ba754e59aab936e85b474397
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:9
+msgid ""
+"Projection algorithms allow to define the mesh of a geometrical object by"
+" the projection of another already meshed geometrical object."
+msgstr ""
+
+# 374f2a20d98141a2a59f36b59b41defb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:13
+msgid ""
+"Source and target geometrical objects mush be topologically equal, i.e. "
+"they must have same number of sub-shapes, connected to corresponding "
+"counterparts."
+msgstr ""
+
+# d983865fc5a3497191fe16a3840ed44e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:25
+msgid "Projection 1D"
+msgstr ""
+
+# 0f52c911e7b04ab5b8f8190c5ebabdca
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:27
+msgid ""
+"**Projection 1D** algorithm allows to define the mesh of an edge (or "
+"group of edges) by the projection of another already meshed edge (or "
+"group of edges)."
+msgstr ""
+
+# 77d34de361694c3fbc2a08934d6dbf6c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:30
+msgid ""
+"To apply this algorithm select the edge to be meshed (indicated in the "
+"field **Geometry** of **Create mesh** dialog box), **Projection1D** in "
+"the list of 1D algorithms and click the **\"Add Hypothesis\"** button. "
+"The following dialog box will appear:"
+msgstr ""
+
+# 1050b73647ab4a068240b00b53a16e6b
+# ff3a3f91ceba41c4878ea2269f4e603b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:39
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:72
+msgid "In this dialog you can define"
+msgstr ""
+
+# 88fc0a02fd614150a1c8a42ebd1657d2
+# 939901da1425440cb61fccb741ae2d0f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:41
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:74
+msgid "the **Name** of the algorithm,"
+msgstr ""
+
+# bf02e08c729244fbac7ce0f14296fbed
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:42
+msgid "the already meshed **Source Edge** and"
+msgstr ""
+
+# e3b6c7a5b7474f9789d0c62aff066ddf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:43
+msgid ""
+"the **Source Mesh** (It can be omitted only when projecting a sub-mesh on"
+" another one of the same Mesh)."
+msgstr ""
+
+# 6e32fb2a4af54f8582770d9d82d6317b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:44
+msgid ""
+"It could also be necessary to define the orientation of edges,  which is "
+"done by indicating the **Source Vertex** being the first point of the "
+"**Source Edge **and the **Target Vertex** being the first point of the "
+"edge being meshed."
+msgstr ""
+
+# c8e46baa569e4fffac0fa4394f58c333
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:47
+msgid ""
+"For a group of edges, **Source** and **Target** vertices should be shared"
+" by only one edge of the group. If **Source** and **Target** vertices are"
+" specified, the edges in the group must be connected. The source and "
+"target groups must contain equal number of edges and they must form "
+"topologically equal structures."
+msgstr ""
+
+# 622a00ba8f4d447a91e77ef24176f5f2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:56
+msgid "Projection 2D"
+msgstr ""
+
+# f605d32ab7c8408380a00d5e24819df4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:59
+msgid ""
+"**Projection 2D** algorithm allows to define the mesh of a face (or group"
+" of faces) by the projection of another already meshed face (or group of "
+"faces). This algorithm works only if all edges of the target face have "
+"been discretized into the same number of segments as corresponding edges "
+"of the source face."
+msgstr ""
+
+# 7749ef98485b4e888475caa3e0b5f039
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:65
+msgid ""
+"To apply this algorithm select the face to be meshed (indicated in the "
+"field **Geometry** of **Create mesh** dialog box), **Projection 2D** in "
+"the list of 2D algorithms and click the **\"Add Hypothesis\"** button. "
+"The following dialog box will appear:"
+msgstr ""
+
+# e595e34f95eb4107a297b4194571b45f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:75
+msgid "the already meshed **Source Face** and"
+msgstr ""
+
+# cee42924eb494f4f8bba1b8d361d4e0c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:76
+msgid ""
+"the **Source Mesh** (It can be omitted only when projecting a submesh on "
+"another one of the same Mesh)."
+msgstr ""
+
+# 592531ecb23d420991fa14c5b6e3ce1e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:77
+msgid ""
+"It could also be necessary to define the orientation of mesh on the face,"
+" which is done by indicating two **Source Vertices**, which belong to the"
+" same edge of the **Source Face**, and two **Target Vertices**, which "
+"belong to the same edge of the face being meshed."
+msgstr ""
+
+# 40281f2e1c644a2daf59590833252903
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:80
+msgid ""
+"The groups of faces are suitable for this algorithm only if they contain "
+"an equal number of faces and form topologically equal structures."
+msgstr ""
+
+# eb51034c0f7548ebbd6794f8781377fb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:87
+msgid "Projection 1D-2D"
+msgstr ""
+
+# 270173b13abd41daa4da8aa451695821
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:89
+msgid ""
+"**Projection 1D-2D** algorithm differs from :ref:`projection_2D` "
+"algorithm in one aspect: it generates mesh segments on edges of the face "
+"according to the projected 2D elements; thus it does not require the "
+"edges to be meshed by any other 1D algorithm; moreover it does not allow "
+"to mesh edges of the face using another algorithm via definition of sub-"
+"meshes."
+msgstr ""
+
+# 18d2ad31445f443c8292a8a3f1cf2b57
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:100
+msgid "Projection 3D"
+msgstr ""
+
+# bc8aac3fdc3c49b0bbd892361a56a049
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:102
+msgid ""
+"**Projection 3D** algorithm allows to define the mesh of a shape by the "
+"projection of another already meshed shape.  This algorithm works only if"
+" all faces and edges of the target shape have been meshed as 1D-2D "
+"Projections of the faces and edges of the source shape. Another "
+"limitation is that this algorithm currently works only on boxes."
+msgstr ""
+
+# a87c8f7ba61147e487a8da138be2c8ae
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:108
+msgid ""
+"To apply this algorithm select the solid to be meshed (indicated in the "
+"field **Geometry** of **Create mesh** dialog box), **Projection 3D** in "
+"the list of 3D algorithms and click the  button. The following dialog box"
+" will appear:"
+msgstr ""
+
+# 8e914dde7b6a4ebfb52d07991cfe52ab
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:116
+msgid ""
+"In this menu you can define the **Name** of the algorithm, the already "
+"meshed source **3D shape** and the **Mesh** (It can be omitted only when "
+"projecting a submesh on another one from the same global Mesh). It could "
+"also be necessary to define the orientation of mesh on the shape, which "
+"is done by indicating two **Source Vertices**, which belong to the same "
+"edge of the source **3D Shape**, and two **Target Vertices**, which "
+"belong to the same edge of the source **3D Shape**."
+msgstr ""
+
+# 1b6d95a37c65466a872b4c90a5fb9b3d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:124
+msgid "**See Also** a sample TUI Script of a :ref:`tui_projection`."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/python_api.po b/doc/gui/locale/fr/LC_MESSAGES/python_api.po
new file mode 100644 (file)
index 0000000..35fcb88
--- /dev/null
@@ -0,0 +1,8132 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-03-30 12:23+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 2ef015f4431d4aaea1f2248de4ecc737
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/python_api.rst:3
+msgid "Mesh Python interface"
+msgstr ""
+
+# bbc4e9fc55b649848fbdd0df0797e2a4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/python_api.rst:6
+msgid "smeshstudytools module"
+msgstr ""
+
+# ed9efba7c29145e39b70545482dbec85
+#: smeshstudytools:1
+msgid ""
+"This module provides a new class :class:`SMeshStudyTools` to facilitate "
+"the use of mesh objects in Salome study."
+msgstr ""
+
+# 4bf86efe0029421ca8a9a090942174cb
+#: smeshstudytools.SMeshStudyTools:1
+msgid ""
+"This class provides several methods to manipulate mesh objects in Salome "
+"study. The parameter `studyEditor` defines a "
+":class:`~salome.kernel.studyedit.StudyEditor` object used to access the "
+"study. If :const:`None`, the method returns a "
+":class:`~salome.kernel.studyedit.StudyEditor` object on the current "
+"study."
+msgstr ""
+
+# 8842f72e1a054df99360c3d498d937b1
+#: smeshstudytools.SMeshStudyTools:9
+msgid ""
+"This instance attribute contains the underlying "
+":class:`~salome.kernel.studyedit.StudyEditor` object. It can be used to "
+"access the study but the attribute itself should not be modified."
+msgstr ""
+
+# 1aedc3f5c12c4e2482182c3f695e759c
+#: smeshstudytools.SMeshStudyTools.displayMeshObjectFromEntry:1
+msgid ""
+"Display the SMESH object associated to the specified entry (the entry is "
+"the identifier of an item in the objects browser)."
+msgstr ""
+
+# 767320f300c941829cdab8826ba737a4
+#: smeshstudytools.SMeshStudyTools.getMeshFromGroup:1
+msgid "Get the mesh item owning the mesh group `meshGroupItem`."
+msgstr ""
+
+# 578bef1d04fe424ab5b31f933f807e5d
+#: smeshstudytools.SMeshStudyTools.getMeshFromGroup:4
+msgid "Mesh group belonging to the searched mesh."
+msgstr ""
+
+# 7de81fdef5d447bbae53423ee5f0f56e
+#: smeshstudytools.SMeshStudyTools.getMeshFromGroup:6
+msgid "The SObject corresponding to the mesh, or None if it was not found."
+msgstr ""
+
+# e6b3f183ebd24795aa6d2a4ea3bd22ca
+#: smeshstudytools.SMeshStudyTools.getMeshObjectFromEntry:1
+msgid ""
+"Returns the MESH object associated to the specified entry, (the entry is "
+"the identifier of an item in the objects browser)."
+msgstr ""
+
+# 905792f5b717452eabd930cc0777474a
+#: smeshstudytools.SMeshStudyTools.getMeshObjectFromSObject:1
+msgid ""
+"Returns the SMESH object associated to the specified SObject, (the "
+"SObject is an item in the objects browser)."
+msgstr ""
+
+# 1c4a9e28c832436998b711f22b4c643b
+#: smeshstudytools.SMeshStudyTools.getMeshObjectSelected:1
+msgid "Returns the MESH object currently selected in the active study."
+msgstr ""
+
+# 8a023271efbf42799c4bf55b0e8c949d
+#: smeshstudytools.SMeshStudyTools.updateStudy:1
+msgid "This function updates the tools so that it works on the specified study."
+msgstr ""
+
+# d7d286c06a7f4a50b7dbc0742c19d1be
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/python_api.rst:11
+msgid "StdMeshersBuilder module"
+msgstr ""
+
+# 14d1354258c9401a981c9be32e8e34d3
+#: StdMeshersBuilder:1
+msgid "Python API for the standard meshing plug-in module."
+msgstr ""
+
+# c037456965c641c0874108d03f7c9cc1
+#: StdMeshersBuilder.COMPOSITE:1
+msgid ""
+"*Algorithm type* -- Composite segment 1D algorithm, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_CompositeSegment`"
+msgstr ""
+
+# 069368fb1fbb4bf1bece225879596430
+#: StdMeshersBuilder.Hexa:1
+msgid ""
+"*Algorithm type* -- Hexahedron 3D (i-j-k) algorithm, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Hexahedron`"
+msgstr ""
+
+# 5d5613278457472fbf4dd155ba325791
+#: StdMeshersBuilder.MEFISTO:1
+msgid ""
+"*Algorithm type* -- Triangle MEFISTO 2D algorithm, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO`"
+msgstr ""
+
+# 9ed7ab464ff54af0bf59f8eead6186bc
+#: StdMeshersBuilder.POLYGON:1
+msgid ""
+"*Algorithm type* -- Polygon Per Face 2D algorithm, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_PolygonPerFace`"
+msgstr ""
+
+# fce9cff890cc49a996697568695d5a80
+#: StdMeshersBuilder.PYTHON:1
+msgid ""
+"*Algorithm type* -- Python 1D algorithm, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Segment_Python`"
+msgstr ""
+
+# 5e3e3ba96e7d4af2887f07a1cd96c9a7
+#: StdMeshersBuilder.QUADRANGLE:1
+msgid ""
+"*Algorithm type* -- Quadrangle 2D algorithm, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Quadrangle`"
+msgstr ""
+
+# 9fb47e7815f44ecca66aa4f0c8a6a0e1
+#: StdMeshersBuilder.QUAD_MA_PROJ:1
+msgid ""
+"*Algorithm type* -- Quadrangle (Medial Axis Projection) 1D-2D algorithm, "
+"see :class:`~StdMeshersBuilder.StdMeshersBuilder_QuadMA_1D2D`"
+msgstr ""
+
+# 6f1e112163754794a2a4636b49d2a895
+#: StdMeshersBuilder.RADIAL_QUAD:1
+msgid ""
+"*Algorithm type* -- Radial Quadrangle 1D-2D algorithm, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_RadialQuadrangle1D2D`"
+msgstr ""
+
+# 0d5c44493e974442b4fdb8ae6827f35a
+#: StdMeshersBuilder.REGULAR:1
+msgid ""
+"*Algorithm type* -- Regular 1D algorithm, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Segment`"
+msgstr ""
+
+# 1555ec093ec040a08ead66e85210c3a5
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D:1
+msgid "Defines a Body Fitting 3D algorithm"
+msgstr ""
+
+# 489b5c63be6541a0b239bb24d5ae06a9
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D:3
+msgid "It is created by calling smeshBuilder.Mesh.BodyFitted(geom=0)"
+msgstr ""
+
+# 24b4181b87a6431494682f0b88a07fb0
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetAxesDirs:1
+msgid "Defines custom directions of axes of the grid"
+msgstr ""
+
+# 98e67b0873f84c7faaf31a098cc14659
+# ad1226c21ca74356b25a1dc07f6a4719
+# 2fbfb2a064724f5184895f4954412761
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetAxesDirs:3
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetAxesDirs:4
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetAxesDirs:5
+msgid "either SMESH.DirStruct or a vector, or 3 vector components"
+msgstr ""
+
+# 4fde3b6a79344887a11d096c9e63c9b1
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetFixedPoint:3
+msgid "Sets/unsets a fixed point. The algorithm makes a plane of the grid pass"
+msgstr ""
+
+# ed881006b0804ad28bca303e80f6d1c8
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetFixedPoint:2
+msgid ""
+"through the fixed point in each direction at which the grid is defined by"
+" spacing"
+msgstr ""
+
+# e86b5231264b45d7a64a7722a227e99e
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetFixedPoint:5
+msgid ""
+"coordinates of the fixed point. Either SMESH.PointStruct or a vertex or 3"
+" components of coordinates."
+msgstr ""
+
+# 1679f83b51154bb9b4ff9688e6eb4d0d
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetFixedPoint:7
+msgid "defines whether the fixed point is defined or removed."
+msgstr ""
+
+# 19774136c1a34fbca187a90a3d992470
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:1
+msgid "Defines \"Body Fitting parameters\" hypothesis"
+msgstr ""
+
+# 528fa380458f4ee59724509d0bad2a3c
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:3
+msgid ""
+"is definition of the grid along the X asix. It can be in either of two "
+"following forms:      - Explicit coordinates of nodes, e.g. [-1.5, 0.0, "
+"3.1] or range( -100,200,10)     - Functions f(t) defining grid spacing at"
+" each point on grid axis. If there are         several functions, they "
+"must be accompanied by relative coordinates of         points dividing "
+"the whole shape into ranges where the functions apply; points         "
+"coodrinates should vary within (0.0, 1.0) range. Parameter *t* of the "
+"spacing         function f(t) varies from 0.0 to 1.0 within a shape "
+"range."
+msgstr ""
+
+# 19d5f5799fe0407cac969556cf5cc0cd
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:3
+msgid ""
+"is definition of the grid along the X asix. It can be in either of two "
+"following forms:"
+msgstr ""
+
+# 8eb97e76efcd4732bbd655feb41428f8
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:6
+msgid ""
+"Explicit coordinates of nodes, e.g. [-1.5, 0.0, 3.1] or range( "
+"-100,200,10)"
+msgstr ""
+
+# 5a5a5efc092e4b518fe511905c966c2e
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:11
+msgid ""
+"Functions f(t) defining grid spacing at each point on grid axis. If there"
+" are"
+msgstr ""
+
+# 6dcd86c5872a4d90a278b65171e15733
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:8
+msgid ""
+"several functions, they must be accompanied by relative coordinates of "
+"points dividing the whole shape into ranges where the functions apply; "
+"points coodrinates should vary within (0.0, 1.0) range. Parameter *t* of "
+"the spacing function f(t) varies from 0.0 to 1.0 within a shape range."
+msgstr ""
+
+# 9d031be415dd4224ae105799ff0fefba
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:14
+msgid "Examples"
+msgstr ""
+
+# 4bc251f264234042bc0176b03e4d1e59
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:15
+msgid ""
+"\"10.5\" - defines a grid with a constant spacing [[\"1\", \"1+10*t\", "
+"\"11\"] [0.1, 0.6]] - defines different spacing in 3 ranges."
+msgstr ""
+
+# 4cdcf4cfd97a411681fc5928086c827d
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:18
+msgid "defines the grid along the Y asix the same way as *xGridDef* does."
+msgstr ""
+
+# e3c78486447147e5bffe6b3ace4dbff1
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:19
+msgid "defines the grid along the Z asix the same way as *xGridDef* does."
+msgstr ""
+
+# eb405d2b72b647768ad32cdc80b89f69
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:20
+msgid ""
+"(> 1.0) defines a minimal size of a polyhedron so that a polyhedron of "
+"size less than hexSize/sizeThreshold is not created."
+msgstr ""
+
+# ab249b66961a47ffae8a0a9b3242dca5
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:22
+msgid "enables implementation of geometrical edges into the mesh."
+msgstr ""
+
+# 597b5f6b282f4c688e02e6d94cb521f4
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetOptimalAxesDirs:2
+msgid "Automatically defines directions of axes of the grid at which"
+msgstr ""
+
+# fe9bd0b826504f30970704144590763c
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetOptimalAxesDirs:2
+msgid "a number of generated hexahedra is maximal"
+msgstr ""
+
+# 41c32111139540f8ad9f6e8e97b94bec
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetOptimalAxesDirs:4
+msgid "defines whether the axes mush be orthogonal"
+msgstr ""
+
+# b5977df3c9b34221a7b34b65c51c382b
+# 2d6e31719f8f45448f48eb1d08cb75ed
+# f3f3f886ba1e44e09ffd3acfe578f14a
+# 0bfd980eaf6143b098003ce84f131228
+# 7a5d4afc77c24756ac3e078ce200cbc5
+# 1a9c8760326d4be08d37b105e0a4901c
+# e44cc04123a54dbdb3a16de77f445cc6
+# a4ae24248ed24f4cbd151b881efe6b13
+# a667301ef2f14eccbe3f7b80cc8645d1
+# 5c937ed63fa24bbb8953b1b499082642
+# 07f0abdd67a5452ebeb9604876954b83
+# 119386cffc634ee696a66929e1867782
+# fb58c42e77ba4c78b3b787abe9d3d1bd
+# 78e68eeb6d4c47d18d3a7eb41123f3cf
+# bc8f743578a8425eb287a1da1acff67d
+# 7cb3f53e7b384655ad122dfaef02492c
+# f9baf387774b4316b673c0d4a6e875cb
+# 50257160ecac479d8a82001fa8a50dcb
+# 8974edaf26c440beb5f2ea7543a033eb
+# 687173152bf846de915d0be2a17d08f9
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_CompositeSegment.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_Hexahedron.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_PolygonPerFace.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D2D.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_QuadMA_1D2D.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_RadialPrism3D.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_RadialQuadrangle1D2D.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D.algoType:1
+#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_2D.algoType:1
+msgid "type of algorithm used with helper function in smeshBuilder.Mesh class"
+msgstr ""
+
+# 5fa5c87d44df4075b887effd24d3f8f0
+# 4f5f35aa045240f4a0a99d568886824e
+# ea38f70d47df4178bee66407e0325e90
+# 77f759d51d914472a2cbe0d0422f1ae1
+# 245d546ae4b34d3e992c64a274c74d34
+# b4a11081a71d49b684630afb6aa1dbd2
+# 6526543d54e14b658fe1674c7cf6092a
+# 66b93e1e2d1144f68115d9f969e47e49
+# a5b4fc6a27124f939e5db6d192bcbbfe
+# 606c7fc57d0548f993f721abb42e0236
+# c68d559f17b64c409be7abef55f110a9
+# 1e22633f039c49d8b1090257bf783ad8
+# 428d8c2980954c06950b289f1f9e598a
+# d3d503d7916a4ed3a99468ff0cab172d
+# 36e2151181ae4a3994856081b3ca8082
+# 7b8cf061e3984b0db14f986afaa46c69
+# 8ae63a3d30034676b6021214173a0ecf
+# f9c50f9b9605499a88da85b80ed52b58
+# 1602fe29b9c3412e80c4b14703a706f2
+# f0105b5ffa414cddabe9c33781258b31
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_CompositeSegment.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_Hexahedron.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_PolygonPerFace.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D2D.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_QuadMA_1D2D.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_RadialPrism3D.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_RadialQuadrangle1D2D.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D.docHelper:1
+#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_2D.docHelper:1
+msgid "doc string of the method"
+msgstr ""
+
+# cf21588ccbc44798b458afb5f2b8394c
+# b998b58ae8f044aea451440e04094b5f
+# 8325219c7f9a4a98ae084f70fadfa46e
+# adda49aa877844488e77d0605d355669
+# c64af4253ffb445482694eba627c30ad
+# 037a9ff6dfa2499b958916cba0d31176
+# 50047d4dc5374587bfc1ca0e00d7efea
+# bcdf79df7078434184998c122f338d6a
+# 2403cd8cc4444dc7a291d40849cc71e8
+# 48c253d8fd084dba95d4fb522d25c1f3
+# b3b749858c314d4b9b9aa0dff002a307
+# 426e0d58af19419c83a877b3b4f7f234
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.isDefault:1
+#: StdMeshersBuilder.StdMeshersBuilder_CompositeSegment.isDefault:1
+#: StdMeshersBuilder.StdMeshersBuilder_Hexahedron.isDefault:1
+#: StdMeshersBuilder.StdMeshersBuilder_PolygonPerFace.isDefault:1
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.isDefault:1
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.isDefault:1
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.isDefault:1
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.isDefault:1
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.isDefault:1
+#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.isDefault:1
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.isDefault:1
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.isDefault:1
+msgid ""
+"flag pointing whether this algorithm should be used by default in dynamic"
+" method of smeshBuilder.Mesh class"
+msgstr ""
+
+# 0b18906968da4079b1af63be4a2e7b81
+# 3879fbe99c9845e8ab964adbc5df17d6
+# 08737636e4eb46b5bfe492ddffa49c80
+# cb03b7ea05ae47efb52abd7e1a1cc324
+# 16f978af0b7446229ae4903154c870ac
+# a3b8f08fa397436f98717fead6272d2d
+# 86f0ae833cba4e7491bc4ede0554a2db
+# 6ab22b97addc4001b28072b837bca18b
+# 5700dee3f2e64f1184b6804b2f0fc922
+# dd7dc71fb6b64f51aaad4ca5cc63ffcd
+# b6a2101571384400910780a60452430c
+# 3ff00695291d4f4eab59d16a85f4ebd8
+# b0f793ba186041e785c3ce052152845d
+# 82c82bdd8f9c4cf195ba8b13349e8b35
+# 903e4632fd6f4e23acc4805c9d4131af
+# 3a4f2b62668b4760953ba8bded0d349f
+# 3d24a6d566104fd2982f42ce7178531b
+# 1e7e4bf1350d404c91f9ff069554b317
+# 0955f46bc1b0469c8a93fbf95861e82a
+# 6f25fd896b614b0d98474e0d107e2cb9
+#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_CompositeSegment.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_Hexahedron.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_PolygonPerFace.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D2D.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_QuadMA_1D2D.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_RadialPrism3D.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_RadialQuadrangle1D2D.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D.meshMethod:1
+#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_2D.meshMethod:1
+msgid "name of the dynamic method in smeshBuilder.Mesh class"
+msgstr ""
+
+# 660763b7fced4a79b721d1ce9ac2ba3c
+#: StdMeshersBuilder.StdMeshersBuilder_CompositeSegment:1
+msgid ""
+"Segment 1D algorithm for discretization of a set of adjacent edges as one"
+" edge."
+msgstr ""
+
+# c50e31b225db467995066bd190c19e8e
+#: StdMeshersBuilder.StdMeshersBuilder_CompositeSegment:3
+msgid ""
+"It is created by calling "
+"smeshBuilder.Mesh.Segment(smeshBuilder.COMPOSITE,geom=0)"
+msgstr ""
+
+# 00a93632a1a1478c919c15360f9d4c41
+#: StdMeshersBuilder.StdMeshersBuilder_Hexahedron:1
+msgid ""
+"Defines a hexahedron 3D algorithm It is created by calling "
+"smeshBuilder.Mesh.Hexahedron(geom=0)"
+msgstr ""
+
+# ec46269843334022a29b62e9e7d3fb50
+#: StdMeshersBuilder.StdMeshersBuilder_PolygonPerFace:1
+msgid ""
+"Defines a Polygon Per Face 2D algorithm It is created by calling "
+"smeshBuilder.Mesh.Polygon(geom=0)"
+msgstr ""
+
+# 3f12e061a32040cb8ff271361a23e2ba
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D:1
+msgid ""
+"Defines a Prism 3D algorithm, which is either \"Extrusion 3D\" or "
+"\"Radial Prism\" depending on geometry It is created by calling "
+"smeshBuilder.Mesh.Prism(geom=0)"
+msgstr ""
+
+# 069ae33e583045a481f20c5f4c544f30
+# 23b3635e31664613b36449f2f44e7325
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.Arithmetic1D:3
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.Arithmetic1D:2
+msgid ""
+"Defines \"Arithmetic1D\" hypothesis, specifying the distribution of "
+"segments"
+msgstr ""
+
+# b0f64972de2d4ce69d3fe62c8dc48a04
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.Arithmetic1D:2
+msgid ""
+"to build between the inner and the outer shells with a length that "
+"changes in arithmetic progression"
+msgstr ""
+
+# 012cc6b2beb9414c8d92328828138f48
+# b4334cb9ff8145aaaf8da5f0e9f19ab0
+# 457ef31114974bdca1c1def2af35c485
+# 109c30031ec54621afcc910ae4fc01c8
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.Arithmetic1D:5
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.GeometricProgression:5
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.Arithmetic1D:4
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.GeometricProgression:4
+msgid "the length of the first segment"
+msgstr ""
+
+# 63fd345964da48688689da16cbf13125
+# 9a667508a5f64eb3b7478632ddc60c80
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.Arithmetic1D:6
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.Arithmetic1D:5
+msgid "the length of the last  segment"
+msgstr ""
+
+# 8eb135abd79540c282bc3db8a3c9922c
+# 53158a24aa4e4ddd86dfc8681da5dad1
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.AutomaticLength:2
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.AutomaticLength:1
+msgid "Defines \"AutomaticLength\" hypothesis, specifying the number of segments"
+msgstr ""
+
+# 1de40475b008489f97b750e06f6cb46d
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.AutomaticLength:2
+msgid "to build between the inner and outer shells"
+msgstr ""
+
+# 672c8824d4a945d6a93f4d2ea709697a
+# 07da7825c9044c6b896c2afeb2798d1c
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.AutomaticLength:4
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.AutomaticLength:3
+msgid "defines the quality of the mesh within the range [0-1]"
+msgstr ""
+
+# 3d9473c4376547a5843503fd455315ee
+# 04d6648fdc044deab12b866a1f501cda
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.GeometricProgression:3
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.GeometricProgression:2
+msgid ""
+"Defines \"GeometricProgression\" hypothesis, specifying the distribution "
+"of segments"
+msgstr ""
+
+# d47e7f80b9ae4fbd9a8a6637b0a75f80
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.GeometricProgression:2
+msgid ""
+"to build between the inner and the outer shells with a length that "
+"changes in Geometric progression"
+msgstr ""
+
+# be6a7df81d454f5581235b624f817ce3
+# 533f531d15864d0d8924565c23b0e76b
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.GeometricProgression:6
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.GeometricProgression:5
+msgid "the common ratio of the geometric progression"
+msgstr ""
+
+# 0185eacdeefc4eb8bc35bc854e1a90ba
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.Get3DHypothesis:1
+msgid "3D hypothesis holding the 1D one"
+msgstr ""
+
+# 5e7b2928acb24e09820e1ac5368d9675
+# ae20835d81754a18bfcd26ef04e77920
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.LocalLength:2
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.LocalLength:1
+msgid "Defines \"LocalLength\" hypothesis, specifying the segment length"
+msgstr ""
+
+# bf0860e4097246efb7900768f84f9156
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.LocalLength:2
+msgid "to build between the inner and the outer shells"
+msgstr ""
+
+# 70a21b2de07f4d0498527dd3a51f1a6b
+# fd09ee05eb8f40fb94a78a477f65420d
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.LocalLength:4
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.LocalLength:3
+msgid "the length of segments"
+msgstr ""
+
+# 4026d4fe780d4375aa35de017fe96ef8
+# 5863851f91a64bf894e64f69100792d2
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.LocalLength:5
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.LocalLength:4
+msgid "the precision of rounding"
+msgstr ""
+
+# 28329b84bde84ed7be9f74aef6574050
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfLayers:2
+msgid "Defines \"NumberOfLayers\" hypothesis, specifying the number of layers of"
+msgstr ""
+
+# ab8c5517ac6c44b0a42f733601aa29a7
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfLayers:2
+msgid "prisms to build between the inner and outer shells"
+msgstr ""
+
+# 577855c5d49e4d8aa3597a07be1e10dd
+# 68e5f7cc173e4100b8328c919a580621
+# 632a1d31d2674e4382220ac674e71e42
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfLayers:4
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.NumberOfLayers:3
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers2D:6
+msgid "number of layers"
+msgstr ""
+
+# fff61d4d527a49d2b46cf9431fb392b5
+# 4f387f2359a44f50a4c351f81013e98c
+# 7d1be84be0c4498e8a87141b45945066
+# 3a2ca7ae174543379856b9aa34715fec
+# 0e367d0dc4624a5eb2da9347fbb2c5f2
+# 3f7c50c28a264e7ab2fec3f1a8c59653
+# 12724e3a60294848b53347ba40baa8ef
+# 3172e1c1e302447e8da313d644145a9b
+# d36ce58d743a4cf48311c4b292c61293
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfLayers:5
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.SourceEdge:9
+#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:11
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.Reduced:7
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TrianglePreference:4
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.NumberOfLayers:4
+#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python.PythonSplit1D:5
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.SourceEdges:6
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.SourceFaces:6
+msgid ""
+"if ==true - searches for the existing hypothesis created with the same "
+"parameters, else (default) - creates a new one"
+msgstr ""
+
+# df20255a7e98437d8e0d4fe64facab50
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfSegments:2
+msgid ""
+"Defines \"NumberOfSegments\" hypothesis, specifying the number of layers "
+"of"
+msgstr ""
+
+# 12d150dd0e6c4988a59e9edf107f505e
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfSegments:2
+msgid "prisms to build between the inner and the outer shells."
+msgstr ""
+
+# 874031bd8de247f5b4682e643f57966a
+# 176b474c831642a7b0480e2b8587f138
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfSegments:4
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.NumberOfSegments:3
+msgid "the number of layers"
+msgstr ""
+
+# 086496a24a8e4f35a897ae6ee90a01f9
+# 5a8bbbf8bcde4a9ea62233c859878a93
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfSegments:5
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.NumberOfSegments:4
+msgid "the scale factor (optional)"
+msgstr ""
+
+# 8f162d69a2ac48d9ac15bf1ee0364097
+# f57c55e81e53407390e9b82ca6053e56
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.OwnHypothesis:2
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.OwnHypothesis:2
+msgid ""
+"Private method creating a 1D hypothesis and storing it in the "
+"LayerDistribution"
+msgstr ""
+
+# 4de48505f4f14ee086b10305e704770f
+# 9440f79c7a1c47e88e714965c2bdac8e
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.OwnHypothesis:2
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.OwnHypothesis:2
+msgid "hypothesis."
+msgstr ""
+
+# 8ad4bed0d4544240b5f99d10b67af58f
+# 82b41dad8d24482cb0a81c5c25116991
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.OwnHypothesis:4
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.OwnHypothesis:4
+msgid "the created hypothesis"
+msgstr ""
+
+# fb365e2dcbee439ca8510b8675657c89
+# a4374ebedf6c4967955173726bb9776f
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.StartEndLength:2
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.StartEndLength:2
+msgid "Defines \"StartEndLength\" hypothesis, specifying distribution of segments"
+msgstr ""
+
+# 199b0d5a9688402f8256b447e3eb5322
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.StartEndLength:2
+msgid ""
+"to build between the inner and the outer shells as geometric length "
+"increasing"
+msgstr ""
+
+# d26e8cfbb9c4408b962a1606f4c74299
+# fba557a6a35d47f085916f45207cb5d3
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.StartEndLength:4
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.StartEndLength:4
+msgid "for the length of the first segment"
+msgstr ""
+
+# 8722f12d6cdd41439ceb61155607c53a
+#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.StartEndLength:6
+msgid "end:   for the length of the last  segment"
+msgstr ""
+
+# 8fbda3fbec7a4362bee0060655bfacec
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D:1
+msgid ""
+"Defines a projection 1D algorithm It is created by calling "
+"smeshBuilder.Mesh.Projection1D(geom=0)"
+msgstr ""
+
+# ed249ba2591e4138b9553b4b5225ee91
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.SourceEdge:3
+msgid "Defines \"Source Edge\" hypothesis, specifying a meshed edge, from where"
+msgstr ""
+
+# 6ea9b8697a3943019ee2e0deb95818ae
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.SourceEdge:2
+msgid ""
+"a mesh pattern is taken, and, optionally, the association of vertices "
+"between the source edge and a target edge (to which a hypothesis is "
+"assigned)"
+msgstr ""
+
+# 9cdfb4c7c52d4013ab435bfda66b388b
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.SourceEdge:5
+msgid "from which nodes distribution is taken"
+msgstr ""
+
+# 31f75e47791d4fb6b3c668023c55545e
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.SourceEdge:6
+msgid "from which nodes distribution is taken (optional)"
+msgstr ""
+
+# 646c7992b13840d286d24cec8d3b851a
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.SourceEdge:7
+msgid "a vertex of *edge* to associate with *tgtV* (optional)"
+msgstr ""
+
+# 3ecd4e462e8d4271b5623fd18f666943
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.SourceEdge:8
+msgid ""
+"a vertex of *the edge* to which the algorithm is assigned, to associate "
+"with *srcV* (optional)"
+msgstr ""
+
+# 928bf523e3644512bdfa71e89f222435
+#: StdMeshersBuilder.StdMeshersBuilder_Projection1D2D:1
+msgid ""
+"Defines a projection 1D-2D algorithm It is created by calling "
+"smeshBuilder.Mesh.Projection1D2D(geom=0)"
+msgstr ""
+
+# 6a497e950af74ec997a01f9fb19f5dab
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D:1
+msgid ""
+"Defines a projection 2D algorithm It is created by calling "
+"smeshBuilder.Mesh.Projection2D(geom=0)"
+msgstr ""
+
+# 1f3bad678e6e4851923e59b5d2e7f98f
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:3
+msgid "Defines \"Source Face\" hypothesis, specifying a meshed face, from where"
+msgstr ""
+
+# cbed61d7d7e64acfbfde147e55e5cd65
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:2
+msgid ""
+"a mesh pattern is taken, and, optionally, the association of vertices "
+"between the source face and the target face (to which a hypothesis is "
+"assigned)"
+msgstr ""
+
+# 9fc4e83c61cf4616acc6a62919173fb8
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:5
+msgid "from which the mesh pattern is taken"
+msgstr ""
+
+# b3a8fafaacfa4fc588dd592a513f43d4
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:6
+msgid "from which the mesh pattern is taken (optional)"
+msgstr ""
+
+# 56436fd874694c69b2a376c776f92d2c
+# b51dfc6d85904d368192663886201890
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:7
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:9
+msgid "a vertex of *face* to associate with *tgtV1* (optional)"
+msgstr ""
+
+# aebe5b25727143ca97e4154801574c9f
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:8
+msgid ""
+"a vertex of *the face* to which the algorithm is assigned, to associate "
+"with *srcV1* (optional)"
+msgstr ""
+
+# f45c152fdf3e41dba5e0b48b319f548d
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:10
+msgid ""
+"a vertex of *the face* to which the algorithm is assigned, to associate "
+"with *srcV2* (optional)"
+msgstr ""
+
+# b35291648af14fe6a7969f5d08247201
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:11
+msgid ""
+"if ==true - forces the search for the existing hypothesis created with he"
+" same parameters, else (default) - forces the creation a new one"
+msgstr ""
+
+# 0eef2c30ecfd4abea0fe8e79115ad974
+#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:14
+msgid "all association vertices must belong to one edge of a face"
+msgstr ""
+
+# 4b8e499e377546ddb38706142bc0abe8
+#: StdMeshersBuilder.StdMeshersBuilder_Projection3D:1
+msgid ""
+"Defines a projection 3D algorithm It is created by calling "
+"smeshBuilder.Mesh.Projection3D(geom=0)"
+msgstr ""
+
+# b3aa612b349e46b4a2ef112db3534708
+#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:3
+msgid ""
+"Defines the \"Source Shape 3D\" hypothesis, specifying a meshed solid, "
+"from where"
+msgstr ""
+
+# a91c77fc64bd470daaebbcc144b5ff9f
+#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:2
+msgid ""
+"the mesh pattern is taken, and, optionally, the  association of vertices "
+"between the source and the target solid  (to which a hipothesis is "
+"assigned)"
+msgstr ""
+
+# b149d21ec3db4cab9301eb78c5f7f558
+#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:5
+msgid "from where the mesh pattern is taken"
+msgstr ""
+
+# 59b893e4a3044b2ebae9630b8a6064bb
+#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:6
+msgid "from where the mesh pattern is taken (optional)"
+msgstr ""
+
+# d3bee3e64a29496ea1475439362a59fd
+# 187249c6995c41a6b47306030fa9692f
+#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:7
+#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:9
+msgid "a vertex of *solid* to associate with *tgtV1* (optional)"
+msgstr ""
+
+# 64e9350553f14bd988eba175791144c6
+#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:8
+msgid ""
+"a vertex of *the solid* where the algorithm is assigned, to associate "
+"with *srcV1* (optional)"
+msgstr ""
+
+# d214d3eab1c34164b85851eb27d01dee
+#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:10
+msgid ""
+"a vertex of *the solid* to which the algorithm is assigned,to associate "
+"with *srcV2* (optional)"
+msgstr ""
+
+# 4827589880604b1c8c041b40a8c65078
+#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:14
+msgid "association vertices must belong to one edge of a solid"
+msgstr ""
+
+# 8a1326c1fc114cb7a95de009b080a028
+#: StdMeshersBuilder.StdMeshersBuilder_QuadMA_1D2D:1
+msgid ""
+"Defines a Quadrangle (Medial Axis Projection) 1D-2D algorithm It is "
+"created by calling "
+"smeshBuilder.Mesh.Quadrangle(smeshBuilder.QUAD_MA_PROJ,geom=0)"
+msgstr ""
+
+# 0848dd488fd1434fbb0664f5efafbf60
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle:1
+msgid ""
+"Defines a quadrangle 2D algorithm It is created by calling "
+"smeshBuilder.Mesh.Quadrangle(geom=0)"
+msgstr ""
+
+# fc6106bb30694dc881b2ea4d409344a0
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:18
+msgid "Defines \"QuadrangleParameters\" hypothesis"
+msgstr ""
+
+# 973af7bbf1c64f72ab40cbfa05b6735e
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:2
+msgid ""
+"quadType defines the algorithm of transition between differently "
+"descretized sides of a geometrical face:"
+msgstr ""
+
+# 95b3e7b0acf54bd48af535714cafd880
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:5
+msgid ""
+"QUAD_STANDARD - both triangles and quadrangles are possible in the "
+"transition"
+msgstr ""
+
+# f667dc2ae0a84e3d9df89aa392109990
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:6
+msgid "area along the finer meshed sides."
+msgstr ""
+
+# 145316c2a44a4455961c9969c02e429f
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:7
+msgid ""
+"QUAD_TRIANGLE_PREF - only triangles are built in the transition area "
+"along the"
+msgstr ""
+
+# 12f8d92615b54e55acf984f8878f4bf2
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:8
+msgid "finer meshed sides."
+msgstr ""
+
+# b2a158f284a0436090693da4a11b6ae3
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:10
+msgid ""
+"QUAD_QUADRANGLE_PREF - only quadrangles are built in the transition area "
+"along"
+msgstr ""
+
+# b3518f1b7a7748a2bd39a84aee6ad43d
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:10
+msgid ""
+"the finer meshed sides, iff the total quantity of segments on all four "
+"sides of the face is even (divisible by 2)."
+msgstr ""
+
+# d802c2cecaff4abc889f3909cfce8a13
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:12
+msgid ""
+"QUAD_QUADRANGLE_PREF_REVERSED - same as QUAD_QUADRANGLE_PREF but the "
+"transition"
+msgstr ""
+
+# ef1e1adb12d74b288e2690363cbaac34
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:13
+msgid "area is located along the coarser meshed sides."
+msgstr ""
+
+# 06fd1634905f46fa9136e4309080c1de
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:18
+msgid ""
+"QUAD_REDUCED - only quadrangles are built and the transition between the "
+"sides"
+msgstr ""
+
+# 498e8ac813de4fb08372ece12bdf1e79
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:15
+msgid ""
+"is made gradually, layer by layer. This type has a limitation on the "
+"number of segments: one pair of opposite sides must have the same number "
+"of segments, the other pair must have an even difference between the "
+"numbers of segments on the sides."
+msgstr ""
+
+# 9a237a78a95a45dba303c8be2266d4fb
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:20
+msgid ""
+"vertex of a trilateral geometrical face, around which triangles will be "
+"created while other elements will be quadrangles. Vertex can be either a "
+"GEOM_Object or a vertex ID within the shape to mesh"
+msgstr ""
+
+# 7a32e34ae7714c8bb3112103653b6a88
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:24
+msgid ""
+"list of shapes defining positions where nodes (enforced nodes) must be "
+"created by the mesher. Shapes can be of any type, vertices of given "
+"shapes define positions of enforced nodes. Only vertices successfully "
+"projected to the face are used."
+msgstr ""
+
+# a23fe1e20c3f4e4abd13b8961ebd987b
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:28
+msgid ""
+"list of points giving positions of enforced nodes. Point can be defined "
+"either as SMESH.PointStruct's ([SMESH.PointStruct(x1,y1,z1), "
+"SMESH.PointStruct(x2,y2,z2),...]) or triples of values ([[x1,y1,z1], "
+"[x2,y2,z2], ...]). In the case if the defined QuadrangleParameters() "
+"refer to a sole face, all given points must lie on this face, else the "
+"mesher fails."
+msgstr ""
+
+# f5bb3e0440e0450ebd40a8f033e04712
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:34
+msgid ""
+"if *True* - searches for the existing hypothesis created with the same "
+"parameters, else (default) - creates a new one"
+msgstr ""
+
+# 147ffb0b66184ee8accdf622d2b1db7b
+# fd7155dad5ea49fab74874f748d416b5
+# 2d64aadeb06e4b91bac4d8b0dad91e47
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadranglePreference:3
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.Reduced:5
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TrianglePreference:2
+msgid ""
+"Defines \"QuadrangleParams\" hypothesis with a type of quadrangulation "
+"that only"
+msgstr ""
+
+# f20a22af0b544a3395707d2ad0d1fafa
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadranglePreference:2
+msgid ""
+"quadrangles are built in the transition area along the finer meshed "
+"sides, if the total quantity of segments on all four sides of the face is"
+" even."
+msgstr ""
+
+# 735743340e2e4df99f3f7184c35dc4ba
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadranglePreference:5
+msgid "if True, transition area is located along the coarser meshed sides."
+msgstr ""
+
+# f3b1feba43a34214904f4c791c4f3add
+# db969b8a9ea141c38f31dd3f8fb33114
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadranglePreference:7
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TriangleVertex:8
+msgid "UseExisting: if ==true - searches for the existing hypothesis created with"
+msgstr ""
+
+# c79ad9d0018b4bd1996d49a2ca8922e2
+# bfdad63e73d24b2abe85ea3e16518951
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadranglePreference:8
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TriangleVertex:9
+msgid "the same parameters, else (default) - creates a new one"
+msgstr ""
+
+# 0a56f79b791345cda705921e6151629a
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.Reduced:2
+msgid ""
+"quadrangles are built and the transition between the sides is made "
+"gradually, layer by layer. This type has a limitation on the number of "
+"segments: one pair of opposite sides must have the same number of "
+"segments, the other pair must have an even difference between the numbers"
+" of segments on the sides."
+msgstr ""
+
+# 5390a906611c40049091b7f5eee5e51c
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TrianglePreference:2
+msgid "triangles are built in the transition area along the finer meshed sides."
+msgstr ""
+
+# ca8073e348894d6487fefbc93f8c5f24
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TriangleVertex:1
+msgid ""
+"Defines \"QuadrangleParams\" hypothesis with QUAD_STANDARD type of "
+"quadrangulation"
+msgstr ""
+
+# 3fe1b7fd806243ee88841484c2ed53f2
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TriangleVertex:3
+msgid ""
+"vertex of a trilateral geometrical face, around which triangles    will "
+"be created while other elements will be quadrangles.    Vertex can be "
+"either a GEOM_Object or a vertex ID within the    shape to mesh "
+"UseExisting: if ==true - searches for the existing hypothesis created "
+"with    the same parameters, else (default) - creates a new one"
+msgstr ""
+
+# e85cfc2f2b4847adb110ba6df4a46670
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TriangleVertex:6
+msgid "vertex of a trilateral geometrical face, around which triangles"
+msgstr ""
+
+# c36e8e15e39e46d8a222956faf4c6a75
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TriangleVertex:5
+msgid ""
+"will be created while other elements will be quadrangles. Vertex can be "
+"either a GEOM_Object or a vertex ID within the shape to mesh"
+msgstr ""
+
+# 650e50089e8d4043bba03174ac0b41d4
+#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.params:1
+msgid "hypothesis associated with algorithm"
+msgstr ""
+
+# 8bd3109ee4374afe846f966d31d8c3bc
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm:1
+msgid "Base class for algorithms supporting radial distribution hypotheses"
+msgstr ""
+
+# f2fdaec0c8e74c1da7a2e1e9e1498c11
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.Arithmetic1D:2
+msgid "with a length that changes in arithmetic progression"
+msgstr ""
+
+# 63482f5bfb534d38b466032de9566a3a
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.GeometricProgression:2
+msgid "with a length that changes in Geometric progression"
+msgstr ""
+
+# db1df12d4d3a4a61b265e9cf7f06aeed
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.Get2DHypothesis:1
+msgid "2D hypothesis holding the 1D one"
+msgstr ""
+
+# 3af1b93a4e6549ecafd97b0dfd5e561c
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.NumberOfLayers:1
+msgid "Defines \"NumberOfLayers\" hypothesis, specifying the number of layers"
+msgstr ""
+
+# a962228395d24300830ff0a5b69bc794
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.NumberOfSegments:1
+msgid "Defines \"NumberOfSegments\" hypothesis, specifying the number of layers"
+msgstr ""
+
+# 499206fe78264ea3b7a8d8a4f6d924a2
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.StartEndLength:2
+msgid "as geometric length increasing"
+msgstr ""
+
+# 343b5b95079343a39c8f505d3b1c9d6a
+#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.StartEndLength:5
+msgid "for the length of the last  segment"
+msgstr ""
+
+# 12cac955d7ca4b90a4cc42020e4e280e
+#: StdMeshersBuilder.StdMeshersBuilder_RadialPrism3D:1
+msgid ""
+"Defines Radial Prism 3D algorithm It is created by calling "
+"smeshBuilder.Mesh.Prism(geom=0)"
+msgstr ""
+
+# f6a8b9b5f568422bb15ec887dc1846e5
+#: StdMeshersBuilder.StdMeshersBuilder_RadialQuadrangle1D2D:1
+msgid ""
+"Defines a Radial Quadrangle 1D-2D algorithm It is created by calling "
+"smeshBuilder.Mesh.Quadrangle(smeshBuilder.RADIAL_QUAD,geom=0)"
+msgstr ""
+
+# 99d0e13bef93450aa7a8299d0965eaaf
+#: StdMeshersBuilder.StdMeshersBuilder_Segment:1
+msgid "Defines segment 1D algorithm for edges discretization."
+msgstr ""
+
+# 970ee9227fef41c7824025ff7680979a
+#: StdMeshersBuilder.StdMeshersBuilder_Segment:3
+msgid "It can be created by calling smeshBuilder.Mesh.Segment(geom=0)"
+msgstr ""
+
+# 609776fee061450ebfe16070dff05dba
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Adaptive:1
+msgid ""
+"Defines \"Adaptive\" hypothesis to cut an edge into segments keeping "
+"segment size within the given range and considering (1) deflection of "
+"segments from the edge and (2) distance from segments to closest edges "
+"and faces to have segment length not longer than two times shortest "
+"distances to edges and faces."
+msgstr ""
+
+# f53a1f34e419466cadb0fd4480be9946
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Adaptive:6
+msgid "defines the minimal allowed segment length"
+msgstr ""
+
+# 0fdb63f57f7f473a99d3f3b35fd576bf
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Adaptive:7
+msgid "defines the maximal allowed segment length"
+msgstr ""
+
+# 36aa33bffd27452e9bac24dd74713296
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Adaptive:8
+msgid "defines the maximal allowed distance from a segment to an edge"
+msgstr ""
+
+# 3a3ae88793894745a0b973e0516ce9dc
+# 87841599c67545c1bb2e19a93dfce20f
+# f0fb67290dfe4b7f8123e1a47baa859d
+# 4f2623e5c2d84ae6b25fa841ee64f675
+# e14bef6d6643447ab39a8658ced663f8
+# f06ff12259f946d5966e7d06485e904a
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Adaptive:9
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D:8
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D:11
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression:8
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.MaxSize:5
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.StartEndLength:7
+msgid ""
+"if ==true - searches for an existing hypothesis created with the same "
+"parameters, else (default) - creates a new one"
+msgstr ""
+
+# 0fc4ee81c2f844b498b123a783269719
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Adaptive:12
+msgid "an instance of StdMeshers_Adaptive1D hypothesis"
+msgstr ""
+
+# 94afc121014a468c9155d45c9b29736b
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D:2
+msgid ""
+"Defines \"Arithmetic1D\" hypothesis to cut an edge in several segments "
+"with a length"
+msgstr ""
+
+# c3e023bebc98411bacc7549ffa477e8c
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D:2
+msgid "that changes in arithmetic progression"
+msgstr ""
+
+# 4b3d82b06cd04438985dc9efbe8df04f
+# a276ed1cbaa7430c91f33b0d31f9f24c
+# 3050f0f5302d4acf9e0bc79d096e3f81
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D:4
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression:4
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.StartEndLength:3
+msgid "defines the length of the first segment"
+msgstr ""
+
+# 08814a9c67a44b43834fc131fb0f5489
+# 7f7a73ed5c964953b6770da2846877aa
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D:5
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.StartEndLength:4
+msgid "defines the length of the last  segment"
+msgstr ""
+
+# c3ab24f25a3e4cf5bfc68a222ffe885f
+# 2f962cbece3e4d6781f43716efebd0e3
+# a1b1b46e36534cb6b82b2e5123b874a0
+# 1b4d3125a718498d8ea0b21888887cf5
+# 89520ab22ca246f0906906e32cf18e90
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D:6
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D:9
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression:6
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.NumberOfSegments:5
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.StartEndLength:5
+msgid ""
+"is a list of edges to mesh using reversed orientation. A list item can "
+"also be a tuple (edge, 1st_vertex_of_edge)"
+msgstr ""
+
+# 3690bfa5dce74043addff7bb1c041a70
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D:11
+msgid "an instance of StdMeshers_Arithmetic1D hypothesis"
+msgstr ""
+
+# 7d260e53cb9f40d18bd1d8368cdbecb0
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.AutomaticLength:1
+msgid "Defines \"AutomaticLength\" hypothesis"
+msgstr ""
+
+# 201934b5f38146979568a5885c51b4f7
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.AutomaticLength:3
+msgid "for the fineness [0-1]"
+msgstr ""
+
+# 97e8effc2b624d4a94905a190f1bd67e
+# 5ed9f5774ecc4a45812ef67e447c41fa
+# 5993b765453348a4aa21453352a2012b
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.AutomaticLength:4
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Deflection1D:4
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.NumberOfSegments:7
+msgid ""
+"if ==true - searches for an existing hypothesis created with the same "
+"parameters, else (default) - create a new one"
+msgstr ""
+
+# e3a3c7b43a5a4ddeb4483a9663b2df12
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Deflection1D:1
+msgid "Defines \"Deflection1D\" hypothesis"
+msgstr ""
+
+# 72bf1a0354654fbfb5ccef5bbb3c72a8
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Deflection1D:3
+msgid "for the deflection"
+msgstr ""
+
+# dfe341c50e3e445e86f4b41ed65e1800
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D:5
+msgid "Defines \"FixedPoints1D\" hypothesis to cut an edge using parameter"
+msgstr ""
+
+# 34fa6464289844a6b746b277e2ba9c73
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D:2
+msgid ""
+"on curve from 0 to 1 (additionally it is neecessary to check orientation "
+"of edges and create list of reversed edges if it is needed) and sets "
+"numbers of segments between given points (default values are 1)"
+msgstr ""
+
+# 5848451129f64329829c09777a8868bf
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D:7
+msgid "defines the list of parameters on curve"
+msgstr ""
+
+# 2dbf581ce8c3498e8663e2fc4ea49369
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D:8
+msgid "defines the list of numbers of segments"
+msgstr ""
+
+# 2cdc44aa178a4833a16fb23623bfe9dc
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D:14
+msgid "an instance of StdMeshers_FixedPoints1D hypothesis"
+msgstr ""
+
+# 5b4e22e058204f9cadea131d53f42c03
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression:2
+msgid "Defines \"GeometricProgression\" hypothesis to cut an edge in several"
+msgstr ""
+
+# 42e4996269b04e7f8742cd6cb181a985
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression:2
+msgid "segments with a length that changes in Geometric progression"
+msgstr ""
+
+# fc6fa2f8b58844708c91590c5c1b95ea
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression:5
+msgid "defines the common ratio of the geometric progression"
+msgstr ""
+
+# 7c1ad7b2e1714292aef7988654b40bf3
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression:11
+msgid "an instance of StdMeshers_Geometric1D hypothesis"
+msgstr ""
+
+# c29969643d26492ea8ed995b736e473d
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.LengthNearVertex:1
+msgid "Defines \"SegmentLengthAroundVertex\" hypothesis"
+msgstr ""
+
+# 420996982ca64cbeb0ca8cd3e72ad0dc
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.LengthNearVertex:3
+msgid "for the segment length"
+msgstr ""
+
+# 89bfcfc225ad436dba9b389c1ed6be4e
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.LengthNearVertex:4
+msgid ""
+"for the length localization: the vertex index [0,1] | vertex object. Any "
+"other integer value means that the hypothesis will be set on the whole 1D"
+" shape, where Mesh_Segment algorithm is assigned."
+msgstr ""
+
+# c6bb5482ab4045f8b05a83d5d9d8f2b2
+# 911fea1f0c7b48b69b1e6c55fb7bac6a
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.LengthNearVertex:7
+#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.MaxElementArea:4
+msgid ""
+"if ==true - searches for an  existing hypothesis created with the same "
+"parameters, else (default) - creates a new one"
+msgstr ""
+
+# 61a0d38373d643d29b4c1c7a6e3cf7dd
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.LocalLength:1
+msgid ""
+"Defines \"LocalLength\" hypothesis to cut an edge in several segments "
+"with the same length"
+msgstr ""
+
+# cee1d02857ff4081ae5b105b7bc8c932
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.LocalLength:3
+msgid "for the length of segments that cut an edge"
+msgstr ""
+
+# 68d68cc8d3564b02ba0c43c69e3f5784
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.LocalLength:4
+msgid ""
+"if == true - searches for an  existing hypothesis created with the same "
+"parameters, else (default) - creates a new one"
+msgstr ""
+
+# df4ef495103f479fbedd9f336167b7cb
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.LocalLength:6
+msgid ""
+"precision, used for calculation of the number of segments. The precision "
+"should be a positive, meaningful value within the range [0,1]. In "
+"general, the number of segments is calculated with the formula: nb = "
+"ceil((edge_length / l) - p) Function ceil rounds its argument to the "
+"higher integer. So, p=0 means rounding of (edge_length / l) to the higher"
+" integer, p=0.5 means rounding of (edge_length / l) to the nearest "
+"integer, p=1 means rounding of (edge_length / l) to the lower integer. "
+"Default value is 1e-07."
+msgstr ""
+
+# ef6c282c98d24218b24a3f3f7160863d
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.LocalLength:16
+msgid "an instance of StdMeshers_LocalLength hypothesis"
+msgstr ""
+
+# 229636a1df2a49e5a13cc84fa4788573
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.MaxSize:1
+msgid ""
+"Defines \"MaxSize\" hypothesis to cut an edge into segments not longer "
+"than given value"
+msgstr ""
+
+# d9c3678ca1954492b796aca8c500dcf9
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.MaxSize:3
+msgid ""
+"is optional maximal allowed length of segment, if it is omitted the "
+"preestimated length is used that depends on geometry size"
+msgstr ""
+
+# 686cd7e99504480ebad58c83eb451e54
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.MaxSize:8
+msgid "an instance of StdMeshers_MaxLength hypothesis"
+msgstr ""
+
+# b3504be92e0a48178b8c3c7f730d6abe
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.NumberOfSegments:1
+msgid ""
+"Defines \"NumberOfSegments\" hypothesis to cut an edge in a fixed number "
+"of segments"
+msgstr ""
+
+# 66398640cbef42b68e0b31a4d2df880a
+# f3fc233d3ed54a14bfe9cb70b9d47d1a
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.NumberOfSegments:3
+#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python.PythonSplit1D:3
+msgid "for the number of segments that cut an edge"
+msgstr ""
+
+# 7fdadb1ea4ec4b579b32129b627a4283
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.NumberOfSegments:4
+msgid "for the scale factor (optional)"
+msgstr ""
+
+# 3ba5cb734c314b9ea29aa4b502dcc7d8
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.NumberOfSegments:10
+msgid "an instance of StdMeshers_NumberOfSegments hypothesis"
+msgstr ""
+
+# 55dd594182f84885874e7df59fe0ae1e
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Propagation:3
+msgid "Defines \"Propagation\" hypothesis that propagates 1D hypotheses"
+msgstr ""
+
+# 03b256b99db64e04b8124e831752ff4b
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.Propagation:2
+msgid ""
+"from an edge where this hypothesis is assigned to on all other edges that"
+" are at the opposite side in case of quadrangular faces This hypothesis "
+"should be assigned to an edge to propagate a hypothesis from."
+msgstr ""
+
+# 15a171464d3a402fa876e1290b31a500
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.PropagationOfDistribution:3
+msgid "Defines \"Propagation of Node Distribution\" hypothesis that propagates"
+msgstr ""
+
+# 75668c86fff64871a69a5f84bd0a9827
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.PropagationOfDistribution:2
+msgid ""
+"distribution of nodes from an edge where this hypothesis is assigned to, "
+"to opposite edges of quadrangular faces, so that number of segments on "
+"all these edges will be the same, as well as relations between segment "
+"lengths."
+msgstr ""
+
+# 3a2d3e5b5a9448f9a2ae1a596e412005
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.QuadraticMesh:1
+msgid ""
+"Defines \"QuadraticMesh\" hypothesis, forcing construction of quadratic "
+"edges. If the 2D mesher sees that all boundary edges are quadratic, it "
+"generates quadratic faces, else it generates linear faces using medium "
+"nodes as if they are vertices. The 3D mesher generates quadratic volumes "
+"only if all boundary faces are quadratic, else it fails."
+msgstr ""
+
+# 2cb9226802bd4df887bc1a0d087cc914
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.StartEndLength:1
+msgid ""
+"Defines \"StartEndLength\" hypothesis to cut an edge in several segments "
+"with increasing geometric length"
+msgstr ""
+
+# be274772b8454a658d31e07baf544de9
+#: StdMeshersBuilder.StdMeshersBuilder_Segment.StartEndLength:10
+msgid "an instance of StdMeshers_StartEndLength hypothesis"
+msgstr ""
+
+# 76012d3d2ff9448bb42fd5b4d8c313a5
+#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python:3
+msgid ""
+"Defines a segment 1D algorithm for discretization of edges with Python "
+"function"
+msgstr ""
+
+# b4b0cc44082d4aa69fd763e834e25baa
+#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python:2
+msgid ""
+"It is created by calling "
+"smeshBuilder.Mesh.Segment(smeshBuilder.PYTHON,geom=0)"
+msgstr ""
+
+# 78d1d00125904ec19e9e48c275a798c4
+#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python.PythonSplit1D:1
+msgid "Defines \"PythonSplit1D\" hypothesis"
+msgstr ""
+
+# c7c88639db24496786080452e0d0307f
+#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python.PythonSplit1D:4
+msgid "for the python function that calculates the length of all segments"
+msgstr ""
+
+# d547c98271ce4546853aef52f20e3c2e
+#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO:1
+msgid ""
+"Triangle MEFISTO 2D algorithm It is created by calling "
+"smeshBuilder.Mesh.Triangle(smeshBuilder.MEFISTO,geom=0)"
+msgstr ""
+
+# e09f098933e640e594676b483b1f314a
+#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.LengthFromEdges:1
+msgid "Defines \"LengthFromEdges\" hypothesis to build triangles"
+msgstr ""
+
+# 8cab223170024a7f9a113d5beb719693
+#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.LengthFromEdges:2
+msgid "based on the length of the edges taken from the wire"
+msgstr ""
+
+# a4f164e3e41146f5aa8c93217aa0266a
+#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.MaxElementArea:1
+msgid ""
+"Defines \"MaxElementArea\" hypothesis basing on the definition of the "
+"maximum area of each triangle"
+msgstr ""
+
+# 935dbd26fbb14373bb55ceef0689372e
+#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.MaxElementArea:3
+msgid "for the maximum area of each triangle"
+msgstr ""
+
+# 9c32c3ef9a1149a494f005bca9b856a3
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D:1
+msgid "Defines a Use Existing Elements 1D algorithm"
+msgstr ""
+
+# d9c2f9be5b784a94ad003a5c7b628c12
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D:3
+msgid "It is created by calling smeshBuilder.Mesh.UseExisting1DElements(geom=0)"
+msgstr ""
+
+# f628365f70954e14a77619f2991faadf
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.SourceEdges:1
+msgid "Defines \"Source edges\" hypothesis, specifying groups of edges to import"
+msgstr ""
+
+# 4f51b380628747fd88b09fcd6cf3f709
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.SourceEdges:3
+msgid "list of groups of edges"
+msgstr ""
+
+# cbcbc778a830426ab731e10e24a499b0
+# ec351565be5e46d38b8104a90bb1d2a3
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.SourceEdges:4
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.SourceFaces:4
+msgid "if True, the whole mesh *groups* belong to is imported"
+msgstr ""
+
+# e373701fd07944a1a2f6695faa5d33d4
+# 4e89d75d8bff4774a21d474780c8b66e
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.SourceEdges:5
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.SourceFaces:5
+msgid "if True, all groups of the mesh *groups* belong to are imported"
+msgstr ""
+
+# f2a4783105a1468c896366e921f82c24
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D:1
+msgid "Defines a Use Existing Elements 1D-2D algorithm"
+msgstr ""
+
+# 02835b5e0db4452f8a6652939b7e8499
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D:3
+msgid "It is created by calling smeshBuilder.Mesh.UseExisting2DElements(geom=0)"
+msgstr ""
+
+# 68e8e033208f41f19ada5fbe63eaea6f
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.SourceFaces:1
+msgid "Defines \"Source faces\" hypothesis, specifying groups of faces to import"
+msgstr ""
+
+# 6bdd3e9edf8a4a85a62df90980081ff7
+# 1a49fe0005324b5cb01e5d10dc5a7dbc
+#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.SourceFaces:3
+#: smeshBuilder.Mesh.CreateFlatElementsOnFacesGroups:7
+msgid "list of groups of faces"
+msgstr ""
+
+# 27f09c2f23e44582b957b084e60a8440
+#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D:2
+msgid ""
+"Defines a stub 1D algorithm, which enables \"manual\" creation of nodes "
+"and"
+msgstr ""
+
+# 61bc9e0d4ad74bc8af3b1b84205bda80
+#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D:2
+msgid "segments usable by 2D algorithms"
+msgstr ""
+
+# 5385e1e5545d401f99640d5fae587267
+#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D:4
+msgid "It is created by calling smeshBuilder.Mesh.UseExistingSegments(geom=0)"
+msgstr ""
+
+# 7725a7ff60204f82b1b51f56af093f7a
+#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_2D:1
+msgid ""
+"Defines a stub 2D algorithm, which enables \"manual\" creation of nodes "
+"and faces usable by 3D algorithms"
+msgstr ""
+
+# ab7091440d8542789135e3a82c21fd8c
+#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_2D:4
+msgid "It is created by calling smeshBuilder.Mesh.UseExistingFaces(geom=0)"
+msgstr ""
+
+# 81eaaacb448e4a04931eaca4de3423d7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/python_api.rst:16
+msgid "smeshBuilder module"
+msgstr ""
+
+# cc2071077fe7431699ced61701f4ad90
+#: smeshBuilder.AssureGeomPublished:1
+msgid ""
+"Private method. Add geom (sub-shape of the main shape) into the study if "
+"not yet there"
+msgstr ""
+
+# 8b642226be2443dcb380e3fdac9ece98
+#: smeshBuilder.DegreesToRadians:1
+msgid "Convert an angle from degrees to radians"
+msgstr ""
+
+# e874800d804942e9b7d50c64ad9af697
+#: smeshBuilder.FirstVertexOnCurve:1
+msgid "the first vertex of a geometrical edge by ignoring orientation"
+msgstr ""
+
+# 7231cf03559d4f64b82ad3042a31bbc7
+#: smeshBuilder.GetName:1
+msgid "object name"
+msgstr ""
+
+# a77bdb1e2d8f4359b37daf00c64ba995
+#: smeshBuilder.IsEqual:1
+msgid "Compare real values using smeshPrecisionConfusion as tolerance"
+msgstr ""
+
+# 663399986db64e6e812e471434476b83
+#: smeshBuilder.Mesh:1
+msgid ""
+"This class allows defining and managing a mesh. It has a set of methods "
+"to build a mesh on the given geometry, including the definition of sub-"
+"meshes. It also has methods to define groups of mesh elements, to modify "
+"a mesh (by addition of new nodes and elements and by changing the "
+"existing entities), to get information about a mesh and to export a mesh "
+"in different formats."
+msgstr ""
+
+# ad856877010c437c9b2ea37b045a077f
+#: smeshBuilder.Mesh.Add0DElement:1
+msgid "Create a 0D element on a node with given number."
+msgstr ""
+
+# 60413216d35244c7bec4973081678057
+# e7605f48221b439997dce94bfd738362
+#: smeshBuilder.Mesh.Add0DElement:3 smeshBuilder.Mesh.AddBall:3
+msgid "the ID of node for creation of the element."
+msgstr ""
+
+# 9395c6efc27b4a98ae6617ee78e448b8
+# 88506b1106ed4e06b3671ca983c14afa
+#: smeshBuilder.Mesh.Add0DElement:4 smeshBuilder.Mesh.Add0DElementsToAllNodes:9
+msgid "to add one more 0D element to a node or not"
+msgstr ""
+
+# d8645964a6034cd5b3ce2f1b1b0a0fff
+#: smeshBuilder.Mesh.Add0DElement:6
+msgid "the Id of the new 0D element"
+msgstr ""
+
+# 62d8c976c8ac48ba9b465510ab3f5e0f
+#: smeshBuilder.Mesh.Add0DElementsToAllNodes:1
+msgid ""
+"Create 0D elements on all nodes of the given elements except those nodes "
+"on which a 0D element already exists."
+msgstr ""
+
+# 6cdb298387ca47bbae25e38c6ff66678
+#: smeshBuilder.Mesh.Add0DElementsToAllNodes:4
+msgid ""
+"an object on whose nodes 0D elements will be created. It can be mesh, "
+"sub-mesh, group, list of element IDs or a holder of nodes IDs created by "
+"calling mesh.GetIDSource( nodes, SMESH.NODE )"
+msgstr ""
+
+# a8550a9c97c24e2c98d79129c263e6cd
+#: smeshBuilder.Mesh.Add0DElementsToAllNodes:7
+msgid ""
+"optional name of a group to add 0D elements created and/or found on nodes"
+" of *theObject*."
+msgstr ""
+
+# 725c19156e4345d8bba58ad5eb821051
+#: smeshBuilder.Mesh.Add0DElementsToAllNodes:11
+msgid ""
+"an object (a new group or a temporary SMESH_IDSource) holding     IDs of "
+"new and/or found 0D elements. IDs of 0D elements     can be retrieved "
+"from the returned object by calling GetIDs()"
+msgstr ""
+
+# 1294a3f90fe0496da7e2340f812693c3
+#: smeshBuilder.Mesh.Add0DElementsToAllNodes:14
+msgid "an object (a new group or a temporary SMESH_IDSource) holding"
+msgstr ""
+
+# d8371b5915714dbf8d5f4303ed3c9578
+#: smeshBuilder.Mesh.Add0DElementsToAllNodes:14
+msgid ""
+"IDs of new and/or found 0D elements. IDs of 0D elements can be retrieved "
+"from the returned object by calling GetIDs()"
+msgstr ""
+
+# 986599817f9b4d428d339e3888b5cf74
+#: smeshBuilder.Mesh.AddBall:1
+msgid "Create a ball element on a node with given ID."
+msgstr ""
+
+# 3a1a898c732b42bebc222f1581b3bc94
+#: smeshBuilder.Mesh.AddBall:4
+msgid "the bal diameter."
+msgstr ""
+
+# a266a51e143949ccbf89b5f8eb98be6f
+#: smeshBuilder.Mesh.AddBall:6
+msgid "the Id of the new ball element"
+msgstr ""
+
+# 0e88eaabfc234f348754af5a2515be72
+#: smeshBuilder.Mesh.AddEdge:2
+msgid "Create a linear or quadratic edge (this is determined"
+msgstr ""
+
+# 987f704a6ffa49d3a38a601b40437b91
+# 2f2d2a074b0a4071a4b17b7282295950
+#: smeshBuilder.Mesh.AddEdge:2 smeshBuilder.Mesh.AddVolume:2
+msgid "by the number of given nodes)."
+msgstr ""
+
+# ec7cba7b8fff4456aba5a1612816383e
+# ee2cec319e194274b091a06cfe633e91
+# 7e308293a4ed4078aa92853af22c32b0
+#: smeshBuilder.Mesh.AddEdge:4 smeshBuilder.Mesh.AddFace:4
+#: smeshBuilder.Mesh.AddVolume:4
+msgid ""
+"the list of node IDs for creation of the element. The order of nodes in "
+"this list should correspond to the description of MED. This description "
+"is located by the following link: http://www.code-"
+"aster.org/outils/med/html/modele_de_donnees.html#3."
+msgstr ""
+
+# 730956ad747c4ded9ca18b2372842859
+#: smeshBuilder.Mesh.AddEdge:10
+msgid "the Id of the new edge"
+msgstr ""
+
+# 049b31edb32e4776a89ea1349562d4c5
+#: smeshBuilder.Mesh.AddFace:1
+msgid ""
+"Create a linear or quadratic face (this is determined by the number of "
+"given nodes)."
+msgstr ""
+
+# 4d2df362600c4708b108fe726b3846ca
+# dca738271b57451d85713a558e1caf8b
+# 246efe2daae84905b1b7815c7fe64b10
+#: smeshBuilder.Mesh.AddFace:10 smeshBuilder.Mesh.AddPolygonalFace:5
+#: smeshBuilder.Mesh.AddQuadPolygonalFace:6
+msgid "the Id of the new face"
+msgstr ""
+
+# 3e5c902b4e2347eb9033954a846cd0e8
+#: smeshBuilder.Mesh.AddHypothesis:1
+msgid "Assign a hypothesis"
+msgstr ""
+
+# 8dc4a5a7de60448f859fd1e297bc811d
+#: smeshBuilder.Mesh.AddHypothesis:3
+msgid "a hypothesis to assign"
+msgstr ""
+
+# 4b629d89a2b44431996f840feb04a33f
+# 8d060d067ee44c12be90935348d9b339
+#: smeshBuilder.Mesh.AddHypothesis:4 smeshBuilder.Mesh.IsUsedHypothesis:4
+msgid "a subhape of mesh geometry"
+msgstr ""
+
+# 05cd8f67373b4ab580fa4b1249682bcc
+# 06b1f6b7863b4240a15936e4a530afa0
+#: smeshBuilder.Mesh.AddHypothesis:6 smeshBuilder.Mesh.RemoveHypothesis:6
+msgid "SMESH.Hypothesis_Status"
+msgstr ""
+
+# 62f74e1e74d34b02a7bab914bf3a9240
+#: smeshBuilder.Mesh.AddNode:1
+msgid "Add a node to the mesh by coordinates"
+msgstr ""
+
+# 733c72c6fa654be7908e3a5c46cab95b
+#: smeshBuilder.Mesh.AddNode:3
+msgid "Id of the new node"
+msgstr ""
+
+# 14cd480b28b0442e9fbe0ab728ed04d8
+#: smeshBuilder.Mesh.AddPolygonalFace:1
+msgid "Add a polygonal face to the mesh by the list of node IDs"
+msgstr ""
+
+# fa8909fa2e9e45b196356a1df3532fd4
+#: smeshBuilder.Mesh.AddPolygonalFace:3
+msgid "the list of node IDs for creation of the element."
+msgstr ""
+
+# 7d51e18ef5ba468ea6f751cba3ba30f9
+#: smeshBuilder.Mesh.AddPolyhedralVolume:1
+msgid "Create a volume of many faces, giving nodes for each face."
+msgstr ""
+
+# 32267ae5120743d78f91be2a0742c046
+#: smeshBuilder.Mesh.AddPolyhedralVolume:3
+msgid "the list of node IDs for volume creation face by face."
+msgstr ""
+
+# 8d2ad0e6ce7243e19fff852ac541a862
+#: smeshBuilder.Mesh.AddPolyhedralVolume:4
+msgid ""
+"the list of integer values, Quantities[i] gives the quantity of nodes in "
+"face number i."
+msgstr ""
+
+# 3065d36ca90f4299b990b9996ef3a2ac
+# bb3de0cd385f4bb5a9efe0d6af783e82
+# f6e92a05ff104a06aad5864b04dc8a00
+#: smeshBuilder.Mesh.AddPolyhedralVolume:7
+#: smeshBuilder.Mesh.AddPolyhedralVolumeByFaces:10
+#: smeshBuilder.Mesh.AddVolume:10
+msgid "the Id of the new volumic element"
+msgstr ""
+
+# f4eda9e76d1e454396f2c8d0645d4d41
+#: smeshBuilder.Mesh.AddPolyhedralVolumeByFaces:1
+msgid "Create a volume of many faces, giving the IDs of the existing faces."
+msgstr ""
+
+# 92326582283f47a98bae3857a6421cbc
+#: smeshBuilder.Mesh.AddPolyhedralVolumeByFaces:3
+msgid "the list of face IDs for volume creation."
+msgstr ""
+
+# e80671be78fc4c1392d6c29b65813355
+#: smeshBuilder.Mesh.AddPolyhedralVolumeByFaces:7
+msgid "The created volume will refer only to the nodes"
+msgstr ""
+
+# 7e3cd453d04c45718687615ae66cde3a
+#: smeshBuilder.Mesh.AddPolyhedralVolumeByFaces:8
+msgid "of the given faces, not to the faces themselves."
+msgstr ""
+
+# afd203f2f3684c238ee4c0c90ed1d411
+#: smeshBuilder.Mesh.AddQuadPolygonalFace:1
+msgid "Add a quadratic polygonal face to the mesh by the list of node IDs"
+msgstr ""
+
+# e13fb095ec554b1b9337259d149494e1
+#: smeshBuilder.Mesh.AddQuadPolygonalFace:3
+msgid ""
+"the list of node IDs for creation of the element; corner nodes follow "
+"first."
+msgstr ""
+
+# a770667503ba4eca81855dcbb5d2b586
+#: smeshBuilder.Mesh.AddVolume:2
+msgid "Create both simple and quadratic volume (this is determined"
+msgstr ""
+
+# 208483686cfa4c9c92866829bb8e3243
+# c62a3da1280445b9b27a158862301835
+#: smeshBuilder.Mesh.AdvancedExtrusion:1 smeshBuilder.Mesh.ExtrusionSweep:1
+msgid "Generate new elements by extrusion of the elements with given ids"
+msgstr ""
+
+# 35bd856f413e4e738d33aa2cb9523681
+#: smeshBuilder.Mesh.AdvancedExtrusion:3
+msgid "is ids of elements"
+msgstr ""
+
+# d2862da4e0ac4aa684f442b2ed61c0cd
+# 28b8bfd1077e4b10ab880af7d84a7dad
+# aa804cd9b4634a14b6057964b4201f22
+# 6f264ffc94fc44a79b9b0826aa119a79
+# e85d7a46e8ad4c11bc9b06a58a3e545c
+# 8bf7d912be8f4afcae5b425245b196b4
+#: smeshBuilder.Mesh.AdvancedExtrusion:4 smeshBuilder.Mesh.ExtrusionSweep:4
+#: smeshBuilder.Mesh.ExtrusionSweepObject:5
+#: smeshBuilder.Mesh.ExtrusionSweepObject1D:5
+#: smeshBuilder.Mesh.ExtrusionSweepObject2D:5
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:6
+msgid ""
+"vector or DirStruct or 3 vector components, defining the direction and "
+"value of extrusion for one step (the total extrusion length will be "
+"NbOfSteps * ||StepVector||)"
+msgstr ""
+
+# f23d7a88a8b945c481cb856136bd2784
+# 0146c97c22f245cbbe1893d939f70934
+# e46074c958094299802aecf36d27a553
+# 194ba16f7c8e474dba09cbdcfeaf5232
+# c8adb6f065a64a379e8c313a91ac4aeb
+# dec766ec1f234d80936249a2ab1d3035
+# 8f779544ff804cc1817497f92ea60c60
+# bb72277356a34d4da384f4faed738066
+#: smeshBuilder.Mesh.AdvancedExtrusion:7 smeshBuilder.Mesh.ExtrusionSweep:7
+#: smeshBuilder.Mesh.ExtrusionSweepObject:8
+#: smeshBuilder.Mesh.ExtrusionSweepObject1D:8
+#: smeshBuilder.Mesh.ExtrusionSweepObject2D:8
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:9 smeshBuilder.Mesh.RotationSweep:6
+#: smeshBuilder.Mesh.RotationSweepObjects:9
+msgid "the number of steps"
+msgstr ""
+
+# 205918ed37d843b9a20096d21f9b3ab7
+#: smeshBuilder.Mesh.AdvancedExtrusion:8
+msgid "sets flags for extrusion"
+msgstr ""
+
+# 2704c41547f84da788c318499518d6df
+#: smeshBuilder.Mesh.AdvancedExtrusion:9
+msgid "uses for comparing locations of nodes if flag EXTRUSION_FLAG_SEW is set"
+msgstr ""
+
+# c04ea863ca7b468a87e8c5dc89275dd3
+# 370e5b3d072a4cdfa182dcce2f1407a7
+# 78017bd134e9483282d1b542b08a3fc6
+# bd1d5fc7478347609e72bdd5ddf30ca7
+# 76cc3ae0a39642be87994eabda0599be
+# c2e7845111fa4263be289504f4493c36
+# 285387af061d497db1d09d819f5194b8
+# 15ec0ee8f9aa4a749c6545520a85c788
+# d6de86de5b3e4422a0b05b591511e04d
+# 2b4a19674e844d16b1abefb74135574e
+# 827eeff6455f4443ac5cb632460bee37
+# 1c6b6fff80d442baa3fad442f79270cf
+# 616870a33e384c1fb0638d2f85df10b2
+# bfe7d69eee0345e9955f4f8f1b245a5d
+# 1b63309c346d42de91d2aba9c7e58b1f
+# a87087c6c8014cfeb833a3a1861cbab3
+# 802799109bb54bc28e73f7c4bffd4ea3
+# becf266811084a739e4e1fe2e57cbca6
+# e094930dfa3a47c3945c52949d8d0643
+# d6aebd9f9b4e47caaef84974dec43b88
+# 37cfc21b3b3d4e599a5806028fac545a
+# 5b0ad9bcbf65477aab4f767d404ca848
+# d4a89dcfbb7f42d599f0633cd2304ab7
+#: smeshBuilder.Mesh.AdvancedExtrusion:11
+#: smeshBuilder.Mesh.ExtrusionAlongPath:14
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:15
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:15
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:15
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:19
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:17 smeshBuilder.Mesh.ExtrusionSweep:8
+#: smeshBuilder.Mesh.ExtrusionSweepObject:9
+#: smeshBuilder.Mesh.ExtrusionSweepObject2D:9
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:10
+#: smeshBuilder.Mesh.MirrorObjectMakeMesh:7 smeshBuilder.Mesh.Offset:5
+#: smeshBuilder.Mesh.RotateMakeMesh:6 smeshBuilder.Mesh.RotateObjectMakeMesh:6
+#: smeshBuilder.Mesh.RotationSweep:8 smeshBuilder.Mesh.RotationSweepObject:9
+#: smeshBuilder.Mesh.RotationSweepObject1D:9
+#: smeshBuilder.Mesh.RotationSweepObject2D:9
+#: smeshBuilder.Mesh.RotationSweepObjects:11 smeshBuilder.Mesh.ScaleMakeMesh:6
+#: smeshBuilder.Mesh.TranslateMakeMesh:5
+#: smeshBuilder.Mesh.TranslateObjectMakeMesh:5
+msgid "forces the generation of new groups from existing ones"
+msgstr ""
+
+# c6f08d5f4d2746e2a696c9e6db55f8e8
+# 558ff7b544d5494fa43f970f3a9195fb
+# 9fc69effeb484d66add307c83c675b92
+# 4bb433b1e84b43dd91abb7fdd98896bb
+# d45fcb2ba8af4e4da0cd98d5845a0a91
+# e578d79a91c24fd4b07d009e69499da6
+# 9f47a2ab0b9a494b96c96e2873185556
+# 3ebc0bf3cf3c4b34832b83990f4aae8c
+# 64bd4d8e7610400eaa23f10d3814710f
+# 3b7a097ca7c74d9c89a77e5ad4b83f82
+#: smeshBuilder.Mesh.AdvancedExtrusion:13
+#: smeshBuilder.Mesh.ExtrusionSweepObject:12
+#: smeshBuilder.Mesh.ExtrusionSweepObject1D:11
+#: smeshBuilder.Mesh.ExtrusionSweepObject2D:11 smeshBuilder.Mesh.Mirror:10
+#: smeshBuilder.Mesh.MirrorObject:10 smeshBuilder.Mesh.Rotate:9
+#: smeshBuilder.Mesh.RotateObject:9 smeshBuilder.Mesh.Translate:8
+#: smeshBuilder.Mesh.TranslateObject:8
+msgid ""
+"list of created groups (SMESH_GroupBase) if MakeGroups=True, empty list "
+"otherwise"
+msgstr ""
+
+# 81e6d6937b1842b5bfa1065acef9ea45
+#: smeshBuilder.Mesh.AffectedElemGroupsInRegion:1
+msgid ""
+"Identify the elements that will be affected by node duplication (actual "
+"duplication is not performed. This method is the first step of "
+"DoubleNodeElemGroupsInRegion."
+msgstr ""
+
+# b2fa45d9e7194cbe88722361e4176810
+#: smeshBuilder.Mesh.AffectedElemGroupsInRegion:4
+msgid "list of groups of nodes or elements (edges or faces) to be replicated"
+msgstr ""
+
+# 23fdc41ddf1e4246beff663a7c5ce0d2
+# 6a6472c194f842c98727495d860a7958
+# 50994ed3605a4a08afc725520aecee85
+#: smeshBuilder.Mesh.AffectedElemGroupsInRegion:5
+#: smeshBuilder.Mesh.DoubleNodeElemGroups:5
+#: smeshBuilder.Mesh.DoubleNodeElemGroupsInRegion:5
+msgid "list of groups of nodes not to replicated"
+msgstr ""
+
+# 6e931eba709143eeb542202273071c28
+# 4b0e9a4278ea40aabceab43c628e3179
+# 6f4c549402ba47d2969c4a28c08a4cd0
+# ca3f0b93034542f8b464ed614d350c0d
+#: smeshBuilder.Mesh.AffectedElemGroupsInRegion:6
+#: smeshBuilder.Mesh.DoubleNodeElemGroupInRegion:6
+#: smeshBuilder.Mesh.DoubleNodeElemGroupsInRegion:6
+#: smeshBuilder.Mesh.DoubleNodeElemInRegion:6
+msgid ""
+"shape to detect affected elements (element which geometric center located"
+" on or inside shape). The replicated nodes should be associated to "
+"affected elements."
+msgstr ""
+
+# 65733cda5abd4cffb7115656079b1d14
+#: smeshBuilder.Mesh.AffectedElemGroupsInRegion:10
+msgid "groups of affected elements in order:: volumes, faces, edges"
+msgstr ""
+
+# 129fd6650cd8407ab0a73f9f3f6fe9a2
+#: smeshBuilder.Mesh.AutomaticHexahedralization:1
+msgid "Compute an hexahedral mesh using AutomaticLength + Quadrangle + Hexahedron"
+msgstr ""
+
+# f1298ac9818d4a1f97299f7aa0bf2900
+# 194f27be622c411082cab20fc7be4325
+# 12935433ee6441b7a69c9a2ceb37c93f
+# 5afd0837c7d448ae9ba3c62c17db4750
+# 6b507e7db209403f88a0cc6715bfdbb0
+# e1393127b658483eb344d6cd77f4211b
+# 56b6015520414f7fac373e5efb6b914c
+# d7105e675dec46458d384c48f893229f
+# a59bec7fe0574c4b89687886a9f7d6b1
+#: smeshBuilder.Mesh.AutomaticHexahedralization:5
+#: smeshBuilder.Mesh.AutomaticTetrahedralization:5 smeshBuilder.Mesh.Compute:9
+#: smeshBuilder.Mesh.GetAutoColor:3
+#: smeshBuilder.Mesh.HasDuplicatedGroupNamesMED:4
+#: smeshBuilder.Mesh.IsReadyToCompute:5 smeshBuilder.Mesh.RemoveElements:5
+#: smeshBuilder.Mesh.RemoveNodes:5 smeshBuilder.submeshProxy.Compute:4
+msgid "True or False"
+msgstr ""
+
+# 26212aecfcc643fb9dc511431753921d
+#: smeshBuilder.Mesh.AutomaticTetrahedralization:1
+msgid "Compute a tetrahedral mesh using AutomaticLength + MEFISTO + Tetrahedron"
+msgstr ""
+
+# 44e5e6a62ba648ed8136c051484bce9d
+#: smeshBuilder.Mesh.AutomaticTetrahedralization:3
+msgid "[0.0,1.0] defines mesh fineness"
+msgstr ""
+
+# bae80c6186134cc9aa30bfdd59e31a1d
+#: smeshBuilder.Mesh.BaryCenter:1
+msgid ""
+"Return XYZ coordinates of the barycenter of the given element If there is"
+" no element for the given ID - return an empty list"
+msgstr ""
+
+# 0bbaf5af89d14deeb47b5499201c2f69
+#: smeshBuilder.Mesh.BaryCenter:4
+msgid "a list of three double values"
+msgstr ""
+
+# 710c39a5976f45859c95931eb4b8e0fc
+#: smeshBuilder.Mesh.BestSplit:1
+msgid "Find a better splitting of the given quadrangle."
+msgstr ""
+
+# 2ffb2485312249b4963f7514252eba53
+#: smeshBuilder.Mesh.BestSplit:3
+msgid "the ID of the quadrangle to be splitted."
+msgstr ""
+
+# 5877680b443b4873b2cb7693a76e6d3d
+#: smeshBuilder.Mesh.BestSplit:4
+msgid ""
+"is a numerical functor, in terms of enum SMESH.FunctorType, used to "
+"choose a diagonal for splitting. Type SMESH.FunctorType._items in the "
+"Python Console to see all items. Note that not all items correspond to "
+"numerical functors."
+msgstr ""
+
+# 2f8f2d5c7e8444f9b253ca53546b0a71
+#: smeshBuilder.Mesh.BestSplit:9
+msgid ""
+"1 if 1-3 diagonal is better, 2 if 2-4     diagonal is better, 0 if error "
+"occurs."
+msgstr ""
+
+# fcacc9b664724d379dc230741a3aa4ca
+#: smeshBuilder.Mesh.BestSplit:11
+msgid "1 if 1-3 diagonal is better, 2 if 2-4"
+msgstr ""
+
+# 016ae8b51ea6484d8b1f463995d5e671
+#: smeshBuilder.Mesh.BestSplit:12
+msgid "diagonal is better, 0 if error occurs."
+msgstr ""
+
+# 4cfdc35358e04b03a6f610a05388e612
+#: smeshBuilder.Mesh.BodyFitted:1
+msgid "Creates Body Fitting 3D algorithm for volumes"
+msgstr ""
+
+# 5dd540f0b37e4a3a947339a0f9920658
+# edb3cb9c6f314d45983a230e671971c8
+# fa8543d4e97740008275f1a5b5ca5872
+# 80459811afc2464da2595e4a8aa3b322
+# f105c80638934ebcb2040d7f55b0e44c
+# 27debb5144924e0aa280b72fab12bbee
+# dd653fcc21104565a4b08d2f0f74f324
+# b5d21aefc36944c0927e692e545bc520
+# 77c5da85385e4e1ca749f784315c2c2c
+# 9df47d73e8db4356a0bb16cad4562032
+# 72ed269405ab44059aa1ee7c6ca2fca0
+# 40857df81e694809b1cffa69005a8da5
+# d6f56ada726d4c71bcbe98db7d9566b4
+# 0fa764e452294a2d83c31e768c024d10
+# 990e65e6aeec468eb2ce8baf7d4959e6
+#: smeshBuilder.Mesh.BodyFitted:3 smeshBuilder.Mesh.Hexahedron:3
+#: smeshBuilder.Mesh.Polygon:3 smeshBuilder.Mesh.Prism:3
+#: smeshBuilder.Mesh.Projection1D:3 smeshBuilder.Mesh.Projection1D2D:3
+#: smeshBuilder.Mesh.Projection2D:3 smeshBuilder.Mesh.Projection3D:3
+#: smeshBuilder.Mesh.Quadrangle:3 smeshBuilder.Mesh.Segment:3
+#: smeshBuilder.Mesh.Triangle:3 smeshBuilder.Mesh.UseExisting1DElements:3
+#: smeshBuilder.Mesh.UseExisting2DElements:3
+#: smeshBuilder.Mesh.UseExistingFaces:3 smeshBuilder.Mesh.UseExistingSegments:3
+msgid ""
+"This method is dynamically added to **Mesh** class by the meshing plug-"
+"in(s)."
+msgstr ""
+
+# c2326df2e38c44f792b1b4cc6173ec9d
+# b79f4d6f219444399fb7e4908e82a075
+# d48adec0cbdc4d04a3cba80df5d6186e
+# 97a323aefc0f46ec84e74ed2083b7588
+# 870d3b6a66144ef388a1aa5636e67bf2
+# a095e3c123a146e6b7f3a16e4eb6028a
+# b86b2ed95f3a40e1894ee32163fc07da
+# d2a650ca64044462ad220c516b40f043
+# b60f5d4904e546279a3e57b14a24acd1
+# 212c61ae591f4427a4337c661e22bbb8
+# 377bcd20c1174714b00014b54e40e236
+# 81ec2db20ce7416bb0f3f8263096964e
+# d883fe92afc54ce18106481085743645
+# fd6e90827c4f448fb0cd5b37b42cfa5d
+# 2100dfb147af491ea03c94eef666a4de
+#: smeshBuilder.Mesh.BodyFitted:5 smeshBuilder.Mesh.Hexahedron:5
+#: smeshBuilder.Mesh.Polygon:5 smeshBuilder.Mesh.Prism:5
+#: smeshBuilder.Mesh.Projection1D:5 smeshBuilder.Mesh.Projection1D2D:5
+#: smeshBuilder.Mesh.Projection2D:5 smeshBuilder.Mesh.Projection3D:5
+#: smeshBuilder.Mesh.Quadrangle:5 smeshBuilder.Mesh.Segment:5
+#: smeshBuilder.Mesh.Triangle:5 smeshBuilder.Mesh.UseExisting1DElements:5
+#: smeshBuilder.Mesh.UseExisting2DElements:5
+#: smeshBuilder.Mesh.UseExistingFaces:5 smeshBuilder.Mesh.UseExistingSegments:5
+msgid ""
+"If the optional *geom_shape* parameter is not set, this algorithm is "
+"global (applied to whole mesh). Otherwise, this algorithm defines a "
+"submesh based on *geom_shape* subshape."
+msgstr ""
+
+# 1c903af0d39e4e3dad0c89b24be600cf
+# 58396f2c5d0941808502ecef3fdfa39d
+# 89e592e157b4477caeb92232948f1ee1
+# 9d480752853848a0975cf50d917af9dd
+# 8952f9f790ed416e8073f2f784a910cc
+# 810dd5c8d89945398a14d2ce6071d84e
+# d75c3f72149e413486fdf000aa540ef4
+# 3e32bc095e654494ae946e404ffffaea
+# d192056b6a0f4dcead5f276380a204e0
+# 8466e4cb15d74dcd93ddc525071f2a39
+# 9f1105dcab2f4061acedf712134948ff
+# cbcbe6bfa6e441779d81d0c2b53e43cb
+# 82121354f04041dd84e87a8a5c8e75b6
+# 4a697e38b4bb4b95bc5d634c3bbc9210
+# 61780de35bdc4e849766a8665c0cec94
+#: smeshBuilder.Mesh.BodyFitted:8 smeshBuilder.Mesh.Hexahedron:8
+#: smeshBuilder.Mesh.Polygon:8 smeshBuilder.Mesh.Prism:8
+#: smeshBuilder.Mesh.Projection1D:8 smeshBuilder.Mesh.Projection1D2D:8
+#: smeshBuilder.Mesh.Projection2D:8 smeshBuilder.Mesh.Projection3D:8
+#: smeshBuilder.Mesh.Quadrangle:8 smeshBuilder.Mesh.Segment:8
+#: smeshBuilder.Mesh.Triangle:8 smeshBuilder.Mesh.UseExisting1DElements:8
+#: smeshBuilder.Mesh.UseExisting2DElements:8
+#: smeshBuilder.Mesh.UseExistingFaces:8 smeshBuilder.Mesh.UseExistingSegments:8
+msgid ""
+"type of algorithm to be created; allowed values are specified by classes "
+"implemented by plug-in (see below)"
+msgstr ""
+
+# 9cc61e07d7164d87b5d894d54a0cc782
+# 225e3dd1a4d34ff9804a8a8690ac8a52
+# fe2617948f4f44009d81e6dc6b823bf0
+# ca0e6f92e7cf4b2492f6f57ab2f8a8be
+# 1caa4eba59c04f328b6a91b3c6c2903c
+# d1cbbd0bc3a1477bb218e1c4dc23b787
+# c803ec4f57e64383bd32983ece1efdf0
+# 61b0a1d62b824d0bbf916119b23fc905
+# 8deb105c48cd47b580901ee4b25d6e98
+# ce90bc283fdb4c2daf034909b0e4f064
+# 9bbac7c78bed4cdcbcb98cefa0afcba1
+# 0ac28ae1e5f1492ebf0bc8dd7ad5fdd7
+# 50e5196960fc43088d3ab29772ca161c
+# 765bfab6521d4d7eb0e4e3be1c42fa61
+# e1af8429e2e545e28eec21489d532e5c
+#: smeshBuilder.Mesh.BodyFitted:9 smeshBuilder.Mesh.Hexahedron:9
+#: smeshBuilder.Mesh.Polygon:9 smeshBuilder.Mesh.Prism:9
+#: smeshBuilder.Mesh.Projection1D:9 smeshBuilder.Mesh.Projection1D2D:9
+#: smeshBuilder.Mesh.Projection2D:9 smeshBuilder.Mesh.Projection3D:9
+#: smeshBuilder.Mesh.Quadrangle:9 smeshBuilder.Mesh.Segment:9
+#: smeshBuilder.Mesh.Triangle:9 smeshBuilder.Mesh.UseExisting1DElements:9
+#: smeshBuilder.Mesh.UseExisting2DElements:9
+#: smeshBuilder.Mesh.UseExistingFaces:9 smeshBuilder.Mesh.UseExistingSegments:9
+msgid "if defined, the subshape to be meshed"
+msgstr ""
+
+# 68f911ad512042b4a6285aa88f8fca17
+#: smeshBuilder.Mesh.BodyFitted:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D`"
+msgstr ""
+
+# 4085d3c0f2b848109948aee1e9cc7bb6
+# a9486953e6b7402baadeb49a7c5e0fd7
+#: smeshBuilder.Mesh.BoundingBox:1 smeshBuilder.smeshBuilder.BoundingBox:1
+msgid "Get bounding box of the specified object(s)"
+msgstr ""
+
+# 71b17d18ce6b4f3f97d0d21de438263b
+# 8235fb4f2a644850b2dbe3cce65e4989
+#: smeshBuilder.Mesh.BoundingBox:3 smeshBuilder.Mesh.GetBoundingBox:3
+msgid ""
+"single source object or list of source objects or list of nodes/elements "
+"IDs"
+msgstr ""
+
+# 8d64e7f2053847088f4f127b1ae04a71
+#: smeshBuilder.Mesh.BoundingBox:4
+msgid ""
+"if *objects* is a list of IDs, *True* value in this parameters specifies "
+"that *objects* are elements, *False* specifies that *objects* are nodes"
+msgstr ""
+
+# 59b8d41e9b2049efb00c98b745767f7a
+# 77aeda9898a04e12bf147fffc6e75fbe
+#: smeshBuilder.Mesh.BoundingBox:7 smeshBuilder.smeshBuilder.BoundingBox:5
+msgid ""
+"tuple of six values (minX, minY, minZ, maxX, maxY, maxZ) "
+"**GetBoundingBox()**"
+msgstr ""
+
+# a537005a5b9d47979929c05f8eaeda15
+#: smeshBuilder.Mesh.ChangeElemNodes:1
+msgid "Set new nodes for the given element."
+msgstr ""
+
+# 36898169610340a18bf9a620e210ce2e
+#: smeshBuilder.Mesh.ChangeElemNodes:3
+msgid "the element id"
+msgstr ""
+
+# 21b6219a1e944f449257d19dd1ca0f02
+#: smeshBuilder.Mesh.ChangeElemNodes:4
+msgid "nodes ids"
+msgstr ""
+
+# d33c68dbe23e4006ad1956f0b6bbac23
+#: smeshBuilder.Mesh.ChangeElemNodes:6
+msgid ""
+"If the number of nodes does not correspond to the type of element - "
+"return false"
+msgstr ""
+
+# e731f2bf01644c4ebface29a1d5eb581
+#: smeshBuilder.Mesh.Clear:1
+msgid ""
+"Remove all nodes and elements generated on geometry. Imported elements "
+"remain."
+msgstr ""
+
+# 43d4bb85669342ec965afe9692af55cf
+#: smeshBuilder.Mesh.ClearLastCreated:1
+msgid ""
+"Forget what nodes and elements were created by the last mesh edition "
+"operation"
+msgstr ""
+
+# 337f6843fdf848bf81ccb8161b213da6
+#: smeshBuilder.Mesh.ClearLog:1
+msgid ""
+"Clear the log of nodes and elements added or removed since the previous "
+"clear. Must be used immediately after GetLog if clearAfterGet is false."
+msgstr ""
+
+# 69dc1a51cd0d40118941c517bca60295
+#: smeshBuilder.Mesh.ClearSubMesh:1
+msgid "Remove all nodes and elements of indicated shape"
+msgstr ""
+
+# ef5f4ddea02f482c880cbe8e5828f8cf
+# 1f83fe014ef54d45975dcc4035acdcc2
+#: smeshBuilder.Mesh.ClearSubMesh:3 smeshBuilder.Mesh.Compute:7
+msgid "if *True*, Object browser is automatically updated (when running in GUI)"
+msgstr ""
+
+# 857622f9b8164097ba8110880cc6a93e
+#: smeshBuilder.Mesh.ClearSubMesh:4
+msgid "the ID of a sub-shape to remove elements on"
+msgstr ""
+
+# bcf73c75711a44ac8ac2ff512325f48c
+#: smeshBuilder.Mesh.Compute:1
+msgid "Compute the mesh and return the status of the computation"
+msgstr ""
+
+# 043ddc61ba9d4e48adcdc7b1b94d666f
+#: smeshBuilder.Mesh.Compute:3
+msgid "geomtrical shape on which mesh data should be computed"
+msgstr ""
+
+# 8624bb7c060e4ecd81652d8c183fd92c
+#: smeshBuilder.Mesh.Compute:4
+msgid ""
+"if True and the mesh has been edited since a last total re-compute and "
+"that may prevent successful partial re-compute, then the mesh is cleaned "
+"before Compute()"
+msgstr ""
+
+# 639212e7b82a4ea4974c145288eb20f7
+#: smeshBuilder.Mesh.ConvertFromQuadratic:1
+msgid ""
+"Convert the mesh from quadratic to ordinary, deletes old quadratic "
+"elements, replacing them with ordinary mesh elements with the same id."
+msgstr ""
+
+# 6356163ae0b444c4899d91dde3590811
+#: smeshBuilder.Mesh.ConvertFromQuadratic:5
+msgid "a group or a sub-mesh to convert;"
+msgstr ""
+
+# 9343f4e468834c27948b431b1bbf9f65
+#: smeshBuilder.Mesh.ConvertFromQuadratic:7
+msgid "in this case the mesh can become not conformal"
+msgstr ""
+
+# 8a0643b208294ea093f1bf00dfac82a3
+#: smeshBuilder.Mesh.ConvertToQuadratic:2
+msgid ""
+"Convert the mesh to quadratic or bi-quadratic, deletes old elements, "
+"replacing"
+msgstr ""
+
+# 1266098d1ddb431bbe98d81729523637
+#: smeshBuilder.Mesh.ConvertToQuadratic:2
+msgid "them with quadratic with the same id."
+msgstr ""
+
+# f91480b1b96e45b68054e7ba6eaab85a
+#: smeshBuilder.Mesh.ConvertToQuadratic:4
+msgid ""
+"new node creation method: 0 - the medium node lies at the geometrical "
+"entity from which the mesh element is built 1 - the medium node lies at "
+"the middle of the line segments connecting two nodes of a mesh element"
+msgstr ""
+
+# 60da272828e2459da819b5a92387d16b
+#: smeshBuilder.Mesh.ConvertToQuadratic:7
+msgid ""
+"a group or a sub-mesh to convert; WARNING: in this case the mesh can "
+"become not conformal"
+msgstr ""
+
+# 2523e755b6924455a14dc793e7b8a0f2
+#: smeshBuilder.Mesh.ConvertToQuadratic:8
+msgid "If True, converts the mesh to bi-quadratic"
+msgstr ""
+
+# 5b4f5ff6007844a7a82ba357e14f033b
+#: smeshBuilder.Mesh.ConvertToQuadratic:10
+msgid "SMESH.ComputeError which can hold a warning"
+msgstr ""
+
+# da979298e8cd4b2f8a65c04388250143
+#: smeshBuilder.Mesh.ConvertToStandalone:1
+msgid "Convert group on geom into standalone group"
+msgstr ""
+
+# d4f04129796648f78d2790c31c3eaa69
+#: smeshBuilder.Mesh.CreateDimGroup:1
+msgid "Create a standalone group of entities basing on nodes of other groups."
+msgstr ""
+
+# 144de1ecf04545f898e18b2d29454486
+#: smeshBuilder.Mesh.CreateDimGroup:3
+msgid "list of reference groups, sub-meshes or filters, of any type."
+msgstr ""
+
+# 9b13adffcc684c80ae8584212b0d33b9
+#: smeshBuilder.Mesh.CreateDimGroup:4
+msgid ""
+"a type of elements to include to the new group; either of (SMESH.NODE, "
+"SMESH.EDGE, SMESH.FACE, SMESH.VOLUME)."
+msgstr ""
+
+# f597206b09c64cf3ab3bad4706e6242a
+#: smeshBuilder.Mesh.CreateDimGroup:6
+msgid "a name of the new group."
+msgstr ""
+
+# bf2b551a066446aeb28e677cefae27d1
+#: smeshBuilder.Mesh.CreateDimGroup:7
+msgid ""
+"a criterion of inclusion of an element to the new group basing on number "
+"of element nodes common with reference *groups*. Meaning of possible "
+"values are:          - SMESH.ALL_NODES - include if all nodes are common,"
+"         - SMESH.MAIN - include if all corner nodes are common "
+"(meaningful for a quadratic mesh),         - SMESH.AT_LEAST_ONE - include"
+" if one or more node is common,         - SMEHS.MAJORITY - include if "
+"half of nodes or more are common."
+msgstr ""
+
+# 160037f6ec2c4beb93482b4874860e56
+#: smeshBuilder.Mesh.CreateDimGroup:7
+msgid ""
+"a criterion of inclusion of an element to the new group basing on number "
+"of element nodes common with reference *groups*. Meaning of possible "
+"values are:"
+msgstr ""
+
+# f2d61b5aa0254a579de3098d213f93e8
+#: smeshBuilder.Mesh.CreateDimGroup:11
+msgid "SMESH.ALL_NODES - include if all nodes are common,"
+msgstr ""
+
+# 7656f2f899da49d4aac9e5f9b487a642
+#: smeshBuilder.Mesh.CreateDimGroup:12
+msgid ""
+"SMESH.MAIN - include if all corner nodes are common (meaningful for a "
+"quadratic mesh),"
+msgstr ""
+
+# 419c54fccd834e8ea7e060ea296cb9c5
+#: smeshBuilder.Mesh.CreateDimGroup:13
+msgid "SMESH.AT_LEAST_ONE - include if one or more node is common,"
+msgstr ""
+
+# ec67a22f44d54ebb8938845517125249
+#: smeshBuilder.Mesh.CreateDimGroup:14
+msgid "SMEHS.MAJORITY - include if half of nodes or more are common."
+msgstr ""
+
+# ff069aa6a01d4822a522a850b132c046
+#: smeshBuilder.Mesh.CreateDimGroup:15
+msgid ""
+"if *True* (default), an element is included to the new group provided "
+"that it is based on nodes of an element of *groups*; in this case the "
+"reference *groups* are supposed to be of higher dimension than "
+"*elemType*, which can be useful for example to get all faces lying on "
+"volumes of the reference *groups*."
+msgstr ""
+
+# 00931333da47448a8ad7a048843c7ef3
+# 9a39086a4ebc46a4902f20b2faa06528
+# 4b84520336ae4c8bb85bb502f81466dc
+# 9d6acb565eff420193f1c51fafe0eb00
+# 66803841112b4774b9348c1eb9bb785f
+# b6127fbe4b27486887f9dac52b32e0ea
+#: smeshBuilder.Mesh.CreateDimGroup:21 smeshBuilder.Mesh.CutGroups:5
+#: smeshBuilder.Mesh.CutListOfGroups:5 smeshBuilder.Mesh.IntersectGroups:5
+#: smeshBuilder.Mesh.IntersectListOfGroups:5
+#: smeshBuilder.Mesh.UnionListOfGroups:6
+msgid "an instance of SMESH_Group"
+msgstr ""
+
+# 6ac41cebc6194553a64e046f4f91fae1
+#: smeshBuilder.Mesh.CreateEmptyGroup:1
+msgid "Create an empty mesh group"
+msgstr ""
+
+# 6a617353eb5d4905b43a00659c0f36f0
+#: smeshBuilder.Mesh.CreateEmptyGroup:3
+msgid ""
+"the type of elements in the group; either of (SMESH.NODE, SMESH.EDGE, "
+"SMESH.FACE, SMESH.VOLUME)"
+msgstr ""
+
+# f9b29b2ce899431c8d37c81d7ff6f5db
+# afc694cbebae4d16bda1b8ed5f0af04f
+# 6685b1ee1cfe4ff68f0e2067413509d9
+# b6508bf014c04b0d843782cc27da1d33
+# 96065c4c2c4d4d4b85cb322927f152fa
+# 4480735602644f88a2b4579474c38946
+# 3f964e2ed4654075a157483af78fa2b0
+# 340cbc73380b49289bac4786915eb2f2
+# 5e083f891e3e45469891eba52670ef4b
+#: smeshBuilder.Mesh.CreateEmptyGroup:5 smeshBuilder.Mesh.Group:9
+#: smeshBuilder.Mesh.GroupOnFilter:7 smeshBuilder.Mesh.GroupOnGeom:6
+#: smeshBuilder.Mesh.MakeGroup:3 smeshBuilder.Mesh.MakeGroupByCriteria:3
+#: smeshBuilder.Mesh.MakeGroupByCriterion:3
+#: smeshBuilder.Mesh.MakeGroupByFilter:3 smeshBuilder.Mesh.MakeGroupByIds:3
+msgid "the name of the mesh group"
+msgstr ""
+
+# 278619c06dd34c5dbc8b2b8217886875
+# 2b6ed0ea3bab43f2b31f6f723ab98466
+#: smeshBuilder.Mesh.CreateEmptyGroup:7 smeshBuilder.Mesh.MakeGroupByIds:8
+msgid "SMESH_Group"
+msgstr ""
+
+# 559a2c9dd5f2420c897d007cafc7d58c
+#: smeshBuilder.Mesh.CreateFlatElementsOnFacesGroups:1
+msgid ""
+"Double nodes on some external faces and create flat elements. Flat "
+"elements are mainly used by some types of mechanic calculations."
+msgstr ""
+
+# 9f76557a0e5e4d2d998fc917c94c28ae
+#: smeshBuilder.Mesh.CreateFlatElementsOnFacesGroups:4
+msgid ""
+"Each group of the list must be constituted of faces. Triangles are "
+"transformed in prisms, and quadrangles in hexahedrons."
+msgstr ""
+
+# acd039e48ef5492b988af1c831ee86a0
+# e2ed2814c91c458b96f91741ecc3ed1b
+# 3e80a436104f454fba282642777c7d04
+# efdb004e5c5144c2953061024bafbd43
+# 5e145a5cf8454db2b58cc48814cd8932
+# 82746e360dce4c11a0517e80c26751b8
+# 039afa4632bb440db5e1bcf4192eef50
+# 293864ca2acc44b2a24c35b6c2276de8
+# d6643ae8b86b4d11bc504b9cac2bdfdd
+#: smeshBuilder.Mesh.CreateFlatElementsOnFacesGroups:9
+#: smeshBuilder.Mesh.DoubleNode:7 smeshBuilder.Mesh.DoubleNodeElem:9
+#: smeshBuilder.Mesh.DoubleNodeElemGroupsInRegion:10
+#: smeshBuilder.Mesh.DoubleNodeElemInRegion:10
+#: smeshBuilder.Mesh.DoubleNodeGroups:8 smeshBuilder.Mesh.DoubleNodes:8
+#: smeshBuilder.Mesh.DoubleNodesOnGroupBoundaries:12
+#: smeshBuilder.Mesh.Make2DMeshFrom3D:3
+msgid "TRUE if operation has been completed successfully, FALSE otherwise"
+msgstr ""
+
+# 6f8a1db7c6b544ad8c8727f54f1f124c
+#: smeshBuilder.Mesh.CreateHoleSkin:1
+msgid ""
+"identify all the elements around a geom shape, get the faces delimiting "
+"the hole"
+msgstr ""
+
+# 71ccdb1234cb4632bb023f04da9a3f4f
+#: smeshBuilder.Mesh.CutGroups:1
+msgid ""
+"Produce a cut of two groups. A new group is created. All mesh elements "
+"that are present in the main group but are not present in the tool group "
+"are added to the new one"
+msgstr ""
+
+# 51d77236e4704e1d93d61424836e4309
+#: smeshBuilder.Mesh.CutListOfGroups:1
+msgid ""
+"Produce a cut of groups. A new group is created. All mesh elements that "
+"are present in main groups but do not present in tool groups are added to"
+" the new one"
+msgstr ""
+
+# 18ce85c5064942998890dab69759bda8
+#: smeshBuilder.Mesh.DeleteDiag:1
+msgid ""
+"Replace two neighbour triangles sharing Node1-Node2 link with a "
+"quadrangle built on the same 4 nodes."
+msgstr ""
+
+# be458a25caf64762b486c43a063a9611
+# 46a58970af514f92954af0e8c79b5ec6
+#: smeshBuilder.Mesh.DeleteDiag:4 smeshBuilder.Mesh.InverseDiag:4
+msgid "the ID of the first node"
+msgstr ""
+
+# 8d6e087e79d740ec8d11c4b1494fc35c
+# 51c6ebbea19b412897508a588b468a8b
+#: smeshBuilder.Mesh.DeleteDiag:5 smeshBuilder.Mesh.InverseDiag:5
+msgid "the ID of the second node"
+msgstr ""
+
+# ccfb692252ad4211a4812aab0e331cb8
+# eb8dc4009d4946da92ec5160c05209eb
+#: smeshBuilder.Mesh.DeleteDiag:7 smeshBuilder.Mesh.InverseDiag:7
+msgid "false if proper faces were not found"
+msgstr ""
+
+# e46fee500fbd48c8bb8c55ac98bc1c4e
+#: smeshBuilder.Mesh.DoubleElements:2
+msgid "Create duplicates of given elements, i.e. create new elements based on the"
+msgstr ""
+
+# cc1e48add13c4c139fdae0c1254fa690
+#: smeshBuilder.Mesh.DoubleElements:2
+msgid "same nodes as the given ones."
+msgstr ""
+
+# 502e72c8b5d9421e810c478891cb7869
+#: smeshBuilder.Mesh.DoubleElements:4
+msgid ""
+"container of elements to duplicate. It can be a Mesh, sub-mesh, group, "
+"filter or a list of element IDs. If *theElements* is a Mesh, elements of "
+"highest dimension are duplicated"
+msgstr ""
+
+# 291aa5a8404c4b54ae7c32f646ee53c9
+#: smeshBuilder.Mesh.DoubleElements:7
+msgid ""
+"a name of group to contain the generated elements. If a group with such a"
+" name already exists, the new elements are added to the existng group, "
+"else a new group is created. If *theGroupName* is empty, new elements are"
+" not added in any group."
+msgstr ""
+
+# 618dd7e8c3a744048dd361c7f39f54b4
+#: smeshBuilder.Mesh.DoubleElements:13
+msgid "a group where the new elements are added. None if theGroupName == \"\"."
+msgstr ""
+
+# e56c1b45539c4a34831f86301e94adac
+# eef733654e854eb2ad5014485032afb3
+# 5f3800ca14ab44b79f47c94f6d85ea5f
+# 2985d17463c74477b843914c9daec26b
+# 812b119999204bb9b8aa746d4b1eb4c5
+# 19153c0526574628ab29a70716dd59f9
+# 11d4a9e79b79470083af0f147c0e9483
+#: smeshBuilder.Mesh.DoubleNode:1 smeshBuilder.Mesh.DoubleNodeElemGroup:1
+#: smeshBuilder.Mesh.DoubleNodeElemGroupInRegion:1
+#: smeshBuilder.Mesh.DoubleNodeElemGroups:1
+#: smeshBuilder.Mesh.DoubleNodeElemGroupsInRegion:1
+#: smeshBuilder.Mesh.DoubleNodeGroup:1 smeshBuilder.Mesh.DoubleNodeGroups:1
+msgid ""
+"Create a hole in a mesh by doubling the nodes of some particular elements"
+" This method provided for convenience works as DoubleNodes() described "
+"above."
+msgstr ""
+
+# 259af3a19fd347bf9f8b02035d51dad7
+#: smeshBuilder.Mesh.DoubleNode:4
+msgid "identifiers of node to be doubled"
+msgstr ""
+
+# a4b19d27254e45818a8c1a56ff66a038
+#: smeshBuilder.Mesh.DoubleNode:5
+msgid "identifiers of elements to be updated"
+msgstr ""
+
+# 32ad9a5f0b10469ca7e20335dd182432
+# a1f48415baae43c8a393801c1d4d1240
+# 55544c8546e94bf882d1a75538fd5e90
+#: smeshBuilder.Mesh.DoubleNodeElem:1
+#: smeshBuilder.Mesh.DoubleNodeElemInRegion:1 smeshBuilder.Mesh.DoubleNodes:1
+msgid "Create a hole in a mesh by doubling the nodes of some particular elements"
+msgstr ""
+
+# be335eea39f742ea80e3ab48f93f40f5
+# b2e19fd27a6b4a32bb58fef4c37910b3
+#: smeshBuilder.Mesh.DoubleNodeElem:3
+#: smeshBuilder.Mesh.DoubleNodeElemInRegion:3
+msgid ""
+"the list of elements (edges or faces) to be replicated The nodes for "
+"duplication could be found from these elements"
+msgstr ""
+
+# fce62c58353045b492cb22cdaf2db99b
+# e5db53edbf064cc0825163f4b463e041
+#: smeshBuilder.Mesh.DoubleNodeElem:5
+#: smeshBuilder.Mesh.DoubleNodeElemInRegion:5
+msgid "list of nodes to NOT replicate"
+msgstr ""
+
+# 41bfa10f113044e3aa5032f2cf78dc4e
+#: smeshBuilder.Mesh.DoubleNodeElem:6
+msgid ""
+"the list of elements (cells and edges) to which the replicated nodes "
+"should be associated to."
+msgstr ""
+
+# bf81aed18e674b61802e66d001d02d13
+# 0207a45ad3fe433b8902ae9a3198d10f
+#: smeshBuilder.Mesh.DoubleNodeElemGroup:4
+#: smeshBuilder.Mesh.DoubleNodeElemGroupInRegion:4
+msgid "group of of elements (edges or faces) to be replicated"
+msgstr ""
+
+# adef8bad906d4f13b1cfc6c92e460f07
+# c6316cf12ad74a5f9f72f9cba6af1391
+#: smeshBuilder.Mesh.DoubleNodeElemGroup:5
+#: smeshBuilder.Mesh.DoubleNodeElemGroupInRegion:5
+msgid "group of nodes not to replicated"
+msgstr ""
+
+# 4444addea632450693dfdbe76603848e
+# 88888b76c4024ac8803170c0813ebb36
+#: smeshBuilder.Mesh.DoubleNodeElemGroup:6
+#: smeshBuilder.Mesh.DoubleNodeElemGroups:6
+msgid "group of elements to which the replicated nodes should be associated to."
+msgstr ""
+
+# f716c47d5a2a4306b5f0fb023a9607c0
+# d1696e68ca88437f89d5d97cdfd98b5a
+#: smeshBuilder.Mesh.DoubleNodeElemGroup:8
+#: smeshBuilder.Mesh.DoubleNodeElemGroups:8
+msgid "forces the generation of a group containing new elements."
+msgstr ""
+
+# 2df4449e419440d99db078600fa68f95
+# 980b56a1fe9d4d39a4cea5aefc15eae6
+# 9f11003a43794083a09e13f1063ea8bd
+# 0d6de5c414484b008845830423d408be
+#: smeshBuilder.Mesh.DoubleNodeElemGroup:9
+#: smeshBuilder.Mesh.DoubleNodeElemGroups:9 smeshBuilder.Mesh.DoubleNodeGroup:6
+#: smeshBuilder.Mesh.DoubleNodeGroups:6
+msgid "forces the generation of a group containing new nodes."
+msgstr ""
+
+# 31110dca9a664187942bd9abad329e82
+# 9552785dd86c4586a423a69b3702f979
+#: smeshBuilder.Mesh.DoubleNodeElemGroup:11
+#: smeshBuilder.Mesh.DoubleNodeElemGroups:11
+msgid ""
+"TRUE or created groups (one or two) if operation has been completed "
+"successfully,     FALSE or None otherwise"
+msgstr ""
+
+# 6fbdd03967ae452ab66b9e71f9f0f7db
+# f9d5b26e697b48dda9589b574510684e
+#: smeshBuilder.Mesh.DoubleNodeElemGroup:13
+#: smeshBuilder.Mesh.DoubleNodeElemGroups:13
+msgid ""
+"TRUE or created groups (one or two) if operation has been completed "
+"successfully,"
+msgstr ""
+
+# 6b20fd99375349ce918bc6eaf1179886
+# 9be16c633c2a464e8e3ae404c0c3b1fb
+# 584895001cdc4cd19d20674d8743914b
+#: smeshBuilder.Mesh.DoubleNodeElemGroup:14
+#: smeshBuilder.Mesh.DoubleNodeElemGroups:14
+#: smeshBuilder.Mesh.DoubleNodeGroup:11
+msgid "FALSE or None otherwise"
+msgstr ""
+
+# 1d611d1625784aa69c6452d3f6597960
+# 49bbb073f1e748cb8ba0c3fa704ae8ae
+#: smeshBuilder.Mesh.DoubleNodeElemGroups:4
+#: smeshBuilder.Mesh.DoubleNodeElemGroupsInRegion:4
+msgid "list of groups of elements (edges or faces) to be replicated"
+msgstr ""
+
+# a4a9e63099394548ae2ab96dff284fa3
+#: smeshBuilder.Mesh.DoubleNodeGroup:4
+msgid "group of nodes to be doubled"
+msgstr ""
+
+# 5156192efdd441f8af2015bbf0cfd837
+#: smeshBuilder.Mesh.DoubleNodeGroup:5
+msgid "group of elements to be updated."
+msgstr ""
+
+# 513c59723fc8436d881eaad8855b1005
+#: smeshBuilder.Mesh.DoubleNodeGroup:8
+msgid ""
+"TRUE or a created group if operation has been completed successfully,"
+"     FALSE or None otherwise"
+msgstr ""
+
+# c5f15412e81a4094a187dc0ff94a805d
+#: smeshBuilder.Mesh.DoubleNodeGroup:10
+msgid "TRUE or a created group if operation has been completed successfully,"
+msgstr ""
+
+# 081ef4f15ceb48b59a956ebb491b58de
+#: smeshBuilder.Mesh.DoubleNodeGroups:4
+msgid "list of groups of nodes to be doubled"
+msgstr ""
+
+# 904373e03d75434292d28d381f46ec5b
+#: smeshBuilder.Mesh.DoubleNodeGroups:5
+msgid "list of groups of elements to be updated."
+msgstr ""
+
+# 736ebd7d03ae468c8194d99cdbcdb402
+#: smeshBuilder.Mesh.DoubleNodes:3
+msgid "identifiers of nodes to be doubled"
+msgstr ""
+
+# 191c612e539f45ddaaf695bd7fac77b8
+#: smeshBuilder.Mesh.DoubleNodes:4
+msgid ""
+"identifiers of elements to be updated by the new (doubled) nodes. If list"
+" of element identifiers is empty then nodes are doubled but they not "
+"assigned to elements"
+msgstr ""
+
+# 8f339342bfa14ff1a7beff3f2500a72d
+#: smeshBuilder.Mesh.DoubleNodesOnGroupBoundaries:1
+msgid ""
+"Double nodes on shared faces between groups of volumes and create flat "
+"elements on demand. The list of groups must describe a partition of the "
+"mesh volumes. The nodes of the internal faces at the boundaries of the "
+"groups are doubled. In option, the internal faces are replaced by flat "
+"elements. Triangles are transformed in prisms, and quadrangles in "
+"hexahedrons."
+msgstr ""
+
+# 76ba67f4c60d47618774228879e5fab1
+#: smeshBuilder.Mesh.DoubleNodesOnGroupBoundaries:7
+msgid "list of groups of volumes"
+msgstr ""
+
+# e82b9f2e1cb64b089d3e724218d37b08
+#: smeshBuilder.Mesh.DoubleNodesOnGroupBoundaries:8
+msgid "if TRUE, create the elements"
+msgstr ""
+
+# bc6d7ed43de6437b82fe8ace719f2243
+#: smeshBuilder.Mesh.DoubleNodesOnGroupBoundaries:9
+msgid ""
+"if TRUE, the nodes and elements are also created on the boundary between "
+"*theDomains* and the rest mesh"
+msgstr ""
+
+# a47554f878c6475ab638bcaf14eade3c
+#: smeshBuilder.Mesh.Dump:1
+msgid "Get the mesh description"
+msgstr ""
+
+# 7438e31768d44e7eb0c67b0e86b804bf
+#: smeshBuilder.Mesh.Dump:3
+msgid "string value"
+msgstr ""
+
+# 981c8719728745e5ba18fa3bd74e4d5e
+#: smeshBuilder.Mesh.ElemNbEdges:1
+msgid "Return the number of edges for the given element"
+msgstr ""
+
+# adc711c55c3e4ced978ddee57826cab2
+#: smeshBuilder.Mesh.ElemNbFaces:1
+msgid "Return the number of faces for the given element"
+msgstr ""
+
+# ade0fa9e5c494b39984f55521d35e024
+#: smeshBuilder.Mesh.Evaluate:1
+msgid "Evaluate size of prospective mesh on a shape"
+msgstr ""
+
+# af2257f13a5a484eaec80e404177ae2a
+#: smeshBuilder.Mesh.Evaluate:3
+msgid ""
+"a list where i-th element is a number of elements of i-th "
+"SMESH.EntityType To know predicted number of e.g. edges, inquire it this "
+"way Evaluate()[ EnumToLong( Entity_Edge )]"
+msgstr ""
+
+# ca65c1d873fa419e9f29045188d65355
+#: smeshBuilder.Mesh.ExportCGNS:1
+msgid "Export the mesh in a file in CGNS format"
+msgstr ""
+
+# 4d8730c310014fed95afde1cf16521b5
+# f56f24461f09484f9ae26192bb74dc1b
+# 16cd1ef1f37d4ac7bfb29e0ba1c76644
+# eaabc73aed1440d0b0aaebea0e38bf09
+#: smeshBuilder.Mesh.ExportCGNS:3 smeshBuilder.Mesh.ExportGMF:5
+#: smeshBuilder.Mesh.ExportMED:4 smeshBuilder.Mesh.ExportSAUV:4
+msgid "is the file name"
+msgstr ""
+
+# 0f8575dda55f4807813f5ca70414d422
+# 1b591563a70a41229ffc5e30039dfe57
+# 56a276aac58c4b40abf3c7a0a89cdef6
+#: smeshBuilder.Mesh.ExportCGNS:4 smeshBuilder.Mesh.ExportMED:11
+#: smeshBuilder.Mesh.ExportToMED:11
+msgid "boolean parameter for overwriting/not overwriting the file"
+msgstr ""
+
+# 920c4ef672054e848f0b3b31337093a4
+# d574c15e91a34c858eb6f73b279a38c8
+# 57fe3da10f0940e092be8f03d1b30490
+# 6a116fbdcda3410c9da9af7946679bff
+# f284f32cd9454c598eebfe46554127b4
+# 45870649c3614edd90eec1888b581bf7
+#: smeshBuilder.Mesh.ExportCGNS:5 smeshBuilder.Mesh.ExportDAT:4
+#: smeshBuilder.Mesh.ExportGMF:6 smeshBuilder.Mesh.ExportMED:12
+#: smeshBuilder.Mesh.ExportSTL:5 smeshBuilder.Mesh.ExportUNV:4
+msgid "a part of mesh (group, sub-mesh) to export instead of the mesh"
+msgstr ""
+
+# 81933cbf88a2426e89b6e2bd62be0f55
+#: smeshBuilder.Mesh.ExportCGNS:6
+msgid ""
+"if true all elements of same entity type are exported at ones, else "
+"elements are exported in order of their IDs which can cause creation of "
+"multiple cgns sections"
+msgstr ""
+
+# f81b920c3c38470f97cdc721ad04dd3a
+#: smeshBuilder.Mesh.ExportDAT:1
+msgid "Export the mesh in a file in DAT format"
+msgstr ""
+
+# 91b896bb5f8f4125abbd5c09539db9d0
+# df7d096aea81460185789e29acf21d4f
+# 62142d4bfbfd4e4094ed9b7ee2b0823f
+# ca8da077fc864b249b13b9718704c17c
+#: smeshBuilder.Mesh.ExportDAT:3 smeshBuilder.Mesh.ExportSTL:3
+#: smeshBuilder.Mesh.ExportToMED:5 smeshBuilder.Mesh.ExportUNV:3
+msgid "the file name"
+msgstr ""
+
+# 4215d946f6a84dd98c32799115d981b6
+#: smeshBuilder.Mesh.ExportGMF:1
+msgid ""
+"Export the mesh in a file in GMF format. GMF files must have .mesh "
+"extension for the ASCII format and .meshb for the bynary format. Other "
+"extensions are not allowed."
+msgstr ""
+
+# a59bf671306b4518aeaee39a16ddebb2
+#: smeshBuilder.Mesh.ExportMED:2
+msgid "Export the mesh in a file in MED format"
+msgstr ""
+
+# b423d2791a2f4f2694e3303f1c6b2495
+#: smeshBuilder.Mesh.ExportMED:2
+msgid ""
+"allowing to overwrite the file if it exists or add the exported data to "
+"its contents"
+msgstr ""
+
+# 0ebd88ad2dca48b68c682da54bf193f2
+#: smeshBuilder.Mesh.ExportMED:5
+msgid ""
+"boolean parameter for creating/not creating the groups "
+"Group_On_All_Nodes, Group_On_All_Faces, ... ; the typical use is "
+"auto_groups=False."
+msgstr ""
+
+# d2aa73692400496db744fd2b2d06c4d0
+# 7d550ce3f6c44e45bf1a1fc4242d545d
+#: smeshBuilder.Mesh.ExportMED:8 smeshBuilder.Mesh.ExportToMED:6
+msgid ""
+"MED format version (MED_V2_1 or MED_V2_2, the latter meaning any current "
+"version). The parameter is obsolete since MED_V2_1 is no longer "
+"supported."
+msgstr ""
+
+# 643a70d8af6e4d70b494eb5111940b4e
+#: smeshBuilder.Mesh.ExportMED:13
+msgid ""
+"if *True* (default), a space dimension of a MED mesh can be either  - 1D "
+"if all mesh nodes lie on OX coordinate axis, or - 2D if all mesh nodes "
+"lie on XOY coordinate plane, or - 3D in the rest cases.  If "
+"*autoDimension* is *False*, the space dimension is always 3."
+msgstr ""
+
+# 188fa80ce83d45da90f060958a0b88de
+# 5e86f9b88b524fdea8d335236ed2734b
+#: smeshBuilder.Mesh.ExportMED:13 smeshBuilder.Mesh.ExportToMED:12
+msgid "if *True* (default), a space dimension of a MED mesh can be either"
+msgstr ""
+
+# 4835a670e5f3403c8e8221d89641f4f0
+# 893afb16da9747f8bfae83a2003be1d3
+#: smeshBuilder.Mesh.ExportMED:15 smeshBuilder.Mesh.ExportToMED:14
+msgid "1D if all mesh nodes lie on OX coordinate axis, or"
+msgstr ""
+
+# 35b39341c5164536913fb74a914bf2f3
+# a76ff4051c15455d8d42b5c22febaa53
+#: smeshBuilder.Mesh.ExportMED:16 smeshBuilder.Mesh.ExportToMED:15
+msgid "2D if all mesh nodes lie on XOY coordinate plane, or"
+msgstr ""
+
+# ff1f5dd902d3495082109b1226cf2d33
+# a4a5506f37b14a4884040e679458154a
+#: smeshBuilder.Mesh.ExportMED:17 smeshBuilder.Mesh.ExportToMED:16
+msgid "3D in the rest cases."
+msgstr ""
+
+# b0cfd66cd8be4f65ac79251d8d75c16e
+#: smeshBuilder.Mesh.ExportMED:19
+msgid "If *autoDimension* is *False*, the space dimension is always 3."
+msgstr ""
+
+# dca75586baf544b89856ac34c5696e17
+#: smeshBuilder.Mesh.ExportMED:20
+msgid "list of GEOM fields defined on the shape to mesh."
+msgstr ""
+
+# e2e247a955424178b0f7f69b548091ce
+#: smeshBuilder.Mesh.ExportMED:21
+msgid ""
+"each character of this string means a need to export a corresponding "
+"field; correspondence between fields and characters is following:"
+"          - 'v' stands for \"_vertices _\" field;         - 'e' stands "
+"for \"_edges _\" field;         - 'f' stands for \"_faces _\" field;"
+"         - 's' stands for \"_solids _\" field."
+msgstr ""
+
+# 95f9b27f74fc458296695e9f6d3d7572
+#: smeshBuilder.Mesh.ExportMED:21
+msgid ""
+"each character of this string means a need to export a corresponding "
+"field; correspondence between fields and characters is following:"
+msgstr ""
+
+# bfcb3515f514406fb5a0b20b059083ff
+#: smeshBuilder.Mesh.ExportMED:24
+msgid "'v' stands for \"_vertices _\" field;"
+msgstr ""
+
+# cb193265fa234df590c538de074694bf
+#: smeshBuilder.Mesh.ExportMED:25
+msgid "'e' stands for \"_edges _\" field;"
+msgstr ""
+
+# 1a71b5ea0a6240649e7e801ba8e3594d
+#: smeshBuilder.Mesh.ExportMED:26
+msgid "'f' stands for \"_faces _\" field;"
+msgstr ""
+
+# 235d9c1731c243339a48ee6bbe8707a6
+#: smeshBuilder.Mesh.ExportMED:27
+msgid "'s' stands for \"_solids _\" field."
+msgstr ""
+
+# 4781cafb801a49408ec375e201526617
+#: smeshBuilder.Mesh.ExportSAUV:1
+msgid "Export the mesh in a file in SAUV format"
+msgstr ""
+
+# 05f769d7467e479199475bcffcb9b32a
+#: smeshBuilder.Mesh.ExportSAUV:5
+msgid ""
+"boolean parameter for creating/not creating the groups "
+"Group_On_All_Nodes, Group_On_All_Faces, ... ; the typical use is "
+"auto_groups=false."
+msgstr ""
+
+# e5f4a3c8b68947699e83368accae3169
+#: smeshBuilder.Mesh.ExportSTL:1
+msgid "Export the mesh in a file in STL format"
+msgstr ""
+
+# 4598e0cad2a2490e8f258041d3e5df47
+#: smeshBuilder.Mesh.ExportSTL:4
+msgid "defines the file encoding"
+msgstr ""
+
+# ddcb96f002a443dca1a2dd9e1db10825
+#: smeshBuilder.Mesh.ExportToMED:1
+msgid ""
+"Deprecated, used only for compatibility! Please, use ExportMED() method "
+"instead. Export the mesh in a file in MED format allowing to overwrite "
+"the file if it exists or add the exported data to its contents"
+msgstr ""
+
+# 0f5e467ce7644b728b00a9daafe884f9
+#: smeshBuilder.Mesh.ExportToMED:9
+msgid ""
+"boolean parameter for creating/not creating the groups "
+"Group_On_All_Nodes, Group_On_All_Faces, ..."
+msgstr ""
+
+# 8c6a9e9e643e43ec9c97af15159997f6
+#: smeshBuilder.Mesh.ExportToMED:12
+msgid ""
+"if *True* (default), a space dimension of a MED mesh can be either  - 1D "
+"if all mesh nodes lie on OX coordinate axis, or - 2D if all mesh nodes "
+"lie on XOY coordinate plane, or - 3D in the rest cases.  If "
+"**autoDimension** isc **False**, the space dimension is always 3."
+msgstr ""
+
+# 2988ab28dbc7448a886b66c61cd510d0
+#: smeshBuilder.Mesh.ExportToMED:18
+msgid "If **autoDimension** isc **False**, the space dimension is always 3."
+msgstr ""
+
+# b21cd34f34bf4cd8ab19d657b90f7c84
+#: smeshBuilder.Mesh.ExportUNV:1
+msgid "Export the mesh in a file in UNV format"
+msgstr ""
+
+# 093d969d266f4c669d0f853d5d22f32c
+# 69276d9cc94a482389196453d99cdc56
+#: smeshBuilder.Mesh.ExtrusionAlongPath:1
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:1
+msgid ""
+"Generate new elements by extrusion of the given elements The path of "
+"extrusion must be a meshed edge."
+msgstr ""
+
+# f6db2756c524477f846505296518f8ec
+#: smeshBuilder.Mesh.ExtrusionAlongPath:4
+msgid "ids of elements"
+msgstr ""
+
+# 64e67e10136041e98baedb6952172557
+#: smeshBuilder.Mesh.ExtrusionAlongPath:5
+msgid ""
+"mesh containing a 1D sub-mesh on the edge, along which proceeds the "
+"extrusion"
+msgstr ""
+
+# 156701d78a944f129f5c6a1ba379b79e
+# 9cde29796df24b65833f64144b03a9cf
+# 41abdd3ad90b4ef2ad7b9b79e299010f
+# c9db6c3356c3488b82edbcd4d8c89f7d
+#: smeshBuilder.Mesh.ExtrusionAlongPath:6
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:7
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:7
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:7
+msgid "shape(edge) defines the sub-mesh for the path"
+msgstr ""
+
+# 333e2e688ede4c3cb968aa2f4360d6a9
+# 7a2a4d98fb7e471aa45bdd62738cc7e7
+# 82bbac405e774d159c0c41c096654750
+# 31ebc23a88fc44d8a6efbb11fe655579
+#: smeshBuilder.Mesh.ExtrusionAlongPath:7
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:8
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:8
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:8
+msgid "the first or the last node on the edge. Defines the direction of extrusion"
+msgstr ""
+
+# 39611e7acfd145bda26a03a35014728c
+# 1d18d20fbabf4b89850507afa68ac647
+# 2952fc27cf6f47ed96cbaf1b6fabc3f4
+# 34215bf00645451e8a324ee07d58e90d
+# 93a79b3572ff4d87b0693286947fcc26
+# 3b1f1c0f508d4a70bb1aa1f88c9a327f
+#: smeshBuilder.Mesh.ExtrusionAlongPath:8
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:9
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:9
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:9
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:11
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:7
+msgid ""
+"allows the shape to be rotated around the path to get the resulting mesh "
+"in a helical fashion"
+msgstr ""
+
+# c5d2f4a73ff04cb586d1ddc79ff022b7
+# b7a55c6978ac4c98b4f28b83d030c96e
+#: smeshBuilder.Mesh.ExtrusionAlongPath:10
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:9
+msgid "list of angles in radians"
+msgstr ""
+
+# 3dc31460c71b4b6fbf4fa0b10a55be83
+# e887644b7c0e431b885e56a379ec6025
+# 2f4fca0c56eb421888edc48360791331
+# 5a2cf1f52ec74585a6f18978ba9404f4
+# 617ae0c3319f4a4ba09e3d3afccd3e66
+# 9c5cc8542f6641f786d8cd7e23ea6b14
+#: smeshBuilder.Mesh.ExtrusionAlongPath:11
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:12
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:12
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:12
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:16
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:12
+msgid "allows using the reference point"
+msgstr ""
+
+# aa148f9e0d574512bed28e24c156bf52
+# d98243bd32894e89bde8740826ab7eae
+# b1861a760e3740d1a4fbd75fa7e6d3d7
+# e70c349b4edd4c218c4e1018bd33f460
+#: smeshBuilder.Mesh.ExtrusionAlongPath:12
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:13
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:13
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:17
+msgid ""
+"the point around which the shape is rotated (the mass center of the shape"
+" by default). The User can specify any point as the Reference Point."
+msgstr ""
+
+# a30b1231c30743df8a9c2c793ee2c96e
+# 0957d3fdaec84db89adc2acfba5416b8
+# 7f9393200c1f4254b18de8ee0eb04c08
+# a6407dd18c2444168993652c48b45dde
+# f567908113e341b89a2a3217d16ec42a
+# 6e5b87ad1fcf4cf49667fec460732795
+#: smeshBuilder.Mesh.ExtrusionAlongPath:15
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:16
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:16
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:16
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:14
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:10
+msgid ""
+"forces the computation of rotation angles as linear variation of the "
+"given Angles along path steps"
+msgstr ""
+
+# 1206c33bb3c147b09b980cfdf0ed7874
+# 676452b1ce6d4b5cb39c3683476422fd
+# 062607aadc1640a1a23f75692baadfea
+# 2eadaf19d76d47178239c0bf111b8cd9
+# 2fa67055ed4744898ac7f4036aac4dff
+#: smeshBuilder.Mesh.ExtrusionAlongPath:18
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:19
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:19
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:19
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:20
+msgid ""
+"list of created groups (SMESH_GroupBase) and SMESH::Extrusion_Error if "
+"MakeGroups=True,     only SMESH::Extrusion_Error otherwise"
+msgstr ""
+
+# d873c12efc834a39911397599d591fd5
+# cf2dd2cbbb08433b911c653669be8d6b
+# ecb56eec71c7495b9c01c87a2677fcde
+# a8aa911029614961be2eaefa5ab67f0f
+# f9e8aaf31ab1449791e0a377563442ae
+#: smeshBuilder.Mesh.ExtrusionAlongPath:21
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:22
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:22
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:22
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:23
+msgid ""
+"list of created groups (SMESH_GroupBase) and SMESH::Extrusion_Error if "
+"MakeGroups=True,"
+msgstr ""
+
+# b1d41ef62b8c4f41ac8e989d8b6b9494
+# d24d52183b4344d982913f781d682204
+# dfffadcf5592463c8d3fccb9756f60da
+# 32e047bf9b534645b5ca3fe350cc7a72
+# 77f7a6cb85be4727aba96d8fffece278
+#: smeshBuilder.Mesh.ExtrusionAlongPath:21
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:22
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:22
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:22
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:23
+msgid "only SMESH::Extrusion_Error otherwise"
+msgstr ""
+
+# b8d504d1a24e4a9aa198e232dacfc62f
+# 66b2bcd8b32442b7a9770eabe4217daf
+# d778e730ab6d4dfead5477f7a783d35b
+# 1c9054977e6e443ea7efeffed1a2d486
+# 79af131371b543de937609f742cf539a
+# aeec9462ee554cb88bd41064eb0f9a3d
+#: smeshBuilder.Mesh.ExtrusionAlongPath:23
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:24
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:24
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:24
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:23
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:25
+msgid ":ref:`tui_extrusion_along_path` example"
+msgstr ""
+
+# 29c371341da64c8db612e7f601831198
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:1
+msgid ""
+"Generate new elements by extrusion of the elements which belong to the "
+"object The path of extrusion must be a meshed edge."
+msgstr ""
+
+# 3f1310aa94c54723bbee322d7ed7e219
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:4
+msgid ""
+"the object whose elements should be processed. It can be a mesh, a sub-"
+"mesh or a group."
+msgstr ""
+
+# 43b79770ebff4050921eda2cedcac6d7
+# 566ff1c00def4dc5b1ae465cfc7409d9
+# 7414df614424443dbda0bbdaeef817aa
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:6
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:6
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:6
+msgid ""
+"mesh containing a 1D sub-mesh on the edge, along which the extrusion "
+"proceeds"
+msgstr ""
+
+# 3e4f320cccf24ee986d597e8dea61849
+# f85a2bf4ffea423f91ca3ae11f44d2e3
+# 20517d7ed30c4e349b117753e2cfe9bc
+# 571c7edab1414308909052f04815f10a
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject:11
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:11
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:11
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:13
+msgid "list of angles"
+msgstr ""
+
+# 972a69a8474444949abc9a112391b75b
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:1
+msgid ""
+"Generate new elements by extrusion of mesh segments which belong to the "
+"object The path of extrusion must be a meshed edge."
+msgstr ""
+
+# 1caaf785a01d41119bb7447dad4b4eb5
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:4
+msgid ""
+"the object whose 1D elements should be processed. It can be a mesh, a "
+"sub-mesh or a group."
+msgstr ""
+
+# c989666b20d1410dba1ed497eb5a96c1
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:13
+msgid ""
+"around which the shape is rotated (the mass center of the shape by "
+"default). The User can specify any point as the Reference Point."
+msgstr ""
+
+# fa39b18e6cee4523bdf3b2cc5fad3aa1
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:1
+msgid ""
+"Generate new elements by extrusion of faces which belong to the object "
+"The path of extrusion must be a meshed edge."
+msgstr ""
+
+# f83084b5d3e945b99464839307125cef
+#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:4
+msgid ""
+"the object whose 2D elements should be processed. It can be a mesh, a "
+"sub-mesh or a group."
+msgstr ""
+
+# 2324f7df315c4af8bb15d1ab33191cea
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:1
+msgid ""
+"Generate new elements by extrusion of the given elements and nodes along "
+"the path. The path of extrusion must be a meshed edge."
+msgstr ""
+
+# fe65fed6746642f684dbff5675c40388
+# a7b6a06933d64d5dbebf9a2e9db994cc
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:4
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:3
+msgid "nodes to extrude: a list including ids, groups, sub-meshes or a mesh"
+msgstr ""
+
+# 3a8658db54c14b97b54523f9148a9ed1
+# 99541a8fc29c4599897101cb55f5c970
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:5
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:4
+msgid "edges to extrude: a list including ids, groups, sub-meshes or a mesh"
+msgstr ""
+
+# 4c13442360aa4281aa3b640a41d89aa4
+# 88128559d1614061b2a3c82b5f1325af
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:6
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:5
+msgid "faces to extrude: a list including ids, groups, sub-meshes or a mesh"
+msgstr ""
+
+# 16eec3e1b2274150bd18951ba8f79fc8
+# 1f4dd5d6e94c41f5afce56157eb730aa
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:7
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:5
+msgid "1D mesh or 1D sub-mesh, along which proceeds the extrusion"
+msgstr ""
+
+# 7bfe51391d404d549fda0d18e54601c9
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:8
+msgid ""
+"shape (edge) defines the sub-mesh of PathMesh if PathMesh contains not "
+"only path segments, else it can be None"
+msgstr ""
+
+# b812a402a960422b961730c1d4ea452f
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:10
+msgid "the first or the last node on the path. Defines the direction of extrusion"
+msgstr ""
+
+# 74b34fecbdb544749b26b494f3df639e
+#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:21
+msgid "list of created groups (SMESH_GroupBase) and SMESH::Extrusion_Error"
+msgstr ""
+
+# 87aa29e1d2bd4d1cab62cc6a31d46ccc
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:4
+msgid "mesh or group, or sub-mesh, or list of ids of elements for extrusion"
+msgstr ""
+
+# 324f923bd17a498b9aa75f97bad5de64
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:6
+msgid "the start node from Path. Defines the direction of extrusion"
+msgstr ""
+
+# 6699406d3d8e4ef296b41d603c82db8e
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:13
+msgid ""
+"the point around which the elements are rotated (the mass center of the "
+"elements by default). The User can specify any point as the Reference "
+"Point. RefPoint can be either GEOM Vertex, [x,y,z] or SMESH.PointStruct"
+msgstr ""
+
+# 3fccc986f6d84c16a2e05e2c37abd430
+#: smeshBuilder.Mesh.ExtrusionAlongPathX:18
+msgid "type of elements for extrusion (if param Base is a mesh)"
+msgstr ""
+
+# 409086041d2b48f6ace165b9013b164e
+#: smeshBuilder.Mesh.ExtrusionByNormal:1
+msgid ""
+"Generate new elements by extrusion along the normal to a discretized "
+"surface or wire"
+msgstr ""
+
+# 633d19ebe6eb45018f30ef0596bbe7d1
+#: smeshBuilder.Mesh.ExtrusionByNormal:3
+msgid ""
+"elements to extrude - a list including ids, groups, sub-meshes or a mesh."
+" Only faces can be extruded so far. A sub-mesh should be a sub-mesh on "
+"geom faces."
+msgstr ""
+
+# 5954cfc71b9942219e15327d2498093d
+#: smeshBuilder.Mesh.ExtrusionByNormal:5
+msgid ""
+"length of one extrusion step (the total extrusion length will be "
+"*NbOfSteps* *StepSize*)."
+msgstr ""
+
+# 3bd6b8143cc247e8b0d29569f81c2cd5
+#: smeshBuilder.Mesh.ExtrusionByNormal:7
+msgid "number of extrusion steps."
+msgstr ""
+
+# 0875fc4bcfc24c92aebf1ec02c404cce
+#: smeshBuilder.Mesh.ExtrusionByNormal:8
+msgid ""
+"if True each node is translated by *StepSize* along the average of the "
+"normal vectors to the faces sharing the node; else each node is "
+"translated along the same average normal till intersection with the plane"
+" got by translation of the face sharing the node along its own normal by "
+"*StepSize*."
+msgstr ""
+
+# fa069f90ec5a495ca7409eedf7c45de8
+#: smeshBuilder.Mesh.ExtrusionByNormal:13
+msgid ""
+"to use only *Elements* when computing extrusion direction for every node "
+"of *Elements*."
+msgstr ""
+
+# 189dbea6bb314911b5b27c5a7430d537
+#: smeshBuilder.Mesh.ExtrusionByNormal:15
+msgid "forces generation of new groups from existing ones."
+msgstr ""
+
+# a20c5376192241388610609beb6c68a1
+#: smeshBuilder.Mesh.ExtrusionByNormal:16
+msgid ""
+"dimension of elements to extrude: 2 - faces or 1 - edges. Extrusion of "
+"edges is not yet implemented. This parameter is used if *Elements* "
+"contains both faces and edges, i.e. *Elements* is a Mesh."
+msgstr ""
+
+# bea85b3ff00e443c95211ae90420717b
+#: smeshBuilder.Mesh.ExtrusionByNormal:20
+msgid ""
+"the list of created groups (SMESH_GroupBase) if *MakeGroups=True*,     "
+"empty list otherwise."
+msgstr ""
+
+# 70a29a1069f14f629ae984d59eb6305a
+#: smeshBuilder.Mesh.ExtrusionByNormal:23
+msgid "the list of created groups (SMESH_GroupBase) if *MakeGroups=True*,"
+msgstr ""
+
+# 39f9770896164fbeba5b6b4c08276e89
+#: smeshBuilder.Mesh.ExtrusionByNormal:23
+msgid "empty list otherwise."
+msgstr ""
+
+# 45a8825c374b4533970aac4c215817d2
+# e943d5dc089d40eca3a9b465a446ed73
+# aaa7d5be7ced4f5e82c5612da73ce778
+# 1109984bbb4e44ee8e67d84d80964977
+# be9608518a6b4e518dc93ab2d331ffe4
+# 8a966f83249c4beb8053f6cc5c81a19a
+#: smeshBuilder.Mesh.ExtrusionByNormal:25 smeshBuilder.Mesh.ExtrusionSweep:13
+#: smeshBuilder.Mesh.ExtrusionSweepObject:14
+#: smeshBuilder.Mesh.ExtrusionSweepObject1D:13
+#: smeshBuilder.Mesh.ExtrusionSweepObject2D:13
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:24
+msgid ":ref:`tui_extrusion` example"
+msgstr ""
+
+# 4116cd0ed61647159eb0490a87298fbb
+#: smeshBuilder.Mesh.ExtrusionSweep:3
+msgid "the list of ids of elements or nodes for extrusion"
+msgstr ""
+
+# d1e652596d5f4ddaaf3455f248b2307c
+#: smeshBuilder.Mesh.ExtrusionSweep:9
+msgid "is True if elements with given ids are nodes"
+msgstr ""
+
+# 32a048c785204455b5d9c022574477db
+# 4a94ca72e61d43b6ae2970dc92afa99f
+# 2ce54d1f8e164d9b95de8cca3e5ff884
+# dfe23afd36a1476781017daabc61d682
+# 1d6da843c9ab4ba2add2133828a783e5
+# 459a919a4a0b4ed1b76067373d9f6b34
+# 76c8fe399461419cbe693b60c8fda184
+#: smeshBuilder.Mesh.ExtrusionSweep:11
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:22
+#: smeshBuilder.Mesh.RotationSweep:12 smeshBuilder.Mesh.RotationSweepObject:13
+#: smeshBuilder.Mesh.RotationSweepObject1D:13
+#: smeshBuilder.Mesh.RotationSweepObject2D:13
+#: smeshBuilder.Mesh.RotationSweepObjects:15
+msgid ""
+"the list of created groups (SMESH_GroupBase) if MakeGroups=True, empty "
+"list otherwise"
+msgstr ""
+
+# 1c5324f6a077431ab6b9ae4eb29663aa
+#: smeshBuilder.Mesh.ExtrusionSweepObject:1
+msgid ""
+"Generate new elements by extrusion of the elements or nodes which belong "
+"to the object"
+msgstr ""
+
+# 6edea75c9be7418b970304f4dfe27bcd
+#: smeshBuilder.Mesh.ExtrusionSweepObject:3
+msgid ""
+"the object whose elements or nodes should be processed. It can be a mesh,"
+" a sub-mesh or a group."
+msgstr ""
+
+# 0f4d92743b644124acc44a3407e936c9
+#: smeshBuilder.Mesh.ExtrusionSweepObject:10
+msgid "is True if elements to extrude are nodes"
+msgstr ""
+
+# 117e2d5cef344ea994570972cd6475f3
+#: smeshBuilder.Mesh.ExtrusionSweepObject1D:1
+msgid "Generate new elements by extrusion of edges which belong to the object"
+msgstr ""
+
+# 95122d4fd03f4b83ac97197df03a8e61
+#: smeshBuilder.Mesh.ExtrusionSweepObject1D:3
+msgid ""
+"object whose 1D elements should be processed. It can be a mesh, a sub-"
+"mesh or a group."
+msgstr ""
+
+# a9fd4fd64585433688293ed1f14e71d1
+# 18e41dacbea74f02af80309fa4544c6d
+#: smeshBuilder.Mesh.ExtrusionSweepObject1D:9
+#: smeshBuilder.Mesh.MirrorMakeMesh:7
+msgid "to generate new groups from existing ones"
+msgstr ""
+
+# 626f2f387bfd43e5b5c563a8e68d8994
+#: smeshBuilder.Mesh.ExtrusionSweepObject2D:1
+msgid "Generate new elements by extrusion of faces which belong to the object"
+msgstr ""
+
+# 3835b1ef78af46099dddf8ffd3749ee7
+#: smeshBuilder.Mesh.ExtrusionSweepObject2D:3
+msgid ""
+"object whose 2D elements should be processed. It can be a mesh, a sub-"
+"mesh or a group."
+msgstr ""
+
+# 2874c97881034b43a417ebe95fb6d666
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:1
+msgid "Generate new elements by extrusion of the given elements and nodes"
+msgstr ""
+
+# bf8d47fedbfe4fd49ca9aca6f7074ac0
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:11
+msgid "optional scale factors to apply during extrusion"
+msgstr ""
+
+# 0c7f9aadd6c146718c840b699f5bf5cd
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:12
+msgid ""
+"if *True*, scaleFactors are spread over all *scaleFactors*, else "
+"scaleFactors[i] is applied to nodes at the i-th extrusion step"
+msgstr ""
+
+# 3b541903f8eb4071af7f80ec4c85d3c8
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:14
+msgid ""
+"optional scaling center; if not provided, a gravity center of nodes and "
+"elements being extruded is used as the scaling center. It can be either"
+"          - a list of tree components of the point or         - a node ID"
+" or         - a GEOM point"
+msgstr ""
+
+# 5019c64c350247c8b446e8a32f82dc8e
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:14
+msgid ""
+"optional scaling center; if not provided, a gravity center of nodes and "
+"elements being extruded is used as the scaling center. It can be either"
+msgstr ""
+
+# 666891c8023e4f38af346f354487557e
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:18
+msgid "a list of tree components of the point or"
+msgstr ""
+
+# c4ad62a1a5dc4f8780d9355a9bc1b957
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:19
+msgid "a node ID or"
+msgstr ""
+
+# 5d7e6fdd9d1e44c4b9e5ea443b28c193
+#: smeshBuilder.Mesh.ExtrusionSweepObjects:20
+msgid "a GEOM point"
+msgstr ""
+
+# c16514f3c26f4ed784b97d9c12cb913b
+#: smeshBuilder.Mesh.FillHole:1
+msgid "Fill with 2D elements a hole defined by a SMESH.FreeBorder."
+msgstr ""
+
+# 527450feb9754d7c990fd2232da6442d
+#: smeshBuilder.Mesh.FillHole:3
+msgid ""
+"either a SMESH.FreeBorder or a list on node IDs. These nodes must "
+"describe all sequential nodes of the hole border. The first and the last "
+"nodes must be the same. Use FindFreeBorders() to get nodes of holes."
+msgstr ""
+
+# ff6d2900fb5b4e719845f70c608156c5
+#: smeshBuilder.Mesh.FindCoincidentFreeBorders:1
+msgid "Return groups of FreeBorder's coincident within the given tolerance."
+msgstr ""
+
+# 6dcbbb32259842a59da9b99826629865
+#: smeshBuilder.Mesh.FindCoincidentFreeBorders:3
+msgid ""
+"the tolerance. If the tolerance <= 0.0 then one tenth of an average size "
+"of elements adjacent to free borders being compared is used."
+msgstr ""
+
+# bd29c83ede0b420581edbfb43ce4afb2
+#: smeshBuilder.Mesh.FindCoincidentFreeBorders:6
+msgid "SMESH.CoincidentFreeBorders structure"
+msgstr ""
+
+# aac72c01877d425a9a214eb2528fbf76
+#: smeshBuilder.Mesh.FindCoincidentNodes:1
+msgid "Find groups of adjacent nodes within Tolerance."
+msgstr ""
+
+# 2d32755b2be94bd0b368d13b248321d1
+# 223b44cdab944b36a06ece8556a117a2
+#: smeshBuilder.Mesh.FindCoincidentNodes:3
+#: smeshBuilder.Mesh.FindCoincidentNodesOnPart:3
+msgid "the value of tolerance"
+msgstr ""
+
+# 8d2524630f3345df9e8f35913be222fe
+# 0a47cd9f52f9428ca79a7051209ebdda
+#: smeshBuilder.Mesh.FindCoincidentNodes:4
+#: smeshBuilder.Mesh.FindCoincidentNodesOnPart:6
+msgid ""
+"if *True*, in quadratic mesh puts corner and medium nodes in separate "
+"groups thus preventing their further merge."
+msgstr ""
+
+# 1cdbf2150e29497991ec4a1287453d25
+# 22a4fee6431b446098f2540c1d2782d1
+#: smeshBuilder.Mesh.FindCoincidentNodes:8
+#: smeshBuilder.Mesh.FindCoincidentNodesOnPart:10
+msgid "the list of groups of nodes IDs (e.g. [[1,12,13],[4,25]])"
+msgstr ""
+
+# 54a9056e90884545b53359ff3ed83834
+#: smeshBuilder.Mesh.FindCoincidentNodesOnPart:1
+msgid "Find groups of ajacent nodes within Tolerance."
+msgstr ""
+
+# 8614079344054c5d8ac7ea069b68237a
+#: smeshBuilder.Mesh.FindCoincidentNodesOnPart:4
+msgid "SubMesh, Group or Filter"
+msgstr ""
+
+# 1ffbd227b50c482c8915531361a124c4
+#: smeshBuilder.Mesh.FindCoincidentNodesOnPart:5
+msgid "list of either SubMeshes, Groups or node IDs to exclude from search"
+msgstr ""
+
+# fc63f6cc9bab4804a88320f9bb9600fb
+#: smeshBuilder.Mesh.FindElementByNodes:1
+msgid "Return an element based on all given nodes."
+msgstr ""
+
+# 371a6f262b7d4f33b7de7086898585fb
+#: smeshBuilder.Mesh.FindElementsByPoint:1
+msgid "Find the elements where a point lays IN or ON"
+msgstr ""
+
+# 30b51e3601434245a3eefd35b666ee96
+# 3f2752dee91b40b5be761e444733fa9d
+# 3146cbd7c3cb4028af3e20f145d9d2d0
+# 4c591eb9c579403aab379d9644db4312
+#: smeshBuilder.Mesh.FindElementsByPoint:3
+#: smeshBuilder.Mesh.FindNodeClosestTo:3
+#: smeshBuilder.Mesh.MeshToPassThroughAPoint:3
+#: smeshBuilder.Mesh.MoveClosestNodeToPoint:3
+msgid "the X coordinate of a point"
+msgstr ""
+
+# 62fbd1a3dd9f4b67bd67aff4e2c8a885
+# 0fb150c354d64d7c8e91589998fe348b
+# 9bd687ce118f4c47bf8764db3ae6c015
+# 422b3df5c4d34575b38364ab133014b0
+#: smeshBuilder.Mesh.FindElementsByPoint:4
+#: smeshBuilder.Mesh.FindNodeClosestTo:4
+#: smeshBuilder.Mesh.MeshToPassThroughAPoint:4
+#: smeshBuilder.Mesh.MoveClosestNodeToPoint:4
+msgid "the Y coordinate of a point"
+msgstr ""
+
+# fb070ad4421545e492af21fb1eddc3ca
+# 5e0218c107494c049616b4c1b6668212
+# 400f4e0ca9e745a698b1b0b276d84579
+# e408b7659e724d95adca035f371af076
+#: smeshBuilder.Mesh.FindElementsByPoint:5
+#: smeshBuilder.Mesh.FindNodeClosestTo:5
+#: smeshBuilder.Mesh.MeshToPassThroughAPoint:5
+#: smeshBuilder.Mesh.MoveClosestNodeToPoint:5
+msgid "the Z coordinate of a point"
+msgstr ""
+
+# e3813715abb44fc987676fbea8854c88
+#: smeshBuilder.Mesh.FindElementsByPoint:6
+msgid ""
+"type of elements to find; either of (SMESH.NODE, SMESH.EDGE, SMESH.FACE, "
+"SMESH.VOLUME); SMESH.ALL type means elements of any type excluding nodes,"
+" discrete and 0D elements."
+msgstr ""
+
+# 7dd33cb667a649d5b962ec7a1bfb09f0
+#: smeshBuilder.Mesh.FindElementsByPoint:9
+msgid "a part of mesh (group, sub-mesh) to search within"
+msgstr ""
+
+# 540b448102b746b3879a4126094cd04f
+#: smeshBuilder.Mesh.FindElementsByPoint:11
+msgid "list of IDs of found elements"
+msgstr ""
+
+# 45a45cc8aafd484f9208312cb86f9af6
+#: smeshBuilder.Mesh.FindEqualElements:1
+msgid "Find the elements built on the same nodes."
+msgstr ""
+
+# 4fce3c3eb62c46a096d74c2283373dde
+#: smeshBuilder.Mesh.FindEqualElements:3
+msgid "Mesh or SubMesh, or Group of elements for searching"
+msgstr ""
+
+# 37c974a151ab4801bfef7c7d24f6f388
+#: smeshBuilder.Mesh.FindEqualElements:5
+msgid "the list of groups of equal elements IDs (e.g. [[1,12,13],[4,25]])"
+msgstr ""
+
+# 46ab142b430f4fad8be66b04aa173366
+#: smeshBuilder.Mesh.FindFreeBorders:1
+msgid "Returns all or only closed free borders"
+msgstr ""
+
+# 8eb0fa24ae4049ee9f5c85b7272dc818
+#: smeshBuilder.Mesh.FindFreeBorders:3
+msgid "list of SMESH.FreeBorder's"
+msgstr ""
+
+# 1c0c36da76664a72add79ebb5394fd6a
+#: smeshBuilder.Mesh.FindNodeClosestTo:1
+msgid "Find the node closest to a point"
+msgstr ""
+
+# b1f639be7ee9494791fb516f73403402
+# 68920dfed72e49c1810873d99aa7dec2
+#: smeshBuilder.Mesh.FindNodeClosestTo:7
+#: smeshBuilder.Mesh.MoveClosestNodeToPoint:9
+msgid "the ID of a node"
+msgstr ""
+
+# 2651e2b610844f079375fb9dbe7f224e
+#: smeshBuilder.Mesh.FunctorValue:1
+msgid "Return value of a functor for a given element"
+msgstr ""
+
+# 0ba8a013955b4a90a4661b8f980ae09d
+#: smeshBuilder.Mesh.FunctorValue:3
+msgid ""
+"an item of SMESH.FunctorType enum Type \"SMESH.FunctorType._items\" in "
+"the Python Console to see all items."
+msgstr ""
+
+# 32346a098c7041d8b47ee0f51d454de6
+#: smeshBuilder.Mesh.FunctorValue:5
+msgid "element or node ID"
+msgstr ""
+
+# 8a003ccbc9a84a4689dc888e6e16ea00
+#: smeshBuilder.Mesh.FunctorValue:6
+msgid "*elemId* is ID of element or node"
+msgstr ""
+
+# c8e41c5a725840f4b31cace71fdab206
+#: smeshBuilder.Mesh.FunctorValue:8
+msgid "the functor value or zero in case of invalid arguments"
+msgstr ""
+
+# 7cce1c3889854dcca3989702b2259d0c
+#: smeshBuilder.Mesh.GetAlgoState:1
+msgid ""
+"Return errors of hypotheses definition. The list of errors is empty if "
+"everything is OK."
+msgstr ""
+
+# 0576061edca64e5b84786c5dea756805
+# 98d44e05f9ca4125bc430b192429b8b7
+#: smeshBuilder.Mesh.GetAlgoState:4 smeshBuilder.Mesh.IsReadyToCompute:3
+msgid "a sub-shape of a mesh shape"
+msgstr ""
+
+# ac5d534627e64907a1900f4a984411ba
+#: smeshBuilder.Mesh.GetAlgoState:6
+msgid "a list of errors"
+msgstr ""
+
+# 29f19e8c0f654d01953f68d68b204e01
+#: smeshBuilder.Mesh.GetArea:2
+msgid "Get area of 2D element or sum of areas of all 2D mesh elements"
+msgstr ""
+
+# 5edba8f9a8924eb9adf0c5013caf28ac
+#: smeshBuilder.Mesh.GetArea:2
+msgid ""
+"elemId mesh element ID (if not defined - sum of areas of all 2D elements "
+"will be calculated)"
+msgstr ""
+
+# 8197a466527b48a8acd45af8016fe567
+#: smeshBuilder.Mesh.GetArea:4
+msgid ""
+"element's area value if *elemId* is specified or sum of all 2D mesh "
+"elements' areas otherwise"
+msgstr ""
+
+# 8daecbe9a7cb4bf2b0096aaa97519b00
+#: smeshBuilder.Mesh.GetAspectRatio:1
+msgid "Get aspect ratio of 2D or 3D element."
+msgstr ""
+
+# 3eb00d2391ed471dbb4d6f86b79667c0
+#: smeshBuilder.Mesh.GetAspectRatio:5
+msgid "element's aspect ratio value"
+msgstr ""
+
+# 739ec0ec6a6f464d8512013320208b47
+#: smeshBuilder.Mesh.GetAutoColor:1
+msgid "Get flag of object auto color mode."
+msgstr ""
+
+# ab1d8d329e3f4bc9aae6dac918633bfd
+#: smeshBuilder.Mesh.GetBallDiameter:1
+msgid ""
+"Return diameter of a ball discrete element or zero in case of an invalid "
+"*id*"
+msgstr ""
+
+# a807a080206b41838800b920c092a8ed
+# 8b88967abc9544eba2b1dea80b344158
+#: smeshBuilder.Mesh.GetBoundingBox:1
+#: smeshBuilder.smeshBuilder.GetBoundingBox:1
+msgid ""
+"Get measure structure specifying bounding box data of the specified "
+"object(s)"
+msgstr ""
+
+# 2147101885d544aea3f6f3a71eda6cdd
+#: smeshBuilder.Mesh.GetBoundingBox:4
+msgid ""
+"if *IDs* is a list of IDs, *True* value in this parameters specifies that"
+" *objects* are elements, *False* specifies that *objects* are nodes"
+msgstr ""
+
+# 3362a73b19134d82882a53243b3a002d
+# c04e8b5ac4ad4c10ab544e0ec29a44c1
+#: smeshBuilder.Mesh.GetBoundingBox:7
+#: smeshBuilder.smeshBuilder.GetBoundingBox:5
+msgid "Measure structure **BoundingBox()**"
+msgstr ""
+
+# 6a639a7d77604c1ca8c9b4ccc2ebf841
+#: smeshBuilder.Mesh.GetComputeErrors:1
+msgid "Return a list of error messages (SMESH.ComputeError) of the last Compute()"
+msgstr ""
+
+# 2a896de65dc24444912ff70b31138093
+#: smeshBuilder.Mesh.GetElemFaceNodes:1
+msgid "Return nodes of given face (counted from zero) for given volumic element."
+msgstr ""
+
+# a752558def9e41c1978ea78114f06ea2
+#: smeshBuilder.Mesh.GetElemNbNodes:1
+msgid "Return the number of nodes of the given element"
+msgstr ""
+
+# 37598ec881764feba924a2b180e1abeb
+#: smeshBuilder.Mesh.GetElemNbNodes:3
+msgid "an integer value > 0 or -1 if there is no element for the given ID"
+msgstr ""
+
+# 72d5ba1cbdc044f9870d353ce95bfe65
+#: smeshBuilder.Mesh.GetElemNode:1
+msgid ""
+"Return the node ID the given (zero based) index for the given element If "
+"there is no element for the given ID - return -1 If there is no node for "
+"the given index - return -2"
+msgstr ""
+
+# 11016a8d170344099cf358919cdf7a70
+# c79702c20c4542ad9780ec5fdeec9e0f
+# 69975b8a8faa4e7cacdec52b8b854fea
+# c345c75bf5af42cbbe6ba043a4376db4
+# 2092d156aa3849e182c70e4707b50f51
+# 9e48d17b9ebe43cc943b9d13344629d0
+# e8ad657758594b76b279162c2ffff4a1
+# 6d4a1576600e4bb7b58d032d69b167bd
+# 8926c0578174483691a072fe00fb1814
+# 78191756c082457a822e4137ad46eee5
+# 4b09abf6e5d24e07b68345eef201d755
+# d28edeaf041b4616a0dfeb3921ef93ea
+# 5e06226b1c43482788d14fbe38e758a0
+# 87f84c00ea424ef6a5f87ff062ce3c68
+# 0722b74919ac4c3591c548d6f7518c91
+# 8f19baaff3134a18a78b09eafb8dcada
+# c4fc09556fa04658be2cf0a18d7ff6fa
+# c8e469a86a984d5290143a788228c9b7
+# 87cfba8d6a6742ee8fc656f6264d385b
+# 942313a6ef044ce4a1ff677a29cd1ec2
+# 383ac4b701d045788d57e248bcbb8423
+# 5093a07e60d040bababb3f2c9d87abbc
+# a17cbd0c3c244a779f8dd40bee937139
+# 7dcc95e194d243b4a81c28c439af5a2d
+# 56104864a17c400c837bb83f64251f2d
+# 81f75b3336ac482b89544f9a461158dc
+# ac612c6cd39840258a32e81f049674b5
+# 5b55262ad1274ecda104df1859b4673b
+# 588c9c6ac6da4708b6475d56267a861f
+# dc63996b2eaf45a280516c4f7379bd37
+#: smeshBuilder.Mesh.GetElemNode:5 smeshBuilder.Mesh.Nb0DElements:3
+#: smeshBuilder.Mesh.NbBalls:3 smeshBuilder.Mesh.NbBiQuadQuadrangles:3
+#: smeshBuilder.Mesh.NbBiQuadTriangles:3 smeshBuilder.Mesh.NbEdges:3
+#: smeshBuilder.Mesh.NbEdgesOfOrder:6 smeshBuilder.Mesh.NbElements:3
+#: smeshBuilder.Mesh.NbFaces:3 smeshBuilder.Mesh.NbFacesOfOrder:6
+#: smeshBuilder.Mesh.NbHexagonalPrisms:3 smeshBuilder.Mesh.NbHexas:3
+#: smeshBuilder.Mesh.NbHexasOfOrder:6 smeshBuilder.Mesh.NbNodes:3
+#: smeshBuilder.Mesh.NbPolygons:6 smeshBuilder.Mesh.NbPolyhedrons:3
+#: smeshBuilder.Mesh.NbPrisms:3 smeshBuilder.Mesh.NbPrismsOfOrder:6
+#: smeshBuilder.Mesh.NbPyramids:3 smeshBuilder.Mesh.NbPyramidsOfOrder:6
+#: smeshBuilder.Mesh.NbQuadrangles:3 smeshBuilder.Mesh.NbQuadranglesOfOrder:5
+#: smeshBuilder.Mesh.NbSubMesh:3 smeshBuilder.Mesh.NbTetras:3
+#: smeshBuilder.Mesh.NbTetrasOfOrder:6 smeshBuilder.Mesh.NbTriQuadraticHexas:3
+#: smeshBuilder.Mesh.NbTriangles:3 smeshBuilder.Mesh.NbTrianglesOfOrder:6
+#: smeshBuilder.Mesh.NbVolumes:3 smeshBuilder.Mesh.NbVolumesOfOrder:6
+msgid "an integer value"
+msgstr ""
+
+# 3290fda355bf478b9b234734673ba8cf
+#: smeshBuilder.Mesh.GetElemNodes:1
+msgid "Return the IDs of nodes of the given element"
+msgstr ""
+
+# bfe7c3c9fff24777a94ab8e55ef9a73f
+# e584b6f5cdc74cd2aeea533f1e542d5a
+#: smeshBuilder.Mesh.GetElemNodes:3 smeshBuilder.Mesh.GetNodeInverseElements:4
+msgid "a list of integer values"
+msgstr ""
+
+# 8a5cfcdeb86841e2a921fe520ba42987
+#: smeshBuilder.Mesh.GetElementGeomType:1
+msgid "Return the geometric type of mesh element"
+msgstr ""
+
+# e66041a86a2b46f0a0d010fc76d07bae
+#: smeshBuilder.Mesh.GetElementGeomType:3
+msgid ""
+"the value from SMESH::EntityType enumeration     Type "
+"SMESH.EntityType._items in the Python Console to see all possible values."
+msgstr ""
+
+# c4de80da1de6470f8671820ce0bbf1f6
+#: smeshBuilder.Mesh.GetElementGeomType:5
+msgid "the value from SMESH::EntityType enumeration"
+msgstr ""
+
+# 2f85ba210b8e49f1ac0fef6a2fe33883
+#: smeshBuilder.Mesh.GetElementGeomType:6
+msgid ""
+"Type SMESH.EntityType._items in the Python Console to see all possible "
+"values."
+msgstr ""
+
+# 6c63ea8b4c7d4b63a6bc4ac3c780aca2
+#: smeshBuilder.Mesh.GetElementPosition:1
+msgid "Return the position of an element on the shape"
+msgstr ""
+
+# ca525309f1694ba3993d7ee45c180670
+#: smeshBuilder.Mesh.GetElementPosition:3
+msgid "SMESH::ElementPosition"
+msgstr ""
+
+# 6e9121b74c1f48e7bf53fd2fd87c91f4
+#: smeshBuilder.Mesh.GetElementShape:1
+msgid "Return the shape type of mesh element"
+msgstr ""
+
+# 659b85bd91604f559d3f8c5011ee46f6
+#: smeshBuilder.Mesh.GetElementShape:3
+msgid ""
+"the value from SMESH::GeometryType enumeration.     Type "
+"SMESH.GeometryType._items in the Python Console to see all possible "
+"values."
+msgstr ""
+
+# e851e9b286414ce79575b621de65a1b6
+#: smeshBuilder.Mesh.GetElementShape:5
+msgid "the value from SMESH::GeometryType enumeration."
+msgstr ""
+
+# 9956c2283b0f4c4d9ee6906d63711ac6
+#: smeshBuilder.Mesh.GetElementShape:6
+msgid ""
+"Type SMESH.GeometryType._items in the Python Console to see all possible "
+"values."
+msgstr ""
+
+# 18e82d9950794e00933e30d5c2d70929
+#: smeshBuilder.Mesh.GetElementType:1
+msgid "Return the type of mesh element"
+msgstr ""
+
+# 2a147e870f5f492cb84afdef131ba058
+#: smeshBuilder.Mesh.GetElementType:3
+msgid ""
+"the value from SMESH::ElementType enumeration     Type "
+"SMESH.ElementType._items in the Python Console to see all possible "
+"values."
+msgstr ""
+
+# f3d795a2c04a414f8c5916dc40d8c9d7
+#: smeshBuilder.Mesh.GetElementType:5
+msgid "the value from SMESH::ElementType enumeration"
+msgstr ""
+
+# 212db060cf85470b9bab6482e9a463ae
+#: smeshBuilder.Mesh.GetElementType:6
+msgid ""
+"Type SMESH.ElementType._items in the Python Console to see all possible "
+"values."
+msgstr ""
+
+# cc434adc3d45460eb95bfedc4a65b308
+#: smeshBuilder.Mesh.GetElementsByNodes:1
+msgid "Return elements including all given nodes."
+msgstr ""
+
+# 41004c036d294adbbac66a341f41fe06
+#: smeshBuilder.Mesh.GetElementsByType:1
+msgid "Return the list of IDs of mesh elements with the given type"
+msgstr ""
+
+# 9363d47e99a44908b173a981e608e424
+#: smeshBuilder.Mesh.GetElementsByType:3
+msgid ""
+"the required type of elements, either of (SMESH.NODE, SMESH.EDGE, "
+"SMESH.FACE or SMESH.VOLUME)"
+msgstr ""
+
+# c1958ca716614fffafc792953232023e
+#: smeshBuilder.Mesh.GetElementsByType:6
+msgid "list of integer values"
+msgstr ""
+
+# a29539be68854ef98ba640e260d640a1
+#: smeshBuilder.Mesh.GetElementsId:1
+msgid "Return the list of mesh elements IDs"
+msgstr ""
+
+# 9bd190bb06084568a0c917534d0eae10
+# be0054a7a01c4592a073ffb4c1bacf0c
+# fbb192bed78943e58c5ce647d9c1c2a6
+# 51b09592907741e6a29b0e94a426ce35
+# 7f69ab6395814bdd9b9fe08a4e9e1311
+#: smeshBuilder.Mesh.GetElementsId:3 smeshBuilder.Mesh.GetNodesId:3
+#: smeshBuilder.Mesh.GetSubMeshElementsId:6
+#: smeshBuilder.Mesh.GetSubMeshNodesId:7
+#: smeshBuilder.smeshBuilder.GetSubShapesId:3
+msgid "the list of integer values"
+msgstr ""
+
+# d7517dd858ab44ab92f50a1002d14273
+#: smeshBuilder.Mesh.GetFaceNormal:1
+msgid "Return three components of normal of given mesh face"
+msgstr ""
+
+# 687fceddc9ac4cd3b651c6a47296b9cd
+#: smeshBuilder.Mesh.GetFaceNormal:2
+msgid "(or an empty array in KO case)"
+msgstr ""
+
+# 1412506de94e45f1b05405eff9611ad9
+#: smeshBuilder.Mesh.GetFailedShapes:1
+msgid ""
+"Return a list of sub-shapes meshing of which failed, grouped into GEOM "
+"groups by error of an algorithm"
+msgstr ""
+
+# ddaabb92c1ef44a0a269535fef085e3d
+#: smeshBuilder.Mesh.GetFailedShapes:4
+msgid "if *True*, the returned groups will be published in the study"
+msgstr ""
+
+# c88fb7eeaff94a49b8e3db043a0af398
+#: smeshBuilder.Mesh.GetFailedShapes:6
+msgid "a list of GEOM groups each named after a failed algorithm"
+msgstr ""
+
+# c5618f05cbd5474aa9b0eeff3cdeb324
+#: smeshBuilder.Mesh.GetFreeBorders:1
+msgid ""
+"Verify whether a 2D mesh element has free edges (edges connected to one "
+"face only)"
+msgstr ""
+
+# de1289c4aa064546a44e435372d5d992
+#: smeshBuilder.Mesh.GetFreeBorders:3
+msgid "Return a list of special structures (borders)."
+msgstr ""
+
+# 975061fc2efc401096403aaaad97a899
+#: smeshBuilder.Mesh.GetFreeBorders:5
+msgid ""
+"a list of SMESH.FreeEdges. Border structure:: edge id and ids of two its "
+"nodes."
+msgstr ""
+
+# df8eac97931d4b5f9cc346cae7a12ffa
+#: smeshBuilder.Mesh.GetFunctor:1
+msgid "Return a cached numerical functor by its type."
+msgstr ""
+
+# e1b9d4d7a3a0409c96dbb2ce05324615
+#: smeshBuilder.Mesh.GetFunctor:3
+msgid ""
+"an item of SMESH.FunctorType enumeration. Type SMESH.FunctorType._items "
+"in the Python Console to see all items. Note that not all items "
+"correspond to numerical functors."
+msgstr ""
+
+# b37d12aecc534f9e8610b36e090a67ba
+#: smeshBuilder.Mesh.GetFunctor:7
+msgid "SMESH_NumericalFunctor. The functor is already initialized     with a mesh"
+msgstr ""
+
+# f42ca52ddb66432797aa0672ff0226f0
+#: smeshBuilder.Mesh.GetFunctor:9
+msgid "SMESH_NumericalFunctor. The functor is already initialized"
+msgstr ""
+
+# a008dc3939794ff9ba612a9c9f6ceb11
+#: smeshBuilder.Mesh.GetFunctor:10
+msgid "with a mesh"
+msgstr ""
+
+# c6ab738621e842ea9221cbc1f7445ed9
+#: smeshBuilder.Mesh.GetGeometryByMeshElement:1
+msgid ""
+"Return a geometrical object on which the given element was built. The "
+"returned geometrical object, if not nil, is either found in the study or "
+"published by this method with the given name"
+msgstr ""
+
+# 1749be4e1c4d4424aa6b461083e71069
+#: smeshBuilder.Mesh.GetGeometryByMeshElement:5
+msgid "the id of the mesh element"
+msgstr ""
+
+# 1192cb449ef44e9483ed7a6f879a677a
+#: smeshBuilder.Mesh.GetGeometryByMeshElement:6
+msgid "the user-defined name of the geometrical object"
+msgstr ""
+
+# e902e28a08ff4b2cac090e904b33e2d5
+#: smeshBuilder.Mesh.GetGeometryByMeshElement:8
+msgid "GEOM::GEOM_Object instance"
+msgstr ""
+
+# 50ebdfe142d54e3fb503f174ffe96694
+#: smeshBuilder.Mesh.GetGroupByName:1
+msgid "Find groups by name and type"
+msgstr ""
+
+# e0bf267cd076406cb98bc81e223764ef
+#: smeshBuilder.Mesh.GetGroupByName:3
+msgid "name of the group of interest"
+msgstr ""
+
+# 52b75d9634cb41ba8bb10aa70b025935
+#: smeshBuilder.Mesh.GetGroupByName:4
+msgid ""
+"type of elements the groups contain; either of (SMESH.ALL, SMESH.NODE, "
+"SMESH.EDGE, SMESH.FACE, SMESH.VOLUME); by default one group of any type "
+"of elements is returned if elemType == SMESH.ALL then all groups of any "
+"type are returned"
+msgstr ""
+
+# 97ea362068cc4615aff536330e33cdb4
+#: smeshBuilder.Mesh.GetGroupByName:9
+msgid "a list of SMESH_GroupBase's"
+msgstr ""
+
+# 50e3facd53e94198b1db18d7c78f6129
+#: smeshBuilder.Mesh.GetGroupNames:1
+msgid "Get the list of names of groups existing in the mesh"
+msgstr ""
+
+# a05c7af4139541f09c310ec8e6e6a3ea
+#: smeshBuilder.Mesh.GetGroupNames:3
+msgid "list of strings"
+msgstr ""
+
+# 1835c5a0a32043619dacd894ac5e5efc
+#: smeshBuilder.Mesh.GetGroups:1
+msgid ""
+"Get the list of groups existing in the mesh in the order of creation "
+"(starting from the oldest one)"
+msgstr ""
+
+# 10c835b7bd124c03a2b53830e1830b9c
+#: smeshBuilder.Mesh.GetGroups:4
+msgid ""
+"type of elements the groups contain; either of (SMESH.ALL, SMESH.NODE, "
+"SMESH.EDGE, SMESH.FACE, SMESH.VOLUME); by default groups of elements of "
+"all types are returned"
+msgstr ""
+
+# 43b224476cdc4408985aeac2c361bd87
+#: smeshBuilder.Mesh.GetGroups:8
+msgid "a sequence of SMESH_GroupBase"
+msgstr ""
+
+# 795fad6da0984542a2a9ee1269bfe5a4
+#: smeshBuilder.Mesh.GetHypothesisList:1
+msgid "Get the list of hypotheses added on a geometry"
+msgstr ""
+
+# d09e4639b2a54308b6cf80d4efca8082
+# 6c20db5a884740e58c964f46fdca507d
+#: smeshBuilder.Mesh.GetHypothesisList:3 smeshBuilder.Mesh.RemoveHypothesis:4
+msgid "a sub-shape of mesh geometry"
+msgstr ""
+
+# b6b1f11224b749549509b9007dc3b9d0
+#: smeshBuilder.Mesh.GetHypothesisList:5
+msgid "the sequence of SMESH_Hypothesis"
+msgstr ""
+
+# 558f8f24f5cd42849fa409da91d2689a
+#: smeshBuilder.Mesh.GetIDSource:1
+msgid ""
+"Wrap a list of IDs of elements or nodes into SMESH_IDSource which can be "
+"passed as argument to a method accepting mesh, group or sub-mesh"
+msgstr ""
+
+# 61742fe7856f41f49003ea1492ac7b60
+#: smeshBuilder.Mesh.GetIDSource:4
+msgid "list of IDs"
+msgstr ""
+
+# cf65d4dbe01e4b5494ad31458574d616
+#: smeshBuilder.Mesh.GetIDSource:5
+msgid ""
+"type of elements; this parameter is used to distinguish IDs of nodes from"
+" IDs of elements; by default ids are treated as IDs of elements; use "
+"SMESH.NODE if ids are IDs of nodes."
+msgstr ""
+
+# 592b631f4bd6424aa38f429a05919ab3
+#: smeshBuilder.Mesh.GetIDSource:9
+msgid "an instance of SMESH_IDSource"
+msgstr ""
+
+# 43f963b565ff41448c32572766554eb6
+#: smeshBuilder.Mesh.GetIDSource:15
+msgid "call UnRegister() for the returned object as soon as it is no more useful:"
+msgstr ""
+
+# f80671af055e4968b6677abda08ed9ed
+#: smeshBuilder.Mesh.GetIDSource:14
+msgid ""
+"idSrc = mesh.GetIDSource( [1,3,5], SMESH.NODE ) mesh.DoSomething( idSrc )"
+" idSrc.UnRegister()"
+msgstr ""
+
+# 1a9345f86be749fea6025482df7c3584
+#: smeshBuilder.Mesh.GetId:1
+msgid "Get the internal ID"
+msgstr ""
+
+# 4fad2fc6a92f4b65826ae34ec6e11db0
+#: smeshBuilder.Mesh.GetId:3
+msgid "integer value, which is the internal Id of the mesh"
+msgstr ""
+
+# 5038d36c19fa45ff9c456d151b578951
+#: smeshBuilder.Mesh.GetIdsFromFilter:1
+msgid ""
+"Pass mesh elements through the given filter and return IDs of fitting "
+"elements"
+msgstr ""
+
+# 446a54c1a23749e283233fa0d4a2f64a
+# f006491f4414462e822b22d5d893e5a3
+# 5b723c286d72473fb884b611816fae02
+#: smeshBuilder.Mesh.GetIdsFromFilter:3 smeshBuilder.smeshBuilder.GetFilter:14
+#: smeshBuilder.smeshBuilder.GetFilterFromCriteria:6
+msgid "SMESH_Filter"
+msgstr ""
+
+# e6796947add04f8ab0c1a3e2f75721d8
+#: smeshBuilder.Mesh.GetIdsFromFilter:5
+msgid "a list of ids"
+msgstr ""
+
+# 1c2f8df6e7be491e9ae5444d2e62998a
+#: smeshBuilder.Mesh.GetLastCreatedElems:4
+msgid "If during the last operation of MeshEditor some elements were"
+msgstr ""
+
+# 524111c98c0b400eb5950636b086753c
+#: smeshBuilder.Mesh.GetLastCreatedElems:2
+msgid "created this method return the list of their IDs,"
+msgstr ""
+
+# c3385f3d9c5a4c6c858f354958e10aa8
+#: smeshBuilder.Mesh.GetLastCreatedElems:4
+msgid "if new elements were not created - return empty list"
+msgstr ""
+
+# 2935846838ba4a2483e38860edcfa319
+# f828773f5c38492e9dccb49302f7cc05
+#: smeshBuilder.Mesh.GetLastCreatedElems:6
+#: smeshBuilder.Mesh.GetLastCreatedNodes:6
+msgid "the list of integer values (can be empty)"
+msgstr ""
+
+# 63879c2cf4ee47b9b5a1585b63665a27
+#: smeshBuilder.Mesh.GetLastCreatedNodes:4
+msgid "If during the last operation of MeshEditor some nodes were"
+msgstr ""
+
+# f77198d42e124a85bfa2f336e8a109a9
+#: smeshBuilder.Mesh.GetLastCreatedNodes:2
+msgid "created, this method return the list of their IDs,"
+msgstr ""
+
+# 71488b8e5d614bafb130c29b051a393d
+#: smeshBuilder.Mesh.GetLastCreatedNodes:4
+msgid "if new nodes were not created - return empty list"
+msgstr ""
+
+# a9c48c0c947a4049b35081551f99fd36
+#: smeshBuilder.Mesh.GetLength:1
+msgid "Get length of 1D element or sum of lengths of all 1D mesh elements"
+msgstr ""
+
+# 7422de5e006e4188874665fd12649d2c
+#: smeshBuilder.Mesh.GetLength:6
+msgid ""
+"element's length value if *elemId* is specified or sum of all 1D mesh "
+"elements' lengths otherwise"
+msgstr ""
+
+# e320ad5f7c784d13a920d4dbf725daac
+#: smeshBuilder.Mesh.GetLog:1
+msgid ""
+"Return the log of nodes and elements added or removed since the previous "
+"clear of the log."
+msgstr ""
+
+# ce3af55af57d44b5a717af5524264237
+#: smeshBuilder.Mesh.GetLog:4
+msgid "log is emptied after Get (safe if concurrents access)"
+msgstr ""
+
+# 9d52a8be40124bdaac5a2ca588a9ae5d
+#: smeshBuilder.Mesh.GetLog:6
+msgid "commandType number coords indexes"
+msgstr ""
+
+# ea91b60e96d040a5a846ddc7317b60ed
+#: smeshBuilder.Mesh.GetLog:10
+msgid "list of log_block structures"
+msgstr ""
+
+# fecaab4b2bff473e9ee2f3cf15197da6
+#: smeshBuilder.Mesh.GetMaxElementLength:1
+msgid "Get maximum element length."
+msgstr ""
+
+# fb0dad0f2d7d449baac69652c0caaa47
+#: smeshBuilder.Mesh.GetMaxElementLength:5
+msgid "element's maximum length value"
+msgstr ""
+
+# aa6033f659ca420996404e87e20a0e42
+#: smeshBuilder.Mesh.GetMesh:1
+msgid "Return the mesh, that is an instance of SMESH_Mesh interface"
+msgstr ""
+
+# 4d89c9876d6a4943a157657bf6f4f507
+# 22529ebe1e2644bca4150db918fc52e8
+#: smeshBuilder.Mesh.GetMesh:3 smeshBuilder.Mesh.SetMesh:3
+msgid "a SMESH_Mesh object"
+msgstr ""
+
+# 864361c9c1734f9980a7a7e9db65898b
+#: smeshBuilder.Mesh.GetMeshEditor:1
+msgid "Obtain the mesh editor tool"
+msgstr ""
+
+# e8788c5e87d64d51807993ffef2d97f8
+#: smeshBuilder.Mesh.GetMeshEditor:3
+msgid "an instance of SMESH_MeshEditor"
+msgstr ""
+
+# e9b45f13a2cd42239425e5dbbab2cf08
+# 8c2ef6c1733a4630881926f1c04eabbf
+#: smeshBuilder.Mesh.GetMeshInfo:1 smeshBuilder.smeshBuilder.GetMeshInfo:1
+msgid "Get the mesh statistic"
+msgstr ""
+
+# cc1a708538f443eca25cd07fd16f5228
+#: smeshBuilder.Mesh.GetMeshInfo:3
+msgid "dictionary type element - count of elements"
+msgstr ""
+
+# 54a40127ce6d4b0d97aa98493c097ba5
+#: smeshBuilder.Mesh.GetMeshOrder:1
+msgid "Return sub-mesh objects list in meshing order"
+msgstr ""
+
+# f4227c30939e48ddb24a1727bf410692
+#: smeshBuilder.Mesh.GetMeshOrder:3
+msgid "list of lists of sub-meshes"
+msgstr ""
+
+# 1267f1eb16c14a6aa9317cb576d55fb7
+# 3f8eb4106c8744ccb9fb63f9424599e2
+#: smeshBuilder.Mesh.GetMinDistance:1
+#: smeshBuilder.smeshBuilder.GetMinDistance:1
+msgid "Get measure structure specifying minimum distance data between two objects"
+msgstr ""
+
+# cf4dcc5eb8e74ded8c2d46fd120eae3e
+# 14c3fcb433f04d21aea1f1993b9142da
+#: smeshBuilder.Mesh.GetMinDistance:3 smeshBuilder.Mesh.MinDistance:3
+msgid "first node/element id"
+msgstr ""
+
+# 5939c139e0db4d06b389b9d0da043e5f
+# bc76c02af30c41919b9f68768616b919
+#: smeshBuilder.Mesh.GetMinDistance:4 smeshBuilder.Mesh.MinDistance:4
+msgid ""
+"second node/element id (if 0, distance from *id1* to the origin is "
+"computed)"
+msgstr ""
+
+# 171dbd97f5b24a6e9592134a1ff6f175
+# 74c16af31e9741489f4f640c011078f3
+# 35bdad39386e4e58933a939c9fa90b2f
+#: smeshBuilder.Mesh.GetMinDistance:5 smeshBuilder.Mesh.MinDistance:5
+#: smeshBuilder.smeshBuilder.MinDistance:10
+msgid "*True* if *id1* is element id, *False* if it is node id"
+msgstr ""
+
+# 2689e846de0f4abf9f5734e111480855
+# 87f98cdf71c84a6ab619c624ae8c32ad
+# 8db4ec9ae5714a08a18346a4df57d27f
+#: smeshBuilder.Mesh.GetMinDistance:6 smeshBuilder.Mesh.MinDistance:6
+#: smeshBuilder.smeshBuilder.MinDistance:11
+msgid "*True* if *id2* is element id, *False* if it is node id"
+msgstr ""
+
+# da7323a0b6f34b29b7a9b52b90bcb3a7
+#: smeshBuilder.Mesh.GetMinDistance:8
+msgid "Measure structure **MinDistance()**"
+msgstr ""
+
+# a595555385fd428d9078e5206b1d3a15
+#: smeshBuilder.Mesh.GetMinMax:1
+msgid "Return minimal and maximal value of a given functor."
+msgstr ""
+
+# bf64ae948b1944c09c4832e9ad8d6501
+#: smeshBuilder.Mesh.GetMinMax:3
+msgid "(one of SMESH.FunctorType._items)"
+msgstr ""
+
+# d868101dd7d94127b261d5a1cb6c9a7f
+#: smeshBuilder.Mesh.GetMinMax:7
+msgid "tuple (min,max)"
+msgstr ""
+
+# dce0ddbe8e1b40d2a302fa79f82c7b70
+#: smeshBuilder.Mesh.GetMinimumAngle:1
+msgid "Get minimum angle of 2D element."
+msgstr ""
+
+# 24cb750a566c4a9d811b964f419226b4
+#: smeshBuilder.Mesh.GetMinimumAngle:5
+msgid "element's minimum angle value"
+msgstr ""
+
+# a5f77b44bd3c4e79b6d3fbf4df312b2d
+#: smeshBuilder.Mesh.GetName:1
+msgid "Get the name of the mesh"
+msgstr ""
+
+# b9f236a96bb0487b9be14b7b54082265
+#: smeshBuilder.Mesh.GetName:3
+msgid "the name of the mesh as a string"
+msgstr ""
+
+# e8629cc79cdd43f687dbfa2ca947c568
+#: smeshBuilder.Mesh.GetNodeInverseElements:1
+msgid ""
+"Return list of IDs of inverse elements for the given node If there is no "
+"node for the given ID - return an empty list"
+msgstr ""
+
+# 8e9b4b56a3074829b8adaca367067e0b
+#: smeshBuilder.Mesh.GetNodePosition:1
+msgid "Return the position of a node on the shape"
+msgstr ""
+
+# 4b8b5f2b673d44f086a623e6f88c33b8
+#: smeshBuilder.Mesh.GetNodePosition:3
+msgid "SMESH::NodePosition"
+msgstr ""
+
+# 9153409224694ce5831302588b4ee9bd
+#: smeshBuilder.Mesh.GetNodeXYZ:1
+msgid ""
+"Get XYZ coordinates of a node If there is no nodes for the given ID - "
+"return an empty list"
+msgstr ""
+
+# 65656b7d16cc46298b31baebfec67b57
+#: smeshBuilder.Mesh.GetNodeXYZ:4
+msgid "a list of double precision values"
+msgstr ""
+
+# a521f7c383bd4afe8c20f9f5e442c035
+#: smeshBuilder.Mesh.GetNodesId:1
+msgid "Return the list of mesh nodes IDs"
+msgstr ""
+
+# 9cd254c3fb064401aa51d44b2e4fd15f
+#: smeshBuilder.Mesh.GetPointState:1
+msgid ""
+"Return point state in a closed 2D mesh in terms of TopAbs_State "
+"enumeration: 0-IN, 1-OUT, 2-ON, 3-UNKNOWN UNKNOWN state means that either"
+" mesh is wrong or the analysis fails."
+msgstr ""
+
+# a062d062a8a84be3b26df303ef0badb6
+#: smeshBuilder.Mesh.GetShape:1
+msgid "Return the shape associated to the mesh"
+msgstr ""
+
+# ed2a63f026fa435cbdfe821c6d729867
+#: smeshBuilder.Mesh.GetShape:3
+msgid "a GEOM_Object"
+msgstr ""
+
+# cb84d241f9974a49aa3b295ec70a323a
+#: smeshBuilder.Mesh.GetShapeID:1
+msgid "Return the ID of the shape, on which the given node was generated."
+msgstr ""
+
+# ad763776922743029e28916a58649870
+#: smeshBuilder.Mesh.GetShapeID:3
+msgid ""
+"an integer value > 0 or -1 if there is no node for the given     ID or "
+"the node is not assigned to any geometry"
+msgstr ""
+
+# 5720cf450c00491da0bea464bc321644
+#: smeshBuilder.Mesh.GetShapeID:5
+msgid "an integer value > 0 or -1 if there is no node for the given"
+msgstr ""
+
+# 97311ad80e4347a48d7f66fe946aaff4
+#: smeshBuilder.Mesh.GetShapeID:6
+msgid "ID or the node is not assigned to any geometry"
+msgstr ""
+
+# 9c2a8eb03c444c4094dc7e27223f97a9
+#: smeshBuilder.Mesh.GetShapeIDForElem:1
+msgid "Return the ID of the shape, on which the given element was generated."
+msgstr ""
+
+# 1c147b04affd4520b46aafe0fb7e0242
+#: smeshBuilder.Mesh.GetShapeIDForElem:3
+msgid ""
+"an integer value > 0 or -1 if there is no element for the given     ID or"
+" the element is not assigned to any geometry"
+msgstr ""
+
+# 3b30017eea9e4c6b878d333e479fb2bd
+#: smeshBuilder.Mesh.GetShapeIDForElem:5
+msgid "an integer value > 0 or -1 if there is no element for the given"
+msgstr ""
+
+# 11cb84eba2b8466591536a85ae02a734
+#: smeshBuilder.Mesh.GetShapeIDForElem:6
+msgid "ID or the element is not assigned to any geometry"
+msgstr ""
+
+# d3b77648e172466ab39dd3c9681e558d
+#: smeshBuilder.Mesh.GetSkew:1
+msgid "Get skew of 2D element."
+msgstr ""
+
+# 793db66725d441a1802c16c5e5ee1d9e
+#: smeshBuilder.Mesh.GetSkew:5
+msgid "element's skew value"
+msgstr ""
+
+# 4a984ddb44e94d4e8d5373e372f4a8c7
+#: smeshBuilder.Mesh.GetStudyId:1
+msgid "Get the study Id"
+msgstr ""
+
+# ade3b87da0a744d6ba5921234f6b3066
+#: smeshBuilder.Mesh.GetStudyId:3
+msgid "integer value, which is the study Id of the mesh"
+msgstr ""
+
+# 87a56f130476491d9467b974396a40ee
+#: smeshBuilder.Mesh.GetSubMesh:1
+msgid "Get a sub-mesh object associated to a *geom* geometrical object."
+msgstr ""
+
+# 89375d14fa7745c18dda883f24796eee
+#: smeshBuilder.Mesh.GetSubMesh:3
+msgid "a geometrical object (shape)"
+msgstr ""
+
+# 0dd3240bc6c34defa0d0edb7e6d9e18e
+#: smeshBuilder.Mesh.GetSubMesh:4
+msgid "a name for the sub-mesh in the Object Browser"
+msgstr ""
+
+# ee1adf28afc74be882db2a50033d2384
+#: smeshBuilder.Mesh.GetSubMesh:6
+msgid ""
+"an object of type SMESH.SMESH_subMesh, representing a part of mesh,"
+"         which lies on the given shape"
+msgstr ""
+
+# d4aa23bdded6421b8c436c989a98d78a
+#: smeshBuilder.Mesh.GetSubMesh:9
+msgid "an object of type SMESH.SMESH_subMesh, representing a part of mesh,"
+msgstr ""
+
+# fa0723ee67cf40dd89eda6f8af998ff3
+#: smeshBuilder.Mesh.GetSubMesh:9
+msgid "which lies on the given shape"
+msgstr ""
+
+# a8ce8eed620a43e2b6d5515ef45c896d
+#: smeshBuilder.Mesh.GetSubMesh:11
+msgid ""
+"The sub-mesh object gives access to the IDs of nodes and elements. The "
+"sub-mesh object has the following methods:"
+msgstr ""
+
+# 3ffa833443714ce9ba556ee25e4152ab
+#: smeshBuilder.Mesh.GetSubMesh:14
+msgid "SMESH.SMESH_subMesh.GetNumberOfElements()"
+msgstr ""
+
+# b50e04881a0e48598133a06b3a6f5879
+#: smeshBuilder.Mesh.GetSubMesh:15
+msgid "SMESH.SMESH_subMesh.GetNumberOfNodes( all )"
+msgstr ""
+
+# 671d9d4f5bcc4bcbbbd53b764fafb257
+#: smeshBuilder.Mesh.GetSubMesh:16
+msgid "SMESH.SMESH_subMesh.GetElementsId()"
+msgstr ""
+
+# 733a1a481c064324a5dc2fc96d9ba5cf
+#: smeshBuilder.Mesh.GetSubMesh:17
+msgid "SMESH.SMESH_subMesh.GetElementsByType( ElementType )"
+msgstr ""
+
+# 0d3dd16c9ebf48a7b0c813a7d142905e
+#: smeshBuilder.Mesh.GetSubMesh:18
+msgid "SMESH.SMESH_subMesh.GetNodesId()"
+msgstr ""
+
+# 40580e2aaf584de5a0b6c3a7a7c13dbc
+#: smeshBuilder.Mesh.GetSubMesh:19
+msgid "SMESH.SMESH_subMesh.GetSubShape()"
+msgstr ""
+
+# c52c4641b09448ea9c99207aabde8fe8
+#: smeshBuilder.Mesh.GetSubMesh:20
+msgid "SMESH.SMESH_subMesh.GetFather()"
+msgstr ""
+
+# adfa115085ca4137bf36dadff16ac286
+#: smeshBuilder.Mesh.GetSubMesh:21
+msgid "SMESH.SMESH_subMesh.GetId()"
+msgstr ""
+
+# 6223371fbe1b4360821b5ca331e6be3a
+#: smeshBuilder.Mesh.GetSubMesh:28
+msgid "A sub-mesh is implicitly created when a sub-shape is specified at"
+msgstr ""
+
+# 46594d575a4f4c1697ca8e5156dc2757
+#: smeshBuilder.Mesh.GetSubMesh:26
+msgid ""
+"creating an algorithm, for example: algo1D = mesh.Segment(geom=Edge_1) "
+"creates a sub-mesh on *Edge_1* and assign Wire Discretization algorithm "
+"to it. The created sub-mesh can be retrieved from the algorithm: submesh "
+"= algo1D.GetSubMesh()"
+msgstr ""
+
+# 2bab387032f245e0b1fd52c8d81e758c
+#: smeshBuilder.Mesh.GetSubMeshElementType:1
+msgid "Return type of elements on given shape"
+msgstr ""
+
+# 75dd88c9b1b842c79eaeff5890f75e14
+#: smeshBuilder.Mesh.GetSubMeshElementType:3
+msgid "a geom object(sub-shape) Shape must be a sub-shape of a ShapeToMesh()"
+msgstr ""
+
+# 465c269333b54520b04feee47d6a4573
+#: smeshBuilder.Mesh.GetSubMeshElementType:6
+msgid "element type"
+msgstr ""
+
+# f7172c546a4641b9948acacd6a63a699
+#: smeshBuilder.Mesh.GetSubMeshElementsId:1
+msgid "Return the list of submesh elements IDs"
+msgstr ""
+
+# d0e0d971edb640a9a4dcba7cede91d9a
+# da0ad129df0d4b19a3aa90c4e6452d00
+#: smeshBuilder.Mesh.GetSubMeshElementsId:3
+#: smeshBuilder.Mesh.GetSubMeshNodesId:3
+msgid "a geom object(sub-shape) Shape must be the sub-shape of a ShapeToMesh()"
+msgstr ""
+
+# 09360ea0f81c42ce81df00efdb0b66d3
+#: smeshBuilder.Mesh.GetSubMeshNodesId:1
+msgid "Return the list of submesh nodes IDs"
+msgstr ""
+
+# dd5dbb7606e74684b06ad12699533d4b
+#: smeshBuilder.Mesh.GetSubMeshNodesId:5
+msgid ""
+"If true, gives all nodes of submesh elements, otherwise gives only "
+"submesh nodes"
+msgstr ""
+
+# 244234dd1fa245989019ecbcafe4c56b
+#: smeshBuilder.Mesh.GetSubShapeName:1
+msgid "Return a name of a sub-shape by its ID"
+msgstr ""
+
+# 3263b66b7bd54ffdb0eac5e9cc50cff3
+#: smeshBuilder.Mesh.GetSubShapeName:3
+msgid "a unique ID of a sub-shape"
+msgstr ""
+
+# 7c7c6c9b664e407a8838e503323785bc
+#: smeshBuilder.Mesh.GetSubShapeName:5
+msgid ""
+"- \"Face_12\"    (published sub-shape) - FACE #3      (not published sub-"
+"shape) - sub-shape #3 (invalid sub-shape ID) - #3           (error in "
+"this function)"
+msgstr ""
+
+# ae8123e9af90440590d838050f09dc8b
+#: smeshBuilder.Mesh.GetSubShapeName:5
+msgid "\"Face_12\"    (published sub-shape)"
+msgstr ""
+
+# 9ed4c1c5a2734d9693180a5607971d1f
+#: smeshBuilder.Mesh.GetSubShapeName:6
+msgid "FACE #3      (not published sub-shape)"
+msgstr ""
+
+# 15caf3d0d714487492d0af246b17df90
+#: smeshBuilder.Mesh.GetSubShapeName:7
+msgid "sub-shape #3 (invalid sub-shape ID)"
+msgstr ""
+
+# 04f04d244da949c385430e4fc7a72685
+#: smeshBuilder.Mesh.GetSubShapeName:8
+msgid "#3           (error in this function)"
+msgstr ""
+
+# 81db83c759d548c8adcf2dc4e0caab5e
+#: smeshBuilder.Mesh.GetSubShapeName:9
+msgid "a string describing the sub-shape; possible variants"
+msgstr ""
+
+# 82a8e9e3f81d494b8f924cf553598cb1
+#: smeshBuilder.Mesh.GetTaper:1
+msgid "Get taper of 2D element."
+msgstr ""
+
+# 58aad7e5f7114f85a1683536841ac24f
+#: smeshBuilder.Mesh.GetTaper:5
+msgid "element's taper value"
+msgstr ""
+
+# c61b8b114e78472ab593229b5a7a9a41
+#: smeshBuilder.Mesh.GetVolume:2
+msgid "Get volume of 3D element or sum of volumes of all 3D mesh elements"
+msgstr ""
+
+# 6759508bc6254d2b9e2c521c245d171d
+#: smeshBuilder.Mesh.GetVolume:2
+msgid ""
+"elemId mesh element ID (if not defined - sum of volumes of all 3D "
+"elements will be calculated)"
+msgstr ""
+
+# 661cc6bdd3e94c0cac8e910f6ee1fcc0
+#: smeshBuilder.Mesh.GetVolume:4
+msgid ""
+"element's volume value if *elemId* is specified or sum of all 3D mesh "
+"elements' volumes otherwise"
+msgstr ""
+
+# df201da51bca44d1bb3e374a78597384
+#: smeshBuilder.Mesh.GetWarping:1
+msgid "Get warping angle of 2D element."
+msgstr ""
+
+# 555c2f12528b4c199b7d09574dfc84e4
+#: smeshBuilder.Mesh.GetWarping:5
+msgid "element's warping angle value"
+msgstr ""
+
+# b7958548a0034361b2ee1d08e1b28e03
+#: smeshBuilder.Mesh.Group:1
+msgid ""
+"Create a mesh group based on the geometric object *grp* and gives a "
+"*name*, if this parameter is not defined the name is the same as the "
+"geometric group name"
+msgstr ""
+
+# 2e0fd99c6b904a549df63d4c8a36116f
+#: smeshBuilder.Mesh.Group:6
+msgid "Works like GroupOnGeom()."
+msgstr ""
+
+# 4660bb505e6e4e6c8265682cf9283cf4
+#: smeshBuilder.Mesh.Group:8
+msgid "a geometric group, a vertex, an edge, a face or a solid"
+msgstr ""
+
+# 3f32151bce3648739e2b9297039e1249
+# aa104168caf84228b928180da8764115
+#: smeshBuilder.Mesh.Group:11 smeshBuilder.Mesh.GroupOnGeom:11
+msgid "SMESH_GroupOnGeom"
+msgstr ""
+
+# e73610316fd34c5f9f754270f5344f25
+#: smeshBuilder.Mesh.GroupOnFilter:1
+msgid ""
+"Create a mesh group with given *name* based on the *filter* which is a "
+"special type of group dynamically updating it's contents during mesh "
+"modification"
+msgstr ""
+
+# 8e5dc9ae1f7d4970bfdfad57d3f7b203
+# bf75b6a9db4340e4b26045630f3287cf
+#: smeshBuilder.Mesh.GroupOnFilter:5 smeshBuilder.Mesh.MakeGroupByIds:4
+msgid ""
+"the type of elements in the group; either of (SMESH.NODE, SMESH.EDGE, "
+"SMESH.FACE, SMESH.VOLUME)."
+msgstr ""
+
+# cc058633e1994c579f0d01998e3579f2
+#: smeshBuilder.Mesh.GroupOnFilter:8
+msgid "the filter defining group contents"
+msgstr ""
+
+# d94a02362f4c4109a8a97671865f066d
+# d2720efd8bac43c3a0517720d6b290d3
+# b33e96727be74eb58d131848196ef647
+# e91b93a98b844dd0b88364c44a19101a
+# 2bb980669b724504a204854973abd44c
+#: smeshBuilder.Mesh.GroupOnFilter:10 smeshBuilder.Mesh.MakeGroup:14
+#: smeshBuilder.Mesh.MakeGroupByCriteria:7
+#: smeshBuilder.Mesh.MakeGroupByCriterion:6
+#: smeshBuilder.Mesh.MakeGroupByFilter:6
+msgid "SMESH_GroupOnFilter"
+msgstr ""
+
+# ad598822867b4c7f80aeb7d6b6fbd3a1
+#: smeshBuilder.Mesh.GroupOnGeom:1
+msgid ""
+"Create a mesh group based on the geometrical object *grp* and gives a "
+"*name*, if this parameter is not defined the name is the same as the "
+"geometrical group name"
+msgstr ""
+
+# 8715c7c29d7343098a7cd7fa2f2d3c99
+#: smeshBuilder.Mesh.GroupOnGeom:5
+msgid "a geometrical group, a vertex, an edge, a face or a solid"
+msgstr ""
+
+# 28301f527fc843d49107bc9b0248bd32
+#: smeshBuilder.Mesh.GroupOnGeom:7
+msgid ""
+"the type of elements in the group; either of (SMESH.NODE, SMESH.EDGE, "
+"SMESH.FACE, SMESH.VOLUME). If not set, it is automatically detected by "
+"the type of the geometry"
+msgstr ""
+
+# caa73610517e4031bc762cc17a3f9e5d
+#: smeshBuilder.Mesh.HasDuplicatedGroupNamesMED:1
+msgid ""
+"Check the group names for duplications. Consider the maximum group name "
+"length stored in MED file."
+msgstr ""
+
+# e0ab5f97714e49cfaafaa32ded8dcac0
+#: smeshBuilder.Mesh.Hexahedron:1
+msgid "Creates hexahedron 3D algorithm for volumes"
+msgstr ""
+
+# 8d88641bdcb64e63a3c4a1c2b2844e82
+#: smeshBuilder.Mesh.Hexahedron:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see :class:`~StdMeshersBuilder.StdMeshersBuilder_Hexahedron`"
+msgstr ""
+
+# 29e43da0ee0d4bf88922194312cd9162
+#: smeshBuilder.Mesh.IntersectGroups:1
+msgid ""
+"Prodice an intersection of two groups. A new group is created. All mesh "
+"elements that are common for the two initial groups are added to the new "
+"one."
+msgstr ""
+
+# 018127875ced44abae96741ee628f168
+#: smeshBuilder.Mesh.IntersectListOfGroups:1
+msgid ""
+"Produce an intersection of groups. New group is created. All mesh "
+"elements that are present in all initial groups simultaneously are added "
+"to the new one"
+msgstr ""
+
+# b11ceec800174ab389abd0150f463383
+#: smeshBuilder.Mesh.InverseDiag:1
+msgid ""
+"Replace two neighbour triangles sharing Node1-Node2 link with the "
+"triangles built on the same 4 nodes but having other common link."
+msgstr ""
+
+# d0e539819a75482ba8a60ec9c707c548
+#: smeshBuilder.Mesh.IsCoherentOrientation2D:1
+msgid "Check if orientation of 2D elements is coherent"
+msgstr ""
+
+# 3a5cc92be55e4e358a967b87f1cc91ae
+#: smeshBuilder.Mesh.IsManifold:1
+msgid "Check if a 2D mesh is manifold"
+msgstr ""
+
+# 7a88a45048d04d8e8d58bb4621bc1307
+#: smeshBuilder.Mesh.IsMediumNode:1
+msgid ""
+"Return true if the given node is the medium node in the given quadratic "
+"element"
+msgstr ""
+
+# 1a3b85be8a384725a61c55d9ecd9ee48
+#: smeshBuilder.Mesh.IsMediumNodeOfAnyElem:1
+msgid ""
+"Return true if the given node is the medium node in one of quadratic "
+"elements"
+msgstr ""
+
+# f6961c3a748f4b2eac63f6fdd76c3bae
+#: smeshBuilder.Mesh.IsMediumNodeOfAnyElem:3
+msgid "ID of the node"
+msgstr ""
+
+# 61af2b540dc44becb1c6a76f1623c76b
+#: smeshBuilder.Mesh.IsMediumNodeOfAnyElem:4
+msgid ""
+"the type of elements to check a state of the node, either of (SMESH.ALL, "
+"SMESH.NODE, SMESH.EDGE, SMESH.FACE or SMESH.VOLUME)"
+msgstr ""
+
+# 249703c715e64c70a5955f545693525c
+#: smeshBuilder.Mesh.IsPoly:1
+msgid "Return true if the given element is a polygon"
+msgstr ""
+
+# 9c07fa29a53f4062aed38d6774823e02
+#: smeshBuilder.Mesh.IsQuadratic:1
+msgid "Return true if the given element is quadratic"
+msgstr ""
+
+# 81b977db4ea6422391e78914390c83d1
+#: smeshBuilder.Mesh.IsReadyToCompute:1
+msgid "Return true if the hypotheses are defined well"
+msgstr ""
+
+# f88a7596dd9147a6a35c8270ac1bb853
+#: smeshBuilder.Mesh.IsUsedHypothesis:1
+msgid "Return True if an algorithm of hypothesis is assigned to a given shape"
+msgstr ""
+
+# 99b9d6d2613b4e3a9a32f26c081169d8
+#: smeshBuilder.Mesh.IsUsedHypothesis:3
+msgid "a hypothesis to check"
+msgstr ""
+
+# d8f81a27392c43bb8ea4cd2207c0f575
+#: smeshBuilder.Mesh.IsUsedHypothesis:6
+msgid "True of False"
+msgstr ""
+
+# 73d043017f0345f8acfcd193ed26ee5b
+#: smeshBuilder.Mesh.Load:1
+msgid "Load mesh from the study after opening the study"
+msgstr ""
+
+# e4826bdeaaf24ed2aea95f46418aa57b
+#: smeshBuilder.Mesh.Make2DMeshFrom3D:1
+msgid "Create 2D mesh as skin on boundary faces of a 3D mesh"
+msgstr ""
+
+# 9a93764148764299901ff84cb9568ff3
+#: smeshBuilder.Mesh.MakeBoundaryElements:2
+msgid "**Create** missing boundary elements around either the whole mesh or"
+msgstr ""
+
+# 3c193d2f82b04fcfab803d6e30c39cf3
+#: smeshBuilder.Mesh.MakeBoundaryElements:2
+msgid "groups of elements"
+msgstr ""
+
+# cb43cd0e13a843168975163c1a621109
+#: smeshBuilder.Mesh.MakeBoundaryElements:4
+msgid ""
+"defines type of boundary elements to create, either of { "
+"SMESH.BND_2DFROM3D, SMESH.BND_1DFROM3D, SMESH.BND_1DFROM2D }"
+msgstr ""
+
+# 38a16fac79d842e89a1407dd14af479c
+#: smeshBuilder.Mesh.MakeBoundaryElements:6
+msgid ""
+"a name of group to store all boundary elements in, \"\" means not to "
+"create the group"
+msgstr ""
+
+# 011acb65638d4176b040bd74e5f1280d
+#: smeshBuilder.Mesh.MakeBoundaryElements:8
+msgid ""
+"a name of a new mesh, which is a copy of the initial mesh + created "
+"boundary elements; \"\" means not to create the new mesh"
+msgstr ""
+
+# 7577b706340840bd9b0805e0509959d9
+#: smeshBuilder.Mesh.MakeBoundaryElements:10
+msgid ""
+"if true, the whole initial mesh will be copied into the new mesh else "
+"only boundary elements will be copied into the new mesh"
+msgstr ""
+
+# cca217aabce54aa1945bd37e1c159538
+#: smeshBuilder.Mesh.MakeBoundaryElements:12
+msgid "groups of elements to make boundary around"
+msgstr ""
+
+# 9d609c784c6d44afa02f8d0bfb07eae3
+#: smeshBuilder.Mesh.MakeBoundaryElements:14
+msgid ""
+"tuple( long, mesh, groups )         long - number of added boundary "
+"elements         mesh - the mesh where elements were added to         "
+"group - the group of boundary elements or None"
+msgstr ""
+
+# 8d027f74bab2465abbdfed0476555460
+#: smeshBuilder.Mesh.MakeBoundaryElements:18
+msgid "tuple( long, mesh, groups )"
+msgstr ""
+
+# adebcdabdd404ff2b2380c3751c0f0c1
+#: smeshBuilder.Mesh.MakeBoundaryElements:17
+msgid ""
+"long - number of added boundary elements mesh - the mesh where elements "
+"were added to group - the group of boundary elements or None"
+msgstr ""
+
+# ae071eda0c29422b99c6d98c4920cd6a
+#: smeshBuilder.Mesh.MakeBoundaryMesh:1
+msgid "Create missing boundary elements"
+msgstr ""
+
+# b1c932b14df54c99a1248a409918a6dc
+#: smeshBuilder.Mesh.MakeBoundaryMesh:3
+msgid ""
+"elements whose boundary is to be checked: mesh, group, sub-mesh or list "
+"of elements if elements is mesh, it must be the mesh whose "
+"MakeBoundaryMesh() is called"
+msgstr ""
+
+# 24358831c2eb462ebd347d7141b9170d
+#: smeshBuilder.Mesh.MakeBoundaryMesh:6
+msgid ""
+"defines type of boundary elements to create, either of { "
+"SMESH.BND_2DFROM3D, SMESH.BND_1DFROM3D, SMESH.BND_1DFROM2D } "
+"SMESH.BND_1DFROM3D create mesh edges on all borders of free facets of 3D "
+"cells"
+msgstr ""
+
+# 894bfb5336614c4683b8cf4e7a9932e6
+#: smeshBuilder.Mesh.MakeBoundaryMesh:9
+msgid ""
+"a name of group to store created boundary elements in, \"\" means not to "
+"create the group"
+msgstr ""
+
+# f4fc9f2948d3441494054e8745b62c0d
+#: smeshBuilder.Mesh.MakeBoundaryMesh:11
+msgid ""
+"a name of new mesh to store created boundary elements in, \"\" means not "
+"to create the new mesh"
+msgstr ""
+
+# c6ce9ba1a4c84074bb985a997e78f0c0
+#: smeshBuilder.Mesh.MakeBoundaryMesh:13
+msgid ""
+"if true, the checked elements will be copied into the new mesh else only "
+"boundary elements will be copied into the new mesh"
+msgstr ""
+
+# d4847990ea9c42f1923187fed20f8fba
+#: smeshBuilder.Mesh.MakeBoundaryMesh:15
+msgid ""
+"if true, not only new but also pre-existing boundary elements will be "
+"copied into the new mesh"
+msgstr ""
+
+# 8307c137c0e349f6b0ceb687f337ccbe
+#: smeshBuilder.Mesh.MakeBoundaryMesh:18
+msgid "tuple (mesh, group) where boundary elements were added to"
+msgstr ""
+
+# 0c09e443bb904a449fc5989449c015a4
+#: smeshBuilder.Mesh.MakeGroup:1
+msgid "Create a mesh group by the given conditions"
+msgstr ""
+
+# d261dde9ae2a418e8891542422543393
+# 845e83642d7542629bef5b14d53be9a3
+#: smeshBuilder.Mesh.MakeGroup:4 smeshBuilder.smeshBuilder.GetCriterion:4
+msgid "the type of elements(SMESH.NODE, SMESH.EDGE, SMESH.FACE, SMESH.VOLUME)"
+msgstr ""
+
+# cc6ff34108d04fa6ad57c0ca71c61100
+# 74b2a4e8fbe54cd59719585dc091973e
+# 6cd59e1799d14ed79d35b81da8c3a602
+#: smeshBuilder.Mesh.MakeGroup:5 smeshBuilder.smeshBuilder.GetCriterion:5
+#: smeshBuilder.smeshBuilder.GetFilter:4
+msgid ""
+"the type of criterion (SMESH.FT_Taper, SMESH.FT_Area, etc.) Type "
+"SMESH.FunctorType._items in the Python Console to see all values. Note "
+"that the items starting from FT_LessThan are not suitable for CritType."
+msgstr ""
+
+# 9b293a1afc084bbca409c360cfd4943e
+# db5f05c67d924099bf2254cdadc3e80e
+# 1efb271c7f9749c48259a9e5552aca05
+#: smeshBuilder.Mesh.MakeGroup:8 smeshBuilder.smeshBuilder.GetCriterion:8
+#: smeshBuilder.smeshBuilder.GetFilter:7
+msgid "belongs to {SMESH.FT_LessThan, SMESH.FT_MoreThan, SMESH.FT_EqualTo}"
+msgstr ""
+
+# 56c6b0819e7649ed91f398f4dac17995
+# 18bc56446fbb4d45887b68086c47a97a
+# 025def87d0094069930e588af2bdfe23
+#: smeshBuilder.Mesh.MakeGroup:9 smeshBuilder.smeshBuilder.GetCriterion:9
+#: smeshBuilder.smeshBuilder.GetFilter:8
+msgid "the threshold value (range of ids as string, shape, numeric)"
+msgstr ""
+
+# 1484d47c52b54922990605b3f8b292c4
+# 5986c162b6044a2a970ec558375eb9d2
+# 69cf181fd3004ea8adafccd51ee4f412
+#: smeshBuilder.Mesh.MakeGroup:10 smeshBuilder.smeshBuilder.GetCriterion:10
+#: smeshBuilder.smeshBuilder.GetFilter:9
+msgid "SMESH.FT_LogicalNOT or SMESH.FT_Undefined"
+msgstr ""
+
+# 089f9db7b1e84bdf8958a47b3af6a4a3
+# 25fae3e3a9ae4a44add94e927977f3dd
+#: smeshBuilder.Mesh.MakeGroup:11 smeshBuilder.smeshBuilder.GetCriterion:13
+msgid ""
+"the tolerance used by SMESH.FT_BelongToGeom, SMESH.FT_BelongToSurface, "
+"SMESH.FT_LyingOnGeom, SMESH.FT_CoplanarFaces criteria"
+msgstr ""
+
+# c7108bb795e14c758bd4460bcfba750a
+#: smeshBuilder.Mesh.MakeGroupByCriteria:1
+msgid "Create a mesh group by the given criteria (list of criteria)"
+msgstr ""
+
+# e7ac5a66f59045049fb2a63179cbb672
+#: smeshBuilder.Mesh.MakeGroupByCriteria:4
+msgid "the list of criteria"
+msgstr ""
+
+# b42485d614a1425e8a8eccf051dd9f79
+# d7c9e088bcac4b36ad1016e0e8bc228c
+#: smeshBuilder.Mesh.MakeGroupByCriteria:5
+#: smeshBuilder.smeshBuilder.GetFilterFromCriteria:4
+msgid "binary operator used when binary operator of criteria is undefined"
+msgstr ""
+
+# 34e9f5f3630242ec9f88e2fb07f2999f
+#: smeshBuilder.Mesh.MakeGroupByCriterion:1
+msgid "Create a mesh group by the given criterion"
+msgstr ""
+
+# 64654da33977437086e3341ce2e30636
+#: smeshBuilder.Mesh.MakeGroupByCriterion:4
+msgid "the instance of Criterion class"
+msgstr ""
+
+# f358290b80e24febb8992a8bf83bb36c
+#: smeshBuilder.Mesh.MakeGroupByFilter:1
+msgid "Create a mesh group by the given filter"
+msgstr ""
+
+# 503b8b60697e45a696b0c674d01579a2
+#: smeshBuilder.Mesh.MakeGroupByFilter:4
+msgid "the instance of Filter class"
+msgstr ""
+
+# 48d762738f4940bb8ae60094fa306f22
+#: smeshBuilder.Mesh.MakeGroupByIds:1
+msgid "Create a mesh group by the given ids of elements"
+msgstr ""
+
+# 83ccfc4f76fb49afa5801d01bf63dceb
+#: smeshBuilder.Mesh.MakeGroupByIds:6
+msgid "either the list of ids, group, sub-mesh, or filter"
+msgstr ""
+
+# 32e2bab874fc47a0a57609f86a3791c2
+#: smeshBuilder.Mesh.MakePolyLine:1
+msgid ""
+"Create a polyline consisting of 1D mesh elements each lying on a 2D "
+"element of the initial mesh. Positions of new nodes are found by cutting "
+"the mesh by the plane passing through pairs of points specified by each "
+"PolySegment structure. If there are several paths connecting a pair of "
+"points, the shortest path is selected by the module. Position of the "
+"cutting plane is defined by the two points and an optional vector lying "
+"on the plane specified by a PolySegment. By default the vector is defined"
+" by Mesh module as following. A middle point of the two given points is "
+"computed. The middle point is projected to the mesh. The vector goes from"
+" the middle point to the projection point. In case of planar mesh, the "
+"vector is normal to the mesh."
+msgstr ""
+
+# bbfc468ee1ed4e24857acfebc27c04d1
+#: smeshBuilder.Mesh.MakePolyLine:16
+msgid "The used vector which goes from the middle point to its projection."
+msgstr ""
+
+# 2acb6fe0501440089ec9c370c7b944b4
+#: smeshBuilder.Mesh.MergeElements:1
+msgid "Merge elements in each given group."
+msgstr ""
+
+# 476112eae5354e668b8f025854128b99
+#: smeshBuilder.Mesh.MergeElements:3
+msgid ""
+"a list of groups of elements IDs for merging (e.g. [[1,12,13],[25,4]], "
+"then elements 12, 13 and 4 will be removed and replaced by elements 1 and"
+" 25 in all groups)"
+msgstr ""
+
+# 195eeb03d7204bdfb76f8eecf8a59552
+#: smeshBuilder.Mesh.MergeEqualElements:1
+msgid "Leave one element and remove all other elements built on the same nodes."
+msgstr ""
+
+# 221919e0fe904958871ee227e2eb7b6f
+#: smeshBuilder.Mesh.MergeNodes:1
+msgid "Merge nodes"
+msgstr ""
+
+# c8103fe1a26a43978730fb30e96fe408
+#: smeshBuilder.Mesh.MergeNodes:3
+msgid ""
+"a list of groups of nodes IDs for merging (e.g. [[1,12,13],[25,4]], then "
+"nodes 12, 13 and 4 will be removed and replaced by nodes 1 and 25 "
+"correspondingly in all elements and groups"
+msgstr ""
+
+# a36e97897dd54730956d349dec7c7e11
+#: smeshBuilder.Mesh.MergeNodes:6
+msgid ""
+"nodes to keep in the mesh: a list of groups, sub-meshes or node IDs. If "
+"*NodesToKeep* does not include a node to keep for some group to merge, "
+"then the first node in the group is kept."
+msgstr ""
+
+# 787b37de29724f1abe3fa9759f8becc1
+#: smeshBuilder.Mesh.MergeNodes:9
+msgid "prevent merging nodes which cause removal of elements becoming invalid"
+msgstr ""
+
+# a6caaf84dccf4d1a9afbd3d3fe878d9b
+#: smeshBuilder.Mesh.MeshDimension:2
+msgid ""
+"Return the mesh dimension depending on the dimension of the underlying "
+"shape"
+msgstr ""
+
+# d57868c7ebde495e92b2492eb07cbe72
+#: smeshBuilder.Mesh.MeshDimension:2
+msgid ""
+"or, if the mesh is not based on any shape, basing on deimension of "
+"elements"
+msgstr ""
+
+# d9129635a1474adf8c9f734082916b44
+#: smeshBuilder.Mesh.MeshDimension:4
+msgid "mesh dimension as an integer value [0,3]"
+msgstr ""
+
+# 6ec9ff213ba54076a32c70842eb09935
+# 431d585449fb43c5bc90a8c67a0b70c2
+#: smeshBuilder.Mesh.MeshToPassThroughAPoint:1
+#: smeshBuilder.Mesh.MoveClosestNodeToPoint:1
+msgid "Find the node closest to a point and moves it to a point location"
+msgstr ""
+
+# 9cdf102e076b45c781513235a257c86a
+#: smeshBuilder.Mesh.MeshToPassThroughAPoint:7
+msgid "the ID of a moved node"
+msgstr ""
+
+# c57e814e4b7b425ba1ea089330ed07be
+#: smeshBuilder.Mesh.MinDistance:1
+msgid "Get minimum distance between two nodes, elements or distance to the origin"
+msgstr ""
+
+# 7d11375edfe041c39f19bedf9bbf109f
+#: smeshBuilder.Mesh.MinDistance:8
+msgid "minimum distance value **GetMinDistance()**"
+msgstr ""
+
+# 6ec3ec4689ee4dfdaf269f701b46dbea
+#: smeshBuilder.Mesh.Mirror:1
+msgid "Create a symmetrical copy of mesh elements"
+msgstr ""
+
+# a745e2a0d2524a479647419a1f4613b3
+# b992b51bbfef488099ebce14cc5389e4
+# bdaf1c3763ec4e14a2e920d83eba804c
+# a4f96ef3620b43dcac78788135672f46
+#: smeshBuilder.Mesh.Mirror:3 smeshBuilder.Mesh.Rotate:3
+#: smeshBuilder.Mesh.Translate:3 smeshBuilder.Mesh.TranslateMakeMesh:3
+msgid "list of elements ids"
+msgstr ""
+
+# 579feadb5f014c7db3d6e5b28808c4e1
+#: smeshBuilder.Mesh.Mirror:4
+msgid "is AxisStruct or geom object(point, line, plane)"
+msgstr ""
+
+# b9f880240f6f4fbeb135d1611837a410
+# d776a146f6d2472faa9495f9e05e4f74
+# b7ecce6233ee4b14ab718490e9300f0c
+# 709450934f9a4558aa09aae415ec8b77
+#: smeshBuilder.Mesh.Mirror:5 smeshBuilder.Mesh.MirrorMakeMesh:5
+#: smeshBuilder.Mesh.MirrorObject:5 smeshBuilder.Mesh.MirrorObjectMakeMesh:5
+msgid ""
+"smeshBuilder.POINT, smeshBuilder.AXIS or smeshBuilder.PLANE If the Mirror"
+" is a geom object this parameter is unnecessary"
+msgstr ""
+
+# 34f765b3af464edd8cdeda2af4aac19d
+#: smeshBuilder.Mesh.Mirror:7
+msgid ""
+"allows to copy element (Copy is 1) or to replace with its mirroring (Copy"
+" is 0)"
+msgstr ""
+
+# 43673784b4f74f28aeb1f093267b935d
+# 7f5ee2abe6fc4bb0909bbb201f923fcc
+# 96d08431174e4cf38952ae2a7813856f
+# cebda19b855f47d4beeff530d0983615
+# 36c017f2868e41469b6ebc706527e9bb
+# bebfa499c2544bfc8d74b583dd8d4e82
+# 2989b421baa44a26b45dcecc5475facf
+#: smeshBuilder.Mesh.Mirror:8 smeshBuilder.Mesh.MirrorObject:8
+#: smeshBuilder.Mesh.Rotate:7 smeshBuilder.Mesh.RotateObject:7
+#: smeshBuilder.Mesh.Scale:7 smeshBuilder.Mesh.Translate:6
+#: smeshBuilder.Mesh.TranslateObject:6
+msgid "forces the generation of new groups from existing ones (if Copy)"
+msgstr ""
+
+# 15301a8e3428400a97eb51e6d92b1ace
+#: smeshBuilder.Mesh.MirrorMakeMesh:1
+msgid "Create a new mesh by a symmetrical copy of mesh elements"
+msgstr ""
+
+# 326148ed91084c178cf57202c662eaf6
+#: smeshBuilder.Mesh.MirrorMakeMesh:3
+msgid "the list of elements ids"
+msgstr ""
+
+# c2ac853fcc4a4ff19e2ffb05380b1ee7
+#: smeshBuilder.Mesh.MirrorMakeMesh:4
+msgid "is AxisStruct or geom object (point, line, plane)"
+msgstr ""
+
+# b751df94b8d54b2f84d54e2c5a6d3f7b
+#: smeshBuilder.Mesh.MirrorMakeMesh:8
+msgid "a name of the new mesh to create"
+msgstr ""
+
+# 6ab8e324dc214fcfaabac50f6c653e26
+# eedd8b882a4e40738dcb170f099a6e50
+# 5ae194b1fbe145109a594b9c1b46cecd
+# d422adbf9f7d4b9daad93aef2cd1b76c
+# 5ac22c9f7883474b9382e3f40e6cdeda
+# 52d229ced0e94ba4a112ea6bcb4ef3d8
+# 23e82e3e6d6d477b95660980bbcb9d66
+#: smeshBuilder.Mesh.MirrorMakeMesh:10
+#: smeshBuilder.Mesh.MirrorObjectMakeMesh:10 smeshBuilder.Mesh.RotateMakeMesh:9
+#: smeshBuilder.Mesh.RotateObjectMakeMesh:9 smeshBuilder.Mesh.ScaleMakeMesh:9
+#: smeshBuilder.Mesh.TranslateMakeMesh:8
+#: smeshBuilder.Mesh.TranslateObjectMakeMesh:8
+msgid "instance of Mesh class"
+msgstr ""
+
+# 680d63717ed14a6780c35c7fedd7a097
+#: smeshBuilder.Mesh.MirrorObject:1
+msgid "Create a symmetrical copy of the object"
+msgstr ""
+
+# 28d6b4dafb8c43058c2d199b4977e280
+# 2002ab036b6e49879e255cf4e298ffc9
+# feb60938f67546f983e0df8ea48f8419
+# 83eb7316cbc34f15bc742978e8715134
+# fe1613a2e2f14b899fe909eb253cf9b6
+# 045ad88f815a4e549fa7226399939447
+# e824919b8e6a49479297742f38aead04
+#: smeshBuilder.Mesh.MirrorObject:3 smeshBuilder.Mesh.MirrorObjectMakeMesh:3
+#: smeshBuilder.Mesh.ReorientObject:3 smeshBuilder.smeshBuilder.GetArea:3
+#: smeshBuilder.smeshBuilder.GetGravityCenter:3
+#: smeshBuilder.smeshBuilder.GetLength:3 smeshBuilder.smeshBuilder.GetVolume:3
+msgid "mesh, submesh or group"
+msgstr ""
+
+# 2b219079d14b4e29a3b4c60ece0a0071
+# 531f7eefbdb04a159898da6a2637b549
+#: smeshBuilder.Mesh.MirrorObject:4 smeshBuilder.Mesh.MirrorObjectMakeMesh:4
+msgid "AxisStruct or geom object (point, line, plane)"
+msgstr ""
+
+# 07cf3bc5f48a4f04a05204e800e4723d
+#: smeshBuilder.Mesh.MirrorObject:7
+msgid ""
+"allows copying the element (Copy is 1) or replacing it with its mirror "
+"(Copy is 0)"
+msgstr ""
+
+# 406a15954d7a4baab5725a901cca4c3c
+#: smeshBuilder.Mesh.MirrorObjectMakeMesh:1
+msgid "Create a new mesh by a symmetrical copy of the object"
+msgstr ""
+
+# 5b65d5d040644ddb8f1ce307cb197879
+#: smeshBuilder.Mesh.MirrorObjectMakeMesh:8
+msgid "the name of the new mesh to create"
+msgstr ""
+
+# 3b95f0ce8cf04f199b30546d7cc24882
+#: smeshBuilder.Mesh.MoveClosestNodeToPoint:6
+msgid ""
+"if specified (>0), the node with this ID is moved, otherwise, the node "
+"closest to point (*x*, *y*, *z*) is moved"
+msgstr ""
+
+# b7683da5c3274cceb10afc4239d1ecd3
+#: smeshBuilder.Mesh.MoveNode:1
+msgid "Move the node with the given id"
+msgstr ""
+
+# fbbe6aef51e04d118006334f95a046a3
+#: smeshBuilder.Mesh.MoveNode:3
+msgid "the id of the node"
+msgstr ""
+
+# cecdb900b3454cd9be19adea2c4b2e98
+#: smeshBuilder.Mesh.MoveNode:4
+msgid "a new X coordinate"
+msgstr ""
+
+# 1b685bea42de427ea877aa7d0a97940e
+#: smeshBuilder.Mesh.MoveNode:5
+msgid "a new Y coordinate"
+msgstr ""
+
+# 03a472028b274e26bd115804cf2278a3
+#: smeshBuilder.Mesh.MoveNode:6
+msgid "a new Z coordinate"
+msgstr ""
+
+# bec4a6d0fdb249099b01ae60855c777e
+# 731614669b5a418d9fcb87b407b2c8d4
+# 093f16da79c34e5682dac562a02e3ba8
+#: smeshBuilder.Mesh.MoveNode:8 smeshBuilder.Mesh.Reorient:5
+#: smeshBuilder.Mesh.ReorientObject:5
+msgid "True if succeed else False"
+msgstr ""
+
+# 670fa3a8470b4685b4ae0a036e08a59c
+#: smeshBuilder.Mesh.Nb0DElements:1
+msgid "Return the number of 0d elements in the mesh"
+msgstr ""
+
+# d501ceffcd2a4c74998c447ed0c647b1
+#: smeshBuilder.Mesh.NbBalls:1
+msgid "Return the number of ball discrete elements in the mesh"
+msgstr ""
+
+# 0b8c6b5ae0504a94b3c45f3ce3eea77a
+#: smeshBuilder.Mesh.NbBiQuadQuadrangles:1
+msgid "Return the number of biquadratic quadrangles in the mesh"
+msgstr ""
+
+# b3144a02e377499b8b59915e3b4fc185
+#: smeshBuilder.Mesh.NbBiQuadTriangles:1
+msgid "Return the number of biquadratic triangles in the mesh"
+msgstr ""
+
+# 2b30f9f5227343ffabba384a42057809
+#: smeshBuilder.Mesh.NbEdges:1
+msgid "Return the number of edges in the mesh"
+msgstr ""
+
+# dc932452561240c394b2a29b3b61ee8f
+#: smeshBuilder.Mesh.NbEdgesOfOrder:1
+msgid "Return the number of edges with the given order in the mesh"
+msgstr ""
+
+# 6890b9436e794324b31f247ab8d612c3
+# aac02ce9edb54783b761c28317b726ba
+#: smeshBuilder.Mesh.NbEdgesOfOrder:3 smeshBuilder.Mesh.NbVolumesOfOrder:3
+msgid "the order of elements:"
+msgstr ""
+
+# ad3e85312aa54059b1f4fc58ed741222
+#: smeshBuilder.Mesh.NbElements:1
+msgid "Return the number of elements in the mesh"
+msgstr ""
+
+# e198e4380a37401aa1ea8852aef3f68e
+#: smeshBuilder.Mesh.NbFaces:1
+msgid "Return the number of faces in the mesh"
+msgstr ""
+
+# 36cdef1f98ae471c9527b18bd4c3de81
+#: smeshBuilder.Mesh.NbFacesOfOrder:1
+msgid "Return the number of faces with the given order in the mesh"
+msgstr ""
+
+# a6bd2383cc5a49468d25e0bd6a52ee48
+# aa3907815d7342fb82e9c288451bf6a8
+# 8599df36cafc449290cc71cc673ed578
+# 3a4b4c07282e49069ab0afade1abfef9
+# e412b7d13f804b608e98945fa62a616a
+# 6ae31e9dcf084a829994792f03883fae
+#: smeshBuilder.Mesh.NbFacesOfOrder:3 smeshBuilder.Mesh.NbHexasOfOrder:3
+#: smeshBuilder.Mesh.NbPolygons:3 smeshBuilder.Mesh.NbPrismsOfOrder:3
+#: smeshBuilder.Mesh.NbPyramidsOfOrder:3 smeshBuilder.Mesh.NbTetrasOfOrder:3
+msgid ""
+"the order of elements: SMESH.ORDER_ANY, SMESH.ORDER_LINEAR or "
+"SMESH.ORDER_QUADRATIC"
+msgstr ""
+
+# 82e7ba6bcb1a46d7a94c4d6aa60e9ea2
+#: smeshBuilder.Mesh.NbGroups:1
+msgid "Get the number of groups existing in the mesh"
+msgstr ""
+
+# dbdc6f970d1e4c6c8edaa6bed05a6c79
+#: smeshBuilder.Mesh.NbGroups:3
+msgid "the quantity of groups as an integer value"
+msgstr ""
+
+# 79542c5fd7a6423a983e0b2d93103ee1
+#: smeshBuilder.Mesh.NbHexagonalPrisms:1
+msgid "Return the number of hexagonal prisms in the mesh"
+msgstr ""
+
+# d4d8535c80c24d608e03068c4308d057
+#: smeshBuilder.Mesh.NbHexas:1
+msgid "Return the number of hexahedrons in the mesh"
+msgstr ""
+
+# 4847206a982047ee848665c402fbd168
+#: smeshBuilder.Mesh.NbHexasOfOrder:1
+msgid "Return the number of hexahedrons with the given order in the mesh"
+msgstr ""
+
+# 4548aa650fc04928a0ac41d290d393b0
+#: smeshBuilder.Mesh.NbNodes:1
+msgid "Return the number of nodes in the mesh"
+msgstr ""
+
+# e0d773c05c0b4ef6babee05c46d254d2
+#: smeshBuilder.Mesh.NbPolygons:1
+msgid "Return the number of polygons of given order in the mesh"
+msgstr ""
+
+# 3e1ff178f86a43b8807b3979607defdb
+#: smeshBuilder.Mesh.NbPolyhedrons:1
+msgid "Return the number of polyhedrons in the mesh"
+msgstr ""
+
+# 63cc7d5b71514b0f8af00645bf673251
+#: smeshBuilder.Mesh.NbPrisms:1
+msgid "Return the number of prisms in the mesh"
+msgstr ""
+
+# d6699f454dec462399f0d564c532e86e
+#: smeshBuilder.Mesh.NbPrismsOfOrder:1
+msgid "Return the number of prisms with the given order in the mesh"
+msgstr ""
+
+# 80130bf865d8431eb9e61b8086307110
+#: smeshBuilder.Mesh.NbPyramids:1
+msgid "Return the number of pyramids in the mesh"
+msgstr ""
+
+# 2f0fe1ba762e43878339fd3060725853
+#: smeshBuilder.Mesh.NbPyramidsOfOrder:1
+msgid "Return the number of pyramids with the given order in the mesh"
+msgstr ""
+
+# 52f07b311461435a9d497562cc961bae
+#: smeshBuilder.Mesh.NbQuadrangles:1
+msgid "Return the number of quadrangles in the mesh"
+msgstr ""
+
+# d95465267e8347b8a4b2f6af612557ad
+#: smeshBuilder.Mesh.NbQuadranglesOfOrder:1
+msgid "Return the number of quadrangles with the given order in the mesh"
+msgstr ""
+
+# 57de7ad16a0f41eaa957da136fdff65e
+#: smeshBuilder.Mesh.NbQuadranglesOfOrder:3
+msgid "SMESH.ORDER_ANY, SMESH.ORDER_LINEAR or SMESH.ORDER_QUADRATIC"
+msgstr ""
+
+# 67164544511441b4b0d32c6b9f225962
+#: smeshBuilder.Mesh.NbSubMesh:1
+msgid "Return the number of submeshes in the mesh"
+msgstr ""
+
+# 5cb169c024d04e359ac630a8804c401f
+#: smeshBuilder.Mesh.NbTetras:1
+msgid "Return the number of tetrahedrons in the mesh"
+msgstr ""
+
+# 02a1825526834ac7886a0444e0d2a80f
+#: smeshBuilder.Mesh.NbTetrasOfOrder:1
+msgid "Return the number of tetrahedrons with the given order in the mesh"
+msgstr ""
+
+# d8756ad0b11a4937b18491c584fc02de
+#: smeshBuilder.Mesh.NbTriQuadraticHexas:1
+msgid "Return the number of triquadratic hexahedrons in the mesh"
+msgstr ""
+
+# eeb021ae99fa44d9b11bed70d12094b9
+#: smeshBuilder.Mesh.NbTriangles:1
+msgid "Return the number of triangles in the mesh"
+msgstr ""
+
+# 8c2f12f3eafd4a258de569797fb88336
+#: smeshBuilder.Mesh.NbTrianglesOfOrder:1
+msgid "Return the number of triangles with the given order in the mesh"
+msgstr ""
+
+# 7c40dc1e55824c96a7dae0c6336fab61
+#: smeshBuilder.Mesh.NbTrianglesOfOrder:3
+msgid ""
+"is the order of elements: SMESH.ORDER_ANY, SMESH.ORDER_LINEAR or "
+"SMESH.ORDER_QUADRATIC"
+msgstr ""
+
+# 21a17409cc274a2d98ae1bcbf6cbd0d7
+#: smeshBuilder.Mesh.NbVolumes:1
+msgid "Return the number of volumes in the mesh"
+msgstr ""
+
+# 058e9b8e06604ac38d6ee5a260a85c24
+#: smeshBuilder.Mesh.NbVolumesOfOrder:1
+msgid "Return the number of volumes with the given order in the mesh"
+msgstr ""
+
+# 9ddafb5e414f488c9c1cb5086b25e62a
+#: smeshBuilder.Mesh.Offset:1
+msgid "Create an offset mesh from the given 2D object"
+msgstr ""
+
+# 4a46bf6c49554f599292b8c17912abfa
+#: smeshBuilder.Mesh.Offset:3
+msgid "the source object (mesh, submesh, group or filter)"
+msgstr ""
+
+# 15cd5bab10c14859bf6078d2fde74a3d
+#: smeshBuilder.Mesh.Offset:4
+msgid "signed offset size"
+msgstr ""
+
+# f5a23b39f00a4e22872c0edf1e9f590b
+#: smeshBuilder.Mesh.Offset:6
+msgid ""
+"the name of a mesh to create. If empty, offset elements are added to this"
+" mesh"
+msgstr ""
+
+# a1c918cd955b4249922ca451c7910c1f
+#: smeshBuilder.Mesh.Offset:8
+msgid "A tuple (mesh, list_of_groups)"
+msgstr ""
+
+# a7fed4a9f2564d98b6ff575480dfc9a9
+#: smeshBuilder.Mesh.Polygon:1
+msgid "Creates polygon 2D algorithm for faces"
+msgstr ""
+
+# c4aa966221e6499c866bca842fd41d9a
+#: smeshBuilder.Mesh.Polygon:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_PolygonPerFace`"
+msgstr ""
+
+# a5efe0036d4d45ca8e76534bd3c34e99
+#: smeshBuilder.Mesh.Prism:1
+msgid "Creates prism 3D algorithm for volumes"
+msgstr ""
+
+# 362f2e883b04436387d8455dcd58b56e
+#: smeshBuilder.Mesh.Prism:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see :class:`~StdMeshersBuilder.StdMeshersBuilder_Prism3D`, "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_RadialPrism3D`"
+msgstr ""
+
+# 79e9d89c0fcb40179d8d361ec75b8c07
+#: smeshBuilder.Mesh.Projection1D:1
+msgid "Creates projection 1D algorithm for edges"
+msgstr ""
+
+# 4b46f8cee000405bbbf6232ae78cb494
+#: smeshBuilder.Mesh.Projection1D:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Projection1D`"
+msgstr ""
+
+# 2cdf9d32946f4a77a938bae9c20cd018
+#: smeshBuilder.Mesh.Projection1D2D:1
+msgid "Creates projection 1D-2D algorithm for faces"
+msgstr ""
+
+# 6845ffcf6a0c40a488daeb8a5f884dbe
+#: smeshBuilder.Mesh.Projection1D2D:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Projection1D2D`"
+msgstr ""
+
+# 2ee52187f2864760b5fad2a7711fb059
+#: smeshBuilder.Mesh.Projection2D:1
+msgid "Creates projection 2D algorithm for faces"
+msgstr ""
+
+# 07aaf8e10d5a4d5a95b36c78cda32ef8
+#: smeshBuilder.Mesh.Projection2D:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Projection2D`"
+msgstr ""
+
+# 61c0a07bc3a74ac7b1e2eecb6501a9de
+#: smeshBuilder.Mesh.Projection3D:1
+msgid "Creates projection 3D algorithm for volumes"
+msgstr ""
+
+# 3700a20cd6c44cf2acfb4e15ea3148a1
+#: smeshBuilder.Mesh.Projection3D:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Projection3D`"
+msgstr ""
+
+# 6e01ae3c12aa4ef5a15e45ab44441226
+#: smeshBuilder.Mesh.QuadTo4Tri:2
+msgid ""
+"Split each of given quadrangles into 4 triangles. A node is added at the "
+"center of"
+msgstr ""
+
+# 0a3eb2933fdb4627bd752f7f602158ea
+#: smeshBuilder.Mesh.QuadTo4Tri:2
+msgid "a quadrangle."
+msgstr ""
+
+# 9cbecbb7567c4739a53ef2d5f87eb7e7
+#: smeshBuilder.Mesh.QuadTo4Tri:4
+msgid ""
+"the faces to be splitted. This can be either mesh, sub-mesh, group or a "
+"list of face IDs. By default all quadrangles are split"
+msgstr ""
+
+# df9ab2576d614883a99c8dca3fd6dbd1
+# c4b94dfcec7f41ffaa07a23d24cbb1dc
+# 5f1bd704812d4909966ab8da439102e2
+# 2bb666642c8f4b4e9a1448f2e0cb855b
+#: smeshBuilder.Mesh.QuadToTri:1 smeshBuilder.Mesh.QuadToTriObject:1
+#: smeshBuilder.Mesh.SplitQuad:1 smeshBuilder.Mesh.SplitQuadObject:1
+msgid "Split quadrangles into triangles."
+msgstr ""
+
+# 15fc9dd51f8e4d4eab45e9d08a3846b7
+#: smeshBuilder.Mesh.QuadToTri:3
+msgid "the faces to be splitted."
+msgstr ""
+
+# 5afa14b85fe346d9bded59b81b17cb60
+# 79e120449dcd4c24b568e4070708f20c
+#: smeshBuilder.Mesh.QuadToTri:4 smeshBuilder.Mesh.QuadToTriObject:5
+msgid ""
+"is a numerical functor, in terms of enum SMESH.FunctorType, used to "
+"choose a diagonal for splitting. If *theCriterion* is None, which is a "
+"default value, then quadrangles will be split by the smallest diagonal. "
+"Type SMESH.FunctorType._items in the Python Console to see all items. "
+"Note that not all items correspond to numerical functors."
+msgstr ""
+
+# 1ccaec17af174d5db92836e729aeb1a2
+# de70418984e146f4b8e8d71347166520
+# 5c883b518feb4bbc84d1a0ac15f11bb3
+# d801d5f498f247ffb42fbff6331a88e1
+# c1a8954be77440019b35e39f39eb4d3d
+# 2920afb213d24744b859074ba187f527
+# dd2f831f4baf4003a216b5afbecaa8d7
+# 2d0f87c275cd499bace2f26da5cf1126
+# 687ec889305b4060b91bab8a9d0f4948
+# 3fb5a38d191b4431bc849094d4ad1a6c
+# 396e2002c44048eebdfde2bfc4280f40
+# 04890505277c4149adad367e93f4ef41
+#: smeshBuilder.Mesh.QuadToTri:10 smeshBuilder.Mesh.QuadToTriObject:11
+#: smeshBuilder.Mesh.Smooth:11 smeshBuilder.Mesh.SmoothObject:11
+#: smeshBuilder.Mesh.SmoothParametric:11
+#: smeshBuilder.Mesh.SmoothParametricObject:11
+#: smeshBuilder.Mesh.SplitHexaToPrisms:12
+#: smeshBuilder.Mesh.SplitHexaToTetras:12 smeshBuilder.Mesh.SplitQuad:6
+#: smeshBuilder.Mesh.SplitQuadObject:7 smeshBuilder.Mesh.TriToQuad:12
+#: smeshBuilder.Mesh.TriToQuadObject:11
+msgid "TRUE in case of success, FALSE otherwise."
+msgstr ""
+
+# 28e61878a78742a2a5d24310b9109833
+# 22313872303847759cc7d1886300f035
+#: smeshBuilder.Mesh.QuadToTriObject:3 smeshBuilder.Mesh.SplitQuadObject:3
+msgid ""
+"the object from which the list of elements is taken, this is mesh, "
+"submesh or group"
+msgstr ""
+
+# c1355935a8414929ba8724b020b53106
+#: smeshBuilder.Mesh.Quadrangle:1
+msgid "Creates quadrangle 1D-2D algorithm for faces"
+msgstr ""
+
+# 780c3c191f8c4b4e853503c5e1b03063
+#: smeshBuilder.Mesh.Quadrangle:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_QuadMA_1D2D`, "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Quadrangle`, "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_RadialQuadrangle1D2D`"
+msgstr ""
+
+# 18aa60aa7dc34d05b24cb6ed8dd69075
+#: smeshBuilder.Mesh.RemoveElements:1
+msgid "Remove the elements from the mesh by ids"
+msgstr ""
+
+# 52497476e77d477f94b6cc7969cdb057
+#: smeshBuilder.Mesh.RemoveElements:3
+msgid "is a list of ids of elements to remove"
+msgstr ""
+
+# 71b6bdb185fa4b2ab85bfa8b9f53ee99
+#: smeshBuilder.Mesh.RemoveGlobalHypotheses:1
+msgid "Remove all global hypotheses"
+msgstr ""
+
+# 531161f35bc14a7485211e8a92da6cbb
+#: smeshBuilder.Mesh.RemoveGroup:1
+msgid "Remove a group"
+msgstr ""
+
+# 944e0f95201e4915adcea8761b15415f
+#: smeshBuilder.Mesh.RemoveGroupWithContents:1
+msgid "Remove a group with its contents"
+msgstr ""
+
+# 0ac7bd59f6b84b169cfe30cc32628fa7
+#: smeshBuilder.Mesh.RemoveHypothesis:1
+msgid "Unassign a hypothesis"
+msgstr ""
+
+# 1840ef4d358e4dc8867165b2e031514a
+#: smeshBuilder.Mesh.RemoveHypothesis:3
+msgid "a hypothesis to unassign"
+msgstr ""
+
+# 9ae559fd4abd4faf8ec97d4bd6220ce2
+#: smeshBuilder.Mesh.RemoveNodes:1
+msgid "Remove nodes from mesh by ids"
+msgstr ""
+
+# 1342bd219b5547698ca12a89dd3f6332
+#: smeshBuilder.Mesh.RemoveNodes:3
+msgid "is a list of ids of nodes to remove"
+msgstr ""
+
+# 5145a93d11024f9b92f00fdf4fa963ce
+#: smeshBuilder.Mesh.RemoveOrphanNodes:1
+msgid "Remove all orphan (free) nodes from mesh"
+msgstr ""
+
+# ba8d703a7bfa437882b1c9eaf3d57e0b
+#: smeshBuilder.Mesh.RemoveOrphanNodes:3
+msgid "number of the removed nodes"
+msgstr ""
+
+# a2c1bf7d413943be9940c65676ca1ef3
+#: smeshBuilder.Mesh.RenumberElements:1
+msgid "Renumber mesh elements (Obsole, does nothing)"
+msgstr ""
+
+# 2f9af83f40614ef99f726ebbb952d745
+#: smeshBuilder.Mesh.RenumberNodes:1
+msgid "Renumber mesh nodes (Obsolete, does nothing)"
+msgstr ""
+
+# 3800946ec831483facc93efc05c64e35
+#: smeshBuilder.Mesh.Reorient:1
+msgid "Reorient elements by ids"
+msgstr ""
+
+# b4ef190fa87340418f91f171cc37acf4
+#: smeshBuilder.Mesh.Reorient:3
+msgid "if undefined reorients all mesh elements"
+msgstr ""
+
+# 4dc2a37a4aa04e0388c5c685b533f954
+#: smeshBuilder.Mesh.Reorient2D:1
+msgid "Reorient faces contained in *the2DObject*."
+msgstr ""
+
+# d8272af15da84f548eda6e142b5c36d5
+#: smeshBuilder.Mesh.Reorient2D:3
+msgid "is a mesh, sub-mesh, group or list of IDs of 2D elements"
+msgstr ""
+
+# b470b8c851584d52b33c9ebb80cb5182
+#: smeshBuilder.Mesh.Reorient2D:4
+msgid ""
+"is a desired direction of normal of *theFace*. It can be either a GEOM "
+"vector or a list of coordinates [x,y,z]."
+msgstr ""
+
+# 1dfe8339852f40c2bc9c14d89f70fd38
+#: smeshBuilder.Mesh.Reorient2D:6
+msgid ""
+"defines a face of *the2DObject* whose normal will be compared with "
+"theDirection. It can be either ID of face or a point by which the face "
+"will be found. The point can be given as either a GEOM vertex or a list "
+"of point coordinates."
+msgstr ""
+
+# f5e76222c9384a80b95e9d6ca96d3d82
+#: smeshBuilder.Mesh.Reorient2D:11
+msgid "number of reoriented faces"
+msgstr ""
+
+# ae586f23352c48d48b1251fe4adf9753
+#: smeshBuilder.Mesh.Reorient2DBy3D:1
+msgid "Reorient faces according to adjacent volumes."
+msgstr ""
+
+# 5637d8472ceb48a5ac09a36dccb6508d
+#: smeshBuilder.Mesh.Reorient2DBy3D:3
+msgid "is a mesh, sub-mesh, group or list of either IDs of faces or face groups."
+msgstr ""
+
+# fbe444904126480189a2b4bff30451cc
+#: smeshBuilder.Mesh.Reorient2DBy3D:5
+msgid "is a mesh, sub-mesh, group or list of IDs of volumes."
+msgstr ""
+
+# 60dbe9aedc35403f8d8874ec23872b78
+#: smeshBuilder.Mesh.Reorient2DBy3D:6
+msgid ""
+"to orient faces to have their normals pointing either *outside* or "
+"*inside* the adjacent volumes."
+msgstr ""
+
+# 9a3f971661f04a978656f650cf470d62
+#: smeshBuilder.Mesh.Reorient2DBy3D:9
+msgid "number of reoriented faces."
+msgstr ""
+
+# 8e1e80ae27d441ebba256e29ad38bd7d
+#: smeshBuilder.Mesh.ReorientObject:1
+msgid "Reorient all elements of the object"
+msgstr ""
+
+# 5ea928bc815a4398a209441663a403f9
+#: smeshBuilder.Mesh.Rotate:1
+msgid "Rotate the elements"
+msgstr ""
+
+# e954892976094ed39e622ccd8ec63101
+# 10562946803448acae999b6f2976f66a
+# 55888f73ab01433f925725524854a2f8
+# 962f6d422de94f06b61d8b6e06c70918
+#: smeshBuilder.Mesh.Rotate:4 smeshBuilder.Mesh.RotateMakeMesh:4
+#: smeshBuilder.Mesh.RotateObject:4 smeshBuilder.Mesh.RotateObjectMakeMesh:4
+msgid "the axis of rotation (AxisStruct or geom line)"
+msgstr ""
+
+# e798b5f0a16f489ea5fe3bd238dedb9d
+# 45432baabead4d679497dba8cc56288e
+# d6094f394259402c985fcac3132cbd40
+#: smeshBuilder.Mesh.Rotate:5 smeshBuilder.Mesh.RotateMakeMesh:5
+#: smeshBuilder.Mesh.RotateObject:5
+msgid ""
+"the angle of rotation (in radians) or a name of variable which defines "
+"angle in degrees"
+msgstr ""
+
+# 7e244b1bc35a4b249902750e33fa262e
+# ab5609c4ae0543feb12e3a9859e6acfb
+#: smeshBuilder.Mesh.Rotate:6 smeshBuilder.Mesh.RotateObject:6
+msgid "allows copying the rotated elements"
+msgstr ""
+
+# c578891480344a5c9172e6bc52881e86
+#: smeshBuilder.Mesh.RotateMakeMesh:1
+msgid "Create a new mesh of rotated elements"
+msgstr ""
+
+# a7fe90db49234210a481c8840bd8d35f
+#: smeshBuilder.Mesh.RotateMakeMesh:3
+msgid "list of element ids"
+msgstr ""
+
+# 5392a24799aa46688fe6f744b0087926
+# 9c22c1ee008847ae8d82e9597d23f3b2
+# 0267bee47be141fea39f30df4b681134
+# 85d8ed7906774892a8a14539dfd79551
+# 39269db1a0c848c5bfe786ae85a90506
+#: smeshBuilder.Mesh.RotateMakeMesh:7 smeshBuilder.Mesh.RotateObjectMakeMesh:7
+#: smeshBuilder.Mesh.ScaleMakeMesh:7 smeshBuilder.Mesh.TranslateMakeMesh:6
+#: smeshBuilder.Mesh.TranslateObjectMakeMesh:6
+msgid "the name of the newly created mesh"
+msgstr ""
+
+# d3e52e486673421a9ea6e8f4b694acbd
+#: smeshBuilder.Mesh.RotateObject:1
+msgid "Rotate the object"
+msgstr ""
+
+# 95c57a2024e54d0988fdcde1ca100d67
+#: smeshBuilder.Mesh.RotateObject:3
+msgid "the object to rotate( mesh, submesh, or group)"
+msgstr ""
+
+# 96b9049d72ab4f9d86c5713ef9bb9951
+#: smeshBuilder.Mesh.RotateObjectMakeMesh:1
+msgid "Create a new mesh from the rotated object"
+msgstr ""
+
+# 0ba9e4936617484ca1544bdde3e358b0
+#: smeshBuilder.Mesh.RotateObjectMakeMesh:3
+msgid "the object to rotate (mesh, submesh, or group)"
+msgstr ""
+
+# 09760b1db434420ab3e961a9fd4fb7b4
+#: smeshBuilder.Mesh.RotateObjectMakeMesh:5
+msgid ""
+"the angle of rotation (in radians)  or a name of variable which defines "
+"angle in degrees"
+msgstr ""
+
+# fe557e8c67a148b58253f81d8d0538cc
+#: smeshBuilder.Mesh.RotationSweep:1
+msgid "Generate new elements by rotation of the elements around the axis"
+msgstr ""
+
+# d1e4e9b1519844f9acc592f489d8fcd5
+#: smeshBuilder.Mesh.RotationSweep:3
+msgid "the list of ids of elements to sweep"
+msgstr ""
+
+# 9211a84e790b4419902c42436351c846
+# d5f675a069314f15ac736657d8cf9444
+# c88319f350e84125a9df83c0aad9690c
+# 6cd9136f76cf4aa8b5897c13b67d376b
+#: smeshBuilder.Mesh.RotationSweep:4 smeshBuilder.Mesh.RotationSweepObject:5
+#: smeshBuilder.Mesh.RotationSweepObject1D:5
+#: smeshBuilder.Mesh.RotationSweepObject2D:5
+msgid "the axis of rotation, AxisStruct or line(geom object)"
+msgstr ""
+
+# c6ffb46f19e44786944747f834051cc0
+# e8df8bc96e2d4fceb187e5969dafd975
+#: smeshBuilder.Mesh.RotationSweep:5 smeshBuilder.Mesh.RotationSweepObjects:7
+msgid ""
+"the angle of Rotation (in radians) or a name of variable which defines "
+"angle in degrees"
+msgstr ""
+
+# ca822c2e5f9c4462b4a80b58014e2a37
+# c142b057b52d4fb3879369ca5db72d7d
+# eeddbd9d68014ae594339a2082b26077
+# 0c5a26aa8a37439e83ba944d3489d28d
+# 96280e8fbd3d4a71904640bd12d1e61c
+#: smeshBuilder.Mesh.RotationSweep:7 smeshBuilder.Mesh.RotationSweepObject:8
+#: smeshBuilder.Mesh.RotationSweepObject1D:8
+#: smeshBuilder.Mesh.RotationSweepObject2D:8
+#: smeshBuilder.Mesh.RotationSweepObjects:10
+msgid "tolerance"
+msgstr ""
+
+# e8509709ee544b34abe00c1057b16b07
+# 5085fcbc4a944b7c8fc2811f1d345f71
+# 348f89957de441f0a2c549ebe199e7cf
+# b45308058f394e82b1b25a958770df86
+# cc49391df0ed4ff6b1264ae74382b8db
+#: smeshBuilder.Mesh.RotationSweep:9 smeshBuilder.Mesh.RotationSweepObject:10
+#: smeshBuilder.Mesh.RotationSweepObject1D:10
+#: smeshBuilder.Mesh.RotationSweepObject2D:10
+#: smeshBuilder.Mesh.RotationSweepObjects:12
+msgid ""
+"gives meaning of AngleInRadians: if True then it is an angular size of "
+"all steps, else - size of each step"
+msgstr ""
+
+# 3e521d72e9b54647956f4998b9bc0840
+# 38ed78d4c6384975a31150a167a7200e
+# 39e9331e693d43feb9064f38bd62b5af
+#: smeshBuilder.Mesh.RotationSweepObject:3
+#: smeshBuilder.Mesh.RotationSweepObject1D:3
+#: smeshBuilder.Mesh.RotationSweepObject2D:3
+msgid ""
+"Generate new elements by rotation of the elements of object around the "
+"axis"
+msgstr ""
+
+# 6ff4a11fa8254d849ea6a6f450ad14b7
+#: smeshBuilder.Mesh.RotationSweepObject:3
+msgid "theObject object which elements should be sweeped."
+msgstr ""
+
+# 83137c2b41aa4987a2ac3b710b34ba39
+#: smeshBuilder.Mesh.RotationSweepObject:3
+msgid "It can be a mesh, a sub mesh or a group."
+msgstr ""
+
+# c2da4840d98a474db629486e051739a5
+# 03c1653e504e4c63baa5308e290066b1
+# 9b064e635b1b47afae1cf78d3bd06a4e
+#: smeshBuilder.Mesh.RotationSweepObject:6
+#: smeshBuilder.Mesh.RotationSweepObject1D:6
+#: smeshBuilder.Mesh.RotationSweepObject2D:6
+msgid "the angle of Rotation"
+msgstr ""
+
+# 42a1b003000b4db59e9059a225054d33
+# 7365124f63a1490e928f494a6b33544e
+# c79a165ad4eb41f3bef3656052bd44a1
+#: smeshBuilder.Mesh.RotationSweepObject:7
+#: smeshBuilder.Mesh.RotationSweepObject1D:7
+#: smeshBuilder.Mesh.RotationSweepObject2D:7
+msgid "number of steps"
+msgstr ""
+
+# 1ef2426d19214a939ebeeacd22d1fcce
+# a0ed37cee1934ff690659176a69546bb
+#: smeshBuilder.Mesh.RotationSweepObject1D:2
+#: smeshBuilder.Mesh.RotationSweepObject2D:2
+msgid ""
+"theObject object which elements should be sweeped. It can be a mesh, a "
+"sub mesh or a group."
+msgstr ""
+
+# 175eb1156d0b4d8e939bf5e38beab96d
+#: smeshBuilder.Mesh.RotationSweepObjects:1
+msgid ""
+"Generate new elements by rotation of the given elements and nodes around "
+"the axis"
+msgstr ""
+
+# 6a195e01b87c4606a7251857ab2ec93c
+#: smeshBuilder.Mesh.RotationSweepObjects:3
+msgid "nodes to revolve: a list including ids, groups, sub-meshes or a mesh"
+msgstr ""
+
+# a50ab2030df843489629d6fa3cccf965
+#: smeshBuilder.Mesh.RotationSweepObjects:4
+msgid "edges to revolve: a list including ids, groups, sub-meshes or a mesh"
+msgstr ""
+
+# ddbef521730744c8b6085191aef64171
+#: smeshBuilder.Mesh.RotationSweepObjects:5
+msgid "faces to revolve: a list including ids, groups, sub-meshes or a mesh"
+msgstr ""
+
+# 1a38daae3d774ca6b93bb94500bd7438
+#: smeshBuilder.Mesh.RotationSweepObjects:6
+msgid "the axis of rotation: AxisStruct, line (geom object) or [x,y,z,dx,dy,dz]"
+msgstr ""
+
+# d485b5e3d56a4605a5ee381e343e9af5
+#: smeshBuilder.Mesh.Scale:1
+msgid "Scale the object"
+msgstr ""
+
+# 9349610dc317409a94bb4636d8f3ac63
+# e86292bb047f46bc8df75ad2a36a1c76
+# 097cd26b2a6c4a84872f83ca5289dadb
+# f1c57c7f726348e1b93baf9df40effd9
+#: smeshBuilder.Mesh.Scale:3 smeshBuilder.Mesh.ScaleMakeMesh:3
+#: smeshBuilder.Mesh.TranslateObject:3
+#: smeshBuilder.Mesh.TranslateObjectMakeMesh:3
+msgid "the object to translate (mesh, submesh, or group)"
+msgstr ""
+
+# c3ffaa87871c4f31b8ee204f1576e269
+# c4d7c82dfb6d417196eab97dba7115b2
+#: smeshBuilder.Mesh.Scale:4 smeshBuilder.Mesh.ScaleMakeMesh:4
+msgid "base point for scale (SMESH.PointStruct or list of 3 coordinates)"
+msgstr ""
+
+# 4baa1ceacd5f42069f7a7962b37d8fc4
+# 315b80ffc63c420e9fc5a6ab6ec45e7d
+#: smeshBuilder.Mesh.Scale:5 smeshBuilder.Mesh.ScaleMakeMesh:5
+msgid "list of 1-3 scale factors for axises"
+msgstr ""
+
+# 9e3df2ff23b5437fb6333c2b7d2695cb
+# cb4f6388baba40d584079a9e9d1cea41
+# 69d4d2544a814039ac7c35a470a817d5
+#: smeshBuilder.Mesh.Scale:6 smeshBuilder.Mesh.Translate:5
+#: smeshBuilder.Mesh.TranslateObject:5
+msgid "allows copying the translated elements"
+msgstr ""
+
+# b0cf7c8ebe434810b5873f3aff0bff81
+#: smeshBuilder.Mesh.Scale:10
+msgid ""
+"list of created groups (SMESH_GroupBase) if MakeGroups=True,     empty "
+"list otherwise"
+msgstr ""
+
+# d2cb4ab4f1ae42a2920330e679e3b7fa
+#: smeshBuilder.Mesh.Scale:12
+msgid "list of created groups (SMESH_GroupBase) if MakeGroups=True,"
+msgstr ""
+
+# 57fde673f9504e969e0987a1252948dc
+#: smeshBuilder.Mesh.Scale:13
+msgid "empty list otherwise"
+msgstr ""
+
+# 1200247e0a624a838e3bf6d74bef3c4b
+# effc1b5bf6ca449799137ed686f365e4
+#: smeshBuilder.Mesh.ScaleMakeMesh:1
+#: smeshBuilder.Mesh.TranslateObjectMakeMesh:1
+msgid "Create a new mesh from the translated object"
+msgstr ""
+
+# 2c1d2182a39644cc88b9d9122f0dc258
+#: smeshBuilder.Mesh.Segment:1
+msgid "Creates segment 1D algorithm for edges"
+msgstr ""
+
+# 303a9c89b17a4e02baced43d644c89d7
+#: smeshBuilder.Mesh.Segment:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_CompositeSegment`, "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Segment`, "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Segment_Python`"
+msgstr ""
+
+# 661e60226aaa41c79290fc109259f9ae
+#: smeshBuilder.Mesh.SetAutoColor:1
+msgid "Toggle auto color mode on the object."
+msgstr ""
+
+# ec7a121d4c67443d8076e360fb4bd67c
+#: smeshBuilder.Mesh.SetAutoColor:3
+msgid "the flag which toggles auto color mode."
+msgstr ""
+
+# e77ac0bcdb734859813e04aaa87a666b
+#: smeshBuilder.Mesh.SetAutoColor:5
+msgid ""
+"If switched on, a default color of a new group in Create Group dialog is "
+"chosen randomly."
+msgstr ""
+
+# 08a82d364f3a4464b28731243b47626a
+#: smeshBuilder.Mesh.SetMesh:1
+msgid "Initialize the Mesh object from an instance of SMESH_Mesh interface"
+msgstr ""
+
+# 63e36ea4c5f8437ea6e9ffa779851d50
+#: smeshBuilder.Mesh.SetMeshElementOnShape:1
+msgid "**Bind** an element to a shape"
+msgstr ""
+
+# 7a881589da124ec2916e73996f3990cb
+#: smeshBuilder.Mesh.SetMeshElementOnShape:3
+msgid "an element ID"
+msgstr ""
+
+# e2b27a38a0214b2f839dac8c803e2adf
+#: smeshBuilder.Mesh.SetMeshElementOnShape:4
+msgid "a shape or shape ID"
+msgstr ""
+
+# 403967f5bc554908ba47c9f40ea04ff9
+# 46fe30741b9443cca403648eda1c5736
+# f31170811fc84bf5bcc942d418443269
+# 5ef6df96a6204edb9eccc5b3339edfe1
+# 6e9e7b0e2f4f4674ae1155e966be7ba0
+#: smeshBuilder.Mesh.SetMeshElementOnShape:6
+#: smeshBuilder.Mesh.SetNodeInVolume:6 smeshBuilder.Mesh.SetNodeOnEdge:7
+#: smeshBuilder.Mesh.SetNodeOnFace:8 smeshBuilder.Mesh.SetNodeOnVertex:6
+msgid "True if succeed else raises an exception"
+msgstr ""
+
+# 89da82c2d185491ba1b3438ffd4bcd0f
+#: smeshBuilder.Mesh.SetMeshOrder:1
+msgid "Set order in which concurrent sub-meshes should be meshed"
+msgstr ""
+
+# 811de34c15c44eb68bdbf9c986369fa8
+#: smeshBuilder.Mesh.SetName:1
+msgid "Set a name to the mesh"
+msgstr ""
+
+# fd48e24790f64bf797557a046edd4f69
+#: smeshBuilder.Mesh.SetName:3
+msgid "a new name of the mesh"
+msgstr ""
+
+# fe130067b4aa46ad9ae22380b3fdbca8
+#: smeshBuilder.Mesh.SetNodeInVolume:1
+msgid "**Binds** a node to a solid"
+msgstr ""
+
+# 03d2c18b66664faf8c079cd58635393a
+# 8a43f5a0707246e8bd0a60eda6633710
+# 2b309e8431bd4c83b0f0cd19e83aa86a
+# 99f40985ffdb4a349a3aad9abe4d1ff9
+#: smeshBuilder.Mesh.SetNodeInVolume:3 smeshBuilder.Mesh.SetNodeOnEdge:3
+#: smeshBuilder.Mesh.SetNodeOnFace:3 smeshBuilder.Mesh.SetNodeOnVertex:3
+msgid "a node ID"
+msgstr ""
+
+# 2b4c61df89e04b01847397f8b2c82df5
+#: smeshBuilder.Mesh.SetNodeInVolume:4
+msgid "a solid or solid ID"
+msgstr ""
+
+# 0ff7d43597fc44538393c0999a1cecca
+#: smeshBuilder.Mesh.SetNodeOnEdge:1
+msgid "**Stores** the node position on an edge"
+msgstr ""
+
+# d4ddcede81c2471a8fac785855ca77e0
+#: smeshBuilder.Mesh.SetNodeOnEdge:4
+msgid "an edge or edge ID"
+msgstr ""
+
+# 117ddee40f9a4e3c9aec1f900c06f18f
+#: smeshBuilder.Mesh.SetNodeOnEdge:5
+msgid "a parameter on the edge where the node is located"
+msgstr ""
+
+# 9c35fc3be1664fa5a0b91fe86487d477
+#: smeshBuilder.Mesh.SetNodeOnFace:1
+msgid "**Stores** node position on a face"
+msgstr ""
+
+# 1e0300ec5db64dcb97fd9b250d6408c2
+#: smeshBuilder.Mesh.SetNodeOnFace:4
+msgid "a face or face ID"
+msgstr ""
+
+# f47c78dd5618421fbbac1a243ee20bcc
+#: smeshBuilder.Mesh.SetNodeOnFace:5
+msgid "U parameter on the face where the node is located"
+msgstr ""
+
+# 522e881bacb446eab4d56e76219740a5
+#: smeshBuilder.Mesh.SetNodeOnFace:6
+msgid "V parameter on the face where the node is located"
+msgstr ""
+
+# 66aa045902f645528ae9bcede1f131f2
+#: smeshBuilder.Mesh.SetNodeOnVertex:1
+msgid "**Binds** a node to a vertex"
+msgstr ""
+
+# 34fd1639b2954718b9e54e77581243f5
+#: smeshBuilder.Mesh.SetNodeOnVertex:4
+msgid "a vertex or vertex ID"
+msgstr ""
+
+# 23fe317488f44517b67558e687218654
+#: smeshBuilder.Mesh.SetShape:1
+msgid "Associate the given shape to the mesh (entails the recreation of the mesh)"
+msgstr ""
+
+# 71ac1481f61142d9b91596e761583f26
+#: smeshBuilder.Mesh.SetShape:3
+msgid "the shape to be meshed (GEOM_Object)"
+msgstr ""
+
+# c180cee81aa8405cbc15aed055ef3ad8
+#: smeshBuilder.Mesh.SewBorderToSide:1
+msgid "Sew border to side"
+msgstr ""
+
+# 247d4b291c5e489fa6d6b0f9fc3a32ae
+# db3be725c2354b6daa302e520daa3b3f
+# 54b2a73647c74c72b6fdda61e0edc573
+# dac7dc6664694b85892bc570a3a3ebd4
+#: smeshBuilder.Mesh.SewBorderToSide:3
+#: smeshBuilder.Mesh.SewConformFreeBorders:3 smeshBuilder.Mesh.SewFreeBorders:3
+#: smeshBuilder.Mesh.SewSideElements:8
+msgid "SMESH::Sew_Error"
+msgstr ""
+
+# 9581a6589d2b49cbb7b7efa5430ad85f
+#: smeshBuilder.Mesh.SewCoincidentFreeBorders:1
+msgid "Sew FreeBorder's of each group"
+msgstr ""
+
+# 00151bb72d41477aaf45c78e70c4a6c2
+#: smeshBuilder.Mesh.SewCoincidentFreeBorders:3
+msgid ""
+"either a SMESH.CoincidentFreeBorders structure or a list of lists where "
+"each enclosed list contains node IDs of a group of coincident free "
+"borders such that each consequent triple of IDs within a group describes "
+"a free border in a usual way: n1, n2, nLast - i.e. 1st node, 2nd node and"
+" last node of a border. For example [[1, 2, 10, 20, 21, 40], [11, 12, 15,"
+" 55, 54, 41]] describes two groups of coincident free borders, each group"
+" including two borders."
+msgstr ""
+
+# 6a9559e8500e407cba61089e55f942a0
+#: smeshBuilder.Mesh.SewCoincidentFreeBorders:10
+msgid ""
+"if :code:`True` faces adjacent to free borders are converted to polygons "
+"if a node of opposite border falls on a face edge, else such faces are "
+"split into several ones."
+msgstr ""
+
+# b47cc13c966547fbbc8d41a665052df0
+#: smeshBuilder.Mesh.SewCoincidentFreeBorders:13
+msgid ""
+"if :code:`True` volumes adjacent to free borders are converted to "
+"polyhedra if a node of opposite border falls on a volume edge, else such "
+"volumes, if any, remain intact and the mesh becomes non-conformal."
+msgstr ""
+
+# 706b5650355b4680aa31397eefeb062b
+#: smeshBuilder.Mesh.SewCoincidentFreeBorders:17
+msgid "a number of successfully sewed groups"
+msgstr ""
+
+# 4faf414d9f6247478f655942a32e226b
+#: smeshBuilder.Mesh.SewConformFreeBorders:1
+msgid "Sew conform free borders"
+msgstr ""
+
+# 6989a27e9d7144f6bf6024e5b7976964
+#: smeshBuilder.Mesh.SewFreeBorders:1
+msgid "Sew free borders"
+msgstr ""
+
+# abe4dc973c4c45289e323636555f783d
+#: smeshBuilder.Mesh.SewSideElements:6
+msgid "Sew two sides of a mesh. The nodes belonging to Side1 are"
+msgstr ""
+
+# 7f02e00eeacc4238a2e839413f4d161b
+#: smeshBuilder.Mesh.SewSideElements:2
+msgid ""
+"merged with the nodes of elements of Side2. The number of elements in "
+"theSide1 and in theSide2 must be equal and they should have similar nodal"
+" connectivity. The nodes to merge should belong to side borders and the "
+"first node should be linked to the second."
+msgstr ""
+
+# 02ef543e86a84d878888c6557d270aa5
+#: smeshBuilder.Mesh.Smooth:1
+msgid "Smooth elements"
+msgstr ""
+
+# 154cfe14533541fa8a9dc5d094d18134
+# 681b85e0f9b34ff38a8bded1c5e57b3f
+#: smeshBuilder.Mesh.Smooth:3 smeshBuilder.Mesh.SmoothParametric:3
+msgid "the list if ids of elements to smooth"
+msgstr ""
+
+# 6043c44f91d440ff8e3c5876e05bc21d
+# ecca2e50c4e44801bf3eb0b1700f9aa1
+# 37944ec3c2a142cd874370885d827588
+# 6632d80e7d6046a383142af30915c493
+#: smeshBuilder.Mesh.Smooth:4 smeshBuilder.Mesh.SmoothObject:4
+#: smeshBuilder.Mesh.SmoothParametric:4
+#: smeshBuilder.Mesh.SmoothParametricObject:4
+msgid ""
+"the list of ids of fixed nodes. Note that nodes built on edges and "
+"boundary nodes are always fixed."
+msgstr ""
+
+# 3cb948f7af214de08854f38efab9635e
+# 17b452585e294d2ca832a7da9309c6f1
+# ab788dc8758e47918488e51a8e8b58a9
+# ac9daca9714b4418b5359f235ca22730
+#: smeshBuilder.Mesh.Smooth:6 smeshBuilder.Mesh.SmoothObject:6
+#: smeshBuilder.Mesh.SmoothParametric:6
+#: smeshBuilder.Mesh.SmoothParametricObject:6
+msgid "the maximum number of iterations"
+msgstr ""
+
+# 9e006112d0df4780a0e225569a1d899e
+# 0f2f3ce4e96149018785a0e0f3ca2fb8
+# d2eef6dce8004e329fb5c508a4e1f74c
+# a456d0c936334517ba0eab92d7e0b0e1
+#: smeshBuilder.Mesh.Smooth:7 smeshBuilder.Mesh.SmoothObject:7
+#: smeshBuilder.Mesh.SmoothParametric:7
+#: smeshBuilder.Mesh.SmoothParametricObject:7
+msgid "varies in range [1.0, inf]"
+msgstr ""
+
+# 0c9cb6954b814290856ded0aeca3e4ca
+# 1a61a34c795e45ba9fedce22dcc5a05b
+# 5902aed0839640a08634ab11ae1a1e84
+# b14aff06b3c84f00a098ff176c3f7fec
+#: smeshBuilder.Mesh.Smooth:8 smeshBuilder.Mesh.SmoothObject:8
+#: smeshBuilder.Mesh.SmoothParametric:8
+#: smeshBuilder.Mesh.SmoothParametricObject:8
+msgid ""
+"is either Laplacian (smesh.LAPLACIAN_SMOOTH) or Centroidal "
+"(smesh.CENTROIDAL_SMOOTH)"
+msgstr ""
+
+# 665ad5c99b10496fa48cbd504d8942f8
+#: smeshBuilder.Mesh.SmoothObject:1
+msgid "Smooth elements which belong to the given object"
+msgstr ""
+
+# 52fb4c0b32b64cfcaa055f6cccc7578e
+# 48bb8ef9d7d14429ab25b85ed928e1d0
+#: smeshBuilder.Mesh.SmoothObject:3 smeshBuilder.Mesh.SmoothParametricObject:3
+msgid "the object to smooth"
+msgstr ""
+
+# 41e15641f0b349cfae899721a9dd3cbe
+#: smeshBuilder.Mesh.SmoothParametric:1
+msgid "Parametrically smooth the given elements"
+msgstr ""
+
+# b1c05f2c1fa04bafbdb3257c1213b729
+#: smeshBuilder.Mesh.SmoothParametricObject:1
+msgid "Parametrically smooth the elements which belong to the given object"
+msgstr ""
+
+# a740780fc50b40ef81571682246bb7cf
+#: smeshBuilder.Mesh.SplitBiQuadraticIntoLinear:1
+msgid ""
+"Split bi-quadratic elements into linear ones without creation of "
+"additional nodes:"
+msgstr ""
+
+# f83f2305134d44c78660269e7d0378f8
+#: smeshBuilder.Mesh.SplitBiQuadraticIntoLinear:3
+msgid "bi-quadratic triangle will be split into 3 linear quadrangles;"
+msgstr ""
+
+# a800e199e96b4e00a5241f51f75bf642
+#: smeshBuilder.Mesh.SplitBiQuadraticIntoLinear:4
+msgid "bi-quadratic quadrangle will be split into 4 linear quadrangles;"
+msgstr ""
+
+# bface8f27ea84bdd86616b8d7d71a075
+#: smeshBuilder.Mesh.SplitBiQuadraticIntoLinear:5
+msgid "tri-quadratic hexahedron will be split into 8 linear hexahedra."
+msgstr ""
+
+# cd418caf39ce43fa8540a4e0dc8659ac
+#: smeshBuilder.Mesh.SplitBiQuadraticIntoLinear:7
+msgid ""
+"Quadratic elements of lower dimension  adjacent to the split bi-quadratic"
+" element will be split in order to keep the mesh conformal."
+msgstr ""
+
+# 3a97c9f46ccf425680f436217f047e2b
+#: smeshBuilder.Mesh.SplitBiQuadraticIntoLinear:10
+msgid ""
+"elements to split\\: sub-meshes, groups, filters or element IDs; if None "
+"(default), all bi-quadratic elements will be split"
+msgstr ""
+
+# cc505fa534224e9d8b4f80b41f2be0e7
+#: smeshBuilder.Mesh.SplitHexaToPrisms:1
+msgid "**Split** hexahedrons into prisms."
+msgstr ""
+
+# 7d04e14dbdd34951b016b072522f9569
+#: smeshBuilder.Mesh.SplitHexaToPrisms:3
+msgid "Uses the pattern mapping functionality for splitting."
+msgstr ""
+
+# 87b2a6cf6287400cbf0f45e8e033cbd4
+#: smeshBuilder.Mesh.SplitHexaToPrisms:5
+msgid ""
+"the object (mesh, submesh or group) from where the list of hexahedrons is"
+" taken;"
+msgstr ""
+
+# 60c437066eb046f89a6ba4e40bd89374
+#: smeshBuilder.Mesh.SplitHexaToPrisms:6
+msgid ""
+"(within the range [0,7]) gives the orientation of the pattern relatively "
+"each hexahedron: keypoint (0,0,0) of the pattern will be mapped into the "
+"<VAR>theNode000</VAR>-th node of each volume, keypoint (0,0,1) will be "
+"mapped into the <VAR>theNode001</VAR>-th node of each volume. Edge "
+"(0,0,0)-(0,0,1) of used pattern connects two not split corners."
+msgstr ""
+
+# 74d4750929614a67a47630cfa8324541
+#: smeshBuilder.Mesh.SplitHexaToTetras:1
+msgid "**Splits** hexahedrons into tetrahedrons."
+msgstr ""
+
+# f95d0b324b9c41ce99e3bdb06217ea90
+#: smeshBuilder.Mesh.SplitHexaToTetras:3
+msgid "This operation uses pattern mapping functionality for splitting."
+msgstr ""
+
+# 6de4292735084605b8a54dcbaaab810a
+#: smeshBuilder.Mesh.SplitHexaToTetras:5
+msgid ""
+"the object from which the list of hexahedrons is taken; this is mesh, "
+"submesh or group."
+msgstr ""
+
+# 2e6f9bcf5ddc457c876fc9dbd8b839d7
+#: smeshBuilder.Mesh.SplitHexaToTetras:6
+msgid ""
+"within the range [0,7]; gives the orientation of the pattern relatively "
+"each hexahedron: the (0,0,0) key-point of the pattern will be mapped into"
+" <VAR>theNode000</VAR>-th node of each volume, the (0,0,1) key-point will"
+" be mapped into <VAR>theNode001</VAR>-th node of each volume. The (0,0,0)"
+" key-point of the used pattern corresponds to a non-split corner."
+msgstr ""
+
+# 8c5bf0905fee40d29c07f8c5ea24100b
+#: smeshBuilder.Mesh.SplitHexahedraIntoPrisms:1
+msgid "Split hexahedra into prisms"
+msgstr ""
+
+# dbdac7c3e3034a468cc73af0fd28d38a
+# eb37988219d9422a966ea68316144aa0
+#: smeshBuilder.Mesh.SplitHexahedraIntoPrisms:3
+#: smeshBuilder.Mesh.SplitVolumesIntoTetra:3
+msgid "either a list of elements or a mesh or a group or a submesh or a filter"
+msgstr ""
+
+# 5f9fd3a9e4914d1ea27e05164068c614
+#: smeshBuilder.Mesh.SplitHexahedraIntoPrisms:4
+msgid ""
+"a point used to find a hexahedron for which *facetNormal* gives a normal "
+"vector defining facets to split into triangles. **startHexPoint** can be "
+"either a triple of coordinates or a vertex."
+msgstr ""
+
+# 08dba551989f433791994a24c8c966c1
+#: smeshBuilder.Mesh.SplitHexahedraIntoPrisms:7
+msgid ""
+"a normal to a facet to split into triangles of a hexahedron found by "
+"*startHexPoint*. **facetNormal** can be either a triple of coordinates or"
+" an edge."
+msgstr ""
+
+# 824949766ae74cd986ff7c9c7c4f2944
+#: smeshBuilder.Mesh.SplitHexahedraIntoPrisms:10
+msgid ""
+"flags passing splitting method: smesh.Hex_2Prisms, smesh.Hex_4Prisms. "
+"smesh.Hex_2Prisms - to split the hexahedron into 2 prisms, etc."
+msgstr ""
+
+# a7fbbd0272e148d2bf71e176576f545e
+#: smeshBuilder.Mesh.SplitHexahedraIntoPrisms:12
+msgid ""
+"if :code:`False`, only hexahedra adjacent to one closest to "
+"**startHexPoint** are split, else **startHexPoint** is used to find the "
+"facet to split in all domains present in *elems*."
+msgstr ""
+
+# dec6057e41b240d6a894bac2c30304b1
+#: smeshBuilder.Mesh.SplitQuad:3
+msgid "the faces to be splitted"
+msgstr ""
+
+# e90d4cb2da8f4245ac44439bea87890f
+# 3feee83dce3947008c4887cc0f962b6f
+#: smeshBuilder.Mesh.SplitQuad:4 smeshBuilder.Mesh.SplitQuadObject:5
+msgid "is used to choose a diagonal for splitting."
+msgstr ""
+
+# 211e2e41bbf0491d9b5523d116449169
+#: smeshBuilder.Mesh.SplitQuadsNearTriangularFacets:1
+msgid "Split quadrangle faces near triangular facets of volumes"
+msgstr ""
+
+# 65fed148a8214637a39898c5319b83c0
+#: smeshBuilder.Mesh.SplitVolumesIntoTetra:1
+msgid "Split volumic elements into tetrahedrons"
+msgstr ""
+
+# 047a84737f3c42d1a547b8229e4562a7
+#: smeshBuilder.Mesh.SplitVolumesIntoTetra:4
+msgid ""
+"flags passing splitting method: smesh.Hex_5Tet, smesh.Hex_6Tet, "
+"smesh.Hex_24Tet. smesh.Hex_5Tet - to split the hexahedron into 5 "
+"tetrahedrons, etc."
+msgstr ""
+
+# 4c4f9a13ac6a46a1813fa0f95b5c88a4
+#: smeshBuilder.Mesh.Translate:1
+msgid "Translate the elements"
+msgstr ""
+
+# ecd1e254d5a146eba642dbb09e5722a7
+# 9f605349b8194637a8f9746cf7f34e43
+#: smeshBuilder.Mesh.Translate:4 smeshBuilder.Mesh.TranslateMakeMesh:4
+msgid "the direction of translation (DirStruct or vector or 3 vector components)"
+msgstr ""
+
+# faa7af32c5184623be4468f7760dd1b8
+#: smeshBuilder.Mesh.TranslateMakeMesh:1
+msgid "Create a new mesh of translated elements"
+msgstr ""
+
+# d7d150dcc20b432ab01773092f4b59d3
+#: smeshBuilder.Mesh.TranslateObject:1
+msgid "Translate the object"
+msgstr ""
+
+# 8a72aae394014837a177fa48fd31bb5d
+#: smeshBuilder.Mesh.TranslateObject:4
+msgid "direction of translation (DirStruct or geom vector or 3 vector components)"
+msgstr ""
+
+# ddaa8920204f48eb939f7b3b22fc3365
+#: smeshBuilder.Mesh.TranslateObjectMakeMesh:4
+msgid ""
+"the direction of translation (DirStruct or geom vector or 3 vector "
+"components)"
+msgstr ""
+
+# 6bce4504ca9e4daea70edde81b4d2596
+#: smeshBuilder.Mesh.TriToQuad:1
+msgid "Fuse the neighbouring triangles into quadrangles."
+msgstr ""
+
+# 7af80b79bcf844ccb374d3e2523dfd56
+#: smeshBuilder.Mesh.TriToQuad:3
+msgid "The triangles to be fused."
+msgstr ""
+
+# 94ee1b86f7d34880bed9e7d07b92d64f
+#: smeshBuilder.Mesh.TriToQuad:4
+msgid ""
+"a numerical functor, in terms of enum SMESH.FunctorType, used to applied "
+"to possible quadrangles to choose a neighbour to fuse with. Type "
+"SMESH.FunctorType._items in the Python Console to see all items. Note "
+"that not all items correspond to numerical functors."
+msgstr ""
+
+# 7e1382ca1e9d41859b24c6d81732ab8b
+#: smeshBuilder.Mesh.TriToQuad:8
+msgid ""
+"is the maximum angle between element normals at which the fusion is still"
+" performed; theMaxAngle is measured in radians. Also it could be a name "
+"of variable which defines angle in degrees."
+msgstr ""
+
+# b34994fed8794da1bb73bbd1b8adf13b
+#: smeshBuilder.Mesh.TriToQuadObject:1
+msgid "Fuse the neighbouring triangles of the object into quadrangles"
+msgstr ""
+
+# d4ef940bb2f24445b30382edfd7ade66
+#: smeshBuilder.Mesh.TriToQuadObject:3
+msgid "is mesh, submesh or group"
+msgstr ""
+
+# 4c44af95b75d45ec876b473b558e5bd4
+#: smeshBuilder.Mesh.TriToQuadObject:4
+msgid ""
+"is a numerical functor, in terms of enum SMESH.FunctorType, applied to "
+"possible quadrangles to choose a neighbour to fuse with. Type "
+"SMESH.FunctorType._items in the Python Console to see all items. Note "
+"that not all items correspond to numerical functors."
+msgstr ""
+
+# 82a6c6a0ff30457b9a223d55d78cc931
+#: smeshBuilder.Mesh.TriToQuadObject:8
+msgid ""
+"a max angle between element normals at which the fusion is still "
+"performed; theMaxAngle is measured in radians."
+msgstr ""
+
+# 187f6f8220fb4725b6330e22f23cbbe8
+#: smeshBuilder.Mesh.Triangle:1
+msgid "Creates triangle 2D algorithm for faces"
+msgstr ""
+
+# 2d3a24207b2b48e69f036f4e193d164f
+#: smeshBuilder.Mesh.Triangle:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO`"
+msgstr ""
+
+# 4c010a6d0ecc4cf0ba1e405f04c4ec30
+#: smeshBuilder.Mesh.UnionGroups:1
+msgid ""
+"Produce a union of two groups. A new group is created. All mesh elements "
+"that are present in the initial groups are added to the new one"
+msgstr ""
+
+# 30a14aec46224f4ca16b7cc531d826a6
+#: smeshBuilder.Mesh.UnionListOfGroups:1
+msgid ""
+"Produce a union list of groups. New group is created. All mesh elements "
+"that are present in initial groups are added to the new one"
+msgstr ""
+
+# df7bbb4623c24aaf8186bacd0d932720
+#: smeshBuilder.Mesh.UseExisting1DElements:1
+msgid "Creates 1D algorithm for edges with reusing of existing mesh elements"
+msgstr ""
+
+# 21f34ffe54d046c19cb17a42f952688b
+#: smeshBuilder.Mesh.UseExisting1DElements:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D`"
+msgstr ""
+
+# 2ba4e8c8724e4de697081d0832d4f821
+#: smeshBuilder.Mesh.UseExisting2DElements:1
+msgid "Creates 1D-2D algorithm for faces with reusing of existing mesh elements"
+msgstr ""
+
+# 906024c7ecef4c39b879884b797aa350
+#: smeshBuilder.Mesh.UseExisting2DElements:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D`"
+msgstr ""
+
+# 04532071962f47a7812b1c1faa014f5e
+#: smeshBuilder.Mesh.UseExistingFaces:1
+msgid "Creates 2D algorithm allowing batch meshing of faces"
+msgstr ""
+
+# 188cc698814641f094e55117737fa024
+#: smeshBuilder.Mesh.UseExistingFaces:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_UseExisting_2D`"
+msgstr ""
+
+# c09f5483a7874c1286a42cb8f73ca468
+#: smeshBuilder.Mesh.UseExistingSegments:1
+msgid "Creates 1D algorithm allowing batch meshing of edges"
+msgstr ""
+
+# 52f46a62b6eb452bb532648086b8acb3
+#: smeshBuilder.Mesh.UseExistingSegments:12
+msgid ""
+"An instance of Mesh_Algorithm sub-class according to the specified "
+"*algo_type*, see "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D`"
+msgstr ""
+
+# 4da8d5b0601f4e58bc1848560fa79f8f
+#: smeshBuilder.MeshMeta:1
+msgid ""
+"Private class used to workaround a problem that sometimes isinstance(m, "
+"Mesh) returns False"
+msgstr ""
+
+# 9e97c1dcf44a4bb78ffe41dea937c994
+#: smeshBuilder.New:1
+msgid ""
+"Create a new smeshBuilder instance.The smeshBuilder class provides the "
+"Python interface to create or load meshes."
+msgstr ""
+
+# ed3b6649b8ac4b0dbb83317d4b65c8f3
+#: smeshBuilder.New:8
+msgid "Typical use is:"
+msgstr ""
+
+# 22922498b0d3417daa17b17538594655
+#: smeshBuilder.New:5
+msgid ""
+"import salome salome.salome_init() from salome.smesh import smeshBuilder "
+"smesh = smeshBuilder.New(salome.myStudy)"
+msgstr ""
+
+# 5462d268961749c997c368999d5e68ba
+#: smeshBuilder.New:10
+msgid "SALOME study, generally obtained by salome.myStudy."
+msgstr ""
+
+# 03e6121aa1234366aecac9235fe0c0e6
+#: smeshBuilder.New:11
+msgid "CORBA proxy of SMESH Engine. If None, the default Engine is used."
+msgstr ""
+
+# 90dc03cd87e24db49827cb092044d558
+#: smeshBuilder.New:12
+msgid "CORBA proxy of GEOM  Engine. If None, the default Engine is used."
+msgstr ""
+
+# 81eaaacb448e4a04931eaca4de3423d7
+#: smeshBuilder.New:14
+msgid "smeshBuilder instance"
+msgstr ""
+
+# 886ccd689b794c09b0eb2bbf774f1cfa
+#: smeshBuilder.ParseAngles:1
+msgid "Parse parameters while converting variables to radians"
+msgstr ""
+
+# 53d8d96d589b497ea699b4ecb6d0380a
+#: smeshBuilder.ParseParameters:1
+msgid ""
+"Return list of variable values from salome notebook. The last argument, "
+"if is callable, is used to modify values got from notebook"
+msgstr ""
+
+# 2a9a65e99c3345fcbdd9dc9c9f111324
+#: smeshBuilder.Pattern:1
+msgid ""
+"Private class wrapping SMESH.SMESH_Pattern CORBA class in order to treat "
+"Notebook variables in some methods"
+msgstr ""
+
+# ed98b3537b0e4785a5f2355d1de41f14
+#: smeshBuilder.TreatHypoStatus:1
+msgid "Print error message if a hypothesis was not assigned."
+msgstr ""
+
+# 40c345d587c547488bc365f530a1ae5a
+#: smeshBuilder.algoCreator:1
+msgid "Private class used to bind methods creating algorithms to the class Mesh"
+msgstr ""
+
+# 352b047395684578b1c9c26ffaf5fe5c
+#: smeshBuilder.algoCreator.add:1
+msgid "Store a python class of algorithm"
+msgstr ""
+
+# 1019e62e1384419e8fdf95c16bd2ca26
+#: smeshBuilder.algoCreator.copy:1
+msgid "Create a copy of self and assign mesh to the copy"
+msgstr ""
+
+# 03de87b640a24ad19edffefb18a959a1
+#: smeshBuilder.genObjUnRegister:1
+msgid ""
+"A helper class that calls UnRegister() of SALOME.GenericObj'es stored in "
+"it"
+msgstr ""
+
+# 3b14d26a35c841ad9e077431311950a8
+#: smeshBuilder.genObjUnRegister.set:1
+msgid "Store one or a list of of SALOME.GenericObj'es"
+msgstr ""
+
+# 2449b4a64d8742c297211a453cf59645
+#: smeshBuilder.hypMethodWrapper:1
+msgid ""
+"Private class used to substitute and store variable parameters of "
+"hypotheses."
+msgstr ""
+
+# 5b8dc58dd3094efca74aab9fc1d9dec3
+#: smeshBuilder.meshEditor:1
+msgid ""
+"Private class used to compensate change of CORBA API of SMESH_MeshEditor "
+"for backward compatibility with old dump scripts which call "
+"SMESH_MeshEditor directly and not via smeshBuilder.Mesh"
+msgstr ""
+
+# cce8483f9b8d42fa9cdf34374e5c6a6e
+#: smeshBuilder.meshProxy:1
+msgid ""
+"Private class used to compensate change of CORBA API of SMESH_Mesh for "
+"backward compatibility with old dump scripts which call SMESH_Mesh "
+"directly and not via smeshBuilder.Mesh"
+msgstr ""
+
+# 50bb10f7ca4341a19a2dd356854fe60b
+#: smeshBuilder.smeshBuilder:1
+msgid ""
+"This class allows to create, load or manipulate meshes. It has a set of "
+"methods to create, load or copy meshes, to combine several meshes, etc. "
+"It also has methods to get infos and measure meshes."
+msgstr ""
+
+# ce8522ea80eb4ff8857f668cf225c7df
+# 954a31fd73ec46c59ecabc0e5868c6a7
+#: smeshBuilder.smeshBuilder.BoundingBox:3
+#: smeshBuilder.smeshBuilder.GetBoundingBox:3
+msgid "single source object or list of source objects"
+msgstr ""
+
+# 46aae021f7274a008048d7ac0a25b8f4
+#: smeshBuilder.smeshBuilder.ColorToString:1
+msgid "a string representation of the color."
+msgstr ""
+
+# e3e45db48984486f8984111398966743
+#: smeshBuilder.smeshBuilder.ColorToString:3
+msgid "To be used with filters."
+msgstr ""
+
+# 11b574b638f245208f1ecd021badb70b
+#: smeshBuilder.smeshBuilder.ColorToString:5
+msgid "Parametrs:"
+msgstr ""
+
+# 106c4740c6ba4d33b1201cdbf0ca8556
+#: smeshBuilder.smeshBuilder.ColorToString:6
+msgid "c: color value (SALOMEDS.Color)"
+msgstr ""
+
+# 43e55a0b1433462ab0ec9acc95092ab5
+#: smeshBuilder.smeshBuilder.Concatenate:2
+msgid ""
+"Concatenate the given meshes into one mesh. All groups of input meshes "
+"will be"
+msgstr ""
+
+# ba5402cdb7084614bec07409765b61c1
+#: smeshBuilder.smeshBuilder.Concatenate:2
+msgid "present in the new mesh."
+msgstr ""
+
+# 5ee6643f042f4e84bc7511db99d75c78
+#: smeshBuilder.smeshBuilder.Concatenate:4
+msgid "the meshes, sub-meshes and groups to combine into one mesh"
+msgstr ""
+
+# 2bb7fb5773c44c9a9d55e318f4ac0368
+#: smeshBuilder.smeshBuilder.Concatenate:5
+msgid "if true, groups with same names are united, else they are renamed"
+msgstr ""
+
+# 09efa2c38a3e4a9cb995d226822ac1cb
+#: smeshBuilder.smeshBuilder.Concatenate:6
+msgid "if true, equal nodes and elements are merged"
+msgstr ""
+
+# e72e7f2265744287b155ce30f2c76a59
+#: smeshBuilder.smeshBuilder.Concatenate:7
+msgid "tolerance for merging nodes"
+msgstr ""
+
+# e2641468104b4904ba14fecf0734fdbb
+#: smeshBuilder.smeshBuilder.Concatenate:8
+msgid "forces creation of groups corresponding to every input mesh"
+msgstr ""
+
+# f5647be3291546bb8acbf447cfb7d87d
+#: smeshBuilder.smeshBuilder.Concatenate:9
+msgid "name of a new mesh"
+msgstr ""
+
+# 1d7942a5ff684243bb082721bc400957
+# 53b9c3e234b346aab5f0208271af71de
+# a5c3ada4e4024218ab35653e02543ce1
+# 2a559b26d3594192a9a85ea8e3adc707
+#: smeshBuilder.smeshBuilder.Concatenate:11
+#: smeshBuilder.smeshBuilder.CopyMesh:10
+#: smeshBuilder.smeshBuilder.CreateMeshesFromSTL:3
+#: smeshBuilder.smeshBuilder.CreateMeshesFromUNV:3
+msgid "an instance of Mesh class"
+msgstr ""
+
+# cde6cd0a4e61480e91f539c0d405c969
+#: smeshBuilder.smeshBuilder.CopyMesh:1
+msgid "Create a mesh by copying a part of another mesh."
+msgstr ""
+
+# afce97c673994f6bbec91f13cf3d2837
+#: smeshBuilder.smeshBuilder.CopyMesh:3
+msgid ""
+"a part of mesh to copy, either a Mesh, a sub-mesh or a group; to copy "
+"nodes or elements not contained in any mesh object, pass result of "
+"Mesh.GetIDSource( list_of_ids, type ) as meshPart"
+msgstr ""
+
+# b9e706ed7ff74f0a84958604b6e54624
+#: smeshBuilder.smeshBuilder.CopyMesh:6
+msgid "a name of the new mesh"
+msgstr ""
+
+# 693150e3ba0b45bc90632fbd8d50d648
+#: smeshBuilder.smeshBuilder.CopyMesh:7
+msgid "to create in the new mesh groups the copied elements belongs to"
+msgstr ""
+
+# e70c4022cbdc4d5096c107eb7ad0634d
+#: smeshBuilder.smeshBuilder.CopyMesh:8
+msgid "to preserve order of the copied elements or not"
+msgstr ""
+
+# eae0ce9a1b7242ee90392e9a10a57d8c
+#: smeshBuilder.smeshBuilder.CreateHypothesis:1
+msgid "Create hypothesis"
+msgstr ""
+
+# 3c11986e69504e148d4e288cdc40847b
+#: smeshBuilder.smeshBuilder.CreateHypothesis:3
+msgid "mesh hypothesis type (string)"
+msgstr ""
+
+# 48350ff1faea441f8e0a15005a345bb1
+#: smeshBuilder.smeshBuilder.CreateHypothesis:4
+msgid "mesh plug-in library name"
+msgstr ""
+
+# f408cd8fb1cb4208866670a4b5f7de44
+#: smeshBuilder.smeshBuilder.CreateHypothesis:6
+msgid "created hypothesis instance"
+msgstr ""
+
+# 3ca15020381b4ef481d8526cb01a366d
+#: smeshBuilder.smeshBuilder.CreateMeshesFromCGNS:1
+msgid "Create Mesh objects importing data from the given CGNS file"
+msgstr ""
+
+# 7cd97d8119ee47bd9f599c57c2d358bd
+# dce25ed252fe4bf7b02cb19c39591cc0
+# 715f827a4e314892980e89800ed04dc8
+#: smeshBuilder.smeshBuilder.CreateMeshesFromCGNS:3
+#: smeshBuilder.smeshBuilder.CreateMeshesFromMED:3
+#: smeshBuilder.smeshBuilder.CreateMeshesFromSAUV:3
+msgid "a tuple ( list of Mesh class instances, SMESH.DriverMED_ReadStatus )"
+msgstr ""
+
+# 766566edc5014fc8babcd3ab7e0d7135
+#: smeshBuilder.smeshBuilder.CreateMeshesFromGMF:1
+msgid ""
+"Create a Mesh object importing data from the given GMF file. GMF files "
+"must have .mesh extension for the ASCII format and .meshb for the binary "
+"format."
+msgstr ""
+
+# a55518b82b3641fcadc1edec755dae9c
+#: smeshBuilder.smeshBuilder.CreateMeshesFromGMF:5
+msgid "[ an instance of Mesh class, SMESH.ComputeError ]"
+msgstr ""
+
+# 52151d47eff44cd9b5ca5786d5dce0ac
+#: smeshBuilder.smeshBuilder.CreateMeshesFromMED:1
+msgid "Create a Mesh object(s) importing data from the given MED file"
+msgstr ""
+
+# b425a23c3c34479fb34e78e62cf696af
+#: smeshBuilder.smeshBuilder.CreateMeshesFromSAUV:1
+msgid "Create a Mesh object(s) importing data from the given SAUV file"
+msgstr ""
+
+# 93960dc05e2a4e4287a377ef64049f36
+#: smeshBuilder.smeshBuilder.CreateMeshesFromSTL:1
+msgid "Create a Mesh object importing data from the given STL file"
+msgstr ""
+
+# 77fa47d89f184da392134cf8f791df4b
+#: smeshBuilder.smeshBuilder.CreateMeshesFromUNV:1
+msgid "Create a Mesh object importing data from the given UNV file"
+msgstr ""
+
+# 5e8674053b254209a9dba20a8184a985
+#: smeshBuilder.smeshBuilder.DumpPython:1
+msgid "Dump component to the Python script"
+msgstr ""
+
+# ca2faaf70c9a47b5bebb3701a71967df
+#: smeshBuilder.smeshBuilder.DumpPython:2
+msgid ""
+"This method overrides IDL function to allow default values for the "
+"parameters."
+msgstr ""
+
+# 18f91099adfe4c21b060e3b7268b9098
+#: smeshBuilder.smeshBuilder.EnumToLong:1
+msgid "Return a long value from enumeration"
+msgstr ""
+
+# 52fa8d4cee1b4819ad81f85ce48478f9
+#: smeshBuilder.smeshBuilder.GetArea:1
+msgid "Get sum of areas of all 2D elements in the mesh object."
+msgstr ""
+
+# c9f2ae81cb7240faa65550e95b484ec1
+#: smeshBuilder.smeshBuilder.GetArea:5
+msgid "sum of areas of all 2D elements"
+msgstr ""
+
+# 6d6c7e7379b64c6e8a8b8308816e19fa
+#: smeshBuilder.smeshBuilder.GetAxisStruct:1
+msgid "Get AxisStruct from object"
+msgstr ""
+
+# d6b5f4db3bcd42c0976287ae93a63dfd
+#: smeshBuilder.smeshBuilder.GetAxisStruct:3
+msgid "a GEOM object (line or plane)"
+msgstr ""
+
+# 07bf01fed379438e8c4222289269c0ad
+#: smeshBuilder.smeshBuilder.GetAxisStruct:5
+msgid "SMESH.AxisStruct"
+msgstr ""
+
+# 2aeeeddc77b841d5b8b8905ba47c5e6e
+#: smeshBuilder.smeshBuilder.GetCriterion:1
+msgid ""
+"Create a criterion by the given parameters Criterion structures allow to "
+"define complex filters by combining them with logical operations (AND / "
+"OR) (see example below)"
+msgstr ""
+
+# 71d59eee3fc140168279f26ef77877be
+#: smeshBuilder.smeshBuilder.GetCriterion:11
+msgid ""
+"a binary logical operation SMESH.FT_LogicalAND, SMESH.FT_LogicalOR or "
+"SMESH.FT_Undefined"
+msgstr ""
+
+# ae303d1213d840ecb0347f17d925bdd0
+#: smeshBuilder.smeshBuilder.GetCriterion:16
+msgid ""
+"SMESH.Filter.Criterion  "
+"href=\"../tui_filters_page.html#combining_filters\""
+msgstr ""
+
+# cf83985ae73b433798c924fb71cee38d
+# fd8f9324ee3f4e9fbb35bb8923af7fb6
+#: smeshBuilder.smeshBuilder.GetCriterion:16
+#: smeshBuilder.smeshBuilder.GetEmptyCriterion:3
+msgid "SMESH.Filter.Criterion"
+msgstr ""
+
+# df4d459dda594b949154225f52260dd1
+#: smeshBuilder.smeshBuilder.GetCriterion:18
+msgid "href=\"../tui_filters_page.html#combining_filters\""
+msgstr ""
+
+# c861c5d0daad4179bac56100e2e34c27
+#: smeshBuilder.smeshBuilder.GetCurrentStudy:1
+msgid "Get the current study"
+msgstr ""
+
+# 9e73926cf3ea4098be27d380303d3286
+#: smeshBuilder.smeshBuilder.GetDirStruct:1
+msgid "Get DirStruct from vector"
+msgstr ""
+
+# 6edaeacb5a1f415f8799dc19a1fc66a5
+#: smeshBuilder.smeshBuilder.GetDirStruct:3
+msgid "a GEOM object(vector)"
+msgstr ""
+
+# c4c99c4d2091498f99bb52de92ee3632
+# cc2d0236feb24943a2e33158f7a067c4
+#: smeshBuilder.smeshBuilder.GetDirStruct:5
+#: smeshBuilder.smeshBuilder.MakeDirStruct:5
+msgid "SMESH.DirStruct"
+msgstr ""
+
+# 8ffbefb4140e4c93bc6fa4a817555f23
+#: smeshBuilder.smeshBuilder.GetEmptyCriterion:1
+msgid "Create an empty criterion"
+msgstr ""
+
+# 5d621efe3be1420ebd1a6514097fd1dc
+#: smeshBuilder.smeshBuilder.GetFilter:1
+msgid "Create a filter with the given parameters"
+msgstr ""
+
+# 48c118ee71224bba945db89dad017d21
+#: smeshBuilder.smeshBuilder.GetFilter:3
+msgid "the type of elements (SMESH.NODE, SMESH.EDGE, SMESH.FACE, SMESH.VOLUME)"
+msgstr ""
+
+# 800a55dc4b4c413780b67806e2f8d664
+#: smeshBuilder.smeshBuilder.GetFilter:10
+msgid ""
+"the tolerance used by SMESH.FT_BelongToGeom, SMESH.FT_BelongToSurface, "
+"SMESH.FT_LyingOnGeom, SMESH.FT_CoplanarFaces and SMESH.FT_EqualNodes "
+"criteria"
+msgstr ""
+
+# ef8b0b6eb6154b13af29e8ca0a207b92
+#: smeshBuilder.smeshBuilder.GetFilter:12
+msgid "the mesh to initialize the filter with"
+msgstr ""
+
+# d6952d6fad784844a4fba5fdf3d67ec4
+# d161702c8dfb439badc203083b490ded
+#: smeshBuilder.smeshBuilder.GetFilter:16
+#: smeshBuilder.smeshBuilder.GetFilterFromCriteria:8
+msgid "`Example of Filters usage <../tui_filters_page.html#tui_filters>`_"
+msgstr ""
+
+# 12e8b50cd5be409ba99064f5e545b455
+#: smeshBuilder.smeshBuilder.GetFilterFromCriteria:1
+msgid "Create a filter from criteria"
+msgstr ""
+
+# 3603c02a4f694d2980f9877260ce8656
+#: smeshBuilder.smeshBuilder.GetFilterFromCriteria:3
+msgid "a list of criteria"
+msgstr ""
+
+# 297f1360b9504eab828af6d311cfb852
+#: smeshBuilder.smeshBuilder.GetFunctor:1
+msgid "Create a numerical functor by its type"
+msgstr ""
+
+# ca7e6b50d14f45e2b6f86f07701d18d9
+#: smeshBuilder.smeshBuilder.GetFunctor:3
+msgid ""
+"functor type - an item of SMESH.FunctorType enumeration. Type "
+"SMESH.FunctorType._items in the Python Console to see all items. Note "
+"that not all items correspond to numerical functors."
+msgstr ""
+
+# 29de585997b741d5b1f8a95e1d39092c
+#: smeshBuilder.smeshBuilder.GetFunctor:7
+msgid "SMESH_NumericalFunctor"
+msgstr ""
+
+# 724b0d3b748b4754b993cbf59e7d2d73
+#: smeshBuilder.smeshBuilder.GetGravityCenter:1
+msgid "Get gravity center of all nodes of the mesh object."
+msgstr ""
+
+# dfddc853a879495f8a83880f31784f23
+#: smeshBuilder.smeshBuilder.GetGravityCenter:5
+msgid "x,y,z"
+msgstr ""
+
+# 6df85880f6884d4f89bc8163309f7a2a
+#: smeshBuilder.smeshBuilder.GetGravityCenter:6
+msgid "Three components of the gravity center"
+msgstr ""
+
+# 18b13a0defe845458b58f68e1b6d491c
+#: smeshBuilder.smeshBuilder.GetLength:1
+msgid "Get sum of lengths of all 1D elements in the mesh object."
+msgstr ""
+
+# 08acfced5d874ffebab16adedab9d4a1
+#: smeshBuilder.smeshBuilder.GetLength:5
+msgid "sum of lengths of all 1D elements"
+msgstr ""
+
+# ac1baede1f5b49589be960b7945433a2
+#: smeshBuilder.smeshBuilder.GetMeshInfo:3
+msgid "dictionary \"element type\" - \"count of elements\""
+msgstr ""
+
+# 830b8e3ad14341dda43213c997ee2361
+#: smeshBuilder.smeshBuilder.GetMinDistance:3
+msgid ""
+"If *src2* is None, and *id2*  = 0, distance from *src1* / *id1* to the "
+"origin is computed. If *src2* is None, and *id2* != 0, it is assumed that"
+" both *id1* and *id2* belong to *src1*."
+msgstr ""
+
+# 6972030bf4f4451ea8b90175852df277
+# 20ba4154c905438a8b0918c5cf33bc95
+#: smeshBuilder.smeshBuilder.GetMinDistance:7
+#: smeshBuilder.smeshBuilder.MinDistance:6
+msgid "first source object"
+msgstr ""
+
+# 347afdeb64e44da6b92c0c0cd2ec386d
+# de9d0682ee684d6fb563808e3e0026bb
+#: smeshBuilder.smeshBuilder.GetMinDistance:8
+#: smeshBuilder.smeshBuilder.MinDistance:7
+msgid "second source object"
+msgstr ""
+
+# c2b05bfef14e4171abb5d4da1d9f6422
+# 8dcebee2093c4ec5ab017b3f0895a1b8
+#: smeshBuilder.smeshBuilder.GetMinDistance:9
+#: smeshBuilder.smeshBuilder.MinDistance:8
+msgid "node/element id from the first source"
+msgstr ""
+
+# b6a9490429704ebc96530cb9915f47a3
+# faa64b7589224a0fa2800b4d4df23258
+#: smeshBuilder.smeshBuilder.GetMinDistance:10
+#: smeshBuilder.smeshBuilder.MinDistance:9
+msgid "node/element id from the second (or first) source"
+msgstr ""
+
+# a7ae42d0e6b945b28f50571fc190014d
+#: smeshBuilder.smeshBuilder.GetMinDistance:11
+msgid "*True* if **id1** is element id, *False* if it is node id"
+msgstr ""
+
+# 856a2198830849b1b7e0e57f29ba84d5
+#: smeshBuilder.smeshBuilder.GetMinDistance:12
+msgid "*True* if **id2** is element id, *False* if it is node id"
+msgstr ""
+
+# 6047fe7e713e4819ad50ff2d7ca06f2b
+#: smeshBuilder.smeshBuilder.GetMinDistance:14
+msgid "Measure structure or None if input data is invalid **MinDistance()**"
+msgstr ""
+
+# 22c25c0f6f204f4d8e82d104014f268d
+#: smeshBuilder.smeshBuilder.GetPattern:1
+msgid "Create a pattern mapper."
+msgstr ""
+
+# d591946b500f435cb1bd411292aea1bb
+#: smeshBuilder.smeshBuilder.GetPattern:3
+msgid "an instance of SMESH_Pattern"
+msgstr ""
+
+# 19a23431f6124be3a12fa9dee330d4c5
+#: smeshBuilder.smeshBuilder.GetPattern:5
+msgid ""
+"`Example of Patterns usage "
+"<../tui_modifying_meshes_page.html#tui_pattern_mapping>`_"
+msgstr ""
+
+# 275f542f467c4757bcd181a38f085ca2
+#: smeshBuilder.smeshBuilder.GetPointStruct:1
+msgid "Get PointStruct from vertex"
+msgstr ""
+
+# 0dbe9267749e407e8c9e23afd63235b8
+#: smeshBuilder.smeshBuilder.GetPointStruct:3
+msgid "a GEOM object(vertex)"
+msgstr ""
+
+# 4489a8db1d5f4c7b8ea9a2728558ff63
+#: smeshBuilder.smeshBuilder.GetPointStruct:5
+msgid "SMESH.PointStruct"
+msgstr ""
+
+# 93208b834df64f3aada2b339134b0649
+#: smeshBuilder.smeshBuilder.GetSubShapesId:1
+msgid "Return IDs of sub-shapes"
+msgstr ""
+
+# 4317e35c4916444facef14ca15de9a74
+#: smeshBuilder.smeshBuilder.GetVolume:1
+msgid "Get sum of volumes of all 3D elements in the mesh object."
+msgstr ""
+
+# 1cfe646de2ca43de86b018756695c0ba
+#: smeshBuilder.smeshBuilder.GetVolume:5
+msgid "sum of volumes of all 3D elements"
+msgstr ""
+
+# 13963f343c6b496c9d6f1b0596fa17c9
+#: smeshBuilder.smeshBuilder.IsEmbeddedMode:1
+msgid "Get the current mode"
+msgstr ""
+
+# f389fdc3ccf5486685b2fb8c33bd84a8
+#: smeshBuilder.smeshBuilder.MakeDirStruct:1
+msgid "Make DirStruct from a triplet"
+msgstr ""
+
+# 53dec3e5cd344ff78a2b7dce8ce55794
+#: smeshBuilder.smeshBuilder.MakeDirStruct:3
+msgid "vector components"
+msgstr ""
+
+# 8efe66568aad4342b30757cee7c3c8c2
+#: smeshBuilder.smeshBuilder.Mesh:1
+msgid ""
+"Create a mesh. This can be either an empty mesh, possibly having an "
+"underlying geometry, or a mesh wrapping a CORBA mesh given as a "
+"parameter."
+msgstr ""
+
+# 3069de99891541b99aa27a58c9432fdb
+#: smeshBuilder.smeshBuilder.Mesh:4
+msgid ""
+"either (1) a CORBA mesh: (SMESH._objref_SMESH_Mesh) got e.g. by calling "
+"salome.myStudy.FindObjectID(\"0:1:2:3\").GetObject() or (2) a Geometrical"
+" object: for meshing or (3) none:."
+msgstr ""
+
+# add53f6aa7db45afb072ff9f87435088
+#: smeshBuilder.smeshBuilder.Mesh:7
+msgid "the name for the new mesh."
+msgstr ""
+
+# cd99f49a549b4c2784b90a029baf5dd0
+#: smeshBuilder.smeshBuilder.Mesh:9
+msgid "an instance of Mesh class."
+msgstr ""
+
+# a08747d9a0ff4b00b151f8ead4c6e23b
+#: smeshBuilder.smeshBuilder.MinDistance:1
+msgid "Get minimum distance between two objects"
+msgstr ""
+
+# 7982f36dd250432e8d576d03f22fc892
+#: smeshBuilder.smeshBuilder.MinDistance:3
+msgid ""
+"If *src2* is None, and *id2* = 0, distance from *src1* / *id1* to the "
+"origin is computed. If *src2* None, and *id2* != 0, it is assumed that "
+"both *id1* and *id2* belong to *src1*."
+msgstr ""
+
+# 8247bc3e90ee4bc880b0a94b8b3d2005
+#: smeshBuilder.smeshBuilder.MinDistance:13
+msgid "minimum distance value *GetMinDistance()*"
+msgstr ""
+
+# 3433b570e9c84b91a1d9e5fa2c41b5cd
+#: smeshBuilder.smeshBuilder.SetBoundaryBoxSegmentation:1
+msgid ""
+"Set number of segments per diagonal of boundary box of geometry, by which"
+" default segment length of appropriate 1D hypotheses is defined in GUI. "
+"Default value is 10."
+msgstr ""
+
+# e25fa41c75164b37bfb9f6fb163af35e
+#: smeshBuilder.smeshBuilder.SetCurrentStudy:1
+msgid "Set the current study. Calling SetCurrentStudy( None ) allows to"
+msgstr ""
+
+# 4d6d0511e66c450ba9b539da433e8028
+#: smeshBuilder.smeshBuilder.SetCurrentStudy:2
+msgid "switch OFF automatic pubilishing in the Study of mesh objects."
+msgstr ""
+
+# ea553b6b94bc4efe98e522e7b61c1fe0
+#: smeshBuilder.smeshBuilder.SetDumpPythonHistorical:4
+msgid "Set mode of DumpPython(), *historical* or *snapshot*."
+msgstr ""
+
+# 66f6a973954745369e2906f697d74d91
+#: smeshBuilder.smeshBuilder.SetDumpPythonHistorical:2
+msgid ""
+"In the *historical* mode, the Python Dump script includes all commands "
+"performed by SMESH engine. In the *snapshot* mode, commands relating to "
+"objects removed from the Study are excluded from the script as well as "
+"commands not influencing the current state of meshes"
+msgstr ""
+
+# d7d286c06a7f4a50b7dbc0742c19d1be
+#: smeshBuilder.smeshBuilder.SetEmbeddedMode:1
+msgid "Set the current mode"
+msgstr ""
+
+# db5ffbd6091146bab826a685c084b504
+#: smeshBuilder.smeshBuilder.SetName:1
+msgid "Set the given name to the object"
+msgstr ""
+
+# 65646129f4c6497b90246005ffcf99b1
+#: smeshBuilder.smeshBuilder.SetName:3
+msgid "the object to rename"
+msgstr ""
+
+# ddeccdda92ab46c494cb51d761fdf0ad
+#: smeshBuilder.smeshBuilder.SetName:4
+msgid "a new object name"
+msgstr ""
+
+# bf92183390384cc8a6d2454847f1fa52
+#: smeshBuilder.smeshBuilder.init_smesh:1
+msgid "Set the current study and Geometry component"
+msgstr ""
+
+# 8177e229556b41258ca96424e31c7f21
+#: smeshBuilder.smeshInst:1
+msgid "*Warning* -- smeshInst is a singleton"
+msgstr ""
+
+# 21ba20d294bc46b8a1d7fb6e4b0d44c4
+#: smeshBuilder.submeshProxy:1
+msgid "Private class wrapping SMESH.SMESH_SubMesh in order to add Compute()"
+msgstr ""
+
+# fa5d5cdc176c42c891ba2d44b2e159f1
+#: smeshBuilder.submeshProxy.Compute:2
+msgid "Compute the sub-mesh and return the status of the computation"
+msgstr ""
+
+# 830e9cb502014f90924a513955dbe67e
+#: smeshBuilder.submeshProxy.Compute:2
+msgid ""
+"refresh if *True*, Object browser is automatically updated (when running "
+"in GUI)"
+msgstr ""
+
+# 4938de1092114b069b646e90d1bb7784
+#: smeshBuilder.submeshProxy.Compute:6
+msgid ""
+"This is a method of SMESH.SMESH_submesh that can be obtained via "
+"Mesh.GetSubMesh() or :meth:`smeshBuilder.Mesh.GetSubMesh`."
+msgstr ""
+
+# fbbe6aef51e04d118006334f95a046a3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/python_api.rst:21
+msgid "smesh_algorithm module"
+msgstr ""
+
+# fa2ada56caab49819deb456b7d5b2dd2
+#: smesh_algorithm.Mesh_Algorithm:1
+msgid "The base class to define meshing algorithms"
+msgstr ""
+
+# f4460fce199e4ba59393cc0ad32caadf
+#: smesh_algorithm.Mesh_Algorithm:3
+msgid "This class should not be used directly, it is supposed to be sub-classed"
+msgstr ""
+
+# 2c6c6a357b97412ea66b85c7c0190d13
+#: smesh_algorithm.Mesh_Algorithm:5
+msgid "for implementing Python API for specific meshing algorithms"
+msgstr ""
+
+# bc5b345770f249f9bb50873b606e19dc
+#: smesh_algorithm.Mesh_Algorithm:7
+msgid ""
+"For each meshing algorithm, a python class inheriting from class "
+"%Mesh_Algorithm should be defined. This descendant class should have two "
+"attributes defining the way it is created by class Mesh (see e.g. class "
+":class:`~StdMeshersBuilder.StdMeshersBuilder_Segment` in "
+"StdMeshersBuilder package):"
+msgstr ""
+
+# af1608f8aa09422aad9dae5fc09fa642
+#: smesh_algorithm.Mesh_Algorithm:23
+msgid ""
+":code:`meshMethod` attribute defines name of method of class smesh.Mesh "
+"by calling which the"
+msgstr ""
+
+# 56d9fb20f42844108641f222020f3170
+#: smesh_algorithm.Mesh_Algorithm:13
+msgid ""
+"python class of algorithm is created; this method is dynamically added to"
+" the smesh.Mesh class in runtime. For example, if in :code:`class "
+"MyPlugin_Algorithm` this attribute is defined as ::"
+msgstr ""
+
+# 4a0f1ebc21fe4eb189b3ac8eccc38f79
+#: smesh_algorithm.Mesh_Algorithm:19
+msgid ""
+"then an instance of :code:`MyPlugin_Algorithm` can be created by the "
+"direct invocation of the function of smesh.Mesh class: ::"
+msgstr ""
+
+# bbf7bf4a61af415bbb7e24d158acbe6a
+#: smesh_algorithm.Mesh_Algorithm:36
+msgid ""
+":code:`algoType` defines type of algorithm and is used mostly to "
+"discriminate"
+msgstr ""
+
+# 92e2b40c8bc64e74958e5bbaa72156ef
+#: smesh_algorithm.Mesh_Algorithm:26
+msgid ""
+"algorithms that are created by the same method of class smesh.Mesh. For "
+"example, if this attribute is specified in :code:`MyPlugin_Algorithm` "
+"class as ::"
+msgstr ""
+
+# 4f3b493cedcd4fb58af45ac2ea4da361
+#: smesh_algorithm.Mesh_Algorithm:32
+msgid "then it's creation code can be: ::"
+msgstr ""
+
+# 82f7681d46144e41bbc7f9cc5a22c832
+# 094ab44d154e4956b5048365c4496418
+#: smesh_algorithm.Mesh_Algorithm.Assign:1
+#: smesh_algorithm.Mesh_Algorithm.Hypothesis:1
+msgid "Private method"
+msgstr ""
+
+# 0b0ec5ce4d304ffca5476fca6c0a4f76
+#: smesh_algorithm.Mesh_Algorithm.Create:1
+msgid "Private method."
+msgstr ""
+
+# c517a611369f4133ba71870835363a86
+#: smesh_algorithm.Mesh_Algorithm.FindAlgorithm:1
+msgid ""
+"Finds the algorithm in the study by its type name. Finds only the "
+"algorithms, which have been created in smeshpyD engine."
+msgstr ""
+
+# e59158bcf7e94f6c837d720a65e5f60d
+#: smesh_algorithm.Mesh_Algorithm.FindAlgorithm:4
+msgid "SMESH.SMESH_Algo"
+msgstr ""
+
+# 94541113c40a40b0be62eb5e6f99ad39
+#: smesh_algorithm.Mesh_Algorithm.FindHypothesis:1
+msgid ""
+"Finds a hypothesis in the study by its type name and parameters. Finds "
+"only the hypotheses created in smeshpyD engine. :returns: "
+"SMESH.SMESH_Hypothesis"
+msgstr ""
+
+# c932e1be8d0248838cd36de6b3aff80b
+#: smesh_algorithm.Mesh_Algorithm.GetAlgorithm:1
+msgid "Returns the wrapped mesher."
+msgstr ""
+
+# 98c14c5645d944bf88ad332dfdc95dae
+#: smesh_algorithm.Mesh_Algorithm.GetCompatibleHypothesis:1
+msgid "Gets the list of hypothesis that can be used with this algorithm"
+msgstr ""
+
+# 75938efff8e1459786a93b4fe77ded53
+#: smesh_algorithm.Mesh_Algorithm.GetId:1
+msgid "Gets the id of the algorithm"
+msgstr ""
+
+# 04a6a6ba80704b51ac9602559e33a0b5
+#: smesh_algorithm.Mesh_Algorithm.GetName:1
+msgid "Gets the name of the algorithm"
+msgstr ""
+
+# c90ba340cab8406e884a6d3e055a5310
+#: smesh_algorithm.Mesh_Algorithm.GetSubMesh:1
+msgid ""
+"If the algorithm is global, returns 0; else returns the submesh "
+"associated to this algorithm."
+msgstr ""
+
+# b5b8ed3249684be69dd705d253374177
+#: smesh_algorithm.Mesh_Algorithm.MainShapeEntry:1
+msgid "Returns entry of the shape to mesh in the study"
+msgstr ""
+
+# 7fa0cbb7a51f4f9ab86acfe72dd070ce
+#: smesh_algorithm.Mesh_Algorithm.ReversedEdgeIndices:1
+msgid ""
+"Transform a list of either edges or tuples (edge, 1st_vertex_of_edge) "
+"into a list acceptable to SetReversedEdges() of some 1D hypotheses"
+msgstr ""
+
+# 2725a48346674bc89778578f29666ee1
+#: smesh_algorithm.Mesh_Algorithm.SetName:1
+msgid "Sets the name to the algorithm"
+msgstr ""
+
+# 0933ed112eda445a9f081dfdc4e9e34d
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:1
+msgid ""
+"Defines \"ViscousLayers\" hypothesis to give parameters of layers of "
+"prisms to build near mesh boundary. This hypothesis can be used by "
+"several 3D algorithms: NETGEN 3D, MG-Tetra, Hexahedron(i,j,k)"
+msgstr ""
+
+# 958f2e8b6a0b4995b5303493380ab157
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:5
+msgid "total thickness of layers of prisms"
+msgstr ""
+
+# cc2a53444a554b709ff99b40ef31eb99
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:6
+msgid "number of layers of prisms"
+msgstr ""
+
+# cd2ff9a6db4642528a3f18b4327a40e3
+# 3abb8121d8d74546ae21dcd6999490b3
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:7
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers2D:7
+msgid "factor (>1.0) of growth of layer thickness towards inside of mesh"
+msgstr ""
+
+# 72d0e3b9cbd14050bfc72889d07c262a
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:8
+msgid ""
+"list of geometrical faces (or their ids). Viscous layers are either "
+"generated on these faces or not, depending on the value of "
+"**isFacesToIgnore** parameter."
+msgstr ""
+
+# 07c446c9fa154d458de112cae93676fc
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:11
+msgid ""
+"if *True*, the Viscous layers are not generated on the faces specified by"
+" the previous parameter (**faces**)."
+msgstr ""
+
+# 0abc5cc7f9f94c52a67347cc6def63ac
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:13
+msgid ""
+"extrusion method defines how position of new nodes are found during prism"
+" construction and how creation of distorted and intersecting prisms is "
+"prevented. Possible values are:  - StdMeshers.SURF_OFFSET_SMOOTH "
+"(default) method extrudes nodes along normal         to underlying "
+"geometrical surface. Smoothing of internal surface of         element "
+"layers can be used to avoid creation of invalid prisms. - "
+"StdMeshers.FACE_OFFSET method extrudes nodes along average normal of"
+"         surrounding mesh faces till intersection with a neighbor mesh "
+"face         translated along its own normal by the layers thickness. "
+"Thickness         of layers can be limited to avoid creation of invalid "
+"prisms. - StdMeshers.NODE_OFFSET method extrudes nodes along average "
+"normal of         surrounding mesh faces by the layers thickness. "
+"Thickness of         layers can be limited to avoid creation of invalid "
+"prisms."
+msgstr ""
+
+# ff10b55d0a224530ad8103a6f9a8943f
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:13
+msgid ""
+"extrusion method defines how position of new nodes are found during prism"
+" construction and how creation of distorted and intersecting prisms is "
+"prevented. Possible values are:"
+msgstr ""
+
+# 4b5efce50cdd4d36b26ce026e9edc7fb
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:18
+msgid "StdMeshers.SURF_OFFSET_SMOOTH (default) method extrudes nodes along normal"
+msgstr ""
+
+# a1bea658588441489437f1c8c2034149
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:18
+msgid ""
+"to underlying geometrical surface. Smoothing of internal surface of "
+"element layers can be used to avoid creation of invalid prisms."
+msgstr ""
+
+# bf92c2f615e541258cd6f8a0cd02c445
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:22
+msgid "StdMeshers.FACE_OFFSET method extrudes nodes along average normal of"
+msgstr ""
+
+# 78d1ea03383645c3a0dbfa83ec7fffeb
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:21
+msgid ""
+"surrounding mesh faces till intersection with a neighbor mesh face "
+"translated along its own normal by the layers thickness. Thickness of "
+"layers can be limited to avoid creation of invalid prisms."
+msgstr ""
+
+# a2c618bcb90443faa6c7a933f6dfebd1
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:25
+msgid "StdMeshers.NODE_OFFSET method extrudes nodes along average normal of"
+msgstr ""
+
+# f125fe84d6e040ffa7c4de753a4f40cc
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:25
+msgid ""
+"surrounding mesh faces by the layers thickness. Thickness of layers can "
+"be limited to avoid creation of invalid prisms."
+msgstr ""
+
+# 9e250899701a48feb23a6233958d2774
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers2D:1
+msgid ""
+"Defines \"ViscousLayers2D\" hypothesis to give parameters of layers of "
+"quadrilateral elements to build near mesh boundary. This hypothesis can "
+"be used by several 2D algorithms: NETGEN 2D, NETGEN 1D-2D, Quadrangle "
+"(mapping), MEFISTO, MG-CADSurf"
+msgstr ""
+
+# 2a312e7d4f4c429b95d205b7d1e6b821
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers2D:5
+msgid "total thickness of layers of quadrilaterals"
+msgstr ""
+
+# 090b7189f8184fafbd1ffc0d26c4ef5e
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers2D:8
+msgid ""
+"list of geometrical edges (or their ids). Viscous layers are either "
+"generated on these edges or not, depending on the value of "
+"**isEdgesToIgnore** parameter."
+msgstr ""
+
+# ac6e4d0957954ee895f5808142f1b025
+#: smesh_algorithm.Mesh_Algorithm.ViscousLayers2D:11
+msgid ""
+"if *True*, the Viscous layers are not generated on the edges specified by"
+" the previous parameter (**edges**)."
+msgstr ""
+
+# 412ee7aacf90484ba9fefdfbdbb356b9
+#~ msgid ""
+#~ msgstr ""
+
+# 2fb6bab3f93e4bd9b3cb56843e11aaa7
+#~ msgid "Get the mesh item owning the mesh group `meshGroupItem`."
+#~ msgstr ""
+
+# 76a67fdaec2a45fd9be9965c45821d08
+#~ msgid "Mesh group belonging to the searched mesh."
+#~ msgstr ""
+
+# f25ed2b8104645bca1624bda2840ceb0
+#~ msgid "The SObject corresponding to the mesh, or None if it was not found."
+#~ msgstr ""
+
+# 694eb90b071c40f79a2f904620a958da
+#~ msgid "Returns the MESH object currently selected in the active study."
+#~ msgstr ""
+
+# bb78c7a9963849d386b88cd613093288
+#~ msgid "Python API for the standard meshing plug-in module."
+#~ msgstr ""
+
+# 42407d8a7213496d942e11721dad9587
+#~ msgid "Defines segment 1D algorithm for edges discretization."
+#~ msgstr ""
+
+# 4bdfd953126b46b88c49bc9af12563f5
+#~ msgid "It can be created by calling smeshBuilder.Mesh.Segment(geom=0)"
+#~ msgstr ""
+
+# eb6d876d4b794e90a7612e7b1f8973ea
+#~ msgid "for the length of segments that cut an edge"
+#~ msgstr ""
+
+# d12a452026ee4517a34db36ae76ff0c9
+#~ msgid "an instance of StdMeshers_LocalLength hypothesis"
+#~ msgstr ""
+
+# e17402a497624b7eb8f814b7641ff838
+#~ msgid "an instance of StdMeshers_MaxLength hypothesis"
+#~ msgstr ""
+
+# bdd902df1eca44c8a50a336b3efdba69
+#~ msgid "type of algorithm used with helper function in smeshBuilder.Mesh class"
+#~ msgstr ""
+
+# 3cddccd977ca4724b74b108d49a486b6
+#~ msgid "doc string of the method"
+#~ msgstr ""
+
+# 2416bd6f91d1499b8e30f976a8963aeb
+#~ msgid "name of the dynamic method in smeshBuilder.Mesh class"
+#~ msgstr ""
+
+# 1f0be11ffa9f4c79ba388930b237db4b
+#~ msgid "Typical use is:"
+#~ msgstr ""
+
+# d9872284b77a459aa017e4baf9318ba5
+#~ msgid "smeshBuilder instance"
+#~ msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/quad_from_ma_algo.po b/doc/gui/locale/fr/LC_MESSAGES/quad_from_ma_algo.po
new file mode 100644 (file)
index 0000000..dad657b
--- /dev/null
@@ -0,0 +1,67 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 5ff0bcfebb72410a8732dc46e1e34e6f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst:5
+msgid "Medial Axis Projection Quadrangle meshing algorithm"
+msgstr ""
+
+# b63656f8703a4217af551d3ed9d1bc4a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst:7
+msgid ""
+"Medial Axis Projection algorithm can be used for meshing faces with "
+"sinuous borders and a channel-like shape, for which it can be difficult "
+"to define 1D hypotheses such that to obtain a good shape of resulting "
+"quadrangles. The algorithm can be also applied to faces with ring "
+"topology, which can be viewed as a closed 'channel'. In the latter case "
+"radial discretization of a ring can be specified by using **Number of "
+"Layers** or **Distribution of Layers** hypothesis."
+msgstr ""
+
+# 54d7dbc1a0924e2b99df8f005e06c131
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst:22
+msgid ""
+"The algorithm provides proper shape of quadrangles by constructing Medial"
+" Axis between sinuous borders of the face and using it to discretize the "
+"borders. (Shape of quadrangles can be not perfect at locations where "
+"opposite sides of a 'channel' are far from being parallel.)"
+msgstr ""
+
+# 01adeb096fec4346af71b4c1d954e111
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst:33
+msgid "The Medial Axis is used in two ways:"
+msgstr ""
+
+# ba840a59868c4f29a0ef420de7678f08
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst:35
+msgid ""
+"If there is a sub-mesh on a sinuous border, then the nodes of this border"
+" are mapped to the opposite border via the Medial Axis."
+msgstr ""
+
+# 237fafa93b8b424595b99dc70e23c04d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst:36
+msgid ""
+"If there are no sub-meshes on sinuous borders, then the part of the "
+"Medial Axis that can be mapped to both borders is discretized using a 1D "
+"hypothesis assigned to the face or its ancestor shapes, and the division "
+"points are mapped from the Medial Axis to both borders to find positions "
+"of nodes."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/quad_ijk_algo.po b/doc/gui/locale/fr/LC_MESSAGES/quad_ijk_algo.po
new file mode 100644 (file)
index 0000000..ebdbbda
--- /dev/null
@@ -0,0 +1,102 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 1f1188e97555415db825c3d926377f34
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:5
+msgid "Quadrangle: Mapping meshing algorithm"
+msgstr ""
+
+# dadf07f382854ed18ab98565c378b217
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:7
+msgid ""
+"**Quadrangle: Mapping** meshing algorithm is intended for creating all-"
+"quadrangle and quad-dominant meshes on faces without holes and bound by "
+"at least three edges."
+msgstr ""
+
+# 15dcc95a5ec04d22b9df0a08cae3e856
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:11
+msgid ""
+"The algorithm can create mesh on any face but its quality and validity "
+"depend on two factors:"
+msgstr ""
+
+# 0cb07bafd0464d0782e45485439cfd88
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:14
+msgid "face shape (number of edges and boundary concavity);"
+msgstr ""
+
+# 545423d279ee462082dffc1f7b9abf0e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:15
+msgid "discretization of edges."
+msgstr ""
+
+# ecfd4360393e48beb0dd40dd718617b3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:23
+msgid ""
+"The algorithm uses **Transfinite Interpolation** technique in the "
+"parametric space of a face to locate nodes inside the face."
+msgstr ""
+
+# df0aff26c2db42468cf183bfd89de561
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:26
+msgid ""
+"The algorithm treats any face as quadrangle. If a face is bound by more "
+"than four edges, four most sharp vertices are considered as corners of "
+"the quadrangle and all edges between these vertices are treated as "
+"quadrangle sides. In the case of three edges, the vertex specified by the"
+" user is considered as a fourth degenerated side of the quadrangle."
+msgstr ""
+
+# 2f0bd59f2f544705aefe466f31315edc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:39
+msgid ""
+"To get an all-quadrangle mesh you have to carefully define 1D hypotheses "
+"on edges of a face. To get a **structured** mesh you have to provide "
+"equal number of segments on opposite sides of the quadrangle. If this "
+"condition is not respected, the algorithm by default (without a "
+"hypothesis) creates a **quad-dominant** mesh with triangles located near "
+"the side with the maximal number of segments. However, you can get an "
+"**all-quadrangle** mesh in this case by using "
+":ref:`hypo_quad_params_anchor` hypothesis to specify how to make "
+"transition mesh between opposite sides with different number of segments,"
+" provided that certain conditions are respected. In any case the total "
+"number of segments must be even. To use *Reduced* transition method, "
+"there must be an equal number of segments on one pair of opposite sides."
+msgstr ""
+
+# 1d4970aee4684396862a47d46a66b360
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:52
+msgid "The following hypotheses help to create quadrangle meshes."
+msgstr ""
+
+# 78034d06a148414dad332e76304f6a2b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:54
+msgid ""
+":ref:`propagation_anchor` additional 1D hypotheses help to get an equal "
+"number of segments on the opposite sides of a quadrilateral face."
+msgstr ""
+
+# 99c0a64c5fd44ab1b9d3b6d6b85e256a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:55
+msgid ""
+":ref:`a1d_algos_anchor` algorithm is useful to discretize several C1 "
+"continuous edges as one quadrangle side."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/radial_prism_algo.po b/doc/gui/locale/fr/LC_MESSAGES/radial_prism_algo.po
new file mode 100644 (file)
index 0000000..6aae274
--- /dev/null
@@ -0,0 +1,53 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# cde549b2f48246d5bd491c75e3963e56
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_prism_algo.rst:5
+msgid "Radial Prism"
+msgstr ""
+
+# fbd0194a244f4859ab3d4dee4ad8a5fe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_prism_algo.rst:7
+msgid ""
+"This algorithm applies to the meshing of a hollow 3D shape, i.e. such "
+"shape should be composed of two meshed shells: an outer shell and an "
+"internal shell without intersection with the outer shell. One of the "
+"shells should be a 2D Projection of the other shell. The meshes of the "
+"shells can consist both of triangles and quadrangles."
+msgstr ""
+
+# cbcb0680641c42c5b044cdcccd917c14
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_prism_algo.rst:14
+msgid ""
+"The Radial Prism algorithm would fill the space between the two shells "
+"with prisms."
+msgstr ""
+
+# 78f5dae2c9004b208036a4c2f6092d08
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_prism_algo.rst:23
+msgid ""
+"This algorithm also needs the information concerning the number and "
+"distribution of mesh layers between the inner and the outer shapes."
+msgstr ""
+
+# 68409354b4ad4343b9bceb87b30ae966
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_prism_algo.rst:29
+msgid "Distribution of layers can be set with any of 1D Hypotheses."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/radial_quadrangle_1D2D_algo.po b/doc/gui/locale/fr/LC_MESSAGES/radial_quadrangle_1D2D_algo.po
new file mode 100644 (file)
index 0000000..302d65b
--- /dev/null
@@ -0,0 +1,65 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# f0ac03aa977749fbbd906fdab24b64be
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst:5
+msgid "Radial Quadrangle 1D-2D"
+msgstr ""
+
+# fa9894d81bb64b7e8ca471ffe1d0a458
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst:7
+msgid ""
+"This algorithm applies to the meshing of 2D shapes under the following "
+"conditions: the face must be a full ellipse or a part of ellipse (i.e. "
+"the number of edges is less or equal to 3 and one of them is an ellipse "
+"curve). The resulting mesh consists of triangles (near the center point) "
+"and quadrangles."
+msgstr ""
+
+# 259b8a9a3c9148a18cf68c58c3d597ed
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst:13
+msgid ""
+"This algorithm is optionally parametrized by the hypothesis indicating "
+"the number of mesh layers along the radius. The distribution of layers "
+"can be set with any 1D Hypothesis. If the face boundary includes radial "
+"edges, this distribution is applied to the longest radial edge. If the "
+"face boundary does not include radial edges, this distribution is applied"
+" to the longest virtual radial edge. The distribution is applied to the "
+"longest radial edge starting from its end lying on the elliptic curve."
+msgstr ""
+
+# 7ee304ad57e440008cffc634c3739734
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst:23
+msgid ""
+"If no own hypothesis of the algorithm is assigned, any local or global "
+"hypothesis is used by the algorithm to discretize edges."
+msgstr ""
+
+# 9a87ad2f50a1473385f55fd5593ba561
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst:26
+msgid ""
+"If no 1D hypothesis is assigned to an edge, :ref:`nb_segments_pref` "
+"preferences parameter is used to discretize the edge."
+msgstr ""
+
+# f69a04ca46b746e284f55cb575200996
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst:45
+msgid "**See also** A sample :ref:`tui_radial_quadrangle`."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/removing_nodes_and_elements.po b/doc/gui/locale/fr/LC_MESSAGES/removing_nodes_and_elements.po
new file mode 100644 (file)
index 0000000..56e97c4
--- /dev/null
@@ -0,0 +1,251 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 5bc7dc5777f24bb9b187bd099ff28cd0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:5
+msgid "Removing nodes and elements"
+msgstr ""
+
+# 72d9643c2e1843739eba26c4b9ffd548
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:7
+msgid "In MESH you can remove nodes and all types of cells of your mesh."
+msgstr ""
+
+# 6c120c5024824b06b409cb2d9707307d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:9
+msgid ":ref:`removing_nodes_anchor`"
+msgstr ""
+
+# b94a14aa44e34edcbbcfdf5798f373f9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:10
+msgid ":ref:`removing_orphan_nodes_anchor`"
+msgstr ""
+
+# 54fa4702bf9f4320bd97cf7eb53f7070
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:11
+msgid ":ref:`removing_elements_anchor`"
+msgstr ""
+
+# 38d728956d7c4ac2b19f303e2c52bd85
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:12
+msgid ":ref:`clear_mesh_anchor`"
+msgstr ""
+
+# 016116887ef14c6e9174da9c59d47a76
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:19
+msgid "Removing nodes"
+msgstr ""
+
+# 57ad24bd52ea469fa85af40dd5dfd1b1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:21
+msgid "**To remove a node:**"
+msgstr ""
+
+# c7eb84e300ef41fe93752ba59e373e69
+# 79f4873f63d5416e9f6571f2ef5034b7
+# ce977e7f17f346db9c0c09e27b72229f
+# 7a282dec068b4c6a821624de51ddcbff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:23
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:59
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:84
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:125
+msgid "Select your mesh in the Object Browser or in the 3D viewer."
+msgstr ""
+
+# 7678c235cd8547c89d951b970d8ace6c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:24
+msgid ""
+"From the **Modification** menu choose **Remove** and from the associated "
+"submenu select the **Nodes**, or just click **\"Remove nodes\"** button "
+"in the toolbar."
+msgstr ""
+
+# 0267cfd3bcae4e9f84eb3f2f2b5ae258
+# 1b82a2273df744148619d94afe8a5a47
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:32
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:93
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# b427bef390e1489a98cef5eb02163c31
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:38
+msgid "In this dialog box you can specify one or several nodes:"
+msgstr ""
+
+# 81e5d18bf8ef436fa514d40d8551ccad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:40
+msgid ""
+"choose mesh nodes with the mouse in the 3D Viewer. It is possible to "
+"select a whole area with a mouse frame; or"
+msgstr ""
+
+# e64a50ee07e74706a3d62080bbcb7b67
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:41
+msgid ""
+"input the node IDs directly in **ID Elements** field. The selected nodes "
+"will be highlighted in the viewer; or"
+msgstr ""
+
+# 9c5970a21b3d41a5a269d8dd6a875a45
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:42
+msgid ""
+"apply Filters. **Set filter** button allows to apply a filter to the "
+"selection of nodes. See more about filters in the "
+":ref:`selection_filter_library_page` page."
+msgstr ""
+
+# 0890d7d353644c938fc72636f7030e88
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:47
+msgid ""
+"Be careful while removing nodes because if you remove a definite node of "
+"your mesh all adjacent elements will be also deleted."
+msgstr ""
+
+# 54ad34c6a9ed434a9d2588f1db54f328
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:53
+msgid "Removing orphan nodes"
+msgstr ""
+
+# 1253e8f9c7324245a87dd8c4bb5aa3ea
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:55
+msgid "There is a quick way to remove all orphan (free) nodes."
+msgstr ""
+
+# dfbd7c24f58043e79102e027e312886e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:57
+msgid "**To remove orphan nodes:**"
+msgstr ""
+
+# de76854beb0349e0985c0ce382afff76
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:60
+msgid ""
+"From the **Modification** menu choose **Remove** and from the associated "
+"submenu select **Orphan Nodes**, or just click **\"Remove orphan "
+"nodes\"** button in the toolbar."
+msgstr ""
+
+# 2c3104701da94d61a3dbd9a6110a66c0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:68
+msgid "The following Warning message box will appear:"
+msgstr ""
+
+# b501f2a03e2c4f658a77e33b479d6193
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:74
+msgid "Confirm nodes removal by pressing \"Yes\" button."
+msgstr ""
+
+# 249781e7a71d461bbc538489102a3514
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:80
+msgid "Removing elements"
+msgstr ""
+
+# 7fb72900c9d0489db8399914fd06e937
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:82
+msgid "**To remove an element:**"
+msgstr ""
+
+# f6e9315ba99644708f439b8c3b31ee1b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:85
+msgid ""
+"From the **Modification** menu choose **Remove** and from the associated "
+"submenu select the **Elements**, or just click **\"Remove elements\"** "
+"button in the toolbar."
+msgstr ""
+
+# 860f4cfb7782422a9ddb136cdd942de3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:98
+msgid "In this dialog box you can specify one or several elements"
+msgstr ""
+
+# 672b8cdbf4d04abab64e4fa301db0bb6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:100
+msgid ""
+"choose mesh elements with the mouse in the 3D Viewer. It is possible to "
+"select a whole area with a mouse frame; or"
+msgstr ""
+
+# 654a3e3f58ca4b62ad9365d5878c82d5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:101
+msgid ""
+"input the element IDs directly in **ID Elements** field. The selected "
+"elements will be highlighted in the viewer; or"
+msgstr ""
+
+# 09bca0568e934c38946363aa0cfb32a8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:102
+msgid ""
+"apply Filters. **Set filter** button allows to apply a filter to the "
+"selection of elements. See more about filters in the "
+":ref:`selection_filter_library_page` page."
+msgstr ""
+
+# 395b19a0baa942079082c4e0f3dbba79
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:103
+msgid ""
+"Click **Apply** or **Apply and Close** to confirm deletion of the "
+"specified elements."
+msgstr ""
+
+# 8066994c98c549d39f8ef5b6df3b95c0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:121
+msgid "Clearing Mesh Data"
+msgstr ""
+
+# f8e71f16cdfd4e188166f38518e3809e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:123
+msgid "**To remove all nodes and all types of cells in your mesh at once:**"
+msgstr ""
+
+# d3362805418f4ffab732f86853506068
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:126
+msgid ""
+"From the Modification menu choose Remove and from the associated submenu "
+"select the Clear Mesh Data, or just click **\"Clear Mesh Data\"** button "
+"in the toolbar. You can also right-click on the mesh in the Object "
+"Browser and select Clear Mesh Data in the pop-up menu."
+msgstr ""
+
+# 5015bce04d8e4ba6bc30dfe750dedb66
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:136
+msgid "This command works in a different way in different situations:"
+msgstr ""
+
+# 63492c65ecb944a4b580d28c4a501fb6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:136
+msgid ""
+"if the mesh is computed on a geometry, then \"Clear Mesh Data\" removes "
+"all elements and nodes."
+msgstr ""
+
+# 638a8b45bb4b4ae994f61a0718ee6a87
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:137
+msgid ""
+"if the mesh is not based on a geometry (imported, compound, created from "
+"scratch etc.), then \"Clear Mesh Data\" removes only the elements and "
+"nodes computed by algorithms. If no such elements or nodes have been "
+"created, can remove nothing."
+msgstr ""
+
+# 6e8673cbfc2647b7994ac8448464c3d6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:139
+msgid ""
+"**See Also** a sample TUI Script of a "
+":ref:`tui_removing_nodes_and_elements` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/reorient_faces.po b/doc/gui/locale/fr/LC_MESSAGES/reorient_faces.po
new file mode 100644 (file)
index 0000000..3b40b49
--- /dev/null
@@ -0,0 +1,164 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 0bdea21e0d144d2ead6f84abbbed4c46
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:6
+msgid "Orient faces"
+msgstr ""
+
+# 9859e23d791e4e9eac9c94018b8c6e71
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:8
+msgid ""
+"This operation allows fixing the orientation of a set of faces in the "
+"following ways:"
+msgstr ""
+
+# 90ed66a8fd9c4803966fa046e987a0dd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:11
+msgid ""
+"The required orientation of a set of neighboring faces can be defined by "
+"a vector giving the direction of a normal to a certain face. Since the "
+"direction of face normals in the set can be even opposite, it is "
+"necessary to specify a *control* face, the normal to which will be "
+"compared with the vector. This face can be either:"
+msgstr ""
+
+# 110f3e31151e451ab47b718dcd8a1187
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:11
+msgid "found by proximity to a given point, or"
+msgstr ""
+
+# c5177627b34a4943a52e8c155942d641
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:12
+msgid "specified explicitly."
+msgstr ""
+
+# b9467622883843bfbe5d5430a2111a4e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:13
+msgid ""
+"Alternatively, the faces can be oriented relatively to the adjacent "
+"volumes."
+msgstr ""
+
+# 09763a05394b4d2e969fb4fa4f268d5e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:15
+msgid "The orientation of a face is changed by reverting the order of its nodes."
+msgstr ""
+
+# 396f84a7a6b14a028f326e3073506a45
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:17
+msgid "**To set orientation of faces:**"
+msgstr ""
+
+# 37aad076460d4729afd3fbba7c52cdf6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:19
+msgid ""
+"In the **Modification** menu select **Reorient faces** item or click "
+"**Reorient faces** button in the toolbar."
+msgstr ""
+
+# 3c75a02cea294006b8261737abda28f2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:29
+msgid "In the \"Reorient faces\" dialog box"
+msgstr ""
+
+# 49d9250fdcbf47f19b76f7fd85250ff1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:30
+msgid ""
+"Select the **Object** (mesh, sub-mesh or group) containing faces to "
+"reorient, in the Object Browser or in the 3D Viewer."
+msgstr ""
+
+# 30cddddfd28a46469db3a832e59a35f3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:31
+msgid "To reorient by direction of the face normal:"
+msgstr ""
+
+# 188bd9f881a24557bf2791572b5d5b22
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:33
+msgid ""
+"Specify the coordinates of the **Point** by which the control face will "
+"be found. You can specify the **Point** by picking a node in the 3D "
+"Viewer or selecting a vertex in the Object Browser."
+msgstr ""
+
+# 868aa922269446629ea346b7273b0324
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:34
+msgid ""
+"Set up the **Direction** vector to be compared with the normal of the "
+"control face. There are following options:"
+msgstr ""
+
+# c84d68c428f74ee7acd733c114a11824
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:36
+msgid "adjust vector components directly;"
+msgstr ""
+
+# cc9edfb98e5744dba3f2dc4c05d87934
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:37
+msgid ""
+"select a vertex in the Object Browser or a node in the 3D Viewer; their "
+"coordinates will define vector components;"
+msgstr ""
+
+# bf70425a377f4818954be246e9851872
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:38
+msgid ""
+"pick two nodes (holding Shift button), the **Direction** vector will go "
+"from the first to the second node."
+msgstr ""
+
+# 6be73a1744414a939e04e424053bd71a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:46
+msgid ""
+"In the second mode it is possible to pick the **Face** by mouse in the 3D"
+" Viewer or directly input the **Face** ID in the corresponding field."
+msgstr ""
+
+# e03af85346da481bae91f969e3a516b6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:55
+msgid "In the third mode, the faces can be reoriented according to volumes:"
+msgstr ""
+
+# bc81a8fd80a94482a3eaabb3a3d842bc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:57
+msgid ""
+"Select an object (mesh, sub-mesh or group) containing reference "
+"**Volumes**, in the Object Browser or in the 3D Viewer."
+msgstr ""
+
+# 8cdac663c228432a958c3cbcdc24af81
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:58
+msgid ""
+"Specify whether face normals should point outside or inside the reference"
+" volumes using **Face normal outside volume** check-box."
+msgstr ""
+
+# 8f80a1f281634632900bb376721a726f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:66
+msgid ""
+"Click the **Apply** or **Apply and Close** button to confirm the "
+"operation."
+msgstr ""
+
+# aacdcc31b3454a4892adc33edff88c2d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:68
+msgid "**See Also** a sample TUI Script of a :ref:`tui_reorient_faces` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/revolution.po b/doc/gui/locale/fr/LC_MESSAGES/revolution.po
new file mode 100644 (file)
index 0000000..efaa17e
--- /dev/null
@@ -0,0 +1,200 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 6ac789b6770b4001ba9a2d569e8cd5f1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:5
+msgid "Revolution"
+msgstr ""
+
+# ab9940fdedc243edb2b4ee309e9f969e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:7
+msgid ""
+"Revolution is used to build mesh elements of plus one dimension than the "
+"input ones.  Boundary elements around generated mesh of plus one "
+"dimension are additionally created. All created elements can be "
+"automatically grouped. Revolution can be used to create a "
+":ref:`extrusion_struct`. See :ref:`extrusion_page` page for general "
+"information on Revolution, which can be viewed as extrusion along a "
+"circular path."
+msgstr ""
+
+# 104b920b73084454b555a42d29aecf2a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:15
+msgid "**To apply revolution:**"
+msgstr ""
+
+# 59caed10ca8144f0aace21eefbde3bfa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:17
+msgid ""
+"From the **Modification** menu choose the **Revolution** item or click  "
+"**\"Revolution\"** button in the toolbar."
+msgstr ""
+
+# 9fef083959254db9821bee5bfb06f9d0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:25
+msgid "The following dialog will appear:"
+msgstr ""
+
+# 0c0fb5d5710c4ca096f75d7097c313a5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:31
+msgid "In this dialog:"
+msgstr ""
+
+# 5a8da583e6fa46b4893d5ce61ecdef22
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:33
+msgid ""
+"Use *Selection* button to specify what you are going to select at a given"
+" moment, **Nodes**, **Edges** or **Faces**."
+msgstr ""
+
+# ef79794a371e474b8ccc2d3e4dbf83fd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:44
+msgid ""
+"Specify **Nodes**, **Edges** and **Faces**, which will be revolved, by "
+"one of following means:"
+msgstr ""
+
+# 6d264df6a869443fa232e69226a8bad5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:42
+msgid "**Select the whole mesh, sub-mesh or group** activating this check-box."
+msgstr ""
+
+# 56588b162f7d4805b892c2ee8a3e5b26
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:43
+msgid ""
+"Choose mesh elements with the mouse in the 3D Viewer. It is possible to "
+"select a whole area with a mouse frame."
+msgstr ""
+
+# 96d1ec2172234d0cb6badd1c6622f44a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:44
+msgid ""
+"Input the element IDs directly in **Node IDs**, **Edge IDs** and **Face "
+"IDs** fields. The selected elements will be highlighted in the viewer, if"
+" the mesh is shown there."
+msgstr ""
+
+# 5c797feb032349d2ad83aee9b2b34fdb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:45
+msgid ""
+"Apply Filters. **Set filter** button allows to apply a filter to the "
+"selection of elements. See more about filters in the "
+":ref:`filtering_elements` page."
+msgstr ""
+
+# c9998bdb16c24a22b7572f7ab936bc00
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:50
+msgid "Specify the **Axis** of revolution:"
+msgstr ""
+
+# 93c18e08e2104004b1edc0088a8dd4f9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:47
+msgid ""
+"Specify the coordinates of the start **Point** of the axis of revolution;"
+" either directly or by picking a node in the Viewer (selection of nodes "
+"is activated as you click the *Selection* button)."
+msgstr ""
+
+# 2e0fdecb971b474aa133dc4d5d09ef64
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:50
+msgid "Specify the **Vector** of the axis in either of three ways:"
+msgstr ""
+
+# 8e407adfd68b4ca1b7741cf23c64ba80
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:49
+msgid "directly adjust vector components;"
+msgstr ""
+
+# 9eabcb1646d4482db9ae710be3c1b36e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:50
+msgid ""
+"click *Selection* button, choose **From Origin to selected Point** in the"
+" opened menu and pick a node in the Viewer;"
+msgstr ""
+
+# 178a26fc0011439bb9898807d2f8a1d6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:51
+msgid ""
+"click *Selection* button, chose **Normal to selected Face** in the opened"
+" menu and pick a mesh face in the Viewer."
+msgstr ""
+
+# ba1537f0e50149cd8522ec63a94428cc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:69
+msgid ""
+"Specify the **Angle** of revolution and the **Number of steps** of "
+"revolution,"
+msgstr ""
+
+# 70e4ba78bbbd404cad2a51bf425db034
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:53
+msgid ""
+"**Angle by Step** - the elements are revolved by the specified angle at "
+"each step (i.e. for Angle=30 and Number of Steps=3, the elements will be "
+"extruded by 30 degrees twice for a total of 30*3=90)"
+msgstr ""
+
+# a1b9aadc072e48b0bc80d0b6534097cb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:61
+msgid ""
+"**Total Angle** - the elements are revolved by the specified angle only "
+"once and the number of steps defines the number of iterations (i.e. for "
+"Angle=30 and Number of Steps=3, the elements will be revolved by 30/3=10 "
+"degrees twice for a total of 30)."
+msgstr ""
+
+# 9c2d8f6996d14050af5f0132ca066fd5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:71
+msgid ""
+"Specify the **Tolerance**, which is used to detect nodes lying on the "
+"axis of revolution."
+msgstr ""
+
+# 1e0b5219aa40468ea7d1c932fe70bbfe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:72
+msgid "Activate  **Preview** check-box to see the result mesh in the viewer."
+msgstr ""
+
+# b3486204cbf44474acc0252faf8e3b14
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:73
+msgid ""
+"If you activate **Generate Groups** check-box, the **result elements** "
+"created from **selected elements** contained in groups will be included "
+"into new groups named by pattern \"<old group name>_rotated\" and \"<old "
+"group name>_top\". For example if a selected quadrangle is included in "
+"*g_Faces* group (see figures below) then result hexahedra will be "
+"included in *g_Faces_rotated* group and a quadrangle created at the "
+"\"top\" of revolved mesh will be included in *g_Faces_top* group."
+msgstr ""
+
+# 8ec480305a2747b2b2c5a516354d672a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:82
+msgid "This check-box is active only if there are some groups in the mesh."
+msgstr ""
+
+# 0e2f1e95c686473e94392283cfbe39e6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:84
+msgid "Click **Apply** or **Apply and Close** button to confirm the operation."
+msgstr ""
+
+# 06b0f7f7794a487eb6b4c6219186ea1c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:86
+msgid "**See Also** a sample TUI Script of a :ref:`tui_revolution` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/rotation.po b/doc/gui/locale/fr/LC_MESSAGES/rotation.po
new file mode 100644 (file)
index 0000000..7ccf99c
--- /dev/null
@@ -0,0 +1,160 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 3eb9d57562994caaa94e9953e98e2bc1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:5
+msgid "Rotation"
+msgstr ""
+
+# bc73581315ba4779a00ea3c885277127
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:7
+msgid "This operation allows to rotate in space the mesh or some of its elements."
+msgstr ""
+
+# cfb02e83b2c043ff971b9dd3d43d20c9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:9
+msgid "**To rotate the mesh:**"
+msgstr ""
+
+# f1722428e06e47c894e2278d3825abb0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:11
+msgid ""
+"From the **Modification** menu choose **Transformation** -> **Rotation** "
+"item  or click **\"Rotation\"** button in the toolbar."
+msgstr ""
+
+# d7c9eeadb119438197cb8816f237bc92
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:19
+msgid "The following dialog will appear:"
+msgstr ""
+
+# f3b8e39357ed41c5ab97d573ec21ff42
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:24
+msgid "In this dialog:"
+msgstr ""
+
+# b7be9cd5867144ffabf77890d50ecf35
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:26
+msgid "specify the IDs of the elements which will be rotated:"
+msgstr ""
+
+# 36838092b54a4d068cb1b8a1c464aab7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:28
+msgid "**Select the whole mesh, submesh or group** activating this checkbox; or"
+msgstr ""
+
+# 0e62984febc34a5c982f6616e6119121
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:29
+msgid ""
+"choose mesh elements with the mouse in the 3D Viewer. It is possible to "
+"select a whole area with a mouse frame; or"
+msgstr ""
+
+# 907470a5dc324ec3aef4e0d59411f38d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:30
+msgid ""
+"input the element IDs directly in **ID Elements** field. The selected "
+"elements will be highlighted in the viewer; or"
+msgstr ""
+
+# e5b7a86186084d4383e3a53b9cebcf7f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:31
+msgid ""
+"apply Filters. **Set filter** button allows to apply a filter to the "
+"selection of elements. See more about filters in the "
+":ref:`selection_filter_library_page` page."
+msgstr ""
+
+# f849780da2d54925a39b1b368f513ce8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:35
+msgid "specify the axis of rotation:"
+msgstr ""
+
+# 38585ef1d6f44a35b54bf789f04920b4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:34
+msgid "specify the cooordinates of the start **Point** of the vector of rotation;"
+msgstr ""
+
+# 3b3dbcebc8b94e34bf9736dcd7153339
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:35
+msgid ""
+"specify the **Vector** of rotation through the coordinates of its end "
+"point with respect to the coordinates of the start point;"
+msgstr ""
+
+# b33fb11b21144354ac42f28cdcbf892f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:37
+msgid "specify the **Angle** of rotation"
+msgstr ""
+
+# 9e55761562b143799baa51c67436291a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:39
+msgid "specify the conditions of rotation:"
+msgstr ""
+
+# 6fac6e8141cb416da498e891f9e80c3b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:41
+msgid ""
+"activate **Move elements** radio button to create  the source mesh (or "
+"elements) at the new location and erase it from the previous location;"
+msgstr ""
+
+# 1956319341624ef899aa47cb565dde65
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:42
+msgid ""
+"activate **Copy elements** radio button to create the source mesh (or "
+"elements) at the new location, but leave it at the previous location, the"
+" source mesh will be considered one and single mesh with the result of "
+"the rotation;"
+msgstr ""
+
+# d531bcb2281544fb9cf8b7182fe2ef78
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:43
+msgid ""
+"activate **Create as new mesh** radio button to leave the source mesh (or"
+" elements) at its previous location and create a new mesh at the new "
+"location, the new mesh appears in the Object Browser with the default "
+"name MeshName_rotated (it is possible to change this name in the adjacent"
+" box);"
+msgstr ""
+
+# bfc597d8f46f4bc89628ab4474e05108
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:44
+msgid ""
+"activate **Copy groups** checkbox to copy the groups of elements of the "
+"source mesh to the newly created mesh."
+msgstr ""
+
+# 6dba19eadb894b8f99a9e4605a37974c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:46
+msgid ""
+"activate **Preview** checkbox to show the result of transformation in the"
+" viewer"
+msgstr ""
+
+# 407bbc2d9e554da29cb8cfa5fe4d0d96
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:47
+msgid "click **Apply** or **Apply and Close** button to confirm the operation."
+msgstr ""
+
+# 0dea9b0910534ea2ab63434488817657
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:62
+msgid "**See Also** a sample TUI Script of a :ref:`tui_rotation` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/scalar_bar.po b/doc/gui/locale/fr/LC_MESSAGES/scalar_bar.po
new file mode 100644 (file)
index 0000000..448ac93
--- /dev/null
@@ -0,0 +1,101 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 1156d5c7cd8b4ce1a3df82e82a707119
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:5
+msgid "Scalar Bar properties"
+msgstr ""
+
+# 4611908037724a82beac0a0b227692bb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:7
+msgid "In this dialog you can specify the properties of the scalar bar"
+msgstr ""
+
+# 27e42760cf0343ab852c0448815e1e95
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:13
+msgid ""
+"**Scalar Range** - in this menu you can specify **Min value** and **Max "
+"value** of the **Scalar Bar**, and turn on/off **Logarithmic** scaling of"
+" the scalar bar."
+msgstr ""
+
+# b5dabecd5af340298fae16f653e29ec6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:16
+msgid ""
+"**Logarithmic scale** is not applicable in case of negative and zero "
+"values in the range. In such cases it is disabled."
+msgstr ""
+
+# f8bbd34463744e8a939fae79d70564eb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:18
+msgid ""
+"**Font** - in this menu you can set type, face and color for the font of "
+"**Title** and **Labels** of the **Scalar Bar**"
+msgstr ""
+
+# 664c9633f415405e805f78afe06b4c9d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:20
+msgid ""
+"**Colors & Labels** - in this menu you can set the **number of colors** "
+"and the **number of labels** of the **Scalar Bar**"
+msgstr ""
+
+# ed868968ad2e488f90dbbbb34d38edcb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:22
+msgid ""
+"**Orientation** - allows choosing between vertical and horizontal "
+"orientation of the **Scalar Bar**."
+msgstr ""
+
+# 39360fa91ca54a70a9d489574fa1d4ed
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:25
+msgid ""
+"**Origin & Size Vertical & Horizontal** - allows defining the location "
+"(**X** and **Y**) and size (**Width** and **Height**) of **Scalar Bar**"
+msgstr ""
+
+# 79463d1d8df54ec0b4b64d7c5b54e0cc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:25
+msgid "**X**: abscissa of the origin (from the left side)"
+msgstr ""
+
+# 3dc2795dc89f47639ec6050cdc0a8da8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:26
+msgid "**Y**: ordinate of the origin (from the bottom)"
+msgstr ""
+
+# 03322a6dfedc42c09a9a078cd601e76b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:33
+msgid ""
+"**Distribution** - in this menu you can Show/Hide distribution histogram "
+"of the values of the **Scalar Bar** and specify histogram properties"
+msgstr ""
+
+# c10bd60eabd54a5f9d58bf7d23c80ffd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:28
+msgid "**Multicolor** the histogram is colored as **Scalar Bar**"
+msgstr ""
+
+# adcd8b4b90834ef1b259f5723ae5588a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:29
+msgid ""
+"**Monocolor** the histogram is colored as selected with **Distribution "
+"color** selector"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/scale.po b/doc/gui/locale/fr/LC_MESSAGES/scale.po
new file mode 100644 (file)
index 0000000..0cdcf0c
--- /dev/null
@@ -0,0 +1,211 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 976649347dc04341ae9ba242b046a63f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:5
+msgid "Scale"
+msgstr ""
+
+# aa6151bc0ee9433c86ad127eb2accce5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:7
+msgid ""
+"This geometrical operation allows to scale in space your mesh or some of "
+"its elements."
+msgstr ""
+
+# 7c93fc0bfad147c388e6f8288ea113a3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:9
+msgid "**To scale a mesh:**"
+msgstr ""
+
+# 516f478f73cf4c57b83ebbd9c5abda5e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:22
+msgid ""
+"From the **Modification** menu choose **Transformation** -> **Scale "
+"Transform** item."
+msgstr ""
+
+# 592174632303487d8ce9c13810433a54
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:12
+msgid "One of the following dialogs will appear:"
+msgstr ""
+
+# b3abf3343d4e4614b82fd4471bef6f23
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:14
+msgid "With one scale factor:"
+msgstr ""
+
+# 1727f2fa7cf14d689c8d20b9b7fb5fa4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:19
+msgid "Or with different scale factors for axes:"
+msgstr ""
+
+# f6d8459879304805a1f76ac536164444
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:44
+msgid "In the dialog:"
+msgstr ""
+
+# 0c332aca8bd949ec80c5867c1787a603
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:29
+msgid "specify the IDs of the translated elements:"
+msgstr ""
+
+# f7cda11020c543ff8fea7ad971549c8d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:26
+msgid "**Select the whole mesh, submesh or group** activating this checkbox; or"
+msgstr ""
+
+# f9b333cbe5ac44e9acd16c790192e3db
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:27
+msgid ""
+"choose mesh elements with the mouse in the 3D Viewer. It is possible to "
+"select a whole area with a mouse frame; or"
+msgstr ""
+
+# e1518aed969b48f8a270e5f08cf051e1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:28
+msgid ""
+"input the element IDs directly in **ID Elements** field. The selected "
+"elements will be highlighted in the viewer; or"
+msgstr ""
+
+# 0c0b04720a4143e88071e45d47be2573
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:29
+msgid ""
+"apply Filters. **Set filter** button allows to apply a filter to the "
+"selection of elements. See more about filters in the "
+":ref:`selection_filter_library_page` page."
+msgstr ""
+
+# 0dff07c6312e4602a6d73eab27f77b16
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:31
+msgid "specify the base point for scale"
+msgstr ""
+
+# cb38c5456f3a420fa73112e558383d4c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:33
+msgid "specify the scale factor"
+msgstr ""
+
+# 207ff7432d104971920e94f1a1489058
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:35
+msgid "specify the conditions of scale:"
+msgstr ""
+
+# ae76fd3de0e145cbae97b2557a1ae1b4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:37
+msgid ""
+"activate **Move elements** radio button to scale the selected mesh (or "
+"elements) without creating a copy;"
+msgstr ""
+
+# 2b45e07b65e5447c81a5a9fa7a730813
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:38
+msgid ""
+"activate **Copy elements** radio button to duplicate the selected mesh "
+"(or elements) and to apply scaling to the copy within the same mesh;"
+msgstr ""
+
+# cfe3fb629ea3424a91a18cb3c2c343db
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:39
+msgid ""
+"activate **Create as new mesh** radio button to leave the selected mesh "
+"(or elements) at its previous location and create a new mesh of the "
+"scaled copy of the selected elements; the new mesh appears in the Object "
+"Browser with the default name MeshName_scaled (it is possible to change "
+"this name in the adjacent box);"
+msgstr ""
+
+# 7991c68193e24dc29f5a406dee204dd2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:40
+msgid ""
+"activate **Copy groups** checkbox to copy the groups of elements existing"
+" in the source mesh to the newly created mesh."
+msgstr ""
+
+# bf35cd9cb59e4b18b39740b76ef4e40f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:42
+msgid ""
+"activate **Preview** checkbox to show the result of transformation in the"
+" viewer"
+msgstr ""
+
+# eab666d03f084db59220125c74308d29
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:43
+msgid "click **Apply** or **Apply and Close** button to confirm the operation."
+msgstr ""
+
+# 30a53807813c440680fd35fe9e1fa820
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:46
+msgid "**Example of using:**"
+msgstr ""
+
+# e1be3e4a68d9473c99099a90dfeaae68
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:48
+msgid "Create quandrangle mesh 3x3 on a simple planar face (200x200)"
+msgstr ""
+
+# c9c9dec075ba4cad992dde2f2bdc5155
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:53
+msgid "and union 3 faces (along axis Z) to group \"gr_faces\""
+msgstr ""
+
+# ccee25b07af74515b94b5d27c3be58de
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:60
+msgid "Perform scale operation for the whole mesh and create a new mesh:"
+msgstr ""
+
+# 8d1cc8863f5645ca872ec1934ea72f82
+# 7c4b36782d234b55b1b5d4ea505b3fe1
+# 11937ca304cb451bbcb27a93701a01ce
+# 01da8b1362bb4532bc2a36e54870acdf
+# da6c180ec04043119602a6e5bb6f7e4f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:65
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:75
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:85
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:97
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:109
+msgid "result after operation:"
+msgstr ""
+
+# 95e75f754ac247448c9da13196a037f8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:70
+msgid "Perform scale operation for the whole mesh and copy elements:"
+msgstr ""
+
+# 09834714eb3540e1a254907302799225
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:80
+msgid "Perform scale operation for a group of faces and copy elements:"
+msgstr ""
+
+# 9b1c18e6ff8c4001bab9401ec88179f2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:92
+msgid "Perform scale operation for two edges and move elements:"
+msgstr ""
+
+# 6aee0052fed448c8b135b26af4479692
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:104
+msgid "Perform scale operation for one face and move elements:"
+msgstr ""
+
+# e5db8678a3a4415eaa2ef2096cc1e865
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:115
+msgid "**See Also** a sample TUI Script of a :ref:`tui_scale` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/segments_around_vertex_algo.po b/doc/gui/locale/fr/LC_MESSAGES/segments_around_vertex_algo.po
new file mode 100644 (file)
index 0000000..14a9b3d
--- /dev/null
@@ -0,0 +1,46 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# d4f6292a512f44e0949ebb0af600ae1b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/segments_around_vertex_algo.rst:5
+msgid "Segments around Vertex"
+msgstr ""
+
+# 1d1fe0e867d64d81b399c9952109111f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/segments_around_vertex_algo.rst:7
+msgid ""
+"**Segments around Vertex** algorithm is considered to be a 0D meshing "
+"algorithm, but, of course, it doesn't mesh vertices. It allows to define "
+"the local size of the segments in the neighborhood of a certain vertex. "
+"If we assign this algorithm to a geometrical object of higher dimension, "
+"it applies to all its vertices."
+msgstr ""
+
+# 958bbf124dab4412a71acd09cbcfc2ef
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/segments_around_vertex_algo.rst:13
+msgid ""
+"Length of segments near vertex is defined by **Length Near Vertex** "
+"hypothesis. This hypothesis is used by :ref:`a1d_algos_anchor` \"Wire "
+"Discretization\" or :ref:`a1d_algos_anchor` \"Composite Side "
+"Discretization\" algorithms as follows: a geometrical edge is discretized"
+" according to a 1D hypotheses and then nodes near vertices are modified "
+"to assure the segment length required by **Length Near Vertex** "
+"hypothesis."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/selection_filter_library.po b/doc/gui/locale/fr/LC_MESSAGES/selection_filter_library.po
new file mode 100644 (file)
index 0000000..37e910d
--- /dev/null
@@ -0,0 +1,517 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 1c1fce2364eb4d10a0b9ef75f005a204
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:5
+msgid "Selection filter library"
+msgstr ""
+
+# 8bdbe1ebe74b443e9f379fcd3769a610
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:7
+msgid ""
+"Selection filter library allows creating and storing in files the filters"
+" that can be later reused for operations on meshes. You can access it "
+"from the Main Menu via **Tools / Selection filter library**. It is also "
+"possible to save/load a filter by invoking the filter library from "
+":ref:`filtering_elements` launched from any mesh operation."
+msgstr ""
+
+# 0e734e3b76c941b8ab1cdc3cd2278263
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:16
+msgid ""
+"**Library file name** shows the path and the file name where your filters"
+" will be stored. By clicking the **Browse** button you can load an "
+"existing filter library."
+msgstr ""
+
+# 3e3d1001ef1e4596b81c61efe31f259d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:20
+msgid ""
+"**Names of filters** lists the filters created or uploaded for the "
+"current study. You can **Add** or **Delete** filters."
+msgstr ""
+
+# 1d12f5c73eb145f58cf4d80c15b808fe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:23
+msgid ""
+"In **Filter name** box you can specify the name for your filter. By "
+"default it is prefixed with the corresponding entity type."
+msgstr ""
+
+# 8b3e05ba20e54cf9ae42610cb3b64bb9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:29
+msgid "Filter Dialog"
+msgstr ""
+
+# f8535670e6fc4c5893d9a7a134c6235a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:31
+msgid ""
+"When we use filters during group creation or another operation (by "
+"clicking **Set Filter** button in the corresponding dialog), the dialog "
+"for setting filters looks as shown below."
+msgstr ""
+
+# c8cad5728ed64f47a139515c0aac843c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:38
+msgid ""
+"The **Add** button creates a new criterion at the end of the list of "
+"criteria. The **Insert** button creates a new criterion before the "
+"selected criterion. The **Remove** button deletes the selected criterion."
+" The **Clear** button deletes all criteria."
+msgstr ""
+
+# c7be8ffe336742d8893887bd7ed12199
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:43
+msgid ""
+"If there is a choice of **Entity type** in the dialog, only criteria of "
+"currently selected type are used to create or change a filter, and "
+"criteria of hidden types (if were specified) are ignored."
+msgstr ""
+
+# 5df645a139e14ef0a5ab935cc2822f4e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:47
+msgid ""
+"Each **Entity type** has its specific list of criteria, however all "
+"filters have common syntax. The **Threshold Value** should be specified "
+"for most criteria. For numerical criteria it is necessary to indicate if "
+"the found elements should be **More**, **Less** or **Equal** to this "
+"**Value**. You can also reverse the sense of a criterion using **Unary** "
+"operator *Not* and you should specify logical relations between criteria "
+"using **Binary** operators *Or* and *And*."
+msgstr ""
+
+# 8550bb068c514fa4b58594b758559fb4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:55
+msgid ""
+"Some criteria have the additional parameter of **Tolerance**. Switching "
+"on **Insert filter in viewer** check-box limits selection of elements in "
+"the Viewer to the current filter."
+msgstr ""
+
+# 9acf2cc77b6245ce931c1ed13dff672d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:59
+msgid ""
+"In the **Source** field you choose if the filter will be applied to the "
+"whole **Mesh**, the **Initial Selection** or the **Current Dialog**. If "
+"**Mesh** is chosen, the elements satisfying the filter will be selected "
+"in the 3D Viewer. If **Initial Selection** is chosen, the filter will be "
+"applied to the selected elements and the elements rejected by the filter "
+"will be deselected. If **Current Dialog** is chosen, the filter will be "
+"applied to the list of elements in the current dialog and the elements "
+"rejected by the filter will be removed from the list."
+msgstr ""
+
+# e1610c78c0ed4b2794086eb144acd6a3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:69
+msgid ""
+"**Copy from...** button gives you a possibility to load an existing "
+"filter from **Selection filter library** and **Add to...** button gives "
+"you a possibility to save your current filter in the Library."
+msgstr ""
+
+# 490fe36e117e4c8886f86f11483197ad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:74
+msgid ""
+"If the button **Apply and Close** is disabled, there is no selected mesh "
+"in the Object Browser and the filter can not be created. You have to "
+"select the mesh and the button will be enabled."
+msgstr ""
+
+# 80cfefe334de4e478d2ee70d122f722c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:76
+msgid "Some criteria are applicable to all **Entity types**:"
+msgstr ""
+
+# eac45a6080c545e09c8b0ab33992aad6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:78
+msgid ""
+"**Belong to Geom** selects entities whose all nodes lie on the shape "
+"defined by **Threshold Value**. If the threshold shape is a sub-shape of "
+"the main shape of the mesh, the filtering algorithm works faster because "
+"node-to-shape association is used instead of measuring distance between "
+"nodes and the shape, and **Tolerance** is not used. If the threshold "
+"shape is any other shape, the algorithm works slower because distance "
+"between nodes and the shape is measured and is compared with "
+"**Tolerance**. The latter approach (distance measurement) is also used if"
+" an element is not associated to any shape."
+msgstr ""
+
+# f67124ffdff24567bf5b03fdb1444f8b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:79
+msgid ""
+"**Lying on Geom** selects entities whose at least one node lies on the "
+"shape defined by the **Threshold Value**. If the threshold shape is a "
+"sub-shape of the main shape of the mesh, the filtering algorithm works "
+"faster because node-to-shape association is used instead of measuring "
+"distance between nodes and the shape, and **Tolerance** is not used. If "
+"the threshold shape is any other shape, the algorithm works slower "
+"because distance between nodes and the shape is measured and is compared "
+"with **Tolerance**. The latter approach (distance measurement) is also "
+"used if an element is not associated to any shape."
+msgstr ""
+
+# 34e0eb39ce7649eba97c55fc8f783642
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:80
+msgid ""
+"**Belong to Mesh Group** selects entities included into the mesh group "
+"defined by the **Threshold Value**."
+msgstr ""
+
+# 1b2d26b182b3419abb3716a5a0fe4f59
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:81
+msgid ""
+"**Range of IDs** allows selection of entities with the specified IDs. "
+"**Threshold Value** can be, for example: \"1,2,3,50-60,63,67,70-78\""
+msgstr ""
+
+# e70b62585c804d82b8264c362e698a17
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:82
+msgid ""
+"**Color of Group** allows selection of entities belonging to the Group "
+"with the color defined by the **Threshold Value**."
+msgstr ""
+
+# 6a95643f6bac4e24b3b429add57f7105
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:86
+msgid ""
+"**Elements of a domain** allows selection of entities belonging to one "
+"domain of a mesh. The domain is mesh part not connected to other parts. "
+"**Threshold Value** locating any element of the domain can be either"
+msgstr ""
+
+# 38ca148d1a304511b5076a28fc54c9d6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:84
+msgid "node ID (that you can pick in the Viewer) or"
+msgstr ""
+
+# 9d0c424b3fa74c0a84b5fa14e67f1c20
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:85
+msgid ""
+"geometrical vertex (that you can pick either in the Viewer or in the "
+"Object Browser) or"
+msgstr ""
+
+# 8608ebd9c96e46c69ef2b8df43773378
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:86
+msgid "3 coordinates of a point (that you can enter in TUI mode only)."
+msgstr ""
+
+# ffea7f37121c4268b43ad9de9c20f421
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:88
+msgid ""
+"Some criteria are applicable to entities of dimension more than zero, "
+"i.e. to **Edges**, **Faces** and **Volumes**:"
+msgstr ""
+
+# 6aaffed45ef64e24b05096a94cc3afdc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:90
+msgid ""
+"**Linear** allows selection of Linear or Quadratic elements (if Unary is "
+"set to \"Not\")"
+msgstr ""
+
+# 8ec1110320cb485eae13c1a6c0d6c0f6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:91
+msgid ""
+"**Geometry type** allows selection of elements by their geometric type "
+"defined by the **Threshold Value**. The list of available geometric types"
+" depends on the current entity type."
+msgstr ""
+
+# 90b622d6c35944278f201fba7b79613f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:92
+msgid ""
+"**Entity type** allows selection of elements by their type defined as a "
+"combination of geometry type and the number of nodes."
+msgstr ""
+
+# 5c03d3620bf545c38cd2d0b7d079147c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:94
+msgid ""
+"The following criteria are applicable to Entities of **all** types except"
+" for *Volumes*:"
+msgstr ""
+
+# 829402e4a6284e6ab74ad292a98c4aab
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:96
+msgid ""
+"**Belong to Plane** selects entities whose all nodes belong to a "
+"specified plane within a given **Tolerance**."
+msgstr ""
+
+# 9a39d5991dd540e9a3402abcb53a1db0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:97
+msgid ""
+"**Belong to Cylinder** selects entities whose all nodes belong to a "
+"specified cylinder within a given **Tolerance**."
+msgstr ""
+
+# 5d4d7fbecf60482d8193729fd7f8c521
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:98
+msgid ""
+"**Belong to Surface** selects entities whose all nodes belong to a "
+"specified arbitrary surface within a given **Tolerance**."
+msgstr ""
+
+# 6336c1a5033e4f089d2c13133098a8e9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:100
+msgid "The following criteria allow selecting mesh **Nodes**:"
+msgstr ""
+
+# 837b8b1702c54744b16871a48fa37416
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:102
+msgid "**Free nodes** selects nodes not belonging to any mesh element."
+msgstr ""
+
+# cd6b965ce6ae41a08b73d5dd60bcec1f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:103
+msgid ""
+"**Double nodes** selects a node coincident with other nodes (within a "
+"given **Tolerance**). See also :ref:`tui_double_nodes_control`."
+msgstr ""
+
+# 6dea00644fa34febac6e86d56513001a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:104
+msgid ""
+"**Connectivity number** selects nodes with a number of connected "
+"elements, which is more, less or equal to the predefined **Threshold "
+"Value**. Elements of the highest dimension are countered only."
+msgstr ""
+
+# 4f3328b1ea8e4c808b3a2f00fc8566d8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:106
+msgid "The following criteria allow selecting mesh **Edges**:"
+msgstr ""
+
+# 70450e00d5ac49d2b4e3944fdf08dd77
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:108
+msgid ""
+"**Free Borders** selects free 1D mesh elements, i.e. edges belonging to "
+"one element (face or volume) only. See also a :ref:`free_borders_page`."
+msgstr ""
+
+# 0589aa44cbfc4646b09f1118227b42d5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:109
+msgid ""
+"**Double edges** selects 1D mesh elements basing on the same set of "
+"nodes. See also :ref:`filter_double_elements` ."
+msgstr ""
+
+# d8d8b9d1e788415ea6abdab073967ff3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:110
+msgid ""
+"**Borders at Multi-Connections** selects edges belonging to several "
+"faces. The number of faces should be more, less or equal (within a given "
+"**Tolerance**) to the predefined **Threshold Value**. See also a "
+":ref:`borders_at_multi_connection_page`."
+msgstr ""
+
+# c56be1de25a24c178460e748f230c825
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:111
+msgid ""
+"**Length** selects edges with a value of length, which is more, less or "
+"equal (within a given **Tolerance**) to the predefined **Threshold "
+"Value**. See also a :ref:`length_page` ."
+msgstr ""
+
+# 460916cdcb2f4597b398daf937a0bddb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:113
+msgid "The following criteria allow selecting mesh **Faces**:"
+msgstr ""
+
+# 36bcbcf2e34b4819b3e97c9c12c631cd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:115
+msgid ""
+"**Aspect ratio** selects 2D mesh elements with an aspect ratio (see also "
+"an :ref:`aspect_ratio_page`), which is more, less or equal (within a "
+"given **Tolerance**) to the predefined **Threshold Value**."
+msgstr ""
+
+# 31f11a8d74564ae293786fb388dd11f0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:116
+msgid ""
+"**Warping** selects quadrangles with warping angle (see also a "
+":ref:`warping_page`), which is more, less or equal (within a given "
+"**Tolerance**) to the predefined **Threshold Value**."
+msgstr ""
+
+# 59f4575a06874c57af5eab922fb54487
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:117
+msgid ""
+"**Minimum angle** selects triangles and quadrangles with minimum angle "
+"(see also a :ref:`minimum_angle_page`), which is more, less or equal "
+"(within a given **Tolerance**) to the predefined **Threshold Value**."
+msgstr ""
+
+# 18d26e933cea4cc683cfc077b606146c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:118
+msgid ""
+"**Taper** selects quadrangles cells with taper value (see also a "
+":ref:`taper_page`), which is more, less or equal (within a given "
+"**Tolerance**) to the predefined **Threshold Value**."
+msgstr ""
+
+# 30abd621800c45d0831eb72eb648274a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:119
+msgid ""
+"**Skew** selects triangles and quadrangles with skew value (see also a "
+":ref:`skew_page`), which is more, less or equal (within a given "
+"**Tolerance**) to the predefined **Threshold Value**."
+msgstr ""
+
+# 053853c3eb7849f9b26d5f711c8e11f2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:120
+msgid ""
+"**Area** selects triangles and quadrangles with a value of area (see also"
+" an :ref:`area_page`), which is more, less or equal (within a given "
+"**Tolerance**) to the predefined **Threshold Value**."
+msgstr ""
+
+# 02534930c9c74ffaa5819494e3a64911
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:121
+msgid ""
+"**Free edges** selects 2D mesh elements having at least one edge, which "
+"is not shared with other faces. See also a :ref:`free_edges_page`."
+msgstr ""
+
+# 9cf5e8a3b05f483dbbcb0789374f8c71
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:122
+msgid ""
+"**Free faces** selects 2D mesh elements, which belong to less than two "
+"volumes."
+msgstr ""
+
+# b9f5cfe961a6466c8d56e56395e197db
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:123
+msgid ""
+"**Double faces** selects 2D mesh elements basing on the same set of "
+"nodes. See also :ref:`filter_double_elements`."
+msgstr ""
+
+# 677dfbddc4364500b20b32752b20d483
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:124
+msgid ""
+"**Faces with bare border** selects 2D mesh elements having a free border "
+"without an edge on it. See also :ref:`bare_border_faces_page`."
+msgstr ""
+
+# 5b75d13db4a74770a725f1cd09c8b42e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:125
+msgid ""
+"**Over-constrained faces** selects 2D mesh elements having only one "
+"border shared with other 2D elements. See also "
+":ref:`over_constrained_faces_page`."
+msgstr ""
+
+# 8a8c1a6a9e444441bfbc48773d261806
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:126
+msgid ""
+"**Borders at Multi-Connections 2D** selects cells consisting of edges "
+"belonging to several elements of mesh. The number of mesh elements should"
+" be more, less or equal (within a given **Tolerance**) to the predefined "
+"**Threshold Value**. See also a "
+":ref:`borders_at_multi_connection_2d_page`."
+msgstr ""
+
+# a84ed7f236924d9dbb8438ffecafeba5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:127
+msgid ""
+"**Length 2D** selects triangles and quadrangles combining of the edges "
+"with a value of length, which is more, less or equal (within a given "
+"**Tolerance**) to the predefined **Threshold Value**. See also a "
+":ref:`length_2d_page`."
+msgstr ""
+
+# 54627dbe712540b3b3a85bc9eee7a24b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:128
+msgid ""
+"**Coplanar faces** selects mesh faces neighboring the one selected by ID "
+"in **Threshold Value** field, if the angle between the normal to the "
+"neighboring face and the normal to the selected face is less then the "
+"angular tolerance (defined in degrees). Selection continues among all "
+"neighbor faces of already selected ones."
+msgstr ""
+
+# df8bbc089d434f3eb71da4c6f0649904
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:129
+msgid ""
+"**Element Diameter 2D** selects triangles and quadrangles composed of the"
+" edges and diagonals with a value of length, which is more, less or equal"
+" (within a given **Tolerance**) to the predefined **Threshold Value**. "
+"See also a :ref:`max_element_length_2d_page`."
+msgstr ""
+
+# 6d7236a630c142ea9f0d30873c5f3b61
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:131
+msgid "The following criteria allow selecting mesh **Volumes**:"
+msgstr ""
+
+# c6462d3a7074480a99546e2823b5e310
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:133
+msgid ""
+"**Aspect ratio 3D** selects 3D mesh elements with an aspect ratio (see "
+"also an :ref:`aspect_ratio_3d_page`), which is more, less or equal "
+"(within a given **Tolerance**) to the predefined **Threshold Value**."
+msgstr ""
+
+# 1664adf90bb841bc9d0d712f5a2bd4f9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:134
+msgid ""
+"**Volume** selects 3D mesh elements with a value of volume (see also a "
+":ref:`volume_page`), which is more, less or equal (within a given "
+"**Tolerance**) to the predefined **Threshold Value**."
+msgstr ""
+
+# 4b238fb593444b72b69e50a0b009ac67
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:135
+msgid ""
+"**Element Diameter 3D** selects 3D mesh elements composed of the edges "
+"and diagonals with a value of length, which is more, less or equal "
+"(within a given **Tolerance**) to the predefined **Threshold Value**. See"
+" also a :ref:`max_element_length_3d_page`."
+msgstr ""
+
+# 2826aa3f994a45db95cf817efd5e85c5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:136
+msgid ""
+"**Double volumes** selects 3D mesh elements basing on the same set of "
+"nodes. See also :ref:`filter_double_elements`."
+msgstr ""
+
+# 6921b6529e1240858542b679f0db83b0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:137
+msgid ""
+"**Bad oriented volume** selects mesh volumes, which are incorrectly "
+"oriented from the point of view of MED convention."
+msgstr ""
+
+# 0d6876d7b2304932a550c4dfabca7b71
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:138
+msgid ""
+"**Over-constrained volumes** selects mesh volumes having only one facet "
+"shared with other volumes. See also :ref:`over_constrained_volumes_page`."
+msgstr ""
+
+# 5a3b01dc76d3443381382446e3ab2d7d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:139
+msgid ""
+"**Volumes with bare border** selects 3D mesh elements having a free "
+"border without a face on it. See also :ref:`bare_border_volumes_page`."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/sewing_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/sewing_meshes.po
new file mode 100644 (file)
index 0000000..d431b08
--- /dev/null
@@ -0,0 +1,404 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 0427a840a4e84ac6989aa0c77bfac249
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:5
+msgid "Sewing meshes"
+msgstr ""
+
+# 0f75e9f4e2e04aa59f00d0f88b0e2b0c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:7
+msgid ""
+"In SMESH you can sew elements of a mesh. The current functionality allows"
+" you to sew:"
+msgstr ""
+
+# 30937e9e896c4b1e8da93505b12fa892
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:10
+msgid ":ref:`free_borders_anchor`"
+msgstr ""
+
+# 1f1df6e111004472b003cda7e0c6b098
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:11
+msgid ":ref:`conform_free_borders_anchor`"
+msgstr ""
+
+# a0fdf0c2c0e04ab39246e05fcc02fe08
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:12
+msgid ":ref:`border_to_side_anchor`"
+msgstr ""
+
+# 17caeaf9ef344600b0a4863ddc79e48d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:13
+msgid ":ref:`side_elements_anchor`"
+msgstr ""
+
+# 2d547b0934db4141b1f612bcb80ae199
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:22
+msgid "**To sew elements of a mesh:**"
+msgstr ""
+
+# 832116b60d01498d9dd437868ce6c5eb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:24
+msgid ""
+"From the **Modification** menu choose the **Transformation** item and "
+"from its sub-menu select the **Sewing** item."
+msgstr ""
+
+# 177708ac72a04962849b6692eac54cee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:25
+msgid ""
+"Check in the dialog box one of the radio buttons corresponding to the "
+"type of sewing operation you would like to perform."
+msgstr ""
+
+# efe3e16943ef4edab8968180a97c6545
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:26
+msgid "Fill the other fields available in the dialog box."
+msgstr ""
+
+# a9f39065e73a4da885acd38d5507cf04
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:27
+msgid ""
+"Click the **Apply** or **Apply and Close** button to perform the "
+"operation of sewing."
+msgstr ""
+
+# 67fbff5164924d018bdc8c6aa5dca3b3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:34
+msgid "Sew free borders"
+msgstr ""
+
+# 45ffaa1d166d4a73b2e434da1dae0ab7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:36
+msgid "This functionality allows you to unite free borders of a 2D mesh."
+msgstr ""
+
+# a195379eb25b4b3c8def98cd965baeb5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:38
+msgid ""
+"There are two working modes: *Automatic* and *Manual*. In the "
+"**Automatic** mode, the program finds free borders coincident within the "
+"specified tolerance and sews them. Optionally it is possible to visually "
+"check and correct if necessary the found free borders before sewing. In "
+"the **Manual** mode you are to define borders to sew by picking three "
+"nodes of each of two borders."
+msgstr ""
+
+# cff4e716051842d29c7f4a08565327c7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:52
+msgid "To use **Automatic** sewing:"
+msgstr ""
+
+# 72336fb7e3fe4501ab80d5b5492733f3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:54
+msgid ""
+"Specify the mesh you want to sew by selecting it or any its part (group "
+"or sub-mesh) in the Object Browser or in the VTK Viewer."
+msgstr ""
+
+# 63c77719c09f4067b17893670f50e041
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:55
+msgid ""
+"Specify the **Tolerance**, within which free borders are considered "
+"coincident. At the default zero **Tolerance**, the tolerance used by he "
+"search algorithm is defined as one tenth of an average size of elements "
+"adjacent to compared free borders."
+msgstr ""
+
+# 4714fc6d3faa4c79ab36852cc0e4c74d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:56
+msgid ""
+"To visually check the coincident free borders found by the algorithm, "
+"switch off **Auto Sewing** check-box. The controls to adjust groups of "
+"coincident free borders will become available in the dialog."
+msgstr ""
+
+# acef3f7f661b4aecbaea899908fb9107
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:64
+msgid ""
+"**Detect** button launches the algorithm of search of coincident free "
+"borders."
+msgstr ""
+
+# 92e4f57d17cd4fdbb82b24f0fc95f45f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:65
+msgid ""
+"The found groups of **Coincident Free Borders** are shown in the list, "
+"one group per line. Each group has its own color, which is used to "
+"display the group borders in the VTK Viewer. A free border within a group"
+" is designated by the IDs of its first, second and last nodes within "
+"parenthesis. All borders present in the list will be sewn upon **Apply**."
+msgstr ""
+
+# eee96bafee2b41a1904366607c979078
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:66
+msgid "**Remove** button removes the selected groups from the list."
+msgstr ""
+
+# 4257c6d79e974570949891f524d38740
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:67
+msgid "**Select All** check-box selects all groups in the list."
+msgstr ""
+
+# 3208c772c2074645abc64177f162090d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:68
+msgid ""
+"When a group is selected, its borders appear in **Edit Selected Group** "
+"list that allows you to change this group."
+msgstr ""
+
+# 61981c0624434b3bbd85dd6b1d20f5e9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:83
+msgid ""
+"Selection of a border in the list allows changing its first and last "
+"nodes whose IDs appear in two fields below the list. *Arrow* buttons near"
+" each field move the corresponding end node by the number of nodes "
+"defined by **Step** field."
+msgstr ""
+
+# 84ef8d30fdb94cfa82a17768d40a7393
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:92
+msgid ""
+"For sewing free borders manually you should switch the **Mode** to "
+"**Manual** and define three points on each border: the first, the second "
+"and the last node:"
+msgstr ""
+
+# c9034feb9b2b4e3884a179194bafa9c7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:97
+msgid "the first node specifies beginning of the border;"
+msgstr ""
+
+# 17de1ef3b50c4d6c95babb7c8d3253fc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:98
+msgid ""
+"the second node specifies the part of the border which should be "
+"considered (as far as the free border usually forms a closed contour);"
+msgstr ""
+
+# bee01760bbfb4aefb6d885d0d4f081dc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:99
+msgid "the last node specifies the end of the border."
+msgstr ""
+
+# 5a0dc92cf1634f1b9f84f559096a1849
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:102
+msgid "You can select these nodes in the 3D viewer or define by its id."
+msgstr ""
+
+# caae9a4a6e6045d8b183bb97dd65b87e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:104
+msgid ""
+"The first and the second nodes should belong to the same link of a face. "
+"The second and the last nodes of a border can be the same. The first and "
+"the last nodes of two borders can be the same. The corresponding end "
+"nodes of two borders will be merged. Intermediate nodes of two borders "
+"will be either merged or inserted into faces of the opposite border."
+msgstr ""
+
+# 52a9e8df81dc45eb9570dd91eed42e10
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:111
+msgid ""
+"In practice the borders to sew often coincide and in this case it is "
+"difficult to specify the first and the last nodes of a border since they "
+"coincide with the first and the last nodes of the other border. To cope "
+"with this, :ref:`merging_nodes_page` coincident nodes into one "
+"beforehand. Two figures below illustrate this approach."
+msgstr ""
+
+# c7647d646eed4682a8d0f9e0359b66bd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:130
+msgid "The sewing algorithm is as follows:"
+msgstr ""
+
+# 7a7c60ebb975485ea6dda92c2f609a80
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:132
+msgid ""
+"The parameter (U) of each node within a border is computed. So that the "
+"first node has U=0.0, the last node has U=1.0, for the rest nodes 0.0 < U"
+" < 1.0;"
+msgstr ""
+
+# 50334149dbdb4c8aa8068989c6f0dbcb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:133
+msgid ""
+"Compare node parameters of the two borders. If two nodes of the opposite "
+"borders have close parameters, they are merged, i.e. a node of the first "
+"border is replaced in all elements by a node of the second border. If a "
+"node has no node with a close parameter in the opposite border, it is "
+"inserted into an edge of element of the opposite border, an element is "
+"split. Two nodes are considered close enough to merge, if difference of "
+"their parameters is less than one fifth of minimum length of adjacent "
+"face edges on the borders."
+msgstr ""
+
+# ad507053a5a5403ba9e0f023d5da133e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:142
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_sew_free_borders` "
+"operation."
+msgstr ""
+
+# 14435c9e9b574a8981617b79df0aea8a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:149
+msgid "Sew conform free borders"
+msgstr ""
+
+# b017b8bbb53f488db8fa09627d9904fd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:151
+msgid "This functionality can be used to unite two free borders of a 2D mesh."
+msgstr ""
+
+# 6a8a83cff00b4bc4a66562dfa130bfd0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:156
+msgid ""
+"The borders of meshes for sewing are defined as for \"Sew free borders\" "
+"except that the second free border is not limited and can be defined by "
+"the first and the second nodes only. The first nodes of two borders can "
+"be the same."
+msgstr ""
+
+# 927f9477f808490da86c1422ecfacf6e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:161
+msgid ""
+"The algorithm is following: counting nodes starting at the first ones, "
+"the n-th node of the first border is merged with the n-th node of the "
+"other border, until the end of either of borders. Nodes of the first "
+"border are replaced in all elements with corresponding nodes of the "
+"second border."
+msgstr ""
+
+# 1516ecc4950e4a9fb8b27ebe590122ec
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:168
+msgid ""
+"For sewing conform free borders you should define three points on the "
+"first border and two points on the second one. User can select these "
+"nodes in 3D viewer or define node by its id."
+msgstr ""
+
+# 041ce8ee41c14f9d927db512030afd36
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:176
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_sew_conform_free_borders`"
+" operation."
+msgstr ""
+
+# 65b0a0c74caa42e19e189c09d9afb252
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:183
+msgid "Sew border to side"
+msgstr ""
+
+# 88c3b5fd40ae42bbafa9b4d6644475a9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:185
+msgid "\"Sew border to side\" is intended to sew a free border to a mesh surface."
+msgstr ""
+
+# 37bb36c6f5e6447d88c3a40690d07c7f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:189
+msgid ""
+"The free border is defined as for \"Sewing of free borders\". The place "
+"where to sew the border is defined by two nodes, between which the border"
+" faces are placed, so that the first border node is merged with the first"
+" node on the side and the last node of the border is merged with the "
+"second specified node on the side."
+msgstr ""
+
+# 1b976c0dfd734579bb69d1f821541ce6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:194
+msgid "The algorithm is following."
+msgstr ""
+
+# d39a717ae6844ad7b25f5692ed57d70a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:196
+msgid ""
+"Find a sequence of linked nodes on the side such that the found links to "
+"be most co-directed with the links of the free border."
+msgstr ""
+
+# 66e7c6cefa3644a49ac9c1b787350287
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:197
+msgid "Sew two sequences of nodes using algorithm of \"Sewing of free berders\"."
+msgstr ""
+
+# 037508d4a2c2439d8488e9de3fe2f4da
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:200
+msgid ""
+"For sewing border to side you should define three points on the border "
+"and two points on the side. User can select these nodes in 3D viewer or "
+"define node by its id."
+msgstr ""
+
+# 60dcf19069f04f83bbf22733a3551e62
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:208
+msgid ""
+"**See Also** a sample TUI Script of a "
+":ref:`tui_sew_meshes_border_to_side` operation."
+msgstr ""
+
+# 8aa15075cb4e4698b3516044d6ba4ff1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:215
+msgid "Sew side elements"
+msgstr ""
+
+# dc6cdaaf8c3f43dcae25ade86910ab6a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:217
+msgid "This operation is intended to unite two mesh surfaces."
+msgstr ""
+
+# 73e1de6f7d8f401082281d1d07977628
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:222
+msgid ""
+"Surfaces may be defined by either 2d or 3d elements. The number of given "
+"elements of the sides must be the same. The sets of given elements must "
+"be topologically equal, i.e. each node of one element set must have a "
+"corresponding node in the other element set and corresponding nodes must "
+"be equally linked. If there are 3d elements in a set, only their free "
+"faces must obey to that rule."
+msgstr ""
+
+# 8be258d690594afe9e90428561b47cc1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:229
+msgid ""
+"Two corresponding nodes on each side must be specified. They must belong "
+"to one element and must be located on an element set boundary."
+msgstr ""
+
+# beffb26461c94fb29e06f062d9097797
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:231
+msgid ""
+"Sewing algorithm finds and merges the corresponding nodes starting from "
+"the specified ones."
+msgstr ""
+
+# 8d34e43f12604a0fae6e679f88de6c06
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:246
+msgid ""
+"For sewing side elements you should define elements for sewing and two "
+"nodes for merging on the each side. User can select these elements and "
+"nodes in 3D viewer or define them by its id."
+msgstr ""
+
+# 36d86c0d971448d58e132b91e11b4ab3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:250
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_sew_side_elements` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/skew.po b/doc/gui/locale/fr/LC_MESSAGES/skew.po
new file mode 100644 (file)
index 0000000..dde0462
--- /dev/null
@@ -0,0 +1,58 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# ffa0e140c2b94def8c2047d74ba0c16b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/skew.rst:5
+msgid "Skew"
+msgstr ""
+
+# 3d3fc82f66704e108328aaa7bf6d7126
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/skew.rst:7
+msgid ""
+"**Skew** mesh quality criterion reflects the angle between the lines that"
+" join opposite sides of a quadrangle element or the greatest angle "
+"between a median and a midline in a triangle element. This mesh quality "
+"criterion can be applied to elements composed of 4 and 3 nodes "
+"(quadrangles and triangles)."
+msgstr ""
+
+# 923ee2b37e8043919ea75c89979c3cc8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/skew.rst:20
+msgid "Display your mesh in the viewer."
+msgstr ""
+
+# 4334f64e54eb4a76bfa280c22114cbda
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/skew.rst:21
+msgid ""
+"Choose **Controls > Face Controls > Skew** or click **\"Skew\"** button "
+"of the toolbar."
+msgstr ""
+
+# ae0207e03e3f49ecaf5329395c50d8eb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/skew.rst:30
+msgid ""
+"Your mesh will be displayed in the viewer with its elements colored "
+"according to the applied mesh quality control criterion:"
+msgstr ""
+
+# 6bf94f1243344010a4fdade2e8ab5fe0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/skew.rst:36
+msgid "**See Also** a sample TUI Script of a :ref:`tui_skew` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/smesh_migration.po b/doc/gui/locale/fr/LC_MESSAGES/smesh_migration.po
new file mode 100644 (file)
index 0000000..6ed8d5b
--- /dev/null
@@ -0,0 +1,172 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 8b450be120c04c63852ba74f04c81751
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:5
+msgid "Modifing Mesh Python scripts from SALOME 6 and before"
+msgstr ""
+
+# c191d4032e124bbcad3e1a27bb60da68
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:7
+msgid ""
+"In SALOME 7.2, the Python interface for Mesh has been slightly modified "
+"to offer new functionality:"
+msgstr ""
+
+# c6559f70691240a5aef7174d5e327ef4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:10
+msgid ""
+"Scripts generated for SALOME 6 and older versions must be adapted to work"
+" in SALOME 7.2 with full functionality."
+msgstr ""
+
+# 4d881c45770f40a09a91865a699977ae
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:12
+msgid ""
+"The compatibility mode allows old scripts to work in almost all cases, "
+"but with a warning."
+msgstr ""
+
+# d41e76f89f924e589dbc84de5ec3ddad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:14
+msgid "See also :ref:`geompy_migration_page`"
+msgstr ""
+
+# 1efe6e67e0ec430eadb0271f23842008
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:16
+msgid "**Salome initialisation must always be done as shown below**"
+msgstr ""
+
+# 9c348713eaca4318bb1e2c2c225ab5d9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:18
+msgid "*salome_init()* can be invoked safely several times): ::"
+msgstr ""
+
+# d2d92cf52cb44cff8a02b8bf756b2955
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:24
+msgid "**smesh initialisation is modified.** the old mode (from dump): ::"
+msgstr ""
+
+# 6b5cd21311fa4798a3bf0f3d1a1f80f7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:31
+msgid "the new mode: ::"
+msgstr ""
+
+# 24b8a6c845ff4041b8f11283866191a8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:39
+msgid "**Of course,** from smesh import ***is no more possible.**"
+msgstr ""
+
+# 9b9222f01b9249849ac872974d58b652
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:41
+msgid "You have to explicitely write **smesh.some_method()**."
+msgstr ""
+
+# a7240003d98a46ae8ebf825bf077fd1c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:43
+msgid ""
+"**All algorithms have been transferred from the namespace **smesh** to "
+"the namespace **smeshBuilder**.**"
+msgstr ""
+
+# eec70a6104e74f0bb2f58d8b85be9b84
+# 17ef07996c744b0192b5e5ac93cb7df6
+# f8384e1dcbed4defbb18f5e607248983
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:45
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:72
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:100
+msgid "For instance: ::"
+msgstr ""
+
+# 1af4f091cd9045efba22b4b0858e269c
+# 04a637b826654124b013ac82d2507d5e
+# 4f13be19ae8a4447b7480725e6fb0502
+# 6720b8ab6d1e4a22a22784d6c1d87752
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:50
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:79
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:93
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:109
+msgid "is replaced by: ::"
+msgstr ""
+
+# 2186520416684b1f810a3bbcba6e641b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:55
+msgid ""
+"StdMeshers algorithms concerned are **REGULAR, PYTHON, COMPOSITE, "
+"MEFISTO, Hexa, QUADRANGLE, RADIAL_QUAD**."
+msgstr ""
+
+# ca97ecd8ffc74d798b1c512b44fb6b95
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:57
+msgid ""
+"SMESH Plugins provide such algorithms as: **NETGEN, NETGEN_FULL, "
+"FULL_NETGEN, NETGEN_1D2D3D, NETGEN_1D2D, NETGEN_2D, NETGEN_3D**."
+msgstr ""
+
+# 7d46f8f2323149b1868d0aa2c1e9a9db
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:59
+msgid ""
+"If you use DISTENE plugins, you also have **BLSURF, GHS3D, GHS3DPRL, "
+"Hexotic**."
+msgstr ""
+
+# 7bc97e73995041d68de5ade0778367a5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:61
+msgid ""
+"**Some variables were available in both namespaces **smesh** and "
+"**SMESH**."
+msgstr ""
+
+# e7f851707d834a95809cff62b1460dfb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:63
+msgid "Now they are available only in namespace **SMESH****."
+msgstr ""
+
+# 3711be03d0e14332b0fed16e6c91a35e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:65
+msgid ""
+"The dump function used only the namespace **SMESH**, so, if your script "
+"was built with the help of the dump function, it should be already OK in "
+"this respect."
+msgstr ""
+
+# 946aaace91cb49c58880a4716992f2bb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:70
+msgid "The most used variables concerned are:"
+msgstr ""
+
+# c8c14de4af5e49a2a06570f1d6887a46
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:69
+msgid "**NODE, EDGE, FACE, VOLUME, ALL.** **FT_xxx, geom_xxx, ADD_xxx...**"
+msgstr ""
+
+# a4b07f8af4e54fc4b398dfac4f308a0b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:87
+msgid ""
+"**The namespace **smesh.smesh** does not exist any more, use **smesh** "
+"instead.** For instance: ::"
+msgstr ""
+
+# f954da1e12334a6996f1ea8471dc8332
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:98
+msgid ""
+"**If you need to import a %SMESH Plugin explicitely, keep in mind that  "
+"they are now located in separate namespaces.**"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/smeshpy_interface.po b/doc/gui/locale/fr/LC_MESSAGES/smeshpy_interface.po
new file mode 100644 (file)
index 0000000..d2b333e
--- /dev/null
@@ -0,0 +1,295 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-03-30 11:57+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 7725fc981cc94de89acdccd2088f35a4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:5
+msgid "Python interface"
+msgstr ""
+
+# e19368b7f7a34dc48db2569dae7e5291
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:7
+msgid ""
+"Python API of SALOME Mesh module defines several classes that can be used"
+" for easy mesh creation and edition."
+msgstr ""
+
+# 6be23d95e5a44e398692170febb6d4cb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:10
+msgid "Documentation of SALOME %Mesh module Python API is available in two forms:"
+msgstr ""
+
+# 37a1e3ce35854a629095d7682fa27e60
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:12
+msgid ""
+":ref:`Structured documentation <modules_page>`, where all methods and "
+"classes are grouped by their functionality."
+msgstr ""
+
+# 03cd99fd95d94b309127b679dc6835d2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:14
+msgid ""
+":ref:`Linear documentation <genindex>` grouped only by classes, declared "
+"in the :mod:`smeshBuilder` and :mod:`StdMeshersBuilder` Python packages."
+msgstr ""
+
+# d710e9461bdc4f45a0faeea434abc341
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:16
+msgid ""
+"With SALOME 7.2, the Python interface for Mesh has been slightly modified"
+" to offer new functionality."
+msgstr ""
+
+# 66861809e6df468f8a3fef6ee7fdb292
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:18
+msgid ""
+"You may have to modify your scripts generated with SALOME 6 or older "
+"versions."
+msgstr ""
+
+# 7b5fb1f27d7b4cf1b515f027b0b9cc15
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:20
+msgid "Please see :ref:`smesh_migration_page`."
+msgstr ""
+
+# c35f8f8a860c4f199edbe17f196b75d0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:22
+msgid ""
+"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."
+msgstr ""
+
+# 38a66953850d4e8cb67317feb8d3ff49
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:25
+msgid ""
+"As soon as a mesh is created, it is possible to manage it via its own "
+"methods, described in class :class:`smeshBuilder.Mesh` documentation."
+msgstr ""
+
+# 65d27fa322db4233bb1d057c699932a6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:28
+msgid ""
+"Class :class:`smeshstudytools.SMeshStudyTools` provides several methods "
+"to manipulate mesh objects in Salome study."
+msgstr ""
+
+# ebfdbb9b5cb2423a80484d465b9bbda3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:30
+msgid "A usual workflow to generate a mesh on geometry is following:"
+msgstr ""
+
+# 7325e774da0e4d99bb2c0e18076b491e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:37
+msgid "Create an instance of :class:`smeshBuilder.smeshBuilder`:"
+msgstr ""
+
+# c9bb680e5d76433b8ddaa0121fc35150
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:39
+msgid "Create a :class:`smeshBuilder.Mesh` object:"
+msgstr ""
+
+# ee4c46ea575e486d88d054940aebcb2a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:53
+msgid ""
+"Create and assign :ref:`basic_meshing_algos_page` by calling "
+"corresponding methods of the mesh. If a sub-shape is provided as an "
+"argument, a :ref:`constructing_submeshes_page` is implicitly created on "
+"this sub-shape:"
+msgstr ""
+
+# c618faa4367a4977a3ed8ad425e6702b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:62
+msgid ""
+"Create and assign :ref:`about_hypo_page` by calling corresponding methods"
+" of algorithms:"
+msgstr ""
+
+# d18d0e12f0b44249a6529df2d07ebf10
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:68
+msgid ":ref:`compute_anchor` the mesh (generate mesh nodes and elements):"
+msgstr ""
+
+# 99bd87d2643a4cb685770112da7f5f42
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:70
+msgid ""
+"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."
+msgstr ""
+
+# 1e7aa4e79e8743afb20ebbf22a07fd3c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:76
+msgid ""
+"All methods of the Mesh Group can be found in "
+":ref:`tui_create_standalone_group` sample script."
+msgstr ""
+
+# a10ee356e3554a3d9df617d0b081f99c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:78
+msgid ""
+"An example below demonstrates usage of the Python API for 3d mesh "
+"generation and for retrieving information on mesh nodes and elements."
+msgstr ""
+
+# d35a364206ff45e99fea9dc0167a64ed
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:84
+msgid "Example of 3d mesh generation:"
+msgstr ""
+
+# 44c7b11cfd9c43b7a73072480ad32a85
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:88
+msgid "``3dmesh.py``"
+msgstr ""
+
+# a942d88c2ed943c5a6cbedf59a34c248
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:95
+msgid ":download:`../../../examples/3dmesh.py`"
+msgstr ""
+
+# fe6fd0e0d01f4ae8817e4275e0562c37
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:97
+msgid ""
+"Examples of Python scripts for Mesh operations are available by the "
+"following links:"
+msgstr ""
+
+# a0fef6efd55c42c1bd33865cada37134
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:100
+msgid ":ref:`tui_creating_meshes_page`"
+msgstr ""
+
+# a028be6d0d634101ad9b80da9ad0991f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:101
+msgid ":ref:`tui_defining_hypotheses_page`"
+msgstr ""
+
+# 70b167a57c9a40d385efc613ea487e2b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:102
+msgid ":ref:`tui_grouping_elements_page`"
+msgstr ""
+
+# dd96f10655c4490c8837571a81eff790
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:103
+msgid ":ref:`tui_filters_page`"
+msgstr ""
+
+# 838f3d1c63fc4ee6b15b18bcf913d3f1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:104
+msgid ":ref:`tui_modifying_meshes_page`"
+msgstr ""
+
+# b78563d5084e412a8f7069f85b629857
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:105
+msgid ":ref:`tui_transforming_meshes_page`"
+msgstr ""
+
+# 269060f5e2214b5ba0a890690f423ac2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:106
+msgid ":ref:`tui_viewing_meshes_page`"
+msgstr ""
+
+# 2014b65e70fa478ba342a7d0a68c9e1c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:107
+msgid ":ref:`tui_quality_controls_page`"
+msgstr ""
+
+# 4b599a1a794e4a8db2491c54a4da91a5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:108
+msgid ":ref:`tui_measurements_page`"
+msgstr ""
+
+# ed0c02dab98f4da19f0e54c062681f3f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:109
+msgid ":ref:`tui_work_on_objects_from_gui`"
+msgstr ""
+
+# e2883b7908054fdc94bad4f98b5fe582
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:110
+msgid ":ref:`tui_notebook_smesh_page`"
+msgstr ""
+
+# 1bd3f44f2ac4411c9288dc412be849c2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:111
+msgid ":ref:`tui_cartesian_algo`"
+msgstr ""
+
+# 6b1a4810574845b99cd0c0e08edcbc87
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:112
+msgid ":ref:`tui_use_existing_faces`"
+msgstr ""
+
+# cbb9ddbc6deb4a4b8919d92abf2cdda2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:113
+msgid ":ref:`tui_prism_3d_algo`"
+msgstr ""
+
+# a99f6683a95541dcb17ed36456920232
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:114
+msgid ":ref:`tui_generate_flat_elements_page`"
+msgstr ""
+
+# b6db276b1c9f4b77a10b39c00717905a
+#~ msgid ""
+#~ "`Structured documentation <smeshpy_doc/modules.html>`_,"
+#~ " where all methods and classes are"
+#~ " grouped by their functionality."
+#~ msgstr ""
+
+# 3f32cff184674840aa9cce12b5775f27
+#~ msgid ""
+#~ "`Linear documentation <smeshpy_doc/namespaces.html>`_ "
+#~ "grouped only by classes, declared in "
+#~ "the :ref:`smeshBuilder` and :ref:`StdMeshersBuilder`"
+#~ " Python packages."
+#~ msgstr ""
+
+# dd7b4ac9c12b4d698a16d1bfb393ac8c
+#~ msgid ""
+#~ "Class :ref:`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."
+#~ msgstr ""
+
+# c428e5aec6a94435a7a613fa1ec960c0
+#~ msgid ""
+#~ "As soon as a mesh is created, "
+#~ "it is possible to manage it via"
+#~ " its own methods, described in class"
+#~ " :ref:`smeshBuilder.Mesh` documentation."
+#~ msgstr ""
+
+# 4e0780af47564120b2a66ce3a8e5d8be
+#~ msgid ""
+#~ "Class :ref:`smeshstudytools.SMeshStudyTools` provides "
+#~ "several methods to manipulate mesh "
+#~ "objects in Salome study."
+#~ msgstr ""
+
+# fd6196348a2846818ded35ae61ab3a67
+#~ msgid "Create an instance of :ref:`smeshBuilder.smeshBuilder`:"
+#~ msgstr ""
+
+# 2fc22dfd6ae844e7863238ea9ace54cc
+#~ msgid "Create a :ref:`smeshBuilder.Mesh` object:"
+#~ msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/smoothing.po b/doc/gui/locale/fr/LC_MESSAGES/smoothing.po
new file mode 100644 (file)
index 0000000..4860f73
--- /dev/null
@@ -0,0 +1,171 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# cf863739826947af9d5afcf8234f8dbd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:5
+msgid "Smoothing"
+msgstr ""
+
+# bb7cd702e13844ddb03cec82ab9c100b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:7
+msgid ""
+"Smoothing is used to improve quality of 2D mesh by adjusting the "
+"locations of element corners (nodes)."
+msgstr ""
+
+# 13dc0622011041e4bab05ff7a8f83628
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:10
+msgid ""
+"Depending on the chosen method and mesh geometry the smoothing can "
+"actually decrease the quality of elements and even make some elements "
+"inverted."
+msgstr ""
+
+# 16a2487a3bc4496aa0ab9a6ece3c9708
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:12
+msgid "**To apply smoothing to the elements of your mesh:**"
+msgstr ""
+
+# 483fb050748343299fb6302f03c32beb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:14
+msgid ""
+"In the **Modification** menu select the **Smoothing** item or click "
+"**\"Smoothing\"** button in the toolbar."
+msgstr ""
+
+# 9f5239cae0c745a687cc6a9df2535e9f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:22
+msgid "The following dialog will appear:"
+msgstr ""
+
+# 71738abf09644a5c82cd7d8bc4157584
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:27
+msgid "In this dialog:"
+msgstr ""
+
+# fd285577c524466ab2a0d6c4ec048d7b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:33
+msgid "specify the IDs of the elements which will be smoothed:"
+msgstr ""
+
+# 2a839824672a4e628e2494ffdf22edf0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:30
+msgid ""
+"**Select the whole mesh, sub-mesh or group** activating this   check-box;"
+" or"
+msgstr ""
+
+# f0bde8cde7414d89bc826ed96165beca
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:31
+msgid ""
+"choose mesh elements with the mouse in the 3D Viewer. It is possible to "
+"select a whole area with a mouse frame; or"
+msgstr ""
+
+# e143ff5810be4cf996333aebbfb61219
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:32
+msgid ""
+"input the element IDs directly in **ID Elements** field. The selected "
+"elements will be highlighted in the viewer; or"
+msgstr ""
+
+# d8b74c25572e46c0b1a245bb3282e830
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:33
+msgid ""
+"apply Filters. **Set filters** button allows to apply a filter to the "
+"selection of elements. See more about filters in the "
+":ref:`filtering_elements` page."
+msgstr ""
+
+# 03072e4c5f31457d9b4709773d6a4f4d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:35
+msgid ""
+"define the **Fixed nodes ids** that should remain at their location "
+"during smoothing. If a mesh is built on a shape, the nodes built on its "
+"geometric edges are always fixed. If the smoothing is applied to a part "
+"of the mesh (a set of element), the nodes on boundary of the element set "
+"are also fixed. It is possible to additionally fix any other nodes. The "
+"fixed nodes can be selected manually or by filters, just as the smoothed "
+"elements."
+msgstr ""
+
+# 8fcee8a4a93a42dfbcf0369b67d8daa6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:45
+msgid "choose the **Smoothing Method:**"
+msgstr ""
+
+# c8c7f9549e154d41a136e05719fd44a1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:37
+msgid ""
+"**Laplacian** smoothing pulls a node toward the center of surrounding "
+"nodes directly connected to that node along an element edge."
+msgstr ""
+
+# b65c9f617819483cb2778248de268827
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:38
+msgid ""
+"**Centroidal** smoothing pulls a node toward the element-area-weighted "
+"centroid of the surrounding elements."
+msgstr ""
+
+# afdcfbb427914c1c8807f923b9da1d6d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:40
+msgid ""
+"Laplacian method will produce the mesh with the least element edge "
+"length. It is also the fastest method. Centroidal smoothing produces a "
+"mesh with more uniform element sizes."
+msgstr ""
+
+# d8ab06f77d1b4e7898f1b48f5db2fb62
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:47
+msgid ""
+"specify the **Iteration limit**. Both smoothing methods iterate through a"
+" number of steps to produce the resulting smoothed mesh. At each new step"
+" the smoothing is reevaluated with the updated nodal locations. This "
+"process continues till the limit of iterations has been exceeded, or till"
+" the aspect ratio of all element is less than or equal to the specified "
+"one."
+msgstr ""
+
+# ba154a3b732d4f2ebcb01a4656048055
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:48
+msgid ""
+"specify the  **Max. aspect ratio** - the target mesh quality at which the"
+" smoothing algorithm should stop the iterations."
+msgstr ""
+
+# db68d7b538f14d0a89465f7d3506878c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:49
+msgid ""
+"activate **in parametric space** check-box if it is necessary to improve "
+"the shape of faces in the parametric space of geometrical surfaces on "
+"which they are generated, else the shape of faces in the 3D space is "
+"improved that is suitable for **planar meshes only**."
+msgstr ""
+
+# 298db87c9f3143c4b46ed74e3792b3f6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:51
+msgid "Click **Apply** or **Apply and Close** button to confirm the operation."
+msgstr ""
+
+# df70b0e55764480c960f71872ec503dd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:66
+msgid "**See Also** a sample TUI Script of a :ref:`tui_smoothing` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/split_biquad_to_linear.po b/doc/gui/locale/fr/LC_MESSAGES/split_biquad_to_linear.po
new file mode 100644 (file)
index 0000000..57f12ba
--- /dev/null
@@ -0,0 +1,93 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# d586796a73ed444e91fca369f1699c42
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:5
+msgid "Split bi-quadratic into linear"
+msgstr ""
+
+# a79e0b1e063e46faa6f423c43a4aeaf7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:7
+msgid ""
+"This functionality allows to split bi-quadratic elements into linear ones"
+" without creation of additional nodes."
+msgstr ""
+
+# 4d26ed47efe84c3c9533d8445441be70
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:10
+msgid "So that"
+msgstr ""
+
+# 37150c27548e4b21a205806e6a919e44
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:12
+msgid "bi-quadratic triangle will be split into 3 linear quadrangles;"
+msgstr ""
+
+# 623375dedc9d4cdab7697d7cd9a3ae4d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:13
+msgid "bi-quadratic quadrangle will be split into 4 linear quadrangles;"
+msgstr ""
+
+# 53b082a4b9de48a39e252ed9b5a93567
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:14
+msgid "tri-quadratic hexahedron will be split into 8 linear hexahedra;"
+msgstr ""
+
+# ca05f179a444481ba31a54aa5c4b5b74
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:15
+msgid ""
+"quadratic segments adjacent to the split bi-quadratic element will be "
+"split into 2 liner segments."
+msgstr ""
+
+# 14a637e5ca384229857536f0a34c4720
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:23
+msgid "**To split bi-quadratic elements into linear:**"
+msgstr ""
+
+# bc78cab1ddad45aa81406b25c497ecd5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:25
+msgid ""
+"From the **Modification** menu choose the **Split bi-quadratic into "
+"linear** item or click **\"Split bi-quadratic into linear\"** button in "
+"the toolbar."
+msgstr ""
+
+# b11085bb6b954cff8ac5b193770c9e4f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:33
+msgid "The following dialog box shall appear:"
+msgstr ""
+
+# cacf4180b5b64f73967f535192bf0b59
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:39
+msgid ""
+"Select a mesh, groups or sub-meshes in the Object Browser or in the "
+"Viewer."
+msgstr ""
+
+# 90bbda9e43704bd085035d1d0e65bcfe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:40
+msgid "Click the **Apply** or **Apply and Close** button."
+msgstr ""
+
+# 5fe7f729cf444b5ea9d400310506ea7d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:42
+msgid "**See Also** a sample TUI Script of a :ref:`tui_split_biquad` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/split_to_tetra.po b/doc/gui/locale/fr/LC_MESSAGES/split_to_tetra.po
new file mode 100644 (file)
index 0000000..bb182de
--- /dev/null
@@ -0,0 +1,174 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 5ced8a22e99446e1929425f34c14a8bd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:5
+msgid "Splitting volumes"
+msgstr ""
+
+# 161468ab01824a379f8f38c80bbcbfe8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:7
+msgid ""
+"This operation allows to split either any volumic elements into "
+"tetrahedra or hexahedra into prisms. 2D mesh is modified accordingly."
+msgstr ""
+
+# 3be3b131b4254a848b106c3cf7a8fe0b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:10
+msgid "**To split volumes:**"
+msgstr ""
+
+# 9518d0279e39403996b11d7fb0592fa0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:12
+msgid "Select a mesh, a sub-mesh or a group."
+msgstr ""
+
+# 9a5a4b2dc7a54d8d8c02b9a77773857e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:13
+msgid ""
+"In the **Modification** menu select the **Split Volumes** item or click "
+"**\"Split Volumes\"** button in the toolbar."
+msgstr ""
+
+# fa9648623934432f8d6d7672ef4e1d12
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:21
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# 532312c11d1d483e9ce1eaac09b67f24
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:27
+msgid "First it is possible to select the type of operation:"
+msgstr ""
+
+# 8a298844755549faaebcafd5b4bfa0a6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:29
+msgid ""
+"If **Tetrahedron** button is checked, the operation will split volumes of"
+" any type into tetrahedra."
+msgstr ""
+
+# 188be37713044e6a916bff37d0175f52
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:30
+msgid ""
+"If **Prism** button is checked, the operation will split hexahedra into "
+"prisms."
+msgstr ""
+
+# 3983a3aca6ed42d0a26e14b1eb9cd2ee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:32
+msgid ""
+"The main list contains the list of volumes to split. You can click on a "
+"volume in the 3D viewer and it will be highlighted (lock Shiftkeyboard "
+"button to select several volumes). Click **Add** button and the ID of "
+"this volume will be added to the list. To remove the selected element or "
+"elements from the list click **Remove** button. **Sort list** button "
+"allows to sort the list of IDs. **Filter** button allows applying a "
+"filter to the selection of volumes."
+msgstr ""
+
+# 4e01a89b8a3f450b93f926f6a978920c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:32
+msgid ""
+"**Note:** If you split not all adjacent non-tetrahedral volumes, your "
+"mesh becomes non-conform."
+msgstr ""
+
+# c38851c3c8f040b79ca92f7ead84fdbc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:34
+msgid ""
+"**Apply to all** radio button allows splitting all volumes of the "
+"currently selected mesh."
+msgstr ""
+
+# 237dc4f1a004445090614c601e1dd507
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:35
+msgid ""
+"If **Tetrahedron** element type is selected, **Split hexahedron** group "
+"allows specifying the number of tetrahedra  a hexahedron will be split "
+"into. If the chosen method does not allow to get a conform mesh, a "
+"generic solution is applied: an additional node is created at the gravity"
+" center of a hexahedron, serving an apex of tetrahedra, all quadrangle "
+"sides of the hexahedron are split into two triangles each serving a base "
+"of a new tetrahedron."
+msgstr ""
+
+# 35acacf4c9914c8a9e33abbb4a310ed7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:37
+msgid ""
+"If **Prism** element type is selected, the **Split hexahedron** group "
+"looks as follows:"
+msgstr ""
+
+# 2f1f7ea0b6ca43bc8ab8498ca5be93d9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:42
+msgid ""
+"**Into 2 (or 4) prisms** allows to specify the number of prisms a "
+"hexahedron will be split into."
+msgstr ""
+
+# f97d3214db0b40e098fa20434d79a41f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:43
+msgid ""
+"**Facet to split** group allows to specify the side (facet) of the "
+"hexahedron, which is split into triangles.  This facet is defined by a "
+"point and a direction. The algorithm finds a hexahedron closest to the "
+"specified point and splits a facet whose normal is closest to the "
+"specified direction. Then the splitting is propagated from that "
+"hexahedron to all adjacent hexahedra. The point and the direction by "
+"which the first split hexahedron is found can be specified:"
+msgstr ""
+
+# 2b05df53bb2f41c7b4feabdfdc3834b4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:45
+msgid ""
+"by input of coordinates in **Hexa location** and **Facet normal** fields,"
+" or"
+msgstr ""
+
+# e7b249c8747f4ff88bd4cc7ccc471e19
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:46
+msgid ""
+"by clicking **Selection** button and selecting in the viewer the element "
+"whose barycenter will be used as the start point and whose direction will"
+" be used as a normal to facet to split into triangles. Switch this button"
+" off to return to selection of volumes to split."
+msgstr ""
+
+# c716df95dcc34b5bb724cfcff649cf15
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:49
+msgid ""
+"If **All domains** option is off, the operation stops when all hehexedra "
+"adjacent to the start hexahedron are split into prisms. Else the "
+"operation tries to continue splitting starting from  another hexahedron "
+"closest to the **Hexa location**."
+msgstr ""
+
+# 0c9bafdf99364a47b9d613fb3614babc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:51
+msgid ""
+"**Select from** set of fields allows choosing a sub-mesh or an existing "
+"group whose elements will be added to the list as you click **Add** "
+"button."
+msgstr ""
+
+# 35a61cc562064cf08d1071a0936d2e5f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:54
+msgid "Click **Apply** or **Apply and Close** button to confirm the operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/symmetry.po b/doc/gui/locale/fr/LC_MESSAGES/symmetry.po
new file mode 100644 (file)
index 0000000..8b8bae5
--- /dev/null
@@ -0,0 +1,194 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 4495625b73cb4025b5a466244ef3545c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:5
+msgid "Symmetry"
+msgstr ""
+
+# 4324e7ba74fe4f4e9a31f68950b412ef
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:7
+msgid ""
+"This geometrical operation allows to perform a symmetrical copy of your "
+"mesh or some of its elements."
+msgstr ""
+
+# 38426ec597c644cdb149162d515565e7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:9
+msgid "**To create a symmetrical copy:**"
+msgstr ""
+
+# 90098b12a4484472b188b7c4b5d80f61
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:11
+msgid ""
+"From the **Modification** menu choose **Transformation** -> **Symmetry** "
+"item  or click **\"Symmetry\"** button in the toolbar."
+msgstr ""
+
+# c2192cf2b3104e51b1ec178cfcc33eca
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:19
+msgid "One of the following dialogs will appear:"
+msgstr ""
+
+# 6b97037715704d8b96de0d25714c7bd5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:21
+msgid "It is possible to mirror a mesh or some of its elements through:"
+msgstr ""
+
+# 16cbf169672d463aa4aff02bf6840d6a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:43
+msgid "In the dialog:"
+msgstr ""
+
+# 89f61de1a46d49e08683ce60e41adf14
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:45
+msgid "specify the elements for the symmetry operation:"
+msgstr ""
+
+# 84857591a5f14ff3b49d88767e9f3f70
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:47
+msgid "**Select the whole mesh, submesh or group** activating this checkbox; or"
+msgstr ""
+
+# 7350982923864549b09f2d934160d037
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:48
+msgid ""
+"choose mesh elements with the mouse in the 3D Viewer. It is possible to "
+"select a whole area with a mouse frame; or"
+msgstr ""
+
+# fc3c522656574fdc938cd8560bc79b70
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:49
+msgid ""
+"input the element IDs directly in **ID Elements** field. The selected "
+"elements will be highlighted in the viewer; or"
+msgstr ""
+
+# 450994fc16c540168b6510532d3ade39
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:50
+msgid ""
+"apply Filters. **Set Filter** button allows to apply a "
+":ref:`filtering_elements` to the selection of elements."
+msgstr ""
+
+# f12b0236f21043c497f5f21ab103c4b8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:52
+msgid "depending on the nature of the mirror object:"
+msgstr ""
+
+# de42fe2fb04e4075b107992b4110df63
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:54
+msgid ""
+"if the mesh is mirrored through a point, specify the coordinates of the "
+"point, either directly or by picking a mesh node;"
+msgstr ""
+
+# 5215fb214ebd4fafb07b7c895edb6779
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:55
+msgid "if the mesh is mirrored through an axis:"
+msgstr ""
+
+# ca48af00155246339b411be28ecc179c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:57
+msgid ""
+"specify the coordinates of the start **Point** of the axis, either "
+"directly or by picking a mesh node;"
+msgstr ""
+
+# e36dc9065bda496aa51f61690433ebf6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:58
+msgid ""
+"specify the components of axis **Vector**, either directly or by picking "
+"a mesh node, in which case **Vector** is defined as a shift between the "
+"**Point** and the node;"
+msgstr ""
+
+# 222bbbf63b054017a6c41f559a50091e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:60
+msgid "if the mesh is mirrored through a plane:"
+msgstr ""
+
+# 18c4e2831a664228a6cc1cfbb08b828a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:62
+msgid ""
+"specify the cooordinates of the **Point** lying on the plane, either "
+"directly or by picking a mesh node;"
+msgstr ""
+
+# 9c1030fb3b694be2990ff40dc9342549
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:63
+msgid ""
+"specify the components of plane **Normal**, either directly or by picking"
+" a mesh node, in which case **Normal** is defined as a shift between the "
+"**Point** and the node."
+msgstr ""
+
+# fa13c8ac163b43b8b635749c980776a7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:65
+msgid "specify the conditions of symmetry operation:"
+msgstr ""
+
+# 22cb4b2735b14e3586b6f6e9e7fd3eff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:67
+msgid ""
+"activate **Move elements** radio button to change the location of the "
+"selected elements within the current mesh;"
+msgstr ""
+
+# 3ab6e1c74a3f4f4e95f87d21771484d7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:68
+msgid ""
+"activate **Copy elements** radio button to duplicate the selected "
+"elements at the new location within the current mesh;"
+msgstr ""
+
+# a591b9e839b84c9b9135eead5e85c774
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:69
+msgid ""
+"activate **Create as new mesh** radio button to create a new element in a"
+" new mesh; the new mesh appears in the Object Browser with the default "
+"name *MeshName_mirrored* (it is possible to change this name in the "
+"adjacent box);"
+msgstr ""
+
+# 5b254aa14c8f4a2381180807178f35e1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:70
+msgid ""
+"activate **Copy groups** check-box to put new mesh entities into new "
+"groups if source entities belong to some groups. New groups are named by "
+"pattern \"<old group name>_mirrored\"."
+msgstr ""
+
+# b1eefa9952644c5fa320845ea76897c1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:72
+msgid ""
+"activate **Preview** check-box to show the result of transformation in "
+"the viewer;"
+msgstr ""
+
+# 0fd36d39dee749ae8096f328ed19a2c4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:73
+msgid "click **Apply** or **Apply and Close** button to confirm the operation."
+msgstr ""
+
+# 9aa5cbd5e7e14b8c80772fb57302e4b0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:76
+msgid "**See Also** a sample TUI Script of a :ref:`tui_symmetry` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/taper.po b/doc/gui/locale/fr/LC_MESSAGES/taper.po
new file mode 100644 (file)
index 0000000..40c5433
--- /dev/null
@@ -0,0 +1,60 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 1e9adeaeeb69425190fd407c57902106
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/taper.rst:5
+msgid "Taper"
+msgstr ""
+
+# acc7190b275949bdaf6613e0746e8768
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/taper.rst:7
+msgid ""
+"**Taper** mesh quality criterion represents the ratio of the areas of two"
+" triangles separated by a diagonal within a quadrilateral face."
+msgstr ""
+
+# 93b0ace8bda64797befdae8e2cdd5db3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/taper.rst:15
+msgid "**To apply the Taper quality criterion to your mesh:**"
+msgstr ""
+
+# a35ceea825514a66b121967bc551392d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/taper.rst:18
+msgid "Display your mesh in the viewer."
+msgstr ""
+
+# e6cd91a111394cf7b566db11dda7bdd4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/taper.rst:20
+msgid ""
+"Choose **Controls > Face Controls > Taper** or click **\"Taper\"** button"
+" in the toolbar."
+msgstr ""
+
+# 2677c0963ced4dde8c75b0f45a239179
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/taper.rst:28
+msgid ""
+"Your mesh will be displayed in the viewer with its elements colored "
+"according to the applied mesh quality control criterion:"
+msgstr ""
+
+# 2fadca0282f24f0a8b28aa8f8a523ec7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/taper.rst:33
+msgid "**See Also** a sample TUI Script of a :ref:`tui_taper` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tools.po b/doc/gui/locale/fr/LC_MESSAGES/tools.po
new file mode 100644 (file)
index 0000000..c6d0a56
--- /dev/null
@@ -0,0 +1,93 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-03-30 11:57+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 56e312b0b9ca4fec801e76b102adbded
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:5
+msgid "Plugins"
+msgstr ""
+
+# 3869fe6e56ac4d7ca27466f43db495c5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:7
+msgid "The following plugins are accessible via **Mesh > SMESH pligins** menu:"
+msgstr ""
+
+# 4f7e61b2f3fb48d49a67587f7d529251
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:9
+msgid "`SpherePadder plugin <padder/padder_userguide_page.html>`_"
+msgstr ""
+
+# f491ec8ce78e4bf3849a4ff917fed902
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:10
+msgid "`MGSurfOpt plugin <yams/index.html>`_"
+msgstr ""
+
+# 58834d6718ff41e28c03a8c81404df2b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:11
+msgid "`MGCleaner plugin <MGCleaner/index.html>`_"
+msgstr ""
+
+# 740188c95c2149328d0f10436c729bfa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:12
+msgid "`Z-cracks plugin <zcracks/index.html>`_"
+msgstr ""
+
+# 91996358c5b946a996f799f67137ba66
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:13
+msgid "`MacMesh plugin <MacMesh/index.html>`_"
+msgstr ""
+
+# 68e16d5249224110896773bcf00e7d7f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:14
+msgid "`blocFissure plugin <blocFissure/index.html>`_"
+msgstr ""
+
+# 83082468774a410fbb9c226c936030d6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:15
+msgid ""
+"**MeshCut plugin** - allows to cut a mesh constituted of linear "
+"tetrahedrons by a plane."
+msgstr ""
+
+# 75fbba71f4824fa380aca3c52beceeb7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:16
+msgid ""
+"**Get min or max value of control** - a sample plugin whose sources are "
+"located in **${GUI_ROOT_DIR}/share/salome/plugins/gui/demo** directory "
+"(files **minmax_plugin.py, minmax_ui.py and smesh_plugins.py**). You can "
+"find a detailed description of how to create your own plugin in "
+"documentation: **Help > User's Guide > GUI module > How-To's and Best "
+"Practices > Extend SALOME gui functions using python plugins**."
+msgstr ""
+
+# 4d26001be73042a6a7bb055871fa8cd1
+#~ msgid ""
+#~ "**Get min or max value of "
+#~ "control** - a sample plugin whose "
+#~ "sources are located in "
+#~ "**${GUI_ROOT_DIR}/share/salome/plugins/gui/demo** directory "
+#~ "(files **minmax_plugin.py, minmax_ui.py and "
+#~ "smesh_plugins.py**). You can find a "
+#~ "detailed description of how to create"
+#~ " your own plugin in documentation: "
+#~ "**Help > GUI module > User's Guide"
+#~ " > How-To's and Best Practices "
+#~ "> Extend SALOME gui functions using "
+#~ "python plugins**."
+#~ msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/translation.po b/doc/gui/locale/fr/LC_MESSAGES/translation.po
new file mode 100644 (file)
index 0000000..98a8065
--- /dev/null
@@ -0,0 +1,164 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 75143c8f4ac24570b02ae570d98ebd8b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:5
+msgid "Translation"
+msgstr ""
+
+# 93c59c012b8b4dbdb7476e2bdb1a779c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:7
+msgid ""
+"This geometrical operation allows to translate in space your mesh or some"
+" of its elements."
+msgstr ""
+
+# 06a73bd5a2034b8cb1083af72bad5396
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:10
+msgid "**To translate a mesh:**"
+msgstr ""
+
+# 0f9894f7613c48f8a356e21b4b772af9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:13
+msgid ""
+"From the **Modification** menu choose **Transformation** -> "
+"**Translation** item  or click **\"Translation\"** button in the toolbar."
+msgstr ""
+
+# b49ca4f6f8e349fa9400daf310f25a91
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:20
+msgid "One of the following dialogs will appear:"
+msgstr ""
+
+# 0d622382a5c244b79da86c37666a6bf1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:22
+msgid "It is possible to define the vector of thanslation:"
+msgstr ""
+
+# 7d2a29725e014f1bbd35da276cf2a0a3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:40
+msgid "In the dialog:"
+msgstr ""
+
+# fc5fe749adf2467abb7947060196777a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:42
+msgid "specify the IDs of the translated elements:"
+msgstr ""
+
+# c3444551d6f94cef954e14b46145a9bb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:44
+msgid "**Select the whole mesh, submesh or group** activating this checkbox; or"
+msgstr ""
+
+# d4d02adeac94491490a871185d70d5c7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:45
+msgid ""
+"choose mesh elements with the mouse in the 3D Viewer. It is possible to "
+"select a whole area with a mouse frame; or"
+msgstr ""
+
+# 953b8e912c08437691eff171d251eb09
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:46
+msgid ""
+"input the element IDs directly in **ID Elements** field. The selected "
+"elements will be highlighted in the viewer; or"
+msgstr ""
+
+# 9456f6f145994a4bb8ae5a4a20c80315
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:47
+msgid ""
+"apply Filters. **Set filter** button allows to apply a filter to the "
+"selection of elements. See more about filters in the "
+":ref:`selection_filter_library_page` page."
+msgstr ""
+
+# 8dd408c797fa4ce4b919ecfa336780f4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:49
+msgid "specify the vector of translation:"
+msgstr ""
+
+# 9e4ae19820a649ce9fb3cb41fdd7121d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:51
+msgid ""
+"specify the cooordinates of the start and end **Points** of the vector of"
+" translation; or"
+msgstr ""
+
+# 46e58c1328164c1b81199b513dbfdbe2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:52
+msgid ""
+"specify the end point of the **Vector** of rotation starting at the "
+"origin of coordinates."
+msgstr ""
+
+# 6b3b130a76d945a49e5fa53d4b66f3be
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:54
+msgid "specify the conditions of translation:"
+msgstr ""
+
+# cbed019014ff4141897955812061d1aa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:56
+msgid ""
+"activate **Move elements** radio button to create  the source mesh (or "
+"elements) at the new location and erase it from the previous location;"
+msgstr ""
+
+# ecef7d6a928e4a8ca1b1547adfdecfa1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:57
+msgid ""
+"activate **Copy elements** radio button to create the source mesh (or "
+"elements) at the new location, but leave it at the previous location, the"
+" source mesh will be considered one and single mesh with the result of "
+"the rotation;"
+msgstr ""
+
+# d1597b6481b742289939aefe62ed456e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:58
+msgid ""
+"activate **Create as new mesh** radio button to leave the source mesh (or"
+" elements) at its previous location and create a new mesh at the new "
+"location, the new mesh appears in the Object Browser with the default "
+"name MeshName_rotated (it is possible to change this name in the adjacent"
+" box);"
+msgstr ""
+
+# c00a18b1722c4bc795fd8937fcb76b0c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:59
+msgid ""
+"activate **Copy groups** checkbox to copy the groups of elements of the "
+"source mesh to the newly created mesh."
+msgstr ""
+
+# 12be0e834c254830b6c24235bdeb8a5c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:61
+msgid ""
+"activate **Preview** checkbox to show the result of transformation in the"
+" viewer"
+msgstr ""
+
+# 24a911c5c6bd43339186c416b5c14a66
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:62
+msgid "click **Apply** or **Apply and Close** button to confirm the operation."
+msgstr ""
+
+# 6059d279ae784f7e82d2450c6f3ece6e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:64
+msgid "**See Also** a sample TUI Script of a :ref:`tui_translation` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/transparency.po b/doc/gui/locale/fr/LC_MESSAGES/transparency.po
new file mode 100644 (file)
index 0000000..66ad5fd
--- /dev/null
@@ -0,0 +1,32 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 734d33d6daf841319c601b02886e6ad4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/transparency.rst:5
+msgid "Transparency"
+msgstr ""
+
+# e9d0a36f1b09490895f9636e2b95ec19
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/transparency.rst:10
+msgid ""
+"Using this slider you can set the transparency of shading. Absolutely "
+"transparent shading will be invisible. By default it is absolutely "
+"opaque."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tui_cartesian_algo.po b/doc/gui/locale/fr/LC_MESSAGES/tui_cartesian_algo.po
new file mode 100644 (file)
index 0000000..614e24c
--- /dev/null
@@ -0,0 +1,39 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 180ddd91e3f14cbb8f6d62fc133a1ea9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_cartesian_algo.rst:4
+msgid "Body Fitting algorithm"
+msgstr ""
+
+# 40444fa973b44a7882e66a58c21dcc98
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_cartesian_algo.rst:6
+msgid "Usage of Body Fitting algorithm"
+msgstr ""
+
+# dae7c3c0de1641d1942ce8c46b5c10fb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_cartesian_algo.rst:10
+msgid "``cartesian_algo.py``"
+msgstr ""
+
+# e943416703384b49abd17b441a843bbe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_cartesian_algo.rst:16
+msgid ":download:`../../../examples/cartesian_algo.py`"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tui_creating_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/tui_creating_meshes.po
new file mode 100644 (file)
index 0000000..df01cf8
--- /dev/null
@@ -0,0 +1,179 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# ac7a0717f8d244518fa5fdabb38d07a5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:5
+msgid "Creating Meshes"
+msgstr ""
+
+# bb16f582ea84425180580fe14a31dc7e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:0
+msgid "`Table of contents`"
+msgstr ""
+
+# a6fa7546f4304831afd82d7d973db5ee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:10
+msgid ""
+"First of all see :ref:`example_3d_mesh` which is an example of good "
+"python script style for Mesh module."
+msgstr ""
+
+# 10eb5418949b42d09800a5c5e5a60fea
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:16
+msgid "Construction of a mesh"
+msgstr ""
+
+# 3f8be4bf1559421eb86a9ba1c944f985
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:21
+msgid "``creating_meshes_ex01.py``"
+msgstr ""
+
+# c92155e4983449c891131ed76749a221
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:27
+msgid ":download:`../../../examples/creating_meshes_ex01.py`"
+msgstr ""
+
+# 0b8281da12364d20bd26c2ff83899a71
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:32
+msgid "Construction of a sub-mesh"
+msgstr ""
+
+# 908b408a0c6d408f9cbebfbdad49d29c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:36
+msgid "``creating_meshes_ex02.py``"
+msgstr ""
+
+# 71d9105b47334a78a9a0db0fb8e468d1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:42
+msgid ":download:`../../../examples/creating_meshes_ex02.py`"
+msgstr ""
+
+# 374235b8f4c349c0a0f884e508cff43b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:47
+msgid "Change priority of sub-meshes in mesh"
+msgstr ""
+
+# 899cddf7981f4888bf1929dc3d285162
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:51
+msgid "``creating_meshes_ex03.py``"
+msgstr ""
+
+# 2fbbf9873faa407093dd86037f815dda
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:57
+msgid ":download:`../../../examples/creating_meshes_ex03.py`"
+msgstr ""
+
+# ac6d03ebb48e4fb69088a0271120f6bb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:62
+msgid "Intermediate edition while meshing"
+msgstr ""
+
+# 480c7f03907e45608baf3c8e69f43cee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:66
+msgid "``a3DmeshOnModified2Dmesh.py``"
+msgstr ""
+
+# 5cc05800014640b28dd743f6e7453555
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:72
+msgid ":download:`../../../examples/a3DmeshOnModified2Dmesh.py`"
+msgstr ""
+
+# e8ad1f4ee33c4d479cb915a35b3c3db7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:77
+msgid "Editing a mesh (i.e. changing hypotheses)"
+msgstr ""
+
+# 0c9b1c653fbe47c8b09369d8538b5d39
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:81
+msgid "``creating_meshes_ex04.py``"
+msgstr ""
+
+# 61662db532d5409ca59109471d35c39b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:87
+msgid ":download:`../../../examples/creating_meshes_ex04.py`"
+msgstr ""
+
+# 039432eb7ae9487d8963efc909074762
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:92
+msgid "Export of a Mesh"
+msgstr ""
+
+# 74bc2143ea7a4a4fb94f0a1467012412
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:96
+msgid "``creating_meshes_ex05.py``"
+msgstr ""
+
+# c22c9248148a406aa90e16b4494dcdf3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:102
+msgid ":download:`../../../examples/creating_meshes_ex05.py`"
+msgstr ""
+
+# fed234c83c27471b9051943f5378ca7e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:107
+msgid "How to mesh a cylinder with hexahedrons?"
+msgstr ""
+
+# 8d943c45953b4d419189795e070d3273
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:109
+msgid ""
+"Here you can see an example of python script, creating a hexahedral mesh "
+"on a cylinder. A picture below the source code of the script demonstrates"
+" the resulting mesh."
+msgstr ""
+
+# 2c383dd4995a48fdaf36d733606a42bc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:115
+msgid "``creating_meshes_ex06.py``"
+msgstr ""
+
+# 234f1450fee5488e965a8d6af376ff9f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:121
+msgid ":download:`../../../examples/creating_meshes_ex06.py`"
+msgstr ""
+
+# 72c01e65c6b84985a2f7548177ef0311
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:130
+msgid "Building a compound of meshes"
+msgstr ""
+
+# 3ff8a1b66bb64251836650a5b055e884
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:134
+msgid "``creating_meshes_ex07.py``"
+msgstr ""
+
+# a3219b112b1e4381acb12a727c6bce58
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:140
+msgid ":download:`../../../examples/creating_meshes_ex07.py`"
+msgstr ""
+
+# 4178a3e999b946abacb53ffa58e450c9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:145
+msgid "Mesh Copying"
+msgstr ""
+
+# 3d65fb2f3e2740c8b97c371fd2a6e051
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:149
+msgid "``creating_meshes_ex08.py``"
+msgstr ""
+
+# d7f57c79ef0f45ae9325384ff3226f49
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:155
+msgid ":download:`../../../examples/creating_meshes_ex08.py`"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tui_defining_hypotheses.po b/doc/gui/locale/fr/LC_MESSAGES/tui_defining_hypotheses.po
new file mode 100644 (file)
index 0000000..bbf304e
--- /dev/null
@@ -0,0 +1,411 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# fef0008953ff493596317de50d9af198
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:5
+msgid "Defining Hypotheses and Algorithms"
+msgstr ""
+
+# c2761b3cd6e847e284c642207a9dbae4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:7
+msgid ""
+"This page provides example codes of :ref:`tui_defining_meshing_algos` "
+"\"defining algorithms\" and hypotheses."
+msgstr ""
+
+# c9e1c1c60edb4751a3db653b97a21c87
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:10
+msgid "Wire discretisation 1D algorithm"
+msgstr ""
+
+# 344303a5cba04a3985a3355bbe1d6e38
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:12
+msgid ":ref:`tui_1d_adaptive` hypothesis"
+msgstr ""
+
+# 1035ff9af9b8425a8c48f39ac5e2ce00
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:13
+msgid ":ref:`tui_1d_arithmetic` hypothesis"
+msgstr ""
+
+# 4b851dd0ec06429d8e0a533db3975b81
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:14
+msgid ":ref:`tui_deflection_1d` hypotheses"
+msgstr ""
+
+# c27b16f572ff4412b14a330c42389c1c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:15
+msgid ":ref:`tui_start_and_end_length` hypotheses"
+msgstr ""
+
+# ed963d98d21b4aefaf2bda832c09bd0b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:16
+msgid ":ref:`tui_average_length`"
+msgstr ""
+
+# 748167c82d78473ea526f4e8d8c2d3ec
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:17
+msgid ":ref:`tui_propagation` additional hypothesis"
+msgstr ""
+
+# 29d0006192824915a840be1e7d8ae177
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:18
+msgid ":ref:`tui_fixed_points` hypothesis"
+msgstr ""
+
+# 65a07e23b54b4b28a44b18cee2f6eb18
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:21
+msgid "Triangle: Mefisto 2D algorithm"
+msgstr ""
+
+# 88b6fff7e253450eb7ea36fb2fe5445d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:23
+msgid ":ref:`tui_max_element_area` hypothesis"
+msgstr ""
+
+# 9660d4c455c8431995e1af311aed3eff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:24
+msgid ":ref:`tui_length_from_edges` hypothesis"
+msgstr ""
+
+# 286dfd3e3ac64755bf7c7f8352d83af0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:27
+msgid "NETGEN 3D algorithm"
+msgstr ""
+
+# ea8cdcd73ac04ef382c07aeb47336de2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:29
+msgid ":ref:`tui_max_element_volume` hypothesis"
+msgstr ""
+
+# 97b45786031b4464b8e918b006ed31a3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:30
+msgid ":ref:`tui_viscous_layers`"
+msgstr ""
+
+# d3fa46618ba3491182a63f8f3e36991d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:33
+msgid ":ref:`tui_projection`"
+msgstr ""
+
+# e2a68a4edf124db7ab3fdc6cb0f2fd9e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:34
+msgid ":ref:`tui_radial_quadrangle` algorithm"
+msgstr ""
+
+# ee80908dfbfb41cf9a458f3a733b3b9d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:35
+msgid "Quadrangle: Mapping 2D algorithm"
+msgstr ""
+
+# eb5627bfc52d4e7ea8ed4b488b5ff940
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:37
+msgid ":ref:`tui_quadrangle_parameters` hypothesis"
+msgstr ""
+
+# 7ba0bfac54614d77bb0afac0d3886ae8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:40
+msgid ":ref:`tui_import` from Another Mesh\" algorithm"
+msgstr ""
+
+# 9135b65a44554235a1fb725ebbd7e9b6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:45
+msgid "Defining 1D Hypotheses"
+msgstr ""
+
+# d379efca0bc04b01a9f0d9aa9cc26361
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:52
+msgid "Arithmetic Progression and Geometric Progression"
+msgstr ""
+
+# 2ea89443e3804bc5913ae6a42272dbef
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:56
+msgid "``defining_hypotheses_ex01.py``"
+msgstr ""
+
+# 8c40e54d62834623b01e282b9b4f53aa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:62
+msgid ":download:`../../../examples/defining_hypotheses_ex01.py`"
+msgstr ""
+
+# 865233d5ffe541189bcf7f275e045c6b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:67
+msgid "Adaptive"
+msgstr ""
+
+# 52d08d7e4014430eaa0126397b6304fe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:71
+msgid "``defining_hypotheses_adaptive1d.py``"
+msgstr ""
+
+# 32df2bbad47248d1a27591bbfdb558f6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:77
+msgid ":download:`../../../examples/defining_hypotheses_adaptive1d.py`"
+msgstr ""
+
+# 4fc2284ef7bd47729a90b2baa918b58f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:83
+msgid "Deflection and Number of Segments"
+msgstr ""
+
+# 3457de0a170e4f51b5a38950cb33a7d6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:87
+msgid "``defining_hypotheses_ex02.py``"
+msgstr ""
+
+# fbf4cb07dde24d8d902b4411cd68adca
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:93
+msgid ":download:`../../../examples/defining_hypotheses_ex02.py`"
+msgstr ""
+
+# 4133a0078c2947e98e1a23eaa1214723
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:99
+msgid "Start and End Length"
+msgstr ""
+
+# 1d6528b2e1674de2ba414b87b4be3089
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:103
+msgid "``defining_hypotheses_ex03.py``"
+msgstr ""
+
+# 30db29e648d244e2a8132ff959c7e407
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:109
+msgid ":download:`../../../examples/defining_hypotheses_ex03.py`"
+msgstr ""
+
+# d8ffb18c8207454eb0e4c8dee64df112
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:115
+msgid "Local Length"
+msgstr ""
+
+# 598f4c31b8574891a0965e55e70866c6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:119
+msgid "``defining_hypotheses_ex04.py``"
+msgstr ""
+
+# a0766eac8a974673842c45660f8cdef5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:125
+msgid ":download:`../../../examples/defining_hypotheses_ex04.py`"
+msgstr ""
+
+# 0e8b365ab8ab4d8fb15e5d2ea9b405b4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:128
+msgid "Defining 2D and 3D hypotheses"
+msgstr ""
+
+# 89800fec137147feb01f7d9ee2d09b2f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:134
+msgid "Maximum Element Area"
+msgstr ""
+
+# 5d20cdabae6d4f7785dfd0505ff8bd0e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:138
+msgid "``defining_hypotheses_ex05.py``"
+msgstr ""
+
+# d65f02a1247c4ad5b511199a2224afea
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:144
+msgid ":download:`../../../examples/defining_hypotheses_ex05.py`"
+msgstr ""
+
+# aed2c2c8c4534e8ba031bbb04c0b1c1e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:150
+msgid "Maximum Element Volume"
+msgstr ""
+
+# a99e22f6a36f465f92b39f281cb5374d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:154
+msgid "``defining_hypotheses_ex06.py``"
+msgstr ""
+
+# deda9ab5387443659f0e9560218d1715
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:160
+msgid ":download:`../../../examples/defining_hypotheses_ex06.py`"
+msgstr ""
+
+# a65055b4628340938008c65a533013ef
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:166
+msgid "Length from Edges"
+msgstr ""
+
+# 6de5dfa06ff54c19a898663e34448044
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:170
+msgid "``defining_hypotheses_ex07.py``"
+msgstr ""
+
+# 4c857ba35cdf4cf8a1124e7ec6156cba
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:176
+msgid ":download:`../../../examples/defining_hypotheses_ex07.py`"
+msgstr ""
+
+# 1b5eeb8e22c6416e97c9f0d5603ab0a8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:179
+msgid "Defining Additional Hypotheses"
+msgstr ""
+
+# d7e5a198618a4d81842e05f5dc7a0d9a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:184
+msgid "Propagation"
+msgstr ""
+
+# e5fa3c56469742528a05851b980f65c2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:188
+msgid "``defining_hypotheses_ex08.py``"
+msgstr ""
+
+# 3250b509d75a4ee89b947cc9028a59d3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:194
+msgid ":download:`../../../examples/defining_hypotheses_ex08.py`"
+msgstr ""
+
+# eb1e47f19f8544ffb91f05b2af1ee246
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:200
+msgid "Defining Meshing Algorithms"
+msgstr ""
+
+# beb05965953640b2a8e7be99a2011ae7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:204
+msgid "``defining_hypotheses_ex09.py``"
+msgstr ""
+
+# ce043d0aabab4e09bfae6e5f93bc499f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:210
+msgid ":download:`../../../examples/defining_hypotheses_ex09.py`"
+msgstr ""
+
+# f908d90100b342378143b7fb5a37cbde
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:216
+msgid "Projection Algorithms"
+msgstr ""
+
+# 0165bd13c2354adb88815bc8bc4f8f55
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:220
+msgid "``defining_hypotheses_ex10.py``"
+msgstr ""
+
+# 5a0fd55a3dfe46fa849ddcb9f6e9e947
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:226
+msgid ":download:`../../../examples/defining_hypotheses_ex10.py`"
+msgstr ""
+
+# ec37fa753ca144bc8cc78a6a23dabe49
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:229
+msgid "Projection 1D2D"
+msgstr ""
+
+# d73ecba8b9a14a23905217b1b85639e2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:233
+msgid "``defining_hypotheses_ex11.py``"
+msgstr ""
+
+# 67392b0373064c3987a2ba0589613aec
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:239
+msgid ":download:`../../../examples/defining_hypotheses_ex11.py`"
+msgstr ""
+
+# c1aae1e4269641deab1b0c442e86a486
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:244
+msgid "1D Mesh with Fixed Points example"
+msgstr ""
+
+# 42cc5b76354244dda062e9ab67178fba
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:248
+msgid "``defining_hypotheses_ex12.py``"
+msgstr ""
+
+# 0494d3054fa84ccbbdadaab71ab49c9c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:254
+msgid ":download:`../../../examples/defining_hypotheses_ex12.py`"
+msgstr ""
+
+# b5bf09c0c65441a5b649a8b4f872e4f8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:259
+msgid "Radial Quadrangle 1D-2D example"
+msgstr ""
+
+# e11dc47febb3451eae79505194a3b470
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:263
+msgid "``defining_hypotheses_ex13.py``"
+msgstr ""
+
+# e2042fb6379647289d81b952790fa19f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:269
+msgid ":download:`../../../examples/defining_hypotheses_ex13.py`"
+msgstr ""
+
+# a64deb7c4c0f4b1d85c9ab9698dffe82
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:274
+msgid "Quadrangle Parameters example 1 (meshing a face with 3 edges)"
+msgstr ""
+
+# 43383104800842d8bf7f3410cdac69e7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:278
+msgid "``defining_hypotheses_ex14.py``"
+msgstr ""
+
+# 8d1842c107224648a84e981c6f1fc2a7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:284
+msgid ":download:`../../../examples/defining_hypotheses_ex14.py`"
+msgstr ""
+
+# 74a27c17676d434a8c3d25ac9796ade7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:287
+msgid "Quadrangle Parameters example 2 (using different types)"
+msgstr ""
+
+# e5ff359d6f554d7f941d66fb203ec978
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:291
+msgid "``defining_hypotheses_ex15.py``"
+msgstr ""
+
+# 7c928ac31c924ffda50887b7dcd566c3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:297
+msgid ":download:`../../../examples/defining_hypotheses_ex15.py`"
+msgstr ""
+
+# f1274f94ecca401fbaa85dab2a3b6be9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:302
+msgid "\"Import 1D-2D Elements from Another Mesh\" example"
+msgstr ""
+
+# 5fdf903d6e714f6786bee45b22031939
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:306
+msgid "``defining_hypotheses_ex16.py``"
+msgstr ""
+
+# 8ecaa3f528ed4bec820d5b01fc54a9e3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:312
+msgid ":download:`../../../examples/defining_hypotheses_ex16.py`"
+msgstr ""
+
+# 38475312a47b409d884787b40e75f9bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:317
+msgid "Viscous layers construction"
+msgstr ""
+
+# 96c7c221e83c4d5092d4b663d1440e03
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:321
+msgid "``defining_hypotheses_ex17.py``"
+msgstr ""
+
+# 5101a4bf06ca4c6aa3d7738ab9890209
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:327
+msgid ":download:`../../../examples/defining_hypotheses_ex17.py`"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tui_filters.po b/doc/gui/locale/fr/LC_MESSAGES/tui_filters.po
new file mode 100644 (file)
index 0000000..40d486c
--- /dev/null
@@ -0,0 +1,1577 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 6ca951476443456f8f3880c62a0a3c8c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:5
+msgid "Filters usage"
+msgstr ""
+
+# b497f51ac2e744ada5e94e44ea032ab8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:0
+msgid "`Table of contents`"
+msgstr ""
+
+# 5b11e27703fe49299f1424246527c350
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:10
+msgid ""
+"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."
+msgstr ""
+
+# e0bc747ec8da48b498263ccbc83aea2c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:15
+msgid ""
+"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*."
+msgstr ""
+
+# 252f6d38a089402f8870fb587d649fe4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:19
+msgid ""
+"Mesh filters can use the functionality of mesh quality controls to filter"
+" mesh nodes / elements by a specific characteristic (Area, Length, etc)."
+msgstr ""
+
+# 4bab7008da41451aa32b5e9c0fedda93
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:22
+msgid ""
+"This page provides a short description of the existing mesh filters, "
+"describes required parameters and gives simple examples of usage in "
+"Python scripts."
+msgstr ""
+
+# 9549e327926346be95fd0a0740aeb814
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:26
+msgid "**See also:** :ref:`tui_quality_controls_page`"
+msgstr ""
+
+# e3200c2af4e64ea79cb73645409035f6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:31
+msgid "Aspect ratio"
+msgstr ""
+
+# 7933273bcee34279b9f5c23f545455a4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:33
+msgid "filters 2D mesh elements (faces) according to the aspect ratio value:"
+msgstr ""
+
+# 7bdea22213bd49979ac671a12bc01fc6
+# 315c940ad9d44d51a586fe19e5783e5f
+# 282c2320af254ed68bfcaa04f54771e7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:35
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:517
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:541
+msgid "element type should be *SMESH.FACE*"
+msgstr ""
+
+# a91ead07432b4570a3b88ea82b3ccd83
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:36
+msgid "functor type should be *SMESH.FT_AspectRatio*"
+msgstr ""
+
+# 57bf0db5058247b8a8eedccb86171c4a
+# 11e43f1100c84460bd311554d4a95b16
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:37
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:60
+msgid "threshold is floating point value (aspect ratio)"
+msgstr ""
+
+# f571f009ac874dcf9ff3976f641fc0cd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:41
+msgid "``filters_ex01.py``"
+msgstr ""
+
+# 50cae771732940f3a948cae60b00caa4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:47
+msgid ":download:`../../../examples/filters_ex01.py`"
+msgstr ""
+
+# 89c85d23e6544b14aa115155b2230539
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:49
+msgid "**See also:** :ref:`tui_aspect_ratio`"
+msgstr ""
+
+# b613da0f68ea497bb460a190c334bc3b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:54
+msgid "Aspect ratio 3D"
+msgstr ""
+
+# a0fd9e8c8f6c45899712fcb3c99ce8f4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:56
+msgid "filters 3D mesh elements (volumes) according to the aspect ratio value:"
+msgstr ""
+
+# 7157bf5105b84a76982cddd8a2c0a4ab
+# b8f362a3c24e4761a2cf9999d83ea9f3
+# 31b4fe2b41704fd5bc5a385067db9e78
+# 9d87b96ae99e4b51980739aed794db4d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:58
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:196
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:589
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:612
+msgid "element type is *SMESH.VOLUME*"
+msgstr ""
+
+# 0c73594aeb55424d95b8ad4945bd4f09
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:59
+msgid "functor type is *SMESH.FT_AspectRatio3D*"
+msgstr ""
+
+# 522e2237e63b48399da257368c2c1728
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:64
+msgid "``filters_ex02.py``"
+msgstr ""
+
+# 0dbfae0c9a3e4107a32e15caa90218c0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:70
+msgid ":download:`../../../examples/filters_ex02.py`"
+msgstr ""
+
+# 93d6b45e533b49b7b25920014913d357
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:72
+msgid "**See also:** :ref:`tui_aspect_ratio_3d`"
+msgstr ""
+
+# ad8dae4703b04b6d9b54cb4174fe1ea0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:77
+msgid "Warping angle"
+msgstr ""
+
+# 487244067e0e4fbdb26701af49d9c47f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:79
+msgid "filters 2D mesh elements (faces) according to the warping angle value:"
+msgstr ""
+
+# ea3fae8352804a6c9dff4256c1b5c3d5
+# 5f7d1caffb734812b2489f8b0f9874a7
+# 3ff9306930c94205899b68c81cb68a33
+# 01f71c0f788f4737a10d59b1b155122b
+# f526cf45f23f4b23ab4fcf1785c719e0
+# 57a8ff64de584ce684970c5b2e110550
+# e0348a80ef09411fa943281c43c43d58
+# c670276d09b04b02a8f346e861c982ac
+# a7d2a29605fe4488bafd3e18fed928f0
+# df800954efdf45c2962686f8d62f38ef
+# 7925fed78391415a8fb3e536fc284d25
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:81
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:104
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:127
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:150
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:173
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:244
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:290
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:313
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:336
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:358
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:470
+msgid "element type is *SMESH.FACE*"
+msgstr ""
+
+# 35766a5cfda04256a609ed3b3c818bef
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:82
+msgid "functor type is *SMESH.FT_Warping*"
+msgstr ""
+
+# 0d1fd590ed0840c9b23f6fa7839d773b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:83
+msgid "threshold is floating point value (warping angle)"
+msgstr ""
+
+# 004ca3b2bbf24d60ae62b81c7f56ab2a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:87
+msgid "``filters_ex03.py``"
+msgstr ""
+
+# 98c70343810f4ffda5ac63a4adadabb0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:93
+msgid ":download:`../../../examples/filters_ex03.py`"
+msgstr ""
+
+# 096ee5252671498a957276fda40ab6df
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:95
+msgid "**See also:** :ref:`tui_warping`"
+msgstr ""
+
+# 6bb026f1fa054c4fb01951646c854ad4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:100
+msgid "Minimum angle"
+msgstr ""
+
+# 12caf452968a41058b0a85334dca77c0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:102
+msgid "filters 2D mesh elements (faces) according to the minimum angle value:"
+msgstr ""
+
+# 720cf4ef2ef64adfa76d7af6cc574455
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:105
+msgid "functor type is *SMESH.FT_MinimumAngle*"
+msgstr ""
+
+# f4c4e75ef6cc4748a3e967bf82ffe65b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:106
+msgid "threshold is floating point value (minimum angle)"
+msgstr ""
+
+# c419c4f2e6db46c28322c514d3ffdecc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:110
+msgid "``filters_ex04.py``"
+msgstr ""
+
+# d8683a622c644acbbe1ac0779a234e72
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:116
+msgid ":download:`../../../examples/filters_ex04.py`"
+msgstr ""
+
+# 79a773fc6c344aeca7633a1f11f7716e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:118
+msgid "**See also:** :ref:`tui_minimum_angle`"
+msgstr ""
+
+# 01e6e22f05ed417e8158d9f3ab0cc84a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:123
+msgid "Taper"
+msgstr ""
+
+# 55b300370c5d463db3e8bd3a4f412723
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:125
+msgid "filters 2D mesh elements (faces) according to the taper value:"
+msgstr ""
+
+# 2710fe0fb6c3489e93a69fa9d157176e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:128
+msgid "functor type is *SMESH.FT_Taper*"
+msgstr ""
+
+# ecc2c01f7dc84c1297ebb52d520cd00d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:129
+msgid "threshold is floating point value (taper)"
+msgstr ""
+
+# fda49acd55914c17993e58c4b6c86d60
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:133
+msgid "``filters_ex05.py``"
+msgstr ""
+
+# c52b74a578934750acacfeac670e83d7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:139
+msgid ":download:`../../../examples/filters_ex05.py`"
+msgstr ""
+
+# e8d1a6468c374732ba982b3039bc7aa7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:141
+msgid "**See also:** :ref:`tui_taper`"
+msgstr ""
+
+# e99e7aade16a49ee90a394ffc8ecc11d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:146
+msgid "Skew"
+msgstr ""
+
+# 362bfcb5a4574d0da125316db6306b45
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:148
+msgid "filters 2D mesh elements (faces) according to the skew value:"
+msgstr ""
+
+# d7669106a6c548629952804e7902dc47
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:151
+msgid "functor type is *SMESH.FT_Skew*"
+msgstr ""
+
+# 1ad14dace2c24e1fa614a6f0ab98f33a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:152
+msgid "threshold is floating point value (skew)"
+msgstr ""
+
+# 5a2f0b7c68364a7399af945295cfd5ee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:156
+msgid "``filters_ex06.py``"
+msgstr ""
+
+# f6507f1b8ffe4d07b8efc9f3aff79283
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:162
+msgid ":download:`../../../examples/filters_ex06.py`"
+msgstr ""
+
+# e3f2245ebcc443bc9b6d9326cb311850
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:164
+msgid "**See also:** :ref:`tui_skew`"
+msgstr ""
+
+# 2a35872abb8f42229f207c2f0dac79b9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:169
+msgid "Area"
+msgstr ""
+
+# fab468da32da4d078bbf686165f82fc2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:171
+msgid "filters 2D mesh elements (faces) according to the area value:"
+msgstr ""
+
+# 2c48b772ad4440f38e8e6a54af90e6d7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:174
+msgid "functor type is *SMESH.FT_Area*"
+msgstr ""
+
+# bcb070ddf7ed430288115a64f9997b8b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:175
+msgid "threshold is floating point value (area)"
+msgstr ""
+
+# e5a829774bc0473aa6157465224e97d8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:179
+msgid "``filters_ex07.py``"
+msgstr ""
+
+# 5e7b469c380f4b129cd61caacc510eaf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:185
+msgid ":download:`../../../examples/filters_ex07.py`"
+msgstr ""
+
+# 71d104b1a39f4541aac4a1f19afaad04
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:187
+msgid "**See also:** :ref:`tui_area`"
+msgstr ""
+
+# cade3174d4af4661a13f4034c642437a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:192
+msgid "Volume"
+msgstr ""
+
+# d3d522fdc8e74ec7815ad2af86cbfccd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:194
+msgid "filters 3D mesh elements (volumes) according to the volume value:"
+msgstr ""
+
+# f0e481836c9345318bbf2d09ad29778b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:197
+msgid "functor type is *SMESH.FT_Volume3D*"
+msgstr ""
+
+# 8fc470a5a2d04d49b98b004fef8a6f85
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:198
+msgid "threshold is floating point value (volume)"
+msgstr ""
+
+# a4cb688e843e46bea2e5092bbcbd39d7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:202
+msgid "``filters_ex08.py``"
+msgstr ""
+
+# c90d29137bcf4f38b87894b7a44692ed
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:208
+msgid ":download:`../../../examples/filters_ex08.py`"
+msgstr ""
+
+# a9f5d2a508574991a8fd2b506998e84a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:210
+msgid "**See also:** :ref:`tui_volume`"
+msgstr ""
+
+# 5e8dc7ece6ff41df86277f56a80a82dc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:215
+msgid "Free borders"
+msgstr ""
+
+# 80900b5870aa4feba0c22b82fff23d4a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:217
+msgid "filters 1D mesh elements (edges) which represent free borders of a mesh:"
+msgstr ""
+
+# c3b1a9b2652e416b8cb61e1485715f47
+# 6babd52bda944e25a8e911bf597caa2b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:219
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:446
+msgid "element type is *SMESH.EDGE*"
+msgstr ""
+
+# 6c7f9d52b7b848da9f6a5eaf5c43ef83
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:220
+msgid "functor type is *SMESH.FT_FreeBorders*"
+msgstr ""
+
+# b678157785b5496692aa2c3757dc41f9
+# 3e857b3cfa0f4ba4a93135d75c8e35ab
+# 0058ac055ebf4477828a3ac73037138d
+# d6588539972d48c6a80d7533b78578fc
+# 1adda2caff484444983aae369225952e
+# f20fabd0064a4978a871320e2b1d52fe
+# 9d17cff2bf2d4b68b714bb7e95b3ea37
+# 685e6790bb1143d1b3b9d241c632d554
+# f5741f2df7984f2090b050d30258c8d9
+# 1bdb459f82f943b1b7749308a8d84203
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:221
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:246
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:269
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:292
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:315
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:360
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:383
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:404
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:591
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:614
+msgid "threshold value is not required"
+msgstr ""
+
+# 5faf43e863384018bfe5c63414e66d1e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:223
+msgid "\\tui_script{filters_ex09.py} .. _filters_ex09.py:"
+msgstr ""
+
+# 169a801dbe544ac2bb5b4ade4efc45a8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:226
+msgid "``filters_ex09.py``"
+msgstr ""
+
+# 341442284c1e4e3f885f0d56b018d203
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:232
+msgid ":download:`../../../examples/filters_ex09.py`"
+msgstr ""
+
+# bb207a082f9c4ee2a85f364ae2c2c94a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:234
+msgid "**See also:** :ref:`tui_free_borders`"
+msgstr ""
+
+# c9acd5a0711146928be8dbd50d27d356
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:239
+msgid "Free edges"
+msgstr ""
+
+# e5319ce3c769424f9ab0b76e513bf5c2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:241
+msgid ""
+"filters 2D mesh elements (faces) having edges (i.e. links between nodes, "
+"not mesh segments) belonging to one face of mesh only:"
+msgstr ""
+
+# 59bbe7f428b8421e821854d837b11a4c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:245
+msgid "functor type is *SMESH.FT_FreeEdges*"
+msgstr ""
+
+# a541e40fb6ed4488b22dde5479931636
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:250
+msgid "``filters_ex10.py``"
+msgstr ""
+
+# 5fd5f86ef549410783987f8653f9808a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:256
+msgid ":download:`../../../examples/filters_ex10.py`"
+msgstr ""
+
+# 855a63570fdf4a54bbfd34b5adcb2b9f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:258
+msgid "**See also:** :ref:`tui_free_edges`"
+msgstr ""
+
+# c131072177fe4d0fbccc2584c215bbef
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:263
+msgid "Free nodes"
+msgstr ""
+
+# 0bdfce2a625649c39519a5fd49c01534
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:265
+msgid "filters free nodes:"
+msgstr ""
+
+# 3fe1ac2505b544e5992cd65ca6646583
+# 6ab61788929f46b5a1de4bc89a95b44c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:267
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:402
+msgid "element type is *SMESH.NODE*"
+msgstr ""
+
+# b34ecab8f7644b4abd6d5eb7aa534c7f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:268
+msgid "functor type is *SMESH.FT_FreeNodes*"
+msgstr ""
+
+# 5b7d110fa8b24ed2a6056410478ce858
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:273
+msgid "``filters_ex11.py``"
+msgstr ""
+
+# 4952268902a24518afedf3147172ce08
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:279
+msgid ":download:`../../../examples/filters_ex11.py`"
+msgstr ""
+
+# c59182067b7a4790aa895a136e15204b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:281
+msgid "**See also:** :ref:`tui_free_nodes`"
+msgstr ""
+
+# 10a92eee1b7e46bcb170df72bdcfd9f2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:286
+msgid "Free faces"
+msgstr ""
+
+# 2b728a8bac9e400fb898d7c8a27061bb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:288
+msgid "filters free faces:"
+msgstr ""
+
+# 67792cd6993e4907875ec9c487cba25d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:291
+msgid "functor type is *SMESH.FT_FreeFaces*"
+msgstr ""
+
+# 411788888f004991b473749b0ca5cefd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:296
+msgid "``filters_ex12.py``"
+msgstr ""
+
+# ee38dc421e7a4f098a2ee60bb23006b6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:302
+msgid ":download:`../../../examples/filters_ex12.py`"
+msgstr ""
+
+# a613dc31c6f449329ef91aa9105c1ccd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:304
+msgid "**See also:** :ref:`tui_free_faces`"
+msgstr ""
+
+# bd5a36a737724c19a29608b4676dbba8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:309
+msgid "Bare border faces"
+msgstr ""
+
+# b606eb169958417b8a42f85b9a6a1e28
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:311
+msgid "filters faces with bare borders:"
+msgstr ""
+
+# fdeee8621d674199a64c4cb5348a6f6a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:314
+msgid "functor type is *SMESH.FT_BareBorderFace*"
+msgstr ""
+
+# f71bbd8f5e78403ab26c094d60854b78
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:319
+msgid "``filters_ex13.py``"
+msgstr ""
+
+# 820f6be3459942f6ba02c2953174bf76
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:325
+msgid ":download:`../../../examples/filters_ex13.py`"
+msgstr ""
+
+# 16f12ffb34184224a1cbda67b40889c5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:327
+msgid "**See also:** :ref:`tui_bare_border_faces`"
+msgstr ""
+
+# aff2d16224c44cf092eb5a0cc601f920
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:332
+msgid "Coplanar faces"
+msgstr ""
+
+# d66a44e8bd354eb08c5a88ed12235d8e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:334
+msgid "filters coplanar faces:"
+msgstr ""
+
+# c27a8102cfda432d8d5ba0ec76f6eb33
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:337
+msgid "functor type is *SMESH.FT_CoplanarFaces*"
+msgstr ""
+
+# c70b12b4fee1485c8e6bd6791518f812
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:338
+msgid "threshold value is the face ID"
+msgstr ""
+
+# f4e64b57175044db8d1e9790fa296f48
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:339
+msgid "tolerance is in degrees"
+msgstr ""
+
+# 16972c51c17945dabb52860e2940ba29
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:343
+msgid "``filters_ex14.py``"
+msgstr ""
+
+# 56c23335552040db813464be02abc955
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:349
+msgid ":download:`../../../examples/filters_ex14.py`"
+msgstr ""
+
+# e6309d3e844a417c84e9f9fc2301e8c8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:354
+msgid "Over-constrained faces"
+msgstr ""
+
+# 1d50fd1a57cf4affb4a6126f6d70e97b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:356
+msgid "filters over-constrained faces:"
+msgstr ""
+
+# e95f92d730ae434ca39fa56652c53391
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:359
+msgid "functor type is *SMESH.FT_OverConstrainedFace*"
+msgstr ""
+
+# fbb88252d0f8448c86ba7292f91697fb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:364
+msgid "``filters_ex15.py``"
+msgstr ""
+
+# 9a79e54fe9a84efbae8d530043f5184e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:370
+msgid ":download:`../../../examples/filters_ex15.py`"
+msgstr ""
+
+# c430a7aef2474eedb4eac84e9289d461
+# 337ef1b2f716414f95c90c39cef03851
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:372
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:626
+msgid "**See also:** :ref:`tui_over_constrained_faces`"
+msgstr ""
+
+# 4c762816a7a64922827935e7645df238
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:377
+msgid "Double edges, Double faces, Double volumes"
+msgstr ""
+
+# 9f7e6b32dc904feeabe998c2d7277164
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:379
+msgid "filters mesh elements basing on the same set of nodes:"
+msgstr ""
+
+# 03dff5d9d02d4cc38ec4d46cc1732feb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:381
+msgid "element type is either *SMESH.EGDE*, *SMESH.FACE* or *SMESH.VOLUME*"
+msgstr ""
+
+# 51855d36e073427fba5f6ed59b5c0a48
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:382
+msgid ""
+"functor type is either *SMESH.FT_EqualEdges*, *SMESH.FT_EqualFaces* or "
+"*SMESH.FT_EqualVolumes*,"
+msgstr ""
+
+# 422403336e844500aeef72243b7bebd2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:387
+msgid "``filters_ex16.py``"
+msgstr ""
+
+# 14d268a0bf094221aeb85ada8de2dd73
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:393
+msgid ":download:`../../../examples/filters_ex16.py`"
+msgstr ""
+
+# 9be1962ed6184f24ac4d806fdf5cb8f3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:398
+msgid "Double nodes"
+msgstr ""
+
+# 9a9f6e25952c4722b3d3a8400c39a645
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:400
+msgid ""
+"filters mesh nodes which are coincident with other nodes (within a given "
+"tolerance):"
+msgstr ""
+
+# 0f73daf6ad974068b5a74c6b7ad5305f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:403
+msgid "functor type is *SMESH.FT_EqualNodes*"
+msgstr ""
+
+# 4ce59ef3270642dd9629c006d9c40c5a
+# 9c2b4ad2ec414dbbbe70cab52eb1313a
+# 014e3785e30f4b8e92c97075610de2d8
+# e4173d7352364008ac081a669f97ef14
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:405
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:709
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:732
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:755
+msgid "default tolerance is 1.0e-7"
+msgstr ""
+
+# 3f69e761164f4f8fb7d60c60d67d7d9c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:409
+msgid "``filters_ex17.py``"
+msgstr ""
+
+# 46c6789c91e949dd95431fc46ee67be6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:415
+msgid ":download:`../../../examples/filters_ex17.py`"
+msgstr ""
+
+# 54ec3d0384df4c2a98ddaf6bc07f3e3f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:420
+msgid "Node connectivity number"
+msgstr ""
+
+# 2b9c0d5edf854e72bdce648332c61ee6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:422
+msgid ""
+"filters nodes according to a number of elements of highest dimension "
+"connected to a node:"
+msgstr ""
+
+# b78de618c06e421a877db6b0f7007abf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:424
+msgid "element type should be *SMESH.NODE*"
+msgstr ""
+
+# 7104cd9c3c394b8195f90a41b4bc2804
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:425
+msgid "functor type should be *SMESH.FT_NodeConnectivityNumber*"
+msgstr ""
+
+# d1060b82fcdb4c43984b72ec1d765e41
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:426
+msgid "threshold is an integer value (number of elements)"
+msgstr ""
+
+# 5951063693494de88bf6be07130c5441
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:430
+msgid "``filters_node_nb_conn.py``"
+msgstr ""
+
+# 3080014f52ca4527818190584a929a00
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:436
+msgid ":download:`../../../examples/filters_node_nb_conn.py`"
+msgstr ""
+
+# dda1534b256f4c658a2eb2450c8a2fcc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:441
+msgid "Borders at multi-connection"
+msgstr ""
+
+# a5fa530a80534ee99245cd1484dce07e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:443
+msgid ""
+"filters 1D mesh elements (segments) according to the specified number of "
+"connections (faces and volumes on whose border the segment lies):"
+msgstr ""
+
+# 49a03ad028f54839b50abede8d970f34
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:447
+msgid "functor type is *SMESH.FT_MultiConnection*"
+msgstr ""
+
+# 5ec7e5eb0091420b92fdf13465e68b6c
+# 0a96e2ef8ef141b6adc2e267269eafae
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:448
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:472
+msgid "threshold is integer value (number of connections)"
+msgstr ""
+
+# 5733597ff1fe473eb40ce3ff7e301354
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:452
+msgid "``filters_ex18.py``"
+msgstr ""
+
+# a9f6687ddaaa475a947061b2e6922d5b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:458
+msgid ":download:`../../../examples/filters_ex18.py`"
+msgstr ""
+
+# a4e855cfcaf24964aaeb1888d5ab57c5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:460
+msgid "**See also:** :ref:`tui_borders_at_multiconnection`"
+msgstr ""
+
+# ca4388f462be424a9fa5738438a8dfb6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:465
+msgid "Borders at multi-connection 2D"
+msgstr ""
+
+# 385ca0044ae44f67bb24d0c3c294c653
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:467
+msgid ""
+"filters 2D mesh elements (faces) with the specified maximal number of "
+"faces connected to a border (link between nodes, not mesh segment):"
+msgstr ""
+
+# 605e2bb7c60341e3831e08ce9d00a288
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:471
+msgid "functor type is *SMESH.FT_MultiConnection2D*"
+msgstr ""
+
+# 1e8e880339b94eac818b655278bee946
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:476
+msgid "``filters_ex19.py``"
+msgstr ""
+
+# d355d82b74a3407e9a1b870177eb0232
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:482
+msgid ":download:`../../../examples/filters_ex19.py`"
+msgstr ""
+
+# 0d635a7069f94a5489fbfec8828788ae
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:484
+msgid "**See also:** :ref:`tui_borders_at_multiconnection_2d`"
+msgstr ""
+
+# 550261fe1fff44f78036162b87eca99e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:489
+msgid "Length"
+msgstr ""
+
+# ee52caa616fe4c8a92328758a6dac90e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:491
+msgid "filters 1D mesh elements (edges) according to the edge length value:"
+msgstr ""
+
+# 989ae7f833e64913950a07ffce7a599c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:493
+msgid "element type should be *SMESH.EDGE*"
+msgstr ""
+
+# fbf7ad28719e402da1a8858aec480ffa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:494
+msgid "functor type should be *SMESH.FT_Length*"
+msgstr ""
+
+# 5b1059d4691141c39a84aebb8f64c712
+# 6905f10af6e445bebef179769d7bd0e7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:495
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:543
+msgid "threshold is floating point value (length)"
+msgstr ""
+
+# 78e69795f69c4918ae37ba9438e4d581
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:499
+msgid "``filters_ex20.py``"
+msgstr ""
+
+# b1f5b9a6f59345bb9b65918b13dbf30f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:505
+msgid ":download:`../../../examples/filters_ex20.py`"
+msgstr ""
+
+# e49b59c96cbb493ba58613dab973137a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:507
+msgid "**See also:** :ref:`tui_length_1d`"
+msgstr ""
+
+# f055a144f07b412c8b1067b4cc86f095
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:512
+msgid "Length 2D"
+msgstr ""
+
+# c7666b79d18a427682a0f88fc50697fc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:514
+msgid ""
+"filters 2D mesh elements (faces) according to the maximum length of its "
+"edges (links between nodes):"
+msgstr ""
+
+# 9f6adc99edc5432098314557e142316c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:518
+msgid "functor type should be *SMESH.FT_Length2D*"
+msgstr ""
+
+# 5b6dfc0091a74cebbe66cb90bc14107c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:519
+msgid "threshold is floating point value (edge length)"
+msgstr ""
+
+# a7c4c530ebf844729a747786a918a469
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:523
+msgid "``filters_ex21.py``"
+msgstr ""
+
+# ed21709b073447aea73549c6b5e4ba52
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:529
+msgid ":download:`../../../examples/filters_ex21.py`"
+msgstr ""
+
+# a2e2655568de44af95deb658aa4e0020
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:531
+msgid "**See also:** :ref:`tui_length_2d`"
+msgstr ""
+
+# 7437e2569f1e4cc6a2aae12cceb7dde2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:536
+msgid "Element Diameter 2D"
+msgstr ""
+
+# 31bf394724b04028ba2aa2373fb4a497
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:538
+msgid ""
+"filters 2D mesh elements (faces) according to the maximum length of its "
+"edges and diagonals:"
+msgstr ""
+
+# 724391cb86d64f8b91ee6033f41271bd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:542
+msgid "functor type should be *SMESH.FT_MaxElementLength2D*"
+msgstr ""
+
+# d098a1e0cd784fffb785c4e89624e73f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:547
+msgid "``filters_ex22.py``"
+msgstr ""
+
+# f3fb04e667a145ffa27c4fa83c05e33a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:553
+msgid ":download:`../../../examples/filters_ex22.py`"
+msgstr ""
+
+# cc55efd54037451e9e93c117da20c134
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:555
+msgid "**See also:** :ref:`tui_max_element_length_2d`"
+msgstr ""
+
+# cc9136e7d65b4ca9b0bc04885b9c48d5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:560
+msgid "Element Diameter 3D"
+msgstr ""
+
+# 94101ffc6fda4d118986fa576c249e5a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:562
+msgid ""
+"filters 3D mesh elements (volumes) according to the maximum length of its"
+" edges and diagonals:"
+msgstr ""
+
+# 552586f6bd904272b24c888a47f75fe7
+# 1dbdd411375944168b321d06258363a4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:565
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:797
+msgid "element type should be *SMESH.VOLUME*"
+msgstr ""
+
+# fdda00bd406e45ba8c957adfe59aa584
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:566
+msgid "functor type should be *SMESH.FT_MaxElementLength3D*"
+msgstr ""
+
+# 8f503039f5d94e688fabbc1cab2a2fd5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:567
+msgid "threshold is floating point value (edge/diagonal length)"
+msgstr ""
+
+# e26cb32f84404ebba50404235dfcfc6f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:571
+msgid "``filters_ex23.py``"
+msgstr ""
+
+# b83daba736664a6ba10c6a60c85290f1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:577
+msgid ":download:`../../../examples/filters_ex23.py`"
+msgstr ""
+
+# cbe17c247adf473d838f06dfcacd5099
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:579
+msgid "**See also:** :ref:`tui_max_element_length_3d`"
+msgstr ""
+
+# 97fc03d800884cab911512fb355e844c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:584
+msgid "Bare border volumes"
+msgstr ""
+
+# ce40e24105914ebe844a3878981e73b3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:586
+msgid ""
+"filters 3D mesh elements with bare borders, i.e. having a facet not "
+"shared with other volumes and without a face on it:"
+msgstr ""
+
+# fcb10c03ffb54596a5d76535c59f4202
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:590
+msgid "functor type is *SMESH.FT_BareBorderVolume*"
+msgstr ""
+
+# 9d2614cf04c747009ab065d3b7c69f31
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:595
+msgid "``filters_ex24.py``"
+msgstr ""
+
+# 775702868e504cd99d3e13550722d54f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:601
+msgid ":download:`../../../examples/filters_ex24.py`"
+msgstr ""
+
+# b3355d3c2aef4db78b6409e9531d9fbe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:603
+msgid "**See also:** :ref:`tui_bare_border_volumes`"
+msgstr ""
+
+# d691f1abd0ca4c0eb16b217f6f77161a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:608
+msgid "Over-constrained volumes"
+msgstr ""
+
+# 28008f4ef2a94786ac06c4b1cb843d0b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:610
+msgid ""
+"filters over-constrained volumes, whose all nodes are on the mesh "
+"boundary:"
+msgstr ""
+
+# e43a3fdb876c4135ae79a3f2009aed0e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:613
+msgid "functor type is *SMESH.FT_OverConstrainedVolume*"
+msgstr ""
+
+# 90b875ac91454fdc9cbff4ccb4329f2d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:618
+msgid "``filters_ex25.py``"
+msgstr ""
+
+# 840c6c1a0eea44d88ed766016df2cfcb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:624
+msgid ":download:`../../../examples/filters_ex25.py`"
+msgstr ""
+
+# b49dbd8ec8764bc2a459735efa405e95
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:631
+msgid "Belong to Mesh Group"
+msgstr ""
+
+# 62e957b684c54214b232a947a4d3b240
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:633
+msgid ""
+"filters mesh entities (nodes or elements) included in a mesh group "
+"defined by threshold value:"
+msgstr ""
+
+# 5e2969a704914b97be7521835f9bfd53
+# 05e74d27e2154ec095b4eb8230cfa7d7
+# 8df46f4bc3294bf7b5fa6220ca737281
+# 9fa4accfe4f046499b5bb57cacd18624
+# 674b6ddf9d37471b825202d5e5297f86
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:636
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:658
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:681
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:775
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:840
+msgid "element type can be any, from *SMESH.NODE* to *SMESH.BALL*"
+msgstr ""
+
+# d50d8ecc6d2340c9bc7611e3384e69dc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:637
+msgid "functor type should be *SMESH.FT_BelongToMeshGroup*"
+msgstr ""
+
+# c77da6ebd3f74281b61d71383798e03c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:638
+msgid "threshold is mesh group object"
+msgstr ""
+
+# 681f97f7da9b4a9995e56c3e8df52622
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:642
+msgid "``filters_belong2group.py``"
+msgstr ""
+
+# 7a8de9bd18d24a2d95a429e0ee16b0a7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:648
+msgid ":download:`../../../examples/filters_belong2group.py`"
+msgstr ""
+
+# b6d57148f42940eda7259884042e820b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:653
+msgid "Belong to Geom"
+msgstr ""
+
+# dcff919a75a34a61a991fec26d73e191
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:655
+msgid ""
+"filters mesh entities (nodes or elements) which all nodes lie on the "
+"shape defined by threshold value:"
+msgstr ""
+
+# 6936949065a14fa59ebd082a704b8ddf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:659
+msgid "functor type should be *SMESH.FT_BelongToGeom*"
+msgstr ""
+
+# 425504babbae4ef1a87cd43390ab1911
+# 75b2f2e1075b4ca2b8f12c44948c7229
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:660
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:683
+msgid "threshold is geometrical object"
+msgstr ""
+
+# 3e5c35430f5a420580677ef5bb0fec6c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:661
+msgid ""
+"tolerance is a distance between a node and the geometrical object; it is "
+"used if an node is not associated to any geometry."
+msgstr ""
+
+# af4a62bc6bb944ad95818d6e7a580c69
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:665
+msgid "``filters_ex26.py``"
+msgstr ""
+
+# a7c2743b9d394107b485708f1a8e8f53
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:671
+msgid ":download:`../../../examples/filters_ex26.py`"
+msgstr ""
+
+# d1e3a37b037e48e09e9a5c95aed8b10d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:676
+msgid "Lying on Geom"
+msgstr ""
+
+# 42c56ae8e347449793280f9628e388db
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:678
+msgid ""
+"filters mesh entities (nodes or elements) at least one node of which lies"
+" on the shape defined by threshold value:"
+msgstr ""
+
+# 3405af1cedcf4f2eb0beead57d373a9d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:682
+msgid "functor type should be *SMESH.FT_LyingOnGeom*"
+msgstr ""
+
+# d7aa1223d52a49ffad2cea535fee5432
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:684
+msgid "tolerance is a distance between a node and the geometrical object;"
+msgstr ""
+
+# 5573b9622d1f403a9cc5a1f622aa66bc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:686
+msgid "it is used if an node is not associated to any geometry."
+msgstr ""
+
+# aebe7d59b7f24931ab8bc542276af606
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:690
+msgid "``filters_ex27.py``"
+msgstr ""
+
+# 0ed67cd816d44f81920f933879fffa4b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:696
+msgid ":download:`../../../examples/filters_ex27.py`"
+msgstr ""
+
+# 96669f8b61e8427ba147bddb9dbf0c1e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:701
+msgid "Belong to Plane"
+msgstr ""
+
+# b1f11adac265445da564b97d9a12e637
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:703
+msgid ""
+"filters mesh entities (nodes or elements) which all nodes belong to the "
+"plane defined by threshold value with the given tolerance:"
+msgstr ""
+
+# fabc3ac38127432f9b32d6da2514eff4
+# 3e4dc8f600bd414f90b3ec3bdf0e006a
+# 288d476ed0fa4275a28cfb3c0048a116
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:706
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:729
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:752
+msgid "element type can be any except *SMESH.VOLUME*"
+msgstr ""
+
+# beddd56fa51d443f8598332c6a798f61
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:707
+msgid "functor type should be *SMESH.FT_BelongToPlane*"
+msgstr ""
+
+# 7c33c3cb8ce8458e8d8dcc7406d5224c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:708
+msgid "threshold is geometrical object (plane)"
+msgstr ""
+
+# 1a779a6d926249da91ddba758563cdfe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:713
+msgid "``filters_ex28.py``"
+msgstr ""
+
+# 474063b5e9f64506ab7164ec35bdd591
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:719
+msgid ":download:`../../../examples/filters_ex28.py`"
+msgstr ""
+
+# 6e1fecbd1a3645e29a1ea342cc3e66da
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:724
+msgid "Belong to Cylinder"
+msgstr ""
+
+# f0b8bebbc11b47aba1911c6dec58e8fc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:726
+msgid ""
+"filters mesh entities (nodes or elements) which all nodes belong to the "
+"cylindrical face defined by threshold value with the given tolerance:"
+msgstr ""
+
+# e59bbbe974ab407da4746987550f092b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:730
+msgid "functor type should be *SMESH.FT_BelongToCylinder*"
+msgstr ""
+
+# 521885d6a25a49fbba26e2b3cd276bea
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:731
+msgid "threshold is geometrical object (cylindrical face)"
+msgstr ""
+
+# 7169b31929204c8d86171c5fc1e70790
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:736
+msgid "``filters_ex29.py``"
+msgstr ""
+
+# 79555c5a71184badbab65a080d78769d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:742
+msgid ":download:`../../../examples/filters_ex29.py`"
+msgstr ""
+
+# 443cfe1a044f4543beb1c9f691b2f8d2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:747
+msgid "Belong to Surface"
+msgstr ""
+
+# 89767428ece3443a882e6cdd310440d4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:749
+msgid ""
+"filters mesh entities (nodes or elements) which all nodes belong to the "
+"arbitrary surface defined by threshold value with the given tolerance:"
+msgstr ""
+
+# 51ac7306ca4e40a583f93e213b9d53e7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:753
+msgid "functor type should be *SMESH.FT_BelongToGenSurface*"
+msgstr ""
+
+# f47254b619d741ebb1268f6d3bc76479
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:754
+msgid "threshold is geometrical object (arbitrary surface)"
+msgstr ""
+
+# 6cc05deaab714e5597256bd4b8d575ba
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:759
+msgid "``filters_ex30.py``"
+msgstr ""
+
+# 755f6f5145794b1b9b3fbf0707841202
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:765
+msgid ":download:`../../../examples/filters_ex30.py`"
+msgstr ""
+
+# 480b58ba69224cacb3ea43c351b2cbe8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:770
+msgid "Range of IDs"
+msgstr ""
+
+# edc9065fcc7747fbbf4770e7a24e0150
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:772
+msgid ""
+"filters mesh entities elements (nodes or elements) according to the "
+"specified identifiers range:"
+msgstr ""
+
+# c5326641da7c4bc989742815cd547c94
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:776
+msgid "functor type is *SMESH.FT_RangeOfIds*"
+msgstr ""
+
+# f38032029e0f4f5c8e878e1a717c712f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:777
+msgid ""
+"threshold is string listing required IDs and/or ranges of IDs, "
+"e.g.\"1,2,3,50-60,63,67,70-78\""
+msgstr ""
+
+# 648a550fba2d4f1b91544b6a10d129ad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:781
+msgid "``filters_ex31.py``"
+msgstr ""
+
+# 5e865f6eea324433bd5ebb53aafe730a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:787
+msgid ":download:`../../../examples/filters_ex31.py`"
+msgstr ""
+
+# 629cd6d520ae4225be5a7656fb2e8e1c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:792
+msgid "Badly oriented volume"
+msgstr ""
+
+# 997d280d774c4f288595ab35ff4bac2d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:794
+msgid ""
+"filters 3D mesh elements (volumes), which are incorrectly oriented from "
+"the point of view of MED convention."
+msgstr ""
+
+# c6bd895bb88e4785ba8890ea4316884f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:798
+msgid "functor type is *SMESH.FT_BadOrientedVolume*"
+msgstr ""
+
+# 9093e5ba871a4b038cd1b1eff0b57367
+# de3b40264c3e4a24a0c2d5ea6d10576f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:799
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:820
+msgid "threshold is not required"
+msgstr ""
+
+# 7f090527951447c4b24547316452536b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:803
+msgid "``filters_ex32.py``"
+msgstr ""
+
+# 433cbf6bf097466f87da3706c761e002
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:809
+msgid ":download:`../../../examples/filters_ex32.py`"
+msgstr ""
+
+# 9c303932cfc04a3c8c0fdbf4465b7601
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:814
+msgid "Linear / quadratic"
+msgstr ""
+
+# 89dd525d28a14d629237d1b4b6be0500
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:816
+msgid "filters linear / quadratic mesh elements:"
+msgstr ""
+
+# 457e1ff1b5194af5b54d8def4d8e90e3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:818
+msgid "element type should be either *SMESH.EDGE*, *SMESH.FACE* or *SMESH.VOLUME*"
+msgstr ""
+
+# 6be06de695854193b299384f8e43a791
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:819
+msgid "functor type is *SMESH.FT_LinearOrQuadratic*"
+msgstr ""
+
+# 2c99fbd29b6d46aba55e0ad1312bb07e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:821
+msgid ""
+"if unary operator is set to SMESH.FT_LogicalNOT, the quadratic elements "
+"are selected, otherwise (by default) linear elements are selected"
+msgstr ""
+
+# dc627b9fa49c46d6a3620f426974ee18
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:825
+msgid "``filters_ex33.py``"
+msgstr ""
+
+# a67844d1abcd405b8585d15bc521ea85
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:831
+msgid ":download:`../../../examples/filters_ex33.py`"
+msgstr ""
+
+# bdffe57af7904d328b2149232e5dfd62
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:836
+msgid "Group color"
+msgstr ""
+
+# 38af276c6e714f55a1c27e72e90cd0f2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:838
+msgid ""
+"filters mesh entities, belonging to the group with the color defined by "
+"the threshold value."
+msgstr ""
+
+# 201d8bca7f004e57861e36d1edb41ced
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:841
+msgid "functor type is *SMESH.FT_GroupColor*"
+msgstr ""
+
+# 09bbe898a14e49fc9c75a34d93fcf3d7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:842
+msgid "threshold should be of SALOMEDS.Color type"
+msgstr ""
+
+# a6a0157dd48547db9a4ba61fb4a60254
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:846
+msgid "``filters_ex34.py``"
+msgstr ""
+
+# db3daeb12eeb490b99162cf67ea3d46f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:852
+msgid ":download:`../../../examples/filters_ex34.py`"
+msgstr ""
+
+# bfafa2ababc7495ab073caad36f52be7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:857
+msgid "Geometry type"
+msgstr ""
+
+# 3ed3adca96584f8cada6b1918ab063cb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:859
+msgid ""
+"filters mesh elements by the geometric type defined with the threshold "
+"value. The list of available geometric types depends on the element "
+"entity type."
+msgstr ""
+
+# a030232f559b4c739d14fab8c2d16bdc
+# 9d452c1d0b284f4081addf9f8026d897
+# 60870960f67b44b3a77fab3c58ab1e7b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:863
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:884
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:926
+msgid ""
+"element type can be any, e.g.: *SMESH.EDGE*, *SMESH.FACE*, "
+"*SMESH.VOLUME*, etc."
+msgstr ""
+
+# 89deb95aee72404b8403b79cdcf685f4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:864
+msgid "functor type should be *SMESH.FT_ElemGeomType*"
+msgstr ""
+
+# ae918bc9c07e459a88d77aef0d22b4f0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:865
+msgid ""
+"threshold is either of smesh.GeometryType values. Type "
+"*SMESH.GeometryType._items* in the Python Console to see all geometric "
+"types."
+msgstr ""
+
+# 4ff74a1e1b76464ebf6b20a8d9f26f45
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:869
+msgid "``filters_ex35.py``"
+msgstr ""
+
+# 1967c745730342e3bf48d70306f463fc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:875
+msgid ":download:`../../../examples/filters_ex35.py`"
+msgstr ""
+
+# 0eff6fa25f514cd8bbc6cbe1cf521c2e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:880
+msgid "Entity type"
+msgstr ""
+
+# ee373c0f383a4b809834d66fcaf2921b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:882
+msgid "filters mesh elements by the geometric type and number of nodes."
+msgstr ""
+
+# 963014e799e24f9fa30774202c1aa673
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:885
+msgid "functor type should be *SMESH.FT_EntityType*"
+msgstr ""
+
+# 0c19e26af5cc4b90afad5df964910125
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:886
+msgid ""
+"threshold is either of SMESH.EntityType values. Type "
+"*SMESH.EntityType._items* in the Python Console to see all entity types."
+msgstr ""
+
+# eb186ee8b0f2409ba4772249733b5364
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:890
+msgid "``filters_ex37.py``"
+msgstr ""
+
+# 19611ceebb8e46ceaa47aa0f2b21b44a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:896
+msgid ":download:`../../../examples/filters_ex37.py`"
+msgstr ""
+
+# 3208daefb114459d8a5a07b1e9e0b859
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:901
+msgid "Ball diameter"
+msgstr ""
+
+# f5fb287ff3a64f87bb9406c63a06923e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:903
+msgid "filters ball elements by diameter."
+msgstr ""
+
+# e46e09625f1c42f8932ca036c240d66a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:905
+msgid "element type should be *SMESH.BALL*"
+msgstr ""
+
+# 15653ec5de0d416387873f9406719593
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:906
+msgid "functor type should be *SMESH.FT_BallDiameter*"
+msgstr ""
+
+# 12bfc4b762bc429b92329056c102b932
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:907
+msgid "threshold is floating point value (ball diameter)"
+msgstr ""
+
+# c7d7ea6882164c28906e136939b14a3b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:911
+msgid "``filters_ex38.py``"
+msgstr ""
+
+# d6ce1938df5f4e13bbafa462547a2c2e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:917
+msgid ":download:`../../../examples/filters_ex38.py`"
+msgstr ""
+
+# fafdd97f37aa465086eac657054ceaa8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:922
+msgid "Elements of a domain"
+msgstr ""
+
+# 015db492db7a4573b3e67144cfffc42a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:924
+msgid "filters elements of a specified domain."
+msgstr ""
+
+# 91f93e9c0f524a38ac0d3187a8ca9606
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:927
+msgid "functor type should be *SMESH.FT_ConnectedElements*"
+msgstr ""
+
+# 245661334ae347e8b9055bce39e73f50
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:928
+msgid ""
+"threshold is either (1) node ID or (2)  geometrical vertex or (3) 3 "
+"coordinates of a point."
+msgstr ""
+
+# 6b1dc952084e499ab1118e00e68ee60e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:932
+msgid "``filters_ex39.py``"
+msgstr ""
+
+# 7857771c11de4843ba948ae370481e99
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:938
+msgid ":download:`../../../examples/filters_ex39.py`"
+msgstr ""
+
+# 4a247beda8fd45ac9adabf51f4ccc758
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:943
+msgid "How to combine several criteria into a filter?"
+msgstr ""
+
+# 20f523c9f1364fd493710745665b2485
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:945
+msgid "Several criteria can be combined into a filter."
+msgstr ""
+
+# 5cdcea56db2142c48da8d9f4ebd38432
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:947
+msgid "Example :"
+msgstr ""
+
+# 24fdd74430244cf999d12e78aa34bd2d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:951
+msgid "``filters_ex36.py``"
+msgstr ""
+
+# bdc03be37f0f4109bf502c473f4961ad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:957
+msgid ":download:`../../../examples/filters_ex36.py`"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tui_generate_flat_elements.po b/doc/gui/locale/fr/LC_MESSAGES/tui_generate_flat_elements.po
new file mode 100644 (file)
index 0000000..cd89253
--- /dev/null
@@ -0,0 +1,115 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 94b9bfcad24f4c1a8904595aacacd2a8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:5
+msgid "Generate flat elements"
+msgstr ""
+
+# 2d87fc8590ba46db8cfb3fdcb334acdd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:11
+msgid "Double nodes on groups boundaries"
+msgstr ""
+
+# b2e0b61a2bd541658aaa85d3701e2616
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:13
+msgid ""
+"Double nodes on shared faces between groups of volumes and create flat "
+"elements on demand."
+msgstr ""
+
+# ccba3377d12c4a03a60d8f94161453cf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:15
+msgid ""
+"The list of groups must contain at least two groups. The groups have to "
+"be disjoint: no common element into two different groups."
+msgstr ""
+
+# fecd61ff694c43ba92b41f184f8d29b0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:17
+msgid ""
+"The nodes of the internal faces at the boundaries of the groups are "
+"doubled. Optionally, the internal faces are replaced by flat elements."
+msgstr ""
+
+# bcfba18f40da4612ad4ff5c79d493694
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:19
+msgid "Triangles are transformed into prisms, and quadrangles into hexahedrons."
+msgstr ""
+
+# 9399b78410d546ac85910821b7ce6936
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:21
+msgid "The flat elements are stored in groups of volumes."
+msgstr ""
+
+# 0da6b80f0f2d469cbc70306609b90150
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:23
+msgid ""
+"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\"."
+msgstr ""
+
+# 791916a68e6a4ac68d0ca337f597f83c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:29
+msgid ""
+"This example represents an iron cable (a thin cylinder) in a concrete "
+"bloc (a big cylinder). The big cylinder is defined by two geometric "
+"volumes."
+msgstr ""
+
+# 32891b0da8c04c99a9f893d9a3d55737
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:34
+msgid "``generate_flat_elements.py``"
+msgstr ""
+
+# d28029c4ca634a2f8919c4710c5275fa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:40
+msgid ":download:`../../../examples/generate_flat_elements.py`"
+msgstr ""
+
+# d44554c1bbfa4b8e9f233f65f79b94ec
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:42
+msgid ""
+"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."
+msgstr ""
+
+# cd05508af49441a9a33f12dbeb40ba64
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:46
+msgid ""
+"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."
+msgstr ""
+
+# f5207480da63486c8a5da024105cc022
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:49
+msgid ""
+"To observe flat element groups, save the resulting mesh on a MED file and"
+" reload it."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tui_grouping_elements.po b/doc/gui/locale/fr/LC_MESSAGES/tui_grouping_elements.po
new file mode 100644 (file)
index 0000000..f240ae7
--- /dev/null
@@ -0,0 +1,149 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 7c8275db95614345840fe6b8724d25de
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:5
+msgid "Grouping Elements"
+msgstr ""
+
+# d007caedd364451e8c1f7495b62650f0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:0
+msgid "`Table of contents`"
+msgstr ""
+
+# c685a29a29eb44f98ef7d19dc0978ed8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:13
+msgid "Create a Standalone Group"
+msgstr ""
+
+# 33643a4602be45a1b707c60e35d04085
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:17
+msgid "``grouping_elements_ex01.py``"
+msgstr ""
+
+# efd94909a03d4ac6b67f376a2f97364d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:23
+msgid ":download:`../../../examples/grouping_elements_ex01.py`"
+msgstr ""
+
+# ce9f619fdeb348ebb932e1acf3b8ecb5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:32
+msgid "Create a Group on Geometry"
+msgstr ""
+
+# b4933694da724b6dbe8aac06260b5d91
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:36
+msgid "``grouping_elements_ex02.py``"
+msgstr ""
+
+# 7107a498cdc044f697c2309d05d7b626
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:42
+msgid ":download:`../../../examples/grouping_elements_ex02.py`"
+msgstr ""
+
+# a21f0e2bcf474b89b4d1d81660be451e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:47
+msgid "Create a Group on Filter"
+msgstr ""
+
+# 94708eb1603c4290a41abcbc4c65e23a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:51
+msgid "``grouping_elements_ex03.py``"
+msgstr ""
+
+# c055a286339c42f9abeff58eb1627edb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:57
+msgid ":download:`../../../examples/grouping_elements_ex03.py`"
+msgstr ""
+
+# 017ddf308a744a8a80ecadb90fc9afeb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:62
+msgid "Edit a Group"
+msgstr ""
+
+# 44b5e88de4f94adfb04e72de0af0961d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:66
+msgid "``grouping_elements_ex04.py``"
+msgstr ""
+
+# 6c7b0f9d495843e7ace6be6ceafb4b7e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:72
+msgid ":download:`../../../examples/grouping_elements_ex04.py`"
+msgstr ""
+
+# 259559a09b5d4a7aa5341005d1bb4030
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:81
+msgid "Union of groups"
+msgstr ""
+
+# 9d2a4762350a46d8ae13943b51245742
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:85
+msgid "``grouping_elements_ex05.py``"
+msgstr ""
+
+# 7f4f67b3c7534e9c955ebcdf671b473a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:91
+msgid ":download:`../../../examples/grouping_elements_ex05.py`"
+msgstr ""
+
+# 3ed79769097448299091c040b08e0c33
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:100
+msgid "Intersection of groups"
+msgstr ""
+
+# bea440376ec44c5ca7d569e70131360b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:104
+msgid "``grouping_elements_ex06.py``"
+msgstr ""
+
+# 35894b83067447ddac86733da1388d99
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:110
+msgid ":download:`../../../examples/grouping_elements_ex06.py`"
+msgstr ""
+
+# a148c83e4a70413c879340f761e8ab50
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:119
+msgid "Cut of groups"
+msgstr ""
+
+# 8dfec4cdb7474b089635f725049d40fc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:123
+msgid "``grouping_elements_ex07.py``"
+msgstr ""
+
+# 301f2d0fdf92422dae26c42c7a0cbc6f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:129
+msgid ":download:`../../../examples/grouping_elements_ex07.py`"
+msgstr ""
+
+# cbeebd8ad9d644a890f18c93d68ece31
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:138
+msgid "Creating groups of entities basing on nodes of other groups"
+msgstr ""
+
+# 95318b6177c74648acbd055014e45b1e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:142
+msgid "``grouping_elements_ex08.py``"
+msgstr ""
+
+# 98ca427d8a374b269637ae39951272d8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:148
+msgid ":download:`../../../examples/grouping_elements_ex08.py`"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tui_measurements.po b/doc/gui/locale/fr/LC_MESSAGES/tui_measurements.po
new file mode 100644 (file)
index 0000000..c531f05
--- /dev/null
@@ -0,0 +1,69 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# fcf1848f5fc64f4b9238b081ed8257d2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:5
+msgid "Measurements"
+msgstr ""
+
+# 37e730455ef24c8890f0c9cb06265fa5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:9
+msgid "Minimum Distance"
+msgstr ""
+
+# 4f8eb655f7d94344889df89550d28110
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:13
+msgid "``measurements_ex01.py``"
+msgstr ""
+
+# 9bd28729817f4b55a7bad0866aad3a11
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:19
+msgid ":download:`../../../examples/measurements_ex01.py`"
+msgstr ""
+
+# 55053f612a8944e497ece47425b6a60b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:24
+msgid "Bounding Box"
+msgstr ""
+
+# ac6650de22da46af8d3fc1feb70f392c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:28
+msgid "``measurements_ex02.py``"
+msgstr ""
+
+# 586956e8468b49ee963f0cd5ba48a639
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:34
+msgid ":download:`../../../examples/measurements_ex02.py`"
+msgstr ""
+
+# de1f00c886e04eaea481b695ad8272bb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:39
+msgid "Basic Properties"
+msgstr ""
+
+# 2ae18065fdb64633abf5d333546de3ed
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:43
+msgid "``measurements_ex03.py``"
+msgstr ""
+
+# e7d49eb227cd456fb619045a95dd6326
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:49
+msgid ":download:`../../../examples/measurements_ex03.py`"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tui_modifying_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/tui_modifying_meshes.po
new file mode 100644 (file)
index 0000000..b6afe1b
--- /dev/null
@@ -0,0 +1,429 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# aada02ed87e9482991a105a7096b13b9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:5
+msgid "Modifying Meshes"
+msgstr ""
+
+# 4fca5d359462431bbfb1a297c6f1c015
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:0
+msgid "`Table of contents`"
+msgstr ""
+
+# 3882fd88f2be46d2bf046435d1ab6116
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:13
+msgid "Adding Nodes and Elements"
+msgstr ""
+
+# 2912e95b7a304f02ac3e3a0f6b492e1f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:18
+msgid "Add Node"
+msgstr ""
+
+# e937ad8c1eee48b89418d8c87e754c40
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:22
+msgid "``modifying_meshes_ex01.py``"
+msgstr ""
+
+# 93520ad0813442f18bdf9a0b3def23f5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:28
+msgid ":download:`../../../examples/modifying_meshes_ex01.py`"
+msgstr ""
+
+# e015d501736443c787c8448daa4b1cf4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:33
+msgid "Add 0D Element"
+msgstr ""
+
+# 07f05da961cb4e3aa357c1125efd0dfa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:37
+msgid "``modifying_meshes_ex02.py``"
+msgstr ""
+
+# 8cd7162f281041e998a16ba15b6a2afd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:43
+msgid ":download:`../../../examples/modifying_meshes_ex02.py`"
+msgstr ""
+
+# 9ae5e80e36414b81bb414c6e3dbc0401
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:48
+msgid "Add 0D Element on Element Nodes"
+msgstr ""
+
+# 4ce9e69888e54ea6bc3d8123892df4bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:52
+msgid "``modifying_meshes_ex03.py``"
+msgstr ""
+
+# 1fc33b2f5afe4ef39a3e0386470702c7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:58
+msgid ":download:`../../../examples/modifying_meshes_ex03.py`"
+msgstr ""
+
+# 1b9d3c3a725b450e9ca4646848ed26e1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:63
+msgid "Add Edge"
+msgstr ""
+
+# ecdca588cdd84ff8aa87f45abec12590
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:67
+msgid "``modifying_meshes_ex04.py``"
+msgstr ""
+
+# 97c1b92363944e539c1d9b466977e5bd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:73
+msgid ":download:`../../../examples/modifying_meshes_ex04.py`"
+msgstr ""
+
+# af3bdd72bc624e11aaf32fbb7e915f29
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:78
+msgid "Add Triangle"
+msgstr ""
+
+# 3863dc59cd09494b904f960891c29256
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:82
+msgid "``modifying_meshes_ex05.py``"
+msgstr ""
+
+# 52380a726927405b899c634d3ee0c922
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:88
+msgid ":download:`../../../examples/modifying_meshes_ex05.py`"
+msgstr ""
+
+# ad7815a0144e444b9f1ffead0f73a605
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:93
+msgid "Add Quadrangle"
+msgstr ""
+
+# 1033fb8fc9a74063b718f6bb688d67bd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:97
+msgid "``modifying_meshes_ex06.py``"
+msgstr ""
+
+# 1c0f1e73f76640a89cf49c530537d010
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:103
+msgid ":download:`../../../examples/modifying_meshes_ex06.py`"
+msgstr ""
+
+# 0685aeaebe4c481c91a0b527c967396e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:108
+msgid "Add Tetrahedron"
+msgstr ""
+
+# 941189d082ff4a3f8e4b8ebb23f0d2f3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:112
+msgid "``modifying_meshes_ex07.py``"
+msgstr ""
+
+# dfa8e48ee2fc4165aa775033e6b052ea
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:118
+msgid ":download:`../../../examples/modifying_meshes_ex07.py`"
+msgstr ""
+
+# 5a5f7874626d427ea5a7fb55e797fa66
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:123
+msgid "Add Hexahedron"
+msgstr ""
+
+# b651ec6bdb5246e0aaf99bc1acb35d9f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:127
+msgid "``modifying_meshes_ex08.py``"
+msgstr ""
+
+# 418525e42ce74f7094b73b1413abfdae
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:133
+msgid ":download:`../../../examples/modifying_meshes_ex08.py`"
+msgstr ""
+
+# bae866607b304e0fbb9907ca192aa2ee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:138
+msgid "Add Polygon"
+msgstr ""
+
+# ecf9edb8d0994d9cbe4d186a66912cbc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:142
+msgid "``modifying_meshes_ex09.py``"
+msgstr ""
+
+# 52080c13dd784dabb391ab937ca983a9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:148
+msgid ":download:`../../../examples/modifying_meshes_ex09.py`"
+msgstr ""
+
+# 07055770fb864145b907da2b4909b703
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:153
+msgid "Add Polyhedron"
+msgstr ""
+
+# b1442132c7dc4cbd9f868b181428dcaa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:157
+msgid "``modifying_meshes_ex10.py``"
+msgstr ""
+
+# ed0593751615424989125f0586ac3936
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:163
+msgid ":download:`../../../examples/modifying_meshes_ex10.py`"
+msgstr ""
+
+# 9b285274402b48658860b32294e8dac5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:168
+msgid "Removing Nodes and Elements"
+msgstr ""
+
+# b436e294d1214a44ac54a0fab50212bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:173
+msgid "Removing Nodes"
+msgstr ""
+
+# 2f66f5eef3344132ba6c582bc1192a7e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:177
+msgid "``modifying_meshes_ex11.py``"
+msgstr ""
+
+# 32c27c776f6741d79e21444ad7e7f223
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:183
+msgid ":download:`../../../examples/modifying_meshes_ex11.py`"
+msgstr ""
+
+# af6993ae032c44f2956ef6b1b7219fa1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:188
+msgid "Removing Elements"
+msgstr ""
+
+# 6e2bc2d438014d5c91bf0650d0b93f62
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:192
+msgid "``modifying_meshes_ex12.py``"
+msgstr ""
+
+# dbcc049e4aba43d7943cd5d4e59f68b1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:198
+msgid ":download:`../../../examples/modifying_meshes_ex12.py`"
+msgstr ""
+
+# 8c6510d0103043a3b6d6c5009c58c140
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:203
+msgid "Removing Orphan Nodes"
+msgstr ""
+
+# a62084880a3d4d99a920c5c7d64c35d0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:207
+msgid "``modifying_meshes_ex13.py``"
+msgstr ""
+
+# 65829ed7318d44e5b213e4476cb88975
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:213
+msgid ":download:`../../../examples/modifying_meshes_ex13.py`"
+msgstr ""
+
+# 072e7fda68214ff6a9e82bb46d9e7b54
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:218
+msgid "Moving Nodes"
+msgstr ""
+
+# 6241da425fc341a6972bc52709c9f17d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:222
+msgid "``modifying_meshes_ex15.py``"
+msgstr ""
+
+# 761b5555313b4de6b6658a24bd1c5943
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:228
+msgid ":download:`../../../examples/modifying_meshes_ex15.py`"
+msgstr ""
+
+# eae98f1d881f47ad856d133c7fcf647d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:233
+msgid "Diagonal Inversion"
+msgstr ""
+
+# 17f8656a2043438498d5faa309d9db3f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:237
+msgid "``modifying_meshes_ex16.py``"
+msgstr ""
+
+# 93dd916eca644dfa818c988ce6a3ba6a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:243
+msgid ":download:`../../../examples/modifying_meshes_ex16.py`"
+msgstr ""
+
+# f29b26e5fc1e4f5ab64a01d46874bcca
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:248
+msgid "Uniting two Triangles"
+msgstr ""
+
+# ee685e2cbc4c45adabf0313c94ab265d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:252
+msgid "``modifying_meshes_ex17.py``"
+msgstr ""
+
+# 760efa3959614773944130605e38d103
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:258
+msgid ":download:`../../../examples/modifying_meshes_ex17.py`"
+msgstr ""
+
+# 0e8309d52aa24136bc511e7c8cbae48a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:263
+msgid "Uniting a Set of Triangles"
+msgstr ""
+
+# 09b737cbe2c0409983ecb054dbe346b0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:267
+msgid "``modifying_meshes_ex18.py``"
+msgstr ""
+
+# dffc67da027e422ea2d6731b538e248f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:273
+msgid ":download:`../../../examples/modifying_meshes_ex18.py`"
+msgstr ""
+
+# 0a3c94c6a162420aaae25531382282aa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:278
+msgid "Orientation"
+msgstr ""
+
+# b1c35bc3190c43c3ab90cc1c1d71526b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:282
+msgid "``modifying_meshes_ex19.py``"
+msgstr ""
+
+# d03db5ed6b0346eaba85dc3df49eeb2a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:288
+msgid ":download:`../../../examples/modifying_meshes_ex19.py`"
+msgstr ""
+
+# 6d1a49f7262a485295850a85e54992e9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:293
+msgid "Cutting Quadrangles"
+msgstr ""
+
+# c838a6074c60435a8113adb2e75db894
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:297
+msgid "``modifying_meshes_ex20.py``"
+msgstr ""
+
+# d0de4068046e44848a15fbf4eea6deb9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:303
+msgid ":download:`../../../examples/modifying_meshes_ex20.py`"
+msgstr ""
+
+# ad37ede65d2f46a8b22efc9d19e6b347
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:308
+msgid "Smoothing"
+msgstr ""
+
+# d705f65980314385901c4316f258235e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:312
+msgid "``modifying_meshes_ex21.py``"
+msgstr ""
+
+# 8c8d9acaabed4ddb892a839ea88c6e42
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:318
+msgid ":download:`../../../examples/modifying_meshes_ex21.py`"
+msgstr ""
+
+# 4cb97b8e8f2a44558385dbbce875e7c4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:323
+msgid "Extrusion"
+msgstr ""
+
+# df3a417c2dce420abdd0669fbb74ce9f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:327
+msgid "``modifying_meshes_ex22.py``"
+msgstr ""
+
+# 23e499ee8ac64a2283c6b7e195610dac
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:333
+msgid ":download:`../../../examples/modifying_meshes_ex22.py`"
+msgstr ""
+
+# 37b48cd5b20a4e3a9e23fd93831e395c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:338
+msgid "Extrusion along a Path"
+msgstr ""
+
+# e15b81f2dc884607b96325a960a0a814
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:342
+msgid "``modifying_meshes_ex23.py``"
+msgstr ""
+
+# 59666ee96fec4ddd866a6f9608742380
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:348
+msgid ":download:`../../../examples/modifying_meshes_ex23.py`"
+msgstr ""
+
+# 4d4ccc2f066246a7a5aeb153f5cdae2c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:353
+msgid "Revolution"
+msgstr ""
+
+# 8b7cde33b28d413c9572c095b91f4adc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:357
+msgid "``modifying_meshes_ex24.py``"
+msgstr ""
+
+# ad888657b3eb4279b21d70ae77361803
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:363
+msgid ":download:`../../../examples/modifying_meshes_ex24.py`"
+msgstr ""
+
+# be6c231c208445c4b20afdd211012acd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:368
+msgid "Pattern Mapping"
+msgstr ""
+
+# 952a2de3d76145639d9519752e453883
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:372
+msgid "``modifying_meshes_ex25.py``"
+msgstr ""
+
+# 325e04d139ca400dbdcc2860a1624425
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:378
+msgid ":download:`../../../examples/modifying_meshes_ex25.py`"
+msgstr ""
+
+# ee3a18d7cd0d4e168fb38e013f8e7d9b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:383
+msgid "Convert mesh to/from quadratic"
+msgstr ""
+
+# ccf9ab173a504d459c9a4bf914326489
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:387
+msgid "``modifying_meshes_ex26.py``"
+msgstr ""
+
+# fcb2a25c83fe400cbd804504e046b28a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:393
+msgid ":download:`../../../examples/modifying_meshes_ex26.py`"
+msgstr ""
+
+# 2345c457190f43888ddecd3a2b12558a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:398
+msgid "Split bi-quadratic into linear"
+msgstr ""
+
+# ede71e5407594b6197cb58e6b1c92ed4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:402
+msgid "``split_biquad.py``"
+msgstr ""
+
+# 57fa3126ba154d68acfd6079690d5e3d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:408
+msgid ":download:`../../../examples/split_biquad.py`"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tui_notebook_smesh.po b/doc/gui/locale/fr/LC_MESSAGES/tui_notebook_smesh.po
new file mode 100644 (file)
index 0000000..61a6348
--- /dev/null
@@ -0,0 +1,39 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 4e9993722e1649209e71f7d58df0c727
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_notebook_smesh.rst:6
+msgid "Using SALOME NoteBook"
+msgstr ""
+
+# 3ef41e73f8bb4aa8acc925fdf9579609
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_notebook_smesh.rst:11
+msgid "Notebook Smesh"
+msgstr ""
+
+# b30507833c0642d5a57fcfd094ffd345
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_notebook_smesh.rst:15
+msgid "``notebook_smesh.py``"
+msgstr ""
+
+# 19ab428fafa443aa83e77dd359b6c74a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_notebook_smesh.rst:21
+msgid ":download:`../../../examples/notebook_smesh.py`"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tui_prism_3d_algo.po b/doc/gui/locale/fr/LC_MESSAGES/tui_prism_3d_algo.po
new file mode 100644 (file)
index 0000000..af7456b
--- /dev/null
@@ -0,0 +1,39 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 7db5116cadad4c5d8ef9c5b1562f3dd0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_prism_3d_algo.rst:5
+msgid "Use Extrusion 3D meshing algorithm"
+msgstr ""
+
+# 59d16afb08774f12bf587dcb9abeb044
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_prism_3d_algo.rst:10
+msgid "``prism_3d_algo.py``"
+msgstr ""
+
+# 4b2c1b045b1149e3933960789e9d33f8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_prism_3d_algo.rst:16
+msgid ":download:`../../../examples/prism_3d_algo.py`"
+msgstr ""
+
+# dbe9fc1e748e455b8069f3c2ef87c23b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_prism_3d_algo.rst:18
+msgid "The result geometry and mesh is shown below"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tui_quality_controls.po b/doc/gui/locale/fr/LC_MESSAGES/tui_quality_controls.po
new file mode 100644 (file)
index 0000000..af13b95
--- /dev/null
@@ -0,0 +1,359 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 79e35e7183f44391bd0127332a78edfe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:5
+msgid "Quality Controls"
+msgstr ""
+
+# 4ce27f26de8842b5882924b1323f02f0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:0
+msgid "`Table of contents`"
+msgstr ""
+
+# 13768e85664a4fbc9881a3b17ed9ca05
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:13
+msgid "Free Borders"
+msgstr ""
+
+# 784ab797573c410fafb9fac67dc78051
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:17
+msgid "``quality_controls_ex01.py``"
+msgstr ""
+
+# fe45863436994e299ea06bcbfe306d6a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:23
+msgid ":download:`../../../examples/quality_controls_ex01.py`"
+msgstr ""
+
+# 3697f0194b364c83b756020ca6fb1804
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:29
+msgid "Borders at Multiconnection"
+msgstr ""
+
+# 92041fa12d294bd595c2c941ffad513f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:33
+msgid "``quality_controls_ex02.py``"
+msgstr ""
+
+# 1e7eaf4082714e01a1aeaa620a0fe01a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:39
+msgid ":download:`../../../examples/quality_controls_ex02.py`"
+msgstr ""
+
+# 8f3f90612ac645d39883bd1eb3fb30c7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:45
+msgid "Length 1D"
+msgstr ""
+
+# ecf20a9ecb9c4fcda965d671b55228fc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:49
+msgid "``quality_controls_ex03.py``"
+msgstr ""
+
+# 6bc7e3d4d48b45b5b436431a5bec19cc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:55
+msgid ":download:`../../../examples/quality_controls_ex03.py`"
+msgstr ""
+
+# d9f495d0a4464f11a9d256e46d45077d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:60
+msgid "Free Edges"
+msgstr ""
+
+# e5accfde373a4e2da11426532b5856a7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:64
+msgid "``quality_controls_ex04.py``"
+msgstr ""
+
+# ab630a0aa6fb404d87ed3bc702d050fd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:70
+msgid ":download:`../../../examples/quality_controls_ex04.py`"
+msgstr ""
+
+# 33edc58357a54da4b3d21406a4741ec6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:75
+msgid "Free Nodes"
+msgstr ""
+
+# 5ac5533032ef41f3974884acac5237c8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:79
+msgid "``quality_controls_ex05.py``"
+msgstr ""
+
+# b41c2828c4d24907a9f5a295b98b6f38
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:85
+msgid ":download:`../../../examples/quality_controls_ex05.py`"
+msgstr ""
+
+# c613dab5d0094c8a83696ffcc0be8137
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:90
+msgid "Free Faces"
+msgstr ""
+
+# 9c4dc5aebc9d4a5c83c0f0c4b2e1ed71
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:94
+msgid "``quality_controls_ex06.py``"
+msgstr ""
+
+# ba6f37b8eb7c41498d9e8271516a59e2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:100
+msgid ":download:`../../../examples/quality_controls_ex06.py`"
+msgstr ""
+
+# cf887f0dfa12482699950d6b3bb5b489
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:105
+msgid "Bare border faces"
+msgstr ""
+
+# e9b4af9d5633486483b4581effe13ae1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:109
+msgid "``quality_controls_ex07.py``"
+msgstr ""
+
+# 421b24a8d0314244819cf31b2ba0df93
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:115
+msgid ":download:`../../../examples/quality_controls_ex07.py`"
+msgstr ""
+
+# e186909d87774c88b5fa8b58f4757531
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:120
+msgid "Bare border volumes"
+msgstr ""
+
+# 346b907637574b70850ba0187a54856a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:124
+msgid "``quality_controls_ex08.py``"
+msgstr ""
+
+# ca2ca668a94b4fdf84534f6f73a8e482
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:130
+msgid ":download:`../../../examples/quality_controls_ex08.py`"
+msgstr ""
+
+# a389f8939d7349ae8a414b546001eacc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:135
+msgid "Over-constrained faces"
+msgstr ""
+
+# b2272c5024894b84815d4244be43d178
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:139
+msgid "``quality_controls_ex09.py``"
+msgstr ""
+
+# f6711314bc0047cdbcb22ae22a025745
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:145
+msgid ":download:`../../../examples/quality_controls_ex09.py`"
+msgstr ""
+
+# 0d87bea8ab484e5fbb9d4b46165d14f3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:150
+msgid "Over-constrained volumes"
+msgstr ""
+
+# f9ee64a6c6804e86b31cc06dba160ea4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:154
+msgid "``quality_controls_ex10.py``"
+msgstr ""
+
+# cab30492fe664ee791dbe30414b25a15
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:160
+msgid ":download:`../../../examples/quality_controls_ex10.py`"
+msgstr ""
+
+# 5b75b5252edd4fbbbb236c8580b3b1de
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:165
+msgid "Length 2D"
+msgstr ""
+
+# 21bab48b6c384b9991ddc1a4a8b355c5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:169
+msgid "``quality_controls_ex11.py``"
+msgstr ""
+
+# f5021d6d120c49fc99f62e989a2b3599
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:175
+msgid ":download:`../../../examples/quality_controls_ex11.py`"
+msgstr ""
+
+# 431b0039fcb4463ea06170622fbe46b8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:181
+msgid "Borders at Multiconnection 2D"
+msgstr ""
+
+# 579da091c4ab45e7a67f51737e6a6a22
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:185
+msgid "``quality_controls_ex12.py``"
+msgstr ""
+
+# 773748f0ac774c37b85791ebaa103976
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:191
+msgid ":download:`../../../examples/quality_controls_ex12.py`"
+msgstr ""
+
+# 0ceaa76eff2d4ac18c5883cddfc2b476
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:196
+msgid "Area"
+msgstr ""
+
+# ba82af02297e417fa93d810f93e87b16
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:200
+msgid "``quality_controls_ex13.py``"
+msgstr ""
+
+# ac09692057fb491191406ddcc11916d5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:206
+msgid ":download:`../../../examples/quality_controls_ex13.py`"
+msgstr ""
+
+# ba175a6522794c8281355cc289b803c4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:211
+msgid "Taper"
+msgstr ""
+
+# 8c9c6c79352b477184b6ccd7adf3f847
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:215
+msgid "``quality_controls_ex14.py``"
+msgstr ""
+
+# 57171e329029469088e8aa018c3cfa24
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:221
+msgid ":download:`../../../examples/quality_controls_ex14.py`"
+msgstr ""
+
+# c09aa0dda0f541d89a8da4725768169e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:226
+msgid "Aspect Ratio"
+msgstr ""
+
+# f207685150274592aec124e1bad1dc57
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:230
+msgid "``quality_controls_ex15.py``"
+msgstr ""
+
+# a718df3177fe4c939748b5b72acf45fa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:236
+msgid ":download:`../../../examples/quality_controls_ex15.py`"
+msgstr ""
+
+# 43f52454c1d44983aaf12519eb39b8e8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:241
+msgid "Minimum Angle"
+msgstr ""
+
+# 5b4eb968388c4158bcccd8aca32ac97b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:245
+msgid "``quality_controls_ex16.py``"
+msgstr ""
+
+# d155445c01c4476a8d6bf73c3017ac1e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:251
+msgid ":download:`../../../examples/quality_controls_ex16.py`"
+msgstr ""
+
+# f9fe7e4ee15645e9b6073ae8816dcce2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:256
+msgid "Warping"
+msgstr ""
+
+# 4f1675ddc859489e965531d752285526
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:260
+msgid "``quality_controls_ex17.py``"
+msgstr ""
+
+# edd793ad3f21412b8f77253b4b980e06
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:266
+msgid ":download:`../../../examples/quality_controls_ex17.py`"
+msgstr ""
+
+# 3a5139d6a0bf49b29d10f100cd96ae64
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:271
+msgid "Skew"
+msgstr ""
+
+# 62a3783633ba46da9f519209bb3c2705
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:275
+msgid "``quality_controls_ex18.py``"
+msgstr ""
+
+# f9544382e94c42cab5eeb4c9d549506c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:281
+msgid ":download:`../../../examples/quality_controls_ex18.py`"
+msgstr ""
+
+# a308653df1364d25838e9030a5f35f83
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:286
+msgid "Element Diameter 2D"
+msgstr ""
+
+# 75ca6180045b40b3bff2bcbdf3617331
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:290
+msgid "``quality_controls_ex19.py``"
+msgstr ""
+
+# e16559cbcea74e92b25fdc069a30b633
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:296
+msgid ":download:`../../../examples/quality_controls_ex19.py`"
+msgstr ""
+
+# 8b48cb86d5e34dde9a2d4414626e19b3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:301
+msgid "Aspect Ratio 3D"
+msgstr ""
+
+# e073edd069be4a5bbfd6267667a2d965
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:305
+msgid "``quality_controls_ex20.py``"
+msgstr ""
+
+# 426b4f7acc9b4d7798cb831383ed3595
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:311
+msgid ":download:`../../../examples/quality_controls_ex20.py`"
+msgstr ""
+
+# 0db14d711d0a47f788c3d16f49396926
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:316
+msgid "Volume"
+msgstr ""
+
+# 7ede37ac5a404c8080b9491960ce259d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:320
+msgid "``quality_controls_ex21.py``"
+msgstr ""
+
+# 6a96fbb599dd453f9eba8ff1be16ce24
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:326
+msgid ":download:`../../../examples/quality_controls_ex21.py`"
+msgstr ""
+
+# b41bc7c1334841aea8f91d8456a372f7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:331
+msgid "Element Diameter 3D"
+msgstr ""
+
+# 292ed9f29bba49018744a8a9e87493c9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:335
+msgid "``quality_controls_ex22.py``"
+msgstr ""
+
+# 599768d716b2417ab5a7e0410353aa8b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:341
+msgid ":download:`../../../examples/quality_controls_ex22.py`"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tui_transforming_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/tui_transforming_meshes.po
new file mode 100644 (file)
index 0000000..0edf784
--- /dev/null
@@ -0,0 +1,224 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 29bf61a3b72547389506b6a4965bd37c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:5
+msgid "Transforming Meshes"
+msgstr ""
+
+# 57af2fd00488467fb00a9e03a72759c0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:0
+msgid "`Table of contents`"
+msgstr ""
+
+# 1c60f8c47a3e4be98e503c34b554dc09
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:13
+msgid "Translation"
+msgstr ""
+
+# b878258a6bf448e1b9830f1c73f41637
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:17
+msgid "``transforming_meshes_ex01.py``"
+msgstr ""
+
+# 1766f2bf2ab24dc988ad390de07e89ad
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:23
+msgid ":download:`../../../examples/transforming_meshes_ex01.py`"
+msgstr ""
+
+# af8b339fa0fe4dc982b2796537a795db
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:28
+msgid "Rotation"
+msgstr ""
+
+# 3e8063e2480b4f8ba76ec78c425f49dd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:32
+msgid "``transforming_meshes_ex02.py``"
+msgstr ""
+
+# 9fe78b8a34c348d59749f25e7335d14c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:38
+msgid ":download:`../../../examples/transforming_meshes_ex02.py`"
+msgstr ""
+
+# aa586e69c42a4abd8923ddd1b7ab0cf0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:43
+msgid "Scale"
+msgstr ""
+
+# 3ae31c66014b45ad83a413a5c6235bdb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:47
+msgid "``transforming_meshes_ex03.py``"
+msgstr ""
+
+# 6493aa79b1714ac492c6850e4cfecbef
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:53
+msgid ":download:`../../../examples/transforming_meshes_ex03.py`"
+msgstr ""
+
+# 66e92a4ad2c84565b94a231fb7c5f32e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:58
+msgid "Symmetry"
+msgstr ""
+
+# 497ee5890c624291b06e090511967f8b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:62
+msgid "``transforming_meshes_ex04.py``"
+msgstr ""
+
+# 5540f43535344d868236748555f493f5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:68
+msgid ":download:`../../../examples/transforming_meshes_ex04.py`"
+msgstr ""
+
+# eaea65b5483d45a89c341a5703e35a03
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:73
+msgid "Merging Nodes"
+msgstr ""
+
+# a1c5602d67184c2c971d7820782b32dd
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:77
+msgid "``transforming_meshes_ex05.py``"
+msgstr ""
+
+# 5d0bda0b10c343c99f7dbbca2224798a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:83
+msgid ":download:`../../../examples/transforming_meshes_ex05.py`"
+msgstr ""
+
+# 14edd06325a34255bce5f7a6a84d8b43
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:88
+msgid "Merging Elements"
+msgstr ""
+
+# 7910501187be43ad8347f57291429a5b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:92
+msgid "``transforming_meshes_ex06.py``"
+msgstr ""
+
+# c772435312ae4ec491cf1b0620c82f7a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:98
+msgid ":download:`../../../examples/transforming_meshes_ex06.py`"
+msgstr ""
+
+# 0dcc87a2f6ff443f834bd65409e3f0ea
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:103
+msgid "Sew Meshes Border to Side"
+msgstr ""
+
+# e513c5cff88c4988b5b348e62e405230
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:107
+msgid "``transforming_meshes_ex07.py``"
+msgstr ""
+
+# 9c1952b3506047d18c737045e2ac7948
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:113
+msgid ":download:`../../../examples/transforming_meshes_ex07.py`"
+msgstr ""
+
+# 6d328da4f3e643cdaa0d3918489b374c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:118
+msgid "Sew Conform Free Borders"
+msgstr ""
+
+# a465d0a871a74164817c27b0f9221e2c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:122
+msgid "``transforming_meshes_ex08.py``"
+msgstr ""
+
+# bb8c800633044961980283b51ee5c778
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:128
+msgid ":download:`../../../examples/transforming_meshes_ex08.py`"
+msgstr ""
+
+# 5891f30fd4a54ff6b456551a455b870f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:133
+msgid "Sew Free Borders"
+msgstr ""
+
+# 20626fb04a77496fbd712257159998bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:137
+msgid "``transforming_meshes_ex09.py``"
+msgstr ""
+
+# c4a9a4507341432890f2792f0f7001c9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:143
+msgid ":download:`../../../examples/transforming_meshes_ex09.py`"
+msgstr ""
+
+# 9e70aa09d8274ba794836660edf208d2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:148
+msgid "Sew Side Elements"
+msgstr ""
+
+# 76fe380dea9a4fa79d1e11790bd51f38
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:152
+msgid "``transforming_meshes_ex10.py``"
+msgstr ""
+
+# 016d984b3be4476bb71ae33174b0f927
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:158
+msgid ":download:`../../../examples/transforming_meshes_ex10.py`"
+msgstr ""
+
+# ed239c8e17e343f7956d9344959a9f07
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:163
+msgid "Duplicate nodes or/and elements"
+msgstr ""
+
+# 65dee1a957b646d4a17602e87ae626bf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:167
+msgid "``transforming_meshes_ex11.py``"
+msgstr ""
+
+# 10f039ec9f1b48eebe57b990c2304fa9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:173
+msgid ":download:`../../../examples/transforming_meshes_ex11.py`"
+msgstr ""
+
+# 5f67454206644f72825d645d1844ab73
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:178
+msgid "Create boundary elements"
+msgstr ""
+
+# 4bb99511ee02479cb382af3532557158
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:182
+msgid "``transforming_meshes_ex12.py``"
+msgstr ""
+
+# 6b7afe9a5e55413cb8b60ae64081928f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:188
+msgid ":download:`../../../examples/transforming_meshes_ex12.py`"
+msgstr ""
+
+# 5d157cdb1ae345e6a6108ab5fef97706
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:193
+msgid "Reorient faces"
+msgstr ""
+
+# fdccce5846f243c38659c5aed18b65ee
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:197
+msgid "``transforming_meshes_ex13.py``"
+msgstr ""
+
+# 4a4fc603eaef4c1c8c7b97fab58caf4f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:203
+msgid ":download:`../../../examples/transforming_meshes_ex13.py`"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tui_use_existing_faces.po b/doc/gui/locale/fr/LC_MESSAGES/tui_use_existing_faces.po
new file mode 100644 (file)
index 0000000..f5b434b
--- /dev/null
@@ -0,0 +1,47 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 951c6da30ad24b41a53bd5090cddd9e4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_use_existing_faces.rst:5
+msgid "Usage of \"Use Faces to be Created Manually\" algorithm"
+msgstr ""
+
+# 536bc28ccf7f4fe786270b527629af3a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_use_existing_faces.rst:7
+msgid ""
+"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."
+msgstr ""
+
+# 2537c7e3239b4e27b40a16eeab20f448
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_use_existing_faces.rst:13
+msgid "``use_existing_faces.py``"
+msgstr ""
+
+# e89473b2cd0d482fba928f49c9c70c6b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_use_existing_faces.rst:19
+msgid ":download:`../../../examples/use_existing_faces.py`"
+msgstr ""
+
+# 41d2468e00404babb8fc1036478c0796
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_use_existing_faces.rst:21
+msgid "Resulting mesh:"
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/tui_viewing_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/tui_viewing_meshes.po
new file mode 100644 (file)
index 0000000..58095de
--- /dev/null
@@ -0,0 +1,54 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# e75a6ef91ac6493c8cb144a6efc9b307
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst:6
+msgid "Viewing Meshes"
+msgstr ""
+
+# 7c73b9aefc6e4c3bb0e04ee48fb5d8dc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst:11
+msgid "Viewing Mesh Infos"
+msgstr ""
+
+# 1d849688136b4c2e869975603178269e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst:16
+msgid "``viewing_meshes_ex01.py``"
+msgstr ""
+
+# b66d51960c8a44418ae0a7c91f579d72
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst:22
+msgid ":download:`../../../examples/viewing_meshes_ex01.py`"
+msgstr ""
+
+# 425948694a794e66a8915f61cbbf3a8a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst:28
+msgid "Find Element by Point"
+msgstr ""
+
+# 59a17b434af14d5380f3a2424e53b03f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst:32
+msgid "``viewing_meshes_ex02.py``"
+msgstr ""
+
+# 3b8461917abd45b68fb272c988b4eaff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst:38
+msgid ":download:`../../../examples/viewing_meshes_ex02.py`"
+msgstr ""
+
diff --git a/doc/gui/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
new file mode 100644 (file)
index 0000000..eac8cc8
--- /dev/null
@@ -0,0 +1,53 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 38a63190759e43b981ee92c725262d0a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst:6
+msgid "How to work with objects from the GUI ?"
+msgstr ""
+
+# fbf19b7daf9f41af9041147012cfec6b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst:8
+msgid ""
+"It is sometimes useful to work alternatively in the GUI of SALOME and in "
+"the Python Console. To fetch an object from the TUI simply type:"
+msgstr ""
+
+# 0f16302c8b0c4dc1916eb8f8088a68bf
+# 2d00179ccdd3445eac328efd38e46dc9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst:18
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst:27
+msgid "or"
+msgstr ""
+
+# 6b1b647955a643d9875eeb5893adcc13
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst:37
+msgid "All the methods documented in these pages can then be used on myMesh"
+msgstr ""
+
+# 50f1a166cef847658f83228c303bd927
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst:39
+msgid ""
+"The first statement only gives you access to a reference to the object "
+"created via the GUI. But the methods available on this reference are not "
+"exactly the same as those documented in these help pages. This Python API"
+" is meant to be used on smesh.Mesh instances. That's why you'll have to "
+"create such an instance with the second statement."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/uniting_set_of_triangles.po b/doc/gui/locale/fr/LC_MESSAGES/uniting_set_of_triangles.po
new file mode 100644 (file)
index 0000000..b51f6c9
--- /dev/null
@@ -0,0 +1,114 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# f8042d07102047329268efb61e02b9a2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:5
+msgid "Uniting a set of triangles"
+msgstr ""
+
+# a6b547af1c8c4296adddfd3bf6849a03
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:7
+msgid ""
+"It is possible to unite many neighboring triangles into quadrangles by "
+"deletion of the common edge."
+msgstr ""
+
+# f039a145e7f2459ab878bae042d7ef71
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:10
+msgid "**To union several triangles:**"
+msgstr ""
+
+# 6ee1069129ae4a4f8f46b2ac201ec417
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:12
+msgid ""
+"Select a mesh (and display it in the 3D Viewer if you are going to pick "
+"elements by mouse)."
+msgstr ""
+
+# 485bc385f58141c3a3a7560b2e06a6ce
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:13
+msgid ""
+"In the **Modification** menu select the **Union of triangles** item or "
+"click **\"Union of triangles\"** button in the tool-bar."
+msgstr ""
+
+# 1b121a3390c84d18baaac7eb0dd8f178
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:21
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# 9fc7d11072d64e46b333e451a6c1b43c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:26
+msgid ""
+"**The main list** shall contain the triangles which will be united. You "
+"can click on a triangle in the 3D viewer and it will be highlighted. "
+"After that click the **Add** button and the ID of this triangle will be "
+"added to the list. To remove a selected element or elements from the list"
+" click the **Remove** button. The **Sort** button allows to sort the list"
+" of IDs. The **Filter** button allows to apply a definite "
+":ref:`filtering_elements` to selection of triangles."
+msgstr ""
+
+# 092a1e4d360445b09db5d8c37251412f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:27
+msgid ""
+"**Apply to all** radio button allows to apply the operation to all "
+"triangles of the selected mesh."
+msgstr ""
+
+# e7eb65c04f0f444295a0c69df326a9b7
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:28
+msgid "**Preview** provides a preview in the viewer."
+msgstr ""
+
+# 8fb609e2e5db4de6bd2cbf4d0f5526fc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:29
+msgid ""
+"**Criterion** menu allows to choose a quality criterion, which will be "
+"optimized to select triangles to unite."
+msgstr ""
+
+# f84bc27ba947439c9e4d5c378e3b2b79
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:30
+msgid ""
+"**Select from** set of fields allows to choose a sub-mesh or an existing "
+"group whose triangle elements then can be added to the list."
+msgstr ""
+
+# 08c9b313413c4804b0bfdbc252be2301
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:32
+msgid ""
+"Click the **Apply** or **Apply and Close** button to confirm the "
+"operation."
+msgstr ""
+
+# 57153b5d99ab4d89af9d593e0402fe3e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:34
+msgid ""
+"If some selected triangle elements have no adjacent edges with one of the"
+" others, the operation on these elements shall take no effect."
+msgstr ""
+
+# 28a06926cf8d49ec89524b0c68e54bfc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:49
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_uniting_set_of_triangles`"
+" operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/uniting_two_triangles.po b/doc/gui/locale/fr/LC_MESSAGES/uniting_two_triangles.po
new file mode 100644 (file)
index 0000000..e70b866
--- /dev/null
@@ -0,0 +1,68 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# d10d95c85acc44b59aa60cc145c274f1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:5
+msgid "Uniting two triangles"
+msgstr ""
+
+# 7efb4f33b07c4d7c9b96666b50332748
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:7
+msgid ""
+"In MESH you can union two neighboring triangles by deletion of the common"
+" edge."
+msgstr ""
+
+# 0a773ec39a8040e7b6431f0bac5d7e8b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:9
+msgid "**To unite two triangles:**"
+msgstr ""
+
+# 9cd5777e6184434cb5434d682eb64c97
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:11
+msgid ""
+"From the **Modification** menu choose the **Union of two triangles** item"
+" or click **\"Union of two triangles\"** button in the tool-bar."
+msgstr ""
+
+# cc9997ad658044a49b45e7072e7f2702
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:19
+msgid "The following dialog box shall appear:"
+msgstr ""
+
+# 4b000ffa624b43e290c100700553f0ff
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:25
+msgid ""
+"Enter IDs of nodes forming the required edge in the **Edge** field (a "
+"couple of node IDs separated by a dash) or select this edge in the 3D "
+"viewer."
+msgstr ""
+
+# c3db06c8f1e44be388aec4b9659acea1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:26
+msgid "Click the **Apply** or **Apply and Close** button."
+msgstr ""
+
+# 34c5c46c61514edca75e1ef4a0ed3dd2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:41
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_uniting_two_triangles` "
+"operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/use_existing_algos.po b/doc/gui/locale/fr/LC_MESSAGES/use_existing_algos.po
new file mode 100644 (file)
index 0000000..81481e6
--- /dev/null
@@ -0,0 +1,140 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 9256cdd25833423fb9b94c5a521e371c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:5
+msgid "Import Elements from Another Mesh Algorithms"
+msgstr ""
+
+# b62cc448e48e488c9f614f558da02dd9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:7
+msgid ""
+"**Import Elements from Another Mesh** algorithms allow to define the mesh"
+" of a geometrical object by importing suitably located mesh elements from"
+" another mesh. The mesh elements to import from the other mesh should be "
+"contained in groups. If several groups are used to mesh the same "
+"geometry, validity of nodal connectivity of result mesh must be assured "
+"by connectivity of the source mesh; no geometrical checks are performed "
+"to merge different nodes at same locations."
+msgstr ""
+
+# f7645fc4bea24180b90d6cbb03fb814f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:16
+msgid ""
+"The source elements must totally cover the meshed geometry. The source "
+"elements lying partially over the geometry will not be used."
+msgstr ""
+
+# e622165086af4b8ba48b7a0dde755f4e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:19
+msgid ""
+"These algorithms can be used to mesh a very complex geometry part by "
+"part, by storing meshes of parts in files and then fusing them together "
+"using these algorithms."
+msgstr ""
+
+# a156c398751b42b9814c87b3f9445ebf
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:24
+msgid ""
+"**Import 1D Elements from Another Mesh** algorithm allows to define the "
+"mesh of a geometrical edge (or group of edges) by importing mesh edges "
+"contained in a group (or groups) from another mesh."
+msgstr ""
+
+# c7834efef670431bbf92f4eaf9a15904
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:28
+msgid ""
+"To apply this algorithm select the edge to be meshed (indicated in the "
+"field **Geometry** of **Create mesh** dialog box), **Import 1D Elements "
+"from Another Mesh** in the list of 1D algorithms and click the **\"Add "
+"Hypothesis\"** button. The following dialog box will appear:"
+msgstr ""
+
+# 7354dcaf5146486895b6841595b4c80c
+# 341cf4e0e75141898ae652b38faf121a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:37
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:53
+msgid "In this dialog box you can define"
+msgstr ""
+
+# cdab0f64ef27485db96a543b3c67547e
+# 20b666eb31aa426f90c95d45776c3afb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:39
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:55
+msgid "The **Name** of the algorithm."
+msgstr ""
+
+# 615d8cf66218471a8868fbe1a949912b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:40
+msgid "The **Groups of Edges** to import 1D elements from."
+msgstr ""
+
+# 62b46b2d47b14f1db122657a9b4e4e8d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:41
+msgid ""
+"**To copy mesh** checkbox allows to import not only the edges of the "
+"selected **Groups of Edges**, but the whole source mesh. In this case "
+"**To copy groups** checkbox allows to create the same groups as in the "
+"imported source mesh."
+msgstr ""
+
+# 0e44000afb5f46f9a60851e12e7d75ca
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:44
+msgid ""
+"**Import 1D-2D Elements from Another Mesh** algorithm allows to define "
+"the mesh of a geometrical face (or group of faces) by importing mesh "
+"faces contained in a group (or groups) from another (or this) mesh. 1D "
+"elements on the boundary of the geometrical face (if not yet present) are"
+" also created by the algorithm in conformity with the created 2D "
+"elements."
+msgstr ""
+
+# 734d46eb23684f30830e906650b59021
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:46
+msgid ""
+"To apply this algorithm select the geometrical face to be meshed "
+"(indicated in the field **Geometry** of **Create mesh** dialog box), "
+"**Import 1D-2D Elements from Another Mesh** in the list of 2D algorithms "
+"and click the **\"Add Hypothesis\"** button."
+msgstr ""
+
+# 917c2f04ada84399b9596a4fcc837a6f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:48
+msgid "The following dialog box will appear:"
+msgstr ""
+
+# 2e682626bbaf491cbd85c2068ca0cf28
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:56
+msgid "The **Groups of Faces** to import 2D elements from."
+msgstr ""
+
+# 70466a59647642678446f260180f595a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:57
+msgid ""
+"**To copy mesh** checkbox allows to import not only the faces of the "
+"selected **Groups of Faces**, but the whole source mesh. In this case "
+"**To copy groups** checkbox allows to create the same groups as in the "
+"imported source mesh."
+msgstr ""
+
+# 405cfbf9b2154272a1a334322432d98c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:60
+msgid "**See Also** a sample TUI Script of a :ref:`tui_import`."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/using_notebook_smesh_page.po b/doc/gui/locale/fr/LC_MESSAGES/using_notebook_smesh_page.po
new file mode 100644 (file)
index 0000000..d5d707b
--- /dev/null
@@ -0,0 +1,108 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# d1b42be93bda4c598dc059e9c97d1738
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:5
+msgid "Using SALOME NoteBook"
+msgstr ""
+
+# 7c57ab017ac74ff496bcfdc011b95330
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:7
+msgid ""
+"**SALOME NoteBook** allows defining variables to be used for creation and"
+" modification of objects."
+msgstr ""
+
+# 7b838238936644fd9b00305a1c19acca
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:22
+msgid "The following limitations on the use of variables still exist:"
+msgstr ""
+
+# ca33bdf6af554545a419c6a12db08048
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:24
+msgid ""
+":ref:`radial_prism_algo_page` hypothesis - parametrical values are "
+"correctly applied, but they are not restored after \"Update study\" "
+"operation."
+msgstr ""
+
+# cf92e0e4ac844ac2bf2b581b94a28f48
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:25
+msgid ""
+":ref:`a1d_meshing_hypo_page` hypothesis, Distribution with Table Density "
+"and Distribution with Analytic Density - parametrical values are not "
+"applicable."
+msgstr ""
+
+# 8e23f202b73c4dbbbd9535fd1a9263fa
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:26
+msgid ""
+":ref:`translation_page` dialog box, default mode (translation by two "
+"points) - parametrical values are correctly applied, but they are not "
+"restored after \"Update study\" operation."
+msgstr ""
+
+# e84280726e0149aab30e3a2705203e12
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:27
+msgid ""
+":ref:`merging_nodes_page` dialog box - parametrical value (tolerance of "
+"coincident nodes detection) is correctly applied, but it is not restored "
+"after \"Update study\" operation."
+msgstr ""
+
+# ba5deecaf83c41b99bfadd30e03f3f30
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:28
+msgid ""
+":ref:`revolution_page` dialog box - it is impossible to use the angle of "
+"revolution as \"total angle\" if it is defined as variable."
+msgstr ""
+
+# d108675600ea43928a7d2dbecaaf9edc
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:29
+msgid ""
+":ref:`extrusion_along_path_page` dialog box - it is impossible to use "
+"\"Linear variation of the angles\" mode if at least one of those angles "
+"is defined as variable."
+msgstr ""
+
+# 1e2fcf17f43b4aedb6b836d82e796ac9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:30
+msgid ""
+":ref:`pattern_mapping_page` dialog box - parametrical values (indices of "
+"nodes) are correctly applied, but they are not restored after \"Update "
+"study\" operation."
+msgstr ""
+
+# 24c36e2739cd433f863159d254d84480
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:31
+msgid ":ref:`clipping_page` dialog box."
+msgstr ""
+
+# f81d6249e89243e38067caf0ff72c715
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:32
+msgid "**Properties** dialog box."
+msgstr ""
+
+# 8006786080b645a9a6dce82f7c55c761
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:35
+msgid ""
+"Our **TUI Scripts** provide you with useful examples of "
+":ref:`tui_notebook_smesh` ."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/using_operations_on_groups.po b/doc/gui/locale/fr/LC_MESSAGES/using_operations_on_groups.po
new file mode 100644 (file)
index 0000000..00de27c
--- /dev/null
@@ -0,0 +1,196 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 3c64b29aedd340f9a4c8a9d78aa0f748
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:5
+msgid "Boolean operations on groups"
+msgstr ""
+
+# f50fb2f27b1f4af4a4faacb8d02b5544
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:7
+msgid ""
+"In MESH you can perform some Boolean operations on groups, which belong "
+"to one and the same mesh."
+msgstr ""
+
+# 97f7ab96b0304eccbced874f127391d2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:9
+msgid ":ref:`union_anchor`"
+msgstr ""
+
+# a932b7ac781d40d0a5edb2c7df941737
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:10
+msgid ":ref:`intersection_anchor`"
+msgstr ""
+
+# a13e1bae8b714ddc98cd380b550379d1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:11
+msgid ":ref:`cut_anchor`"
+msgstr ""
+
+# 00b67383c6404267952838b0f80e8b42
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:19
+msgid "Union of groups"
+msgstr ""
+
+# a52b1ab225b34f25a71659332c4da5d1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:21
+msgid ""
+"This operation allows to create a new group in such a way that all mesh "
+"elements that are present in the initial groups will be added to the new "
+"one."
+msgstr ""
+
+# 60200864f53047deb846f4787ffe9e2d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:25
+msgid "**To union groups:**"
+msgstr ""
+
+# 79500d1f6301426bbd36582a768b6a4a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:27
+msgid ""
+"In the **Mesh** menu select the **Union Groups** item. The following "
+"dialog box will appear:"
+msgstr ""
+
+# 1fca07005fb24ffd9028c7f192a3fc07
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:32
+msgid ""
+"In this dialog box you should specify the name of the resulting group and"
+" set of groups which will be united."
+msgstr ""
+
+# ddca19009642466bb8d275f0ac369bac
+# ec798971cec54ab08d347741b3caaed4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:34
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:81
+msgid "For example, we have two groups Group1 and Group2."
+msgstr ""
+
+# c360882c3c704fe89dfc555ed6126cdb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:36
+msgid "The result of their **Union** will be Group12:"
+msgstr ""
+
+# e1ddabadb62a4b78a561b88682d45a9f
+# 09a76bcc37364e9d9abd993db5e647c9
+# fbc7d6720ee243639f61dce988a0cbe9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:56
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:103
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:149
+msgid ""
+"Click the **Apply** or **Apply and Close** button to confirm creation of "
+"the group."
+msgstr ""
+
+# 759d086d5318424b8888a2d800212d80
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:59
+msgid ""
+"**See Also** a sample TUI Script of a :ref:`tui_union_of_groups` "
+"operation."
+msgstr ""
+
+# 3917c96854dd4c49a91c7db5f8ebf6ca
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:66
+msgid "Intersection of groups"
+msgstr ""
+
+# c80b258632c84841840f4a316b526287
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:68
+msgid ""
+"This operation allows to create a new group in such a way that all mesh "
+"elements that are present in all initial groups together are added to the"
+" new one."
+msgstr ""
+
+# 79a6317ac7be460c90d3dd02129ce6e4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:72
+msgid "**To intersect groups:**"
+msgstr ""
+
+# 310f0effcfd94de1b16574d971d7501b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:74
+msgid ""
+"In the **Mesh** menu select the **Intersect Groups** item. The following "
+"dialog box will appear:"
+msgstr ""
+
+# a67d12fd3dbf495596b81b85ca9a9411
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:79
+msgid ""
+"In this dialog box you should specify the name of the resulting group and"
+" set of groups which will be intersected."
+msgstr ""
+
+# 83b1d3fb99a64493b25546c6b451cd71
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:83
+msgid "The result of their **Intersection** will be Group12a:"
+msgstr ""
+
+# bf8e4ce41e284392a026fc8aac537630
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:106
+msgid ""
+"**See Also** a sample TUI Script of an :ref:`tui_intersection_of_groups` "
+"operation."
+msgstr ""
+
+# 168729d4492b41f1a2eeb714b66e945f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:113
+msgid "Cut of groups"
+msgstr ""
+
+# 8df8d15c9cba4785ad039fe6971f1106
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:115
+msgid ""
+"This operation allows to create a new group in such a way that all mesh "
+"elements that are present in the main groups but are absent in the tool "
+"groups are added to the new one."
+msgstr ""
+
+# b77c4cdfb3fa4a43930a82ae5ec9af26
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:119
+msgid "**To cut groups:**"
+msgstr ""
+
+# 9ec410a81f794af8b0e54b97fa27f35a
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:121
+msgid ""
+"In the **Mesh** menu select the **Cut Groups** item. The following dialog"
+" box will appear:"
+msgstr ""
+
+# 5c2b88f6382e45e3a960e5617beb146d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:126
+msgid ""
+"In this dialog box you should specify the name of the resulting group and"
+" groups which will be cut."
+msgstr ""
+
+# c7109abb6f4d4929993eaaf8637c2b94
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:128
+msgid ""
+"For example, we have two groups Group1 and Group2. The result of their "
+"**Cut** will be Group12b:"
+msgstr ""
+
+# f96cb4ad1b484af299485dd291e98a6c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:152
+msgid "**See Also** a sample TUI Script of a :ref:`tui_cut_of_groups` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/viewing_meshes_overview.po b/doc/gui/locale/fr/LC_MESSAGES/viewing_meshes_overview.po
new file mode 100644 (file)
index 0000000..750956d
--- /dev/null
@@ -0,0 +1,226 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# e7c7f397cdb442788b36234ecaed36b4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:5
+msgid "Viewing meshes"
+msgstr ""
+
+# 5f14544f8bb44215afc7cb6f42776be1
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:7
+msgid ""
+"By default a just :ref:`compute_anchor` mesh will be automatically "
+"displayed in the **VTK 3D Viewer**. (You can switch off "
+":ref:`automatic_update_pref` preference parameter to prevent this.) Click"
+" **Display only** to hide all other objects at the same time."
+msgstr ""
+
+# e95a2faec0314177b13db4bcab3f6fe3
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:13
+msgid ""
+"**VTK 3D Viewer** is described in detail in the documentation on **GUI "
+"module**."
+msgstr ""
+
+# fff07c0bb4284d2eaad08e009593310f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:15
+msgid ""
+"Use the following :ref:`mesh_preferences_page` to adjust how the mesh is "
+"displayed by default:"
+msgstr ""
+
+# 0e213d2e130042c4b92200c06267346d
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:18
+msgid ":ref:`automatic_update_pref`"
+msgstr ""
+
+# 0bf29579e79a46328055da15ee273959
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:19
+msgid ":ref:`display_mode_pref`"
+msgstr ""
+
+# facc77f7e1e14c09942ca891bca1384b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:20
+msgid ":ref:`quadratic_2d_mode_pref`"
+msgstr ""
+
+# d1ad0b78f4944527824fd60862d10e00
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:21
+msgid "All parameters of :ref:`mesh_tab_preferences` Preferences dialog."
+msgstr ""
+
+# 1237883ac6e54d53a547928795463b49
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:23
+msgid ""
+"After the mesh has appeared in the Viewer, you can select it with left "
+"mouse click and  get information about it, change its presentation "
+"parameters and access to other useful options by right-clicking on the "
+"selected mesh."
+msgstr ""
+
+# 14c6a193f554414ebd2638642e4ff504
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:32
+msgid "**Rename** - allows to rename the object in the Object browser."
+msgstr ""
+
+# 13ebbe480dcb4b4ea5e16fe031657d92
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:33
+msgid "**Hide all** - allows to hide all objects in the viewer."
+msgstr ""
+
+# 519780a62b6d49389742500dfab6143e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:34
+msgid ""
+"**Update** - refreshes the presentation of your mesh in the Object "
+"Browser, applying all recent changes."
+msgstr ""
+
+# 5caead58cb3143509df4049037609bd9
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:35
+msgid ":ref:`mesh_infos_page` -  provides information about the mesh."
+msgstr ""
+
+# 421fa002af414f40a7a8d2519563f734
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:36
+msgid ""
+":ref:`find_element_by_point_page` - allows to find all mesh elements, to "
+"which belongs a point with the given coordinates."
+msgstr ""
+
+# aafb55a6a8e343e18109cc71a79d0786
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:37
+msgid ""
+"**Auto Color** - switch on / off auto-assigning colors for the groups. If"
+" switched on, a default color of a new group in "
+":ref:`creating_groups_page` dialog is chosen randomly."
+msgstr ""
+
+# 054e966cbb504ec1858f0687e9b67f2f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:38
+msgid ""
+":ref`:`numbering_page` - allows to display the ID numbers of all meshing "
+"elements or nodes composing your mesh in the viewer."
+msgstr ""
+
+# e14312ec063d4773952123a9b4b3fc1e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:39
+msgid ""
+":ref:`display_mode_page` - allows to select between Wireframe, Shading "
+"and Nodes presentation."
+msgstr ""
+
+# ed4f7f74007c4d9db01e98c8097d0939
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:40
+msgid ""
+":ref:`display_entity_page` - allows to display entities by types (Faces, "
+"Edges, Volumes etc.)."
+msgstr ""
+
+# 99b9dcc92dcb43ed911a77c3ea1df36f
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:45
+msgid "Quadratic 2D"
+msgstr ""
+
+# cb976db163fb44aea0b89fcf211d1487
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:47
+msgid ""
+"**2D Quadratic** - allows to select between the representation of "
+"quadratic edges as broken **lines** or as **arcs**. A default "
+"representation can be set in :ref:`quadratic_2d_mode_pref`. Arc "
+"representation applies to 1D and 2D elements only."
+msgstr ""
+
+# 3c1dd7b5911c4874b0e8a7e479425439
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:48
+msgid ""
+"**Orientation of faces** - shows vectors of orientation of faces of the "
+"selected mesh. The orientation vector is shown for each 2D mesh element "
+"and for each free facet of a 3D mesh element. The vector direction is "
+"calculated by the first three nodes of the face produced by vectors n1-n2"
+" and n1-n3."
+msgstr ""
+
+# 6d6af7afac6542048d0c655f84303764
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:49
+msgid ""
+":ref:`colors_size_page` - allows to define several visual properties, "
+"including color of elements, shrink size, ..."
+msgstr ""
+
+# 5089d61f57bf403a946be3592a4ad831
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:50
+msgid ""
+":ref:`transparency_page` - allows to change the transparency of mesh "
+"elements."
+msgstr ""
+
+# 3175b5d13d394940a12af858fe3dd9db
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:51
+msgid ""
+":ref:`quality_page` - graphically presents various information about the "
+"mesh."
+msgstr ""
+
+# 990f093d5a0243c492b2a3c91593d3cb
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:52
+msgid "**Hide** - allows to hide the selected mesh from the viewer."
+msgstr ""
+
+# c638a54c583f4a1f97d1977841fdc04b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:53
+msgid ""
+"**Show Only** - allows to display only the selected mesh, hiding all "
+"others from the viewer."
+msgstr ""
+
+# 378028db9d4c4652b324b6c310370de2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:54
+msgid ""
+":ref:`clipping_page` - allows to create cross-sections of the displayed "
+"objects."
+msgstr ""
+
+# 75070b04c6a14b1f97ec58ebffd04bd5
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:55
+msgid ""
+"**Dump view** - exports an object from the viewer in bmp, png or jpeg "
+"image format."
+msgstr ""
+
+# a60f3cf4bcf84fecb6d8f91134e48cd6
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:56
+msgid ""
+"**Change background** - allows to redefine the background color. By "
+"default it is black."
+msgstr ""
+
+# 000b4de0267840d894e6a2d05565a989
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:57
+msgid ""
+"**View Operations** - allows to show/hide the  visualization toolbar in "
+"the Viewer window."
+msgstr ""
+
+# 11c21e53710b45a081a9e40626ea9a14
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:58
+msgid ""
+"**Recording Operations** - allows to show/hide the recording toolbar in "
+"the Viewer window."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/volume.po b/doc/gui/locale/fr/LC_MESSAGES/volume.po
new file mode 100644 (file)
index 0000000..9a80a7f
--- /dev/null
@@ -0,0 +1,60 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 57f538dc718c4981baddee8d1fb421c0
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/volume.rst:5
+msgid "Volume"
+msgstr ""
+
+# 2bc915cd665048fe82b3c2be923c4e8c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/volume.rst:7
+msgid ""
+"**Volume** mesh quality criterion reflects the volume of meshes of a 3D "
+"object."
+msgstr ""
+
+# 6e8fba6a124a4dde9388c78009158e51
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/volume.rst:10
+msgid "**To apply the Volume quality criterion to your mesh:**"
+msgstr ""
+
+# c7307510f76a42cb93a8806a67e3fe2e
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/volume.rst:12
+msgid "Display your mesh in the viewer."
+msgstr ""
+
+# 6ba3f8b7613f421ea7ae919acea450fe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/volume.rst:13
+msgid ""
+"Choose **Controls > Volume Controls > Volume** or click **\"Volume\"** "
+"button in the toolbar."
+msgstr ""
+
+# 3048375053e34eaab6e3aa5468e4edd2
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/volume.rst:21
+msgid ""
+"Your mesh will be displayed in the viewer with its elements colored "
+"according to the applied mesh quality control criterion:"
+msgstr ""
+
+# 4813b79376244712b5a529d6d01e56ea
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/volume.rst:27
+msgid "**See Also** a sample TUI Script of a :ref:`tui_volume` operation."
+msgstr ""
+
diff --git a/doc/gui/locale/fr/LC_MESSAGES/warping.po b/doc/gui/locale/fr/LC_MESSAGES/warping.po
new file mode 100644 (file)
index 0000000..da4831a
--- /dev/null
@@ -0,0 +1,84 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C)
+# This file is distributed under the same license as the Mesh package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesh 8.3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-12-11 15:10+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+# 7336840f1de848839bb89abfd5044c58
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:5
+msgid "Warping"
+msgstr ""
+
+# 2b1e730a5eed435082c616cfb92d2172
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:10
+msgid ""
+"**Warping** indicates that a face is not planar and is applied only to 2D"
+" elements with 4 nodes. This quality control criterion is based on a "
+"projection plane created by:"
+msgstr ""
+
+# f638d6044b5c498f8800f89640fd8cfe
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:14
+msgid "bisecting the four element edges,"
+msgstr ""
+
+# 15c2ff7a765d4459aded3ffd6cddd735
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:15
+msgid ""
+"creating a point on the plane at the vector average of the corners, where"
+" the x-axis extends from the point to the bisector on edge 2."
+msgstr ""
+
+# e628a39d26eb4be1b03bd8136bfe5e01
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:17
+msgid ""
+"The plane normal is in the direction of the cross product of the x-axis "
+"and the vector from the origin to the bisector of edge 3. Every corner of"
+" the quad will then be a distance *h* from the plane. The length of each "
+"half edge is measured and the shortest length is assigned *l*. The warp "
+"angle is the arcsine of the ratio of the projection height *h* to the "
+"half edge length *l*."
+msgstr ""
+
+# bba359515cd74635a97441380386a30c
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:24
+msgid "**To apply the Warping quality criterion to your mesh:**"
+msgstr ""
+
+# 97ad951c40ad4b3698c539ad51522ee4
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:26
+msgid "Display your mesh in the viewer."
+msgstr ""
+
+# 1b2805c25e224aed8c110b9b37b5f6f8
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:28
+msgid ""
+"Choose **Controls > Face Controls > Warping Angle** or click **\"Warping "
+"angle\"** button of the toolbar."
+msgstr ""
+
+# 57c13746701e495da2fa2e17be8c850b
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:36
+msgid ""
+"Your mesh will be displayed in the viewer with its elements colored "
+"according to the applied mesh quality control criterion:"
+msgstr ""
+
+# e6e8740c285548c6a8aedc9af2c97139
+#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:42
+msgid "**See Also** a sample TUI Script of a :ref:`tui_warping` operation."
+msgstr ""
+
diff --git a/doc/gui/merge_mesh_class.py b/doc/gui/merge_mesh_class.py
new file mode 100755 (executable)
index 0000000..bd1048f
--- /dev/null
@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+# Copyright (C) 2017-2024  CEA, EDF, 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
+#
+import inspect
+import sys
+from types import FunctionType
+import copy
+
+ORIGIN_MODULE_SUFFIX = "_origin"
+DYNAMIC_MODULE_SUFFIX = "_dynamic"
+
+
+def main(module_name, output_file = "smeshBuilder.py"):
+    oringin_module_name = module_name + ORIGIN_MODULE_SUFFIX
+    dynamic_module_name = module_name + DYNAMIC_MODULE_SUFFIX
+    try:
+        exec( "import %s" % oringin_module_name )
+        origin_module = locals()[ oringin_module_name ]
+        origin_module_lines = inspect.getsourcelines( origin_module )[0]
+        origin_meshClass_lines = inspect.getsourcelines(origin_module.Mesh)[0]
+        origin_module_text = "".join( origin_module_lines )
+        origin_meshClass_text = "".join( origin_meshClass_lines )
+        
+        exec( "import %s" % dynamic_module_name )
+        dynanmic_module = locals()[ dynamic_module_name ]
+        dynanmic_meshClass = dynanmic_module.Mesh
+    
+        new_meshClass_lines = copy.copy(origin_meshClass_lines)
+        # remove end of class 'pass'
+        if new_meshClass_lines[-1].find("pass") > 0:
+            new_meshClass_lines.pop()
+            
+        dynanmic_meshClass_methods = [x for x, y in dynanmic_meshClass.__dict__.items() if type(y) == FunctionType]
+        for method in dynanmic_meshClass_methods:
+            exec( "method_lines = inspect.getsourcelines(dynanmic_module.Mesh.%s)[0]"  % method)
+            new_meshClass_lines+=locals()['method_lines']
+            pass
+        new_meshClass_text = "".join( new_meshClass_lines )            
+
+        f = open( output_file, "w" )
+        
+        f.write( origin_module_text.replace( origin_meshClass_text, new_meshClass_text) )
+        f.close()        
+    except Exception as e:
+        print(e)
+        pass
+    pass
+
+
+if __name__ == "__main__":
+    import optparse
+    parser = optparse.OptionParser(usage="%prog [options] modulename")
+    h  = "Output file (smeshBuilder.py by default)"
+    parser.add_option("-o", "--output", dest="output",
+                      action="store", default="smeshBuilder.py", metavar="file",
+                      help=h)
+
+    (options, args) = parser.parse_args()
+
+    if len( args ) < 1: sys.exit("Module name is not specified")
+    main( args[0], options.output )
+    pass
diff --git a/doc/gui/static/switchers.js.in b/doc/gui/static/switchers.js.in
new file mode 100644 (file)
index 0000000..8595b5c
--- /dev/null
@@ -0,0 +1,72 @@
+(function() {
+  'use strict';
+
+  // Parses versions in URL segments like:
+
+  var all_languages = {
+      'en': 'English',
+      'fr': 'French',
+  };
+
+  function build_language_select(current_language) {
+    var buf = ['<select>'];
+
+    $.each(all_languages, function(language, title) {
+      if (language == current_language)
+        buf.push('<option value="' + language + '" selected="selected">' +
+                 all_languages[current_language] + '</option>');
+      else
+        buf.push('<option value="' + language + '">' + title + '</option>');
+    });
+    buf.push('</select>');
+    return buf.join('');
+  }
+
+  function on_language_switch() {
+    var selected_language = $(this).children('option:selected').attr('value') + '/';
+    var url = window.location.href;
+
+    var current_language = language_segment_from_url(url);
+    var current_suffix = "";
+    if (current_language != "") {
+      current_suffix = "_";
+    } else {
+       current_language = "/";
+    }
+
+    var selected_suffix = "_";
+    if (selected_language == 'en/') { // Special 'default' case for english.
+      selected_language = '';
+      selected_suffix = "/";
+    }
+
+    var new_url = url.replace('/gui/SMESH' + current_suffix + current_language,
+                              '/gui/SMESH' + selected_suffix + selected_language);
+    if (new_url != url) {
+      window.location.href = new_url;
+    }
+  }
+
+  // Returns the path segment of the language as a string, like 'fr/'
+  // or '' if not found.
+  function language_segment_from_url(url) {
+    var language_regexp = '\/gui/SMESH_([a-z]{2}(?:-[a-z]{2})?/)';
+    var match = url.match(language_regexp);
+    if (match !== null)
+        return match[1];
+    return '';
+  }
+
+  $(document).ready(function() {
+    if(@BUILD_LANGUAGE_SWITCHER@) {
+       var release = DOCUMENTATION_OPTIONS.VERSION;
+       var language_segment = language_segment_from_url(window.location.href);
+       var current_language = language_segment.replace(/\/+$/g, '') || 'English';
+
+       var language_select = build_language_select(current_language);
+
+       $('.language_switcher_placeholder').html(language_select);
+       $('.language_switcher_placeholder select').bind('change', on_language_switch);
+    }
+  });
+})();
diff --git a/doc/gui/templates/layout.html b/doc/gui/templates/layout.html
new file mode 100644 (file)
index 0000000..a61738d
--- /dev/null
@@ -0,0 +1,30 @@
+{% extends "!layout.html" %}
+
+{% block rootrellink %}
+  <span class="language_switcher_placeholder">{{ language or 'English' }}</span>
+  {{ super() }}
+{% endblock %}
+
+{% block extrahead %}
+<script type="text/javascript" src="{{ pathto('_static/switchers.js', 1) }}"></script>
+{{ super() }}
+{% endblock %}
+
+{%- block sidebarlogo %}
+{{ super() }}
+{%-
+include "searchbox.html"
+%}
+<p/>
+{%- endblock %}
+{%- block sidebarsearch %}
+{%- endblock %}
+
+{%- block footer %}
+ <div class="footer">
+         Copyright &copy; 2007-2024  CEA, EDF, OPEN CASCADE
+         <br>
+         Copyright &copy; 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&amp;D, LEG, PRINCIPIA R&amp;D, BUREAU VERITAS.
+ </div>
+ {{ super() }}
+{%- endblock %}
diff --git a/doc/salome/CMakeLists.txt b/doc/salome/CMakeLists.txt
deleted file mode 100644 (file)
index 28fe8fe..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2007-2021  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 (file)
index 0fdfcb6..0000000
+++ /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 (file)
index df54d5a..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (C) 2012-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
-#
-
-INCLUDE(tests.set)
-
-SET(TEST_REINIT_SALOME "False")
-SALOME_CONFIGURE_FILE(tests.py.in tests.py)
-
-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
-
-SET(TEST_INSTALL_DIRECTORY ${SALOME_INSTALL_SCRIPT_SCRIPTS}/test)
-INSTALL(FILES ${GOOD_TESTS} ${BAD_TESTS} ${SESSION_FREE_TESTS} DESTINATION ${TEST_INSTALL_DIRECTORY})
-INSTALL(FILES Mesh_tri.med DESTINATION ${TEST_INSTALL_DIRECTORY})
-
-INSTALL(FILES CTestTestfileInstall.cmake
-        DESTINATION ${TEST_INSTALL_DIRECTORY}
-        RENAME CTestTestfile.cmake)
-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 (file)
index cf70be8..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-# 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
-#
-
-INCLUDE(tests.set)
-
-SET(PYTHON_TEST_DRIVER "$ENV{KERNEL_ROOT_DIR}/bin/salome/appliskel/python_test_driver.py")
-SET(COMPONENT_NAME SMESH)
-SET(TIMEOUT        300)
-
-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 (file)
index 2f0621d..0000000
+++ /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/MGAdapt_med_files/test_01.med b/doc/salome/examples/MGAdapt_med_files/test_01.med
deleted file mode 100644 (file)
index 71664bb..0000000
Binary files a/doc/salome/examples/MGAdapt_med_files/test_01.med and /dev/null differ
diff --git a/doc/salome/examples/MGAdapt_med_files/test_02.med b/doc/salome/examples/MGAdapt_med_files/test_02.med
deleted file mode 100644 (file)
index 1b22c43..0000000
Binary files a/doc/salome/examples/MGAdapt_med_files/test_02.med and /dev/null differ
diff --git a/doc/salome/examples/MGAdapt_med_files/test_02_bg.med b/doc/salome/examples/MGAdapt_med_files/test_02_bg.med
deleted file mode 100644 (file)
index 15f1b86..0000000
Binary files a/doc/salome/examples/MGAdapt_med_files/test_02_bg.med and /dev/null differ
diff --git a/doc/salome/examples/MGAdapt_med_files/test_04.med b/doc/salome/examples/MGAdapt_med_files/test_04.med
deleted file mode 100644 (file)
index 81c116f..0000000
Binary files a/doc/salome/examples/MGAdapt_med_files/test_04.med and /dev/null differ
diff --git a/doc/salome/examples/MGAdapt_med_files/test_06.med b/doc/salome/examples/MGAdapt_med_files/test_06.med
deleted file mode 100644 (file)
index 4c5f24d..0000000
Binary files a/doc/salome/examples/MGAdapt_med_files/test_06.med and /dev/null differ
diff --git a/doc/salome/examples/MGAdapt_med_files/test_07.med b/doc/salome/examples/MGAdapt_med_files/test_07.med
deleted file mode 100644 (file)
index e100452..0000000
Binary files a/doc/salome/examples/MGAdapt_med_files/test_07.med and /dev/null differ
diff --git a/doc/salome/examples/MGAdapt_med_files/test_08.med b/doc/salome/examples/MGAdapt_med_files/test_08.med
deleted file mode 100644 (file)
index e23077e..0000000
Binary files a/doc/salome/examples/MGAdapt_med_files/test_08.med and /dev/null differ
diff --git a/doc/salome/examples/MGAdapt_med_files/test_08_bg.med b/doc/salome/examples/MGAdapt_med_files/test_08_bg.med
deleted file mode 100644 (file)
index c28c32d..0000000
Binary files a/doc/salome/examples/MGAdapt_med_files/test_08_bg.med and /dev/null differ
diff --git a/doc/salome/examples/MGAdapt_med_files/test_10.med b/doc/salome/examples/MGAdapt_med_files/test_10.med
deleted file mode 100644 (file)
index 221291f..0000000
Binary files a/doc/salome/examples/MGAdapt_med_files/test_10.med and /dev/null differ
diff --git a/doc/salome/examples/MGAdapt_med_files/test_11.med b/doc/salome/examples/MGAdapt_med_files/test_11.med
deleted file mode 100644 (file)
index 7d8b6cf..0000000
Binary files a/doc/salome/examples/MGAdapt_med_files/test_11.med and /dev/null differ
diff --git a/doc/salome/examples/MGAdapt_med_files/test_13.med b/doc/salome/examples/MGAdapt_med_files/test_13.med
deleted file mode 100644 (file)
index 32a8af1..0000000
Binary files a/doc/salome/examples/MGAdapt_med_files/test_13.med and /dev/null differ
diff --git a/doc/salome/examples/Mesh_tri.med b/doc/salome/examples/Mesh_tri.med
deleted file mode 100644 (file)
index e5a1984..0000000
Binary files a/doc/salome/examples/Mesh_tri.med and /dev/null differ
diff --git a/doc/salome/examples/a3DmeshOnModified2Dmesh.py b/doc/salome/examples/a3DmeshOnModified2Dmesh.py
deleted file mode 100644 (file)
index fb49f87..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-import salome
-salome.salome_init_without_session()
-
-from salome.geom import geomBuilder
-geompy = geomBuilder.New()
-
-# This script demonstrates generation of 3D mesh basing on a modified 2D mesh
-#
-# Purpose is to get a tetrahedral mesh in a sphere cut by a cube.
-# The requirement is to have a surface mesh on the cube comprised of
-# triangles of exactly the same size arranged in a grid pattern.
-#
-# To fulfill this requirement we mesh the box using Quadrangle: Mapping
-# meshing algorithm, split quadrangles into triangles and then generate
-# tetrahedrons.
-
-
-# Make the geometry
-
-Box_1    = geompy.MakeBox(-100,-100,-100, 100, 100, 100)
-Sphere_1 = geompy.MakeSphereR( 300 )
-Cut_1    = geompy.MakeCut(Sphere_1, Box_1, theName="Cut_1")
-# get a spherical face
-Sph_Face = geompy.ExtractShapes( Sphere_1, geompy.ShapeType["FACE"] )[0]
-
-# get the shape Sph_Face turned into during MakeCut()
-Sph_Face = geompy.GetInPlace(Cut_1, Sph_Face, isNewImplementation=True, theName="Sphere_1")
-
-
-# 1) Define a mesh with 1D and 2D meshers
-
-import  SMESH
-from salome.smesh import smeshBuilder
-smesh = smeshBuilder.New()
-
-Mesh_1 = smesh.Mesh(Cut_1)
-
-# "global" meshers (assigned to Cut_1) that will be used for the box
-Regular_1D = Mesh_1.Segment()
-Local_Length_1 = Regular_1D.LocalLength(20)
-Quadrangle_2D = Mesh_1.Quadrangle()
-
-# a "local" mesher (assigned to a sub-mesh on Sphere_1) to mesh the sphere
-algo_2D = Mesh_1.Triangle( smeshBuilder.NETGEN_1D2D, Sph_Face )
-algo_2D.SetMaxSize( 70. )
-algo_2D.SetFineness( smeshBuilder.Moderate )
-algo_2D.SetMinSize( 7. )
-
-# 2) Compute 2D mesh
-isDone = Mesh_1.Compute()
-
-# 3) Split quadrangles into triangles
-isDone = Mesh_1.SplitQuadObject( Mesh_1, Diag13=True )
-
-# 4) Define a 3D mesher
-Mesh_1.Tetrahedron()
-
-# 5) Compute 3D mesh
-Mesh_1.Compute()
-
-if salome.sg.hasDesktop():
-  salome.sg.updateObjBrowser()
diff --git a/doc/salome/examples/basic_geom_smesh_without_session.py b/doc/salome/examples/basic_geom_smesh_without_session.py
deleted file mode 100644 (file)
index 9626ff9..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-
-"""
-Most basic test of GEOM/SMESH usecase, but it can be tested without any session launched.
-"""
-
-import sys
-import salome
-
-import os
-salome.standalone() # <- key point of test is here
-salome.salome_init()
-import salome_notebook
-notebook = salome_notebook.NoteBook()
-
-###
-### GEOM component
-###
-
-import GEOM
-from salome.geom import geomBuilder
-import math
-import SALOMEDS
-
-geompy = geomBuilder.New()
-O = geompy.MakeVertex(0, 0, 0)
-OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
-OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
-OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
-Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200)
-geompy.addToStudy( O, 'O' )
-geompy.addToStudy( OX, 'OX' )
-geompy.addToStudy( OY, 'OY' )
-geompy.addToStudy( OZ, 'OZ' )
-geompy.addToStudy( Box_1, 'Box_1' )
-###
-### SMESH component
-###
-import  SMESH, SALOMEDS
-from salome.smesh import smeshBuilder
-
-smesh = smeshBuilder.New()
-smesh.SetEnablePublish( True ) # Set to False to avoid publish in study if not needed or in some particular situations:
-                                 # multiples meshes built in parallel, complex and numerous mesh edition (performance)
-Mesh_1 = smesh.Mesh(Box_1)
-NETGEN_1D_2D_3D = Mesh_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)
-isDone = Mesh_1.Compute()
-
-
-## Set names of Mesh objects
-smesh.SetName(NETGEN_1D_2D_3D.GetAlgorithm(), 'NETGEN 1D-2D-3D')
-smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1')
-
-nbOfTetraExp = 5
-
-assert(Mesh_1.GetMesh().NbTetras()>=nbOfTetraExp)
-
-#Mesh_1.ExportMED("toto.med")
-
-import medcoupling as mc
-
-mv_mm = Mesh_1.ExportMEDCoupling()
-assert(mc.MEDCoupling1SGTUMesh(mv_mm[0]).getNumberOfCells()>=nbOfTetraExp)
diff --git a/doc/salome/examples/basic_shaper_smesh_without_session.py b/doc/salome/examples/basic_shaper_smesh_without_session.py
deleted file mode 100644 (file)
index 54594a1..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-
-"""
-Most basic test of SHAPE/SMESH usecase, but it can be tested without any session launched.
-"""
-
-import sys
-import salome
-salome.standalone() # <- key point of test is here
-salome.salome_init()
-
-#from salome.shaper import initConfig
-
-import os
-print(os.getpid())
-#input("AAA")
-###
-### SHAPER component
-###
-
-from salome.shaper import model
-model.begin()
-partSet = model.moduleDocument()
-
-### Create Part
-Part_1 = model.addPart(partSet)
-Part_1_doc = Part_1.document()
-
-### Create Box
-Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
-
-model.end()
-
-###
-### SHAPERSTUDY component
-###
-#import pdb; pdb.set_trace()
-model.publishToShaperStudy()
-import SHAPERSTUDY
-#import pdb; pdb.set_trace()
-Box_1_1, = SHAPERSTUDY.shape(model.featureStringId(Box_1))
-###
-### SMESH component
-###
-
-import  SMESH, SALOMEDS
-from salome.smesh import smeshBuilder
-
-smesh = smeshBuilder.New()
-#smesh.SetEnablePublish( False ) # Set to False to avoid publish in study if not needed or in some particular situations:
-                                 # multiples meshes built in parallel, complex and numerous mesh edition (performance)
-
-Mesh_1 = smesh.Mesh(Box_1_1)
-NETGEN_1D_2D_3D = Mesh_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)
-NETGEN_3D_Parameters_1 = NETGEN_1D_2D_3D.Parameters()
-NETGEN_3D_Parameters_1.SetMaxSize( 5 )
-NETGEN_3D_Parameters_1.SetMinSize( 1 )
-NETGEN_3D_Parameters_1.SetSecondOrder( 0 )
-NETGEN_3D_Parameters_1.SetOptimize( 1 )
-NETGEN_3D_Parameters_1.SetFineness( 2 )
-NETGEN_3D_Parameters_1.SetChordalError( -1 )
-NETGEN_3D_Parameters_1.SetChordalErrorEnabled( 0 )
-NETGEN_3D_Parameters_1.SetUseSurfaceCurvature( 1 )
-NETGEN_3D_Parameters_1.SetFuseEdges( 1 )
-NETGEN_3D_Parameters_1.SetQuadAllowed( 0 )
-NETGEN_3D_Parameters_1.SetCheckChartBoundary( 152 )
-isDone = Mesh_1.Compute()
-
-
-## Set names of Mesh objects
-smesh.SetName(NETGEN_1D_2D_3D.GetAlgorithm(), 'NETGEN 1D-2D-3D')
-smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1')
-smesh.SetName(NETGEN_3D_Parameters_1, 'NETGEN 3D Parameters_1')
-
-assert(Mesh_1.GetMesh().NbTetras()>=5)
diff --git a/doc/salome/examples/basic_smesh_output_with_mc_field.py b/doc/salome/examples/basic_smesh_output_with_mc_field.py
deleted file mode 100644 (file)
index f900b96..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-import salome
-
-import unittest
-
-class SMESHExportOfFieldsInMemory(unittest.TestCase):
-
-  def testMEDCouplingFieldOnCells(self):
-    """
-    Test focuses on ExportMEDCoupling method in the context of MED_CELL field output.
-    """
-    salome.standalone()
-    salome.salome_init()
-    ###
-    ### SHAPER component
-    ###
-
-    from salome.shaper import model
-
-    model.begin()
-    partSet = model.moduleDocument()
-
-    ### Create Part
-    Part_1 = model.addPart(partSet)
-    Part_1_doc = Part_1.document()
-
-    ### Create Box
-    Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
-
-    ### Create Plane
-    Plane_4 = model.addPlane(Part_1_doc, model.selection("FACE", "PartSet/XOY"), 5, False)
-
-    ### Create Plane
-    Plane_5 = model.addPlane(Part_1_doc, model.selection("FACE", "PartSet/YOZ"), 5, False)
-
-    ### Create Partition
-    Partition_1_objects = [model.selection("FACE", "Plane_1"),
-                          model.selection("FACE", "Plane_2"),
-                          model.selection("SOLID", "Box_1_1")]
-    Partition_1 = model.addPartition(Part_1_doc, Partition_1_objects, keepSubResults = True)
-
-    ### Create Field
-    Field_1_objects = [model.selection("SOLID", "Partition_1_1_2"),
-                      model.selection("SOLID", "Partition_1_1_4"),
-                      model.selection("SOLID", "Partition_1_1_1"),
-                      model.selection("SOLID", "Partition_1_1_3")]
-    Field_1 = model.addField(Part_1_doc, 1, "DOUBLE", 1, ["Comp 1"], Field_1_objects)
-    Field_1.addStep(0, 0, [[0], [1], [2], [3], [4]])
-
-
-    model.end()
-
-    ###
-    ### SHAPERSTUDY component
-    ###
-
-    model.publishToShaperStudy()
-    import SHAPERSTUDY
-    Partition_1_1, Field_1_1 = SHAPERSTUDY.shape(model.featureStringId(Partition_1))
-    ###
-    ### SMESH component
-    ###
-
-    import  SMESH, SALOMEDS
-    from salome.smesh import smeshBuilder
-
-    smesh = smeshBuilder.New()
-    #smesh.SetEnablePublish( False ) # Set to False to avoid publish in study if not needed or in some particular situations:
-                                    # multiples meshes built in parallel, complex and numerous mesh edition (performance)
-
-    Mesh_1 = smesh.Mesh(Partition_1_1)
-    Regular_1D = Mesh_1.Segment()
-    Local_Length_1 = Regular_1D.LocalLength(5,None,1e-07)
-    Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
-    Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa)
-    isDone = Mesh_1.Compute()
-    smesh.SetName(Mesh_1, 'Mesh_1')
-
-    #### Mesh_1.ExportMED( r'Mesh_with_one_field_on_cells.med', 0, 41, 1, Mesh_1.GetMesh(), 1, [ Field_1_1 ], '',-1 )
-    mfd = Mesh_1.ExportMEDCoupling(0, Mesh_1.GetMesh(), 1, [ Field_1_1 ], '',-1 )#### <- important line of test is here !
-
-    self.assertEqual(len(mfd.getMeshes()),1)
-    self.assertEqual(len(mfd.getFields()),1)
-    f = mfd.getFields()[0][0].field(mfd.getMeshes()[0])
-    f.checkConsistencyLight()
-    import medcoupling
-    self.assertEqual(f.getDiscretization().getEnum(),medcoupling.ON_CELLS)
-    self.assertTrue(f.getMesh().getNumberOfCells()>1)
-    pass
-
-
-  def testMEDCouplingFieldOnNodes(self):
-    """
-    Test focuses on ExportMEDCoupling method in the context of MED_NODES field output.
-    """
-    salome.standalone()
-    salome.salome_init()
-
-    ###
-    ### SHAPER component
-    ###
-
-    from salome.shaper import model
-
-    model.begin()
-    partSet = model.moduleDocument()
-
-    ### Create Part
-    Part_1 = model.addPart(partSet)
-    Part_1_doc = Part_1.document()
-
-    ### Create Box
-    Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
-
-    ### Create Plane
-    Plane_4 = model.addPlane(Part_1_doc, model.selection("FACE", "PartSet/XOY"), 5, False)
-
-    ### Create Plane
-    Plane_5 = model.addPlane(Part_1_doc, model.selection("FACE", "PartSet/YOZ"), 5, False)
-
-    ### Create Partition
-    Partition_1_objects = [model.selection("FACE", "Plane_1"),
-                          model.selection("FACE", "Plane_2"),
-                          model.selection("SOLID", "Box_1_1")]
-    Partition_1 = model.addPartition(Part_1_doc, Partition_1_objects, keepSubResults = True)
-
-    ### Create Field
-    Field_2_objects = [model.selection("VERTEX", "[Partition_1_1_2/Modified_Face&Box_1_1/Back][Partition_1_1_2/Modified_Face&Box_1_1/Left][Partition_1_1_2/Modified_Face&Box_1_1/Top]"),
-                      model.selection("VERTEX", "Partition_1_1_2/Generated_Vertex&Plane_2/Plane_2&new_weak_name_1"),
-                      model.selection("VERTEX", "[Partition_1_1_4/Modified_Face&Box_1_1/Front][Partition_1_1_4/Modified_Face&Box_1_1/Left][Partition_1_1_4/Modified_Face&Box_1_1/Top]"),
-                      model.selection("VERTEX", "Partition_1_1_1/Generated_Vertex&Plane_1/Plane_1&new_weak_name_1"),
-                      model.selection("VERTEX", "[Partition_1_1_1/Modified_Face&Box_1_1/Left][Partition_1_1_1/Modified_Face&Plane_1/Plane_1][Partition_1_1_1/Modified_Face&Plane_2/Plane_2]"),
-                      model.selection("VERTEX", "Partition_1_1_3/Generated_Vertex&Plane_1/Plane_1&new_weak_name_1"),
-                      model.selection("VERTEX", "[Partition_1_1_1/Modified_Face&Box_1_1/Back][Partition_1_1_1/Modified_Face&Box_1_1/Left][Partition_1_1_1/Modified_Face&Box_1_1/Bottom]"),
-                      model.selection("VERTEX", "Partition_1_1_1/Generated_Vertex&Plane_2/Plane_2&new_weak_name_1"),
-                      model.selection("VERTEX", "[Partition_1_1_3/Modified_Face&Box_1_1/Left][Partition_1_1_3/Modified_Face&Box_1_1/Bottom][Partition_1_1_3/Modified_Face&Box_1_1/Front]")]
-    Field_2 = model.addField(Part_1_doc, 1, "DOUBLE", 1, ["Comp 1"], Field_2_objects)
-    Field_2.addStep(0, 0, [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]])
-
-    model.end()
-
-    ###
-    ### SHAPERSTUDY component
-    ###
-
-    model.publishToShaperStudy()
-    import SHAPERSTUDY
-    Partition_1_1, Field_2_1 = SHAPERSTUDY.shape(model.featureStringId(Partition_1))
-    ###
-    ### SMESH component
-    ###
-
-    import  SMESH, SALOMEDS
-    from salome.smesh import smeshBuilder
-
-    smesh = smeshBuilder.New()
-    #smesh.SetEnablePublish( False ) # Set to False to avoid publish in study if not needed or in some particular situations:
-                                    # multiples meshes built in parallel, complex and numerous mesh edition (performance)
-
-    Mesh_1 = smesh.Mesh(Partition_1_1)
-    Regular_1D = Mesh_1.Segment()
-    Local_Length_1 = Regular_1D.LocalLength(5,None,1e-07)
-    Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
-    Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa)
-    isDone = Mesh_1.Compute()
-    smesh.SetName(Mesh_1, 'Mesh_1')
-
-    # 23th of june 2021 : Bug both in ExportMED and in ExportMEDCoupling
-    #Mesh_1.ExportMED( r'/tmp/Mesh_with_one_field_on_nodes.med', 0, 41, 1, Mesh_1.GetMesh(), 1, [ Field_2_1 ], '',-1 )
-    #mfd = Mesh_1.ExportMEDCoupling(0,Mesh_1.GetMesh(), 1, [ Field_2_1 ], '',-1)
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/doc/salome/examples/blocFissure_01_without_session.py b/doc/salome/examples/blocFissure_01_without_session.py
deleted file mode 100644 (file)
index 14c186f..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""Tests de blocFissure ; en standalone
-
-Cas tests basés sur les matériels :
-. cubeAngle
-. cubeFin
-
-Copyright 2021 EDF
-Gérald NICOLAS
-+33.1.78.19.43.52
-"""
-
-__revision__ = "V02.04"
-
-import os
-import sys
-
-# Lancement des cas-tests
-import salome
-salome.standalone()
-salome.salome_init_without_session()
-
-from blocFissure.CasTests.blocFissureTest import blocFissureTest
-BLOCFISSURE_TEST = blocFissureTest(["cubeAngle", "cubeAngle_2","cubeCoin", "cubeMilieu", "cubeTransverse"])
-MESSAGE_ERREUR = BLOCFISSURE_TEST.lancement()
-#sys.stdout.write(MESSAGE_ERREUR)
-del BLOCFISSURE_TEST
-
-# Diagnostic
-if MESSAGE_ERREUR:
-  if ( "NOOK" in MESSAGE_ERREUR ):
-    LAUX = MESSAGE_ERREUR.split()
-    ERREUR = int(LAUX[LAUX.index("NOOK")+2])
-  else:
-    ERREUR = 0
-else:
-  MESSAGE_ERREUR = "Impossible de trouver le diagnostic de la procédure de tests."
-  ERREUR = -1
-
-if ERREUR:
-  sys.stderr.write(MESSAGE_ERREUR)
-  #raise Exception(MESSAGE_ERREUR)
-  assert(False)
-
diff --git a/doc/salome/examples/blocFissure_02_without_session.py b/doc/salome/examples/blocFissure_02_without_session.py
deleted file mode 100644 (file)
index 49e0e83..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""Tests de blocFissure ; en standalone
-
-Cas tests basés sur les matériels :
-. decoupeCylindre
-. disque_perce
-. fissureGauche
-. fissureGauche_2
-+ ellipse, ellipse_disque, ellipse_probleme
-
-Copyright 2021 EDF
-Gérald NICOLAS
-+33.1.78.19.43.52
-"""
-
-__revision__ = "V02.04"
-
-import os
-import sys
-
-# Lancement des cas-tests
-import salome
-salome.standalone()
-salome.salome_init_without_session()
-
-from blocFissure.CasTests.blocFissureTest import blocFissureTest
-BLOCFISSURE_TEST = blocFissureTest(["cylindre", "cylindre_2", "disquePerce", "faceGauche","ellipse_1", "ellipse_2"])
-#BLOCFISSURE_TEST = blocFissureTest(["cylindre", "cylindre_2", "disquePerce", "faceGauche","ellipse_1", "ellipse_2", "faceGauche_2"])
-MESSAGE_ERREUR = BLOCFISSURE_TEST.lancement()
-#sys.stdout.write(MESSAGE_ERREUR)
-del BLOCFISSURE_TEST
-
-# Diagnostic
-if MESSAGE_ERREUR:
-  if ( "NOOK" in MESSAGE_ERREUR ):
-    LAUX = MESSAGE_ERREUR.split()
-    ERREUR = int(LAUX[LAUX.index("NOOK")+2])
-  else:
-    ERREUR = 0
-else:
-  MESSAGE_ERREUR = "Impossible de trouver le diagnostic de la procédure de tests."
-  ERREUR = -1
-
-if ERREUR:
-  sys.stderr.write(MESSAGE_ERREUR)
-  #raise Exception(MESSAGE_ERREUR)
-  assert(False)
-
diff --git a/doc/salome/examples/blocFissure_03_without_session.py b/doc/salome/examples/blocFissure_03_without_session.py
deleted file mode 100644 (file)
index 2b2f8ad..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""Tests de blocFissure ; en standalone
-
-Cas tests basés sur les matériels :
-. eprouvetteCourbe
-. eprouvetteDroite
-
-Copyright 2021 EDF
-Gérald NICOLAS
-+33.1.78.19.43.52
-"""
-
-__revision__ = "V02.03"
-
-import os
-import sys
-
-# Lancement des cas-tests
-import salome
-salome.standalone()
-salome.salome_init_without_session()
-
-from blocFissure.CasTests.blocFissureTest import blocFissureTest
-BLOCFISSURE_TEST = blocFissureTest(["eprouvetteCourbe", "eprouvetteDroite", "eprouvetteDroite_2"])
-MESSAGE_ERREUR = BLOCFISSURE_TEST.lancement()
-#sys.stdout.write(MESSAGE_ERREUR)
-del BLOCFISSURE_TEST
-
-# Diagnostic
-if MESSAGE_ERREUR:
-  if ( "NOOK" in MESSAGE_ERREUR ):
-    LAUX = MESSAGE_ERREUR.split()
-    ERREUR = int(LAUX[LAUX.index("NOOK")+2])
-  else:
-    ERREUR = 0
-else:
-  MESSAGE_ERREUR = "Impossible de trouver le diagnostic de la procédure de tests."
-  ERREUR = -1
-
-if ERREUR:
-  sys.stderr.write(MESSAGE_ERREUR)
-  #raise Exception(MESSAGE_ERREUR)
-  assert(False)
-
diff --git a/doc/salome/examples/blocFissure_04_without_session.py b/doc/salome/examples/blocFissure_04_without_session.py
deleted file mode 100644 (file)
index 0474743..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""Tests de blocFissure ; en standalone
-
-Cas tests basés sans matériels (1/3)
-
-Copyright 2021 EDF
-Gérald NICOLAS
-+33.1.78.19.43.52
-"""
-
-__revision__ = "V02.03"
-
-import os
-import sys
-
-# Lancement des cas-tests
-import salome
-salome.standalone()
-salome.salome_init_without_session()
-
-from blocFissure.CasTests.blocFissureTest import blocFissureTest
-BLOCFISSURE_TEST = blocFissureTest(["fissureCoude_1", "fissureCoude_2", "fissureCoude_3", "fissureCoude_4", "fissureCoude_5"])
-MESSAGE_ERREUR = BLOCFISSURE_TEST.lancement()
-#sys.stdout.write(MESSAGE_ERREUR)
-del BLOCFISSURE_TEST
-
-# Diagnostic
-if MESSAGE_ERREUR:
-  if ( "NOOK" in MESSAGE_ERREUR ):
-    LAUX = MESSAGE_ERREUR.split()
-    ERREUR = int(LAUX[LAUX.index("NOOK")+2])
-  else:
-    ERREUR = 0
-else:
-  MESSAGE_ERREUR = "Impossible de trouver le diagnostic de la procédure de tests."
-  ERREUR = -1
-
-if ERREUR:
-  sys.stderr.write(MESSAGE_ERREUR)
-  #raise Exception(MESSAGE_ERREUR)
-  assert(False)
-
diff --git a/doc/salome/examples/blocFissure_05_without_session.py b/doc/salome/examples/blocFissure_05_without_session.py
deleted file mode 100644 (file)
index b86a2ee..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""Tests de blocFissure ; en standalone
-
-Cas tests basés sans matériels (1/3)
-
-Copyright 2021 EDF
-Gérald NICOLAS
-+33.1.78.19.43.52
-"""
-
-__revision__ = "V02.03"
-
-import os
-import sys
-
-# Lancement des cas-tests
-import salome
-salome.standalone()
-salome.salome_init_without_session()
-
-from blocFissure.CasTests.blocFissureTest import blocFissureTest
-BLOCFISSURE_TEST = blocFissureTest(["fissureCoude_6", "fissureCoude_7", "fissureCoude_8", "fissureCoude_9", "fissureCoude_10"])
-MESSAGE_ERREUR = BLOCFISSURE_TEST.lancement()
-#sys.stdout.write(MESSAGE_ERREUR)
-del BLOCFISSURE_TEST
-
-# Diagnostic
-if MESSAGE_ERREUR:
-  if ( "NOOK" in MESSAGE_ERREUR ):
-    LAUX = MESSAGE_ERREUR.split()
-    ERREUR = int(LAUX[LAUX.index("NOOK")+2])
-  else:
-    ERREUR = 0
-else:
-  MESSAGE_ERREUR = "Impossible de trouver le diagnostic de la procédure de tests."
-  ERREUR = -1
-
-if ERREUR:
-  sys.stderr.write(MESSAGE_ERREUR)
-  #raise Exception(MESSAGE_ERREUR)
-  assert(False)
-
diff --git a/doc/salome/examples/blocFissure_06_without_session.py b/doc/salome/examples/blocFissure_06_without_session.py
deleted file mode 100644 (file)
index fd2ef82..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""Tests de blocFissure ; en standalone
-
-Cas tests basés sans matériels (1/3)
-
-Copyright 2021 EDF
-Gérald NICOLAS
-+33.1.78.19.43.52
-"""
-
-__revision__ = "V02.03"
-
-import os
-import sys
-
-# Lancement des cas-tests
-import salome
-salome.standalone()
-salome.salome_init_without_session()
-
-from blocFissure.CasTests.blocFissureTest import blocFissureTest
-BLOCFISSURE_TEST = blocFissureTest(["fissure_Coude", "fissure_Coude_4"])
-MESSAGE_ERREUR = BLOCFISSURE_TEST.lancement()
-#sys.stdout.write(MESSAGE_ERREUR)
-del BLOCFISSURE_TEST
-
-# Diagnostic
-if MESSAGE_ERREUR:
-  if ( "NOOK" in MESSAGE_ERREUR ):
-    LAUX = MESSAGE_ERREUR.split()
-    ERREUR = int(LAUX[LAUX.index("NOOK")+2])
-  else:
-    ERREUR = 0
-else:
-  MESSAGE_ERREUR = "Impossible de trouver le diagnostic de la procédure de tests."
-  ERREUR = -1
-
-if ERREUR:
-  sys.stderr.write(MESSAGE_ERREUR)
-  #raise Exception(MESSAGE_ERREUR)
-  assert(False)
-
diff --git a/doc/salome/examples/blocFissure_07_without_session.py b/doc/salome/examples/blocFissure_07_without_session.py
deleted file mode 100644 (file)
index d4d3836..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""Tests de blocFissure ; en standalone
-
-Cas tests basés sur les matériels :
-. vis
-. tube
-
-Copyright 2021 EDF
-Gérald NICOLAS
-+33.1.78.19.43.52
-"""
-
-__revision__ = "V02.04"
-
-import os
-import sys
-
-# Lancement des cas-tests
-import salome
-salome.standalone()
-salome.salome_init_without_session()
-
-from blocFissure.CasTests.blocFissureTest import blocFissureTest
-BLOCFISSURE_TEST = blocFissureTest(["vis_1"])
-#BLOCFISSURE_TEST = blocFissureTest(["vis_1", "tube"])
-MESSAGE_ERREUR = BLOCFISSURE_TEST.lancement()
-#sys.stdout.write(MESSAGE_ERREUR)
-del BLOCFISSURE_TEST
-
-# Diagnostic
-if MESSAGE_ERREUR:
-  if ( "NOOK" in MESSAGE_ERREUR ):
-    LAUX = MESSAGE_ERREUR.split()
-    ERREUR = int(LAUX[LAUX.index("NOOK")+2])
-  else:
-    ERREUR = 0
-else:
-  MESSAGE_ERREUR = "Impossible de trouver le diagnostic de la procédure de tests."
-  ERREUR = -1
-
-if ERREUR:
-  sys.stderr.write(MESSAGE_ERREUR)
-  #raise Exception(MESSAGE_ERREUR)
-  assert(False)
-
diff --git a/doc/salome/examples/cartesian_algo.py b/doc/salome/examples/cartesian_algo.py
deleted file mode 100644 (file)
index da86cf4..0000000
+++ /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/create_penta_biquad.py b/doc/salome/examples/create_penta_biquad.py
deleted file mode 100644 (file)
index c13f25c..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import sys
-import salome
-
-salome.salome_init_without_session()
-
-import  SMESH, SALOMEDS
-from salome.smesh import smeshBuilder
-
-smesh = smeshBuilder.New()
-unPentaBiQuad = smesh.Mesh()
-nodeID = unPentaBiQuad.AddNode( 0, 0, 0 )
-nodeID = unPentaBiQuad.AddNode( 10, 0, 0 )
-nodeID = unPentaBiQuad.AddNode( 0, 10, 0 )
-nodeID = unPentaBiQuad.AddNode( 0, 0, 10 )
-nodeID = unPentaBiQuad.AddNode( 10, 0, 10 )
-nodeID = unPentaBiQuad.AddNode( 0, 10, 10 )
-nodeID = unPentaBiQuad.AddNode( 5, 0, 0 )
-nodeID = unPentaBiQuad.AddNode( 7, 7, 0 )
-nodeID = unPentaBiQuad.AddNode( 0, 5, 0 )
-nodeID = unPentaBiQuad.AddNode( 5, 0, 10 )
-nodeID = unPentaBiQuad.AddNode( 7, 7, 10 )
-nodeID = unPentaBiQuad.AddNode( 0, 5, 10 )
-nodeID = unPentaBiQuad.AddNode( 0, 0, 5 )
-nodeID = unPentaBiQuad.AddNode( 10, 0, 5 )
-nodeID = unPentaBiQuad.AddNode( 0, 10, 5 )
-nodeID = unPentaBiQuad.AddNode( 5, -1, 5 )
-nodeID = unPentaBiQuad.AddNode( 8, 8, 5 )
-nodeID = unPentaBiQuad.AddNode( -1, 5, 5 )
-volID = unPentaBiQuad.AddVolume( [ 4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9, 13, 14, 15, 16, 17, 18 ] )
-
-infos = unPentaBiQuad.GetMeshInfo()
-print("Number of biquadratic pentahedrons:", infos[SMESH.Entity_BiQuad_Penta])
-if (infos[SMESH.Entity_BiQuad_Penta] != 1):
-  raise RuntimeError("Bad number of biquadratic pentahedrons: should be 1")
-
-## Set names of Mesh objects
-smesh.SetName(unPentaBiQuad.GetMesh(), 'unPentaBiQuad')
-
-if salome.sg.hasDesktop():
-  salome.sg.updateObjBrowser()
diff --git a/doc/salome/examples/creating_meshes_ex01.py b/doc/salome/examples/creating_meshes_ex01.py
deleted file mode 100644 (file)
index ba8563d..0000000
+++ /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 (file)
index 8a8966a..0000000
+++ /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 (file)
index fc20d36..0000000
+++ /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 (file)
index 7101a02..0000000
+++ /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 (file)
index 725c7e9..0000000
+++ /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 <face>
-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 (file)
index 60360e1..0000000
+++ /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 (file)
index f18109c..0000000
+++ /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 (file)
index 2f506fa..0000000
+++ /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 (file)
index 48d927d..0000000
+++ /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 (file)
index 0a2401d..0000000
+++ /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 (file)
index c5a5ce2..0000000
+++ /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 (file)
index 14af89e..0000000
+++ /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 (file)
index bb38eeb..0000000
+++ /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 (file)
index 25fe542..0000000
+++ /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 (file)
index 687de13..0000000
+++ /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 (file)
index 2beb838..0000000
+++ /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 (file)
index ee0af39..0000000
+++ /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 (file)
index 7ac2a0f..0000000
+++ /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 (file)
index 0801c2c..0000000
+++ /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 (file)
index 5e85222..0000000
+++ /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 (file)
index 9db6448..0000000
+++ /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 (file)
index c7c736c..0000000
+++ /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 (file)
index f1e7e39..0000000
+++ /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 (file)
index 7b0cfba..0000000
+++ /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 (file)
index 2826aa1..0000000
+++ /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 (file)
index da76f22..0000000
+++ /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 (file)
index 62379eb..0000000
+++ /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/doublenodes_polyhedra.py b/doc/salome/examples/doublenodes_polyhedra.py
deleted file mode 100644 (file)
index 7a28ea7..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-import salome
-
-salome.standalone()
-salome.salome_init()
-
-###
-### SHAPER component
-###
-
-from salome.shaper import model
-
-model.begin()
-partSet = model.moduleDocument()
-
-### Create Part
-Part_1 = model.addPart(partSet)
-Part_1_doc = Part_1.document()
-
-### Create Sketch
-Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOZ"))
-
-### Create SketchLine
-SketchLine_1 = Sketch_1.addLine(100, 0, 0, 0)
-
-### Create SketchProjection
-SketchProjection_1 = Sketch_1.addProjection(model.selection("VERTEX", "PartSet/Origin"), False)
-SketchPoint_1 = SketchProjection_1.createdFeature()
-Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchPoint_1.result())
-
-### Create SketchLine
-SketchLine_2 = Sketch_1.addLine(0, 0, 0, 100)
-
-### Create SketchLine
-SketchLine_3 = Sketch_1.addLine(0, 100, 100, 100)
-
-### Create SketchLine
-SketchLine_4 = Sketch_1.addLine(100, 100, 100, 0)
-Sketch_1.setCoincident(SketchLine_4.endPoint(), SketchLine_1.startPoint())
-Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_2.startPoint())
-Sketch_1.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint())
-Sketch_1.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint())
-Sketch_1.setHorizontal(SketchLine_1.result())
-Sketch_1.setVertical(SketchLine_2.result())
-Sketch_1.setHorizontal(SketchLine_3.result())
-Sketch_1.setVertical(SketchLine_4.result())
-Sketch_1.setEqual(SketchLine_3.result(), SketchLine_4.result())
-Sketch_1.setLength(SketchLine_1.result(), 100)
-
-### Create SketchLine
-SketchLine_5 = Sketch_1.addLine(0, 50, 100, 50)
-Sketch_1.setCoincident(SketchLine_5.startPoint(), SketchLine_2.result())
-Sketch_1.setCoincident(SketchLine_5.endPoint(), SketchLine_4.result())
-Sketch_1.setHorizontal(SketchLine_5.result())
-
-### Create SketchLine
-SketchLine_6 = Sketch_1.addLine(50, 50.00000000000001, 50, 0)
-Sketch_1.setCoincident(SketchLine_6.endPoint(), SketchLine_1.result())
-Sketch_1.setVertical(SketchLine_6.result())
-Sketch_1.setCoincident(SketchLine_6.startPoint(), SketchLine_5.result())
-Sketch_1.setMiddlePoint(SketchLine_6.startPoint(), SketchLine_5.result())
-Sketch_1.setMiddlePoint(SketchLine_5.startPoint(), SketchLine_2.result())
-model.do()
-
-### Create Extrusion
-Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("COMPOUND", "Sketch_1")], model.selection(), 100, 0, "Faces|Wires")
-
-### Create Group
-Group_1 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Extrusion_1_1_1/Generated_Face&Sketch_1/SketchLine_5"), model.selection("FACE", "(Extrusion_1_1_3/Generated_Face&Sketch_1/SketchLine_4)(Extrusion_1_1_3/From_Face)(Extrusion_1_1_3/To_Face)(Extrusion_1_1_3/Generated_Face&Sketch_1/SketchLine_3)2(Extrusion_1_1_3/Generated_Face&Sketch_1/SketchLine_2)2")])
-Group_1.setName("crack_1")
-Group_1.result().setName("crack_1")
-
-### Create Group
-Group_2 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Extrusion_1_1_1/Generated_Face&Sketch_1/SketchLine_6")])
-Group_2.setName("crack_2")
-Group_2.result().setName("crack_2")
-
-### Create Group
-Group_3 = model.addGroup(Part_1_doc, "Faces", [model.selection("COMPSOLID", "Extrusion_1_1")])
-Group_3.setName("all_faces")
-Group_3.result().setName("all_faces")
-
-### Create GroupSubstraction
-GroupSubstraction_1 = model.addGroupSubstraction(Part_1_doc, [model.selection("COMPOUND", "all_faces")], [model.selection("COMPOUND", "crack_1"), model.selection("COMPOUND", "crack_2")])
-GroupSubstraction_1.result().setName("sides")
-
-### Create Group
-Group_4 = model.addGroup(Part_1_doc, "Edges", [model.selection("EDGE", "[Extrusion_1_1_3/Generated_Face&Sketch_1/SketchLine_3][Extrusion_1_1_3/To_Face]")])
-Group_4.setName("top_edge")
-Group_4.result().setName("top_edge")
-
-### Create Group
-Group_5 = model.addGroup(Part_1_doc, "Solids", [model.selection("SOLID", "Extrusion_1_1_3")])
-Group_5.setName("Solid_1")
-Group_5.result().setName("Solid_1")
-
-### Create Group
-Group_6 = model.addGroup(Part_1_doc, "Solids", [model.selection("SOLID", "Extrusion_1_1_1")])
-Group_6.setName("Solid_2")
-Group_6.result().setName("Solid_2")
-
-### Create Group
-Group_7 = model.addGroup(Part_1_doc, "Solids", [model.selection("SOLID", "Extrusion_1_1_2")])
-Group_7.setName("Solid_3")
-Group_7.result().setName("Solid_3")
-
-model.end()
-
-###
-### SHAPERSTUDY component
-###
-
-model.publishToShaperStudy()
-import SHAPERSTUDY
-shapes = SHAPERSTUDY.shape(model.featureStringId(Extrusion_1))
-
-Extrusion_1_1 = shapes[0]
-groups = shapes[1:]
-
-# dict of groups by their name
-d_groups = {}
-for gr in groups:
-  name = gr.GetName()
-  d_groups[name] = gr
-
-###
-### SMESH component
-###
-
-import  SMESH, SALOMEDS
-from salome.smesh import smeshBuilder
-
-smesh = smeshBuilder.New()
-
-# Create an hexahedral mesh or polyhedral mesh
-# @param algo: "hexahedra", "polyhedra" or "polygons"
-def createMesh(algo):
-  
-  nb_segs = 5
-  Mesh_1 = smesh.Mesh(Extrusion_1_1)
-  mesh_name = "Mesh_%s"%algo
-  Mesh_1.SetName(mesh_name)
-
-  algo_1d = Mesh_1.Segment()
-  algo_1d.NumberOfSegments(nb_segs)
-
-  if algo == "hexahedra":
-    Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
-    Mesh_1.Hexahedron(algo=smeshBuilder.Hexa)
-  elif algo == "polyhedra":
-    Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
-    Mesh_1.Polyhedron()
-  elif algo == "polygons":
-    Mesh_1.Polygon()
-    Mesh_1.Polyhedron()
-  else:
-    raise Exception("not expected algo: ", algo)
-
-  d_mesh_groups = {}
-  # Create group of faces
-  for name, gr in d_groups.items():
-    if name.startswith("crack") or name.startswith("Solid_"):
-      gr_mesh = Mesh_1.Group(gr)
-      d_mesh_groups[name] = gr_mesh
-
-  # Group on nodes
-  gr_sides_1 = Mesh_1.GroupOnGeom(d_groups["sides"],'sides',SMESH.NODE)
-
-  # sub-mesh on top edge
-  algo_1d_sub = Mesh_1.Segment(geom=d_groups["top_edge"])
-  algo_1d_sub.NumberOfSegments(2*nb_segs)
-  algo_1d_sub.Propagation()
-
-  isDone = Mesh_1.Compute()
-
-  nb_nodes = Mesh_1.NbNodes()
-  # Create 2 cracks by two calls of DoubleNodeElemGroups
-
-  # FIRST CRACK
-  # get affected elements on crack_1
-  [ affectedVolumes_1, affectedFaces_1, affectedEdges_1 ] = Mesh_1.AffectedElemGroupsInRegion( [ d_mesh_groups["crack_1" ] ], [ gr_sides_1 ], None )
-  # affectedVolumes_1 is d_mesh_groups["Solid_1"] => use one or the other
-  # double nodes on crack_1
-  [ crack_1_double_faces, crack_1_double_nodes ] = Mesh_1.DoubleNodeElemGroups( [ d_mesh_groups["crack_1" ] ], [ gr_sides_1 ], [ affectedVolumes_1, affectedFaces_1, affectedEdges_1 ], 1, 1 )
-
-  # check new nodes were added
-  new_nb_nodes_1 = Mesh_1.NbNodes()
-  assert new_nb_nodes_1 > nb_nodes
-  
-  # check number of new nodes
-  if algo != "polygons":
-    assert new_nb_nodes_1-nb_nodes == (nb_segs*2-1)*(nb_segs-1)
-  else:
-    assert new_nb_nodes_1-nb_nodes == nb_segs-1
-
-  # check new nodes where affected to volume elements
-  affectedVolumes_1_nodes = affectedVolumes_1.GetNodeIDs()
-  for n in range(nb_nodes +1, new_nb_nodes_1):
-    assert n in affectedVolumes_1_nodes, "New node not affected to affectedVolumes_1 in %s"%mesh_name
-
-  # SECOND CRACK
-  # get affected elements on crack_2
-  [ affectedVolumes_2, affectedFaces_2, affectedEdges_2 ] = Mesh_1.AffectedElemGroupsInRegion( [ d_mesh_groups["crack_2" ] ], [ gr_sides_1 ], None )
-  # double nodes on crack_2
-  # affectedVolumes_2 is d_mesh_groups["Solid_3"] => use one or the other
-  [ crack_2_double_faces, crack_2_double_nodes ] = Mesh_1.DoubleNodeElemGroups( [ d_mesh_groups["crack_2" ] ], [ gr_sides_1 ], [ affectedVolumes_2, affectedFaces_2, affectedEdges_2 ], 1, 1 )
-
-  # check new nodes were added
-  new_nb_nodes_2 = Mesh_1.NbNodes()
-  assert new_nb_nodes_2 > new_nb_nodes_1
-  
-  # check number of new nodes
-  if algo != "polygons":
-    assert new_nb_nodes_2-new_nb_nodes_1 == (nb_segs-1)*nb_segs
-  else:
-    assert new_nb_nodes_2-new_nb_nodes_1 == nb_segs-1
-
-  # check new nodes where affected to volume elements
-  affectedVolumes_2_nodes = affectedVolumes_2.GetNodeIDs()
-  for n in range(new_nb_nodes_1 +1, new_nb_nodes_2):
-    assert n in affectedVolumes_2_nodes, "New node not affected to affectedVolumes_2 in %s"%mesh_name
-
-createMesh("hexahedra")
-createMesh("polyhedra")
-createMesh("polygons")
-
-
-if salome.sg.hasDesktop():
-  salome.sg.updateObjBrowser()
diff --git a/doc/salome/examples/ex_MakePolyLine.py b/doc/salome/examples/ex_MakePolyLine.py
deleted file mode 100644 (file)
index 2091912..0000000
+++ /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/extrusion_penta_biquad.py b/doc/salome/examples/extrusion_penta_biquad.py
deleted file mode 100644 (file)
index fb50008..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import sys
-import salome
-
-salome.salome_init_without_session()
-
-import GEOM
-from salome.geom import geomBuilder
-import math
-import SALOMEDS
-
-geompy = geomBuilder.New()
-
-O = geompy.MakeVertex(0, 0, 0)
-OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
-OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
-OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
-Divided_Disk_1 = geompy.MakeDividedDisk(100, 1, GEOM.SQUARE)
-geompy.addToStudy( O, 'O' )
-geompy.addToStudy( OX, 'OX' )
-geompy.addToStudy( OY, 'OY' )
-geompy.addToStudy( OZ, 'OZ' )
-geompy.addToStudy( Divided_Disk_1, 'Divided Disk_1' )
-
-import  SMESH, SALOMEDS
-from salome.smesh import smeshBuilder
-
-smesh = smeshBuilder.New()
-aFilterManager = smesh.CreateFilterManager()
-Mesh_1 = smesh.Mesh(Divided_Disk_1)
-Regular_1D = Mesh_1.Segment()
-Number_of_Segments_1 = Regular_1D.NumberOfSegments(6)
-Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
-isDone = Mesh_1.Compute()
-aMaxElementLength2D0x5d7fdf0 = aFilterManager.CreateMaxElementLength2D()
-isDone = Mesh_1.QuadToTriObject( Mesh_1,  )
-Mesh_1.ExtrusionSweepObjects( [ Mesh_1 ], [ Mesh_1 ], [ Mesh_1 ], [ 0, 0, 50 ], 3, 1 )
-Mesh_1.ConvertToQuadratic(0, Mesh_1,True)
-
-infos = Mesh_1.GetMeshInfo()
-print("Number of biquadratic pentahedrons:", infos[SMESH.Entity_BiQuad_Penta])
-if (infos[SMESH.Entity_BiQuad_Penta] != 1080):
-  raise RuntimeError("Bad number of biquadratic pentahedrons: should be 1080")
-  
-## Set names of Mesh objects
-smesh.SetName(Regular_1D.GetAlgorithm(), 'Regular_1D')
-smesh.SetName(Quadrangle_2D.GetAlgorithm(), 'Quadrangle_2D')
-smesh.SetName(Number_of_Segments_1, 'Number of Segments_1')
-smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1')
-
-
-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 (file)
index b3b5b61..0000000
+++ /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 (file)
index f323ecb..0000000
+++ /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 (file)
index 6a392ce..0000000
+++ /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 (file)
index e01b60d..0000000
+++ /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 (file)
index 2b27483..0000000
+++ /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 (file)
index c470db6..0000000
+++ /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 (file)
index 94666f7..0000000
+++ /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 (file)
index 7d781dc..0000000
+++ /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 (file)
index 479de96..0000000
+++ /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 (file)
index 8e2ebfd..0000000
+++ /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 (file)
index b90e518..0000000
+++ /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 (file)
index 47b62e2..0000000
+++ /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 (file)
index 5dfd81a..0000000
+++ /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 (file)
index ae64b56..0000000
+++ /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 (file)
index 2e68ae8..0000000
+++ /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 (file)
index 70c8cae..0000000
+++ /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 (file)
index 4e3d27b..0000000
+++ /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 (file)
index 83eda32..0000000
+++ /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 (file)
index c4ec481..0000000
+++ /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 (file)
index cb1c545..0000000
+++ /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 (file)
index c55b56b..0000000
+++ /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 (file)
index 81d4087..0000000
+++ /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 (file)
index cb7971b..0000000
+++ /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 (file)
index 8c99509..0000000
+++ /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 (file)
index ffe9226..0000000
+++ /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 (file)
index f3083f7..0000000
+++ /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 (file)
index ea7cff8..0000000
+++ /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 (file)
index e05ecbe..0000000
+++ /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 (file)
index f0382ac..0000000
+++ /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 (file)
index e6b817a..0000000
+++ /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 (file)
index 856010b..0000000
+++ /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 (file)
index 209bb9f..0000000
+++ /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 (file)
index 5630f78..0000000
+++ /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 (file)
index 4e54e55..0000000
+++ /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 (file)
index 9e29e97..0000000
+++ /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 (file)
index fea0902..0000000
+++ /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 (file)
index ec1e2b4..0000000
+++ /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 (file)
index 0f1a0a8..0000000
+++ /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 (file)
index 2193c66..0000000
+++ /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 (file)
index 52de1c3..0000000
+++ /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 (file)
index dc7ce0e..0000000
+++ /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/find_salome_actor_delegate_to_vtk.py b/doc/salome/examples/find_salome_actor_delegate_to_vtk.py
deleted file mode 100644 (file)
index df8dd13..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-# Find if SALOME_ACTOR_DELEGATE_TO_VTK is activated
-
-import os
-import sys
-
-if 'SALOME_ACTOR_DELEGATE_TO_VTK' not in os.environ:
-    raise RuntimeError('SALOME_ACTOR_DELEGATE_TO_VTK is not set!')
diff --git a/doc/salome/examples/generate_flat_elements.py b/doc/salome/examples/generate_flat_elements.py
deleted file mode 100644 (file)
index d14cb04..0000000
+++ /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 (file)
index c35de33..0000000
+++ /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 (file)
index 16feda4..0000000
+++ /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 <aGeomGroupE> 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 (file)
index d6d6e83..0000000
+++ /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 (file)
index e0e58ac..0000000
+++ /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 (file)
index 96aa7fa..0000000
+++ /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 (file)
index 9423cf7..0000000
+++ /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 (file)
index 800e8e8..0000000
+++ /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 (file)
index 76dc93f..0000000
+++ /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 (file)
index 988dad3..0000000
+++ /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 (file)
index b8ccae0..0000000
+++ /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 (file)
index 20c04bc..0000000
+++ /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 (file)
index 217d9cb..0000000
+++ /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 (file)
index b143267..0000000
+++ /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_ex01.py b/doc/salome/examples/modifying_meshes_ex01.py
deleted file mode 100644 (file)
index 2214610..0000000
+++ /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 (file)
index 7b0b9f3..0000000
+++ /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 (file)
index 59198cc..0000000
+++ /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 (file)
index ad8d151..0000000
+++ /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 (file)
index c48042a..0000000
+++ /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 (file)
index ff568e0..0000000
+++ /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 (file)
index 93fa2d1..0000000
+++ /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 (file)
index 1cf27c5..0000000
+++ /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 (file)
index 914e91b..0000000
+++ /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 <nb_vert> 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 (file)
index ed49c4f..0000000
+++ /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 (file)
index 28b544b..0000000
+++ /dev/null
@@ -1,10 +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.")
diff --git a/doc/salome/examples/modifying_meshes_ex12.py b/doc/salome/examples/modifying_meshes_ex12.py
deleted file mode 100644 (file)
index 8ef8356..0000000
+++ /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 (file)
index 3c2e4e0..0000000
+++ /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 (file)
index 7bb10fd..0000000
+++ /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 (file)
index 7d62245..0000000
+++ /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 (file)
index 82bd0e0..0000000
+++ /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 (file)
index 833c502..0000000
+++ /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 (file)
index 738e8d2..0000000
+++ /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 (file)
index 386a3cb..0000000
+++ /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 (file)
index ffbff36..0000000
+++ /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 (file)
index 6aa3f23..0000000
+++ /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 (file)
index 94ce756..0000000
+++ /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 (file)
index d2f52b2..0000000
+++ /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 (file)
index d07a7ca..0000000
+++ /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 (file)
index 7a6804b..0000000
+++ /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 (file)
index defd6ba..0000000
+++ /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 (file)
index 35eea6a..0000000
+++ /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 (file)
index 959cc20..0000000
+++ /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 (file)
index 06a2c5c..0000000
+++ /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 (file)
index 5937d03..0000000
+++ /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 (file)
index 97553e0..0000000
+++ /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 (file)
index 2cb3c97..0000000
+++ /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 (file)
index c039420..0000000
+++ /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 (file)
index 65db46b..0000000
+++ /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 (file)
index 07867cc..0000000
+++ /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 (file)
index b01e35c..0000000
+++ /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 (file)
index c0cecd4..0000000
+++ /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 (file)
index d7f2965..0000000
+++ /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 (file)
index 8fc367e..0000000
+++ /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 (file)
index 9f4f7db..0000000
+++ /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( 2 == 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 (file)
index 22e93c9..0000000
+++ /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( 2 == 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 (file)
index fbc2b7c..0000000
+++ /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 (file)
index f622779..0000000
+++ /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 (file)
index 5cee2a8..0000000
+++ /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 (file)
index ab939ba..0000000
+++ /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 (file)
index d7cb290..0000000
+++ /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 (file)
index 645b2cd..0000000
+++ /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 (file)
index a22f5e5..0000000
+++ /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 (file)
index 9f6f7a3..0000000
+++ /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 (file)
index 62ef710..0000000
+++ /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 (file)
index dd594c1..0000000
+++ /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 (file)
index 683e314..0000000
+++ /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 (file)
index 131091f..0000000
+++ /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 (file)
index fe29e52..0000000
+++ /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/shaper_smesh_groups_without_session.py b/doc/salome/examples/shaper_smesh_groups_without_session.py
deleted file mode 100644 (file)
index 592dc50..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-
-"""
-Check that creating a mesh on a shaperstudy object does not raise orb not found in GetExistingSubObjects.
-It is called in SMESH GUI on Create mesh's Apply, in SMESHGUI_MeshOp::createSubMeshOnInternalEdges.
-We explicitly call GetExistingSubObjects here to be able to test it in python.
-"""
-
-import sys
-import salome
-
-salome.standalone()
-salome.salome_init()
-
-###
-### SHAPER component
-###
-
-from salome.shaper import model
-
-model.begin()
-partSet = model.moduleDocument()
-
-### Create Part
-Part_1 = model.addPart(partSet)
-Part_1_doc = Part_1.document()
-
-### Create Box
-Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
-
-### Create Group
-Group_1 = model.addGroup(Part_1_doc, "Edges", [model.selection("EDGE", "[Box_1_1/Left][Box_1_1/Bottom]")])
-Group_1.setName("edge_ox")
-Group_1.result().setName("edge_ox")
-
-### Create Group
-Group_2 = model.addGroup(Part_1_doc, "Edges", [model.selection("EDGE", "[Box_1_1/Back][Box_1_1/Left]")])
-Group_2.setName("edge_oz")
-Group_2.result().setName("edge_oz")
-
-model.end()
-
-###
-### SHAPERSTUDY component
-###
-
-model.publishToShaperStudy()
-import SHAPERSTUDY
-Box_1_1, edge_ox, edge_oz = SHAPERSTUDY.shape(model.featureStringId(Box_1))
-
-###
-### SMESH component
-###
-
-import  SMESH, SALOMEDS
-from salome.smesh import smeshBuilder
-
-smesh = smeshBuilder.New()
-#smesh.SetEnablePublish( False ) # Set to False to avoid publish in study if not needed or in some particular situations:
-                                 # multiples meshes built in parallel, complex and numerous mesh edition (performance)
-
-Mesh_1 = smesh.Mesh(Box_1_1)
-
-Regular_1D = Mesh_1.Segment()
-Local_Length_1 = Regular_1D.LocalLength(5)
-
-MEFISTO_2D = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO)
-
-ok = Mesh_1.Compute()
-
-if not ok:
-  raise Exception("Error when computing Mesh_1")
-
-edge_ox_1 = Mesh_1.GroupOnGeom(edge_ox,'edge_ox',SMESH.EDGE)
-edge_oz_1 = Mesh_1.GroupOnGeom(edge_oz,'edge_oz',SMESH.EDGE)
-
-# check that ObjectToSObject works (called in GetExistingSubObjects)
-Box_1_1_sobj = salome.ObjectToSObject(Box_1_1)
-if not Box_1_1_sobj:
-  raise Exception("No SObject for Box_1_1")
-
-# check that GetExistingSubObjects works (called in SMESHGUI_MeshOp::createSubMeshOnInternalEdges)
-shaperBuilder = salome.lcc.FindOrLoadComponent("FactoryServer","SHAPERSTUDY")
-sOp = shaperBuilder.GetIShapesOperations()
-geomGroups = sOp.GetExistingSubObjects(Box_1_1, True)
-
-assert(len(geomGroups)==2)
-
-assert(Mesh_1.GetMesh().NbTriangles()>16)
diff --git a/doc/salome/examples/split_biquad.py b/doc/salome/examples/split_biquad.py
deleted file mode 100644 (file)
index f9d97b3..0000000
+++ /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 (file)
index c888638..0000000
+++ /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_polyhedron_per_solid.py b/doc/salome/examples/test_polyhedron_per_solid.py
deleted file mode 100644 (file)
index f26bfd7..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-import salome
-
-salome.salome_init_without_session()
-
-###
-### GEOM component
-###
-
-import GEOM
-from salome.geom import geomBuilder
-import math
-import SALOMEDS
-
-
-geompy = geomBuilder.New()
-
-## Creates a polygon given its centre, external radius and number of sides
-def makePolygon(p_centre, radius, nb_sides, theName=""):
-  global geompy, math
-  points = []
-  x, y, z = geompy.PointCoordinates(p_centre)
-  for i in range(nb_sides):
-    angle = i*2*math.pi/nb_sides
-    p = geompy.MakeVertex(x+radius*math.cos(angle), y+radius*math.sin(angle), 0)
-    points.append(p)
-  wire = geompy.MakePolyline(points, True)
-  face = geompy.MakeFace(wire, 1)
-  if theName:
-    geompy.addToStudy(face, theName)
-  return face
-
-## Creates a solid by adding a vertex on its top
-def makeSummitSolid(face, height, theName=""):
-  global geompy
-  p_cdg = geompy.MakeCDG(face)
-  p_top = geompy.MakeTranslation(p_cdg, 0, 0, height)
-  edges = geompy.SubShapeAll(face, geompy.ShapeType["EDGE"])
-  faces = [face]
-  for edge in edges:
-    p1, p2 = geompy.SubShapeAll(edge, geompy.ShapeType["VERTEX"])
-    wire = geompy.MakePolyline([p1, p2, p_top], True)
-    face = geompy.MakeFace(wire, 1)
-    faces.append(face)
-  shell = geompy.MakeShell(faces)
-  solid = geompy.MakeSolid(shell)
-  if theName:
-    geompy.addToStudy(solid, theName)
-  return solid
-
-O = geompy.MakeVertex(0, 0, 0)
-OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
-OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
-OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
-geompy.addToStudy( O, 'O' )
-geompy.addToStudy( OX, 'OX' )
-geompy.addToStudy( OY, 'OY' )
-geompy.addToStudy( OZ, 'OZ' )
-
-height = 0.5
-
-triangle = makePolygon(O, 1, 3, "triangle")
-
-P1 = geompy.MakeVertex(2, 0, 0)
-quadrangle = makePolygon(P1, 1, 4, "quadrangle")
-
-P2 = geompy.MakeVertex(4, 0, 0)
-pentagon = makePolygon(P2, 1, 5, "pentagon")
-
-P3 = geompy.MakeVertex(6, 0, 0)
-hexagon = makePolygon(P3, 1, 6, "hexagon")
-
-P4 = geompy.MakeVertex(8, 0, 0)
-heptagon = makePolygon(P4, 1, 7, "heptagon")
-
-P5 = geompy.MakeVertex(10, 0, 0)
-octagon = makePolygon(P5, 1, 7, "octagon")
-
-polygons = [triangle, quadrangle, pentagon, hexagon, heptagon, octagon]
-polyhedrons = []
-for polygon in polygons:
-  name = polygon.GetName()
-  polygon_extruded = geompy.MakePrismVecH(polygon, OZ, height, theName="%s_prism"%name)
-  polygon_summit = makeSummitSolid(polygon, -height, theName="%s_summit"%name)
-  polyhedrons += [polygon_extruded, polygon_summit]
-
-solids = geompy.MakeCompound(polyhedrons, theName="solids")
-
-
-###
-### SMESH component
-###
-
-import  SMESH, SALOMEDS
-from salome.smesh import smeshBuilder
-
-smesh = smeshBuilder.New()
-
-Mesh_1 = smesh.Mesh(solids)
-Regular_1D = Mesh_1.Segment()
-Number_of_Segments_1 = Regular_1D.NumberOfSegments(1)
-PolygonPerFace_2D = Mesh_1.Polygon()
-PolyhedronPerSolid_3D = Mesh_1.Polyhedron()
-
-ok = Mesh_1.Compute()
-
-if not ok:
-  raise Exception("Error when computing Mesh")
-
-# check volumes
-vol_geom = geompy.BasicProperties(solids)[2]
-vol_mesh = Mesh_1.GetVolume()
-
-assert abs(vol_geom - vol_mesh) < 1e-12
-
-assert Mesh_1.NbVolumes() == 12
-
-# check type of elements
-assert Mesh_1.NbTetras() == 1
-assert Mesh_1.NbHexas() == 1
-assert Mesh_1.NbPyramids() == 1
-assert Mesh_1.NbPrisms() == 1
-assert Mesh_1.NbHexagonalPrisms() == 1
-assert Mesh_1.NbPolyhedrons() == 7
-
-
-if salome.sg.hasDesktop():
-  salome.sg.updateObjBrowser()
diff --git a/doc/salome/examples/test_smeshplugin_mg_tetra_parallele.py b/doc/salome/examples/test_smeshplugin_mg_tetra_parallele.py
deleted file mode 100644 (file)
index 37f5dec..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Test000
-Checks the availability of the external plugins :
- 1 MG-TETRA-PARALLELE   (GHS3DPRLPLUGIN)
-Copyright EDF R&D 2017
-"""
-__revision__ = "V1.0"
-#
-# Computation of the meshes: T/F
-ComputeMeshes = True
-
-import salome
-
-salome.salome_init_without_session()
-theStudy = salome.myStudy
-#
-import iparameters
-IPAR = iparameters.IParameters(salome.myStudy.GetCommonParameters("Interface Applicative", 1))
-
-# fill list AP_MODULES_LIST
-IPAR.append("AP_MODULES_LIST", "Geometry")
-IPAR.append("AP_MODULES_LIST", "Mesh")
-
-ERROR = 0
-MESSAGE = ""
-#
-while not ERROR :
-
-###
-### A. GEOM component
-###
-  import GEOM
-  from salome.geom import geomBuilder
-  geompy = geomBuilder.New()
-  O = geompy.MakeVertex(0, 0, 0, "0")
-  OX = geompy.MakeVectorDXDYDZ(1, 0, 0, "OX")
-  OY = geompy.MakeVectorDXDYDZ(0, 1, 0, "OY")
-  OZ = geompy.MakeVectorDXDYDZ(0, 0, 1, "OZ")
-  BOX = geompy.MakeBoxDXDYDZ(200, 200, 200, "BOX")
-
-###
-### B. SMESH component
-###
-
-  import  SMESH
-  from salome.smesh import smeshBuilder
-
-  smesh = smeshBuilder.New()
-
-
-# B.7. MG_Tetra_Parallel
-  TEXTE = "MG_Tetra_Parallel"
-  MESH_7 = smesh.Mesh(BOX)
-  smesh.SetName(MESH_7.GetMesh(), "M_"+TEXTE)
-  MG_CADSurf_Tp = MESH_7.Triangle(algo=smeshBuilder.MG_CADSurf)
-  try :
-    MG_Tetra_Parallel = MESH_7.Tetrahedron(algo=smeshBuilder.MG_Tetra_Parallel)
-  except :
-    MESSAGE += "\nImpossible d'utiliser "+TEXTE
-    ERROR += 1
-  else :
-    if ComputeMeshes :
-      smesh.SetName(MG_Tetra_Parallel.GetAlgorithm(), TEXTE)
-      OK_COMPUTE = MESH_7.Compute()
-      if not OK_COMPUTE :
-        MESSAGE += "\nErreur avec "+TEXTE
-        ERROR += 1
-      else :
-        print(TEXTE+": OK")
-
-  break
-
-###
-### C. End
-###
-if ERROR :
-  raise Exception("\n\nNombre d'erreurs : %d" % ERROR + MESSAGE + "\n")
-else :
-  print("\nAucun problème\n")
-
diff --git a/doc/salome/examples/test_smeshplugins.py b/doc/salome/examples/test_smeshplugins.py
deleted file mode 100644 (file)
index 48f1208..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Test000
-Checks the availability of the external plugins :
- 1 NETGENPLUGIN
- 2 GMSHPLUGIN
- 3 MG-CADSURF           (BLSURFPLUGIN)
- 4 MG-TETRA             (GHS3DPLUGIN)
- 5 MG-HEXA              (HEXOTICPLUGIN)
- 6 MG-HYBRID            (HYBRIDPLUGIN)
-Copyright EDF R&D 2017
-"""
-__revision__ = "V1.0"
-#
-# Computation of the meshes: T/F
-ComputeMeshes = True
-
-import salome
-
-salome.salome_init_without_session()
-theStudy = salome.myStudy
-#
-import iparameters
-IPAR = iparameters.IParameters(salome.myStudy.GetCommonParameters("Interface Applicative", 1))
-
-# fill list AP_MODULES_LIST
-IPAR.append("AP_MODULES_LIST", "Geometry")
-IPAR.append("AP_MODULES_LIST", "Mesh")
-
-ERROR = 0
-MESSAGE = ""
-#
-while not ERROR :
-
-###
-### A. GEOM component
-###
-  import GEOM
-  from salome.geom import geomBuilder
-  geompy = geomBuilder.New()
-  O = geompy.MakeVertex(0, 0, 0, "0")
-  OX = geompy.MakeVectorDXDYDZ(1, 0, 0, "OX")
-  OY = geompy.MakeVectorDXDYDZ(0, 1, 0, "OY")
-  OZ = geompy.MakeVectorDXDYDZ(0, 0, 1, "OZ")
-  BOX = geompy.MakeBoxDXDYDZ(200, 200, 200, "BOX")
-
-###
-### B. SMESH component
-###
-
-  import  SMESH
-  from salome.smesh import smeshBuilder
-
-  smesh = smeshBuilder.New()
-
-# B.1. NETGEN
-  TEXTE = "NETGEN_1D2D3D"
-  MESH_1 = smesh.Mesh(BOX)
-  smesh.SetName(MESH_1.GetMesh(), "M_"+TEXTE)
-  try :
-    NETGEN_2D3D = MESH_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)
-  except :
-    MESSAGE += "\nImpossible d'utiliser "+TEXTE
-    ERROR += 1
-  else :
-    if ComputeMeshes :
-      smesh.SetName(NETGEN_2D3D.GetAlgorithm(), TEXTE)
-      OK_COMPUTE = MESH_1.Compute()
-      if not OK_COMPUTE :
-        MESSAGE += "\nErreur avec "+TEXTE
-        ERROR += 1
-      else :
-        print(TEXTE+": OK")
-
-# B.2. Gmsh
-  TEXTE = "Gmsh"
-  MESH_2 = smesh.Mesh(BOX)
-  smesh.SetName(MESH_2.GetMesh(), "M_"+TEXTE)
-  try :
-    GMSH = MESH_2.Tetrahedron(algo=smeshBuilder.GMSH)
-  except :
-    MESSAGE += "\nImpossible d'utiliser "+TEXTE
-    ERROR += 1
-  else :
-    if ComputeMeshes :
-      smesh.SetName(GMSH.GetAlgorithm(), TEXTE)
-      OK_COMPUTE = MESH_2.Compute()
-      if not OK_COMPUTE :
-        MESSAGE += "\nErreur avec "+TEXTE
-        ERROR += 1
-      else :
-        print(TEXTE+": OK")
-
-# B.3. MG_CADSurf
-  TEXTE = "MG_CADSurf"
-  MESH_3 = smesh.Mesh(BOX)
-  smesh.SetName(MESH_3.GetMesh(), "M_"+TEXTE)
-  try :
-    MG_CADSurf = MESH_3.Triangle(algo=smeshBuilder.MG_CADSurf)
-  except :
-    MESSAGE += "\nImpossible d'utiliser "+TEXTE
-    ERROR += 1
-#   On arrete tout en cas de problème car les suivants en dépendent
-    break
-  else :
-    if ComputeMeshes :
-      smesh.SetName(MG_CADSurf.GetAlgorithm(), TEXTE)
-      OK_COMPUTE = MESH_3.Compute()
-      if not OK_COMPUTE :
-        MESSAGE += "\nErreur avec "+TEXTE
-        ERROR += 1
-      else :
-        print(TEXTE+": OK")
-
-# B.4. MG_Tetra
-  TEXTE = "MG_Tetra"
-  MESH_4 = smesh.Mesh(BOX)
-  smesh.SetName(MESH_4.GetMesh(), "M_"+TEXTE)
-  MG_CADSurf_Te = MESH_4.Triangle(algo=smeshBuilder.MG_CADSurf)
-  try :
-    MG_Tetra = MESH_4.Tetrahedron(algo=smeshBuilder.MG_Tetra)
-  except :
-    MESSAGE += "\nImpossible d'utiliser "+TEXTE
-    ERROR += 1
-  else :
-    if ComputeMeshes :
-      smesh.SetName(MG_Tetra.GetAlgorithm(), TEXTE)
-      OK_COMPUTE = MESH_4.Compute()
-      if not OK_COMPUTE :
-        MESSAGE += "\nErreur avec "+TEXTE
-        ERROR += 1
-      else :
-        print(TEXTE+": OK")
-
-# B.5. MG_Hexa
-  TEXTE = "MG_Hexa"
-  MESH_5 = smesh.Mesh(BOX)
-  smesh.SetName(MESH_5.GetMesh(), "M_"+TEXTE)
-  MG_CADSurf_He = MESH_5.Triangle(algo=smeshBuilder.MG_CADSurf)
-  try :
-    MG_Hexa = MESH_5.Hexahedron(algo=smeshBuilder.MG_Hexa)
-  except :
-    MESSAGE += "\nImpossible d'utiliser "+TEXTE
-    ERROR += 1
-  else :
-    if ComputeMeshes :
-      smesh.SetName(MG_Hexa.GetAlgorithm(), TEXTE)
-      OK_COMPUTE = MESH_5.Compute()
-      if not OK_COMPUTE :
-        MESSAGE += "\nErreur avec "+TEXTE
-        ERROR += 1
-      else :
-        print(TEXTE+": OK")
-
-# B.6. MG_Hybrid
-  TEXTE = "MG_Hybrid"
-  MESH_6 = smesh.Mesh(BOX)
-  smesh.SetName(MESH_6.GetMesh(), "M_"+TEXTE)
-  MG_CADSurf_Hy = MESH_6.Triangle(algo=smeshBuilder.MG_CADSurf)
-  try :
-    MG_Hybrid = MESH_6.Tetrahedron(algo=smeshBuilder.HYBRID)
-  except :
-    MESSAGE += "\nImpossible d'utiliser "+TEXTE
-    ERROR += 1
-  else :
-    if ComputeMeshes :
-      smesh.SetName(MG_Hybrid.GetAlgorithm(), TEXTE)
-      OK_COMPUTE = MESH_6.Compute()
-      if not OK_COMPUTE :
-        MESSAGE += "\nErreur avec "+TEXTE
-        ERROR += 1
-      else :
-        print(TEXTE+": OK")
-
-  break
-
-###
-### C. End
-###
-if ERROR :
-  raise Exception("\n\nNombre d'erreurs : %d" % ERROR + MESSAGE + "\n")
-else :
-  print("\nAucun problème\n")
-
diff --git a/doc/salome/examples/testme.py b/doc/salome/examples/testme.py
deleted file mode 100755 (executable)
index 13748ea..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env python3
-# Copyright (C) 2007-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
-#
-
-
-import unittest, sys, os
-
-class SalomeSession(object):
-    def __init__(self, script):
-        import runSalome
-        run_script = "runSalome.py"
-        if sys.platform == 'win32':
-            module_dir = os.getenv("KERNEL_ROOT_DIR")
-            if module_dir: run_script = os.path.join(module_dir, "bin", "salome", run_script)
-            pass
-        sys.argv  = [run_script]
-        sys.argv += ["--terminal"]
-        sys.argv += ["--modules=GEOM,SHAPER,SHAPERSTUDY,SMESH"]
-        sys.argv += ["%s" % script]
-        if sys.platform == 'win32':
-            main_module_path = sys.modules['__main__'].__file__
-            sys.modules['__main__'].__file__ = ''
-        clt, d = runSalome.main()
-        if sys.platform == 'win32':
-            sys.modules['__main__'].__file__ = main_module_path
-        return
-
-    def __del__(self):
-        port = os.getenv('NSPORT')
-        import killSalomeWithPort
-        killSalomeWithPort.killMyPort(port)
-        return
-    pass
-
-class MyTest(unittest.TestCase):
-    def testFunction(self):
-        SalomeSession(sys.argv[1])
-    pass
-
-unittest.main(argv=sys.argv[:1])
diff --git a/doc/salome/examples/tests.py.in b/doc/salome/examples/tests.py.in
deleted file mode 100644 (file)
index 3b1f880..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (C) 2018-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
-#
-
-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 (file)
index 4e392b1..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-# 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
-#
-
-# 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_smeshplugin_mg_tetra_parallele.py
-  test_smeshplugins.py
-  MGAdaptTests_without_session.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
-  )
-
-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
-  find_salome_actor_delegate_to_vtk.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 (file)
index 93f5196..0000000
+++ /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 (file)
index 5b3ff28..0000000
+++ /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 (file)
index edd4cb4..0000000
+++ /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 (file)
index 9100355..0000000
+++ /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 (file)
index 0adf024..0000000
+++ /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 (file)
index 964449f..0000000
+++ /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 (file)
index 65865ac..0000000
+++ /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 (file)
index 542bb5f..0000000
+++ /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 (file)
index bbc7669..0000000
+++ /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 (file)
index f3de43d..0000000
+++ /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 (file)
index d4137e4..0000000
+++ /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 (file)
index 65b05d7..0000000
+++ /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 (file)
index d4b5539..0000000
+++ /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 (file)
index 0d41392..0000000
+++ /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 (file)
index 0e8899e..0000000
+++ /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 (file)
index 402e89b..0000000
+++ /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 (file)
index e9889cb..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2007-2021  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/CMakeLists.txt b/doc/salome/gui/SMESH/CMakeLists.txt
deleted file mode 100644 (file)
index 0e2363b..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright (C) 2012-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
-#
-
-INCLUDE(UseSphinx)
-
-SALOME_INSTALL_SCRIPTS(collect_mesh_methods.py ${SALOME_INSTALL_BINS})
-
-#SET(DOC_SMESH_MeshersList StdMeshers)
-SET(smesh_file "${CMAKE_CURRENT_SOURCE_DIR}/collect_mesh_methods.py")
-SET(smesh_merge_file "${CMAKE_CURRENT_SOURCE_DIR}/merge_mesh_class.py")
-
-# Define requared environment variables
-#SALOME_ACCUMULATE_ENVIRONMENT(SMESH_MeshersList NOCHECK ${DOC_SMESH_MeshersList})
-#SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH NOCHECK ${CMAKE_CURRENT_BINARY_DIR}/tmp1)
-#SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH NOCHECK ${CMAKE_CURRENT_BINARY_DIR}/tmp2)
-
-SET(ADD_VAR)
-LIST(APPEND ADD_VAR SMESH_MeshersList=StdMeshers)
-LIST(APPEND ADD_VAR PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}/tmp1)
-LIST(APPEND ADD_VAR PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}/tmp2)
-
-# Make configuration file
-SALOME_CONFIGURE_FILE(conf.py.in conf.py)
-
-IF(SALOME_SMESH_BUILD_FRENCH_DOC)
-  SET(BUILD_LANGUAGE_SWITCHER "true")
-  SALOME_CONFIGURE_FILE(static/switchers.js.in static/switchers.js)
-  ADD_MULTI_LANG_DOCUMENTATION(TARGET_NAME usr_docs MODULE SMESH LANGUAGES fr ADDITIONAL_ENVIRONMENT ${ADD_VAR})
-ELSE()
-  SET(BUILD_LANGUAGE_SWITCHER "false")
-  SALOME_CONFIGURE_FILE(static/switchers.js.in static/switchers.js)
-  ADD_MULTI_LANG_DOCUMENTATION(TARGET_NAME usr_docs MODULE SMESH ADDITIONAL_ENVIRONMENT ${ADD_VAR})
-ENDIF()
-
-# 1. Options for generating temporary python modules
-SET(_cmd_tmp_gen_options ${smesh_file} -o tmp1/smeshBuilder_dynamic.py -f sphinx StdMeshers)
-SALOME_GENERATE_ENVIRONMENT_SCRIPT(_cmd_tmp_gen env_script "${PYTHON_EXECUTABLE}" "${_cmd_tmp_gen_options}" CONTEXT "SMESH_DOC" ADDITIONAL_VARIABLES ${ADD_VAR})
-
-# 2. Options for generating final smeshBuilder.py script
-SET(_cmd_smeshBuilder_gen_options ${smesh_merge_file} -o tmp2/smeshBuilder.py smeshBuilder)
-SALOME_GENERATE_ENVIRONMENT_SCRIPT(_cmd_smeshBuilder_gen env_script "${PYTHON_EXECUTABLE}" "${_cmd_smeshBuilder_gen_options}" CONTEXT "SMESH_DOC" ADDITIONAL_VARIABLES ${ADD_VAR})
-
-ADD_CUSTOM_TARGET(pre_usr_docs
-  # 1. Make temporary directories for python modules 
-  COMMAND ${CMAKE_COMMAND} -E make_directory tmp1
-  COMMAND ${CMAKE_COMMAND} -E make_directory tmp2
-
-  # 2. Copy python module to the temporary file
-  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/src/SMESH_SWIG/smeshBuilder.py ${CMAKE_CURRENT_BINARY_DIR}/tmp1/smeshBuilder_origin.py
-
-  # 3. Copy python modules to be documented into memporary directory
-  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/src/SMESH_SWIG/StdMeshersBuilder.py ${CMAKE_CURRENT_BINARY_DIR}/tmp2/StdMeshersBuilder.py
-  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/src/SMESH_SWIG/smesh_algorithm.py ${CMAKE_CURRENT_BINARY_DIR}/tmp2/smesh_algorithm.py
-  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/src/SMESH_PY/smeshstudytools.py ${CMAKE_CURRENT_BINARY_DIR}/tmp2/smeshstudytools.py
-
-  # 4. Collect methods from StdMeshers into temporary python module
-  COMMAND ${_cmd_tmp_gen}
-
-  # 5. Generate smeshBuilder.py script
-  COMMAND ${_cmd_smeshBuilder_gen}
-  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-)
-
-ADD_DEPENDENCIES(usr_docs pre_usr_docs)
-
-INSTALL(CODE "EXECUTE_PROCESS(COMMAND \"${CMAKE_COMMAND}\" --build ${PROJECT_BINARY_DIR} --target usr_docs)")
-INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/SMESH DESTINATION ${SALOME_INSTALL_DOC}/gui)
-IF(SALOME_SMESH_BUILD_FRENCH_DOC)
-  INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/SMESH_fr DESTINATION ${SALOME_INSTALL_DOC}/gui)
-ENDIF()
-
-SET(make_clean_files tmp1 tmp2)
-SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${make_clean_files}")
diff --git a/doc/salome/gui/SMESH/collect_mesh_methods.py b/doc/salome/gui/SMESH/collect_mesh_methods.py
deleted file mode 100755 (executable)
index 43b80ed..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-#!/usr/bin/env python3
-# Copyright (C) 2012-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
-#
-
-#################################################################################
-#
-# File:   collect_mesh_methods.py
-# Author: Vadim SANDLER, Open CASCADE S.A.S (vadim.sandler@opencascade.com)
-#
-#################################################################################
-#
-# Extraction of the meshing algorithm classes
-# dynamically added by the plug-in to the Mesh
-# class.
-# 
-# This script is intended for internal usage - only
-# for generation of the extra developer documentation for
-# the meshing plug-in(s).
-# 
-# Usage:
-#       collect_mesh_methods.py <plugin_name>
-# where
-#   <plugin_name> is a name of the plug-in module
-#
-# Notes:
-# - the script is supposed to be run in correct environment
-# i.e. PYTHONPATH, SMESH_MeshersList and other important
-# variables are set properly; otherwise the script will fail.
-#
-################################################################################
-
-import inspect
-import sys
-
-def main(plugin_name, dummymeshhelp = True, output_file = "smeshBuilder.py", format = "doxygen"):
-    plugin_module_name  = plugin_name + "Builder"
-    plugin_module       = "salome.%s.%s" % (plugin_name, plugin_module_name)
-    try:
-        exec("from salome.smesh.smeshBuilder import *", globals())
-        exec("import %s" % plugin_module, globals())
-        exec("mod = %s" % plugin_module , globals())
-        methods = {}
-        for attr in dir( mod ):
-            if attr.startswith( '_' ): continue
-            algo = getattr( mod, attr )
-            if inspect.isclass(algo) and hasattr(algo, "meshMethod"):
-                method = getattr( algo, "meshMethod" )
-                if method not in methods: methods[ method ] = []
-                methods[ method ].append( algo )
-                pass
-            pass
-        if methods:
-            output = []
-            if dummymeshhelp:
-                if format == "doxygen":
-                    output.append( "## @package smeshBuilder" )
-                    output.append( "#  Documentation of the methods dynamically added by the " + plugin_name + " meshing plug-in to the Mesh class." )
-                    output.append( "" )
-                elif format == "sphinx":
-                    output.append( '"""' )
-                    output.append( 'Documentation of the methods dynamically added by the ' + plugin_name + ' meshing plug-in to the Mesh class.' )
-                    output.append( '"""' )
-                    output.append( '' )
-                pass
-            if format == "doxygen":
-                output.append( "## This class allows defining and managing a mesh." )
-                output.append( "#" )
-            elif format == "sphinx":
-                output.append( "class Mesh:" )
-                output.append( '    """' )
-                output.append( '    This class allows defining and managing a mesh.' )
-                output.append( '    ' )
-            if dummymeshhelp:
-                # Add dummy Mesh help
-                # This is supposed to be done when generating documentation for meshing plug-ins
-                if format == "doxygen":
-                    output.append( "#  @note The documentation below does not provide complete description of class @b %Mesh" )
-                    output.append( "#  from @b smeshBuilder package. This documentation provides only information about" )
-                    output.append( "#  the methods dynamically added to the %Mesh class by the " + plugin_name + " plugin" )
-                    output.append( "#  For more details on the %Mesh class, please refer to the SALOME %Mesh module" )
-                    output.append( "#  documentation." )
-                elif format == "sphinx":
-                    output.append( '    The documentation below does not provide complete description of class @b %Mesh' )
-                    output.append( '    from @b smeshBuilder package. This documentation provides only information about' )
-                    output.append( '    the methods dynamically added to the %Mesh class by the " + plugin_name + " plugin' )
-                    output.append( '    For more details on the %Mesh class, please refer to the SALOME %Mesh module' )
-                    output.append( '    documentation.' )
-                    output.append( '    """' )
-                    output.append( '    ' )
-                pass
-            else:
-                # Extend documentation for Mesh class with information about dynamically added methods.
-                # This is supposed to be done only when building documentation for SMESH module
-                if format ==  "doxygen":
-                    output.append( "#  @note Some methods are dynamically added to the @b %Mesh class in runtime by meshing " )
-                    output.append( "#  plug-in modules. If you fail to find help on some methods in the documentation of SMESH module, " )
-                    output.append( "#  try to look into the documentation for the meshing plug-ins." )
-                elif format == "sphinx":
-                    output.append( "    Note:")
-                    output.append( "        Some methods are dynamically added to the @b %Mesh class in runtime by meshing " )
-                    output.append( "        plug-in modules. If you fail to find help on some methods in the documentation of SMESH module, " )
-                    output.append( "        try to look into the documentation for the meshing plug-ins." )
-                    output.append( '    """' )
-                    output.append( '    ' )
-                pass
-            if format == "doxygen":
-                output.append( "class Mesh:" )
-            for method in methods:
-                docHelper = ""
-                for algo in methods[ method ]:
-                    if hasattr( algo, "docHelper" ): docHelper = getattr( algo, "docHelper" )
-                    if docHelper: break
-                    pass
-                if not docHelper: docHelper = "Create new algorithm."
-                if format == "doxygen":
-                    output.append( " ## %s" % docHelper )
-                    output.append( " #" )
-                    output.append( " #  This method is dynamically added to %Mesh class by the meshing plug-in(s). " )
-                    output.append( " #" )
-                    output.append( " #  If the optional @a geom_shape parameter is not set, this algorithm is global (applied to whole mesh)." )
-                    output.append( " #  Otherwise, this algorithm defines a submesh based on @a geom_shape subshape." )
-                    output.append( " #  @param algo_type type of algorithm to be created; allowed values are specified by classes implemented by plug-in" )
-                    output.append( " #  @param geom_shape if defined, the subshape to be meshed (GEOM_Object)" )
-                    output.append( " #  @return An instance of Mesh_Algorithm sub-class according to the specified @a algo_type, see " )
-                    output.append( " #  %s" % ", ".join( [ "%s.%s" % ( plugin_module_name, algo.__name__ ) for algo in methods[ method ] ] ) )
-                    output.append( " def %s(algo_type, geom_shape=0):" % method )
-                    output.append( "   pass" )
-                elif format == "sphinx":
-                    output.append( '    def %s(algo_type, geom_shape=0):' % method )
-                    output.append( '        """' )
-                    output.append( '        %s' % docHelper )
-                    output.append( '        ' )
-                    output.append( '        This method is dynamically added to :class:`Mesh <smeshBuilder.Mesh>` class by the meshing plug-in(s). ' )
-                    output.append( '        ' )
-                    output.append( '        If the optional *geom_shape* parameter is not set, this algorithm is global (applied to whole mesh).' )
-                    output.append( '        Otherwise, this algorithm defines a submesh based on *geom_shape* subshape.' )
-                    output.append( '        ' )
-                    output.append( '        Parameters:' )
-                    output.append( '            algo_type: type of algorithm to be created; allowed values are specified by classes implemented by plug-in' )
-                    output.append( '            geom_shape (GEOM_Object): if defined, the subshape to be meshed' )
-                    output.append( '        ' )
-                    output.append( '        Returns:')
-                    output.append( '            An instance of Mesh_Algorithm sub-class according to the specified *algo_type*, see ' )
-                    output.append( '            %s' % ", ".join( [ ":class:`~%s.%s`" % ( plugin_module_name, algo.__name__ ) for algo in methods[ method ] ] ) )
-                    output.append( '        """' )
-                    output.append( '        pass' )
-                pass
-            with open(output_file, "w", encoding='utf8') as f:
-                f.write('\n'.join(output))
-            pass
-        pass
-    except Exception as e:
-        print(e)
-        pass
-    pass
-    
-if __name__ == "__main__":
-    import argparse
-    parser = argparse.ArgumentParser()
-    h  = "Output file (smesh.py by default)"
-    parser.add_argument("-o", "--output", dest="output",
-                      action="store", default='smesh.py', metavar="file",
-                      help=h)
-    h  = "If this option is True, dummy help for Mesh class is added. "
-    h += "This option should be False (default) when building documentation for SMESH module "
-    h += "and True when building documentation for meshing plug-ins."
-    parser.add_argument("-d", "--dummy-mesh-help", dest="dummymeshhelp",
-                      action="store_true", default=False,
-                      help=h)
-    h = "Format of the documentation strings in the output file. Possible values are: "
-    h+= "'doxygen' - documentation strings are generated in the doxygen format, before a method definition."
-    h+= "'sphinx' - documentation strings are generated in the sphinx format, after a method definition."
-    parser.add_argument("-f", "--format", dest="format",
-                      action="store", default="doxygen", help=h)
-
-    parser.add_argument("plugin_name")
-
-
-    args = parser.parse_args()
-
-    if args.plugin_name is None : sys.exit("Plugin name is not specified")
-    main( args.plugin_name, args.dummymeshhelp, args.output, args.format )
-    pass
diff --git a/doc/salome/gui/SMESH/conf.py.in b/doc/salome/gui/SMESH/conf.py.in
deleted file mode 100644 (file)
index be0975f..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# yacs documentation build configuration file, created by
-# sphinx-quickstart on Fri Aug 29 09:57:25 2008.
-#
-# This file is execfile()d with the current directory set to its containing dir.
-#
-# The contents of this file are pickled, so don't put values in the namespace
-# that aren't pickleable (module imports are okay, they're removed automatically).
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-import importlib
-import sys, os
-import sphinx
-
-# If your extensions are in another directory, add it here. If the directory
-# is relative to the documentation root, use os.path.abspath to make it
-# absolute, like shown here.
-#sys.path.append(os.path.abspath('.'))
-
-# General configuration
-# ---------------------
-
-# Add any Sphinx extension module names here, as strings. They can be extensions
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc','sphinx.ext.autosummary']
-# Optional extensions
-extra_extensions = ['sphinx_rtd_theme']
-if sphinx.version_info[:2] < (1,3):
-    extra_extensions += ['sphinxcontrib.napoleon']
-else:
-    extra_extensions += ['sphinx.ext.napoleon']
-for ext in extra_extensions:
-    try:
-        importlib.import_module(ext)
-        extensions.append(ext)
-        globals().update({'use_{}'.format(ext):True})
-    except:
-        globals().update({'use_{}'.format(ext):False})
-
-#add pdfbuilder to build a pdf with rst2pdf
-#extensions = ['rst2pdf.pdfbuilder']
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = [os.path.join('@CMAKE_CURRENT_SOURCE_DIR@','templates')]
-
-# The suffix of source filenames.
-source_suffix = '.rst'
-
-# The encoding of source files.
-#source_encoding = 'utf-8'
-
-# The master toctree document.
-master_doc = 'index'
-
-# General information about the project.
-project = 'Mesh'
-
-# Copyright is shown via custom footer
-html_show_copyright = False
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-version = '@SALOMESMESH_VERSION@'
-# The full version, including alpha/beta/rc tags.
-release = '@SALOMESMESH_VERSION@'
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
-
-# List of documents that shouldn't be included in the build.
-#unused_docs = []
-
-# List of directories, relative to source directory, that shouldn't be searched
-# for source files.
-exclude_trees = ['.build','ref','images','CVS']
-
-# A list of glob-style patterns that should be excluded when looking for source
-# files. They are matched against the source file names relative to the
-# source directory, using slashes as directory separators on all platforms.
-exclude_patterns = ['**/CVS']
-
-# The reST default role (used for this markup: `text`) to use for all documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-
-# Options for HTML output
-# -----------------------
-
-# The theme to use for HTML and HTML Help pages.  Major themes that come with
-# Sphinx are currently 'default' and 'sphinxdoc'.
-if use_sphinx_rtd_theme:
-  html_theme = 'sphinx_rtd_theme'
-else:
-  html_theme = 'default' if sphinx.version_info[:2] < (1,3) else 'classic'
-
-themes_options = {}
-themes_options['classic'] = {
-  'body_max_width':'none',
-  'body_min_width':0,
-}
-html_theme_options = themes_options.get(html_theme, {})
-
-# The name for this set of Sphinx documents.  If None, it defaults to
-# "<project> v<release> documentation".
-#html_title = None
-
-# A shorter title for the navigation bar.  Default is the same as html_title.
-#html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = [os.path.join('@CMAKE_CURRENT_BINARY_DIR@','static')]
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-#html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-html_sidebars = { '**': ['globaltoc.html', 'relations.html', 'sourcelink.html', 'searchbox.html'],}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-html_use_modindex = True 
-
-# If false, no index is generated.
-html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, the reST sources are included in the HTML build as _sources/<name>.
-#html_copy_source = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it.  The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = ''
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'smeshdoc'
-
-
-# Options for LaTeX output
-# ------------------------
-
-# The paper size ('letter' or 'a4').
-#latex_paper_size = 'a4'
-
-# The font size ('10pt', '11pt' or '12pt').
-latex_font_size = '10pt'
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, document class [howto/manual]).
-latex_documents = [
-  ('index', 'Smesh.tex', 'SMESH User Documentation', '', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# Additional stuff for the LaTeX preamble.
-latex_preamble = """
-\RecustomVerbatimEnvironment
- {Verbatim}{Verbatim}
- {fontsize=\scriptsize}
-"""
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-latex_use_modindex = True
-
-#Options for rst2pdf output (through reportlab)
-pdf_documents = [
-  ('index', 'Smesh.tex', 'SMESH User Documentation', '', 'manual'),
-]
-
-# A comma-separated list of custom stylesheets.
-pdf_stylesheets = ['sphinx','kerning','a4']
-
-# Create a compressed PDF
-# Use True/False or 1/0
-#pdf_compressed = False
-
-# A colon-separated list of folders to search for fonts. Example:
-# pdf_font_path = ['/usr/share/fonts', '/usr/share/texmf-dist/fonts/']
-
-# Language to be used for hyphenation support
-#pdf_language = "en_US"
-
-# Example configuration for intersphinx: refer to the Python standard library.
-intersphinx_mapping = {'https://docs.python.org/': None}
-
-locale_dirs = [os.path.join('@CMAKE_CURRENT_BINARY_DIR@','locale')]   # path is example but recommended.
-gettext_compact = False     # optional
diff --git a/doc/salome/gui/SMESH/images/2d_from_3d_dlg.png b/doc/salome/gui/SMESH/images/2d_from_3d_dlg.png
deleted file mode 100644 (file)
index e0c8ca5..0000000
Binary files a/doc/salome/gui/SMESH/images/2d_from_3d_dlg.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/2d_from_3d_example.png b/doc/salome/gui/SMESH/images/2d_from_3d_example.png
deleted file mode 100644 (file)
index d01efd5..0000000
Binary files a/doc/salome/gui/SMESH/images/2d_from_3d_example.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/2d_from_3d_ico.png b/doc/salome/gui/SMESH/images/2d_from_3d_ico.png
deleted file mode 100644 (file)
index b0842d3..0000000
Binary files a/doc/salome/gui/SMESH/images/2d_from_3d_ico.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/2d_from_3d_menu.png b/doc/salome/gui/SMESH/images/2d_from_3d_menu.png
deleted file mode 100644 (file)
index acb7b34..0000000
Binary files a/doc/salome/gui/SMESH/images/2d_from_3d_menu.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/Clipping_Absolute.png b/doc/salome/gui/SMESH/images/Clipping_Absolute.png
deleted file mode 100644 (file)
index 9657d81..0000000
Binary files a/doc/salome/gui/SMESH/images/Clipping_Absolute.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/Clipping_Relative.png b/doc/salome/gui/SMESH/images/Clipping_Relative.png
deleted file mode 100644 (file)
index 4fd7dbe..0000000
Binary files a/doc/salome/gui/SMESH/images/Clipping_Relative.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/Nut_sharp_edges.png b/doc/salome/gui/SMESH/images/Nut_sharp_edges.png
deleted file mode 100644 (file)
index 754710b..0000000
Binary files a/doc/salome/gui/SMESH/images/Nut_sharp_edges.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-arithmetic1d.png b/doc/salome/gui/SMESH/images/a-arithmetic1d.png
deleted file mode 100644 (file)
index 9bc67b0..0000000
Binary files a/doc/salome/gui/SMESH/images/a-arithmetic1d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-averagelength.png b/doc/salome/gui/SMESH/images/a-averagelength.png
deleted file mode 100755 (executable)
index c8ca5ac..0000000
Binary files a/doc/salome/gui/SMESH/images/a-averagelength.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-clipping2.png b/doc/salome/gui/SMESH/images/a-clipping2.png
deleted file mode 100755 (executable)
index 9d1249c..0000000
Binary files a/doc/salome/gui/SMESH/images/a-clipping2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-creategroup.png b/doc/salome/gui/SMESH/images/a-creategroup.png
deleted file mode 100644 (file)
index 553fb98..0000000
Binary files a/doc/salome/gui/SMESH/images/a-creategroup.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-createpolyhedralvolume.png b/doc/salome/gui/SMESH/images/a-createpolyhedralvolume.png
deleted file mode 100755 (executable)
index 6c6bb61..0000000
Binary files a/doc/salome/gui/SMESH/images/a-createpolyhedralvolume.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-cuttingofquadrangles.png b/doc/salome/gui/SMESH/images/a-cuttingofquadrangles.png
deleted file mode 100755 (executable)
index 1e533e6..0000000
Binary files a/doc/salome/gui/SMESH/images/a-cuttingofquadrangles.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-deflection1d.png b/doc/salome/gui/SMESH/images/a-deflection1d.png
deleted file mode 100755 (executable)
index 57fd859..0000000
Binary files a/doc/salome/gui/SMESH/images/a-deflection1d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-filteronfaces.png b/doc/salome/gui/SMESH/images/a-filteronfaces.png
deleted file mode 100644 (file)
index 93014f9..0000000
Binary files a/doc/salome/gui/SMESH/images/a-filteronfaces.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-geometric1d.png b/doc/salome/gui/SMESH/images/a-geometric1d.png
deleted file mode 100644 (file)
index cb5b9cc..0000000
Binary files a/doc/salome/gui/SMESH/images/a-geometric1d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-maxelarea.png b/doc/salome/gui/SMESH/images/a-maxelarea.png
deleted file mode 100755 (executable)
index 4306ed5..0000000
Binary files a/doc/salome/gui/SMESH/images/a-maxelarea.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-maxelvolume.png b/doc/salome/gui/SMESH/images/a-maxelvolume.png
deleted file mode 100755 (executable)
index 033e700..0000000
Binary files a/doc/salome/gui/SMESH/images/a-maxelvolume.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-maxsize1d.png b/doc/salome/gui/SMESH/images/a-maxsize1d.png
deleted file mode 100644 (file)
index c2ddd0c..0000000
Binary files a/doc/salome/gui/SMESH/images/a-maxsize1d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-nbsegments1.png b/doc/salome/gui/SMESH/images/a-nbsegments1.png
deleted file mode 100755 (executable)
index 0cd778f..0000000
Binary files a/doc/salome/gui/SMESH/images/a-nbsegments1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-nbsegments2.png b/doc/salome/gui/SMESH/images/a-nbsegments2.png
deleted file mode 100644 (file)
index d9f9c56..0000000
Binary files a/doc/salome/gui/SMESH/images/a-nbsegments2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-patterntype.png b/doc/salome/gui/SMESH/images/a-patterntype.png
deleted file mode 100755 (executable)
index 82c6efb..0000000
Binary files a/doc/salome/gui/SMESH/images/a-patterntype.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-patterntype1.png b/doc/salome/gui/SMESH/images/a-patterntype1.png
deleted file mode 100755 (executable)
index b84257e..0000000
Binary files a/doc/salome/gui/SMESH/images/a-patterntype1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-standmeshinfo.png b/doc/salome/gui/SMESH/images/a-standmeshinfo.png
deleted file mode 100755 (executable)
index dc037ef..0000000
Binary files a/doc/salome/gui/SMESH/images/a-standmeshinfo.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-startendlength.png b/doc/salome/gui/SMESH/images/a-startendlength.png
deleted file mode 100644 (file)
index 33293d3..0000000
Binary files a/doc/salome/gui/SMESH/images/a-startendlength.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-transparency.png b/doc/salome/gui/SMESH/images/a-transparency.png
deleted file mode 100755 (executable)
index df10f7a..0000000
Binary files a/doc/salome/gui/SMESH/images/a-transparency.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-unionoftriangles.png b/doc/salome/gui/SMESH/images/a-unionoftriangles.png
deleted file mode 100755 (executable)
index 24e9a8b..0000000
Binary files a/doc/salome/gui/SMESH/images/a-unionoftriangles.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/a-viewgeneral.png b/doc/salome/gui/SMESH/images/a-viewgeneral.png
deleted file mode 100755 (executable)
index 638870e..0000000
Binary files a/doc/salome/gui/SMESH/images/a-viewgeneral.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/adaptation_01.png b/doc/salome/gui/SMESH/images/adaptation_01.png
deleted file mode 100644 (file)
index 67cb8b6..0000000
Binary files a/doc/salome/gui/SMESH/images/adaptation_01.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/adaptation_02.png b/doc/salome/gui/SMESH/images/adaptation_02.png
deleted file mode 100644 (file)
index 1f3f9ed..0000000
Binary files a/doc/salome/gui/SMESH/images/adaptation_02.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/adaptive1d.png b/doc/salome/gui/SMESH/images/adaptive1d.png
deleted file mode 100644 (file)
index 8091c8d..0000000
Binary files a/doc/salome/gui/SMESH/images/adaptive1d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/adaptive1d_sample_mesh.png b/doc/salome/gui/SMESH/images/adaptive1d_sample_mesh.png
deleted file mode 100644 (file)
index 034207f..0000000
Binary files a/doc/salome/gui/SMESH/images/adaptive1d_sample_mesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/add.gif b/doc/salome/gui/SMESH/images/add.gif
deleted file mode 100644 (file)
index 26350e4..0000000
Binary files a/doc/salome/gui/SMESH/images/add.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/add.png b/doc/salome/gui/SMESH/images/add.png
deleted file mode 100755 (executable)
index 87995aa..0000000
Binary files a/doc/salome/gui/SMESH/images/add.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/add0delement.png b/doc/salome/gui/SMESH/images/add0delement.png
deleted file mode 100644 (file)
index 06621cc..0000000
Binary files a/doc/salome/gui/SMESH/images/add0delement.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/add_0delement.png b/doc/salome/gui/SMESH/images/add_0delement.png
deleted file mode 100644 (file)
index fa1075b..0000000
Binary files a/doc/salome/gui/SMESH/images/add_0delement.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/add_ball.png b/doc/salome/gui/SMESH/images/add_ball.png
deleted file mode 100644 (file)
index 1fe4f64..0000000
Binary files a/doc/salome/gui/SMESH/images/add_ball.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/add_edge.png b/doc/salome/gui/SMESH/images/add_edge.png
deleted file mode 100755 (executable)
index 8a532e1..0000000
Binary files a/doc/salome/gui/SMESH/images/add_edge.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/add_node.png b/doc/salome/gui/SMESH/images/add_node.png
deleted file mode 100755 (executable)
index cb50bf6..0000000
Binary files a/doc/salome/gui/SMESH/images/add_node.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/add_polygone.png b/doc/salome/gui/SMESH/images/add_polygone.png
deleted file mode 100755 (executable)
index a76bace..0000000
Binary files a/doc/salome/gui/SMESH/images/add_polygone.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/add_polyhedron.png b/doc/salome/gui/SMESH/images/add_polyhedron.png
deleted file mode 100755 (executable)
index 2e23634..0000000
Binary files a/doc/salome/gui/SMESH/images/add_polyhedron.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/add_quadrangle.png b/doc/salome/gui/SMESH/images/add_quadrangle.png
deleted file mode 100755 (executable)
index f25b94d..0000000
Binary files a/doc/salome/gui/SMESH/images/add_quadrangle.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/add_triangle.png b/doc/salome/gui/SMESH/images/add_triangle.png
deleted file mode 100755 (executable)
index 41c3359..0000000
Binary files a/doc/salome/gui/SMESH/images/add_triangle.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/addball.png b/doc/salome/gui/SMESH/images/addball.png
deleted file mode 100644 (file)
index c38c9fa..0000000
Binary files a/doc/salome/gui/SMESH/images/addball.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/addedge.png b/doc/salome/gui/SMESH/images/addedge.png
deleted file mode 100755 (executable)
index 7a5a030..0000000
Binary files a/doc/salome/gui/SMESH/images/addedge.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/addhexahedron.png b/doc/salome/gui/SMESH/images/addhexahedron.png
deleted file mode 100755 (executable)
index 0cf7fe8..0000000
Binary files a/doc/salome/gui/SMESH/images/addhexahedron.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/addinfo_group.png b/doc/salome/gui/SMESH/images/addinfo_group.png
deleted file mode 100644 (file)
index 7dfcdf0..0000000
Binary files a/doc/salome/gui/SMESH/images/addinfo_group.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/addinfo_mesh.png b/doc/salome/gui/SMESH/images/addinfo_mesh.png
deleted file mode 100644 (file)
index 75215b3..0000000
Binary files a/doc/salome/gui/SMESH/images/addinfo_mesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/addinfo_submesh.png b/doc/salome/gui/SMESH/images/addinfo_submesh.png
deleted file mode 100644 (file)
index 44b1dda..0000000
Binary files a/doc/salome/gui/SMESH/images/addinfo_submesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/addnode.png b/doc/salome/gui/SMESH/images/addnode.png
deleted file mode 100755 (executable)
index 1fd9a9f..0000000
Binary files a/doc/salome/gui/SMESH/images/addnode.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/addnode_notebook.png b/doc/salome/gui/SMESH/images/addnode_notebook.png
deleted file mode 100755 (executable)
index 804f806..0000000
Binary files a/doc/salome/gui/SMESH/images/addnode_notebook.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/addpolygon.png b/doc/salome/gui/SMESH/images/addpolygon.png
deleted file mode 100755 (executable)
index 200999d..0000000
Binary files a/doc/salome/gui/SMESH/images/addpolygon.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/addquadrangle.png b/doc/salome/gui/SMESH/images/addquadrangle.png
deleted file mode 100755 (executable)
index bd24622..0000000
Binary files a/doc/salome/gui/SMESH/images/addquadrangle.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/addtetrahedron.png b/doc/salome/gui/SMESH/images/addtetrahedron.png
deleted file mode 100755 (executable)
index 0a6a740..0000000
Binary files a/doc/salome/gui/SMESH/images/addtetrahedron.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/addtriangle.png b/doc/salome/gui/SMESH/images/addtriangle.png
deleted file mode 100755 (executable)
index 67682c8..0000000
Binary files a/doc/salome/gui/SMESH/images/addtriangle.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/advanced_mesh_infos.png b/doc/salome/gui/SMESH/images/advanced_mesh_infos.png
deleted file mode 100755 (executable)
index c3585ea..0000000
Binary files a/doc/salome/gui/SMESH/images/advanced_mesh_infos.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/analyticdensity.png b/doc/salome/gui/SMESH/images/analyticdensity.png
deleted file mode 100644 (file)
index b1c9972..0000000
Binary files a/doc/salome/gui/SMESH/images/analyticdensity.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/angle_measure.png b/doc/salome/gui/SMESH/images/angle_measure.png
deleted file mode 100644 (file)
index 80a2116..0000000
Binary files a/doc/salome/gui/SMESH/images/angle_measure.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/aqt.png b/doc/salome/gui/SMESH/images/aqt.png
deleted file mode 100755 (executable)
index 46ee94d..0000000
Binary files a/doc/salome/gui/SMESH/images/aqt.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/automaticlength.png b/doc/salome/gui/SMESH/images/automaticlength.png
deleted file mode 100755 (executable)
index 15fb8b3..0000000
Binary files a/doc/salome/gui/SMESH/images/automaticlength.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/b-art_end_length.png b/doc/salome/gui/SMESH/images/b-art_end_length.png
deleted file mode 100755 (executable)
index 26da5fa..0000000
Binary files a/doc/salome/gui/SMESH/images/b-art_end_length.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/b-erage_length.png b/doc/salome/gui/SMESH/images/b-erage_length.png
deleted file mode 100755 (executable)
index f64077c..0000000
Binary files a/doc/salome/gui/SMESH/images/b-erage_length.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/b-flection1d.png b/doc/salome/gui/SMESH/images/b-flection1d.png
deleted file mode 100644 (file)
index b0e366b..0000000
Binary files a/doc/salome/gui/SMESH/images/b-flection1d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/b-ithmetic1d.png b/doc/salome/gui/SMESH/images/b-ithmetic1d.png
deleted file mode 100755 (executable)
index 72f76b9..0000000
Binary files a/doc/salome/gui/SMESH/images/b-ithmetic1d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/b-mberofsegments.png b/doc/salome/gui/SMESH/images/b-mberofsegments.png
deleted file mode 100755 (executable)
index 27f6868..0000000
Binary files a/doc/salome/gui/SMESH/images/b-mberofsegments.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/b-mesh_infos.png b/doc/salome/gui/SMESH/images/b-mesh_infos.png
deleted file mode 100755 (executable)
index 6abd3c1..0000000
Binary files a/doc/salome/gui/SMESH/images/b-mesh_infos.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/bare_border_faces_smpl.png b/doc/salome/gui/SMESH/images/bare_border_faces_smpl.png
deleted file mode 100644 (file)
index 6b7ead8..0000000
Binary files a/doc/salome/gui/SMESH/images/bare_border_faces_smpl.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/bare_border_volumes_smpl.png b/doc/salome/gui/SMESH/images/bare_border_volumes_smpl.png
deleted file mode 100644 (file)
index 3508518..0000000
Binary files a/doc/salome/gui/SMESH/images/bare_border_volumes_smpl.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/basic_props.png b/doc/salome/gui/SMESH/images/basic_props.png
deleted file mode 100644 (file)
index abf3aa3..0000000
Binary files a/doc/salome/gui/SMESH/images/basic_props.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/before_clipping.png b/doc/salome/gui/SMESH/images/before_clipping.png
deleted file mode 100644 (file)
index 41e14d2..0000000
Binary files a/doc/salome/gui/SMESH/images/before_clipping.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/before_clipping_preview.png b/doc/salome/gui/SMESH/images/before_clipping_preview.png
deleted file mode 100644 (file)
index f0740cf..0000000
Binary files a/doc/salome/gui/SMESH/images/before_clipping_preview.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/block_renumber_hyp.png b/doc/salome/gui/SMESH/images/block_renumber_hyp.png
deleted file mode 100644 (file)
index 4c610f7..0000000
Binary files a/doc/salome/gui/SMESH/images/block_renumber_hyp.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/bnd_box.png b/doc/salome/gui/SMESH/images/bnd_box.png
deleted file mode 100644 (file)
index 4c0bbd3..0000000
Binary files a/doc/salome/gui/SMESH/images/bnd_box.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/bnd_box_preview.png b/doc/salome/gui/SMESH/images/bnd_box_preview.png
deleted file mode 100644 (file)
index 902101c..0000000
Binary files a/doc/salome/gui/SMESH/images/bnd_box_preview.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/buildcompound.png b/doc/salome/gui/SMESH/images/buildcompound.png
deleted file mode 100644 (file)
index d1f4801..0000000
Binary files a/doc/salome/gui/SMESH/images/buildcompound.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/buildcompound_groups.png b/doc/salome/gui/SMESH/images/buildcompound_groups.png
deleted file mode 100644 (file)
index ee12892..0000000
Binary files a/doc/salome/gui/SMESH/images/buildcompound_groups.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/cartesian3D_hyp.png b/doc/salome/gui/SMESH/images/cartesian3D_hyp.png
deleted file mode 100644 (file)
index 9f4c59a..0000000
Binary files a/doc/salome/gui/SMESH/images/cartesian3D_hyp.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/cartesian3D_sphere.png b/doc/salome/gui/SMESH/images/cartesian3D_sphere.png
deleted file mode 100644 (file)
index 45bffda..0000000
Binary files a/doc/salome/gui/SMESH/images/cartesian3D_sphere.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/cartesian_implement_edge.png b/doc/salome/gui/SMESH/images/cartesian_implement_edge.png
deleted file mode 100644 (file)
index 59ac9ba..0000000
Binary files a/doc/salome/gui/SMESH/images/cartesian_implement_edge.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/choose_geom_selection_way.png b/doc/salome/gui/SMESH/images/choose_geom_selection_way.png
deleted file mode 100644 (file)
index ffee00d..0000000
Binary files a/doc/salome/gui/SMESH/images/choose_geom_selection_way.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/circle_angles_after.png b/doc/salome/gui/SMESH/images/circle_angles_after.png
deleted file mode 100644 (file)
index f4c606b..0000000
Binary files a/doc/salome/gui/SMESH/images/circle_angles_after.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/circle_simple_after.png b/doc/salome/gui/SMESH/images/circle_simple_after.png
deleted file mode 100644 (file)
index 99f65b5..0000000
Binary files a/doc/salome/gui/SMESH/images/circle_simple_after.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/circle_simple_before.png b/doc/salome/gui/SMESH/images/circle_simple_before.png
deleted file mode 100644 (file)
index 95b9037..0000000
Binary files a/doc/salome/gui/SMESH/images/circle_simple_before.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/colors_size.png b/doc/salome/gui/SMESH/images/colors_size.png
deleted file mode 100755 (executable)
index 0b1d3e5..0000000
Binary files a/doc/salome/gui/SMESH/images/colors_size.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/connectivity_edge.png b/doc/salome/gui/SMESH/images/connectivity_edge.png
deleted file mode 100644 (file)
index 9d7af87..0000000
Binary files a/doc/salome/gui/SMESH/images/connectivity_edge.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/connectivity_hex_prism.png b/doc/salome/gui/SMESH/images/connectivity_hex_prism.png
deleted file mode 100644 (file)
index d5cbfcd..0000000
Binary files a/doc/salome/gui/SMESH/images/connectivity_hex_prism.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/connectivity_hexa.png b/doc/salome/gui/SMESH/images/connectivity_hexa.png
deleted file mode 100644 (file)
index 326b3ef..0000000
Binary files a/doc/salome/gui/SMESH/images/connectivity_hexa.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/connectivity_penta.png b/doc/salome/gui/SMESH/images/connectivity_penta.png
deleted file mode 100644 (file)
index 1990a1d..0000000
Binary files a/doc/salome/gui/SMESH/images/connectivity_penta.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/connectivity_polygon.png b/doc/salome/gui/SMESH/images/connectivity_polygon.png
deleted file mode 100644 (file)
index 3594178..0000000
Binary files a/doc/salome/gui/SMESH/images/connectivity_polygon.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/connectivity_polyhedron.png b/doc/salome/gui/SMESH/images/connectivity_polyhedron.png
deleted file mode 100644 (file)
index c59506f..0000000
Binary files a/doc/salome/gui/SMESH/images/connectivity_polyhedron.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/connectivity_pyramid.png b/doc/salome/gui/SMESH/images/connectivity_pyramid.png
deleted file mode 100644 (file)
index 40cc35a..0000000
Binary files a/doc/salome/gui/SMESH/images/connectivity_pyramid.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/connectivity_quad.png b/doc/salome/gui/SMESH/images/connectivity_quad.png
deleted file mode 100644 (file)
index 0b7cdd3..0000000
Binary files a/doc/salome/gui/SMESH/images/connectivity_quad.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/connectivity_tetra.png b/doc/salome/gui/SMESH/images/connectivity_tetra.png
deleted file mode 100644 (file)
index cd86363..0000000
Binary files a/doc/salome/gui/SMESH/images/connectivity_tetra.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/connectivity_tria.png b/doc/salome/gui/SMESH/images/connectivity_tria.png
deleted file mode 100644 (file)
index 593ff05..0000000
Binary files a/doc/salome/gui/SMESH/images/connectivity_tria.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/controls_popup.png b/doc/salome/gui/SMESH/images/controls_popup.png
deleted file mode 100755 (executable)
index c32f9ea..0000000
Binary files a/doc/salome/gui/SMESH/images/controls_popup.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/convert.png b/doc/salome/gui/SMESH/images/convert.png
deleted file mode 100644 (file)
index 9139f60..0000000
Binary files a/doc/salome/gui/SMESH/images/convert.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/copy_mesh_dlg.png b/doc/salome/gui/SMESH/images/copy_mesh_dlg.png
deleted file mode 100644 (file)
index 97ca1ca..0000000
Binary files a/doc/salome/gui/SMESH/images/copy_mesh_dlg.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/copy_mesh_icon.png b/doc/salome/gui/SMESH/images/copy_mesh_icon.png
deleted file mode 100644 (file)
index 263479f..0000000
Binary files a/doc/salome/gui/SMESH/images/copy_mesh_icon.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/crack_emulation_double_nodes.png b/doc/salome/gui/SMESH/images/crack_emulation_double_nodes.png
deleted file mode 100644 (file)
index 032d9d6..0000000
Binary files a/doc/salome/gui/SMESH/images/crack_emulation_double_nodes.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/crack_emulation_double_nodes_with_elems.png b/doc/salome/gui/SMESH/images/crack_emulation_double_nodes_with_elems.png
deleted file mode 100644 (file)
index 9a0fd5e..0000000
Binary files a/doc/salome/gui/SMESH/images/crack_emulation_double_nodes_with_elems.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/create_group.png b/doc/salome/gui/SMESH/images/create_group.png
deleted file mode 100644 (file)
index 82e8f86..0000000
Binary files a/doc/salome/gui/SMESH/images/create_group.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/create_groups_from_geometry.png b/doc/salome/gui/SMESH/images/create_groups_from_geometry.png
deleted file mode 100644 (file)
index 7da08fc..0000000
Binary files a/doc/salome/gui/SMESH/images/create_groups_from_geometry.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/creategroup.png b/doc/salome/gui/SMESH/images/creategroup.png
deleted file mode 100755 (executable)
index 710064b..0000000
Binary files a/doc/salome/gui/SMESH/images/creategroup.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/creategroup_on_filter.png b/doc/salome/gui/SMESH/images/creategroup_on_filter.png
deleted file mode 100644 (file)
index 98e5a58..0000000
Binary files a/doc/salome/gui/SMESH/images/creategroup_on_filter.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/createmesh-inv.png b/doc/salome/gui/SMESH/images/createmesh-inv.png
deleted file mode 100644 (file)
index d17ce53..0000000
Binary files a/doc/salome/gui/SMESH/images/createmesh-inv.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/createmesh-inv2.png b/doc/salome/gui/SMESH/images/createmesh-inv2.png
deleted file mode 100644 (file)
index 30e6248..0000000
Binary files a/doc/salome/gui/SMESH/images/createmesh-inv2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/createmesh-inv3.png b/doc/salome/gui/SMESH/images/createmesh-inv3.png
deleted file mode 100644 (file)
index f53ab0a..0000000
Binary files a/doc/salome/gui/SMESH/images/createmesh-inv3.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/ctrlinfo.png b/doc/salome/gui/SMESH/images/ctrlinfo.png
deleted file mode 100644 (file)
index 100fbe0..0000000
Binary files a/doc/salome/gui/SMESH/images/ctrlinfo.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/curvi_angles_after.png b/doc/salome/gui/SMESH/images/curvi_angles_after.png
deleted file mode 100644 (file)
index 9d06262..0000000
Binary files a/doc/salome/gui/SMESH/images/curvi_angles_after.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/curvi_simple_after.png b/doc/salome/gui/SMESH/images/curvi_simple_after.png
deleted file mode 100644 (file)
index ae1d98f..0000000
Binary files a/doc/salome/gui/SMESH/images/curvi_simple_after.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/curvi_simple_before.png b/doc/salome/gui/SMESH/images/curvi_simple_before.png
deleted file mode 100644 (file)
index a0bbf73..0000000
Binary files a/doc/salome/gui/SMESH/images/curvi_simple_before.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/custom_point_marker.png b/doc/salome/gui/SMESH/images/custom_point_marker.png
deleted file mode 100755 (executable)
index a46e33e..0000000
Binary files a/doc/salome/gui/SMESH/images/custom_point_marker.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/cut_groups1.png b/doc/salome/gui/SMESH/images/cut_groups1.png
deleted file mode 100644 (file)
index d78c4fe..0000000
Binary files a/doc/salome/gui/SMESH/images/cut_groups1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/cutgroups.png b/doc/salome/gui/SMESH/images/cutgroups.png
deleted file mode 100755 (executable)
index 213a52a..0000000
Binary files a/doc/salome/gui/SMESH/images/cutgroups.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/dataset_clipping.png b/doc/salome/gui/SMESH/images/dataset_clipping.png
deleted file mode 100644 (file)
index b50e38a..0000000
Binary files a/doc/salome/gui/SMESH/images/dataset_clipping.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/deflection_2d.png b/doc/salome/gui/SMESH/images/deflection_2d.png
deleted file mode 100644 (file)
index f815962..0000000
Binary files a/doc/salome/gui/SMESH/images/deflection_2d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/deletegroups.png b/doc/salome/gui/SMESH/images/deletegroups.png
deleted file mode 100755 (executable)
index 52494c8..0000000
Binary files a/doc/salome/gui/SMESH/images/deletegroups.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/diagonalinversion.png b/doc/salome/gui/SMESH/images/diagonalinversion.png
deleted file mode 100755 (executable)
index 1329ebe..0000000
Binary files a/doc/salome/gui/SMESH/images/diagonalinversion.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/dialog.png b/doc/salome/gui/SMESH/images/dialog.png
deleted file mode 100755 (executable)
index c9cc22c..0000000
Binary files a/doc/salome/gui/SMESH/images/dialog.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/dimgroup_0d.png b/doc/salome/gui/SMESH/images/dimgroup_0d.png
deleted file mode 100644 (file)
index caabdc4..0000000
Binary files a/doc/salome/gui/SMESH/images/dimgroup_0d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/dimgroup_1d.png b/doc/salome/gui/SMESH/images/dimgroup_1d.png
deleted file mode 100644 (file)
index 23af4a7..0000000
Binary files a/doc/salome/gui/SMESH/images/dimgroup_1d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/dimgroup_2d.png b/doc/salome/gui/SMESH/images/dimgroup_2d.png
deleted file mode 100644 (file)
index bbfa059..0000000
Binary files a/doc/salome/gui/SMESH/images/dimgroup_2d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/dimgroup_dlg.png b/doc/salome/gui/SMESH/images/dimgroup_dlg.png
deleted file mode 100644 (file)
index 22bdbc6..0000000
Binary files a/doc/salome/gui/SMESH/images/dimgroup_dlg.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/dimgroup_src.png b/doc/salome/gui/SMESH/images/dimgroup_src.png
deleted file mode 100644 (file)
index 93606a8..0000000
Binary files a/doc/salome/gui/SMESH/images/dimgroup_src.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/dimgroup_tui1.png b/doc/salome/gui/SMESH/images/dimgroup_tui1.png
deleted file mode 100644 (file)
index 91617ce..0000000
Binary files a/doc/salome/gui/SMESH/images/dimgroup_tui1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/display_entity_choose_item.png b/doc/salome/gui/SMESH/images/display_entity_choose_item.png
deleted file mode 100644 (file)
index d099618..0000000
Binary files a/doc/salome/gui/SMESH/images/display_entity_choose_item.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/display_entity_dlg.png b/doc/salome/gui/SMESH/images/display_entity_dlg.png
deleted file mode 100644 (file)
index d0f4fa0..0000000
Binary files a/doc/salome/gui/SMESH/images/display_entity_dlg.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/distribution_of_layers.png b/doc/salome/gui/SMESH/images/distribution_of_layers.png
deleted file mode 100644 (file)
index 02975ef..0000000
Binary files a/doc/salome/gui/SMESH/images/distribution_of_layers.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/distributionwithanalyticdensity.png b/doc/salome/gui/SMESH/images/distributionwithanalyticdensity.png
deleted file mode 100644 (file)
index 53c618c..0000000
Binary files a/doc/salome/gui/SMESH/images/distributionwithanalyticdensity.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/distributionwithtabledensity.png b/doc/salome/gui/SMESH/images/distributionwithtabledensity.png
deleted file mode 100644 (file)
index 75bd698..0000000
Binary files a/doc/salome/gui/SMESH/images/distributionwithtabledensity.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/dlg_0D_on_all_nodes.png b/doc/salome/gui/SMESH/images/dlg_0D_on_all_nodes.png
deleted file mode 100644 (file)
index 78ac7c8..0000000
Binary files a/doc/salome/gui/SMESH/images/dlg_0D_on_all_nodes.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/double_faces.png b/doc/salome/gui/SMESH/images/double_faces.png
deleted file mode 100644 (file)
index 47bed1f..0000000
Binary files a/doc/salome/gui/SMESH/images/double_faces.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/double_nodes.png b/doc/salome/gui/SMESH/images/double_nodes.png
deleted file mode 100644 (file)
index 27a209b..0000000
Binary files a/doc/salome/gui/SMESH/images/double_nodes.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/duplicate01.png b/doc/salome/gui/SMESH/images/duplicate01.png
deleted file mode 100644 (file)
index af668e1..0000000
Binary files a/doc/salome/gui/SMESH/images/duplicate01.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/duplicate02.png b/doc/salome/gui/SMESH/images/duplicate02.png
deleted file mode 100644 (file)
index e8a6a8c..0000000
Binary files a/doc/salome/gui/SMESH/images/duplicate02.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/duplicate03.png b/doc/salome/gui/SMESH/images/duplicate03.png
deleted file mode 100644 (file)
index 0291103..0000000
Binary files a/doc/salome/gui/SMESH/images/duplicate03.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/duplicate04.png b/doc/salome/gui/SMESH/images/duplicate04.png
deleted file mode 100644 (file)
index 7bab0da..0000000
Binary files a/doc/salome/gui/SMESH/images/duplicate04.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/duplicate_nodes.png b/doc/salome/gui/SMESH/images/duplicate_nodes.png
deleted file mode 100644 (file)
index 61ff32b..0000000
Binary files a/doc/salome/gui/SMESH/images/duplicate_nodes.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/edge_wire_3d_after.png b/doc/salome/gui/SMESH/images/edge_wire_3d_after.png
deleted file mode 100644 (file)
index 3fab598..0000000
Binary files a/doc/salome/gui/SMESH/images/edge_wire_3d_after.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/edge_wire_3d_before.png b/doc/salome/gui/SMESH/images/edge_wire_3d_before.png
deleted file mode 100644 (file)
index 28f9868..0000000
Binary files a/doc/salome/gui/SMESH/images/edge_wire_3d_before.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/edge_wire_after.png b/doc/salome/gui/SMESH/images/edge_wire_after.png
deleted file mode 100644 (file)
index 408480e..0000000
Binary files a/doc/salome/gui/SMESH/images/edge_wire_after.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/edge_wire_before.png b/doc/salome/gui/SMESH/images/edge_wire_before.png
deleted file mode 100644 (file)
index 186528e..0000000
Binary files a/doc/salome/gui/SMESH/images/edge_wire_before.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/edit_mesh1.png b/doc/salome/gui/SMESH/images/edit_mesh1.png
deleted file mode 100755 (executable)
index 4369e51..0000000
Binary files a/doc/salome/gui/SMESH/images/edit_mesh1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/edit_mesh_change_value_hyp.png b/doc/salome/gui/SMESH/images/edit_mesh_change_value_hyp.png
deleted file mode 100755 (executable)
index 7dee01f..0000000
Binary files a/doc/salome/gui/SMESH/images/edit_mesh_change_value_hyp.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/edit_mesh_remove_hyp.png b/doc/salome/gui/SMESH/images/edit_mesh_remove_hyp.png
deleted file mode 100755 (executable)
index 0a45639..0000000
Binary files a/doc/salome/gui/SMESH/images/edit_mesh_remove_hyp.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/editgroup.png b/doc/salome/gui/SMESH/images/editgroup.png
deleted file mode 100755 (executable)
index 1a9db08..0000000
Binary files a/doc/salome/gui/SMESH/images/editgroup.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/editing_groups1.png b/doc/salome/gui/SMESH/images/editing_groups1.png
deleted file mode 100644 (file)
index a565ed3..0000000
Binary files a/doc/salome/gui/SMESH/images/editing_groups1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/elem_info.png b/doc/salome/gui/SMESH/images/elem_info.png
deleted file mode 100644 (file)
index 9937d6d..0000000
Binary files a/doc/salome/gui/SMESH/images/elem_info.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/eleminfo1.png b/doc/salome/gui/SMESH/images/eleminfo1.png
deleted file mode 100644 (file)
index 9f9e03a..0000000
Binary files a/doc/salome/gui/SMESH/images/eleminfo1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/eleminfo2.png b/doc/salome/gui/SMESH/images/eleminfo2.png
deleted file mode 100644 (file)
index 34061d9..0000000
Binary files a/doc/salome/gui/SMESH/images/eleminfo2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/extr_along_wire_after.png b/doc/salome/gui/SMESH/images/extr_along_wire_after.png
deleted file mode 100644 (file)
index eb39bdd..0000000
Binary files a/doc/salome/gui/SMESH/images/extr_along_wire_after.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/extr_along_wire_before.png b/doc/salome/gui/SMESH/images/extr_along_wire_before.png
deleted file mode 100644 (file)
index 2f30cee..0000000
Binary files a/doc/salome/gui/SMESH/images/extr_along_wire_before.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/extru_rib_segs.png b/doc/salome/gui/SMESH/images/extru_rib_segs.png
deleted file mode 100644 (file)
index 24f04cf..0000000
Binary files a/doc/salome/gui/SMESH/images/extru_rib_segs.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/extrusion_along_path_dlg.png b/doc/salome/gui/SMESH/images/extrusion_along_path_dlg.png
deleted file mode 100644 (file)
index 74176d8..0000000
Binary files a/doc/salome/gui/SMESH/images/extrusion_along_path_dlg.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/extrusion_box.png b/doc/salome/gui/SMESH/images/extrusion_box.png
deleted file mode 100644 (file)
index fb08486..0000000
Binary files a/doc/salome/gui/SMESH/images/extrusion_box.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/extrusion_groups.png b/doc/salome/gui/SMESH/images/extrusion_groups.png
deleted file mode 100644 (file)
index c58e397..0000000
Binary files a/doc/salome/gui/SMESH/images/extrusion_groups.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/extrusion_groups_res.png b/doc/salome/gui/SMESH/images/extrusion_groups_res.png
deleted file mode 100644 (file)
index 7063c82..0000000
Binary files a/doc/salome/gui/SMESH/images/extrusion_groups_res.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/extrusionalongaline1.png b/doc/salome/gui/SMESH/images/extrusionalongaline1.png
deleted file mode 100644 (file)
index cc97577..0000000
Binary files a/doc/salome/gui/SMESH/images/extrusionalongaline1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/extrusionalongaline2.png b/doc/salome/gui/SMESH/images/extrusionalongaline2.png
deleted file mode 100644 (file)
index f0e6d9e..0000000
Binary files a/doc/salome/gui/SMESH/images/extrusionalongaline2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/extrusionalongaline3.png b/doc/salome/gui/SMESH/images/extrusionalongaline3.png
deleted file mode 100644 (file)
index 75c359b..0000000
Binary files a/doc/salome/gui/SMESH/images/extrusionalongaline3.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/extrusionbynormal_alongavgnorm.png b/doc/salome/gui/SMESH/images/extrusionbynormal_alongavgnorm.png
deleted file mode 100644 (file)
index ecb550e..0000000
Binary files a/doc/salome/gui/SMESH/images/extrusionbynormal_alongavgnorm.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/extrusionbynormal_useonly.png b/doc/salome/gui/SMESH/images/extrusionbynormal_useonly.png
deleted file mode 100644 (file)
index 1c63a2b..0000000
Binary files a/doc/salome/gui/SMESH/images/extrusionbynormal_useonly.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/failed_computation.png b/doc/salome/gui/SMESH/images/failed_computation.png
deleted file mode 100644 (file)
index e44a538..0000000
Binary files a/doc/salome/gui/SMESH/images/failed_computation.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/find_geom_by_mesh_elem.png b/doc/salome/gui/SMESH/images/find_geom_by_mesh_elem.png
deleted file mode 100644 (file)
index d71495e..0000000
Binary files a/doc/salome/gui/SMESH/images/find_geom_by_mesh_elem.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/findelement1.png b/doc/salome/gui/SMESH/images/findelement1.png
deleted file mode 100644 (file)
index 1c11a03..0000000
Binary files a/doc/salome/gui/SMESH/images/findelement1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/findelement2.png b/doc/salome/gui/SMESH/images/findelement2.png
deleted file mode 100644 (file)
index c9898b5..0000000
Binary files a/doc/salome/gui/SMESH/images/findelement2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/findelement3.png b/doc/salome/gui/SMESH/images/findelement3.png
deleted file mode 100644 (file)
index 26cfff2..0000000
Binary files a/doc/salome/gui/SMESH/images/findelement3.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/formula1.png b/doc/salome/gui/SMESH/images/formula1.png
deleted file mode 100644 (file)
index b3468a1..0000000
Binary files a/doc/salome/gui/SMESH/images/formula1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/formula2.png b/doc/salome/gui/SMESH/images/formula2.png
deleted file mode 100644 (file)
index dd45fbf..0000000
Binary files a/doc/salome/gui/SMESH/images/formula2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/formula4.png b/doc/salome/gui/SMESH/images/formula4.png
deleted file mode 100644 (file)
index 3a5d31f..0000000
Binary files a/doc/salome/gui/SMESH/images/formula4.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/formula5.png b/doc/salome/gui/SMESH/images/formula5.png
deleted file mode 100644 (file)
index 8cd035f..0000000
Binary files a/doc/salome/gui/SMESH/images/formula5.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/free_borders1.png b/doc/salome/gui/SMESH/images/free_borders1.png
deleted file mode 100644 (file)
index 871beba..0000000
Binary files a/doc/salome/gui/SMESH/images/free_borders1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/free_edges.png b/doc/salome/gui/SMESH/images/free_edges.png
deleted file mode 100755 (executable)
index 6f1100c..0000000
Binary files a/doc/salome/gui/SMESH/images/free_edges.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/free_faces.png b/doc/salome/gui/SMESH/images/free_faces.png
deleted file mode 100644 (file)
index 8b5bee4..0000000
Binary files a/doc/salome/gui/SMESH/images/free_faces.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/free_nodes.png b/doc/salome/gui/SMESH/images/free_nodes.png
deleted file mode 100644 (file)
index ea043ea..0000000
Binary files a/doc/salome/gui/SMESH/images/free_nodes.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/ghs3dprl_parameters_basic.png b/doc/salome/gui/SMESH/images/ghs3dprl_parameters_basic.png
deleted file mode 100644 (file)
index 0628058..0000000
Binary files a/doc/salome/gui/SMESH/images/ghs3dprl_parameters_basic.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/groups_by_sharp_edges_dlg.png b/doc/salome/gui/SMESH/images/groups_by_sharp_edges_dlg.png
deleted file mode 100644 (file)
index 936d0ba..0000000
Binary files a/doc/salome/gui/SMESH/images/groups_by_sharp_edges_dlg.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/groups_in_OB.png b/doc/salome/gui/SMESH/images/groups_in_OB.png
deleted file mode 100644 (file)
index 1ffb96a..0000000
Binary files a/doc/salome/gui/SMESH/images/groups_in_OB.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hexa_ijk_mesh.png b/doc/salome/gui/SMESH/images/hexa_ijk_mesh.png
deleted file mode 100644 (file)
index 577ee8e..0000000
Binary files a/doc/salome/gui/SMESH/images/hexa_ijk_mesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hyp_source_edges.png b/doc/salome/gui/SMESH/images/hyp_source_edges.png
deleted file mode 100644 (file)
index 2305e17..0000000
Binary files a/doc/salome/gui/SMESH/images/hyp_source_edges.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hyp_source_faces.png b/doc/salome/gui/SMESH/images/hyp_source_faces.png
deleted file mode 100644 (file)
index fe9e6c6..0000000
Binary files a/doc/salome/gui/SMESH/images/hyp_source_faces.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hypo_fixedpnt_dlg.png b/doc/salome/gui/SMESH/images/hypo_fixedpnt_dlg.png
deleted file mode 100644 (file)
index d1c131a..0000000
Binary files a/doc/salome/gui/SMESH/images/hypo_fixedpnt_dlg.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_1.png b/doc/salome/gui/SMESH/images/hypo_quad_params_1.png
deleted file mode 100644 (file)
index eca8767..0000000
Binary files a/doc/salome/gui/SMESH/images/hypo_quad_params_1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_2.png b/doc/salome/gui/SMESH/images/hypo_quad_params_2.png
deleted file mode 100644 (file)
index 4102a76..0000000
Binary files a/doc/salome/gui/SMESH/images/hypo_quad_params_2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_dialog.png b/doc/salome/gui/SMESH/images/hypo_quad_params_dialog.png
deleted file mode 100644 (file)
index f0c381a..0000000
Binary files a/doc/salome/gui/SMESH/images/hypo_quad_params_dialog.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_dialog_corners.png b/doc/salome/gui/SMESH/images/hypo_quad_params_dialog_corners.png
deleted file mode 100644 (file)
index 4f30c07..0000000
Binary files a/doc/salome/gui/SMESH/images/hypo_quad_params_dialog_corners.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_dialog_enf.png b/doc/salome/gui/SMESH/images/hypo_quad_params_dialog_enf.png
deleted file mode 100644 (file)
index cc1be66..0000000
Binary files a/doc/salome/gui/SMESH/images/hypo_quad_params_dialog_enf.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_dialog_vert.png b/doc/salome/gui/SMESH/images/hypo_quad_params_dialog_vert.png
deleted file mode 100644 (file)
index c819144..0000000
Binary files a/doc/salome/gui/SMESH/images/hypo_quad_params_dialog_vert.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo1.png b/doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo1.png
deleted file mode 100644 (file)
index 3040015..0000000
Binary files a/doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo2.png b/doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo2.png
deleted file mode 100644 (file)
index f0a4c62..0000000
Binary files a/doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo3.png b/doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo3.png
deleted file mode 100644 (file)
index f6db339..0000000
Binary files a/doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo3.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_res.png b/doc/salome/gui/SMESH/images/hypo_quad_params_res.png
deleted file mode 100644 (file)
index 8aae276..0000000
Binary files a/doc/salome/gui/SMESH/images/hypo_quad_params_res.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_res_2.png b/doc/salome/gui/SMESH/images/hypo_quad_params_res_2.png
deleted file mode 100644 (file)
index 6dc37e2..0000000
Binary files a/doc/salome/gui/SMESH/images/hypo_quad_params_res_2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hypo_radquad_dlg.png b/doc/salome/gui/SMESH/images/hypo_radquad_dlg.png
deleted file mode 100755 (executable)
index e658a68..0000000
Binary files a/doc/salome/gui/SMESH/images/hypo_radquad_dlg.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/hypo_sets.png b/doc/salome/gui/SMESH/images/hypo_sets.png
deleted file mode 100644 (file)
index 14af9af..0000000
Binary files a/doc/salome/gui/SMESH/images/hypo_sets.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image10.jpg b/doc/salome/gui/SMESH/images/image10.jpg
deleted file mode 100644 (file)
index c52d80c..0000000
Binary files a/doc/salome/gui/SMESH/images/image10.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image101.png b/doc/salome/gui/SMESH/images/image101.png
deleted file mode 100755 (executable)
index 0e2c966..0000000
Binary files a/doc/salome/gui/SMESH/images/image101.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image105.gif b/doc/salome/gui/SMESH/images/image105.gif
deleted file mode 100755 (executable)
index 0f74545..0000000
Binary files a/doc/salome/gui/SMESH/images/image105.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image106.gif b/doc/salome/gui/SMESH/images/image106.gif
deleted file mode 100755 (executable)
index 71bda2e..0000000
Binary files a/doc/salome/gui/SMESH/images/image106.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image120.png b/doc/salome/gui/SMESH/images/image120.png
deleted file mode 100755 (executable)
index 65318de..0000000
Binary files a/doc/salome/gui/SMESH/images/image120.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image121.png b/doc/salome/gui/SMESH/images/image121.png
deleted file mode 100755 (executable)
index 16ed2a4..0000000
Binary files a/doc/salome/gui/SMESH/images/image121.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image122.png b/doc/salome/gui/SMESH/images/image122.png
deleted file mode 100755 (executable)
index 7fa491b..0000000
Binary files a/doc/salome/gui/SMESH/images/image122.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image123.gif b/doc/salome/gui/SMESH/images/image123.gif
deleted file mode 100755 (executable)
index 2780e70..0000000
Binary files a/doc/salome/gui/SMESH/images/image123.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image124.gif b/doc/salome/gui/SMESH/images/image124.gif
deleted file mode 100755 (executable)
index 98f0c40..0000000
Binary files a/doc/salome/gui/SMESH/images/image124.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image125.gif b/doc/salome/gui/SMESH/images/image125.gif
deleted file mode 100755 (executable)
index 1983513..0000000
Binary files a/doc/salome/gui/SMESH/images/image125.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image126.gif b/doc/salome/gui/SMESH/images/image126.gif
deleted file mode 100755 (executable)
index e2e6955..0000000
Binary files a/doc/salome/gui/SMESH/images/image126.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image127.gif b/doc/salome/gui/SMESH/images/image127.gif
deleted file mode 100755 (executable)
index 79bccc6..0000000
Binary files a/doc/salome/gui/SMESH/images/image127.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image130.gif b/doc/salome/gui/SMESH/images/image130.gif
deleted file mode 100755 (executable)
index cc8c3a5..0000000
Binary files a/doc/salome/gui/SMESH/images/image130.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image131.gif b/doc/salome/gui/SMESH/images/image131.gif
deleted file mode 100755 (executable)
index 8ca3453..0000000
Binary files a/doc/salome/gui/SMESH/images/image131.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image132.gif b/doc/salome/gui/SMESH/images/image132.gif
deleted file mode 100755 (executable)
index e7577ea..0000000
Binary files a/doc/salome/gui/SMESH/images/image132.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image133.gif b/doc/salome/gui/SMESH/images/image133.gif
deleted file mode 100755 (executable)
index 60a4b96..0000000
Binary files a/doc/salome/gui/SMESH/images/image133.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image134.gif b/doc/salome/gui/SMESH/images/image134.gif
deleted file mode 100755 (executable)
index 60148ba..0000000
Binary files a/doc/salome/gui/SMESH/images/image134.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image135.gif b/doc/salome/gui/SMESH/images/image135.gif
deleted file mode 100755 (executable)
index 13b7b08..0000000
Binary files a/doc/salome/gui/SMESH/images/image135.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image136.gif b/doc/salome/gui/SMESH/images/image136.gif
deleted file mode 100755 (executable)
index 9b17450..0000000
Binary files a/doc/salome/gui/SMESH/images/image136.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image137.gif b/doc/salome/gui/SMESH/images/image137.gif
deleted file mode 100755 (executable)
index 7f4cd13..0000000
Binary files a/doc/salome/gui/SMESH/images/image137.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image138.gif b/doc/salome/gui/SMESH/images/image138.gif
deleted file mode 100644 (file)
index 1659aab..0000000
Binary files a/doc/salome/gui/SMESH/images/image138.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image143.gif b/doc/salome/gui/SMESH/images/image143.gif
deleted file mode 100755 (executable)
index de9df14..0000000
Binary files a/doc/salome/gui/SMESH/images/image143.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image144.png b/doc/salome/gui/SMESH/images/image144.png
deleted file mode 100755 (executable)
index 75219e9..0000000
Binary files a/doc/salome/gui/SMESH/images/image144.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image145.png b/doc/salome/gui/SMESH/images/image145.png
deleted file mode 100755 (executable)
index 52b21ca..0000000
Binary files a/doc/salome/gui/SMESH/images/image145.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image146.png b/doc/salome/gui/SMESH/images/image146.png
deleted file mode 100755 (executable)
index 06c1c03..0000000
Binary files a/doc/salome/gui/SMESH/images/image146.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image147.gif b/doc/salome/gui/SMESH/images/image147.gif
deleted file mode 100755 (executable)
index 7b9a354..0000000
Binary files a/doc/salome/gui/SMESH/images/image147.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image148.gif b/doc/salome/gui/SMESH/images/image148.gif
deleted file mode 100755 (executable)
index 0ef4147..0000000
Binary files a/doc/salome/gui/SMESH/images/image148.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image15.jpg b/doc/salome/gui/SMESH/images/image15.jpg
deleted file mode 100755 (executable)
index 15edee5..0000000
Binary files a/doc/salome/gui/SMESH/images/image15.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image151.gif b/doc/salome/gui/SMESH/images/image151.gif
deleted file mode 100755 (executable)
index 5c4a20e..0000000
Binary files a/doc/salome/gui/SMESH/images/image151.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image152.png b/doc/salome/gui/SMESH/images/image152.png
deleted file mode 100644 (file)
index d30ae67..0000000
Binary files a/doc/salome/gui/SMESH/images/image152.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image154.png b/doc/salome/gui/SMESH/images/image154.png
deleted file mode 100755 (executable)
index 72421a4..0000000
Binary files a/doc/salome/gui/SMESH/images/image154.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image155.gif b/doc/salome/gui/SMESH/images/image155.gif
deleted file mode 100644 (file)
index fe03093..0000000
Binary files a/doc/salome/gui/SMESH/images/image155.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image156.gif b/doc/salome/gui/SMESH/images/image156.gif
deleted file mode 100644 (file)
index 36b37c8..0000000
Binary files a/doc/salome/gui/SMESH/images/image156.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image157.gif b/doc/salome/gui/SMESH/images/image157.gif
deleted file mode 100644 (file)
index 4592151..0000000
Binary files a/doc/salome/gui/SMESH/images/image157.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image160.gif b/doc/salome/gui/SMESH/images/image160.gif
deleted file mode 100644 (file)
index 5aff389..0000000
Binary files a/doc/salome/gui/SMESH/images/image160.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image161.png b/doc/salome/gui/SMESH/images/image161.png
deleted file mode 100755 (executable)
index 5b1aed2..0000000
Binary files a/doc/salome/gui/SMESH/images/image161.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image22.jpg b/doc/salome/gui/SMESH/images/image22.jpg
deleted file mode 100755 (executable)
index b6a5e8d..0000000
Binary files a/doc/salome/gui/SMESH/images/image22.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image23.jpg b/doc/salome/gui/SMESH/images/image23.jpg
deleted file mode 100755 (executable)
index 74f899b..0000000
Binary files a/doc/salome/gui/SMESH/images/image23.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image24.gif b/doc/salome/gui/SMESH/images/image24.gif
deleted file mode 100755 (executable)
index 3d8032b..0000000
Binary files a/doc/salome/gui/SMESH/images/image24.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image25.jpg b/doc/salome/gui/SMESH/images/image25.jpg
deleted file mode 100755 (executable)
index 79ddf05..0000000
Binary files a/doc/salome/gui/SMESH/images/image25.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image25.png b/doc/salome/gui/SMESH/images/image25.png
deleted file mode 100755 (executable)
index aeef930..0000000
Binary files a/doc/salome/gui/SMESH/images/image25.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image27.jpg b/doc/salome/gui/SMESH/images/image27.jpg
deleted file mode 100755 (executable)
index d2f32b1..0000000
Binary files a/doc/salome/gui/SMESH/images/image27.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image28.png b/doc/salome/gui/SMESH/images/image28.png
deleted file mode 100755 (executable)
index 7c16b0c..0000000
Binary files a/doc/salome/gui/SMESH/images/image28.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image30.jpg b/doc/salome/gui/SMESH/images/image30.jpg
deleted file mode 100755 (executable)
index 997a36e..0000000
Binary files a/doc/salome/gui/SMESH/images/image30.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image31.jpg b/doc/salome/gui/SMESH/images/image31.jpg
deleted file mode 100755 (executable)
index aa00403..0000000
Binary files a/doc/salome/gui/SMESH/images/image31.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image32.jpg b/doc/salome/gui/SMESH/images/image32.jpg
deleted file mode 100755 (executable)
index 77d595d..0000000
Binary files a/doc/salome/gui/SMESH/images/image32.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image32.png b/doc/salome/gui/SMESH/images/image32.png
deleted file mode 100755 (executable)
index cad35fd..0000000
Binary files a/doc/salome/gui/SMESH/images/image32.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image33.gif b/doc/salome/gui/SMESH/images/image33.gif
deleted file mode 100755 (executable)
index 6613182..0000000
Binary files a/doc/salome/gui/SMESH/images/image33.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image34.png b/doc/salome/gui/SMESH/images/image34.png
deleted file mode 100755 (executable)
index eb7ca81..0000000
Binary files a/doc/salome/gui/SMESH/images/image34.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image35.png b/doc/salome/gui/SMESH/images/image35.png
deleted file mode 100755 (executable)
index 00031d3..0000000
Binary files a/doc/salome/gui/SMESH/images/image35.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image36.jpg b/doc/salome/gui/SMESH/images/image36.jpg
deleted file mode 100755 (executable)
index 9b44dc7..0000000
Binary files a/doc/salome/gui/SMESH/images/image36.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image36.png b/doc/salome/gui/SMESH/images/image36.png
deleted file mode 100755 (executable)
index 6a250d0..0000000
Binary files a/doc/salome/gui/SMESH/images/image36.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image37.jpg b/doc/salome/gui/SMESH/images/image37.jpg
deleted file mode 100755 (executable)
index 5fba91a..0000000
Binary files a/doc/salome/gui/SMESH/images/image37.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image37.png b/doc/salome/gui/SMESH/images/image37.png
deleted file mode 100755 (executable)
index 266cef9..0000000
Binary files a/doc/salome/gui/SMESH/images/image37.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image38.jpg b/doc/salome/gui/SMESH/images/image38.jpg
deleted file mode 100755 (executable)
index 29d5e71..0000000
Binary files a/doc/salome/gui/SMESH/images/image38.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image38.png b/doc/salome/gui/SMESH/images/image38.png
deleted file mode 100755 (executable)
index fb8a690..0000000
Binary files a/doc/salome/gui/SMESH/images/image38.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image39.png b/doc/salome/gui/SMESH/images/image39.png
deleted file mode 100755 (executable)
index 54729b8..0000000
Binary files a/doc/salome/gui/SMESH/images/image39.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image40.png b/doc/salome/gui/SMESH/images/image40.png
deleted file mode 100755 (executable)
index bbde0d4..0000000
Binary files a/doc/salome/gui/SMESH/images/image40.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image41.gif b/doc/salome/gui/SMESH/images/image41.gif
deleted file mode 100755 (executable)
index 2e132c2..0000000
Binary files a/doc/salome/gui/SMESH/images/image41.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image42.png b/doc/salome/gui/SMESH/images/image42.png
deleted file mode 100755 (executable)
index d0120fa..0000000
Binary files a/doc/salome/gui/SMESH/images/image42.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image43.png b/doc/salome/gui/SMESH/images/image43.png
deleted file mode 100755 (executable)
index 7b6b895..0000000
Binary files a/doc/salome/gui/SMESH/images/image43.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image46.gif b/doc/salome/gui/SMESH/images/image46.gif
deleted file mode 100755 (executable)
index 0f00ea7..0000000
Binary files a/doc/salome/gui/SMESH/images/image46.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image49.png b/doc/salome/gui/SMESH/images/image49.png
deleted file mode 100755 (executable)
index 6e5b317..0000000
Binary files a/doc/salome/gui/SMESH/images/image49.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image5.jpg b/doc/salome/gui/SMESH/images/image5.jpg
deleted file mode 100755 (executable)
index f195ac8..0000000
Binary files a/doc/salome/gui/SMESH/images/image5.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image50.gif b/doc/salome/gui/SMESH/images/image50.gif
deleted file mode 100755 (executable)
index 22bdf55..0000000
Binary files a/doc/salome/gui/SMESH/images/image50.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image51.jpg b/doc/salome/gui/SMESH/images/image51.jpg
deleted file mode 100755 (executable)
index dfe3bc6..0000000
Binary files a/doc/salome/gui/SMESH/images/image51.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image52.jpg b/doc/salome/gui/SMESH/images/image52.jpg
deleted file mode 100755 (executable)
index 1c83b35..0000000
Binary files a/doc/salome/gui/SMESH/images/image52.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image53.gif b/doc/salome/gui/SMESH/images/image53.gif
deleted file mode 100755 (executable)
index 8f72820..0000000
Binary files a/doc/salome/gui/SMESH/images/image53.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image55.gif b/doc/salome/gui/SMESH/images/image55.gif
deleted file mode 100755 (executable)
index cc1b80e..0000000
Binary files a/doc/salome/gui/SMESH/images/image55.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image56.gif b/doc/salome/gui/SMESH/images/image56.gif
deleted file mode 100755 (executable)
index ffe1e95..0000000
Binary files a/doc/salome/gui/SMESH/images/image56.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image56.jpg b/doc/salome/gui/SMESH/images/image56.jpg
deleted file mode 100755 (executable)
index 6f19970..0000000
Binary files a/doc/salome/gui/SMESH/images/image56.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image58.png b/doc/salome/gui/SMESH/images/image58.png
deleted file mode 100644 (file)
index a496170..0000000
Binary files a/doc/salome/gui/SMESH/images/image58.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image59.png b/doc/salome/gui/SMESH/images/image59.png
deleted file mode 100644 (file)
index 5b8106e..0000000
Binary files a/doc/salome/gui/SMESH/images/image59.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image63.png b/doc/salome/gui/SMESH/images/image63.png
deleted file mode 100755 (executable)
index b9e65be..0000000
Binary files a/doc/salome/gui/SMESH/images/image63.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image64.png b/doc/salome/gui/SMESH/images/image64.png
deleted file mode 100755 (executable)
index 554959b..0000000
Binary files a/doc/salome/gui/SMESH/images/image64.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image67.png b/doc/salome/gui/SMESH/images/image67.png
deleted file mode 100755 (executable)
index 0d456ba..0000000
Binary files a/doc/salome/gui/SMESH/images/image67.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image7.jpg b/doc/salome/gui/SMESH/images/image7.jpg
deleted file mode 100644 (file)
index cbd6170..0000000
Binary files a/doc/salome/gui/SMESH/images/image7.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image70.jpg b/doc/salome/gui/SMESH/images/image70.jpg
deleted file mode 100755 (executable)
index 0df360f..0000000
Binary files a/doc/salome/gui/SMESH/images/image70.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image70.png b/doc/salome/gui/SMESH/images/image70.png
deleted file mode 100755 (executable)
index 30a2d92..0000000
Binary files a/doc/salome/gui/SMESH/images/image70.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image71.jpg b/doc/salome/gui/SMESH/images/image71.jpg
deleted file mode 100755 (executable)
index cb1223d..0000000
Binary files a/doc/salome/gui/SMESH/images/image71.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image71.png b/doc/salome/gui/SMESH/images/image71.png
deleted file mode 100755 (executable)
index ef9407a..0000000
Binary files a/doc/salome/gui/SMESH/images/image71.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image74.gif b/doc/salome/gui/SMESH/images/image74.gif
deleted file mode 100755 (executable)
index c66029e..0000000
Binary files a/doc/salome/gui/SMESH/images/image74.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image75.jpg b/doc/salome/gui/SMESH/images/image75.jpg
deleted file mode 100644 (file)
index 54718d4..0000000
Binary files a/doc/salome/gui/SMESH/images/image75.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image76.jpg b/doc/salome/gui/SMESH/images/image76.jpg
deleted file mode 100644 (file)
index cdeb880..0000000
Binary files a/doc/salome/gui/SMESH/images/image76.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image77.jpg b/doc/salome/gui/SMESH/images/image77.jpg
deleted file mode 100644 (file)
index 9205644..0000000
Binary files a/doc/salome/gui/SMESH/images/image77.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image78.jpg b/doc/salome/gui/SMESH/images/image78.jpg
deleted file mode 100755 (executable)
index 80c2a16..0000000
Binary files a/doc/salome/gui/SMESH/images/image78.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image79.jpg b/doc/salome/gui/SMESH/images/image79.jpg
deleted file mode 100755 (executable)
index 0efc736..0000000
Binary files a/doc/salome/gui/SMESH/images/image79.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image79.png b/doc/salome/gui/SMESH/images/image79.png
deleted file mode 100755 (executable)
index e8d648c..0000000
Binary files a/doc/salome/gui/SMESH/images/image79.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image80.png b/doc/salome/gui/SMESH/images/image80.png
deleted file mode 100755 (executable)
index 114b38d..0000000
Binary files a/doc/salome/gui/SMESH/images/image80.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image82.png b/doc/salome/gui/SMESH/images/image82.png
deleted file mode 100755 (executable)
index c37c5fb..0000000
Binary files a/doc/salome/gui/SMESH/images/image82.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image83.gif b/doc/salome/gui/SMESH/images/image83.gif
deleted file mode 100755 (executable)
index 331b64a..0000000
Binary files a/doc/salome/gui/SMESH/images/image83.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image84.png b/doc/salome/gui/SMESH/images/image84.png
deleted file mode 100755 (executable)
index 2c0b285..0000000
Binary files a/doc/salome/gui/SMESH/images/image84.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image86.jpg b/doc/salome/gui/SMESH/images/image86.jpg
deleted file mode 100644 (file)
index 168b43e..0000000
Binary files a/doc/salome/gui/SMESH/images/image86.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image88.gif b/doc/salome/gui/SMESH/images/image88.gif
deleted file mode 100755 (executable)
index 553656d..0000000
Binary files a/doc/salome/gui/SMESH/images/image88.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image88.jpg b/doc/salome/gui/SMESH/images/image88.jpg
deleted file mode 100644 (file)
index 9499ab2..0000000
Binary files a/doc/salome/gui/SMESH/images/image88.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image90.jpg b/doc/salome/gui/SMESH/images/image90.jpg
deleted file mode 100644 (file)
index a78c439..0000000
Binary files a/doc/salome/gui/SMESH/images/image90.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image91.png b/doc/salome/gui/SMESH/images/image91.png
deleted file mode 100755 (executable)
index 64fcc31..0000000
Binary files a/doc/salome/gui/SMESH/images/image91.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image92.jpg b/doc/salome/gui/SMESH/images/image92.jpg
deleted file mode 100755 (executable)
index bf6e610..0000000
Binary files a/doc/salome/gui/SMESH/images/image92.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image92.png b/doc/salome/gui/SMESH/images/image92.png
deleted file mode 100755 (executable)
index 3068b0f..0000000
Binary files a/doc/salome/gui/SMESH/images/image92.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image93.jpg b/doc/salome/gui/SMESH/images/image93.jpg
deleted file mode 100755 (executable)
index f9780b4..0000000
Binary files a/doc/salome/gui/SMESH/images/image93.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image94.gif b/doc/salome/gui/SMESH/images/image94.gif
deleted file mode 100755 (executable)
index 7313f5d..0000000
Binary files a/doc/salome/gui/SMESH/images/image94.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image94.jpg b/doc/salome/gui/SMESH/images/image94.jpg
deleted file mode 100644 (file)
index 7891667..0000000
Binary files a/doc/salome/gui/SMESH/images/image94.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image95.gif b/doc/salome/gui/SMESH/images/image95.gif
deleted file mode 100755 (executable)
index 6491f27..0000000
Binary files a/doc/salome/gui/SMESH/images/image95.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image95.jpg b/doc/salome/gui/SMESH/images/image95.jpg
deleted file mode 100755 (executable)
index 047dccf..0000000
Binary files a/doc/salome/gui/SMESH/images/image95.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image96.gif b/doc/salome/gui/SMESH/images/image96.gif
deleted file mode 100755 (executable)
index 1392ee7..0000000
Binary files a/doc/salome/gui/SMESH/images/image96.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image96.jpg b/doc/salome/gui/SMESH/images/image96.jpg
deleted file mode 100755 (executable)
index 5f3128e..0000000
Binary files a/doc/salome/gui/SMESH/images/image96.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image97.gif b/doc/salome/gui/SMESH/images/image97.gif
deleted file mode 100755 (executable)
index 480b584..0000000
Binary files a/doc/salome/gui/SMESH/images/image97.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image97.jpg b/doc/salome/gui/SMESH/images/image97.jpg
deleted file mode 100755 (executable)
index 275f2e3..0000000
Binary files a/doc/salome/gui/SMESH/images/image97.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image98.png b/doc/salome/gui/SMESH/images/image98.png
deleted file mode 100755 (executable)
index a2c131d..0000000
Binary files a/doc/salome/gui/SMESH/images/image98.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image99.gif b/doc/salome/gui/SMESH/images/image99.gif
deleted file mode 100755 (executable)
index 2672e99..0000000
Binary files a/doc/salome/gui/SMESH/images/image99.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/image_octa12.png b/doc/salome/gui/SMESH/images/image_octa12.png
deleted file mode 100644 (file)
index 1a5ed8c..0000000
Binary files a/doc/salome/gui/SMESH/images/image_octa12.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/intersect_groups1.png b/doc/salome/gui/SMESH/images/intersect_groups1.png
deleted file mode 100644 (file)
index ad2ff52..0000000
Binary files a/doc/salome/gui/SMESH/images/intersect_groups1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/intersectgroups.png b/doc/salome/gui/SMESH/images/intersectgroups.png
deleted file mode 100755 (executable)
index 8114b10..0000000
Binary files a/doc/salome/gui/SMESH/images/intersectgroups.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/length-crit.png b/doc/salome/gui/SMESH/images/length-crit.png
deleted file mode 100755 (executable)
index 96836cd..0000000
Binary files a/doc/salome/gui/SMESH/images/length-crit.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/length2d.png b/doc/salome/gui/SMESH/images/length2d.png
deleted file mode 100755 (executable)
index 9a5264a..0000000
Binary files a/doc/salome/gui/SMESH/images/length2d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/lengthnearvertex.png b/doc/salome/gui/SMESH/images/lengthnearvertex.png
deleted file mode 100755 (executable)
index 4a59c7b..0000000
Binary files a/doc/salome/gui/SMESH/images/lengthnearvertex.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/max_el_area.png b/doc/salome/gui/SMESH/images/max_el_area.png
deleted file mode 100755 (executable)
index 88db3d6..0000000
Binary files a/doc/salome/gui/SMESH/images/max_el_area.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/max_element_length_2d.png b/doc/salome/gui/SMESH/images/max_element_length_2d.png
deleted file mode 100755 (executable)
index 012d552..0000000
Binary files a/doc/salome/gui/SMESH/images/max_element_length_2d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/max_element_length_3d.png b/doc/salome/gui/SMESH/images/max_element_length_3d.png
deleted file mode 100755 (executable)
index fdf1b76..0000000
Binary files a/doc/salome/gui/SMESH/images/max_element_length_3d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mergeelems.png b/doc/salome/gui/SMESH/images/mergeelems.png
deleted file mode 100644 (file)
index f35955a..0000000
Binary files a/doc/salome/gui/SMESH/images/mergeelems.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mergeelems_auto.png b/doc/salome/gui/SMESH/images/mergeelems_auto.png
deleted file mode 100644 (file)
index ffbb092..0000000
Binary files a/doc/salome/gui/SMESH/images/mergeelems_auto.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mergeelems_ico.png b/doc/salome/gui/SMESH/images/mergeelems_ico.png
deleted file mode 100755 (executable)
index 1342fe8..0000000
Binary files a/doc/salome/gui/SMESH/images/mergeelems_ico.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mergenodes.png b/doc/salome/gui/SMESH/images/mergenodes.png
deleted file mode 100644 (file)
index 2676025..0000000
Binary files a/doc/salome/gui/SMESH/images/mergenodes.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mergenodes_auto.png b/doc/salome/gui/SMESH/images/mergenodes_auto.png
deleted file mode 100644 (file)
index e01aacc..0000000
Binary files a/doc/salome/gui/SMESH/images/mergenodes_auto.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mergenodes_ico.png b/doc/salome/gui/SMESH/images/mergenodes_ico.png
deleted file mode 100755 (executable)
index a0c1146..0000000
Binary files a/doc/salome/gui/SMESH/images/mergenodes_ico.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/merging_nodes1.png b/doc/salome/gui/SMESH/images/merging_nodes1.png
deleted file mode 100644 (file)
index 05c8175..0000000
Binary files a/doc/salome/gui/SMESH/images/merging_nodes1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/merging_nodes2.png b/doc/salome/gui/SMESH/images/merging_nodes2.png
deleted file mode 100644 (file)
index 862ed17..0000000
Binary files a/doc/salome/gui/SMESH/images/merging_nodes2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_clear.png b/doc/salome/gui/SMESH/images/mesh_clear.png
deleted file mode 100644 (file)
index 956e903..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_clear.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_cylinder_hexa.png b/doc/salome/gui/SMESH/images/mesh_cylinder_hexa.png
deleted file mode 100644 (file)
index f95dc67..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_cylinder_hexa.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_evaluation_succeed.png b/doc/salome/gui/SMESH/images/mesh_evaluation_succeed.png
deleted file mode 100755 (executable)
index b9aeb52..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_evaluation_succeed.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_fixedpnt.png b/doc/salome/gui/SMESH/images/mesh_fixedpnt.png
deleted file mode 100755 (executable)
index 5d044ab..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_fixedpnt.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_for_extr_along_path.png b/doc/salome/gui/SMESH/images/mesh_for_extr_along_path.png
deleted file mode 100644 (file)
index 4ee52eb..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_for_extr_along_path.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_node_to_point.png b/doc/salome/gui/SMESH/images/mesh_node_to_point.png
deleted file mode 100644 (file)
index e7e2866..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_node_to_point.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_order_123.png b/doc/salome/gui/SMESH/images/mesh_order_123.png
deleted file mode 100644 (file)
index 952f207..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_order_123.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_order_123_res.png b/doc/salome/gui/SMESH/images/mesh_order_123_res.png
deleted file mode 100644 (file)
index 02208a0..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_order_123_res.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_order_213.png b/doc/salome/gui/SMESH/images/mesh_order_213.png
deleted file mode 100644 (file)
index 959ca38..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_order_213.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_order_213_res.png b/doc/salome/gui/SMESH/images/mesh_order_213_res.png
deleted file mode 100644 (file)
index 8706fb4..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_order_213_res.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_order_321.png b/doc/salome/gui/SMESH/images/mesh_order_321.png
deleted file mode 100644 (file)
index 7ad61fa..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_order_321.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_order_321_res.png b/doc/salome/gui/SMESH/images/mesh_order_321_res.png
deleted file mode 100644 (file)
index 7a5f017..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_order_321_res.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_order_no_concurrent.png b/doc/salome/gui/SMESH/images/mesh_order_no_concurrent.png
deleted file mode 100644 (file)
index 6df59a1..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_order_no_concurrent.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_order_preview.png b/doc/salome/gui/SMESH/images/mesh_order_preview.png
deleted file mode 100644 (file)
index f4b5e3b..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_order_preview.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_precompute.png b/doc/salome/gui/SMESH/images/mesh_precompute.png
deleted file mode 100644 (file)
index dd90498..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_precompute.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_radquad_01.png b/doc/salome/gui/SMESH/images/mesh_radquad_01.png
deleted file mode 100755 (executable)
index dfd8eb5..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_radquad_01.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/mesh_radquad_02.png b/doc/salome/gui/SMESH/images/mesh_radquad_02.png
deleted file mode 100755 (executable)
index 63432eb..0000000
Binary files a/doc/salome/gui/SMESH/images/mesh_radquad_02.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/meshcomputationfail.png b/doc/salome/gui/SMESH/images/meshcomputationfail.png
deleted file mode 100644 (file)
index 8d09dba..0000000
Binary files a/doc/salome/gui/SMESH/images/meshcomputationfail.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/meshcomputationsucceed.png b/doc/salome/gui/SMESH/images/meshcomputationsucceed.png
deleted file mode 100644 (file)
index 943387c..0000000
Binary files a/doc/salome/gui/SMESH/images/meshcomputationsucceed.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/meshcut_plugin.png b/doc/salome/gui/SMESH/images/meshcut_plugin.png
deleted file mode 100644 (file)
index 305e920..0000000
Binary files a/doc/salome/gui/SMESH/images/meshcut_plugin.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/meshexportgroupwarning.png b/doc/salome/gui/SMESH/images/meshexportgroupwarning.png
deleted file mode 100644 (file)
index 613cd46..0000000
Binary files a/doc/salome/gui/SMESH/images/meshexportgroupwarning.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/meshexportmesh.png b/doc/salome/gui/SMESH/images/meshexportmesh.png
deleted file mode 100644 (file)
index f60679e..0000000
Binary files a/doc/salome/gui/SMESH/images/meshexportmesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/meshimportmesh.png b/doc/salome/gui/SMESH/images/meshimportmesh.png
deleted file mode 100755 (executable)
index 9190987..0000000
Binary files a/doc/salome/gui/SMESH/images/meshimportmesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/meshtopass1.png b/doc/salome/gui/SMESH/images/meshtopass1.png
deleted file mode 100644 (file)
index 8ea8af7..0000000
Binary files a/doc/salome/gui/SMESH/images/meshtopass1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/meshtopass2.png b/doc/salome/gui/SMESH/images/meshtopass2.png
deleted file mode 100644 (file)
index b0bd28a..0000000
Binary files a/doc/salome/gui/SMESH/images/meshtopass2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/meshtrianglemergeelem1.png b/doc/salome/gui/SMESH/images/meshtrianglemergeelem1.png
deleted file mode 100755 (executable)
index 0f9bd52..0000000
Binary files a/doc/salome/gui/SMESH/images/meshtrianglemergeelem1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/min_distance.png b/doc/salome/gui/SMESH/images/min_distance.png
deleted file mode 100644 (file)
index 294178f..0000000
Binary files a/doc/salome/gui/SMESH/images/min_distance.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/min_distance_preview.png b/doc/salome/gui/SMESH/images/min_distance_preview.png
deleted file mode 100644 (file)
index c5373d9..0000000
Binary files a/doc/salome/gui/SMESH/images/min_distance_preview.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/movenodes.png b/doc/salome/gui/SMESH/images/movenodes.png
deleted file mode 100755 (executable)
index 3027c76..0000000
Binary files a/doc/salome/gui/SMESH/images/movenodes.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/moving_nodes1.png b/doc/salome/gui/SMESH/images/moving_nodes1.png
deleted file mode 100755 (executable)
index 295b3a3..0000000
Binary files a/doc/salome/gui/SMESH/images/moving_nodes1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/moving_nodes2.png b/doc/salome/gui/SMESH/images/moving_nodes2.png
deleted file mode 100755 (executable)
index a89e8b3..0000000
Binary files a/doc/salome/gui/SMESH/images/moving_nodes2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/number_of_layers.png b/doc/salome/gui/SMESH/images/number_of_layers.png
deleted file mode 100644 (file)
index 8baa821..0000000
Binary files a/doc/salome/gui/SMESH/images/number_of_layers.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/opengl_clipping.png b/doc/salome/gui/SMESH/images/opengl_clipping.png
deleted file mode 100644 (file)
index 475151a..0000000
Binary files a/doc/salome/gui/SMESH/images/opengl_clipping.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/orientaation1.png b/doc/salome/gui/SMESH/images/orientaation1.png
deleted file mode 100755 (executable)
index b1c2ec0..0000000
Binary files a/doc/salome/gui/SMESH/images/orientaation1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/over_constrained_faces.png b/doc/salome/gui/SMESH/images/over_constrained_faces.png
deleted file mode 100644 (file)
index 9d584e8..0000000
Binary files a/doc/salome/gui/SMESH/images/over_constrained_faces.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/over_constrained_volumes.png b/doc/salome/gui/SMESH/images/over_constrained_volumes.png
deleted file mode 100644 (file)
index 7611443..0000000
Binary files a/doc/salome/gui/SMESH/images/over_constrained_volumes.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/pattern2d.png b/doc/salome/gui/SMESH/images/pattern2d.png
deleted file mode 100644 (file)
index ff488eb..0000000
Binary files a/doc/salome/gui/SMESH/images/pattern2d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/patternmapping1.png b/doc/salome/gui/SMESH/images/patternmapping1.png
deleted file mode 100755 (executable)
index e0eb867..0000000
Binary files a/doc/salome/gui/SMESH/images/patternmapping1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/patternmapping2.png b/doc/salome/gui/SMESH/images/patternmapping2.png
deleted file mode 100755 (executable)
index 5c8c520..0000000
Binary files a/doc/salome/gui/SMESH/images/patternmapping2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/point_marker_widget1.png b/doc/salome/gui/SMESH/images/point_marker_widget1.png
deleted file mode 100755 (executable)
index 3d788cd..0000000
Binary files a/doc/salome/gui/SMESH/images/point_marker_widget1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/point_marker_widget2.png b/doc/salome/gui/SMESH/images/point_marker_widget2.png
deleted file mode 100755 (executable)
index d44f388..0000000
Binary files a/doc/salome/gui/SMESH/images/point_marker_widget2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/pref21.png b/doc/salome/gui/SMESH/images/pref21.png
deleted file mode 100644 (file)
index b0d756f..0000000
Binary files a/doc/salome/gui/SMESH/images/pref21.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/pref22.png b/doc/salome/gui/SMESH/images/pref22.png
deleted file mode 100755 (executable)
index cf08621..0000000
Binary files a/doc/salome/gui/SMESH/images/pref22.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/pref23.png b/doc/salome/gui/SMESH/images/pref23.png
deleted file mode 100755 (executable)
index 23d804b..0000000
Binary files a/doc/salome/gui/SMESH/images/pref23.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/pref24.png b/doc/salome/gui/SMESH/images/pref24.png
deleted file mode 100755 (executable)
index 9a7a5a8..0000000
Binary files a/doc/salome/gui/SMESH/images/pref24.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/preview_mesh_1D.png b/doc/salome/gui/SMESH/images/preview_mesh_1D.png
deleted file mode 100644 (file)
index 3922a19..0000000
Binary files a/doc/salome/gui/SMESH/images/preview_mesh_1D.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/preview_mesh_2D.png b/doc/salome/gui/SMESH/images/preview_mesh_2D.png
deleted file mode 100644 (file)
index 55ec7b8..0000000
Binary files a/doc/salome/gui/SMESH/images/preview_mesh_2D.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/preview_tmp_data.png b/doc/salome/gui/SMESH/images/preview_tmp_data.png
deleted file mode 100644 (file)
index 6f9fb31..0000000
Binary files a/doc/salome/gui/SMESH/images/preview_tmp_data.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/prism_mesh.png b/doc/salome/gui/SMESH/images/prism_mesh.png
deleted file mode 100644 (file)
index 95a3121..0000000
Binary files a/doc/salome/gui/SMESH/images/prism_mesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/prism_needs_hyps.png b/doc/salome/gui/SMESH/images/prism_needs_hyps.png
deleted file mode 100644 (file)
index d56d430..0000000
Binary files a/doc/salome/gui/SMESH/images/prism_needs_hyps.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/prism_ok_ko.png b/doc/salome/gui/SMESH/images/prism_ok_ko.png
deleted file mode 100644 (file)
index 0394985..0000000
Binary files a/doc/salome/gui/SMESH/images/prism_ok_ko.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/prism_stack.png b/doc/salome/gui/SMESH/images/prism_stack.png
deleted file mode 100644 (file)
index bba6334..0000000
Binary files a/doc/salome/gui/SMESH/images/prism_stack.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/prism_tui_sample.png b/doc/salome/gui/SMESH/images/prism_tui_sample.png
deleted file mode 100644 (file)
index 0df7e48..0000000
Binary files a/doc/salome/gui/SMESH/images/prism_tui_sample.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/projection_1d.png b/doc/salome/gui/SMESH/images/projection_1d.png
deleted file mode 100644 (file)
index 6115327..0000000
Binary files a/doc/salome/gui/SMESH/images/projection_1d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/projection_2d.png b/doc/salome/gui/SMESH/images/projection_2d.png
deleted file mode 100644 (file)
index e137309..0000000
Binary files a/doc/salome/gui/SMESH/images/projection_2d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/projection_3d.png b/doc/salome/gui/SMESH/images/projection_3d.png
deleted file mode 100644 (file)
index 03eedc3..0000000
Binary files a/doc/salome/gui/SMESH/images/projection_3d.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/propagation_chain.png b/doc/salome/gui/SMESH/images/propagation_chain.png
deleted file mode 100644 (file)
index 420dee0..0000000
Binary files a/doc/salome/gui/SMESH/images/propagation_chain.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/quad_from_ma_medial_axis.png b/doc/salome/gui/SMESH/images/quad_from_ma_medial_axis.png
deleted file mode 100644 (file)
index b02ceab..0000000
Binary files a/doc/salome/gui/SMESH/images/quad_from_ma_medial_axis.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/quad_from_ma_mesh.png b/doc/salome/gui/SMESH/images/quad_from_ma_mesh.png
deleted file mode 100644 (file)
index 3e3c63b..0000000
Binary files a/doc/salome/gui/SMESH/images/quad_from_ma_mesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/quad_from_ma_ring_mesh.png b/doc/salome/gui/SMESH/images/quad_from_ma_ring_mesh.png
deleted file mode 100644 (file)
index 9a43e6d..0000000
Binary files a/doc/salome/gui/SMESH/images/quad_from_ma_ring_mesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/quad_mesh_invalid.png b/doc/salome/gui/SMESH/images/quad_mesh_invalid.png
deleted file mode 100644 (file)
index cce9980..0000000
Binary files a/doc/salome/gui/SMESH/images/quad_mesh_invalid.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/quad_meshes.png b/doc/salome/gui/SMESH/images/quad_meshes.png
deleted file mode 100644 (file)
index c6cbd0c..0000000
Binary files a/doc/salome/gui/SMESH/images/quad_meshes.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/radial_prism_mesh.png b/doc/salome/gui/SMESH/images/radial_prism_mesh.png
deleted file mode 100644 (file)
index 6d9a986..0000000
Binary files a/doc/salome/gui/SMESH/images/radial_prism_mesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/reduce_three_to_one.png b/doc/salome/gui/SMESH/images/reduce_three_to_one.png
deleted file mode 100644 (file)
index d5f4a38..0000000
Binary files a/doc/salome/gui/SMESH/images/reduce_three_to_one.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/remove.gif b/doc/salome/gui/SMESH/images/remove.gif
deleted file mode 100644 (file)
index 8b81cb2..0000000
Binary files a/doc/salome/gui/SMESH/images/remove.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/remove.png b/doc/salome/gui/SMESH/images/remove.png
deleted file mode 100755 (executable)
index cbf4069..0000000
Binary files a/doc/salome/gui/SMESH/images/remove.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/remove_elements1.png b/doc/salome/gui/SMESH/images/remove_elements1.png
deleted file mode 100755 (executable)
index 538460f..0000000
Binary files a/doc/salome/gui/SMESH/images/remove_elements1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/remove_elements2.png b/doc/salome/gui/SMESH/images/remove_elements2.png
deleted file mode 100755 (executable)
index 888188c..0000000
Binary files a/doc/salome/gui/SMESH/images/remove_elements2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/remove_elements_icon.png b/doc/salome/gui/SMESH/images/remove_elements_icon.png
deleted file mode 100644 (file)
index 2a31c3e..0000000
Binary files a/doc/salome/gui/SMESH/images/remove_elements_icon.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/remove_nodes1.png b/doc/salome/gui/SMESH/images/remove_nodes1.png
deleted file mode 100755 (executable)
index 94caae6..0000000
Binary files a/doc/salome/gui/SMESH/images/remove_nodes1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/remove_nodes2.png b/doc/salome/gui/SMESH/images/remove_nodes2.png
deleted file mode 100755 (executable)
index e9f8064..0000000
Binary files a/doc/salome/gui/SMESH/images/remove_nodes2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/remove_nodes_icon.png b/doc/salome/gui/SMESH/images/remove_nodes_icon.png
deleted file mode 100644 (file)
index 0818837..0000000
Binary files a/doc/salome/gui/SMESH/images/remove_nodes_icon.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/remove_orphan_nodes_icon.png b/doc/salome/gui/SMESH/images/remove_orphan_nodes_icon.png
deleted file mode 100644 (file)
index 16df2e5..0000000
Binary files a/doc/salome/gui/SMESH/images/remove_orphan_nodes_icon.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/removeelements.png b/doc/salome/gui/SMESH/images/removeelements.png
deleted file mode 100755 (executable)
index 78e4959..0000000
Binary files a/doc/salome/gui/SMESH/images/removeelements.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/removenodes.png b/doc/salome/gui/SMESH/images/removenodes.png
deleted file mode 100755 (executable)
index 52a5ac6..0000000
Binary files a/doc/salome/gui/SMESH/images/removenodes.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/removeorphannodes.png b/doc/salome/gui/SMESH/images/removeorphannodes.png
deleted file mode 100644 (file)
index fdf8395..0000000
Binary files a/doc/salome/gui/SMESH/images/removeorphannodes.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/renumberelements.png b/doc/salome/gui/SMESH/images/renumberelements.png
deleted file mode 100755 (executable)
index 0f09c6a..0000000
Binary files a/doc/salome/gui/SMESH/images/renumberelements.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/renumbernodes.png b/doc/salome/gui/SMESH/images/renumbernodes.png
deleted file mode 100755 (executable)
index 46fe28b..0000000
Binary files a/doc/salome/gui/SMESH/images/renumbernodes.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/reorient_2d_face.png b/doc/salome/gui/SMESH/images/reorient_2d_face.png
deleted file mode 100644 (file)
index 0407faf..0000000
Binary files a/doc/salome/gui/SMESH/images/reorient_2d_face.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/reorient_2d_point.png b/doc/salome/gui/SMESH/images/reorient_2d_point.png
deleted file mode 100644 (file)
index 8440c91..0000000
Binary files a/doc/salome/gui/SMESH/images/reorient_2d_point.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/reorient_2d_refgroup.png b/doc/salome/gui/SMESH/images/reorient_2d_refgroup.png
deleted file mode 100644 (file)
index f080f46..0000000
Binary files a/doc/salome/gui/SMESH/images/reorient_2d_refgroup.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/reorient_2d_volume.png b/doc/salome/gui/SMESH/images/reorient_2d_volume.png
deleted file mode 100644 (file)
index 1d04de0..0000000
Binary files a/doc/salome/gui/SMESH/images/reorient_2d_volume.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/reorient_faces_face.png b/doc/salome/gui/SMESH/images/reorient_faces_face.png
deleted file mode 100644 (file)
index 23c241f..0000000
Binary files a/doc/salome/gui/SMESH/images/reorient_faces_face.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/reorient_faces_point.png b/doc/salome/gui/SMESH/images/reorient_faces_point.png
deleted file mode 100644 (file)
index 63fae72..0000000
Binary files a/doc/salome/gui/SMESH/images/reorient_faces_point.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/reorient_faces_ref_groups.png b/doc/salome/gui/SMESH/images/reorient_faces_ref_groups.png
deleted file mode 100644 (file)
index f9cf53b..0000000
Binary files a/doc/salome/gui/SMESH/images/reorient_faces_ref_groups.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/reorient_faces_volume.png b/doc/salome/gui/SMESH/images/reorient_faces_volume.png
deleted file mode 100644 (file)
index e58bdb6..0000000
Binary files a/doc/salome/gui/SMESH/images/reorient_faces_volume.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/rev_edges_helper_dlg.png b/doc/salome/gui/SMESH/images/rev_edges_helper_dlg.png
deleted file mode 100644 (file)
index e8790a1..0000000
Binary files a/doc/salome/gui/SMESH/images/rev_edges_helper_dlg.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/revolution1.png b/doc/salome/gui/SMESH/images/revolution1.png
deleted file mode 100644 (file)
index 18928d1..0000000
Binary files a/doc/salome/gui/SMESH/images/revolution1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/revolutionsn1.png b/doc/salome/gui/SMESH/images/revolutionsn1.png
deleted file mode 100644 (file)
index 3e7a7a1..0000000
Binary files a/doc/salome/gui/SMESH/images/revolutionsn1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/revolutionsn2.png b/doc/salome/gui/SMESH/images/revolutionsn2.png
deleted file mode 100644 (file)
index 064dd6c..0000000
Binary files a/doc/salome/gui/SMESH/images/revolutionsn2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/rotation.png b/doc/salome/gui/SMESH/images/rotation.png
deleted file mode 100755 (executable)
index c8f11e6..0000000
Binary files a/doc/salome/gui/SMESH/images/rotation.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/rotation1.png b/doc/salome/gui/SMESH/images/rotation1.png
deleted file mode 100755 (executable)
index 5a4ad99..0000000
Binary files a/doc/salome/gui/SMESH/images/rotation1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/rotation2.png b/doc/salome/gui/SMESH/images/rotation2.png
deleted file mode 100755 (executable)
index 366771a..0000000
Binary files a/doc/salome/gui/SMESH/images/rotation2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/rotation_ico.png b/doc/salome/gui/SMESH/images/rotation_ico.png
deleted file mode 100755 (executable)
index 8f3d4bf..0000000
Binary files a/doc/salome/gui/SMESH/images/rotation_ico.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scalar_bar_dlg.png b/doc/salome/gui/SMESH/images/scalar_bar_dlg.png
deleted file mode 100755 (executable)
index 564689a..0000000
Binary files a/doc/salome/gui/SMESH/images/scalar_bar_dlg.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scale01.png b/doc/salome/gui/SMESH/images/scale01.png
deleted file mode 100644 (file)
index 685bbc1..0000000
Binary files a/doc/salome/gui/SMESH/images/scale01.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scale02.png b/doc/salome/gui/SMESH/images/scale02.png
deleted file mode 100644 (file)
index 982f468..0000000
Binary files a/doc/salome/gui/SMESH/images/scale02.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scale03.png b/doc/salome/gui/SMESH/images/scale03.png
deleted file mode 100644 (file)
index 891ae8d..0000000
Binary files a/doc/salome/gui/SMESH/images/scale03.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scale04.png b/doc/salome/gui/SMESH/images/scale04.png
deleted file mode 100644 (file)
index a042834..0000000
Binary files a/doc/salome/gui/SMESH/images/scale04.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scale06.png b/doc/salome/gui/SMESH/images/scale06.png
deleted file mode 100644 (file)
index 2bd8219..0000000
Binary files a/doc/salome/gui/SMESH/images/scale06.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scale07.png b/doc/salome/gui/SMESH/images/scale07.png
deleted file mode 100644 (file)
index 8ee0923..0000000
Binary files a/doc/salome/gui/SMESH/images/scale07.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scale09.png b/doc/salome/gui/SMESH/images/scale09.png
deleted file mode 100644 (file)
index 2816bac..0000000
Binary files a/doc/salome/gui/SMESH/images/scale09.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scaleinit01.png b/doc/salome/gui/SMESH/images/scaleinit01.png
deleted file mode 100644 (file)
index 97990a8..0000000
Binary files a/doc/salome/gui/SMESH/images/scaleinit01.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scaleinit02.png b/doc/salome/gui/SMESH/images/scaleinit02.png
deleted file mode 100644 (file)
index 008d2e3..0000000
Binary files a/doc/salome/gui/SMESH/images/scaleinit02.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scaleres03.png b/doc/salome/gui/SMESH/images/scaleres03.png
deleted file mode 100644 (file)
index 99b65d7..0000000
Binary files a/doc/salome/gui/SMESH/images/scaleres03.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scaleres04.png b/doc/salome/gui/SMESH/images/scaleres04.png
deleted file mode 100644 (file)
index 0880989..0000000
Binary files a/doc/salome/gui/SMESH/images/scaleres04.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scaleres06.png b/doc/salome/gui/SMESH/images/scaleres06.png
deleted file mode 100644 (file)
index 059fa97..0000000
Binary files a/doc/salome/gui/SMESH/images/scaleres06.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scaleres07.png b/doc/salome/gui/SMESH/images/scaleres07.png
deleted file mode 100644 (file)
index b75f83c..0000000
Binary files a/doc/salome/gui/SMESH/images/scaleres07.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/scaleres09.png b/doc/salome/gui/SMESH/images/scaleres09.png
deleted file mode 100644 (file)
index 4708be5..0000000
Binary files a/doc/salome/gui/SMESH/images/scaleres09.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/selectionfilterlibrary.png b/doc/salome/gui/SMESH/images/selectionfilterlibrary.png
deleted file mode 100755 (executable)
index 38f297b..0000000
Binary files a/doc/salome/gui/SMESH/images/selectionfilterlibrary.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/sew_after_merge.png b/doc/salome/gui/SMESH/images/sew_after_merge.png
deleted file mode 100644 (file)
index 43d6869..0000000
Binary files a/doc/salome/gui/SMESH/images/sew_after_merge.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/sew_using_merge.png b/doc/salome/gui/SMESH/images/sew_using_merge.png
deleted file mode 100644 (file)
index 80cc44c..0000000
Binary files a/doc/salome/gui/SMESH/images/sew_using_merge.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/sewing.png b/doc/salome/gui/SMESH/images/sewing.png
deleted file mode 100755 (executable)
index fcd2dfd..0000000
Binary files a/doc/salome/gui/SMESH/images/sewing.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/sewing1.png b/doc/salome/gui/SMESH/images/sewing1.png
deleted file mode 100644 (file)
index 55e0d83..0000000
Binary files a/doc/salome/gui/SMESH/images/sewing1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/sewing2.png b/doc/salome/gui/SMESH/images/sewing2.png
deleted file mode 100644 (file)
index 2ba3e43..0000000
Binary files a/doc/salome/gui/SMESH/images/sewing2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/sewing3.png b/doc/salome/gui/SMESH/images/sewing3.png
deleted file mode 100644 (file)
index d2d97d5..0000000
Binary files a/doc/salome/gui/SMESH/images/sewing3.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/sewing4.png b/doc/salome/gui/SMESH/images/sewing4.png
deleted file mode 100644 (file)
index ad66682..0000000
Binary files a/doc/salome/gui/SMESH/images/sewing4.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/sewing_auto.png b/doc/salome/gui/SMESH/images/sewing_auto.png
deleted file mode 100644 (file)
index f81cfe2..0000000
Binary files a/doc/salome/gui/SMESH/images/sewing_auto.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/sewing_manual.png b/doc/salome/gui/SMESH/images/sewing_manual.png
deleted file mode 100644 (file)
index ff125bc..0000000
Binary files a/doc/salome/gui/SMESH/images/sewing_manual.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/show_bad_mesh.png b/doc/salome/gui/SMESH/images/show_bad_mesh.png
deleted file mode 100644 (file)
index 9c17681..0000000
Binary files a/doc/salome/gui/SMESH/images/show_bad_mesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/smesh_sort.png b/doc/salome/gui/SMESH/images/smesh_sort.png
deleted file mode 100644 (file)
index 0b00568..0000000
Binary files a/doc/salome/gui/SMESH/images/smesh_sort.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/smesh_sort_groups.png b/doc/salome/gui/SMESH/images/smesh_sort_groups.png
deleted file mode 100644 (file)
index 0176a30..0000000
Binary files a/doc/salome/gui/SMESH/images/smesh_sort_groups.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/smoothing.png b/doc/salome/gui/SMESH/images/smoothing.png
deleted file mode 100755 (executable)
index 26a427e..0000000
Binary files a/doc/salome/gui/SMESH/images/smoothing.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/smoothing1.png b/doc/salome/gui/SMESH/images/smoothing1.png
deleted file mode 100644 (file)
index 567bab5..0000000
Binary files a/doc/salome/gui/SMESH/images/smoothing1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/smoothing2.png b/doc/salome/gui/SMESH/images/smoothing2.png
deleted file mode 100644 (file)
index 45ce704..0000000
Binary files a/doc/salome/gui/SMESH/images/smoothing2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/sort.gif b/doc/salome/gui/SMESH/images/sort.gif
deleted file mode 100644 (file)
index 28a5dff..0000000
Binary files a/doc/salome/gui/SMESH/images/sort.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/sort.png b/doc/salome/gui/SMESH/images/sort.png
deleted file mode 100755 (executable)
index 1dcf44a..0000000
Binary files a/doc/salome/gui/SMESH/images/sort.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/split_biquad_to_linear_dlg.png b/doc/salome/gui/SMESH/images/split_biquad_to_linear_dlg.png
deleted file mode 100644 (file)
index c3df009..0000000
Binary files a/doc/salome/gui/SMESH/images/split_biquad_to_linear_dlg.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/split_biquad_to_linear_icon.png b/doc/salome/gui/SMESH/images/split_biquad_to_linear_icon.png
deleted file mode 100644 (file)
index 0b9b7a0..0000000
Binary files a/doc/salome/gui/SMESH/images/split_biquad_to_linear_icon.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/split_biquad_to_linear_mesh.png b/doc/salome/gui/SMESH/images/split_biquad_to_linear_mesh.png
deleted file mode 100644 (file)
index 4a25e8f..0000000
Binary files a/doc/salome/gui/SMESH/images/split_biquad_to_linear_mesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/split_into_prisms.png b/doc/salome/gui/SMESH/images/split_into_prisms.png
deleted file mode 100644 (file)
index 6d48e69..0000000
Binary files a/doc/salome/gui/SMESH/images/split_into_prisms.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/split_into_tetra.png b/doc/salome/gui/SMESH/images/split_into_tetra.png
deleted file mode 100644 (file)
index a54f445..0000000
Binary files a/doc/salome/gui/SMESH/images/split_into_tetra.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/split_into_tetra_icon.png b/doc/salome/gui/SMESH/images/split_into_tetra_icon.png
deleted file mode 100644 (file)
index c9ea7b4..0000000
Binary files a/doc/salome/gui/SMESH/images/split_into_tetra_icon.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/std_point_marker.png b/doc/salome/gui/SMESH/images/std_point_marker.png
deleted file mode 100755 (executable)
index 2a62693..0000000
Binary files a/doc/salome/gui/SMESH/images/std_point_marker.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/straight_after.png b/doc/salome/gui/SMESH/images/straight_after.png
deleted file mode 100644 (file)
index 4572fea..0000000
Binary files a/doc/salome/gui/SMESH/images/straight_after.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/straight_before.png b/doc/salome/gui/SMESH/images/straight_before.png
deleted file mode 100644 (file)
index 200aad8..0000000
Binary files a/doc/salome/gui/SMESH/images/straight_before.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/swap.png b/doc/salome/gui/SMESH/images/swap.png
deleted file mode 100644 (file)
index 6470710..0000000
Binary files a/doc/salome/gui/SMESH/images/swap.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/symmetry.png b/doc/salome/gui/SMESH/images/symmetry.png
deleted file mode 100755 (executable)
index 64fd26c..0000000
Binary files a/doc/salome/gui/SMESH/images/symmetry.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/symmetry1.png b/doc/salome/gui/SMESH/images/symmetry1.png
deleted file mode 100755 (executable)
index 879a41d..0000000
Binary files a/doc/salome/gui/SMESH/images/symmetry1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/symmetry2.png b/doc/salome/gui/SMESH/images/symmetry2.png
deleted file mode 100755 (executable)
index 83d2338..0000000
Binary files a/doc/salome/gui/SMESH/images/symmetry2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/symmetry3.png b/doc/salome/gui/SMESH/images/symmetry3.png
deleted file mode 100755 (executable)
index 8654659..0000000
Binary files a/doc/salome/gui/SMESH/images/symmetry3.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/topo_equality.png b/doc/salome/gui/SMESH/images/topo_equality.png
deleted file mode 100644 (file)
index 119251a..0000000
Binary files a/doc/salome/gui/SMESH/images/topo_equality.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/translation.png b/doc/salome/gui/SMESH/images/translation.png
deleted file mode 100755 (executable)
index 2362d79..0000000
Binary files a/doc/salome/gui/SMESH/images/translation.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/translation1.png b/doc/salome/gui/SMESH/images/translation1.png
deleted file mode 100755 (executable)
index 790e365..0000000
Binary files a/doc/salome/gui/SMESH/images/translation1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/translation2.png b/doc/salome/gui/SMESH/images/translation2.png
deleted file mode 100755 (executable)
index 5df23cc..0000000
Binary files a/doc/salome/gui/SMESH/images/translation2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/union_groups1.png b/doc/salome/gui/SMESH/images/union_groups1.png
deleted file mode 100644 (file)
index 598c33d..0000000
Binary files a/doc/salome/gui/SMESH/images/union_groups1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/uniongroups.png b/doc/salome/gui/SMESH/images/uniongroups.png
deleted file mode 100755 (executable)
index 831f3cf..0000000
Binary files a/doc/salome/gui/SMESH/images/uniongroups.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/unionoftwotriangles.png b/doc/salome/gui/SMESH/images/unionoftwotriangles.png
deleted file mode 100755 (executable)
index e897cfa..0000000
Binary files a/doc/salome/gui/SMESH/images/unionoftwotriangles.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/uniting_a_set_of_triangles1.png b/doc/salome/gui/SMESH/images/uniting_a_set_of_triangles1.png
deleted file mode 100755 (executable)
index fb00167..0000000
Binary files a/doc/salome/gui/SMESH/images/uniting_a_set_of_triangles1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/uniting_a_set_of_triangles2.png b/doc/salome/gui/SMESH/images/uniting_a_set_of_triangles2.png
deleted file mode 100755 (executable)
index 16d1351..0000000
Binary files a/doc/salome/gui/SMESH/images/uniting_a_set_of_triangles2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/uniting_two_triangles1.png b/doc/salome/gui/SMESH/images/uniting_two_triangles1.png
deleted file mode 100755 (executable)
index e94be3a..0000000
Binary files a/doc/salome/gui/SMESH/images/uniting_two_triangles1.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/uniting_two_triangles2.png b/doc/salome/gui/SMESH/images/uniting_two_triangles2.png
deleted file mode 100755 (executable)
index 5cac5f5..0000000
Binary files a/doc/salome/gui/SMESH/images/uniting_two_triangles2.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/use_existing_face_sample_mesh.png b/doc/salome/gui/SMESH/images/use_existing_face_sample_mesh.png
deleted file mode 100644 (file)
index 2110540..0000000
Binary files a/doc/salome/gui/SMESH/images/use_existing_face_sample_mesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/using_notebook_smesh.png b/doc/salome/gui/SMESH/images/using_notebook_smesh.png
deleted file mode 100644 (file)
index 0946bff..0000000
Binary files a/doc/salome/gui/SMESH/images/using_notebook_smesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/viscous_layers_2d_hyp.png b/doc/salome/gui/SMESH/images/viscous_layers_2d_hyp.png
deleted file mode 100644 (file)
index f9b952f..0000000
Binary files a/doc/salome/gui/SMESH/images/viscous_layers_2d_hyp.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/viscous_layers_extrusion_method.png b/doc/salome/gui/SMESH/images/viscous_layers_extrusion_method.png
deleted file mode 100644 (file)
index cf6fe21..0000000
Binary files a/doc/salome/gui/SMESH/images/viscous_layers_extrusion_method.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/viscous_layers_hyp.png b/doc/salome/gui/SMESH/images/viscous_layers_hyp.png
deleted file mode 100644 (file)
index b7bbffb..0000000
Binary files a/doc/salome/gui/SMESH/images/viscous_layers_hyp.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/viscous_layers_mesh.png b/doc/salome/gui/SMESH/images/viscous_layers_mesh.png
deleted file mode 100644 (file)
index 9373a5e..0000000
Binary files a/doc/salome/gui/SMESH/images/viscous_layers_mesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/images/viscous_layers_on_submesh.png b/doc/salome/gui/SMESH/images/viscous_layers_on_submesh.png
deleted file mode 100644 (file)
index 3897baa..0000000
Binary files a/doc/salome/gui/SMESH/images/viscous_layers_on_submesh.png and /dev/null differ
diff --git a/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst b/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst
deleted file mode 100644 (file)
index 4fc4c2d..0000000
+++ /dev/null
@@ -1,303 +0,0 @@
-.. _a1d_meshing_hypo_page:
-
-*********************
-1D Meshing Hypotheses
-*********************
-
-Basic 1D hypothesis specifies:
-       * how a :ref:`Wire Discretization <a1d_algos_anchor>` should divide the edge;
-       * how a :ref:`Composite Side Discretization <a1d_algos_anchor>` should divide the group of C1-continuous edges.
-
-1D hypotheses can be categorized by type of nodes distribution as follows:
-       * Uniform distribution:
-               * :ref:`Local Length <average_length_anchor>`
-               * :ref:`Max Size <max_length_anchor>`
-               * :ref:`Number of Segments <number_of_segments_anchor>` with Equidistant distribution
-               * :ref:`Automatic Length <automatic_length_anchor>`
-
-       * Constantly increasing or decreasing length of segments:
-               * :ref:`Arithmetic Progression <arithmetic_1d_anchor>` 
-               * :ref:`Geometric Progression <geometric_1d_anchor>`
-               * :ref:`Start and end length <start_and_end_length_anchor>` 
-               * :ref:`Number of Segments <number_of_segments_anchor>` with Scale distribution
-
-       * Distribution depending on curvature:
-               * :ref:`Adaptive <adaptive_1d_anchor>` 
-               * :ref:`Deflection <deflection_1d_anchor>` 
-
-       * Arbitrary distribution:
-               * :ref:`Fixed Points <fixed_points_1d_anchor>` 
-               * :ref:`Number of Segments <number_of_segments_anchor>` with :ref:`Analytic Density Distribution <analyticdensity_anchor>` or Table Density Distribution
-
-
-.. _adaptive_1d_anchor:
-
-Adaptive hypothesis
-###################
-
-**Adaptive** hypothesis allows to split edges into segments with a length that depends on the curvature of edges and faces and is limited by **Min. Size** and **Max Size**. The length of a segment also depends on the lengths of adjacent segments (that can't differ more than twice) and on the  distance to close geometrical entities (edges and faces) to avoid creation of narrow 2D elements.
-
-       .. image:: ../images/adaptive1d.png
-               :align: center
-
-* **Min size** parameter limits the minimal segment size. 
-* **Max size** parameter defines the length of segments on straight edges. 
-* **Deflection** parameter gives maximal distance of a segment from a curved edge.
-
-       .. image:: ../images/adaptive1d_sample_mesh.png 
-               :align: center
-
-       .. centered::
-               Adaptive hypothesis and NETGEN 2D algorithm - the size of mesh segments reflects the size of geometrical features
-
-**See Also** a :ref:`sample TUI Script <tui_1d_adaptive>` that uses Adaptive hypothesis.
-
-.. _arithmetic_1d_anchor:
-
-Arithmetic Progression hypothesis
-#################################
-
-**Arithmetic Progression** hypothesis allows to split edges into segments with a length that changes in arithmetic progression (Lk = Lk-1 + d) beginning from a given starting length and up to a given end length.
-
-The splitting direction is defined by the orientation of the underlying geometrical edge. **Reverse Edges** list box allows specifying the edges, for which the splitting should be made in the direction opposite to their orientation. This list box is usable only if a geometry object is selected for meshing. In this case it is possible to select edges to be reversed either directly picking them in the 3D viewer or by selecting the edges or groups of edges in the Object Browser. Use 
-**Add** button to add the selected edges to the list.
-
-:ref:`Helper <reversed_edges_helper_anchor>` group assists you in defining **Reversed Edges** parameter.
-
-
-.. image:: ../images/a-arithmetic1d.png
-       :align: center
-
-
-.. image:: ../images/b-ithmetic1d.png 
-       :align: center
-
-.. centered::
-       Arithmetic Progression hypothesis - the size of mesh elements gradually increases
-
-**See Also** a sample TUI Script of :ref:`Defining Arithmetic Progression and Geometric Progression hypothesis <tui_1d_arithmetic>` operation.  
-
-.. _geometric_1d_anchor:
-
-Geometric Progression hypothesis
-################################
-
-**Geometric Progression** hypothesis allows splitting edges into segments with a length that changes in geometric progression (Lk = Lk-1 * d) starting from a given **Start Length** and with a given **Common Ratio**.
-
-The splitting direction is defined by the orientation of the underlying geometrical edge.
-**Reverse Edges** list box allows specifying the edges, for which the splitting should be made in the direction opposite to their orientation. This list box is usable only if a geometry object is selected for meshing. In this case it is possible to select edges to be reversed either directly picking them in the 3D viewer or by selecting the edges or groups of edges in the Object Browser. Use **Add** button to add the selected edges to the list.
-
-:ref:`Helper <reversed_edges_helper_anchor>` group assists you in defining **Reversed Edges** parameter.
-
-.. image:: ../images/a-geometric1d.png
-       :align: center
-
-**See Also** a sample TUI Script of :ref:`Defining Arithmetic Progression and Geometric Progression hypothesis <tui_1d_arithmetic>` operation.  
-
-.. _deflection_1d_anchor:
-
-Deflection hypothesis
-#####################
-
-**Deflection** hypothesis can be applied for meshing curvilinear edges composing your geometrical object. It defines only one parameter: the value of deflection (or chord error).
-
-A geometrical edge is divided into segments of length depending on edge curvature. The more curved the edge, the shorter the segment. Nodes on the edge are placed so that the maximum distance between the edge and a segment approximating a part of edge between two nodes should not exceed the value of deflection.
-
-.. image:: ../images/a-deflection1d.png
-       :align: center
-
-.. image:: ../images/b-flection1d.png 
-       :align: center
-
-.. centered::
-       Deflection hypothesis - useful for meshing curvilinear edges
-
-**See Also** a sample TUI Script of :ref:`Defining Deflection hypothesis <tui_deflection_1d>` operation.
-
-.. _average_length_anchor:
-
-Local Length hypothesis
-#######################
-
-**Local Length** hypothesis can be applied for meshing of edges composing your geometrical object. Definition of this hypothesis consists of setting the **length** of segments, which will approximate these edges, and the **precision** of rounding.
-
-The **precision** parameter is used to round a *number of segments*, calculated by dividing the *edge length* by the specified **length** of segment, to the higher integer if the *remainder* exceeds the **precision** and to the lower integer otherwise. 
-Use value 0.5 to provide rounding to the nearest integer, 1.0 for the lower integer, 0.0 for the higher integer. Default value is 1e-07.
-
-For example: if *edge length* is 10.0 and the segment **length**
-is 3.0 then their division gives 10./3. = 3.33(3) and the *remainder* is 0.33(3).
-If **precision** is less than 0.33(3) then the edge is divided into 3 segments.
-If **precision** is more than 0.33(3) then the edge is divided into 4 segments.
-
-
-.. image:: ../images/image41.gif
-       :align: center
-
-.. image:: ../images/a-averagelength.png
-       :align: center
-
-.. image:: ../images/b-erage_length.png 
-       :align: center
-
-.. centered::
-       Local Length hypothesis - all 1D mesh segments are equal
-
-**See Also** a sample TUI Script of :ref:`Defining Local Length <tui_average_length>` hypothesis
-operation.
-
-.. _max_length_anchor:
-
-Max Size
-########
-
-**Max Size** hypothesis allows splitting geometrical edges into segments not longer than the given length. Definition of this hypothesis consists of setting the maximal allowed **length** of segments.
-**Use preestimated length** check box lets you use **length** automatically calculated basing on size of your geometrical object, namely as diagonal of bounding box divided by ten. The divider can be changed via :ref:`Ratio Bounding Box Diagonal / Max Size <diagonal_size_ratio_pref>` preference parameter.
-**Use preestimated length** check box is enabled only if the geometrical object has been selected before hypothesis definition.
-
-.. image:: ../images/a-maxsize1d.png
-       :align: center
-
-.. _number_of_segments_anchor:
-
-Number of Segments hypothesis
-#############################
-
-**Number of Segments** hypothesis can be applied for approximating edges by a definite number of mesh segments with length depending on the selected type of distribution of nodes. The default number of segments can be set via :ref:`Automatic Parameters / Default Number of Segments <nb_segments_pref>` preference parameter.
-
-The direction of the splitting is defined by the orientation of the underlying geometrical edge. **Reverse Edges** list box allows to specify the edges for which the splitting should be made in the direction opposing to their orientation. This list box is enabled only if the geometry object is selected for the meshing. In this case it is possible to select edges to be reversed either by directly picking them in the 3D viewer or by selecting the edges or groups of edges in the Object Browser.
-
-:ref:`Helper <reversed_edges_helper_anchor>` group assists you in defining **Reversed Edges** parameter.
-
-You can set the type of node distribution for this hypothesis in the **Hypothesis Construction** dialog box:
-
-.. image:: ../images/a-nbsegments1.png
-       :align: center
-
-**Equidistant Distribution** - all segments will have the same length, you define only the **Number of Segments**.
-
-**Scale Distribution** - length of segments gradually changes depending on the **Scale Factor**, which is a ratio of the first segment length to the last segment length.
-
-Length of segments changes in geometric progression with the common ratio (A) depending on the **Scale Factor** (S) and **Number of Segments** (N) as follows: A = S**(1/(N-1)). For an edge of length L, length of the first segment is L * (1 - A)/(1 - A**N)
-
-.. image:: ../images/a-nbsegments2.png
-       :align: center
-
-.. _analyticdensity_anchor:
-
-**Distribution with Analytic Density** - you input the formula, which will rule the change of length of segments and the module shows in the plot the density function curve in red and the node distribution as blue crosses.
-
-.. image:: ../images/distributionwithanalyticdensity.png
-       :align: center
-
-The node distribution is computed so that to have the density function integral on the range between two nodes equal for all segments.
-
-.. image:: ../images/analyticdensity.png
-       :align: center
-
-**Distribution with Table Density** - you input a number of pairs **t - F(t)**, where **t** ranges from 0 to 1, and the module computes the formula, which will rule the change of length of segments and shows in the plot the density function curve in red and the node distribution as blue crosses. The node distribution is computed in the same way as for :ref:`Distribution with Analytic Density <analyticdensity_anchor>`. You can select the **Conversion mode** from **Exponent** and **Cut negative**.
-
-.. image:: ../images/distributionwithtabledensity.png
-       :align: center
-
-
-**See Also** a sample TUI Script of :ref:`Defining Number of Segments <tui_deflection_1d>` hypothesis operation.
-
-.. note:: The plot functionality is available only if GUI module is built with Plot 2D Viewer (option SALOME_USE_PLOT2DVIEWER is ON when building GUI module).
-
-.. _start_and_end_length_anchor:
-
-Start and End Length hypothesis
-###############################
-
-**Start and End Length** hypothesis allows to divide a geometrical edge into segments so that the first and the last segments have a specified length. The length of medium segments changes with automatically chosen geometric progression.
-
-The direction of the splitting is defined by the orientation of the underlying geometrical edge. **Reverse Edges** list box allows to specify the edges, for which the splitting should be made in the direction opposing to their orientation. This list box is enabled only if the geometry object is selected for the meshing. In this case it is possible to select edges to be reversed either by directly picking them in the 3D viewer or by selecting the edges or groups of edges in the Object Browser.
-
-:ref:`Helper <reversed_edges_helper_anchor>` group assists you in defining **Reversed Edges** parameter.
-
-
-.. image:: ../images/a-startendlength.png
-       :align: center
-
-.. image:: ../images/b-art_end_length.png 
-       :align: center
-
-.. centered::
-        The lengths of the first and the last segment are strictly defined
-
-**See Also** a sample TUI Script of :ref:`Defining Start and End Length <tui_start_and_end_length>` hypothesis operation.
-
-
-.. _automatic_length_anchor:
-
-Automatic Length
-################
-
-The dialog box prompts you to define the quality of the future mesh by only one parameter, which is **Fineness**, ranging from 0 (coarse mesh, low number of segments) to 1 (extremely fine mesh, great number of segments). 
-
-.. image:: ../images/automaticlength.png
-       :align: center
-
-Compare one and the same object (sphere) meshed with minimum and maximum value of this parameter.
-
-.. image:: ../images/image147.gif
-       :align: center
-.. centered::
-       Example of a rough mesh at Automatic Length Fineness of 0.
-
-.. image:: ../images/image148.gif
-       :align: center
-.. centered::
-       Example of a fine mesh at Automatic Length Fineness of 1.
-
-.. _fixed_points_1d_anchor:
-
-Fixed Points hypothesis
-#######################
-
-**Fixed Points** hypothesis allows splitting edges through a set of points parametrized on the edge (from 1 to 0) and a number of segments for each interval limited by the points.
-
-.. image:: ../images/hypo_fixedpnt_dlg.png
-       :align: center
-
-It is possible to check in **Same Nb. Segments for all intervals** option and to define one value for all intervals.
-
-The splitting direction is defined by the orientation of the underlying geometrical edge. **Reverse Edges** list box allows to specify the edges for which the splitting should be made in the direction opposite to their orientation. This list box is enabled only if the geometrical object is selected for meshing. In this case it is possible to select the edges to be reversed either directly picking them in the 3D viewer or selecting the edges or groups of edges in the Object Browser.
-
-:ref:`Helper <reversed_edges_helper_anchor>`  group assists in defining **Reversed Edges** parameter.
-
-
-.. image:: ../images/mesh_fixedpnt.png 
-       :align: center
-
-.. centered::
-       Example of a sub-mesh on the edge built using Fixed Points hypothesis
-
-**See Also** a sample TUI Script of a :ref:`Defining Fixed Points <tui_fixed_points>` hypothesis operation.
-
-
-.. _reversed_edges_helper_anchor:
-
-Reversed Edges Helper
-#####################
-
-.. image:: ../images/rev_edges_helper_dlg.png
-       :align: center
-
-**Helper** group assists in defining **Reversed Edges** parameter of the hypotheses depending on edge direction.
-
-**Show whole geometry** check-box allows seeing the whole geometrical model in the 3D Viewer, which can help to understand the location of a set of edges within the model.
-
-**Propagation chains** group allows defining **Reversed Edges** for splitting opposite edges of quadrilateral faces in a logically uniform direction. When this group is activated, the list is filled with propagation chains found within the shape on which a hypothesis is assigned. When a chain is selected in the list its edges are shown in the Viewer with arrows, which enables choosing a common direction for all chain edges. **Reverse** button inverts the common direction of chain edges. **Add** button is active if some edges of a chain have a different direction, so you can click **Add** button to add them to **Reversed Edges** list.
-
-.. image:: ../images/propagation_chain.png 
-       :align: center
-
-.. centered::
-       The whole geometry and a propagation chain
-
-.. note:: Alternatively, uniform direction of edges of one propagation chain can be achieved by :ref:`definition of a sub-mesh <constructing_submeshes_page>` on one edge of the chain and assigning a :ref:`Propagation <propagation_anchor>` additional hypothesis. Orientation of this edge (and hence of all the rest edges of the chain) can be controlled by using **Reversed Edges** field.
-
-
diff --git a/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst b/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst
deleted file mode 100644 (file)
index f3987d7..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-.. _a2d_meshing_hypo_page:
-
-*********************
-2D Meshing Hypotheses
-*********************
-
-- :ref:`max_element_area_anchor`
-- :ref:`length_from_edges_anchor`
-- :ref:`hypo_quad_params_anchor`
-
-.. _max_element_area_anchor:
-
-Max Element Area
-################
-
-**Max Element Area** hypothesis is applied for meshing of faces composing your geometrical object. Definition of this hypothesis consists of setting the **maximum area** of mesh faces, which will compose the mesh of these faces.
-
-.. image:: ../images/a-maxelarea.png
-       :align: center
-
-|    
-
-.. image:: ../images/max_el_area.png 
-       :align: center
-
-.. centered::
-       In this example, Max. element area is very small compared to the 1D hypothesis
-
-**See Also** a sample TUI Script of :ref:`tui_max_element_area` hypothesis operation. 
-
-.. _length_from_edges_anchor:
-
-Length from Edges
-#################
-
-**Length from edges** hypothesis defines the maximum linear size of mesh faces as an average length of mesh edges approximating the meshed face boundary.
-
-**See Also** a sample TUI Script of :ref:`tui_length_from_edges` hypothesis operation.
-
-.. _hypo_quad_params_anchor:
-
-Quadrangle parameters
-#####################
-
-**Quadrangle parameters** is a hypothesis for :ref:`quad_ijk_algo_page`.
-
-Quadrangle parameters dialog includes four tab pages:
-
-- :ref:`Transition <transition_anchor>`
-- :ref:`Base vertex <base_vertex_anchor>`
-- :ref:`Corner Vertices <corner_vertices_anchor>`
-- :ref:`Enforced nodes <enforced_nodes_anchor>`
-
-.. _transition_anchor:
-
-Transition tab
---------------
-
-.. image:: ../images/ hypo_quad_params_dialog.png 
-       :align: center
-
-.. centered::
-       Quadrangle parameters: Transition
-
-**Transition** tab is used to define the algorithm of transition between opposite sides of the face with a different number of segments on them. The following types of transition algorithms are available:
-
-* **Standard** is the default case, when both triangles and quadrangles are possible in the transition area along the finer meshed sides.
-* **Triangle preference** forces building only triangles in the transition area along the finer meshed sides.
-
-  .. note:: This type corresponds to **Triangle Preference** additional hypothesis, which is obsolete now.
-
-* **Quadrangle preference** forces building only quadrangles in the transition area along the finer meshed sides. This hypothesis has a restriction: the total quantity of segments on all four face sides must be even (divisible by 2).
-
-  .. note:: This type corresponds to **Quadrangle Preference** additional hypothesis, which is obsolete now.
-
-* **Quadrangle preference (reversed)** works in the same way and with the same restriction as **Quadrangle preference**, but the transition area is located along the coarser meshed sides.
-* **Reduced** type forces building only quadrangles and the transition between the sides is made gradually, layer by layer. This type has a limitation on the number of segments: one pair of opposite sides must have the same number of segments, the other pair must have an even total number of segments. In addition, the number of rows between sides with different discretization should be enough for the transition. Following the fastest transition pattern, three segments become one (see the image below), hence the least number of face rows needed to reduce from Nmax segments to Nmin segments is log<sub>3</sub>( Nmax / Nmin ). The number of face rows is equal to the number of segments on each of equally discretized sides.
-
-.. image:: ../images/ reduce_three_to_one.png 
-       :align: center
-
-.. centered::
-       The fastest transition pattern: 3 to 1
-
-.. _base_vertex_anchor:
-
-Base vertex tab
----------------
-
-.. image:: ../images/ hypo_quad_params_dialog_vert.png 
-       :align: center
-
-.. centered::
-       Quadrangle parameters: Base Vertex
-
-**Base vertex** tab allows using Quadrangle: Mapping algorithm for meshing of trilateral faces. In this case it is necessary to select the vertex, which will be used as the forth degenerated side of quadrangle.
-
-.. image:: ../images/hypo_quad_params_1.png 
-       :align: center
-
-.. centered::
-       A face built from 3 edges and the resulting mesh
-
-This parameter can be also used to mesh a segment of a circular face. Please, consider that there is a limitation on the selection of the vertex for the faces built with the angle > 180 degrees (see the picture). In this case, selection of a wrong vertex for the **Base vertex** parameter will generate a wrong mesh. The picture below shows the good (left) and the bad (right) results of meshing.
-
-.. image:: ../images/hypo_quad_params_2.png 
-       :align: center
-
-.. centered:: 
-       3/4 of a circular face and the resulting meshes
-
-
-.. _corner_vertices_anchor:
-
-Corner Vertices tab
--------------------
-
-.. image:: ../images/hypo_quad_params_dialog_corners.png 
-       :align: center
-
-.. centered::
-       Quadrangle parameters: Corner Vertices
-
-**Corner Vertices** tab page allows specifying vertices that should be used as quadrangle corners. This can be useful for faces with more than four vertices, since in some cases Quadrangle Mapping algorithm chooses corner vertices differently than it is desired. **Quadrangle parameters** hypothesis can be global and define corners for all CAD faces that require it, but be sure that each specified vertex is a corner in all faces the hypothesis will be applied to.
-
-
-.. _enforced_nodes_anchor:
-
-Enforced nodes tab
-------------------
-
-.. image:: ../images/ hypo_quad_params_dialog_enf.png 
-       :align: center
-
-.. centered::
-       Quadrangle parameters: Enforced nodes
-
-**Enforced nodes** tab allows defining points, where the algorithm should create nodes. There are two ways to define positions of the enforced nodes.
-
-* **Vertices** group allows to set up shapes whose vertices will  define positions of the enforced nodes. Only vertices successfully projected to the meshed face and located close enough to the meshed face will be used to create the enforced nodes.
-* **Points** group allows to explicitly define coordinates of points used to create the enforced nodes. Only points successfully projected to the meshed face and located close enough to the meshed face will be used to create the enforced nodes.
-
-..  note::
-       **Enforced nodes** cannot be created at **Reduced** transition type.
-
-Let us see how the algorithm works:
-
-* Initially positions of nodes are computed without taking into account the enforced vertex (yellow point). 
-
-.. image:: ../images/ hypo_quad_params_enfnodes_algo1.png
-       :align: center
-
-.. centered::
-       Initial mesh
-
-* Then the node closest to the enforced vertex is detected. Extreme nodes of the row and column of the detected node are used to create virtual edges (yellow lines) ending at the enforced vertex. 
-
-       .. image:: ../images/ hypo_quad_params_enfnodes_algo2.png
-               :align: center
-       .. centered::
-                Creation of virtual edges
-       
-* Consequently, the meshed face is divided by the virtual edges into four quadrilateral sub-domains each of which is meshed as usually: the nodes of the row and column of the detected node are moved to the virtual edges and the quadrilateral elements are constructed. 
-       
-       .. image:: ../images/ hypo_quad_params_enfnodes_algo3.png 
-               :align: center
-       
-       .. centered::
-               Final mesh
-
-
-If there are several enforced vertices, the algorithm is applied recursively to the formed sub-domains.
-
-**See Also** a sample TUI Script of a :ref:`Quadrangle Parameters <tui_quadrangle_parameters>` hypothesis.
-
diff --git a/doc/salome/gui/SMESH/input/3d_meshing_hypo.rst b/doc/salome/gui/SMESH/input/3d_meshing_hypo.rst
deleted file mode 100644 (file)
index bef317c..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-.. _a3d_meshing_hypo_page:
-
-*********************
-3D Meshing Hypotheses
-*********************
-
-.. _max_element_volume_hypo:
-
-Max Element Volume hypothesis
-#############################
-
-**Max Element Volume** hypothesis is applied for meshing of 3D objects composing your geometrical object. Definition of this hypothesis consists of setting the **maximum volume** of 3D meshing elements (depending on the chosen meshing algorithm it can be **hexahedrons** or **tetrahedrons**), which will compose the mesh of these 3D objects.
-
-.. image:: ../images/a-maxelvolume.png
-       :align: center
-
-**See Also** a sample TUI Script of a :ref:`tui_max_element_volume` operation.  
-
-.. _block_renumber_hypo:
-
-Renumber hypothesis
-###################
-
-**Renumber** hypothesis is applied for meshing of 3D objects along with **Hexahedron (i,j,k)** algorithm.
-
-Order and hence numbering of hexahedral elements in the structured mesh generated by **Hexahedron (ijk)** algorithm depends on the order of faces in a block geometry. Nodes are not in a structured order, since geometrical edges and faces are discretized before construction of hexahedra. **Renumber** hypothesis allows for getting hexahedra and nodes ordered like in a structured grid.
-
-.. image:: ../images/block_renumber_hyp.png
-       :align: center
-
-**Renumber** hypothesis allows to define direction of **i, j** and **k** axes of a block. For that you specify two vertices of the block
-
-* **Vertex (0,0,0)** located at the origin of the block local coordinate system.
-* **Vertex (0,0,1)** located at the end of **k** axis of the block.
-
-Axes **i** and **j** are found automatically using the right-hand rule.
-
-For blocks with edges parallel to the axes of global coordinate system, their local coordinate system by default is defined as having axes parallel to the global ones. So, for such blocks specification of vertices is optional, it is enough just to assign **Renumber** hypothesis.
-
-**See Also** a sample TUI Script of a :ref:`tui_block_renumber` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/StdMeshersBuilder.rst b/doc/salome/gui/SMESH/input/StdMeshersBuilder.rst
deleted file mode 100644 (file)
index a1bf1d4..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-smesh_algorithm module
-======================
-.. automodule:: smesh_algorithm
-   :members:
-
-StdMeshersBuilder module
-========================
-.. automodule:: StdMeshersBuilder
-   :members:
diff --git a/doc/salome/gui/SMESH/input/about_filters.rst b/doc/salome/gui/SMESH/input/about_filters.rst
deleted file mode 100644 (file)
index c2cfce9..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-.. _filters_page: 
-
-*************
-About filters
-*************
-
-**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 criteria can be combined together by using logical operators *AND* and *OR*. In addition, a filter criterion can be reverted using logical operator *NOT*.
-
-Some filtering criteria use the functionality of :ref:`mesh quality controls <quality_page>` to filter mesh nodes / elements by specific characteristic (Area, Length, etc).
-
-The functionality of mesh filters is available in both GUI and TUI modes:
-
-* In GUI, filters are available in some dialog boxes via "Set Filters" button, clicking on which opens the :ref:`dialog box <filtering_elements>` allowing to specify the list of filter criteria to be applied to the current selection. See :ref:`selection_filter_library_page` page to learn more about selection filters and their usage in GUI.
-
-* In Python scripts, filters can be used to choose only some mesh nodes or elements for the operations, which require the list of entities as input parameter (create/modify group, remove nodes/elements, etc) and for the operations, which accept objects (groups, sub-meshes) as input parameter. The page :ref:`tui_filters_page` provides examples of the filters usage in Python scripts.
-
-.. toctree::
-   :maxdepth: 2
-   :hidden:
-
-   selection_filter_library.rst
diff --git a/doc/salome/gui/SMESH/input/about_hypo.rst b/doc/salome/gui/SMESH/input/about_hypo.rst
deleted file mode 100644 (file)
index a4609d9..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-.. _about_hypo_page: 
-
-****************
-About Hypotheses
-****************
-
-**Hypotheses** represent boundary conditions which will be taken into account by meshing algorithms. The hypotheses allow you to manage the level of detail of the resulting mesh: when applying different hypotheses with different parameters you can preset the quantity or size of elements which will compose your mesh. So, it will be possible to generate a coarse or a more refined mesh.
-
-The choice of a hypothesis depends on the selected algorithm.
-
-Hypotheses are created during creation and edition of 
-:ref:`meshes <constructing_meshes_page>` and :ref:`sub-meshes <constructing_submeshes_page>`. 
-Once created a hypotheses can be reused during creation and edition of other meshes and sub-meshes. All created hypotheses and algorithms are present in the Object Browser in *Hypotheses* and *Algorithms* folders correspondingly. It is possible to open a dialog to modify the parameters of a hypothesis from its context menu. This menu also provides  **Unassign** command that will unassign the hypothesis from all meshes and sub-meshes using it. Modification of any parameter of a hypothesis and its unassignment leads to automatic removal of elements generated using it.
-
-In **MESH** there are:
-
-* :ref:`a1d_meshing_hypo_page` for meshing of **edges**
-* :ref:`a2d_meshing_hypo_page` for meshing of **faces**
-* :ref:`a3d_meshing_hypo_page` for meshing of **volumes**
-* :ref:`additional_hypo_page`
-
-**Table of Contents**
-
-.. toctree::
-   :maxdepth: 2
-
-   1d_meshing_hypo.rst
-   2d_meshing_hypo.rst
-   3d_meshing_hypo.rst
-   additional_hypo.rst 
-
diff --git a/doc/salome/gui/SMESH/input/about_meshes.rst b/doc/salome/gui/SMESH/input/about_meshes.rst
deleted file mode 100644 (file)
index 270fbe5..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-.. _about_meshes_page: 
-
-************
-About meshes
-************ 
-
-**MESH** represents a discrete approximation of a subset of the three-dimensional space by `elementary geometrical elements`_.
-
-A SALOME study can contain multiple meshes, but they do not implicitly compose one super-mesh, and finally each of them can be used (e.g. exported) only individually.
-
-Mesh module provides several ways to create the mesh:
-
-* The main way is to :ref:`construct the mesh <constructing_meshes_page>` on the basis of the geometrical shape produced in the Geometry module. This way implies selection of 
-
-  * a geometrical object (*main shape*) and
-  * *meshing parameters* (:ref:`meshing algorithms <basic_meshing_algos_page>` and characteristics (e.g. element size) of a required mesh encapsulated in :ref:`hypothesis <about_hypo_page>` objects).
-
-  Construction of :ref:`sub-meshes <constructing_submeshes_page>` allows to discretize some sub-shapes of the main shape, for example a face, using the meshing parameters that differ from those used for other sub-shapes.
-  Meshing parameters of meshes and sub-meshes can be :ref:`edited <editing_meshes_page>`. (Upon edition only mesh entities generated using changed meshing parameters are removed and will be re-computed).
-
-  .. note::
-       Algorithms and hypotheses used at mesh level are referred to as *global* ones and those used at sub-mesh level are referred to as *local* ones.
-  
-* Bottom-up way, using :ref:`mesh modification <modifying_meshes_page>` operations, especially :ref:`extrusion <extrusion_page>` and :ref:`revolution <revolution_page>`. To create an empty mesh not based on geometry, use the same dialog as to :ref:`construct the mesh on geometry <constructing_meshes_page>` but specify neither the geometry nor meshing algorithms.
-  
-* The mesh can be :ref:`imported <importing_exporting_meshes_page>` from (and exported to) the file in MED, UNV, STL, CGNS, DAT and GMF formats.
-  
-* The 3D mesh can be generated from the 2D mesh not based on geometry, which was either :ref:`imported <importing_exporting_meshes_page>` or created in other way. To setup the meshing parameters of a mesh not based on geometry, just invoke :ref:`Edit mesh / sub-mesh <editing_meshes_page>` command on your 2D mesh.
-  
-* Several meshes can be :ref:`combined <building_compounds_page>` into a new mesh.
-  
-* The whole mesh or its part (sub-mesh or group) can be :ref:`copied <copy_mesh_page>` into a new mesh.
-  
-* A new mesh can be created from a transformed, e.g. :ref:`translated <translation_page>`, part of the mesh.
-
-
-Meshes can be edited using the MESH functions destined for :ref:`modification <modifying_meshes_page>` of meshes.
-
-Attractive meshing capabilities include:
-
-* 3D and 2D :ref:`Viscous Layers <viscous_layers_anchor>` (boundary layers of highly stretched elements beneficial for high quality viscous computations);
-* automatic conformal transition between tetrahedral and hexahedral sub-meshes.
-
-The **structure** of a SALOME mesh is described by nodes and elements based on these nodes. The geometry of an element is defined by the sequence of nodes constituting it and the :ref:`connectivity convention <connectivity_page>` (adopted from MED library). Definition of the element basing on the elements of a lower dimension is NOT supported.
-
-.. _elementary geometrical elements:
-
-The mesh can include the following entities:
-
-* **Node** - a mesh entity defining a position in 3D space with coordinates (x, y, z).
-* **Edge** (or segment) - 1D mesh element linking two nodes.
-* **Face** - 2D mesh element representing a part of surface bound by links between face nodes. A face can be a triangle, quadrangle or polygon.
-* **Volume** - 3D mesh element representing a part of 3D space bound by volume facets. Nodes of a volume describing each facet are defined by the :ref:`connectivity convention <connectivity_page>`. A volume can be a tetrahedron, hexahedron, pentahedron, pyramid, hexagonal prism or polyhedron.
-* **0D** element - mesh element defined by one node.
-* **Ball** element - discrete mesh element defined by a node and a diameter.
-
-
-Every mesh entity has an attribute associating it to a sub-shape it is generated on (if any). The node generated on the geometrical edge or surface in addition stores its position in parametric space of the associated geometrical entity. This attribute is set up by meshing algorithms generating elements and nodes.
-
-Mesh entities are identified by integer IDs starting from 1.
-Nodes and elements are counted separately, i.e. there can be a node and element with the same ID.
-
-SALOME supports elements of second order, without a central node (quadratic triangle, quadrangle, polygon, tetrahedron, hexahedron,
-pentahedron and pyramid) and with central nodes (bi-quadratic triangle and quadrangle and tri-quadratic hexahedron).
-
-Quadratic mesh can be obtained in three ways:
-
-* Using a global :ref:`quadratic_mesh_anchor` hypothesis. (Elements with the central node are not generated in this way).
-* Using :ref:`convert_to_from_quadratic_mesh_page` operation.
-* Using an appropriate option of some meshing algorithms, which generate elements of several dimensions starting from mesh segments.
-
-
-**Table of Contents**
-
-.. toctree::
-   :titlesonly:
-   :maxdepth: 2
-
-   constructing_meshes.rst
-   constructing_submeshes.rst
-   editing_meshes.rst
-   importing_exporting_meshes.rst
-   building_compounds.rst
-   copy_mesh.rst
-   connectivity.rst
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 (file)
index 63b20dd..0000000
+++ /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/adaptation.rst b/doc/salome/gui/SMESH/input/adaptation.rst
deleted file mode 100644 (file)
index 624851d..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-.. _adaptation_page:
-
-**********
-Adaptation
-**********
-
-Mesh module provides the possibility to perform different adaptations of a mesh.
-
-.. note::
-  A mesh adaptation based on splitting is available by the HOMARD module.
-
-.. _mg_adapt_anchor:
-
-MG_Adapt
-########
-
-For meshes made of triangles and/or tetrahedra, remeshing operations are available with the MG-Adapt plugin. The remeshing is based on wanted mesh sizes defined over the mesh or as a constant. The boundaries are dedeuced from the initial mesh.
-
-To start **Remeshing** operation, select **MG Adapt** tab in **Adaptation** dialog.
-
-.. image:: ../images/adaptation_01.png
-  :align: center
-
-
-* **Mesh In** is the initial mesh to remesh.
-* **Mesh Out** is the resulting mesh after remeshing. By default, the name of the initial mesh is kept and the file name is based on the name of the initial mesh.
-* **Size map definition** is a choice between **Local**, **Background** and **Constant**.
-
-- If the choice is **Background**, the name of the MED file must be given.
-- If the choice is **Local** or **Background**, the name of the field must be selected from the list, together with time step.
-
-.. image:: ../images/adaptation_02.png
-  :align: center
-
-.. note::
-  The exhaustive description of MG-Adapt can be read into its documentation. It can be reached by the general help button.
-
-**See Also** a sample TUI Script of :ref:`tui_adaptation_page`.
diff --git a/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst b/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst
deleted file mode 100644 (file)
index d2df5f2..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-.. _adding_nodes_and_elements_page: 
-
-*************************
-Adding nodes and elements
-*************************
-
-In MESH you can add to your mesh different elements such as:
-
-* :ref:`Nodes <adding_nodes_anchor>`
-* :ref:`0D Elements <adding_0delems_anchor>`
-* :ref:`0D elements on Element Nodes <adding_0delems_on_all_nodes_anchor>`
-* :ref:`Ball Elements <adding_balls_anchor>`
-* :ref:`Edges <adding_edges_anchor>`
-* :ref:`Triangles <adding_triangles_anchor>`
-* :ref:`Quadrangles <adding_quadrangles_anchor>`
-* :ref:`Polygons <adding_polygons_anchor>`
-* :ref:`Tetrahedrons <adding_tetrahedrons_anchor>`
-* :ref:`Hexahedrons <adding_hexahedrons_anchor>`
-* :ref:`Hexagonal prism <adding_octahedrons_anchor>`
-* :ref:`Polyhedrons <adding_polyhedrons_anchor>`
-
-
-The convention of nodal connectivity of elements used in SALOME is the MED library convention. You can consult the description of nodal connectivity of elements in the documentation on MED library or :ref:`here <connectivity_page>`.
-
-*To add a node or an element to your mesh:*
-
-#. Select your mesh in the Object Browser or in the 3D viewer.
-#. From the **Modification** menu choose the **Add** item, the following associated sub-menu will appear:
-
-       .. image:: ../images/image152.png
-               :align: center
-
-   From this sub-menu select the type of element which you would like to add to your mesh.
-
-   .. note:: All dialogs for new node or element adding to the mesh provide the possibility to automatically add a node or element to the specified group or to create it anew using **Add to group** box, that allows choosing an existing group for the created node or element or giving the name to a new group. By default, the **Add to group** check box is switched off. If the user switches this check box on, the combo box listing all currently existing groups of the corresponding type becomes available. By default, no group is selected. In this case, when the user presses **Apply** or **Apply & Close** button, the warning message box informs the user about the necessity to input new group name. The combo box lists groups of all the :ref:`three types <grouping_elements_page>`: both :ref:`standalone groups <standalone_group>`, :ref:`groups on filter <group_on_filter>`, and :ref:`groups on geometry <group_on_geom>`. If the user chooses a group on geometry or on filter, he is warned and proposed to convert this group to standalone. If the user rejects conversion operation, it is cancelled and a new node/element is not created!
-
-
-**See Also** sample TUI Scripts of :ref:`tui_adding_nodes_and_elements` operations.  
-
-.. _adding_nodes_anchor:
-
-Adding nodes
-############
-
-.. image:: ../images/addnode.png
-       :align: center
-
-In this dialog box set coordinates for your node in the **Coordinates** set of fields and click the **Apply** or **Apply and Close** button. Your node will be created:
-
-.. image:: ../images/add_node.png
-       :align: center
-
-
-.. _adding_0delems_anchor:
-
-Adding 0D elements
-##################
-
-.. image:: ../images/add0delement.png
-       :align: center
-
-In this dialog box specify nodes which will form your 0D elements by selecting them in the 3D viewer. Activate **Allow duplicate elements** 
-to get several 0D elements on a node. Click the **Apply** or **Apply and Close** button. Your 0D elements will be created:
-
-.. image:: ../images/add_0delement.png
-       :align: center
-
-
-.. _adding_0delems_on_all_nodes_anchor:
-
-Making 0D elements on Element Nodes
-###################################
-
-There is another way to create 0D elements. It is possible to create 0D elements on all nodes of the selected mesh, sub-mesh, or a group of elements or nodes.
-
-.. image:: ../images/dlg_0D_on_all_nodes.png
-       :align: center
-
-In this dialog
-
-*  The radio-buttons allow choosing the type of object to create 0D elements on.
-    
-       * **Mesh, sub-mesh, group** - this button allows selecting a mesh, a sub-mesh or a group to create 0D elements on the nodes of its elements. The name of the selected object is shown in the dialog. 
-       * **Elements** - this button allows selecting elements in the VTK viewer or typing their IDs in the dialog.
-       * **Nodes** - this button allows selecting nodes to create 0D elements on in the VTK viewer or typing their IDs in the dialog.
-  
-* **Set Filter** button allows selecting elements or nodes by filtering mesh elements or nodes with different criteria (see :ref:`Filter usage <filtering_elements>`).
-* Activate **Allow duplicate elements** to get several 0D elements on a node. 
-* Switching on **Add to group** check-box allows specifying the name of the group to which all created or found (existing) 0D elements will be added. You can either select an existing group from a drop-down list, or enter the name of the group to be created. If a selected existing :ref:`group <grouping_elements_page>` is not Standalone (Group On Geometry or Group On Filter) it will be converted to Standalone.
-
-.. warning:: If **Add to group** is activated it has to be filled in.
-
-
-
-
-.. _adding_balls_anchor:
-
-Adding ball elements
-####################
-
-.. image:: ../images/addball.png
-       :align: center
-
-In this dialog box specify the nodes, which will form your ball elements, either by selecting them in the 3D viewer or by manually entering their IDs, specify the ball diameter and click the **Apply** or **Apply and Close** button.
-
-.. image:: ../images/add_ball.png
-       :align: center
-
-
-.. _adding_edges_anchor:
-
-Adding edges
-############
-
-.. image:: ../images/addedge.png
-       :align: center
-
-In this dialog box specify the nodes which will form your edge by selecting them in the 3D viewer with pressed Shift button and click the **Apply** or **Apply and Close** button. Your edge will be created:
-
-.. image:: ../images/add_edge.png
-       :align: center
-
-
-.. _adding_triangles_anchor:
-
-Adding triangles
-################
-
-.. image:: ../images/addtriangle.png
-       :align: center
-
-In this dialog box specify the nodes which will form your triangle by selecting them in the 3D viewer with pressed Shift button and click the **Apply** or **Apply and Close** button. Your triangle will be created:
-
-.. image:: ../images/add_triangle.png
-       :align: center
-
-
-.. _adding_quadrangles_anchor:
-
-Adding quadrangles
-##################
-
-.. image:: ../images/addquadrangle.png
-       :align: center
-
-In this dialog box specify the nodes which will form your quadrangle by selecting them in the 3D viewer with pressed Shift button and click the **Apply** or **Apply and Close** button. Your quadrangle will be created:
-
-.. image:: ../images/add_quadrangle.png
-       :align: center
-
-
-.. _adding_polygons_anchor:
-
-Adding polygons
-###############
-
-.. image:: ../images/addpolygon.png
-       :align: center
-
-In this dialog box specify the nodes which will form your polygon by selecting them in the 3D viewer with pressed Shift button and click the **Apply** or **Apply and Close** button.
-
-.. image:: ../images/add_polygone.png
-       :align: center
-
-
-.. _adding_tetrahedrons_anchor:
-
-Adding tetrahedrons
-###################
-
-.. image:: ../images/addtetrahedron.png
-       :align: center
-
-In this dialog box specify the nodes which will form your tetrahedron by selecting them in the 3D viewer with pressed Shift button and click the **Apply** or **Apply and Close** button. Your tetrahedron will be created:
-
-.. image:: ../images/image70.jpg
-       :align: center
-
-
-.. _adding_hexahedrons_anchor:
-
-Adding hexahedrons
-##################
-
-.. image:: ../images/addhexahedron.png
-       :align: center
-
-In this dialog box specify the nodes which will form your hexahedron by selecting them in the 3D viewer with pressed Shift button and click
-the **Apply** or **Apply and Close** button. Your hexahedron will be created:
-
-.. image:: ../images/image71.jpg
-       :align: center
-
-.. _adding_octahedrons_anchor:
-
-Adding hexagonal prism
-######################
-
-In the Add Hexagonal Prism dialog box specify the nodes which will form your hexagonal prism by selecting them in the 3D viewer with pressed Shift button and click the **Apply** or **Apply and Close** button. Your hexagonal prism will be created:
-
-.. image:: ../images/image_octa12.png
-       :align: center
-
-
-.. _adding_polyhedrons_anchor:
-
-Adding polyhedrons
-##################
-
-.. image:: ../images/a-createpolyhedralvolume.png
-       :align: center
-
-There are two different ways to add polyhedral volumes. 
-
-If you select **Node** as **Elements Type** you will specify the nodes which will form the faces of your polyhedron by selecting the nodes in the 3D viewer with pressed Shift button and clicking the  **Add** button to add the face in the list of Faces by Nodes, which will form your polyhedron. Note, that it could be very useful to toggle Polyhedron Preview checkbox to see the results of your selection.
-The second way is somewhat simpler, however, there are cases when it does not provide you with the necessary level of precision. If you select **Face** as **Elements Type**, you will be able to select the faces which will form your polyhedron in the 3D viewer with pressed Shift button. If you've managed to obtain the necessary result, click the **Apply** or **Apply and Close** button. Your polyhedron will be created:
-
-.. image:: ../images/add_polyhedron.png
-       :align: center
-
diff --git a/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst b/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst
deleted file mode 100644 (file)
index 2bcba51..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-                                    
-.. _adding_quadratic_elements_page: 
-
-*************************
-Adding Quadratic Elements
-*************************  
-
-MESH module allows you to work with **Quadratic Elements**.
-
-Quadratic elements are defined by the same corner nodes as the corresponding linear ones, but in addition they have *midside* nodes located between the corner nodes on element sides.
-
-If a quadratic 2D element has an additional node at the element center, it is a bi-quadratic element (both TRIA7 and QUAD9 elements are supported). If a quadratic hexahedral element has 7 additional nodes: at the element center and at the center of each side, it is a tri-quadratic element (or HEXA27).
-
-The convention of nodal connectivity of elements used in SALOME is the MED library convention. You can consult the description of nodal connectivity of elements in the documentation on MED library or :ref:`here <connectivity_page>`.
-
-There are several ways to create quadratic elements in your mesh:
-
-* manually (this way is described below);
-* use :ref:`quadratic_mesh_anchor` hypothesis to generate a quadratic mesh on your geometry;
-* convert an existing linear mesh to a quadratic one (see :ref:`convert_to_from_quadratic_mesh_page`).
-
-**To add a quadratic element to your mesh:**
-
-#. Select your mesh in the Object Browser or in the 3D viewer.
-
-#. From the **Modification** menu choose the **Add** item and select one of the following:
-
-       .. image:: ../images/image152.png
-               :align: center
-
-.. note::
-       All dialogs for adding quadratic element to the mesh provide the possibility to automatically add an element to the specified group or to create the group anew using **Add to group** box, that allows choosing an existing group for the created node or element or giving the name to a new group. By default, the **Add to group** check box is switched off. If the user switches this check box on, the combo box listing all currently existing groups of the corresponding type becomes available. By default, no group is selected. In this case, when the user presses **Apply** or **Apply & Close** button, the warning message box informs the user about the necessity to input a new group name. The combo box lists groups of all the :ref:`three types <grouping_elements_page>`: both :ref:`standalone groups <standalone_group>`, :ref:`groups on filter <group_on_filter>`, and :ref:`groups on geometry <group_on_geom>`. If the user chooses a group on geometry or on filter, he is warned and proposed to convert this group to standalone. If the user rejects conversion operation, it is cancelled and a new node/element is not created!
-
-To create any **Quadratic Element** specify the nodes which will form your element by selecting them in the 3D viewer with pressed Shift button and click *Selection* button to the right of **Corner Nodes** label. Their numbers will appear in the dialog box as **Corner Nodes** (alternatively you can just input numbers in this field without selection; note that to use this way the mesh should be selected before invoking this operation). The edges formed by the corner nodes will appear in the table. To define the middle nodes for each edge, double-click on the respective field and input the number of the node (or pick the node in the viewer). For bi-quadratic and tri-quadratic elements, your also need to specify central nodes. As soon as all needed nodes are specified, a preview of a new quadratic element will be displayed in the 3D viewer. Then you will be able to click **Apply** or **Apply and Close** button to add the element to the mesh.
-
-.. image:: ../images/aqt.png
-       :align: center
-
-**Reverse** button reverses the element.
-
-
-
-
diff --git a/doc/salome/gui/SMESH/input/additional_hypo.rst b/doc/salome/gui/SMESH/input/additional_hypo.rst
deleted file mode 100644 (file)
index 6fa98f9..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-.. _additional_hypo_page: 
-
-*********************
-Additional Hypotheses
-*********************
-
-**Additional Hypotheses** can be applied as a supplement to the main hypotheses, introducing additional concepts to mesh creation.
-
-An **Additional Hypothesis** can be defined in the same way as any main hypothesis in :ref:`Create Mesh <create_mesh_anchor>` or :ref:`Create Sub-Mesh <constructing_submeshes_page>` dialog.
-
-The following additional hypothesis are available:
-* :ref:`propagation_anchor` and :ref:`propagofdistribution_anchor` hypotheses are useful for creation of quadrangle and hexahedral meshes.
-* :ref:`Viscous Layers <viscous_layers_anchor>` and :ref:`Viscous Layers 2D <viscous_layers_anchor>` hypotheses allow creation of layers of highly stretched elements near mesh boundary, which is beneficial for high quality viscous computations.
-* :ref:`quadratic_mesh_anchor` hypothesis allows generation of second order meshes. 
-* :ref:`quadrangle_preference_anchor` hypothesis enables generation of quadrangles.
-
-
-
-.. _propagation_anchor:
-
-Propagation of 1D Hypothesis on opposite edges
-##############################################
-
-**Propagation of 1D Hypothesis on opposite edges** allows to mesh
-opposite sides of a quadrangle face and other adjacent quadrangles,
-using the same hypothesis assigned to only one edge.
-Thus you define a sub-mesh on the edge where you define 1D meshing
-parameters and the **Propagation hypothesis**. These local meshing
-parameters will be propagated via opposite sides of quadrangles to the
-whole geometry, and this propagation stops at an edge with other local
-meshing parameters.
-
-This hypothesis can be taken into account by 
-:ref:`Wire Discretization <a1d_algos_anchor>` and 
-:ref:`Composite Side Discretization <a1d_algos_anchor>` algorithms.
-
-**See Also** a sample TUI Script of a :ref:`Propagation hypothesis <tui_propagation>` operation
-
-.. _propagofdistribution_anchor:
-
-Propagation of Node Distribution on Opposite Edges
-##################################################
-
-**Propagation of Node Distribution on Opposite Edges** allows to propagate
-distribution of nodes onto an opposite edge. If a local hypothesis and
-propagation are defined on an edge of a quadrangular face, the
-opposite edge will have the same number of nodes and the same
-relations between segment lengths, unless another hypothesis
-has been locally defined on the opposite edge.
-This hypothesis can be taken into account by 
-:ref:`Wire Discretization <a1d_algos_anchor>` and 
-:ref:`Composite Side Discretization <a1d_algos_anchor>` algorithms.
-
-**See Also** a sample TUI Script of a :ref:`Propagation hypothesis <tui_propagation>` operation
-
-.. _viscous_layers_anchor:
-
-Viscous Layers and Viscous Layers 2D
-####################################
-
-**Viscous Layers** and **Viscous Layers 2D** additional
-hypotheses can be used by several 3D algorithms, for example
-Hexahedron(i,j,k), or 2D algorithms, for example Triangle
-(MEFISTO), correspondingly. These hypotheses allow creation of layers
-of highly stretched elements, prisms in 3D and quadrilaterals in 2D,
-near mesh boundary, which is beneficial for high quality viscous
-computations.
-
-.. image:: ../images/viscous_layers_hyp.png
-       :align: center
-
-.. image:: ../images/viscous_layers_2d_hyp.png
-       :align: center
-   
-
-* **Name** - allows to define the name of the hypothesis.
-* **Total thickness** - gives the total thickness of element layers.
-* **Number of layers** - defines the number of element layers.
-* **Stretch factor** - defines the growth factor of element height from the mesh boundary inwards.
-* **Extrusion method** (available in 3D only) - defines how positions of nodes are found during prism construction and how the creation of distorted and intersecting prisms is prevented.
-
-  * **Surface offset + smooth** method extrudes nodes along the normal to the underlying geometrical surface. Smoothing of the internal surface of element layers is possible to avoid creation of invalid prisms.
-  * **Face offset** method extrudes nodes along the average normal of surrounding mesh faces to the intersection with a neighbor mesh face translated along its own normal by the thickness of layers. The thickness of layers can be limited to avoid creation of invalid prisms.
-  * **Node offset** method extrudes nodes along the average normal of surrounding mesh faces by the thickness of layers. The thickness of layers can be limited to avoid creation of invalid prisms. 
-
-       .. image:: ../images/viscous_layers_extrusion_method.png 
-               :align: center
-
-       .. centered::
-               Prisms created by the tree extrusion methods at the same other parameters
-
-* **Specified Faces/Edges are** - defines how the shapes specified by the next parameter are used.     
-* **Faces/Edges with/without layers** - defines geometrical faces or edges on which element layers either should be or should not be constructed, depending on the value of the previous parameter (**Specified Faces/Edges are**). Faces (or edges) can be selected either in the Object Browser or in the VTK Viewer. **Add** button becomes active as soon as a suitable sub-shape is selected.
-
-  .. note:: 
-       A mesh shown in the 3D Viewer can prevent selection of faces and edges, just hide the mesh to avoid this. If a face, which should be selected, is hidden by other faces, consider creating a group of faces to be selected in the Geometry module. To avoid a long wait when a geometry with many faces (or edges) is displayed, the number of faces (edges) shown at a time is limited by the value of :ref:`Sub-shapes preview chunk size <chunk_size_pref>` preference (in Preferences/Mesh/General tab).
-
-
-  If faces/edges without layers are specified, the element layers are
-  not constructed on geometrical faces shared by several solids in 3D
-  case and edges shared by several faces in 2D case. In other words,
-  in this mode the element layers can be constructed on boundary faces
-  and edges only, and are not constructed on internal faces and
-  edges. There is an exception to this rule: if a hypothesis is
-  assigned to a sub-mesh, the element layers can be constructed on
-  boundary faces/edges of the shape of this sub-mesh, at same time
-  possibly being internal faces/edges within the whole model.
-
-* **Create groups from layers** - activates creation of a group containing elements of the layers.
-
-  .. image:: ../images/viscous_layers_on_submesh.png 
-     :align: center
-
-  .. centered::
-       2D viscous layers constructed on boundary edges of a sub-mesh on a disk face.
-
-  If you use **several** hypotheses to define viscous layers on faces of
-  one solid, keep in mind the following. Each hypothesis defines a set
-  of faces with viscous layers (even if you specify faces without
-  layers). The sets of faces with viscous layers defined by several
-  hypotheses should not intersect, else the module won't add an
-  hypothesis that is incompatible with another one.
-  Also you can't define different number of layers on adjacent faces
-  of a solid.
-  This logic is also valid for the 2D hypothesis.
-
-
-
-.. image:: ../images/viscous_layers_mesh.png
-       :align: center
-
-.. centered::
-       A group containing viscous layer prisms.
-
-**See also** a sample TUI script of a :ref:`tui_viscous_layers`.
-
-
-.. _quadratic_mesh_anchor:
-
-Quadratic Mesh
-##############
-
-Quadratic Mesh hypothesis allows to build a quadratic mesh (in which
-links between element nodes are not straight but curved lines due to
-presence of an additional mid-side node).
-
-This 1D hypothesis can be taken into account by 
-:ref:`Wire Discretization <a1d_algos_anchor>` and 
-:ref:`Composite Side Discretization <a1d_algos_anchor>` algorithms. To create a quadratic mes assign this hypothesis at 
-:ref:`mesh construction <constructing_meshes_page>`.
-
-See :ref:`adding_quadratic_elements_page` for more information about quadratic meshes.
-
-
-.. _quadrangle_preference_anchor:
-
-Quadrangle Preference
-#####################
-
-This additional hypothesis can be used together with 2D triangulation algorithms.
-It allows 2D triangulation algorithms to build quadrangular meshes.
-
-Usage of this hypothesis with :ref:`Quadrangle: Mapping <quad_ijk_algo_page>` meshing algorithm is obsolete since introducing :ref:`Quadrangle parameters <hypo_quad_params_anchor>` hypothesis.
-Usage of this hypothesis with :ref:`Quadrangle: Mapping <quad_ijk_algo_page>` meshing algorithm corresponds to specifying *Quadrangle Preference* transition type of :ref:`Quadrangle parameters <hypo_quad_params_anchor>` hypothesis.
-
-.. note::
-       *Quadrangle Preference* transition type can be used only if the total quantity of segments on all sides of the face is even (divisible by 2), else *Standard* transition type is used.
diff --git a/doc/salome/gui/SMESH/input/area.rst b/doc/salome/gui/SMESH/input/area.rst
deleted file mode 100644 (file)
index 11bbddd..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-
-.. _area_page:
-
-****
-Area
-****
-
-**Area** mesh quality control is based on the algorithm of area calculation of mesh faces.
-
-*To apply the Area quality control to your mesh:*
-
-.. |img| image:: ../images/image35.png
-
-#. Display your mesh in the viewer.
-#. Choose **Controls > Face Controls > Area** or click         **"Area"** button |img|. 
-
-Your mesh will be displayed in the viewer with its faces colored
-according to the applied mesh quality control criterion:
-
-       .. image:: ../images/image5.jpg
-               :align: center
-
-
-**See Also** a sample TUI Script of an :ref:`tui_area` filter.  
-
diff --git a/doc/salome/gui/SMESH/input/aspect_ratio.rst b/doc/salome/gui/SMESH/input/aspect_ratio.rst
deleted file mode 100644 (file)
index 2199d5b..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-.. _aspect_ratio_page: 
-
-************
-Aspect Ratio
-************
-
-The **Aspect Ratio** quality criterion for mesh elements reveals the degree of conformity of a mesh element to the regular element of its type (with all edges having the same length).
-  
-
-* The **Aspect Ratio** of a **triangle** 2D element consisting of 3 nodes is calculated by the formula:
-
-       .. image:: ../images/formula4.png
-               :align: center
-
-* The **Aspect Ratio** of a **quadrangle** 2D element consisting of 4 nodes is calculated using The Verdict Geometric Quality Library available within VTK. The calculation formula is:
-
-       .. image:: ../images/formula5.png
-               :align: center
-
-*To apply the Aspect Ratio quality criterion to your mesh:*
-
-.. |img| image:: ../images/image37.png
-
-#. Display your mesh in the viewer.
-#. Choose **Controls > Face Controls > Aspect Ratio** or click *Aspect Ratio* button |img| in the toolbar.
-   
-   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
-
-       .. image:: ../images/image94.jpg
-               :align: center
-
-
-**See Also** a sample TUI Script of an :ref:`tui_aspect_ratio` filter.
diff --git a/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst b/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst
deleted file mode 100644 (file)
index dd1ac91..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-.. _aspect_ratio_3d_page:
-
-***************
-Aspect ratio 3D
-***************
-
-The **Aspect Ratio 3D** mesh quality criterion calculates the same parameter as the :ref:`aspect_ratio_page` criterion, but it is applied to 3D mesh elements: tetrahedrons, pentahedrons, hexahedrons, etc.
-
-* The **Aspect Ratio** of a **tetrahedron** 3D element defined by vertices {a,b,c,d } is calculated by the formula:
-
-       .. image:: ../images/formula1.png
-               :align: center
-
-* Other element types like polyhedron, pentahedron and hexahedron use the following formula:
-
-       .. image:: ../images/formula2.png
-               :align: center
-
-*To apply the Aspect Ratio 3D quality criterion to your mesh:*
-
-.. |img| image:: ../images/image144.png
-
-#. Display your mesh in the viewer.
-#. Choose **Controls > Volume Controls > Aspect Ratio 3D** or click *"Aspect Ratio 3D"* button |img| of the toolbar.
-   
-   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
-
-       .. image:: ../images/image86.jpg
-               :align: center
-
-
-**See Also** a sample TUI Script of a :ref:`tui_aspect_ratio_3d` filter.
diff --git a/doc/salome/gui/SMESH/input/bare_border_face.rst b/doc/salome/gui/SMESH/input/bare_border_face.rst
deleted file mode 100644 (file)
index fd50742..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-.. _bare_border_faces_page:
-*****************
-Bare border faces
-*****************
-
-This mesh quality control highlights the faces having the border not
-shared with other faces (free border) and missing an edge based on
-nodes of the free border. The faces with bare border are shown with a
-color different from the color of shared faces.
-
-.. image:: ../images/bare_border_faces_smpl.png
-       :align: center
-
-**See also** a sample :ref:`TUI Script <tui_bare_border_faces>` making a group of faces highlighted in the picture.
diff --git a/doc/salome/gui/SMESH/input/bare_border_volumes.rst b/doc/salome/gui/SMESH/input/bare_border_volumes.rst
deleted file mode 100644 (file)
index d58673d..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-.. _bare_border_volumes_page:
-
-*******************
-Bare border volumes
-*******************
-
-This mesh quality control highlights the volumes having the border not
-shared with other volumes (free border) and missing a face based on
-nodes of the free border. The volumes with bare border are shown with a
-color different from the color of shared volumes.
-
-.. image:: ../images/bare_border_volumes_smpl.png
-       :align: center
-
-**See also** a sample :ref:`TUI Script <tui_bare_border_volumes>` making a group of volumes highlighted in the picture.
-
diff --git a/doc/salome/gui/SMESH/input/basic_meshing_algos.rst b/doc/salome/gui/SMESH/input/basic_meshing_algos.rst
deleted file mode 100644 (file)
index d636b15..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-.. _basic_meshing_algos_page:
-
-************************
-Basic meshing algorithms
-************************
-
-The MESH module contains a set of meshing algorithms, which are        used for meshing entities (1D, 2D, 3D sub-shapes) composing geometrical objects.
-
-.. note:: Algorithms added to the module as plug-ins are described in documentation of the plug-ins (menu **Help / User's Guide / Mesh module / Plugins**).
-
-An algorithm represents either an implementation of a certain meshing technique or an interface to the whole meshing program generating elements of several dimensions.
-
-.. _a1d_algos_anchor:
-
-* For meshing of 1D entities (**edges**):
-
-  * **Wire Discretization** meshing algorithm - splits an edge into a number of mesh segments following an 1D hypothesis.
-  * **Composite Side Discretization** algorithm - allows to apply a 1D hypothesis to a whole side of a geometrical face even if it is composed of several edges provided that they form C1 curve in all faces of the main shape.
-
-* For meshing of 2D entities (**faces**):
-
-  * **Triangle: Mefisto** meshing algorithm - splits faces into triangular elements.
-  * :ref:`Quadrangle: Mapping <quad_ijk_algo_page>` meshing algorithm - splits faces into quadrangular elements.
-
-               .. image:: ../images/image123.gif
-                       :align: center 
-
-               .. centered::
-                       Example of a triangular 2D mesh
-
-               .. image:: ../images/image124.gif 
-                       :align: center 
-
-               .. centered::
-                       Example of a quadrangular 2D mesh
-
-* For meshing of 3D entities (**solid objects**):
-
-  * **Hexahedron (i,j,k)** meshing algorithm - solids are split into hexahedral elements thus forming a structured 3D mesh. The algorithm requires that 2D mesh generated on a solid could be considered as a mesh of a box, i.e. there should be eight nodes shared by three quadrangles and the rest nodes should be shared by four quadrangles.
-                       .. image:: ../images/hexa_ijk_mesh.png 
-                               :align: center 
-
-    .. centered::
-       Structured mesh generated by Hexahedron (i,j,k) on a solid bound by 16 faces
-
-  * :ref:`Body Fitting <cartesian_algo_page>` meshing algorithm - solids are split into hexahedral elements forming a Cartesian grid; polyhedra and other types of elements are generated where the geometrical boundary intersects Cartesian cells.
-
-  Some 3D meshing algorithms, such as Hexahedron(i,j,k) also can
-  generate 3D meshes from 2D meshes, working without geometrical objects.
-
-* There is also a number of more specific algorithms:
-
-   * :ref:`Extrusion 3D <prism_3d_algo_page>` - for meshing prismatic 3D shapes with hexahedra and prisms.
-   * :ref:`Quadrangle: Medial Axis Projection <quad_from_ma_algo_page>` - for quadrangle meshing of faces with sinuous borders and rings.
-   * **Polygon per Face** meshing algorithm - generates one mesh face (either a triangle, a quadrangle or a polygon) per a geometrical face using all nodes from the face boundary.
-   * **Polyhedron per Solid** meshing algorithm - generates one mesh volume (of a classical type or a polyhedron) per a geometrical solid using all faces of the solid boundary. It does not require that 2D mesh is generated on geometrical faces. It creates one mesh edge per geometrical edges and applies **Polygon per Face** to faces if they are not meshed by optional algorithms of lower dimensions.
-   * :ref:`Projection algorithms <projection_algos_page>` - for meshing by projection of another mesh.
-   * :ref:`Import algorithms <import_algos_page>` - for meshing by importing elements from another mesh.
-   * :ref:`Radial Prism <radial_prism_algo_page>` - for meshing 3D geometrical objects with cavities with hexahedra and prisms.
-   * :ref:`Radial Quadrangle 1D-2D <radial_quadrangle_1D2D_algo_page>` - for quadrangle meshing of disks and parts of disks.
-   * :ref:`Use Faces/Edges to be Created Manually <use_existing_page>` - to create a 1D or a 2D mesh in a python script.
-   * :ref:`Segments around Vertex <segments_around_vertex_algo_page>` - for defining the length of mesh segments around certain vertices.
-
-
-:ref:`constructing_meshes_page` page describes in detail how to apply meshing algorithms.
-
-**See Also** a sample TUI Script of a :ref:`tui_defining_meshing_algos` operation.  
-
-
-.. toctree::
-   :maxdepth: 2
-   :hidden:
-
-   quad_ijk_algo.rst
-   cartesian_algo.rst
-   prism_3d_algo.rst
-   quad_from_ma_algo.rst
-   projection_algos.rst
-   use_existing_algos.rst
-   radial_prism_algo.rst
-   radial_quadrangle_1D2D_algo.rst
-   define_mesh_by_script.rst
-   segments_around_vertex_algo.rst
-
diff --git a/doc/salome/gui/SMESH/input/borders_at_multi_connection.rst b/doc/salome/gui/SMESH/input/borders_at_multi_connection.rst
deleted file mode 100644 (file)
index b7dce97..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-.. _borders_at_multi_connection_page:
-
-***************************
-Borders at multi-connection
-***************************
-
-This mesh quality control highlights segments according to the number of elements, faces and volumes, to which the segment belongs.
-
-.. image:: ../images/image151.gif
-       :align: center
-
-In this picture the borders at multi-connection are displayed in blue.
-
-**See Also** a sample TUI Script of a :ref:`tui_borders_at_multiconnection` filter.
-
diff --git a/doc/salome/gui/SMESH/input/borders_at_multi_connection_2d.rst b/doc/salome/gui/SMESH/input/borders_at_multi_connection_2d.rst
deleted file mode 100644 (file)
index 7494952..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-.. _borders_at_multi_connection_2d_page:
-
-******************************
-Borders at multi-connection 2D
-******************************
-
-This mesh quality control highlights borders of faces (links between nodes) according to the number of faces, to which the link belongs.
-
-.. image:: ../images/image127.gif
-       :align: center
-
-**See Also** a sample TUI Script of a :ref:`tui_borders_at_multiconnection_2d` filter.
diff --git a/doc/salome/gui/SMESH/input/building_compounds.rst b/doc/salome/gui/SMESH/input/building_compounds.rst
deleted file mode 100644 (file)
index f7d41d1..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-.. _building_compounds_page:
-
-************************
-Building Compound Meshes
-************************
-
-Compound Mesh is a combination of several mesh objects (meshes, groups, submeshes). All elements and groups present in input meshes are present in the compound mesh. However, it does not use geometry or hypotheses of the initial mesh objects.
-The links between the input meshes and the compound mesh are not supported, consequently the modification of an input mesh does not lead to the update of the compound mesh.
-
-There are two modes of building a compound:
-
-* joining selected mesh objects into a new mesh.
-* appending selected mesh objects to an existing mesh.
-
-*To Build a compound mesh:*
-
-.. |img| image:: ../images/image161.png
-
-From the **Mesh** menu select **Build Compound** or click *"Build Compound Mesh"* button |img| in the toolbar. The following dialog box will appear:
-
-       .. image:: ../images/buildcompound.png
-               :align: center
-
-* **Result** group allows selecting a mode of operation
-
-  * Activating **Create new mesh named** enables typing the name of the resulting compound mesh.
-  * Activating **Append to mesh** enables selection of a mesh to append other selected objects to.
-   
-* **Meshes, sub-meshes, groups** allows selecting the meshes, sub-meshes and groups to be concatenated. They can be chosen in the Object Browser while holding *Ctrl* button.
-* **Processing identical groups** allows selecting the method of processing the namesake groups existing in the input meshes. They can be either 
-
-  * **United** - all elements of *Group1* of *Mesh_1* and *Group1* of *Mesh_2* become the elements of *Group1* of the *Compound_Mesh*, or
-  * **Renamed** - *Group1* of *Mesh_1* becomes *Group1_1* and *Group1* of *Mesh_2* becomes *Group1_2*.
-    
-  See :ref:`grouping_elements_page` for more information about groups.
-* **Create groups from input objects** check-box permits to automatically create groups corresponding to every initial mesh.
-
-       .. image:: ../images/buildcompound_groups.png
-               :align: center
-
-       .. centered:: 
-               Groups created from input meshes 'Box_large' and 'Box_small'
-
-* You can choose to additionally :ref:`Merge coincident nodes <merging_nodes_page>` :ref:`and elements <merging_elements_page>` in the compound mesh, in which case it is possible to define the **Tolerance** for this operation.
-
-       .. image:: ../images/image160.gif
-               :align: center
-
-       .. centered::
-               Example of a compound of two meshed cubes
-
-**See Also** a sample script of :ref:`tui_building_compound`.
diff --git a/doc/salome/gui/SMESH/input/cartesian_algo.rst b/doc/salome/gui/SMESH/input/cartesian_algo.rst
deleted file mode 100644 (file)
index 76b150e..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-.. _cartesian_algo_page:
-
-*********************************
-Body Fitting 3D meshing algorithm
-*********************************
-
-Body Fitting algorithm generates hexahedrons of a Cartesian grid in
-the internal part of geometry and polyhedrons and other types of
-elements at the intersection of Cartesian cells with the geometrical
-boundary.
-
-.. image:: ../images/cartesian3D_sphere.png 
-       :align: center
-
-.. centered::
-       A sphere meshed by Body Fitting algorithm
-
-.. note:: The algorithm creates only 3D elements. To add 2D elements use :ref:`Generate boundary elements <make_2dmesh_from_3d_page>` operation.
-
-The meshing algorithm is as follows.
-
-#. Lines of a Cartesian structured grid defined by :ref:`Body Fitting Parameters <cartesian_hyp_anchor>` hypothesis are intersected with the geometry boundary, thus nodes lying on the boundary are found. This step also allows finding out for each node of the Cartesian grid if it is inside or outside the geometry. 
-#. For each cell of the grid, check how many of its nodes are outside of the geometry boundary. Depending on a result of this check
-
-   * skip a cell, if all its nodes are outside 
-   * skip a cell, if it is too small according to **Size Threshold** parameter
-   * add a hexahedron in the mesh, if all nodes are inside 
-   * add a polyhedron or another cell type in the mesh, if some nodes are inside and some outside.  
-
-To apply this algorithm when you define your mesh, select **Body Fitting** in the list of 3D algorithms and add **Body Fitting  Parameters** hypothesis. The following dialog will appear:
-
-.. _cartesian_hyp_anchor:
-
-Body Fitting Parameters hypothesis
-##################################
-
-.. image:: ../images/cartesian3D_hyp.png 
-       :align: center
-
-.. centered::
-       Body Fitting Parameters hypothesis dialog
-
-This dialog allows to define
-
-* **Name** of the algorithm. 
-* Minimal size of a cell truncated by the geometry boundary. If the size of a truncated grid cell is **Threshold** times less than a initial cell size, then a mesh element is not created. 
-* **Implement Edges** check-box activates incorporation of geometrical edges in the mesh.
-  
-       .. image:: ../images/cartesian_implement_edge.png 
-               :align: center
-
-       .. centered::
-               Implement Edges switched off to the left and on to the right
-
-* **Create Faces** check-box activates creation on mesh faces.
-* **Consider Shared and Internal Faces** check-box activates treatment of faces shared by solids and internal. By default the algorithm considers only outer boundaries of the geometry.
-* **Apply Threshold to Shared / Internal Faces** check-box activates application of **Threshold** to cells cut by shared and internal faces, that can cause appearance of holes inside the mesh.
-* **Definition mode** allows choosing how Cartesian structured grid is defined. Location of nodes along each grid axis is defined individually:
-    
-       * You can specify the **Coordinates** of grid nodes. **Insert** button inserts a node at **Step** distance (negative or positive) from the selected node. **Delete** button removes the selected node. Double click on a coordinate in the list enables its edition. **Note** that node coordinates are measured along directions of axes that can differ from the directions of the Global Coordinate System.
-       * You can define the **Spacing** of a grid as an algebraic formula *f(t)* where *t* is a position along a grid axis normalized at [0.0,1.0]. *f(t)* must be non-negative at 0. <= *t* <= 1. The whole extent of geometry can be divided into ranges with their own spacing formulas to apply; a t varies between 0.0 and 1.0 within each **Range**. **Insert** button divides a selected range into two. **Delete** button adds the selected sub-range to the previous one. Double click on a range in the list enables edition of its right boundary. Double click on a function in the list enables its edition.
-
-.. note:: The actual grid spacing can slightly differ from the defined one. This is done for the best fitting of polyhedrons and for a better mesh quality on the interval boundaries. For example, if a constant **Spacing** is defined along an axis, the actual grid will fill the shape's dimension L along this axis with round number of equal cells: Spacing_actual = L / round( L / Spacing_defined ).
-  
-* **Fixed Point** group allows defining an exact location of a grid node in the direction defined by spacing. The following cases are possible:
-   
-       * If all three directions are defined by spacing, there will be a mesh node at the **Fixed Point**. 
-       * If two directions are defined by spacing, there will be at least a link between mesh nodes passing through the **Fixed Point**. 
-       * If only one direction is defined by spacing, there will be at least an element facet passing through the **Fixed Point**.
-       * If no directions are defined by spacing, **Fixed Point** is disabled.
-       
-* **Directions of Axes** group allows setting the directions of grid axes.
-   
-       * If **Orthogonal Axes** check-box is activated the axes remain orthogonal during their modification. 
-       * Selection buttons enable snapping corresponding axes to direction of a geometrical edge selected in the Object Browser. Edge direction is defined by coordinates of its end points.
-       * **Optimal Axes** button runs an algorithm that tries to set the axes to maximize the number of generated hexahedra.
-       * **Reset** button returns the axes in a default position parallel to the axes of the Global Coordinate System. 
-  
-  
-
-**See Also** a sample TUI Script of a :ref:`tui_cartesian_algo`.
-
diff --git a/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst b/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst
deleted file mode 100644 (file)
index 61f979c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-.. _changing_orientation_of_elements_page:
-
-********************************
-Changing orientation of elements
-********************************
-
-Orientation of an element is changed by changing the :doc:`order <connectivity>` of its nodes.
-
-*To change orientation of elements:*
-
-.. |img| image:: ../images/image79.png
-
-#. Select a mesh (and display it in the 3D Viewer if you are going to pick elements by mouse).
-#. In the **Modification** menu select the **Orientation** item or click *Orientation* button |img| in the toolbar.
-
-   The following dialog box will appear:
-
-       .. image:: ../images/orientaation1.png
-               :align: center
-    
-       * Select type of elements to reorient: **Face** or **Volume**.
-       * **The main list** shall contain the elements which will be reoriented. You can click on an element in the 3D viewer and it will be highlighted. After that click the **Add** button and the ID of this element will be added to the list. To remove a selected element or elements from the list click the **Remove** button. The **Sort** button allows to sort the list of elements IDs. The **Set filter** button allows to apply a definite :ref:`filter <filtering_elements>` to the selection of elements.
-       * **Apply to all** radio button allows to modify the orientation of all elements of the selected mesh.
-       * *Select from** set of fields allows to choose a sub-mesh or an existing group whose elements can be added to the list.
-  
-#. Click the **Apply** or **Apply and Close** button to confirm the operation.
-
-**See Also** a sample TUI Script of a :ref:`tui_orientation` operation.
-
diff --git a/doc/salome/gui/SMESH/input/clipping.rst b/doc/salome/gui/SMESH/input/clipping.rst
deleted file mode 100644 (file)
index 6cafd29..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-.. _clipping_page:
-
-********
-Clipping
-********
-
-**Clipping** allows creating cross-section views (clipping planes) of your mesh.
-It is available as a sub-item in the context menu of an active mesh in 3D Viewer.
-To create a clipping plane, click on the **New** button in the dialog and choose how it is defined: by **Absolute** or **Relative** coordinates.
-
-* **Absolute Coordinates**
-
-  .. image:: ../images/Clipping_Absolute.png
-       :align: center
-
-  * **Base point** - allows defining the coordinates of the base point for the clipping plane.
-     * **Reset** - returns the base point to the coordinate origin.
-  * **Direction** - allows defining the orientation of the clipping plane.
-     * **Invert** - allows selecting, which part of the object will be removed and which will remain after clipping.
-    
-* **Relative mode**  
-
-  .. image:: ../images/Clipping_Relative.png
-       :align: center
-
-  * **Orientation** ( ||X-Y, ||X-Z or ||Y-Z).
-  * **Distance** between the opposite extremities of the boundary box of selected objects, if it is set to 0.5 the boundary box is split in two halves.
-  * **Rotation** (in angle degrees) **around X** (Y to Z) and **around Y** (X to Z) (depending on the chosen Orientation)
-
-       .. image:: ../images/before_clipping_preview.png 
-               :align: center
-
-        .. centered:: 
-           The preview plane and the cut object
-
-The other parameters are available in both modes : 
-
-* **OpenGL clipping** check-box allows choosing OpenGL native clipping, which clips the whole presentation. If it is unchecked, the clipping is done on the dataset i.e. only the visibility of separate mesh cells is changed (see the examples).
-* The List contains **Meshes, sub-meshes and groups** to which the cross-section will be applied.
-* **Select all** check-box allows to selecting and deselecting all available objects at once.
-* **Show preview** check-box shows the clipping plane in the **3D Viewer**.
-* **Auto Apply** check-box shows button is on, you can preview the cross-section in the **3D Viewer**.
-
-It is also possible to interact with the clipping plane directly in 3D view using the mouse. 
-
-To get an object clipped, click **Apply**.
-
-**Examples:**
-
-       .. image:: ../images/dataset_clipping.png
-               :align: center
-
-        .. centered:: 
-           The cross-section using dataset
-
-       .. image:: ../images/opengl_clipping.png
-               :align: center
-
-        .. centered:: 
-           The OpenGL cross-section
diff --git a/doc/salome/gui/SMESH/input/colors_size.rst b/doc/salome/gui/SMESH/input/colors_size.rst
deleted file mode 100644 (file)
index 56a9ab1..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-.. _colors_size_page:
-
-**********
-Properties
-**********
-
-.. image:: ../images/colors_size.png
-       :align: center                                                 
-
-Using this dialog you can customize different properties of the mesh visualization parameters.
-
-The GUI elements in the "Properties" dialog box are grouped according to the entity types of mesh data. If some data entities are not present in the mesh object, the corresponding GUI elements are not shown.
-
-*  **Nodes**:
-       * **Color** - color of nodes.
-       * **Type** and **Scale** - these options allow changing the nodes representation (see :ref:`point_marker_page` page for more details).
-* **Edges / wireframe**:
-       * **Color** - color of element borders in wireframe mode.
-       * **Width** - width of lines (edges and borders of elements in wireframe mode).
-* **Faces**:
-       * **Front** - surface color of face elements (seen in shading mode).
-       * **Back** - backside surface color of face elements. Use the slider to select this color generated on the base of the **Face** color by changing its brightness and saturation. 
-* **Volumes**:
-       * **Normal** - surface color of normal volume elements (seen in shading mode).
-       * **Reversed** - surface color of volume elements. Use the slider to select this color generated on the base of the **Normal** color by changing its brightness and saturation. 
-* **Outlines**:
-       * **Color** - color of element borders in shading mode.
-       * **Width** - width of outlines (borders of elements in shading mode).
-* **0D elements**:
-       * **Color** - color of 0D elements.
-       * **Size** - size of 0D elements.
-* **Balls**:
-       * **Color** - color of discrete ball elements.
-       * **Size** - size of discrete ball elements.
-       * **Scale** - scale factor of discrete ball elements.
-* **Orientation vectors**:
-       * **Color** - color of orientation vectors.
-       * **Scale** - size of orientation vectors.
-       * **3D vectors** - allows to choose between 2D planar and 3D vectors.
-* **Shrink coef.** - relative space of elements compared to gaps between them in shrink mode.
-
-.. toctree::
-   :hidden:
-
-   point_marker.rst
diff --git a/doc/salome/gui/SMESH/input/connectivity.rst b/doc/salome/gui/SMESH/input/connectivity.rst
deleted file mode 100644 (file)
index c487d71..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-.. _connectivity_page:
-
-******************************
-Nodal connectivity of elements
-******************************
-
-The following images show order of nodes in correctly defined elements.
-
-+------------------------------------------------------------------------------+
-| Edge (segment): linear and quadratic                                         |
-|     .. image:: ../images/connectivity_edge.png                               |
-|              :align: center                                                 |
-+------------------------------------------------------------------------------+
-| Triangle: linear, quadratic and bi-quadratic                                 |
-|     .. image:: ../images/connectivity_tria.png                               |
-|              :align: center                                                 |
-+------------------------------------------------------------------------------+
-| Quadrangle: linear, quadratic and bi-quadratic                               |
-|     .. image:: ../images/connectivity_quad.png                               |
-|              :align: center                                                 |
-+------------------------------------------------------------------------------+
-| Polygon: linear and quadratic                                                |
-|     .. image:: ../images/connectivity_polygon.png                            |
-|              :align: center                                                 |
-+------------------------------------------------------------------------------+
-| Tetrahedron: linear and quadratic                                            |
-|     .. image:: ../images/connectivity_tetra.png                              |
-|              :align: center                                                 |
-+------------------------------------------------------------------------------+
-| Hexahedron: linear, quadratic and tri-quadratic                              |
-|      .. image:: ../images/connectivity_hexa.png                             |
-|              :align: center                                                 |
-+------------------------------------------------------------------------------+
-| Pentahedron: linear and quadratic                                            |
-|      .. image:: ../images/connectivity_penta.png                            |
-|              :align: center                                                 |
-+------------------------------------------------------------------------------+
-| Pyramid: linear and quadratic                                                |
-|      .. image:: ../images/connectivity_pyramid.png                          |
-|              :align: center                                                 |
-+------------------------------------------------------------------------------+
-| Hexagonal prism                                                              |
-|      .. image:: ../images/connectivity_hex_prism.png                        |
-|              :align: center                                                 |
-+------------------------------------------------------------------------------+
-| Polyhedron is defined by                                                     |
-|      * a sequence of nodes defining all facets                              |
-|      * a sequence of number of nodes per facet                              |
-|                                                                              |
-|      **Nodes**:                                                              |
-|      Node1_of_Facet1, Node2_of_Facet1, ..., NodeN_of_Facet1,                 |
-|      Node1_of_Facet2, Node2_of_Facet2, ..., NodeN_of_Facet2,                 |
-|      Node1_of_FacetM, Node2_of_FacetM, ..., NodeN_of_FacetM                  |
-|                                                                              |
-|      **Quantity** of nodes per facet:                                        |
-|      NbNodes_in_Facet1, NbNodes_in_Facet2, ..., NbNodes_in_FacetM            |
-|                                                                              |
-|      For example the polyhedron shown in the image below is defined by nodes |
-|      [ 1,2,3, 1,4,5,2, 2,5,6,3, 3,6,4,1, 4,7,9,5, 5,9,8,6, 6,8,7,4, 7,8,9 ]  |
-|      and quantities [ 3, 4, 4, 4, 4, 4, 4, 3 ]                               |
-|                                                                              |
-|      .. image:: ../images/connectivity_polyhedron.png                       |
-|              :align: center                                                 |
-|                                                                              |
-|      Order of nodes of a facet must assure outward direction of its normal.  |
-+------------------------------------------------------------------------------+
-
diff --git a/doc/salome/gui/SMESH/input/constructing_meshes.rst b/doc/salome/gui/SMESH/input/constructing_meshes.rst
deleted file mode 100644 (file)
index 05c4c0d..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-.. _constructing_meshes_page:
-
-*******************
-Constructing meshes
-*******************
-
-To create a mesh on geometry, it is necessary to create a mesh object by choosing
-
-* a geometrical shape produced in the Geometry module (*main shape*);
-* *meshing parameters*, including 
-
-  * :ref:`meshing algorithms <basic_meshing_algos_page>` and
-  * :ref:`hypotheses <about_hypo_page>` specifying constraints to be taken into account by the chosen meshing algorithms.
-
-Then you can launch mesh generation by invoking :ref:`Compute <compute_anchor>` command.
-The generated mesh will be automatically shown in the Viewer. You can
-switch off automatic visualization or limit mesh size until which it is
-automatically shown in :ref:`mesh_preferences_page` (*Automatic update* entry).
-
-Read more about meshing parameters:
-
-.. toctree::
-       :maxdepth: 1
-
-       basic_meshing_algos.rst
-       about_hypo.rst
-
-Mesh generation on the geometry is performed in the bottom-up
-flow: nodes on vertices are created first, then edges are divided into
-segments using nodes on vertices; the nodes of segments are then
-used to mesh faces; then the nodes of faces are used to mesh
-solids. This automatically assures the conformity of the mesh.
-
-It is required to choose a meshing algorithm for every dimension of
-sub-shapes up to the highest dimension to be generated. Note
-that some algorithms generate elements of several dimensions, and
-others of only one. It is not necessary to define meshing
-parameters for all dimensions at once; you can start from 1D
-meshing parameters only, compute the 1D mesh, then define 2D meshing
-parameters and compute the 2D mesh (note that 1D mesh will not be
-re-computed).
-
-An algorithm of a certain dimension chosen at mesh creation is applied
-to discretize every sub-shape of this dimension. It is possible to
-specify a different algorithm or hypothesis to be applied to one or
-a group of sub-shapes by creating a :ref:`sub-mesh <constructing_submeshes_page>`.
-You can specify no algorithms at all at mesh object
-creation and specify the meshing parameters on sub-meshes only; then
-only the sub-shapes, for which an algorithm and a hypothesis (if any)
-have been defined will be discretized.
-
-Construction of a mesh on a geometry includes at least two (:ref:`mesh creation <create_mesh_anchor>` and :ref:`computing <compute_anchor>`) of the following steps:
-
-* :ref:`create_mesh_anchor`, where you can specify meshing parameters to apply to all sub-shapes of the main shape.
-* :ref:`Creation of sub-meshes <constructing_submeshes_page>`, (optional) where you can specify meshing parameters to apply to the selected sub-shapes.
-* :ref:`evaluate_anchor` (optional) can be used to know an approximate number of elements before their actual generation.
-* :ref:`preview_anchor` (optional) can be used to generate mesh of only lower dimension(s) in order to visually estimate it before full mesh generation, which can be much longer.
-* :ref:`submesh_order_anchor` (optional) can be useful if there are concurrent sub-meshes defined.
-* :ref:`compute_anchor` uses defined meshing parameters to generate mesh elements.
-* :ref:`edit_anchor` (optional) can be used to :ref:`modify <modifying_meshes_page>` the mesh of a lower dimension before :ref:`computing <compute_anchor>` elements of an upper dimension.
-
-
-.. _create_mesh_anchor:
-
-Creation of a mesh object
-#########################
-
-To construct a mesh:
-
-.. |img| image:: ../images/image32.png
-.. |sel| image:: ../images/image120.png
-.. |add| image:: ../images/image121.png
-.. |edt| image:: ../images/image122.png
-.. |cmp| image:: ../images/image28.png
-.. |prv| image:: ../images/mesh_precompute.png
-
-#. Select a geometrical object for meshing.
-#. In the **Mesh** menu select **Create Mesh** or click *"Create Mesh"* button |img| in the toolbar.
-
-   The following dialog box will appear: 
-
-       .. image:: ../images/createmesh-inv.png
-               :align: center
-  
-#. To filter off irrelevant meshing algorithms, you can select **Mesh Type** in the corresponding list from **Any, Hexahedral, Tetrahedral, Triangular** and **Quadrilateral** (there can be less items for the geometry of lower dimensions). Selection of a mesh type hides all meshing algorithms that cannot generate elements of this type.
-
-#. Apply :ref:`meshing algorithms <basic_meshing_algos_page>` and :ref:`hypotheses <about_hypo_page>` which will be used to compute this mesh.
-
-   "Create mesh" dialog box contains several tab pages titled **3D**, **2D**, **1D** and **0D**. The title of each page reflects the dimension of the sub-shapes the algorithms listed on this page affect and the maximal dimension of elements the algorithms generate. For example, **3D** page lists the algorithms that affect 3D sub-shapes (solids) and generate 3D mesh elements (tetrahedra, hexahedra etc.)
-
-   As soon as you have selected an algorithm, you can create a hypothesis (or select an already created one). A set of accessible hypotheses includes only the hypotheses that can be used by the selected algorithm.
-
-   .. note::
-      * Some page(s) can be disabled if the geometrical object does not include shapes (sub-shapes) of the corresponding dimension(s). For example, if the input object is a geometrical face, **3D** page is disabled.
-      * Some algorithms affect the geometry of several dimensions, i.e. 1D+2D or 1D+2D+3D. If such an algorithm is selected, the dialog pages related to the corresponding lower dimensions are disabled.
-      * **0D** page refers to 0D geometry (vertices) rather than to 0D elements. Mesh module does not provide algorithms that produce 0D elements. Currently **0D** page provides only one algorithm "Segments around vertex" that allows specifying the required size of mesh edges about the selected vertex (or vertices).
-
-   For example, you need to mesh a 3D object.
-
-   First, you can change a default name of your mesh in the **Name** box. Then check that the selected geometrical object indicated in **Geometry** field, is what you wish to mesh; if not, select the correct object in the Object Browser. Click "Select" button |sel| near **Geometry** field if the name of the object has not yet appeared in **Geometry** field.
-
-   Now you can define 3D Algorithm and 3D Hypotheses, which will be applied to discretize the solids of your geometrical object using 3D elements. Click the *"Add Hypothesis"* button |add| to create  and add a hypothesis.
-
-   Click the *"Plus"* button to enable adding more additional hypotheses.
-
-   Click the *"Edit Hypothesis"* button |edt| to change the values for the current hypothesis.
-
-   Most 2D and 3D algorithms can work without hypotheses using default meshing parameters. Some algorithms do not require any hypotheses. After selection of an algorithm "Hypothesis" field of the dialog can contain:
-    
-   * *\<Default\>* if the algorithm can work using default parameters.
-   * *\<None\>* if the algorithm requires a hypothesis defining its parameters.
-   * If the algorithm does not use hypotheses, this field is grayed.
-    
-   After selection of an algorithm **Add. Hypothesis** field can contain:
-    
-   * *\<None\>* if the algorithm can be tuned using an additional hypothesis.
-   * If the algorithm does not use additional hypotheses, this field is grayed.
-    
-
-   Proceed in the same way with 2D and 1D Algorithms and Hypotheses that will be used to mesh faces and edges of your geometry. (Note that any object has edges, even if their existence is not apparent, for example, a sphere has 4 edges). Note that the choice of hypotheses and lower dimension algorithms depends on the higher dimension algorithm.
-
-   If you wish you can select other algorithms and/or hypotheses for meshing some sub-shapes of your CAD model by :ref:`constructing_submeshes_page`.
-
-   Some algorithms generate mesh of several dimensions, while others produce mesh of only one dimension. In the latter case there must be one Algorithm and zero or several Hypotheses for each dimension of your object, otherwise you will not get any mesh at all. Of course, if you wish to mesh a face, which is a 2D object, you do not need to define a 3D Algorithm and Hypotheses.
-
-   In the **Object Browser** the structure of the new mesh is displayed as follows:
-
-       .. image:: ../images/image88.jpg
-               :align: center
-
-   It contains: 
-    
-   * a mesh name (*Mesh_mechanic*);
-   * a reference to the geometrical object on the basis of which the mesh has been constructed (*mechanic*); 
-   * **Applied hypotheses** folder containing the references to the hypotheses chosen at the construction of the mesh;
-   * **Applied algorithms** folder containing the references to the algorithms chosen at the construction of the mesh. 
-   * **SubMeshes on Face** folder containing the sub-meshes defined on geometrical faces. There also can be folders for sub-meshes on vertices, edges, wires, shells, solids and compounds.
-   * **Groups of Faces** folder containing the groups of mesh faces. There also can be folders for groups of nodes, edges, volumes 0D elements and balls.
-
-
-   There is an alternative way to assign Algorithms and Hypotheses by clicking **Assign a set of hypotheses** button and selecting among pre-defined sets of algorithms and hypotheses. In addition to the built-in sets of hypotheses, it is possible to create custom sets by editing CustomMeshers.xml file located in the home directory. CustomMeshers.xml file must describe sets of hypotheses in the same way as ${SMESH_ROOT_DIR}/share/salome/resources/smesh/StdMeshers.xml file does (sets of hypotheses are enclosed between \<hypotheses-set-group\> tags). For example:
-       ::
-
-               <?xml version='1.0' encoding='us-ascii'?>
-               <!DOCTYPE meshers PUBLIC "" "desktop.dtd">
-               <meshers>
-               <hypotheses-set-group>
-                       <hypotheses-set name="My favorite hypotheses"
-                               hypos="AutomaticLength"
-                               algos="CompositeSegment_1D, Quadrangle_2D, GHS3D_3D"/>
-               </hypotheses-set-group>
-               </meshers>
-
-   If the file contents are incorrect, there can be an error at activation of Mesh module: *"fatal parsing error: error triggered by consumer in line ..."*
-
-       .. image:: ../images/hypo_sets.png
-               :align: center
-
-   .. centered::
-      List of sets of hypotheses. Tag *[custom]* is automatically added to the sets defined by the user.
-
-   .. note::
-      * The list of sets of hypotheses can be shorter than in the above image depending on the geometry dimension.
-  
-
-Consider trying a sample script for construction of a mesh from our :ref:`TUI Scripts <tui_creating_meshes_page>` section.
-
-.. _evaluate_anchor:
-
-Evaluating mesh size
-####################
-
-After the mesh object is created and all hypotheses are assigned and before :ref:`Compute <compute_anchor>` operation, it is possible to calculate the eventual mesh size. For this, select the mesh in the **Object Browser** and from the **Mesh** menu select **Evaluate**.
-The result of evaluation will be displayed in the following information box: 
-
-       .. image:: ../images/mesh_evaluation_succeed.png
-               :align: center
-
-.. _preview_anchor:
-
-Previewing the mesh
-###################
-
-Before :ref:`the mesh computation <compute_anchor>`, it is also possible to see the mesh preview. This operation allows to incrementally compute the mesh, dimension by dimension, and to discard an unsatisfactory mesh.
-
-For this, select the mesh in the Object Browser. From the **Mesh** menu select **Preview** or click "Preview" button |prv| in the toolbar or activate "Preview" item from the pop-up menu.
-
-Select **1D mesh** or **2D mesh** preview mode in the Preview dialog. 
-
-.. image:: ../images/preview_mesh_1D.png 
-       :align: center
-
-.. centered::
-       1D mesh preview shows nodes computed on geometry edges
-
-
-.. image:: ../images/preview_mesh_2D.png 
-       :align: center
-
-.. centered::
-       2D mesh preview shows edge mesh elements, computed on geometry faces
-
-
-**Compute** button computes the whole mesh.
-
-When the Preview dialog is closed, the question about the storage of temporarily created mesh elements appears:
-
-.. image:: ../images/preview_tmp_data.png
-       :align: center
-
-These elements can be kept in the mesh.
-
-
-.. _submesh_order_anchor:
-
-Changing sub-mesh priority
-##########################
-
-If the mesh contains concurrent :ref:`sub-meshes <constructing_submeshes_page>`, it is possible to change their :ref:`default priority <submesh_priority>`. Changing priority works in two ways:
-
-* For sub-meshes with assigned algorithms of same dimension generating mesh of *several dimensions*, it sets the order in which the sub-meshes are computed.
-* For the rest sub-meshes, it sets the order in which the sub-meshes are checked when looking for  meshing parameters to apply to a sub-shape. Examples below present this way. To impose the order in which sub-meshes with uni-dimensional algorithms are computed, invoke **Compute Sub-mesh** command on sub-meshes in a desired order.
-
-
-*To change sub-mesh priority:*
-
-Choose **Change sub-mesh priority** from the **Mesh** menu or a pop-up menu. The opened dialog shows a list of sub-meshes in the order of their priority. 
-
-There is an example of sub-mesh order modifications taking a Mesh created on a Box shape. The main Mesh object:
-
-* *1D* **Wire discretisation** with **Number of Segments** = 20
-* *2D* **Triangle: Mefisto** with Hypothesis **Max Element Area**
-  
-
-The first sub-mesh **Submesh_1** created on **Face_1** is:
-
-* *1D* **Wire discretisation** with **Number of Segments** = 4
-* *2D* **Triangle: Mefisto** with Hypothesis **MaxElementArea** = 1200
-
-The second sub-mesh **Submesh_2** created on **Face_2** is:
-
-* *1D* **Wire discretisation** with **Number of Segments** = 8
-* *2D* **Triangle: Mefisto** with Hypothesis **MaxElementArea** = 1200
-
-
-And the last sub-mesh **Submesh_3** created on **Face_3** is:
-
-* *1D* **Wire discretisation** with **Number of Segments** = 12
-* *2D* **Triangle: Mefisto** with Hypothesis **MaxElementArea** = 1200
-
-
-The sub-meshes become concurrent if they share sub-shapes that can be meshed with different algorithms (or different hypotheses). In the example, we have three sub-meshes with concurrent algorithms, because they have different hypotheses.
-
-The first mesh computation is made with:
-
-.. image:: ../images/mesh_order_123.png
-       :align: center
-
-.. centered::
-       Mesh order SubMesh_1, SubMesh_2, SubMesh_3
-
-
-.. image:: ../images/mesh_order_123_res.png
-       :align: center
-
-.. centered::
-       Result mesh with order SubMesh_1, SubMesh_2, SubMesh_3
-
-The next mesh computation is made with:
-
-.. image:: ../images/mesh_order_213.png
-       :align: center
-
-.. centered::
-       Mesh order SubMesh_2, SubMesh_1, SubMesh_3
-
-.. image:: ../images/mesh_order_213_res.png
-       :align: center
-
-.. centered::
-       Result mesh with order SubMesh_2, SubMesh_1, SubMesh_3
-
-And the last mesh computation is made with:
-
-.. image:: ../images/mesh_order_321.png
-       :align: center
-
-.. centered::
-       Mesh order SubMesh_3, SubMesh_2, SubMesh_1
-       
-
-.. image:: ../images/mesh_order_321_res.png
-       :align: center
-
-.. centered::
-       Result mesh with order SubMesh_3, SubMesh_2, SubMesh_1
-
-As we can see, each mesh computation has a different number of result
-elements and a different mesh discretization on the shared edges (the edges 
-that are shared between **Face_1**, **Face_2** and **Face_3**)
-
-Additionally, sub-mesh priority (the order of applied algorithms) can
-be modified not only in a separate dialog box, but also in
-the **Preview**. This helps to preview different mesh results,
-modifying the order of sub-meshes. 
-
-.. image:: ../images/mesh_order_preview.png
-       :align: center
-
-.. centered::
-       Preview with sub-mesh priority list box
-
-If there are no concurrent sub-meshes under the Mesh object, the user
-will see the following information.
-
-.. image:: ../images/mesh_order_no_concurrent.png
-       :align: center
-
-.. centered::
-       No concurrent submeshes detected
-
-
-.. _compute_anchor:
-
-Computing the mesh
-##################
-
-It is equally possible to skip  :ref:`Evaluation <evaluate_anchor>`
-and :ref:`Preview <preview_anchor>` and to **Compute** the mesh after
-the hypotheses are assigned. For this, select your mesh in
-the Object Browser. From the **Mesh** menu or the context menu
-select **Compute** or click *"Compute"* button |cmp| of the toolbar.
-
-After the mesh computation finishes, the Mesh Computation information
-box appears. If you close this box and click "Compute" button again,
-without previously changing meshing parameters, the mesh will NOT be
-re-computed and the Mesh Computation information box will be shown
-with the same contents. (To fully re-compute the mesh, invoke 
-:ref:`clear_mesh_anchor` command before). 
-
-.. _meshing_result_anchor:
-
-If the mesh computation has been a success, the box shows information on the number of entities of different types in the mesh.
-
-.. image:: ../images/meshcomputationsucceed.png
-       :align: center
-
-.. _meshing_failed_anchor:
-
-If the mesh computation has failed, the information about the cause of the failure is provided in **Errors** table.
-
-.. image:: ../images/meshcomputationfail.png
-       :align: center
-
-After you select an error in **Errors** table, **Show Sub-shape** button allows
-visualizing in magenta the geometrical entity meshing of which failed
-(Name of this entity or its ID and type is shown in *Sub-shape* column).
-
-.. image:: ../images/failed_computation.png 
-       :align: center
-
-.. centered::
-       3D algorithm failed to compute mesh on a box shown using **Show Sub-shape** button
-
-**Publish Sub-shape** button publishes the sub-shape, whose meshing
-has failed, in the Geometry component as a child of the main shape, which
-allows analyzing the problematic geometry and creating a sub-mesh on it in
-order to locally tune the hypotheses.
-
-If the failure is caused by an invalid input mesh and the algorithm has
-found which mesh entities are bad, **Show bad Mesh** 
-button appears in the dialog. Clicked, it shows the bad mesh entities in
-the Viewer in magenta. Sometimes the shown mesh entities are too small
-or/and hidden by other mesh elements. They can be seen after
-switching the mesh to Wireframe visualization mode or switching off
-the visualization of faces and volumes (if any).
-
-**Bad Mesh to Group** button creates groups of bad mesh entities to facilitate their analysis.
-
-.. image:: ../images/show_bad_mesh.png
-       :align: center
-
-Edges bounding a hole in the surface are shown in magenta using **Show bad Mesh** button
-
-.. note::
-       Mesh Computation Information box does not appear if you set :ref:`Mesh computation/Show a computation result notification <show_comp_result_pref>` preference to the "Never" value. This option gives the possibility to control mesh computation reporting. There are the following possibilities: always show the information box, show only if an error occurs or never. By default, the information box is always shown after mesh computation operation.
-
-.. _edit_anchor:
-
-Editing the mesh
-################
-
-It is possible to :ref:`edit the mesh <modifying_meshes_page>` of a 
-lower dimension before generation of the mesh of a higher dimension.
-
-For example you can generate a 2D mesh, modify it using e.g. :ref:`Pattern mapping <pattern_mapping_page>`, and then generate a 3D mesh basing on the modified 2D mesh. The workflow is as follows:
-
-* Define 1D and 2D meshing algorithms.
-* Compute the mesh. 2D mesh is generated.
-* Apply :ref:`Pattern mapping <pattern_mapping_page>`.
-* Define 3D meshing algorithms without modifying 1D and 2D algorithms and hypotheses.
-* Compute the mesh. 3D mesh is generated basing on a modified 2D mesh.
-
-.. note::
-   Nodes and elements added :ref:`manually <adding_nodes_and_elements_page>` cannot be used in this workflow because the manually created entities are not attached to any geometry and thus (usually) cannot be found by the mesher paving a geometry.
-
-**See Also** a sample TUI Script demonstrates the possibility of :ref:`tui_editing_while_meshing`.
-
diff --git a/doc/salome/gui/SMESH/input/constructing_submeshes.rst b/doc/salome/gui/SMESH/input/constructing_submeshes.rst
deleted file mode 100644 (file)
index a2a6dd2..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-.. _constructing_submeshes_page: 
-
-***********************
-Constructing sub-meshes
-***********************
-
-.. contents:: `Table of contents`
-
-What the sub-mesh is for
-########################
-
-By purpose, the sub-mesh is an object used to assign to a sub-shape
-different meshing parameters than those assigned to the main shape.
-
-Structurally, the sub-mesh is a mesh on a certain sub-shape, or a group of
-sub-shapes, possibly generated using different meshing algorithms
-and/or hypotheses than those used to generate the mesh on other
-sub-shapes. Elements generated on a sub-shape can be retrieved without
-explicit creation of a sub-mesh by creating a *Group on Geometry* using
-:ref:`Create Groups from Geometry <create_groups_from_geometry_page>` dialog.
-
-Creation of a sub-mesh allows to control individually meshing of a
-certain sub-shape, thus to get a locally coarser or finer mesh, to get
-elements of different types in the same mesh, etc.
-
-A sub-mesh can be meshed individually. To achieve this, select a
-sub-mesh and either invoke **Compute Sub-mesh** vai the contextual
-menu in the Object Browser or invoke **Mesh > Compute** menu.
-
-.. _submesh_shape_section: 
-
-How to get a sub-shape for sub-mesh construction
-################################################
-
-A sub-shape to create a sub-mesh on should be retrieved from the main shape
-in one of the following ways: 
-
-* In Geometry module, via **New Entity > Explode** menu.
-* In Geometry module, by creation of a group (**New Entity > Group > Create Group** menu). 
-* In Mesh module, by :ref:`selecting a mesh element <subshape_by_mesh_elem>` generated on a sub-shape of interest. This way is accessible if the mesh is already computed. 
-* In Mesh module, by clicking **Publish Sub-shape** button in a dialog showing :ref:`meshing errors <meshing_failed_anchor>`. 
-
-
-.. _submesh_priority: 
-
-How hypotheses are selected among sub-meshes
-############################################
-
-Internally, definition of meshing parameters to apply for
-discretization of a certain sub-shape, for example an edge of a
-compound of solids, starts from searching an algorithm, 1D as for the
-edge. The following sub-shapes are sequentially checked for presence
-of a sub-mesh where 1D algorithm is assigned:
-
-* the **edge** itself
-* **groups of edges** containing the edge, if any
-* **wires** sharing the edge
-* **faces** sharing the edge
-* **groups of faces** sharing the edge, if any
-* **shells** sharing the edge
-* **solids** sharing the edge
-* **groups of solids** sharing the edge, if any
-* the **main shape**
-
-(This sequence of sub-shapes defines the **priority** of sub-meshes. Thus more
-local, i.e. assigned to sub-shape of lower dimension, algorithms and
-hypotheses have higher priority during the search of hypotheses to
-apply.)
-
-As soon as a 1D algorithm is found, the search stops and the same
-sequence of sub-shapes is checked to find the main and additional 1D
-hypotheses, which can be taken into account by the found 1D algorithm. 
-
-The multi-dimensional algorithms have a higher priority than
-uni-dimensional ones if they are assigned to sub-meshes of the
-same priority.
-
-If meshing parameters are defined on sub-meshes of the same priority,
-for example, different 1D hypotheses are assigned to two faces sharing
-an edge, the hypothesis assigned to a sub-shape with a lower ID will
-be used for meshing. You can :ref:`change <submesh_order_anchor>` mutual
-priority of such concurrent sub-meshes. 
-
-.. _submesh_definition: 
-
-How to construct a sub-mesh
-###########################
-
-Construction of a sub-mesh consists of:
-
-* Selecting a mesh which will encapsulate the sub-mesh.
-* Selecting a sub-shape for meshing.
-* Selecting a :ref:`meshing algorithm <basic_meshing_algos_page>` which will be used for discretization of this sub-shape.
-* Creating or selecting one or several :ref:`hypotheses <about_hypo_page>`.
-
-
-*To construct a sub-mesh:*
-
-.. |img| image:: ../images/image33.gif
-
-From the **Mesh** menu select **Create Sub-mesh** or click *"Create Sum-mesh"* button |img| in the toolbar.
-
-The following dialog box will appear:
-
-       .. image:: ../images/createmesh-inv2.png
-               :align: center
-
-It allows to define the **Name**, the parent **Mesh** and the **Geometry** (e.g. a face if the parent mesh has been built on box) of the sub-mesh. You can define meshing algorithms and hypotheses in the same way as in :ref:`Create mesh <constructing_meshes_page>` dialog. 
-
-Later you can change the applied hypotheses or their parameters in :ref:`Edit mesh/sub-mesh <editing_meshes_page>` dialog. Mesh entities generated using changed hypotheses are automatically removed.
-
-.. _subshape_by_mesh_elem:
-
-If the parent mesh is already computed, then you can define the **Geometry** by picking mesh elements computed on a sub-shape of interest in the 3D Viewer, i.e. you do not have to extract this sub-shape in Geometry module beforehand. To start element selection, press *Selection* button to the right of **Geometry** label. If this button is already down, then click it to release and then click it again. The following pop-up menu allowing to choose a way of geometry definition will appear.
-
-.. image:: ../images/choose_geom_selection_way.png
-       :align: center
-
-**Direct geometry selection** enables selecting the sub-shape in the Object Browser.
-**Find geometry by mesh element selection** activates the following dialog.
-
-.. image:: ../images/find_geom_by_mesh_elem.png
-       :align: center
-
-In this dialog, **Element Type** defines a kind of element to pick in the Viewer. Instead of picking an element in the Viewer, you can type its ID in **Element ID** field. **Geometry name** field allows defining a name of the sub-shape, with which the sub-shape will appear in the Object Browser (if not yet there).
-
-
-.. _submesh_tree:
-
-Sub-mesh in the Object Browser
-##############################
-
-In the Object Browser the structure of the new sub-mesh will be displayed as follows:
-
-       .. image:: ../images/image10.jpg
-               :align: center
-
-It contains:
-
-* a sub-mesh name (*SubMeshFace1*)
-* a reference to the geometrical object on the basis of which the sub-mesh has been constructed (*Cylindrical Face_1*);
-* *Applied hypotheses* folder containing references to hypotheses assigned to the sub-mesh;
-* *Applied algorithms* folder containing references to algorithms assigned to the sub-mesh.
-
-
-**See Also** a sample TUI Script of a :ref:`tui_construction_submesh` operation.
-
diff --git a/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst b/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst
deleted file mode 100644 (file)
index cd2a3e8..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-.. _convert_to_from_quadratic_mesh_page:
-
-****************************************
-Convert to/from Quadratic Mesh
-****************************************
-
-This functionality allows transforming linear meshes (or sub-meshes) to quadratic and vice versa.
-
-.. Note::
-       that conversion of a sub-mesh most probably will produce a non-conformal mesh. Elements on the boundary between quadratic and linear sub-meshes become (or remain) quadratic.
-
-See :ref:`adding_quadratic_elements_page` for more information about quadratic meshes.
-
-*To produce a conversion:*
-
-.. |img| image:: ../images/image154.png
-
-#. Select a mesh or a sub-mesh in the Object Browser or in the Viewer.
-#. From the Modification menu or from the contextual menu in the Object Browser choose **Convert to/from Quadratic Mesh** item, or click *"Convert to/from quadratic"* button |img| in the toolbar.
-
-   The following dialog box will appear:
-
-       .. image:: ../images/convert.png
-               :align: center
-
-#. In this dialog box specify:
-
-   * If it is necessary to convert a linear mesh to quadratic or a quadratic mesh to linear. **Convert to bi-quadratic** creates some types of quadratic elements with additional central nodes: TRIA7, QUAD9 and HEXA27 elements instead of TRIA6, QUAD8, and HEXA20 elements respectively.
-   * If it is necessary to place **medium nodes** of the quadratic mesh **on the geometry** (meshed shape). This option is relevant for conversion to quadratic provided that the mesh is based on a geometry (not imported from file).
-
-               .. image:: ../images/image156.gif
-                       :align: center
-
-               .. centered::
-                       Linear mesh (coarse mesh on a torus)
-
-
-               .. image:: ../images/image155.gif
-                       :align: center
-
-               .. centered::
-                       Quadratic mesh
-
-
-#. Click the **Apply** or **Apply and Close** button.
-
-
-**See Also** a sample TUI Script of a :ref:`tui_quadratic` operation.
-
-
diff --git a/doc/salome/gui/SMESH/input/copy_mesh.rst b/doc/salome/gui/SMESH/input/copy_mesh.rst
deleted file mode 100644 (file)
index 1d1b975..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-.. _copy_mesh_page:
-
-*********
-Copy Mesh
-*********
-
-A mesh can be created by copying a part of or the whole other mesh. There are two modes of the operation:
-
-* copy mesh elements only;
-* copy mesh definition to another geometry. This mode can be used only if the source mesh is based on geometry. It is supposed that the new geometry is a modified geometry of the source mesh.
-
-*To make a copy of a mesh:*
-
-.. |img| image:: ../images/copy_mesh_icon.png
-
-From the contextual menu in the Object Browser of from the **Mesh** menu select **Copy Mesh** or click *"Copy Mesh"* button |img| in the toolbar.
-
-The following dialog box will appear:
-
-.. image:: ../images/copy_mesh_dlg.png
-       :align: center
-
-
-In the dialog:
-
-* select the mode of the operation.
-* specify the part of mesh to copy:
-
-  * **Select whole mesh, sub-mesh or group** by mouse activating this checkbox; or
-  * choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
-  * input the **Source Element IDs** directly in this field. The selected elements will be highlighted in the viewer; or
-  * apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`selection_filter_library_page` page.
-
-* specify the **New Mesh Name**;
-* select the **New Geometry**;
-* specify the conditions of copying:
-
-  * activate **Generate groups** check-box to copy the groups of the source mesh to the newly created mesh. In the mode of copying to new geometry, standalone groups are copied only if **Copy Mesh Elements** is activated.
-  * activate **Reuse hypotheses** check-box to use hypotheses applied to the source mesh in the new mesh. Hypotheses having parameters defined as sub-shapes will be copied independently of this check-box state.
-  * activate **Copy Mesh Element** to copy mesh elements of sub-shapes that are not modified.
-
-* Click **Apply** or **Apply and Close** button to confirm the operation.
-
----------------------------------------------------
-Limitations of copying the mesh to the new geometry
----------------------------------------------------
-
-It can happen that a sub-shape used to define a sub-mesh, group or hypotheses is not found in the new geometry. In this case a new object depending on the not found sub-shape is marked with red color in the Object Browser in order to allow identifying such objects and to fix them, either by modifying their definition or by removing. If a depending object is a group on geometry, a standalone group is created instead. You can't transform it to a group on geometry, it can only be removed and re-created anew.
-
-Empty standalone groups are not constructed.
-
-**See Also** a sample script of :ref:`tui_copy_mesh`.
-
diff --git a/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst b/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst
deleted file mode 100644 (file)
index 70f3a58..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-.. _create_groups_from_geometry_page:
-
-***************************
-Create Groups from Geometry
-***************************
-
-This operation allows creating groups on geometry on all selected shapes. Only the main shape of the mesh and its sub-shapes can be selected.
-
-The type of each new group is defined automatically by the nature of the **Geometry**.
-The group names will be the same as the names of geometrical objects.
-
-To use this operation, select in the **Mesh** menu or in the contextual menu in the Object browser **Create Groups from Geometry** item.
-
-.. image:: ../images/create_groups_from_geometry.png
-       :align: center
-
-In this dialog **Elements** group contains a list of shapes, on which  groups of elements will be created; **Nodes** group contains a list of shapes, on which groups of nodes will be created.
-
-
-**See Also** a sample TUI Script of a  :ref:`tui_create_group_on_geometry` operation.
diff --git a/doc/salome/gui/SMESH/input/creating_groups.rst b/doc/salome/gui/SMESH/input/creating_groups.rst
deleted file mode 100644 (file)
index a66df15..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-.. _creating_groups_page:
-
-***************
-Creating groups
-***************
-
-In MESH you can create a group of elements of a certain type. The main way to create a group, is to
-select in the **Mesh** menu **Create Group** item (also available in the context menu of the mesh).
-To create a group you should define the following:
-
-* **Mesh** - the mesh whose elements will form your group. You can select your mesh in the Object Browser or in the 3D viewer.
-* **Elements Type** - set of radio buttons allows to select the type of elements which will form your group:
-       * **Nodes**
-       * **0D Element**
-       * **Ball**
-       * **Edges**
-       * **Faces**
-       * **Volumes**
-* **Name** field allows to enter the name of your new group.
-* **Color** - allows to assign to the group a certain color. The chosen color is used to display the elements of the group. Activation of **Auto Color** item in mesh context menu switches on a random choice of a color for a new group.
-
-Mesh module distinguishes between the three Group types:
-**Standalone Group**, **Group on Geometry** and **Group on Filter**.
-
-
-.. _standalone_group:
-
-"Standalone Group"
-##################
-
-**Standalone Group** contains a list of mesh elements, which you can define in
-the following ways:
-
-* By adding all entities of the chosen type existing in the mesh. For this, turn on the **Select All** check-box. In this mode all controls, which allow selecting the entities, are disabled.
-* By choosing entities manually with the mouse in the 3D Viewer. For this, turn on the **Enable manual edition** check box. You can click on an element in the 3D viewer and it will be highlighted. After that click the **Add** button and the ID of this element will be added to the list. The **Set filter** button allows to define the filter for selection of the elements for your group. See more about filters on the :ref:`selection_filter_library_page` page.
-* By adding entities from either a sub-mesh or another group. For this, turn on the **Enable manual edition** check box. **Select from** fields group allows to select a sub-mesh or a group of the appropriate type and to **Add** their elements to the group.
-
-In the **manual edition** mode you can
-
-* click the **Remove** button to remove the selected items from the list.
-* click the **Sort List** button to sort the list of IDs of mesh elements.
-
-.. image:: ../images/creategroup.png
-       :align: center
-
-For example, to create a new group containing all faces of an existing group and some other faces selected in the viewer:
-
-* Select the **Face** type of entities and input the name of the new group.
-* Check the **Group** checkbox in **Select From** group.
-* Select the existing group of faces in the object browser or in the viewer.
-* Click **Add** in **Content** group. **Id Elements** list will be filled with IDs of faces belonging to the selected group.
-* Select other faces in the viewer.
-* Click **Add** in **Content** group.
-* Click **Apply** button to create the new group.
-
-
-.. note:: The new group does not have references to the source group. It contains only the list of face IDs. So if the source group is changed, the new one is not updated accordingly.
-
-.. image:: ../images/image130.gif
-       :align: center
-
-.. centered::
-       Brown cells belong to a group defined manually
-
-**See Also** a sample TUI Script of a :ref:`tui_create_standalone_group` operation.
-
-
-.. _group_on_geom:
-
-"Group on Geometry"
-###################
-
-.. |sel| image:: ../images/image120.png
-
-To create a group on geometry check **Group on geometry** in the **Group** **type** field. The group on geometry contains the elements of a certain type generated on the selected geometrical object. Group contents are dynamically updated if the mesh is modified. The group on geometry can be created only if the mesh is based on geometry.
-
-To define a group, click the *Selection* button |sel| and choose
-
-* *Direct geometry selection* to select a shape in the Object Browser or in the Viewer;
-* *Find geometry by mesh element selection* to activate a dialog which retrieves a shape by the selected element generated on this shape.
-
-.. note::
-       This choice is available only if the mesh elements are already generated.
-
-.. image:: ../images/a-creategroup.png
-       :align: center
-
-After confirmation of the operation a new group of mesh elements will be created.
-
-.. image:: ../images/image132.gif
-       :align: center
-
-.. centered::
-   Cells belonging to a certain geometrical face are selected in green
-
-**See Also** a sample TUI Script of a  :ref:`tui_create_group_on_geometry` operation.
-
-
-.. _group_on_filter:
-
-"Group on Filter"
-#################
-
-To create a group on filter check **Group on filter** in the **Group type** field.
-The group on filter contains the elements of a certain type satisfying the defined filter.
-Group contents are dynamically updated if the mesh is modified.
-
-To define a group, click the **Set filter** button and define criteria of the filter in the opened dialog. After the operation is confirmed, a new group of mesh elements will be created. See more about filters on the :ref:`selection_filter_library_page` page.
-
-       .. image:: ../images/creategroup_on_filter.png
-               :align: center
-
-**See Also** a sample TUI Script of a :ref:`tui_create_group_on_filter` operation.
diff --git a/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst b/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst
deleted file mode 100644 (file)
index d0a482e..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-.. _cut_mesh_by_plane_page:
-
-*********************************
-Cut a tetrahedron mesh by a plane
-*********************************
-
-MeshCut works only with MED files and produces MED files, and is a standalone program. It can be used either directly from a command shell outside SALOME, or with a GUI interface in SMESH, provided in a python plugin that needs to be installed in your SALOME application.
-
-MeshCut allows to cut a mesh constituted of linear tetrahedrons by a plane.
-The tetrahedrons intersected by the plane are cut and replaced by elements of various types, (tetrahedron, pyramid, pentahedron).
-
-
-.. _meshcut_standalone:
-
-Using MeshCut as a standalone program, outside SALOME
-#####################################################
-
-MeshCut is a standalone program, reading and producing med files.                
-
-Syntax::
-
-       MeshCut input.med output.med resuMeshName aboveGroup belowGroup nx ny nz px py pz T
-
-where:
-
-* **input.med** = name of the original mesh file in med format
-* **output.med** = name of the result mesh file in med format 
-* **resuMeshName** = name of the result mesh                    
-* **aboveGroup** = name of the group of volumes above the cut plane 
-* **belowGroups** = name of the group of volumes below the cut plane 
-* **nx ny nz** = vector normal to the cut plane                       
-* **px py pz** = a point of the cut plane                              
-* **T** = 0 < T < 1 : vertices of a tetrahedron are considered as belonging to the cut plane if their distance from the plane is inferior to L*T, where L is the mean edge size of the tetrahedron   
-
-
-.. _meshcut_plugin:
-
-Using MeshCut inside SALOME
-###########################
-
-When the MeshCut plugin is installed, it can be found in the Mesh menu, sub-menu SMESH_plugins.
-If the plugin is not installed, the file meshcut_plugin.py is in SMESH installation in  subdirectory 
-*bin/salome/meshcut_plugin.py*.
-
-If there are already plugins defined in a smesh_plugins.py file, this file should be added at the end. If not, copied as 
-*${HOME}/Plugins/smesh_plugins.py* or *${APPLI}/Plugins/smesh_plugins.py* or in *${PLUGINPATH}* directory.
-From the Mesh menu, sub-menu SMESH_plugins, choose **"MeshCut"** item
-The following dialog box will appear:
-
-.. image:: ../images/meshcut_plugin.png 
-       :align: center
-
-.. centered::
-       MeshCut Plugin dialog box
-
-See above for the meaning of the parameters. 
-
diff --git a/doc/salome/gui/SMESH/input/cutting_quadrangles.rst b/doc/salome/gui/SMESH/input/cutting_quadrangles.rst
deleted file mode 100644 (file)
index 21c3311..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-.. _cutting_quadrangles_page:
-
-*******************
-Cutting quadrangles
-*******************
-
-This operation allows cutting one or several quadrangle elements into two or four triangles.
-
-*To cut quadrangles:*
-
-.. |img| image:: ../images/image82.png
-
-#. Select a mesh (and display it in the 3D Viewer if you are going to pick elements by mouse).
-#. In the **Modification** menu select the **Cutting of quadrangles** item or click *"Cutting of quadrangles"* button |img| in the toolbar.
-
-   The following dialog box will appear:
-
-   .. image:: ../images/a-cuttingofquadrangles.png
-      :align: center
-
-
-   * The main list contains the list of quadrangles selected for cutting. You can click on a quadrangle in the 3D viewer and it will be highlighted (lock Shift keyboard button to select several quadrangles): 
-       * Click **Add** button and the ID of this quadrangle will be added to the list. 
-       * To remove a selected element or elements from the list click **Remove** button. 
-       * **Sort list** button allows sorting the list of IDs. 
-       * **Filter** button allows applying a definite :ref:`filter <filtering_elements>` to the selection of quadrangles.
-   * **Apply to all** check box allows cutting all quadrangles of the selected mesh.
-   * **Preview** provides a preview of cutting in the viewer. It is disabled for **Cut into 4 triangles** as this cutting way implies no ambiguity.
-   * **Criterion** defines the way of cutting:
-       * **Cut into 4 triangles** allows cutting a quadrangle into four triangles by inserting a new node at the center of the quadrangle. The other options allow cutting a quadrangle into two triangles by connecting the nodes of a diagonal.
-       * **Use diagonal 1-3** and **Use diagonal 2-4** allow specifying the opposite corners, which will be connected to form two new triangles.
-       * **Use numeric functor** allows selecting in the field below a quality metric, which will be optimized when choosing a diagonal for cutting a quadrangle: 
-               * **Minimum diagonal** cuts by the shortest diagonal.
-               * **Aspect Ratio** cuts by the diagonal splitting the quadrangle into triangles with :ref:`Aspect Ratio <aspect_ratio_page>` closer to 1
-               * **Minimum Angle** cuts by the diagonal splitting the quadrangle into triangles with :ref:`Minimum Angle <minimum_angle_page>` closer to 60 degrees.
-               * **Skew** cuts by the diagonal splitting the quadrangle into triangles with :ref:`Skew <skew_page>` closer to 0.0 degrees.
-   * **Select from** allows choosing a sub-mesh or an existing group, whose quadrangle elements then can be added to the main list.
-
-#. Click the **Apply** or **Apply and Close** button to confirm the operation.
-
-.. image:: ../images/image52.jpg 
-       :align: center
-
-.. centered::
-       The chosen quadrangular element
-
-|
-
-.. image:: ../images/image51.jpg 
-       :align: center
-
-.. centered::
-       Two resulting triangular elements
-
-**See Also** a sample TUI Script of a :ref:`tui_cutting_quadrangles` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/define_mesh_by_script.rst b/doc/salome/gui/SMESH/input/define_mesh_by_script.rst
deleted file mode 100644 (file)
index 43d7f89..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-.. _use_existing_page:
-
-**************************************
-Use Edges/Faces to be Created Manually
-**************************************
-
-The algorithms **Use Edges to be Created Manually** and **Use Faces to be Created Manually** allow  creating a 1D or a 2D mesh in a python script (using *AddNode, AddEdge* and *AddFace* commands) and then using such sub-meshes in the construction of a 2D or a 3D mesh. 
-
-For example, you want to use standard algorithms to generate 1D and 3D
-meshes and to create 2D mesh by your python code. For this, you
-
-#. create a mesh object, assign a 1D algorithm,
-#. invoke **Compute** command, which computes a 1D mesh,
-#. assign **Use Faces to be Created Manually** and a 3D algorithm,
-#. run your python code, which creates a 2D mesh,
-#. invoke **Compute** command, which computes a 3D mesh.
-
-  .. warning::
-     * **Use Edges to be Created Manually** and **Use Faces to be Created Manually** algorithms should be assigned *before* mesh generation by the Python code.
-     * Nodes and elements created in your script must be assigned to geometry entities by calling *SetMeshElementOnShape*, *SetNodeOnVertex*, *SetNodeOnEdge* etc. in order to be used by an algorithm of upper dimension.
-
-Consider trying a sample script demonstrating the usage of :ref:`Use Faces to be Created Manually <tui_use_existing_faces>` algorithm for construction of a 2D mesh using Python commands.
-
-.. figure:: ../images/use_existing_face_sample_mesh.png
-   :align: center
-
-**See also** :ref:`the sample script <tui_use_existing_faces>` creating the mesh shown in the image in a Shrink mode.
-  
diff --git a/doc/salome/gui/SMESH/input/deleting_groups.rst b/doc/salome/gui/SMESH/input/deleting_groups.rst
deleted file mode 100644 (file)
index 8b2038c..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-.. _deleting_groups_page:
-
-****************************
-Deleting groups with content
-****************************
-
-To delete groups and their content, in the menu select **Modification -> Remove -> Delete groups with Contents** and select one or several groups you wish to delete in the 3D viewer or in the Object Browser.
-
-The selected groups will be listed in **Delete groups with contents** menu. 
-Then click **Apply and Close** button to remove the selected groups and close the menu or **Apply** button to remove them and proceed with the selection.
-
-       .. image:: ../images/deletegroups.png
-               :align: center
-
-.. note:: This operation removes groups **with their elements**. To delete a group and leave its elements intact, right-click on the group in the Object Browser and select **Delete** in the pop-up menu or select the group and choose **Edit -> Delete** in the main menu.
-
-
diff --git a/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst b/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst
deleted file mode 100644 (file)
index 71302bb..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-.. _diagonal_inversion_of_elements_page:
-
-***********************************
-Diagonal inversion of two triangles
-***********************************
-
-In MESH you can inverse the diagonal (edge) of a pseudo-quadrangle
-formed by two neighboring triangles with one common edge.
-
-*To inverse the diagonal:*
-
-#. From the **Modification** menu choose the **Diagonal inversion** item or click *"Diagonal Inversion"* |img| button in the toolbar.
-
-.. |img| image:: ../images/image70.png
-
-The following dialog box shall appear:
-
-       .. image:: ../images/diagonalinversion.png
-                 :align: center
-
-#. Enter IDs of nodes forming the required edge in the **Edge** field (the node IDs must be separated by dashes) or select this edge in the 3D viewer.
-#. Click the **Apply** or **Apply and Close** button.
-
-       .. image:: ../images/image38.jpg 
-                 :align: center
-
-       .. centered::
-               The selected edge
-
-       .. image:: ../images/image36.jpg 
-                 :align: center
-
-       .. centered::
-               The inverted edge
-
-**See Also** a sample TUI Script of a :ref:`tui_diagonal_inversion` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/display_entity.rst b/doc/salome/gui/SMESH/input/display_entity.rst
deleted file mode 100644 (file)
index 09eb03a..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-.. _display_entity_page:
-
-**************
-Display Entity
-**************
-
-In this submenu you can choose to display only volumes, faces or edges or combine them.
-
-.. image:: ../images/image56.jpg 
-       :align: center
-
-.. centered::
-       Only Faces
-
-.. image:: ../images/image58.png 
-       :align: center
-
-.. centered::
-       Only Edges
-
-.. image:: ../images/image59.png 
-       :align: center
-
-.. centered::
-       Edges + Faces
-
-If the mesh contains a lot of elements, select **Choose...** item, 
-
-.. image:: ../images/display_entity_choose_item.png 
-       :align: center
-
-.. centered::
-       Item to call 'Display Entity' dialog box
-
-and **Display Entity** dialog box will provide a way to display only some entities at the first display instead of displaying all entities, which can take a long time.
-
-.. image:: ../images/display_entity_dlg.png
-       :align: center
-
-.. centered::
-        'Display Entity' dialog allows to select entities before displaying
-
-This menu item is available from the context menu in both Object browser and 3D viewer.
diff --git a/doc/salome/gui/SMESH/input/display_mode.rst b/doc/salome/gui/SMESH/input/display_mode.rst
deleted file mode 100644 (file)
index 8414ebf..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-.. _display_mode_page:
-
-************
-Display Mode
-************
-
-By default your objects are represented as defined in :ref:`mesh_tab_preferences`.
-However, right-clicking on the mesh in the **Object Browser**, and selecting **Display Mode**, you can display your mesh as:
-
-.. image:: ../images/image53.gif 
-       :align: center
-
-
-.. centered::
-       Wireframe
-
-.. image:: ../images/image37.jpg 
-       :align: center
-
-
-.. centered::
-       Shading
-
-.. image:: ../images/image56.gif 
-  :align: center
-
-
-.. centered::
-       Nodes
-
-**Wireframe** can combine with **Nodes** and **Shading**.
-
-**Shading** and **Wireframe** modes can combine with **Shrink**, however **Nodes** can't.
-
-.. image:: ../images/image55.gif 
-  :align: center
-
-
-.. centered::
-       Shrink
-
diff --git a/doc/salome/gui/SMESH/input/double_elements_control.rst b/doc/salome/gui/SMESH/input/double_elements_control.rst
deleted file mode 100644 (file)
index 1286bcc..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-.. _double_elements_page: 
-
-********************************************
-Double edge, Double faces and Double volumes
-********************************************
-
-These mesh quality controls highlight the mesh elements basing on the same set of nodes.
-
-.. image:: ../images/double_faces.png
-       :align: center
-
-In this picture some faces are coincident after copying all elements with translation with subsequent Merge of nodes.
-
-**See also** a sample TUI Script of a :ref:`filter_double_elements` filters.
diff --git a/doc/salome/gui/SMESH/input/double_nodes_control.rst b/doc/salome/gui/SMESH/input/double_nodes_control.rst
deleted file mode 100644 (file)
index 816f29d..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-.. _double_nodes_control_page:
-
-************
-Double nodes
-************
-
-This mesh quality control highlights the nodes which are coincident with other nodes (within a given tolerance). Distance at which two nodes are considered coincident is defined by :ref:`Quality Controls/Double nodes tolerance <dbl_nodes_tol_pref>` preference.
-
-.. image:: ../images/double_nodes.png
-       :align: center
-
-.. centered::
-   Some nodes are coincident after copying all elements with translation.
-
-**See also**: A sample TUI Script of a :ref:`tui_double_nodes_control` filter.
diff --git a/doc/salome/gui/SMESH/input/double_nodes_page.rst b/doc/salome/gui/SMESH/input/double_nodes_page.rst
deleted file mode 100644 (file)
index 104efb1..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-.. _double_nodes_page:
-
-*******************************
-Duplicate Nodes or/and Elements
-*******************************
-
-This operation allows duplicating mesh nodes or/and elements, which can be useful to emulate a crack in the model.
-
-Duplication consists in creation of mesh elements "equal" to existing ones.
-
-*To duplicate nodes or/and elements:*
-
-.. |img| image:: ../images/duplicate_nodes.png 
-
-#. From the **Modification** menu choose **Transformation** -> **Duplicate Nodes or/and Elements** item or click *"Duplicate Nodes or/and Elements"* button |img| in the toolbar.
-#. Check in the dialog box one of four radio buttons corresponding to the type of duplication operation you would like to perform.
-#. Fill the other fields available in the dialog box (depending on the chosen operation mode).
-#. Click the **Apply** or **Apply and Close** button to perform the operation of duplication. 
-
-"Duplicate Nodes or/and Elements" dialog has four working modes:
-
-       * :ref:`mode_without_elem_anchor`
-       * :ref:`mode_with_elem_anchor`
-       * :ref:`mode_elem_only_anchor`
-       * :ref:`mode_group_boundary_anchor`
-
-
-
-.. _mode_without_elem_anchor:
-
-Duplicate nodes only
-####################
-   
-       .. image:: ../images/duplicate01.png 
-               :align: center
-
-
-Parameters to be defined in this mode:
-
-       * **Group of nodes to duplicate** (*mandatory*): these nodes will be duplicated.
-       * **Group of elements to replace nodes with new ones** (*optional*): the new nodes will replace the duplicated nodes within these elements. **Generate** button tries to automatically find such elements and creates a group of them. This button becomes active as soon as **Group of nodes to duplicate** is selected.
-       * **Construct group with newly created nodes** option (*checked by default*): if checked - the group with newly created nodes will be built. 
-
-A schema below illustrates how the crack is emulated using the node duplication.
-    
-.. image:: ../images/crack_emulation_double_nodes.png 
-       :align: center
-
-.. centered::
-       Crack emulation
-
-
-This schema shows a virtual crack in a 2D mesh created using this duplication mode:
-       * Black balls are **duplicated nodes**.
-       * Red balls are **new nodes**.
-       * **Elements to replace nodes with new ones** are marked with green.
-       
-.. note::
-       Note that in the reality **duplicated nodes** coincide with **new nodes**.
-
-
-.. _mode_with_elem_anchor:
-
-Duplicate nodes and border elements
-###################################
-
-.. image:: ../images/duplicate02.png 
-       :align: center
-
-Parameters to be defined in this mode:
-
-       * **Group of elements to duplicate** (*mandatory*): these elements will be duplicated. 
-       * **Group of nodes not to duplicate** (*optional*): group of nodes at crack bottom which will not be duplicated.
-       * **Group of elements to replace nodes with new ones** (*mandatory*): the new nodes will replace the nodes to duplicate within these elements. **Generate** button tries to automatically find such elements and creates a group of them. This button becomes active as soon as **Group of elements to duplicate** is selected.
-       * **Construct group with newly created elements** option (*checked by default*): if checked - the group of newly created elements will be built.
-       * **Construct group with newly created nodes** option (*checked by default*): if checked - the group of newly created nodes will be built.
-
-
-A schema below explains the crack emulation using the node duplication with border elements.
-
-       .. image:: ../images/crack_emulation_double_nodes_with_elems.png 
-               :align: center
-
-       .. centered::  
-               Crack emulation
-
-This schema shows a virtual crack in a 2D mesh created using this duplication mode. In this schema:
-
-* Black segments are **duplicated elements** (edges in 2D case).
-* Black balls (except for the lowest one) are duplicated nodes of **duplicated elements**.
-* The lowest black ball is the **non-duplicated node**.
-* Red balls are **newly created nodes**.
-* Red segments are **created elements** (edges).
-* **Elements to replace nodes with new ones** are marked with green.
-
-Note that in the reality **nodes to duplicate** coincide with **new nodes**.
-
-In a 3D case, where **elements to duplicate** are faces, the edges
-located at the "crack" (if any) are cloned automatically.
-
-
-.. _mode_elem_only_anchor:
-
-Duplicate elements only
-#######################
-
-This mode duplicates the given elements, i.e. creates new elements with the same nodes as the given elements.
-
-
-.. image:: ../images/duplicate03.png
-       :align: center
-
-Parameters to be defined in this mode:
-
-       * **Group of elements to duplicate** (*mandatory*): these elements will be duplicated.
-       * **Construct group with newly created elements** option (*checked by default*): if checked - the group of newly created elements will be built. The name of the created group starts from "DoubleElements".
-
-
-.. _mode_group_boundary_anchor:
-
-Duplicate nodes on group boundaries
-###################################
-
-This mode duplicates nodes located on boundaries between given groups of volumes.
-
-
-.. image:: ../images/duplicate04.png
-       :align: center
-
-Parameters to be defined in this mode:
-
-       * **Groups (faces or volumes)** (*mandatory*): list of mesh groups. These groups should be disjoint, i.e. should not have shared elements.
-       * If **Create joint elements** option is activated, flat elements are created on the duplicated nodes: a triangular facet shared by two volumes of two groups generates a flat prism, a quadrangular facet generates a flat hexahedron. Correspondingly 2D joint elements (null area faces) are generated where edges are shared by two faces. The created flat volumes (or faces) are stored in groups. These groups are named according to the position of the group in the list of groups: group "j_n_p" is a group of flat elements that are built between the group \#n and the group \#p in the group list. All flat elements are gathered into the group named "joints3D" (correspondingly "joints2D"). The flat elements of multiple junctions between the simple junction are stored in a group named "jointsMultiples".
-       * If **On all boundaries** option is activated, the volumes (or faces), which are not included into **Groups** input, are considered as another group and thus the nodes on the boundary between **Groups** and the remaining mesh are also duplicated.
-
-
-**See Also** a sample TUI Script of a :ref:`tui_duplicate_nodes` operation.
-
-
diff --git a/doc/salome/gui/SMESH/input/editing_groups.rst b/doc/salome/gui/SMESH/input/editing_groups.rst
deleted file mode 100644 (file)
index b00f956..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-.. _editing_groups_page:
-
-**************
-Editing groups
-**************
-
-*To edit an existing group of elements:*
-
-.. |img| image:: ../images/image74.gif
-
-#. Select your group in the Object Browser and in the **Mesh** menu click the **Edit Group** item or *"Edit Group"* button |img| in the toolbar.
-
-
-
-   The following dialog box will appear (if the selected group is **standalone**, else this dialog looks different):
-
-       .. image:: ../images/editgroup.png
-               :align: center
-
-   In this dialog box you can modify the name and the color of your group despite of its type. You can add or remove the elements composing a **standalone group**. You can change criteria of the filter of a **group on filter**. For more information see :ref:`creating_groups_page` page.
-
-#. Click the **Apply** or **Apply and Close** button to confirm modification of the group.
-
-
-.. _convert_to_standalone:
-
-Convert to stanalone group
-==========================
-
-*To convert an existing group on geometry or a group on filer into a standalone group and modify its contents:*
-
-.. |edit| image:: ../images/image74.gif
-
-#. Select your group on geometry or on filter in the Object Browser and in the **Mesh** menu click the **Edit Group as Standalone** item |edit|.
-
-
-
-   The selected group will be converted into a standalone group and its contents can be modified.
-
-#. Click the **Apply** or **Apply and Close** button to confirm modification of the group.
-
-**See also:** A sample TUI Script of an :ref:`tui_edit_group` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/editing_meshes.rst b/doc/salome/gui/SMESH/input/editing_meshes.rst
deleted file mode 100644 (file)
index 09f63fb..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-.. _editing_meshes_page:
-
-**************
-Editing Meshes
-**************
-
-After you have created a mesh or sub-mesh with definite applied meshing algorithms and hypotheses you can edit your mesh by **assigning** other algorithms and/or hypotheses or **unassigning** the applied hypotheses and algorithms. The editing proceeds in the same way as 
-:ref:`Mesh Creation <create_mesh_anchor>`.
-
-.. image:: ../images/createmesh-inv3.png
-       :align: center
-
-.. |img| image:: ../images/image122.png
-
-You can also change values for the current hypothesis by clicking the
-*"Edit Hypothesis"* |img| button.
-
-Mesh entities generated before using changed hypotheses are automatically removed.
-
-See how the mesh constructed on a geometrical object
-changes if we apply different meshing parameters to it.
-
-.. image:: ../images/edit_mesh1.png
-       :align: center
-
-.. centered::
-        Example of a mesh with Max. Element area 2D hypothesis roughly corresponding to 1D hypotheses on edges
-
-
-.. image:: ../images/edit_mesh_change_value_hyp.png
-       :align: center
-
-.. centered::
-       And now the Max Element area is greatly reduced
-
-**See Also** a sample TUI Script of an :ref:`Edit Mesh <tui_editing_mesh>` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/extrusion.rst b/doc/salome/gui/SMESH/input/extrusion.rst
deleted file mode 100644 (file)
index 3cee68e..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-.. _extrusion_page:
-
-*********
-Extrusion
-*********
-
-Extrusion is used to build mesh elements of plus one dimension than the input ones. Boundary elements around generated mesh of plus one dimension are additionally created. All created elements can be automatically grouped. Extrusion can be used to create a :ref:`structured mesh from scratch <extrusion_struct>`.
-
-.. image:: ../images/extrusion_box.png
-       :align: center
-
-.. centered::
-       If you extrude several quadrangles, you get exactly the same mesh as if you meshed a geometrical box (except for that the initial quadrangles can be incorrectly oriented): quadrangles and segments are created on the boundary of the generated mesh
-
-Any node, segment or 2D element can be extruded. Each type of elements is extruded into a corresponding type of result elements:
-
-+----------------------+--------------------+
-| **Extruded element** | **Result element** |
-+======================+====================+
-|Node                  | Segment            |
-+----------------------+--------------------+
-|Segment               | Quadrilateral      |
-+----------------------+--------------------+
-|Triangle              | Pentahedron        |
-+----------------------+--------------------+
-|Quadrilateral         | Hexahedron         |
-+----------------------+--------------------+
-|Polygon               | Polyhedron         |
-+----------------------+--------------------+
-|Hexagonal polygon     | Hexagonal prism    |
-+----------------------+--------------------+
-
-
-When 2D elements are extruded, in addition to 3D elements segments are created on the ribs of the resulting 3D mesh. Free edges of input 2D elements generate logically horizontal rib segments. Logically vertical rib segments are generated from the nodes belonging to a sole input 2D element (the figure below illustrates this rule).
-
-.. image:: ../images/extru_rib_segs.png
-       :align: center
-
-.. centered::
-       Two triangles extruded: no vertical rib segments generated from nodes #2 and #3 as they are shared by both triangles
-
-
-*To use extrusion:*
-
-.. |img| image:: ../images/image91.png
-.. |sel_img| image:: ../images/image120.png
-
-#. From the **Modification** menu choose the **Extrusion** item or click *"Extrusion"* button |img| in the toolbar. 
-
-   The following dialog will appear:
-
-       .. image:: ../images/extrusionalongaline1.png
-               :align: center
-
-
-#. In this dialog:
-
-       * Use *Selection* button |sel_img| to specify what you are going to select at a given moment, **Nodes**, **Edges** or **Faces**.
-  
-       * Specify **Nodes**, **Edges** and **Faces**, which will be extruded, by one of following means:
-               * **Select the whole mesh, sub-mesh or group** activating the corresponding check-box.
-               * Choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame. 
-               * Input the element IDs directly in **Node IDs**, **Edge IDs** and **Face IDs** fields. The selected elements will be highlighted in the viewer, if the mesh is shown there. 
-               * Apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`filtering_elements` page. 
-
-       * If the **Extrusion to distance** radio button is selected 
-               * specify the translation vector by which the elements will be extruded.
-
-       * If the **Extrusion along vector** radio button is selected
-
-               .. image:: ../images/extrusionalongaline2.png  
-                       :align: center
-    
-               * specify the components of the **Vector** along which the elements will be extruded, either directly or by selecting the mesh face (the normal to the face will define the vector),
-               * specify the **Distance** of extrusion along the vector (it can be negative).
-    
-  
-
-       * If the **Extrusion by normal** radio button is selected, every node of the selected faces is extruded along the *average* of the *normal* vectors to the faces sharing the node. (Nodes and edges cannot be extruded in this mode.)
-
-               .. image:: ../images/extrusionalongaline3.png 
-                       :align: center
-    
-               * Specify the **Distance** of extrusion (it can be negative),
-               * Use **Along average normal** check-box to specify along which vector the distance is measured.
-               * If it is *activated* the distance is measured along the average normal mentioned above. 
-               * If it is *deactivated* every node is extruded along the average normal till its intersection with a virtual plane obtained by translation of the face sharing the node along its own normal by the **Distance**.
-        
-               The picture below shows a cross-section of a 2D mesh extruded with **Along average normal** activated (to the left) and deactivated (to the right). 
-
-               .. image:: ../images/extrusionbynormal_alongavgnorm.png
-                       :align: center
-
-               .. centered::
-                       'Along average normal' activated (to the left) and deactivated (to the right)
-
-
-
-               * **Use only input elements** check-box specifies what elements will be used to compute the average normal.
-
-                  * If it is *activated* only selected faces, among faces sharing the node, are used to compute the average normal at the node. 
-                  * Else all faces sharing the node are used.
-
-                  The picture below shows a cross-section of a 2D mesh the upper plane of which is extruded with **Use only input elements** activated (to the left) and deactivated (to the right). 
-
-       .. image:: ../images/extrusionbynormal_useonly.png
-               :align: center
-
-       .. centered::
-               'Use only input elements' activated (to the left) and deactivated (to the right)
-  
-  
-        .. |add| image:: ../images/add.png
-        .. |rm| image:: ../images/remove.png
-
-
-       * Specify the **Number of steps**.
-       * Optionally specify **Scale factors**. Each scale factor in the list is applied to nodes of a corresponding extrusion step unless **Linear variation of factors** is checked, is which case the scale factors are spread over all extrusion steps.
-               * **Base point** serving as a scaling canter can be defined either using spin boxes or by picking a node in the Viewer or by picking a geometrical vertex in the Object Browser.
-               * **Add** button |add| adds a scale factor to the list.   
-               * **Remove** button |rm| removes selected scale factors from the list.
-
-        * The elements can also be rotated around the **Base point** to get the resulting mesh in a helical fashion. You can set the values of **Rotation angles** to the list by pressing the *"Add"* button |add| and remove them from the list by pressing the *"Remove"* button |rm|.
-
-          **Linear variation of angles** option allows defining the angle of gradual rotation for the whole path. At each step the elements will be rotated by *( angle / nb. of steps )*.
-
-       * If you activate **Generate Groups** check-box, the *result elements* created from *selected elements* contained in groups will be included into new groups named by pattern "<old group name>_extruded" and "<old group name>_top". For example if a selected quadrangle is included in *g_Faces* group (see figures below) then result hexahedra will be included in *g_Faces_extruded* group and a quadrangle created at the "top" of extruded mesh will be included in *g_Faces_top group*.  
-
-               .. image:: ../images/extrusion_groups.png
-                       :align: center
-
-               .. image:: ../images/extrusion_groups_res.png
-                       :align: center
-
-          This check-box is active only if there are some groups in the mesh.
-  
-
-
-#. Click **Apply** or **Apply and Close**  button to confirm the operation.
-
-.. _extrusion_struct:
-
-Example: creation of a structured mesh from scratch
-###################################################
-
-.. image:: ../images/image75.jpg
-       :align: center
-
-.. centered::
-       A node is extruded into a line of segments
-
-.. image:: ../images/image76.jpg
-       :align: center
-
-.. centered::
-       The line of segments is extruded into a quadrangle mesh
-
-.. image:: ../images/image77.jpg
-       :align: center
-
-.. centered::
-       The quadrangle mesh is revolved into a hexahedral mesh
-
-
-**See Also** a sample TUI Script of an :ref:`tui_extrusion` operation. 
-
-
diff --git a/doc/salome/gui/SMESH/input/extrusion_along_path.rst b/doc/salome/gui/SMESH/input/extrusion_along_path.rst
deleted file mode 100644 (file)
index ce226f8..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-.. _extrusion_along_path_page:
-
-********************
-Extrusion along Path
-********************
-
-In principle, **Extrusion along Path** works in the same way as :ref:`extrusion_page`, the main difference is that we define not a vector, but a path of extrusion which must be an 1D mesh or 1D sub-mesh.
-To get an idea of how this algorithm works, examine several examples, starting from the most simple case of extrusion along a straight edge.
-In the examples the sample mesh will be extruded along different paths and with different parameters.
-This 2D mesh has two quadrangle faces and seven edges. Look at the picture, where white digits are the node numbers and green are the element numbers:
-
-.. image:: ../images/mesh_for_extr_along_path.png
-       :align: center
-
-Extrusion along a straight edge
-*******************************
-(not using base point or angles)
-
-.. image:: ../images/straight_before.png
-       :align: center
-
-.. centered::
-       The image shows a 1D path mesh, built on a linear edge, and the initial 2D mesh.
-
-.. image:: ../images/straight_after.png
-       :align: center
-
-.. centered::
-       The image shows the result of extrusion of two edges (#1 and #2) of the initial mesh along the path. 
-
-.. note:: Node #1 of path mesh has been selected as Start node.
-
-Extrusion along a curvilinear edge
-##################################
-(with and without angles)
-
-.. image:: ../images/curvi_simple_before.png
-       :align: center
-
-.. centered::
-       The image shows a 1D path mesh, built on curvilinear edge, and the initial  2D mesh.
-
-.. image:: ../images/curvi_simple_after.png
-       :align: center
-
-.. centered::
-       The central image shows the result of extrusion of one edge (#2) of the initial mesh along the path. 
-
-.. note:: Node #1 of path mesh has been selected as **Start node**.
-
-.. image:: ../images/curvi_angles_after.png
-       :align: center
-
-.. centered::
-       The same, but using angles {45, 45, 45, 0, -45, -45, -45}
-
-Extrusion of a 2D face along a mesh built on a wire
-###################################################
-
-In this example the path mesh has been built on a wire containing 3 edges. Node 1 is a start node. Linear angle variation by 180 degrees has also been applied.
-
-.. image:: ../images/extr_along_wire_before.png
-       :align: center
-
-.. centered::
-       Meshed wire
-
-.. image:: ../images/extr_along_wire_after.png
-       :align: center
-
-.. centered::
-       The resulting extrusion
-
-Extrusion of 2d elements along a closed path
-############################################
-
-.. image:: ../images/circle_simple_before.png
-       :align: center
-
-.. centered::
-       The image shows a path mesh built on a closed edge (circle).
-
-.. image:: ../images/circle_simple_after.png
-       :align: center
-
-.. centered::
-       The central image shows the result of extrusion of both faces of the initial mesh. 
-
-.. note:: Note, that no sewing has been done, so, there are six coincident nodes and two coincident faces in the resulting mesh.
-
-.. image:: ../images/circle_angles_after.png
-       :align: center
-
-.. centered::
-       The same, but using angles {45, -45, 45, -45, 45, -45, 45, -45}
-
-
-*To use Extrusion along Path:*
-
-.. |img| image:: ../images/image101.png
-.. |sel| image:: ../images/image120.png
-
-#. From the **Modification** menu choose the **Extrusion along a path** item or click *"Extrusion along a path"* button |img| in the toolbar.
-
-   The following dialog will appear:
-
-       .. image:: ../images/extrusion_along_path_dlg.png
-
-#. In this dialog:
-
-       * Use *Selection* button |sel| to specify what you are going to select at a given moment, **Nodes**, **Edges** or **Faces**.
-
-       * Specify **Nodes**, **Edges** and **Faces**, which will be extruded, by one of following means:
-      
-               * **Select the whole mesh, sub-mesh or group** activating this check-box.
-               * Choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame.
-               * Input the element IDs directly in **Node IDs**, **Edge IDs** and **Face IDs** fields. The selected elements will be highlighted in the viewer, if the mesh is shown there.
-               * Apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`filtering_elements` page.
-    
-       * Define the **Path** along which the elements will be extruded.Path definition consists of several elements:
-      
-               * **Mesh or sub-mesh** - 1D mesh or sub-mesh, along which proceeds the extrusion.
-               * **Start node** - the start node of the Path. It is used to define the direction of extrusion. 
-      
-    
-       * If you activate **Generate groups** check-box, the *result elements* created from *selected elements* contained in groups will be included into new groups named by pattern "<old group name>_extruded" and "<old group name>_top". For example if a  selected quadrangle is included in *g_Faces* group (see figures below) then result hexahedra will be included in *g_Faces_extruded* group and a quadrangle created at the "top" of extruded mesh will be included in *g_Faces_top group*.  
-
-       .. image:: ../images/extrusion_groups.png
-               :align: center
-
-       .. image:: ../images/extrusion_groups_res.png
-               :align: center
-
-       This check-box is active only if there are some groups in the mesh.
-  
-
-
-
-#. There are two optional parameters, which can be very useful:
-
-   * If the path of extrusion is curvilinear, at each iteration the extruded elements are rotated to keep its initial angularity to the curve. By default, the **Base point** around which the elements are rotated is the mass center of the elements (note that it can differ from the gravity center computed by *Geometry* module for the  underlying shape), however, you can specify any point as the **Base point** and the elements will be rotated with respect to this point. Note that only the displacement of the **Base point** exactly equals to the path, and all other extruded elements simply keep their position relatively to the **Base point** at each iteration.
-
-   .. |add| image:: ../images/add.png
-   .. |rem| image:: ../images/remove.png
-
-   * The elements can also be rotated around the path with rotation center at the **Base point** to get the resulting mesh in a helical fashion. You can set the values of angles at the right, add them to **Rotation angles** list at the left by pressing the *"Add"* button |add| and remove them from the list by pressing the *"Remove"* button |rem|.
-
-     **Linear variation of angles** option allows defining the angle of gradual rotation for the whole path. At each step the elements will be rotated by *( angle / nb. of steps )*.
-
-   * Each of optional **Scale factors** in the list is applied to nodes of a corresponding extrusion step unless **Linear variation of factors** is checked, is which case the scale factors are spread over all extrusion steps. **Base point** serves as a scaling canter.
-       * *"Add"* button |add| adds a scale factor to the list.   
-       * *"Remove"* button |rem| removes selected scale factors from the list.
-
-
-#. Click **Apply** or **Apply and Close**  button to confirm the operation. Mesh edges will be extruded into faces, faces into volumes. The external surface of the resulting 3d mesh (if faces have been extruded) is covered with faces, and corners with edges. If the path is closed, the resulting mesh can contain duplicated nodes and faces, because no sewing is done.
-
-
-**See Also** a sample TUI Script of an :ref:`tui_extrusion_along_path` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/face_groups_by_sharp_edges.rst b/doc/salome/gui/SMESH/input/face_groups_by_sharp_edges.rst
deleted file mode 100644 (file)
index eed6996..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-************************************
-Face Groups Separated By Sharp Edges
-************************************
-
-**Face groups separated by sharp edges** operation distributes all faces of the mesh among groups using sharp edges and optionally existing 1D elements as group boundaries. Edges where more than two faces meet are always considered as a group boundary. The operation is available in **Mesh** menu.
-
-The operation dialog looks as follows:
-
-.. image:: ../images/groups_by_sharp_edges_dlg.png
-       :align: center
-
-In this dialog box specify
-
-       * **Mesh** including the faces to distribute among groups.
-        * **Sharp angle** in degrees, by which edges used as group boundaries are detected. An edge is considered as a group boundary if an angle between normals of adjacent faces is more than this angle.
-       * Activate **Create edges** option if you wish that 1D elements to be created (if not yet exist) on the edges that served as group boundaries.
-       * Activate **Use existing edges** option if you wish that existing 1D elements to be used as group boundaries.
-       * Activate **Preview** to see the edges that will be used as group boundaries highlighted in the Viewer.
-
-
-.. image:: ../images/Nut_sharp_edges.png
-       :align: center
-
-.. centered:: 
-       **Preview of boundary edges detected at Sharp Angle = 10 degrees**
-
-**See Also** a sample TUI Script of a :ref:`tui_groups_by_sharp_edges` operation.
-
-
diff --git a/doc/salome/gui/SMESH/input/find_element_by_point.rst b/doc/salome/gui/SMESH/input/find_element_by_point.rst
deleted file mode 100644 (file)
index 1fd4ba7..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-.. _find_element_by_point_page:
-
-*********************
-Find Element by Point
-*********************
-
-This functionality allows you to find all mesh elements to which belongs a certain point.
-
-*To find the elements:*
-
-.. |img| image:: ../images/findelement3.png
-
-#. Select a mesh or a group
-#. Select from the Mesh menu or from the context menu the Find Element by Point item |img|.
-
-
-   The following dialog box will appear:
-
-       .. image:: ../images/findelement2.png
-               :align: center
-
-
-#. In this dialog box you should select:
-       * the coordinates of the point;
-       * the type of elements to be found; it is also possible to find elements of all types related to the reference point. Choose type "All" to find elements of any type except for nodes and 0D elements.
-#. Click the **Find** button. IDs of found entities will be shown.
-
-.. image:: ../images/findelement1.png 
-       :align: center
-
-.. centered:: 
-       The reference point and the related elements.
-
-
-**See Also** a sample TUI Script of a :ref:`tui_find_element_by_point` operation.
-
-
diff --git a/doc/salome/gui/SMESH/input/free_borders.rst b/doc/salome/gui/SMESH/input/free_borders.rst
deleted file mode 100644 (file)
index fc076f3..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-.. _free_borders_page:
-
-************
-Free borders
-************
-
-This mesh quality control highlights 1D elements (segments) belonging to one element (face or volume) only.
-
-.. image:: ../images/free_borders1.png
-       :align: center
-
-In this picture the free borders are displayed in red. (Faces are explicitly shown via **Display Entity** menu as all elements but segments are hidden upon this control activation).
-
-**See Also** a sample TUI Script of a :ref:`tui_free_borders` filter.
-
-
diff --git a/doc/salome/gui/SMESH/input/free_edges.rst b/doc/salome/gui/SMESH/input/free_edges.rst
deleted file mode 100644 (file)
index feeb58e..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-.. _free_edges_page:
-
-**********
-Free edges
-**********
-
-This mesh quality control highlights borders of faces (links between nodes, not mesh segments) belonging to one face only.
-
-.. image:: ../images/free_edges.png
-       :align: center
-
-.. centered::
-       Some elements of mesh have been deleted and the "holes" are outlined in red.
-
-**See Also** a sample TUI Script of a :ref:`tui_free_edges` filter.
diff --git a/doc/salome/gui/SMESH/input/free_faces.rst b/doc/salome/gui/SMESH/input/free_faces.rst
deleted file mode 100644 (file)
index cd8ca05..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-.. _free_faces_page:
-
-**********
-Free faces
-**********
-
-This mesh quality control highlights the faces connected to less than two mesh volume elements. The free faces are shown with a color different from the color of shared faces.
-
-.. image:: ../images/free_faces.png
-       :align: center
-
-In this picture some volume mesh elements have been removed, as a result some faces became connected only to one volume. i.e. became free.
-
-**See also:** A sample TUI Script of a :ref:`tui_free_faces` filter.
diff --git a/doc/salome/gui/SMESH/input/free_nodes.rst b/doc/salome/gui/SMESH/input/free_nodes.rst
deleted file mode 100644 (file)
index 451699c..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-.. _free_nodes_page:
-
-**********
-Free nodes
-**********
-
-This mesh quality control highlights the nodes which are not connected to any  mesh element. 
-
-.. image:: ../images/free_nodes.png
-       :align: center
-
-In this picture some nodes are not connected to any mesh element after deleting some elements and adding several isolated nodes.
-
-**See also:** A sample TUI Script of a :ref:`tui_free_nodes` filter.
diff --git a/doc/salome/gui/SMESH/input/generate_flat_elements.rst b/doc/salome/gui/SMESH/input/generate_flat_elements.rst
deleted file mode 100644 (file)
index 7308111..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-.. _generate_flat_elements_page:
-
-******************************************************
-Generate flat elements on group boundaries or on faces
-******************************************************
-
-These functionalities, used in some mechanics calculations, allow to generate flat volume elements 
-on the boundaries of a list of groups of volumes, or on a list of groups of faces.
-
-.. note:: These functionalities are only available in python scripts.
-
-**See** a sample TUI Script of :ref:`tui_double_nodes_on_group_boundaries` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst b/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst
deleted file mode 100644 (file)
index a660030..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-.. _group_of_underlying_elements_page:
-
-************************************
-Group Based on Nodes of Other Groups
-************************************
-
-
-To create a standalone group of entities basing on nodes of existing reference groups, in the **Mesh** menu select **Group of underlying entities**.
-
-The following dialog box will appear:
-
-.. image:: ../images/dimgroup_dlg.png
-       :align: center
-
-In this dialog box specify 
-
-       * the resulting **Group name**, 
-       * the **Elements Type** of entities of the resulting group,
-       * the criterion of inclusion of a mesh entity to the result group, which is **Number of common nodes** of the entity and the reference groups: 
-               * **All** - include if all nodes are common;
-               * **Main** - include if all corner nodes are common (meaningful for a quadratic mesh) 
-               * **At least one** - include if one or more nodes are common
-               * **Majority** - include if half or more nodes are common
-  
-       * select reference groups,
-       * If **Include underlying entities only** option is activated an entity can be included if it is based on nodes of one element of a reference group.
-
-
-In the figure below, there are two reference Volume groups:
-
-.. image:: ../images/dimgroup_src.png
-       :align: center
-
-.. centered:: 
-       Reference groups
-
-In this case the following results for Faces, Edges and Nodes are obtained:
-
-.. image:: ../images/dimgroup_2d.png
-       :align: center
-
-.. centered::
-       Faces
-
-.. image:: ../images/dimgroup_1d.png
-       :align: center
-
-.. centered::
-       Edges
-
-.. image:: ../images/dimgroup_0d.png
-       :align: center
-
-.. centered::
-       Nodes
-
-**See Also** a sample TUI Script of a :ref:`tui_create_dim_group` operation.
-
-
diff --git a/doc/salome/gui/SMESH/input/grouping_elements.rst b/doc/salome/gui/SMESH/input/grouping_elements.rst
deleted file mode 100644 (file)
index 2846fa9..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-.. _grouping_elements_page:
-
-*****************
-Grouping elements
-*****************
-
-In Mesh module it is possible to create groups of mesh entities: nodes, edges, faces, volumes, 0D elements or balls. One group contains elements of only one type. Groups, unlike sub-meshes, are exported along with mesh entities into the files of following formats: MED, UNV, and CGNS. The group has a color attribute which is used for visualization only and is not exported.
-
-There are three types of groups different by their internal organization:
-
-#. **Standalone group** is a static set of mesh entities. Its contents can be explicitly controlled by the user. Upon removal of the entities included into the group, e.g. due to modification of  meshing parameter, the group becomes empty and its content can be restored only manually. Hence it is reasonable to create standalone groups when the mesh generation is finished and mesh quality is verified.
-       .. warning:: Creation and edition of large standalone groups in :ref:`Create group <creating_groups_page>` dialog using manual edition is problematic due to poor performance of the dialog.
-  
-#. **Group on geometry** is associated to a sub-shape or a group of sub-shapes of the main shape and includes mesh entities generated on these geometrical entities. The association to a geometry is established at group construction and cannot be changed. The group contents are always updated automatically, hence the group can be created even before mesh elements generation.
-
-#. **Group on filter** encapsulates a :ref:`filter <filters_page>`, which is used to select mesh entities composing the group from the whole mesh. Criteria of the filter can be changed at any time. The group contents are always updated automatically, hence the group can be created even before mesh elements generation.
-
-The group on geometry and group on filter can be converted to a standalone group.
-
-.. image:: ../images/groups_in_OB.png
-       :align: center
-
-.. centered::
-       Groups of different types look differently in the Object Browser
-
-The following ways of group creation are possible:
-
-* :ref:`Create group <creating_groups_page>` dialog allows creation of a group of any type: :ref:`Standalone group<standalone_group>`, :ref:`Group on geometry <group_on_geom>` and :ref:`Group on filter <group_on_filter>` using dedicated tabs.
-* :ref:`Create Groups from Geometry <create_groups_from_geometry_page>` dialog allows creation of several groups on geometry at once.
-* :doc:`face_groups_by_sharp_edges` operation distributes all faces of the mesh among groups using sharp edges and/or existing 1D elements as group boundaries.
-* Standalone groups of all nodes and elements of the chosen sub-mesh (type of elements depends on dimension of sub-mesh geometry) can be created using **Mesh -> Construct Group** menu item (available from the context menu as well).
-* Standalone groups of any element type can be created basing on nodes of other groups - using :ref:`Group based on nodes of other groups <group_of_underlying_elements_page>` dialog.
-* Standalone groups can be created by applying :ref:`Boolean operations <using_operations_on_groups_page>` to other groups.
-* Creation of standalone groups is an option of many :ref:`mesh modification <modifying_meshes_page>` operations.
-
-The created groups can be later:
-
-* :ref:`Edited <editing_groups_page>`
-* :ref:`Deleted <deleting_groups_page>`, either as an object or together with contained elements.
-* The group on geometry and group on filter can be :ref:`converted into the standalone <convert_to_standalone>` group.
-* :ref:`Exported <importing_exporting_meshes_page>` into a file as a whole mesh.
-
-In the Object Browser, if an item contains more than one child group, it is possible to sort the groups by name in ascending order using **Sort children** context menu item. 
-
-.. image:: ../images/smesh_sort_groups.png
-       :align: center
-
-.. centered::
-       Sorting groups
-
-An important tool, providing filters for creation of standalone groups and groups on filter is :ref:`selection_filter_library_page`.
-
-**See Also** sample TUI Scripts of :doc:`tui_grouping_elements` operations.
-
-
-**Table of Contents**
-
-.. toctree::
-       :maxdepth: 2
-
-       creating_groups.rst
-       create_groups_from_geometry.rst
-       face_groups_by_sharp_edges.rst
-       group_of_underlying_elements.rst
-       using_operations_on_groups.rst
-       editing_groups.rst
-       deleting_groups.rst
diff --git a/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst b/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst
deleted file mode 100644 (file)
index fe9aa27..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-
-.. _importing_exporting_meshes_page:
-
-******************************
-Importing and exporting meshes
-******************************
-
-In MESH there is a functionality allowing import/export of meshes in the following formats:
-
-* **MED**,
-* **UNV** (I-DEAS 10),
-* **STL**, 
-* **CGNS**,
-* **GMF** (internal format of DISTENE products from the MeshGems suite),
-* **DAT** (simple ascii format).
-
-You can also export a group as a whole mesh.
-
-*To import a mesh:*
-
-#. From the **File** menu choose the **Import** item, from its sub-menu select the corresponding format (MED, UNV, STL, GMF and CGNS) of the file containing your mesh.
-#. In the standard **Search File** dialog box find the file for import. It is possible to select multiple files to be imported all at once.  
-#. Click the **OK** button.
-
-.. image:: ../images/meshimportmesh.png
-       :align: center
-
-*To export a mesh or a group:*
-
-#. Select the object you wish to export.
-#. From the **File** menu choose the **Export** item, from its sub-menu select the format (MED, UNV, DAT, STL, GMF and CGNS) of the file which will contain your exported mesh.
-#. In the standard **Search File** select a location for the exported file and enter its name.
-#. Click the **OK** button.
-
-.. image:: ../images/meshexportmesh.png
-       :align: center
-
-If you try to export a group, the warning will be shown:
-
-.. image:: ../images/meshexportgroupwarning.png
-       :align: center
-
-* **Don't show this warning anymore** check-box allows to switch off the warning. You can re-activate the warning in :ref:`Preferences <group_export_warning_pref>`.
-
-Only MED format supports all types of elements that can be created in the module. If you export a mesh or group that includes elements of types that are not supported by chosen format, you will be warned about that.
-
-There are additional parameters available at export to MED format files.
-
-.. _export_auto_groups:
-
-* **Z tolerance** field if enabled specifies distance of nodes from the XOY plane below which the nodes snap to this plane. A default value can be set in :ref:`Preferences <medexport_z_tolerance_pref>`.
-* **Automatically create groups** check-box specifies whether to create groups of all mesh entities of available dimensions or not. The created groups have names like "Group_On_All_Nodes", "Group_On_All_Faces", etc. A default state of this check-box can be set in :ref:`Preferences <export_auto_groups_pref>`.
-* **Automatically define space dimension** check-box specifies whether to define space dimension for export by mesh configuration or not. Usually the mesh is exported as a mesh in 3D space, just as it is in Mesh module. The mesh can be exported as a mesh of a lower dimension in the following cases, provided that this check-box is checked:
-
-  * **1D**: if all mesh nodes lie on OX coordinate axis. 
-  * **2D**: if all mesh nodes lie in XOY coordinate plane. 
-
-* :ref:`Save cell/node numbers to MED file <med_export_numbers_pref>` preference controls whether node and cell numbers are saved.
-
-**See Also** a sample TUI Script of an :ref:`Export Mesh <tui_export_mesh>` operation.
-
-
diff --git a/doc/salome/gui/SMESH/input/index.rst b/doc/salome/gui/SMESH/input/index.rst
deleted file mode 100644 (file)
index fcd97b7..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-.. SMESH documentation master file, created by
-   sphinx-quickstart on Tue Nov 21 15:18:10 2017.
-   You can adapt this file completely to your liking, but it should at least
-   contain the root `toctree` directive.
-
-***************************
-Introduction to Mesh module
-***************************
-
-.. image:: ../images/a-viewgeneral.png
-       :align: center
-
-**Mesh** module of SALOME is destined for:
-
-* :ref:`creating meshes <about_meshes_page>` in different ways:
-
-  * by meshing geometrical models previously created or imported by the Geometry component;
-  * bottom-up, using :ref:`mesh edition <modifying_meshes_page>`, especially :ref:`extrusion <extrusion_page>` and :ref:`revolution <revolution_page>`;
-  * by generation of the 3D mesh from the 2D mesh not based on the geometry (:ref:`imported <importing_exporting_meshes_page>` for example);
-
-* :ref:`importing and exporting meshes <importing_exporting_meshes_page>` in various formats;
-* :ref:`modifying meshes <modifying_meshes_page>` with a vast array of dedicated operations;
-* :ref:`creating groups <grouping_elements_page>` of mesh elements;
-* filtering mesh entities (nodes or elements) using :ref:`Filters <filters_page>` functionality for :ref:`creating groups <grouping_elements_page>` and applying :ref:`mesh modifications <modifying_meshes_page>`;
-* :ref:`viewing meshes <viewing_meshes_overview_page>` in the VTK viewer and :ref:`getting info <mesh_infos_page>` on mesh and its sub-objects;
-* :ref:`remeshing meshes <adaptation_page>`;
-* applying to meshes :ref:`Quality Controls <quality_page>`, allowing to highlight important elements;
-* taking various :ref:`measurements <measurements_page>` of the mesh objects.
-
-There is a set of :ref:`tools <tools_page>` plugged-in the module to extend the basic functionality listed above.
-
-Almost all mesh module functionalities are accessible via :ref:`smeshpy_interface_page`.
-
-It is possible to use the variables predefined in :ref:`Salome notebook <using_notebook_mesh_page>` to set parameters of operations.
-
-Mesh module preferences are described in the :ref:`mesh_preferences_page` section of SALOME Mesh Help.
-
-.. image:: ../images/image7.jpg
-       :align: center
-
-.. centered::
-       Example of MESH module usage for engineering tasks
-
-
-**Table of Contents**
-
-.. toctree::
-   :titlesonly:
-   :maxdepth: 3
-
-   about_meshes
-   modifying_meshes
-   grouping_elements
-   about_filters
-   about_quality_controls
-   adaptation
-   measurements
-   viewing_meshes_overview
-   smeshpy_interface
-   tools
-   mesh_preferences
-   using_notebook_smesh_page
diff --git a/doc/salome/gui/SMESH/input/length.rst b/doc/salome/gui/SMESH/input/length.rst
deleted file mode 100644 (file)
index a873984..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-.. _length_page:
-
-******
-Length
-******
-
-Length quality control criterion returns a value of length of edge.
-
-.. image:: ../images/length-crit.png
-       :align: center
-
-**See Also** a sample TUI Script of a :ref:`tui_length_1d` filter.  
-
diff --git a/doc/salome/gui/SMESH/input/length_2d.rst b/doc/salome/gui/SMESH/input/length_2d.rst
deleted file mode 100644 (file)
index 7a1f811..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-.. _length_2d_page:
-
-*********
-Length 2D
-*********
-
-This quality control criterion consists of calculation of length of the links between corner nodes of mesh faces.
-
-*To apply the Length 2D quality criterion to your mesh:*
-
-.. |img| image:: ../images/image34.png
-
-#. Display your mesh in the viewer. 
-#. Choose **Controls > Face Controls > Length 2D** or click *"Length 2D"* button |img| in the toolbar. 
-
-
-Your mesh will be displayed in the viewer with links colored according to the applied mesh quality control criterion:
-
-.. image:: ../images/length2d.png
-       :align: center
-
-
-**See Also** a sample TUI Script of a :ref:`tui_length_2d` filter.
diff --git a/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst b/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst
deleted file mode 100644 (file)
index a88c20f..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-.. _make_2dmesh_from_3d_page:
-
-**************************
-Generate boundary elements
-**************************
-
-This functionality allows to generate mesh elements on the borders of elements of a higher dimension, for example, to create 2D elements around a block of 3D elements as in the following figure.
-
-.. image:: ../images/2d_from_3d_example.png
-       :align: center
-
-.. centered::
-       Missing 2D elements were generated
-
-
-*To generate border elements:*
-
-.. |img| image:: ../images/2d_from_3d_ico.png
-
-#. Select a mesh or group in the Object Browser or in the 3D Viewer
-#. From the **Modification** menu choose **Create boundary elements** item, or click "Create boundary elements" button |img| in the toolbar
-
-   The following dialog box will appear:
-
-       .. image:: ../images/2d_from_3d_dlg.png 
-               :align: center
-
-       .. centered::
-                Create boundary elements dialog box
-
-#. Check in the dialog box one of two radio buttons corresponding to the type of operation you would like to perform.
-#. Fill the other fields available in the dialog box.
-#. Click the **Apply** or **Apply and Close** button to perform the operation.
-
-*Create boundary elements* dialog allows creation of boundary elements of two types.
-
-* **2D from 3D** creates missing mesh faces on free facets of volume elements
-* **1D from 2D** creates missing mesh edges on free edges of mesh faces
-
-Here a **free facet** means a facet shared by only one volume, a **free edge**
-means an edge shared by only one mesh face.
-
-In this dialog:
-
-* specify the **Target** mesh, where the boundary elements will be created.
-  
-       * **This mesh** adds elements in the selected mesh.
-       * **New mesh** adds elements to a new mesh. The new mesh appears in the Object Browser with the name that you can change in the adjacent box. 
-  
-* activate **Copy source mesh** checkbox to copy all elements of the selected mesh to the new mesh, else the new mesh will contain only boundary elements (old and created by this operation).
-* activate **Create group** checkbox to create a group to which all the boundary elements (old and new) are added. The new group appears in the Object Browser with the name that you can change in the adjacent box. 
-
-**See Also** a sample TUI Script of a :ref:`tui_make_2dmesh_from_3d` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/max_element_length_2d.rst b/doc/salome/gui/SMESH/input/max_element_length_2d.rst
deleted file mode 100644 (file)
index 6e2fa03..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-.. _max_element_length_2d_page:
-
-*******************
-Element Diameter 2D
-*******************
-
-This quality control criterion consists in calculation of the maximal length of edges and diagonals of 2D mesh elements (triangles and quadrangles). For polygons the value is always zero.
-
-*To apply the Element Diameter 2D quality criterion to your mesh:*
-
-.. |img| image:: ../images/image42.png
-
-#. Display your mesh in the viewer. 
-#. Choose **Controls > Face Controls > Element Diameter 2D** or click *"Element Diameter 2D"* button |img| in the toolbar. 
-
-   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
-
-       .. image:: ../images/max_element_length_2d.png
-               :align: center
-
-**See Also** a sample TUI Script of a :ref:`tui_max_element_length_2d` filter.
diff --git a/doc/salome/gui/SMESH/input/max_element_length_3d.rst b/doc/salome/gui/SMESH/input/max_element_length_3d.rst
deleted file mode 100644 (file)
index 9e2adb8..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-.. _max_element_length_3d_page:
-
-*******************
-Element Diameter 3D
-*******************
-
-This quality control criterion consists in calculation of the maximal length of edges and diagonals of 3D mesh elements (tetrahedrons, pyramids, etc). For polyhedra the value is always zero. 
-
-*To apply the Element Diameter 3D quality criterion to your mesh:*
-
-.. |img| image:: ../images/image43.png
-
-#. Display your mesh in the viewer. 
-#. Choose **Controls > Volume Controls > Element Diameter 3D** or click *"Element Diameter 3D"* button |img| in the toolbar. 
-
-   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
-
-       .. image:: ../images/max_element_length_3d.png
-               :align: center
-
-
-**See Also** a sample TUI Script of a :ref:`tui_max_element_length_3d` filter.
diff --git a/doc/salome/gui/SMESH/input/measurements.rst b/doc/salome/gui/SMESH/input/measurements.rst
deleted file mode 100644 (file)
index 9fb3cac..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-.. _measurements_page:
-
-************
-Measurements
-************
-
-Mesh module provides the possibility to perform different measurements of the selected mesh data.
-
-All measurement operations are available via **Measurements** top-level menu. Access to the measurements operations is implemented via a single dialog box, where each operation is represented as a separate tab page.
-
-.. _min_distance_anchor:
-
-Minimum Distance
-################
-
-This operation allows measuring the distance between two objects. Currently only node-to-node and node-to-origin operations are available, but this operation will be extended in the future to support other mesh objects - elements, meshes, sub-meshes and groups.
-
-To start **Minimum Distance** operation, select **Minimum Distance** tab in **Measurements** dialog.
-
-.. image:: ../images/min_distance.png
-       :align: center
-
-Choose the first and the second target by switching the corresponding radio buttons, then select the objects the distance between which is to be calculated (or input their IDs directly in case of nodes/elements) and press **Compute** button.
-
-The following targets are supported:
-
-* **Node:** single mesh node;
-* **Element:** single mesh element (not available in this version);
-* **Object:** mesh, sub-mesh or group object (not available in this version);
-* **Origin:** origin of the global coordinate system.
-
-The result will be shown in the bottom area of the dialog. In addition, a simple preview will be shown in the 3D viewer.
-
-.. image:: ../images/min_distance_preview.png
-       :align: center
-
-.. _bounding_box_anchor:
-
-Bounding Box
-############
-
-This operation allows calculating the bounding box of the selected object(s).
-
-To start **Bounding Box** operation, select **Bounding Box** tab in **Measurements** dialog.
-
-.. image:: ../images/bnd_box.png
-       :align: center
-
-Choose the required type of the object by switching the corresponding radio button, select the object(s) and press *Compute* button.
-
-The following types of input are available:
-
-* **Objects:** one or several mesh, sub-mesh or group objects;
-* **Nodes:** a set of mesh nodes;
-* **Elements:** a set of mesh elements.
-
-The result of calculation will be shown in the bottom area of the dialog. In addition, a simple preview will be shown in the 3D viewer.
-
-.. image:: ../images/bnd_box_preview.png
-       :align: center
-
-.. _basic_properties_anchor:
-
-Basic Properties
-################
-
-This operation provides calculation of length, area or volume for the the selected object:
-
-* **Length** is calculated as a sum of lengths of all 1D elements;
-* **Area** is a sum of areas of all 2D elements
-* **Volume** is a sum of volumes of all 3D elements. 
-
-To start a **Basic Properties** calculation, select **Length**, **Area** or **Volume** item.
-
-.. image:: ../images/basic_props.png
-       :align: center
-
-In the dialog box select the required type of calculation (length, area or volume) and the object (mesh, sub-mesh or group) and press **Compute** button.
-
-The result of calculation will be shown in the bottom area of the dialog.
-
-.. note::
-       * If the mesh consists of 3D elements only, its "length" and "area" will be 0.
-       * As calculation result is a sum of lengths, areas and volumes of all mesh elements, the duplication is not taken into account; i.e. all duplicated elements (elements built on the same set of nodes) will be included into the result.
-       * Similarly, intersection of elements is not taken into account.
-
-.. _angle_anchor:
-
-Angle
-#####
-
-This operation measures angle defined by three nodes. The second of the specified nodes is a vertex of angle. 
-
-You can specify nodes either by clicking them in the Viewer or by typing their IDs in **Tree nodes** field. If the nodes are correctly specified, upon pressing **Compute** button the angle measure will be displayed and the angle will be shown in the Viewer.
-
-.. image:: ../images/angle_measure.png
-       :align: center
-
-
-**See Also** a sample TUI Script of :ref:`tui_measurements_page`.
diff --git a/doc/salome/gui/SMESH/input/merging_elements.rst b/doc/salome/gui/SMESH/input/merging_elements.rst
deleted file mode 100644 (file)
index 628e364..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-.. _merging_elements_page:
-
-****************
-Merging Elements
-****************
-
-This functionality allows to merge coincident elements of a mesh. Two elements are considered coincident if they are based on the same set of nodes.
-
-.. image:: ../images/mergeelems_ico.png
-       :align: center
-
-.. centered::
-       *"Merge elements"* menu button
-
-To merge elements choose in the main menu **Modification** -> **Transformation** -> **Merge elements** item. The following dialog box shall appear:
-
-.. image:: ../images/mergeelems_auto.png
-       :align: center
-
-.. |ad| image:: ../images/add.png
-.. |rm| image:: ../images/remove.png
-.. |mv| image:: ../images/sort.png
-
-In this dialog:
-
-       * **Names** contains names of the selected mesh objects whose elements will be merged.
-       * **Automatic** or **Manual** Mode allows choosing how the elements are processed. In the **Automatic** Mode all elements created on the same nodes will be merged. In **Manual** mode you can adjust groups of coincident elements detected by the program.
-       * **Exclude groups from detection** group allows to ignore the elements which belong to the specified mesh groups. This control is active provided that the mesh includes groups.
-       * **Elements to keep during the merge** group allows to specify elements to keep in the mesh. (By default an element being the first in a group of coincident elements is kept.) It is possible to either select elements in the Viewer or select groups whose elements will be kept.
-  
-               * *Selection* button activates selection of elements to keep.
-               * **Elements** button activates selection of elements in the Viewer.
-               * **Groups and sub-meshes** button activates selection of groups and sub-meshes.
-               * **Add** button adds selected elements or groups to the list.
-               * Elements or groups selected in the list can be removed using **Remove** button.
-
-
-         If the **Manual** Mode is selected, additional controls are available:
-
-               .. image:: ../images/mergeelems.png
-                       :align: center
-     
-                                  
-               * **Detect** button generates the list of coincident elements found in the selected object.
-               * **Coincident elements** is a list of groups of elements for merging. After the operation all elements of each group will be united into one element. The first element of a group is kept and the others are removed.
-               * **Remove** button deletes the selected group from the list.
-               * **Add** button adds to the list a group of elements selected in the viewer with pressed "Shift" key.
-               * **Select all** check-box selects all groups.
-               * **Show double elements IDs** check-box shows/hides identifiers of elements of the selected groups in the 3D viewer.
-               * **Edit selected group of coincident elements** list allows editing the selected group:
-    
-                       * |ad| adds to the group the elements selected in the viewer.
-                       * |rm| removes the selected elements from the group.
-                       * |mv| moves the selected element to the first position in the group in order to keep it in the mesh.
-    
-  
-
-       * To confirm your choice click **Apply** or **Apply and Close** button.
-
-
-In the following picture you see a triangle which coincides with one of the elements of the mesh. After we apply **Merge Elements** functionality, the triangle will be completely merged with the mesh.
-
-.. image:: ../images/meshtrianglemergeelem1.png
-       :align: center
-
-**See Also** a sample TUI Script of a :ref:`tui_merging_elements` operation.
-
-
diff --git a/doc/salome/gui/SMESH/input/merging_nodes.rst b/doc/salome/gui/SMESH/input/merging_nodes.rst
deleted file mode 100644 (file)
index 18096ba..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-.. _merging_nodes_page:
-
-*************
-Merging nodes
-*************
-
-This functionality allows user to detect groups of coincident nodes with specified tolerance; each group of the coincident nodes can be then converted to the single node.
-
-.. image:: ../images/mergenodes_ico.png
-       :align: center
-
-.. centered::
-       *"Merge nodes"* menu button
-
-.. |ad| image:: ../images/add.png
-.. |rm| image:: ../images/remove.png
-.. |mv| image:: ../images/sort.png
-
-*To merge nodes of your mesh:*
-
-#. Choose **Modification** -> **Transformation** -> **Merge nodes** menu item. The following dialog box shall appear:
-
-       .. image:: ../images/mergenodes_auto.png
-               :align: center
-        
-       * **Names** contains names of the selected mesh objects whose nodes will be merged.
-       * **Automatic** or **Manual** mode allows choosing how the nodes are processed. In **Manual** mode you can adjust groups of coincident nodes detected by the program and/or select any nodes to be merged.
-       * **Tolerance** is a maximum distance between nodes sufficient for merging.
-       * Activation of **No merge of corner and medium nodes of quadratic cells** check-box prevents merging medium nodes of quadratic elements with corner nodes. This check-box is enabled provided that the selected mesh includes quadratic elements.
-       * Activation of **Avoid making holes** check-box prevents merging nodes that make elements invalid (but not degenerated) and hence removed. Thus, no holes in place of removed elements appear. 
-       * **Exclude groups from detection** group allows to ignore the nodes which belong to the specified mesh groups. This control is active provided that the mesh includes groups.
-       * **Nodes to keep during the merge** group allows to specify nodes to keep in the mesh. (By default a node being the first in a group of coincident nodes is kept.) It is possible to either select nodes in the Viewer or select groups of any element type whose nodes will be kept.
-  
-               * *Selection* button activates selection of nodes to keep.
-               * **Nodes** button activates selection of nodes in the Viewer.
-               * **Groups and sub-meshes** button activates selection of groups and sub-meshes.
-               * **Add** button adds selected nodes or groups to the list.
-               * Nodes or groups selected in the list can be removed using **Remove** button.
-
-#. **Automatic mode:**
-
-       * In the **Automatic** Mode all nodes within the indicated tolerance will be merged. The nodes which belong to the groups specified in **Exclude groups from detection** will NOT be taken into account.
-
-#. The **Manual** mode gives you full control of what the operation will do. In this mode additional controls are available:
-
-       * **Detect** button generates the list of coincident nodes for the given **Tolerance**.
-       * **Coincident nodes** is a list of groups of nodes for merging. Upon **Apply** all nodes of each group will be united into one node. The first node of a group is kept and the others are removed. By default the first node has a lowest ID within the group.
-
-               * **Remove** button deletes the selected group from the list.
-               * **Add** button adds to the list a group of nodes selected in the viewer.
-               * **Select all** check-box selects all groups.
-               * **Show double nodes IDs** check-box shows/hides identifiers of nodes of selected groups in the 3D viewer.
-
-       .. image:: ../images/mergenodes.png
-               :align: center
-
-
-       * **Edit selected group of coincident nodes** list allows editing the selected group:
-    
-         * |ad| adds to the group the nodes selected in the viewer.
-         * |rm| removes from the group the selected nodes.
-         * |mv| moves the selected node to the first position in the group in order to keep it in the mesh.
-
-#. To confirm your choice click **Apply** or **Apply and Close** button.
-
-.. figure:: ../images/merging_nodes1.png 
-   :align: center
-
-   The initial object. Nodes 25, 26 and 5 are added to **Nodes to keep during the merge** group.
-
-.. figure:: ../images/merging_nodes2.png
-   :align: center
-
-   The object has been merged
-
-
-**See Also** a sample TUI Script of a :ref:`tui_merging_nodes` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/mesh_infos.rst b/doc/salome/gui/SMESH/input/mesh_infos.rst
deleted file mode 100644 (file)
index a93830d..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-.. _mesh_infos_page:
-
-****************
-Mesh Information
-****************
-
-The user can obtain information about the selected mesh object (mesh, sub-mesh or group) using **Mesh Information** dialog box.
-
-.. |img| image:: ../images/image49.png
-
-To view the **Mesh Information**, select your mesh, sub-mesh or group in the **Object Browser** and invoke **Mesh Information** item from the **Mesh** menu or from the context menu, or click *"Mesh Information"* button |img| in the toolbar. 
-
-
-The **Mesh Information** dialog box provides three tab pages:
-
-* :ref:`Base Info <advanced_mesh_infos_anchor>` - to show base and quantitative information about the selected mesh object.
-* :ref:`Element Info <mesh_element_info_anchor>` - to show detailed information about the selected mesh nodes or elements.
-* :ref:`Additional Info <mesh_addition_info_anchor>` - to show additional information available for the selected mesh, sub-mesh or group object. 
-* :ref:`Quality Info <mesh_quality_info_anchor>` - to show overall quality information about the selected mesh, sub-mesh or group object. 
-
-.. _dump_mesh_infos:
-
-Dump Mesh Infos
-###############
-
-The button **Dump** allows printing the information displayed in the dialog box to a .txt file. The dialog for choosing a file also allows to select which tab pages to dump via four check-boxes. The default state of the check-boxes can be changed via :ref:`Mesh information <mesh_information_pref>` preferences.
-
-.. _advanced_mesh_infos_anchor:
-
-Base Information
-################
-
-The **Base Info** tab page of the dialog box provides general information on the selected object - mesh, sub-mesh or mesh group: name, type, total number of nodes and elements separately for each type: 0D elements, edges, faces, volumes, balls.
-
-.. image:: ../images/advanced_mesh_infos.png
-       :align: center
-
-.. centered::
-       *"Base Info"* page
-
-.. _mesh_element_info_anchor:
-
-Mesh Element Information
-########################
-
-The **Element Info** tab page of the dialog box gives detailed information about the selected mesh node(s) or element(s), namely:
-
-* For a node:
-       * Node ID;
-       * Coordinates (X, Y, Z);
-       * Connectivity information (connected elements); double click in this line reveals information about these elements;
-       * Position on a shape (for meshes built on a geometry);
-       * Groups information (names of groups the node belongs to).
-
-       .. image:: ../images/eleminfo1.png
-               :align: center
-
-       .. centered::
-               *"Element Info"* page, node information
-
-
-* For an element:
-       * Element ID;
-       * Type (triangle, quadrangle, etc.);
-       * Gravity center (X, Y, Z coordinates);
-       * Connectivity information (connected nodes); double click in a line of a node reveals the information about this node;
-       * Quality controls (area, aspect ratio, volume, etc.);
-       * Position on a shape (for meshes built on a geometry);
-       * Groups information (names of groups the element belongs to).
-
-       .. image:: ../images/eleminfo2.png 
-               :align: center
-
-       .. centered::
-               *"Element Info"* page, element information
-
-The user can either input the ID of a node or element he wants to analyze directly in the dialog box or select the node(s) or element(s) in the 3D viewer.
-
-If **Show IDs** is activated, IDs of selected nodes or elements are displayed in the 3D viewer.
-
-.. note::
-       The information about the groups, to which the node or element belongs, can be shown in a short or in a detailed form. By default, for performance reasons, this information is shown in a short form (group names only). The detailed information on groups can be switched on via :ref:`Show details on groups in element information tab <group_detail_info_pref>` option of :ref:`mesh_preferences_page`.
-
-.. _mesh_addition_info_anchor:
-
-Additional Information
-######################
-
-The **Additional Info** tab page of the dialog box provides an additional information on the selected object: mesh, sub-mesh or group.
-
-For a mesh object, the following information is shown:
-
-* Name
-* Type: based on geomerty, imported, standalone
-* Shape (if mesh is based on geometry)
-* File (if mesh is imported from the file)
-* Groups
-* Sub-meshes
-
-.. image:: ../images/addinfo_mesh.png
-       :align: center
-
-.. centered::
-       *"Additional Info"* page, mesh information
-
-
-For a sub-mesh object, the following information is shown:
-
-* Name
-* Parent mesh
-* Shape
-
-.. image:: ../images/addinfo_submesh.png
-       :align: center
-
-.. centered::
-       *"Additional Info"* page, sub-mesh information
-
-
-.. _mesh_addition_info_group_anchor:
-
-Additional info for Group
-=========================
-
-For a group object, the following information is shown:
-
-* Name
-* Parent mesh
-* Type: standalone, group on geometry, group on filter
-* Entity type: node, edge, face, volume
-* Size
-* Color
-* Number of underlying nodes (for non-nodal groups)
-
-.. image:: ../images/addinfo_group.png
-       :align: center
-
-.. centered::
-       *"Additional Info"* page, group information
-
-
-.. note::
-       For the performance reasons, the number of underlying nodes is computed only by demand. For this, the user should press the "Compute" button (see picture). Also, the number of underlying nodes is automatically calculated if the size of the group does not exceed the :ref:`Automatic nodes compute limit <nb_nodes_limit_pref>` preference value (zero value means no limit).
-
-.. _mesh_quality_info_anchor:
-
-Quality Information
-###################
-
-The **Quality Info** tab provides overall information about mesh quality controls  on the selected object - mesh, sub-mesh or mesh group:
-
-* Name;
-* Nodes information:
-       * Number of free nodes;
-       * Maximal number of elements connected to a node;
-       * Number of double nodes;
-* Edges information:
-       * Number of double edges;
-* Faces information:
-       * Number of double faces;
-       * Number of over-constrained faces;
-       * Aspect Ratio histogram;
-* Volume information:
-       * Number of double volumes;
-       * Number of over-constrained volumes;
-       * Aspect Ratio 3D histogram.
-
-.. image:: ../images/ctrlinfo.png
-       :align: center
-
-.. centered::
-       *"Quality Info"* page
-
-.. note::
-       It is possible to change **Double nodes tolerance**, which will be used upon consequent pressing *Compute* button. The default value of the tolerance can be set via the :ref:`Quality controls <dbl_nodes_tol_pref>` preferences.
-
-.. note::
-       For performance reasons, all quality control values for big meshes are computed only by demand. For this, press the *Compute* button. Also, values are automatically computed if the number of nodes / elements does not exceed the :ref:`Automatic controls compute limit <auto_control_limit_pref>` set via the :ref:`Mesh information <mesh_information_pref>` preferences (zero value means that there is no limit).
-
-.. note::
-       The plot functionality is available only if the GUI module is built with Plot 2D Viewer (option SALOME_USE_PLOT2DVIEWER is ON when building GUI module).
-
-See the :ref:`TUI Example <tui_viewing_mesh_infos>`.
-
-
-       
diff --git a/doc/salome/gui/SMESH/input/mesh_preferences.rst b/doc/salome/gui/SMESH/input/mesh_preferences.rst
deleted file mode 100644 (file)
index c7a5167..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-.. _mesh_preferences_page:
-
-****************
-Mesh preferences
-****************
-
-In the Mesh module you can set mesh preferences, which can be used right now or in later sessions with this module according to the preferences.
-
-General Preferences
-###################
-
-.. image:: ../images/pref21.png
-       :align: center
-
-.. _automatic_update_pref:
-
-* **Automatic Update**
-
-  * **Automatic Update** - if activated, the mesh in your viewer will be automatically updated after it's computation, depending on values of additional preferences specified below.
-  * **Size limit (elements)** - allows specifying the maximum number of elements in the resulting mesh for which the automatic updating of the presentation is performed. This option affects only :ref:`Compute <compute_anchor>` operation. Zero value means "no limit". Default value is 500 000 mesh elements. 
-  * **Incremental limit check** - if activated, the mesh size limit check is not applied to the total number of elements in the resulting mesh, it is applied iteratively to each entity type in the following order: 0D elements, edges, faces, volumes, balls. At each step the number of entities of a certain type is added to the total number of elements computed at the previous step - if the resulting number of elements does not exceed the size limit, the entities of this type are shown, otherwise the user is warned that some entities are not shown.
-
-.. _display_mode_pref:
-
-* **Display**
-
-  * **Fit All upon Show Only** - if activated, *Show Only* command additionally performs *Fit All* command.
-
-  * **Default display mode** - allows to set Wireframe, Shading, Nodes or Shrink :ref:`presentation mode <display_mode_page>` as default.
-
-.. _quadratic_2d_mode_pref:
-
-* **Representation of the 2D quadratic elements**
-
-  * **Default mode of the 2D quadratic elements** - allows to select either *Lines* or *Arcs* as a default :ref:`representation <quadratic_2d_mode>` of 1D and 2D :ref:`quadratic elements <adding_quadratic_elements_page>`.
-  * **Maximum Angle** - maximum deviation angle used by the application to build arcs.
-
-* **Quality Controls**
-
-  * **Display entity** - if activated, only currently :ref:`controlled <quality_page>` entities are displayed in the viewer and other entities are temporarily hidden. For example if you activate :ref:`Length <length_page>` quality control, which controls the length of mesh segments, then only mesh segments are displayed and faces and volumes are hidden. 
-  * **Use precision** - if activated, all quality controls will be computed at precision defined by **Number of digits after point** - as integers by default.
-
-.. _dbl_nodes_tol_pref:
-
-  * **Double nodes tolerance** - defines the maximal distance between two mesh nodes, at which they are considered coincident by :ref:`Double nodes <double_nodes_control_page>` quality control. This value is also used in :ref:`Quality Info <mesh_quality_info_anchor>` tab page of :ref:`Mesh Information <mesh_infos_page>` dialog.
-
-* **Mesh export**
-
-.. _export_auto_groups_pref:
-
-  * **Automatically create groups for MED export** - defines a default state of a corresponding check-box in :ref:`MED Export <export_auto_groups>` dialog.
-
-.. _group_export_warning_pref:
-
-  * **Show warning when exporting group** - if activated, a warning is displayed when exporting a group.
-
-.. _med_export_numbers_pref:
-
-  * **Save cell/node numbers to MED file** - if activated, optional node and cell numbers are saved to MED file.
-
-.. _medexport_z_tolerance_pref:
-
-  * **Z tolerance for MED export** - defines Z tolerance in :ref:`MED Export <export_auto_groups>` dialog.
-
-.. _show_comp_result_pref:
-
-* **Mesh computation**
-
-  * **Show a computation result notification** - allows to select the notification mode about a :ref:`mesh computation <compute_anchor>` result. There are 3 possible modes:
-               * **Never** - not to show the :ref:`result dialog <meshing_result_anchor>` at all;
-               * **Errors only** - the result dialog will be shown if there were some errors during a mesh computation;
-               * **Always** - show the result dialog after each mesh computation. This is a default mode.
-
-.. _mesh_information_pref:
-
-* **Mesh information**
-
-  * **Mesh element information** - allows changing the way :ref:`mesh element information <mesh_element_info_anchor>` is shown:
-               * **Simple** - as a plain text
-               * **Tree** - in a tree-like form
-
-.. _nb_nodes_limit_pref:
-
-  * **Automatic nodes compute limit** - allows defining the size limit for the :ref:`mesh groups <mesh_addition_info_group_anchor>` for which the number of underlying nodes is calculated automatically. If the group size exceeds the value set in the preferences, the user will have to press \em Compute button explicitly. Zero value means "no limit". By default the value is set to 100 000 mesh elements.
-
-.. _auto_control_limit_pref:
-
-  * **Automatic controls compute limit** - allows defining a maximal number of mesh elements for which the quality controls in the :ref:`Quality Information <mesh_quality_info_anchor>` tab page are calculated automatically. If the number of mesh elements exceeds the value set in the preferences, it is necessary to press **Compute** button explicitly to calculate a quality measure. Zero value means "no limit". By default the value is set to 3 000 mesh elements.
-
-.. _group_detail_info_pref:
-
-  * **Show details on groups in element information tab** - when this option is switched off (default), only the names of groups, to which the node or element belongs, are shown in the :ref:`Element Info <mesh_element_info_anchor>` tab of "Mesh Information" dialog box. If this option is switched on, the detailed information on groups is shown.
-  * **Dump base information** - allows dumping base mesh information to the file, see :ref:`Mesh Information <dump_mesh_infos>`.
-  * **Dump element information** - allows dumping element information to the file, see :ref:`Mesh Information <dump_mesh_infos>`.
-  * **Dump additional information** - allows dumping additional mesh information to the file, see :ref:`Mesh Information <dump_mesh_infos>`.
-  * **Dump controls information** - allows dumping quality mesh information to the file, see :ref:`Mesh Information <dump_mesh_infos>`.
-
-* **Automatic Parameters**
-
-.. _diagonal_size_ratio_pref:
-       
-  * **Ratio Bounding Box Diagonal / Max Size** - defines the ratio between the bounding box of the meshed object and the Max Size of segments. It is used as a default value of :ref:`1D Meshing Hypotheses <a1d_meshing_hypo_page>` defining length of segments, especially by :ref:`Max Size <max_length_anchor>` hypothesis.
-
-.. _nb_segments_pref:
-
-  * **Default Number of Segments** - defines the default number of segments in :ref:`Number of Segments <number_of_segments_anchor>` hypothesis.
-
-.. _use_meshgems_pref:
-
-  * **Use MeshGems meshers when assigning set of hypotheses** - if activated, commercial meshers of MeshGems suite are used instead of a free mesher NETGEN when assigning a set of hypotheses in Create Mesh/Sub-mesh dialog.
-  
-* **Mesh loading**
-
-  * **No mesh loading from study file at hypothesis modification** - if activated, the mesh data will not be loaded from the study file when a hypothesis is modified. This allows saving time by omitting loading data of a large mesh that is planned to be recomputed with other parameters.
-
-* **Input fields precision** - allows to adjust input precision of different parameters. The semantics of the precision values is described in detail in **Using input widgets** chapter of GUI documentation (Introduction to Salome Platform / Introduction to GUI / Using input widgets). In brief: **positive** precision value is the maximum allowed number of digits after the decimal point in the fixed-point format; **negative** precision value is the maximum allowed number of significant digits in mantissa in either the fixed-point or scientific format.
-
-  * **Length precision** - allows to adjust input precision of coordinates and dimensions.
-  * **Angular precision** - allows to adjust input precision of angles.
-  * **Length tolerance precision** - allows to adjust input precision of tolerance of coordinates and dimensions.
-  * **Parametric precision** - allows to adjust input precision of parametric values.
-  * **Area precision** - allows to adjust input precision of mesh element area.
-  * **Volume precision** - allows to adjust input precision of mesh element volume.
-
-* **Preview**
-
-.. _chunk_size_pref:
-
-  * **Sub-shapes preview chunk size** - allows to limit the number of previewed sub-shapes shown in the hypotheses creation dialog boxes, for example "Reverse Edges" parameter of :ref:`Number of Segments <number_of_segments_anchor>` hypothesis.
-
-* **Python Dump**
-
-  * **Historical python dump** - allows switching between *Historical* and *Snapshot* dump mode:
-
-    * In *Historical* mode, Python Dump script includes all commands performed by SMESH engine.
-    * In *Snapshot* mode, the commands relating to objects removed from the Study as well as the commands not influencing the current state of meshes are excluded from the script.
-
-.. _mesh_tab_preferences:
-
-Mesh Preferences
-################
-
-**Mesh** tab page contains parameters defining the way the mesh is displayed in the 3D Viewer.
-
-.. image:: ../images/pref22.png
-       :align: center
-
-* **Nodes** - allows to define default parameters for nodes, which will be applied for a newly created mesh only. Existing meshes can be customized using :ref:`Properties dialog box <colors_size_page>` available from the context menu of a mesh.
-
-  * **Color** -  allows to select the color of nodes. Click on the downward arrow near the colored line to access to the **Select Color** dialog box.
-  * **Type of marker** - allows to define the shape of nodes.
-  * **Scale of marker** - allows to define the size of nodes.
-
-* **Elements** - allows to define default parameters for different elements, which will be applied to a newly created mesh only. Existing meshes can be customized using :ref:`Properties dialog box <colors_size_page>` available from the context menu of a mesh.
-
-  * **Surface color**  - allows to select the surface color of 2D elements (seen in Shading mode). Click on the downward arrow near the colored line to access to the **Select Color** dialog box.
-  * **Back surface color** - allows to select the back surface color of 2D elements. This is useful to differ 2d elements with reversed orientation. Use the slider to select the color generated basing on the **Surface color** by changing its brightness and saturation.
-  * **Volume color** - allows to select the surface color of 3D elements (seen in Shading mode).
-  * **Reversed volume color** - allows to select the surface color of reversed 3D elements. Use the slider to select the color generated basing on the **Volume color** by changing its brightness and saturation.
-  * **0D element color** - allows to choose color of 0D mesh elements.
-  * **Ball color** - allows to choose color of discrete mesh elements (balls).
-  * **Outline color** - allows to select the color of element borders.
-  * **Wireframe color** - allows to select the color of borders of elements in the wireframe mode.
-  * **Preview color** - allows to select the preview color of the elements, which is used while :ref:`manual creation of elements <adding_nodes_and_elements_page>`.
-  * **Size of 0D elements** - specifies default size of 0D elements.
-  * **Size of ball elements** - specifies default size of discrete elements (balls).
-  * **Scale factor of ball elements** - specifies default scale factor of discrete elements (balls) allowing to adjust their size in the Viewer.
-  * **Line width** - allows to define the width of 1D elements (segments).
-  * **Outline width** - allows to define the width of borders of 2D and 3D elements (shown in the Shading mode).
-  * **Shrink coef.** - allows to define relative size of a shrunk element compared a non-shrunk element in percents in the shrink mode.
-
-* **Groups**
-
-  * **Names color** - specifies color of group names to be used in the 3D viewer.
-  * **Default color** - specifies the default group color, which is used to create a new mesh group (see :ref:`Create Group dialog box <creating_groups_page>`).
-
-* **Numbering** allows to define properties of numbering functionality:
-
-  * **Nodes** - specifies text properties of nodes numbering (font family, size, attributes, color).
-  * **Elements** - same for elements.
-
-* **Orientation of Faces** - allows to define default properties of orientation vectors. These preferences will be applied to the newly created meshes only; properties of existing meshes can be customized using :ref:`Properties dialog box <colors_size_page>` available from the context menu of a mesh.
-
-  * **Color** - allows to define the color of orientation vectors;
-  * **Scale** - allows to define the size of orientation vectors;
-  * **3D Vector** - allows to choose between 2D planar and 3D vectors.
-
-Selection Preferences
-#####################
-
-.. image:: ../images/pref23.png
-       :align: center
-
-* **Selection** - performed with mouse-indexing (preselection) and left-clicking on an object, whose appearance changes as defined in the **Preferences**.
-
-  * **Object color** - allows to select the color of mesh (edges and borders of meshes) of the selected entity. Click on the colored line to access to the **Select Color** dialog box.
-  * **Element color** - allows to select the color of surface of selected elements (seen in Shading mode). Click on the colored line to access to the **Select Color** dialog box.
-
-* **Preselection** - performed with mouse-indexing on an object, whose appearance changes as defined in the **Preferences**.
-
-  * **Highlight color** - allows to select the color of mesh (edges and borders of meshes) of the entity. Click on the colored line to access to the **Select Color** dialog box.
-
-* **Precision** - in this menu you can set the value of precision used for **Nodes**, **Elements** and **Objects**.
-
-Scalar Bar Preferences
-######################
-
-.. image:: ../images/pref24.png
-       :align: center
-
-.. note::
-       The following settings are default and will be applied to a newly created mesh only. Existing meshes can be customized using local :ref:`Scalar Bar Properties dialog box <scalar_bar_dlg>` available from the context menu of a mesh.
-
-* **Font** - in this menu you can set type, face and color of the font of **Title** and **Labels**.
-
-* **Colors & Labels** - in this menu you can set the **number of colors** and the **number of labels** in use.
-
-* **Orientation** - here you can choose between vertical and horizontal orientation of the **Scalar Bar**.
-
-* **Origin & Size Vertical & Horizontal** - allows to define placement (**X** and **Y**) and lookout (**Width** and **Height**) of Scalar Bars.
-       * **X** - abscissa of the point of origin (from the left side).
-       * **Y** - ordinate of the origin of the bar (from the bottom).
-
-* **Distribution** in this menu you can Show/Hide distribution histogram of the values of the **Scalar Bar** and specify the **Coloring Type** of the histogram:
-       * **Multicolor** - the histogram is colored as **Scalar Bar**.
-       * **Monocolor** - the histogram is colored as selected with **Distribution color** selector.
-
-
diff --git a/doc/salome/gui/SMESH/input/mesh_through_point.rst b/doc/salome/gui/SMESH/input/mesh_through_point.rst
deleted file mode 100644 (file)
index 0065e24..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-.. _mesh_through_point_page:
-
-************
-Moving nodes
-************
-
-In mesh you can define a node at a certain point either
-
-* by movement of the node closest to the point or 
-* by movement of a selected node to the point.
-
-*To displace a node:*
-
-#. From the **Modification** menu choose the **Move node** item or click *"Move Node"* button in the toolbar.
-
-       .. image:: ../images/image67.png
-               :align: center
-
-       .. centered::
-               *"Move Node"* button
-
-   The following dialog will appear:
-
-       .. image:: ../images/meshtopass1.png
-               :align: center
-
-       .. centered::
-               Manual node selection
-
-
-       .. image:: ../images/meshtopass2.png
-               :align: center
-
-       .. centered::
-               Automatic node selection
-
-
-
-#. Specify the way of node selection: manually (the first radio button) or automatically (the second radio button).
-#. If the manual method is selected, select a node to move (X, Y, Z fields show the original coordinates of the node) or type the node ID.
-#. Enter the coordinates of the destination point. You can click **Update Destination** button to set the coordinates of the destination point equal to the coordinates of the node to move.
-#. Activate **Preview** check-box to show the result of move in the viewer.
-#. Click the **Apply** or **Apply and Close** button to confirm the operation.
-
-.. image:: ../images/moving_nodes1.png
-       :align: center
-
-.. centered::
-       The initial mesh
-
-.. image:: ../images/moving_nodes2.png
-       :align: center
-
-.. centered::
-       The modified mesh
-
-**See Also** a sample TUI Script of a :ref:`tui_moving_nodes` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/minimum_angle.rst b/doc/salome/gui/SMESH/input/minimum_angle.rst
deleted file mode 100644 (file)
index 9eb9ae1..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-.. _minimum_angle_page:
-
-*************
-Minimum angle
-*************
-
-**Minimum angle** mesh quality criterion consists of calculation of the minimum value of angle between two adjacent sides of a 2D meshing element (triangle or quadrangle).
-
-*To apply the Minimum angle quality criterion to your mesh:*
-
-.. |img| image:: ../images/image38.png
-
-#. Display your mesh in the viewer.
-#. Choose **Controls > Face Controls > Minimum angle** or click *"Minimum Angle"* button |img|.
-
-   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
-
-       .. image:: ../images/image92.jpg
-               :align: center
-
-**See Also** a sample TUI Script of a :ref:`tui_minimum_angle` filter.
-
diff --git a/doc/salome/gui/SMESH/input/modifying_meshes.rst b/doc/salome/gui/SMESH/input/modifying_meshes.rst
deleted file mode 100644 (file)
index 3c9b7d1..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-.. _modifying_meshes_page:
-
-****************
-Modifying meshes
-****************
-
-Salome provides a vast specter of mesh modification and transformation operations, giving the possibility to:
-
-* :ref:`Add <adding_nodes_and_elements_page>` mesh elements from nodes to polyhedrons at an arbitrary place in the mesh.
-* :ref:`Add quadratic <adding_quadratic_elements_page>` mesh elements from quadratic segments to quadratic hexahedrons at an arbitrary place in the mesh.
-* :ref:`Remove <removing_nodes_and_elements_page>` any existing mesh elements and nodes.
-* :ref:`Convert linear mesh to quadratic <convert_to_from_quadratic_mesh_page>`, or vice versa.
-* :ref:`Generate boundary elements <make_2dmesh_from_3d_page>`.
-* :ref:`Translate <translation_page>` in the indicated direction the mesh or some of its elements.
-* :ref:`Rotate <rotation_page>` by the indicated axis and angle the mesh or some of its elements.
-* :ref:`Scale <scale_page>` the mesh or some of its elements.
-* :ref:`Mirror <symmetry_page>` the mesh through a point, a vector or a plane of symmetry.
-* :ref:`double_nodes_page`. Duplication of nodes can be useful to emulate a crack in the model.
-* :ref:`Merge Nodes<merging_nodes_page>` coincident within the indicated tolerance.
-* :ref:`Merge Elements <merging_elements_page>` based on the same nodes.
-* Create an :ref:`extrusion <extrusion_page>` along a vector or by normal to a discretized surface.
-* Create an :ref:`extrusion along a path <extrusion_along_path_page>`.
-* Create elements by :ref:`revolution <revolution_page>` of the selected nodes and elements.
-* :ref:`Move Nodes <mesh_through_point_page>` to an arbitrary location with consequent transformation of all adjacent elements.
-* :ref:`Change orientation <changing_orientation_of_elements_page>` of the selected elements.
-* :ref:`Orient faces <reorient_faces_page>` by several means.
-* Unite meshes by :ref:`sewing <sewing_meshes_page>` free borders, border to side or side elements.
-* :ref:`Invert an edge <diagonal_inversion_of_elements_page>` between neighboring triangles.
-* :ref:`Unite two triangles <uniting_two_triangles_page>`.
-* :ref:`Unite several adjacent triangles <uniting_set_of_triangles_page>`.
-* :ref:`Cut a quadrangle <cutting_quadrangles_page>` into two triangles.
-* :ref:`Split <split_to_tetra_page>` volumic elements into tetrahedra or prisms.
-* :ref:`Split bi-quadratic <split_biquad_to_linear_page>` elements into linear ones without creation of additional nodes.
-* :ref:`Smooth <smoothing_page>` elements, reducung distortions in them by adjusting the locations of nodes.
-* Apply :ref:`pattern mapping <pattern_mapping_page>`.
-* :ref:`generate_flat_elements_page`.
-* :ref:`cut_mesh_by_plane_page`.
-
-
-.. note::
-       You can use these operations to :ref:`modify the mesh <edit_anchor>` of a lower dimension before generation of the mesh of a higher dimension.
-
-.. note::
-       It is possible to use the variables defined in the SALOME **NoteBook** to specify the numerical parameters used for modification of any object.
-
-
-**Table of Contents**
-
-.. toctree::
-   :titlesonly:
-
-   adding_nodes_and_elements.rst
-   adding_quadratic_elements.rst 
-   removing_nodes_and_elements.rst 
-   translation.rst
-   rotation.rst
-   scale.rst
-   symmetry.rst
-   double_nodes_page.rst 
-   sewing_meshes.rst
-   merging_nodes.rst
-   merging_elements.rst
-   mesh_through_point.rst 
-   diagonal_inversion_of_elements.rst 
-   uniting_two_triangles.rst 
-   uniting_set_of_triangles.rst
-   changing_orientation_of_elements.rst
-   reorient_faces.rst
-   cutting_quadrangles.rst
-   split_to_tetra.rst
-   split_biquad_to_linear.rst
-   smoothing.rst
-   extrusion.rst
-   extrusion_along_path.rst
-   revolution.rst
-   pattern_mapping.rst
-   convert_to_from_quadratic_mesh.rst
-   make_2dmesh_from_3d.rst
-   generate_flat_elements.rst
-   cut_mesh_by_plane.rst
-
diff --git a/doc/salome/gui/SMESH/input/modules.rst b/doc/salome/gui/SMESH/input/modules.rst
deleted file mode 100644 (file)
index 41915c4..0000000
+++ /dev/null
@@ -1,530 +0,0 @@
-########################
-Structured documentation
-########################
-
-.. contents::
-
-.. currentmodule:: smeshBuilder
-
-***************
-Creating meshes
-***************
-
-.. autosummary::
-
-   smeshBuilder.Concatenate
-   smeshBuilder.CopyMesh
-
-Importing and exporting meshes
-==============================
-
-.. autosummary::
-
-   smeshBuilder.CreateMeshesFromUNV
-   smeshBuilder.CreateMeshesFromMED
-   smeshBuilder.CreateMeshesFromSTL
-   smeshBuilder.CreateMeshesFromCGNS
-   smeshBuilder.CreateMeshesFromGMF
-   Mesh.ExportMED
-   Mesh.ExportUNV
-   Mesh.ExportSTL
-   Mesh.ExportCGNS
-   Mesh.ExportDAT
-   Mesh.ExportGMF
-
-
-Constructing meshes
-===================
-
-.. autosummary::
-
-   smeshBuilder.Mesh
-   Mesh.SetName
-   Mesh.SetMeshOrder
-   Mesh.Compute
-   Mesh.Evaluate
-   Mesh.Clear
-   Mesh.GetMesh
-   Mesh.GetShape
-   Mesh.HasShapeToMesh
-   Mesh.GetComputeErrors
-   Mesh.GetAlgoState
-   Mesh.GetFailedShapes
-   Mesh.GetMeshOrder
-
-Defining Algorithms
-===================
-
-.. autosummary::
-
-   Mesh.Segment
-   Mesh.Triangle
-   Mesh.Quadrangle
-   Mesh.Hexahedron
-   Mesh.Prism
-   Mesh.BodyFitted
-   Mesh.Projection1D
-   Mesh.Projection2D
-   Mesh.Projection1D2D
-   Mesh.Projection3D
-   Mesh.UseExisting1DElements
-   Mesh.UseExisting2DElements
-   Mesh.UseExistingSegments
-   Mesh.UseExistingFaces
-   Mesh.AutomaticTetrahedralization
-   Mesh.AutomaticHexahedralization
-   smesh_algorithm.Mesh_Algorithm
-
-Defining hypotheses
-===================
-
-.. currentmodule:: StdMeshersBuilder
-
-1D Meshing Hypotheses
----------------------
-
-.. autosummary::
-
-   StdMeshersBuilder_Segment.NumberOfSegments
-   StdMeshersBuilder_Segment.LocalLength
-   StdMeshersBuilder_Segment.MaxSize
-   StdMeshersBuilder_Segment.Arithmetic1D
-   StdMeshersBuilder_Segment.GeometricProgression
-   StdMeshersBuilder_Segment.FixedPoints1D
-   StdMeshersBuilder_Segment.StartEndLength
-   StdMeshersBuilder_Segment.Adaptive
-   StdMeshersBuilder_Segment.Deflection1D
-   StdMeshersBuilder_Segment.AutomaticLength
-   StdMeshersBuilder_Segment_Python.PythonSplit1D
-
-2D Meshing Hypotheses
----------------------
-
-.. autosummary::
-
-   StdMeshersBuilder_Triangle_MEFISTO.MaxElementArea
-   StdMeshersBuilder_Triangle_MEFISTO.LengthFromEdges
-   StdMeshersBuilder_Quadrangle.QuadrangleParameters
-   StdMeshersBuilder_Quadrangle.QuadranglePreference
-   StdMeshersBuilder_Quadrangle.TrianglePreference
-   StdMeshersBuilder_Quadrangle.Reduced
-   StdMeshersBuilder_Quadrangle.TriangleVertex
-
-Additional Hypotheses
----------------------
-
-.. autosummary::
-
-   smesh_algorithm.Mesh_Algorithm.ViscousLayers
-   smesh_algorithm.Mesh_Algorithm.ViscousLayers2D
-   StdMeshersBuilder.StdMeshersBuilder_Segment.Propagation
-   StdMeshersBuilder.StdMeshersBuilder_Segment.PropagationOfDistribution
-   StdMeshersBuilder.StdMeshersBuilder_Segment.QuadraticMesh
-
-Constructing sub-meshes
-=======================
-
-.. currentmodule:: smeshBuilder
-
-.. autosummary::
-
-   Mesh.GetSubMesh
-   Mesh.ClearSubMesh
-
-Editing Meshes   
-==============
-
-.. autosummary::
-
-   Mesh.AddHypothesis
-   Mesh.RemoveHypothesis
-   Mesh.RemoveGlobalHypotheses
-   Mesh.GetHypothesisList
-   Mesh.IsUsedHypothesis
-
-*****************
-Grouping elements
-*****************
-
-.. autosummary::
-
-   Mesh.SetAutoColor
-   Mesh.GetAutoColor
-   Mesh.HasDuplicatedGroupNamesMED
-   
-Creating groups
-===============
-
-.. autosummary::
-
-   Mesh.CreateEmptyGroup
-   Mesh.Group
-   Mesh.GroupOnGeom
-   Mesh.GroupOnFilter
-   Mesh.MakeGroupByIds
-   Mesh.MakeGroup
-   Mesh.MakeGroupByCriterion
-   Mesh.MakeGroupByCriteria
-   Mesh.MakeGroupByFilter
-   Mesh.FaceGroupsSeparatedByEdges
-   Mesh.CreateDimGroup
-   Mesh.ConvertToStandalone
-   Mesh.GetGroups
-   Mesh.NbGroups
-   Mesh.GetGroupNames
-   Mesh.GetGroupByName
-
-
-Operations on groups
-====================
-
-.. autosummary::
-
-   Mesh.UnionGroups
-   Mesh.UnionListOfGroups
-   Mesh.IntersectGroups
-   Mesh.IntersectListOfGroups
-   Mesh.CutGroups
-   Mesh.CutListOfGroups
-
-Deleting Groups
-===============
-
-.. autosummary::
-
-   Mesh.RemoveGroup
-   Mesh.RemoveGroupWithContents
-
-****************
-Mesh Information
-****************
-
-.. autosummary::
-
-   smeshBuilder.GetMeshInfo
-   Mesh.GetEngine
-   Mesh.GetGeomEngine
-   Mesh.GetGeometryByMeshElement
-   Mesh.MeshDimension
-   Mesh.GetMeshInfo
-   Mesh.NbNodes
-   Mesh.NbElements
-   Mesh.Nb0DElements
-   Mesh.NbBalls
-   Mesh.NbEdges
-   Mesh.NbEdgesOfOrder
-   Mesh.NbFaces
-   Mesh.NbFacesOfOrder
-   Mesh.NbTriangles
-   Mesh.NbTrianglesOfOrder
-   Mesh.NbBiQuadTriangles
-   Mesh.NbQuadrangles
-   Mesh.NbQuadranglesOfOrder
-   Mesh.NbBiQuadQuadrangles
-   Mesh.NbPolygons
-   Mesh.NbVolumes
-   Mesh.NbVolumesOfOrder
-   Mesh.NbTetras
-   Mesh.NbTetrasOfOrder
-   Mesh.NbHexas
-   Mesh.NbHexasOfOrder
-   Mesh.NbTriQuadraticHexas
-   Mesh.NbPyramids
-   Mesh.NbPyramidsOfOrder
-   Mesh.NbPrisms
-   Mesh.NbPrismsOfOrder
-   Mesh.NbHexagonalPrisms
-   Mesh.NbPolyhedrons
-   Mesh.NbSubMesh
-   Mesh.GetNodesId
-   Mesh.GetElementsId
-   Mesh.GetElementsByType
-   Mesh.GetElementType
-   Mesh.GetElementGeomType
-   Mesh.GetElementShape
-   Mesh.GetSubMeshElementsId
-   Mesh.GetSubMeshNodesId
-   Mesh.GetSubMeshElementType
-   Mesh.GetNodeXYZ
-   Mesh.GetNodeInverseElements
-   Mesh.GetNodePosition
-   Mesh.GetElementPosition
-   Mesh.GetShapeID
-   Mesh.GetShapeIDForElem
-   Mesh.GetElemNbNodes
-   Mesh.GetElemNode
-   Mesh.GetElemNodes
-   Mesh.IsMediumNode
-   Mesh.IsMediumNodeOfAnyElem
-   Mesh.ElemNbEdges
-   Mesh.ElemNbFaces
-   Mesh.GetElemFaceNodes
-   Mesh.GetFaceNormal
-   Mesh.FindElementByNodes
-   Mesh.GetElementsByNodes
-   Mesh.IsPoly
-   Mesh.IsQuadratic
-   Mesh.GetBallDiameter
-   Mesh.BaryCenter
-   Mesh.FindNodeClosestTo
-   Mesh.FindElementsByPoint
-   Mesh.GetPointState
-   Mesh.Get1DBranches
-   Mesh.Dump
-
-******************************
-Quality controls and Filtering
-******************************
-
-.. autosummary::
-
-   smeshBuilder.GetEmptyCriterion
-   smeshBuilder.GetCriterion
-   smeshBuilder.GetFilter
-   smeshBuilder.GetFilterFromCriteria
-   smeshBuilder.GetFunctor
-   Mesh.GetIdsFromFilter
-   Mesh.GetMaxElementLength
-   Mesh.GetAspectRatio
-   Mesh.GetWarping
-   Mesh.GetMinimumAngle
-   Mesh.GetTaper
-   Mesh.GetSkew
-   Mesh.GetMinMax
-   Mesh.IsManifold
-   Mesh.IsCoherentOrientation2D
-
-************
-Measurements
-************
-
-.. autosummary::
-
-   smeshBuilder.MinDistance
-   smeshBuilder.GetMinDistance
-   smeshBuilder.BoundingBox
-   smeshBuilder.GetBoundingBox
-   smeshBuilder.GetLength
-   smeshBuilder.GetArea
-   smeshBuilder.GetVolume
-   smeshBuilder.GetAngle
-   Mesh.GetFreeBorders
-   Mesh.MinDistance
-   Mesh.GetMinDistance
-   Mesh.BoundingBox
-   Mesh.GetBoundingBox
-   Mesh.GetFunctor
-   Mesh.FunctorValue
-   Mesh.GetLength
-   Mesh.GetArea
-   Mesh.GetVolume
-   Mesh.GetAngle
-
-****************
-Modifying meshes
-****************
-
-.. autosummary::
-
-   smeshBuilder.GetPattern
-   Mesh.GetMeshEditor
-
-Adding nodes and elements
-=========================
-
-.. autosummary::
-
-   Mesh.AddNode
-   Mesh.Add0DElement
-   Mesh.Add0DElementsToAllNodes
-   Mesh.AddBall
-   Mesh.AddEdge
-   Mesh.AddFace
-   Mesh.AddPolygonalFace
-   Mesh.AddQuadPolygonalFace
-   Mesh.AddVolume
-   Mesh.AddPolyhedralVolume
-   Mesh.AddPolyhedralVolumeByFaces
-   Mesh.SetNodeOnVertex
-   Mesh.SetNodeOnEdge
-   Mesh.SetNodeOnFace
-   Mesh.SetNodeInVolume
-   Mesh.SetMeshElementOnShape
-   Mesh.Make2DMeshFrom3D
-   Mesh.MakeBoundaryMesh
-   Mesh.MakeBoundaryElements
-   Mesh.Append
-   Mesh.GetLastCreatedNodes
-   Mesh.GetLastCreatedElems
-   Mesh.ClearLastCreated
-
-Removing nodes and elements
-===========================
-
-.. autosummary::
-
-   Mesh.RemoveElements
-   Mesh.RemoveNodes
-   Mesh.RemoveOrphanNodes
-
-Modifying nodes and elements
-============================
-
-.. autosummary::
-
-   Mesh.MoveNode
-   Mesh.MoveClosestNodeToPoint
-   Mesh.MeshToPassThroughAPoint
-   Mesh.ChangeElemNodes
-
-Convert to/from Quadratic Mesh
-==============================
-
-.. autosummary::
-
-   Mesh.ConvertToQuadratic
-   Mesh.ConvertFromQuadratic
-
-Extrusion and Revolution
-========================
-
-.. autosummary::
-
-   Mesh.RotationSweepObjects
-   Mesh.RotationSweep
-   Mesh.RotationSweepObject
-   Mesh.RotationSweepObject1D
-   Mesh.RotationSweepObject2D
-   Mesh.ExtrusionSweepObjects
-   Mesh.ExtrusionSweep
-   Mesh.ExtrusionByNormal
-   Mesh.ExtrusionSweepObject
-   Mesh.ExtrusionSweepObject1D
-   Mesh.ExtrusionSweepObject2D
-   Mesh.AdvancedExtrusion
-   Mesh.ExtrusionAlongPathObjects
-   Mesh.ExtrusionAlongPathX
-   Mesh.ExtrusionAlongPath
-   Mesh.ExtrusionAlongPathObject
-   Mesh.ExtrusionAlongPathObject1D
-   Mesh.ExtrusionAlongPathObject2D
-
-Transforming meshes (Translation, Rotation, Symmetry, Sewing, Merging)
-======================================================================
-
-.. autosummary::
-
-   Mesh.Mirror
-   Mesh.MirrorMakeMesh
-   Mesh.MirrorObject
-   Mesh.MirrorObjectMakeMesh
-   Mesh.Translate
-   Mesh.TranslateMakeMesh
-   Mesh.TranslateObject
-   Mesh.TranslateObjectMakeMesh
-   Mesh.Rotate
-   Mesh.RotateMakeMesh
-   Mesh.RotateObject
-   Mesh.RotateObjectMakeMesh
-   Mesh.FindCoincidentNodes
-   Mesh.FindCoincidentNodesOnPart
-   Mesh.MergeNodes
-   Mesh.FindEqualElements
-   Mesh.MergeElements
-   Mesh.MergeEqualElements
-   Mesh.FindFreeBorders
-   Mesh.FillHole
-   Mesh.FindCoincidentFreeBorders
-   Mesh.SewCoincidentFreeBorders
-   Mesh.SewFreeBorders
-   Mesh.SewConformFreeBorders
-   Mesh.SewBorderToSide
-   Mesh.SewSideElements
-
-Changing orientation of elements
-================================
-
-.. autosummary::
-
-   Mesh.Reorient
-   Mesh.ReorientObject
-   Mesh.Reorient2D
-   Mesh.Reorient2DByNeighbours
-   Mesh.Reorient2DBy3D
-
-Uniting triangles
-=================
-
-.. autosummary::
-
-   Mesh.DeleteDiag
-   Mesh.TriToQuad
-   Mesh.TriToQuadObject
-
-Cutting elements
-================
-
-.. autosummary::
-
-   Mesh.InverseDiag
-   Mesh.QuadToTri
-   Mesh.QuadToTriObject
-   Mesh.QuadTo4Tri
-   Mesh.SplitQuad
-   Mesh.SplitQuadObject
-   Mesh.BestSplit
-   Mesh.SplitVolumesIntoTetra
-   Mesh.SplitBiQuadraticIntoLinear
-   Mesh.SplitHexahedraIntoPrisms
-   Mesh.SplitQuadsNearTriangularFacets
-   Mesh.SplitHexaToTetras
-   Mesh.SplitHexaToPrisms
-
-Smoothing
-=========
-
-.. autosummary::
-
-   Mesh.Smooth
-   Mesh.SmoothObject
-   Mesh.SmoothParametric
-   Mesh.SmoothParametricObject
-
-Duplication of nodes and elements (to emulate cracks)
-=====================================================
-
-.. autosummary::
-
-   Mesh.DoubleElements
-   Mesh.DoubleNodes
-   Mesh.DoubleNode
-   Mesh.DoubleNodeGroup
-   Mesh.DoubleNodeGroups
-   Mesh.DoubleNodeElem
-   Mesh.DoubleNodeElemInRegion
-   Mesh.DoubleNodeElemGroup
-   Mesh.DoubleNodeElemGroupInRegion
-   Mesh.DoubleNodeElemGroups
-   Mesh.DoubleNodeElemGroupsInRegion
-   Mesh.AffectedElemGroupsInRegion
-   Mesh.DoubleNodesOnGroupBoundaries
-   Mesh.CreateFlatElementsOnFacesGroups
-   
-Renumbering nodes and elements
-==============================
-
-.. autosummary::
-
-   Mesh.RenumberNodes
-   Mesh.RenumberElements
-
-
-*****************
-Auxiliary methods
-*****************
-
-.. autosummary::
-
-   GetName
-   DegreesToRadians
-   New
diff --git a/doc/salome/gui/SMESH/input/numbering.rst b/doc/salome/gui/SMESH/input/numbering.rst
deleted file mode 100644 (file)
index 16cc06f..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-.. _numbering_page: 
-
-*********
-Numbering
-*********
-
-Displaying node numbers
-#######################
-
-In MESH you can display the ID numbers of all nodes of your mesh in the viewer.
-
-*To display ID numbers of nodes:*
-
-#. Display your mesh in the viewer
-#. Right-click on the mesh in the 3D viewer and from the associated pop-up menu choose **Numbering > Display Nodes #**.
-
-.. image:: ../images/image96.jpg
-       :align: center
-
-.. centered::
-       Displayed node numbers
-
-
-Displaying element numbers
-##########################
-
-In MESH you can display the ID numbers of all meshing elements composing your mesh in the viewer.
-
-*To display ID numbers of elements:*
-
-#. Display your mesh in the viewer
-#. Right-click on the mesh in the 3D viewer and from the associated pop-up menu choose **Numbering > Display Elements #**.
-
-.. image:: ../images/image95.jpg 
-       :align: center
-
-.. centered::
-       Displayed element numbers
diff --git a/doc/salome/gui/SMESH/input/over_constrained_faces.rst b/doc/salome/gui/SMESH/input/over_constrained_faces.rst
deleted file mode 100644 (file)
index 2ff5bac..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-.. _over_constrained_faces_page:
-
-**********************
-Over-constrained faces
-**********************
-
-This mesh quality control highlights faces sharing only one border
-with other faces. In other words, the faces having all their nodes on
-the free border of the 2D mesh are highlighted.
-
-.. note::
-       The highlighted faces are actually over-constrained only if, at the computation time, the boundary conditions on the borders where the nodes are located are all Dirichlet boundary conditions.
-
-.. image:: ../images/over_constrained_faces.png
-       :align: center
-
-.. centered::
-       Over-constrained face is displayed in red
-
-**See Also** a sample TUI Script of a :ref:`tui_over_constrained_faces` filter.  
-
-
diff --git a/doc/salome/gui/SMESH/input/over_constrained_volumes.rst b/doc/salome/gui/SMESH/input/over_constrained_volumes.rst
deleted file mode 100644 (file)
index 29c9416..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-.. _over_constrained_volumes_page:
-
-************************
-Over-constrained volumes
-************************
-
-This mesh quality control highlights volumes sharing only one border with other volumes.
-In other words, the volumes having all their nodes on the external border of the mesh are highlighted.
-
-.. note::
-       The highlighted volumes are actually over-constrained only if, at the computation time, the boundary conditions on the borders where the nodes are located are all Dirichlet boundary conditions.
-
-.. image:: ../images/over_constrained_volumes.png
-       :align: center
-
-.. centered::
-       Over-constrained volume is displayed in red.
-
-**See Also** a sample TUI Script of a :ref:`tui_over_constrained_volumes` filter.  
diff --git a/doc/salome/gui/SMESH/input/pattern_mapping.rst b/doc/salome/gui/SMESH/input/pattern_mapping.rst
deleted file mode 100644 (file)
index e88a291..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-.. _pattern_mapping_page:
-
-***************
-Pattern mapping
-***************
-
-About patterns
-##############
-
-The pattern describes a mesh to generate: positions of nodes within a
-geometrical domain and nodal connectivity of elements. A
-pattern also specifies the so-called key-points, i.e. the nodes that will be
-located at geometrical vertices. The pattern description is stored in
-\<pattern_name\>.smp file.
-
-The smp file contains 4 sections:
-
-       #. The first line indicates the total number of pattern nodes (N).
-       #. The next N lines describe nodes coordinates. Each line contains 2 node coordinates for a 2D pattern or 3 node coordinates for a 3D pattern. Note, that node coordinates of a 3D pattern can be defined only by relative values in range [0;1].
-       #. The key-points line contains the indices of the nodes to be mapped on geometrical vertices (for a 2D pattern only). Index n refers to the node described on the n-th line of section 2. The index of the first node is zero. For a 3D pattern the key points are not specified.
-       #. The remaining lines describe nodal connectivity of elements, one line for each element. Each line holds indices of nodes forming an element. Index n refers to the node described on the n-th line of section 2. The first node index is zero. There must be 3 or 4 indices on each line for a 2D pattern (only linear 2D elements are allowed) and 4, 5, 6 or 8 indices for a 3D pattern (only linear 3D elements are allowed).
-
-A 2D pattern must contain at least one element and at least one key-point. All key-points must lie on boundaries.
-
-A 3D pattern must contain at least one element.
-
-An example of a simple 2D pattern smp file:
-::
-
-       !!! SALOME 2D mesh pattern file
-       !!!
-       !!! Nb of points:
-       9
-               200     0       !- 0
-               100     0       !- 1
-                 0     0       !- 2
-                 0  -100       !- 3
-                 0  -200       !- 4
-               100  -200       !- 5
-               200  -200       !- 6
-               200  -100       !- 7
-               100  -100       !- 8
-       !!! Indices of 4 key-points
-        2 0 4 6
-       !!! Indices of points of 6 elements
-        0 1 8
-        8 5 6 7
-        2 3 8
-        8 3 4 5
-        8 7 0
-        8 1 2
-
-The image below provides a preview of the above pattern:
-
-.. image:: ../images/pattern2d.png
-       :align: center
-
-.. centered::
-       An example of a simple 3D pattern smp file:
-      
-::
-
-       !!! SALOME 3D mesh pattern file
-       !!!
-       !!! 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
-
-
-Application of pattern mapping
-##############################
-
-*To apply pattern mapping to a geometrical object or mesh elements:*
-
-.. |img| image:: ../images/image98.png
-
-From the **Modification** menu choose the **Pattern Mapping** item or click 
-*"Pattern mapping"* button |img| in the toolbar.
-
-
-The following dialog box will appear:
-
-For a **2D pattern**
-   
-
-.. image:: ../images/patternmapping1.png
-       :align: center
-
-In this dialog you should specify:
-
-* **Pattern**, which can be loaded from .smp pattern file previously created manually or generated automatically from an existing mesh or sub-mesh.
-* **Face** with the number of vertices equal to the number of key-points in the pattern; the number of key-points on internal boundaries of the pattern must also be equal to the number of vertices on internal boundaries of the face;
-* **Vertex** to which the first key-point should be mapped;
-
-
-Alternatively, it is possible to select **Refine selected mesh elements** check-box and apply the pattern to 
-
-* **Mesh Face** instead of a geometric Face
-* and select **Node** instead of vertex.
-
-
-Additionally it is possible to: 
-
-* **Reverse the order of key-points**. By default, the vertices of a face are ordered counterclockwise.
-* Enable to **Create polygons near boundary** 
-* and **Create polyhedrons near boundary**
-
-          
-For a **3D pattern**
-
-.. image:: ../images/patternmapping2.png
-       :align: center
-
-In this dialog you should specify:
-
-* **Pattern**, which can be loaded from .smp pattern file previously created manually or generated automatically from an existing mesh or sub-mesh.
-* A 3D block (Solid) object.
-* Two vertices that specify the order of nodes in the resulting mesh.
-
-
-Alternatively, it is possible to select **Refine selected mesh elements** check-box and apply the pattern to
-
-* One or several **Mesh volumes** instead of a geometric 3D object
-* and select two **Nodes** instead of vertices. 
-
-Additionally it is possible to:
-
-* Enable to **Create polygons near boundary** 
-* and **Create polyhedrons near boundary**
-
-
-
-Automatic Pattern Generation
-****************************
-
-To generate a pattern automatically from an existing mesh or sub-mesh, click **New** button.
-
-The following dialog box will appear:
-
-.. image:: ../images/a-patterntype1.png
-       :align: center
-
-In this dialog you should specify:
-
-
-* **Mesh or Sub-mesh**, which is a meshed geometrical face (for a 2D pattern) or a meshed solid block (for a 3D pattern). Mesh nodes lying on the face vertices become key-points of the pattern. 
-* A custom **Pattern Name** 
-* Additionally, for a 2D pattern you may choose to **Project nodes on the face** to get node coordinates instead of using "positions on face" generated by the mesher (if there is any). The faces having a seam edge cannot be used for automatic pattern creation.
-
-
-When a pattern is created from an existing mesh, two cases are possible:
-
-* A sub-mesh on a face/solid is selected. The pattern is created from the 2D/3D elements bound to the face/solid by the mesher. For a 2D pattern, the node coordinates are either "positions on face" computed by the mesher, or coordinates got by node projection on a geometrical surface, according to the user choice. For a 3D pattern, the node coordinates correspond to the nodes computed by the mesher.
-* A mesh, where the main shape is a face/solid, is selected. The pattern is created from all 2D/3D elements in a mesh. In addition, if all mesh elements of a 2D pattern are built by the mesher, the user can select how to get node coordinates, otherwise all nodes are projected on a face surface.
-
-
-Mapping algorithm
-#################
-
-The mapping algorithm for a 2D case is as follows:
-
-* The key-points are set counterclockwise in the order corresponding to their location on the pattern boundary. The first key-point is preserved.
-* The geometrical vertices corresponding to the key-points are found on face boundary. Here, "Reverse order of key-points" flag is set. 
-
-.. image:: ../images/image95.gif
-       :align: center
-
-* The boundary nodes of the pattern are mapped onto the edges of the face: a node located between two key-points on the pattern boundary is mapped on the geometrical edge limited by the corresponding geometrical vertices. The node position on the edge depends on its distance from the key-points. 
-
-.. image:: ../images/image96.gif
-       :align: center
-
-* The coordinates of a non-boundary node in the parametric space of the face are defined in the following way. In the parametric space of the pattern, the  node lies at the intersection of two iso-lines. Both of them intersect the pattern boundary at two points at least. If the mapped positions of boundary nodes are known, it is possible to find, where the points at the intersection of iso-lines and boundaries are mapped. Then it is possible to find the direction of mapped iso-line section and, finally, the positions of two nodes on two mapped isolines. The eventual mapped position of the node is found as an average of the positions on mapped iso-lines. 
-
-.. image:: ../images/image97.gif
-       :align: center
-
-The 3D algorithm is similar.
-
-**See Also** a sample TUI Script of a :ref:`tui_pattern_mapping` operation.
-
-
diff --git a/doc/salome/gui/SMESH/input/point_marker.rst b/doc/salome/gui/SMESH/input/point_marker.rst
deleted file mode 100644 (file)
index 2110fe3..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-.. _point_marker_page:
-
-************
-Point Marker
-************
-
-You can change the representation of points in
-the 3D viewer either by selecting one of the predefined
-shapes or by loading a custom texture from an external file.
-
-Standard point markers
-----------------------
-
-The Mesh module provides a set of predefined point marker shapes
-which can be used to display points in the 3D viewer.
-Each standard point marker has two attributes: type (defines shape
-form) and scale factor (defines shape size).
-
-.. image:: ../images/point_marker_widget1.png
-       :align: center
-
-
-.. image:: ../images/std_point_marker.png
-       :align: center
-
-.. centered::
-       Mesh presentation with standard point markers
-
-Custom point markers
---------------------
-
-It is also possible to load a point marker shape from an external file.
-This file should provide a description of the point texture as a set
-of lines; each line is represented as a sequence of "0" and "1" symbols,
-where "1" symbol means an opaque pixel and "0" symbol means a
-transparent pixel. The width of the texture corresponds to the length
-of the longest line in the file, expanded to the nearest byte-aligned
-value. The height of the texture is equal to the number of non-empty
-lines in the file. Note that missing symbols are replaced by "0".
-
-Here is a texture file sample:
-::
-
-       11111111
-       10000001
-       10011001
-       10111101
-       10111101
-       10011001
-       10000001
-       11111111
-
-
-.. image:: ../images/point_marker_widget2.png
-       :align: center
-
-
-.. image:: ../images/custom_point_marker.png 
-       :align: center
-
-.. centered::
-       Mesh presentation with custom point markers
diff --git a/doc/salome/gui/SMESH/input/prism_3d_algo.rst b/doc/salome/gui/SMESH/input/prism_3d_algo.rst
deleted file mode 100644 (file)
index 03dd68a..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-.. _prism_3d_algo_page:
-
-******************************
-Extrusion 3D meshing algorithm
-******************************
-
-Extrusion 3D algorithm can be used for meshing prisms, i.e. 3D shapes
-defined by two opposing faces having the same number of vertices and
-edges. These two faces should be connected by quadrangle "side" faces.
-
-.. image:: ../images/prism_mesh.png 
-       :align: center
-
-.. centered::
-       Clipping view of a mesh of a prism with non-planar base and top faces
-
-The prism is allowed to have sides composed of several faces. (A prism
-side is a row of faces (or one face) connecting the corresponding edges of
-the top and base faces). However, a prism 
-side can be split only vertically as indicated in the
-picture below. 
-
-.. image:: ../images/prism_ok_ko.png 
-       :align: center
-
-.. centered::
-       A suitable and an unsuitable prism
-
-In this picture, the left prism is suitable for meshing with 3D
-extrusion algorithm: it has six sides, two of which are split
-vertically. The right prism cannot be meshed with this
-algorithm because one of the prism sides is split horizontally (the
-splitting edge is highlighted).
-
-The algorithm can propagate 2D mesh not only between horizontal
-(i.e. base and top) faces of one prism but also between faces of prisms
-organized in a stack and between stacks sharing prism sides.
-
-.. _prism_stacks:
-
-.. image:: ../images/prism_stack.png 
-       :align: center
-
-.. centered::
-       Prism stacks
-
-This picture shows four neighboring prism stacks, each comprising two prisms.
-The shown sub-mesh is used by the algorithm to mesh
-all eight prisms in the stacks.
-
-To use *Extrusion 3D* algorithm you need to assign algorithms
-and hypotheses of lower dimensions as follows.
-(A sample picture below shows algorithms and hypotheses used to
-mesh a cylinder with prismatic volumes).
-
-.. image:: ../images/prism_needs_hyps.png 
-       :align: center
-
-The **Global** algorithms and hypotheses to be chosen at 
-:ref:`create_mesh_anchor` are:
-
-* 1D algorithm and hypothesis that will be applied for meshing (logically) vertical edges of the prism (which connect the top and the base faces of the prism). In the sample picture above these are "Regular_1D" algorithm and "Number of Segments" hypothesis named "Vertical Nb. Segments".
-
-
-The **Local** algorithms and hypotheses to be chosen at 
-:ref:`constructing_submeshes_page` are:
-
-* 1D and 2D algorithms and hypotheses that will be applied for meshing the top and the base prism :ref:`faces <submesh_shape_section>`. These faces can be meshed with any type of 2D elements: quadrangles, triangles, polygons or their mix. It is enough to define a sub-mesh on either the top or the base face. In the sample picture above, "NETGEN_1D2D" algorithm meshes "bottom disk" face with triangles. (1D algorithm is not assigned as "NETGEN_1D2D" does not require divided edges to create a 2D mesh.)
-  
-* Optionally you can define a 1D sub-mesh on some vertical :ref:`edges <submesh_shape_section>` of stacked prisms, which will override the global 1D hypothesis mentioned above. In the :ref:`Prism stacks <prism_stacks>` picture, the vertical division is not equidistant on the whole length because a "Number Of Segments" hypothesis with Scale Factor=3 is assigned to the highlighted edge.
-
-
-If *Extrusion 3D* algorithm is assigned to a sub-mesh in a mesh
-with multiple sub-meshes, the described above approach may not work as
-expected. For example the bottom face may be meshed by other algorithm
-before *Extrusion 3D* have a chance to project a mesh from the
-base face. This thing can happen with vertical edges as well. All
-these can lead to either a meshing failure or to an incorrect meshing.
-In such a case, it's necessary to explicitly define algorithms
-that *Extrusion 3D* implicitly applies in a simple case:
-
-* assign :ref:`projection_1D2D` algorithm to the top face and
-* assign a 1D algorithm to a group of all vertical edges.
-
-.. image:: ../images/image157.gif
-       :align: center
-
-.. centered::
-       Prism with Extrusion 3D meshing. Vertical division is different on neighbor edges because several local 1D hypotheses are assigned
-
-**See Also** a sample TUI Script of :ref:`tui_prism_3d_algo`.
-
-
diff --git a/doc/salome/gui/SMESH/input/projection_algos.rst b/doc/salome/gui/SMESH/input/projection_algos.rst
deleted file mode 100644 (file)
index ff0cbbb..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-.. _projection_algos_page:
-
-*********************
-Projection Algorithms
-*********************
-
-.. contents:: `Table of contents`
-
-Projection algorithms allow to define the mesh of a geometrical
-object by the projection of another already meshed geometrical object.
-
-.. note::
-       Source and target geometrical objects mush be topologically equal, i.e. they must have same number of sub-shapes, connected to corresponding counterparts.
-
-.. image:: ../images/topo_equality.png 
-       :align: center
-
-.. centered::
-       Topologically equal faces suitable for 2D projection.
-
-
-.. _projection_1D:
-
-Projection 1D
-=============
-
-**Projection 1D** algorithm allows to define the mesh of an edge (or group of edges)
-by the projection of another already meshed edge (or group of edges).
-
-To apply this algorithm select the edge to be meshed (indicated in
-the field **Geometry** of **Create mesh** dialog box),
-**Projection1D** in the list of 1D algorithms and click the
-*"Add Hypothesis"* button.
-The following dialog box will appear:
-
-.. image:: ../images/projection_1d.png
-       :align: center
-
-In this dialog you can define
-
-* the **Name** of the algorithm,
-* the already meshed **Source Edge** and 
-* the **Source Mesh** (It can be omitted only when projecting a sub-mesh on another one of the same Mesh).
-* It could also be necessary to define the orientation of edges,  which is done by indicating the **Source Vertex** being the first point of the **Source Edge** and the **Target Vertex** being the first point of the edge being meshed.
-
-
-For a group of edges, **Source** and **Target** vertices should be
-shared by only one edge of the group. If **Source** and **Target**
-vertices are specified, the edges in the group must be connected.
-The source and target groups must contain equal number of edges
-and they must form topologically equal structures.
-
-.. _projection_2D:
-
-Projection 2D
-=============
-
-
-**Projection 2D** algorithm allows to define the mesh of a face
-(or group of faces) by the projection of another already meshed face
-(or group of faces). This algorithm works only if all edges of the
-target face have been discretized into the same number of
-segments as corresponding edges of the source face.
-
-To apply this algorithm select the face to be meshed (indicated in the
-field **Geometry** of **Create mesh** dialog box), **Projection
-2D** in the list of 2D algorithms and click the *"Add Hypothesis"* button. The following dialog box will appear:
-
-.. image:: ../images/projection_2d.png
-       :align: center
-
-In this dialog you can define 
-
-* the **Name** of the algorithm, 
-* the already meshed **Source Face** and 
-* the **Source Mesh** (It can be omitted only when projecting a submesh on another one of the same Mesh). 
-* It could also be necessary to define the orientation of mesh on the face, which is done by indicating two **Source Vertices**, which belong to the same edge of the **Source Face**, and two **Target Vertices**, which belong to the same edge of the face being meshed.
-
-
-The groups of faces are suitable for this algorithm only if they
-contain an equal number of faces and form topologically equal
-structures.
-
-.. _projection_1D2D:
-
-Projection 1D-2D
-================
-
-**Projection 1D-2D** algorithm differs from
-:ref:`projection_2D` algorithm in one aspect: it generates mesh segments
-on edges of the face according to the projected 2D elements; thus it
-does not require the edges to be meshed by any other 1D algorithm;
-moreover it does not allow to mesh edges of the face using another
-algorithm via definition of sub-meshes.
-
-
-.. _projection_3D:
-
-Projection 3D
-=============
-
-**Projection 3D** algorithm allows to define the mesh of a shape by
-the projection of another already meshed shape.  This algorithm works
-only if all faces and edges of the target shape have been meshed as 1D-2D
-Projections of the faces and edges of the source shape. Another
-limitation is that this algorithm currently works only on boxes.
-
-To apply this algorithm select the solid to be meshed (indicated in
-the field **Geometry** of **Create mesh** dialog box), **Projection 3D** 
-in the list of 3D algorithms and click the  button. The
-following dialog box will appear:
-
-.. image:: ../images/projection_3d.png
-       :align: center
-
-In this menu you can define the **Name** of the algorithm, the already
-meshed source **3D shape** and the **Mesh** (It can be omitted only when 
-projecting a submesh on another one from the same global Mesh). 
-It could also be necessary to define the orientation of mesh on the shape, which is
-done by indicating two **Source Vertices**, which belong to the same edge
-of the source **3D Shape**, and two **Target Vertices**, which belong to the
-same edge of the source **3D Shape**.
-
-**See Also** a sample TUI Script of a 
-:ref:`tui_projection`.
-
-
-
diff --git a/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst b/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst
deleted file mode 100644 (file)
index 0cc1979..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-.. _quad_from_ma_algo_page:
-
-***************************************************
-Medial Axis Projection Quadrangle meshing algorithm
-***************************************************
-
-Medial Axis Projection algorithm can be used for meshing faces with
-sinuous borders and a channel-like shape, for which it can be
-difficult to define 1D hypotheses such that to obtain a good shape of
-resulting quadrangles. The algorithm can be also applied to faces with ring
-topology, which can be viewed as a closed 'channel'. In the latter
-case radial discretization of a ring can be specified by
-using *Number of Layers* or *Distribution of Layers*
-hypothesis.
-
-.. image:: ../images/quad_from_ma_mesh.png 
-       :align: center
-
-.. centered::
-       A mesh of a river model (to the left) and of a ring-face (to the right)
-
-The algorithm provides proper shape of quadrangles by constructing Medial
-Axis between sinuous borders of the face and using it to
-discretize the borders. (Shape of quadrangles can be not perfect at
-locations where opposite sides of a 'channel' are far from being parallel.)
-
-.. image:: ../images/quad_from_ma_medial_axis.png 
-       :align: center
-
-.. centered::
-       Medial Axis between two blue sinuous borders
-
-The Medial Axis is used in two ways:
-
-#. If there is a sub-mesh on a sinuous border, then the nodes of this border are mapped to the opposite border via the Medial Axis.
-#. If there are no sub-meshes on sinuous borders, then the part of the Medial Axis that can be mapped to both borders is discretized using a 1D hypothesis assigned to the face or its ancestor shapes, and the division points are mapped from the Medial Axis to both borders to find positions of nodes.
-
-.. image:: ../images/quad_from_ma_ring_mesh.png 
-       :align: center
-
-.. centered::
-       Mesh depends on defined sub-meshes: to the left - sub-meshes on both wires, to the right - a sub-mesh on internal wire only
-
-
-**See Also** a sample TUI Script of a :ref:`tui_quad_ma_proj_algo`.
-
diff --git a/doc/salome/gui/SMESH/input/quad_ijk_algo.rst b/doc/salome/gui/SMESH/input/quad_ijk_algo.rst
deleted file mode 100644 (file)
index fdc6101..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-.. _quad_ijk_algo_page:
-
-*************************************
-Quadrangle: Mapping meshing algorithm
-*************************************
-
-**Quadrangle: Mapping** meshing algorithm is intended for creating
-all-quadrangle and quad-dominant meshes on faces without holes and
-bound by at least three edges.
-
-The algorithm can create mesh on any face but its quality and
-validity depend on two factors:
-
-* face shape (number of edges and boundary concavity);
-* discretization of edges.
-
-.. image:: ../images/quad_mesh_invalid.png
-       :align: center
-
-.. centered::
-       "Invalid mesh on quadrilateral concave faces"
-
-The algorithm uses *Transfinite Interpolation* technique in the 
-parametric space of a face to locate nodes inside the face.
-
-The algorithm treats any face as quadrangle. If a face is bound by
-more than four edges, four most sharp vertices are considered as
-corners of the quadrangle and all edges between these vertices are
-treated as quadrangle sides. In the case of three edges, the vertex
-specified by the user is considered as a fourth degenerated side of the
-quadrangle.
-
-.. image:: ../images/quad_meshes.png 
-       :align: center
-
-.. centered::
-       Algorithm generates a structured mesh on complex faces provided that edges are properly discretized
-
-To get an all-quadrangle mesh you have to carefully define 1D
-hypotheses on edges of a face. To get a **structured** mesh you have to provide
-equal number of segments on opposite sides of the quadrangle. If this
-condition is not respected, the algorithm by default (without a 
-hypothesis) creates a **quad-dominant** mesh with triangles located near the
-side with the maximal number of segments. However, you can get an
-**all-quadrangle** mesh in this case by using 
-:ref:`hypo_quad_params_anchor` hypothesis to specify how to make transition mesh between opposite
-sides with different number of segments, provided that certain
-conditions are respected. In any case the total number of segments must be
-even. To use *Reduced* transition method, there must be an equal number
-of segments on one pair of opposite sides.
-
-The following hypotheses help to create quadrangle meshes. 
-
-* :ref:`Propagation <propagation_anchor>` additional 1D hypotheses help to get an equal number of segments on the opposite sides of a quadrilateral face.
-* :ref:`Composite Side Discretization <a1d_algos_anchor>` algorithm is useful to discretize several C1 continuous edges as one quadrangle side.
diff --git a/doc/salome/gui/SMESH/input/radial_prism_algo.rst b/doc/salome/gui/SMESH/input/radial_prism_algo.rst
deleted file mode 100644 (file)
index 7e2c148..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-.. _radial_prism_algo_page:
-
-************
-Radial Prism
-************
-
-This algorithm applies to the meshing of a hollow 3D shape,
-i.e. such shape should be composed of two meshed shells: an outer
-shell and an internal shell without intersection with the outer
-shell. One of the shells should be a :ref:`2D Projection <projection_2D>` of the other
-shell. The meshes of the shells can consist both of triangles and
-quadrangles.
-
-The Radial Prism algorithm would fill the space between the two shells
-with prisms.
-
-.. image:: ../images/radial_prism_mesh.png 
-       :align: center
-
-.. centered::
-       Cut-view of a hollow sphere meshed by Radial Prism algorithm
-
-This algorithm also needs the information concerning the number and
-distribution of mesh layers between the inner and the outer shapes.
-This information can be defined using either of two hypotheses:
-
-.. image:: ../images/number_of_layers.png
-       :align: center
-
-.. centered::
-       *"Number of layers"* hypothesis
-
-.. image:: ../images/distribution_of_layers.png
-       :align: center
-
-.. centered::
-       *"Distribution of layers"* hypothesis
-
-*Distribution of layers* hypothesis allows using most of 
-:ref:`1D Hypotheses <a1d_meshing_hypo_page>` to define
-the distribution of mesh layers.
-
-**See also** a sample :ref:`TUI script <tui_radial_prism>`.
diff --git a/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst b/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst
deleted file mode 100644 (file)
index 817695b..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-.. _radial_quadrangle_1D2D_algo_page:
-
-***********************
-Radial Quadrangle 1D-2D
-***********************
-
-This algorithm applies to the meshing of 2D shapes under the
-following conditions: the face must be a full ellipse or a part of ellipse
-(i.e. the number of edges is less or equal to 3 and one of them is an ellipse curve).
-The resulting mesh consists of triangles (near the center point) and
-quadrangles.
-
-This algorithm is optionally parametrized by the hypothesis indicating
-the number of mesh layers along the radius. The distribution of layers
-can be set with any 1D Hypothesis. If the face boundary includes
-radial edges, this distribution is applied to the longest radial
-edge. If the face boundary does not include radial edges, this
-distribution is applied to the longest virtual radial edge. The
-distribution is applied to the longest radial edge starting from its
-end lying on the elliptic curve.
-
-
-If no own hypothesis of the algorithm is assigned, any local or global
-hypothesis is used by the algorithm to discretize edges.
-
-If no 1D hypothesis is assigned to an edge, 
-:ref:`Default Number of Segments <nb_segments_pref>` preferences
-parameter is used to discretize the edge.
-
-.. image:: ../images/hypo_radquad_dlg.png
-       :align: center
-
-.. image:: ../images/mesh_radquad_01.png 
-       :align: center
-
-.. centered::
-       Radial Quadrangle 2D mesh on the top and the bottom faces of a cylinder
-
-.. image:: ../images/mesh_radquad_02.png 
-       :align: center
-
-.. centered::
-       Radial Quadrangle 2D mesh on a part of circle
-
-**See also** a sample :ref:`TUI Script <tui_radial_quadrangle>`.
-
-
diff --git a/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst b/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst
deleted file mode 100644 (file)
index bfbb16d..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-.. _removing_nodes_and_elements_page:
-
-***************************
-Removing nodes and elements
-***************************
-
-In MESH you can remove nodes and all types of cells of your mesh.
-
-* :ref:`removing_nodes_anchor`
-* :ref:`removing_orphan_nodes_anchor`
-* :ref:`removing_elements_anchor`
-* :ref:`clear_mesh_anchor`
-
-
-
-.. _removing_nodes_anchor:
-
-Removing nodes
-##############
-
-**To remove a node:**
-
-.. |rmn| image:: ../images/remove_nodes_icon.png
-
-#. Select your mesh in the Object Browser or in the 3D viewer.
-#. From the **Modification** menu choose **Remove** and from the associated submenu select the **Nodes**, or just click *"Remove nodes"* button |rmn| in the toolbar.
-   The following dialog box will appear:
-
-       .. image:: ../images/removenodes.png
-               :align: center
-
-
-   In this dialog box you can specify one or several nodes:
-
-   * choose mesh nodes with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
-   * input the node IDs directly in **ID Elements** field. The selected nodes will be highlighted in the viewer; or
-   * apply Filters. **Set filter** button allows to apply a filter to the selection of nodes. See more about filters in the :ref:`selection_filter_library_page` page.
-
-#. Click **Apply** or **Apply and Close** to confirm deletion of the specified nodes.
-
-.. note::
-       Be careful while removing nodes because if you remove a definite node of your mesh all adjacent elements will be also deleted.
-
-
-.. _removing_orphan_nodes_anchor:
-
-Removing orphan nodes
-#####################
-
-There is a quick way to remove all orphan (free) nodes.
-
-*To remove orphan nodes:*
-
-.. |rmon| image:: ../images/remove_orphan_nodes_icon.png
-
-#. Select your mesh in the Object Browser or in the 3D viewer.
-#. From the **Modification** menu choose **Remove** and from the associated submenu select **Orphan Nodes**, or just click *"Remove orphan nodes"* button |rmon| in the toolbar.
-   The following Warning message box will appear:
-
-       .. image:: ../images/removeorphannodes.png
-               :align: center
-
-#. Confirm nodes removal by pressing "Yes" button.
-
-
-.. _removing_elements_anchor:
-
-Removing elements
-#################
-
-*To remove an element:*
-
-.. |rme| image:: ../images/remove_elements_icon.png
-
-#. Select your mesh in the Object Browser or in the 3D viewer.
-#. From the **Modification** menu choose **Remove** and from the associated submenu select the **Elements**, or just click *"Remove elements"* button |rme| in the toolbar.
-
-   The following dialog box will appear:
-
-       .. image:: ../images/removeelements.png
-               :align: center
-
-   In this dialog box you can specify one or several elements:
-
-   * choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
-   * input the element IDs directly in **ID Elements** field. The selected elements will be highlighted in the viewer; or
-   * apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`selection_filter_library_page` page.
-
-#. Click **Apply** or **Apply and Close** to confirm deletion of the specified elements.
-
-.. image:: ../images/remove_nodes1.png 
-       :align: center
-
-.. centered::
-       The initial mesh
-
-.. image:: ../images/remove_nodes2.png 
-       :align: center
-
-.. centered::
-       The mesh with some elements removed
-
-
-.. _clear_mesh_anchor:
-
-Clearing Mesh Data
-##################
-
-*To remove all nodes and all types of cells in your mesh at once:*
-
-.. |clr| image:: ../images/mesh_clear.png
-
-#. Select your mesh in the Object Browser or in the 3D viewer.
-#. From the **Modification** menu choose **Remove** and from the associated submenu select the **Clear Mesh Data**, or just click *"Clear Mesh Data"* button |clr| in the toolbar. You can also right-click on the mesh in the Object Browser and select **Clear Mesh Data** in the pop-up menu.
-
-.. note::
-   This command works in a different way in different situations: 
-               * if the mesh is computed on a geometry, then *Clear Mesh Data* removes all elements and nodes.
-               * if the mesh is not based on a geometry (imported, compound, created from scratch etc.), then *Clear Mesh Data* removes only the elements and nodes computed by algorithms. If no such elements or nodes have been created, can remove nothing.
-
-**See Also** a sample TUI Script of a :ref:`tui_removing_nodes_and_elements` operation.  
-
-
-
diff --git a/doc/salome/gui/SMESH/input/reorient_faces.rst b/doc/salome/gui/SMESH/input/reorient_faces.rst
deleted file mode 100644 (file)
index 87d5100..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-
-.. _reorient_faces_page:
-
-************
-Orient faces
-************
-
-This operation allows fixing the orientation of a set of faces in the following ways:
-  
-* The required orientation of a set of neighboring faces can be defined by a vector giving the direction of a normal to a certain face. Since the direction of face normals in the set can be even opposite, it is necessary to specify a *control* face, the normal to which will be compared with the vector. This face can be either:
-       * found by proximity to a given point, or 
-       * specified explicitly. 
-* The required orientation is given by faces of specified reference groups or/and sub-meshes. The reference groups can be omitted, then orientation of an arbitrary selected face to orient defines common orientation.
-* Alternatively, the faces can be oriented relatively to the adjacent volumes.
-       
-The orientation of a face is changed by reverting the order of its nodes.
-
-*To set orientation of faces:*
-
-.. |imgfac| image:: ../images/reorient_faces_face.png
-.. |imgpnt| image:: ../images/reorient_faces_point.png
-.. |imggrp| image:: ../images/reorient_faces_ref_groups.png
-.. |imgvol| image:: ../images/reorient_faces_volume.png
-
-#. In the **Modification** menu select **Reorient faces** item or click *"Reorient faces"* button |imgfac| in the toolbar.
-#. In the "Reorient faces" dialog box
-
-   * Select a way to define orientation:
-
-       * |imgpnt| - by specifying a point and a vector
-       * |imgfac| - by specifying a face and a vector
-       * |imggrp| - by specifying reference face groups
-       * |imgvol| - by specifying reference volume groups
-
-   * Select the **Object(s)** (mesh, groups and/or sub-meshes) containing faces to reorient, in the Object Browser or in the 3D Viewer.
-   * To reorient by direction of the face normal:
-    
-       * Specify the coordinates of the **Point** by which the control face will be found. You can specify the **Point** by picking a node in the 3D Viewer or selecting a vertex in the Object Browser.
-       * Set up the **Direction** vector to be compared with the normal of the control face. There are following options: 
-
-               * adjust vector components directly;
-               * select a vertex in the Object Browser or a node in the 3D Viewer; their coordinates will define vector components;
-               * pick two nodes (holding Shift button), the **Direction** vector will go from the first to the second node.
-
-               .. image:: ../images/reorient_2d_point.png 
-                       :align: center
-
-               .. centered::
-                       The orientation of adjacent faces is chosen according to a vector. The control face is found by point.
-
-   * In the second mode it is possible to pick the **Face** by mouse in the 3D Viewer or directly enter the **Face** ID in the corresponding field.
-
-       .. image:: ../images/reorient_2d_face.png 
-               :align: center
-
-       .. centered::
-               The orientation of adjacent faces is chosen according to a vector. The control face is explicitly given.
-
-
-   * In the third mode, the faces can be reoriented equally to reference faces:
-
-     * If necessary, select 2D **Reference objects** (groups or/and sub-meshes) containing the reference faces, in the Object Browser or in the 3D Viewer. This field can be left empty, then orientation of an arbitrary face will be used as a reference.
-
-
-       .. image:: ../images/reorient_2d_refgroup.png
-               :align: center
-
-       .. centered::
-               The orientation of faces is given by reference face groups and/or sub-meshes.
-
-   * In the fourth mode, the faces can be reoriented according to volumes:
-
-     * Select an object (mesh, sub-mesh or group) containing reference **Volumes**, in the Object Browser or in the 3D Viewer.
-     * Specify whether face normals should point outside or inside the reference volumes using **Face normal outside volume** check-box.
-
-       .. image:: ../images/reorient_2d_volume.png 
-               :align: center
-
-       .. centered::
-               The orientation of faces is chosen relatively to adjacent volumes.
-
-#. Click the **Apply** or **Apply and Close** button to confirm the operation.
-
-**See Also** a sample TUI Script of a :ref:`tui_reorient_faces` operation. 
-
-
diff --git a/doc/salome/gui/SMESH/input/revolution.rst b/doc/salome/gui/SMESH/input/revolution.rst
deleted file mode 100644 (file)
index ef70b40..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-.. _revolution_page:
-
-**********
-Revolution
-**********
-
-Revolution is used to build mesh elements of plus one
-dimension than the input ones.  Boundary elements around generated
-mesh of plus one dimension are additionally created. All created
-elements can be automatically grouped. Revolution can be used to create
-a :ref:`structured mesh from scratch <extrusion_struct>`. 
-See :ref:`extrusion_page` page for general information on Revolution,
-which can be viewed as extrusion along a circular path.
-
-*To apply revolution:*
-
-.. |img| image:: ../images/image92.png
-.. |sel| image:: ../images/image120.png
-
-#. From the **Modification** menu choose the **Revolution** item or click  **"Revolution"** button in the toolbar.
-
-   The following dialog will appear:
-
-       .. image:: ../images/revolution1.png
-               :align: center
-  
-
-#. In this dialog:
-    
-       * Use *Selection* button |sel| to specify what you are going to select at a given moment, **Nodes**, **Edges** or **Faces**.
-
-       * Specify **Nodes**, **Edges** and **Faces**, which will be revolved, by one of following means:
-               * **Select the whole mesh, sub-mesh or group** activating this check-box.
-               * Choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame.
-               * Input the element IDs directly in **Node IDs**, **Edge IDs** and **Face IDs** fields. The selected elements will be highlighted in the viewer, if the mesh is shown there.
-               * Apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`filtering_elements` page.
-       * Specify the **Axis** of revolution:
-               * Specify the coordinates of the start **Point** of the axis of revolution; either directly or by picking a node in the Viewer (selection of nodes is activated as you click the *Selection* button).
-               * Specify the **Vector** of the axis in either of three ways:
-                       * directly adjust vector components;
-                       * click *Selection* button, choose **From Origin to selected Point** in the opened menu and pick a node in the Viewer; 
-                       * click *Selection* button, chose **Normal to selected Face** in the opened menu and pick a mesh face in the Viewer. 
-       * Specify the **Angle** of revolution and the **Number of steps** of revolution,
-               * **Angle by Step** - the elements are revolved by the specified angle at each step (i.e. for Angle=30 and Number of Steps=3, the elements will be extruded by 30 degrees twice for a total of 30*3=90)
-
-               .. image:: ../images/revolutionsn2.png 
-                       :align: center
-
-               .. centered::
-                       Example of Revolution with Angle by Step. Angle=30 and Number of Steps=3
-        
-               * **Total Angle** - the elements are revolved by the specified angle only once and the number of steps defines the number of iterations (i.e. for Angle=30 and Number of Steps=3, the elements will be revolved by 30/3=10 degrees twice for a total of 30).
-
-               .. image:: ../images/revolutionsn1.png 
-                       :align: center
-
-               .. centered::
-                       Example of Revolution with Total Angle. Angle=30 and Number of Steps=3
-        
-      
-    
-       * Specify the **Tolerance**, which is used to detect nodes lying on the axis of revolution.
-       * Activate  **Preview** check-box to see the result mesh in the viewer.
-       * If you activate **Generate Groups** check-box, the **result elements** created from **selected elements** contained in groups will be included into new groups named by pattern "<old group name>_rotated" and "<old group name>_top". For example if a selected quadrangle is included in *g_Faces* group (see figures below) then result hexahedra will be included in *g_Faces_rotated* group and a quadrangle created at the "top" of revolved mesh will be included in *g_Faces_top* group.  
-
-       .. image:: ../images/extrusion_groups.png
-               :align: center
-
-       .. image:: ../images/extrusion_groups_res.png
-               :align: center
-
-
-       This check-box is active only if there are some groups in the mesh.
-
-#. Click **Apply** or **Apply and Close** button to confirm the operation.
-
-**See Also** a sample TUI Script of a :ref:`tui_revolution` operation.
diff --git a/doc/salome/gui/SMESH/input/rotation.rst b/doc/salome/gui/SMESH/input/rotation.rst
deleted file mode 100644 (file)
index 4d38cae..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-.. _rotation_page:
-
-********
-Rotation
-********
-
-This operation allows to rotate in space the mesh or some of its elements.
-
-*To rotate the mesh:*
-
-.. |img| image:: ../images/rotation_ico.png 
-
-#. From the **Modification** menu choose **Transformation** -> **Rotation** item  or click *"Rotation"* button |img| in the toolbar.
-   The following dialog will appear:
-
-       .. image:: ../images/rotation.png
-               :align: center
-
-#. In this dialog:
-
-       * specify the IDs of the elements which will be rotated:
-
-               * **Select the whole mesh, submesh or group** activating this checkbox; or
-               * choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
-               * input the element IDs directly in **ID Elements** field. The selected elements will be highlighted in the viewer; or
-               * apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`selection_filter_library_page` page.
-
-       * specify the axis of rotation:
-               * specify the coordinates of the start **Point** of the vector of rotation;
-               * specify the **Vector** of rotation through the coordinates of its end point with respect to the coordinates of the start point;
-
-       * specify the **Angle** of rotation 
-
-       * specify the conditions of rotation:
-
-               * activate **Move elements** radio button to create  the source mesh (or elements) at the new location and erase it from the previous location;
-               * activate **Copy elements** radio button to create the source mesh (or elements) at the new location, but leave it at the previous location, the source mesh will be considered one and single mesh with the result of the rotation;
-               * activate **Create as new mesh** radio button to leave the source mesh (or elements) at its previous location and create a new mesh at the new location, the new mesh appears in the Object Browser with the default name MeshName_rotated (it is possible to change this name in the adjacent box);
-               * activate **Copy groups** checkbox to copy the groups of elements of the source mesh to the newly created mesh.
-
-       * activate **Preview** checkbox to show the result of transformation in the viewer 
-       * click **Apply** or **Apply and Close** button to confirm the operation.
-
-
-.. image:: ../images/rotation1.png 
-       :align: center
-
-.. centered::
-       The initial mesh
-
-.. image:: ../images/rotation2.png 
-       :align: center
-
-.. centered::
-       The rotated mesh
-
-**See Also** a sample TUI Script of a :ref:`tui_rotation` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/scalar_bar.rst b/doc/salome/gui/SMESH/input/scalar_bar.rst
deleted file mode 100644 (file)
index fa1961e..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-.. _scalar_bar_dlg:
-
-*********************
-Scalar Bar properties
-*********************
-
-In this dialog you can specify the properties of the scalar bar
-
-.. image:: ../images/scalar_bar_dlg.png
-       :align: center
-
-
-* **Scalar Range** - in this menu you can specify **Min value** and **Max value** of the **Scalar Bar**, and turn on/off **Logarithmic** scaling of the scalar bar.
-
-       .. note::
-               **Logarithmic scale** is not applicable in case of negative and zero values in the range. In such cases it is disabled.
-
-* **Font** - in this menu you can set type, face and color for the font of **Title** and **Labels** of the **Scalar Bar**
-
-* **Colors & Labels** - in this menu you can set the **number of colors** and the **number of labels** of the **Scalar Bar**
-
-* **Orientation** - allows choosing between vertical and horizontal orientation of the **Scalar Bar**.
-
-* **Origin & Size Vertical & Horizontal** - allows defining the location (**X** and **Y**) and size (**Width** and **Height**) of **Scalar Bar**
-       * **X**: abscissa of the origin (from the left side)
-       * **Y**: ordinate of the origin (from the bottom)
-* **Distribution** - in this menu you can Show/Hide distribution histogram of the values of the **Scalar Bar** and specify histogram properties
-       * **Multicolor** the histogram is colored as **Scalar Bar**
-       * **Monocolor** the histogram is colored as selected with **Distribution color** selector
diff --git a/doc/salome/gui/SMESH/input/scale.rst b/doc/salome/gui/SMESH/input/scale.rst
deleted file mode 100644 (file)
index 9ff8b37..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-.. _scale_page:
-
-*****
-Scale
-*****
-
-This geometrical operation allows to scale in space your mesh or some of its elements.
-
-*To scale a mesh:*
-
-#. From the **Modification** menu choose **Transformation** -> **Scale Transform** item.
-
-   The following dialogs will appear, where you can select how to scale:
-
-       * with one scale factor:
-
-       .. image:: ../images/scale01.png
-               :align: center
-
-       * or with different scale factors for axes:
-
-       .. image:: ../images/scale02.png
-               :align: center
-
-#. In the dialog:
-       * specify the IDs of the translated elements:
-               * **Select the whole mesh, submesh or group** activating this checkbox; or
-               * choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
-               * input the element IDs directly in **ID Elements** field. The selected elements will be highlighted in the viewer; or
-               * apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`selection_filter_library_page` page.
-
-       * specify the base point for scale
-
-       * specify the scale factor
-
-       * specify the conditions of scale:
-
-               * activate **Move elements** radio button to scale the selected mesh (or elements) without creating a copy;
-               * activate **Copy elements** radio button to duplicate the selected mesh (or elements) and to apply scaling to the copy within the same mesh;
-               * activate **Create as new mesh** radio button to leave the selected mesh (or elements) at its previous location and create a new mesh of the scaled copy of the selected elements; the new mesh appears in the Object Browser with the default name MeshName_scaled (it is possible to change this name in the adjacent box);
-               * activate **Copy groups** checkbox to copy the groups of elements existing in the source mesh to the newly created mesh.
-
-       * activate **Preview** checkbox to show the result of transformation in the viewer 
-       * click **Apply** or **Apply and Close** button to confirm the operation.
-
-
-**Example of using:**
-
-#. Create quandrangle mesh 3x3 on a simple planar face (200x200)
-
-       .. image:: ../images/scaleinit01.png
-               :align: center
-
-   and union 3 faces (along axis Z) to group "gr_faces"
-
-       .. image:: ../images/scaleinit02.png
-               :align: center
-
-
-
-#. Perform scale operation for the whole mesh and create a new mesh:
-
-       .. image:: ../images/scale03.png
-               :align: center
-
-   result after operation:
-
-       .. image:: ../images/scaleres03.png
-               :align: center
-
-#. Perform scale operation for the whole mesh and copy elements:
-
-       .. image:: ../images/scale04.png
-               :align: center
-
-   result after operation:
-
-       .. image:: ../images/scaleres04.png
-               :align: center
-
-#. Perform scale operation for a group of faces and copy elements:
-
-       .. image:: ../images/scale06.png
-               :align: center
-
-   result after operation:
-
-       .. image:: ../images/scaleres06.png
-               :align: center
-
-
-
-#. Perform scale operation for two edges and move elements:
-
-       .. image:: ../images/scale07.png
-               :align: center
-
-   result after operation:
-
-       .. image:: ../images/scaleres07.png
-               :align: center
-
-
-
-#. Perform scale operation for one face and move elements:
-
-       .. image:: ../images/scale09.png
-               :align: center
-
-   result after operation:
-
-       .. image:: ../images/scaleres09.png
-               :align: center
-
-
-**See Also** a sample TUI Script of a :ref:`tui_scale` operation.  
-
-
-
diff --git a/doc/salome/gui/SMESH/input/segments_around_vertex_algo.rst b/doc/salome/gui/SMESH/input/segments_around_vertex_algo.rst
deleted file mode 100644 (file)
index e70c160..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-.. _segments_around_vertex_algo_page:
-
-**********************
-Segments around Vertex
-**********************
-
-**Segments around Vertex** algorithm is considered to be a 0D meshing
-algorithm, but, of course, it doesn't mesh vertices. It allows to define
-the local size of the segments in the neighborhood of a certain
-vertex. If we assign this algorithm to a geometrical object of higher
-dimension, it applies to all its vertices.
-
-.. _note: To create 0D elements, use :ref:`adding_nodes_and_elements_page` operation.
-
-Length of segments near vertex is defined by **Length Near Vertex** hypothesis.
-This hypothesis is used by :ref:`Wire Discretization <a1d_algos_anchor>` or
-:ref:`Composite Side Discretization <a1d_algos_anchor>` algorithms as
-follows: a geometrical edge is discretized according to a 1D 
-hypotheses and then nodes near vertices are modified to assure the 
-segment length required by **Length Near Vertex** hypothesis.
-
-.. image:: ../images/lengthnearvertex.png
-       :align: center                                                 
-
-**See also** a sample :ref:`TUI Script <tui_segments_around_vertex>`.
diff --git a/doc/salome/gui/SMESH/input/selection_filter_library.rst b/doc/salome/gui/SMESH/input/selection_filter_library.rst
deleted file mode 100644 (file)
index 928678c..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-.. _selection_filter_library_page:
-
-************************
-Selection filter library
-************************
-
-Selection filter library allows creating and storing in files
-the filters that can be later reused for operations on meshes. You can
-access it via menu **Tools > Selection filter library**.
-It is also possible to save/load a filter by invoking the filter library
-from :ref:`filtering_elements` launched from any mesh operation.
-
-.. image:: ../images/selectionfilterlibrary.png
-       :align: center
-
-**Library file name** shows the path and the file name where your
-filters will be stored. By clicking the **Browse** button you can
-load an existing filter library.
-
-**Names of filters** lists the filters created or uploaded for
-the current study. You can **Add** or **Delete** filters.
-
-In **Filter name** box you can specify the name for your
-filter. By default it is prefixed with the corresponding entity type.
-
-.. _filtering_elements:
-
-Filter Dialog
-#############
-
-When we use filters during group creation or another operation (by 
-clicking **Set Filter** button in the corresponding dialog), the
-dialog for setting filters looks as shown below.
-
-.. image:: ../images/a-filteronfaces.png
-       :align: center
-
-The **Add** button creates a new criterion at the end of the list of
-criteria. The **Insert** button creates a new criterion before the
-selected criterion. The **Remove** button deletes the selected
-criterion. The **Clear** button deletes all criteria.
-
-If there is a choice of **Entity type** in the dialog, only
-criteria of currently selected type are used to create or change a
-filter, and criteria of hidden types (if were specified) are ignored.
-
-Each **Entity type** has its specific list of criteria, however all
-filters have common syntax. The **Threshold Value** should be specified 
-for most criteria. For numerical criteria it is necessary to indicate if 
-the found elements should be **More**, **Less** or **Equal** to this
-**Value**. You can also reverse the sense of a criterion using **Unary**
-operator *Not* and you should specify logical relations between
-criteria using **Binary** operators *Or* and *And*.
-
-Some criteria have the additional parameter of **Tolerance**. 
-
-Switching on **Insert filter in viewer** check-box limits
-selection of elements in the Viewer to the current filter.
-
-In the **Source** field you choose if the filter will be applied to
-the whole **Mesh**, the **Initial Selection** or the **Current Dialog**. 
-If **Mesh** is chosen, the elements satisfying the filter
-will be selected in the 3D Viewer. If **Initial Selection** is
-chosen, the filter will be applied to the selected elements and the
-elements rejected by the filter will be deselected. If **Current Dialog** 
-is chosen, the filter will be applied to the list of
-elements in the current dialog and the elements rejected
-by the filter will be removed from the list.
-
-**Copy from...** button gives you a possibility to load an
-existing filter from **Selection filter library** and **Add to...** 
-button gives you a possibility to save your current filter in the Library.
-
-.. note::
-       If the button **Apply and Close** is disabled, there is no selected mesh in the Object Browser and the filter can not be created. You have to select the mesh and the button will be enabled.
-
-Some criteria are applicable to all **Entity types**:
-
-* **Belong to Geom** selects entities whose all nodes lie on the shape defined by **Threshold Value**. If the threshold shape is a sub-shape of the main shape of the mesh, the filtering algorithm works faster because node-to-shape association is used instead of measuring distance between nodes and the shape, and **Tolerance** is not used. If the threshold shape is any other shape, the algorithm works slower because distance between nodes and the shape is measured and is compared with **Tolerance**. The latter approach (distance measurement) is also used if an element is not associated to any shape.
-* **Lying on Geom** selects entities whose at least one node lies on the shape defined by the **Threshold Value**. If the threshold shape is a sub-shape of the main shape of the mesh, the filtering algorithm works faster because node-to-shape association is used instead of measuring distance between nodes and the shape, and **Tolerance** is not used. If the threshold shape is any other shape, the algorithm works slower because distance between nodes and the shape is measured and is compared with **Tolerance**. The latter approach (distance measurement) is also used if an element is not associated to any shape.
-* **Belong to Mesh Group** selects entities included into the mesh group defined by the **Threshold Value**.
-* **Range of IDs** allows selection of entities with the specified IDs. **Threshold Value** can be, for example: "1,2,3,50-60,63,67,70-78"
-* **Color of Group** allows selection of entities belonging to the Group with the color defined by the **Threshold Value**.
-* **Elements of a domain** allows selection of entities belonging to one domain of a mesh. The domain is mesh part not connected to other parts. **Threshold Value** locating any element of the domain can be either
-       * node ID (that you can pick in the Viewer) or
-       * geometrical vertex (that you can pick either in the Viewer or in the Object Browser) or
-       * 3 coordinates of a point (that you can enter in TUI mode only).
-
-Some criteria are applicable to entities of dimension more than zero, i.e. to **Edges**, **Faces** and **Volumes**:
-
-* **Linear** allows selection of Linear or Quadratic elements (if Unary is set to "Not")
-* **Geometry type** allows selection of elements by their geometric type defined by the **Threshold Value**. The list of available geometric types depends on the current entity type.
-* **Entity type** allows selection of elements by their type defined as a combination of geometry type and the number of nodes.
-
-The following criteria are applicable to Entities of **all** types except for *Volumes*:
-
-* **Belong to Plane** selects entities whose all nodes belong to a specified plane within a given **Tolerance**.
-* **Belong to Cylinder** selects entities whose all nodes belong to a specified cylinder within a given **Tolerance**.
-* **Belong to Surface** selects entities whose all nodes belong to a specified arbitrary surface within a given **Tolerance**.
-
-The following criteria allow selecting mesh **Nodes**:
-
-* **Free nodes** selects nodes not belonging to any mesh element.
-* **Double nodes** selects a node coincident with other nodes (within a given **Tolerance**). See also :ref:`Double Nodes quality control <tui_double_nodes_control>`.
-* **Connectivity number** selects nodes with a number of connected elements, which is more, less or equal to **Threshold Value**. Elements of the highest dimension are countered only.
-
-The following criteria allow selecting mesh **Edges**:
-
-* **Free Borders** selects free 1D mesh elements, i.e. edges belonging to one element (face or volume) only. See also a :ref:`Free Borders quality control <free_borders_page>`.
-* **Double edges** selects 1D mesh elements basing on the same set of nodes. See also :ref:`filter_double_elements` quality control.
-* **Borders at Multi-Connections** selects edges belonging to several faces. The number of faces should be more, less or equal (within a given **Tolerance**) to **Threshold Value**. See also a :ref:`borders_at_multi_connection_page` quality control.
-* **Length** selects edges with a value of length, which is more, less or equal (within a given **Tolerance**) to **Threshold Value**. See also a :ref:`length_page`  quality control.
-
-The following criteria allow selecting mesh **Faces**:
-
-* **Aspect ratio** selects 2D mesh elements with an aspect ratio (see also an :ref:`aspect_ratio_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
-* **Warping** selects quadrangles with warping angle (see also a :ref:`warping_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
-* **Minimum angle** selects triangles and quadrangles with minimum angle (see also a :ref:`minimum_angle_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
-* **Taper** selects quadrangles cells with taper value (see also a :ref:`taper_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
-* **Skew** selects triangles and quadrangles with skew value (see also a :ref:`skew_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
-* **Area** selects triangles and quadrangles with a value of area (see also an :ref:`area_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
-* **Free edges** selects 2D mesh elements having at least one edge, which is not shared with other faces. See also a :ref:`free_edges_page` quality control.
-* **Free faces** selects 2D mesh elements, which belong to less than two volumes.
-* **Double faces** selects 2D mesh elements basing on the same set of nodes. See also :ref:`filter_double_elements` quality control.
-* **Faces with bare border** selects 2D mesh elements having a free border without an edge on it. See also :ref:`bare_border_faces_page` quality control.
-* **Over-constrained faces** selects 2D mesh elements having only one border shared with other 2D elements. See also :ref:`over_constrained_faces_page` quality control.
-* **Borders at Multi-Connections 2D** selects cells consisting of edges belonging to several elements of mesh. The number of mesh elements should be more, less or equal (within a given **Tolerance**) to **Threshold Value**. See also a :ref:`borders_at_multi_connection_2d_page` quality control.
-* **Length 2D** selects triangles and quadrangles combining of the edges with a value of length, which is more, less or equal (within a given **Tolerance**) to **Threshold Value**. See also a :ref:`length_2d_page` quality control.
-* **Coplanar faces** selects mesh faces neighboring the one selected by ID in **Threshold Value** field, if the angle between the normal to the neighboring face and the normal to the selected face is less then the angular tolerance (defined in degrees). Selection continues among all neighbor faces of already selected ones.
-* **Element Diameter 2D** selects triangles and quadrangles composed of the edges and diagonals with a value of length, which is more, less or equal (within a given **Tolerance**) to **Threshold Value**. See also a :ref:`max_element_length_2d_page` quality control.
-
-The following criteria allow selecting mesh **Volumes**:
-
-* **Aspect ratio 3D** selects 3D mesh elements with an aspect ratio (see also an :ref:`aspect_ratio_3d_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
-* **Volume** selects 3D mesh elements with a value of volume (see also a :ref:`volume_page` quality control), which is more, less or equal (within a given **Tolerance**) to **Threshold Value**.
-* **Element Diameter 3D** selects 3D mesh elements composed of the edges and diagonals with a value of length, which is more, less or equal (within a given **Tolerance**) to **Threshold Value**. See also a :ref:`max_element_length_3d_page` quality control.
-* **Double volumes** selects 3D mesh elements basing on the same set of nodes. See also :ref:`filter_double_elements` quality control.
-* **Bad oriented volume** selects mesh volumes, which are incorrectly oriented from the point of view of MED convention.
-* **Over-constrained volumes** selects mesh volumes having only one facet shared with other volumes. See also :ref:`over_constrained_volumes_page` quality control.
-* **Volumes with bare border** selects 3D mesh elements having a free border without a face on it. See also :ref:`bare_border_volumes_page` quality control.
-
-
-**See also** sample scripts of :ref:`tui_filters_page`.
-
-
-
-
-
diff --git a/doc/salome/gui/SMESH/input/sewing_meshes.rst b/doc/salome/gui/SMESH/input/sewing_meshes.rst
deleted file mode 100644 (file)
index 26e7a14..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-.. _sewing_meshes_page:
-
-*************
-Sewing meshes
-*************
-
-In SMESH you can sew elements of a mesh. The current functionality allows you to sew:
-
-* :ref:`free_borders_anchor`
-* :ref:`conform_free_borders_anchor`
-* :ref:`border_to_side_anchor`
-* :ref:`side_elements_anchor`
-
-
-.. image:: ../images/sewing.png 
-       :align: center
-
-.. centered::
-       *"Sewing"* button
-
-*To sew elements of a mesh:*
-
-#. From the **Modification** menu choose the **Transformation** item and from its sub-menu select the **Sewing** item.
-#. Check in the dialog box one of the radio buttons corresponding to the type of sewing operation you would like to perform.
-#. Fill the other fields available in the dialog box.
-#. Click the **Apply** or **Apply and Close** button to perform the operation of sewing.
-
-
-
-.. _free_borders_anchor:
-
-Sew free borders
-################
-
-This functionality allows you to unite free borders of a 2D mesh.
-
-There are two working modes: *Automatic* and *Manual*.
-
-* In the **Automatic** mode, the program finds free borders coincident within the
-  specified tolerance and sews them. Optionally it is possible to
-  visually check and correct if necessary the found free borders before
-  sewing. 
-* In the **Manual** mode you are to define borders to sew by picking
-  three nodes of each of two borders.
-
-.. image:: ../images/sewing1.png
-       :align: center
-
-.. centered::
-       Default mode is *Automatic*
-
-To use **Automatic** sewing:
-
-* Specify the mesh you want to sew by selecting it or any its part (group or sub-mesh) in the Object Browser or in the VTK Viewer.
-* Specify the **Tolerance**, within which free borders are considered coincident. At the default zero **Tolerance**, the tolerance used by he search algorithm is defined as one tenth of an average size of elements adjacent to compared free borders.
-* To visually check the coincident free borders found by the algorithm, switch off **Auto Sewing** check-box. The controls to adjust groups of coincident free borders will become available in the dialog.
-
-       .. image:: ../images/sewing_auto.png
-               :align: center
-
-       .. centered::
-               Controls to adjust groups of coincident free borders
-
-* **Detect** button launches the algorithm of search of coincident free borders.
-* The found groups of **Coincident Free Borders** are shown in the list, one group per line. Each group has its own color, which is used to display the group borders in the VTK Viewer. A free border within a group is designated by the IDs of its first, second and last nodes within parenthesis. All borders present in the list will be sewn upon **Apply**. 
-* **Remove** button removes the selected groups from the list.
-* **Select All** check-box selects all groups in the list.
-* When a group is selected, its borders appear in **Edit Selected Group** list that allows you to change this group.
-
-       .. image:: ../images/sort.png
-               :align: center
-
-  * **Set First** button moves the selected border to the first position in the group, as a result other borders will be moved to this border during sewing.
-
-       .. image:: ../images/remove.png
-               :align: center
-
-  * **Remove Border** button removes the selected borders from the group. It is active if there are more than two borders in the group.
-
-
-* Selection of a border in the list allows changing its first and last nodes whose IDs appear in two fields below the list.
-
-  * *Arrow* buttons near each field move the corresponding end node by the number of nodes defined by **Step** field.
-       .. image:: ../images/swap.png
-               :align: center
-
-  * **Swap** button swaps the first and last nodes of a selected border.
-
-
-For sewing free borders manually you should switch the **Mode** to **Manual** and define three points on each border: the first, the second and the last node:
-
-       .. image:: ../images/sewing_manual.png
-               :align: center
-
-* the first node specifies beginning of the border;
-* the second node specifies the part of the border which should be considered (as far as the free border usually forms a closed contour);
-* the last node specifies the end of the border.
-
-
-You can select these nodes in the 3D viewer or define by its id.
-
-The first and the second nodes should belong to the same link of a
-face. The second and the last nodes of a border can be the same. The
-first and the last nodes of two borders can be the same. The
-corresponding end nodes of two borders will be merged. Intermediate
-nodes of two borders will be either merged or inserted into faces of
-the opposite border.
-
-In practice the borders to sew often coincide and in this case it is
-difficult to specify the first and the last nodes of a border since
-they coincide with the first and the last nodes of the other
-border. To cope with this,
-:ref:`merge <merging_nodes_page>` coincident nodes into one
-beforehand. Two figures below illustrate this approach.
-
-.. image:: ../images/sew_using_merge.png               
-       :align: center
-
-.. centered::
-       Merge coincident nodes, which are difficult to distinguish
-
-.. image:: ../images/sew_after_merge.png
-               :align: center
-
-.. centered::
-       After merging nodes it is easy to specify border nodes
-
-The sewing algorithm is as follows:
-
-#. The parameter (U) of each node within a border is computed. So that the first node has U=0.0, the last node has U=1.0, for the rest nodes 0.0 < U < 1.0;
-#. Compare node parameters of the two borders. If two nodes of the opposite borders have close parameters, they are merged, i.e. a node of the first border is replaced in all elements by a node of the second border. If a node has no node with a close parameter in the opposite border, it is inserted into an edge of element of the opposite border, an element is split. Two nodes are considered close enough to merge, if difference of their parameters is less than one fifth of minimum length of adjacent face edges on the borders.
-
-
-       .. image:: ../images/image22.jpg 
-               :align: center
-
-       .. centered::
-               Sewing free borders
-
-**See Also** a sample TUI Script of a 
-:ref:`tui_sew_free_borders` operation.
-
-
-.. _conform_free_borders_anchor:
-
-Sew conform free borders
-########################
-
-This functionality can be used to unite two free borders of a 2D mesh.
-
-.. image:: ../images/sewing2.png
-       :align: center
-
-The borders of meshes for sewing are defined as for :ref:`free_borders_anchor`
-except that the second free border is not limited and can be defined
-by the first and the second nodes only. The first nodes of two borders
-can be the same.
-
-The algorithm is following: counting nodes starting at the first ones,
-the n-th node of the first border is merged with the n-th node of the
-other border, until the end of either of borders. Nodes of the first
-border are replaced in all elements with corresponding nodes of the
-second border.
-
-.. note:: 
-       For sewing conform free borders you should define three points on the first border and two points on the second one. User can select these nodes in 3D viewer or define node by its id.
-
-.. image:: ../images/image23.jpg 
-       :align: center
-
-.. centered::
-       Sewing conform free borders
-
-**See Also** a sample TUI Script of a 
-:ref:`tui_sew_conform_free_borders` operation.
-
-
-.. _border_to_side_anchor:
-
-Sew border to side
-##################
-
-*Sew border to side* is intended to sew a free border to a mesh surface.
-
-The free border is defined as for :ref:`free_borders_anchor`. The place where to sew the border is defined by two nodes, between which the border faces are placed, so that the first border node is merged with the first node on the side and the last node of the border is merged with the second specified node on the side.
-
-.. image:: ../images/sewing3.png
-       :align: center
-
-The algorithm is following.
-
-#. Find a sequence of linked nodes on the side such that the found links to be most co-directed with the links of the free border.
-#. Sew two sequences of nodes using algorithm of :ref:`free_borders_anchor`.
-
-.. note:: 
-       For sewing border to side you should define three points on the border and two points on the side. User can select these nodes in 3D viewer or define node by its id.
-
-.. image:: ../images/image30.jpg 
-       :align: center
-
-.. centered::
-       Sewing border to side
-
-**See Also** a sample TUI Script of a 
-:ref:`tui_sew_meshes_border_to_side` operation.  
-
-
-.. _side_elements_anchor:
-
-Sew side elements
-=================
-
-This operation is intended to unite two mesh surfaces.
-
-.. image:: ../images/sewing4.png 
-       :align: center
-
-Surfaces may be defined by either 2d or 3d elements. The number of
-given elements of the sides must be the same. The sets of given
-elements must be topologically equal, i.e. each node of one element
-set must have a corresponding node in the other element set and
-corresponding nodes must be equally linked. If there are 3d elements
-in a set, only their free faces must obey to that rule.
-
-Two corresponding nodes on each side must be specified. They must belong to one element and must be located on an element set boundary.
-
-Sewing algorithm finds and merges the corresponding nodes starting
-from the specified ones.
-
-.. image:: ../images/image31.jpg 
-       :align: center
-
-.. centered::
-       Step-by-step sewing process
-
-.. image:: ../images/image32.jpg 
-       :align: center
-
-.. centered::
-       The result of side elements sewing
-
-For sewing side elements you should define elements for sewing and two
-nodes for merging on the each side. User can select these elements and
-nodes in 3D viewer or define them by its id.
-
-**See Also** a sample TUI Script of a 
-:ref:`tui_sew_side_elements` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/skew.rst b/doc/salome/gui/SMESH/input/skew.rst
deleted file mode 100644 (file)
index ed9dfa2..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-.. _skew_page:
-
-****
-Skew
-****
-
-**Skew** mesh quality criterion reflects the angle between the lines
-that join opposite sides of a quadrangle element or the greatest angle
-between a median and a midline in a triangle element. This mesh quality
-criterion can be applied to elements composed of 4 and 3 nodes
-(quadrangles and triangles).
-
-.. image:: ../images/image27.jpg
-       :align: center
-
-*To apply the Skew quality criterion to your mesh:*
-
-.. |img| image:: ../images/image40.png
-
-#. Display your mesh in the viewer.
-#. Choose **Controls > Face Controls > Skew** or click *"Skew"* button |img| of the toolbar.
-
-   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
-
-       .. image:: ../images/image93.jpg
-               :align: center
-
-
-**See Also** a sample TUI Script of a :ref:`tui_skew` filter.
diff --git a/doc/salome/gui/SMESH/input/smeshBuilder.rst b/doc/salome/gui/SMESH/input/smeshBuilder.rst
deleted file mode 100644 (file)
index 5631ecd..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-
-smeshBuilder module
-===================
-
-.. contents:: 
-
-.. automodule:: smeshBuilder
-   :synopsis: 
-   :members: GetName, DegreesToRadians, New
-
-smeshBuilder class
-------------------
-
-.. autoclass:: smeshBuilder
-   :members:
-
-Mesh class
-------------------
-.. autoclass:: Mesh
-   :members:
-
diff --git a/doc/salome/gui/SMESH/input/smesh_migration.rst b/doc/salome/gui/SMESH/input/smesh_migration.rst
deleted file mode 100644 (file)
index dad99f4..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-.. _smesh_migration_page:
-
-******************************************************
-Modifying Mesh Python scripts from SALOME 6 and before
-******************************************************
-
-In SALOME 7.2, the Python interface for Mesh has been slightly modified to offer new functionality:
-
-
-Scripts generated for SALOME 6 and older versions must be adapted to work in SALOME 7.2 with full functionality.
-The compatibility mode allows old scripts to work in almost all cases, but with a warning.
-
-See also *"Modifying Geometry Python scripts from SALOME 6 and before"* page in the Geometry module's
-User Guide.
-
-* **Salome initialisation** must always be done as shown below.
-
-  (*salome_init()* can be invoked safely several times)::
-
-       import salome
-       salome.salome_init()
-
-* **smesh initialisation** is modified.
-
-  The old mode (from dump)::
-
-       import smesh, SMESH, SALOMEDS
-       smesh.SetCurrentStudy(salome.myStudy)
-
-  The new mode::
-
-       import SMESH, SALOMEDS
-       from salome.smesh import smeshBuilder
-       smesh =  smeshBuilder.New()
-
-
-* Of course, **from smesh import** * is **no more possible.**
-
-  You have to explicitly write *smesh.some_method()*.
-
-* All **algorithms** have been transferred from the namespace *smesh* to the namespace *smeshBuilder*.
-
-  For instance::
-
-       MEFISTO_2D_1 = Mesh_1.Triangle(algo=smesh.MEFISTO,geom=Face_1)
-
-  is replaced by::
-
-       MEFISTO_2D_1 = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO,geom=Face_1)
-
-  StdMeshers algorithms concerned are *REGULAR, PYTHON, COMPOSITE, MEFISTO, Hexa, QUADRANGLE, RADIAL_QUAD*.
-
-  SMESH Plugins provide such algorithms as: *NETGEN, NETGEN_FULL, FULL_NETGEN, NETGEN_1D2D3D, NETGEN_1D2D, NETGEN_2D, NETGEN_3D*.
-
-  If you use DISTENE plugins, you also have *BLSURF, GHS3D, GHS3DPRL, Hexotic*.
-
-* Some **variables** were available in both namespaces *smesh* and *SMESH*. Now they are available only in namespace *SMESH*.
-
-  The dump function used only the namespace *SMESH*,
-  so, if your script was built with the help of the dump function, it should be already OK in this respect.
-
-  The most used variables concerned are:
-
-  * *NODE, EDGE, FACE, VOLUME, ALL.*
-  * *FT_xxx, geom_xxx, ADD_xxx...*
-
-  For instance::
-
-       srcFaceGroup = srcMesh.GroupOnGeom( midFace0, "src faces", smesh.FACE )
-       mesh.MakeGroup("Tetras",smesh.VOLUME,smesh.FT_ElemGeomType,"=",smesh.Geom_TETRA)
-       filter = smesh.GetFilter(smesh.FACE, smesh.FT_AspectRatio, smesh.FT_MoreThan, 6.5)
-
-  is replaced by::
-
-       srcFaceGroup = srcMesh.GroupOnGeom( midFace0, "src faces", SMESH.FACE )
-       mesh.MakeGroup("Tetras",SMESH.VOLUME,SMESH.FT_ElemGeomType,"=",SMESH.Geom_TETRA)
-       filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_AspectRatio, SMESH.FT_MoreThan, 6.5)
-
-
-* The namespace **smesh.smesh** does not exist any more, use **smesh** instead.
-
-  For instance::
-
-       Compound1 = smesh.smesh.Concatenate([Mesh_inf.GetMesh(), Mesh_sup.GetMesh()], 0, 1, 1e-05)
-
-  is replaced by::
-
-       Compound1 = smesh.Concatenate([Mesh_inf.GetMesh(), Mesh_sup.GetMesh()], 0, 1, 1e-05)
-
-* If you need to **import a SMESH Plugin** explicitly, keep in mind that they are now located in separate namespaces.
-
-  For instance::
-
-       import StdMeshers
-       import NETGENPlugin
-       import BLSURFPlugin
-       import GHS3DPlugin
-       import HexoticPLUGIN
-
-  is replaced by:: 
-
-       from salome.StdMeshers import StdMeshersBuilder
-       from salome.NETGENPlugin import NETGENPluginBuilder
-       from salome.BLSURFPlugin import BLSURFPluginBuilder
-       from salome.GHS3DPlugin import GHS3DPluginBuilder
-       from salome.HexoticPLUGIN import HexoticPLUGINBuilder
-
-
diff --git a/doc/salome/gui/SMESH/input/smesh_module.rst b/doc/salome/gui/SMESH/input/smesh_module.rst
deleted file mode 100644 (file)
index 831452e..0000000
+++ /dev/null
@@ -1,962 +0,0 @@
-SMESH module
-============
-
-.. contents:: 
-
-.. py:module:: SMESH
-
-DriverMED_ReadStatus
---------------------
-
-.. py:class:: DriverMED_ReadStatus
-
-   Enumeration for mesh read status
-
-   .. py:attribute:: DRS_OK 
-
-      Ok
-
-   .. py:attribute:: DRS_EMPTY
-                     
-      a file contains no mesh with the given name
-
-   .. py:attribute:: DRS_WARN_RENUMBER
-
-      a MED file has overlapped ranges of element numbers,
-      so the numbers from the file are ignored
-
-   .. py:attribute:: DRS_WARN_SKIP_ELEM
-      
-      some elements were skipped due to incorrect file data
-
-   .. py:attribute:: DRS_WARN_DESCENDING
-
-      some elements were skipped due to descending connectivity
-
-   .. py:attribute:: DRS_FAIL
-
-      general failure (exception etc.)
-
-ComputeErrorName
-----------------
-
-.. py:class:: ComputeErrorName
-
-   Enumeration of computation errors
-
-   .. py:attribute:: COMPERR_OK
-
-      Ok
-      
-   .. py:attribute:: COMPERR_BAD_INPUT_MESH
-
-      wrong mesh of lower sub-mesh
-
-   .. py:attribute:: COMPERR_STD_EXCEPTION
-
-      some std exception raised
-
-   .. py:attribute:: COMPERR_OCC_EXCEPTION
-
-      OCC exception raised
-
-   .. py:attribute:: COMPERR_SLM_EXCEPTION
-
-      SALOME exception raised
-
-   .. py:attribute:: COMPERR_EXCEPTION
-
-      other exception raised
-
-   .. py:attribute:: COMPERR_MEMORY_PB
-
-      memory allocation problem
-
-   .. py:attribute:: COMPERR_ALGO_FAILED
-
-      computation failed
-
-   .. py:attribute:: COMPERR_BAD_SHAPE
-
-      bad geometry
-
-   .. py:attribute:: COMPERR_WARNING
-
-      algo reports error but sub-mesh is computed anyway
-
-   .. py:attribute:: COMPERR_CANCELED
-
-      compute canceled
-
-   .. py:attribute:: COMPERR_NO_MESH_ON_SHAPE
-
-      no mesh elements assigned to sub-mesh
-
-   .. py:attribute:: COMPERR_BAD_PARMETERS
-
-      incorrect hypotheses parameters
-
-
-ComputeError
-------------
-
-.. py:class:: ComputeError
-
-   Error details
-
-   .. py:attribute:: code
-
-      ``int`` - :class:`ComputeErrorName` or, if negative, algo specific code
-
-   .. py:attribute:: comment
-                     
-      ``str`` - textual problem description
-
-   .. py:attribute:: algoName
-
-      ``str``
-
-   .. py:attribute:: subShapeID
-      
-      ``int`` - id of sub-shape of a shape to mesh
-
-   .. py:attribute:: hasBadMesh
-
-      ``boolean`` - there are elements preventing computation available for visualization
-
-Measure
--------
-
-.. py:class:: Measure
-
-   Data returned by measure operations
-
-   .. py:attribute:: minX, minY, minZ
-
-      ``double`` - coordinates of one point
-
-   .. py:attribute:: maxX, maxY, maxZ
-
-      ``double`` - coordinates of another point
-
-   .. py:attribute:: node1, node2
-
-      ``long`` - IDs of two nodes
-
-   .. py:attribute:: elem1, elem2
-
-      ``long`` - IDs of two elements
-
-   .. py:attribute:: value
-
-      ``double`` - distance
-
-NodePosition
-------------
-
-.. py:class:: NodePosition
-
-   Node location on a shape
-
-   .. py:attribute:: shapeID             
-
-      ``long`` - ID of a shape
-
-   .. py:attribute:: shapeType 
-
-      ``GEOM.shape_type`` - type of shape
-
-   .. py:attribute:: params
-
-      ``list of float`` - 
-
-        * [U] on EDGE, 
-        * [U,V] on FACE,
-        * [] on the rest shapes
-
-ElementPosition
----------------
-
-.. py:class:: ElementPosition
-
-   Element location on a shape
-
-   .. py:attribute:: shapeID
-
-      ``long`` - ID of a shape
-
-   .. py:attribute:: shapeType
-
-      ``GEOM.shape_type`` - type of shape
-
-PolySegment
------------
-
-.. py:class:: PolySegment
-
-   Define a cutting plane passing through two points. 
-   Used in :meth:`~smeshBuilder.Mesh.MakePolyLine`
-
-   .. py:attribute:: node1ID1, node1ID2
-
-      ``int,int`` - *point 1*: if *node1ID2* > 0, then the point is in the middle of a face edge defined
-                by two nodes, else it is at *node1ID1*
-
-   .. py:attribute:: node2ID1, node2ID2
-
-      ``int,int`` - *point 2*: if *node2ID2* > 0, then the point is in the middle of a face edge defined
-                by two nodes, else it is at *node2ID1*
-
-   .. py:attribute:: vector
-
-      ``SMESH.DirStruct`` - vector on the plane; to use a default plane set vector = (0,0,0)
-
-
-ElementType
------------
-
-.. py:class:: ElementType
-
-   Enumeration for element type, like in SMDS
-
-   .. py:attribute:: 
-    ALL
-    NODE
-    EDGE
-    FACE
-    VOLUME
-    ELEM0D
-    BALL
-    NB_ELEMENT_TYPES
-
-EntityType
-----------
-
-.. py:class:: EntityType
-
-   Enumeration of entity type
-
-   .. py:attribute:: 
-    Entity_Node
-    Entity_0D
-    Entity_Edge
-    Entity_Quad_Edge
-    Entity_Triangle
-    Entity_Quad_Triangle
-    Entity_BiQuad_Triangle
-    Entity_Quadrangle
-    Entity_Quad_Quadrangle
-    Entity_BiQuad_Quadrangle
-    Entity_Polygon
-    Entity_Quad_Polygon
-    Entity_Tetra
-    Entity_Quad_Tetra
-    Entity_Pyramid
-    Entity_Quad_Pyramid
-    Entity_Hexa
-    Entity_Quad_Hexa
-    Entity_TriQuad_Hexa
-    Entity_Penta
-    Entity_Quad_Penta
-    Entity_BiQuad_Penta
-    Entity_Hexagonal_Prism
-    Entity_Polyhedra
-    Entity_Quad_Polyhedra
-    Entity_Ball
-    Entity_Last
-
-GeometryType
-------------
-
-.. py:class:: GeometryType
-
-   Enumeration of element geometry type
-
-   .. py:attribute::
-    Geom_POINT
-    Geom_EDGE
-    Geom_TRIANGLE
-    Geom_QUADRANGLE
-    Geom_POLYGON
-    Geom_TETRA
-    Geom_PYRAMID
-    Geom_HEXA
-    Geom_PENTA
-    Geom_HEXAGONAL_PRISM
-    Geom_POLYHEDRA
-    Geom_BALL
-    Geom_LAST
-
-Hypothesis_Status
------------------
-
-.. py:class:: Hypothesis_Status
-
-   Enumeration of result of hypothesis addition/removal
-
-   .. py:attribute::  HYP_OK
-
-      Ok
-
-   .. py:attribute::  HYP_MISSING
-
-      algo misses a hypothesis
-
-   .. py:attribute::  HYP_CONCURRENT
-
-      several applicable hypotheses
-
-   .. py:attribute::  HYP_BAD_PARAMETER
-
-      hypothesis has a bad parameter value
-
-   .. py:attribute::  HYP_HIDDEN_ALGO
-
-      an algo is hidden by an upper dim algo generating all-dim elements
-
-   .. py:attribute::  HYP_HIDING_ALGO
-
-      an algo hides lower dim algos by generating all-dim elements
-
-   .. py:attribute::  HYP_UNKNOWN_FATAL
-
-       all statuses below should be considered as fatal for Add/RemoveHypothesis operations
-
-   .. py:attribute::  HYP_INCOMPATIBLE
-
-      hypothesis does not fit algorithm
-
-   .. py:attribute::  HYP_NOTCONFORM
-
-      not conform mesh is produced applying a hypothesis
-
-   .. py:attribute::  HYP_ALREADY_EXIST
-
-      such hypothesis already exist
-
-   .. py:attribute::  HYP_BAD_DIM
-
-      bad dimension
-
-   .. py:attribute::  HYP_BAD_SUBSHAPE
-
-      shape is neither the main one, nor its sub-shape, nor a group
-
-   .. py:attribute::  HYP_BAD_GEOMETRY
-
-      geometry mismatches algorithm's expectation
-
-   .. py:attribute::  HYP_NEED_SHAPE
-
-      algorithm can work on shape only
-
-   .. py:attribute::  HYP_INCOMPAT_HYPS
-
-      several additional hypotheses are incompatible one with other
-
-
-FunctorType
------------
-
-.. py:class:: FunctorType
-
-   Enumeration of functor types
-
-   .. py:attribute:: 
-    FT_AspectRatio
-    FT_AspectRatio3D
-    FT_Warping   
-    FT_MinimumAngle
-    FT_Taper       
-    FT_Skew         
-    FT_Area          
-    FT_Volume3D          
-    FT_MaxElementLength2D
-    FT_MaxElementLength3D
-    FT_FreeBorders
-    FT_FreeEdges
-    FT_FreeNodes
-    FT_FreeFaces
-    FT_EqualNodes
-    FT_EqualEdges
-    FT_EqualFaces
-    FT_EqualVolumes
-    FT_MultiConnection
-    FT_MultiConnection2D
-    FT_Length
-    FT_Length2D
-    FT_Deflection2D
-    FT_NodeConnectivityNumber
-    FT_BelongToMeshGroup
-    FT_BelongToGeom
-    FT_BelongToPlane
-    FT_BelongToCylinder
-    FT_BelongToGenSurface
-    FT_LyingOnGeom
-    FT_RangeOfIds
-    FT_BadOrientedVolume
-    FT_BareBorderVolume
-    FT_BareBorderFace
-    FT_OverConstrainedVolume
-    FT_OverConstrainedFace
-    FT_LinearOrQuadratic
-    FT_GroupColor
-    FT_ElemGeomType
-    FT_EntityType
-    FT_CoplanarFaces
-    FT_BallDiameter
-    FT_ConnectedElements
-    FT_LessThan
-    FT_MoreThan
-    FT_EqualTo
-    FT_LogicalNOT
-    FT_LogicalAND
-    FT_LogicalOR
-    FT_Undefined
-
-.. py:module:: SMESH.Filter
-   :noindex:
-
-Filter.Criterion
-----------------
-
-.. py:class:: Criterion
-
-   Structure containing information of a criterion
-
-   .. py:attribute:: Type
-
-      ``long`` - value of item of :class:`SMESH.FunctorType`
-
-   .. py:attribute:: Compare
-
-      ``long`` - value of item of :class:`SMESH.FunctorType` in ( FT_LessThan, FT_MoreThan, FT_EqualTo )
-
-   .. py:attribute:: Threshold
-
-      ``double`` - threshold value
-
-   .. py:attribute:: ThresholdStr
-
-      ``string`` - Threshold value defined as string. Used for:
-                       1. Diapason of identifiers. Example: "1,2,3,5-10,12,27-29".
-                       2. Storing name of shape.
-                       3. Storing group color "0.2;0;0.5".
-                       4. Storing point coordinates.
-
-   .. py:attribute:: ThresholdID
-
-      ``string`` - One more threshold value defined as string. Used for storing id of shape
-
-   .. py:attribute:: UnaryOp
-
-      ``long`` - unary logical operation: FT_LogicalNOT or FT_Undefined
-
-   .. py:attribute:: BinaryOp
-
-      ``long`` - binary logical operation FT_LogicalAND, FT_LogicalOR etc.
-
-   .. py:attribute:: Tolerance
-
-      ``double`` - Tolerance is used for 
-                       1. Comparison of real values.
-                       2. Detection of geometrical coincidence.
-
-   .. py:attribute:: TypeOfElement
-
-      ``ElementType`` - type of element :class:`SMESH.ElementType` (SMESH.NODE, SMESH.FACE etc.)
-
-   .. py:attribute:: Precision
-
-      ``long`` - Precision of numerical functors
-
-.. py:currentmodule:: SMESH
-
-FreeEdges.Border
-----------------
-
-.. py:class:: FreeEdges.Border
-
-   Free edge: edge connected to one face only
-
-   .. py:attribute:: myElemId
-
-      ``long`` - ID of a face
-
-   .. py:attribute:: myPnt1,myPnt2
-
-      ``long`` - IDs of two nodes
-
-PointStruct
------------
-
-.. py:class:: PointStruct
-
-   3D point. 
-
-   Use :meth:`GetPointStruct() <smeshBuilder.smeshBuilder.GetPointStruct>` 
-   to convert a vertex (GEOM.GEOM_Object) to PointStruct
-
-   .. py:attribute:: x,y,z
-
-      ``double`` - point coordinates
-
-DirStruct
----------
-
-.. py:class:: DirStruct
-
-   3D vector.
-
-   Use :meth:`GetDirStruct() <smeshBuilder.smeshBuilder.GetDirStruct>` 
-   to convert a vector (GEOM.GEOM_Object) to DirStruct
-
-   .. py:attribute:: PS
-
-      :class:`PointStruct` - vector components
-      
-AxisStruct
-----------
-
-.. py:class:: AxisStruct
-
-   Axis defined by its origin and its vector.
-
-   Use :meth:`GetAxisStruct() <smeshBuilder.smeshBuilder.GetAxisStruct>` 
-   to convert a line or plane (GEOM.GEOM_Object) to AxisStruct
-
-   .. py:attribute:: x,y,z
-
-      ``double`` - coordinates of the origin
-
-   .. py:attribute:: vx,vy,vz
-
-      ``double`` - components of the vector
-
-Filter
-------
-
-.. py:class:: Filter
-
-   Filter of mesh entities
-
-   .. py:function:: GetElementsId( mesh )
-
-      Return satisfying elements
-
-      :param SMESH.SMESH_Mesh mesh: the mesh; 
-                                    it can be obtained via :meth:`~smeshBuilder.Mesh.GetMesh`
-
-      :return: list of IDs
-                                    
-   .. py:function:: GetIDs()
-
-      Return satisfying elements. 
-      A mesh to filter must be already set, either via :meth:`SetMesh` method 
-      or via ``mesh`` argument of :meth:`~smeshBuilder.smeshBuilder.GetFilter`
-
-      :return: list of IDs
-                                    
-   .. py:function:: SetMesh( mesh )
-
-      Set mesh to filter
-
-      :param SMESH.SMESH_Mesh mesh: the mesh;
-                                    it can be obtained via :meth:`~smeshBuilder.Mesh.GetMesh`
-
-   .. py:function:: SetCriteria( criteria )
-
-      Define filtering criteria
-
-      :param criteria:  list of :class:`SMESH.Filter.Criterion`
-
-NumericalFunctor
-----------------
-
-.. py:class:: NumericalFunctor
-
-   Calculate value by ID of mesh entity. Base class of various functors
-
-   .. py:function:: GetValue( elementID )
-
-      Compute a value
-
-      :param elementID: ID of element or node
-      :return: floating value
-
-SMESH_Mesh
-----------
-
-.. py:class:: SMESH_Mesh
-
-   Mesh. It is a Python wrap over a CORBA interface of mesh.
-
-   All its methods are exposed via :class:`smeshBuilder.Mesh` class that you can obtain by calling::
-
-     smeshBuilder_mesh = smesh.Mesh( smesh_mesh )
-
-SMESH_MeshEditor
-----------------
-
-.. py:class:: SMESH_MeshEditor
-
-   Mesh editor. It is a Python wrap over a CORBA SMESH_MeshEditor interface.
-   All its methods are exposed via :class:`smeshBuilder.Mesh` class.
-
-   .. py:class:: Extrusion_Error
-
-      Enumeration of errors of :meth:`~smeshBuilder.Mesh.ExtrusionAlongPathObjects`
-
-      .. py:attribute::
-         EXTR_OK
-         EXTR_NO_ELEMENTS
-         EXTR_PATH_NOT_EDGE
-         EXTR_BAD_PATH_SHAPE
-         EXTR_BAD_STARTING_NODE
-         EXTR_BAD_ANGLES_NUMBER
-         EXTR_CANT_GET_TANGENT
-
-.. py:class:: SMESH_MeshEditor.Sew_Error
-
-      Enumeration of errors of SMESH_MeshEditor.Sewing... methods
-
-      .. py:attribute::
-         SEW_OK
-         SEW_BORDER1_NOT_FOUND
-         SEW_BORDER2_NOT_FOUND
-         SEW_BOTH_BORDERS_NOT_FOUND
-         SEW_BAD_SIDE_NODES
-         SEW_VOLUMES_TO_SPLIT
-         SEW_DIFF_NB_OF_ELEMENTS
-         SEW_TOPO_DIFF_SETS_OF_ELEMENTS
-         SEW_BAD_SIDE1_NODES
-         SEW_BAD_SIDE2_NODES
-         SEW_INTERNAL_ERROR
-
-SMESH_Pattern
--------------
-
-.. py:class:: SMESH_Pattern
-
-   Pattern mapper. Use a pattern defined by user for
-
-      * creating mesh elements on geometry, faces or blocks
-      * refining existing mesh elements, faces or hexahedra
-
-   The pattern is defined by a string as explained :doc:`here <pattern_mapping>`.
-
-   Usage work-flow is:
-
-      * Define a pattern via Load... method
-      * Compute future positions of nodes via Apply... method
-      * Create nodes and elements in a mesh via :meth:`MakeMesh` method
-
-   .. py:function:: LoadFromFile( patternFileContents )
-
-      Load a pattern from the string *patternFileContents*
-
-      :param str patternFileContents: string defining a pattern
-      :return: True if succeeded
-
-   .. py:function:: LoadFromFace( mesh, geomFace, toProject )
-
-      Create a 2D pattern from the mesh built on *geomFace*.
-
-      :param SMESH.SMESH_Mesh     mesh: source mesh
-      :param GEOM.GEOM_Object geomFace: geometrical face whose mesh forms a pattern
-      :param boolean         toProject: if True makes override nodes positions
-                                          on *geomFace* computed by mesher
-      :return: True if succeeded
-
-   .. py:function:: LoadFrom3DBlock( mesh, geomBlock )
-
-      Create a 3D pattern from the mesh built on *geomBlock*
-
-      :param SMESH.SMESH_Mesh      mesh: source mesh
-      :param GEOM.GEOM_Object geomBlock: geometrical block whose mesh forms a pattern
-      :return: True if succeeded
-
-   .. py:function:: ApplyToFace( geomFace, vertexOnKeyPoint1, toReverse )
-
-      Compute nodes coordinates by applying
-      the loaded pattern to *geomFace*. The first key-point
-      will be mapped into *vertexOnKeyPoint1*, which must
-      be in the outer wire of *geomFace*
-
-      :param GEOM.GEOM_Object geomFace: the geometrical face to generate faces on
-      :param GEOM.GEOM_Object vertexOnKeyPoint1: the vertex to be at the 1st key-point
-      :param boolean          toReverse: to reverse order of key-points
-      :return: list of :class:`SMESH.PointStruct` - computed coordinates of points of the pattern
-
-   .. py:function:: ApplyTo3DBlock( geomBlock, vertex000, vertex001 )
-
-      Compute nodes coordinates by applying
-      the loaded pattern to *geomBlock*. The (0,0,0) key-point
-      will be mapped into *vertex000*. The (0,0,1) 
-      key-point will be mapped into *vertex001*.
-
-      :param GEOM.GEOM_Object geomBlock: the geometrical block to generate volume elements on
-      :param GEOM.GEOM_Object vertex000: the vertex to superpose (0,0,0) key-point of pattern
-      :param GEOM.GEOM_Object vertex001: the vertex to superpose (0,0,1) key-point of pattern
-      :return: list of :class:`SMESH.PointStruct` - computed coordinates of points of the pattern
-
-   .. py:function:: ApplyToMeshFaces( mesh, facesIDs, nodeIndexOnKeyPoint1, toReverse )
-
-      Compute nodes coordinates by applying
-      the loaded pattern to mesh faces. The first key-point
-      will be mapped into *nodeIndexOnKeyPoint1* -th node of each mesh face
-
-      :param SMESH.SMESH_Mesh    mesh: the mesh where to refine faces
-      :param list_of_ids     facesIDs: IDs of faces to refine
-      :param int nodeIndexOnKeyPoint1: index of a face node to be at 1-st key-point of pattern
-      :param boolean        toReverse: to reverse order of key-points
-      :return: list of :class:`SMESH.PointStruct` - computed coordinates of points of the pattern
-
-   .. py:function:: ApplyToHexahedrons( mesh, volumesIDs, node000Index, node001Index )
-
-      Compute nodes coordinates by applying
-      the loaded pattern to hexahedra. The (0,0,0) key-point
-      will be mapped into *Node000Index* -th node of each volume.
-      The (0,0,1) key-point will be mapped into *node001Index* -th
-      node of each volume.
-
-      :param SMESH.SMESH_Mesh   mesh: the mesh where to refine hexahedra
-      :param list_of_ids  volumesIDs: IDs of volumes to refine
-      :param long       node000Index: index of a volume node to be at (0,0,0) key-point of pattern
-      :param long       node001Index: index of a volume node to be at (0,0,1) key-point of pattern
-      :return: list of :class:`SMESH.PointStruct` - computed coordinates of points of the pattern
-
-   .. py:function:: MakeMesh( mesh, createPolygons, createPolyedrs )
-
-      Create nodes and elements in *mesh* using nodes
-      coordinates computed by either of Apply...() methods.
-      If *createPolygons* is True, replace adjacent faces by polygons
-      to keep mesh conformity.
-      If *createPolyedrs* is True, replace adjacent volumes by polyedrs
-      to keep mesh conformity.
-
-      :param SMESH.SMESH_Mesh     mesh: the mesh to create nodes and elements in
-      :param boolean    createPolygons: to create polygons to to keep mesh conformity
-      :param boolean    createPolyedrs: to create polyherda to to keep mesh conformity
-      :return: True if succeeded
-
-
-SMESH_subMesh
--------------
-
-.. py:class:: SMESH_subMesh
-
-   :doc:`Sub-mesh <constructing_submeshes>`
-
-   .. py:function:: GetNumberOfElements()
-
-      Return number of elements in the sub-mesh
-
-   .. py:function:: GetNumberOfNodes( all )
-
-      Return number of nodes in the sub-mesh
-
-      :param boolean all: if True, also return nodes assigned to boundary sub-meshes 
-
-   .. py:function:: GetElementsId()
-
-      Return IDs of elements in the sub-mesh
-
-   .. py:function:: GetNodesId()
-
-      Return IDs of nodes in the sub-mesh
-
-   .. py:function:: GetSubShape()
-
-      Return :class:`geom shape <GEOM.GEOM_Object>` the sub-mesh is dedicated to
-
-   .. py:function:: GetId()
-
-      Return ID of the :class:`geom shape <GEOM.GEOM_Object>` the sub-mesh is dedicated to
-
-   .. py:function:: GetMeshInfo()
-
-      Return number of mesh elements of each :class:`SMESH.EntityType`.
-      Use :meth:`~smeshBuilder.smeshBuilder.EnumToLong` to get an integer from 
-      an item of :class:`SMESH.EntityType`.
-
-      :return: array of number of elements per :class:`SMESH.EntityType`
-
-   .. py:function:: GetMesh()
-
-      Return the :class:`SMESH.SMESH_Mesh`
-
-SMESH_GroupBase
----------------
-
-.. py:class:: SMESH_GroupBase
-
-   :doc:`Mesh group <grouping_elements>`. 
-   Base class of :class:`standalone group <SMESH_Group>`, 
-   :class:`group on geometry <SMESH_GroupOnGeom>` and 
-   :class:`group on filter <SMESH_GroupOnFilter>`.
-   Inherit all methods from :class:`SMESH_IDSource`.
-
-   .. py:function:: SetName( name )
-
-      Set group name
-
-   .. py:function:: GetName()
-
-      Return group name
-
-   .. py:function:: GetType()
-
-      Return :class:`group type <SMESH.ElementType>` (type of elements in the group)
-
-   .. py:function:: Size()
-
-      Return the number of elements in the group
-
-   .. py:function:: IsEmpty()
-
-      Return True if the group does not contain any elements
-
-   .. py:function:: Contains( elem_id )
-
-      Return True if the group contains an element with ID == *elem_id*
-
-   .. py:function:: GetID( elem_index )
-
-      Return ID of an element at position *elem_index* counted from 1
-
-   .. py:function:: GetNumberOfNodes()
-
-      Return the number of nodes of cells included to the group.
-      For a nodal group return the same value as Size() function
-
-   .. py:function:: GetNodeIDs()
-
-      Return IDs of nodes of cells included to the group.
-      For a nodal group return result of GetListOfID() function
-
-   .. py:function:: SetColor( color )
-
-      Set group color
-
-      :param SALOMEDS.Color color: color
-
-   .. py:function:: GetColor()
-
-      Return group color
-
-      :return: SALOMEDS.Color
-
-SMESH_Group
------------
-
-.. py:class:: SMESH_Group
-
-   :doc:`Standalone mesh group <grouping_elements>`. Inherits all methods of :class:`SMESH.SMESH_GroupBase`
-
-   .. py:function:: Clear()
-
-      Clears the group's contents
-
-   .. py:function:: Add( elem_ids )
-
-      Adds elements or nodes with specified identifiers to the group
-
-      :param list_of_ids elem_ids: IDs to add
-
-   .. py:function:: AddFrom( idSource )
-
-      Add all elements or nodes from the specified source to the group
-
-      :param SMESH.SMESH_IDSource idSource: an object to retrieve IDs from
-
-   .. py:function:: Remove( elem_ids )
-
-      Removes elements or nodes with specified identifiers from the group
-
-      :param list_of_ids elem_ids: IDs to remove
-
-SMESH_GroupOnGeom
------------------
-
-.. py:class:: SMESH_GroupOnGeom
-
-   Group linked to geometry. Inherits all methods of :class:`SMESH.SMESH_GroupBase`
-
-   .. py:function:: GetShape()
-
-      Return an associated geometry
-
-      :return: GEOM.GEOM_Object
-
-SMESH_GroupOnFilter
--------------------
-
-.. py:class:: SMESH_GroupOnFilter
-
-   Group defined by filter. Inherits all methods of :class:`SMESH.SMESH_GroupBase`
-
-   .. py:function:: SetFilter( filter )
-
-      Set the :class:`filter <SMESH.Filter>`
-
-   .. py:function:: GetFilter()
-
-      Return the :class:`filter <SMESH.Filter>`
-
-
-SMESH_IDSource
---------------
-
-.. py:class:: SMESH_IDSource
-
-   Base class for classes able to return IDs of mesh entities. These classes are:
-
-   * :class:`SMESH.SMESH_Mesh`
-   * :class:`SMESH.SMESH_subMesh`
-   * :class:`SMESH.SMESH_GroupBase`
-   * :class:`SMESH.Filter`
-   * temporal ID source created by :meth:`~smeshBuilder.Mesh.GetIDSource`
-
-   .. py:function:: GetIDs()
-
-      Return a sequence of all element IDs
-
-   .. py:function:: GetMeshInfo()
-
-      Return number of mesh elements of each :class:`SMESH.EntityType`.
-      Use :meth:`~smeshBuilder.smeshBuilder.EnumToLong` to get an integer from 
-      an item of :class:`SMESH.EntityType`.
-
-   .. py:function:: GetNbElementsByType()
-
-      Return number of mesh elements of each :class:`SMESH.ElementType`.
-      Use :meth:`~smeshBuilder.smeshBuilder.EnumToLong` to get an integer from 
-      an item of :class:`SMESH.ElementType`.
-
-
-   .. py:function:: GetTypes()
-
-      Return types of elements it contains.
-      It's empty if the object contains no IDs
-
-      :return: list of :class:`SMESH.ElementType`
-
-   .. py:function:: GetMesh()
-
-      Return the :class:`SMESH.SMESH_Mesh`
-
-SMESH_Hypothesis
-----------------
-
-.. py:class:: SMESH_Hypothesis
-
-   Base class of all :doc:`hypotheses <about_hypo>`
-
-   .. py:function:: GetName()
-
-      Return string of hypothesis type name, something like "Regular_1D"
-
-   .. py:function:: GetLibName()
-      
-      Return string of plugin library name
diff --git a/doc/salome/gui/SMESH/input/smeshpy_interface.rst b/doc/salome/gui/SMESH/input/smeshpy_interface.rst
deleted file mode 100644 (file)
index 8fa8653..0000000
+++ /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 <modules>`, where all methods and classes are grouped by their functionality.
-
-- :ref:`Linear documentation <modindex>` 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 <basic_meshing_algos_page>` by calling corresponding methods of the mesh. If a sub-shape is provided as an argument, a :ref:`sub-mesh <constructing_submeshes_page>` 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 <about_hypo_page>` 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 <compute_anchor>` (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 <SMESH.SMESH_GroupBase>` 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/smeshstudytools.rst b/doc/salome/gui/SMESH/input/smeshstudytools.rst
deleted file mode 100644 (file)
index 288b721..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-smeshstudytools module
-======================
-.. automodule:: smeshstudytools
-   :members:
-
diff --git a/doc/salome/gui/SMESH/input/smoothing.rst b/doc/salome/gui/SMESH/input/smoothing.rst
deleted file mode 100644 (file)
index 79041ad..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-.. _smoothing_page:
-
-*********
-Smoothing
-*********
-
-Smoothing is used to improve quality of 2D mesh by adjusting the
-locations of element corners (nodes). 
-
-.. note:: Depending on the chosen method and mesh geometry the smoothing can actually decrease the quality of elements and even make some elements inverted.
-
-*To apply smoothing to the elements of your mesh:*
-
-.. |img| image:: ../images/image84.png
-
-#. In the **Modification** menu select the **Smoothing** item or click *"Smoothing"* button |img| in the toolbar.
-
-   The following dialog will appear:
-
-       .. image:: ../images/smoothing.png
-               :align: center
-
-#. In this dialog:
-
-       * specify the IDs of the elements which will be smoothed:
-               * **Select the whole mesh, sub-mesh or group** activating this   check-box; or
-               * choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
-               * input the element IDs directly in **ID Elements** field. The selected elements will be highlighted in the viewer; or
-               * apply Filters. **Set filters** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`filtering_elements` page.
-
-       * define the **Fixed nodes ids** that should remain at their location during smoothing. If a mesh is built on a shape, the nodes built on its geometric edges are always fixed. If the smoothing is applied to a part of the mesh (a set of element), the nodes on boundary of the element set are also fixed. It is possible to additionally fix any other nodes. The fixed nodes can be selected manually or by filters, just as the smoothed elements.
-       * choose the **Smoothing Method:**
-               * **Laplacian** smoothing pulls a node toward the center of surrounding nodes directly connected to that node along an element edge. 
-               * **Centroidal** smoothing pulls a node toward the element-area-weighted centroid of the surrounding elements. 
-
-               Laplacian method will produce the mesh with the least element edge length. It is also the fastest method. Centroidal smoothing produces a mesh with more uniform element sizes.
-
-
-               .. image:: ../images/image83.gif
-                       :align: center
-
-
-       * specify the **Iteration limit**. Both smoothing methods iterate through a number of steps to produce the resulting smoothed mesh. At each new step the smoothing is reevaluated with the updated nodal locations. This process continues till the limit of iterations has been exceeded, or till the aspect ratio of all element is less than or equal to the specified one.
-       * specify the  **Max. aspect ratio** - the target mesh quality at which the smoothing algorithm should stop the iterations.
-       * activate **in parametric space** check-box if it is necessary to improve the shape of faces in the parametric space of geometrical surfaces on which they are generated, else the shape of faces in the 3D space is improved that is suitable for **planar meshes only**. 
-
-#. Click **Apply** or **Apply and Close** button to confirm the operation.
-
-
-.. image:: ../images/smoothing1.png 
-       :align: center
-
-.. centered:: 
-       The initial mesh
-
-.. image:: ../images/smoothing2.png 
-       :align: center
-
-.. centered:: 
-       The smoothed mesh: mesh quality improved
-
-**See Also** a sample TUI Script of a :ref:`tui_smoothing` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst b/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst
deleted file mode 100644 (file)
index 4778ec4..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-.. _split_biquad_to_linear_page:
-
-******************************
-Split bi-quadratic into linear
-******************************
-
-This functionality allows to split bi-quadratic elements into
-linear ones without creation of additional nodes.
-
-So that
-
-* bi-quadratic triangle will be split into 3 linear quadrangles;
-* bi-quadratic quadrangle will be split into 4 linear quadrangles;
-* tri-quadratic hexahedron will be split into 8 linear hexahedra;
-* quadratic segments adjacent to the split bi-quadratic element will be split into 2 linear segments.
-
-.. image:: ../images/split_biquad_to_linear_mesh.png 
-       :align: center
-
-.. centered:: 
-       Mesh before and after splitting
-
-*To split bi-quadratic elements into linear:*
-
-.. |img| image:: ../images/split_biquad_to_linear_icon.png
-
-#. From the **Modification** menu choose the **Split bi-quadratic into linear** item or click *"Split bi-quadratic into linear"* button |img| in the toolbar.
-
-
-   The following dialog box shall appear:
-
-       .. image:: ../images/split_biquad_to_linear_dlg.png
-               :align: center
-
-#. Select a mesh, groups or sub-meshes in the Object Browser or in the Viewer.
-#. Click the **Apply** or **Apply and Close** button.
-
-**See Also** a sample TUI Script of a :ref:`tui_split_biquad` operation.
-
-
diff --git a/doc/salome/gui/SMESH/input/split_to_tetra.rst b/doc/salome/gui/SMESH/input/split_to_tetra.rst
deleted file mode 100644 (file)
index 775ade4..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-.. _split_to_tetra_page:
-
-*****************
-Splitting volumes
-*****************
-
-This operation allows to split either any volumic elements into
-tetrahedra or hexahedra into prisms. 2D mesh is modified accordingly.
-
-*To split volumes:*
-
-.. |img| image:: ../images/split_into_tetra_icon.png
-
-#. Select a mesh, a sub-mesh or a group.
-#. In the **Modification** menu select the **Split Volumes** item or click *"Split Volumes"* button  |img| in the toolbar.
-
-   The following dialog box will appear:
-
-       .. image:: ../images/split_into_tetra.png
-               :align: center                                                 
-
-
-   * First it is possible to select the type of operation:
-
-       * If **Tetrahedron** button is checked, the operation will split volumes of any type into tetrahedra.
-       * If **Prism** button is checked, the operation will split hexahedra into prisms.
-   
-   * The main list contains the list of volumes to split. You can click on a volume in the 3D viewer and it will be highlighted (lock Shiftkeyboard button to select several volumes). Click **Add** button and the ID of this volume will be added to the list. To remove the selected element or elements from the list click **Remove** button. **Sort list** button allows to sort the list of IDs. **Filter** button allows applying a filter to the selection of volumes.
-     
-     .. note:: If you split not all adjacent non-tetrahedral volumes, your mesh becomes non-conform. 
-  
-   * **Apply to all** radio button allows splitting all volumes of the currently selected mesh.
-   * If **Tetrahedron** element type is selected, **Split hexahedron** group allows specifying the number of tetrahedra  a hexahedron will be split into. If the chosen method does not allow to get a conform mesh, a generic solution is applied: an additional node is created at the gravity center of a hexahedron, serving an apex of tetrahedra, all quadrangle sides of the hexahedron are split into two triangles each serving a base of a new tetrahedron. 
-   * If **Prism** element type is selected, the **Split hexahedron** group looks as follows:
-
-               .. image:: ../images/split_into_prisms.png
-                       :align: center                                                 
-
-               * **Into 2 (or 4) prisms** allows to specify the number of prisms a hexahedron will be split into. 
-               * **Facet to split** group allows to specify the side (facet) of the hexahedron, which is split into triangles.  This facet is defined by a point and a direction. The algorithm finds a hexahedron closest to the specified point and splits a facet whose normal is closest to the specified direction. Then the splitting is propagated from that hexahedron to all adjacent hexahedra. The point and the direction by which the first split hexahedron is found can be specified:
-
-                       * by input of coordinates in **Hexa location** and **Facet normal** fields, or 
-                       * by clicking **Selection** button and selecting in the viewer the element whose barycenter will be used as the start point and whose direction will be used as a normal to facet to split into triangles. Switch this button off to return to selection of volumes to split.
-
-    
-               * If **All domains** option is off, the operation stops when all hehexedra adjacent to the start hexahedron are split into prisms. Else the operation tries to continue splitting starting from  another hexahedron closest to the **Hexa location**. 
-
-   * **Select from** set of fields allows choosing a sub-mesh or an existing group whose elements will be added to the list as you click **Add** button.
-
-
-#. Click **Apply** or **Apply and Close** button to confirm the operation.
-
-**See also** a sample TUI script of :ref:`modifying_meshes_split_vol` operation.
diff --git a/doc/salome/gui/SMESH/input/symmetry.rst b/doc/salome/gui/SMESH/input/symmetry.rst
deleted file mode 100644 (file)
index c80b489..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-.. _symmetry_page: 
-
-********
-Symmetry
-********
-
-This geometrical operation allows to perform a symmetrical copy of your mesh or some of its elements.
-
-*To create a symmetrical copy:*
-
-.. |img| image:: ../images/symmetry.png 
-
-#. From the **Modification** menu choose **Transformation** -> **Symmetry** item  or click *"Symmetry"* button |img| in the toolbar.
-
-   The following dialogs will appear, where you can choose a way to mirror:
-
-       * through a point:
-
-       .. image:: ../images/symmetry1.png 
-               :align: center
-
-       * through an axis:
-
-       .. image:: ../images/symmetry2.png 
-               :align: center
-
-       * through a plane (defined by a point and a normal to the plane):
-
-       .. image:: ../images/symmetry3.png
-               :align: center
-
-
-#. In the dialog:
-
-       * specify the elements for the symmetry operation:
-
-               * **Select the whole mesh, submesh or group** activating this checkbox; or
-               * choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
-               * input the element IDs directly in **ID Elements** field. The selected elements will be highlighted in the viewer; or
-               * apply Filters. **Set Filter** button allows to apply a :ref:`filtering_elements` to the selection of elements. 
-
-       * depending on the nature of the mirror object: 
-
-               * if the mesh is mirrored through a point, specify the coordinates of the point, either directly or by picking a mesh node;
-               * if the mesh is mirrored through an axis: 
-
-                 * specify the coordinates of the start **Point** of the axis, either directly or by picking a mesh node;
-                 * specify the components of axis **Vector**, either directly or by picking a mesh node, in which case **Vector** is defined as a shift between the **Point** and the node;
-
-               * if the mesh is mirrored through a plane:
-
-                 * specify the coordinates of the **Point** lying on the plane, either directly or by picking a mesh node;
-                 * specify the components of plane **Normal**, either directly or by picking a mesh node, in which case **Normal** is defined as a shift between the **Point** and the node.
-
-               * specify the conditions of symmetry operation:
-
-                  * activate **Move elements** radio button to change the location of the selected elements within the current mesh;
-                  * activate **Copy elements** radio button to duplicate the selected elements at the new location within the current mesh;
-                  * activate **Create as new mesh** radio button to create a new element in a new mesh; the new mesh appears in the Object Browser with the default name *MeshName_mirrored* (it is possible to change this name in the adjacent box);
-                  * activate **Copy groups** check-box to put new mesh entities into new groups if source entities belong to some groups. New groups are named by pattern "<old group name>_mirrored".
-
-       * activate **Preview** check-box to show the result of transformation in the viewer;
-       * click **Apply** or **Apply and Close** button to confirm the operation.
-
-
-**See Also** a sample TUI Script of a 
-:ref:`tui_symmetry` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/taper.rst b/doc/salome/gui/SMESH/input/taper.rst
deleted file mode 100644 (file)
index db6d75f..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-.. _taper_page:
-
-*****
-Taper
-*****
-
-**Taper** mesh quality criterion represents the ratio of the areas
-of two triangles separated by a diagonal within a quadrilateral face.
-
-::
-
-       **JA = 0.25 * (A1 + A2 + A3 + A4)**
-       **TAPER = MAX(|A1/JA - 1|, |A2/JA - 1|, |A3/JA - 1|, |A4/JA - 1|)**
-
-*To apply the Taper quality criterion to your mesh:*
-
-.. |img| image:: ../images/image36.png
-
-#. Display your mesh in the viewer.
-#. Choose **Controls > Face Controls > Taper** or click *"Taper"* button |img| in the toolbar.
-
-
-   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
-
-       .. image:: ../images/image90.jpg
-               :align: center
-
-**See Also** a sample TUI Script of a :ref:`tui_taper` filter.
-
diff --git a/doc/salome/gui/SMESH/input/tools.rst b/doc/salome/gui/SMESH/input/tools.rst
deleted file mode 100644 (file)
index f9b53c0..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-.. _tools_page:
-
-*******
-Plugins
-*******
-
-The following plugins are accessible via **Mesh > SMESH plugins** menu:
-
-* `SpherePadder plugin <padder/padder_userguide_page.html>`_
-* `MGSurfOpt plugin <yams/index.html>`_
-* `MGCleaner plugin <MGCleaner/index.html>`_
-* `Z-cracks plugin <zcracks/index.html>`_
-* `MacMesh plugin <MacMesh/index.html>`_
-* `blocFissure plugin <blocFissure/index.html>`_
-* **MeshCut plugin** - allows to cut a mesh constituted of linear tetrahedrons by a plane.
-* **Get min or max value of control** - a sample plugin whose sources are located in *${GUI_ROOT_DIR}/share/salome/plugins/gui/demo* directory (files *minmax_plugin.py, minmax_ui.py and smesh_plugins.py*). You can find a detailed description of how to create your own plugin in documentation: **Help > User's Guide > GUI module > How-To's and Best Practices > Extend SALOME gui functions using python plugins**.
-
-
diff --git a/doc/salome/gui/SMESH/input/translation.rst b/doc/salome/gui/SMESH/input/translation.rst
deleted file mode 100644 (file)
index ff477ac..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-.. _translation_page:
-
-***********
-Translation
-***********
-
-This geometrical operation allows to translate in space your mesh or some of its elements.
-
-*To translate a mesh:*
-
-.. |img| image:: ../images/translation.png 
-
-#. From the **Modification** menu choose **Transformation** -> **Translation** item  or click *"Translation"* button |img| in the toolbar.
-   The following dialog will appear, where you can select a way to define the vector of thanslation:
-
-   * by two points:
-
-       .. image:: ../images/translation1.png 
-               :align: center
-
-   * by the vector from the origin of coordinates:
-
-       .. image:: ../images/translation2.png 
-               :align: center
-
-#. In the dialog:
-
-   * specify the IDs of the translated elements:
-
-     * **Select the whole mesh, submesh or group** activating this checkbox; or
-     * choose mesh elements with the mouse in the 3D Viewer. It is possible to select a whole area with a mouse frame; or 
-     * input the element IDs directly in **ID Elements** field. The selected elements will be highlighted in the viewer; or
-     * apply Filters. **Set filter** button allows to apply a filter to the selection of elements. See more about filters in the :ref:`selection_filter_library_page` page.
-
-   * specify the vector of translation:
-
-     * specify the coordinates of the start and end **Points** of the vector of translation; or
-     * specify the end point of the **Vector** of rotation starting at the origin of coordinates.
-
-   * specify the conditions of translation:
-
-     * activate **Move elements** radio button to create  the source mesh (or elements) at the new location and erase it from the previous location;
-     * activate **Copy elements** radio button to create the source mesh (or elements) at the new location, but leave it at the previous location, the source mesh will be considered one and single mesh with the result of the rotation;
-     * activate **Create as new mesh** radio button to leave the source mesh (or elements) at its previous location and create a new mesh at the new location, the new mesh appears in the Object Browser with the default name MeshName_rotated (it is possible to change this name in the adjacent box);
-     * activate **Copy groups** checkbox to copy the groups of elements of the source mesh to the newly created mesh.
-
-   * activate **Preview** checkbox to show the result of transformation in the viewer 
-   * click **Apply** or **Apply and Close** button to confirm the operation.
-
-**See Also** a sample TUI Script of a :ref:`tui_translation` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/transparency.rst b/doc/salome/gui/SMESH/input/transparency.rst
deleted file mode 100644 (file)
index 5990033..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-.. _transparency_page:
-
-************
-Transparency
-************
-
-.. image:: ../images/a-transparency.png
-       :align: center                                                 
-
-Using this slider you can set the transparency of shading. Absolutely
-transparent shading will be invisible. By default it is absolutely
-opaque.
-
diff --git a/doc/salome/gui/SMESH/input/tui_adaptation.rst b/doc/salome/gui/SMESH/input/tui_adaptation.rst
deleted file mode 100644 (file)
index e0bf7d0..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-.. _tui_adaptation_page:
-
-**********
-Adaptation
-**********
-
-.. _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 (file)
index d4c1c8f..0000000
+++ /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 (file)
index fd676a3..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-.. _tui_defining_hypotheses_page:
-
-**********************************
-Defining Hypotheses and Algorithms
-**********************************
-
-This page provides example codes of :ref:`defining algorithms <tui_defining_meshing_algos>`
-and hypotheses.
-
-* Wire discretisation 1D algorithm
-  
-    * :ref:`tui_1d_adaptive` hypothesis
-    * :ref:`Arithmetic Progression <tui_1d_arithmetic>` hypothesis
-    * :ref:`Geometric Progression <tui_1d_arithmetic>` hypothesis
-    * :ref:`Deflection and Number of Segments <tui_deflection_1d>` hypotheses
-    * :ref:`Start and End Length <tui_start_and_end_length>` hypothesis
-    * :ref:`tui_average_length` hypothesis
-    * :ref:`tui_propagation` additional hypotheses 
-    * :ref:`Fixed Points 1D <tui_fixed_points>` hypothesis
-  
-
-* Triangle: Mefisto 2D algorithm
-  
-    * :ref:`tui_max_element_area` hypothesis 
-    * :ref:`tui_length_from_edges` hypothesis 
-  
-* Quadrangle: Mapping 2D algorithm
-  
-    * :ref:`Quadrangle Parameters <tui_quadrangle_parameters>` hypothesis 
-
-* :ref:`Radial Quadrangle 1D-2D <tui_radial_quadrangle>` algorithm
-* NETGEN 3D algorithm
-  
-    *  :ref:`tui_max_element_volume` hypothesis 
-    *  :ref:`Viscous layers <tui_viscous_layers>` hypotheses
-
-* Hexahedron (i,j,k) 3D algorithm
-
-   *   :ref:`tui_block_renumber`
-
-* :ref:`tui_projection`
-* :ref:`Extrusion 3D <tui_prism_3d_algo>` algorithm
-* :ref:`Radial Prism <tui_radial_prism>` algorithm
-* :ref:`Body Fitting <tui_cartesian_algo>` algorithm
-* :ref:`Import 1D-2D Elements from Another Mesh <tui_import>` algorithm
-* :ref:`Use Faces to be Created Manually <tui_use_existing_faces>` algorithm
-* :ref:`Segments around Vertex <tui_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 (file)
index 35ecd8c..0000000
+++ /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 (file)
index 01bcf9b..0000000
+++ /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 (file)
index a4e0565..0000000
+++ /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 (file)
index 1509e8d..0000000
+++ /dev/null
@@ -1,328 +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>`
-
-.. _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 (file)
index e05865b..0000000
+++ /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 (file)
index 566d69b..0000000
+++ /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 (file)
index 23b755f..0000000
+++ /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 (file)
index d1320ec..0000000
+++ /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/gui/SMESH/input/tui_work_on_objects_from_gui.rst b/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst
deleted file mode 100644 (file)
index d908627..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-
-.. _tui_work_on_objects_from_gui: 
-
-***************************************
-How to work with objects from the GUI ?
-***************************************
-
-It is sometimes useful to work alternatively in the GUI of SALOME and in the Python Console. To fetch an object from the TUI simply type::
-
-  myMesh_ref = salome.IDToObject( ID )
-  # were ID is a string looking like "0:1:2:3" that appears in the Object Browser in the Entry column.
-  # ( If hidden, show it by right clicking and checking the checkbox Entry )
-  myMesh = smesh.Mesh(myMesh_ref)
-
-or:: 
-
-  myMesh_ref = salome.myStudy.FindObjectByPath("/Mesh/myMesh").GetObject() 
-  #'/Mesh/myMesh' is a path to the desired object in the Object Browser
-  myMesh = smesh.Mesh(myMesh_ref)
-
-or::
-
-  # get a selected mesh
-  from salome.gui import helper
-  myMesh_ref = helper.getSObjectSelected()[0].GetObject() 
-  myMesh = smesh.Mesh(myMesh_ref)
-
-A result myMesh is an object of :class:`Mesh <smeshBuilder.Mesh>` class.
-
-.. note:: The first statement only gives you access to a reference to the object created via the GUI (`myMesh_ref`). But the methods available on this reference differ from those of :class:`Mesh <smeshBuilder.Mesh>` class documented in these help pages. That's why you have to create an instance of :class:`Mesh <smeshBuilder.Mesh>` class with the last statement. 
diff --git a/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst b/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst
deleted file mode 100644 (file)
index 53a0322..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-.. _uniting_set_of_triangles_page: 
-
-**************************
-Uniting a set of triangles
-**************************
-
-It is possible to unite many neighboring triangles into
-quadrangles by deletion of the common edge.
-
-*To union several triangles:*
-
-.. |img| image:: ../images/image80.png
-
-#. Select a mesh (and display it in the 3D Viewer if you are going to pick elements by mouse).
-#. In the **Modification** menu select the **Union of triangles** item or click *"Union of triangles"* button |img| in the tool-bar.
-
-   The following dialog box will appear:
-
-       .. image:: ../images/a-unionoftriangles.png
-               :align: center
-
-
-       * **The main list** shall contain the triangles which will be united. You can click on a triangle in the 3D viewer and it will be highlighted. After that click the **Add** button and the ID of this triangle will be added to the list. To remove a selected element or elements from the list click the **Remove** button. The **Sort** button allows to sort the list of IDs. The **Filter** button allows to apply a definite :ref:`filter <filtering_elements>` to selection of triangles.
-       * **Apply to all** radio button allows to apply the operation to all triangles of the selected mesh.
-       * **Preview** provides a preview in the viewer.
-       * **Criterion** menu allows to choose a quality criterion, which will be optimized to select triangles to unite.
-       * **Select from** set of fields allows to choose a sub-mesh or an existing group whose triangle elements then can be added to the list.
-
-#. Click the **Apply** or **Apply and Close** button to confirm the operation.
-
-If some selected triangle elements have no adjacent edges with one of
-the others, the operation on these elements shall take no effect.
-
-.. image:: ../images/uniting_a_set_of_triangles1.png 
-       :align: center
-
-.. centered::
-       The chosen triangles
-
-.. image:: ../images/uniting_a_set_of_triangles2.png 
-       :align: center
-
-.. centered::
-       The union of several triangles - several quadrangular cells are created
-
-**See Also** a sample TUI Script of a 
-:ref:`tui_uniting_set_of_triangles` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/uniting_two_triangles.rst b/doc/salome/gui/SMESH/input/uniting_two_triangles.rst
deleted file mode 100644 (file)
index dfc4236..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-.. _uniting_two_triangles_page: 
-
-*********************
-Uniting two triangles
-*********************
-
-In MESH you can union two neighboring triangles by deletion of the common edge.
-
-*To unite two triangles:*
-
-.. |img| image:: ../images/image71.png
-
-#. From the **Modification** menu choose the **Union of two triangles** item or click *"Union of two triangles"* button |img| in the tool-bar.
-
-   The following dialog box shall appear:
-
-       .. image:: ../images/unionoftwotriangles.png
-               :align: center
-
-
-#. Enter IDs of nodes forming the required edge in the **Edge** field (a couple of node IDs separated by a dash) or select this edge in the 3D viewer.
-#. Click the **Apply** or **Apply and Close** button.
-
-.. image:: ../images/uniting_two_triangles1.png 
-       :align: center
-
-.. centered::
-       "The selected triangles"
-
-
-.. image:: ../images/uniting_two_triangles2.png 
-       :align: center
-
-.. centered::
-       "The union of two triangles" 
-
-**See Also** a sample TUI Script of a 
-:ref:`tui_uniting_two_triangles` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/use_existing_algos.rst b/doc/salome/gui/SMESH/input/use_existing_algos.rst
deleted file mode 100644 (file)
index d362c70..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-.. _import_algos_page: 
-
-********************************************
-Import Elements from Another Mesh Algorithms
-********************************************
-
-**Import Elements from Another Mesh** algorithms allow to
-define the mesh of a geometrical 
-object by importing suitably located mesh elements from another
-mesh. The algorithms import elements whose all nodes lye on the geometry
-being meshed.
-The mesh elements to import from the other mesh should be contained in
-groups. If several groups are used to mesh the same geometry, validity of
-nodal connectivity of result mesh must be assured by connectivity of
-the source mesh; no geometrical checks are performed to merge
-different nodes at same locations.
-
-The source elements must totally cover the meshed geometry.
-The source elements lying partially over the geometry will not be used.
-
-These algorithms can be used to mesh a very complex geometry part by
-part, by storing meshes of parts in files and then fusing them
-together using these algorithms.
-
-
-**Import 1D Elements from Another Mesh** algorithm allows to define
-the mesh of a geometrical edge (or group of edges)
-by importing mesh edges contained in a group (or groups) from another mesh.
-To apply this algorithm select the edge to be meshed (indicated in
-the field **Geometry** of **Create mesh** dialog box),
-**Import 1D Elements from Another Mesh** in the list of 1D
-algorithms and click the *"Add Hypothesis"* button.
-The following dialog box will appear:
-
-.. image:: ../images/hyp_source_edges.png
-       :align: center                                                 
-
-In this dialog box you can define 
-
-* The **Name** of the algorithm. 
-* The **Groups of Edges** to import 1D elements from.
-* **To copy mesh** checkbox allows to import not only the edges of the selected **Groups of Edges**, but the whole source mesh. In this case **To copy groups** checkbox allows to create the same groups as in the imported source mesh.
-
-
-**Import 1D-2D Elements from Another Mesh** algorithm allows to define the mesh of a geometrical face (or group of faces) by importing mesh faces contained in a group (or groups) from another (or this) mesh. 1D elements on the boundary of the geometrical face (if not yet present) are also created by the algorithm in conformity with the created 2D elements. The algorithm imports a mesh face provided that all its nodes lye on the geometrical face.
-
-To apply this algorithm select the geometrical face to be meshed (indicated in the field **Geometry** of **Create mesh** dialog box), **Import 1D-2D Elements from Another Mesh** in the list of 2D algorithms and click the *"Add Hypothesis"* button.
-
-The following dialog box will appear:
-
-.. image:: ../images/hyp_source_faces.png
-       :align: center                                                 
-
-In this dialog box you can define 
-
-* The **Name** of the algorithm. 
-* The **Groups of Faces** to import 2D elements from.
-* **To copy mesh** checkbox allows to import not only the faces of the selected **Groups of Faces**, but the whole source mesh. In this case **To copy groups** checkbox allows to create the same groups as in the imported source mesh.
-
-
-**See Also** a sample TUI Script of :ref:`Import 2D Elements from Another Mesh <tui_import>`.
diff --git a/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst b/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst
deleted file mode 100644 (file)
index 71eea1b..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-.. _using_notebook_mesh_page: 
-
-*********************
-Using SALOME NoteBook
-*********************
-
-**SALOME NoteBook** allows defining variables to be used for
-creation and modification of objects.
-
-.. image:: ../images/using_notebook_smesh.png 
-       :align: center
-
-.. centered::
-       Setting of variables in SALOME NoteBook
-
-.. image:: ../images/addnode_notebook.png 
-       :align: center
-
-.. centered::
-       Use of variables to add a node in MESH module
-
-The following limitations on the use of variables still exist:
-
-* :ref:`Distribution of Layers <radial_prism_algo_page>` hypothesis - parametrical values are correctly applied, but they are not restored after "Update study" operation.
-* :ref:`Number of Segments <a1d_meshing_hypo_page>` hypothesis, Distribution with Table Density and Distribution with Analytic Density - parametrical values are not applicable.
-* :ref:`Translation <translation_page>` dialog box, default mode (translation by two points) - parametrical values are correctly applied, but they are not restored after "Update study" operation.
-* :ref:`Merging nodes <merging_nodes_page>` dialog box - parametrical value (tolerance of coincident nodes detection) is correctly applied, but it is not restored after "Update study" operation.
-* :ref:`Revolution <revolution_page>` dialog box - it is impossible to use the angle of revolution as "total angle" if it is defined as variable.
-* :ref:`Extrusion along a path <extrusion_along_path_page>` dialog box - it is impossible to use "Linear variation of the angles" mode if at least one of those angles is defined as variable.
-* :ref:`Pattern mapping <pattern_mapping_page>` dialog box - parametrical values (indices of nodes) are correctly applied, but they are not restored after "Update study" operation.
-* :ref:`Clipping <clipping_page>` dialog box.
-* :ref:`Properties <colors_size_page>` dialog box.
-
-
-Our **TUI Scripts** provide you with useful examples of :ref:`Using SALOME NoteBook <tui_notebook_smesh>`.
-
-
diff --git a/doc/salome/gui/SMESH/input/using_operations_on_groups.rst b/doc/salome/gui/SMESH/input/using_operations_on_groups.rst
deleted file mode 100644 (file)
index 717901d..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-.. _using_operations_on_groups_page: 
-
-****************************
-Boolean operations on groups
-****************************
-
-In MESH you can perform some Boolean operations on groups, which belong to one and the same mesh.
-
-* :ref:`union_anchor`
-* :ref:`intersection_anchor`
-* :ref:`cut_anchor` 
-
-
-
-
-.. _union_anchor:
-
-Union of groups
-###############
-
-This operation allows to create a new group in such a way that all
-mesh elements that are present in the initial groups will be added to
-the new one.
-
-*To union groups:*
-
-#. In the **Mesh** menu select the **Union Groups** item. The following dialog box will appear:
-
-       .. image:: ../images/uniongroups.png
-               :align: center                                                 
-
-   In this dialog box you should specify the name of the resulting group and set of groups which will be united.
-
-   For example, we have two groups Group1 and Group2. 
-   The result of their **Union** will be Group12:
-
-       .. image:: ../images/image133.gif
-               :align: center
-
-       .. centered::
-               Group1
-
-       .. image:: ../images/image134.gif
-               :align: center
-
-       .. centered::
-               Group2
-
-       .. image:: ../images/image135.gif
-               :align: center
-
-       .. centered::
-               Group12
-
-#. Click the **Apply** or **Apply and Close** button to confirm creation of the group.
-
-
-**See Also** a sample TUI Script of a :ref:`tui_union_of_groups` operation.
-
-
-.. _intersection_anchor:
-
-Intersection of groups
-######################
-
-This operation allows to create a new group in such a way that all
-mesh elements that are present in all initial groups together are added to the
-new one.
-
-*To intersect groups:*
-
-#. In the **Mesh** menu select the **Intersect Groups** item. The following dialog box will appear:
-
-       .. image:: ../images/intersectgroups.png
-               :align: center                                                 
-
-   In this dialog box you should specify the name of the resulting group and set of groups which will be intersected.
-
-   For example, we have two groups Group1 and Group2. 
-   The result of their **Intersection** will be Group12a:
-
-       .. image:: ../images/image133.gif
-               :align: center
-
-       .. centered::
-               Group1
-
-       .. image:: ../images/image134.gif
-               :align: center
-
-       .. centered::
-               Group2
-
-       .. image:: ../images/image136.gif
-               :align: center
-
-       .. centered::
-               Group12a
-
-#. Click the **Apply** or **Apply and Close** button to confirm creation of the group.
-
-
-**See Also** a sample TUI Script of an :ref:`tui_intersection_of_groups` operation.  
-
-
-.. _cut_anchor:
-
-Cut of groups
-#############
-
-This operation allows to create a new group in such a way that all
-mesh elements that are present in the main groups but are absent in the
-tool groups are added to the new one.
-
-*To cut groups:*
-
-#. In the **Mesh** menu select the **Cut Groups** item. The following dialog box will appear:
-
-       .. image:: ../images/cutgroups.png
-               :align: center                                                 
-
-   In this dialog box you should specify the name of the resulting group and groups which will be cut.
-
-   For example, we have two groups Group1 and Group2. 
-   The result of their **Cut** will be Group12b:
-
-       .. image:: ../images/image133.gif
-               :align: center
-
-       .. centered::
-               Group1
-
-       .. image:: ../images/image134.gif
-               :align: center
-
-       .. centered::
-               Group2
-
-       .. image:: ../images/image137.gif
-               :align: center
-
-       .. centered::
-               Group12b
-
-#. Click the **Apply** or **Apply and Close** button to confirm creation of the group.
-
-
-**See Also** a sample TUI Script of a :ref:`tui_cut_of_groups` operation.  
-
-
diff --git a/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst b/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst
deleted file mode 100644 (file)
index 06c9197..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-.. _viewing_meshes_overview_page: 
-
-**************
-Viewing meshes
-**************
-
-By default a just :ref:`computed <compute_anchor>` mesh will be
-automatically displayed in the **VTK 3D Viewer**. (You can switch
-off :ref:`Automatic Update <automatic_update_pref>` preference parameter
-to prevent this.)
-Click **Display only** to hide all other objects at the same time.
-
-**VTK 3D Viewer** is described in detail in the documentation on **GUI module**.
-
-Use the following :ref:`preference parameters <mesh_preferences_page>` 
-to adjust how the mesh is displayed by default:
-
-* :ref:`Automatic Update <automatic_update_pref>` 
-* :ref:`Default display mode <display_mode_pref>` 
-* :ref:`Representation of the 2D quadratic elements <quadratic_2d_mode_pref>` 
-* All parameters of :ref:`Mesh <mesh_tab_preferences>` tab page of Preferences dialog.
-
-After the mesh has appeared in the Viewer, you can select it with
-left mouse click and  get information about it, change its
-presentation parameters and access to other useful options by
-right-clicking on the selected mesh.
-
-.. image:: ../images/dialog.png
-       :align: center
-
-
-* **Rename** - allows to rename the object in the Object browser.
-* **Hide all** - allows to hide all objects in the viewer.
-* **Update** - refreshes the presentation of your mesh in the 3D Viewer, applying all recent changes. 
-* :ref:`Mesh Information <mesh_infos_page>` -  provides information about the mesh.
-* :ref:`Find Element by Point <find_element_by_point_page>` - allows to find all mesh elements, to which belongs a point with the given coordinates.
-* **Auto Color** - switch on / off auto-assigning colors for the groups. If switched on, a default color of a new group in :ref:`Create Group <creating_groups_page>` dialog is chosen randomly. 
-* :ref:`Numbering <numbering_page>` - allows to display the ID numbers of all meshing elements or nodes composing your mesh in the viewer.
-* :ref:`Display Mode <display_mode_page>` - allows to select between Wireframe, Shading and Nodes presentation.
-* :ref:`Display Entity <display_entity_page>` - allows to display entities by types (Faces, Edges, Volumes etc.).
-
-.. _quadratic_2d_mode:
-
-* **2D Quadratic** - allows to select between the representation of quadratic edges as broken **lines** or as **arcs**. A default representation can be set in :ref:`Preferences <quadratic_2d_mode_pref>`. Arc representation applies to 1D and 2D elements only.
-* **Orientation of faces** - shows vectors of orientation of faces of the selected mesh. The orientation vector is shown for each 2D mesh element and for each free facet of a 3D mesh element. The vector direction is calculated by the first three nodes of the face produced by vectors n1-n2 and n1-n3.
-* :ref:`Properties <colors_size_page>` - allows to define several visual properties, including color of elements, shrink size, ...
-* :ref:`Transparency <transparency_page>` - allows to change the transparency of mesh elements.
-* :ref:`Controls <quality_page>` - graphically presents various information about the mesh. 
-* **Hide** - allows to hide the selected mesh from the viewer.
-* **Show Only** - allows to display only the selected mesh, hiding all others from the viewer. If :ref:`Fit All upon Show Only <display_mode_pref>` Preference option is active, *Fit All* command is additionally performed.
-* :doc:`clipping` - allows to create cross-sections of the displayed objects.
-* **Dump view** - exports an object from the viewer in bmp, png or jpeg image format.
-* **Change background** - allows to redefine the background color. By default it is black.
-* **View Operations** - allows to show/hide the  visualization toolbar in the Viewer window.
-* **Recording Operations** - allows to show/hide the recording toolbar in the Viewer window.
-
-**Table of Contents**
-
-.. toctree::
-   :maxdepth: 2
-   :titlesonly:
-
-   mesh_infos.rst
-   find_element_by_point.rst
-   numbering.rst
-   display_mode.rst
-   display_entity.rst
-   colors_size.rst
-   transparency.rst
-   clipping.rst
diff --git a/doc/salome/gui/SMESH/input/volume.rst b/doc/salome/gui/SMESH/input/volume.rst
deleted file mode 100644 (file)
index f49b3bd..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-.. _volume_page: 
-
-******
-Volume
-******
-
-**Volume** mesh quality criterion reflects the volume of meshes of a 3D object.
-
-*To apply the Volume quality criterion to your mesh:*
-
-.. |img| image:: ../images/image145.png
-
-#. Display your mesh in the viewer.
-#. Choose **Controls > Volume Controls > Volume** or click *"Volume"* button |img| in the toolbar.
-
-   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
-
-       .. image:: ../images/image143.gif
-               :align: center
-
-
-**See Also** a sample TUI Script of a :ref:`tui_volume` filter.
diff --git a/doc/salome/gui/SMESH/input/warping.rst b/doc/salome/gui/SMESH/input/warping.rst
deleted file mode 100644 (file)
index 3cb47f7..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-.. _warping_page: 
-
-*******
-Warping
-*******
-
-.. image:: ../images/image24.gif
-       :align: center
-
-**Warping** indicates that a face is not planar and is applied only to
-2D elements with 4 nodes. This quality control criterion is based on a
-projection plane created by:
-
-#. bisecting the four element edges,
-#. creating a point on the plane at the vector average of the corners, where the x-axis extends from the point to the bisector on edge 2.
-
-The plane normal is in the direction of the cross product of the
-x-axis and the vector from the origin to the bisector of edge 3. Every
-corner of the quad will then be a distance *h* from the plane. The
-length of each half edge is measured and the shortest length is
-assigned *l*. The warp angle is the arcsine of the ratio of the
-projection height *h* to the half edge length *l*.
-
-*To apply the Warping quality criterion to your mesh:*
-
-.. |img| image:: ../images/image39.png
-
-#. Display your mesh in the viewer.
-#. Choose **Controls > Face Controls > Warping Angle** or click *"Warping angle"* button |img| of the toolbar.
-
-   Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
-
-       .. image:: ../images/image97.jpg
-                       :align: center
-
-
-**See Also** a sample TUI Script of a :ref:`tui_warping` filter.
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/1d_meshing_hypo.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/1d_meshing_hypo.po
deleted file mode 100644 (file)
index 118250f..0000000
+++ /dev/null
@@ -1,565 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 004b45a20a744ffea4d3343da07f3dd2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:5
-msgid "1D Meshing Hypotheses"
-msgstr ""
-
-# 86fad262db614ff5b687e6d4575e44b7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:9
-msgid "Basic 1D hypothesis specifies:"
-msgstr ""
-
-# 0cffe55995b14ac2ae702078456fcf8d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:8
-msgid "how a :ref:`a1d_algos_anchor` should divide the edge;"
-msgstr ""
-
-# de1aea28d554437e962353fc3e399251
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:9
-msgid ""
-"how a :ref:`a1d_algos_anchor` should divide the group of C1-continuous "
-"edges."
-msgstr ""
-
-# 4101a67e6d984fdc8894696ae57ad18b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:31
-msgid "1D hypotheses can be categorized by type of nodes distribution as follows:"
-msgstr ""
-
-# dfe0bcbd0def470bab5fd53d3558f173
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:16
-msgid "Uniform distribution:"
-msgstr ""
-
-# b5ef1e537944499bb726f2709de38209
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:13
-msgid ":ref:`average_length_anchor`"
-msgstr ""
-
-# fdc4d53d08c748b4996b24b381922024
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:14
-msgid ":ref:`max_length_anchor`"
-msgstr ""
-
-# 646945b8efff4573b136d27f782b24e8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:15
-msgid ":ref:`number_of_segments_anchor` with Equidistant distribution"
-msgstr ""
-
-# 1f2e9941069d468a9007789f5610564b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:16
-msgid ":ref:`automatic_length_anchor`"
-msgstr ""
-
-# b2bcc6a61c5646569499bd49437ba22b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:22
-msgid "Constantly increasing or decreasing length of segments:"
-msgstr ""
-
-# 24a07317698d4f7ca649e76eddab2caa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:19
-msgid ":ref:`arithmetic_1d_anchor`"
-msgstr ""
-
-# f1618d2b2b364cabbf62bfda961a8299
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:20
-msgid ":ref:`geometric_1d_anchor`"
-msgstr ""
-
-# 086be4a5bbaa4ee0b1d6f8c63843fbb7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:21
-msgid ":ref:`start_and_end_length_anchor`"
-msgstr ""
-
-# 09c9820b8a2a4a4d94c980cd3133eab3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:22
-msgid ":ref:`number_of_segments_anchor` with Scale distribution"
-msgstr ""
-
-# ee781ed9a4fd46d08293c6a556068f51
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:26
-msgid "Distribution depending on curvature:"
-msgstr ""
-
-# 6f8fb1c713e24e0c9ab60a883453232d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:25
-msgid ":ref:`adaptive_1d_anchor`"
-msgstr ""
-
-# 71739427858f4114ba7556cb23ae3517
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:26
-msgid ":ref:`deflection_1d_anchor`"
-msgstr ""
-
-# c624c4d51045437da0ac9b8e5f4737ed
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:31
-msgid "Arbitrary distribution:"
-msgstr ""
-
-# 21a4015c89ab48d79f1839cb441b70da
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:29
-msgid ":ref:`fixed_points_1d_anchor`"
-msgstr ""
-
-# edb342ebdafc493badb3df1ffd43d68f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:30
-msgid ""
-":ref:`number_of_segments_anchor` \"Number of Segments\" with "
-":ref:`analyticdensity_anchor` or Table Density Distribution"
-msgstr ""
-
-# f1c27584812f4bf4ba9b7bfc11aa5699
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:36
-msgid "Adaptive hypothesis"
-msgstr ""
-
-# 5f9d7dbbbaae4e858e7ed744834f2133
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:38
-msgid ""
-"**Adaptive** hypothesis allows to split edges into segments with a length"
-" that depends on the curvature of edges and faces and is limited by "
-"**Min. Size** and **Max Size**. The length of a segment also depends on "
-"the lengths of adjacent segments (that can't differ more than twice) and "
-"on the  distance to close geometrical entities (edges and faces) to avoid"
-" creation of narrow 2D elements."
-msgstr ""
-
-# 77a9dd0ad94b42239280ee8477c645ad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:43
-msgid "**Min size** parameter limits the minimal segment size."
-msgstr ""
-
-# c65d0ae59eb4430c9cb9dc840c24f008
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:44
-msgid "**Max size** parameter defines the length of segments on straight edges."
-msgstr ""
-
-# c8f35ffc68954c699986f225ad24680d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:45
-msgid ""
-"**Deflection** parameter gives maximal distance of a segment from a "
-"curved edge."
-msgstr ""
-
-# 8074ca7c6943489eb587faca286e1fa8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:53
-msgid "**See Also** a :ref:`tui_1d_adaptive` that uses Adaptive hypothesis."
-msgstr ""
-
-# 6933bfa76bf240d48ac1e86ed2fc3a79
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:58
-msgid "Arithmetic Progression hypothesis"
-msgstr ""
-
-# 67b28a7ed2f44ff59afc61045ed1b8e1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:60
-msgid ""
-"**Arithmetic Progression** hypothesis allows to split edges into segments"
-" with a length that changes in arithmetic progression (Lk = Lk-1 + d) "
-"beginning from a given starting length and up to a given end length."
-msgstr ""
-
-# d091f0929168432b8599be4e633b3636
-# d7c3e8d76efb4b6f89ecc243430aca0f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:62
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:87
-msgid ""
-"The splitting direction is defined by the orientation of the underlying "
-"geometrical edge. **Reverse Edges** list box allows specifying the edges,"
-" for which the splitting should be made in the direction opposite to "
-"their orientation. This list box is usable only if a geometry object is "
-"selected for meshing. In this case it is possible to select edges to be "
-"reversed either directly picking them in the 3D viewer or by selecting "
-"the edges or groups of edges in the Object Browser. Use **Add** button to"
-" add the selected edges to the list."
-msgstr ""
-
-# b60f2b5edee442ff949282b80a9fe815
-# 5ccffba12a6e4b69ac3fc32709e4abf0
-# 6ad5f607d8c2493eb22c219025b1b163
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:65
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:170
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:227
-msgid ""
-":ref:`reversed_edges_helper_anchor` group assists you in defining "
-"**Reversed Edges** parameter."
-msgstr ""
-
-# 6c4e88f8eecf4733bccec96fd0a6147f
-# 4af587f46e6a4d1fbfe07aed5478fe41
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:78
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:96
-msgid "**See Also** a sample TUI Script of a :ref:`tui_1d_arithmetic` operation."
-msgstr ""
-
-# 4cf2061318094f2584bfb1dfcb2faea1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:83
-msgid "Geometric Progression hypothesis"
-msgstr ""
-
-# 8c6e5a2ca49440e9b7fb5fc16a9b9c9f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:85
-msgid ""
-"**Geometric Progression** hypothesis allows splitting edges into segments"
-" with a length that changes in geometric progression (Lk = Lk-1 * d) "
-"starting from a given **Start Length** and with a given **Common Ratio**."
-msgstr ""
-
-# b147c2168aef4864ad9445d3e81f545a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:90
-msgid ""
-":ref:'reversed_edges_helper_anchor' group assists you in defining "
-"**Reversed Edges** parameter."
-msgstr ""
-
-# ab382baae6a6429c8cfab692687e8be8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:101
-msgid "Deflection hypothesis"
-msgstr ""
-
-# b0fb0c4995874073a9baf66368b4d2d9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:103
-msgid ""
-"**Deflection** hypothesis can be applied for meshing curvilinear edges "
-"composing your geometrical object. It defines only one parameter: the "
-"value of deflection (or chord error)."
-msgstr ""
-
-# 19762b93397c4b29a546c596f90ce809
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:105
-msgid ""
-"A geometrical edge is divided into segments of length depending on edge "
-"curvature. The more curved the edge, the shorter the segment. Nodes on "
-"the edge are placed so that the maximum distance between the edge and a "
-"segment approximating a part of edge between two nodes should not exceed "
-"the value of deflection."
-msgstr ""
-
-# f5e2e15def0c420494fd4a6444cf3f05
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:116
-msgid "**See Also** a sample TUI Script of a :ref:`tui_deflection_1d` operation."
-msgstr ""
-
-# c100ce15e826460c8c6708e5d2e5d260
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:121
-msgid "Local Length hypothesis"
-msgstr ""
-
-# fa23f8b4ed594f6ba03c764fe24001a1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:123
-msgid ""
-"**Local Length** hypothesis can be applied for meshing of edges composing"
-" your geometrical object. Definition of this hypothesis consists of "
-"setting the **length** of segments, which will approximate these edges, "
-"and the **precision** of rounding."
-msgstr ""
-
-# 53b1305cc3f04666a7a6ef6edce60db5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:125
-msgid ""
-"The **precision** parameter is used to round a *number of segments*, "
-"calculated by dividing the *edge length* by the specified **length** of "
-"segment, to the higher integer if the *remainder* exceeds the "
-"**precision** and to the lower integer otherwise. Use value 0.5 to "
-"provide rounding to the nearest integer, 1.0 for the lower integer, 0.0 "
-"for the higher integer. Default value is 1e-07."
-msgstr ""
-
-# 72fc0a4076ea4a93b08374e05df59567
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:128
-msgid ""
-"For example: if *edge length* is 10.0 and the segment **length** is 3.0 "
-"then their division gives 10./3. = 3.33(3) and the *remainder* is "
-"0.33(3). If **precision** is less than 0.33(3) then the edge is divided "
-"into 3 segments. If **precision** is more than 0.33(3) then the edge is "
-"divided into 4 segments."
-msgstr ""
-
-# 1c4881233eab426eae3cad02798e9e6b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:146
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_average_length` "
-"hypothesis operation."
-msgstr ""
-
-# 195635da2ded4460afce43748b85a522
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:152
-msgid "Max Size"
-msgstr ""
-
-# 51e210538ae64364a24aaa64fe065bf0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:154
-msgid ""
-"**Max Size** hypothesis allows splitting geometrical edges into segments "
-"not longer than the given length. Definition of this hypothesis consists "
-"of setting the maximal allowed **length** of segments. **Use preestimated"
-" length** check box lets you use **length** automatically calculated "
-"basing on size of your geometrical object, namely as diagonal of bounding"
-" box divided by ten. The divider can be changed via "
-":ref:`diagonal_size_ratio_pref` preference parameter. **Use preestimated "
-"length** check box is enabled only if the geometrical object has been "
-"selected before hypothesis definition."
-msgstr ""
-
-# 3ec80bcd3e5d4e389b415192cecd9ded
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:164
-msgid "Number of Segments hypothesis"
-msgstr ""
-
-# 2f5a82b3f0df4f09b9fb863e794011ff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:166
-msgid ""
-"**Number of Segments** hypothesis can be applied for approximating edges "
-"by a definite number of mesh segments with length depending on the "
-"selected type of distribution of nodes. The default number of segments "
-"can be set via :ref:`nb_segments_pref` preference parameter."
-msgstr ""
-
-# b4ceedb976fd4cb3ba01bb43d5605dd0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:168
-msgid ""
-"The direction of the splitting is defined by the orientation of the "
-"underlying geometrical edge. **Reverse Edges** list box allows to specify"
-" the edges for which the splitting should be made in the direction "
-"opposing to their orientation. This list box is enabled only if the "
-"geometry object is selected for the meshing. In this case it is possible "
-"to select edges to be reversed either by directly picking them in the 3D "
-"viewer or by selecting the edges or groups of edges in the Object "
-"Browser."
-msgstr ""
-
-# 49a79b130d134cbb8474ca4038c17e5a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:172
-msgid ""
-"You can set the type of node distribution for this hypothesis in the "
-"**Hypothesis Construction** dialog bog :"
-msgstr ""
-
-# 606ec954acf545b1985044f64396c155
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:177
-msgid ""
-"**Equidistant Distribution** - all segments will have the same length, "
-"you define only the **Number of Segments**."
-msgstr ""
-
-# fbed83f6f7ad4bfa96532ccd7d96a0bb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:179
-msgid ""
-"**Scale Distribution** - length of segments gradually changes depending "
-"on the **Scale Factor**, which is a ratio of the first segment length to "
-"the last segment length."
-msgstr ""
-
-# f9f0925545cc4dc4a60a2bc2c14e5fbd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:181
-msgid ""
-"Length of segments changes in geometric progression with the common ratio"
-" (A) depending on the **Scale Factor** (S) and **Number of Segments** (N)"
-" as follows: <code> A = S**(1/(N-1))</code>. For an edge of length L, "
-"length of the first segment is"
-msgstr ""
-
-# cb4fd106e14148f9b1067acd152de378
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:192
-msgid ""
-"**Distribution with Analytic Density** - you input the formula, which "
-"will rule the change of length of segments and the module shows in the "
-"plot the density function curve in red and the nodedistribution as blue "
-"crosses."
-msgstr ""
-
-# 2981a618040c455b8a33bc91b0ed133d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:201
-msgid "Analytic Density"
-msgstr ""
-
-# c2415e1dfe4a404f9c7f32e83e5ce0d3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:203
-msgid ""
-"The node distribution is computed so that to have the density function "
-"integral on the range between two nodes equal for all segments."
-msgstr ""
-
-# b3be5eda49174bedbde04c3261e7c07e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:208
-msgid ""
-"**Distribution with Table Density** - you input a number of pairs **t - "
-"F(t)**, where **t** ranges from 0 to 1, and the module computes the "
-"formula, which will rule the change of length of segments and shows in "
-"the plot the density function curve in red and the node distribution as "
-"blue crosses. The node distribution is computed in the same way as for "
-":ref:`analyticdensity_anchor`. You can select the **Conversion mode** "
-"from **Exponent** and **Cut negative**."
-msgstr ""
-
-# 2c691371aa3e421bbd47bc5a1f61e756
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:214
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_deflection_1d` hypothesis"
-" operation."
-msgstr ""
-
-# 8fba9bba46a2466081ef68543e3aaa65
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:221
-msgid "Start and End Length hypothesis"
-msgstr ""
-
-# 6923eaee87c74f3a9068e15baa112ce4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:223
-msgid ""
-"**Start and End Length** hypothesis allows to divide a geometrical edge "
-"into segments so that the first and the last segments have a specified "
-"length. The length of medium segments changes with automatically chosen "
-"geometric progression."
-msgstr ""
-
-# b9b5660f27ec4fbd8c2af3c653be6250
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:225
-msgid ""
-"The direction of the splitting is defined by the orientation of the "
-"underlying geometrical edge. **Reverse Edges** list box allows to specify"
-" the edges, for which the splitting should be made in the direction "
-"opposing to their orientation. This list box is enabled only if the "
-"geometry object is selected for the meshing. In this case it is possible "
-"to select edges to be reversed either by directly picking them in the 3D "
-"viewer or by selecting the edges or groups of edges in the Object "
-"Browser."
-msgstr ""
-
-# f8cd39ac36d54c518c08b6cc74cea1c3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:239
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_start_and_end_length` "
-"hypothesis operation."
-msgstr ""
-
-# 4c846b04b34b49fcb87cbfa89cfa7e0a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:245
-msgid "Automatic Length"
-msgstr ""
-
-# 52fc64e5fd41412dbb1945c98092ebb2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:247
-msgid ""
-"The dialog box prompts you to define the quality of the future mesh by "
-"only one parameter, which is **Fineness**, ranging from 0 (coarse mesh, "
-"low number of segments) to 1 (extremely fine mesh, great number of "
-"segments)."
-msgstr ""
-
-# 4c413256d67e4a98aafa8e8b9c98e56b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:252
-msgid ""
-"Compare one and the same object (sphere) meshed with minimum and maximum "
-"value of this parameter."
-msgstr ""
-
-# 85443717ca1240b1becda59b7316192d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:269
-msgid "Fixed Points hypothesis"
-msgstr ""
-
-# ba6121ee533e44fc908101a79a72b5c2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:271
-msgid ""
-"**Fixed Points** hypothesis allows splitting edges through a set of "
-"points parametrized on the edge (from 1 to 0) and a number of segments "
-"for each interval limited by the points."
-msgstr ""
-
-# 11d4d0cdcf96464492c236b7131824b3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:276
-msgid ""
-"It is possible to check in **Same Nb. Segments for all intervals** option"
-" and to define one value for all intervals."
-msgstr ""
-
-# 32729bb178134117bd5426aa77af8b12
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:278
-msgid ""
-"The splitting direction is defined by the orientation of the underlying "
-"geometrical edge. **Reverse Edges** list box allows to specify the edges "
-"for which the splitting should be made in the direction opposite to their"
-" orientation. This list box is enabled only if the geometrical object is "
-"selected for meshing. In this case it is possible to select the edges to "
-"be reversed either directly picking them in the 3D viewer or selecting "
-"the edges or groups of edges in the Object Browser."
-msgstr ""
-
-# b16d91c1530f4b638bd208ddff660d04
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:280
-msgid ""
-":ref:`reversed_edges_helper_anchor`  group assists in defining **Reversed"
-" Edges** parameter."
-msgstr ""
-
-# f5f9b331c9a64c788d3c37e2743a3587
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:289
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_fixed_points` hypothesis "
-"operation."
-msgstr ""
-
-# 9e5041ec60644fc7a926ce0f6ba229ad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:295
-msgid "Reversed Edges Helper"
-msgstr ""
-
-# 7ae7f217195445b399770e626dfe9857
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:300
-msgid ""
-"**Helper** group assists in defining **Reversed Edges** parameter of the "
-"hypotheses depending on edge direction."
-msgstr ""
-
-# 3b468927664d456ab32566aaf29301d9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:302
-msgid ""
-"**Show whole geometry** check-box allows seeing the whole geometrical "
-"model in the 3D Viewer, which can help to understand the location of a "
-"set of edges within the model."
-msgstr ""
-
-# 93f2b49b20724274a478612609fc7b1e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:304
-msgid ""
-"**Propagation chains** group allows defining **Reversed Edges** for "
-"splitting opposite edges of quadrilateral faces in a logically uniform "
-"direction. When this group is activated, the list is filled with "
-"propagation chains found within the shape on which a hypothesis is "
-"assigned. When a chain is selected in the list its edges are shown in the"
-" Viewer with arrows, which enables choosing a common direction for all "
-"chain edges. **Reverse** button inverts the common direction of chain "
-"edges. **Add** button is active if some edges of a chain have a different"
-" direction, so you can click **Add** button to add them to **Reversed "
-"Edges** list."
-msgstr ""
-
-# 97e86e78b2844d0691ff69afce408f49
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst:313
-msgid ""
-"Alternatively, uniform direction of edges of one propagation chain can be"
-" achieved by :ref:`constructing_submeshes_page` on one edge of the chain "
-"and assigning a :ref:`propagation_anchor` additional hypothesis. "
-"Orientation of this edge (and hence of all the rest edges of the chain) "
-"can be controlled by using **Reversed Edges** field."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/2d_meshing_hypo.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/2d_meshing_hypo.po
deleted file mode 100644 (file)
index 8a6985d..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# e09a6a3b97b64b3cb872ab20d9d9432d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:5
-msgid "2D Meshing Hypotheses"
-msgstr ""
-
-# 3c189747271e4baab0a6a8be1ebfe617
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:7
-msgid ":ref:`max_element_area_anchor`"
-msgstr ""
-
-# 626c5252da5d428fa87f21870252b8ec
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:8
-msgid ":ref:`length_from_edges_anchor`"
-msgstr ""
-
-# 0a330d38fd7a439ebca34824f94ce24a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:9
-msgid ":ref:`hypo_quad_params_anchor`"
-msgstr ""
-
-# e4c3135156f04dc8a7ab755cce1c926e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:14
-msgid "Max Element Area"
-msgstr ""
-
-# bce203b092324a5cae81a8d3cecd0775
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:16
-msgid ""
-"**Max Element Area** hypothesis is applied for meshing of faces composing"
-" your geometrical object. Definition of this hypothesis consists of "
-"setting the **maximum area** of mesh faces, which will compose the mesh "
-"of these faces."
-msgstr ""
-
-# 23f4d39a6f8e41a9afcb638757c9de85
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:29
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_max_element_area` "
-"hypothesis operation."
-msgstr ""
-
-# bc9dd7bbc2d84918ae8ed0c766421231
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:34
-msgid "Length from Edges"
-msgstr ""
-
-# 7e64f4443d73462497945de78b7d41b7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:36
-msgid ""
-"**Length from edges** hypothesis defines the maximum linear size of mesh "
-"faces as an average length of mesh edges approximating the meshed face "
-"boundary."
-msgstr ""
-
-# 1b22303db2b146a891123ae5a612fda8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:38
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_length_from_edges` "
-"hypothesis operation."
-msgstr ""
-
-# 27cb49c4b74e42a794fe9cdaf10ba349
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:43
-msgid "Quadrangle parameters"
-msgstr ""
-
-# 726853c1c3f444bb853c961e3766525c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:51
-msgid "**Quadrangle parameters** is a hypothesis for :ref:`quad_ijk_algo_page`."
-msgstr ""
-
-# a22ddb3e0ac443f5b199e4efd2ba09e8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:53
-msgid ""
-"**Transition** tab is used to define the algorithm of transition between "
-"opposite sides of the face with a different number of segments on them. "
-"The following types of transition algorithms are available:"
-msgstr ""
-
-# 1c874aacddc04fb283fa3a4baeea4a78
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:55
-msgid ""
-"**Standard** is the default case, when both triangles and quadrangles are"
-" possible in the transition area along the finer meshed sides."
-msgstr ""
-
-# 65541b3950864c14a539742e2cf126af
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:56
-msgid ""
-"**Triangle preference** forces building only triangles in the transition "
-"area along the finer meshed sides."
-msgstr ""
-
-# a5b18b9dbb824e7092954715a0d8bc8e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:59
-msgid ""
-"This type corresponds to **Triangle Preference** additional hypothesis, "
-"which is obsolete now."
-msgstr ""
-
-# cbdd1ae9654e473094535be74f398e2d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:61
-msgid ""
-"**Quadrangle preference** forces building only quadrangles in the "
-"transition area along the finer meshed sides. This hypothesis has a "
-"restriction: the total quantity of segments on all four face sides must "
-"be even (divisible by 2)."
-msgstr ""
-
-# 1d2c0415ad6448de9ca8cc4888852887
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:64
-msgid ""
-"This type corresponds to **Quadrangle Preference** additional hypothesis,"
-" which is obsolete now."
-msgstr ""
-
-# 86fed1d6a87d4261a98f062232709402
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:66
-msgid ""
-"**Quadrangle preference (reversed)** works in the same way and with the "
-"same restriction as **Quadrangle preference**, but the transition area is"
-" located along the coarser meshed sides."
-msgstr ""
-
-# f34e676eda8046a189ea5cd908adc1c1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:67
-msgid ""
-"**Reduced** type forces building only quadrangles and the transition "
-"between the sides is made gradually, layer by layer. This type has a "
-"limitation on the number of segments: one pair of opposite sides must "
-"have the same number of segments, the other pair must have an even total "
-"number of segments. In addition, the number of rows between sides with "
-"different discretization should be enough for the transition. Following "
-"the fastest transition pattern, three segments become one (see the image "
-"below), hence the least number of face rows needed to reduce from Nmax "
-"segments to Nmin segments is log<sub>3</sub>( Nmax / Nmin ). The number "
-"of face rows is equal to the number of segments on each of equally "
-"discretized sides."
-msgstr ""
-
-# ba8a0131a1ce4d6a8c769c79ca9ccca3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:75
-msgid ""
-"**Base vertex** tab allows using Quadrangle: Mapping algorithm for "
-"meshing of trilateral faces. In this case it is necessary to select the "
-"vertex, which will be used as the forth degenerated side of quadrangle."
-msgstr ""
-
-# ae5ff703b7b241049a1424f8be84add7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:95
-msgid ""
-"This parameter can be also used to mesh a segment of a circular face. "
-"Please, consider that there is a limitation on the selection of the "
-"vertex for the faces built with the angle > 180 degrees (see the "
-"picture)."
-msgstr ""
-
-# 36c47565de424a39bff9f2d3b1b0f2b5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:103
-msgid ""
-"In this case, selection of a wrong vertex for the **Base vertex** "
-"parameter will generate a wrong mesh. The picture below shows the good "
-"(left) and the bad (right) results of meshing."
-msgstr ""
-
-# a9b6a86af1fa41bf984f3466076bf2b3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:117
-msgid ""
-"**Enforced nodes** tab allows defining points, where the algorithm should"
-" create nodes. There are two ways to define positions of the enforced "
-"nodes."
-msgstr ""
-
-# cefb6744782b466f9c8320db9d4399cb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:119
-msgid ""
-"**Vertices** group allows to set up shapes whose vertices will  define "
-"positions of the enforced nodes. Only vertices successfully projected to "
-"the meshed face and located close enough to the meshed face will be used "
-"to create the enforced nodes."
-msgstr ""
-
-# 524446d9898844208f44b2963b1fc521
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:120
-msgid ""
-"**Points** group allows to explicitly define coordinates of points used "
-"to create the enforced nodes. Only points successfully projected to the "
-"meshed face and located close enough to the meshed face will be used to "
-"create the enforced nodes."
-msgstr ""
-
-# 4f40e9dbcb9345d7864be5c424006f41
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:123
-msgid "**Enforced nodes** cannot be created at **Reduced** transition type."
-msgstr ""
-
-# f06dce07c1944aeeb641ca1dbc820e5b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:126
-msgid "Let us see how the algorithm works:"
-msgstr ""
-
-# c803bbb4162541b293d406dd2b4830c4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:126
-msgid ""
-"Initially positions of nodes are computed without taking into account the"
-" enforced vertex (yellow point)."
-msgstr ""
-
-# 1ae3092675794e7f8784c2e7aecd9726
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:134
-msgid ""
-"Then the node closest to the enforced vertex is detected. Extreme nodes "
-"of the row and column of the detected node are used to create virtual "
-"edges (yellow lines) ending at the enforced vertex."
-msgstr ""
-
-# 53ca82d63dca4b5f8c582ef147410fff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:141
-msgid ""
-"Consequently, the meshed face is divided by the virtual edges into four "
-"quadrilateral sub-domains each of which is meshed as usually: the nodes "
-"of the row and column of the detected node are moved to the virtual edges"
-" and the quadrilateral elements are constructed."
-msgstr ""
-
-# 2824cf7b8268406f896ffa7b16377973
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:150
-msgid ""
-"If there are several enforced vertices, the algorithm is applied "
-"recursively to the formed sub-domains."
-msgstr ""
-
-# 5a699f46aaf34d3e83d8349558155473
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst:152
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_quadrangle_parameters` "
-"hypothesis."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_filters.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_filters.po
deleted file mode 100644 (file)
index e0d9eac..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 4c761ceb3e2b4589b9322427cd60a721
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_filters.rst:5
-msgid "About filters"
-msgstr ""
-
-# 6b9203e61ded4843bca733e95c9506bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_filters.rst:7
-msgid ""
-"**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."
-msgstr ""
-
-# 2f2442981da04ae390067a60888985b6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_filters.rst:9
-msgid ""
-"Several criteria can be combined together by using logical operators "
-"*AND* and *OR*. In addition, a filter criterion can be reverted using "
-"logical operator *NOT*."
-msgstr ""
-
-# b4f41bb37d9b46ada354aec2684e8658
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_filters.rst:11
-msgid ""
-"Some filtering criteria use the functionality of "
-":ref:`quality_page`:\"mesh quality controls\" to filter mesh nodes / "
-"elements by specific characteristic (Area, Length, etc)."
-msgstr ""
-
-# 62a6a4834fcd4a23889013edf25b754f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_filters.rst:13
-msgid "The functinality of mesh filters is available in both GUI and TUI modes:"
-msgstr ""
-
-# f5f025a85355430caf590bf217ce80e1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_filters.rst:15
-msgid ""
-"In GUI, filters are available in some dialog boxes via \"Set Filters\" "
-"button, clicking on which opens the dialog box allowing to specify the "
-"list of filter criteria to be applied to the current selection. See "
-":ref:`selection_filter_library_page` page to learn more about selection "
-"filters and their usage in GUI."
-msgstr ""
-
-# 06ad9d5a34d14a1d906a06c5cdfa2dc7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_filters.rst:17
-msgid ""
-"In Python scripts, filters can be used to choose only some mesh entities "
-"(nodes or elements) for the operations, which require the list of "
-"entities as input parameter (create/modify group, remove nodes/elements, "
-"etc) and for the operations, which accept objects (groups, sub-meshes) as"
-" input parameter. The page :ref:`tui_filters_page` provides examples of "
-"the filters usage in Python scripts."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_hypo.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_hypo.po
deleted file mode 100644 (file)
index 1d1b3e0..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# cf5c5ca41bf34fb1ad6c3de88dd1d060
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:5
-msgid "About Hypotheses"
-msgstr ""
-
-# 81550c4a85c94e458babb3434b2da0f2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:7
-msgid ""
-"**Hypotheses** represent boundary conditions which will be taken into "
-"account by meshing algorithms. The hypotheses allow you to manage the "
-"level of detail of the resulting mesh: when applying different hypotheses"
-" with different parameters you can preset the quantity or size of "
-"elements which will compose your mesh. So, it will be possible to "
-"generate a coarse or a more refined mesh."
-msgstr ""
-
-# 8c7553e9086446319f1133e6c2fa42a3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:9
-msgid "The choice of a hypothesis depends on the selected algorithm."
-msgstr ""
-
-# 849ac0846ee64c26a9c1bc76c9ce81fb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:11
-msgid ""
-"Hypotheses are created during creation and edition of "
-":ref:`constructing_meshes_page`:\"meshes\" and "
-":ref:`constructing_submeshes_page`:\"sub-meshes\". Once created a "
-"hypotheses can be reused during creation and edition of other meshes and "
-"sub-meshes. All created hypotheses and algorithms are present in the "
-"Object Browser in *Hypotheses* and *Algorithms* folders correspondingly. "
-"It is possible to open a dialog to modify the parameters of a hypothesis "
-"from its context menu. This menu also provides  **Unassign** command that"
-" will unassign the hypothesis from all meshes and sub-meshes using it. "
-"Modification of any parameter of a hypothesis and its unassignment leads "
-"to automatic removal of elements generated using it."
-msgstr ""
-
-# 274cef5d5ea04de697c378a00fba0f75
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:16
-msgid "In  **MESH** there are the following Basic Hypotheses:"
-msgstr ""
-
-# 71d2e621d7324f0ebb6ceb26cc82ab88
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:28
-msgid ":ref:`a1d_meshing_hypo_page` (for meshing of **edges**):"
-msgstr ""
-
-# 3448a2d7d3d34e969a0c77b659031f3a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:19
-msgid ":ref:`number_of_segments_anchor`"
-msgstr ""
-
-# b7a48255d4e04b40aa8f21ac290aafc7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:20
-msgid ":ref:`average_length_anchor`"
-msgstr ""
-
-# 73bde0a663a74b129cc144e2e6320bad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:21
-msgid ":ref:`max_length_anchor`"
-msgstr ""
-
-# 2ab941e1ce4d43c19545dcef537e3302
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:22
-msgid ":ref:`adaptive_1d_anchor`"
-msgstr ""
-
-# d202e9fcfb904f519d01d6ef62e127c9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:23
-msgid ":ref:`arithmetic_1d_anchor`"
-msgstr ""
-
-# d002a42bc00c4198b6848fb367705e1a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:24
-msgid ":ref:`geometric_1d_anchor`"
-msgstr ""
-
-# 08a40e5172de48a796fee45cd666e649
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:25
-msgid ":ref:`start_and_end_length_anchor`"
-msgstr ""
-
-# 46f1c6a5ac664195bce56d33434ddd68
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:26
-msgid ":ref:`deflection_1d_anchor`"
-msgstr ""
-
-# 076afced002441818a1b12f92f8b3108
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:27
-msgid ":ref:`automatic_length_anchor`"
-msgstr ""
-
-# 1424e2ee42694e7ba9ad71610b503d67
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:28
-msgid ":ref:`fixed_points_1d_anchor`"
-msgstr ""
-
-# 9c513d5204534df0a79b9a7f5c635cdc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:30
-msgid ":ref:`a2d_meshing_hypo_page` (for meshing of **faces**):"
-msgstr ""
-
-# 73d34e2054e140ea86e4ad6010c0a78b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:32
-msgid ":ref:`max_element_area_anchor`"
-msgstr ""
-
-# 68b2a01b7abb4ee087a50db8cb7aecf0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:33
-msgid ":ref:`length_from_edges_anchor`"
-msgstr ""
-
-# d22c0f63c7c24df686de9435ba9f30c2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:34
-msgid ":ref:`hypo_quad_params_anchor`"
-msgstr ""
-
-# 2d7fb7b4e93f43209fc61f61b5988406
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:36
-msgid "3D Hypothesis (for meshing of **volumes**):"
-msgstr ""
-
-# 302ca3189198469085114e21b9fe769a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:38
-msgid ":ref:`max_element_volume_hypo_page`"
-msgstr ""
-
-# 5207e8583dc9412bbd2b9ac42fb4e0e8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:42
-msgid "There also exist :ref:`additional_hypo_page`:"
-msgstr ""
-
-# a02afdc27184497ea23d14034586ed6d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:44
-msgid ":ref:`propagation_anchor`"
-msgstr ""
-
-# d9416ba6db414d4ab1550d022658ef2c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:45
-msgid ":ref:`propagofdistribution_anchor`"
-msgstr ""
-
-# db07dc3d875244ab8717f460c6a9ed69
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:46
-msgid ":ref:`viscous_layers_anchor`"
-msgstr ""
-
-# 10d4f8d7345041379fcd7107912ff551
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:47
-msgid ":ref:`quadratic_mesh_anchor`"
-msgstr ""
-
-# e4cee0c6f5164f2ebdda479a43ad432a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_hypo.rst:48
-msgid ":ref:`quadrangle_preference_anchor`"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_meshes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_meshes.po
deleted file mode 100644 (file)
index 99a6cf7..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-03-30 11:57+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# bbd67fcb9bc849ffaa47f4f37c559bf7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:5
-msgid "About meshes"
-msgstr ""
-
-# a6955211ab2a48978a482d711a509878
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:7
-msgid ""
-"**MESH** represents a discrete approximation of a subset of the three-"
-"dimensional space by `elementary geometrical elements`_."
-msgstr ""
-
-# 593925037f2143348fa2405c2abf4c80
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:9
-msgid ""
-"A SALOME study can contain multiple meshes, but they do not implicitly "
-"compose one super-mesh, and finally each of them can be used (e.g. "
-"exported) only individually."
-msgstr ""
-
-# 9bbe3f87295e42bba99b865e81ae92b2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:11
-msgid "Mesh module provides several ways to create the mesh:"
-msgstr ""
-
-# a8667990ca9a4978985fc15bf31ccd8f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:13
-msgid ""
-"The main way is to :ref:`constructing_meshes_page` on the basis of the "
-"geometrical shape produced in the Geometry module. This way implies "
-"selection of"
-msgstr ""
-
-# b233fa907d3648feb4cd6dc4cc472f7a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:15
-msgid "a geometrical object (**main shape**) and"
-msgstr ""
-
-# ddeb34ea50a141dc86cf5c193550d735
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:16
-msgid ""
-"**meshing parameters** ( :ref:`basic_meshing_algos_page` and "
-"characteristics (e.g. element size) of a required mesh encapsulated in "
-":ref:`about_hypo_page` objects)."
-msgstr ""
-
-# 40217c32a4cf4aebb3e40671f1eada9b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:18
-msgid ""
-"Construction of :ref:`constructing_submeshes_page` allows to discretize "
-"some sub-shapes of the main shape, for example a face, using the meshing "
-"parameters that differ from those used for other sub-shapes. Meshing "
-"parameters of meshes and sub-meshes can be :ref:`editing_meshes_page`. "
-"(Upon edition only mesh entities generated using changed meshing "
-"parameters are removed and will be re-computed)."
-msgstr ""
-
-# 83c44881ecf64a0e83af2dba8c3daeaa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:22
-msgid ""
-"Algorithms and hypotheses used at mesh level are referred to as *global* "
-"ones and those used at sub-mesh level are referred to as *local* ones."
-msgstr ""
-
-# 02df38d2611d4ceca0ec7e13af4300f1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:24
-msgid ""
-"Bottom-up way, using :ref:`modifying_meshes_page` operations, especially "
-":ref:`extrusion_page` and :ref:`revolution_page`. To create an empty mesh"
-" not based on geometry, use the same dialog as to "
-":ref:`constructing_meshes_page` but specify neither the geometry nor "
-"meshing algorithms."
-msgstr ""
-
-# e626515a752544a5b5c5aef8b6060b2b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:26
-msgid ""
-"The mesh can be :ref:`importing_exporting_meshes_page` from (and exported"
-" to) the file in MED, UNV, STL, CGNS, DAT, GMF and SAUVE formats."
-msgstr ""
-
-# 885d481a9e524431bce283c16aa9cad0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:28
-msgid ""
-"The 3D mesh can be generated from the 2D mesh not based on geometry, "
-"which was either :ref:`importing_exporting_meshes_page` or created in "
-"other way. To setup the meshing parameters of a mesh not based on "
-"geometry, just invoke :ref:`editing_meshes_page` command on your 2D mesh."
-msgstr ""
-
-# 7132296945a343ee95409e55a308ed71
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:30
-msgid "Several meshes can be :ref:`building_compounds_page` into a new mesh."
-msgstr ""
-
-# 18a83115d76142c7b2e10e8b1407993f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:32
-msgid ""
-"The whole mesh or its part (sub-mesh or group) can be "
-":ref:`copy_mesh_page` into a new mesh."
-msgstr ""
-
-# b0ba309fef194333b29189b6995f8eeb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:34
-msgid ""
-"A new mesh can be created from a transformed, e.g. "
-":ref:`translation_page`, part of the mesh."
-msgstr ""
-
-# a9e6fa513d8348a6b3c381daab86e819
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:37
-msgid ""
-"Meshes can be edited using the MESH functions destined for "
-":ref:`modifying_meshes_page` of meshes."
-msgstr ""
-
-# 8a46a1bb6fb248f78f8979a3ad36ad98
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:39
-msgid "Attractive meshing capabilities include:"
-msgstr ""
-
-# 0e136eb5e8894447be7b3ab96cfbc686
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:41
-msgid ""
-"3D and 2D :ref:`viscous_layers_anchor` (boundary layers of highly "
-"stretched elements beneficial for high quality viscous computations);"
-msgstr ""
-
-# 7ef84d1258894100a88cae6cb66735eb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:42
-msgid ""
-"automatic conformal transition between tetrahedral and hexahedral sub-"
-"meshes."
-msgstr ""
-
-# e4a96ec14ead4e2f8c4fc6c3140acdfa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:44
-msgid ""
-"The **structure** of a SALOME mesh is described by nodes and elements "
-"based on these nodes. The geometry of an element is defined by the "
-"sequence of nodes constituting it and the :ref:`connectivity_page` "
-"(adopted from MED library). Definition of the element basing on the "
-"elements of a lower dimension is NOT supported."
-msgstr ""
-
-# 056ea079ede346ec8dc2c83e4cb7178a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:48
-msgid "The mesh can include the following entities:"
-msgstr ""
-
-# efdffee80b7340cab48a496d0f4160dd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:50
-msgid ""
-"**Node** - a mesh entity defining a position in 3D space with coordinates"
-" (x, y, z)."
-msgstr ""
-
-# f67ab5a07db443269e10005492f88c64
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:51
-msgid "**Edge** (or segment) - 1D mesh element linking two nodes."
-msgstr ""
-
-# 945cca5fbefc426bb3a1085eb7f7941c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:52
-msgid ""
-"**Face** - 2D mesh element representing a part of surface bound by links "
-"between face nodes. A face can be a triangle, quadrangle or polygon."
-msgstr ""
-
-# f9a85025f9734dbe86a1d00fc71901ab
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:53
-msgid ""
-"**Volume** - 3D mesh element representing a part of 3D space bound by "
-"volume facets. Nodes of a volume describing each facet are defined by the"
-" :ref:`connectivity_page`. A volume can be a tetrahedron, hexahedron, "
-"pentahedron, pyramid, hexagonal prism or polyhedron."
-msgstr ""
-
-# 4225f83b0bd840369cbc2865b6d15192
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:54
-msgid "**0D** element - mesh element defined by one node."
-msgstr ""
-
-# 677f8fe39ee94e6db57f3bf7060717eb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:55
-msgid "**Ball** element - discrete mesh element defined by a node and a diameter."
-msgstr ""
-
-# b2bfe06dd8c346dd9afe5838abde53f4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:58
-msgid ""
-"Every mesh entity has an attribute associating it to a sub-shape it is "
-"generated on (if any). The node generated on the geometrical edge or "
-"surface in addition stores its position in parametric space of the "
-"associated geometrical entity. This attribute is set up by meshing "
-"algorithms generating elements and nodes."
-msgstr ""
-
-# 4628312683d144fea8212d8214344361
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:60
-msgid ""
-"Mesh entities are identified by integer IDs starting from 1. Nodes and "
-"elements are counted separately, i.e. there can be a node and element "
-"with the same ID."
-msgstr ""
-
-# b1f9d522ea62433ebe533718f1339075
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:63
-msgid ""
-"SALOME supports elements of second order, without a central node "
-"(quadratic triangle, quadrangle, polygon, tetrahedron, hexahedron, "
-"pentahedron and pyramid) and with central nodes (bi-quadratic triangle "
-"and quadrangle and tri-quadratic hexahedron)."
-msgstr ""
-
-# 32aeee3bc51e400cbd796f90ab8ed466
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:66
-msgid "Quadratic mesh can be obtained in three ways:"
-msgstr ""
-
-# c0b41f83bb3c47599d98572d8c2c6ce8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:68
-msgid ""
-"Using a global :ref:`quadratic_mesh_anchor` hypothesis. (Elements with "
-"the central node are not generated in this way)."
-msgstr ""
-
-# d997d078e82f4dbb8b427bfacb344906
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:69
-msgid "Using :ref:`convert_to_from_quadratic_mesh_page` operation."
-msgstr ""
-
-# 5bef51942d2c47148f312db810ab424c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_meshes.rst:70
-msgid ""
-"Using an appropriate option of some meshing algorithms, which generate "
-"elements of several dimensions starting from mesh segments."
-msgstr ""
-
-# e8043eb95dac4ea4a0767e3fa3b58b45
-#~ msgid ""
-#~ "**MESH** represents a discrete approximation"
-#~ " of a subset of the three-"
-#~ "dimensional space by `mesh_entities`_."
-#~ msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_quality_controls.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_quality_controls.po
deleted file mode 100644 (file)
index 20d0a90..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 1ee8b31425374381af2cfb8401ef4f22
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:5
-msgid "About quality controls"
-msgstr ""
-
-# f6ab5ca061f14d87958b45a6eccb1867
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:8
-msgid ""
-"**Mesh quality control** in MESH is destined for visual control of the "
-"generated mesh."
-msgstr ""
-
-# a45fbb955cd7401d9e4a8aae1f14bb08
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:10
-msgid ""
-"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."
-msgstr ""
-
-# ded5b6f9b30f4033bdf008efac6be875
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:12
-msgid ""
-"There are four types of quality controls, corresponding to node, edge, "
-"face and volume entity type."
-msgstr ""
-
-# 300e980259b048168030a8045bb7ef99
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:14
-msgid "Node quality controls:"
-msgstr ""
-
-# a56a842402c748b1a450684ac448f30b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:16
-msgid ":ref:`free_nodes_page`"
-msgstr ""
-
-# 9579927bc68945e7bb57df2cc60bcc7e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:17
-msgid ":ref:`double_nodes_control_page`"
-msgstr ""
-
-# eb9a884d72b84a20a80ef86bd2016aa4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:20
-msgid "Edge quality controls:"
-msgstr ""
-
-# de4c7ad561754197886c465f7ba9b493
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:22
-msgid ":ref:`free_borders_page`"
-msgstr ""
-
-# 514b8747c33343508f22259c2745a0d4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:23
-msgid ":ref:`length_page`"
-msgstr ""
-
-# 29ca9e18e3044f728d2bbabd9daf70ef
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:24
-msgid ":ref:`borders_at_multi_connection_page`"
-msgstr ""
-
-# 1f2a0b4bba2d49938eb08cd4fd88e506
-# 9f94241b84ec424093f789232f7741ca
-# 89e8eaaee4c442cdbef054f7b3e5e80f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:25
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:43
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:53
-msgid ":ref:`double_elements_page`"
-msgstr ""
-
-# f848afd5310a462dbab6c26cb8a547a7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:28
-msgid "Face quality controls:"
-msgstr ""
-
-# 0aa1f1e12ed94d5b8e66db9a11001bf1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:30
-msgid ":ref:`free_edges_page`"
-msgstr ""
-
-# 72064f0d04994068b33a360cdbba28e1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:31
-msgid ":ref:`free_faces_page`"
-msgstr ""
-
-# a129a1a3d9264e9bb1c59001e5bd5215
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:32
-msgid ":ref:`bare_border_faces_page`"
-msgstr ""
-
-# ac50d8b3124c4ef4b365f04a6501d770
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:33
-msgid ":ref:`over_constrained_faces_page`"
-msgstr ""
-
-# 518ba97e1b04492e8a65a09fc3e34c36
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:34
-msgid ":ref:`length_2d_page`"
-msgstr ""
-
-# 8465eafd82c941db8578142d9c8df8a5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:35
-msgid ":ref:`borders_at_multi_connection_2d_page`"
-msgstr ""
-
-# 176553bb796040aeb915efba7fecb379
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:36
-msgid ":ref:`area_page`"
-msgstr ""
-
-# e6254c2642c14e1a9f436dd528e96ff4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:37
-msgid ":ref:`taper_page`"
-msgstr ""
-
-# 3400cf1721384c5784a097bdd5b82e6d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:38
-msgid ":ref:`aspect_ratio_page`"
-msgstr ""
-
-# ccdb34f54e5747b7888ae9981b9e450e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:39
-msgid ":ref:`minimum_angle_page`"
-msgstr ""
-
-# 9cd991036b664bc8a1101d022982e5a1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:40
-msgid ":ref:`warping_page`"
-msgstr ""
-
-# 41f8256446cc4b1aac9eb970eeda4ce0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:41
-msgid ":ref:`skew_page`"
-msgstr ""
-
-# 78825a0aa02c4988a21bf69e73879db1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:42
-msgid ":ref:`max_element_length_2d_page`"
-msgstr ""
-
-# 5afb46f9acac4a9eb4756abdfc9f27cc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:46
-msgid "Volume quality controls:"
-msgstr ""
-
-# a9f0ee19881d492aa3a27ae458c996f1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:48
-msgid ":ref:`aspect_ratio_3d_page`"
-msgstr ""
-
-# 4bb9f6eab8164103923c4826e2ecc0f3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:49
-msgid ":ref:`volume_page`"
-msgstr ""
-
-# d7afca49a69c41d7ac8abb0299803a21
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:50
-msgid ":ref:`max_element_length_3d_page`"
-msgstr ""
-
-# 18158bdf984a4244844feb0237e2ade9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:51
-msgid ":ref:`bare_border_volumes_page`"
-msgstr ""
-
-# 867e8cad934641798deb2b24ae70e0d0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:52
-msgid ":ref:`over_constrained_volumes_page`"
-msgstr ""
-
-# e37bfbc3abe44516bc3624f19c0f361f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:56
-msgid ""
-"To manage the quality controls call pop-up in the VTK viewer and select "
-"\"Controls\" sub-menu"
-msgstr ""
-
-# b511cd0c11694da7880052ef367b4387
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:62
-msgid "**Reset** switches off quality controls;"
-msgstr ""
-
-# 07202335cad14c63aad3f0c725c35022
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:63
-msgid "**Node Controls** provides access to the node quality controls;"
-msgstr ""
-
-# b2fe1e355db74664ac3915b3c71f0213
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:64
-msgid "**Edge Controls** provides access to the edge quality controls;"
-msgstr ""
-
-# 2f26a38df6f2496c9ab9baf9251182f8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:65
-msgid "**Face Controls** provides access to the face quality controls;"
-msgstr ""
-
-# 5f6103624b344cf493f1711075e65f45
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:66
-msgid "**Volume Controls** provides access to the volume quality controls;"
-msgstr ""
-
-# 96197eb4535d4f8a968ddc916c251213
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:67
-msgid "**Scalar Bar Properties** allows setting :ref:scalar_bar_dlg;"
-msgstr ""
-
-# d75ea00701944ff4bdb5db1347f3e187
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:68
-msgid ""
-"**Distribution -> Export ...** allows saving the distribution of quality "
-"control values in the text file;"
-msgstr ""
-
-# 077eda1f512648b7873804a13d69ce46
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:69
-msgid ""
-"**Distribution -> Show** Shows/Hides the distribution histogram of the "
-"quality control values in the VTK Viewer."
-msgstr ""
-
-# 9ed4e072f8e144cc9ae6c0b2d3df0cc5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/about_quality_controls.rst:70
-msgid ""
-"**Distribution -> Plot** Plots the distribution histogram of the quality "
-"control values in the Plot 2D Viewer."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/adding_nodes_and_elements.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/adding_nodes_and_elements.po
deleted file mode 100644 (file)
index 1444e9c..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 9011f6c867d54bab9004db957896dda8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:5
-msgid "Adding nodes and elements"
-msgstr ""
-
-# adfa44bc891e4ffe8e8043724eca539d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:7
-msgid "In MESH you can add to your mesh different elements such as:"
-msgstr ""
-
-# 642ddc8d028c4b1993cdccb23b1dd463
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:9
-msgid ":ref:`adding_nodes_anchor`"
-msgstr ""
-
-# 42da9857dda24c10a50ba14b1e492231
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:10
-msgid ":ref:`adding_0delems_anchor`"
-msgstr ""
-
-# efaeb514592241879792f25c253e797d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:11
-msgid ":ref:`adding_0delems_on_all_nodes_anchor`"
-msgstr ""
-
-# 97fef81c05d94c38a7eda819953100cf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:12
-msgid ":ref:`adding_balls_anchor`"
-msgstr ""
-
-# c0c6e29dca2b42099fd41451fc1caefd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:13
-msgid ":ref:`adding_edges_anchor`"
-msgstr ""
-
-# 38d32b86aa904d218b25825b33583ed6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:14
-msgid ":ref:`adding_triangles_anchor`"
-msgstr ""
-
-# 86f67a57ad1a40348aed6ff1044b29c8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:15
-msgid ":ref:`adding_quadrangles_anchor`"
-msgstr ""
-
-# 704e5d5a38174b35a93f10be72a0015d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:16
-msgid ":ref:`adding_polygons_anchor`"
-msgstr ""
-
-# 895cea43a2e8413ba004f60066187e1d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:17
-msgid ":ref:`adding_tetrahedrons_anchor`"
-msgstr ""
-
-# a44527882f3d49568a9c62ea73b75593
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:18
-msgid ":ref:`adding_hexahedrons_anchor`"
-msgstr ""
-
-# 2a22f5f9b84b4674b56bfd4b32f70360
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:19
-msgid ":ref:`adding_octahedrons_anchor`"
-msgstr ""
-
-# f4a79505995b4f6d96bff5cc5dea08a2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:20
-msgid ":ref:`adding_polyhedrons_anchor`"
-msgstr ""
-
-# 184027c7452945c39b3574a990e9a1af
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:23
-msgid ""
-"The convention of nodal connectivity of elements used in SALOME is the "
-"MED library convention. You can consult the description of nodal "
-"connectivity of elements in the documentation on MED library or "
-":ref:`connectivity_page`."
-msgstr ""
-
-# e99b10cc630d4ac3a21fc651c070a254
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:25
-msgid "**To add a node or an element to your mesh:**"
-msgstr ""
-
-# eb3d5c2d642d42ef9512a155e752f678
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:27
-msgid "Select your mesh in the Object Browser or in the 3D viewer."
-msgstr ""
-
-# 246ede0e2eca4b7bb2834e2777a35748
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:28
-msgid ""
-"From the **Modification** menu choose the **Add** item, the following "
-"associated sub-menu will appear:"
-msgstr ""
-
-# 4fc6d38cf50c428289475de65b222e1b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:33
-msgid ""
-"From this sub-menu select the type of element which you would like to add"
-" to your mesh."
-msgstr ""
-
-# 7508561f45bd4fc4bd38623d019e493e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:36
-msgid ""
-"All dialogs for new node or element adding to the mesh provide the "
-"possibility to automatically add a node or element to the specified group"
-" or to create it anew using **Add to group** box, that allows choosing an"
-" existing group for the created node or element or giving the name to a "
-"new group. By default, the **Add to group** check box is switched off. If"
-" the user switches this check box on, the combo box listing all currently"
-" existing groups of the corresponding type becomes available. By default,"
-" no group is selected. In this case, when the user presses **Apply** or "
-"**Apply & Close** button, the warning message box informs the user about "
-"the necessity to input new group name. The combo box lists groups of all "
-"the :ref:`grouping_elements_page`: both :ref:`standalone_group`, "
-":ref:`group_on_filter`, and :ref:`group_on_geom`. If the user chooses a "
-"group on geometry or on filter, he is warned and proposed to convert this"
-" group to standalone."
-msgstr ""
-
-# d82e77a7d51f4ef68fd1790112f5a877
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:42
-msgid ""
-"If the user rejects conversion operation, it is cancelled and a new "
-"node/element is not created!"
-msgstr ""
-
-# 56c1ce8fc400423c9560387c0547461a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:45
-msgid ""
-"**See Also** sample TUI Scripts of :ref:`tui_adding_nodes_and_elements` "
-"operations."
-msgstr ""
-
-# c94d9176d6d340568ce11f03af31828e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:50
-msgid "Adding nodes"
-msgstr ""
-
-# 39207b695ed74e9e8a4aadc52be65796
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:55
-msgid ""
-"In this dialog box set coordinates for your node in the **Coordinates** "
-"set of fields and click the **Apply** or **Apply and Close** button. Your"
-" node will be created:"
-msgstr ""
-
-# a457e82a39134103bd12041f43769061
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:64
-msgid "Adding 0D elements"
-msgstr ""
-
-# 1f49fadf1f5b4509a38683508be50f8c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:69
-msgid ""
-"In this dialog box specify nodes which will form your 0D elements by "
-"selecting them in the 3D viewer. Activate **Allow duplicate elements** to"
-" get several 0D elements on a node. Click the **Apply** or **Apply and "
-"Close** button. Your 0D elements will be created:"
-msgstr ""
-
-# 74f45e68dcde4c71844de9cf840a91e8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:79
-msgid "Making 0D elements on Element Nodes"
-msgstr ""
-
-# 5fe00d89f3ca4b118a6cde9e352bf619
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:81
-msgid ""
-"There is another way to create 0D elements. It is possible to create 0D "
-"elements on all nodes of the selected mesh, sub-mesh, or a group of "
-"elements or nodes."
-msgstr ""
-
-# bdde90f70f2d42359ae59e4a8e50d5a3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:86
-msgid "In this dialog"
-msgstr ""
-
-# 0b37680a44ba45aab10b560e6264c1e9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:88
-msgid ""
-"The radio-buttons allow choosing the type of object to create 0D elements"
-" on."
-msgstr ""
-
-# 98c02e71f24043049d821560dd2fa098
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:90
-msgid ""
-"**Mesh, sub-mesh, group** - this button allows selecting a mesh, a sub-"
-"mesh or a group to create 0D elements on the nodes of its elements. The "
-"name of the selected object is shown in the dialog."
-msgstr ""
-
-# 08eff5fd4c084bdf9f5993747ad57fb5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:91
-msgid ""
-"**Elements** - this button allows selecting elements in the VTK viewer or"
-" typing their IDs in the dialog."
-msgstr ""
-
-# e98b5fd256a54798baf8596b478295e2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:92
-msgid ""
-"**Nodes** - this button allows selecting nodes to create 0D elements on "
-"in the VTK viewer or typing their IDs in the dialog."
-msgstr ""
-
-# d8cbfc19bfc046e8a884bbcd39812eab
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:94
-msgid ""
-"**Set Filter** button allows selecting elements or nodes by filtering "
-"mesh elements or nodes with different criteria (see "
-":ref:`filtering_elements`)."
-msgstr ""
-
-# d6406fb702cf41e2b7d6fed2e25ce073
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:95
-msgid ""
-"Activate **Allow duplicate elements** to get several 0D elements on a "
-"node."
-msgstr ""
-
-# 0621972e7e39474c972dd2dcaf8cf3fc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:96
-msgid ""
-"Switching on **Add to group** check-box allows specifying the name of the"
-" group to which all created or found (existing) 0D elements will be "
-"added. You can either select an existing group from a drop-down list, or "
-"enter the name of the group to be created. If a selected existing "
-":ref:`grouping_elements_page` is not Standalone (Group On Geometry or "
-"Group On Filter) it will be converted to Standalone."
-msgstr ""
-
-# c93588d10bf8420b9ad16a2adc708750
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:98
-msgid "If **Add to group** is activated it has to be filled in."
-msgstr ""
-
-# bf9fba0f12844b20b3d18c133a0dcbf6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:106
-msgid "Adding ball elements"
-msgstr ""
-
-# 9eb74b7254d74e119ff0f90ad502635a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:111
-msgid ""
-"In this dialog box specify the nodes, which will form your ball elements,"
-" either by selecting them in the 3D viewer or by manually entering their "
-"IDs, specify the ball diameter and click the **Apply** or **Apply and "
-"Close** button."
-msgstr ""
-
-# a59b9c61819c45e786d432cb6a7b7c70
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:120
-msgid "Adding edges"
-msgstr ""
-
-# 25aef23b2cde4322b51a2dd73884391f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:125
-msgid ""
-"In this dialog box specify the nodes which will form your edge by "
-"selecting them in the 3D viewer with pressed Shift button and click the "
-"**Apply** or **Apply and Close** button. Your edge will be created:"
-msgstr ""
-
-# 29ba16103c444403aa381c6affc205f8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:134
-msgid "Adding triangles"
-msgstr ""
-
-# 2d5864296dc542aa8eccd57747e06f7c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:139
-msgid ""
-"In this dialog box specify the nodes which will form your triangle by "
-"selecting them in the 3D viewer with pressed Shift button and click the "
-"**Apply** or **Apply and Close** button. Your triangle will be created:"
-msgstr ""
-
-# 49fc0b3113ca4b71a249e5c94c2ca8e9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:148
-msgid "Adding quadrangles"
-msgstr ""
-
-# f1972b70655047b4b5ae718478b18b9e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:153
-msgid ""
-"In this dialog box specify the nodes which will form your quadrangle by "
-"selecting them in the 3D viewer with pressed Shift button and click the "
-"**Apply** or **Apply and Close** button. Your quadrangle will be created:"
-msgstr ""
-
-# aa9108d8c0f64e1abc0828f7e626f6ac
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:162
-msgid "Adding polygons"
-msgstr ""
-
-# c12a68103f8c4a4b8b2ab67c3defb0e1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:167
-msgid ""
-"In this dialog box specify the nodes which will form your polygon by "
-"selecting them in the 3D viewer with pressed Shift button and click the "
-"**Apply** or **Apply and Close** button."
-msgstr ""
-
-# e44cd567fda84be59db2caca77c12cb0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:176
-msgid "Adding tetrahedrons"
-msgstr ""
-
-# e2ff62697945475e973fca7863afa8c0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:181
-msgid ""
-"In this dialog box specify the nodes which will form your tetrahedron by "
-"selecting them in the 3D viewer with pressed Shift button and click the "
-"**Apply** or **Apply and Close** button. Your tetrahedron will be "
-"created:"
-msgstr ""
-
-# c1f8e7a2fb2542a39e83a71074f1ae33
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:190
-msgid "Adding hexahedrons"
-msgstr ""
-
-# aeea0dcca6014b878c5255f559e6ac97
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:195
-msgid ""
-"In this dialog box specify the nodes which will form your hexahedron by "
-"selecting them in the 3D viewer with pressed Shift button and click the "
-"**Apply** or **Apply and Close** button. Your hexahedron will be created:"
-msgstr ""
-
-# e7808586e846431089bc097d01c8cc05
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:204
-msgid "Adding hexagonal prism"
-msgstr ""
-
-# fd2284a74c4f438bb2be5863215bd473
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:206
-msgid ""
-"In the Add Hexagonal Prism dialog box specify the nodes which will form "
-"your hexagonal prism by selecting them in the 3D viewer with pressed "
-"Shift button and click the **Apply** or **Apply and Close** button. Your "
-"hexagonal prism will be created:"
-msgstr ""
-
-# a78a49d876004836ab2caf1771528327
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:215
-msgid "Adding polyhedrons"
-msgstr ""
-
-# 2dc6829556a34116a0411a28ff01fe2f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:220
-msgid "There are two different ways to add polyhedral volumes."
-msgstr ""
-
-# c213d91459524e18903370c3a2fa50d5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst:222
-msgid ""
-"If you select **Node** as **Elements Type** you will specify the nodes "
-"which will form the faces of your polyhedron by selecting the nodes in "
-"the 3D viewer with pressed Shift button and clicking the  **Add** button "
-"to add the face in the list of Faces by Nodes, which will form your "
-"polyhedron. Note, that it could be very useful to toggle Polyhedron "
-"Preview checkbox to see the results of your selection. The second way is "
-"somewhat simpler, however, there are cases when it does not provide you "
-"with the necessary level of precision. If you select **Face** as "
-"**Elements Type**, you will be able to select the faces which will form "
-"your polyhedron in the 3D viewer with pressed Shift button. If you've "
-"managed to obtain the necessary result, click the **Apply** or **Apply "
-"and Close** button. Your polyhedron will be created:"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/adding_quadratic_elements.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/adding_quadratic_elements.po
deleted file mode 100644 (file)
index 285271f..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 97ca37c48b6a46eab1311e4da92675b5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:6
-msgid "Adding Quadratic Elements"
-msgstr ""
-
-# 2733f51dd3e24e8e96f1728a9b943693
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:8
-msgid "MESH module allows you to work with **Quadratic Elements**."
-msgstr ""
-
-# 04076a14890047139f3da74e87925b8d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:10
-msgid ""
-"Quadratic elements are defined by the same corner nodes as the "
-"corresponding linear ones, but in addition they have *midside* nodes "
-"located between the corner nodes on element sides."
-msgstr ""
-
-# 2f08f27e14214b69afbb69d7c6ebc4ae
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:12
-msgid ""
-"If a quadratic 2D element has an additional node at the element center, "
-"it is a bi-quadratic element (both TRIA7 and QUAD9 elements are "
-"supported). If a quadratic hexahedral element has 7 additional nodes: at "
-"the element center and at the center of each side, it is a tri-quadratic "
-"element (or HEXA27)."
-msgstr ""
-
-# 6b918686e0f34395848c30004d066fe6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:14
-msgid ""
-"The convention of nodal connectivity of elements used in SALOME is the "
-"MED library convention. You can consult the description of nodal "
-"connectivity of elements in the documentation on MED library or "
-":ref:`connectivity_page`."
-msgstr ""
-
-# c0ee8ff909f64400967daa896e9644f7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:16
-msgid "There are several ways to create quadratic elements in your mesh:"
-msgstr ""
-
-# 1c5f10266ac54e3c9e762d63fa3684c6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:18
-msgid "manually (this way is described below);"
-msgstr ""
-
-# 2afc5e742de948ca8ded56cca6b1fe6b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:19
-msgid ""
-"use :ref:`quadratic_mesh_anchor` hypothesis to generate a quadratic mesh "
-"on your geometry;"
-msgstr ""
-
-# ed047a38d6794df880b1c03db2b8cde4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:20
-msgid ""
-"convert an existing linear mesh to a quadratic one (see "
-":ref:`convert_to_from_quadratic_mesh_page`)."
-msgstr ""
-
-# 08ae2bbebab44a6381ea132a604ced63
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:22
-msgid "**To add a quadratic element to your mesh:**"
-msgstr ""
-
-# de31cde3181045cd8041bb1b0c7666e3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:24
-msgid "Select your mesh in the Object Browser or in the 3D viewer."
-msgstr ""
-
-# 5198fe6693f64e97b13bce6b42b2fac4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:26
-msgid ""
-"From the **Modification** menu choose the **Add** item and select one of "
-"the following:"
-msgstr ""
-
-# 0057e276f3fc4a95b2d276d3fce8c91d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:32
-msgid ""
-"All dialogs for adding quadratic element to the mesh provide the "
-"possibility to automatically add an element to the specified group or to "
-"create the group anew using **Add to group** box, that allows choosing an"
-" existing group for the created node or element or giving the name to a "
-"new group. By default, the **Add to group** check box is switched off. If"
-" the user switches this check box on, the combo box listing all currently"
-" existing groups of the corresponding type becomes available. By default,"
-" no group is selected. In this case, when the user presses **Apply** or "
-"**Apply & Close** button, the warning message box informs the user about "
-"the necessity to input a new group name. The combo box lists groups of "
-"all the :ref:`grouping_elements_page` both :ref:`standalone_group`, "
-":ref:`group_on_filter`, and :ref:`group_on_geom`. If the user chooses a "
-"group on geometry or on filter, he is warned and proposed to convert this"
-" group to standalone. If the user rejects conversion operation, it is "
-"cancelled and a new quadratic element is not created."
-msgstr ""
-
-# 1fd7382a5f4847499e07416870d8c573
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:40
-msgid ""
-"To create any **Quadratic Element** specify the nodes which will form "
-"your element by selecting them in the 3D viewer with pressed Shift button"
-" and click *Selection* button to the right of **Corner Nodes** label. "
-"Their numbers will appear in the dialog box as **Corner Nodes** "
-"(alternatively you can just input numbers in this field without "
-"selection; note that to use this way the mesh should be selected before "
-"invoking this operation). The edges formed by the corner nodes will "
-"appear in the table. To define the middle nodes for each edge, double-"
-"click on the respective field and input the number of the node (or pick "
-"the node in the viewer). For bi-quadratic and tri-quadratic elements, "
-"your also need to specify central nodes. As soon as all needed nodes are "
-"specified, a preview of a new quadratic element will be displayed in the "
-"3D viewer. Then you will be able to click **Apply** or **Apply and "
-"Close** button to add the element to the mesh."
-msgstr ""
-
-# 7e82eacc03904667b815fbeae8cda8fb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst:45
-msgid "**Reverse** button reverses the element."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/additional_hypo.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/additional_hypo.po
deleted file mode 100644 (file)
index 02ed335..0000000
+++ /dev/null
@@ -1,328 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 21ce6bac6a5e4379b28207f6350faf63
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:5
-msgid "Additional Hypotheses"
-msgstr ""
-
-# 3d823676662c4274bc0f890092158f98
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:7
-msgid ""
-"**Additional Hypotheses** can be applied as a supplement to the main "
-"hypotheses, introducing additional concepts to mesh creation."
-msgstr ""
-
-# 94acb0a8af534cd99b6d58f0a65a790c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:9
-msgid ""
-"An **Additional Hypothesis** can be defined in the same way as any main "
-"hypothesis in :ref:`create_mesh_anchor` or "
-":ref:`constructing_submeshes_page` dialog."
-msgstr ""
-
-# 44e1be27062e407297c7265310de5d86
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:11
-msgid "The following additional hypothesis are available:"
-msgstr ""
-
-# c2db6c2d772f4134a5e44cb1263a55de
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:13
-msgid ""
-":ref:`propagation_anchor` and :ref:`propagofdistribution_anchor` "
-"hypotheses are useful for creation of quadrangle and hexahedral meshes."
-msgstr ""
-
-# 916c32073e0e421cb0a385e1e9753f18
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:14
-msgid ""
-":ref:`viscous_layers_anchor`  and :ref:`viscous_layers_anchor` hypotheses"
-" allow creation of layers of highly stretched elements near mesh "
-"boundary, which is beneficial for high quality viscous computations."
-msgstr ""
-
-# 446a5b5e1eb0400aad0ff8c27a1d5082
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:15
-msgid ""
-":ref:`quadratic_mesh_anchor` hypothesis allows generation of second order"
-" meshes."
-msgstr ""
-
-# 8bb9e27c47b04d17873cd417f594aed4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:16
-msgid ":ref:`quadrangle_preference_anchor` enables generation of quadrangles."
-msgstr ""
-
-# 43d294e9c96a4aed95bb7e4e883fa806
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:23
-msgid "Propagation of 1D Hypothesis on opposite edges"
-msgstr ""
-
-# f85ded7f8a7b49048b92c0d124b4c639
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:25
-msgid ""
-"**Propagation of 1D Hypothesis on opposite edges** allows to mesh "
-"opposite sides of a quadrangle face and other adjacent quadrangles, using"
-" the same hypothesis assigned to only one edge. Thus you define a sub-"
-"mesh on the edge where you define 1D meshing parameters and the "
-"**Propagation hypothesis**. These local meshing parameters will be "
-"propagated via opposite sides of quadrangles to the whole geometry, and "
-"this propagation stops at an edge with other local meshing parameters."
-msgstr ""
-
-# 23d299b63f6b4df6afbe6482290ee731
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:34
-msgid ""
-"This hypothesis can be taken into account by :ref:`a1d_algos_anchor` and "
-":ref:`a1d_algos_anchor` \"Composite Side Discretization\" algorithms."
-msgstr ""
-
-# cda8f267f0674c1baedcd8432963c055
-# d1492bfb0b8046e79f66894a009d9b94
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:38
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:56
-msgid "**See Also** a sample TUI Script of a :ref:`tui_propagation` operation"
-msgstr ""
-
-# 8d25f661ff654a748453a7d263c1288e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:43
-msgid "Propagation of Node Distribution on Opposite Edges"
-msgstr ""
-
-# 17c2e5e1af4744d294aa217c8c803a69
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:45
-msgid ""
-"**Propagation of Node Distribution on Opposite Edges** allows to "
-"propagate distribution of nodes onto an opposite edge. If a local "
-"hypothesis and propagation are defined on an edge of a quadrangular face,"
-" the opposite edge will have the same number of nodes and the same "
-"relations between segment lengths, unless another hypothesis has been "
-"locally defined on the opposite edge."
-msgstr ""
-
-# 7bf90153c74e4e27b17402993b37102f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:52
-msgid ""
-"This hypothesis can be taken into account by :ref:`a1d_algos_anchor` "
-"\"Wire Discretization\" and :ref:`a1d_algos_anchor` \"Composite Side "
-"Discretization\" algorithms."
-msgstr ""
-
-# 74ad0ac67c314f3c98e36c1711006ed8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:61
-msgid "Viscous Layers and Viscous Layers 2D"
-msgstr ""
-
-# 28818a66c56e4793ba1162c70ac8157b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:63
-msgid ""
-"**Viscous Layers** and **Viscous Layers 2D** additional hypotheses can be"
-" used by several 3D algorithms, for example Hexahedron(i,j,k), or 2D "
-"algorithms, for example Triangle (MEFISTO), correspondingly. These "
-"hypotheses allow creation of layers of highly stretched elements, prisms "
-"in 3D and quadrilaterals in 2D, near mesh boundary, which is beneficial "
-"for high quality viscous computations."
-msgstr ""
-
-# e572f10f9e014eee840fb93955ac6416
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:78
-msgid "**Name** - allows to define the name of the hypothesis."
-msgstr ""
-
-# cb75b8d96754423686b8366fe91e1e08
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:79
-msgid "**Total thickness** - gives the total thickness of element layers."
-msgstr ""
-
-# 63b46ebf10c641d0a5eba40f01dcd543
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:80
-msgid "**Number of layers** - defines the number of element layers."
-msgstr ""
-
-# 413a63f3f74d426ebbd9adbc4c1285eb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:81
-msgid ""
-"**Stretch factor** - defines the growth factor of element height from the"
-" mesh boundary inwards."
-msgstr ""
-
-# 9c8388a59cfa4958b4ed94d0508d7dfe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:82
-msgid ""
-"**Extrusion method** (available in 3D only) - defines how positions of "
-"nodes are found during prism construction and how the creation of "
-"distorted and intersecting prisms is prevented."
-msgstr ""
-
-# f2f0f76bdd0a4f8381d6543afdb09a40
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:83
-msgid ""
-"**Surface offset + smooth** method extrudes nodes along the normal to the"
-" underlying geometrical surface. Smoothing of the internal surface of "
-"element layers is possible to avoid creation of invalid prisms."
-msgstr ""
-
-# 7c1cc6e7049a427490c6eb5fa0fb2340
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:84
-msgid ""
-"**Face offset** method extrudes nodes along the average normal of "
-"surrounding mesh faces to the intersection with a neighbor mesh face "
-"translated along its own normal by the thickness of layers. The thickness"
-" of layers can be limited to avoid creation of invalid prisms."
-msgstr ""
-
-# 0d52d4c1fff14dfda30416ee5a859000
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:85
-msgid ""
-"**Node offset** method extrudes nodes along the average normal of "
-"surrounding mesh faces by the thickness of layers. The thickness of "
-"layers can be limited to avoid creation of invalid prisms."
-msgstr ""
-
-# 3616587b04724a0da5435e3314c307f8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:93
-msgid ""
-"**Specified Faces/Edges are** - defines how the shapes specified by the "
-"next parameter are used."
-msgstr ""
-
-# f7015e9be22748e5b704b316b2ddfe87
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:94
-msgid ""
-"**Faces/Edges with/without layers** - defines geometrical faces or edges "
-"on which element layers either should be or should not be constructed, "
-"depending on the value of the previous parameter (**Specified Faces/Edges"
-" are**). Faces (or edges) can be selected either in the Object Browser or"
-" in the VTK Viewer. **Add** button becomes active as soon as a suitable "
-"sub-shape is selected."
-msgstr ""
-
-# 62efa77cc84f4ccfb38199c66c478fd7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:97
-msgid ""
-"A mesh shown in the 3D Viewer can prevent selection of faces and edges, "
-"just hide the mesh to avoid this. If a face, which should be selected, is"
-" hidden by other faces, consider creating a group of faces to be selected"
-" in the Geometry module. To avoid a long wait when a geometry with many "
-"faces (or edges) is displayed, the number of faces (edges) shown at a "
-"time is limited by the value of \"Sub-shapes preview chunk size\" "
-"preference (in Preferences/Mesh/General tab)."
-msgstr ""
-
-# 6373f8512fdd40abbce91d720c507b03
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:108
-msgid "If faces/edges without layers are specified, the element layers are"
-msgstr ""
-
-# 125dc9db375d4d91af01f31dc5b50bde
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:101
-msgid ""
-"not constructed on geometrical faces shared by several solids in 3D case "
-"and edges shared by several faces in 2D case. In other words, in this "
-"mode the element layers can be constructed on boundary faces and edges "
-"only, and are not constructed on internal faces and edges. There is an "
-"exception to this rule: if a hypothesis is assigned to a sub-mesh, the "
-"element layers can be constructed on boundary faces/edges of the shape of"
-" this sub-mesh, at same time possibly being internal faces/edges within "
-"the whole model."
-msgstr ""
-
-# 5ae310c718e9423c84c247965921c94e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:126
-msgid "If you use **several** hypotheses to define viscous layers on faces of"
-msgstr ""
-
-# 5eb0df6c10ab48f1b467d005508bfdbf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:117
-msgid ""
-"one solid, keep in mind the following. Each hypothesis defines a set of "
-"faces with viscous layers (even if you specify faces without layers). The"
-" sets of faces with viscous layers defined by several hypotheses should "
-"not intersect, else the module won't add an hypothesis that is "
-"incompatible with another one. Also you can't define different number of "
-"layers on adjacent faces of a solid. This logic is also valid for the 2D "
-"hypothesis."
-msgstr ""
-
-# 3754387d6a2b4dd1a575ff9c9dcd5a2c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:134
-msgid "**See also** a sample TUI script of a :ref:`tui_viscous_layers`."
-msgstr ""
-
-# bc47f9539cea4ba79712b94280f1e632
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:140
-msgid "Quadratic Mesh"
-msgstr ""
-
-# ba83c2c703aa43d583daf55bb192aeb7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:142
-msgid ""
-"Quadratic Mesh hypothesis allows to build a quadratic mesh (in which "
-"links between element nodes are not straight but curved lines due to "
-"presence of an additional mid-side node)."
-msgstr ""
-
-# d689d0d6a0dc4a91b87aab30b4c319db
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:146
-msgid ""
-"This 1D hypothesis can be taken into account by :ref:`a1d_algos_anchor` "
-"\"Wire Discretization\" and :ref:`a1d_algos_anchor` \"Composite Side "
-"Discretization\" algorithms. To create a quadratic mes assign this "
-"hypothesis at :ref:`constructing_meshes_page`."
-msgstr ""
-
-# d89df66697c9408db023f0301d6ccafd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:151
-msgid ""
-"See :ref:`adding_quadratic_elements_page` for more information about "
-"quadratic meshes."
-msgstr ""
-
-# 049d52c574fb4e049d4da534026aa905
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:157
-msgid "Quadrangle Preference"
-msgstr ""
-
-# 5bc9e3bdc1424a998a9cf23908454242
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:159
-msgid ""
-"This additional hypothesis can be used together with 2D triangulation "
-"algorithms. It allows 2D triangulation algorithms to build quadrangular "
-"meshes."
-msgstr ""
-
-# dacde0cdc252433ea47143272e826d0a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:162
-msgid ""
-"Usage of this hypothesis with \"Quadrangle: Mapping\" meshing algorithm "
-"is obsolete since introducing :ref:`hypo_quad_params_anchor` \"Quadrangle"
-" parameters\" hypothesis. Usage of this hypothesis with \"Quadrangle: "
-"Mapping\" meshing algorithm corresponds to specifying \"Quadrangle "
-"Preference\" transition type of :ref:`hypo_quad_params_anchor` "
-"\"Quadrangle parameters\" hypothesis."
-msgstr ""
-
-# 578441c1b67846f6a25815a070b31d28
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/additional_hypo.rst:166
-msgid ""
-"\"Quadrangle Preference\" transition type can be used only if the total "
-"quantity of segments on all sides of the face is even (divisible by 2), "
-"else \"Standard\" transition type is used."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/area.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/area.po
deleted file mode 100644 (file)
index d5d8081..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# db55cbb79de0435090214d3b033d4c3b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/area.rst:6
-msgid "Area"
-msgstr ""
-
-# 8dccc331fadb42f28684db2bd0ba2125
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/area.rst:8
-msgid ""
-"**Area** mesh quality control is based on the algorithm of area "
-"calculation of mesh faces."
-msgstr ""
-
-# b62f3cc3e4d144a39abf63f3ef1c393e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/area.rst:11
-msgid "**To apply the Area quality control to your mesh:**"
-msgstr ""
-
-# 1d4a7fa016a74a89971d5200f8ef9b56
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/area.rst:13
-msgid "Display your mesh in the viewer."
-msgstr ""
-
-# 705801c6cdba479cbfb4546c4e13583b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/area.rst:14
-msgid "Choose **Controls > Face Controls > Area** or click  **\"Area\"** button."
-msgstr ""
-
-# f2936084fdc448ffb9d0af1b4325c570
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/area.rst:22
-msgid ""
-"Your mesh will be displayed in the viewer with its faces colored "
-"according to the applied mesh quality control criterion:"
-msgstr ""
-
-# 34b6e9d9faff413da4a5b4ed05bcb750
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/area.rst:29
-msgid "**See Also** a sample TUI Script of an :ref:`tui_area` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/aspect_ratio.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/aspect_ratio.po
deleted file mode 100644 (file)
index 2c3e7a2..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 8864e747737c4f0e99b4b6b55ea866bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:5
-msgid "Aspect Ratio"
-msgstr ""
-
-# 9fd308cc60b641d59f671994d5c260c8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:7
-msgid ""
-"The **Aspect Ratio** quality criterion for mesh elements reveals the "
-"degree of conformity of a mesh element to the regular element of its type"
-" (with all edges having the same length)."
-msgstr ""
-
-# 5d1d18e8f44d496e94a4844eb5b6f29c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:10
-msgid ""
-"The **Aspect Ratio** of a **triangle** 2D element consisting of 3 nodes "
-"is calculated by the formula:"
-msgstr ""
-
-# d3b211f181e541d99b735f09343b9345
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:15
-msgid ""
-"The **Aspect Ratio** of a **quadrangle** 2D element consisting of 4 nodes"
-" is calculated using The Verdict Geometric Quality Library available "
-"within VTK. The calculation formula is:"
-msgstr ""
-
-# e95e73027d274edfb7f807dd9b23135e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:20
-msgid "**To apply the Aspect Ratio quality criterion to your mesh:**"
-msgstr ""
-
-# 26a652d49e734e51845afecec6b3287d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:22
-msgid "Display your mesh in the viewer."
-msgstr ""
-
-# b86656d6ad1d4f75b782e9bfdea3b8ec
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:23
-msgid ""
-"Choose **Controls > Face Controls > Aspect Ratio** or click  **Aspect "
-"Ratio** button in the toolbar."
-msgstr ""
-
-# 275fe710e1a2456a9b6b4e556263e5ce
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:32
-msgid ""
-"Your mesh will be displayed in the viewer with its elements colored "
-"according to the applied mesh quality control criterion:"
-msgstr ""
-
-# aa48b40c005d41aa92e47b939df4c8e6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio.rst:38
-msgid "**See Also** a sample TUI Script of an :ref:`tui_aspect_ratio` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/aspect_ratio_3d.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/aspect_ratio_3d.po
deleted file mode 100644 (file)
index e401227..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 61434f0743c3404cb4e01a3bf84d57cd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:5
-msgid "Aspect ratio 3D"
-msgstr ""
-
-# 156046dbe964465684b29538f5cf82f5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:7
-msgid ""
-"The **Aspect Ratio 3D** mesh quality criterion calculates the same "
-"parameter as the :ref:`aspect_ratio_page` criterion, but it is applied to"
-" 3D mesh elements: tetrahedrons, pentahedrons, hexahedrons, etc."
-msgstr ""
-
-# d676a6ab44454cdf921790e40a0e16e7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:9
-msgid ""
-"The **Aspect Ratio** of a **tetrahedron** 3D element defined by vertices "
-"{a,b,c,d } is calculated by the formula:"
-msgstr ""
-
-# 40ba4ecb72e3463abe86fdda2a486407
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:14
-msgid ""
-"Other element types like polyhedron, pentahedron and hexahedron use the "
-"following formula:"
-msgstr ""
-
-# adbb816c867c40f58ab1c290659b30e2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:19
-msgid "**To apply the Aspect Ratio 3D quality criterion to your mesh:**"
-msgstr ""
-
-# c1a14197106745bb92f4ea507ecdb17c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:21
-msgid "Display your mesh in the viewer."
-msgstr ""
-
-# bb851272ea6d4a09bcc1ae1f275d14ee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:22
-msgid ""
-"Choose **Controls > Volume Controls > Aspect Ratio 3D** or click "
-"**\"Aspect Ratio 3D\"** button of the toolbar."
-msgstr ""
-
-# 6daa4e9e21f5441ebd17641159f25dc1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:31
-msgid ""
-"Your mesh will be displayed in the viewer with its elements colored "
-"according to the applied mesh quality control criterion:"
-msgstr ""
-
-# 9d800e4d5fb04279952a7960f5c06ce5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst:37
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_aspect_ratio_3d` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/bare_border_face.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/bare_border_face.po
deleted file mode 100644 (file)
index 54bc35a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 4d2a7fab9f7f4f6b99e1e55c1d4c1afa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/bare_border_face.rst:5
-msgid "Bare border faces"
-msgstr ""
-
-# 127287f59f734105888c3f0ef2c0affe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/bare_border_face.rst:7
-msgid ""
-"This mesh quality control highlights the faces having the border not "
-"shared with other faces (free border) and missing an edge based on nodes "
-"of the free border. The faces with bare border are shown with a color "
-"different from the color of shared faces."
-msgstr ""
-
-# e82b80f6afed4c5999dc1c076ebdafc0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/bare_border_face.rst:15
-msgid ""
-"**See also** A sample TUI Script making a group of faces highlighted in "
-"the picture is :ref:`tui_bare_border_faces`."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/bare_border_volumes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/bare_border_volumes.po
deleted file mode 100644 (file)
index 1f74abb..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# c54d596b4abd408ba45bb44439fd034e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/bare_border_volumes.rst:5
-msgid "Bare border volumes"
-msgstr ""
-
-# 2c5b52929f8e4ce08d892863f011f665
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/bare_border_volumes.rst:7
-msgid ""
-"This mesh quality control highlights the volumes having the border not "
-"shared with other volumes (free border) and missing a face based on nodes"
-" of the free border. The volumes with bare border are shown with a color "
-"different from the color of shared volumes."
-msgstr ""
-
-# 96579bbe562c4cd38e97920f542414f1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/bare_border_volumes.rst:15
-msgid ""
-"**See also** A sample TUI Script making a group of volumes highlighted in"
-" the picture is :ref:`tui_bare_border_volumes`."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/basic_meshing_algos.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/basic_meshing_algos.po
deleted file mode 100644 (file)
index 2654e3a..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# c8be38d4fe804083ad6a598447666cc6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:5
-msgid "Basic meshing algorithms"
-msgstr ""
-
-# 9824be8dcf4840d797bdba9ae3cecf81
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:7
-msgid ""
-"The MESH module contains a set of meshing algorithms, which are used for "
-"meshing entities (1D, 2D, 3D sub-shapes) composing geometrical objects."
-msgstr ""
-
-# 3b6a763ea0364cdfb1c0ef68894b2ec3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:9
-msgid ""
-"An algorithm represents either an implementation of a certain meshing "
-"technique or an interface to the whole meshing program generating "
-"elements of several dimensions."
-msgstr ""
-
-# 532ed39715344cf7acd0f68ea17ea3a7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:14
-msgid "1D Entities"
-msgstr ""
-
-# ae97621ae9b94b4b9fab931327e98d37
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:16
-msgid "For meshing of 1D entities (**edges**):"
-msgstr ""
-
-# 5d251d33c5a04aa9b83ecbb742f418a2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:17
-msgid ""
-"**Wire Discretization** meshing algorithm - splits an edge into a number "
-"of mesh segments following an 1D hypothesis."
-msgstr ""
-
-# e56a55bba65b476d9fb29dad45021df5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:18
-msgid ""
-"**Composite Side Discretization** algorithm - allows to apply a 1D "
-"hypothesis to a whole side of a geometrical face even if it is composed "
-"of several edges provided that they form C1 curve in all faces of the "
-"main shape."
-msgstr ""
-
-# d3e7fb14c1f54dcf84b9d7743ddf08c6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:19
-msgid "For meshing of 2D entities (**faces**):"
-msgstr ""
-
-# 96ff3177522e4abbac57c5166724c7db
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:22
-msgid ""
-"**Triangle: Mefisto** meshing algorithm - splits faces into triangular "
-"elements."
-msgstr ""
-
-# b8b884f144944a44bf4e6b6eebb78a3e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:23
-msgid ""
-":ref:`quad_ijk_algo_page` meshing algorithm - splits faces into "
-"quadrangular elements."
-msgstr ""
-
-# a13ad16fe701490fbbb2b492842b74ce
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:37
-msgid "For meshing of 3D entities (**solid objects**):"
-msgstr ""
-
-# 54752b6339e643ab9796cdba834e8c1c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:46
-msgid ""
-"**Hexahedron (i,j,k)** meshing algorithm - solids are split into "
-"hexahedral elements thus forming a structured 3D mesh. The algorithm "
-"requires that 2D mesh generated on a solid could be considered as a mesh "
-"of a box, i.e. there should be eight nodes shared by three quadrangles "
-"and the rest nodes should be shared by four quadrangles."
-msgstr ""
-
-# f6c22808144446399e41ec254795651e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:60
-msgid ""
-":ref:`cartesian_algo_page` meshing algorithm - solids are split into "
-"hexahedral elements forming a Cartesian grid; polyhedra and other types "
-"of elements are generated where the geometrical boundary intersects "
-"Cartesian cells."
-msgstr ""
-
-# c0f194ee2591455e82931c862e55b74b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:62
-msgid ""
-"Some 3D meshing algorithms, such as Hexahedron(i,j,k) also can generate "
-"3D meshes from 2D meshes, working without geometrical objects."
-msgstr ""
-
-# f9af97e91aee474fa52053b426338c65
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:66
-msgid "There is also a number of more specific algorithms:"
-msgstr ""
-
-# ad32f133509846b887e8976e5f34897d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:68
-msgid ""
-":ref:`prism_3d_algo_page` - for meshing prismatic 3D shapes with "
-"hexahedra and prisms."
-msgstr ""
-
-# f2548c6c528c4d198d067572c9d0e1a0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:69
-msgid ""
-":ref:`quad_from_ma_algo_page` - for quadrangle meshing of faces with "
-"sinuous borders and rings."
-msgstr ""
-
-# 69fc8fe1213d400199cbfbfe768c3209
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:70
-msgid ""
-"**Polygon per Face** meshing algorithm - generates one mesh face (either "
-"a triangle, a quadrangle or a polygon) per a geometrical face using all "
-"nodes from the face boundary."
-msgstr ""
-
-# 772e98a27e5143a1b8c2c49e9b2abd33
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:71
-msgid ":ref:`projection_algos_page` - for meshing by projection of another mesh."
-msgstr ""
-
-# 9400074a01ad41f8b32156cc5a6cb0c8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:72
-msgid ""
-":ref:`import_algos_page` - for meshing by importing elements from another"
-" mesh."
-msgstr ""
-
-# 1de827d6a65a46ccaacec4e084a8dfe6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:73
-msgid ""
-":ref:`radial_prism_algo_page` - for meshing 3D geometrical objects with "
-"cavities with hexahedra and prisms."
-msgstr ""
-
-# 45b998fde8e7426098f4e7ecb3bbd4f5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:74
-msgid ""
-":ref:`radial_quadrangle_1D2D_algo_page` - for quadrangle meshing of disks"
-" and parts of disks."
-msgstr ""
-
-# 46d628420f5249d38884a79134a14dc4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:75
-msgid ":ref:`use_existing_page` - to create a 1D or a 2D mesh in a python script."
-msgstr ""
-
-# 8772a29a46164088a85f1a3e7f6de471
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:76
-msgid ""
-":ref:`segments_around_vertex_algo_page` - for defining the length of mesh"
-" segments around certain vertices."
-msgstr ""
-
-# c72125844d894b53b9b111de5675d6c7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:79
-msgid ""
-":ref:`constructing_meshes_page` page describes in detail how to apply "
-"meshing algorithms."
-msgstr ""
-
-# dd2e5049652f42cfbca7837a60b05d0b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/basic_meshing_algos.rst:81
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_defining_meshing_algos` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/borders_at_multi_connection.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/borders_at_multi_connection.po
deleted file mode 100644 (file)
index 0879902..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# d2f8fc9fd0cb4b8f97fac18b5b18c7f0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/borders_at_multi_connection.rst:5
-msgid "Borders at multi-connection"
-msgstr ""
-
-# f889610316e140149cb805bebd9de283
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/borders_at_multi_connection.rst:7
-msgid ""
-"This mesh quality control highlights segments according to the number of "
-"elements, faces and volumes, to which the segment belongs."
-msgstr ""
-
-# 76988886f4ab4173a8ac4f5800c0c9b9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/borders_at_multi_connection.rst:12
-msgid "In this picture the borders at multi-connection are displayed in blue."
-msgstr ""
-
-# 8d4a16bc2dc2420fa668c7b177723575
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/borders_at_multi_connection.rst:14
-msgid ""
-"**See Also** a sample TUI Script of a "
-":ref:`tui_borders_at_multiconnection` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/borders_at_multi_connection_2d.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/borders_at_multi_connection_2d.po
deleted file mode 100644 (file)
index 88b74f9..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 77167e3eb2d74d708cb40b566c7b6a00
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/borders_at_multi_connection_2d.rst:5
-msgid "Borders at multi-connection 2D"
-msgstr ""
-
-# 3d9688fbe2454312936f96dbc032904c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/borders_at_multi_connection_2d.rst:7
-msgid ""
-"This mesh quality control highlights borders of faces (links between "
-"nodes) according to the number of faces, to which the link belongs."
-msgstr ""
-
-# e6bded6db48249c99027c3783d9f727b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/borders_at_multi_connection_2d.rst:12
-msgid ""
-"**See Also** a sample TUI Script of a "
-":ref:`tui_borders_at_multiconnection_2d`  operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/building_compounds.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/building_compounds.po
deleted file mode 100644 (file)
index c4aad8f..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 67e4b2dcef5f44219170b804924a32d4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:5
-msgid "Building Compound Meshes"
-msgstr ""
-
-# 343ff5ee2e404c4cacb3701d7e63c355
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:7
-msgid ""
-"Compound Mesh is a combination of several meshes. All elements and groups"
-" present in input meshes are present in the compound mesh. However, it "
-"does not use geometry or hypotheses of the initial meshes. The links "
-"between the input meshes and the compound mesh are not supported, "
-"consequently the modification of an input mesh does not lead to the "
-"update of the compound mesh."
-msgstr ""
-
-# 218176393db0429b83f003c7f27abeb2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:10
-msgid "**To Build a compound mesh:**"
-msgstr ""
-
-# 8ae6eecfc11b4cc4bb362110cec348a2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:12
-msgid ""
-"From the **Mesh** menu select **Build Compound** or click **\"Build "
-"Compound Mesh\"** button in the toolbar."
-msgstr ""
-
-# 48ee70b54e184ebfbd5038e12b55e040
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:17
-msgid "**\"Build Compound Mesh\" button**"
-msgstr ""
-
-# f1035bf666d34447a81f354e3abdde43
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:20
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# 7b2ce5d693c04a7d976032fe2a719fcf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:25
-msgid "**Name** - allows selecting the name of the resulting **Compound** mesh."
-msgstr ""
-
-# 45bb597168cd4515936ab86be4ab002d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:26
-msgid ""
-"**Meshes, sub-meshes, groups** - allows selecting the meshes, sub-meshes "
-"and groups to be concatenated. They can be chosen in the Object Browser "
-"while holding **Ctrl** button."
-msgstr ""
-
-# ada9e86048ff49ec9518d83ed23bcdae
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:27
-msgid ""
-"**Processing identical groups** - allows selecting the method of "
-"processing the namesake groups existing in the input meshes. They can be "
-"either"
-msgstr ""
-
-# 5ddde549badf4897bf5c070e00601711
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:29
-msgid ""
-"**United** - all elements of **Group1** of **Mesh_1** and **Group1** of "
-"**Mesh_2** become the elements of **Group1** of the **Compound_Mesh**, or"
-msgstr ""
-
-# cd183fb362f54a8d89255ee5a53fe390
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:30
-msgid ""
-"**Renamed** - **Group1** of **Mesh_1** becomes **Group1_1** and "
-"**Group1** of **Mesh_2** becomes **Group1_2**."
-msgstr ""
-
-# ac06126abbd94f50acff31e923c5e1c5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:32
-msgid "See :ref:`grouping_elements_page` for more information about groups."
-msgstr ""
-
-# 253ffe6ee5f044ff9859469e41b73457
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:33
-msgid ""
-"**Create groups from input objects** check-box permits to automatically "
-"create groups corresponding to every initial mesh."
-msgstr ""
-
-# 642a6a491eb54a51a35daf71ec5f8ad4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:41
-msgid ""
-"You can choose to additionally :ref:`merging_nodes_page`, "
-":ref:`merging_elements_page` in the compound mesh, in which case it is "
-"possible to define the **Tolerance** for this operation."
-msgstr ""
-
-# 188a4077b8a34a7c9b5f004b744f31b0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/building_compounds.rst:49
-msgid "**See Also** a sample :ref:`tui_building_compound`."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cartesian_algo.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cartesian_algo.po
deleted file mode 100644 (file)
index a0b6377..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# a8e930acb63f44f4b997deb515406300
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:5
-msgid "Body Fitting 3D meshing algorithm"
-msgstr ""
-
-# 9910dbcae2b54873a9fbe1949092c565
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:7
-msgid ""
-"Body Fitting algorithm generates hexahedrons of a Cartesian grid in the "
-"internal part of geometry and polyhedrons and other types of elements at "
-"the intersection of Cartesian cells with the geometrical boundary."
-msgstr ""
-
-# d7359f93f6a548bdad23de6ae3d468cf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:18
-msgid "The meshing algorithm is as follows."
-msgstr ""
-
-# 40dcc8dc839149ccae3463069ccedc40
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:20
-msgid ""
-"Lines of a Cartesian structured grid defined by "
-":ref:`cartesian_hyp_anchor` hypothesis are intersected with the geometry "
-"boundary, thus nodes lying on the boundary are found. This step also "
-"allows finding out for each node of the Cartesian grid if it is inside or"
-" outside the geometry."
-msgstr ""
-
-# 5086ae5fb11d492588240d7cb7c2ab6e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:21
-msgid ""
-"For each cell of the grid, check how many of its nodes are outside of the"
-" geometry boundary. Depending on a result of this check"
-msgstr ""
-
-# 8f9abd85d3314fbc960850ffc427d32c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:22
-msgid "skip a cell, if all its nodes are outside"
-msgstr ""
-
-# b4a9ee73831a4b78b1beed76ea20ebc3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:23
-msgid "skip a cell, if it is too small according to **Size Threshold** parameter"
-msgstr ""
-
-# a6636e49ee944dc49d1443efe959e6dc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:24
-msgid "add a hexahedron in the mesh, if all nodes are inside"
-msgstr ""
-
-# a342af446281426e939081be935cc062
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:25
-msgid ""
-"add a polyhedron or another cell type in the mesh, if some nodes are "
-"inside and some outside."
-msgstr ""
-
-# 1b709cb0a50c4116b737a084946641e8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:27
-msgid ""
-"To apply this algorithm when you define your mesh, select **Body "
-"Fitting** in the list of 3D algorithms and add **Body Fitting  "
-"Parameters** hypothesis. The following dialog will appear:"
-msgstr ""
-
-# 43f05e2d944c45a8ba6e9a588efd7a72
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:32
-msgid "Body Fitting Parameters hypothesis"
-msgstr ""
-
-# 2b52cecbc75c4291b7c67f8a35b75aa8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:40
-msgid "This dialog allows to define"
-msgstr ""
-
-# d87ae3b140c4486b99566c643801769f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:42
-msgid "**Name** of the algorithm."
-msgstr ""
-
-# ef240d03b53c43c786f69034ea33eff6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:43
-msgid ""
-"Minimal size of a cell truncated by the geometry boundary. If the size of"
-" a truncated grid cell is **Threshold** times less than a initial cell "
-"size, then a mesh element is not created."
-msgstr ""
-
-# bd47ac9350824864aa06382db8ee86bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:44
-msgid ""
-"**Implement Edges** check-box activates incorporation of geometrical "
-"edges in the mesh."
-msgstr ""
-
-# 5baff056db5e4d83a014f9b7ee4870d4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:52
-msgid ""
-"**Definition mode** allows choosing how Cartesian structured grid is "
-"defined. Location of nodes along each grid axis is defined individually:"
-msgstr ""
-
-# 04af1c69153943fc94b0eb1559764663
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:55
-msgid ""
-"You can specify the **Coordinates** of grid nodes. **Insert** button "
-"inserts a node at **Step** distance (negative or positive) from the "
-"selected node. **Delete** button removes the selected node. Double click "
-"on a coordinate in the list enables its edition."
-msgstr ""
-
-# 498e3aacb6d049dd9cbf56e2d276d388
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:56
-msgid ""
-"that node coordinates are measured along directions of axes that can "
-"differ from the directions of the Global Coordinate System."
-msgstr ""
-
-# 8e8eb1fa61b84f73b31fbd1309e136bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:57
-msgid ""
-"You can define the **Spacing** of a grid as an algebraic formula **f(t)**"
-" where *t* is a position along a grid axis normalized at [0.0,1.0]. "
-"**f(t)** must be non-negative at 0. <= *t* <= 1. The whole extent of "
-"geometry can be divided into ranges with their own spacing formulas to "
-"apply; a t varies between 0.0 and 1.0 within each **Range**. **Insert** "
-"button divides a selected range into two. **Delete** button adds the "
-"selected sub-range to the previous one. Double click on a range in the "
-"list enables edition of its right boundary. Double click on a function in"
-" the list enables its edition."
-msgstr ""
-
-# 77758a7e751a4659a9b8332760e46d53
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:59
-msgid ""
-"**Fixed Point** group allows defining an exact location of a grid node in"
-" the direction defined by spacing. The following cases are possible:"
-msgstr ""
-
-# 0d7a5b6700b5418b8ecff106ab703ff9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:61
-msgid ""
-"If all three directions are defined by spacing, there will be a mesh node"
-" at the **Fixed Point**."
-msgstr ""
-
-# 780deb00eb6543fe8c3cd80c09cf9f9f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:62
-msgid ""
-"If two directions are defined by spacing, there will be at least a link "
-"between mesh nodes passing through the **Fixed Point**."
-msgstr ""
-
-# 9f89cbedc11c4b808087371c5843b502
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:63
-msgid ""
-"If only one direction is defined by spacing, there will be at least an "
-"element facet passing through the **Fixed Point**."
-msgstr ""
-
-# 7c3cfc7fa79448998f6ad6e1c6fcb1a2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:64
-msgid "If no directions are defined by spacing, **Fixed Point** is disabled."
-msgstr ""
-
-# 1c1175fe90b24bd5be0f5c3a254698e6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:66
-msgid "**Directions of Axes** group allows setting the directions of grid axes."
-msgstr ""
-
-# 45a3134007e2474085d37c880226b945
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:68
-msgid ""
-"If **Orthogonal Axes** check-box is activated the axes remain orthogonal "
-"during their modification."
-msgstr ""
-
-# 5e62f1b6a9da4933b9311638965b67ab
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:69
-msgid ""
-"Selection buttons enable snapping corresponding axes to direction of a "
-"geometrical edge selected in the Object Browser. Edge direction is "
-"defined by coordinates of its end points."
-msgstr ""
-
-# 137f0b6c5afa4c35bb2460e208d31705
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:70
-msgid ""
-"**Optimal Axes** button runs an algorithm that tries to set the axes to "
-"maximize the number of generated hexahedra."
-msgstr ""
-
-# 3d3c72fee116466bbe4150c2ed3bbe66
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:71
-msgid ""
-"**Reset** button returns the axes in a default position parallel to the "
-"axes of the Global Coordinate System."
-msgstr ""
-
-# bca1ceb497d2487ab725b4d1cb3a4ec3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cartesian_algo.rst:76
-msgid "**See Also** a sample TUI Script of a :ref:`tui_cartesian_algo`."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/changing_orientation_of_elements.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/changing_orientation_of_elements.po
deleted file mode 100644 (file)
index 5105c8a..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# fe2d10c3ec6b438db0264d47280f4894
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:5
-msgid "Changing orientation of elements"
-msgstr ""
-
-# 4d5617c88bcf43cb8667c686d3bb0649
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:7
-msgid "Orientation of an element is changed by changing the order of its nodes."
-msgstr ""
-
-# 5bd693b83b37438b8a853857526df8a6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:9
-msgid "**To change orientation of elements:**"
-msgstr ""
-
-# 0989cbc9c32b4632b859c1a2b284426f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:11
-msgid ""
-"Select a mesh (and display it in the 3D Viewer if you are going to pick "
-"elements by mouse)."
-msgstr ""
-
-# f516165c8bcb42fcaee35e3aa6f2b5bc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:12
-msgid ""
-"In the **Modification** menu select the **Orientation** item or click "
-"**Orientation** button in the toolbar."
-msgstr ""
-
-# 1e49fcdcf3444562aa6a13fa03a496c5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:20
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# 03b85e641f264b93ba8db4173acaf1bd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:25
-msgid "Select type of elements to reorient: **Face** or **Volume**."
-msgstr ""
-
-# e65a101a42394045b9c9e79e71df9187
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:26
-msgid ""
-"**The main list** shall contain the elements which will be reoriented. "
-"You can click on an element in the 3D viewer and it will be highlighted. "
-"After that click the **Add** button and the ID of this element will be "
-"added to the list. To remove a selected element or elements from the list"
-" click the **Remove** button. The **Sort** button allows to sort the list"
-" of elements IDs. The **Set filter** button allows to apply a definite "
-":ref:`filtering_elements` \"filter\" to the selection of elements."
-msgstr ""
-
-# d715ca1c7caa411ca50d180fa6c0ab80
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:27
-msgid ""
-"**Apply to all** radio button allows to modify the orientation of all "
-"elements of the selected mesh."
-msgstr ""
-
-# 7d9a89decc7f41699a18cfe7d0d75f13
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:28
-msgid ""
-"*Select from** set of fields allows to choose a sub-mesh or an existing "
-"group whose elements can be added to the list."
-msgstr ""
-
-# c96eeaddc54c4a48b260b5f7e265fa3a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:30
-msgid ""
-"Click the **Apply** or **Apply and Close** button to confirm the "
-"operation."
-msgstr ""
-
-# 5fcf6f8346c946a49e70a860cd81931f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst:32
-msgid "**See Also** a sample TUI Script of a :ref:`tui_orientation` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/clipping.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/clipping.po
deleted file mode 100644 (file)
index a2e56f8..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# ceb118d3f4cb467c9ede1c28cacfc0a7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:5
-msgid "Clipping"
-msgstr ""
-
-# e19904b1f4e545ccb7382a3fb8372d4a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:7
-msgid ""
-"**Clipping** allows creating cross-section views (clipping planes) of "
-"your mesh. It is available as a sub-item in the context menu of an active"
-" mesh. To create a clipping plane, click on the **New** button in the "
-"dialog and choose how it is  defined: by **Absolute** or **Relative** "
-"coordinates. **Absolute Coordinates**"
-msgstr ""
-
-# 0d52999f90594fedbee68d90b3aab4af
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:15
-msgid ""
-"**Base point** - allows defining the coordinates of the base point for "
-"the clipping plane."
-msgstr ""
-
-# 3ba5b5e4f43d4f4e954bc31d09d62031
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:16
-msgid "**Reset** - returns the base point to coordinate origin."
-msgstr ""
-
-# 2e7752ba55ce4f6885e05619a6991789
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:17
-msgid "**Direction** - allows defining the orientation of the clipping plane."
-msgstr ""
-
-# 28e905d68bb341a68b0beae8da9c86f0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:18
-msgid ""
-"**Invert** - allows selecting, which part of the object will be removed "
-"and which will remain after clipping."
-msgstr ""
-
-# 1734f629e76a45d7b278ef60498609bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:20
-msgid "**Relative mode**"
-msgstr ""
-
-# 9f5a256c38f14fde80e06168db416a39
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:25
-msgid "**Orientation** ( ||X-Y, ||X-Z or ||Y-Z)."
-msgstr ""
-
-# 933953854d944d4097ac9485693e044e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:26
-msgid ""
-"**Distance** between the opposite extremities of the boundary box of "
-"selected objects, if it is set to 0.5 the boundary box is split in two "
-"halves."
-msgstr ""
-
-# 54f7cd8ae92c486e8567a4d21760e2a9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:27
-msgid ""
-"**Rotation** (in angle degrees) **around X** (Y to Z) and **around Y** (X"
-" to Z) (depending on the chosen Orientation)"
-msgstr ""
-
-# d19ba527c11f4ffa8a1acb71d26f97bd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:32
-msgid "\"The preview plane and the cut object\""
-msgstr ""
-
-# 77794a5cf0784f70859fcb0327a488d5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:34
-msgid "The other parameters are available in both modes :"
-msgstr ""
-
-# 957ea51506dc40b0adc032c5fd0096f5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:36
-msgid ""
-"**OpenGL clipping** check-box allows choosing OpenGL native clipping, "
-"which clips the whole presentation. If it is unchecked, the clipping is "
-"done on the dataset i.e. only the visibility of separate mesh cells is "
-"changed (see the examples)."
-msgstr ""
-
-# 639fff4f76f24519854f7e90eff8338b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:37
-msgid ""
-"The List contains **Meshes, sub-meshes and groups** to which the cross-"
-"section will be applied."
-msgstr ""
-
-# f02378bb1d49463dbb09a0b1f9a24a74
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:38
-msgid ""
-"**Select all** check-box allows to selecting and deselecting all "
-"available objects at once."
-msgstr ""
-
-# cf9db5bce38f4659bd092817cf5a32b4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:39
-msgid "**Show preview** check-box shows the clipping plane in the **3D Viewer**."
-msgstr ""
-
-# 3f8e80ea656d464c9daa6f17aa70d7b6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:40
-msgid ""
-"**Auto Apply** check-box shows button is on, you can preview the cross-"
-"section in the **3D Viewer**."
-msgstr ""
-
-# fe51b17a0ff6427980d17a9e399e40b4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:42
-msgid ""
-"It is also possible to interact  with the clipping plane directly in 3D "
-"view using the mouse."
-msgstr ""
-
-# 43e1d59fcd374017a1faddb5ea481ea9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:44
-msgid "To get a new object from **Clipping**, click **Apply**."
-msgstr ""
-
-# 0ca0d76ecbf94a36a2b63b9cadb7470b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:46
-msgid "**Examples:**"
-msgstr ""
-
-# 2b9286e5d01f46be8021b2a959fb9650
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:51
-msgid "\"The cross-section using dataset\""
-msgstr ""
-
-# 5521df28f71943719c6f67617bf9678e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/clipping.rst:56
-msgid "\"The OpenGL cross-section\""
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/colors_size.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/colors_size.po
deleted file mode 100644 (file)
index 2e863e0..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 25d2f26ace5b4b829c8a87ada850ddf3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:5
-msgid "Properties"
-msgstr ""
-
-# 2997394fe84a44f88c477482d902c875
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:10
-msgid ""
-"Using this dialog you can customize different properties of the mesh "
-"visualization parameters."
-msgstr ""
-
-# 31ec38d757fc4badb8d42324193fcab7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:12
-msgid ""
-"The GUI elements in the \"Properties\" dialog box are grouped according "
-"to the entity types of mesh data. If some data entities are not present "
-"in the mesh object, the corresponding GUI elements are not shown."
-msgstr ""
-
-# 655c3a41d3fa45b2a7c4b5a535850a84
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:15
-msgid "**Nodes**:"
-msgstr ""
-
-# fcc0e7b140ea49df90de65f407fe638c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:15
-msgid "**Color** - color of nodes."
-msgstr ""
-
-# 2dc38fccf0464b21a18d71a9b469aea9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:16
-msgid ""
-"**Type** and **Scale** - these options allow changing the nodes "
-"representation (see :ref:point_marker_page \"Point Marker\" page for more"
-" details)."
-msgstr ""
-
-# faae687f9e164f03a8714f74be9ff516
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:18
-msgid "**Edges / wireframe**:"
-msgstr ""
-
-# f60f348a1e044ff6881398709e6ddf52
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:18
-msgid "**Color** - color of element borders in wireframe mode."
-msgstr ""
-
-# 6adaf5a525794040a264748695570501
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:19
-msgid ""
-"**Width** - width of lines (edges and borders of elements in wireframe "
-"mode)."
-msgstr ""
-
-# e48a7e183557491a9e3fcad995f0b6f8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:21
-msgid "**Faces**:"
-msgstr ""
-
-# ef55986094b643f38e984ff14d9a0ef2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:21
-msgid "**Front** - surface color of face elements (seen in shading mode)."
-msgstr ""
-
-# 99746ad5f3b2461aaf22ea0d1f88e4fe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:22
-msgid ""
-"**Back** - backside surface color of face elements. Use the slider to "
-"select this color generated on the base of the **Face** color by changing"
-" its brightness and saturation."
-msgstr ""
-
-# 996adee3928449c4844f05c8679d5c10
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:24
-msgid "**Volumes**:"
-msgstr ""
-
-# 8b8a404f6c3d49758ded898c5ebf4b28
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:24
-msgid ""
-"**Normal** - surface color of normal volume elements (seen in shading "
-"mode)."
-msgstr ""
-
-# 1b4f147aba284490a763af666ee1cf20
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:25
-msgid ""
-"**Reversed** - surface color of volume elements. Use the slider to select"
-" this color generated on the base of the **Normal** color by changing its"
-" brightness and saturation."
-msgstr ""
-
-# 1539339650874bd3960985a85822a812
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:27
-msgid "**Outlines**:"
-msgstr ""
-
-# 68b3ee1f2ef74b1fbf8101a25f1ea553
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:27
-msgid "**Color** - color of element borders in shading mode."
-msgstr ""
-
-# 760937016686488880f8c72c2494a896
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:28
-msgid "**Width** - width of outlines (borders of elements in shading mode)."
-msgstr ""
-
-# dd46341914784677b8cb0951668ce54d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:30
-msgid "**0D elements**:"
-msgstr ""
-
-# 524e211e12034fbca561d87318b9e099
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:30
-msgid "**Color** - color of 0D elements."
-msgstr ""
-
-# dcdae6f65e7e48de8be8b79cb374855b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:31
-msgid "**Size** - size of 0D elements."
-msgstr ""
-
-# db588562142a4bcba130e8f6ff2794ba
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:34
-msgid "**Balls**:"
-msgstr ""
-
-# 0bcfd9f2bf4a404598722f088e30324b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:33
-msgid "**Color** - color of discrete ball elements."
-msgstr ""
-
-# ff10af519b734385b6d2f8f04884b912
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:34
-msgid "**Size** - size of discrete ball elements."
-msgstr ""
-
-# edbd1c084f46466798861d0b55f02875
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:35
-msgid "**Scale** - scale factor of discrete ball elements."
-msgstr ""
-
-# 4fa0f7d6cb234b54b436bfdc82b471ac
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:38
-msgid "**Orientation vectors**:"
-msgstr ""
-
-# 3b45de37801e459d8f6de945985a070d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:37
-msgid "**Color** - color of orientation vectors."
-msgstr ""
-
-# c2e38c98b8aa4b2a9674bdf474a61ae3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:38
-msgid "**Scale** - size of orientation vectors."
-msgstr ""
-
-# 3faad5944dc640bbaca6ccd2a1db8748
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:39
-msgid "**3D vectors** - allows to choose between 2D planar and 3D vectors."
-msgstr ""
-
-# e5487d6283fc470dba1d0a129808aa9e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/colors_size.rst:40
-msgid ""
-"**Shrink coef.** - relative space of elements compared to gaps between "
-"them in shrink mode."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/connectivity.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/connectivity.po
deleted file mode 100644 (file)
index d5bc250..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-03-30 11:57+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 544556706e884932836455c9bf692b72
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:5
-msgid "Nodal connectivity of elements"
-msgstr ""
-
-# dc5442a27c934a238e10c75791d0cdc2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:7
-msgid "The following images show order of nodes in correctly defined elements."
-msgstr ""
-
-# f1759ea9888d42ebad2675a17a089a4e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:11
-msgid "Edge (segment): linear and quadratic"
-msgstr ""
-
-# 9d98eb840a9e4d36b2191cc13a42daa1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:15
-msgid "Triangle: linear, quadratic and bi-quadratic"
-msgstr ""
-
-# 800aafe01e504ac4a445ed1daac9d5b4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:19
-msgid "Quadrangle: linear, quadratic and bi-quadratic"
-msgstr ""
-
-# e6fc703e57404d77ab85798ac02894be
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:23
-msgid "Polygon: linear and quadratic"
-msgstr ""
-
-# 81e9425d74ae48d6a3ebc41b6cd7ffc4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:27
-msgid "Tetrahedron: linear and quadratic"
-msgstr ""
-
-# b9a391223bd140ea93750191c3571353
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:31
-msgid "Hexahedron: linear, quadratic and tri-quadratic"
-msgstr ""
-
-# 52e941ab57c84d189bbfe581b827deb6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:35
-msgid "Pentahedron: linear and quadratic"
-msgstr ""
-
-# dee6d00802fd40d3aff3809035f795d1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:39
-msgid "Pyramid: linear and quadratic"
-msgstr ""
-
-# d68ca0fe106744ccbf4558512d170341
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:43
-msgid "Hexagonal prism"
-msgstr ""
-
-# 8cfa36e50a2f4d2c9a5a7c127610ff66
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:64
-msgid "Polyhedron is defined by"
-msgstr ""
-
-# 2f02aa9e96ec42c4a8d6bd7807c29b45
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:47
-msgid "a sequence of nodes defining all facets"
-msgstr ""
-
-# 8217a88659df44468bd5a3704f8d0593
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:48
-msgid "a sequence of number of nodes per facet"
-msgstr ""
-
-# 4fc8f1edb7ef425bb5ffe7aa3a421d7d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:50
-msgid ""
-"**Nodes**: Node1_of_Facet1, Node2_of_Facet1, ..., NodeN_of_Facet1, "
-"Node1_of_Facet2, Node2_of_Facet2, ..., NodeN_of_Facet2, Node1_of_FacetM, "
-"Node2_of_FacetM, ..., NodeN_of_FacetM"
-msgstr ""
-
-# e8077aac24b74221871679bd284551d2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:55
-msgid ""
-"**Quantity** of nodes per facet: NbNodes_in_Facet1, NbNodes_in_Facet2, "
-"..., NbNodes_in_FacetM"
-msgstr ""
-
-# 0710dc23cbe244a7bc6e9d9c13477ef9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:58
-msgid ""
-"For example the polyhedron shown in the image below is defined by nodes ["
-" 1,2,3, 1,4,5,2, 2,5,6,3, 3,6,4,1, 4,7,9,5, 5,9,8,6, 6,8,7,4, 7,8,9 ] and"
-" quantities [ 3, 4, 4, 4, 4, 4, 4, 3 ]"
-msgstr ""
-
-# d98803aeeded42439f1e54fe5a83db64
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/connectivity.rst:65
-msgid "Order of nodes of a facet must assure outward direction of its normal."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/constructing_meshes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/constructing_meshes.po
deleted file mode 100644 (file)
index 6664de1..0000000
+++ /dev/null
@@ -1,819 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 35a6bce1095b465fabb44dde0652f678
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:5
-msgid "Constructing meshes"
-msgstr ""
-
-# 6799ee6badd440f88c4d2609a7a06b25
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:7
-msgid ""
-"To create a mesh on geometry, it is necessary to create a mesh object by "
-"choosing"
-msgstr ""
-
-# 8f06bf03ed5e458782b05086b05406fe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:9
-msgid "a geometrical shape produced in the Geometry module (*main shape*);"
-msgstr ""
-
-# 27fc703367ec47c9b3543de9a457d851
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:12
-msgid "*meshing parameters*, including"
-msgstr ""
-
-# 117c209f24f3493b990791363a4ff7a0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:11
-msgid ":ref:`basic_meshing_algos_page` and"
-msgstr ""
-
-# 9aefbc3f841d49908a17917248299c9d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:12
-msgid ""
-":ref:`about_hypo_page` specifying constraints to be taken into account by"
-" the chosen meshing algorithms."
-msgstr ""
-
-# 66d9db4d76a2413fb9252948963441c7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:14
-msgid ""
-"Then you can launch mesh generation by invoking :ref:`compute_anchor` "
-"command. The generated mesh will be automatically shown in the Viewer. "
-"You can switch off automatic visualization or limit mesh size until which"
-" it is automatically shown in :ref:`mesh_preferences_page` (**Automatic "
-"update** entry)."
-msgstr ""
-
-# 031fef73322d4036bec803d06c213857
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:20
-msgid ""
-"Sometimes *hypotheses* term is used to refer to both algorithms and "
-"hypotheses."
-msgstr ""
-
-# 5b1b5a16624b43aaabf130e214850262
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:22
-msgid ""
-"Mesh generation on the geometry is performed in the bottom-up flow: nodes"
-" on vertices are created first, then edges are divided into segments "
-"using nodes on vertices; the nodes of segments are then used to mesh "
-"faces; then the nodes of faces are used to mesh solids. This "
-"automatically assures the conformity of the mesh."
-msgstr ""
-
-# 01a7a1179d7242489aade2846022bb0c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:28
-msgid ""
-"It is required to choose a meshing algorithm for every dimension of sub-"
-"shapes up to the highest dimension to be generated. Note that some "
-"algorithms generate elements of several dimensions, and others of only "
-"one. It is not necessary to define meshing parameters for all dimensions "
-"at once; you can start from 1D meshing parameters only, compute the 1D "
-"mesh, then define 2D meshing parameters and compute the 2D mesh (note "
-"that 1D mesh will not be re-computed)."
-msgstr ""
-
-# db1f1b20a38c4773b327e70c23e7fa87
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:37
-msgid ""
-"An algorithm of a certain dimension chosen at mesh creation is applied to"
-" discretize every sub-shape of this dimension. It is possible to specify "
-"a different algorithm or hypothesis to be applied to one or a group of "
-"sub-shapes by creating a :ref:`constructing_submeshes_page`. You can "
-"specify no algorithms at all at mesh object creation and specify the "
-"meshing parameters on sub-meshes only; then only the sub-shapes, for "
-"which an algorithm and a hypothesis (if any) have been defined will be "
-"discretized."
-msgstr ""
-
-# 1cc36153af4b41c2b2e40dcdf79074fc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:46
-msgid ""
-"Construction of a mesh on a geometry includes at least two "
-"(:ref:`create_mesh_anchor` and :ref:`compute_anchor`) of the following "
-"steps:"
-msgstr ""
-
-# 3a3ed77dbdc24aea8491fcdf18e36e4f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:48
-msgid ""
-":ref:`create_mesh_anchor`, where you can specify meshing parameters to "
-"apply to all sub-shapes of the main shape."
-msgstr ""
-
-# 17d14027f31f4503bafb86c3addeba89
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:49
-msgid ""
-":ref:`constructing_submeshes_page`, (optional) where you can specify "
-"meshing parameters to apply to the selected sub-shapes."
-msgstr ""
-
-# 66722c0909e847459028d210bd99ac98
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:50
-msgid ""
-":ref:`evaluate_anchor` (optional) can be used to know an approximate "
-"number of elements before their actual generation."
-msgstr ""
-
-# 2297f50a14754737bb784d905947b5a6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:51
-msgid ""
-":ref:`preview_anchor` (optional) can be used to generate mesh of only "
-"lower dimension(s) in order to visually estimate it before full mesh "
-"generation, which can be much longer."
-msgstr ""
-
-# 3b4674e6440e48a183b41e5feb5b3881
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:52
-msgid ""
-":ref:`submesh_order_anchor` (optional) can be useful if there are "
-"concurrent sub-meshes defined."
-msgstr ""
-
-# 1fa25cbc35584fd886fea4763c4c72f2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:53
-msgid ""
-":ref:`compute_anchor` uses defined meshing parameters to generate mesh "
-"elements."
-msgstr ""
-
-# 45e6866d043e48a8930fe2ace94ed287
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:54
-msgid ""
-":ref:`edit_anchor` (optional) can be used to :ref:`modifying_meshes_page`"
-" the mesh of a lower dimension before :ref:`compute_anchor` elements of "
-"an upper dimension."
-msgstr ""
-
-# 520242a7013c4dd78c6e7772ca553008
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:60
-msgid "Creation of a mesh object"
-msgstr ""
-
-# 9ac62efda06c462199e0bb84bad38740
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:62
-msgid "**To construct a mesh:**"
-msgstr ""
-
-# 7bb8b082000840e3ae1bbf00611dcf19
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:64
-msgid "Select a geometrical object for meshing."
-msgstr ""
-
-# 884454ebff044f98b7f6a815d0ef5ad4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:65
-msgid ""
-"In the **Mesh** menu select **Create Mesh** or click **\"Create Mesh\"** "
-"button in the toolbar."
-msgstr ""
-
-# dfd67b2436424371903f4028dc636ecd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:73
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# 3215a25a328e43cea0c717ed5af5a1eb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:78
-msgid ""
-"To filter off irrelevant meshing algorithms, you can select **Mesh Type**"
-" in the corresponding list from **Any, Hexahedral, Tetrahedral, "
-"Triangular** and **Quadrilateral** (there can be less items for the "
-"geometry of lower dimensions). Selection of a mesh type hides all meshing"
-" algorithms that cannot generate elements of this type."
-msgstr ""
-
-# 91421ed52fd34f79b3eb4949a699a357
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:80
-msgid ""
-"Apply :ref:`basic_meshing_algos_page` and :ref:`about_hypo_page` which "
-"will be used to compute this mesh."
-msgstr ""
-
-# b04311b3ce03402da2227e8a2aeb22cb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:82
-msgid ""
-"\"Create mesh\" dialog box contains several tab pages titled **3D**, "
-"**2D**, **1D** and **0D**. The title of each page reflects the dimension "
-"of the sub-shapes the algorithms listed on this page affect and the "
-"maximal dimension of elements the algorithms generate. For example, "
-"**3D** page lists the algorithms that affect 3D sub-shapes (solids) and "
-"generate 3D mesh elements (tetrahedra, hexahedra etc.)"
-msgstr ""
-
-# a1cd5bdf6585476aa808f1365c919d1b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:84
-msgid ""
-"As soon as you have selected an algorithm, you can create a hypothesis "
-"(or select an already created one). A set of accessible hypotheses "
-"includes only the hypotheses that can be used by the selected algorithm."
-msgstr ""
-
-# b7da1d8d2df0427b8e8a42a3ac4cb43b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:87
-msgid ""
-"Some page(s) can be disabled if the geometrical object does not include "
-"shapes (sub-shapes) of the corresponding dimension(s). For example, if "
-"the input object is a geometrical face, **3D** page is disabled."
-msgstr ""
-
-# f8d6c54b422d437385cdf39ea7ff66b7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:88
-msgid ""
-"Some algorithms affect the geometry of several dimensions, i.e. 1D+2D or "
-"1D+2D+3D. If such an algorithm is selected, the dialog pages related to "
-"the corresponding lower dimensions are disabled."
-msgstr ""
-
-# bae8798576284526a61201c4b3bc4852
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:89
-msgid ""
-"**0D** page refers to 0D geometry (vertices) rather than to 0D elements. "
-"Mesh module does not provide algorithms that produce 0D elements. "
-"Currently **0D** page provides only one algorithm \"Segments around "
-"vertex\" that allows specifying the required size of mesh edges about the"
-" selected vertex (or vertices)."
-msgstr ""
-
-# 6d786dbce4a34dd8a8f4c55d29447059
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:91
-msgid "For example, you need to mesh a 3D object."
-msgstr ""
-
-# acc400d18f4d4e3e8233d3ba4c7ee40c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:98
-msgid ""
-"First, you can change a default name of your mesh in the **Name** box. "
-"Then check that the selected geometrical object indicated in **Geometry**"
-" field, is what you wish to mesh; if not, select the correct object in "
-"the Object Browser. Click \"Select\" button near **Geometry** field if "
-"the name of the object has not yet appeared in **Geometry** field."
-msgstr ""
-
-# b3d6b94bf1854d908d55066eff4793c0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:105
-msgid ""
-"Now you can define 3D Algorithm and 3D Hypotheses, which will be applied "
-"to discretize the solids of your geometrical object using 3D elements. "
-"Click the **\"Add Hypothesis\"** button to create  and add a hypothesis."
-msgstr ""
-
-# 43aad14857134ff694b57418c2b9c553
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:107
-msgid "Click the **\"Plus\"** button to enable adding more additional hypotheses."
-msgstr ""
-
-# 81bfbd32aedb4c9fa4f4866c44941d47
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:114
-msgid ""
-"Click the **\"Edit Hypothesis\"** button to change the values for the "
-"current hypothesis."
-msgstr ""
-
-# 3cf1d63b1511452a937f0afe68fc74cd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:116
-msgid ""
-"Most 2D and 3D algorithms can work without hypotheses using default "
-"meshing parameters. Some algorithms do not require any hypotheses. After "
-"selection of an algorithm \"Hypothesis\" field of the dialog can contain:"
-msgstr ""
-
-# e64c32c9aa484aad89b33cedd41b535e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:118
-msgid "**\\<Default\\>** if the algorithm can work using default parameters."
-msgstr ""
-
-# 837bde06cd3b4edda687a8ee03988eff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:119
-msgid ""
-"**\\<None\\>** if the algorithm requires a hypothesis defining its "
-"parameters."
-msgstr ""
-
-# 167fb1f44282436aae9e8168a8d2fc92
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:120
-msgid "If the algorithm does not use hypotheses, this field is grayed."
-msgstr ""
-
-# 0eb15e737c2c4807afc1db58d94f31ad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:122
-msgid "After selection of an algorithm **Add. Hypothesis** field can contain:"
-msgstr ""
-
-# 7c6acd80061c47aa82b914f790c43b50
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:124
-msgid ""
-"**\\<None\\>** if the algorithm can be tuned using an additional "
-"hypothesis."
-msgstr ""
-
-# 3dbebd2338684d7a8ac7e931736488f4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:125
-msgid "If the algorithm does not use additional hypotheses, this field is grayed."
-msgstr ""
-
-# a7246cd9501342cc851a57f1225011a3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:128
-msgid ""
-"Proceed in the same way with 2D and 1D Algorithms and Hypotheses that "
-"will be used to mesh faces and edges of your geometry. (Note that any "
-"object has edges, even if their existence is not apparent, for example, a"
-" sphere has 4 edges). Note that the choice of hypotheses and lower "
-"dimension algorithms depends on the higher dimension algorithm."
-msgstr ""
-
-# 8ead53be1024488e847e532a9476d06b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:130
-msgid ""
-"If you wish you can select other algorithms and/or hypotheses for meshing"
-" some sub-shapes of your CAD model by :ref:`constructing_submeshes_page`."
-msgstr ""
-
-# 396d01fdc08d473287f072274be2a413
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:132
-msgid ""
-"Some algorithms generate mesh of several dimensions, while others produce"
-" mesh of only one dimension. In the latter case there must be one "
-"Algorithm and zero or several Hypotheses for each dimension of your "
-"object, otherwise you will not get any mesh at all. Of course, if you "
-"wish to mesh a face, which is a 2D object, you do not need to define a 3D"
-" Algorithm and Hypotheses."
-msgstr ""
-
-# ea9666bc33b04d11885e95f751aa40e1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:134
-msgid ""
-"In the **Object Browser** the structure of the new mesh is displayed as "
-"follows:"
-msgstr ""
-
-# f7ac7badac6842f79434fcaa9791f7cf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:139
-msgid "It contains:"
-msgstr ""
-
-# fb3397d4abdb4b78859a81410ffee107
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:141
-msgid "a mesh name (**Mesh_mechanic**);"
-msgstr ""
-
-# 1167ac91887746d2bcab140eb8280f97
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:142
-msgid ""
-"a reference to the geometrical object on the basis of which the mesh has "
-"been constructed (*mechanic*);"
-msgstr ""
-
-# 799d3cc185da4b879bccc4b7f993f12d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:143
-msgid ""
-"**Applied hypotheses** folder containing the references to the hypotheses"
-" chosen at the construction of the mesh;"
-msgstr ""
-
-# 893ccebd1d654ddab671c14b92fca974
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:144
-msgid ""
-"**Applied algorithms** folder containing the references to the algorithms"
-" chosen at the construction of the mesh."
-msgstr ""
-
-# c04a128f95144a5885051b9ea865e54f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:145
-msgid ""
-"**SubMeshes on Face** folder containing the sub-meshes defined on "
-"geometrical faces. There also can be folders for sub-meshes on vertices, "
-"edges, wires, shells, solids and compounds."
-msgstr ""
-
-# dff4c4a8948a442499340b64b19b1221
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:146
-msgid ""
-"**Groups of Faces** folder containing the groups of mesh faces. There "
-"also can be folders for groups of nodes, edges, volumes 0D elements and "
-"balls."
-msgstr ""
-
-# 02316e8c5f54451bbbb1f692ca13778a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:149
-msgid ""
-"There is an alternative way to assign Algorithms and Hypotheses by "
-"clicking **Assign a set of hypotheses** button and selecting among pre-"
-"defined sets of algorithms and hypotheses. In addition to the built-in "
-"sets of hypotheses, it is possible to create custom sets by editing "
-"CustomMeshers.xml file located in the home directory. CustomMeshers.xml "
-"file must describe sets of hypotheses in the same way as "
-"${SMESH_ROOT_DIR}/share/salome/resources/smesh/StdMeshers.xml file does "
-"(sets of hypotheses are enclosed between \\<hypotheses-set-group\\> "
-"tags). For example: ::"
-msgstr ""
-
-# aeef8be810624f59be9f0d7834858269
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:162
-msgid ""
-"If the file contents are incorrect, there can be an error at activation "
-"of Mesh module: **\"fatal parsing error: error triggered by consumer in "
-"line ...\"**"
-msgstr ""
-
-# e229cf9561124f7fafba9ae4637112a9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:167
-msgid ""
-"List of sets of hypotheses. Tag **[custom]** is automatically added to "
-"the sets defined by the user."
-msgstr ""
-
-# a839bd695c4f4ffc8d7972e4eb743455
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:170
-msgid ""
-"*\"Automatic\"* in the names of predefined sets of hypotheses does not "
-"actually mean that they are suitable for meshing any geometry."
-msgstr ""
-
-# 10c50356cf44475cad554d56daebf771
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:171
-msgid ""
-"The list of sets of hypotheses can be shorter than in the above image "
-"depending on the geometry dimension."
-msgstr ""
-
-# d41cb527e2bc4fe9a5b9a782bf9775c1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:174
-msgid ""
-"Consider trying a sample script for construction of a mesh from our "
-":ref:`tui_creating_meshes_page` section."
-msgstr ""
-
-# 35525ecb30bd46fa9e42928143f8ced0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:179
-msgid "Evaluating mesh size"
-msgstr ""
-
-# 51368d5040804dc4b7927584b827f197
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:181
-msgid ""
-"After the mesh object is created and all hypotheses are assigned and "
-"before :ref:`compute_anchor` operation, it is possible to calculate the "
-"eventual mesh size. For this, select the mesh in the **Object Browser** "
-"and from the **Mesh** menu select **Evaluate**. The result of evaluation "
-"will be displayed in the following information box:"
-msgstr ""
-
-# 1fa07ee04a024eba9a896ddac279c8ac
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:190
-msgid "Previewing the mesh"
-msgstr ""
-
-# 77c3ec771e6b491aa62e6df1bab0215b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:192
-msgid ""
-"Before :ref:`compute_anchor` , it is also possible to see the mesh "
-"preview. This operation allows to incrementally compute the mesh, "
-"dimension by dimension, and to discard an unsatisfactory mesh."
-msgstr ""
-
-# 02eb9a3faafb465395536def97113eff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:194
-msgid ""
-"For this, select the mesh in the Object Browser. From the **Mesh** menu "
-"select **Preview** or click \"Preview\" button in the toolbar or activate"
-" \"Preview\" item from the pop-up menu."
-msgstr ""
-
-# cae5eac0aaa24cb0bc9edbaf677889b1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:202
-msgid "Select **1D mesh** or **2D mesh** preview mode in the Preview dialog."
-msgstr ""
-
-# 430d6d6c0f784909874e9c95c8f9ceb8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:218
-msgid "**Compute** button computes the whole mesh."
-msgstr ""
-
-# d5edccc13ca343c49e62430cbccb1903
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:220
-msgid ""
-"When the Preview dialog is closed, the question about the storage of "
-"temporarily created mesh elements appears:"
-msgstr ""
-
-# 2a13fbef304843fca5b33f991891a670
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:225
-msgid "These elements can be kept in the mesh."
-msgstr ""
-
-# a1e92798cd1f4a54b8ea76440e8cdf63
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:231
-msgid "Changing sub-mesh priority"
-msgstr ""
-
-# 004d8f83536b4c54b3738d0d87bb1867
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:233
-msgid ""
-"If the mesh contains concurrent :ref:`constructing_submeshes_page`, it is"
-" possible to change the priority of their computation, i.e. to change the"
-" priority of applying algorithms to the shared sub-shapes of the Mesh "
-"shape."
-msgstr ""
-
-# 75c42caf0e8043dcb989055191e9b406
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:235
-msgid "**To change sub-mesh priority:**"
-msgstr ""
-
-# 41e08c22f2524e14917e99a55da724af
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:237
-msgid ""
-"Choose \"Change sub-mesh priority\" from the Mesh menu or a pop-up menu. "
-"The opened dialog shows a list of sub-meshes in the order of their "
-"priority."
-msgstr ""
-
-# 54a55c30130e4ffeb0c17abe8ad883e5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:239
-msgid ""
-"There is an example of sub-mesh order modifications taking a Mesh created"
-" on a Box shape. The main Mesh object:"
-msgstr ""
-
-# a09339ed609242588c4e1e2e6698dfb4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:241
-msgid "*1D* **Wire discretisation** with **Number of Segments** =20"
-msgstr ""
-
-# 223a2036b61245b9a74d39e766c41171
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:242
-msgid "*2D* **Triangle: Mefisto** with Hypothesis **Max Element Area**"
-msgstr ""
-
-# af68c57a6c6541e4a5ee565e61ce82a8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:245
-msgid "The first sub-mesh **Submesh_1** created on **Face_1** is:"
-msgstr ""
-
-# 4191031e23f540e09498f3254a4d2fe5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:247
-msgid "*1D* **Wire discretisation** with **Number of Segments** =4"
-msgstr ""
-
-# 6370ac3a9fb84887b43f8a67bc8af0ae
-# 6d3a07784a6b42609cb8a8d5e067a24b
-# fb1de1eb32ee44638f5eab58a8312570
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:248
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:253
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:259
-msgid "*2D* **Triangle: Mefisto** with Hypothesis **MaxElementArea** =1200"
-msgstr ""
-
-# dae60f1eb8924fd19c98131c2b68967a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:250
-msgid "The second sub-mesh **Submesh_2** created on **Face_2** is:"
-msgstr ""
-
-# 6f7d66913e8846d2820e54b67b2ff311
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:252
-msgid "*1D* **Wire discretisation** with **Number of Segments** =8"
-msgstr ""
-
-# 0075cb1b57944449b460c5cbd84c8462
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:256
-msgid "And the last sub-mesh **Submesh_3** created on **Face_3** is:"
-msgstr ""
-
-# f320f5e7c50e46a6a3e8d991c71b4b05
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:258
-msgid "*1D* **Wire discretisation** with **Number of Segments** =12"
-msgstr ""
-
-# f3f15a180c4a4451a51b242d0471adc8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:262
-msgid ""
-"The sub-meshes become concurrent if they share sub-shapes that can be "
-"meshed with different algorithms (or different hypotheses). In the "
-"example, we have three sub-meshes with concurrent algorithms, because "
-"they have different hypotheses."
-msgstr ""
-
-# 879b05bdc25147548a35291dddc94263
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:264
-msgid "The first mesh computation is made with:"
-msgstr ""
-
-# 53ebc41a65514158af854ea7f525f409
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:279
-msgid "The next mesh computation is made with:"
-msgstr ""
-
-# 629461484abc4517b3a0972549a04cfc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:293
-msgid "And the last mesh computation is made with:"
-msgstr ""
-
-# d0f18c41144744baa9b41f3e2753ddb4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:308
-msgid ""
-"As we can see, each mesh computation has a different number of result "
-"elements and a different mesh discretization on the shared edges (the "
-"edges that are shared between **Face_1**, **Face_2** and **Face_3**)"
-msgstr ""
-
-# 5f57089459974700b9daaa0862b11370
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:312
-msgid ""
-"Additionally, sub-mesh priority (the order of applied algorithms) can be "
-"modified not only in a separate dialog box, but also in the **Preview**. "
-"This helps to preview different mesh results, modifying the order of sub-"
-"meshes."
-msgstr ""
-
-# 22f246ae649948639a3e6371b8288185
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:323
-msgid ""
-"If there are no concurrent sub-meshes under the Mesh object, the user "
-"will see the following information."
-msgstr ""
-
-# bd0286f95d4c43eab2cad76e77ebc982
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:336
-msgid "Computing the mesh"
-msgstr ""
-
-# fadce4968b754a0f9a41afeb7cb48573
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:338
-msgid ""
-"It is equally possible to skip  :ref:`evaluate_anchor` and "
-":ref:`preview_anchor` and to **Compute** the mesh after the hypotheses "
-"are assigned. For this, select your mesh in the **Object Browser**. From "
-"the **Mesh** menu or the context menu select **Compute** or click "
-"*\"Compute\"* button of the toolbar."
-msgstr ""
-
-# 0cc9e0020d0742d380060bc06afdc520
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:350
-msgid ""
-"After the mesh computation finishes, the Mesh Computation information box"
-" appears. If you close this box and click \"Compute\" button again, "
-"without previously changing meshing parameters, the mesh will NOT be re-"
-"computed and the Mesh Computation information box will be shown with the "
-"same contents. (To fully re-compute the mesh, invoke "
-":ref:`clear_mesh_anchor` command before)."
-msgstr ""
-
-# 6a2a4ad2643e4d949abd363984f0c0bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:360
-msgid "Meshing Results"
-msgstr ""
-
-# b93b73178564476197eea31627301e35
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:362
-msgid ""
-"If the mesh computation has been a success, the box shows information on "
-"the number of entities of different types in the mesh."
-msgstr ""
-
-# e04fbcc854d94f908dffc46beb04e701
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:370
-msgid "Meshing Failed"
-msgstr ""
-
-# 4212b5c23b1b43dfa0a5a8c4f6ea080a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:372
-msgid ""
-"If the mesh computation has failed, the information about the cause of "
-"the failure is provided in **Errors** table."
-msgstr ""
-
-# 6fdec30e41954175a4a96b60453ae773
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:377
-msgid ""
-"After you select an error in **Errors** table, **Show Sub-shape** button "
-"allows visualizing in magenta the geometrical entity meshing of which "
-"failed (Name of this entity or its ID and type is shown in *Sub-shape* "
-"column)."
-msgstr ""
-
-# 56bdf662a9ba4f9d9b02eeaf5b7e6319
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:387
-msgid ""
-"**Publish Sub-shape** button publishes the sub-shape, whose meshing has "
-"failed, in the Geometry component as a child of the main shape, which "
-"allows analyzing the problematic geometry and creating a sub-mesh on it "
-"in order to locally tune the hypotheses."
-msgstr ""
-
-# 12dd5ffbce32416fb376edbbc2459e28
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:392
-msgid ""
-"If the failure is caused by an invalid input mesh and the algorithm has "
-"found which mesh entities are bad, **Show bad Mesh** button appears in "
-"the dialog. Clicked, it shows the bad mesh entities in the Viewer in "
-"magenta. Sometimes the shown mesh entities are too small or/and hidden by"
-" other mesh elements. They can be seen after switching the mesh to "
-"Wireframe visualization mode or switching off the visualization of faces "
-"and volumes (if any)."
-msgstr ""
-
-# 9668bc680047467ebfa64d8a99edf715
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:400
-msgid ""
-"**Bad Mesh to Group** button creates groups of bad mesh entities to "
-"facilitate their analysis."
-msgstr ""
-
-# 3750b205e07d49ae946cd1ee904de0cf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:405
-msgid ""
-"Edges bounding a hole in the surface are shown in magenta using **Show "
-"bad Mesh** button"
-msgstr ""
-
-# cf8d66c5929c4fa3953306bf91e563c6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:408
-msgid ""
-"Mesh Computation Information box does not appear if you set "
-":ref:`show_comp_result_pref` preference to the \"Never\" value. This "
-"option gives the possibility to control mesh computation reporting. There"
-" are the following possibilities: always show the information box, show "
-"only if an error occurs or never. By default, the information box is "
-"always shown after mesh computation operation."
-msgstr ""
-
-# e498ca4e2a6848f99d7f37d6bc44857c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:413
-msgid "Editing the mesh"
-msgstr ""
-
-# 6a0b3dfdd3764cba94d01c7854ac28ac
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:415
-msgid ""
-"It is possible to :ref:`modifying_meshes_page` of a lower dimension "
-"before generation of the mesh of a higher dimension."
-msgstr ""
-
-# 5cfa5a1b73a247d4a450281973d2e37e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:418
-msgid ""
-"For example you can generate a 2D mesh, modify it using e.g. "
-":ref:`pattern_mapping_page`, and then generate a 3D mesh basing on the "
-"modified 2D mesh. The workflow is as follows:"
-msgstr ""
-
-# d0c505f4dc734c5bb42b132969cac374
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:420
-msgid "Define 1D and 2D meshing algorithms."
-msgstr ""
-
-# 58f9803c1a464650b1a217f141cc9020
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:421
-msgid "Compute the mesh. 2D mesh is generated."
-msgstr ""
-
-# f9ed216a02de432d97a491a91dfded16
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:422
-msgid "Apply :ref:`pattern_mapping_page`."
-msgstr ""
-
-# 164f7a63410043e2a98fa695d64d7025
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:423
-msgid ""
-"Define 3D meshing algorithms without modifying 1D and 2D algorithms and "
-"hypotheses."
-msgstr ""
-
-# c02d8786afe94ddc941f3db9b97013c4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:424
-msgid "Compute the mesh. 3D mesh is generated."
-msgstr ""
-
-# 0b39821ac1664579bc0a71abb488d558
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:427
-msgid ""
-"Nodes and elements added :ref:`adding_nodes_and_elements_page` cannot be "
-"used in this workflow because the manually created entities are not "
-"attached to any geometry and thus (usually) cannot be found by the mesher"
-" paving a geometry."
-msgstr ""
-
-# f4c5d8f58ed44c5c94387fccac9eb6d6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_meshes.rst:429
-msgid ""
-"**See Also** a sample TUI Script demonstrates the possibility of "
-":ref:`tui_editing_while_meshing`."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/constructing_submeshes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/constructing_submeshes.po
deleted file mode 100644 (file)
index 85b7b52..0000000
+++ /dev/null
@@ -1,321 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 8dcecf5dd1c545e19147f8ccf3f4be58
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:5
-msgid "Constructing sub-meshes"
-msgstr ""
-
-# 6a506f87e68e48e5b7ea7b80010086de
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:0
-msgid "`Table of contents`"
-msgstr ""
-
-# 9092a8b32515476abde848cfc0ceb439
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:9
-msgid ""
-"By purpose, the sub-mesh is an object used to assign to a sub-shape "
-"different meshing parameters than those assigned to the main shape."
-msgstr ""
-
-# 0ee4acaa2bee42f6b8b3d7c4e68487ae
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:12
-msgid ""
-"Structurally, the sub-mesh is a mesh on a certain sub-shape, or a group "
-"of sub-shapes, possibly generated using different meshing algorithms "
-"and/or hypotheses than those used to generate the mesh on other sub-"
-"shapes."
-msgstr ""
-
-# a1ef92f87bf14e65ad3cedce5de22b00
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:17
-msgid ""
-"Creation of a sub-mesh allows to control individually meshing of a "
-"certain sub-shape, thus to get a locally coarser or finer mesh, to get "
-"elements of different types in the same mesh, etc."
-msgstr ""
-
-# 07a309342d234494bbb4235098782816
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:21
-msgid ""
-"A sub-mesh can be meshed individually. To achieve this, select a sub-mesh"
-" and either invoke **Compute Sub-mesh** vai the contextual menu in the "
-"Object Browser or invoke **Mesh > Compute** menu."
-msgstr ""
-
-# 9a43a2135eb3491b9c31fb6428d18d3c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:28
-msgid "How to get a sub-shape for sub-mesh construction"
-msgstr ""
-
-# 0bb30079b4c746d88498b51858622f24
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:30
-msgid ""
-"A sub-shape to create a sub-mesh on should be retrieved from the main "
-"shape in one of the following ways:"
-msgstr ""
-
-# 645bdeb400054a1c99a3604a20aa3369
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:33
-msgid "In Geometry module, via **New Entity > Explode** menu."
-msgstr ""
-
-# 7d3c9eca847f4aa395c002896d23ecac
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:34
-msgid ""
-"In Geometry module, by creation of a group (**New Entity > Group > Create"
-" Group** menu)."
-msgstr ""
-
-# 36f54e17062a477e867fc45a66074e7c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:35
-msgid ""
-"In Mesh module, by :ref:`subshape_by_mesh_elem` generated on a sub-shape "
-"of interest. This way is accessible if the mesh is already computed."
-msgstr ""
-
-# 94e83c99a6674985a9ed2f1f03d049d2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:36
-msgid ""
-"In Mesh module, by clicking **Publish Sub-shape** button in a dialog "
-"showing :ref:`meshing_failed_anchor`."
-msgstr ""
-
-# c2d5116a1495474b9fdc0d2830a70eb3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:42
-msgid "How hypotheses are selected among sub-meshes"
-msgstr ""
-
-# 208be946d3af4a4f8e7e1c9240b4511f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:44
-msgid ""
-"Internally, definition of meshing parameters to apply for discretization "
-"of a certain sub-shape, for example an edge of a compound of solids, "
-"starts from searching an algorithm, 1D as for the edge. The following "
-"sub-shapes are sequentially checked for presence of a sub-mesh where 1D "
-"algorithm is assigned:"
-msgstr ""
-
-# 554476f1034c4aacaac1b482fb64d3e3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:50
-msgid "the **edge** itself"
-msgstr ""
-
-# 944fe41bd1e941f78f84a485934e6265
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:51
-msgid "**groups of edges** containing the edge, if any"
-msgstr ""
-
-# 5c0913b3a7b442fb97490e9c84dcf059
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:52
-msgid "**wires** sharing the edge"
-msgstr ""
-
-# 22e406cc95824e26a54daaa69a53505c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:53
-msgid "**faces** sharing the edge"
-msgstr ""
-
-# b9fe4d05bde64b9ca29e2565c61f3c36
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:54
-msgid "**groups of faces** sharing the edge, if any"
-msgstr ""
-
-# 5bb54ee1fa174e20b062d17f0400b768
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:55
-msgid "**shells** sharing the edge"
-msgstr ""
-
-# dcaf3739ff2143a3a49f1f9ac3ff224e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:56
-msgid "**solids** sharing the edge"
-msgstr ""
-
-# 2c5e33f52d2048e48a3094420a361549
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:57
-msgid "**groups of solids** sharing the edge, if any"
-msgstr ""
-
-# a1e363cbd33244ad9f4d437db94f4967
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:58
-msgid "the **main shape**"
-msgstr ""
-
-# 4568223193074961bfbb99aca46ddc10
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:60
-msgid ""
-"(This sequence of sub-shapes defines the priority of sub-meshes. Thus "
-"more local, i.e. assigned to sub-shape of lower dimension, algorithms and"
-" hypotheses have higher priority during the search of hypotheses to "
-"apply.)"
-msgstr ""
-
-# e182833e02e642b6bc49abad0a6599da
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:65
-msgid ""
-"As soon as a 1D algorithm is found, the search stops and the same "
-"sequence of sub-shapes is checked to find the main and additional 1D "
-"hypotheses, which can be taken into account by the found 1D algorithm."
-msgstr ""
-
-# 7e0073bce488402484927894319d9062
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:69
-msgid ""
-"The multi-dimensional algorithms have a higher priority than uni-"
-"dimensional ones if they are assigned to sub-meshes of the same priority."
-msgstr ""
-
-# 9d39131c3a75497180864dce936d15ed
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:73
-msgid ""
-"If meshing parameters are defined on sub-meshes of the same priority, for"
-" example, different 1D hypotheses are assigned to two faces sharing an "
-"edge, the hypothesis assigned to a sub-shape with a lower ID will be used"
-" for meshing. You can :ref:`submesh_order_anchor` mutual priority of such"
-" concurrent sub-meshes."
-msgstr ""
-
-# a9fb3d57bf8240b1b5dba59ebbb5ff5d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:82
-msgid "How to construct a sub-mesh"
-msgstr ""
-
-# 44a1e0017c194945a7bd8fce1b79e2fb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:84
-msgid ""
-"Construction of a sub-mesh consists of: * Selecting a mesh which will "
-"encapsulate the sub-mesh * Selecting a sub-shape for meshing * Applying "
-"one or several :ref:`about_hypo_page` and :ref:`basic_meshing_algos_page`"
-" which will be used for discretization of this sub-shape."
-msgstr ""
-
-# 26bf66798e54426bba0c67e54f10cd9e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:90
-msgid ""
-"**To construct a sub-mesh:** From the **Mesh** menu select **Create Sub-"
-"mesh** or click **\"Create Sum-mesh\"** button in the toolbar."
-msgstr ""
-
-# e7dae80a8baa40a49d8435722a2520f4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:99
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# fe95d391d8f0472f95acb32614b037e0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:104
-msgid ""
-"It allows to define the **Name**, the parent **Mesh** and the "
-"**Geometry** (e.g. a face if the parent mesh has been built on box) of "
-"the sub-mesh. You can define meshing algorithms and hypotheses in the "
-"same way as in :ref:`constructing_meshes_page` dialog."
-msgstr ""
-
-# 47d9633bad064ecb8b5553aa565161b9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:106
-msgid ""
-"Later you can change the applied hypotheses or their parameters in "
-":ref:`editing_meshes_page` dialog. Mesh entities generated using changed "
-"hypotheses are automatically removed."
-msgstr ""
-
-# 935c4b2c834d4d98b3a2d2217f866043
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:111
-msgid "Subshape by mesh element"
-msgstr ""
-
-# 77f7de1583334f138b5f0b110ae7d51a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:113
-msgid ""
-"If the parent mesh is already computed, then you can define the "
-"**Geometry** by picking mesh elements computed on a sub-shape of interest"
-" in the 3D Viewer, i.e. you do not have to extract this sub-shape in "
-"Geometry module beforehand. To start element selection, press *Selection*"
-" button to the right of **Geometry** label. If this button is already "
-"down, then click it to release and then click it again. The following "
-"pop-up menu allowing to choose a way of geometry definition will appear."
-msgstr ""
-
-# 4c0c21e696c847999c8d837184fe4b4f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:118
-msgid ""
-"**Direct geometry selection** enables selecting the sub-shape in the "
-"Objec Browser. **Find geometry by mesh element selection** activates the "
-"following dialog."
-msgstr ""
-
-# bf06f2f5f21e459eb03cdbe983f5a4a7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:124
-msgid ""
-"In this dialog, **Element Type** defines a kind of element to pick in the"
-" Viewer. Instead of picking an element in the Viewer, you can type its ID"
-" in **Element ID** field. **Geometry name** field allows defining a name "
-"of the sub-shape, with which the sub-shape will appear in the Object "
-"Browser (if not yet there)."
-msgstr ""
-
-# 2b4738b5522c4e0c82797291770e76f2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:130
-msgid "Sub-mesh in the Object Browser"
-msgstr ""
-
-# 2ab4cc4af2cd419988c9bdb513d5bbc7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:132
-msgid ""
-"In the Object Browser the structure of the new sub-mesh will be displayed"
-" as follows:"
-msgstr ""
-
-# 84f4608ace094812a010ebc1e84b5d82
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:142
-msgid "It contains:"
-msgstr ""
-
-# 7d9cbfdf8cba4abfb1778fc5df746ff7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:138
-msgid "a sub-mesh name (*SubMeshFace1*)"
-msgstr ""
-
-# 92749880d92b40f188c986380776ff14
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:139
-msgid ""
-"a reference to the geometrical object on the basis of which the sub-mesh "
-"has been constructed (**Cylindrical Face_1**);"
-msgstr ""
-
-# b5aaa4b4a5f44ff985247f6517eb58b1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:140
-msgid ""
-"**Applied hypotheses** folder containing references to hypotheses "
-"assigned to the sub-mesh;"
-msgstr ""
-
-# c0e5a092c190496da996f8482ad11733
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:141
-msgid ""
-"**Applied algorithms** folder containing references to algorithms "
-"assigned to the sub-mesh."
-msgstr ""
-
-# fefc6a0043d24f1a9fcc14b8e8e031b7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/constructing_submeshes.rst:144
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_construction_submesh` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/convert_to_from_quadratic_mesh.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/convert_to_from_quadratic_mesh.po
deleted file mode 100644 (file)
index 0582e24..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 437a3b67c9b74dbeb3d875e7c0e8b1d4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:5
-msgid "Convert to/from Quadratic Mesh"
-msgstr ""
-
-# c001a095307b42058c85f22ceb9fe2ed
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:7
-msgid ""
-"This functionality allows transforming linear meshes (or sub-meshes) to "
-"quadratic and vice versa."
-msgstr ""
-
-# 0f85f2f27d3043d1adfaae24d89e5f06
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:10
-msgid ""
-"that conversion of a sub-mesh most probably will produce a non-conformal "
-"mesh. Elements on the boundary between quadratic and linear sub-meshes "
-"become (or remain) quadratic."
-msgstr ""
-
-# b529473bb5364b7b9b76ee74355b2c10
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:12
-msgid ""
-"See :ref:`adding_quadratic_elements_page` for more information about "
-"quadratic meshes."
-msgstr ""
-
-# b9b265c493d54d278f7f2ade025246c2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:14
-msgid "**To produce a conversion:**"
-msgstr ""
-
-# b7568e5f42ba4c0b98fda5b26036bc07
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:16
-msgid "Select a mesh or a sub-mesh in the Object Browser or in the Viewer."
-msgstr ""
-
-# 40d3bc8d12ed4c5e98f368db94916b52
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:17
-msgid ""
-"From the Modification menu or from the contextual menu in the Object "
-"Browser choose **Convert to/from Quadratic Mesh** item, or click "
-"**\"Convert to/from quadratic\"** button in the toolbar."
-msgstr ""
-
-# 5730d84d6bcb41c89c4817e13e541674
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:25
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# 55c98ecd42a84163931c4b731039438d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:30
-msgid "In this dialog box specify:"
-msgstr ""
-
-# f098a3dabcb24e3b97f890bddf872ee5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:32
-msgid ""
-"If it is necessary to convert a linear mesh to quadratic or a quadratic "
-"mesh to linear. **Convert to bi-quadratic** creates some types of "
-"quadratic elements with additional central nodes: TRIA7, QUAD9 and HEXA27"
-" elements instead of TRIA6, QUAD8, and HEXA20 elements respectively."
-msgstr ""
-
-# b8247159e5a34709a2e87fae094405a0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:33
-msgid ""
-"If it is necessary to place **medium nodes** of the quadratic mesh **on "
-"the geometry** (meshed shape). This option is relevant for conversion to "
-"quadratic provided that the mesh is based on a geometry (not imported "
-"from file)."
-msgstr ""
-
-# 825d7f71de5d48d28132a2499de90f29
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:49
-msgid "Click the **Apply** or **Apply and Close** button."
-msgstr ""
-
-# 992225f722ce406c8df8b165ff5fe521
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst:52
-msgid "**See Also** a sample TUI Script of a :ref:`tui_quadratic` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/copy_mesh.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/copy_mesh.po
deleted file mode 100644 (file)
index f434c5c..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# e7cd2a18c59c4648a1faaed666fd84b0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:5
-msgid "Copy Mesh"
-msgstr ""
-
-# cbc50f1b60a6483bb6e2e89bca786e62
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:7
-msgid "A mesh can be created by copying a part of or the whole other mesh."
-msgstr ""
-
-# 3781b11c6beb432c8d056ac6f6fcf99d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:9
-msgid "**To make a copy of a mesh:**"
-msgstr ""
-
-# 6e8c46cb80674215bbf3161c454f3661
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:11
-msgid ""
-"From the contextual menu in the Object Browser of from the **Mesh** menu "
-"select **Copy Mesh** or click **\"Copy Mesh\"** button in the toolbar."
-msgstr ""
-
-# 2bb71b2fbf554441aa9251c03c930ccb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:19
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# dabcb5bb2bef4d118b89bcd4a8dc0826
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:25
-msgid "In the dialog:"
-msgstr ""
-
-# 059682ffde4e4f088720752990795816
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:27
-msgid "specify the part of mesh to copy:"
-msgstr ""
-
-# 3f339c70213b4eeaa304464cf3db00a4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:29
-msgid ""
-"**Select whole mesh, sub-mesh or group** by mouse activating this "
-"checkbox; or"
-msgstr ""
-
-# 650efe9c14c74143a119a5ebf11a55f6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:30
-msgid ""
-"choose mesh elements with the mouse in the 3D Viewer. It is possible to "
-"select a whole area with a mouse frame; or"
-msgstr ""
-
-# 0358c0af28bb4938a6ac4b37c426ca12
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:31
-msgid ""
-"input the **Source Element IDs** directly in this field. The selected "
-"elements will be highlighted in the viewer; or"
-msgstr ""
-
-# 29ed8815de9b476b8e09e3e59d28fa46
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:32
-msgid ""
-"apply Filters. **Set filter** button allows to apply a filter to the "
-"selection of elements. See more about filters in the "
-":ref:`selection_filter_library_page` \"Selection filter library\" page."
-msgstr ""
-
-# 48cd5b14e17a4565bf59566249673382
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:34
-msgid "specify the **New Mesh Name**;"
-msgstr ""
-
-# f6122dd4855b4c228b945b0c2148dc6f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:35
-msgid "specify the conditions of copying:"
-msgstr ""
-
-# 5c5832137f004dfca00c8a4c2789b60e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:37
-msgid ""
-"activate **Generate groups** checkbox to copy the groups of the source "
-"mesh to the newly created mesh."
-msgstr ""
-
-# 9051de3d4349497fab059d46049e6a77
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:39
-msgid "Click **Apply** or **Apply and Close** button to confirm the operation."
-msgstr ""
-
-# 814e98a0b5f14d8f9aa10e9effedb459
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/copy_mesh.rst:42
-msgid "**See Also** a sample :ref:`tui_copy_mesh`."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/create_groups_from_geometry.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/create_groups_from_geometry.po
deleted file mode 100644 (file)
index fab7c45..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 0d6e06249e844e90a8496e29693c6ff2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst:5
-msgid "Create Groups from Geometry"
-msgstr ""
-
-# 8cc71365dcc747bc96ae9a3b535de3b2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst:7
-msgid ""
-"This operation allows creating groups on geometry on all selected shapes."
-" Only the main shape of the mesh and its sub-shapes can be selected."
-msgstr ""
-
-# 512e020e985b49aba22a17772ddeea52
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst:9
-msgid ""
-"The type of each new group is defined automatically by the nature of the "
-"**Geometry**. The group names will be the same as the names of "
-"geometrical objects."
-msgstr ""
-
-# de5b54e7574a4b909af8aca4d5a6515d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst:12
-msgid ""
-"It's impossible to create a group of **0D elements** or **ball elements**"
-" with this operation. For this, it is necessary to use "
-":ref:`creating_groups_page` operation."
-msgstr ""
-
-# ef8a182d030b4f7584d9e8fb5d3042d7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst:14
-msgid ""
-"To use this operation, select in the **Mesh** menu or in the contextual "
-"menu in the Object browser **Create Groups from Geometry** item."
-msgstr ""
-
-# 448911b29b4d485a81fc2410aacd2258
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst:19
-msgid ""
-"In this dialog **Elements** group contains a list of shapes, on which  "
-"groups of elements will be created; **Nodes** group contains a list of "
-"shapes, on which groups of nodes will be created."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/creating_groups.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/creating_groups.po
deleted file mode 100644 (file)
index f9830e7..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 7b54f64d1af4421d998f1fc6b018c4bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:5
-msgid "Creating groups"
-msgstr ""
-
-# 1a2bbb3796fe4d36a772b0c1923ab67e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:7
-msgid ""
-"In MESH you can create a :ref:`grouping_elements_page` of elements of a "
-"certain type. The main way to create a group, is to select in the "
-"**Mesh** menu **Create Group** item (also available in the context menu "
-"of the mesh). To create a group you should define the following:"
-msgstr ""
-
-# 9906a31c304346f0b167da2af922969a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:11
-msgid ""
-"**Mesh** - the mesh whose elements will form your group. You can select "
-"your mesh in the Objet Browser or in the 3D viewer."
-msgstr ""
-
-# 0643fcb5542c451190449bdcce19c077
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:17
-msgid ""
-"**Elements Type** - set of radio buttons allows to select the type of "
-"elements which will form your group:"
-msgstr ""
-
-# b669022b14074985840f2ec7a5f1b490
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:13
-msgid "**Nodes**"
-msgstr ""
-
-# 104815f6fcd6414cb630858f4aeb9155
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:14
-msgid "**0D Element**"
-msgstr ""
-
-# 16f9f2ac46844060b018663a48b0f49a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:15
-msgid "**Ball**"
-msgstr ""
-
-# d772a17c8bb7406b827b0d9986fd7760
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:16
-msgid "**Edges**"
-msgstr ""
-
-# a97b302e3d624ceb942cf29c101131a9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:17
-msgid "**Faces**"
-msgstr ""
-
-# 9e041daf0b254f09bead8e8505ccef71
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:18
-msgid "**Volumes**"
-msgstr ""
-
-# 82fcee6546ea49dea69dbd66206fd1ff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:19
-msgid "**Name** field allows to enter the name of your new group."
-msgstr ""
-
-# 009935b2e04e48be983cb6ee60d2ebf6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:20
-msgid ""
-"**Color** - allows to assign to the group a certain color. The chosen "
-"color is used to display the elements of the group. Activation of **Auto "
-"Color** item in mesh context menu switches on a random choice of a color "
-"for a new group."
-msgstr ""
-
-# 29f02f4147ad4112a5b0f9cf1725c2d3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:22
-msgid ""
-"Mesh module distinguishes between the three Group types: **Standalone "
-"Group**, **Group on Geometry** and **Group on Filter**."
-msgstr ""
-
-# aa77de8a33a44e7c8a05f8be00a8848d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:29
-msgid "\"Standalone Group\""
-msgstr ""
-
-# d28e986c4d66428ab7b6b1bbd28be910
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:31
-msgid ""
-"**Standalone Group** contains a list of mesh elements, which you can "
-"define in the following ways:"
-msgstr ""
-
-# e2a1743ffc8049499f82e8c5a3b866f4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:34
-msgid ""
-"By adding all entities of the chosen type existing in the mesh. For this,"
-" turn on the **Select All** check-box. In this mode all controls, which "
-"allow selecting the entities, are disabled."
-msgstr ""
-
-# 0839d03f970444c09025c467b4eb225f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:35
-msgid ""
-"By choosing entities manually with the mouse in the 3D Viewer. For this, "
-"turn on the **Enable manual edition** check box. You can click on an "
-"element in the 3D viewer and it will be highlighted. After that click the"
-" **Add** button and the ID of this element will be added to the list. The"
-" **Set filter** button allows to define the filter for selection of the "
-"elements for your group. See more about filters on the "
-":ref:`selection_filter_library_page` \"Selection filter library\" page."
-msgstr ""
-
-# 0070179b410344168305ec4f8297e9c9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:36
-msgid ""
-"By adding entities from either a sub-mesh or another group. For this, "
-"turn on the **Enable manual edition** check box. **Select from** fields "
-"group allows to select a sub-mesh or a group of the appropriate type and "
-"to **Add** their elements to the group."
-msgstr ""
-
-# a57d5e61ea084870a8bfce92c9c4c736
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:38
-msgid "In the **manual edition** mode you can"
-msgstr ""
-
-# c9d0e77cb7f343aebac268ab97ef13aa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:40
-msgid "click the **Remove** button to remove the selected items from the list."
-msgstr ""
-
-# 306bfea381614c17bb72e986779f6041
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:41
-msgid "click the **Sort List** button to sort the list of IDs of mesh elements."
-msgstr ""
-
-# e1dba82ca6c248abb9294aac985e0d31
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:46
-msgid ""
-"For example, to create a new group containing all faces of an existing "
-"group and some other faces selected in the viewer:"
-msgstr ""
-
-# ad44ce3ae9b84418b4e492c929ad93ff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:48
-msgid "Select the **Face** type of entities and input the name of the new group."
-msgstr ""
-
-# be572ffdc7934e85b5ebff340ff36f1a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:49
-msgid "Check the **Group** checkbox in **Select From** group."
-msgstr ""
-
-# 1e06ee64a1754bdd90d04beda8118a1a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:50
-msgid "Select the existing group of faces in the object browser or in the viewer."
-msgstr ""
-
-# 406b703bb7bd47d1b54e34c831d6cf51
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:51
-msgid ""
-"Click **Add** in **Content** group. **Id Elements** list will be filled "
-"with IDs of faces belonging to the selected group."
-msgstr ""
-
-# e8d5b9afe2b04a98b8e72e7773e65984
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:52
-msgid "Select other faces in the viewer."
-msgstr ""
-
-# 3b66eb0e9b284d11a31073d912ce7ea2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:53
-msgid "Click **Add** in **Content** group."
-msgstr ""
-
-# 9752692fb73f49a38a4d093aa566faba
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:54
-msgid "Click **Apply** button to create the new group."
-msgstr ""
-
-# fc9eec6d13f54a1d8dd9fe679a653732
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:57
-msgid ""
-"Please note that the new group does not have references to the source "
-"group. It contains only the list of face IDs. So if the source group is "
-"changed, the new one is not updated accordingly."
-msgstr ""
-
-# 692f98b5a544406397a569cd43d229dc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:65
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_create_standalone_group` "
-"operation."
-msgstr ""
-
-# 8f305bfbc5da4c4cbba5c2276c8b7b4b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:71
-msgid "\"Group on Geometry\""
-msgstr ""
-
-# d74e73205f87477a86be174722b0d464
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:73
-msgid ""
-"To create a group on geometry check **Group on geometry** in the "
-"**Group** **type** field. The group on geometry contains the elements of "
-"a certain type generated on the selected geometrical object. Group "
-"contents are dynamically updated if the mesh is modified. The group on "
-"geometry can be created only if the mesh is based on geometry."
-msgstr ""
-
-# c35bbf66e64749249b5648e96dac7b24
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:75
-msgid "To define a group, click the *Selection* button and choose"
-msgstr ""
-
-# 2637b093a3244394b8189c3922db7f61
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:77
-msgid ""
-"**Direct geometry selection** to select a shape in the Object Browser or "
-"in the Viewer;"
-msgstr ""
-
-# f12f05a2338b4868865af8499e4a9b81
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:78
-msgid ""
-"**Find geometry by mesh element selection** to activate a dialog which "
-"retrieves a shape by the selected element generated on this shape."
-msgstr ""
-
-# 6b3d4cd3c648491cbfd535924cdc3411
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:81
-msgid ""
-"that this choice is available only if the mesh elements are already "
-"generated."
-msgstr ""
-
-# fb65f6162e60441483b784741d0a41cf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:86
-msgid ""
-"After confirmation of the operation a new group of mesh elements will be "
-"created."
-msgstr ""
-
-# 0c16c230c7ce4c2793eb08c312636d8d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:91
-msgid ""
-"In this picture the cells which belong to a certain geometrical face are "
-"selected in green."
-msgstr ""
-
-# a308beb890254bf6badae10ed3fdc309
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:93
-msgid ""
-"**See Also** a sample TUI Script of a  "
-":ref:`tui_create_group_on_geometry` operation."
-msgstr ""
-
-# d5212a8c6d9144abbdd01cedbe1547ee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:99
-msgid "\"Group on Filter\""
-msgstr ""
-
-# 9d7c3b6e6af44b62b16e265da59bb6fc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:101
-msgid ""
-"To create a group on filter check **Group on filter** in the **Group "
-"type** field. The group on filter contains the elements of a certain type"
-" satisfying the defined filter. Group contents are dynamically updated if"
-" the mesh is modified."
-msgstr ""
-
-# dc10544f89244542a1654346a5f10ded
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:105
-msgid ""
-"To define a group, click the **Set filter** button and define criteria of"
-" the filter in the opened dialog. After the operation is confirmed, a new"
-" group of mesh elements will be created. See more about filters on the "
-":ref:`selection_filter_library_page` page."
-msgstr ""
-
-# 36b896624b0843ddacee7d59392b13d2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/creating_groups.rst:110
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_create_group_on_filter` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cut_mesh_by_plane.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cut_mesh_by_plane.po
deleted file mode 100644 (file)
index d602662..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# af5945204b1f448badc4da3616d663d3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:5
-msgid "Cut a tetrahedron mesh by a plane"
-msgstr ""
-
-# c7b3a5e99521490bada8067eeffdd439
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:7
-msgid ""
-"MeshCut works only with MED files and produces MED files, and is a "
-"standalone program. It can be used either directly from a command shell "
-"outside SALOME, or with a GUI interface in SMESH, provided in a python "
-"plugin that needs to be installed in your SALOME application."
-msgstr ""
-
-# 110ba66df0334b55932c69d60d8e056e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:9
-msgid ""
-"MeshCut allows to cut a mesh constituted of linear tetrahedrons by a "
-"plane. The tetrahedrons intersected by the plane are cut and replaced by "
-"elements of various types, (tetrahedron, pyramid, pentahedron)."
-msgstr ""
-
-# 76c56acbd34642e6a35c0336374bf1da
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:16
-msgid "Using MeshCut as a standalone program, outside SALOME"
-msgstr ""
-
-# e860a7c125d745bfac69448ca40db92e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:18
-msgid "MeshCut is a standalone program, reading and producing med files."
-msgstr ""
-
-# 95562602aa944727beb91b6c691118b6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:20
-msgid "Syntax::"
-msgstr ""
-
-# 323593bb8b9b41ac8e4c58e415639fcd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:24
-msgid "where::"
-msgstr ""
-
-# e8c88d96d6f04485bc837c8fb1cf79e8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:40
-msgid "Using MeshCut inside SALOME"
-msgstr ""
-
-# adefbc138ffb43c6b0b3b465af6001b5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:42
-msgid ""
-"When the MeshCut plugin is installed, it can be found in the Mesh menu, "
-"sub-menu SMESH_plugins. If the plugin is not installed, the file "
-"meshcut_plugin.py is in SMESH installation in  subdirectory "
-"*bin/salome/meshcut_plugin.py*."
-msgstr ""
-
-# 66e0dbab5f0d4123ab9b08d80341b5bb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:46
-msgid ""
-"If there are already plugins defined in a smesh_plugins.py file, this "
-"file should be added at the end. If not, copied as "
-"*${HOME}/Plugins/smesh_plugins.py* or *${APPLI}/Plugins/smesh_plugins.py*"
-" or in *${PLUGINPATH}* directory."
-msgstr ""
-
-# 80ecf33219494f3b839e3b71fd7e0615
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:49
-msgid ""
-"From the Mesh menu, sub-menu SMESH_plugins, choose **\"MeshCut\"** item "
-"The following dialog box will appear:"
-msgstr ""
-
-# d6d1a2389773477c9145c6ad8f4a3577
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst:58
-msgid "See above for the meaning of the parameters."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cutting_quadrangles.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cutting_quadrangles.po
deleted file mode 100644 (file)
index 607e69e..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# cdc452a2e6774e6d861087c1cd0d6a49
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:5
-msgid "Cutting quadrangles"
-msgstr ""
-
-# 178f194a32ca460e8a97d7e24265fcce
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:7
-msgid ""
-"This operation allows cutting one or several quadrangle elements into two"
-" or four triangles."
-msgstr ""
-
-# b88b0d55219447ed957e38cfd39270e9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:9
-msgid "**To cut quadrangles:**"
-msgstr ""
-
-# 2eaf8d747bd246489f0973f678ca80a1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:11
-msgid ""
-"Select a mesh (and display it in the 3D Viewer if you are going to pick "
-"elements by mouse)."
-msgstr ""
-
-# 55601316ccca4fa0a3fb8843327d8a0a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:12
-msgid ""
-"In the **Modification** menu select the **Cutting of quadrangles** item "
-"or click **\"Cutting of quadrangles\"** button in the toolbar."
-msgstr ""
-
-# c6fc4bd52a504140b22929570d95373d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:20
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# a88495585e7d47c182be1ac590640969
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:29
-msgid ""
-"The main list contains the list of quadrangles selected for cutting. You "
-"can click on a quadrangle in the 3D viewer and it will be highlighted "
-"(lock Shift keyboard button to select several quadrangles):"
-msgstr ""
-
-# 1ab5287e6411489491330eeb2f0fb76f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:27
-msgid ""
-"Click **Add** button and the ID of this quadrangle will be added to the "
-"list."
-msgstr ""
-
-# 270eb065dd33474ba7ec99058b3f6ed4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:28
-msgid ""
-"To remove a selected element or elements from the list click **Remove** "
-"button."
-msgstr ""
-
-# 90cf7268f2f641cb8b950fbb8be22d89
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:29
-msgid "**Sort list** button allows sorting the list of IDs."
-msgstr ""
-
-# 0824ac72ed0e4b97890bd28a222d33f0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:30
-msgid ""
-"**Filter** button allows applying a definite :ref:`filtering_elements` "
-"\"filter\" to the selection of quadrangles."
-msgstr ""
-
-# d970753f7b3c4074922954dc9ff13824
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:31
-msgid ""
-"**Apply to all** check box allows cutting all quadrangles of the selected"
-" mesh."
-msgstr ""
-
-# b136f4c18bea4b68a2cfc0130fbec157
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:32
-msgid ""
-"**Preview** provides a preview of cutting in the viewer. It is disabled "
-"for **Cut into 4 triangles** as this cutting way implies no ambiguity."
-msgstr ""
-
-# d84debdc304c476b962913c0a43c09eb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:39
-msgid "**Criterion** defines the way of cutting:"
-msgstr ""
-
-# 393ad3ff52cd47e9b824f9b058385174
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:34
-msgid ""
-"**Cut into 4 triangles** allows cutting a quadrangle into four triangles "
-"by inserting a new node at the center of the quadrangle. The other "
-"options allow cutting a quadrangle into two triangles by connecting the "
-"nodes of a diagonal."
-msgstr ""
-
-# 6531eb4390d34c4da2bf582a77a09dfa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:35
-msgid ""
-"**Use diagonal 1-3** and **Use diagonal 2-4** allow specifying the "
-"opposite corners, which will be connected to form two new triangles."
-msgstr ""
-
-# eac79819eb4246b9a6862f68a0bf7ad9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:39
-msgid ""
-"**Use numeric functor** allows selecting in the field below a quality "
-"metric, which will be optimized when choosing a diagonal for cutting a "
-"quadrangle:"
-msgstr ""
-
-# 50994bc4fa624c1da5a9636faa3e6d61
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:37
-msgid "**Minimum diagonal** cuts by the shortest diagonal."
-msgstr ""
-
-# c370f34b03f1463cad2ca1d7083bcee9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:38
-msgid ""
-"**Aspect Ratio** cuts by the diagonal splitting the quadrangle into "
-"triangles with :ref:`aspect_ratio_page` \"Aspect Ratio\" closer to 1"
-msgstr ""
-
-# aa75cda04e014f508d4ad3e4c80798dd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:39
-msgid ""
-"**Minimum Angle** cuts by the diagonal splitting the quadrangle into "
-"triangles with :ref:`minimum_angle_page` \"Minimum Angle\" closer to 60 "
-"degrees."
-msgstr ""
-
-# 5da246103a434893bca74a0278ebcf63
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:40
-msgid ""
-"**Skew** cuts by the diagonal splitting the quadrangle into triangles "
-"with :ref:`skew_page` \"Skew\" closer to 0.0 degrees."
-msgstr ""
-
-# d01638fc455f49359ec17165a915cbf8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:41
-msgid ""
-"**Select from** allows choosing a sub-mesh or an existing group, whose "
-"quadrangle elements then can be added to the main list."
-msgstr ""
-
-# a0527c237dab4bb7b19297594cd2ee50
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:43
-msgid ""
-"Click the **Apply** or **Apply and Close** button to confirm the "
-"operation."
-msgstr ""
-
-# c97b46bf744d4d75868f54274d5b8b41
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/cutting_quadrangles.rst:59
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_cutting_quadrangles` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/define_mesh_by_script.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/define_mesh_by_script.po
deleted file mode 100644 (file)
index f1b4594..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 7a83ceb457994f0489883d15259eaf09
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:5
-msgid "Use Edges/Faces to be Created Manually"
-msgstr ""
-
-# ddfb94d55abf4777a40b1a0204d3f171
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:7
-msgid ""
-"The algorithms **Use Edges to be Created Manually** and **Use Faces to be"
-" Created Manually** allow  creating a 1D or a 2D mesh in a python script "
-"(using **AddNode, AddEdge** and **AddFace** commands) and then using such"
-" sub-meshes in the construction of a 2D or a 3D mesh."
-msgstr ""
-
-# 97ab6ee01a514db696c51dfc106d7cbb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:9
-msgid ""
-"For example, you want to use standard algorithms to generate 1D and 3D "
-"meshes and to create 2D mesh by your python code. For this, you"
-msgstr ""
-
-# b51c5c631ad54f7ea57be1f01dd6278a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:12
-msgid "create a mesh object, assign a 1D algorithm,"
-msgstr ""
-
-# 1606b74fadb94199897e3e4a0900958c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:13
-msgid "invoke **Compute** command, which computes a 1D mesh,"
-msgstr ""
-
-# 9eff4a607bdf43b8a5c6a70ab0397ca9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:15
-msgid "assign **Use Faces to be Created Manually** and a 3D algorithm,"
-msgstr ""
-
-# 3972a11e34084b7685f90a6f9a37718b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:16
-msgid "run your python code, which creates a 2D mesh,"
-msgstr ""
-
-# ec5b08b76d7d489d990cb8a48be0ca6f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:17
-msgid "invoke **Compute** command, which computes a 3D mesh."
-msgstr ""
-
-# bf07fde4deac4f89a7fc0e1dd4fd340d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:19
-msgid ""
-"**Use Edges to be Created Manually** and **Use Faces to be Created "
-"Manually** algorithms should be assigned _before_ mesh generation by the "
-"Python code."
-msgstr ""
-
-# 6778e7ee297443d3a2447643f28b7422
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:21
-msgid ""
-"Consider trying a sample script demonstrating the usage of "
-":ref:`tui_use_existing_faces` algorithm for construction of a 2D mesh "
-"using Python commands."
-msgstr ""
-
-# cd5cbe7268414edb841f7dff26f2d607
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/define_mesh_by_script.rst:26
-msgid "**Mesh computed by** :ref:`tui_use_existing_faces` shown in a Shrink mode."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/deleting_groups.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/deleting_groups.po
deleted file mode 100644 (file)
index f834bde..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# da0c8f0c6eea4ca89f85a0088293b1c2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/deleting_groups.rst:5
-msgid "Deleting groups with content"
-msgstr ""
-
-# 595cfb5f81104bceb787165f399b5e92
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/deleting_groups.rst:7
-msgid ""
-"To delete groups and their content, in the menu select **Modification -> "
-"Remove -> Delete groups with Contents** and select one or several groups "
-"you wish to delete in the 3D viewer or in the Object Browser."
-msgstr ""
-
-# 27e4c20df5cb437195a61c1305ebbf32
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/deleting_groups.rst:9
-msgid ""
-"The selected groups will be listed in **Delete groups with contents** "
-"menu. Then click **Apply and Close** button to remove the selected groups"
-" and close the menu or **Apply** button to remove them and proceed with "
-"the selection."
-msgstr ""
-
-# 660539b2cd4e442fb90d67f16e42cb49
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/deleting_groups.rst:16
-msgid ""
-"Please, note that this operation removes groups **with their elements**. "
-"To delete a group and leave its elements intact, right-click on the group"
-" in the Object Browser and select **Delete** in the pop-up menu or select"
-" the group and choose **Edit -> Delete** in the main menu."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/diagonal_inversion_of_elements.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/diagonal_inversion_of_elements.po
deleted file mode 100644 (file)
index fd6f7af..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 42e4731d2e82498f9916eabbcf5abd95
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:5
-msgid "Diagonal inversion of two triangles"
-msgstr ""
-
-# e15d94f75cb844fbb2a7347756e1314d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:7
-msgid ""
-"In MESH you can inverse the diagonal (edge) of a pseudo-quadrangle formed"
-" by two neighboring triangles with one common edge."
-msgstr ""
-
-# e18a7165cf184b9e8478fe7b594bf5d7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:10
-msgid "**To inverse the diagonal:**"
-msgstr ""
-
-# cce53a91498d44728049c3ab70921683
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:12
-msgid ""
-"From the **Modification** menu choose the **Diagonal inversion** item or "
-"click **\"Diagonal Inversion\"** button in the toolbar."
-msgstr ""
-
-# fe71e652c0b6416295153408a1a1e23a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:20
-msgid "The following dialog box shall appear:"
-msgstr ""
-
-# bc40291f856d4747b0ee3434ee0c5c42
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:25
-msgid ""
-"Enter IDs of nodes forming the required edge in the **Edge** field (the "
-"node IDs must be separated by dashes) or select this edge in the 3D "
-"viewer."
-msgstr ""
-
-# ec9528ded57a4754a7255d0a51517eb8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:26
-msgid "Click the **Apply** or **Apply and Close** button."
-msgstr ""
-
-# dc1e251576e44f75b478608957b4ceab
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst:40
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_diagonal_inversion` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/display_entity.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/display_entity.po
deleted file mode 100644 (file)
index 49ac7d9..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 135c20ba93794e7b807ec22eb6e52268
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_entity.rst:5
-msgid "Display Entity"
-msgstr ""
-
-# 8a6a82fcf8b74d7e9c01b3d73a4b7a90
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_entity.rst:7
-msgid ""
-"In this submenu you can choose to display only volumes, faces or edges or"
-" combine them."
-msgstr ""
-
-# 933a18f4dc8b4213a03dc29e45618189
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_entity.rst:27
-msgid "If the mesh contains a lot of elements, select **Choose...** item,"
-msgstr ""
-
-# 7f1150a0a698424ba4a5891da9ca54cd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_entity.rst:35
-msgid ""
-"and **Display Entity** dialog box will provide a way to display only some"
-" entities at the first display instead of displaying all entities, which "
-"can take a long time."
-msgstr ""
-
-# c6ba829de91b4525bf7e30e4acc36e2d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_entity.rst:43
-msgid ""
-"This menu item is available from the context menu in both Object browser "
-"and 3D viewer."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/display_mode.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/display_mode.po
deleted file mode 100644 (file)
index e60fd7c..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# b95fbc8a990f483caaa996472e44c19f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_mode.rst:5
-msgid "Display Mode"
-msgstr ""
-
-# c327b45a291146048f471484f6afb38e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_mode.rst:7
-msgid ""
-"By default your objects are represented as defined in "
-":ref:`mesh_tab_preferences`. However, right-clicking on the mesh in the "
-"**Object Browser**, and selecting **Display Mode**, you can display your "
-"mesh as:"
-msgstr ""
-
-# 9fcd884d284f4b878665e4e2eba85f2c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_mode.rst:31
-msgid "**Wireframe** can combine with **Nodes** and **Shading**."
-msgstr ""
-
-# 0b6e084814334ae997c0429dd1c8130c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/display_mode.rst:33
-msgid ""
-"**Shading** and **Wireframe** modes can combine with **Shrink**, however "
-"**Nodes** can't."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_elements_control.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_elements_control.po
deleted file mode 100644 (file)
index c1d03ed..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 29180c98e4a743249d7d78b1aeed590c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_elements_control.rst:5
-msgid "Double edge, Double faces and Double volumes"
-msgstr ""
-
-# 59d063c920a0439eabdc80c5a6e09d83
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_elements_control.rst:7
-msgid ""
-"These mesh quality controls highlight the mesh elements basing on the "
-"same set of nodes."
-msgstr ""
-
-# d28bb6f9dec048b98ecdf91fa9f056b1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_elements_control.rst:12
-msgid ""
-"In this picture some faces are coincident after copying all elements with"
-" translation with subsequent Merge of nodes."
-msgstr ""
-
-# 941183a3377e44e98a9fd65acdba5e32
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_elements_control.rst:14
-msgid "*A sample TUI Script of a* :ref:`filter_double_elements`:."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_nodes_control.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_nodes_control.po
deleted file mode 100644 (file)
index 537c955..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 88d8c854db4644f6a5b009412db1b608
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_control.rst:5
-msgid "Double nodes"
-msgstr ""
-
-# 22529b5a5a764ab8a59c1f4110f95a06
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_control.rst:7
-msgid ""
-"This mesh quality control highlights the nodes which are coincident with "
-"other nodes (within a given tolerance). Distance at which two nodes are "
-"considered coincident is defined by :ref:`dbl_nodes_tol_pref` preference."
-msgstr ""
-
-# 93d2ce3a6fbd44fba9a23d3e38513d3b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_control.rst:12
-msgid ""
-"In this picture some nodes are coincident after copying all elements with"
-" translation."
-msgstr ""
-
-# 6342070c6e5748f0a06f3032b1eb7f83
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_control.rst:14
-msgid ""
-"**See also**: A sample TUI Script of a :ref:`tui_double_nodes_control` "
-"filter."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_nodes_page.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_nodes_page.po
deleted file mode 100644 (file)
index 4fd023e..0000000
+++ /dev/null
@@ -1,341 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 5147fa31ae3b483b8c1072e1e45c0684
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:5
-msgid "Duplicate Nodes or/and Elements"
-msgstr ""
-
-# bee16d2e37f34b0e9a398478b5ef8f3a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:7
-msgid ""
-"This operation allows duplicating mesh nodes or/and elements, which can "
-"be useful to emulate a crack in the model."
-msgstr ""
-
-# 012ca3a95eae461490b79abd136c6321
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:9
-msgid ""
-"Duplication consists in creation of mesh elements \"equal\" to existing "
-"ones."
-msgstr ""
-
-# 14b9d90e49ff464e9daddf7d5d95d55a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:11
-msgid "**To duplicate nodes or/and elements:**"
-msgstr ""
-
-# f3d3df00d1bb4492a58c77e0b45dc6f6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:13
-msgid ""
-"From the **Modification** menu choose **Transformation** -> **Duplicate "
-"Nodes or/and Elements** item or click **\"Duplicate Nodes or/and "
-"Elements\"** button in the toolbar."
-msgstr ""
-
-# b4ac34ca4ecf4579b08656c175d92774
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:21
-msgid ""
-"Check in the dialog box one of four radio buttons corresponding to the "
-"type of duplication operation you would like to perform."
-msgstr ""
-
-# 75b05a186ab14690b26409eaf534b482
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:22
-msgid ""
-"Fill the other fields available in the dialog box (depending on the "
-"chosen operation mode)."
-msgstr ""
-
-# 596eb28b911347c2a0926dff4afdccbe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:23
-msgid ""
-"Click the **Apply** or **Apply and Close** button to perform the "
-"operation of duplication."
-msgstr ""
-
-# ffc1a8b8bf904409b6a014fdbd9bd9cb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:25
-msgid "\"Duplicate Nodes or/and Elements\" dialog has four working modes:"
-msgstr ""
-
-# 9bf50c98e6724294a8470c6c1543e464
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:27
-msgid ":ref:`mode_without_elem_anchor`"
-msgstr ""
-
-# 2a5a2df31afa4348be54537af6de0bff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:28
-msgid ":ref:`mode_with_elem_anchor`"
-msgstr ""
-
-# e8263574ea36477aa7623c1955f44c89
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:29
-msgid ":ref:`mode_elem_only_anchor`"
-msgstr ""
-
-# f0791cde0a6241538036a1d6ebc102b3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:30
-msgid ":ref:`mode_group_boundary_anchor`"
-msgstr ""
-
-# 0551dca570624dc282f98101b99f422b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:37
-msgid "Duplicate nodes only"
-msgstr ""
-
-# 31ef20c3e6a34becbc14fb5049de5fda
-# 404278b79a2d4ac98f2ab3ba7bc24ba6
-# bb33b0bd56ce44bba3940061ccd07195
-# 753f34b88d864324aba9b816fc7b8412
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:43
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:75
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:118
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:136
-msgid "Parameters to be defined in this mode:"
-msgstr ""
-
-# cd8779af6bf54feabab3a81101c69a0b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:45
-msgid ""
-"**Group of nodes to duplicate** (**mandatory**): these nodes will be "
-"duplicated."
-msgstr ""
-
-# 2d4f75955d584bbfb4d867f2c9faa5b8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:46
-msgid ""
-"**Group of elements to replace nodes with new ones** (**optional**): the "
-"new nodes will replace the duplicated nodes within these elements."
-msgstr ""
-
-# 7ced7111b7af4ec3a9b624c8b4e3f9bb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:47
-msgid ""
-"**Construct group with newly created nodes** option (**checked by "
-"default**): if checked - the group with newly created nodes will be "
-"built."
-msgstr ""
-
-# 2792968de8484dd8a4d0f2cf0a5b5c9e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:49
-msgid ""
-"A schema below illustrates how the crack is emulated using the node "
-"duplication."
-msgstr ""
-
-# a5bf3d65e56b4d7f97788208e8dbc4e3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:61
-msgid ""
-"This schema shows a virtual crack in a 2D mesh created using this "
-"duplication mode:"
-msgstr ""
-
-# e6fc75f21ea6496198aa0b1e50a1f4cb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:59
-msgid "Black balls are **duplicated nodes**."
-msgstr ""
-
-# be004054e8874136bd29e6bad7160377
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:60
-msgid "Red balls are **new nodes**."
-msgstr ""
-
-# 1e6e9fd72cdb48cfbaa0987a2c5bb368
-# fc37f5c61c0e4c538566eb9323b68f1b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:61
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:99
-msgid "**Elements to replace nodes with new ones** are marked with green."
-msgstr ""
-
-# c38eb7cc23634448b1e7241575aea13b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:64
-msgid "Note that in the reality **duplicated nodes** coincide with **new nodes**."
-msgstr ""
-
-# 8601d651b0a64824b4f18c9378dbac33
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:70
-msgid "Duplicate nodes and border elements"
-msgstr ""
-
-# 83f41673be9c483998dd3136d1aa49b5
-# afb0565acf6e4c9f8b7df68e9a8726bb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:77
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:120
-msgid ""
-"**Group of elements to duplicate** (**mandatory**): these elements will "
-"be duplicated."
-msgstr ""
-
-# 0f9fb6bccd4e40e48897f8bff8b0fe59
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:78
-msgid ""
-"**Group of nodes not to duplicate** (**optional**): group of nodes at "
-"crack bottom which will not be duplicated."
-msgstr ""
-
-# 2a23e9b269054e63b9e14ca20067d4b9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:79
-msgid ""
-"**Group of elements to replace nodes with new ones** (**mandatory**): the"
-" new nodes will replace the nodes to duplicate within these elements."
-msgstr ""
-
-# 2e757ab99da4412cb9cf995c67938315
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:80
-msgid ""
-"**Construct group with newly created elements** option (**checked by "
-"default**): if checked - the group of newly created elements will be "
-"built."
-msgstr ""
-
-# 763d583bb74f42c0bcae4009e8b52386
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:81
-msgid ""
-"**Construct group with newly created nodes** option (**checked by "
-"default**): if checked - the group of newly created nodes will be built."
-msgstr ""
-
-# e97711ca7147448aacec7cb4cd6301c2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:84
-msgid ""
-"A schema below explains the crack emulation using the node duplication "
-"with border elements."
-msgstr ""
-
-# 07af94bbfb21422ca71f32b1349818f8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:92
-msgid ""
-"This schema shows a virtual crack in a 2D mesh created using this "
-"duplication mode. In this schema:"
-msgstr ""
-
-# 1830fc51702740339fc80233ee94fc63
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:94
-msgid "Black segments are **duplicated elements** (edges in 2D case)."
-msgstr ""
-
-# 441c4fa9022c4218b4fc87e40609c774
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:95
-msgid ""
-"Black balls (except for the lowest one) are duplicated nodes of "
-"**duplicated elements**."
-msgstr ""
-
-# 2bf9789260e1414bb7433c8e9ac53dbd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:96
-msgid "The lowest black ball is the **non-duplicated node**."
-msgstr ""
-
-# 1d1ce816d3bc4ddda2db246ddb4eab51
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:97
-msgid "Red balls are **newly created nodes**."
-msgstr ""
-
-# 50e8b24787c64773a93a0b28d3c8c679
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:98
-msgid "Red segments are **created elements** (edges)."
-msgstr ""
-
-# f32adbca95d34f38857ea4bba74da954
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:101
-msgid ""
-"Note that in the reality **nodes to duplicate** coincide with **new "
-"nodes**."
-msgstr ""
-
-# a36f630e3c774df5b1c653deef9263c7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:103
-msgid ""
-"In a 3D case, where **elements to duplicate** are faces, the edges "
-"located at the \"crack\" (if any) are cloned automatically."
-msgstr ""
-
-# fea519884d6f4cee99e7bb95a6a8339d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:110
-msgid "Duplicate elements only"
-msgstr ""
-
-# 703a787a2cb64a18a00ae013af7d2156
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:112
-msgid ""
-"This mode duplicates the given elements, i.e. creates new elements with "
-"the same nodes as the given elements."
-msgstr ""
-
-# 302ef6771b8647b995203c19fcf9251a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:121
-msgid ""
-"**Construct group with newly created elements** option (**checked by "
-"default**): if checked - the group of newly created elements will be "
-"built. The name of the created group starts from \"DoubleElements\"."
-msgstr ""
-
-# 178dd2990df74d3e88c6e21e26c629e2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:127
-msgid "Duplicate nodes on group boundaries"
-msgstr ""
-
-# db5d6ad28c224676ab8a8b812415a84a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:129
-msgid ""
-"This mode duplicates nodes located on boundaries between given groups of "
-"volumes."
-msgstr ""
-
-# abda119ffd214b52a8b0f82eddee5a35
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:138
-msgid ""
-"**Groups (faces or volumes)** (**mandatory**): list of mesh groups. These"
-" groups should be disjoint, i.e. should not have shared elements."
-msgstr ""
-
-# 04fb78bad6e14785881728cbadbd501f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:139
-msgid ""
-"If **Create joint elements** option is activated, flat elements are "
-"created on the duplicated nodes: a triangular facet shared by two volumes"
-" of two groups generates a flat prism, a quadrangular facet generates a "
-"flat hexahedron. Correspondingly 2D joint elements (null area faces) are "
-"generated where edges are shared by two faces. The created flat volumes "
-"(or faces) are stored in groups. These groups are named according to the "
-"position of the group in the list of groups: group \"j_n_p\" is a group "
-"of flat elements that are built between the group \\#n and the group \\#p"
-" in the group list. All flat elements are gathered into the group named "
-"\"joints3D\" (correspondingly \"joints2D\"). The flat elements of "
-"multiple junctions between the simple junction are stored in a group "
-"named \"jointsMultiples\"."
-msgstr ""
-
-# 9062bb490b184743b1d0695078653fb9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:140
-msgid ""
-"If **On all boundaries** option is activated, the volumes (or faces), "
-"which are not included into **Groups** input, are considered as another "
-"group and thus the nodes on the boundary between **Groups** and the "
-"remaining mesh are also duplicated."
-msgstr ""
-
-# 3ef21a415a784b9f84eceef20ff9221c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/double_nodes_page.rst:143
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_duplicate_nodes` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/editing_groups.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/editing_groups.po
deleted file mode 100644 (file)
index 1fb937b..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 29f257717b9f47dd83a5976ef374f548
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:5
-msgid "Editing groups"
-msgstr ""
-
-# 97180320e8364896bd43f26e15cbb37f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:7
-msgid "**To edit an existing group of elements:**"
-msgstr ""
-
-# 3b1c90cdecf443b49812a63ca8afa82b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:9
-msgid ""
-"Select your group in the Object Browser and in the **Mesh** menu click "
-"the **Edit Group** item or **\"Edit Group\"** button in the toolbar."
-msgstr ""
-
-# 861e0c9d6f2b4949b3ef72d0a9d9b9a1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:19
-msgid ""
-"The following dialog box will appear (if the selected group is "
-"**standalone**, else this dialog looks different):"
-msgstr ""
-
-# 7206da41ad034d9ba2c06616de676708
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:24
-msgid ""
-"In this dialog box you can modify the name and the color of your group "
-"despite of its type. You can add or remove the elements composing a "
-"**standalone group**. You can change criteria of the filter of a **group "
-"on filter**. For more information see "
-":ref:`creating_groups_page`:\"Creating Groups\" page."
-msgstr ""
-
-# f736ea983fd144839115f9c87eff47cc
-# fd5aff08297941ffa9da1f0ec85ac9ba
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:26
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:47
-msgid ""
-"Click the **Apply** or **Apply and Close** button to confirm modification"
-" of the group."
-msgstr ""
-
-# fa8ff303c85f4974b5e851f92c96f11b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:32
-msgid "Convert to stanalone group"
-msgstr ""
-
-# 3524bfde667244ec84cf1438818e7057
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:34
-msgid ""
-"**To convert an existing group on geometry or a group on filer into a "
-"standalone group and modify its contents:**"
-msgstr ""
-
-# a51bcc3c5c0e4eda9f50971919f8946f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:36
-msgid ""
-"Select your group on geometry or on filter in the Object Browser and in "
-"the **Mesh** menu click the **Edit Group as Standalone** item."
-msgstr ""
-
-# 7d35ca78670d49d8baddaa74a1251aaf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:45
-msgid ""
-"The selected group will be converted into a standalone group and its "
-"contents can be modified."
-msgstr ""
-
-# 513bce03244d4bc887a30a2d14ec7f5a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_groups.rst:49
-msgid "**See also:** A sample TUI Script of an :ref:`tui_edit_group` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/editing_meshes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/editing_meshes.po
deleted file mode 100644 (file)
index adffa52..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# e9c884fc93424691a36a5b5a08908d42
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_meshes.rst:5
-msgid "Editing Meshes"
-msgstr ""
-
-# 4108e447b8d44bf29f56a5724ab4c803
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_meshes.rst:7
-msgid ""
-"After you have created a mesh or sub-mesh with definite applied meshing "
-"algorithms and hypotheses you can edit your mesh by **assigning** other "
-"algorithms and/or hypotheses or **unassigning** the applied hypotheses "
-"and algorithms. The editing proceeds in the same way as "
-":ref:`create_mesh_anchor`:\"Mesh Creation\"."
-msgstr ""
-
-# d86646f92966449492afab0cc02d1f84
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_meshes.rst:14
-msgid ""
-"You can also change values for the current hypothesis by clicking the "
-"**\"Edit Hypothesis\"** button."
-msgstr ""
-
-# dc3c4db7324c4e3499d941a4dc820715
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_meshes.rst:23
-msgid ""
-"Mesh entities generated before using changed hypotheses are automatically"
-" removed."
-msgstr ""
-
-# 6beaa93e8a474a9a8e5ff92a0036705a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_meshes.rst:25
-msgid ""
-"See how the mesh constructed on a geometrical object changes if we apply "
-"different meshing parameters to it."
-msgstr ""
-
-# 15b4f649638048f0b81ba2cb2a899822
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/editing_meshes.rst:41
-msgid "**See Also** a sample TUI Script of an :ref:`tui_editing_mesh` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/extrusion.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/extrusion.po
deleted file mode 100644 (file)
index f6cb477..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 2364aec5fd98494fa6a3b3bea96909b9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:5
-msgid "Extrusion"
-msgstr ""
-
-# ebff233d82a74fcb981c8c470c7219cf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:7
-msgid ""
-"Extrusion is used to build mesh elements of plus one dimension than the "
-"input ones. Boundary elements around generated mesh of plus one dimension"
-" are additionally created. All created elements can be automatically "
-"grouped. Extrusion can be used to create a "
-":ref:`extrusion_struct`:\"structured mesh from scratch\"."
-msgstr ""
-
-# bc07284d8f4f4e28b6e5527d32132997
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:15
-msgid ""
-"Any node, segment or 2D element can be extruded. Each type of elements is"
-" extruded into a corresponding type of result elements:"
-msgstr ""
-
-# ee1ba33fc49041b8ae0e3ca45b004ae6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:18
-msgid "**Extruded element**"
-msgstr ""
-
-# 66f55ddccdce468ab1523f3f86a39835
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:18
-msgid "**Result element**"
-msgstr ""
-
-# 38c41b21cf1d40f7b4cd9739fcf5b02d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:20
-msgid "Node"
-msgstr ""
-
-# 632755e4966948b0b6b4193471772513
-# 1d43529b13fe4903a0dad1c935023197
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:20
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:22
-msgid "Segment"
-msgstr ""
-
-# f1ba62dcf07641cba2c6e659df2cc409
-# fc5653560d5f4a6cbbcf5a4e48603537
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:22
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:26
-msgid "Quadrilateral"
-msgstr ""
-
-# 8884d612e5f54aec87829e567d81bcc6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:24
-msgid "Triangle"
-msgstr ""
-
-# 63ba769c64114e27b40f0a74bd8d3604
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:24
-msgid "Pentahedron"
-msgstr ""
-
-# a322c15c31f142d488551274d60e8a9e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:26
-msgid "Hexahedron"
-msgstr ""
-
-# 7eb6eaf57f004d31927ac6eabf97b7cb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:28
-msgid "Polygon"
-msgstr ""
-
-# f611530d307e459aa62eefb31be44873
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:28
-msgid "Polyhedron"
-msgstr ""
-
-# de5e6214009d48b0a25cf0e005ac62ad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:30
-msgid "Hexagonal polygon"
-msgstr ""
-
-# 54d5dcd07ecb4111bd18c06a6da7be1a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:30
-msgid "Hexagonal prism"
-msgstr ""
-
-# 5783f80db812442fa92882f2cd6ed227
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:34
-msgid ""
-"When 2D elements are extruded, in addition to 3D elements segments are "
-"created on the ribs of the resulting 3D mesh. Free edges of input 2D "
-"elements generate logically horizontal rib segments. Logically vertical "
-"rib segments are generated from the nodes belonging to a sole input 2D "
-"element (the figure below illustrates this rule)."
-msgstr ""
-
-# b1cbf516acca40e5bcb88be731246438
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:43
-msgid "**To use extrusion:**"
-msgstr ""
-
-# e4b0a7aca4d349309ef5d31e63b00a66
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:45
-msgid ""
-"From the **Modification** menu choose the **Extrusion** item or click "
-"**\"Extrusion\"** button in the toolbar."
-msgstr ""
-
-# 693752be10014feb9a87762183d890d6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:53
-msgid "The following dialog will appear:"
-msgstr ""
-
-# c3703d1aa91c49ba8e99c04e8c52df4f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:60
-msgid "In this dialog:"
-msgstr ""
-
-# c30f5aa684394cba8f2b31d58410292f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:67
-msgid ""
-"Use *Selection* button to specify what you are going to  select at a "
-"given moment, **Nodes**, **Edges** or **Faces**."
-msgstr ""
-
-# d0159decd96a479591271a64f8f09a9d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:73
-msgid ""
-"Specify **Nodes**, **Edges** and **Faces**, which will be extruded, by "
-"one of following means:"
-msgstr ""
-
-# cf74b51d01e74797a40dcdc6ec5d65a1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:70
-msgid ""
-"**Select the whole mesh, sub-mesh or group** activating the corresponding"
-" check-box."
-msgstr ""
-
-# 496ae8d70e244acba70124abc8c6539a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:71
-msgid ""
-"Choose mesh elements with the mouse in the 3D Viewer. It is possible to "
-"select a whole area with a mouse frame."
-msgstr ""
-
-# 63c868c12f4a44e3ae22eed9bfb4826e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:72
-msgid ""
-"Input the element IDs directly in **Node IDs**, **Edge IDs** and **Face "
-"IDs** fields. The selected elements will be highlighted in the viewer, if"
-" the mesh is shown there."
-msgstr ""
-
-# c723cfa91f234662a336c6e696edad7c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:73
-msgid ""
-"Apply Filters. **Set filter** button allows to apply a filter to the "
-"selection of elements. See more about filters in the "
-":ref:`filtering_elements`:\"Selection filters\" page."
-msgstr ""
-
-# ee94b752be9d4b75b998a61ef027b8f8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:76
-msgid "If the **Extrusion to Distance** radio button is selected"
-msgstr ""
-
-# 80f0a501c039494fa6cdb49a95f3c8b6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:76
-msgid "specify the translation vector by which the elements will be extruded."
-msgstr ""
-
-# 46a93739cd43409782f9cc81529f5e6d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:78
-msgid "If the **Extrusion Along Vector** radio button is selected"
-msgstr ""
-
-# fefb6a7cb0f749b9953fe4b142909237
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:83
-msgid ""
-"specify the components of the **Vector** along which the elements will be"
-" extruded, either directly or by selecting the mesh face (the normal to "
-"the face will define the vector),"
-msgstr ""
-
-# 43be03535a7a4e1ea9dca1e8b3dc71fe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:84
-msgid ""
-"specify the **Distance** of extrusion along the vector (it can be "
-"negative)."
-msgstr ""
-
-# bb5c369c3e7846afbada8631f4c62600
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:88
-msgid ""
-"If the **Extrusion By Normal** radio button is selected, every node of "
-"the selected faces is extruded along the *average* of the *normal* "
-"vectors to the faces sharing the node. (Nodes and edges cannot be "
-"extruded in this mode.)"
-msgstr ""
-
-# 66f8279ea7fd47b3b42c0d87987bc3ad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:93
-msgid "Specify the **Distance** of extrusion (it can be negative),"
-msgstr ""
-
-# 5a68a26f70a343b68a8b65c58a0ca736
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:94
-msgid ""
-"Use **Along average normal** check-box to specify along which vector the "
-"distance is measured."
-msgstr ""
-
-# 774f7b697b244ed692daa2e4ea20c506
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:95
-msgid ""
-"If it is *activated* the distance is measured along the average normal "
-"mentioned above."
-msgstr ""
-
-# 141e69fb74d748b3801bb69d53369658
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:96
-msgid ""
-"If it is *deactivated* every node is extruded along the average normal "
-"till its intersection with a virtual plane obtained by translation of the"
-" face sharing the node along its own normal by the **Distance**."
-msgstr ""
-
-# 5a16428f873e499bbb978c871ebda02f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:98
-msgid ""
-"The picture below shows a cross-section of a 2D mesh extruded with "
-"**Along average normal** activated (to the left) and deactivated (to the "
-"right)."
-msgstr ""
-
-# 13537234a1ae43bf87fcc450c709eb58
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:108
-msgid ""
-"**Use only input elements** check-box specifies what elements will be "
-"used to compute the average normal."
-msgstr ""
-
-# 1aee516cd243484b96295b8061828dd2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:109
-msgid ""
-"If it is *activated* only selected faces, among faces sharing the node, "
-"are used to compute the average normal at the node."
-msgstr ""
-
-# d644b3e115f34653a56f746f7d775170
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:110
-msgid "Else all faces sharing the node are used."
-msgstr ""
-
-# c980870b2226438eb4237b372b558037
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:112
-msgid ""
-"The picture below shows a cross-section of a 2D mesh the upper plane of "
-"which is extruded with **Use only input elements** activated (to the "
-"left) and deactivated (to the right)."
-msgstr ""
-
-# b79e7639a6474f3182a838f2757aa90f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:122
-msgid "Specify the **Number of steps**."
-msgstr ""
-
-# b16bd8b181304246b9bcecf63b4a58cd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:141
-msgid ""
-"Optionally specify **Scale Factors**. Each scale factor in the list is "
-"applied to nodes of a corresponding extrusion step unless **Linear "
-"Variation of Scale Factors** is checked, is which case the scale factors "
-"are spread over all extrusion steps."
-msgstr ""
-
-# 68c3f5a414364ee8a09781e956586294
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:124
-msgid ""
-"**Scaling Center** can be defined either using spin boxes or by picking a"
-" node in the Viewer or by picking a geometrical vertex in the Object "
-"Browser."
-msgstr ""
-
-# 836c4b43b7c24aa4aa676a9173dc9e0c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:125
-msgid "**Add** button adds a scale factor to the list."
-msgstr ""
-
-# 08a65a077ad74266bb3dc428552672ed
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:133
-msgid "**Remove** button removes selected scale factors from the list."
-msgstr ""
-
-# 65c23b96ef0c4583af562130852040cc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:143
-msgid ""
-"If you activate **Generate Groups** check-box, the **result elements** "
-"created from **selected elements** contained in groups will be included "
-"into new groups named by pattern \"<old group name>_extruded\" and \"<old"
-" group name>_top\". For example if a selected quadrangle is included in "
-"*g_Faces* group (see figures below) then result hexahedra will be "
-"included in *g_Faces_extruded* group and a quadrangle created at the "
-"\"top\" of extruded mesh will be included in *g_Faces_top group*."
-msgstr ""
-
-# 67e7563b3d7e4482a49aa461a724ffa1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:151
-msgid "This check-box is active only if there are some groups in the mesh."
-msgstr ""
-
-# bd6a9b1d09cb4817b044a257b9c221cd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:155
-msgid "Click **Apply** or **Apply and Close**  button to confirm the operation."
-msgstr ""
-
-# f08ac327c1d042559c34b64d86c475bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:160
-msgid "Example: creation of a structured mesh from scratch"
-msgstr ""
-
-# 75d97cfe13ff4c22aadf096504c666df
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion.rst:181
-msgid "**See Also** a sample TUI Script of an :ref:`tui_extrusion` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/extrusion_along_path.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/extrusion_along_path.po
deleted file mode 100644 (file)
index 525e613..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 588d53aa2c134a96bf8bc6f57f04dbfc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:5
-msgid "Extrusion along Path"
-msgstr ""
-
-# 4aeec93989e04f0b8a5cd47900688c45
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:7
-msgid ""
-"In principle, **Extrusion along Path** works in the same way as "
-":ref:`extrusion_page`, the main difference is that we define not a "
-"vector, but a path of extrusion which must be an 1D mesh or 1D sub-mesh. "
-"To get an idea of how this algorithm works, examine several examples, "
-"starting from the most simple case of extrusion along a straight edge. In"
-" the examples the sample mesh will be extruded along different paths and "
-"with different parameters. This 2D mesh has two quadrangle faces and "
-"seven edges. Look at the picture, where white digits are the node numbers"
-" and green are the element numbers:"
-msgstr ""
-
-# 432bc14cb72f4d5eb8d0da786d0326f8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:16
-msgid "Extrusion along a straight edge"
-msgstr ""
-
-# 61ae00ddc63e4843a2b47f96ac7b23b5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:17
-msgid "(not using base point or angles)"
-msgstr ""
-
-# 3da83113d7064ebc94c32998cdfe1fd4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:31
-msgid "Node #1 of path mesh has been selected as Start node."
-msgstr ""
-
-# dbeb00b92d90425eb0d14084c6f2fa49
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:34
-msgid "Extrusion along a curvilinear edge"
-msgstr ""
-
-# 09c57ebbbd7d4cea88a63192af3991bb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:35
-msgid "(with and without angles)"
-msgstr ""
-
-# acf8f5192c864441883b3ecb898363cd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:49
-msgid "Node #1 of path mesh has been selected as **Start node**."
-msgstr ""
-
-# 3ec6691bd161445593511faff96e9bb4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:58
-msgid "Extrusion of a 2D face along a mesh built on a wire"
-msgstr ""
-
-# 4e26b95dea014ad79ce8a6b7e00ca07b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:60
-msgid ""
-"In this example the path mesh has been built on a wire containing 3 "
-"edges. Node 1 is a start node. Linear angle variation by 180 degrees has "
-"also been applied."
-msgstr ""
-
-# beba5dd38ec446dbba901980a6d730b2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:75
-msgid "Extrusion of 2d elements along a closed path"
-msgstr ""
-
-# 542a40ad28784840813301cd37adfb95
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:89
-msgid ""
-"Note, that no sewing has been done, so, there are six coincident nodes "
-"and two coincident faces in the resulting mesh."
-msgstr ""
-
-# ae6ed7ef04af4adf8c16d7c73551dd17
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:98
-msgid "**To use Extrusion along Path:**"
-msgstr ""
-
-# 972d0d7b8e2d4757a2bbb9204041a949
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:100
-msgid ""
-"From the **Modification** menu choose the **Extrusion along a path** item"
-" or click **\"Extrusion along a path\"** button in the toolbar."
-msgstr ""
-
-# 73d0abac14d740f3ad742d87e6f41e5c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:108
-msgid "The following dialog will appear:"
-msgstr ""
-
-# 76894b1abc2d4beda37f23172ad80977
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:113
-msgid "In this dialog:"
-msgstr ""
-
-# c0873410c52f4d3fa8c537276e27d53a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:115
-msgid ""
-"Use *Selection* button to specify what you are going to select at a given"
-" moment, **Nodes**, **Edges** or **Faces**."
-msgstr ""
-
-# 6778b72713654449bfc388a7513d6919
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:123
-msgid ""
-"Specify **Nodes**, **Edges** and **Faces**, which will be extruded, by "
-"one of following means:"
-msgstr ""
-
-# 32617b683fb443608c76c82457e647e6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:125
-msgid "**Select the whole mesh, sub-mesh or group** activating this check-box."
-msgstr ""
-
-# eb8f59b7bdfb4f6fb93d7060290737b0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:126
-msgid ""
-"Choose mesh elements with the mouse in the 3D Viewer. It is possible to "
-"select a whole area with a mouse frame."
-msgstr ""
-
-# d6b66337ef8d49bf902de528b4b63f5d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:127
-msgid ""
-"Input the element IDs directly in **Node IDs**, **Edge IDs** and **Face "
-"IDs** fields. The selected elements will be highlighted in the viewer, if"
-" the mesh is shown there."
-msgstr ""
-
-# fdd735e466c94dc58e0ba134a190976d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:128
-msgid ""
-"Apply Filters. **Set filter** button allows to apply a filter to the "
-"selection of elements. See more about filters in the "
-":ref:`filtering_elements` page."
-msgstr ""
-
-# bf5ac45174b54265a04afd558fa641ce
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:130
-msgid ""
-"Define the **Path** along which the elements will be extruded.Path "
-"definition consists of several elements:"
-msgstr ""
-
-# 1e63128e7c254a54be66ec3a0780fcc7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:132
-msgid ""
-"**Mesh or sub-mesh** - 1D mesh or sub-mesh, along which proceeds the "
-"extrusion."
-msgstr ""
-
-# c126f4fd09a942ca93778a4201572569
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:133
-msgid ""
-"**Start node** - the start node of the Path. It is used to define the "
-"direction of extrusion."
-msgstr ""
-
-# c81a11bc397d41aaa19c546989e03c5c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:136
-msgid ""
-"If you activate **Generate Groups** check-box, the **result elements** "
-"created from **selected elements** contained in groups will be included "
-"into new groups named by pattern \"<old group name>_extruded\" and \"<old"
-" group name>_top\". For example if a  selected quadrangle is included in "
-"*g_Faces* group (see figures below) then result hexahedra will be "
-"included in *g_Faces_extruded* group and a quadrangle created at the "
-"\"top\" of extruded mesh will be included in *g_Faces_top group*."
-msgstr ""
-
-# 3f041a51d0094365a3f3d036df4f2edb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:144
-msgid "This check-box is active only if there are some groups in the mesh."
-msgstr ""
-
-# d770e6d7fbd3438b99983300c7578f2a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:149
-msgid "There are two optional parameters, which can be very useful:"
-msgstr ""
-
-# 854e4054a12f473785e0d111bd04bb38
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:151
-msgid ""
-"If the path of extrusion is curvilinear, at each iteration the extruded "
-"elements are rotated to keep its initial angularity to the curve. By "
-"default, the **Base Point** around which the elements are rotated is the "
-"mass center of the elements (note that it can differ from the gravity "
-"center computed by *Geometry* module for the  underlying shape), however,"
-" you can specify any point as the **Base Point** and the elements will be"
-" rotated with respect to this point. Note that only the displacement of "
-"the **Base Point** exactly equals to the path, and all other extruded "
-"elements simply keep their position relatively to the **Base Point** at "
-"each iteration."
-msgstr ""
-
-# 8cda2b8fd95e4e55894e0c5ba64189d7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:153
-msgid ""
-"The elements can also be rotated around the path to get the resulting "
-"mesh in a helical fashion. You can set the values of angles at the right,"
-" add them to the list of angles at the left by pressing the **\"Add\"** "
-"button and remove them from the list by pressing the **\"Remove\"** "
-"button."
-msgstr ""
-
-# 73808985fda548e8b32349d633ce9c61
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:167
-msgid ""
-"**Linear variation of the angles** option allows defining the angle of "
-"gradual rotation for the whole path. At each step the elements will be "
-"rotated by *( angle / nb. of steps )*."
-msgstr ""
-
-# 13433694aaea4fd0ba18f3b9d35d08c3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:171
-msgid ""
-"Click **Apply** or **Apply and Close**  button to confirm the operation. "
-"Mesh edges will be extruded into faces, faces into volumes. The external "
-"surface of the resulting 3d mesh (if faces have been extruded) is covered"
-" with faces, and corners with edges. If the path is closed, the resulting"
-" mesh can contain duplicated nodes and faces, because no sewing is done."
-msgstr ""
-
-# 8c7e5234ca904017953ca8e334796d25
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/extrusion_along_path.rst:174
-msgid ""
-"**See Also** a sample TUI Script of an :ref:`tui_extrusion_along_path` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/find_element_by_point.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/find_element_by_point.po
deleted file mode 100644 (file)
index 6081c19..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 4dc0f3e4fe6748a0a6ce1f0e9807ce9d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:5
-msgid "Find Element by Point"
-msgstr ""
-
-# 073b2bfeb80f44cca499fa25b7521de3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:7
-msgid ""
-"This functionality allows you to find all mesh elements to which belongs "
-"a certain point."
-msgstr ""
-
-# 95619f5461e542d38f9ec4798818c2eb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:9
-msgid ""
-"**To find the elements:** #. Select a mesh or a group #. Select from the "
-"Mesh menu or from the context menu the Find Element by Point item."
-msgstr ""
-
-# 808cd972a4064043ab3b4519afbd56bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:19
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# a552b96c818645748f81db671bcd62b5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:26
-msgid "In this dialog box you should select:"
-msgstr ""
-
-# 936ef9f5e4974b3bbb3ea1fb48943b6e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:26
-msgid "the coordinates of the point;"
-msgstr ""
-
-# 8000622bf5b54cc782de0ecaf6ffe524
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:27
-msgid ""
-"the type of elements to be found; it is also possible to find elements of"
-" all types related to the reference point. Choose type \"All\" to find "
-"elements of any type except for nodes and 0D elements."
-msgstr ""
-
-# 468a7c6589434779ae54692db6406554
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:28
-msgid "Click the **Find** button."
-msgstr ""
-
-# cd9815de90004e28830104b04231c2b6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/find_element_by_point.rst:37
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_find_element_by_point` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_borders.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_borders.po
deleted file mode 100644 (file)
index 49ea459..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# e744aed8ef694ea99b7130e99217c15d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_borders.rst:5
-msgid "Free borders"
-msgstr ""
-
-# 2f1cd2b0475b478096f3af6e60704e7f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_borders.rst:7
-msgid ""
-"This mesh quality control highlights 1D elements (segments) belonging to "
-"one element (face or volume) only."
-msgstr ""
-
-# 8548d598dbbd4a05812f4d4c733374bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_borders.rst:12
-msgid ""
-"In this picture the free borders are displayed in red. (Faces are "
-"explicitly shown via **Display Entity** menu as all elements but segments"
-" are hidden upon this control activation)."
-msgstr ""
-
-# fa891d3c4c794a4f94e45d3169e528ed
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_borders.rst:14
-msgid "**See Also** a sample TUI Script of a :ref:`tui_free_borders` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_edges.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_edges.po
deleted file mode 100644 (file)
index a435d5f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 5da48859829f4e028b17c84942927153
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_edges.rst:5
-msgid "Free edges"
-msgstr ""
-
-# a897c07e770b49948d19a31018ff06d0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_edges.rst:7
-msgid ""
-"This mesh quality control highlights borders of faces (links between "
-"nodes, not mesh segments) belonging to one face only."
-msgstr ""
-
-# 5e656e8b86c647f49fdeead239e846c1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_edges.rst:15
-msgid "**See Also** a sample TUI Script of a :ref:`tui_free_edges` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_faces.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_faces.po
deleted file mode 100644 (file)
index e420c8a..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 37b63c6f8c2947a98e5027ee26e62a36
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_faces.rst:5
-msgid "Free faces"
-msgstr ""
-
-# b2eed9e5bb4742d09ea37734a74b1e54
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_faces.rst:7
-msgid ""
-"This mesh quality control highlights the faces connected to less than two"
-" mesh volume elements. The free faces are shown with a color different "
-"from the color of shared faces."
-msgstr ""
-
-# f2ddd55c17c24a6c8d3987369b20200f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_faces.rst:12
-msgid ""
-"In this picture some volume mesh elements have been removed, as a result "
-"some faces became connected only to one volume. i.e. became free."
-msgstr ""
-
-# f88c4d87e5aa48c989ca51b9d1541761
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_faces.rst:14
-msgid "**See also:** A sample TUI Script of a :ref:`tui_free_faces` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_nodes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_nodes.po
deleted file mode 100644 (file)
index 9817126..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 00de523f05fb4028973b57a1043944ae
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_nodes.rst:5
-msgid "Free nodes"
-msgstr ""
-
-# 02fa9d9f90b14ce6acd7da029ef05cbc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_nodes.rst:7
-msgid ""
-"This mesh quality control highlights the nodes which are not connected to"
-" any  mesh element."
-msgstr ""
-
-# 1e3a78f5ddba4dd8959674d7be0dfb25
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_nodes.rst:12
-msgid ""
-"In this picture some nodes are not connected to any mesh element after "
-"deleting some elements and adding several isolated nodes."
-msgstr ""
-
-# 1c239db808994ddca40b15e4acefaa4b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/free_nodes.rst:14
-msgid "**See also:** A sample TUI Script of a :ref:`tui_free_nodes` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/generate_flat_elements.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/generate_flat_elements.po
deleted file mode 100644 (file)
index a3e6f44..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 89411e86108a40ff9ef699aa212edc20
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/generate_flat_elements.rst:5
-msgid "Generate flat elements on group boundaries or on faces"
-msgstr ""
-
-# 4d4976b61bf94a46b7add0d0a5acd818
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/generate_flat_elements.rst:7
-msgid ""
-"These functionalities, used in some mechanics calculations, allow to "
-"generate flat volume elements on the boundaries of a list of groups of "
-"volumes, or on a list of groups of faces."
-msgstr ""
-
-# 7b495da34061472ab6f9cb826c9d8879
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/generate_flat_elements.rst:10
-msgid "These functionalities are only available in python scripts."
-msgstr ""
-
-# 93ea46b0809d42a3b7a9807af09e7282
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/generate_flat_elements.rst:12
-msgid ""
-"**See** a sample TUI Script of "
-":ref:`tui_double_nodes_on_group_boundaries` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/group_of_underlying_elements.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/group_of_underlying_elements.po
deleted file mode 100644 (file)
index f4296a1..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# d607987c56ae4ed888b4297c350d3cc6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:5
-msgid "Group Based on Nodes of Other Groups"
-msgstr ""
-
-# a92ce49dadd64b8f8eebc759bfed0b4c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:8
-msgid ""
-"To create a standalone group of entities basing on nodes of existing "
-"reference groups, in the **Mesh** menu select **Group of underlying "
-"entities**."
-msgstr ""
-
-# 8e6c856a77a6408e98ef8a22b42366ce
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:10
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# 6fdd3d27da334237a0819be8ce25c2f5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:15
-msgid "In this dialog box specify"
-msgstr ""
-
-# 050d2fa8e0464b7a9bf49dddf09dd567
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:17
-msgid "the resulting **Group name**,"
-msgstr ""
-
-# cbc2c083b9254ae882b884f29cbb6fd4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:18
-msgid "the **Elements Type** of entities of the resulting group,"
-msgstr ""
-
-# e736defec9594c3aaf6fd65946e9b99b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:23
-msgid ""
-"the criterion of inclusion of a mesh entity to the result group, which is"
-" **Number of common nodes** of the entity and the reference groups:"
-msgstr ""
-
-# 4cb2886461674203b41470240952239a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:20
-msgid "**All** - include if all nodes are common;"
-msgstr ""
-
-# a948a443916841f5b9524653fc818827
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:21
-msgid ""
-"**Main** - include if all corner nodes are common (meaningful for a "
-"quadratic mesh)"
-msgstr ""
-
-# 8fabb8b4593e459ca24be8d29bd23d0a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:22
-msgid "**At least one** - include if one or more nodes are common"
-msgstr ""
-
-# 0801c9881b4d47ddb06da1e1eb374992
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:23
-msgid "**Majority** - include if half or more nodes are common"
-msgstr ""
-
-# 459841bfa1294ebf8e57a1577481e8e7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:25
-msgid "select reference groups,"
-msgstr ""
-
-# ac28c573d20143b4a10943d3569086d6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:26
-msgid ""
-"If **Include underlying entities only** option is activated an entity can"
-" be included if it is based on nodes of one element of a reference group."
-msgstr ""
-
-# f7212700b64f4017b7d411a4e862d964
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:29
-msgid "In the figure below, there are two reference Volume groups:"
-msgstr ""
-
-# 235e2411c07745e88d01d050fec69080
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:37
-msgid ""
-"In this case the following results for Faces, Edges and Nodes are "
-"obtained:"
-msgstr ""
-
-# 72befc0b56d94ee881b69420b3f361b1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst:57
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_create_dim_group` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/grouping_elements.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/grouping_elements.po
deleted file mode 100644 (file)
index 20e0abd..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# c054b7a14c9042f8baa4816281a43d06
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:5
-msgid "Grouping elements"
-msgstr ""
-
-# 1783fde7b458439598ddf51139a28a13
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:7
-msgid ""
-"In Mesh module it is possible to create groups of mesh entities: nodes, "
-"edges, faces, volumes, 0D elements or balls. One group contains elements "
-"of only one type. Groups, unlike sub-meshes, are exported along with mesh"
-" entities into the files of following formats: MED, UNV, and CGNS. The "
-"group has a color attribute which is used for visualization only and is "
-"not exported."
-msgstr ""
-
-# 1886e7e9a93946fb9e44e3830cc6cc43
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:9
-msgid "There are three types of groups different by their internal organization:"
-msgstr ""
-
-# 8a37933afc084fbc8c2bcafbbda74046
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:12
-msgid ""
-"**Standalone group** is a static set of mesh entities. Its contents can "
-"be explicitly controlled by the user. Upon removal of the entities "
-"included into the group, e.g. due to modification of  meshing parameter, "
-"the group becomes empty and its content can be restored only manually. "
-"Hence it is reasonable to create standalone groups when the mesh "
-"generation is finished and mesh quality is verified."
-msgstr ""
-
-# dc50a15a6ae94ca19fefca74f810b38b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:12
-msgid ""
-"Creation and edition of large standalone groups in "
-":ref:`creating_groups_page` dialog using manual edition is problematic "
-"due to poor performance of the dialog."
-msgstr ""
-
-# f59ed29ed1034010af2b9d983b45b1ed
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:14
-msgid ""
-"**Group on geometry** is associated to a sub-shape or a group of sub-"
-"shapes of the main shape and includes mesh entities generated on these "
-"geometrical entities. The association to a geometry is established at "
-"group construction and cannot be changed. The group contents are always "
-"updated automatically, hence the group can be created even before mesh "
-"elements generation."
-msgstr ""
-
-# 436b9beb403f412c839cd9a89387c2b5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:15
-msgid ""
-"**Group on filter** encapsulates a :ref:`filters_page`, which is used to "
-"select mesh entities composing the group from the whole mesh. Criteria of"
-" the filter can be changed at any time. The group contents are always "
-"updated automatically, hence the group can be created even before mesh "
-"elements generation."
-msgstr ""
-
-# 2be721ade5a44ee8bd7699bd9a575ea3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:17
-msgid ""
-"The group on geometry and group on filter can be converted to a "
-"standalone group."
-msgstr ""
-
-# f54c459f93f5487dae0f85a72b5cbec1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:25
-msgid "The following ways of group creation are possible:"
-msgstr ""
-
-# c8177f2484ed4978adc64ac213c52cc5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:29
-msgid ":ref:`creating_groups_page` dialog allows creation of a group of any type:"
-msgstr ""
-
-# af3bd9c89f79492986f94cfadef74c57
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:28
-msgid ""
-":ref:`standalone_group`, :ref:`group_on_geom` and :ref:`group_on_filter` "
-"using dedicated tabs."
-msgstr ""
-
-# ea80b2d5ab544b319053510bcc9db387
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:31
-msgid ""
-":ref:`create_groups_from_geometry_page` dialog allows creation of several"
-" groups on geometry at once."
-msgstr ""
-
-# e1679917bf7442ef9961ada8446ae345
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:32
-msgid ""
-"Standalone groups of all nodes and elements of the chosen sub-mesh (type "
-"of elements depends on dimension of sub-mesh geometry) can be created "
-"using **Mesh -> Construct Group** menu item (available from the context "
-"menu as well)."
-msgstr ""
-
-# fdefd2688724460c9bc0225a193654e8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:33
-msgid ""
-"Standalone groups of any element type can be created basing on nodes of "
-"other groups - using :ref:`group_of_underlying_elements_page` dialog."
-msgstr ""
-
-# 5c01af8b22004819bf427db0d75ed41f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:34
-msgid ""
-"Standalone groups can be created by applying "
-":ref:`using_operations_on_groups_page` to other groups."
-msgstr ""
-
-# 02613856191a4626b7d68300684bd947
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:35
-msgid ""
-"Creation of standalone groups is an option of many "
-":ref:`modifying_meshes_page` operations."
-msgstr ""
-
-# 360436afa0e74f84b35a359b6204ed41
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:37
-msgid "The created groups can be later:"
-msgstr ""
-
-# 7d2bb01ba5f24c36971cadd38569fdc1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:39
-msgid ":ref:`editing_groups_page`"
-msgstr ""
-
-# 13739bd0dfd949e8874c483bfcd38ec6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:40
-msgid ""
-":ref:`deleting_groups_page`, either as an object or together with "
-"contained elements."
-msgstr ""
-
-# b729c98c1cbc40b890e982742ee7f96f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:41
-msgid ""
-"The group on geometry and group on filter can be "
-":ref:`convert_to_standalone` group."
-msgstr ""
-
-# 6944ca9fd13942869ba1e32184ba5829
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:42
-msgid ":ref:`importing_exporting_meshes_page` into a file as a whole mesh."
-msgstr ""
-
-# aeec28fb28344beaac90d9e5916c0aaf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:44
-msgid ""
-"In the Object Browser, if an item contains more than one child group, it "
-"is possible to sort the groups by name in ascending order using **Sort "
-"children** context menu item."
-msgstr ""
-
-# 453af779ec47485d9204318e5810a6ca
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/grouping_elements.rst:52
-msgid ""
-"An important tool, providing filters for creation of standalone groups "
-"and groups on filter is :ref:`selection_filter_library_page`."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/importing_exporting_meshes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/importing_exporting_meshes.po
deleted file mode 100644 (file)
index e17bbf6..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 35714d67b5be489cb11ba9ff9345f570
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:6
-msgid "Importing and exporting meshes"
-msgstr ""
-
-# f62b0a75ed2b42e0a839deed88db6c75
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:8
-msgid ""
-"In MESH there is a functionality allowing import/export of meshes from/to"
-" **MED**, **UNV** (I-DEAS 10), **DAT** (simple ascii format), **STL**, "
-"**GMF** (internal format of DISTENE products, namely MG-CADSurf, MG-Tetra"
-" and MG-Hexa algorithms) and **CGNS** format files. You can also export a"
-" group as a whole mesh."
-msgstr ""
-
-# ff7a3149aefa4099a3db3a805c993434
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:10
-msgid "**To import a mesh:**"
-msgstr ""
-
-# f3055de8329a49c79a396b1e166c5cee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:12
-msgid ""
-"From the **File** menu choose the **Import** item, from its sub-menu "
-"select the corresponding format (MED, UNV, STL, GMF and CGNS) of the file"
-" containing your mesh."
-msgstr ""
-
-# 9465b08bc9e94b5d8e10cbf9ab684fb5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:13
-msgid ""
-"In the standard **Search File** dialog box find the file for import. It "
-"is possible to select multiple files to be imported all at once."
-msgstr ""
-
-# 799d071d6cde41179a6532a68f7dee2d
-# b9228a967592466bb7980eeace4010ca
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:14
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:24
-msgid "Click the **OK** button."
-msgstr ""
-
-# 0210e8579daa406cacf59960fc2c4fa7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:19
-msgid "**To export a mesh or a group:**"
-msgstr ""
-
-# e276963d75cd49fb93b2e9c6801b13d4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:21
-msgid "Select the object you wish to export."
-msgstr ""
-
-# 322c037300b54a30951303d98339ed50
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:22
-msgid ""
-"From the **File** menu choose the **Export** item, from its sub-menu "
-"select the format (MED, UNV, DAT, STL, GMF and CGNS) of the file which "
-"will contain your exported mesh."
-msgstr ""
-
-# bdf58ac99b8b4145b3e50307c0a5ff10
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:23
-msgid ""
-"In the standard **Search File** select a location for the exported file "
-"and enter its name."
-msgstr ""
-
-# 74a3fbc92aff45169859966b91e6b514
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:29
-msgid "If you try to export a group, the warning will be shown:"
-msgstr ""
-
-# 05edbd49b0854025ad97e15ad771d66f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:34
-msgid ""
-"**Don't show this warning anymore** check-box allows to switch off the "
-"warning. You can re-activate the warning in "
-":ref:`group_export_warning_pref`."
-msgstr ""
-
-# fee92e4eeceb43e3af929fd29deaf3c8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:36
-msgid ""
-"There are additional parameters available at export to MED and SAUV "
-"format files."
-msgstr ""
-
-# 6cd0b8de3c734386afe00b2849cae3b6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:41
-msgid "Auto Groups"
-msgstr ""
-
-# 343b2853b0ec4ef89cfc8c04f7e0361c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:43
-msgid ""
-"**Automatically create groups** check-box specifies whether to create "
-"groups of all mesh entities of available dimensions or not. The created "
-"groups have names like \"Group_On_All_Nodes\", \"Group_On_All_Faces\", "
-"etc. A default state of this check-box can be set in "
-":ref:`export_auto_groups_pref`."
-msgstr ""
-
-# 6befc5c462c14a5aa26387ad27a18b90
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:46
-msgid ""
-"**Automatically define space dimension** check-box specifies whether to "
-"define space dimension for export by mesh configuration or not. Usually "
-"the mesh is exported as a mesh in 3D space, just as it is in Mesh module."
-" The mesh can be exported as a mesh of a lower dimension in the following"
-" cases, provided that this check-box is checked:"
-msgstr ""
-
-# b985c52d03974cf096693ae06b59d265
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:45
-msgid "**1D**: if all mesh nodes lie on OX coordinate axis."
-msgstr ""
-
-# 683ece3abaee480187790486f255c7bb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:46
-msgid "**2D**: if all mesh nodes lie in XOY coordinate plane."
-msgstr ""
-
-# fa935c1bda3b4e76b8b6ea623fa4dfb7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst:48
-msgid "**See Also** a sample TUI Script of an :ref:`tui_export_mesh` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/index.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/index.po
deleted file mode 100644 (file)
index 524e83f..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 7a782e28ee2747b0bf7eb0f71407f51e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/index.rst:7
-msgid "Welcome to SMESH's documentation!"
-msgstr "Bienvenue dans la documentation de SMESH!"
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/introduction.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/introduction.po
deleted file mode 100644 (file)
index 0d247e3..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-03-30 11:57+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 0bdabc52b48a44c1b7833e2c080c8fc7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:3
-msgid "Introduction to Mesh module"
-msgstr ""
-
-# 1eab875349524c43807a6e067ef1001d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:8
-msgid "**Mesh** module of SALOME is destined for:"
-msgstr ""
-
-# f2265307afc24e5dab8b9d21393d91e7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:13
-msgid ":ref:`creating meshes <about_meshes_page>` in different ways:"
-msgstr ""
-
-# 76a6036c50fc422a9be2ffa57b5b5424
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:11
-msgid ""
-"by meshing geometrical models previously created or imported by the "
-"Geometry component;"
-msgstr ""
-
-# e65b12af95174deaa457c0d7ab33b729
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:12
-msgid ""
-"bottom-up, using :ref:`modifying_meshes_page`, especially "
-":ref:`extrusion_page` and :ref:`revolution_page`;"
-msgstr ""
-
-# 0a6123fd41e24e07a907de9e5e3b3557
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:13
-msgid ""
-"by generation of the 3D mesh from the 2D mesh not based on the geometry "
-"(:ref:`importing_exporting_meshes_page` for example);"
-msgstr ""
-
-# 11f6d462475e49488c6c7f9947d4206f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:15
-msgid ":ref:`importing_exporting_meshes_page` in various formats;"
-msgstr ""
-
-# 5a0fdbb470b04bf99fe49aa780f18fd4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:16
-msgid ":ref:`modifying_meshes_page` with a vast array of dedicated operations;"
-msgstr ""
-
-# 50b4f8f5a5244ef39ec17255f10c665f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:17
-msgid ":ref:`grouping_elements_page` of mesh elements;"
-msgstr ""
-
-# 4ec2919033934d18a852857bd8148fbb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:18
-msgid ""
-"filtering mesh entities (nodes or elements) using :ref:`filters_page` "
-"functionality for :ref:`grouping_elements_page` and applying "
-":ref:`modifying_meshes_page`;"
-msgstr ""
-
-# 03efffcd260f40e185a2884eaf563a3b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:19
-msgid ""
-":ref:`viewing_meshes_overview_page` in the VTK viewer and "
-":ref:`mesh_infos_page` on mesh and its sub-objects;"
-msgstr ""
-
-# e5718414f14243cdadbaa06b45ec5acc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:20
-msgid ""
-"applying to meshes :ref:`quality_page`, allowing to highlight important "
-"elements;"
-msgstr ""
-
-# 8b99877b0d4549d1abb078f50f6f33cd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:21
-msgid "taking various :ref:`measurements_page` of the mesh objects."
-msgstr ""
-
-# 73b3d1abfbf549b394bcb42bff5bd696
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/introduction.rst:24
-msgid ""
-"It is possible to use the variables predefined in "
-":ref:`using_notebook_mesh_page` to set parameters of operations. Mesh "
-"module preferences are described in the :ref:`mesh_preferences_page` "
-"section of SALOME Mesh Help. Almost all mesh module functionalities are "
-"accessible via :ref:`smeshpy_interface_page`. There is a set of "
-":ref:`tools_page` plugged-in the module to extend the basic functionality"
-" listed above."
-msgstr ""
-
-# d2c36cd2c8c443edab9f9e5683075b8b
-#~ msgid ":ref:`about_meshes_page` in different ways:"
-#~ msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/length.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/length.po
deleted file mode 100644 (file)
index 35a06b7..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 11cf0c544c364ac2952c99cf4e2c3530
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length.rst:5
-msgid "Length"
-msgstr ""
-
-# ed3d15c365174cf6a3183be3d3c6eb59
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length.rst:7
-msgid "Length quality control criterion returns a value of length of edge."
-msgstr ""
-
-# 88ba97200f8d4f9bbdeb5aafb3652a22
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length.rst:12
-msgid "**See Also** a sample TUI Script of a :ref:`tui_length_1d` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/length_2d.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/length_2d.po
deleted file mode 100644 (file)
index d622f98..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 95b4af8ed0b2420ba49b9edfe08eba0b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length_2d.rst:5
-msgid "Length 2D"
-msgstr ""
-
-# 7f6f65cbea6749148c469fe81c9ff0ee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length_2d.rst:7
-msgid ""
-"This quality control criterion consists of calculation of length of the "
-"links between corner nodes of mesh faces."
-msgstr ""
-
-# 4e76fceae6094126b072a470a4805ad8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length_2d.rst:9
-msgid "**To apply the Length 2D quality criterion to your mesh:**"
-msgstr ""
-
-# 1e7e63a037cd428fbc91417e209aa19c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length_2d.rst:11
-msgid "Display your mesh in the viewer."
-msgstr ""
-
-# 94070e60503e47b785da82b2e1090cb3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length_2d.rst:12
-msgid ""
-"Choose **Controls > Face Controls > Length 2D** or click **\"Length "
-"2D\"** button in the toolbar."
-msgstr ""
-
-# 036a92ddf9bb460597dffcb929388121
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length_2d.rst:20
-msgid ""
-"Your mesh will be displayed in the viewer with links colored according to"
-" the applied mesh quality control criterion:"
-msgstr ""
-
-# e35eabd4b75e4ff1ae503171382a3e5d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/length_2d.rst:26
-msgid "**See Also** a sample TUI Script of a :ref:`tui_length_2d` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/make_2dmesh_from_3d.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/make_2dmesh_from_3d.po
deleted file mode 100644 (file)
index 3aa6219..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 45e7bb44985d4a939a0893b7c72f64b5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:5
-msgid "Generate boundary elements"
-msgstr ""
-
-# 81dcd600380c4cedae1ad528c8312cd2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:7
-msgid ""
-"This functionality allows to generate mesh elements on the borders of "
-"elements of a higher dimension, for example, to create 2D elements around"
-" a block of 3D elements as in the following figure."
-msgstr ""
-
-# 230845ffba19429e8bb03f2f2727e88b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:16
-msgid "**To generate border elements:**"
-msgstr ""
-
-# 4a243378956441699e4dae772e14a9b1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:18
-msgid "Select a mesh or group in the Object Browser or in the 3D Viewer"
-msgstr ""
-
-# 4523e944e6a64901b5b06fe3e4ec2515
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:19
-msgid ""
-"From the Modification menu choose \"Create boundary elements\" item, or "
-"click \"Create boundary elements\" button in the toolbar"
-msgstr ""
-
-# 63f9d61107064b78a617115009fb8ba5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:28
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# 4d42e6e23f114646ae9e4dcfa643f2b1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:37
-msgid ""
-"Check in the dialog box one of two radio buttons corresponding to the "
-"type of operation you would like to perform."
-msgstr ""
-
-# 3a27e67ac6214278aa7298a993e72c0c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:38
-msgid "Fill the other fields available in the dialog box."
-msgstr ""
-
-# 44af91b085e04bfb8cee97be95a2bac7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:39
-msgid ""
-"Click the **Apply** or **Apply and Close** button to perform the "
-"operation."
-msgstr ""
-
-# e2f22c2cf1bc4bdaaa28c4ab85e405ca
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:41
-msgid ""
-"\"Create boundary elements\" dialog allows creation of boundary elements "
-"of two types."
-msgstr ""
-
-# bd438ed627bf43f0b4be802727f6603a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:43
-msgid ""
-"**2D from 3D** creates missing mesh faces on free facets of volume "
-"elements"
-msgstr ""
-
-# 3834e909e5ff4d6a8445aa188ea3d079
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:44
-msgid "**1D from 2D** creates missing mesh edges on free edges of mesh faces"
-msgstr ""
-
-# 0679ee21fde8464b88060eed26eb23f9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:46
-msgid ""
-"Here a **free facet** means a facet shared by only one volume, a **free "
-"edge** means an edge shared by only one mesh face."
-msgstr ""
-
-# ab132c23ffad42e28e68bcf5b353d166
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:49
-msgid "In this dialog:"
-msgstr ""
-
-# 325ea2589ed24f91afdc9bc4d123e3ad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:51
-msgid "specify the **Target** mesh, where the boundary elements will be created."
-msgstr ""
-
-# 58e483eeffa74cd3bb20054d19589c2e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:53
-msgid "**This mesh** adds elements in the selected mesh."
-msgstr ""
-
-# 4cd1d5e6c9fd45ccb6110cff9dcf48f5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:54
-msgid ""
-"**New mesh** adds elements to a new mesh. The new mesh appears in the "
-"Object Browser with the name that you can change in the adjacent box."
-msgstr ""
-
-# 99093f54748c4b05afda91533baf132a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:56
-msgid ""
-"activate **Copy source mesh** checkbox to copy all elements of the "
-"selected mesh to the new mesh, else the new mesh will contain only "
-"boundary elements (old and created by this operation)."
-msgstr ""
-
-# 4e85dfc4233e4db080fdde756adf6aec
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:57
-msgid ""
-"activate **Create group** checkbox to create a group to which all the "
-"boundary elements (old and new) are added. The new group appears in the "
-"Object Browser with the name that you can change in the adjacent box."
-msgstr ""
-
-# 649910b8deaf4b1684654f55e91496fb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst:59
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_make_2dmesh_from_3d` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_length_2d.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_length_2d.po
deleted file mode 100644 (file)
index 3aa1829..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 18d5fec451fc4bec8e3bef94502ddf15
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_2d.rst:5
-msgid "Element Diameter 2D"
-msgstr ""
-
-# 8a1bb7fc885d4639a1851fdb7f3954ae
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_2d.rst:7
-msgid ""
-"This quality control criterion consists in calculation of the maximal "
-"length of edges and diagonals of 2D mesh elements (triangles and "
-"quadrangles). For polygons the value is always zero."
-msgstr ""
-
-# 598c6758c6794caead22d02d1d22e930
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_2d.rst:9
-msgid "**To apply the Element Diameter 2D quality criterion to your mesh:**"
-msgstr ""
-
-# 8871ae25af5a4df8b72f0afe00a04b67
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_2d.rst:11
-msgid "Display your mesh in the viewer."
-msgstr ""
-
-# 1d9cea8722f341ba88c488744b22592d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_2d.rst:12
-msgid ""
-"Choose **Controls > Face Controls > Element Diameter 2D** or click "
-"**\"Element Diameter 2D\"** button in the toolbar."
-msgstr ""
-
-# 6f9b96ffef0d4c879310362f2c00ed4c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_2d.rst:20
-msgid ""
-"Your mesh will be displayed in the viewer with its elements colored "
-"according to the applied mesh quality control criterion:"
-msgstr ""
-
-# 11b56c89c3e4454cb19ceaf0973bf052
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_2d.rst:25
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_max_element_length_2d` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_length_3d.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_length_3d.po
deleted file mode 100644 (file)
index 67d5734..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 12508cdad0f0423fafaf17bc9c8f378a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_3d.rst:5
-msgid "Element Diameter 3D"
-msgstr ""
-
-# 76def95f4aca4cc98b3288305dc01fbc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_3d.rst:7
-msgid ""
-"This quality control criterion consists in calculation of the maximal "
-"length of edges and diagonals of 3D mesh elements (tetrahedrons, "
-"pyramids, etc). For polyhedra the value is always zero."
-msgstr ""
-
-# 568b7a64cb374f168fa585b5771ec419
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_3d.rst:9
-msgid "**To apply the Element Diameter 3D quality criterion to your mesh:**"
-msgstr ""
-
-# 6dfd01f191d84de7afd67327d52827ff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_3d.rst:11
-msgid "Display your mesh in the viewer."
-msgstr ""
-
-# e9f0faa61067408b99223bdc6864b806
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_3d.rst:12
-msgid ""
-"Choose **Controls > Volume Controls > Element Diameter 3D** or click "
-"**\"Element Diameter 3D\"** button in the toolbar."
-msgstr ""
-
-# 41baa3271ea844e0bd78095589febfa4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_3d.rst:20
-msgid ""
-"Your mesh will be displayed in the viewer with its elements colored "
-"according to the applied mesh quality control criterion:"
-msgstr ""
-
-# 42b48187fab0442dba02a4ab5a8ac103
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_length_3d.rst:26
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_max_element_length_3d` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_volume_hypo.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_volume_hypo.po
deleted file mode 100644 (file)
index 6d79654..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 08b2b54fd0774b3696f319f6ceca5da3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_volume_hypo.rst:5
-msgid "Max Element Volume hypothesis"
-msgstr ""
-
-# 0457ac97e64c486ba51dca3fef86ef8a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_volume_hypo.rst:7
-msgid ""
-"**Max Element Volume** hypothesis is applied for meshing of 3D objects "
-"composing your geometrical object. Definition of this hypothesis consists"
-" of setting the **maximum volume** of 3D meshing elements (depending on "
-"the chosen meshing algorithm it can be **hexahedrons** or "
-"**tetrahedrons**), which will compose the mesh of these 3D objects."
-msgstr ""
-
-# 9d33c4d96b7c4e14a7a446a2cc78d0c2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/max_element_volume_hypo.rst:12
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_max_element_volume` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/measurements.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/measurements.po
deleted file mode 100644 (file)
index 2379bf1..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# fc322395f3114a83adb58370f446f95f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:5
-msgid "Measurements"
-msgstr ""
-
-# 5602a5a07c844159a417072a006f34d7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:7
-msgid ""
-"Mesh module provides the possibility to perform different measurements of"
-" the selected mesh data."
-msgstr ""
-
-# ca57bc0c665840db9be756b5f53834f2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:9
-msgid ""
-"All measurement operations are available via **Measurements** top-level "
-"menu. Access to the measurements operations is implemented via a single "
-"dialog box, where each operation is represented as a separate tab page."
-msgstr ""
-
-# f3defa3bd44e4c6e8c67384d1c7ce878
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:14
-msgid "Minimum Distance"
-msgstr ""
-
-# cda8821e60574c028b59127f8b5c1420
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:16
-msgid ""
-"This operation allows measuring the distance between two objects. "
-"Currently only node-to-node and node-to-origin operations are available, "
-"but this operation will be extended in the future to support other mesh "
-"objects - elements, meshes, sub-meshes and groups."
-msgstr ""
-
-# d58990a267a6467289d1c24c72d17bb1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:18
-msgid ""
-"To start **Minimum Distance** operation, select **Minimum Distance** tab "
-"in **Measurements** dialog."
-msgstr ""
-
-# f43b6ff99b8e479cb1afde93f509c84b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:23
-msgid ""
-"Choose the first and the second target by switching the corresponding "
-"radio buttons, then select the objects the distance between which is to "
-"be calculated (or input their IDs directly in case of nodes/elements) and"
-" press **Compute** button."
-msgstr ""
-
-# 0672e2abea29499f8ee4bf6f6cea1989
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:25
-msgid "The following targets are supported:"
-msgstr ""
-
-# da713fad99714e7188634cba70b2fd5d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:27
-msgid "**Node:** single mesh node;"
-msgstr ""
-
-# a9f97eb4ee2141b1bf3e286171e01028
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:28
-msgid "**Element:** single mesh element (not available in this version);"
-msgstr ""
-
-# b09e4ea655c24f0c87101b2ae1cd0322
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:29
-msgid ""
-"**Object:** mesh, sub-mesh or group object (not available in this "
-"version);"
-msgstr ""
-
-# 591c17d6e4794e4b9f26fcbee026ea1b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:30
-msgid "**Origin:** origin of the global co-ordinate system."
-msgstr ""
-
-# 5003e44fc8c0476e882b706cc7dc432c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:32
-msgid ""
-"The result will be shown in the bottom area of the dialog. In addition, a"
-" simple preview will be shown in the 3D viewer."
-msgstr ""
-
-# 3ad37ba999964ff3a6b7a1e88e984770
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:40
-msgid "Bounding Box"
-msgstr ""
-
-# da5bdcea8e5a49308d61c9e12ecca419
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:42
-msgid ""
-"This operation allows calculating the bounding box of the selected "
-"object(s)."
-msgstr ""
-
-# 4f60b9cfbf7a4f19968029f505ec96e1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:44
-msgid ""
-"To start **Bounding Box** operation, select **Bounding Box** tab in "
-"**Measurements** dialog."
-msgstr ""
-
-# 9a3d5692ef8e47b5a03c060ac103bb38
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:49
-msgid ""
-"Choose the required type of the object by switching the corresponding "
-"radio button, select the object(s) and press *Compute* button."
-msgstr ""
-
-# 6003a5bb337b4ac4b36dfedff847fc92
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:51
-msgid "The following types of input are available:"
-msgstr ""
-
-# afe2b77d7ec34faf981b09ec9c6ffcc6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:53
-msgid "**Objects:** one or several mesh, sub-mesh or group objects;"
-msgstr ""
-
-# 44f599f7d67d4e39bf4b91f9b980090c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:54
-msgid "**Nodes:** a set of mesh nodes;"
-msgstr ""
-
-# 11fef5ea64e6465e97e804f548f6b58f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:55
-msgid "**Elements:** a set of mesh elements."
-msgstr ""
-
-# 038b1e48ec5747f3973ef6c599bd3881
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:57
-msgid ""
-"The result of calculation will be shown in the bottom area of the dialog."
-" In addition, a simple preview will be shown in the 3D viewer."
-msgstr ""
-
-# 7cc54603cadd42a4841f479edf2facb3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:65
-msgid "Basic Properties"
-msgstr ""
-
-# 5b9cc739e81f4463a60775f822ac6d66
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:67
-msgid ""
-"This operation provides calculation of length, area or volume for the the"
-" selected object:"
-msgstr ""
-
-# 7c75bcf01add43d9848c2758084caa73
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:69
-msgid "**Length** is calculated as a sum of lengths of all 1D elements;"
-msgstr ""
-
-# bbb98a9329f14fdb8c678b837e5f3633
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:70
-msgid "**Area** is a sum of areas of all 2D elements"
-msgstr ""
-
-# b7ae3f6bc9764b319d3433773d047f94
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:71
-msgid "**Volume** is a sum of volumes of all 3D elements."
-msgstr ""
-
-# d1331a969e75457b99dbfe68629a44d9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:73
-msgid ""
-"To start a **Basic Properties** calculation, select **Length**, **Area** "
-"or **Volume** item."
-msgstr ""
-
-# 4893de06f03b48a3ada2aaddaa0cda4d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:78
-msgid ""
-"In the dialog box select the required type of calculation (length, area "
-"or volume) and the object (mesh, sub-mesh or group) and press **Compute**"
-" button."
-msgstr ""
-
-# 47114ce539c94a6e909d19dc534989f1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:80
-msgid "The result of calculation will be shown in the bottom area of the dialog."
-msgstr ""
-
-# 263c60be188e4fdea91b20b8baf75215
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:83
-msgid ""
-"If the mesh consists of 3D elements only, its \"length\" and \"area\" "
-"will be 0."
-msgstr ""
-
-# b9aed2df15ca451fb2a046b12b2cd1f7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:84
-msgid ""
-"As calculation result is a sum of lengths, areas and volumes of all mesh "
-"elements, the duplication is not taken into account; i.e. all duplicated "
-"elements (elements built on the same set of nodes) will be included into "
-"the result."
-msgstr ""
-
-# c83732dc863246aebcd686b2d67c5586
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:85
-msgid "Similarly, intersection of elements is not taken into account."
-msgstr ""
-
-# 1f23367c476649a6ad4e6a02af31278d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/measurements.rst:87
-msgid "**See Also** a sample TUI Script of :ref:`tui_measurements_page`."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/merging_elements.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/merging_elements.po
deleted file mode 100644 (file)
index b6f95a7..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 4d342a1a88494139abfd4eee43cd2342
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:5
-msgid "Merging Elements"
-msgstr ""
-
-# cb13ca6428bb483ba5e92301548d7898
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:7
-msgid ""
-"This functionality allows to merge coincident elements of a mesh. Two "
-"elements are considered coincident if they are based on the same set of "
-"nodes."
-msgstr ""
-
-# 21ca56be96e745baaa45970e787e1623
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:15
-msgid ""
-"To merge elements choose in the main menu **Modification** -> "
-"**Transformation** -> **Merge elements** item. The following dialog box "
-"shall appear:"
-msgstr ""
-
-# e0df42b78b6e4d75a945f60e3cbb99bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:20
-msgid "In this dialog:"
-msgstr ""
-
-# 0c5f4a7c5f854892ae22b6deae36ec6d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:22
-msgid "Name is the name of the mesh object whose elements will be merged."
-msgstr ""
-
-# 029510ba8a04488a8d964493ba6c91a4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:56
-msgid ""
-"**Automatic** or **Manual** Mode allows choosing how the elements are "
-"processed. In the **Automatic** Mode all elements created on the same "
-"nodes will be merged. In **Manual** mode you can adjust groups of "
-"coincident elements detected by the program."
-msgstr ""
-
-# e7f34bed11b54bee84d4698b250acf5f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:24
-msgid "If the **Manual** Mode is selected, additional controls are available:"
-msgstr ""
-
-# 78e2e2a85f554ce2bcb53a70fe6a5695
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:30
-msgid ""
-"**Detect** button generates the list of coincident elements found in the "
-"selected object."
-msgstr ""
-
-# 372b8fa63cf8418e943c01a1dda35d5e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:31
-msgid ""
-"**Coincident elements** is a list of groups of elements for merging. "
-"After the operation all elements of each group will be united into one "
-"element. The first element of a group is kept and the others are removed."
-msgstr ""
-
-# d5ea870ea665439284d4a4307bce646f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:32
-msgid "**Remove** button deletes the selected group from the list."
-msgstr ""
-
-# 5601dbe1cc144ef7a4f045a552635c9f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:33
-msgid ""
-"**Add** button adds to the list a group of elements selected in the "
-"viewer with pressed \"Shift\" key."
-msgstr ""
-
-# fe8d239588e84806bc36e51099174e8c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:34
-msgid "**Select all** check-box selects all groups."
-msgstr ""
-
-# 9845355362054dfaab8861e408fae237
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:35
-msgid ""
-"**Show double elements IDs** check-box shows/hides identifiers of "
-"elements of the selected groups in the 3D viewer."
-msgstr ""
-
-# c85c581433994456a264035acbd45287
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:36
-msgid ""
-"**Edit selected group of coincident elements** list allows editing the "
-"selected group:"
-msgstr ""
-
-# d09a69d7214340dd8dabfb42d5bd6fc5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:58
-msgid "To confirm your choice click **Apply** or **Apply and Close** button."
-msgstr ""
-
-# 56640a257385465b929f11a82b5e4fa7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:61
-msgid ""
-"In this picture you see a triangle which coincides with one of the "
-"elements of the mesh. After we apply **Merge Elements** functionality, "
-"the triangle will be completely merged with the mesh."
-msgstr ""
-
-# 2f7267831b3b45ed8c2356fb8940555d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_elements.rst:66
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_merging_elements` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/merging_nodes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/merging_nodes.po
deleted file mode 100644 (file)
index 1c76c47..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 033566c4a91542a2bf913af827ba2fdf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:5
-msgid "Merging nodes"
-msgstr ""
-
-# 60bc4d8f71ac4807b7b0e8abc8c1bbfd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:7
-msgid ""
-"This functionality allows user to detect groups of coincident nodes with "
-"specified tolerance; each group of the coincident nodes can be then "
-"converted to the single node."
-msgstr ""
-
-# abf1019f274748b79cee33454902e06b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:15
-msgid "**To merge nodes of your mesh:**"
-msgstr ""
-
-# b9c33077e980439594561dcb5a89092f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:17
-msgid ""
-"Choose **Modification** -> **Transformation** -> **Merge nodes** menu "
-"item. The following dialog box shall appear:"
-msgstr ""
-
-# b5f31aaf0fd24a05b4ba5f14f4983d25
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:22
-msgid "**Name** is the name of the mesh whose nodes will be merged."
-msgstr ""
-
-# 068d08e8fbc441e0abe0f09e3bfaa863
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:23
-msgid ""
-"**Automatic** or **Manual** mode allows choosing how the nodes are "
-"processed. In **Manual** mode you can adjust groups of coincident nodes "
-"detected by the program and/or select any nodes to be merged."
-msgstr ""
-
-# d301ba18189443b286c7ca56a419a0f7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:24
-msgid "**Tolerance** is a maximum distance between nodes sufficient for merging."
-msgstr ""
-
-# 94d17edfe1b145e0a02c53cfa81ad4a1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:25
-msgid ""
-"Activation of **No merge of corner and medium nodes of quadratic cells** "
-"check-box prevents merging medium nodes of quadratic elements with corner"
-" nodes. This check-box is enabled provided that the selected mesh "
-"includes quadratic elements."
-msgstr ""
-
-# c0158f38e00543259da3f6c7075f1526
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:26
-msgid ""
-"Activation of **Avoid making holes** check-box prevents merging nodes "
-"that make elements invalid (but not degenerated) and hence removed. Thus,"
-" no holes in place of removed elements appear."
-msgstr ""
-
-# 1149123f535e4635ab06c10cc8f34826
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:27
-msgid ""
-"**Exclude groups from detection** group allows to ignore the nodes which "
-"belong to the specified mesh groups. This control is active provided that"
-" the mesh includes groups."
-msgstr ""
-
-# ca3d828d0b26461dade69760a26f5515
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:28
-msgid ""
-"**Nodes to keep during the merge** group allows to specify nodes to keep "
-"in the mesh. (By default a node being the first in a group of coincident "
-"nodes is kept.) It is possible to either select nodes in the Viewer or "
-"select groups of any element type whose nodes will be kept."
-msgstr ""
-
-# 7f0358cfb8084b21978e14a6f1696f32
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:30
-msgid "*Selection* button activates selection of nodes to keep."
-msgstr ""
-
-# a2776b8b7f3a4cf38f931d404e447523
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:31
-msgid "**Nodes** button activates selection of nodes in the Viewer."
-msgstr ""
-
-# 93619e16b7be492189784bc929141601
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:32
-msgid ""
-"**Groups and sub-meshes** button activates selection of groups and sub-"
-"meshes."
-msgstr ""
-
-# 93e33bcfae1d46e39eba7c2eb9ceaa87
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:33
-msgid "**Add** button adds selected nodes or groups to the list."
-msgstr ""
-
-# 04aa746a15af43eabc7946b31105c2f4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:34
-msgid ""
-"Nodes or groups selected in the list can be removed using **Remove** "
-"button."
-msgstr ""
-
-# b2323b67d3304401b4619872da0af4ee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:36
-msgid "**Automatic mode:**"
-msgstr ""
-
-# 438ef8a64eea4ab9b57982ab34522546
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:38
-msgid ""
-"In the **Automatic** Mode all nodes within the indicated tolerance will "
-"be merged. The nodes which belong to the groups specified in **Exclude "
-"groups from detection** will NOT be taken into account."
-msgstr ""
-
-# 113aa0679afe4c629bc55f1aaff30250
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:40
-msgid ""
-"The **Manual** mode gives you full control of what the operation will do."
-" In this mode additional controls are available:"
-msgstr ""
-
-# 74faf350ab90407ca867c8994ce95b37
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:42
-msgid ""
-"**Detect** button generates the list of coincident nodes for the given "
-"**Tolerance**."
-msgstr ""
-
-# 77344d7fdd4349258d0907932fab9cf4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:43
-msgid ""
-"**Coincident nodes** is a list of groups of nodes for merging. Upon "
-"**Apply** all nodes of each group will be united into one node. The first"
-" node of a group is kept and the others are removed. By default the first"
-" node has a lowest ID within the group."
-msgstr ""
-
-# c3993ce0ebf34ae2a3d8be122e80d412
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:45
-msgid "**Remove** button deletes the selected group from the list."
-msgstr ""
-
-# 4215b623a9bc4448b59f0e2c06b522a4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:46
-msgid "**Add** button adds to the list a group of nodes selected in the viewer."
-msgstr ""
-
-# b43143e8ac2f4696a4aa7ef2d4dadae8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:47
-msgid "**Select all** check-box selects all groups."
-msgstr ""
-
-# 9944a0f029844d2e97324b9e128e94b8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:48
-msgid ""
-"**Show double nodes IDs** check-box shows/hides identifiers of nodes of "
-"selected groups in the 3D viewer."
-msgstr ""
-
-# c2b3b7f1a2254beaa1125d16b862c301
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:54
-msgid ""
-"**Edit selected group of coincident nodes** list allows editing the "
-"selected group:"
-msgstr ""
-
-# 6d897aa5954b4aa49b4b5a64b5ac813f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:74
-msgid "To confirm your choice click **Apply** or **Apply and Close** button."
-msgstr ""
-
-# 00c92d262c8c442694dc4c48cdb9153b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/merging_nodes.rst:89
-msgid "**See Also** a sample TUI Script of a :ref:`tui_merging_nodes` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_infos.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_infos.po
deleted file mode 100644 (file)
index 5db2f81..0000000
+++ /dev/null
@@ -1,436 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 7d81cefb54f44eccabd8805a64feaa52
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:5
-msgid "Mesh Information"
-msgstr ""
-
-# 89889e72c9494bc9bab03d542b54668d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:7
-msgid ""
-"The user can obtain information about the selected mesh object (mesh, "
-"sub-mesh or group) using **Mesh Information** dialog box."
-msgstr ""
-
-# ff1da796963248c6b9138f85926677c7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:9
-msgid ""
-"To view the **Mesh Information**, select your mesh, sub-mesh or group in "
-"the **Object Browser** and invoke **Mesh Information** item from the "
-"**Mesh** menu or from the context menu, or click **\"Mesh Information\"**"
-" button in the toolbar."
-msgstr ""
-
-# d3ce5678ec72425ab844167351ba1a35
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:17
-msgid "The **Mesh Information** dialog box provides three tab pages:"
-msgstr ""
-
-# 4c2a7d70e1174e1bbcb9c90c391dd3a8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:19
-msgid ""
-":ref:`advanced_mesh_infos_anchor` - to show base and quantitative "
-"information about the selected mesh object."
-msgstr ""
-
-# a8ff1a77f1b5478581b8215a4dc6b2ba
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:20
-msgid ""
-":ref:`mesh_element_info_anchor` - to show detailed information about the "
-"selected mesh nodes or elements."
-msgstr ""
-
-# cd9b845363d44e9fae8876cd3d670173
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:21
-msgid ""
-":ref:`mesh_addition_info_anchor` - to show additional information "
-"available for the selected mesh, sub-mesh or group object."
-msgstr ""
-
-# 7f7d5011ce48497f88dfc0e839c2e965
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:22
-msgid ""
-":ref:`mesh_quality_info_anchor` - to show overall quality information "
-"about the selected mesh, sub-mesh or group object."
-msgstr ""
-
-# 1e4e551877a5439d8f08ed509126a198
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:27
-msgid "Dump Mesh Infos"
-msgstr ""
-
-# 5fb38a9c54b24ebca3cc605d9aff7232
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:29
-msgid ""
-"The button **Dump** allows printing the information displayed in the "
-"dialog box to a .txt file. The dialog for choosing a file also allows to "
-"select which tab pages to dump via four check-boxes. The default state of"
-" the check-boxes can be changed via :ref:`mesh_information_pref` "
-"preferences."
-msgstr ""
-
-# c1c44a7afe60443b8efacb99b20d59f2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:34
-msgid "Base Information"
-msgstr ""
-
-# eff63d29c1cf4713a8ffd71cc3fabb41
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:36
-msgid ""
-"The **Base Info** tab page of the dialog box provides general information"
-" on the selected object - mesh, sub-mesh or mesh group: name, type, total"
-" number of nodes and elements separately for each type: 0D elements, "
-"edges, faces, volumes, balls."
-msgstr ""
-
-# b1c4af2d0db64aa88fa72e5684a82c56
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:47
-msgid "Mesh Element Information"
-msgstr ""
-
-# f0b643284c0f4b45891e9c5fa9aa004f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:49
-msgid ""
-"The **Element Info** tab page of the dialog box gives detailed "
-"information about the selected mesh node(s) or element(s), namely:"
-msgstr ""
-
-# 5b960ae15bcd42db9ff97b7a344bbf1c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:63
-msgid "For a node:"
-msgstr ""
-
-# 94bed98445e74cfca9dd6ff743401364
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:52
-msgid "Node ID;"
-msgstr ""
-
-# 5415384b459d4fa7afcee1758b0922e4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:53
-msgid "Coordinates (X, Y, Z);"
-msgstr ""
-
-# 1b08c9f6f3944697bc525dd4215a3f2c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:54
-msgid ""
-"Connectivity information (connected elements); double click in this line "
-"reveals information about these elements;"
-msgstr ""
-
-# 0f627abab9b744728eb4ad5bb8c58b9d
-# 9d9a93666d544376abb1cad2805a36ee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:55
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:71
-msgid "Position on a shape (for meshes built on a geometry);"
-msgstr ""
-
-# 8597b257b7854a6f9f4f0ee8406f1a57
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:56
-msgid "Groups information (names of groups the node belongs to)."
-msgstr ""
-
-# dd2bb96aa28d4ee9b0ecdc9324126484
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:78
-msgid "For an element:"
-msgstr ""
-
-# 9d20e03209e242aba37bd93975152f26
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:66
-msgid "Element ID;"
-msgstr ""
-
-# e43c243e3eb3444c9baf282b618c7b83
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:67
-msgid "Type (triangle, quadrangle, etc.);"
-msgstr ""
-
-# d4914e3826f248578a726208013df6b4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:68
-msgid "Gravity center (X, Y, Z coordinates);"
-msgstr ""
-
-# 6949234f920a486cb906d114eaf7cbe5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:69
-msgid ""
-"Connectivity information (connected nodes); double click in a line of a "
-"node reveals the information about this node;"
-msgstr ""
-
-# d01ae8daf8f6432392513fb4d5500c11
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:70
-msgid "Quality controls (area, aspect ratio, volume, etc.);"
-msgstr ""
-
-# 9cca653ec3a6480a8cce35f662566c21
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:72
-msgid "Groups information (names of groups the element belongs to)."
-msgstr ""
-
-# dd33bf5a33a5462fa39bf74dc8d3d546
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:80
-msgid ""
-"The user can either input the ID of a node or element he wants to analyze"
-" directly in the dialog box or select the node(s) or element(s) in the 3D"
-" viewer. If **Show IDs** is activated, IDs of selected nodes or elements "
-"are displayed in the 3D viewer."
-msgstr ""
-
-# cb077e2a6ceb4ebe8802bc582d157afa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:84
-msgid ""
-"The information about the groups, to which the node or element belongs, "
-"can be shown in a short or in a detailed form. By default, for "
-"performance rasons, this information is shown in a short form (group "
-"names only). The detailed information on groups can be switched on via "
-":ref:`group_detail_info_pref` option of :ref:`mesh_preferences_page`."
-msgstr ""
-
-# 923342b3ad7e41fab497b255dc88ae9a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:89
-msgid "Additional Information"
-msgstr ""
-
-# 34666d2627364d1b8ff0349498ad6e57
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:91
-msgid ""
-"The **Additional Info** tab page of the dialog box provides an additional"
-" information on the selected object: mesh, sub-mesh or group."
-msgstr ""
-
-# 49f856bfc49c47d1b5de64631e7fe99e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:93
-msgid "For a mesh object, the following information is shown:"
-msgstr ""
-
-# 72d5242b71b249c18ccb7c9d408c8a81
-# 1e3737d61dc9484ab536f8ab9965688f
-# 253b54618e784dcf88395abdb8604b2c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:95
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:111
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:129
-msgid "Name"
-msgstr ""
-
-# bcd90f5cf56f4a579276960c64730cbe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:96
-msgid "Type: based on geomerty, imported, standalone"
-msgstr ""
-
-# 6d9220fc431d4f4588e1afe817726d26
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:97
-msgid "Shape (if mesh is based on geometry)"
-msgstr ""
-
-# 634b1cb624254513af618f9651367165
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:98
-msgid "File (if mesh is imported from the file)"
-msgstr ""
-
-# 8fcef07cbd8e4c8e959110e25468684f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:99
-msgid "Groups"
-msgstr ""
-
-# 9dcc32d82d3f44ad93eea1172ee7fb40
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:100
-msgid "Sub-meshes"
-msgstr ""
-
-# 298123d371c84c8a9d3ec9b471d7bff7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:109
-msgid "For a sub-mesh object, the following information is shown:"
-msgstr ""
-
-# 1a263fbe0d5745e4bc68112252fbdbdb
-# 06eb31f75ff14b43a3b49ce8a677bbee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:112
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:130
-msgid "Parent mesh"
-msgstr ""
-
-# 73bd15df7e464f2ead8317d2cf2f8a56
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:113
-msgid "Shape"
-msgstr ""
-
-# ee1c32811a5049a3962557099124d789
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:125
-msgid "Additional info for Group"
-msgstr ""
-
-# 7753f2da8b704cf9b333ba51a9b40072
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:127
-msgid "For a group object, the following information is shown:"
-msgstr ""
-
-# d5e8c5de0daa4e9fb8c20dec46f70746
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:131
-msgid "Type: standalone, group on geometry, group on filter"
-msgstr ""
-
-# 96565ccb377740d895ab72f79ac15d87
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:132
-msgid "Entity type: node, edge, face, volume"
-msgstr ""
-
-# 9419ea2f0d5a4b32bb4717b4b10a6a9c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:133
-msgid "Size"
-msgstr ""
-
-# 4080fb1e1e0b4825816dbbe625f6c169
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:134
-msgid "Color"
-msgstr ""
-
-# 12b372eddf8149c0898bf18d651d7b07
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:135
-msgid "Number of underlying nodes (for non-nodal groups)"
-msgstr ""
-
-# e3558e0ab22d4028884b8c596684ecae
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:145
-msgid ""
-"For the performance reasons, the number of underlying nodes is computed "
-"only by demand. For this, the user should press the \"Compute\" button "
-"(see picture). Also, the number of underlying nodes is automatically "
-"calculated if the size of the group does not exceed the "
-":ref:`nb_nodes_limit_pref` preference value (zero value means no limit)."
-msgstr ""
-
-# 81192f0c71c2410782e931f954c62c3f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:150
-msgid "Quality Information"
-msgstr ""
-
-# a282f45cc58848c083e6fbd45260f34a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:152
-msgid ""
-"The **Quality Info** tab provides overall information about mesh quality "
-"controls  on the selected object - mesh, sub-mesh or mesh group:"
-msgstr ""
-
-# 29935d09cde24625aba1b0b9c81982b3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:154
-msgid "Name;"
-msgstr ""
-
-# c72c541d0e6f4bf5a502ae2d8b2acd53
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:157
-msgid "Nodes information:"
-msgstr ""
-
-# a8ca55f1558d4ed3be30a014467f1b1e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:156
-msgid "Number of free nodes;"
-msgstr ""
-
-# 61b9d1bf812448fd88d3dc10eb10bed3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:157
-msgid "Maximal number of elements connected to a node;"
-msgstr ""
-
-# 3442981518a4477baa330bbd7114d368
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:158
-msgid "Number of double nodes;"
-msgstr ""
-
-# 860bb75731654f308b0cff31d797a392
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:159
-msgid "Edges information:"
-msgstr ""
-
-# 18711f162ef241b19597cc663953188f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:160
-msgid "Number of double edges;"
-msgstr ""
-
-# d93fad97bf7149879d0f97abc3a4c762
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:163
-msgid "Faces information:"
-msgstr ""
-
-# 675e5690562d4bed8785e768ce37af80
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:162
-msgid "Number of double faces;"
-msgstr ""
-
-# 848b64f01b644b1b80df295406bb5324
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:163
-msgid "Number of over-constrained faces;"
-msgstr ""
-
-# 09cb4878ffdd4c928bb97ddee5520f53
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:164
-msgid "Aspect Ratio histogram;"
-msgstr ""
-
-# a6de74e7efeb4f7c89136c5f342d0014
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:168
-msgid "Volume information:"
-msgstr ""
-
-# 41046f4beb214cce946a7f7cf6b3ee69
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:166
-msgid "Number of double volumes;"
-msgstr ""
-
-# 9d0915c8f6a74c3fb94863f1864492e9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:167
-msgid "Number of over-constrained volumes;"
-msgstr ""
-
-# f26e5055bb3d4fc7acc4a31088a47548
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:168
-msgid "Aspect Ratio 3D histogram."
-msgstr ""
-
-# 54b7bdc3b32740b0b0bd4383e05f6401
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:177
-msgid ""
-"It is possible to change **Double nodes tolerance**, which will be used "
-"upon consequent pressing *Compute* button. The default value of the "
-"tolerance can be set via the :ref:`dbl_nodes_tol_pref` preferences."
-msgstr ""
-
-# e726dde442ef4e099274cf3a8c4901e6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:180
-msgid ""
-"For performance reasons, all quality control values for big meshes are "
-"computed only by demand. For this, press the *Compute* button. Also, "
-"values are automatically computed if the number of nodes / elements does "
-"not exceed the :ref:`auto_control_limit_pref` set via the "
-":ref:`mesh_information_pref` preferences (zero value means that there is "
-"no limit)."
-msgstr ""
-
-# 9dfb329bf1f740798ff18de7dab8728e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:183
-msgid ""
-"The plot functionality is available only if the GUI module is built with "
-"Plot 2D Viewer (option SALOME_USE_PLOT2DVIEWER is ON when building GUI "
-"module)."
-msgstr ""
-
-# 84fc0f1732a04cec94d12b8c0e36d41e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_infos.rst:185
-msgid "See the :ref:`tui_viewing_mesh_infos`."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_preferences.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_preferences.po
deleted file mode 100644 (file)
index 4cda6ac..0000000
+++ /dev/null
@@ -1,792 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 86666e2cbeb4408eb608046a56bae1e4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:5
-msgid "Mesh preferences"
-msgstr ""
-
-# 1080a16d80af4f6698fcb587a5fb5edc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:7
-msgid ""
-"In the Mesh module you can set mesh preferences, which can be used right "
-"now or in later sessions with this module according to the preferences."
-msgstr ""
-
-# 0beca22f58e243ceb993d751a1a8944f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:10
-msgid "General Preferences"
-msgstr ""
-
-# b9d4edb0921f4a61a58226e0d1a62e62
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:18
-msgid "Automatic Update"
-msgstr ""
-
-# 2995e42634114a558ecf5246edc4cc3b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:20
-msgid "**Automatic Update**"
-msgstr ""
-
-# fba4cac0c7c947fb8146017a961bce44
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:22
-msgid ""
-"**Automatic Update** - if activated, the mesh in your viewer will be "
-"automatically updated after it's computation, depending on values of "
-"additional preferences specified below."
-msgstr ""
-
-# 708bc74a30ca48e4ada06ca8cc8ba142
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:23
-msgid ""
-"**Size limit (elements)** - allows specifying the maximum number of "
-"elements in the resulting mesh for which the automatic updating of the "
-"presentation is performed. This option affects only :ref:`compute_anchor`"
-" operation. Zero value means \"no limit\". Default value is 500 000 mesh "
-"elements."
-msgstr ""
-
-# 1480b086d8e2407d906f5478dd1bc3c5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:24
-msgid ""
-"**Incremental limit check** - if activated, the mesh size limit check is "
-"not applied to the total number of elements in the resulting mesh, it is "
-"applied iteratively to each entity type in the following order: 0D "
-"elements, edges, faces, volumes, balls. At each step the number of "
-"entities of a certain type is added to the total number of elements "
-"computed at the previous step - if the resulting number of elements does "
-"not exceed the size limit, the entities of this type are shown, otherwise"
-" the user is warned that some entities are not shown."
-msgstr ""
-
-# aff351500d1544bd97d70f959eaa383c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:29
-msgid "Display mode"
-msgstr ""
-
-# cb809edafa364c38b8433aee1e6bc506
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:32
-msgid "**Display mode**"
-msgstr ""
-
-# 8782e3f4895442dbb2ab8cb838c2ccca
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:32
-msgid ""
-"**Default display mode** - allows to set Wireframe, Shading, Nodes or "
-"Shrink :ref:`display_mode_page` as default."
-msgstr ""
-
-# 9c42d83b94c442a09353a74341f831b9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:37
-msgid "Quadratic 2D preferences"
-msgstr ""
-
-# 318d91232eab4675954fbf1c3c974649
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:41
-msgid "**Representation of the 2D quadratic elements**"
-msgstr ""
-
-# 4c5aa0543e0342e38e350eb599c73ffb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:40
-msgid ""
-"**Default mode of the 2D quadratic elements** - allows to select either "
-"*Lines* or *Arcs* as a default :ref:`quadratic_2d_mode` of 1D and 2D "
-":ref:`adding_quadratic_elements_page`."
-msgstr ""
-
-# 56b3c10d5a8243108db4b2c7ab50746b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:41
-msgid ""
-"**Maximum Angle** - maximum deviation angle used by the application to "
-"build arcs."
-msgstr ""
-
-# 82228d4240b24ab68f24d51af55a793b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:45
-msgid "**Quality Controls**"
-msgstr ""
-
-# db8abc18e3534199a5d1b7637945461b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:44
-msgid ""
-"**Display entity** - if activated, only currently :ref:`quality_page` "
-"entities are displayed in the viewer and other entities are temporarily "
-"hidden. For example if you activate :ref:`length_page` quality control, "
-"which controls the length of mesh segments, then only mesh segments are "
-"displayed and faces and volumes are hidden."
-msgstr ""
-
-# c7b8e4c2e550496c8dac1f4caaf238a5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:45
-msgid ""
-"**Use precision** - if activated, all quality controls will be computed "
-"at precision defined by **Number of digits after point** - as integers by"
-" default."
-msgstr ""
-
-# 825d67a587814e6ea3c73c46eea7ed63
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:50
-msgid "Double nodes tolerance"
-msgstr ""
-
-# c70001dcf1f642d38c6af2a7d997f4c1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:52
-msgid ""
-"**Double nodes tolerance** - defines the maximal distance between two "
-"mesh nodes, at which they are considered coincident by "
-":ref:`double_nodes_control_page` quality control. This value is also used"
-" in :ref:`mesh_quality_info_anchor` tab page of :ref:`mesh_infos_page` "
-"dialog."
-msgstr ""
-
-# 4c4a17a5d4464095bcfe63781192d2f6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:54
-msgid "**Mesh export**"
-msgstr ""
-
-# 5fad6433ed53451b800b0c057c951690
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:59
-msgid "Automatically create groups for MED export"
-msgstr ""
-
-# c00091fc9baa4238a97022d3bcc6c18d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:61
-msgid ""
-"**Automatically create groups for MED export** - defines a default state "
-"of a corresponding check-box in :ref:`export_auto_groups` dialog."
-msgstr ""
-
-# ae723b72a0064cd28894c59ab665457f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:66
-msgid "Show warning when exporting group"
-msgstr ""
-
-# 42789c858cf34959972e15e8ad73f74f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:68
-msgid ""
-"**Show warning when exporting group** - if activated, a warning is "
-"displayed when exporting a group."
-msgstr ""
-
-# 0e2314ebbb334c68b12b9424c20cad0c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:73
-msgid "Mesh computation"
-msgstr ""
-
-# 7660c985d55f4181a7dd4279285eca77
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:79
-msgid "**Mesh computation**"
-msgstr ""
-
-# 9db0838c8be64ab2adc3e575f76db3e7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:79
-msgid ""
-"**Show a computation result notification** - allows to select the "
-"notification mode about a :ref:`compute_anchor` result. There are 3 "
-"possible modes:"
-msgstr ""
-
-# cb70e77f347542c99f23f77235d63a7a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:77
-msgid "**Never** - not to show the :ref:`meshing_result_anchor` at all;"
-msgstr ""
-
-# 94b3a98b34a443a89dccea360d3fa397
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:78
-msgid ""
-"**Errors only** - the result dialog will be shown if there were some "
-"errors during a mesh computation;"
-msgstr ""
-
-# 867b39f49b4144a989ec2d53243880b6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:79
-msgid ""
-"**Always** - show the result dialog after each mesh computation. This is "
-"a default mode."
-msgstr ""
-
-# 40ae40b44bbc4809b2941b3a54c6de85
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:84
-msgid "Mesh information"
-msgstr ""
-
-# 8d70173df44042f48eaf242561e71f77
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:86
-msgid "**Mesh information**"
-msgstr ""
-
-# ddcdcb25a8b24745ad2f53287c0e7a2c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:90
-msgid ""
-"**Mesh element information** - allows changing the way "
-":ref:`mesh_element_info_anchor` is shown:"
-msgstr ""
-
-# a21c91e8ff0749a69a614b8a40094dfc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:89
-msgid "**Simple** - as a plain text"
-msgstr ""
-
-# 013890ff591d4fd5865a19533973a33e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:90
-msgid "**Tree** - in a tree-like form"
-msgstr ""
-
-# 7c139ca861ca4049842f3c636bfb3431
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:95
-msgid "Automatic nodes compute limit"
-msgstr ""
-
-# 73e888098e1f45dc90e2341559fc519e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:97
-msgid ""
-"**Automatic nodes compute limit** - allows defining the size limit for "
-"the :ref:`mesh_addition_info_group_anchor` for which the number of "
-"underlying nodes is calculated automatically. If the group size exceeds "
-"the value set in the preferences, the user will have to press \\em "
-"Compute button explicitly. Zero value means \"no limit\". By default the "
-"value is set to 100 000 mesh elements."
-msgstr ""
-
-# 55c0542ffcca4b22845f0dd00e60c78e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:102
-msgid "Automatic controls compute limit"
-msgstr ""
-
-# 02bd6a9486f640c1a5fcf04248e8c6a3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:104
-msgid ""
-"**Automatic controls compute limit** - allows defining a maximal number "
-"of mesh elements for which the quality controls in the "
-":ref:`mesh_quality_info_anchor` tab page are calculated automatically. If"
-" the number of mesh elements exceeds the value set in the preferences, it"
-" is necessary to press **Compute** button explicitly to calculate a "
-"quality measure. Zero value means \"no limit\". By default the value is "
-"set to 3 000 mesh elements."
-msgstr ""
-
-# 4ad8373601e4438cb7c1b466a6cf0bce
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:109
-msgid "Detailed info for groups"
-msgstr ""
-
-# 929ce657c75a430d9d2062a1fb848115
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:111
-msgid ""
-"**Show details on groups in element information tab** - when this option "
-"is switched off (default), only the names of groups, to which the node or"
-" element belongs, are shown in the :ref:`mesh_element_info_anchor` tab of"
-" \"Mesh Information\" dialog box. If this option is switched on, the "
-"detailed information on groups is shown."
-msgstr ""
-
-# 5534e2107e3740178ba5377cc16f9c58
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:112
-msgid ""
-"**Dump base information** - allows dumping base mesh information to the "
-"file, see :ref:`dump_mesh_infos`."
-msgstr ""
-
-# fa4b7f6a853540eb8a9e7becaec5e016
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:113
-msgid ""
-"**Dump element information** - allows dumping element information to the "
-"file, see :ref:`dump_mesh_infos`."
-msgstr ""
-
-# 4e9ca690ccb54fd19ec634e2313d24f1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:114
-msgid ""
-"**Dump additional information** - allows dumping additional mesh "
-"information to the file, see :ref:`dump_mesh_infos`."
-msgstr ""
-
-# 87a71ab143a44b168da433268838ea1d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:115
-msgid ""
-"**Dump controls information** - allows dumping quality mesh information "
-"to the file, see :ref:`dump_mesh_infos`."
-msgstr ""
-
-# ade975dfa7e242f99d48dcc46b238234
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:117
-msgid "**Automatic Parameters**"
-msgstr ""
-
-# b5aa47a535b84964835dc569d29580a3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:122
-msgid "Ratio Bounding Box Diagonal"
-msgstr ""
-
-# 7b436c68a4264dc3af6e68c7a2b3ace8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:124
-msgid ""
-"**Ratio Bounding Box Diagonal / Max Size** - defines the ratio between "
-"the bounding box of the meshed object and the Max Size of segments. It is"
-" used as a default value of :ref:`a1d_meshing_hypo_page` defining length "
-"of segments, especially by :ref:`max_length_anchor` hypothesis."
-msgstr ""
-
-# 3e2cd3f669414850ba68c3b68b8c7060
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:129
-msgid "Default Number of Segments"
-msgstr ""
-
-# d92bd97cf1394bef94493ef5a53459c7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:131
-msgid ""
-"**Default Number of Segments** - defines the default number of segments "
-"in :ref:`number_of_segments_anchor` hypothesis."
-msgstr ""
-
-# 40606083e2c74dc2a0057ea0531e70b2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:133
-msgid "**Mesh loading**"
-msgstr ""
-
-# 45553581d5f94aba9984043324a7a671
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:135
-msgid ""
-"**No mesh loading from study file at hypothesis modification** - if "
-"activated, the mesh data will not be loaded from the study file when a "
-"hypothesis is modified. This allows saving time by omitting loading data "
-"of a large mesh that is planned to be recomputed with other parameters."
-msgstr ""
-
-# aebbff71e88c47f6bf7544d54cb08225
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:137
-msgid ""
-"**Input fields precision** - allows to adjust input precision of "
-"different parameters. The semantics of the precision values is described "
-"in detail in **Using input widgets** chapter of GUI documentation "
-"(Introduction to Salome Platform / Introduction to GUI / Using input "
-"widgets). In brief: **positive** precision value is the maximum allowed "
-"number of digits after the decimal point in the fixed-point format; "
-"**negative** precision value is the maximum allowed number of significant"
-" digits in mantissa in either the fixed-point or scientific format."
-msgstr ""
-
-# 14aab516533d41d4a050872afd2d7129
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:139
-msgid ""
-"**Length precision** - allows to adjust input precision of coordinates "
-"and dimensions."
-msgstr ""
-
-# d5405bdf6e5d4627b8d964d6d5db2eba
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:140
-msgid "**Angular precision** - allows to adjust input precision of angles."
-msgstr ""
-
-# da60439d8a894f129cd270e031753a32
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:141
-msgid ""
-"**Length tolerance precision** - allows to adjust input precision of "
-"tolerance of coordinates and dimensions."
-msgstr ""
-
-# aac59c84886147de8d919059baef91f3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:142
-msgid ""
-"**Parametric precision** - allows to adjust input precision of parametric"
-" values."
-msgstr ""
-
-# 79555e19934a49abb6b1930101562e5a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:143
-msgid ""
-"**Area precision** - allows to adjust input precision of mesh element "
-"area."
-msgstr ""
-
-# dad33cd69f6e4ef88426e1acc4832395
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:144
-msgid ""
-"**Volume precision** - allows to adjust input precision of mesh element "
-"volume."
-msgstr ""
-
-# 5c78cd7db6cb401baffbf93527d8064d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:147
-msgid "**Preview**"
-msgstr ""
-
-# 8997363a1c8a4603baf5a97a12552ae7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:147
-msgid ""
-"**Sub-shapes preview chunk size** - allows to limit the number of "
-"previewed sub-shapes shown in the hypotheses creation dialog boxes, for "
-"example \"Reverse Edges\" parameter of :ref:`number_of_segments_anchor` "
-"hypothesis."
-msgstr ""
-
-# 00aa69a7e22d438da665287e8b618f32
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:152
-msgid "**Python Dump**"
-msgstr ""
-
-# 584a9e84ca8647beadbce1de3ebd1061
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:150
-msgid ""
-"**Historical python dump** - allows switching between *Historical* and "
-"*Snapshot* dump mode:"
-msgstr ""
-
-# e1f2a1c1f1fb4b66b71e7537f91396f3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:151
-msgid ""
-"In *Historical* mode, Python Dump script includes all commands performed "
-"by SMESH engine."
-msgstr ""
-
-# a95234780277478ea6f39395723b2274
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:152
-msgid ""
-"In *Snapshot* mode, the commands relating to objects removed from the "
-"Study as well as the commands not influencing the current state of meshes"
-" are excluded from the script."
-msgstr ""
-
-# e6208c776c314ae4bf5c7eac60b8fa14
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:157
-msgid "Mesh Preferences"
-msgstr ""
-
-# e29f953dd0ba4dc58ada2a9a6cc9dba1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:159
-msgid ""
-"**Mesh** tab page contains parameters defining the way the mesh is "
-"displayed in the 3D Viewer."
-msgstr ""
-
-# 6ecf85af43074d048a114c9ba06dc688
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:167
-msgid ""
-"**Nodes** - allows to define default parameters for nodes, which will be "
-"applied for a newly created mesh only. Existing meshes can be customized "
-"using :ref:`colors_size_page` available from the context menu of a mesh."
-msgstr ""
-
-# 8ccf649b8dc047868f28f3c3f0a9fd8b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:165
-msgid ""
-"**Color** -  allows to select the color of nodes. Click on the downward "
-"arrow near the colored line to access to the **Select Color** dialog box."
-msgstr ""
-
-# 62bc2f26045b48bc8a871b94c4594b91
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:166
-msgid "**Type of marker** - allows to define the shape of nodes."
-msgstr ""
-
-# b9edba04c49941fa9f94800bbbf57555
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:167
-msgid "**Scale of marker** - allows to define the size of nodes."
-msgstr ""
-
-# e3763e6d2df14a87a0ca9ed3390988d1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:184
-msgid ""
-"**Elements** - allows to define default parameters for different "
-"elements, which will be applied to a newly created mesh only. Existing "
-"meshes can be customized using :ref:`colors_size_page` available from the"
-" context menu of a mesh."
-msgstr ""
-
-# d4ced05a884144578beee7b41b229ac3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:170
-msgid ""
-"**Surface color**  - allows to select the surface color of 2D elements "
-"(seen in Shading mode). Click on the downward arrow near the colored line"
-" to access to the **Select Color** dialog box."
-msgstr ""
-
-# 4eb13db66ad340ef81e58ca2006dc05c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:171
-msgid ""
-"**Back surface color** - allows to select the back surface color of 2D "
-"elements. This is useful to differ 2d elements with reversed orientation."
-" Use the slider to select the color generated basing on the **Surface "
-"color** by changing its brightness and saturation."
-msgstr ""
-
-# 4ecb31a377fe40e884507dbb19654b59
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:172
-msgid ""
-"**Volume color** - allows to select the surface color of 3D elements "
-"(seen in Shading mode)."
-msgstr ""
-
-# 59054eccfc91434aaab74f4a4b673676
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:173
-msgid ""
-"**Reversed volume color** - allows to select the surface color of "
-"reversed 3D elements. Use the slider to select the color generated basing"
-" on the **Volume color** by changing its brightness and saturation."
-msgstr ""
-
-# 0eadab3ea42642a9ac2817e7ec68c13d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:174
-msgid "**0D element color** - allows to choose color of 0D mesh elements."
-msgstr ""
-
-# 12d2ced353384e17af983bbec65ec603
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:175
-msgid "**Ball color** - allows to choose color of discrete mesh elements (balls)."
-msgstr ""
-
-# 94058859794c4f1296afd0b57c603c7a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:176
-msgid "**Outline color** - allows to select the color of element borders."
-msgstr ""
-
-# 8d9ea519244d4eee81d556ae26af1a92
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:177
-msgid ""
-"**Wireframe color** - allows to select the color of borders of elements "
-"in the wireframe mode."
-msgstr ""
-
-# f0f6be573148448fb96233cfdbd68662
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:178
-msgid ""
-"**Preview color** - allows to select the preview color of the elements, "
-"which is used while :ref:`adding_nodes_and_elements_page`."
-msgstr ""
-
-# 128aa6ccf3974c04b0b1134b910f8714
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:179
-msgid "**Size of 0D elements** - specifies default size of 0D elements."
-msgstr ""
-
-# 9fae69316c3d4c2cb0866c29a81431c2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:180
-msgid ""
-"**Size of ball elements** - specifies default size of discrete elements "
-"(balls)."
-msgstr ""
-
-# bd02ccc8220b4310aef9dea39e221c3d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:181
-msgid ""
-"**Scale factor of ball elements** - specifies default scale factor of "
-"discrete elements (balls) allowing to adjust their size in the Viewer."
-msgstr ""
-
-# 1fe534c8fe2f48478a08a1e23f47d422
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:182
-msgid "**Line width** - allows to define the width of 1D elements (segments)."
-msgstr ""
-
-# d7ed3f0888834f70ac90d0c9a1746c7f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:183
-msgid ""
-"**Outline width** - allows to define the width of borders of 2D and 3D "
-"elements (shown in the Shading mode)."
-msgstr ""
-
-# f4445e8d16274349b65ffe42160b0b3d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:184
-msgid ""
-"**Shrink coef.** - allows to define relative size of a shrunk element "
-"compared a non-shrunk element in percents in the shrink mode."
-msgstr ""
-
-# ba8af4c61186416783c75abdddc55376
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:188
-msgid "**Groups**"
-msgstr ""
-
-# 2c3d1d895bce4fe4b0b9c64eef9b92e0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:187
-msgid ""
-"**Names color** - specifies color of group names to be used in the 3D "
-"viewer."
-msgstr ""
-
-# 3e367d8eb83041889295781fb9fb8b6b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:188
-msgid ""
-"**Default color** - specifies the default group color, which is used to "
-"create a new mesh group (see :ref:`creating_groups_page`)."
-msgstr ""
-
-# 9f28d514b76740b49b11f67f2abdd6e5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:192
-msgid "**Numbering** allows to define properties of numbering functionality:"
-msgstr ""
-
-# 13d5c7e6d97c4d6ca9ba3c3b47933c08
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:191
-msgid ""
-"**Nodes** - specifies text properties of nodes numbering (font family, "
-"size, attributes, color)."
-msgstr ""
-
-# fbb6f98ae4674d69a98679b3c0bf077f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:192
-msgid "**Elements** - same for elements."
-msgstr ""
-
-# 3b2821cfde164510b8f21340ab99d08d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:197
-msgid ""
-"**Orientation of Faces** - allows to define default properties of "
-"orientation vectors. These preferences will be applied to the newly "
-"created meshes only; properties of existing meshes can be customized "
-"using :ref:`colors_size_page` available from the context menu of a mesh."
-msgstr ""
-
-# b2873f76b99346cfbf7a9efa3725af30
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:195
-msgid "**Color** - allows to define the color of orientation vectors;"
-msgstr ""
-
-# b61f06ec5d92434fa51281eb9079901e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:196
-msgid "**Scale** - allows to define the size of orientation vectors;"
-msgstr ""
-
-# 0fe597ecf6414d71a73f4a2e081a534d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:197
-msgid "**3D Vector** - allows to choose between 2D planar and 3D vectors."
-msgstr ""
-
-# b8dd01b3567d42b4853155edd5b19938
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:200
-msgid "Selection Preferences"
-msgstr ""
-
-# 377d4d6db9bb4ecd909888cf3523a985
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:207
-msgid ""
-"**Selection** - performed with mouse-indexing (preselection) and left-"
-"clicking on an object, whose appearance changes as defined in the "
-"**Preferences**."
-msgstr ""
-
-# 37571072b8d84447ae82974380147c6a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:206
-msgid ""
-"**Object color** - allows to select the color of mesh (edges and borders "
-"of meshes) of the selected entity. Click on the colored line to access to"
-" the **Select Color** dialog box."
-msgstr ""
-
-# 014792f5a1bf478abe88ffa8a1d96fc6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:207
-msgid ""
-"**Element color** - allows to select the color of surface of selected "
-"elements (seen in Shading mode). Click on the colored line to access to "
-"the **Select Color** dialog box."
-msgstr ""
-
-# 875ecdc81187472c97afabdb3c0e1d99
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:210
-msgid ""
-"**Preselection** - performed with mouse-indexing on an object, whose "
-"appearance changes as defined in the **Preferences**."
-msgstr ""
-
-# 27f032e718204b42b067f9fc493ff400
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:210
-msgid ""
-"**Highlight color** - allows to select the color of mesh (edges and "
-"borders of meshes) of the entity. Click on the colored line to access to "
-"the **Select Color** dialog box."
-msgstr ""
-
-# e89697cf348d4119a626cb206ae809bd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:212
-msgid ""
-"**Precision** - in this menu you can set the value of precision used for "
-"**Nodes**, **Elements** and **Objects**."
-msgstr ""
-
-# b4e87347f0b5498a94add401c03f54d5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:215
-msgid "Scalar Bar Preferences"
-msgstr ""
-
-# 7fe95cdce3254c25b6066673b910d3c5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:221
-msgid ""
-"The following settings are default and will be applied to a newly created"
-" mesh only. Existing meshes can be customized using local "
-":ref:`scalar_bar_dlg` available from the context menu of a mesh."
-msgstr ""
-
-# 08f246d4c49f4f67b6c1a92ed2a56b13
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:223
-msgid ""
-"**Font** - in this menu you can set type, face and color of the font of "
-"**Title** and **Labels**."
-msgstr ""
-
-# b7bf0da17d79446c98c3a5cae06670fa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:225
-msgid ""
-"**Colors & Labels** - in this menu you can set the **number of colors** "
-"and the **number of labels** in use."
-msgstr ""
-
-# c425048b5ce148fd95e42f0b11ea5602
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:227
-msgid ""
-"**Orientation** - here you can choose between vertical and horizontal "
-"orientation of the **Scalar Bar**."
-msgstr ""
-
-# 54a8c11082074ffc84fd6480d3189cf3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:231
-msgid ""
-"**Origin & Size Vertical & Horizontal** - allows to define placement "
-"(**X** and **Y**) and lookout (**Width** and **Height**) of Scalar Bars."
-msgstr ""
-
-# 64390fb45cd844b2a17a9a19ee25c59b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:230
-msgid "**X** - abscissa of the point of origin (from the left side)."
-msgstr ""
-
-# ccd005065b8c4940b3945cac2d4645d8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:231
-msgid "**Y** - ordinate of the origin of the bar (from the bottom)."
-msgstr ""
-
-# 7bbe2195abfa475692d47d40581f2903
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:236
-msgid ""
-"**Distribution** in this menu you can Show/Hide distribution histogram of"
-" the values of the **Scalar Bar** and specify the **Coloring Type** of "
-"the histogram:"
-msgstr ""
-
-# 89b1d9cc918d4094bfc53d242697b1da
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:234
-msgid "**Multicolor** - the histogram is colored as **Scalar Bar**."
-msgstr ""
-
-# 5776b1b6f872431f9c3095827c9e6a69
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_preferences.rst:235
-msgid ""
-"**Monocolor** - the histogram is colored as selected with **Distribution "
-"color** selector."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_through_point.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_through_point.po
deleted file mode 100644 (file)
index 6ba529d..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 1ffc38982adf47fcade31b8e5e698da0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:5
-msgid "Moving nodes"
-msgstr ""
-
-# a52fe3efbbf5414fb82bac9d49344fe7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:7
-msgid ""
-"In mesh you can define a node at a certain point either * by movement of "
-"the node closest to the point or * by movement of a selected node to the "
-"point."
-msgstr ""
-
-# 9b2db2d4c63c43d684267300f72cccb8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:11
-msgid "**To displace a node:**"
-msgstr ""
-
-# f2bbc2696ae54993aa4d87bef3570106
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:13
-msgid ""
-"From the **Modification** menu choose the **Move node** item or click "
-"**\"Move Node\"** button in the toolbar."
-msgstr ""
-
-# e388044d0bb6426d9b919415688b6bed
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:21
-msgid "The following dialog will appear:"
-msgstr ""
-
-# cc660e1218ff408091d02886affe3b76
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:38
-msgid ""
-"Specify the way of node selection: manually (the first radio button) or "
-"automatically (the second radio button)."
-msgstr ""
-
-# 220607f94c2446048817a084caad5621
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:39
-msgid ""
-"If the manual method is selected, select a node to move (X, Y, Z fields "
-"show the original coordinates of the node) or type the node ID."
-msgstr ""
-
-# e5409113789b411f8764353f9e31ed70
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:40
-msgid ""
-"Enter the coordinates of the destination point. You can click **Update "
-"Destination** button to set the coordinates of the destination point "
-"equal to the coordinates of the node to move."
-msgstr ""
-
-# 43d89a1d7ac94e65a87b159f7b846ece
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:41
-msgid "Activate **Preview** check-box to show the result of move in the viewer."
-msgstr ""
-
-# 1d61a59cc3074d3c8517729005d4c586
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:42
-msgid ""
-"Click the **Apply** or **Apply and Close** button to confirm the "
-"operation."
-msgstr ""
-
-# 93d94c236da04a568845b1ed95848ee9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/mesh_through_point.rst:56
-msgid "**See Also** a sample TUI Script of a :ref:`tui_moving_nodes` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/minimum_angle.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/minimum_angle.po
deleted file mode 100644 (file)
index 18eb025..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 8c9833a8c4b34b6686d275f35ce51cb8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/minimum_angle.rst:5
-msgid "Minimum angle"
-msgstr ""
-
-# e2969f989b9d425da09b6e9415958e2d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/minimum_angle.rst:7
-msgid ""
-"**Minimum angle** mesh quality criterion consists of calculation of the "
-"minimum value of angle between two adjacent sides of a 2D meshing element"
-" (triangle or quadrangle)."
-msgstr ""
-
-# 3bc1eb4dd5ae4d6bbd8573ff0fcfa5fa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/minimum_angle.rst:9
-msgid "**To apply the Minimum angle quality criterion to your mesh:**"
-msgstr ""
-
-# 52f131a28705437fa82b4ef6268be568
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/minimum_angle.rst:11
-msgid "Display your mesh in the viewer."
-msgstr ""
-
-# 503b3b09b790497bacc2a83d60f5fc06
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/minimum_angle.rst:12
-msgid ""
-"Choose **Controls > Face Controls > Minimum angle** or click **\"Minimum "
-"Angle\"** button."
-msgstr ""
-
-# 69fc068d689f4ad9b58d3ddffd5cd835
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/minimum_angle.rst:20
-msgid ""
-"Your mesh will be displayed in the viewer with its elements colored "
-"according to the applied mesh quality control criterion:"
-msgstr ""
-
-# 1b79a35974814c9bba550884b6f6e2c2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/minimum_angle.rst:25
-msgid "**See Also** a sample TUI Script of a :ref:`tui_minimum_angle` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/modifying_meshes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/modifying_meshes.po
deleted file mode 100644 (file)
index 58ad3e3..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 766444ec7ead4382bf9a9624b129e90c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:5
-msgid "Modifying meshes"
-msgstr ""
-
-# b99424d3a44043c289ea11b4c5b4d71d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:7
-msgid ""
-"Salome provides a vast specter of mesh modification and transformation "
-"operations, giving the possibility to:"
-msgstr ""
-
-# 27b4caab85ab4022b129e2ce9e794246
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:9
-msgid ""
-":ref:`adding_nodes_and_elements_page` mesh elements from nodes to "
-"polyhedrons at an arbitrary place in the mesh."
-msgstr ""
-
-# 908e3ed5a71c4ae59dce473a7a0107ef
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:10
-msgid ""
-":ref:`adding_quadratic_elements_page` mesh elements from quadratic "
-"segments to quadratic hexahedrons at an arbitrary place in the mesh."
-msgstr ""
-
-# b343ea63a1f2423aabb45a296d82569b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:11
-msgid ""
-":ref:`removing_nodes_and_elements_page` any existin\" mesh elements and "
-"nodes."
-msgstr ""
-
-# d2890a80488d44a3b4bd107dbde60fd4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:12
-msgid ""
-":ref:`translation_page` in the indicated direction the mesh or some of "
-"its elements."
-msgstr ""
-
-# a99da6a135bf4032baf8b18f813237d1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:13
-msgid ""
-":ref:`rotation_page` by the indicated axis and angle the mesh or some of "
-"its elements."
-msgstr ""
-
-# b8a081a280be48a2b51ef68ee3df88d7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:14
-msgid ":ref:`scale_page` the mesh or some of its elements."
-msgstr ""
-
-# b559388bd7d947cf8e7575002ad2f316
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:15
-msgid ""
-":ref:`symmetry_page` the mesh through a point, a vector or a plane of "
-"symmetry."
-msgstr ""
-
-# a2573fe7b4cd4282b21f0ba208d19109
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:16
-msgid ""
-":ref:`double_nodes_page`. Duplication of nodes can be useful to emulate a"
-" crack in the model."
-msgstr ""
-
-# 8a13df333f3442479415aefa0bcb6d9c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:17
-msgid ""
-"Unite meshes by :ref:`sewing_meshes_page` free borders, border to side or"
-" side elements."
-msgstr ""
-
-# 19f0c2af911c4967974bee39cc3cab16
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:18
-msgid ":ref:`merging_nodes_page`, coincident within the indicated tolerance."
-msgstr ""
-
-# 15e001da164c49089b3ef370f7dd4c13
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:19
-msgid ":ref:`merging_elements_page` based on the same nodes."
-msgstr ""
-
-# a8f8b84148e142adb9c83a0f217b6622
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:20
-msgid ""
-":ref:`mesh_through_point_page` to an arbitrary location with consequent "
-"transformation of all adjacent elements."
-msgstr ""
-
-# ca7ee1d4df254c4bbd77cadcfa91d8b2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:21
-msgid ":ref:`diagonal_inversion_of_elements_page` between neighboring triangles."
-msgstr ""
-
-# 9cebbde1db824710b713cc4d69e85b1f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:22
-msgid ":ref:`uniting_two_triangles_page`."
-msgstr ""
-
-# 137a90a9bb2f4814a5b7cf6b24779cf4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:23
-msgid ":ref:`uniting_set_of_triangles_page`."
-msgstr ""
-
-# db6f2ee5a1a04f7daffa3b6aa71d3bac
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:24
-msgid ":ref:`changing_orientation_of_elements_page` of the selected elements."
-msgstr ""
-
-# 80f3f3ab13eb43febe9c059190c95bbf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:25
-msgid ":ref:`reorient_faces_page` by several means."
-msgstr ""
-
-# aed703cfc9ff45a7b270e7076f1c60db
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:26
-msgid ":ref:`cutting_quadrangles_page` into two triangles."
-msgstr ""
-
-# f349265200824d7e8e3584c4af8f698d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:27
-msgid ":ref:`split_to_tetra_page` volumic elements into tetrahedra or prisms."
-msgstr ""
-
-# 7799482f6ae34a23b5da41d5da7b6609
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:28
-msgid ""
-":ref:`split_biquad_to_linear_page` elements into linear ones without "
-"creation of additional nodes."
-msgstr ""
-
-# 82bae0fef4244cc4b142353235b5396b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:29
-msgid ""
-":ref:`smoothing_page` elements, reducung distortions in them by adjusting"
-" the locations of nodes."
-msgstr ""
-
-# e7247ed2cd3749e98530ebc18b727a6f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:30
-msgid ""
-"Create an :ref:`extrusion_page` along a vector or by normal to a "
-"discretized surface."
-msgstr ""
-
-# 60b895357efe4a218b2e541b17b66fa2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:31
-msgid "Create an :ref:`extrusion_along_path_page`."
-msgstr ""
-
-# 5f2876a7d88c4811ade4f18f430af9d5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:32
-msgid ""
-"Create elements by :ref:`revolution_page` of the selected nodes and "
-"elements."
-msgstr ""
-
-# 918249030bc648e88c6c8630a11f1524
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:33
-msgid "Apply :ref:`pattern_mapping_page`."
-msgstr ""
-
-# ced0d6b7e4864f8dac1921be77245e8b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:34
-msgid ":ref:`convert_to_from_quadratic_mesh_page`, or vice versa."
-msgstr ""
-
-# 35a85820daf940c0a5397a64a5c2c0f7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:35
-msgid ":ref:`make_2dmesh_from_3d_page`."
-msgstr ""
-
-# 5fd1fc86df7a4a178e56e5d9291d64a0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:36
-msgid ":ref:`generate_flat_elements_page`."
-msgstr ""
-
-# c6750c45022d4ad0b3ebca52813ec41f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:37
-msgid ":ref:`cut_mesh_by_plane_page`."
-msgstr ""
-
-# f4f3aad385cc4ca6bf93008ef0b474a9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:41
-msgid ""
-"It is possible to :ref:`edit_anchor` of a lower dimension before "
-"generation of the mesh of a higher dimension."
-msgstr ""
-
-# 3fb1488f7c8d4cc7a7c33a989b0d0568
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modifying_meshes.rst:45
-msgid ""
-"It is possible to use the variables defined in the SALOME **NoteBook** to"
-" specify the numerical parameters used for modification of any object."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/modules.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/modules.po
deleted file mode 100644 (file)
index afadf65..0000000
+++ /dev/null
@@ -1,2262 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2018.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.4.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-03-29 19:04+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# e41e3c671aa54728b4e5f5ca6bddbf86
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:5
-msgid "Modules"
-msgstr ""
-
-# aebf98fd861d4330b03ef7b64056fa02
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:9
-msgid "Auxiliary methods and structures"
-msgstr ""
-
-# 811bc64367414a5e9ff781cf8554a052
-# a0d581078ae54c05b39be45170c4ae0a
-# 833f3ba9a22943d1921a681210df069d
-# f705209abf3943bcb0a2e09c4a540f92
-# e601d074e02742daaae08693703243b8
-# 5037ee543108413b8ec8a2de598111a5
-# 05449a7321cd48fb94e0f1be9de0fb32
-# db8f2686329e4652953758af4947ece8
-# 4cb751468e10471e93d61039402100fd
-# 13970cfb87434b04a32db9eecfb903a5
-# 4033255d507a452aa311ae5473f7dc7a
-# d80bfa3e0976405f923273ec99aa2d32
-# 3ad42612015247b4bdb16b3e49e3e43e
-# 48dffecd658e401abb436f0cb8ee9418
-# 17ee12b84391457d8813dff553c9e848
-# f8f6b38cdf87402ebf89c6323e3310d1
-# 0bc2f8de0d494fa993a816fc52fadcde
-# f2082e2c86904a56bb80a3f631166244
-# a44d1f363dec46d780a728aa2d4273c6
-# 1132bc4b1642403ca7d5a215870d9975
-# 7987824601644f049d6f3e1f502c7c3c
-# e974e569b598409e8ae0982bfac3fbf2
-# 84e5f6e90539423abda4f8a842a8b445
-# b76ec16a72f74b488b47cd9d98a471d4
-# 264bfb3ce9974cf59bd283d458093656
-# 294f1c8a01084d1aaebc6c741c5ba9e5
-# 9bcc9b34bead4b80ae7dfaff61a97164
-# 44272bb07e564f4f9e86895a04480a07
-# fbd275b4f6bb40afbd87bf6d8f3fcccc
-# 093b90cc9407408faabdaad9815a1e63
-# a57c9921cd714979b517a9b1874fe079
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:11
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:81
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:90
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:124
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:187
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:213
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:239
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:269
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:279
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:296
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:312
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:325
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:342
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:483
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:507
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:519
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:551
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:573
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:584
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:594
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:644
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:670
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:680
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:739
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:752
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:785
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:800
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:815
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:858
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:869
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:905
-msgid "Functions:"
-msgstr ""
-
-# 90d7d9c366264e3cb33de218f9746a35
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:13
-msgid ":meth:`def ParseParameters <smeshBuilder.ParseParameters>`"
-msgstr ""
-
-# dff21f5a6faf431f85c1310c07d165f7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:15
-msgid ":meth:`def ParseAngles <smeshBuilder.ParseAngles>`"
-msgstr ""
-
-# 131d4ac6295a4a08b0354384a78fed31
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:17
-msgid ":meth:`def __initPointStruct <smeshBuilder.__initPointStruct>`"
-msgstr ""
-
-# 594dc5118b6e47f4a48eab53ca6ec2cd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:19
-msgid ":meth:`def __initAxisStruct <smeshBuilder.__initAxisStruct>`"
-msgstr ""
-
-# d8dd52dbcac94904af5331430d882ea8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:21
-msgid ":meth:`def IsEqual <smeshBuilder.IsEqual>`"
-msgstr ""
-
-# 5c241e5788bb496188e0da7d3ae7e675
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:23
-msgid ":meth:`def GetName <smeshBuilder.GetName>`"
-msgstr ""
-
-# 073745b0d49a44228c12d376085d0e50
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:25
-msgid ":meth:`def TreatHypoStatus <smeshBuilder.TreatHypoStatus>`"
-msgstr ""
-
-# 60a4a00c8fb140a7a8138c2ba80a0cd9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:27
-msgid ":meth:`def AssureGeomPublished <smeshBuilder.AssureGeomPublished>`"
-msgstr ""
-
-# e0d3b809865e4952938ce5cbbb6f05a7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:29
-msgid ":meth:`def FirstVertexOnCurve <smeshBuilder.FirstVertexOnCurve>`"
-msgstr ""
-
-# 4570428a6bb64ebdb16d35716cee8851
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:31
-msgid ":meth:`def DumpPython <smeshBuilder.smeshBuilder.DumpPython>`"
-msgstr ""
-
-# 07dd4d93980941c58f01921a273f450a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:33
-msgid ""
-":meth:`def SetDumpPythonHistorical "
-"<smeshBuilder.smeshBuilder.SetDumpPythonHistorical>`"
-msgstr ""
-
-# 54aea7ee63a447b78baf263a2fb67a45
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:35
-msgid ":meth:`def init_smesh <smeshBuilder.smeshBuilder.init_smesh>`"
-msgstr ""
-
-# d867ca13d77146db80d0116ffd8364f9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:37
-msgid ":meth:`def EnumToLong <smeshBuilder.smeshBuilder.EnumToLong>`"
-msgstr ""
-
-# b358173ebc07437abd819fc4fc66eb42
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:39
-msgid ":meth:`def ColorToString <smeshBuilder.smeshBuilder.ColorToString>`"
-msgstr ""
-
-# bd7f4d82ae644c6780db68f4a46ff570
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:41
-msgid ":meth:`def GetPointStruct <smeshBuilder.smeshBuilder.GetPointStruct>`"
-msgstr ""
-
-# 2090d4b1e0c84c81ad0481932b4633b5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:43
-msgid ":meth:`def GetDirStruct <smeshBuilder.smeshBuilder.GetDirStruct>`"
-msgstr ""
-
-# 70dac38e98f14d5cbe0ff0ee25c7b975
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:45
-msgid ":meth:`def MakeDirStruct <smeshBuilder.smeshBuilder.MakeDirStruct>`"
-msgstr ""
-
-# bbbe42f4edeb42a19355501cb85b45f2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:47
-msgid ":meth:`def GetAxisStruct <smeshBuilder.smeshBuilder.GetAxisStruct>`"
-msgstr ""
-
-# 22e3e252f0b94814a8c2addc678a2293
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:49
-msgid ":meth:`def SetName <smeshBuilder.smeshBuilder.SetName>`"
-msgstr ""
-
-# 32475d1ca7674396ba6cb634910d0850
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:51
-msgid ":meth:`def SetEmbeddedMode <smeshBuilder.smeshBuilder.SetEmbeddedMode>`"
-msgstr ""
-
-# 03385dd886c24fb6b92ddf0a436a4ce6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:53
-msgid ":meth:`def IsEmbeddedMode <smeshBuilder.smeshBuilder.IsEmbeddedMode>`"
-msgstr ""
-
-# 0d69434db52a486f964328ffce6173b2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:55
-msgid ":meth:`def SetCurrentStudy <smeshBuilder.smeshBuilder.SetCurrentStudy>`"
-msgstr ""
-
-# ddc249302ea34d25ba0d14c8160061b8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:57
-msgid ":meth:`def GetCurrentStudy <smeshBuilder.smeshBuilder.GetCurrentStudy>`"
-msgstr ""
-
-# 7bfb9cb67ee64872b6622ba365432dfd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:59
-msgid ":meth:`def GetSubShapesId <smeshBuilder.smeshBuilder.GetSubShapesId>`"
-msgstr ""
-
-# bb345a3a49834096bc496c663c98d0d4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:61
-msgid ""
-":meth:`def SetBoundaryBoxSegmentation "
-"<smeshBuilder.smeshBuilder.SetBoundaryBoxSegmentation>`"
-msgstr ""
-
-# d1b4f3f8b52a43c7b5c49b86630ff525
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:63
-msgid ":meth:`def GetSubShapeName <smeshBuilder.Mesh.GetSubShapeName>`"
-msgstr ""
-
-# f4612f5aa6f24f88ba2db64c4ac546de
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:65
-msgid ":meth:`def GetLog <smeshBuilder.Mesh.GetLog>`"
-msgstr ""
-
-# d8762a58cfda46a388041959f6d36997
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:67
-msgid ":meth:`def ClearLog <smeshBuilder.Mesh.ClearLog>`"
-msgstr ""
-
-# 26c352b4467b4740912f04a036f2b4b4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:69
-msgid ":meth:`def GetId <smeshBuilder.Mesh.GetId>`"
-msgstr ""
-
-# eedad0f5bf634ae59fe53170bc3ea2ff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:71
-msgid ":meth:`def GetStudyId <smeshBuilder.Mesh.GetStudyId>`"
-msgstr ""
-
-# af879cf7b64d42c690626af6f1ab445c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:73
-msgid ":meth:`def GetIDSource <smeshBuilder.Mesh.GetIDSource>`"
-msgstr ""
-
-# 073eb7535d8a4e928e9265895e21d19c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:79
-msgid "Creating Meshes"
-msgstr ""
-
-# 09e09d0d59d4427a9921e756d792d29d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:83
-msgid ":meth:`def Concatenate <smeshBuilder.smeshBuilder.Concatenate>`"
-msgstr ""
-
-# 322db18922f94b97bc77a091b2638883
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:85
-msgid ":meth:`def CopyMesh <smeshBuilder.smeshBuilder.CopyMesh>`"
-msgstr ""
-
-# f342c057d7014cc4a434b6334e4c72fd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:88
-msgid "Importing and exporting meshes"
-msgstr ""
-
-# 8bdbcc46f3c74735b19555ab43020932
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:92
-msgid ""
-":meth:`def CreateMeshesFromUNV "
-"<smeshBuilder.smeshBuilder.CreateMeshesFromUNV>`"
-msgstr ""
-
-# 62f1d7ae5d05468982a2e90912cd623f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:94
-msgid ""
-":meth:`def CreateMeshesFromMED "
-"<smeshBuilder.smeshBuilder.CreateMeshesFromMED>`"
-msgstr ""
-
-# 77a8b8ceb0114334a3e00ed3fb55e46e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:96
-msgid ""
-":meth:`def CreateMeshesFromSAUV "
-"<smeshBuilder.smeshBuilder.CreateMeshesFromSAUV>`"
-msgstr ""
-
-# 1812c824f8e046efb21b0b6b592cbc1a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:98
-msgid ""
-":meth:`def CreateMeshesFromSTL "
-"<smeshBuilder.smeshBuilder.CreateMeshesFromSTL>`"
-msgstr ""
-
-# c1e1c96d625246cba7c0ca455f3c70bd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:100
-msgid ""
-":meth:`def CreateMeshesFromCGNS "
-"<smeshBuilder.smeshBuilder.CreateMeshesFromCGNS>`"
-msgstr ""
-
-# 2f3b3d70b8d1423ba1ac125eb4f1705a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:102
-msgid ""
-":meth:`def CreateMeshesFromGMF "
-"<smeshBuilder.smeshBuilder.CreateMeshesFromGMF>`"
-msgstr ""
-
-# 91cb65d7c24a4e708418f70306cab7aa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:104
-msgid ":meth:`def ExportMED <smeshBuilder.Mesh.ExportMED>`"
-msgstr ""
-
-# e8f1566fabc643dfa22e9c46e764aaa4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:106
-msgid ":meth:`def ExportSAUV <smeshBuilder.Mesh.ExportSAUV>`"
-msgstr ""
-
-# 3070a5a1cef34fb3ac18a0ef1e93ff62
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:108
-msgid ":meth:`def ExportDAT <smeshBuilder.Mesh.ExportDAT>`"
-msgstr ""
-
-# 5d6fb5d0bc4f4fd4977fab31880b32b8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:110
-msgid ":meth:`def ExportUNV <smeshBuilder.Mesh.ExportUNV>`"
-msgstr ""
-
-# 3bef8c6c3906485faaa7556904ca9f91
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:112
-msgid ":meth:`def ExportSTL <smeshBuilder.Mesh.ExportSTL>`"
-msgstr ""
-
-# c1ed1d11d65a4f3cbbc10d9f41a23bf8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:114
-msgid ":meth:`def ExportCGNS <smeshBuilder.Mesh.ExportCGNS>`"
-msgstr ""
-
-# c1785d8ab26b4b46a22e82b5c25ac092
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:116
-msgid ":meth:`def ExportGMF <smeshBuilder.Mesh.ExportGMF>`"
-msgstr ""
-
-# a6e7032bfd0845cf8b9635dcef3c8ff1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:118
-msgid ":meth:`def ExportToMED <smeshBuilder.Mesh.ExportToMED>`"
-msgstr ""
-
-# 08e10ce37d254a75b17ad8f7b03245f2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:122
-msgid "Constructing meshes"
-msgstr ""
-
-# 7f80816f45cb427d86cd48312b85d454
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:126
-msgid ":meth:`def Mesh <smeshBuilder.smeshBuilder.Mesh>`"
-msgstr ""
-
-# 3570d5cef38140eab58ae7358e13155f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:128
-msgid ":meth:`def __init__ <smeshBuilder.Mesh.__init__>`"
-msgstr ""
-
-# 6c356fd86ca14d85ad70edb72f8f3280
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:130
-msgid ":meth:`def SetMesh <smeshBuilder.Mesh.SetMesh>`"
-msgstr ""
-
-# 1eec8d6fd56d4c00aaaf9c9f8fc4018d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:132
-msgid ":meth:`def GetMesh <smeshBuilder.Mesh.GetMesh>`"
-msgstr ""
-
-# d0ab7abc61a84800978083a708a8a3cf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:134
-msgid ":meth:`def SetName <smeshBuilder.Mesh.SetName>`"
-msgstr ""
-
-# 11854ab7467e44c9a85f9b5a02d75026
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:136
-msgid ":meth:`def GetShape <smeshBuilder.Mesh.GetShape>`"
-msgstr ""
-
-# 532b9f9ec8f54f159bdf2cba70ce60c0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:138
-msgid ":meth:`def SetShape <smeshBuilder.Mesh.SetShape>`"
-msgstr ""
-
-# b1e0499e07aa43739118022c31da07a5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:140
-msgid ":meth:`def IsReadyToCompute <smeshBuilder.Mesh.IsReadyToCompute>`"
-msgstr ""
-
-# 972c7173efca41ada77ca446bf67a4bb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:142
-msgid ":meth:`def GetAlgoState <smeshBuilder.Mesh.GetAlgoState>`"
-msgstr ""
-
-# 1bde60ad100e4364aefa49e3af9e5e26
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:144
-msgid ":meth:`def Evaluate <smeshBuilder.Mesh.Evaluate>`"
-msgstr ""
-
-# 77d84e818e4740bd88215858492a70a7
-# 552eaeaa3ffc496bb31c50ed8bd82cf7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:146
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:318
-msgid ":meth:`def Compute <smeshBuilder.Mesh.Compute>`"
-msgstr ""
-
-# 2a44df70cbfe4f589ee8d49facbe179b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:148
-msgid ":meth:`def GetComputeErrors <smeshBuilder.Mesh.GetComputeErrors>`"
-msgstr ""
-
-# 23f41325df7e47948c17cee6c046e070
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:150
-msgid ":meth:`def GetFailedShapes <smeshBuilder.Mesh.GetFailedShapes>`"
-msgstr ""
-
-# b3b68ca1b4c843c8835c266b631d5b9a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:152
-msgid ":meth:`def GetMeshOrder <smeshBuilder.Mesh.GetMeshOrder>`"
-msgstr ""
-
-# d59031835d3049e6856d66247321b127
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:154
-msgid ":meth:`def SetMeshOrder <smeshBuilder.Mesh.SetMeshOrder>`"
-msgstr ""
-
-# 0485a1cd38d847d6aad4ffa75e311793
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:156
-msgid ":meth:`def Clear <smeshBuilder.Mesh.Clear>`"
-msgstr ""
-
-# 2181954fca7242c6a25d119b4a67f00f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:160
-msgid "Defining Algorithms"
-msgstr ""
-
-# 2e0a6a7fa3cb4749a282f3d65f5b05fe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:163
-msgid "Basic meshing algorithms"
-msgstr ""
-
-# 82cc814736ee4f8a8898524b83a784c6
-# 7eb1d475c69141a7a86ef31e16de4ce7
-# ee2746236c2446019689dcfa6d1af203
-# 3d1bcf3b332848ca955b252c7047e982
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:165
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:199
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:220
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:961
-msgid "Data Structures:"
-msgstr ""
-
-# 4d3775c80aa84eb5a9784a3c5b66da23
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:167
-msgid ""
-":class:`class StdMeshersBuilder_Segment "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment>`"
-msgstr ""
-
-# a3f57976149d4bc789a124d482de506d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:169
-msgid ""
-":class:`class StdMeshersBuilder_Segment_Python "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment_Python>`"
-msgstr ""
-
-# b6808242be2242988b35bec91f2de31d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:171
-msgid ""
-":class:`class StdMeshersBuilder_Triangle_MEFISTO "
-"<StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO>`"
-msgstr ""
-
-# 573a1c516cf346dd90494b51060a74ad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:173
-msgid ""
-":class:`class StdMeshersBuilder_Quadrangle "
-"<StdMeshersBuilder.StdMeshersBuilder_Quadrangle>`"
-msgstr ""
-
-# d7bd792aa45c41c68cc326557392147a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:175
-msgid ""
-":class:`class StdMeshersBuilder_Hexahedron "
-"<StdMeshersBuilder.StdMeshersBuilder_Hexahedron>`"
-msgstr ""
-
-# c523efa55c0d49b4b9d22a6c5fc95c97
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:177
-msgid ""
-":class:`class StdMeshersBuilder_UseExistingElements_1D "
-"<StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D>`"
-msgstr ""
-
-# fccec022af6546739ebb61f95b173e23
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:179
-msgid ""
-":class:`class StdMeshersBuilder_UseExistingElements_1D2D "
-"<StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D>`"
-msgstr ""
-
-# 0ef9264751cb4f3fb47a0d70c74bbc99
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:181
-msgid ""
-":class:`class StdMeshersBuilder_Cartesian_3D "
-"<StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D>`"
-msgstr ""
-
-# 9fde0b802f9b4d82b4ef7c5e8bd814a2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:183
-msgid ""
-":class:`class StdMeshersBuilder_UseExisting_1D "
-"<StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D>`"
-msgstr ""
-
-# 6a68789b8da44b73a6608bfabc3c1cb5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:185
-msgid ""
-":class:`class StdMeshersBuilder_UseExisting_2D "
-"<StdMeshersBuilder.StdMeshersBuilder_UseExisting_2D>`"
-msgstr ""
-
-# 789c897757a34167ad0d5a317706f72f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:189
-msgid ""
-":meth:`def AutomaticTetrahedralization "
-"<smeshBuilder.Mesh.AutomaticTetrahedralization>`"
-msgstr ""
-
-# b9f75aa73ed1416db9ece9233006b3e7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:191
-msgid ""
-":meth:`def AutomaticHexahedralization "
-"<smeshBuilder.Mesh.AutomaticHexahedralization>`"
-msgstr ""
-
-# 45da06286cc8461281e6b31185600563
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:197
-msgid "Projection algorithms"
-msgstr ""
-
-# 45a100c2190d4dada6265984f58a9530
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:201
-msgid ""
-":class:`class StdMeshersBuilder_Projection1D "
-"<StdMeshersBuilder.StdMeshersBuilder_Projection1D>`"
-msgstr ""
-
-# 9640587e49e14b779ca8e2c0e0263ea1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:203
-msgid ""
-":class:`class StdMeshersBuilder_Projection2D "
-"<StdMeshersBuilder.StdMeshersBuilder_Projection2D>`"
-msgstr ""
-
-# 7a9fdc711da0407ab38489b2593dbb28
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:205
-msgid ""
-":class:`class StdMeshersBuilder_Projection1D2D "
-"<StdMeshersBuilder.StdMeshersBuilder_Projection1D2D>`"
-msgstr ""
-
-# 50a150525d0c454d96dd0689f930e112
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:207
-msgid ""
-":class:`class StdMeshersBuilder_Projection3D "
-"<StdMeshersBuilder.StdMeshersBuilder_Projection3D>`"
-msgstr ""
-
-# d32354a66a414814b0a324e0bbe26815
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:211
-msgid "Segments around vertex"
-msgstr ""
-
-# 4f8b799d533e4f959ce45f7f35690c8a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:215
-msgid ""
-":meth:`def LengthNearVertex "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment.LengthNearVertex>`"
-msgstr ""
-
-# 29a3b64774c24ff3b8406959c58ebd72
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:218
-msgid "3D extrusion meshing algorithms"
-msgstr ""
-
-# 7688de0666fd494bbcac9429c63df307
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:222
-msgid ""
-":class:`class StdMeshersBuilder_Prism3D "
-"<StdMeshersBuilder.StdMeshersBuilder_Prism3D>`"
-msgstr ""
-
-# e03cb08ed072472bb321b42e253ae4ad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:224
-msgid ""
-":class:`class StdMeshersBuilder_RadialPrism3D "
-"<StdMeshersBuilder.StdMeshersBuilder_RadialPrism3D>`"
-msgstr ""
-
-# 8e95711c2e614fceb1d30efcde1d660a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:228
-msgid "Mesh_Algorithm"
-msgstr ""
-
-# 784fb8424a394648947541d019b4eb90
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:230
-msgid ":class:`class Mesh_Algorithm <smesh_algorithm.Mesh_Algorithm>`"
-msgstr ""
-
-# cd6dc62a15e345ff8698f4d305e28599
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:234
-msgid "Defining hypotheses"
-msgstr ""
-
-# e3222cec51754113a7c63c6a07a85d14
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:237
-msgid "1D Meshing Hypotheses"
-msgstr ""
-
-# e160300eab7e40a490db844edc1d129d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:241
-msgid ""
-":meth:`def ReversedEdgeIndices "
-"<smesh_algorithm.Mesh_Algorithm.ReversedEdgeIndices>`"
-msgstr ""
-
-# fda4e0e314b9462e97fb97420d34681c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:243
-msgid ""
-":meth:`def LocalLength "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment.LocalLength>`"
-msgstr ""
-
-# a43d1314e3d243ec8d37e0017ac5a80e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:245
-msgid ":meth:`def MaxSize <StdMeshersBuilder.StdMeshersBuilder_Segment.MaxSize>`"
-msgstr ""
-
-# 1ac3613850f8427fa1c1bdc7d345b743
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:247
-msgid ""
-":meth:`def NumberOfSegments "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment.NumberOfSegments>`"
-msgstr ""
-
-# 3c41ce408a3e4bafb25cc5e301531183
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:249
-msgid ""
-":meth:`def Adaptive "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment.Adaptive>`"
-msgstr ""
-
-# c617340303ec4a7b9206b4f6d00d539e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:251
-msgid ""
-":meth:`def Arithmetic1D "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D>`"
-msgstr ""
-
-# e49a13a09dad4f00a9d967ec833decc4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:253
-msgid ""
-":meth:`def GeometricProgression "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression>`"
-msgstr ""
-
-# 290f0d2f9d1c4167aa864bdf3943cd82
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:255
-msgid ""
-":meth:`def FixedPoints1D "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D>`"
-msgstr ""
-
-# 99ae57b41f5d4d138715db6a2ff6088b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:257
-msgid ""
-":meth:`def StartEndLength "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment.StartEndLength>`"
-msgstr ""
-
-# 02dc50745d4a43aba8dcdecef7bed2aa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:259
-msgid ""
-":meth:`def Deflection1D "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment.Deflection1D>`"
-msgstr ""
-
-# 954928c224d24145b2fd1088db142bf4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:261
-msgid ""
-":meth:`def AutomaticLength "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment.AutomaticLength>`"
-msgstr ""
-
-# 905bcc87101e4f6581ea1ea69e5fb4b0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:263
-msgid ""
-":meth:`def PythonSplit1D "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment_Python.PythonSplit1D>`"
-msgstr ""
-
-# 141d450ce1c343069eaaa806ec964150
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:267
-msgid "2D Meshing Hypotheses"
-msgstr ""
-
-# 72267422f8d84d33bbc586872f988d24
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:271
-msgid ""
-":meth:`def MaxElementArea "
-"<StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.MaxElementArea>`"
-msgstr ""
-
-# 2375cc9407614359858e4688deb91feb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:273
-msgid ""
-":meth:`def LengthFromEdges "
-"<StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.LengthFromEdges>`"
-msgstr ""
-
-# 352ded15f52c41648176439a6c728b09
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:277
-msgid "Quadrangle Hypotheses"
-msgstr ""
-
-# 24564408c2314fd39fd3fdb482c80de1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:281
-msgid ""
-":meth:`def QuadrangleParameters "
-"<StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters>`"
-msgstr ""
-
-# df2f16d7acdb47a5a6e62770fde58ca9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:283
-msgid ""
-":meth:`def QuadranglePreference "
-"<StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadranglePreference>`"
-msgstr ""
-
-# 477b7334b8e6459b8afefab61f81494c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:285
-msgid ""
-":meth:`def TrianglePreference "
-"<StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TrianglePreference>`"
-msgstr ""
-
-# b4e8d5b6d0654d70a414985f2ec14982
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:287
-msgid ""
-":meth:`def Reduced "
-"<StdMeshersBuilder.StdMeshersBuilder_Quadrangle.Reduced>`"
-msgstr ""
-
-# 0222925902964a719bd740a908df1c40
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:289
-msgid ""
-":meth:`def TriangleVertex "
-"<StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TriangleVertex>`"
-msgstr ""
-
-# 333de62a8d074c2c9cf562b29955da75
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:294
-msgid "Additional Hypotheses"
-msgstr ""
-
-# 50e24034e723406a837308c0485dedd6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:298
-msgid ":meth:`def ViscousLayers <smesh_algorithm.Mesh_Algorithm.ViscousLayers>`"
-msgstr ""
-
-# 0780d4f66eb94546846a97e166306190
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:300
-msgid ""
-":meth:`def ViscousLayers2D "
-"<smesh_algorithm.Mesh_Algorithm.ViscousLayers2D>`"
-msgstr ""
-
-# c55f790b8d114d51860f7d09a9b0428e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:302
-msgid ""
-":meth:`def Propagation "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment.Propagation>`"
-msgstr ""
-
-# 589dde07b9fc49dd864c61694d0d7b5a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:304
-msgid ""
-":meth:`def PropagationOfDistribution "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment.PropagationOfDistribution>`"
-msgstr ""
-
-# 662f59f313a1498c989856b07829c8ca
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:306
-msgid ""
-":meth:`def QuadraticMesh "
-"<StdMeshersBuilder.StdMeshersBuilder_Segment.QuadraticMesh>`"
-msgstr ""
-
-# 6cf0c71b952044728b2d3a9fc7c5c09b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:310
-msgid "Constructing sub-meshes"
-msgstr ""
-
-# cfd057aa90b34826ad29c0a7ddac1829
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:314
-msgid ":meth:`def GetSubMesh <smeshBuilder.Mesh.GetSubMesh>`"
-msgstr ""
-
-# 8e48623eae2844edbd39655bb2e4c5f1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:316
-msgid ":meth:`def ClearSubMesh <smeshBuilder.Mesh.ClearSubMesh>`"
-msgstr ""
-
-# 6cc7defcbee94020b151cbaa5b7b2eb9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:323
-msgid "Editing meshes"
-msgstr ""
-
-# 51f75e073b484fa7aa578be23342b1b2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:327
-msgid ":meth:`def AddHypothesis <smeshBuilder.Mesh.AddHypothesis>`"
-msgstr ""
-
-# 038a297979fb4c578cbf75507e4662cb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:329
-msgid ":meth:`def IsUsedHypothesis <smeshBuilder.Mesh.IsUsedHypothesis>`"
-msgstr ""
-
-# 5dcc2cb2b10648ceb9fdb9a48013f88b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:331
-msgid ":meth:`def RemoveHypothesis <smeshBuilder.Mesh.RemoveHypothesis>`"
-msgstr ""
-
-# e1f482aa007b4bb5aa380e8f1ff7f546
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:333
-msgid ":meth:`def GetHypothesisList <smeshBuilder.Mesh.GetHypothesisList>`"
-msgstr ""
-
-# 92e6a6758ec94509b44d79e73bab869e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:335
-msgid ""
-":meth:`def RemoveGlobalHypotheses "
-"<smeshBuilder.Mesh.RemoveGlobalHypotheses>`"
-msgstr ""
-
-# 6c917e64889a4f0c8251d4b327d04c0f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:340
-msgid "Mesh Information"
-msgstr ""
-
-# c76db93a4c5b49b4ad8025a9d3b09e7f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:344
-msgid ":meth:`def GetMeshInfo <smeshBuilder.smeshBuilder.GetMeshInfo>`"
-msgstr ""
-
-# 43b487b08ef0490f8cd368a4f98eccc6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:346
-msgid ""
-":meth:`def GetGeometryByMeshElement "
-"<smeshBuilder.Mesh.GetGeometryByMeshElement>`"
-msgstr ""
-
-# 68b8092a4a8d470fa8eda8d8e16dbdf7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:348
-msgid ":meth:`def MeshDimension <smeshBuilder.Mesh.MeshDimension>`"
-msgstr ""
-
-# a8ae9becbd3e460fb1720d37f17bfdb5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:350
-msgid ":meth:`def GetMeshInfo <smeshBuilder.Mesh.GetMeshInfo>`"
-msgstr ""
-
-# 1f768de43b5c4149b5cc31f8f548690b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:352
-msgid ":meth:`def NbNodes <smeshBuilder.Mesh.NbNodes>`"
-msgstr ""
-
-# 954f4ea4947d41339b5c0697315ae2d9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:354
-msgid ":meth:`def NbElements <smeshBuilder.Mesh.NbElements>`"
-msgstr ""
-
-# 99840649cf174b6fb9df85babf5f791f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:356
-msgid ":meth:`def Nb0DElements <smeshBuilder.Mesh.Nb0DElements>`"
-msgstr ""
-
-# 00ae407333a74cebba243c9285822a24
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:358
-msgid ":meth:`def NbBalls <smeshBuilder.Mesh.NbBalls>`"
-msgstr ""
-
-# 4f98d77cd16d4963b2541702a2c38b64
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:360
-msgid ":meth:`def NbEdges <smeshBuilder.Mesh.NbEdges>`"
-msgstr ""
-
-# a66478403ed54b148f49be6276cbe3a4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:362
-msgid ":meth:`def NbEdgesOfOrder <smeshBuilder.Mesh.NbEdgesOfOrder>`"
-msgstr ""
-
-# a4dbc4ea31344be1ac3f6dcb73c52030
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:364
-msgid ":meth:`def NbFaces <smeshBuilder.Mesh.NbFaces>`"
-msgstr ""
-
-# 36e3ef6e66914db1a5ec72be05f287ee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:366
-msgid ":meth:`def NbFacesOfOrder <smeshBuilder.Mesh.NbFacesOfOrder>`"
-msgstr ""
-
-# eb5677ee000f49898342fbcd1de47a75
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:368
-msgid ":meth:`def NbTriangles <smeshBuilder.Mesh.NbTriangles>`"
-msgstr ""
-
-# 9f4cde40e15843eb87394059e3125ee4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:370
-msgid ":meth:`def NbTrianglesOfOrder <smeshBuilder.Mesh.NbTrianglesOfOrder>`"
-msgstr ""
-
-# 24c0622b6f2240c88cddfae7e49b0e61
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:372
-msgid ":meth:`def NbBiQuadTriangles <smeshBuilder.Mesh.NbBiQuadTriangles>`"
-msgstr ""
-
-# d4dc3b2edb1f400c8e9ad717c1f706d3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:374
-msgid ":meth:`def NbQuadrangles <smeshBuilder.Mesh.NbQuadrangles>`"
-msgstr ""
-
-# dba0d61b72fa4857a483ed61b75d7626
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:376
-msgid ":meth:`def NbQuadranglesOfOrder <smeshBuilder.Mesh.NbQuadranglesOfOrder>`"
-msgstr ""
-
-# 8c32f6cd75fa4f0fad55ec3112db66fe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:378
-msgid ":meth:`def NbBiQuadQuadrangles <smeshBuilder.Mesh.NbBiQuadQuadrangles>`"
-msgstr ""
-
-# ca5317db87e342b099898411f64a8c6d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:380
-msgid ":meth:`def NbPolygons <smeshBuilder.Mesh.NbPolygons>`"
-msgstr ""
-
-# 0bacba5c96004b4a98214bfd724ff178
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:382
-msgid ":meth:`def NbVolumes <smeshBuilder.Mesh.NbVolumes>`"
-msgstr ""
-
-# 4b685ff130574fa8ba6dfd07d55d9142
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:384
-msgid ":meth:`def NbVolumesOfOrder <smeshBuilder.Mesh.NbVolumesOfOrder>`"
-msgstr ""
-
-# 2c897a5f0dc04c91ba17c87e45eb96f7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:386
-msgid ":meth:`def NbTetras <smeshBuilder.Mesh.NbTetras>`"
-msgstr ""
-
-# 0a8310de5d624249be63362b43fbf5db
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:388
-msgid ":meth:`def NbTetrasOfOrder <smeshBuilder.Mesh.NbTetrasOfOrder>`"
-msgstr ""
-
-# 04a5850ba04f4aa28f57ec1dacf47d38
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:390
-msgid ":meth:`def NbHexas <smeshBuilder.Mesh.NbHexas>`"
-msgstr ""
-
-# a60ad57141f1498ba25460cf40f8c888
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:392
-msgid ":meth:`def NbHexasOfOrder <smeshBuilder.Mesh.NbHexasOfOrder>`"
-msgstr ""
-
-# a3256c58d04f4ee3983814ad7f40625b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:394
-msgid ":meth:`def NbTriQuadraticHexas <smeshBuilder.Mesh.NbTriQuadraticHexas>`"
-msgstr ""
-
-# f172dd6198d7481191541ca3413eb9c8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:396
-msgid ":meth:`def NbPyramids <smeshBuilder.Mesh.NbPyramids>`"
-msgstr ""
-
-# 76f711639d1546c494681cf375fdd28b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:398
-msgid ":meth:`def NbPyramidsOfOrder <smeshBuilder.Mesh.NbPyramidsOfOrder>`"
-msgstr ""
-
-# 503e7b5252da4fb4ae9cbde6c51b96b0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:400
-msgid ":meth:`def NbPrisms <smeshBuilder.Mesh.NbPrisms>`"
-msgstr ""
-
-# 238c818e887c4bcf955f2bd88704ea98
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:402
-msgid ":meth:`def NbPrismsOfOrder <smeshBuilder.Mesh.NbPrismsOfOrder>`"
-msgstr ""
-
-# f9c2a5ec351949ca84196ff81ace34e5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:404
-msgid ":meth:`def NbHexagonalPrisms <smeshBuilder.Mesh.NbHexagonalPrisms>`"
-msgstr ""
-
-# 751765671b034dc5bf0fbb7513d2ce06
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:406
-msgid ":meth:`def NbPolyhedrons <smeshBuilder.Mesh.NbPolyhedrons>`"
-msgstr ""
-
-# db8c6392653845a08bf83991f2b03e36
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:408
-msgid ":meth:`def NbSubMesh <smeshBuilder.Mesh.NbSubMesh>`"
-msgstr ""
-
-# 03924bc78b4545dbb6c7d56f211e4863
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:410
-msgid ":meth:`def GetElementsId <smeshBuilder.Mesh.GetElementsId>`"
-msgstr ""
-
-# 3c1aa5db6a984b3fbe3301404618abae
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:412
-msgid ":meth:`def GetElementsByType <smeshBuilder.Mesh.GetElementsByType>`"
-msgstr ""
-
-# 1827a79be5b2491fbaf7af844e732506
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:414
-msgid ":meth:`def GetNodesId <smeshBuilder.Mesh.GetNodesId>`"
-msgstr ""
-
-# bfbb4deb474b4edaa8eda767a56bdcf0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:416
-msgid ":meth:`def GetElementType <smeshBuilder.Mesh.GetElementType>`"
-msgstr ""
-
-# 380b0241657b4706b6a5516674895f10
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:418
-msgid ":meth:`def GetElementGeomType <smeshBuilder.Mesh.GetElementGeomType>`"
-msgstr ""
-
-# a2e56fdc555e4821b1d6c496adf48684
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:420
-msgid ":meth:`def GetElementShape <smeshBuilder.Mesh.GetElementShape>`"
-msgstr ""
-
-# addea412ef13465b9d05fdffcf9cc4b1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:422
-msgid ":meth:`def GetSubMeshElementsId <smeshBuilder.Mesh.GetSubMeshElementsId>`"
-msgstr ""
-
-# 7df8e273cad647aeb73d465346f6e7e2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:424
-msgid ":meth:`def GetSubMeshNodesId <smeshBuilder.Mesh.GetSubMeshNodesId>`"
-msgstr ""
-
-# 9020037c46694af999e88d5d07c816e8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:426
-msgid ""
-":meth:`def GetSubMeshElementType "
-"<smeshBuilder.Mesh.GetSubMeshElementType>`"
-msgstr ""
-
-# 69130589b557470281b5903f260affd8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:428
-msgid ":meth:`def Dump <smeshBuilder.Mesh.Dump>`"
-msgstr ""
-
-# b5f49f2df8904ff29222430605c3bc94
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:430
-msgid ":meth:`def GetNodeXYZ <smeshBuilder.Mesh.GetNodeXYZ>`"
-msgstr ""
-
-# c7d092db70ca422196290e502d2e7979
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:432
-msgid ""
-":meth:`def GetNodeInverseElements "
-"<smeshBuilder.Mesh.GetNodeInverseElements>`"
-msgstr ""
-
-# 4f9d3f65dc3648b09df64110ed5cf556
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:434
-msgid ":meth:`def GetNodePosition <smeshBuilder.Mesh.GetNodePosition>`"
-msgstr ""
-
-# 10c9dbd9f0924888a68ba51eb522da5e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:436
-msgid ":meth:`def GetElementPosition <smeshBuilder.Mesh.GetElementPosition>`"
-msgstr ""
-
-# 0539225d7f004145a6babe9bf75e68d9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:438
-msgid ":meth:`def GetShapeID <smeshBuilder.Mesh.GetShapeID>`"
-msgstr ""
-
-# 5e65e2e29cf9462b973c9967ee040034
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:440
-msgid ":meth:`def GetShapeIDForElem <smeshBuilder.Mesh.GetShapeIDForElem>`"
-msgstr ""
-
-# 49e95d91198645528ef66089459ca493
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:442
-msgid ":meth:`def GetElemNbNodes <smeshBuilder.Mesh.GetElemNbNodes>`"
-msgstr ""
-
-# b79913eff730480e9e242fb7f83f2ac6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:444
-msgid ":meth:`def GetElemNode <smeshBuilder.Mesh.GetElemNode>`"
-msgstr ""
-
-# c9899e9d096d47ba87fb0790e54d601c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:446
-msgid ":meth:`def GetElemNodes <smeshBuilder.Mesh.GetElemNodes>`"
-msgstr ""
-
-# c1c3eddb04de4ae4b80b02dce08782c1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:448
-msgid ":meth:`def IsMediumNode <smeshBuilder.Mesh.IsMediumNode>`"
-msgstr ""
-
-# 16820b1b996d47e0ae61f618c3e98e5b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:450
-msgid ""
-":meth:`def IsMediumNodeOfAnyElem "
-"<smeshBuilder.Mesh.IsMediumNodeOfAnyElem>`"
-msgstr ""
-
-# f9b41aff38f74d9cb673b3800591125a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:452
-msgid ":meth:`def ElemNbEdges <smeshBuilder.Mesh.ElemNbEdges>`"
-msgstr ""
-
-# 6780db8e9eb7424aa6c43a481af532a3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:454
-msgid ":meth:`def ElemNbFaces <smeshBuilder.Mesh.ElemNbFaces>`"
-msgstr ""
-
-# 99a23c156b124bb1abe5d7e479ddfc03
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:456
-msgid ":meth:`def GetElemFaceNodes <smeshBuilder.Mesh.GetElemFaceNodes>`"
-msgstr ""
-
-# aca35efb8db74b1588943f779371a20a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:458
-msgid ":meth:`def GetFaceNormal <smeshBuilder.Mesh.GetFaceNormal>`"
-msgstr ""
-
-# 323b4e444cbf45e68eb7509f287c9df2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:460
-msgid ":meth:`def FindElementByNodes <smeshBuilder.Mesh.FindElementByNodes>`"
-msgstr ""
-
-# 28a1af510c5948f990bff38d7e9db58b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:462
-msgid ":meth:`def GetElementsByNodes <smeshBuilder.Mesh.GetElementsByNodes>`"
-msgstr ""
-
-# 1ecc8de04b0f47c3b034d001b61559ca
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:464
-msgid ":meth:`def IsPoly <smeshBuilder.Mesh.IsPoly>`"
-msgstr ""
-
-# bd6b88ee9dc648a784d7059b01253a4c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:466
-msgid ":meth:`def IsQuadratic <smeshBuilder.Mesh.IsQuadratic>`"
-msgstr ""
-
-# 48adf66c10844d2390146a8b1dd0ae16
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:468
-msgid ":meth:`def GetBallDiameter <smeshBuilder.Mesh.GetBallDiameter>`"
-msgstr ""
-
-# 5764e34980c447a4abeba3c760979853
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:470
-msgid ":meth:`def BaryCenter <smeshBuilder.Mesh.BaryCenter>`"
-msgstr ""
-
-# cf6d71caf33e4cb2b0c8c32e614ae44b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:472
-msgid ":meth:`def FindNodeClosestTo <smeshBuilder.Mesh.FindNodeClosestTo>`"
-msgstr ""
-
-# ac85be2785674b55aa0d1d6f9aaaffff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:474
-msgid ":meth:`def FindElementsByPoint <smeshBuilder.Mesh.FindElementsByPoint>`"
-msgstr ""
-
-# 1d1d88770b364847bd44cb47868fde1d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:476
-msgid ":meth:`def GetPointState <smeshBuilder.Mesh.GetPointState>`"
-msgstr ""
-
-# dcd08ac271c146b88b2656967be6ccdb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:481
-msgid "Quality controls and Filtering"
-msgstr ""
-
-# fa2cb7ad03b54185925961b0d5977b38
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:485
-msgid ""
-":meth:`def GetEmptyCriterion "
-"<smeshBuilder.smeshBuilder.GetEmptyCriterion>`"
-msgstr ""
-
-# 43ff82d0338242f382b9359f4deb1f60
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:487
-msgid ":meth:`def GetCriterion <smeshBuilder.smeshBuilder.GetCriterion>`"
-msgstr ""
-
-# 0e0572b2e9d3445387b9cf60aad1bf25
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:489
-msgid ":meth:`def GetFilter <smeshBuilder.smeshBuilder.GetFilter>`"
-msgstr ""
-
-# d6d7c9fad5c04313a2a0727c5fdeaac1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:491
-msgid ""
-":meth:`def GetFilterFromCriteria "
-"<smeshBuilder.smeshBuilder.GetFilterFromCriteria>`"
-msgstr ""
-
-# 06e86322085c42a49cc8fcbffcba596e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:493
-msgid ":meth:`def GetFunctor <smeshBuilder.smeshBuilder.GetFunctor>`"
-msgstr ""
-
-# 364133b01cf244d68debd89ff78e203e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:495
-msgid ":meth:`def GetIdsFromFilter <smeshBuilder.Mesh.GetIdsFromFilter>`"
-msgstr ""
-
-# 14efcd4479ab4c5897492823160c73d0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:497
-msgid ":meth:`def IsManifold <smeshBuilder.Mesh.IsManifold>`"
-msgstr ""
-
-# 47949f78e0874c80bc948974d34678b8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:499
-msgid ""
-":meth:`def IsCoherentOrientation2D "
-"<smeshBuilder.Mesh.IsCoherentOrientation2D>`"
-msgstr ""
-
-# 7619e057b99142aea7ceddba0a2697b2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:505
-msgid "Grouping elements"
-msgstr ""
-
-# e1ddf65f695b444580732c0bfbf3420e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:509
-msgid ":meth:`def SetAutoColor <smeshBuilder.Mesh.SetAutoColor>`"
-msgstr ""
-
-# 43c393b9ce7a432db32738accfbb4479
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:511
-msgid ":meth:`def GetAutoColor <smeshBuilder.Mesh.GetAutoColor>`"
-msgstr ""
-
-# 7fcc1ad4de454a7cac102032b8a6d461
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:513
-msgid ""
-":meth:`def HasDuplicatedGroupNamesMED "
-"<smeshBuilder.Mesh.HasDuplicatedGroupNamesMED>`"
-msgstr ""
-
-# dc3bcded96994f2683443bf8f36789d9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:517
-msgid "Creating groups"
-msgstr ""
-
-# c1e4318a3e6a41339c9f925820b553e6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:521
-msgid ":meth:`def CreateEmptyGroup <smeshBuilder.Mesh.CreateEmptyGroup>`"
-msgstr ""
-
-# 7f59b73c5a034124bed02fe7a80aa1a9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:523
-msgid ":meth:`def Group <smeshBuilder.Mesh.Group>`"
-msgstr ""
-
-# 526937197efb4aa0ba5bc5117451db63
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:525
-msgid ":meth:`def GroupOnGeom <smeshBuilder.Mesh.GroupOnGeom>`"
-msgstr ""
-
-# afbd9e404c4142c58a910f71f5b42940
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:527
-msgid ":meth:`def GroupOnFilter <smeshBuilder.Mesh.GroupOnFilter>`"
-msgstr ""
-
-# b59a15e6bb8b4cc2804c8db67fcb3878
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:529
-msgid ":meth:`def MakeGroupByIds <smeshBuilder.Mesh.MakeGroupByIds>`"
-msgstr ""
-
-# b4fd00be80b94b7c95bf561e34be9f1d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:531
-msgid ":meth:`def MakeGroup <smeshBuilder.Mesh.MakeGroup>`"
-msgstr ""
-
-# dea817c333ea4921ac122bfe2258ad8a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:533
-msgid ":meth:`def MakeGroupByCriterion <smeshBuilder.Mesh.MakeGroupByCriterion>`"
-msgstr ""
-
-# 9ea5d2a9469947fa9a46e517f0546ddc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:535
-msgid ":meth:`def MakeGroupByCriteria <smeshBuilder.Mesh.MakeGroupByCriteria>`"
-msgstr ""
-
-# 6af590a3c4304e14ab438b9bf8fc38ef
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:537
-msgid ":meth:`def MakeGroupByFilter <smeshBuilder.Mesh.MakeGroupByFilter>`"
-msgstr ""
-
-# 3505dc6f56e04ddfa49953788330911d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:539
-msgid ":meth:`def GetGroups <smeshBuilder.Mesh.GetGroups>`"
-msgstr ""
-
-# 4ec6990ada494c00b604aa67bf5c2f5c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:541
-msgid ":meth:`def NbGroups <smeshBuilder.Mesh.NbGroups>`"
-msgstr ""
-
-# 5bf02958c3ed4323affefb4a87e216e9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:543
-msgid ":meth:`def GetGroupNames <smeshBuilder.Mesh.GetGroupNames>`"
-msgstr ""
-
-# 76206598280549248ed7cc370d413377
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:545
-msgid ":meth:`def GetGroupByName <smeshBuilder.Mesh.GetGroupByName>`"
-msgstr ""
-
-# 9d3ac80899df4bb4809c73351f46f7fa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:549
-msgid "Using operations on groups"
-msgstr ""
-
-# ea0222a6d2764631838be50b926307b3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:553
-msgid ":meth:`def UnionGroups <smeshBuilder.Mesh.UnionGroups>`"
-msgstr ""
-
-# d8c432df42a640e7a9227e38de0cfd2f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:555
-msgid ":meth:`def UnionListOfGroups <smeshBuilder.Mesh.UnionListOfGroups>`"
-msgstr ""
-
-# 1cad96c02561499094bf37d0bac8ed38
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:557
-msgid ":meth:`def IntersectGroups <smeshBuilder.Mesh.IntersectGroups>`"
-msgstr ""
-
-# 06a8959f158443a2b7686c3c3e2a0497
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:559
-msgid ""
-":meth:`def IntersectListOfGroups "
-"<smeshBuilder.Mesh.IntersectListOfGroups>`"
-msgstr ""
-
-# 06d24d6fff774547af488e3d58597afa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:561
-msgid ":meth:`def CutGroups <smeshBuilder.Mesh.CutGroups>`"
-msgstr ""
-
-# 6cc2630aae9e4368a78bc41cfd016f8c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:563
-msgid ":meth:`def CutListOfGroups <smeshBuilder.Mesh.CutListOfGroups>`"
-msgstr ""
-
-# 1ac1dd8f5d474d3a977ae209a22d2d6e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:565
-msgid ":meth:`def CreateDimGroup <smeshBuilder.Mesh.CreateDimGroup>`"
-msgstr ""
-
-# 5a314bffaeae4756a5af4293f5cb4806
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:567
-msgid ":meth:`def ConvertToStandalone <smeshBuilder.Mesh.ConvertToStandalone>`"
-msgstr ""
-
-# 8d5ec94d536c4b5d97909b4723a3d54f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:571
-msgid "Deleting groups"
-msgstr ""
-
-# b6c2d50d6e7b4a9a881ef1f9957a1a08
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:575
-msgid ":meth:`def RemoveGroup <smeshBuilder.Mesh.RemoveGroup>`"
-msgstr ""
-
-# 12886886c20f48aaa1ef06a3e0eedb91
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:577
-msgid ""
-":meth:`def RemoveGroupWithContents "
-"<smeshBuilder.Mesh.RemoveGroupWithContents>`"
-msgstr ""
-
-# db8216644ddb498d920616a88d964d44
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:582
-msgid "Modifying meshes"
-msgstr ""
-
-# fc9163a484d44811b09b7691af8917c8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:586
-msgid ":meth:`def GetPattern <smeshBuilder.smeshBuilder.GetPattern>`"
-msgstr ""
-
-# 1ca825356b6049d49779fda241585440
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:588
-msgid ":meth:`def GetMeshEditor <smeshBuilder.Mesh.GetMeshEditor>`"
-msgstr ""
-
-# 23d3f0b765364481af9352faa320c1df
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:592
-msgid "Adding nodes and elements"
-msgstr ""
-
-# 7a48ed64d3bf4268ba874d987232ffb0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:596
-msgid ":meth:`def AddNode <smeshBuilder.Mesh.AddNode>`"
-msgstr ""
-
-# 8e5db9e3a5fd4094a46e63d1d8a38ebd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:598
-msgid ":meth:`def Add0DElement <smeshBuilder.Mesh.Add0DElement>`"
-msgstr ""
-
-# 9ae4ac435eae4e0c9799797f70dab2e2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:600
-msgid ""
-":meth:`def Add0DElementsToAllNodes "
-"<smeshBuilder.Mesh.Add0DElementsToAllNodes>`"
-msgstr ""
-
-# 8e1607e1b4e44a358d83a2b601802ac9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:602
-msgid ":meth:`def AddBall <smeshBuilder.Mesh.AddBall>`"
-msgstr ""
-
-# 1681b79b28b64e45bc4fcef1d3b7f59c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:604
-msgid ":meth:`def AddEdge <smeshBuilder.Mesh.AddEdge>`"
-msgstr ""
-
-# 4532f45d09cb497a92e1fc8fb6b61e27
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:606
-msgid ":meth:`def AddFace <smeshBuilder.Mesh.AddFace>`"
-msgstr ""
-
-# b2259a8903ae44f3ac518ba7feb1e03e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:608
-msgid ":meth:`def AddPolygonalFace <smeshBuilder.Mesh.AddPolygonalFace>`"
-msgstr ""
-
-# ec5492e82bdc4cafbc8944bbb25d1aaa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:610
-msgid ":meth:`def AddQuadPolygonalFace <smeshBuilder.Mesh.AddQuadPolygonalFace>`"
-msgstr ""
-
-# 2e0296655d864cccb38c09f627595aa9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:612
-msgid ":meth:`def AddVolume <smeshBuilder.Mesh.AddVolume>`"
-msgstr ""
-
-# d7f163ff1f7642d9b7de09847b059f8c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:614
-msgid ":meth:`def AddPolyhedralVolume <smeshBuilder.Mesh.AddPolyhedralVolume>`"
-msgstr ""
-
-# a51315a53ba3474cb2229a96bf9e6022
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:616
-msgid ""
-":meth:`def AddPolyhedralVolumeByFaces "
-"<smeshBuilder.Mesh.AddPolyhedralVolumeByFaces>`"
-msgstr ""
-
-# 0ea3fae8f16444b1a647d45334981d2f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:618
-msgid ":meth:`def SetNodeOnVertex <smeshBuilder.Mesh.SetNodeOnVertex>`"
-msgstr ""
-
-# 1a9700a129354a86b4cf96e6185e66e0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:620
-msgid ":meth:`def SetNodeOnEdge <smeshBuilder.Mesh.SetNodeOnEdge>`"
-msgstr ""
-
-# f4c054f968f04bb584c52039f32d9e48
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:622
-msgid ":meth:`def SetNodeOnFace <smeshBuilder.Mesh.SetNodeOnFace>`"
-msgstr ""
-
-# 84d892a26de84848b69c9dada7132c7a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:624
-msgid ":meth:`def SetNodeInVolume <smeshBuilder.Mesh.SetNodeInVolume>`"
-msgstr ""
-
-# 63b28ca6e7eb410ca2b3623db87db04f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:626
-msgid ""
-":meth:`def SetMeshElementOnShape "
-"<smeshBuilder.Mesh.SetMeshElementOnShape>`"
-msgstr ""
-
-# c67ed93d1bd24cf6b5cb159a09baa71c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:628
-msgid ":meth:`def Make2DMeshFrom3D <smeshBuilder.Mesh.Make2DMeshFrom3D>`"
-msgstr ""
-
-# ab02c4c770ed41d398927abaea2dec53
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:630
-msgid ":meth:`def MakeBoundaryMesh <smeshBuilder.Mesh.MakeBoundaryMesh>`"
-msgstr ""
-
-# 330c552912024f259d8907e86251be24
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:632
-msgid ":meth:`def MakeBoundaryElements <smeshBuilder.Mesh.MakeBoundaryElements>`"
-msgstr ""
-
-# ebf6aad9b717442ebf64cdd3d48f208e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:634
-msgid ":meth:`def GetLastCreatedNodes <smeshBuilder.Mesh.GetLastCreatedNodes>`"
-msgstr ""
-
-# a04cc5c028a54d03861ece9fad317d41
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:636
-msgid ":meth:`def GetLastCreatedElems <smeshBuilder.Mesh.GetLastCreatedElems>`"
-msgstr ""
-
-# e9cc0fc3baa748718c0e1b9565d78fe5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:638
-msgid ":meth:`def ClearLastCreated <smeshBuilder.Mesh.ClearLastCreated>`"
-msgstr ""
-
-# 8f1aafa6c1cd4ef1b09d5e2731200a2d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:642
-msgid "Removing nodes and elements"
-msgstr ""
-
-# f3771c9094924a18abfbd1fd322b7332
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:646
-msgid ":meth:`def RemoveElements <smeshBuilder.Mesh.RemoveElements>`"
-msgstr ""
-
-# 2052ac8112504711a295bba532dd96a3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:648
-msgid ":meth:`def RemoveNodes <smeshBuilder.Mesh.RemoveNodes>`"
-msgstr ""
-
-# dab20ca75d0e41a1a84dd38d7ec55898
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:650
-msgid ":meth:`def RemoveOrphanNodes <smeshBuilder.Mesh.RemoveOrphanNodes>`"
-msgstr ""
-
-# 2affc8ab488f46208c25b84e320446dd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:654
-msgid "Modifying nodes and elements"
-msgstr ""
-
-# 3b56d50a33ce418ea0a42f50845cf428
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:656
-msgid "functions:"
-msgstr ""
-
-# 0b23874b7dea4f1cbeebff7c8fdf2781
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:658
-msgid ":meth:`def MoveNode <smeshBuilder.Mesh.MoveNode>`"
-msgstr ""
-
-# 87157a9a3b6242d0951e4a444db4e236
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:660
-msgid ""
-":meth:`def MoveClosestNodeToPoint "
-"<smeshBuilder.Mesh.MoveClosestNodeToPoint>`"
-msgstr ""
-
-# bbb8094228b540679b4dda8c2afa2061
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:662
-msgid ""
-":meth:`def MeshToPassThroughAPoint "
-"<smeshBuilder.Mesh.MeshToPassThroughAPoint>`"
-msgstr ""
-
-# 5cefaf2967764ad38f8bf3fe6545e1c7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:664
-msgid ":meth:`def ChangeElemNodes <smeshBuilder.Mesh.ChangeElemNodes>`"
-msgstr ""
-
-# b9fc90e122ae49b39407a81343b5a34f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:668
-msgid "Renumbering nodes and elements"
-msgstr ""
-
-# 79117ce1b05046eab44d776f7cdd3fc9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:672
-msgid ":meth:`def RenumberNodes <smeshBuilder.Mesh.RenumberNodes>`"
-msgstr ""
-
-# cb0bbc96cc174dc59f442fd1071d502c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:674
-msgid ":meth:`def RenumberElements <smeshBuilder.Mesh.RenumberElements>`"
-msgstr ""
-
-# c52bcd7c63374e8a8a809d46fccc6f07
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:678
-msgid "Transforming meshes (Translation, Rotation, Symmetry, Sewing, Merging)"
-msgstr ""
-
-# 52491266a8704bc8b19dfd0ca72f34e3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:682
-msgid ":meth:`def Mirror <smeshBuilder.Mesh.Mirror>`"
-msgstr ""
-
-# 156b889faa49438f9f5a1cbdd74560de
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:684
-msgid ":meth:`def MirrorMakeMesh <smeshBuilder.Mesh.MirrorMakeMesh>`"
-msgstr ""
-
-# d8cad3abefd346a7838a8bac25c45d4e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:686
-msgid ":meth:`def MirrorObject <smeshBuilder.Mesh.MirrorObject>`"
-msgstr ""
-
-# b80a51a5b08e475c955b74b18b25ce33
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:688
-msgid ":meth:`def MirrorObjectMakeMesh <smeshBuilder.Mesh.MirrorObjectMakeMesh>`"
-msgstr ""
-
-# cf6aa3d2564c4ee585c60755790c6d39
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:690
-msgid ":meth:`def Translate <smeshBuilder.Mesh.Translate>`"
-msgstr ""
-
-# 6477a78623b348598ff2c60ebded4af2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:692
-msgid ":meth:`def TranslateMakeMesh <smeshBuilder.Mesh.TranslateMakeMesh>`"
-msgstr ""
-
-# 0bec18ac771545adb8a9e2522cca87af
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:694
-msgid ":meth:`def TranslateObject <smeshBuilder.Mesh.TranslateObject>`"
-msgstr ""
-
-# dfe798659d3845bb9473d6dd05f92f62
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:696
-msgid ""
-":meth:`def TranslateObjectMakeMesh "
-"<smeshBuilder.Mesh.TranslateObjectMakeMesh>`"
-msgstr ""
-
-# 44934955eea347a49c7d6e0c924d11fb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:698
-msgid ":meth:`def Rotate <smeshBuilder.Mesh.Rotate>`"
-msgstr ""
-
-# 0f11692135754a8cb7e4b5c75156c9ac
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:700
-msgid ":meth:`def RotateMakeMesh <smeshBuilder.Mesh.RotateMakeMesh>`"
-msgstr ""
-
-# 0ae561bc02d845cd968efbb0e4922dcd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:702
-msgid ":meth:`def RotateObject <smeshBuilder.Mesh.RotateObject>`"
-msgstr ""
-
-# e17fc29d010e47ee8e892fd87383c9d3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:704
-msgid ":meth:`def RotateObjectMakeMesh <smeshBuilder.Mesh.RotateObjectMakeMesh>`"
-msgstr ""
-
-# 8bf17ed272fd42518c78e38e0b837058
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:706
-msgid ":meth:`def FindCoincidentNodes <smeshBuilder.Mesh.FindCoincidentNodes>`"
-msgstr ""
-
-# 4f00e1e07330450e9936d5cabfdf8f06
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:708
-msgid ""
-":meth:`def FindCoincidentNodesOnPart "
-"<smeshBuilder.Mesh.FindCoincidentNodesOnPart>`"
-msgstr ""
-
-# b7d412d18b2d4d718a8b64ba8bc0e91d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:710
-msgid ":meth:`def MergeNodes <smeshBuilder.Mesh.MergeNodes>`"
-msgstr ""
-
-# fc7ba0fe671a4280823c3e73ca014808
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:712
-msgid ":meth:`def FindEqualElements <smeshBuilder.Mesh.FindEqualElements>`"
-msgstr ""
-
-# 81a42d4e1f3b446fa353b41336b9aa47
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:714
-msgid ":meth:`def MergeElements <smeshBuilder.Mesh.MergeElements>`"
-msgstr ""
-
-# 3a267717d10e4a3b8490766360a90eb6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:716
-msgid ":meth:`def MergeEqualElements <smeshBuilder.Mesh.MergeEqualElements>`"
-msgstr ""
-
-# ab91a1c63aa7423ea4f56f147369e5ec
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:718
-msgid ":meth:`def FindFreeBorders <smeshBuilder.Mesh.FindFreeBorders>`"
-msgstr ""
-
-# bf5a5c514e3a47fbb7a39672c0bf9268
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:720
-msgid ":meth:`def FillHole <smeshBuilder.Mesh.FillHole>`"
-msgstr ""
-
-# 9ebfd371264846fd93d66da4209af34e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:722
-msgid ""
-":meth:`def FindCoincidentFreeBorders "
-"<smeshBuilder.Mesh.FindCoincidentFreeBorders>`"
-msgstr ""
-
-# 854cdfbc46dd46adbed52889be4b0961
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:724
-msgid ""
-":meth:`def SewCoincidentFreeBorders "
-"<smeshBuilder.Mesh.SewCoincidentFreeBorders>`"
-msgstr ""
-
-# 2952bf3fb43a49fc9c67818cf07bf3d9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:726
-msgid ":meth:`def SewFreeBorders <smeshBuilder.Mesh.SewFreeBorders>`"
-msgstr ""
-
-# a99e40b848264e7ca390eb4c52c72c17
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:728
-msgid ""
-":meth:`def SewConformFreeBorders "
-"<smeshBuilder.Mesh.SewConformFreeBorders>`"
-msgstr ""
-
-# 70e5c7cfce404fd6a69b8f327d0b4738
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:730
-msgid ":meth:`def SewBorderToSide <smeshBuilder.Mesh.SewBorderToSide>`"
-msgstr ""
-
-# a3e58b93634e4bbb8b6e70db7344793b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:732
-msgid ":meth:`def SewSideElements <smeshBuilder.Mesh.SewSideElements>`"
-msgstr ""
-
-# f19f69caa06d4df7bf33c51d0278bb14
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:737
-msgid "Uniting triangles"
-msgstr ""
-
-# afe2ce2d2f1443ebabb0a4f7f6860598
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:741
-msgid ":meth:`def DeleteDiag <smeshBuilder.Mesh.DeleteDiag>`"
-msgstr ""
-
-# 4c03aa5fedad421a9f0581d9602bcef8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:743
-msgid ":meth:`def TriToQuad <smeshBuilder.Mesh.TriToQuad>`"
-msgstr ""
-
-# b2a4a85adc744066ba34e7f63b42ca2f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:745
-msgid ":meth:`def TriToQuadObject <smeshBuilder.Mesh.TriToQuadObject>`"
-msgstr ""
-
-# bbf7eac775cb45a689f227964a979dc2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:750
-msgid "Cutting elements"
-msgstr ""
-
-# 92ea318045ff46b8b4eaf49171e75f31
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:754
-msgid ":meth:`def InverseDiag <smeshBuilder.Mesh.InverseDiag>`"
-msgstr ""
-
-# 9e4170fd36f0401bab37ec3cfe57c868
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:756
-msgid ":meth:`def QuadToTri <smeshBuilder.Mesh.QuadToTri>`"
-msgstr ""
-
-# 023be8af89b7452fb59b1f46881c7639
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:758
-msgid ":meth:`def QuadToTriObject <smeshBuilder.Mesh.QuadToTriObject>`"
-msgstr ""
-
-# 940bdd067de04b9c95aa86b571b07055
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:760
-msgid ":meth:`def QuadTo4Tri <smeshBuilder.Mesh.QuadTo4Tri>`"
-msgstr ""
-
-# e63a1d9a987d4e03afa474bd0ed2a078
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:762
-msgid ":meth:`def SplitQuad <smeshBuilder.Mesh.SplitQuad>`"
-msgstr ""
-
-# ff3671a6290b41d9afb3bfa7c608693c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:764
-msgid ":meth:`def SplitQuadObject <smeshBuilder.Mesh.SplitQuadObject>`"
-msgstr ""
-
-# c29477f93ce549568696b7cb0fb4bdb5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:766
-msgid ":meth:`def BestSplit <smeshBuilder.Mesh.BestSplit>`"
-msgstr ""
-
-# 9ca81aa1146f43a7a1984ee8ad125511
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:768
-msgid ""
-":meth:`def SplitVolumesIntoTetra "
-"<smeshBuilder.Mesh.SplitVolumesIntoTetra>`"
-msgstr ""
-
-# 5d2262b2b4514a099ce7d74a012108c2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:770
-msgid ""
-":meth:`def SplitBiQuadraticIntoLinear "
-"<smeshBuilder.Mesh.SplitBiQuadraticIntoLinear>`"
-msgstr ""
-
-# 573170162eac4e5e883119812daa935f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:772
-msgid ""
-":meth:`def SplitHexahedraIntoPrisms "
-"<smeshBuilder.Mesh.SplitHexahedraIntoPrisms>`"
-msgstr ""
-
-# 4138c66fa27d40d1aa162e2617d3ad1b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:774
-msgid ""
-":meth:`def SplitQuadsNearTriangularFacets "
-"<smeshBuilder.Mesh.SplitQuadsNearTriangularFacets>`"
-msgstr ""
-
-# cc61ba036c614a758cdb7bb96ca0203d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:776
-msgid ":meth:`def SplitHexaToTetras <smeshBuilder.Mesh.SplitHexaToTetras>`"
-msgstr ""
-
-# 1785c80335ba43edb7e621f0be17a09f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:778
-msgid ":meth:`def SplitHexaToPrisms <smeshBuilder.Mesh.SplitHexaToPrisms>`"
-msgstr ""
-
-# ef498fe64e9e4d1e980b62181c38df73
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:783
-msgid "Changing orientation of elements"
-msgstr ""
-
-# 021ec661a4e8415a940c810c165d5314
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:787
-msgid ":meth:`def Reorient <smeshBuilder.Mesh.Reorient>`"
-msgstr ""
-
-# 965fdd6ed4034fc792ae6c5c10ce94e5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:789
-msgid ":meth:`def ReorientObject <smeshBuilder.Mesh.ReorientObject>`"
-msgstr ""
-
-# d98cbd13f00445449dbbce77ea01109d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:791
-msgid ":meth:`def Reorient2D <smeshBuilder.Mesh.Reorient2D>`"
-msgstr ""
-
-# cd030f23da584d63be3dbd1d3cb3ec9c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:793
-msgid ":meth:`def Reorient2DBy3D <smeshBuilder.Mesh.Reorient2DBy3D>`"
-msgstr ""
-
-# 6577aae1aa8c4c6b9a7dcaee56e03ac0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:798
-msgid "Smoothing"
-msgstr ""
-
-# 2dceedca7f2b4b928100ad7ecdf9730c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:802
-msgid ":meth:`def Smooth <smeshBuilder.Mesh.Smooth>`"
-msgstr ""
-
-# 60d8cc4f3f844039b28e6f20fac77818
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:804
-msgid ":meth:`def SmoothObject <smeshBuilder.Mesh.SmoothObject>`"
-msgstr ""
-
-# 407ef83cb149412e9a0d793aeb886e3c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:806
-msgid ":meth:`def SmoothParametric <smeshBuilder.Mesh.SmoothParametric>`"
-msgstr ""
-
-# 7f4b74f8ee6444a796c878e07c3c1c0b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:808
-msgid ""
-":meth:`def SmoothParametricObject "
-"<smeshBuilder.Mesh.SmoothParametricObject>`"
-msgstr ""
-
-# 0561311ab1ec49b9bbf9ad43315e2ffa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:813
-msgid "Extrusion and Revolution"
-msgstr ""
-
-# b35f910325f94984a743685362d08967
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:817
-msgid ":meth:`def RotationSweepObjects <smeshBuilder.Mesh.RotationSweepObjects>`"
-msgstr ""
-
-# 1ce1f751992340f399961195f4f9f4d5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:819
-msgid ":meth:`def RotationSweep <smeshBuilder.Mesh.RotationSweep>`"
-msgstr ""
-
-# 0bda5290f2424c7aae39ffb6e78e45d1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:821
-msgid ":meth:`def RotationSweepObject <smeshBuilder.Mesh.RotationSweepObject>`"
-msgstr ""
-
-# bc677fcce521411db428433277b64bd9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:823
-msgid ""
-":meth:`def RotationSweepObject1D "
-"<smeshBuilder.Mesh.RotationSweepObject1D>`"
-msgstr ""
-
-# eabd288217db466a947aeefc138d48b5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:825
-msgid ""
-":meth:`def RotationSweepObject2D "
-"<smeshBuilder.Mesh.RotationSweepObject2D>`"
-msgstr ""
-
-# 57d64c25131c4b5b8fb2b69cf0d12330
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:827
-msgid ""
-":meth:`def ExtrusionSweepObjects "
-"<smeshBuilder.Mesh.ExtrusionSweepObjects>`"
-msgstr ""
-
-# 0158d23af530444397a3d6f10fb12059
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:829
-msgid ":meth:`def ExtrusionSweep <smeshBuilder.Mesh.ExtrusionSweep>`"
-msgstr ""
-
-# 867072ab3ce344029cd8ec07cbeaba43
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:831
-msgid ":meth:`def ExtrusionByNormal <smeshBuilder.Mesh.ExtrusionByNormal>`"
-msgstr ""
-
-# 6947db5c2f2040c4914549fa963fc251
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:833
-msgid ":meth:`def ExtrusionSweepObject <smeshBuilder.Mesh.ExtrusionSweepObject>`"
-msgstr ""
-
-# 9c10d33f9c7545d2b74bce4e5af10c4e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:835
-msgid ""
-":meth:`def ExtrusionSweepObject1D "
-"<smeshBuilder.Mesh.ExtrusionSweepObject1D>`"
-msgstr ""
-
-# cec00539b219405ebd95d14fac5fd20e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:837
-msgid ""
-":meth:`def ExtrusionSweepObject2D "
-"<smeshBuilder.Mesh.ExtrusionSweepObject2D>`"
-msgstr ""
-
-# 12a0e9f769aa487aa0e24e1f1be7dfcd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:839
-msgid ":meth:`def AdvancedExtrusion <smeshBuilder.Mesh.AdvancedExtrusion>`"
-msgstr ""
-
-# 39ac68db390949f1af51567f7ad6022c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:841
-msgid ""
-":meth:`def ExtrusionAlongPathObjects "
-"<smeshBuilder.Mesh.ExtrusionAlongPathObjects>`"
-msgstr ""
-
-# 153036bcd18442afb5f80202cc8df2a3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:843
-msgid ":meth:`def ExtrusionAlongPathX <smeshBuilder.Mesh.ExtrusionAlongPathX>`"
-msgstr ""
-
-# 4089ff73c66f42ebbab51b1440ba8dee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:845
-msgid ":meth:`def ExtrusionAlongPath <smeshBuilder.Mesh.ExtrusionAlongPath>`"
-msgstr ""
-
-# a803a9e0f9dc4d20bbde0cf23870c48b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:847
-msgid ""
-":meth:`def ExtrusionAlongPathObject "
-"<smeshBuilder.Mesh.ExtrusionAlongPathObject>`"
-msgstr ""
-
-# 296bd20c43124438b3d992ce449e687b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:849
-msgid ""
-":meth:`def ExtrusionAlongPathObject1D "
-"<smeshBuilder.Mesh.ExtrusionAlongPathObject1D>`"
-msgstr ""
-
-# 1ae49f032c0843d1b6b33fccf6edb66d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:851
-msgid ""
-":meth:`def ExtrusionAlongPathObject2D "
-"<smeshBuilder.Mesh.ExtrusionAlongPathObject2D>`"
-msgstr ""
-
-# ebdddf705f594ae9b198a6c8b42ed733
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:856
-msgid "Convert to/from Quadratic Mesh"
-msgstr ""
-
-# 082d34e5587a4de1af651d1c2200d4cd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:860
-msgid ":meth:`def ConvertToQuadratic <smeshBuilder.Mesh.ConvertToQuadratic>`"
-msgstr ""
-
-# 903b038e90554c6383d4fe5b57ccdf77
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:862
-msgid ":meth:`def ConvertFromQuadratic <smeshBuilder.Mesh.ConvertFromQuadratic>`"
-msgstr ""
-
-# c90b906ed17147e38eed9d95dfbd0156
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:867
-msgid "Duplication of nodes and elements (to emulate cracks)"
-msgstr ""
-
-# 443144e7223a495896fda9a019a54c89
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:871
-msgid ":meth:`def DoubleElements <smeshBuilder.Mesh.DoubleElements>`"
-msgstr ""
-
-# 177d508a7b6b4450afbbd69d1c8e2f47
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:873
-msgid ":meth:`def DoubleNodes <smeshBuilder.Mesh.DoubleNodes>`"
-msgstr ""
-
-# 565067fc88f64bd79c87db855cceb9d5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:875
-msgid ":meth:`def DoubleNode <smeshBuilder.Mesh.DoubleNode>`"
-msgstr ""
-
-# a4ba2d6b744543df90ac95bc3a71803d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:877
-msgid ":meth:`def DoubleNodeGroup <smeshBuilder.Mesh.DoubleNodeGroup>`"
-msgstr ""
-
-# d09a6b85b2f440bda3d76d558bb85aef
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:879
-msgid ":meth:`def DoubleNodeGroups <smeshBuilder.Mesh.DoubleNodeGroups>`"
-msgstr ""
-
-# 6ab0e0a9de4f47b58db11c9712f85510
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:881
-msgid ":meth:`def DoubleNodeElem <smeshBuilder.Mesh.DoubleNodeElem>`"
-msgstr ""
-
-# 745308aff91f4f74a5448462bdb0d268
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:883
-msgid ""
-":meth:`def DoubleNodeElemInRegion "
-"<smeshBuilder.Mesh.DoubleNodeElemInRegion>`"
-msgstr ""
-
-# e3a6b9baa7bb4fcb935ffbd705d695e0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:885
-msgid ":meth:`def DoubleNodeElemGroup <smeshBuilder.Mesh.DoubleNodeElemGroup>`"
-msgstr ""
-
-# 30af0bf0d14847c9868ae41f8d390caf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:887
-msgid ""
-":meth:`def DoubleNodeElemGroupInRegion "
-"<smeshBuilder.Mesh.DoubleNodeElemGroupInRegion>`"
-msgstr ""
-
-# ad4b709f35db437d9729704a400cfeb8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:889
-msgid ":meth:`def DoubleNodeElemGroups <smeshBuilder.Mesh.DoubleNodeElemGroups>`"
-msgstr ""
-
-# 0c85d6856abd4f0e869efd3c0319fcae
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:891
-msgid ""
-":meth:`def DoubleNodeElemGroupsInRegion "
-"<smeshBuilder.Mesh.DoubleNodeElemGroupsInRegion>`"
-msgstr ""
-
-# f4e3cd4e0d3b427b9f84253d4f7547cb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:893
-msgid ""
-":meth:`def AffectedElemGroupsInRegion "
-"<smeshBuilder.Mesh.AffectedElemGroupsInRegion>`"
-msgstr ""
-
-# 3bd0bc3edb4d40db97c1ce1904b95a5c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:895
-msgid ""
-":meth:`def DoubleNodesOnGroupBoundaries "
-"<smeshBuilder.Mesh.DoubleNodesOnGroupBoundaries>`"
-msgstr ""
-
-# 4bae5a9fa9224b4e83739225df7f26e8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:897
-msgid ""
-":meth:`def CreateFlatElementsOnFacesGroups "
-"<smeshBuilder.Mesh.CreateFlatElementsOnFacesGroups>`"
-msgstr ""
-
-# aa9625f8cc0c4f98a10c561807b0fd45
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:903
-msgid "Measurements"
-msgstr ""
-
-# ff946f026b284d88b6d33ba681bec784
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:908
-msgid ":meth:`def MinDistance <smeshBuilder.smeshBuilder.MinDistance>`"
-msgstr ""
-
-# f1597e5b1ace4148a543e81d917e16ad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:910
-msgid ":meth:`def GetMinDistance <smeshBuilder.smeshBuilder.GetMinDistance>`"
-msgstr ""
-
-# 8c061732c84243e4999c791d5013c457
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:912
-msgid ":meth:`def BoundingBox <smeshBuilder.smeshBuilder.BoundingBox>`"
-msgstr ""
-
-# cb9496005d9e4bd08374be8da5b6d955
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:914
-msgid ":meth:`def GetBoundingBox <smeshBuilder.smeshBuilder.GetBoundingBox>`"
-msgstr ""
-
-# ab581091987f47edb3536661186299d8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:916
-msgid ":meth:`def GetLength <smeshBuilder.smeshBuilder.GetLength>`"
-msgstr ""
-
-# ff8cba895f7e45c1b6a4125f7d2e6292
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:918
-msgid ":meth:`def GetArea <smeshBuilder.smeshBuilder.GetArea>`"
-msgstr ""
-
-# ac5dd4739c6349df9e30e171ba2112f6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:920
-msgid ":meth:`def GetVolume <smeshBuilder.smeshBuilder.GetVolume>`"
-msgstr ""
-
-# c1b1cf4ab290495c9c7b6fb25c9964be
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:922
-msgid ":meth:`def GetFreeBorders <smeshBuilder.Mesh.GetFreeBorders>`"
-msgstr ""
-
-# 7fc75b85d5444815a8949d02a41ff011
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:924
-msgid ":meth:`def MinDistance <smeshBuilder.Mesh.MinDistance>`"
-msgstr ""
-
-# 7f62a709e8114689b264f1e22222e72f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:926
-msgid ":meth:`def GetMinDistance <smeshBuilder.Mesh.GetMinDistance>`"
-msgstr ""
-
-# 9f7b563371434850ba91c4076e1e7d47
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:928
-msgid ":meth:`def BoundingBox <smeshBuilder.Mesh.BoundingBox>`"
-msgstr ""
-
-# 8dacd3983a9b4fe5abe7aeb8d1a3abd1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:930
-msgid ":meth:`def GetBoundingBox <smeshBuilder.Mesh.GetBoundingBox>`"
-msgstr ""
-
-# 49f25d14f1a8477b8e6634c2df06c9b8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:932
-msgid ":meth:`def GetFunctor <smeshBuilder.Mesh.GetFunctor>`"
-msgstr ""
-
-# 40708bb5cb564f7386340e94bb58097f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:934
-msgid ":meth:`def FunctorValue <smeshBuilder.Mesh.FunctorValue>`"
-msgstr ""
-
-# 0852d20741c34483bdf302ae17b9d6cc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:936
-msgid ":meth:`def GetLength <smeshBuilder.Mesh.GetLength>`"
-msgstr ""
-
-# 329b0f363aa14f87a300b439ce45950b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:938
-msgid ":meth:`def GetArea <smeshBuilder.Mesh.GetArea>`"
-msgstr ""
-
-# b67a175962b048b3a089e0cf1d4adce4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:940
-msgid ":meth:`def GetVolume <smeshBuilder.Mesh.GetVolume>`"
-msgstr ""
-
-# 8d7ea48673fb4afb828461ea52e24a51
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:942
-msgid ":meth:`def GetMaxElementLength <smeshBuilder.Mesh.GetMaxElementLength>`"
-msgstr ""
-
-# 9429fe5fd98f48e286ef1302ed70b7a5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:944
-msgid ":meth:`def GetAspectRatio <smeshBuilder.Mesh.GetAspectRatio>`"
-msgstr ""
-
-# 70f0db05da184f5d8bede2bc579da788
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:946
-msgid ":meth:`def GetWarping <smeshBuilder.Mesh.GetWarping>`"
-msgstr ""
-
-# 3923e5251d964e39b30978e8603d0bfc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:948
-msgid ":meth:`def GetMinimumAngle <smeshBuilder.Mesh.GetMinimumAngle>`"
-msgstr ""
-
-# dfc93a88fbbb413f8823bc2638fe9f44
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:950
-msgid ":meth:`def GetTaper <smeshBuilder.Mesh.GetTaper>`"
-msgstr ""
-
-# 41be6e44395240ab88848d50ad80a7ec
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:952
-msgid ":meth:`def GetSkew <smeshBuilder.Mesh.GetSkew>`"
-msgstr ""
-
-# 6c64d11fb1b44b7d849aa9230061297f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:954
-msgid ":meth:`def GetMinMax <smeshBuilder.Mesh.GetMinMax>`"
-msgstr ""
-
-# d3a8a9a4e3a8464082cb87f04506af4b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:959
-msgid "Accessing SMESH object in study"
-msgstr ""
-
-# a4f60f9a61a548678577ca804acca3f8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/modules.rst:963
-msgid ":class:`SMeshStudyTools <smeshstudytools.SMeshStudyTools>`"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/numbering.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/numbering.po
deleted file mode 100644 (file)
index f991868..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 7d95f1ef3f0043dc91d5d1fcd1bc2944
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:5
-msgid "Numbering"
-msgstr ""
-
-# 55030336e52e4a75b6de75c17d34234a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:8
-msgid "Displaying node numbers"
-msgstr ""
-
-# 41a96e3d00214dc1a02d8738d1614d86
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:10
-msgid ""
-"In MESH you can display the ID numbers of all nodes of your mesh in the "
-"viewer."
-msgstr ""
-
-# 14db4614a8be43f2930a7a8076b8c79c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:12
-msgid "**To display ID numbers of nodes:**"
-msgstr ""
-
-# 44fad65bf5834169aac7bc005875f768
-# c832343967d146d386a35f0c8d810f36
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:14
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:31
-msgid "Display your mesh in the viewer"
-msgstr ""
-
-# 4e95ad9e84984429a8efda3ac16bcd06
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:15
-msgid ""
-"Right-click on the mesh in the 3D viewer and from the associated pop-up "
-"menu choose **Numbering > Display Nodes #**."
-msgstr ""
-
-# fea8ed3d37404dfe891fca4f6f4e0100
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:25
-msgid "Displaying element numbers"
-msgstr ""
-
-# d8cbb7e23d5445bda5eb5162a8295072
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:27
-msgid ""
-"In MESH you can display the ID numbers of all meshing elements composing "
-"your mesh in the viewer."
-msgstr ""
-
-# f4e486d693f2479dad2992508f50dd17
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:29
-msgid "**To display ID numbers of elements:**"
-msgstr ""
-
-# 09f8d1e8761b4eb48e2ca099c2fd4d9d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/numbering.rst:32
-msgid ""
-"Right-click on the mesh in the 3D viewer and from the associated pop-up "
-"menu choose **Numbering > Display Elements #**."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/over_constrained_faces.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/over_constrained_faces.po
deleted file mode 100644 (file)
index 90891f6..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 7fdfea347e1d4091902dadb3d3a0c400
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_faces.rst:5
-msgid "Over-constrained faces"
-msgstr ""
-
-# 6709c7e9a6414872af4c0b7160eea96c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_faces.rst:7
-msgid ""
-"This mesh quality control highlights faces sharing only one border with "
-"other faces. In other words, the faces having all their nodes on the free"
-" border of the 2D mesh are highlighted."
-msgstr ""
-
-# 13eece5073274b6eb53dedc1b6afb106
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_faces.rst:12
-msgid ""
-"The highlighted faces are actually over-constrained only if, at the "
-"computation time, the boundary conditions on the borders where the nodes "
-"are located are all Dirichlet boundary conditions."
-msgstr ""
-
-# 5da724c689594f42a4628042beacd200
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_faces.rst:20
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_over_constrained_faces` "
-"filter."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/over_constrained_volumes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/over_constrained_volumes.po
deleted file mode 100644 (file)
index dec1720..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 1c76f867b1bd4081b8b10575d65b85d4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_volumes.rst:5
-msgid "Over-constrained volumes"
-msgstr ""
-
-# 1ceac26032bb4804bf5dc6931e08b4f6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_volumes.rst:7
-msgid ""
-"This mesh quality control highlights volumes sharing only one border with"
-" other volumes. In other words, the volumes having all their nodes on the"
-" external border of the mesh are highlighted."
-msgstr ""
-
-# c0c65d21a1cb48cca3707891a34f48e5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_volumes.rst:11
-msgid ""
-"The highlighted volumes are actually over-constrained only if, at the "
-"computation time, the boundary conditions on the borders where the nodes "
-"are located are all Dirichlet boundary conditions."
-msgstr ""
-
-# ae9f662b35ed4e059827aae378ff704a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/over_constrained_volumes.rst:19
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_over_constrained_volumes`"
-" filter."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/pattern_mapping.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/pattern_mapping.po
deleted file mode 100644 (file)
index 124763f..0000000
+++ /dev/null
@@ -1,355 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# c83938bf26c24f74be1043ebf14552d8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:5
-msgid "Pattern mapping"
-msgstr ""
-
-# 8a5e89284905421995a2dfa8ab8b636f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:8
-msgid "About patterns"
-msgstr ""
-
-# 3550a3c3a90d4388bdc4d9a0e4db5435
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:10
-msgid ""
-"The pattern describes a mesh to generate: positions of nodes within a "
-"geometrical domain and nodal connectivity of elements. A pattern also "
-"specifies the so-called key-points, i.e. the nodes that will be located "
-"at geometrical vertices. The pattern description is stored in "
-"\\<pattern_name\\>.smp file."
-msgstr ""
-
-# 4009fa606e1c4c5b822b21dff8638900
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:16
-msgid "The smp file contains 4 sections:"
-msgstr ""
-
-# ff829ae0fb1b425f9cbc0ce1072a1e18
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:18
-msgid "The first line indicates the total number of pattern nodes (N)."
-msgstr ""
-
-# aeaaf04620194050a73e3d8250d3c138
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:19
-msgid ""
-"The next N lines describe nodes coordinates. Each line contains 2 node "
-"coordinates for a 2D pattern or 3 node coordinates for a 3D pattern. "
-"Note, that node coordinates of a 3D pattern can be defined only by "
-"relative values in range [0;1]."
-msgstr ""
-
-# fe96e67b421d4104beb3804802893513
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:20
-msgid ""
-"The key-points line contains the indices of the nodes to be mapped on "
-"geometrical vertices (for a 2D pattern only). Index n refers to the node "
-"described on the n-th line of section 2. The index of the first node is "
-"zero. For a 3D pattern the key points are not specified."
-msgstr ""
-
-# 929bbb6294a1412f8bf8a2da1370656c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:21
-msgid ""
-"The remaining lines describe nodal connectivity of elements, one line for"
-" each element. Each line holds indices of nodes forming an element. Index"
-" n refers to the node described on the n-th line of section 2. The first "
-"node index is zero. There must be 3 or 4 indices on each line for a 2D "
-"pattern (only liner 2d elements are allowed) and 4, 5, 6 or 8 indices for"
-" a 3D pattern (only linear 3d elements are allowed)."
-msgstr ""
-
-# 8d99602f52b64ed0b964677bbc0298dc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:23
-msgid ""
-"A 2D pattern must contain at least one element and at least one key-"
-"point. All key-points must lie on boundaries."
-msgstr ""
-
-# 2d2b937722444868af3eecb314c6ffb2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:25
-msgid "A 3D pattern must contain at least one element."
-msgstr ""
-
-# 9fcf969a83554a03ac70a6c524e0b891
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:27
-msgid "An example of a simple 2D pattern smp file: ::"
-msgstr ""
-
-# e5d838bf9c4749f28f49887d4fc67251
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:53
-msgid "The image below provides a preview of the above pattern:"
-msgstr ""
-
-# 969369d4f4064f74b5dc08f623b51c2a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:86
-msgid "Application of pattern mapping"
-msgstr ""
-
-# 13b96cae026945919cf0928e43d3a874
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:88
-msgid "**To apply pattern mapping to a geometrical object or mesh elements:**"
-msgstr ""
-
-# 2226092c305a4eb5b6e41c7a3e6f5364
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:90
-msgid ""
-"From the **Modification** menu choose the **Pattern Mapping** item or "
-"click **\"Pattern mapping\"** button in the toolbar."
-msgstr ""
-
-# a66db0a308a7471ebfe82759dfabc1b2
-# c5f77be0bb7945e4b192e923b3ff90de
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:99
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:156
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# 3833efecb3e34cfeb6abf4fcd97f6259
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:101
-msgid "For a **2D pattern**"
-msgstr ""
-
-# 327bfc771bd5449694eed60d94a3ab2b
-# 3a2a189ac97545edb3db1141f22eb91a
-# bb339f32b064419a8e6a36706724d88f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:107
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:132
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:161
-msgid "In this dialog you should specify:"
-msgstr ""
-
-# f3386e602bcc430199fd6750086acfda
-# 00d0e63ddd69486c8a050016482cb58c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:109
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:134
-msgid ""
-"**Pattern**, which can be loaded from .smp pattern file previously "
-"created manually or generated automatically from an existing mesh or sub-"
-"mesh."
-msgstr ""
-
-# d273cb2447914ebf8a2e7a45f89dc8c7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:110
-msgid ""
-"**Face** with the number of vertices equal to the number of key-points in"
-" the pattern; the number of key-points on internal boundaries of the "
-"pattern must also be equal to the number of vertices on internal "
-"boundaries of the face;"
-msgstr ""
-
-# 9f35137dce154a16a95f2f049d5b906b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:111
-msgid "**Vertex** to which the first key-point should be mapped;"
-msgstr ""
-
-# ae8e1ab88d1d4e61b531267dfd113382
-# e743a5b4079947159adfb93032f4e82e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:114
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:139
-msgid ""
-"Alternatively, it is possible to select **Refine selected mesh elements**"
-" check-box and apply the pattern to"
-msgstr ""
-
-# b3e08b4388a049599b91cf902f892ce9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:116
-msgid "**Mesh Face** instead of a geometric Face"
-msgstr ""
-
-# a8e8314bc7cc4f16a36f549f4e86269f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:117
-msgid "and select **Node** instead of vertex."
-msgstr ""
-
-# f22bda8580604a1e935ba3dc6e2fd8d1
-# ae2fdff186ac4cae9048e55b25f781e1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:120
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:144
-msgid "Additionally it is possible to:"
-msgstr ""
-
-# 570ae6cfabd3444d9ef4e6a5551fe8ad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:122
-msgid ""
-"**Reverse the order of key-points**. By default, the vertices of a face "
-"are ordered counterclockwise."
-msgstr ""
-
-# 8fcd7c5b92f848259c2e2bf00700a498
-# fcd34acf310642af88b94d08ad830de1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:123
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:146
-msgid "Enable to **Create polygons near boundary**"
-msgstr ""
-
-# 85e13224561c48a596162c654b5a0ff1
-# 8833494d15ec41c19fd516ea914c9a6c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:124
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:147
-msgid "and **Create polyhedrons near boundary**"
-msgstr ""
-
-# ab6bcc13f4324048a57537f0f6746707
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:127
-msgid "For a **3D pattern**"
-msgstr ""
-
-# 160ac2d750994567915eb090f16f67bb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:135
-msgid "A 3D block (Solid) object."
-msgstr ""
-
-# 3087f731ee27452fba7f533a95d5402d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:136
-msgid "Two vertices that specify the order of nodes in the resulting mesh."
-msgstr ""
-
-# ab6ec47757184294ba600a3b5423dbe8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:141
-msgid "One or several **Mesh volumes** instead of a geometric 3D object"
-msgstr ""
-
-# b63f393d8fc94c34997745086bb0aae0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:142
-msgid "and select two **Nodes** instead of vertices."
-msgstr ""
-
-# 93ac12e1c9fe447da2eeb1cc9d1ac7a5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:152
-msgid "Automatic Pattern Generation"
-msgstr ""
-
-# cd73e34977b247d8b807653626c727d0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:154
-msgid ""
-"To generate a pattern automatically from an existing mesh or sub-mesh, "
-"click **New** button."
-msgstr ""
-
-# ba136583468742a4a003239056493edd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:164
-msgid ""
-"**Mesh or Sub-mesh**, which is a meshed geometrical face (for a 2D "
-"pattern) or a meshed solid block (for a 3D pattern). Mesh nodes lying on "
-"the face vertices become key-points of the pattern."
-msgstr ""
-
-# 3bc616cb8d0e4c2bb081863c545bcb59
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:165
-msgid "A custom **Pattern Name**"
-msgstr ""
-
-# 05b4e73b55284d6fa4149d4bce33c4bc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:166
-msgid ""
-"Additionally, for a 2D pattern you may choose to **Project nodes on the "
-"face** to get node coordinates instead of using \"positions on face\" "
-"generated by the mesher (if there is any). The faces having a seam edge "
-"cannot be used for automatic pattern creation."
-msgstr ""
-
-# 5aa226ad57004fe883eb82ea6f121854
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:169
-msgid "When a pattern is created from an existing mesh, two cases are possible:"
-msgstr ""
-
-# 08018221e5e74d6fa964e3a1a86f3c55
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:171
-msgid ""
-"A sub-mesh on a face/solid is selected. The pattern is created from the "
-"2d/3d elements bound to the face/solid by the mesher. For a 2D pattern, "
-"the node coordinates are either \"positions on face\" computed by the "
-"mesher, or coordinates got by node projection on a geometrical surface, "
-"according to the user choice. For a 3D pattern, the node coordinates "
-"correspond to the nodes computed by the mesher."
-msgstr ""
-
-# 713cef75be124b7e867053d26fb54ca4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:172
-msgid ""
-"A mesh, where the main shape is a face/solid, is selected. The pattern is"
-" created from all 2d/3d elements in a mesh. In addition, if all mesh "
-"elements of a 2D pattern are built by the mesher, the user can select how"
-" to get node coordinates, otherwise all nodes are projected on a face "
-"surface."
-msgstr ""
-
-# c7724306e7b24801be95bf03e1b97916
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:176
-msgid "Mapping algorithm"
-msgstr ""
-
-# 589adef6a42f4539a64abcdb531fc54a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:178
-msgid "The mapping algorithm for a 2D case is as follows:"
-msgstr ""
-
-# b2c261010c374a469817645f0ff7db76
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:180
-msgid ""
-"The key-points are set counterclockwise in the order corresponding to "
-"their location on the pattern boundary. The first key-point is preserved."
-msgstr ""
-
-# dd71560977c54212a3888b9130bdabe5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:181
-msgid ""
-"The geometrical vertices corresponding to the key-points are found on "
-"face boundary. Here, \"Reverse order of key-points\" flag is set."
-msgstr ""
-
-# 9a9ccb3ee6154f5da4056cbcafd8db97
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:186
-msgid ""
-"The boundary nodes of the pattern are mapped onto the edges of the face: "
-"a node located between two key-points on the pattern boundary is mapped "
-"on the geometrical edge limited by the corresponding geometrical "
-"vertices. The node position on the edge depends on its distance from the "
-"key-points."
-msgstr ""
-
-# d440ef0d237a48368183cd94c02ec404
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:191
-msgid ""
-"The coordinates of a non-boundary node in the parametric space of the "
-"face are defined in the following way. In the parametric space of the "
-"pattern, the  node lies at the intersection of two iso-lines. Both of "
-"them intersect the pattern boundary at two points at least. If the mapped"
-" positions of boundary nodes are known, it is possible to find, where the"
-" points at the intersection of iso-lines and boundaries are mapped. Then "
-"it is possible to find the direction of mapped iso-line section and, "
-"finally, the positions of two nodes on two mapped isolines. The eventual "
-"mapped position of the node is found as an average of the positions on "
-"mapped iso-lines."
-msgstr ""
-
-# e10562bb4b5c4b8085517de679144722
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:196
-msgid "The 3D algorithm is similar."
-msgstr ""
-
-# f6d719e6414d40dfa409606b1f05e1f1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/pattern_mapping.rst:198
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_pattern_mapping` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/point_marker.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/point_marker.po
deleted file mode 100644 (file)
index 78e3ba8..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 963e7da94a48431d9383310f5d9ea57a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/point_marker.rst:5
-msgid "Point Marker"
-msgstr ""
-
-# 10cc3fcf74624111a0478fc8b51ab83d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/point_marker.rst:7
-msgid ""
-"You can change the representation of points in the 3D viewer either by "
-"selecting one of the predefined shapes or by loading a custom texture "
-"from an external file."
-msgstr ""
-
-# 203e3a9b996846788a38cad64719931d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/point_marker.rst:11
-msgid "Standard point markers"
-msgstr ""
-
-# a18ec3d475b94b0780689f91c460df62
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/point_marker.rst:13
-msgid ""
-"The Mesh module provides a set of predefined point marker shapes which "
-"can be used to display points in the 3D viewer. Each standard point "
-"marker has two attributes: type (defines shape form) and scale factor "
-"(defines shape size)."
-msgstr ""
-
-# 13ebf72623394864a00b4e6fa3197834
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/point_marker.rst:28
-msgid "Custom point markers"
-msgstr ""
-
-# e899af8d220045a48bd59af333ba576e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/point_marker.rst:30
-msgid ""
-"It is also possible to load a point marker shape from an external file. "
-"This file should provide a description of the point texture as a set of "
-"lines; each line is represented as a sequence of \"0\" and \"1\" symbols,"
-" where \"1\" symbol means an opaque pixel and \"0\" symbol means a "
-"transparent pixel. The width of the texture corresponds to the length of "
-"the longest line in the file, expanded to the nearest byte-aligned value."
-" The height of the texture is equal to the number of non-empty lines in "
-"the file. Note that missing symbols are replaced by \"0\"."
-msgstr ""
-
-# ceac257a415b40cdba2e44cb9637115a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/point_marker.rst:39
-msgid "Here is a texture file sample: ::"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/prism_3d_algo.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/prism_3d_algo.po
deleted file mode 100644 (file)
index e9bbc69..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 5883c75425df4f2c89c1427bfb185d89
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:5
-msgid "Extrusion 3D meshing algorithm"
-msgstr ""
-
-# 35b4ce80b6cb4ed6bd932df431fce354
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:7
-msgid ""
-"Extrusion 3D algorithm can be used for meshing prisms, i.e. 3D shapes "
-"defined by two opposing faces having the same number of vertices and "
-"edges. These two faces should be connected by quadrangle \"side\" faces."
-msgstr ""
-
-# 55f761ace9d54d8b9373b6a3f76e397b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:17
-msgid ""
-"The prism is allowed to have sides composed of several faces. (A prism "
-"side is a row of faces (or one face) connecting the corresponding edges "
-"of the top and base faces). However, a prism side can be split only "
-"vertically as indicated in the picture below."
-msgstr ""
-
-# bbcb105e95fd459db17209c5bb48d9d1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:29
-msgid ""
-"In this picture, the left prism is suitable for meshing with 3D extrusion"
-" algorithm: it has six sides, two of which are split vertically. The "
-"right prism cannot be meshed with this algorithm because one of the prism"
-" sides is split horizontally (the splitting edge is highlighted)."
-msgstr ""
-
-# 9be47428a7a241ab88225a19cecbf013
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:35
-msgid ""
-"The algorithm can propagate 2D mesh not only between horizontal (i.e. "
-"base and top) faces of one prism but also between faces of prisms "
-"organized in a stack and between stacks sharing prism sides."
-msgstr ""
-
-# 4d04532881c84454a01e611fcddc14b8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:45
-msgid ""
-"This picture shows four neighboring prism stacks, each comprising two "
-"prisms. The shown sub-mesh is used by the algorithm to mesh all eight "
-"prisms in the stacks."
-msgstr ""
-
-# 2913e96162ad409d937a3ece24f82772
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:49
-msgid ""
-"To use **Extrusion 3D** algorithm you need to assign algorithms and "
-"hypotheses of lower dimensions as follows. (A sample picture below shows "
-"algorithms and hypotheses used to mesh a cylinder with prismatic "
-"volumes)."
-msgstr ""
-
-# 4298d75d354f476b9551fc957558c147
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:57
-msgid ""
-"The **Global** algorithms and hypotheses to be chosen at "
-":ref:`create_mesh_anchor` are:"
-msgstr ""
-
-# 4e8e07e8e04741ffb136789ec959529e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:60
-msgid ""
-"1D algorithm and hypothesis that will be applied for meshing (logically) "
-"vertical edges of the prism (which connect the top and the base faces of "
-"the prism). In the sample picture above these are \"Regular_1D\" "
-"algorithm and \"Number of Segments\" hypothesis named \"Vertical Nb. "
-"Segments\"."
-msgstr ""
-
-# 1f459693925c48f8a6baeb2d3bea849b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:63
-msgid ""
-"The **Local** algorithms and hypotheses to be chosen at "
-":ref:`constructing_submeshes_page` are:"
-msgstr ""
-
-# 932d6d79dd0e493f865729fbb157f225
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:66
-msgid ""
-"1D and 2D algorithms and hypotheses that will be applied for meshing the "
-"top and the base prism :ref:`submesh_shape_section`. These faces can be "
-"meshed with any type of 2D elements: quadrangles, triangles, polygons or "
-"their mix. It is enough to define a sub-mesh on either the top or the "
-"base face. In the sample picture above, \"NETGEN_1D2D\" algorithm meshes "
-"\"bottom disk\" face with triangles. (1D algorithm is not assigned as "
-"\"NETGEN_1D2D\" does not require divided edges to create a 2D mesh.)"
-msgstr ""
-
-# e719ad1211954d938af134a7dbf6ae6c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:68
-msgid ""
-"Optionally you can define a 1D sub-mesh on some vertical "
-":ref:`submesh_shape_section` of stacked prisms, which will override the "
-"global 1D hypothesis mentioned above. In the **Prism stacks** picture, "
-"the vertical division is not equidistant on the whole length because a "
-"\"Number Of Segments\" hypothesis with Scale Factor=3 is assigned to the "
-"highlighted edge."
-msgstr ""
-
-# 9d61602dd3b04b098d4c05e67c0eff66
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:71
-msgid ""
-"If **Extrusion 3D** algorithm is assigned to a sub-mesh in a mesh with "
-"multiple sub-meshes, the described above approach may not work as "
-"expected. For example the bottom face may be meshed by other algorithm "
-"before **Extrusion 3D** have a chance to project a mesh from the base "
-"face. This thing can happen with vertical edges as well. All these can "
-"lead to either a meshing failure or to an incorrect meshing."
-msgstr ""
-
-# 0c81ba62aa31454f993160eff234b096
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:78
-msgid ""
-"In such a case, it's necessary to explicitly define algorithms that "
-"**Extrusion 3D** implicitly applies in a simple case:"
-msgstr ""
-
-# 532bac07503e476fa2a036de893f18f9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:81
-msgid "assign :ref:`projection_1D2D` algorithm to the top face and"
-msgstr ""
-
-# 6ad4f99c143242ba9e518b5d726bf011
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:82
-msgid "assign a 1D algorithm to a group of all vertical edges."
-msgstr ""
-
-# e9c2922ee00c4aa1aefcc15a3d35e940
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/prism_3d_algo.rst:90
-msgid "**See Also** a sample TUI Script of :ref:`tui_prism_3d_algo`."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/projection_algos.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/projection_algos.po
deleted file mode 100644 (file)
index 2c81855..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# fc4d677b1c234a72b7e97451677ac8e3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:5
-msgid "Projection Algorithms"
-msgstr ""
-
-# d55142e76e1a47fea92de81fe9bed3d9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:0
-msgid "`Table of contents`"
-msgstr ""
-
-# cfa42355ba754e59aab936e85b474397
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:9
-msgid ""
-"Projection algorithms allow to define the mesh of a geometrical object by"
-" the projection of another already meshed geometrical object."
-msgstr ""
-
-# 374f2a20d98141a2a59f36b59b41defb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:13
-msgid ""
-"Source and target geometrical objects mush be topologically equal, i.e. "
-"they must have same number of sub-shapes, connected to corresponding "
-"counterparts."
-msgstr ""
-
-# d983865fc5a3497191fe16a3840ed44e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:25
-msgid "Projection 1D"
-msgstr ""
-
-# 0f52c911e7b04ab5b8f8190c5ebabdca
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:27
-msgid ""
-"**Projection 1D** algorithm allows to define the mesh of an edge (or "
-"group of edges) by the projection of another already meshed edge (or "
-"group of edges)."
-msgstr ""
-
-# 77d34de361694c3fbc2a08934d6dbf6c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:30
-msgid ""
-"To apply this algorithm select the edge to be meshed (indicated in the "
-"field **Geometry** of **Create mesh** dialog box), **Projection1D** in "
-"the list of 1D algorithms and click the **\"Add Hypothesis\"** button. "
-"The following dialog box will appear:"
-msgstr ""
-
-# 1050b73647ab4a068240b00b53a16e6b
-# ff3a3f91ceba41c4878ea2269f4e603b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:39
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:72
-msgid "In this dialog you can define"
-msgstr ""
-
-# 88fc0a02fd614150a1c8a42ebd1657d2
-# 939901da1425440cb61fccb741ae2d0f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:41
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:74
-msgid "the **Name** of the algorithm,"
-msgstr ""
-
-# bf02e08c729244fbac7ce0f14296fbed
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:42
-msgid "the already meshed **Source Edge** and"
-msgstr ""
-
-# e3b6c7a5b7474f9789d0c62aff066ddf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:43
-msgid ""
-"the **Source Mesh** (It can be omitted only when projecting a sub-mesh on"
-" another one of the same Mesh)."
-msgstr ""
-
-# 6e32fb2a4af54f8582770d9d82d6317b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:44
-msgid ""
-"It could also be necessary to define the orientation of edges,  which is "
-"done by indicating the **Source Vertex** being the first point of the "
-"**Source Edge **and the **Target Vertex** being the first point of the "
-"edge being meshed."
-msgstr ""
-
-# c8e46baa569e4fffac0fa4394f58c333
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:47
-msgid ""
-"For a group of edges, **Source** and **Target** vertices should be shared"
-" by only one edge of the group. If **Source** and **Target** vertices are"
-" specified, the edges in the group must be connected. The source and "
-"target groups must contain equal number of edges and they must form "
-"topologically equal structures."
-msgstr ""
-
-# 622a00ba8f4d447a91e77ef24176f5f2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:56
-msgid "Projection 2D"
-msgstr ""
-
-# f605d32ab7c8408380a00d5e24819df4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:59
-msgid ""
-"**Projection 2D** algorithm allows to define the mesh of a face (or group"
-" of faces) by the projection of another already meshed face (or group of "
-"faces). This algorithm works only if all edges of the target face have "
-"been discretized into the same number of segments as corresponding edges "
-"of the source face."
-msgstr ""
-
-# 7749ef98485b4e888475caa3e0b5f039
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:65
-msgid ""
-"To apply this algorithm select the face to be meshed (indicated in the "
-"field **Geometry** of **Create mesh** dialog box), **Projection 2D** in "
-"the list of 2D algorithms and click the **\"Add Hypothesis\"** button. "
-"The following dialog box will appear:"
-msgstr ""
-
-# e595e34f95eb4107a297b4194571b45f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:75
-msgid "the already meshed **Source Face** and"
-msgstr ""
-
-# cee42924eb494f4f8bba1b8d361d4e0c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:76
-msgid ""
-"the **Source Mesh** (It can be omitted only when projecting a submesh on "
-"another one of the same Mesh)."
-msgstr ""
-
-# 592531ecb23d420991fa14c5b6e3ce1e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:77
-msgid ""
-"It could also be necessary to define the orientation of mesh on the face,"
-" which is done by indicating two **Source Vertices**, which belong to the"
-" same edge of the **Source Face**, and two **Target Vertices**, which "
-"belong to the same edge of the face being meshed."
-msgstr ""
-
-# 40281f2e1c644a2daf59590833252903
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:80
-msgid ""
-"The groups of faces are suitable for this algorithm only if they contain "
-"an equal number of faces and form topologically equal structures."
-msgstr ""
-
-# eb51034c0f7548ebbd6794f8781377fb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:87
-msgid "Projection 1D-2D"
-msgstr ""
-
-# 270173b13abd41daa4da8aa451695821
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:89
-msgid ""
-"**Projection 1D-2D** algorithm differs from :ref:`projection_2D` "
-"algorithm in one aspect: it generates mesh segments on edges of the face "
-"according to the projected 2D elements; thus it does not require the "
-"edges to be meshed by any other 1D algorithm; moreover it does not allow "
-"to mesh edges of the face using another algorithm via definition of sub-"
-"meshes."
-msgstr ""
-
-# 18d2ad31445f443c8292a8a3f1cf2b57
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:100
-msgid "Projection 3D"
-msgstr ""
-
-# bc8aac3fdc3c49b0bbd892361a56a049
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:102
-msgid ""
-"**Projection 3D** algorithm allows to define the mesh of a shape by the "
-"projection of another already meshed shape.  This algorithm works only if"
-" all faces and edges of the target shape have been meshed as 1D-2D "
-"Projections of the faces and edges of the source shape. Another "
-"limitation is that this algorithm currently works only on boxes."
-msgstr ""
-
-# a87c8f7ba61147e487a8da138be2c8ae
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:108
-msgid ""
-"To apply this algorithm select the solid to be meshed (indicated in the "
-"field **Geometry** of **Create mesh** dialog box), **Projection 3D** in "
-"the list of 3D algorithms and click the  button. The following dialog box"
-" will appear:"
-msgstr ""
-
-# 8e914dde7b6a4ebfb52d07991cfe52ab
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:116
-msgid ""
-"In this menu you can define the **Name** of the algorithm, the already "
-"meshed source **3D shape** and the **Mesh** (It can be omitted only when "
-"projecting a submesh on another one from the same global Mesh). It could "
-"also be necessary to define the orientation of mesh on the shape, which "
-"is done by indicating two **Source Vertices**, which belong to the same "
-"edge of the source **3D Shape**, and two **Target Vertices**, which "
-"belong to the same edge of the source **3D Shape**."
-msgstr ""
-
-# 1b6d95a37c65466a872b4c90a5fb9b3d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/projection_algos.rst:124
-msgid "**See Also** a sample TUI Script of a :ref:`tui_projection`."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/python_api.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/python_api.po
deleted file mode 100644 (file)
index 35fcb88..0000000
+++ /dev/null
@@ -1,8132 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-03-30 12:23+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 2ef015f4431d4aaea1f2248de4ecc737
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/python_api.rst:3
-msgid "Mesh Python interface"
-msgstr ""
-
-# bbc4e9fc55b649848fbdd0df0797e2a4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/python_api.rst:6
-msgid "smeshstudytools module"
-msgstr ""
-
-# ed9efba7c29145e39b70545482dbec85
-#: smeshstudytools:1
-msgid ""
-"This module provides a new class :class:`SMeshStudyTools` to facilitate "
-"the use of mesh objects in Salome study."
-msgstr ""
-
-# 4bf86efe0029421ca8a9a090942174cb
-#: smeshstudytools.SMeshStudyTools:1
-msgid ""
-"This class provides several methods to manipulate mesh objects in Salome "
-"study. The parameter `studyEditor` defines a "
-":class:`~salome.kernel.studyedit.StudyEditor` object used to access the "
-"study. If :const:`None`, the method returns a "
-":class:`~salome.kernel.studyedit.StudyEditor` object on the current "
-"study."
-msgstr ""
-
-# 8842f72e1a054df99360c3d498d937b1
-#: smeshstudytools.SMeshStudyTools:9
-msgid ""
-"This instance attribute contains the underlying "
-":class:`~salome.kernel.studyedit.StudyEditor` object. It can be used to "
-"access the study but the attribute itself should not be modified."
-msgstr ""
-
-# 1aedc3f5c12c4e2482182c3f695e759c
-#: smeshstudytools.SMeshStudyTools.displayMeshObjectFromEntry:1
-msgid ""
-"Display the SMESH object associated to the specified entry (the entry is "
-"the identifier of an item in the objects browser)."
-msgstr ""
-
-# 767320f300c941829cdab8826ba737a4
-#: smeshstudytools.SMeshStudyTools.getMeshFromGroup:1
-msgid "Get the mesh item owning the mesh group `meshGroupItem`."
-msgstr ""
-
-# 578bef1d04fe424ab5b31f933f807e5d
-#: smeshstudytools.SMeshStudyTools.getMeshFromGroup:4
-msgid "Mesh group belonging to the searched mesh."
-msgstr ""
-
-# 7de81fdef5d447bbae53423ee5f0f56e
-#: smeshstudytools.SMeshStudyTools.getMeshFromGroup:6
-msgid "The SObject corresponding to the mesh, or None if it was not found."
-msgstr ""
-
-# e6b3f183ebd24795aa6d2a4ea3bd22ca
-#: smeshstudytools.SMeshStudyTools.getMeshObjectFromEntry:1
-msgid ""
-"Returns the MESH object associated to the specified entry, (the entry is "
-"the identifier of an item in the objects browser)."
-msgstr ""
-
-# 905792f5b717452eabd930cc0777474a
-#: smeshstudytools.SMeshStudyTools.getMeshObjectFromSObject:1
-msgid ""
-"Returns the SMESH object associated to the specified SObject, (the "
-"SObject is an item in the objects browser)."
-msgstr ""
-
-# 1c4a9e28c832436998b711f22b4c643b
-#: smeshstudytools.SMeshStudyTools.getMeshObjectSelected:1
-msgid "Returns the MESH object currently selected in the active study."
-msgstr ""
-
-# 8a023271efbf42799c4bf55b0e8c949d
-#: smeshstudytools.SMeshStudyTools.updateStudy:1
-msgid "This function updates the tools so that it works on the specified study."
-msgstr ""
-
-# d7d286c06a7f4a50b7dbc0742c19d1be
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/python_api.rst:11
-msgid "StdMeshersBuilder module"
-msgstr ""
-
-# 14d1354258c9401a981c9be32e8e34d3
-#: StdMeshersBuilder:1
-msgid "Python API for the standard meshing plug-in module."
-msgstr ""
-
-# c037456965c641c0874108d03f7c9cc1
-#: StdMeshersBuilder.COMPOSITE:1
-msgid ""
-"*Algorithm type* -- Composite segment 1D algorithm, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_CompositeSegment`"
-msgstr ""
-
-# 069368fb1fbb4bf1bece225879596430
-#: StdMeshersBuilder.Hexa:1
-msgid ""
-"*Algorithm type* -- Hexahedron 3D (i-j-k) algorithm, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Hexahedron`"
-msgstr ""
-
-# 5d5613278457472fbf4dd155ba325791
-#: StdMeshersBuilder.MEFISTO:1
-msgid ""
-"*Algorithm type* -- Triangle MEFISTO 2D algorithm, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO`"
-msgstr ""
-
-# 9ed7ab464ff54af0bf59f8eead6186bc
-#: StdMeshersBuilder.POLYGON:1
-msgid ""
-"*Algorithm type* -- Polygon Per Face 2D algorithm, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_PolygonPerFace`"
-msgstr ""
-
-# fce9cff890cc49a996697568695d5a80
-#: StdMeshersBuilder.PYTHON:1
-msgid ""
-"*Algorithm type* -- Python 1D algorithm, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Segment_Python`"
-msgstr ""
-
-# 5e3e3ba96e7d4af2887f07a1cd96c9a7
-#: StdMeshersBuilder.QUADRANGLE:1
-msgid ""
-"*Algorithm type* -- Quadrangle 2D algorithm, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Quadrangle`"
-msgstr ""
-
-# 9fb47e7815f44ecca66aa4f0c8a6a0e1
-#: StdMeshersBuilder.QUAD_MA_PROJ:1
-msgid ""
-"*Algorithm type* -- Quadrangle (Medial Axis Projection) 1D-2D algorithm, "
-"see :class:`~StdMeshersBuilder.StdMeshersBuilder_QuadMA_1D2D`"
-msgstr ""
-
-# 6f1e112163754794a2a4636b49d2a895
-#: StdMeshersBuilder.RADIAL_QUAD:1
-msgid ""
-"*Algorithm type* -- Radial Quadrangle 1D-2D algorithm, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_RadialQuadrangle1D2D`"
-msgstr ""
-
-# 0d5c44493e974442b4fdb8ae6827f35a
-#: StdMeshersBuilder.REGULAR:1
-msgid ""
-"*Algorithm type* -- Regular 1D algorithm, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Segment`"
-msgstr ""
-
-# 1555ec093ec040a08ead66e85210c3a5
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D:1
-msgid "Defines a Body Fitting 3D algorithm"
-msgstr ""
-
-# 489b5c63be6541a0b239bb24d5ae06a9
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D:3
-msgid "It is created by calling smeshBuilder.Mesh.BodyFitted(geom=0)"
-msgstr ""
-
-# 24b4181b87a6431494682f0b88a07fb0
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetAxesDirs:1
-msgid "Defines custom directions of axes of the grid"
-msgstr ""
-
-# 98e67b0873f84c7faaf31a098cc14659
-# ad1226c21ca74356b25a1dc07f6a4719
-# 2fbfb2a064724f5184895f4954412761
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetAxesDirs:3
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetAxesDirs:4
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetAxesDirs:5
-msgid "either SMESH.DirStruct or a vector, or 3 vector components"
-msgstr ""
-
-# 4fde3b6a79344887a11d096c9e63c9b1
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetFixedPoint:3
-msgid "Sets/unsets a fixed point. The algorithm makes a plane of the grid pass"
-msgstr ""
-
-# ed881006b0804ad28bca303e80f6d1c8
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetFixedPoint:2
-msgid ""
-"through the fixed point in each direction at which the grid is defined by"
-" spacing"
-msgstr ""
-
-# e86b5231264b45d7a64a7722a227e99e
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetFixedPoint:5
-msgid ""
-"coordinates of the fixed point. Either SMESH.PointStruct or a vertex or 3"
-" components of coordinates."
-msgstr ""
-
-# 1679f83b51154bb9b4ff9688e6eb4d0d
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetFixedPoint:7
-msgid "defines whether the fixed point is defined or removed."
-msgstr ""
-
-# 19774136c1a34fbca187a90a3d992470
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:1
-msgid "Defines \"Body Fitting parameters\" hypothesis"
-msgstr ""
-
-# 528fa380458f4ee59724509d0bad2a3c
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:3
-msgid ""
-"is definition of the grid along the X asix. It can be in either of two "
-"following forms:      - Explicit coordinates of nodes, e.g. [-1.5, 0.0, "
-"3.1] or range( -100,200,10)     - Functions f(t) defining grid spacing at"
-" each point on grid axis. If there are         several functions, they "
-"must be accompanied by relative coordinates of         points dividing "
-"the whole shape into ranges where the functions apply; points         "
-"coodrinates should vary within (0.0, 1.0) range. Parameter *t* of the "
-"spacing         function f(t) varies from 0.0 to 1.0 within a shape "
-"range."
-msgstr ""
-
-# 19d5f5799fe0407cac969556cf5cc0cd
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:3
-msgid ""
-"is definition of the grid along the X asix. It can be in either of two "
-"following forms:"
-msgstr ""
-
-# 8eb97e76efcd4732bbd655feb41428f8
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:6
-msgid ""
-"Explicit coordinates of nodes, e.g. [-1.5, 0.0, 3.1] or range( "
-"-100,200,10)"
-msgstr ""
-
-# 5a5a5efc092e4b518fe511905c966c2e
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:11
-msgid ""
-"Functions f(t) defining grid spacing at each point on grid axis. If there"
-" are"
-msgstr ""
-
-# 6dcd86c5872a4d90a278b65171e15733
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:8
-msgid ""
-"several functions, they must be accompanied by relative coordinates of "
-"points dividing the whole shape into ranges where the functions apply; "
-"points coodrinates should vary within (0.0, 1.0) range. Parameter *t* of "
-"the spacing function f(t) varies from 0.0 to 1.0 within a shape range."
-msgstr ""
-
-# 9d031be415dd4224ae105799ff0fefba
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:14
-msgid "Examples"
-msgstr ""
-
-# 4bc251f264234042bc0176b03e4d1e59
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:15
-msgid ""
-"\"10.5\" - defines a grid with a constant spacing [[\"1\", \"1+10*t\", "
-"\"11\"] [0.1, 0.6]] - defines different spacing in 3 ranges."
-msgstr ""
-
-# 4cdcf4cfd97a411681fc5928086c827d
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:18
-msgid "defines the grid along the Y asix the same way as *xGridDef* does."
-msgstr ""
-
-# e3c78486447147e5bffe6b3ace4dbff1
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:19
-msgid "defines the grid along the Z asix the same way as *xGridDef* does."
-msgstr ""
-
-# eb405d2b72b647768ad32cdc80b89f69
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:20
-msgid ""
-"(> 1.0) defines a minimal size of a polyhedron so that a polyhedron of "
-"size less than hexSize/sizeThreshold is not created."
-msgstr ""
-
-# ab249b66961a47ffae8a0a9b3242dca5
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetGrid:22
-msgid "enables implementation of geometrical edges into the mesh."
-msgstr ""
-
-# 597b5f6b282f4c688e02e6d94cb521f4
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetOptimalAxesDirs:2
-msgid "Automatically defines directions of axes of the grid at which"
-msgstr ""
-
-# fe9bd0b826504f30970704144590763c
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetOptimalAxesDirs:2
-msgid "a number of generated hexahedra is maximal"
-msgstr ""
-
-# 41c32111139540f8ad9f6e8e97b94bec
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.SetOptimalAxesDirs:4
-msgid "defines whether the axes mush be orthogonal"
-msgstr ""
-
-# b5977df3c9b34221a7b34b65c51c382b
-# 2d6e31719f8f45448f48eb1d08cb75ed
-# f3f3f886ba1e44e09ffd3acfe578f14a
-# 0bfd980eaf6143b098003ce84f131228
-# 7a5d4afc77c24756ac3e078ce200cbc5
-# 1a9c8760326d4be08d37b105e0a4901c
-# e44cc04123a54dbdb3a16de77f445cc6
-# a4ae24248ed24f4cbd151b881efe6b13
-# a667301ef2f14eccbe3f7b80cc8645d1
-# 5c937ed63fa24bbb8953b1b499082642
-# 07f0abdd67a5452ebeb9604876954b83
-# 119386cffc634ee696a66929e1867782
-# fb58c42e77ba4c78b3b787abe9d3d1bd
-# 78e68eeb6d4c47d18d3a7eb41123f3cf
-# bc8f743578a8425eb287a1da1acff67d
-# 7cb3f53e7b384655ad122dfaef02492c
-# f9baf387774b4316b673c0d4a6e875cb
-# 50257160ecac479d8a82001fa8a50dcb
-# 8974edaf26c440beb5f2ea7543a033eb
-# 687173152bf846de915d0be2a17d08f9
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_CompositeSegment.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_Hexahedron.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_PolygonPerFace.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D2D.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_QuadMA_1D2D.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_RadialPrism3D.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_RadialQuadrangle1D2D.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D.algoType:1
-#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_2D.algoType:1
-msgid "type of algorithm used with helper function in smeshBuilder.Mesh class"
-msgstr ""
-
-# 5fa5c87d44df4075b887effd24d3f8f0
-# 4f5f35aa045240f4a0a99d568886824e
-# ea38f70d47df4178bee66407e0325e90
-# 77f759d51d914472a2cbe0d0422f1ae1
-# 245d546ae4b34d3e992c64a274c74d34
-# b4a11081a71d49b684630afb6aa1dbd2
-# 6526543d54e14b658fe1674c7cf6092a
-# 66b93e1e2d1144f68115d9f969e47e49
-# a5b4fc6a27124f939e5db6d192bcbbfe
-# 606c7fc57d0548f993f721abb42e0236
-# c68d559f17b64c409be7abef55f110a9
-# 1e22633f039c49d8b1090257bf783ad8
-# 428d8c2980954c06950b289f1f9e598a
-# d3d503d7916a4ed3a99468ff0cab172d
-# 36e2151181ae4a3994856081b3ca8082
-# 7b8cf061e3984b0db14f986afaa46c69
-# 8ae63a3d30034676b6021214173a0ecf
-# f9c50f9b9605499a88da85b80ed52b58
-# 1602fe29b9c3412e80c4b14703a706f2
-# f0105b5ffa414cddabe9c33781258b31
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_CompositeSegment.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_Hexahedron.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_PolygonPerFace.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D2D.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_QuadMA_1D2D.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_RadialPrism3D.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_RadialQuadrangle1D2D.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D.docHelper:1
-#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_2D.docHelper:1
-msgid "doc string of the method"
-msgstr ""
-
-# cf21588ccbc44798b458afb5f2b8394c
-# b998b58ae8f044aea451440e04094b5f
-# 8325219c7f9a4a98ae084f70fadfa46e
-# adda49aa877844488e77d0605d355669
-# c64af4253ffb445482694eba627c30ad
-# 037a9ff6dfa2499b958916cba0d31176
-# 50047d4dc5374587bfc1ca0e00d7efea
-# bcdf79df7078434184998c122f338d6a
-# 2403cd8cc4444dc7a291d40849cc71e8
-# 48c253d8fd084dba95d4fb522d25c1f3
-# b3b749858c314d4b9b9aa0dff002a307
-# 426e0d58af19419c83a877b3b4f7f234
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.isDefault:1
-#: StdMeshersBuilder.StdMeshersBuilder_CompositeSegment.isDefault:1
-#: StdMeshersBuilder.StdMeshersBuilder_Hexahedron.isDefault:1
-#: StdMeshersBuilder.StdMeshersBuilder_PolygonPerFace.isDefault:1
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.isDefault:1
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.isDefault:1
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.isDefault:1
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.isDefault:1
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.isDefault:1
-#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.isDefault:1
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.isDefault:1
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.isDefault:1
-msgid ""
-"flag pointing whether this algorithm should be used by default in dynamic"
-" method of smeshBuilder.Mesh class"
-msgstr ""
-
-# 0b18906968da4079b1af63be4a2e7b81
-# 3879fbe99c9845e8ab964adbc5df17d6
-# 08737636e4eb46b5bfe492ddffa49c80
-# cb03b7ea05ae47efb52abd7e1a1cc324
-# 16f978af0b7446229ae4903154c870ac
-# a3b8f08fa397436f98717fead6272d2d
-# 86f0ae833cba4e7491bc4ede0554a2db
-# 6ab22b97addc4001b28072b837bca18b
-# 5700dee3f2e64f1184b6804b2f0fc922
-# dd7dc71fb6b64f51aaad4ca5cc63ffcd
-# b6a2101571384400910780a60452430c
-# 3ff00695291d4f4eab59d16a85f4ebd8
-# b0f793ba186041e785c3ce052152845d
-# 82c82bdd8f9c4cf195ba8b13349e8b35
-# 903e4632fd6f4e23acc4805c9d4131af
-# 3a4f2b62668b4760953ba8bded0d349f
-# 3d24a6d566104fd2982f42ce7178531b
-# 1e7e4bf1350d404c91f9ff069554b317
-# 0955f46bc1b0469c8a93fbf95861e82a
-# 6f25fd896b614b0d98474e0d107e2cb9
-#: StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_CompositeSegment.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_Hexahedron.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_PolygonPerFace.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D2D.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_QuadMA_1D2D.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_RadialPrism3D.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_RadialQuadrangle1D2D.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D.meshMethod:1
-#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_2D.meshMethod:1
-msgid "name of the dynamic method in smeshBuilder.Mesh class"
-msgstr ""
-
-# 660763b7fced4a79b721d1ce9ac2ba3c
-#: StdMeshersBuilder.StdMeshersBuilder_CompositeSegment:1
-msgid ""
-"Segment 1D algorithm for discretization of a set of adjacent edges as one"
-" edge."
-msgstr ""
-
-# c50e31b225db467995066bd190c19e8e
-#: StdMeshersBuilder.StdMeshersBuilder_CompositeSegment:3
-msgid ""
-"It is created by calling "
-"smeshBuilder.Mesh.Segment(smeshBuilder.COMPOSITE,geom=0)"
-msgstr ""
-
-# 00a93632a1a1478c919c15360f9d4c41
-#: StdMeshersBuilder.StdMeshersBuilder_Hexahedron:1
-msgid ""
-"Defines a hexahedron 3D algorithm It is created by calling "
-"smeshBuilder.Mesh.Hexahedron(geom=0)"
-msgstr ""
-
-# ec46269843334022a29b62e9e7d3fb50
-#: StdMeshersBuilder.StdMeshersBuilder_PolygonPerFace:1
-msgid ""
-"Defines a Polygon Per Face 2D algorithm It is created by calling "
-"smeshBuilder.Mesh.Polygon(geom=0)"
-msgstr ""
-
-# 3f12e061a32040cb8ff271361a23e2ba
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D:1
-msgid ""
-"Defines a Prism 3D algorithm, which is either \"Extrusion 3D\" or "
-"\"Radial Prism\" depending on geometry It is created by calling "
-"smeshBuilder.Mesh.Prism(geom=0)"
-msgstr ""
-
-# 069ae33e583045a481f20c5f4c544f30
-# 23b3635e31664613b36449f2f44e7325
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.Arithmetic1D:3
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.Arithmetic1D:2
-msgid ""
-"Defines \"Arithmetic1D\" hypothesis, specifying the distribution of "
-"segments"
-msgstr ""
-
-# b0f64972de2d4ce69d3fe62c8dc48a04
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.Arithmetic1D:2
-msgid ""
-"to build between the inner and the outer shells with a length that "
-"changes in arithmetic progression"
-msgstr ""
-
-# 012cc6b2beb9414c8d92328828138f48
-# b4334cb9ff8145aaaf8da5f0e9f19ab0
-# 457ef31114974bdca1c1def2af35c485
-# 109c30031ec54621afcc910ae4fc01c8
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.Arithmetic1D:5
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.GeometricProgression:5
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.Arithmetic1D:4
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.GeometricProgression:4
-msgid "the length of the first segment"
-msgstr ""
-
-# 63fd345964da48688689da16cbf13125
-# 9a667508a5f64eb3b7478632ddc60c80
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.Arithmetic1D:6
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.Arithmetic1D:5
-msgid "the length of the last  segment"
-msgstr ""
-
-# 8eb135abd79540c282bc3db8a3c9922c
-# 53158a24aa4e4ddd86dfc8681da5dad1
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.AutomaticLength:2
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.AutomaticLength:1
-msgid "Defines \"AutomaticLength\" hypothesis, specifying the number of segments"
-msgstr ""
-
-# 1de40475b008489f97b750e06f6cb46d
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.AutomaticLength:2
-msgid "to build between the inner and outer shells"
-msgstr ""
-
-# 672c8824d4a945d6a93f4d2ea709697a
-# 07da7825c9044c6b896c2afeb2798d1c
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.AutomaticLength:4
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.AutomaticLength:3
-msgid "defines the quality of the mesh within the range [0-1]"
-msgstr ""
-
-# 3d9473c4376547a5843503fd455315ee
-# 04d6648fdc044deab12b866a1f501cda
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.GeometricProgression:3
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.GeometricProgression:2
-msgid ""
-"Defines \"GeometricProgression\" hypothesis, specifying the distribution "
-"of segments"
-msgstr ""
-
-# d47e7f80b9ae4fbd9a8a6637b0a75f80
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.GeometricProgression:2
-msgid ""
-"to build between the inner and the outer shells with a length that "
-"changes in Geometric progression"
-msgstr ""
-
-# be6a7df81d454f5581235b624f817ce3
-# 533f531d15864d0d8924565c23b0e76b
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.GeometricProgression:6
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.GeometricProgression:5
-msgid "the common ratio of the geometric progression"
-msgstr ""
-
-# 0185eacdeefc4eb8bc35bc854e1a90ba
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.Get3DHypothesis:1
-msgid "3D hypothesis holding the 1D one"
-msgstr ""
-
-# 5e7b2928acb24e09820e1ac5368d9675
-# ae20835d81754a18bfcd26ef04e77920
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.LocalLength:2
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.LocalLength:1
-msgid "Defines \"LocalLength\" hypothesis, specifying the segment length"
-msgstr ""
-
-# bf0860e4097246efb7900768f84f9156
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.LocalLength:2
-msgid "to build between the inner and the outer shells"
-msgstr ""
-
-# 70a21b2de07f4d0498527dd3a51f1a6b
-# fd09ee05eb8f40fb94a78a477f65420d
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.LocalLength:4
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.LocalLength:3
-msgid "the length of segments"
-msgstr ""
-
-# 4026d4fe780d4375aa35de017fe96ef8
-# 5863851f91a64bf894e64f69100792d2
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.LocalLength:5
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.LocalLength:4
-msgid "the precision of rounding"
-msgstr ""
-
-# 28329b84bde84ed7be9f74aef6574050
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfLayers:2
-msgid "Defines \"NumberOfLayers\" hypothesis, specifying the number of layers of"
-msgstr ""
-
-# ab8c5517ac6c44b0a42f733601aa29a7
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfLayers:2
-msgid "prisms to build between the inner and outer shells"
-msgstr ""
-
-# 577855c5d49e4d8aa3597a07be1e10dd
-# 68e5f7cc173e4100b8328c919a580621
-# 632a1d31d2674e4382220ac674e71e42
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfLayers:4
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.NumberOfLayers:3
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers2D:6
-msgid "number of layers"
-msgstr ""
-
-# fff61d4d527a49d2b46cf9431fb392b5
-# 4f387f2359a44f50a4c351f81013e98c
-# 7d1be84be0c4498e8a87141b45945066
-# 3a2ca7ae174543379856b9aa34715fec
-# 0e367d0dc4624a5eb2da9347fbb2c5f2
-# 3f7c50c28a264e7ab2fec3f1a8c59653
-# 12724e3a60294848b53347ba40baa8ef
-# 3172e1c1e302447e8da313d644145a9b
-# d36ce58d743a4cf48311c4b292c61293
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfLayers:5
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.SourceEdge:9
-#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:11
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.Reduced:7
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TrianglePreference:4
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.NumberOfLayers:4
-#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python.PythonSplit1D:5
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.SourceEdges:6
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.SourceFaces:6
-msgid ""
-"if ==true - searches for the existing hypothesis created with the same "
-"parameters, else (default) - creates a new one"
-msgstr ""
-
-# df20255a7e98437d8e0d4fe64facab50
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfSegments:2
-msgid ""
-"Defines \"NumberOfSegments\" hypothesis, specifying the number of layers "
-"of"
-msgstr ""
-
-# 12d150dd0e6c4988a59e9edf107f505e
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfSegments:2
-msgid "prisms to build between the inner and the outer shells."
-msgstr ""
-
-# 874031bd8de247f5b4682e643f57966a
-# 176b474c831642a7b0480e2b8587f138
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfSegments:4
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.NumberOfSegments:3
-msgid "the number of layers"
-msgstr ""
-
-# 086496a24a8e4f35a897ae6ee90a01f9
-# 5a8bbbf8bcde4a9ea62233c859878a93
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.NumberOfSegments:5
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.NumberOfSegments:4
-msgid "the scale factor (optional)"
-msgstr ""
-
-# 8f162d69a2ac48d9ac15bf1ee0364097
-# f57c55e81e53407390e9b82ca6053e56
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.OwnHypothesis:2
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.OwnHypothesis:2
-msgid ""
-"Private method creating a 1D hypothesis and storing it in the "
-"LayerDistribution"
-msgstr ""
-
-# 4de48505f4f14ee086b10305e704770f
-# 9440f79c7a1c47e88e714965c2bdac8e
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.OwnHypothesis:2
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.OwnHypothesis:2
-msgid "hypothesis."
-msgstr ""
-
-# 8ad4bed0d4544240b5f99d10b67af58f
-# 82b41dad8d24482cb0a81c5c25116991
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.OwnHypothesis:4
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.OwnHypothesis:4
-msgid "the created hypothesis"
-msgstr ""
-
-# fb365e2dcbee439ca8510b8675657c89
-# a4374ebedf6c4967955173726bb9776f
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.StartEndLength:2
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.StartEndLength:2
-msgid "Defines \"StartEndLength\" hypothesis, specifying distribution of segments"
-msgstr ""
-
-# 199b0d5a9688402f8256b447e3eb5322
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.StartEndLength:2
-msgid ""
-"to build between the inner and the outer shells as geometric length "
-"increasing"
-msgstr ""
-
-# d26e8cfbb9c4408b962a1606f4c74299
-# fba557a6a35d47f085916f45207cb5d3
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.StartEndLength:4
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.StartEndLength:4
-msgid "for the length of the first segment"
-msgstr ""
-
-# 8722f12d6cdd41439ceb61155607c53a
-#: StdMeshersBuilder.StdMeshersBuilder_Prism3D.StartEndLength:6
-msgid "end:   for the length of the last  segment"
-msgstr ""
-
-# 8fbda3fbec7a4362bee0060655bfacec
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D:1
-msgid ""
-"Defines a projection 1D algorithm It is created by calling "
-"smeshBuilder.Mesh.Projection1D(geom=0)"
-msgstr ""
-
-# ed249ba2591e4138b9553b4b5225ee91
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.SourceEdge:3
-msgid "Defines \"Source Edge\" hypothesis, specifying a meshed edge, from where"
-msgstr ""
-
-# 6ea9b8697a3943019ee2e0deb95818ae
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.SourceEdge:2
-msgid ""
-"a mesh pattern is taken, and, optionally, the association of vertices "
-"between the source edge and a target edge (to which a hypothesis is "
-"assigned)"
-msgstr ""
-
-# 9cdfb4c7c52d4013ab435bfda66b388b
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.SourceEdge:5
-msgid "from which nodes distribution is taken"
-msgstr ""
-
-# 31f75e47791d4fb6b3c668023c55545e
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.SourceEdge:6
-msgid "from which nodes distribution is taken (optional)"
-msgstr ""
-
-# 646c7992b13840d286d24cec8d3b851a
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.SourceEdge:7
-msgid "a vertex of *edge* to associate with *tgtV* (optional)"
-msgstr ""
-
-# 3ecd4e462e8d4271b5623fd18f666943
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D.SourceEdge:8
-msgid ""
-"a vertex of *the edge* to which the algorithm is assigned, to associate "
-"with *srcV* (optional)"
-msgstr ""
-
-# 928bf523e3644512bdfa71e89f222435
-#: StdMeshersBuilder.StdMeshersBuilder_Projection1D2D:1
-msgid ""
-"Defines a projection 1D-2D algorithm It is created by calling "
-"smeshBuilder.Mesh.Projection1D2D(geom=0)"
-msgstr ""
-
-# 6a497e950af74ec997a01f9fb19f5dab
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D:1
-msgid ""
-"Defines a projection 2D algorithm It is created by calling "
-"smeshBuilder.Mesh.Projection2D(geom=0)"
-msgstr ""
-
-# 1f3bad678e6e4851923e59b5d2e7f98f
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:3
-msgid "Defines \"Source Face\" hypothesis, specifying a meshed face, from where"
-msgstr ""
-
-# cbed61d7d7e64acfbfde147e55e5cd65
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:2
-msgid ""
-"a mesh pattern is taken, and, optionally, the association of vertices "
-"between the source face and the target face (to which a hypothesis is "
-"assigned)"
-msgstr ""
-
-# 9fc4e83c61cf4616acc6a62919173fb8
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:5
-msgid "from which the mesh pattern is taken"
-msgstr ""
-
-# b3a8fafaacfa4fc588dd592a513f43d4
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:6
-msgid "from which the mesh pattern is taken (optional)"
-msgstr ""
-
-# 56436fd874694c69b2a376c776f92d2c
-# b51dfc6d85904d368192663886201890
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:7
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:9
-msgid "a vertex of *face* to associate with *tgtV1* (optional)"
-msgstr ""
-
-# aebe5b25727143ca97e4154801574c9f
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:8
-msgid ""
-"a vertex of *the face* to which the algorithm is assigned, to associate "
-"with *srcV1* (optional)"
-msgstr ""
-
-# f45c152fdf3e41dba5e0b48b319f548d
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:10
-msgid ""
-"a vertex of *the face* to which the algorithm is assigned, to associate "
-"with *srcV2* (optional)"
-msgstr ""
-
-# b35291648af14fe6a7969f5d08247201
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:11
-msgid ""
-"if ==true - forces the search for the existing hypothesis created with he"
-" same parameters, else (default) - forces the creation a new one"
-msgstr ""
-
-# 0eef2c30ecfd4abea0fe8e79115ad974
-#: StdMeshersBuilder.StdMeshersBuilder_Projection2D.SourceFace:14
-msgid "all association vertices must belong to one edge of a face"
-msgstr ""
-
-# 4b8e499e377546ddb38706142bc0abe8
-#: StdMeshersBuilder.StdMeshersBuilder_Projection3D:1
-msgid ""
-"Defines a projection 3D algorithm It is created by calling "
-"smeshBuilder.Mesh.Projection3D(geom=0)"
-msgstr ""
-
-# b3aa612b349e46b4a2ef112db3534708
-#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:3
-msgid ""
-"Defines the \"Source Shape 3D\" hypothesis, specifying a meshed solid, "
-"from where"
-msgstr ""
-
-# a91c77fc64bd470daaebbcc144b5ff9f
-#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:2
-msgid ""
-"the mesh pattern is taken, and, optionally, the  association of vertices "
-"between the source and the target solid  (to which a hipothesis is "
-"assigned)"
-msgstr ""
-
-# b149d21ec3db4cab9301eb78c5f7f558
-#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:5
-msgid "from where the mesh pattern is taken"
-msgstr ""
-
-# 59b893e4a3044b2ebae9630b8a6064bb
-#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:6
-msgid "from where the mesh pattern is taken (optional)"
-msgstr ""
-
-# d3bee3e64a29496ea1475439362a59fd
-# 187249c6995c41a6b47306030fa9692f
-#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:7
-#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:9
-msgid "a vertex of *solid* to associate with *tgtV1* (optional)"
-msgstr ""
-
-# 64e9350553f14bd988eba175791144c6
-#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:8
-msgid ""
-"a vertex of *the solid* where the algorithm is assigned, to associate "
-"with *srcV1* (optional)"
-msgstr ""
-
-# d214d3eab1c34164b85851eb27d01dee
-#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:10
-msgid ""
-"a vertex of *the solid* to which the algorithm is assigned,to associate "
-"with *srcV2* (optional)"
-msgstr ""
-
-# 4827589880604b1c8c041b40a8c65078
-#: StdMeshersBuilder.StdMeshersBuilder_Projection3D.SourceShape3D:14
-msgid "association vertices must belong to one edge of a solid"
-msgstr ""
-
-# 8a1326c1fc114cb7a95de009b080a028
-#: StdMeshersBuilder.StdMeshersBuilder_QuadMA_1D2D:1
-msgid ""
-"Defines a Quadrangle (Medial Axis Projection) 1D-2D algorithm It is "
-"created by calling "
-"smeshBuilder.Mesh.Quadrangle(smeshBuilder.QUAD_MA_PROJ,geom=0)"
-msgstr ""
-
-# 0848dd488fd1434fbb0664f5efafbf60
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle:1
-msgid ""
-"Defines a quadrangle 2D algorithm It is created by calling "
-"smeshBuilder.Mesh.Quadrangle(geom=0)"
-msgstr ""
-
-# fc6106bb30694dc881b2ea4d409344a0
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:18
-msgid "Defines \"QuadrangleParameters\" hypothesis"
-msgstr ""
-
-# 973af7bbf1c64f72ab40cbfa05b6735e
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:2
-msgid ""
-"quadType defines the algorithm of transition between differently "
-"descretized sides of a geometrical face:"
-msgstr ""
-
-# 95b3e7b0acf54bd48af535714cafd880
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:5
-msgid ""
-"QUAD_STANDARD - both triangles and quadrangles are possible in the "
-"transition"
-msgstr ""
-
-# f667dc2ae0a84e3d9df89aa392109990
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:6
-msgid "area along the finer meshed sides."
-msgstr ""
-
-# 145316c2a44a4455961c9969c02e429f
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:7
-msgid ""
-"QUAD_TRIANGLE_PREF - only triangles are built in the transition area "
-"along the"
-msgstr ""
-
-# 12f8d92615b54e55acf984f8878f4bf2
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:8
-msgid "finer meshed sides."
-msgstr ""
-
-# b2a158f284a0436090693da4a11b6ae3
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:10
-msgid ""
-"QUAD_QUADRANGLE_PREF - only quadrangles are built in the transition area "
-"along"
-msgstr ""
-
-# b3518f1b7a7748a2bd39a84aee6ad43d
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:10
-msgid ""
-"the finer meshed sides, iff the total quantity of segments on all four "
-"sides of the face is even (divisible by 2)."
-msgstr ""
-
-# d802c2cecaff4abc889f3909cfce8a13
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:12
-msgid ""
-"QUAD_QUADRANGLE_PREF_REVERSED - same as QUAD_QUADRANGLE_PREF but the "
-"transition"
-msgstr ""
-
-# ef1e1adb12d74b288e2690363cbaac34
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:13
-msgid "area is located along the coarser meshed sides."
-msgstr ""
-
-# 06fd1634905f46fa9136e4309080c1de
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:18
-msgid ""
-"QUAD_REDUCED - only quadrangles are built and the transition between the "
-"sides"
-msgstr ""
-
-# 498e8ac813de4fb08372ece12bdf1e79
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:15
-msgid ""
-"is made gradually, layer by layer. This type has a limitation on the "
-"number of segments: one pair of opposite sides must have the same number "
-"of segments, the other pair must have an even difference between the "
-"numbers of segments on the sides."
-msgstr ""
-
-# 9a237a78a95a45dba303c8be2266d4fb
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:20
-msgid ""
-"vertex of a trilateral geometrical face, around which triangles will be "
-"created while other elements will be quadrangles. Vertex can be either a "
-"GEOM_Object or a vertex ID within the shape to mesh"
-msgstr ""
-
-# 7a32e34ae7714c8bb3112103653b6a88
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:24
-msgid ""
-"list of shapes defining positions where nodes (enforced nodes) must be "
-"created by the mesher. Shapes can be of any type, vertices of given "
-"shapes define positions of enforced nodes. Only vertices successfully "
-"projected to the face are used."
-msgstr ""
-
-# a23fe1e20c3f4e4abd13b8961ebd987b
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:28
-msgid ""
-"list of points giving positions of enforced nodes. Point can be defined "
-"either as SMESH.PointStruct's ([SMESH.PointStruct(x1,y1,z1), "
-"SMESH.PointStruct(x2,y2,z2),...]) or triples of values ([[x1,y1,z1], "
-"[x2,y2,z2], ...]). In the case if the defined QuadrangleParameters() "
-"refer to a sole face, all given points must lie on this face, else the "
-"mesher fails."
-msgstr ""
-
-# f5bb3e0440e0450ebd40a8f033e04712
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadrangleParameters:34
-msgid ""
-"if *True* - searches for the existing hypothesis created with the same "
-"parameters, else (default) - creates a new one"
-msgstr ""
-
-# 147ffb0b66184ee8accdf622d2b1db7b
-# fd7155dad5ea49fab74874f748d416b5
-# 2d64aadeb06e4b91bac4d8b0dad91e47
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadranglePreference:3
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.Reduced:5
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TrianglePreference:2
-msgid ""
-"Defines \"QuadrangleParams\" hypothesis with a type of quadrangulation "
-"that only"
-msgstr ""
-
-# f20a22af0b544a3395707d2ad0d1fafa
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadranglePreference:2
-msgid ""
-"quadrangles are built in the transition area along the finer meshed "
-"sides, if the total quantity of segments on all four sides of the face is"
-" even."
-msgstr ""
-
-# 735743340e2e4df99f3f7184c35dc4ba
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadranglePreference:5
-msgid "if True, transition area is located along the coarser meshed sides."
-msgstr ""
-
-# f3b1feba43a34214904f4c791c4f3add
-# db969b8a9ea141c38f31dd3f8fb33114
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadranglePreference:7
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TriangleVertex:8
-msgid "UseExisting: if ==true - searches for the existing hypothesis created with"
-msgstr ""
-
-# c79ad9d0018b4bd1996d49a2ca8922e2
-# bfdad63e73d24b2abe85ea3e16518951
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.QuadranglePreference:8
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TriangleVertex:9
-msgid "the same parameters, else (default) - creates a new one"
-msgstr ""
-
-# 0a56f79b791345cda705921e6151629a
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.Reduced:2
-msgid ""
-"quadrangles are built and the transition between the sides is made "
-"gradually, layer by layer. This type has a limitation on the number of "
-"segments: one pair of opposite sides must have the same number of "
-"segments, the other pair must have an even difference between the numbers"
-" of segments on the sides."
-msgstr ""
-
-# 5390a906611c40049091b7f5eee5e51c
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TrianglePreference:2
-msgid "triangles are built in the transition area along the finer meshed sides."
-msgstr ""
-
-# ca8073e348894d6487fefbc93f8c5f24
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TriangleVertex:1
-msgid ""
-"Defines \"QuadrangleParams\" hypothesis with QUAD_STANDARD type of "
-"quadrangulation"
-msgstr ""
-
-# 3fe1b7fd806243ee88841484c2ed53f2
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TriangleVertex:3
-msgid ""
-"vertex of a trilateral geometrical face, around which triangles    will "
-"be created while other elements will be quadrangles.    Vertex can be "
-"either a GEOM_Object or a vertex ID within the    shape to mesh "
-"UseExisting: if ==true - searches for the existing hypothesis created "
-"with    the same parameters, else (default) - creates a new one"
-msgstr ""
-
-# e85cfc2f2b4847adb110ba6df4a46670
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TriangleVertex:6
-msgid "vertex of a trilateral geometrical face, around which triangles"
-msgstr ""
-
-# c36e8e15e39e46d8a222956faf4c6a75
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.TriangleVertex:5
-msgid ""
-"will be created while other elements will be quadrangles. Vertex can be "
-"either a GEOM_Object or a vertex ID within the shape to mesh"
-msgstr ""
-
-# 650e50089e8d4043bba03174ac0b41d4
-#: StdMeshersBuilder.StdMeshersBuilder_Quadrangle.params:1
-msgid "hypothesis associated with algorithm"
-msgstr ""
-
-# 8bd3109ee4374afe846f966d31d8c3bc
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm:1
-msgid "Base class for algorithms supporting radial distribution hypotheses"
-msgstr ""
-
-# f2fdaec0c8e74c1da7a2e1e9e1498c11
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.Arithmetic1D:2
-msgid "with a length that changes in arithmetic progression"
-msgstr ""
-
-# 63482f5bfb534d38b466032de9566a3a
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.GeometricProgression:2
-msgid "with a length that changes in Geometric progression"
-msgstr ""
-
-# db1df12d4d3a4a61b265e9cf7f06aeed
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.Get2DHypothesis:1
-msgid "2D hypothesis holding the 1D one"
-msgstr ""
-
-# 3af1b93a4e6549ecafd97b0dfd5e561c
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.NumberOfLayers:1
-msgid "Defines \"NumberOfLayers\" hypothesis, specifying the number of layers"
-msgstr ""
-
-# a962228395d24300830ff0a5b69bc794
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.NumberOfSegments:1
-msgid "Defines \"NumberOfSegments\" hypothesis, specifying the number of layers"
-msgstr ""
-
-# 499206fe78264ea3b7a8d8a4f6d924a2
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.StartEndLength:2
-msgid "as geometric length increasing"
-msgstr ""
-
-# 343b5b95079343a39c8f505d3b1c9d6a
-#: StdMeshersBuilder.StdMeshersBuilder_RadialAlgorithm.StartEndLength:5
-msgid "for the length of the last  segment"
-msgstr ""
-
-# 12cac955d7ca4b90a4cc42020e4e280e
-#: StdMeshersBuilder.StdMeshersBuilder_RadialPrism3D:1
-msgid ""
-"Defines Radial Prism 3D algorithm It is created by calling "
-"smeshBuilder.Mesh.Prism(geom=0)"
-msgstr ""
-
-# f6a8b9b5f568422bb15ec887dc1846e5
-#: StdMeshersBuilder.StdMeshersBuilder_RadialQuadrangle1D2D:1
-msgid ""
-"Defines a Radial Quadrangle 1D-2D algorithm It is created by calling "
-"smeshBuilder.Mesh.Quadrangle(smeshBuilder.RADIAL_QUAD,geom=0)"
-msgstr ""
-
-# 99d0e13bef93450aa7a8299d0965eaaf
-#: StdMeshersBuilder.StdMeshersBuilder_Segment:1
-msgid "Defines segment 1D algorithm for edges discretization."
-msgstr ""
-
-# 970ee9227fef41c7824025ff7680979a
-#: StdMeshersBuilder.StdMeshersBuilder_Segment:3
-msgid "It can be created by calling smeshBuilder.Mesh.Segment(geom=0)"
-msgstr ""
-
-# 609776fee061450ebfe16070dff05dba
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Adaptive:1
-msgid ""
-"Defines \"Adaptive\" hypothesis to cut an edge into segments keeping "
-"segment size within the given range and considering (1) deflection of "
-"segments from the edge and (2) distance from segments to closest edges "
-"and faces to have segment length not longer than two times shortest "
-"distances to edges and faces."
-msgstr ""
-
-# f53a1f34e419466cadb0fd4480be9946
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Adaptive:6
-msgid "defines the minimal allowed segment length"
-msgstr ""
-
-# 0fdb63f57f7f473a99d3f3b35fd576bf
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Adaptive:7
-msgid "defines the maximal allowed segment length"
-msgstr ""
-
-# 36aa33bffd27452e9bac24dd74713296
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Adaptive:8
-msgid "defines the maximal allowed distance from a segment to an edge"
-msgstr ""
-
-# 3a3ae88793894745a0b973e0516ce9dc
-# 87841599c67545c1bb2e19a93dfce20f
-# f0fb67290dfe4b7f8123e1a47baa859d
-# 4f2623e5c2d84ae6b25fa841ee64f675
-# e14bef6d6643447ab39a8658ced663f8
-# f06ff12259f946d5966e7d06485e904a
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Adaptive:9
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D:8
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D:11
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression:8
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.MaxSize:5
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.StartEndLength:7
-msgid ""
-"if ==true - searches for an existing hypothesis created with the same "
-"parameters, else (default) - creates a new one"
-msgstr ""
-
-# 0fc4ee81c2f844b498b123a783269719
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Adaptive:12
-msgid "an instance of StdMeshers_Adaptive1D hypothesis"
-msgstr ""
-
-# 94afc121014a468c9155d45c9b29736b
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D:2
-msgid ""
-"Defines \"Arithmetic1D\" hypothesis to cut an edge in several segments "
-"with a length"
-msgstr ""
-
-# c3e023bebc98411bacc7549ffa477e8c
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D:2
-msgid "that changes in arithmetic progression"
-msgstr ""
-
-# 4b3d82b06cd04438985dc9efbe8df04f
-# a276ed1cbaa7430c91f33b0d31f9f24c
-# 3050f0f5302d4acf9e0bc79d096e3f81
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D:4
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression:4
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.StartEndLength:3
-msgid "defines the length of the first segment"
-msgstr ""
-
-# 08814a9c67a44b43834fc131fb0f5489
-# 7f7a73ed5c964953b6770da2846877aa
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D:5
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.StartEndLength:4
-msgid "defines the length of the last  segment"
-msgstr ""
-
-# c3ab24f25a3e4cf5bfc68a222ffe885f
-# 2f962cbece3e4d6781f43716efebd0e3
-# a1b1b46e36534cb6b82b2e5123b874a0
-# 1b4d3125a718498d8ea0b21888887cf5
-# 89520ab22ca246f0906906e32cf18e90
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D:6
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D:9
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression:6
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.NumberOfSegments:5
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.StartEndLength:5
-msgid ""
-"is a list of edges to mesh using reversed orientation. A list item can "
-"also be a tuple (edge, 1st_vertex_of_edge)"
-msgstr ""
-
-# 3690bfa5dce74043addff7bb1c041a70
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Arithmetic1D:11
-msgid "an instance of StdMeshers_Arithmetic1D hypothesis"
-msgstr ""
-
-# 7d260e53cb9f40d18bd1d8368cdbecb0
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.AutomaticLength:1
-msgid "Defines \"AutomaticLength\" hypothesis"
-msgstr ""
-
-# 201934b5f38146979568a5885c51b4f7
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.AutomaticLength:3
-msgid "for the fineness [0-1]"
-msgstr ""
-
-# 97e8effc2b624d4a94905a190f1bd67e
-# 5ed9f5774ecc4a45812ef67e447c41fa
-# 5993b765453348a4aa21453352a2012b
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.AutomaticLength:4
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Deflection1D:4
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.NumberOfSegments:7
-msgid ""
-"if ==true - searches for an existing hypothesis created with the same "
-"parameters, else (default) - create a new one"
-msgstr ""
-
-# e3a3c7b43a5a4ddeb4483a9663b2df12
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Deflection1D:1
-msgid "Defines \"Deflection1D\" hypothesis"
-msgstr ""
-
-# 72bf1a0354654fbfb5ccef5bbb3c72a8
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Deflection1D:3
-msgid "for the deflection"
-msgstr ""
-
-# dfe341c50e3e445e86f4b41ed65e1800
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D:5
-msgid "Defines \"FixedPoints1D\" hypothesis to cut an edge using parameter"
-msgstr ""
-
-# 34fa6464289844a6b746b277e2ba9c73
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D:2
-msgid ""
-"on curve from 0 to 1 (additionally it is neecessary to check orientation "
-"of edges and create list of reversed edges if it is needed) and sets "
-"numbers of segments between given points (default values are 1)"
-msgstr ""
-
-# 5848451129f64329829c09777a8868bf
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D:7
-msgid "defines the list of parameters on curve"
-msgstr ""
-
-# 2dbf581ce8c3498e8663e2fc4ea49369
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D:8
-msgid "defines the list of numbers of segments"
-msgstr ""
-
-# 2cdc44aa178a4833a16fb23623bfe9dc
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.FixedPoints1D:14
-msgid "an instance of StdMeshers_FixedPoints1D hypothesis"
-msgstr ""
-
-# 5b4e22e058204f9cadea131d53f42c03
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression:2
-msgid "Defines \"GeometricProgression\" hypothesis to cut an edge in several"
-msgstr ""
-
-# 42e4996269b04e7f8742cd6cb181a985
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression:2
-msgid "segments with a length that changes in Geometric progression"
-msgstr ""
-
-# fc6fa2f8b58844708c91590c5c1b95ea
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression:5
-msgid "defines the common ratio of the geometric progression"
-msgstr ""
-
-# 7c1ad7b2e1714292aef7988654b40bf3
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.GeometricProgression:11
-msgid "an instance of StdMeshers_Geometric1D hypothesis"
-msgstr ""
-
-# c29969643d26492ea8ed995b736e473d
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.LengthNearVertex:1
-msgid "Defines \"SegmentLengthAroundVertex\" hypothesis"
-msgstr ""
-
-# 420996982ca64cbeb0ca8cd3e72ad0dc
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.LengthNearVertex:3
-msgid "for the segment length"
-msgstr ""
-
-# 89bfcfc225ad436dba9b389c1ed6be4e
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.LengthNearVertex:4
-msgid ""
-"for the length localization: the vertex index [0,1] | vertex object. Any "
-"other integer value means that the hypothesis will be set on the whole 1D"
-" shape, where Mesh_Segment algorithm is assigned."
-msgstr ""
-
-# c6bb5482ab4045f8b05a83d5d9d8f2b2
-# 911fea1f0c7b48b69b1e6c55fb7bac6a
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.LengthNearVertex:7
-#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.MaxElementArea:4
-msgid ""
-"if ==true - searches for an  existing hypothesis created with the same "
-"parameters, else (default) - creates a new one"
-msgstr ""
-
-# 61a0d38373d643d29b4c1c7a6e3cf7dd
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.LocalLength:1
-msgid ""
-"Defines \"LocalLength\" hypothesis to cut an edge in several segments "
-"with the same length"
-msgstr ""
-
-# cee1d02857ff4081ae5b105b7bc8c932
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.LocalLength:3
-msgid "for the length of segments that cut an edge"
-msgstr ""
-
-# 68d68cc8d3564b02ba0c43c69e3f5784
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.LocalLength:4
-msgid ""
-"if == true - searches for an  existing hypothesis created with the same "
-"parameters, else (default) - creates a new one"
-msgstr ""
-
-# df4ef495103f479fbedd9f336167b7cb
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.LocalLength:6
-msgid ""
-"precision, used for calculation of the number of segments. The precision "
-"should be a positive, meaningful value within the range [0,1]. In "
-"general, the number of segments is calculated with the formula: nb = "
-"ceil((edge_length / l) - p) Function ceil rounds its argument to the "
-"higher integer. So, p=0 means rounding of (edge_length / l) to the higher"
-" integer, p=0.5 means rounding of (edge_length / l) to the nearest "
-"integer, p=1 means rounding of (edge_length / l) to the lower integer. "
-"Default value is 1e-07."
-msgstr ""
-
-# ef6c282c98d24218b24a3f3f7160863d
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.LocalLength:16
-msgid "an instance of StdMeshers_LocalLength hypothesis"
-msgstr ""
-
-# 229636a1df2a49e5a13cc84fa4788573
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.MaxSize:1
-msgid ""
-"Defines \"MaxSize\" hypothesis to cut an edge into segments not longer "
-"than given value"
-msgstr ""
-
-# d9c3678ca1954492b796aca8c500dcf9
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.MaxSize:3
-msgid ""
-"is optional maximal allowed length of segment, if it is omitted the "
-"preestimated length is used that depends on geometry size"
-msgstr ""
-
-# 686cd7e99504480ebad58c83eb451e54
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.MaxSize:8
-msgid "an instance of StdMeshers_MaxLength hypothesis"
-msgstr ""
-
-# b3504be92e0a48178b8c3c7f730d6abe
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.NumberOfSegments:1
-msgid ""
-"Defines \"NumberOfSegments\" hypothesis to cut an edge in a fixed number "
-"of segments"
-msgstr ""
-
-# 66398640cbef42b68e0b31a4d2df880a
-# f3fc233d3ed54a14bfe9cb70b9d47d1a
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.NumberOfSegments:3
-#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python.PythonSplit1D:3
-msgid "for the number of segments that cut an edge"
-msgstr ""
-
-# 7fdadb1ea4ec4b579b32129b627a4283
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.NumberOfSegments:4
-msgid "for the scale factor (optional)"
-msgstr ""
-
-# 3ba5cb734c314b9ea29aa4b502dcc7d8
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.NumberOfSegments:10
-msgid "an instance of StdMeshers_NumberOfSegments hypothesis"
-msgstr ""
-
-# 55dd594182f84885874e7df59fe0ae1e
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Propagation:3
-msgid "Defines \"Propagation\" hypothesis that propagates 1D hypotheses"
-msgstr ""
-
-# 03b256b99db64e04b8124e831752ff4b
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.Propagation:2
-msgid ""
-"from an edge where this hypothesis is assigned to on all other edges that"
-" are at the opposite side in case of quadrangular faces This hypothesis "
-"should be assigned to an edge to propagate a hypothesis from."
-msgstr ""
-
-# 15a171464d3a402fa876e1290b31a500
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.PropagationOfDistribution:3
-msgid "Defines \"Propagation of Node Distribution\" hypothesis that propagates"
-msgstr ""
-
-# 75668c86fff64871a69a5f84bd0a9827
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.PropagationOfDistribution:2
-msgid ""
-"distribution of nodes from an edge where this hypothesis is assigned to, "
-"to opposite edges of quadrangular faces, so that number of segments on "
-"all these edges will be the same, as well as relations between segment "
-"lengths."
-msgstr ""
-
-# 3a2d3e5b5a9448f9a2ae1a596e412005
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.QuadraticMesh:1
-msgid ""
-"Defines \"QuadraticMesh\" hypothesis, forcing construction of quadratic "
-"edges. If the 2D mesher sees that all boundary edges are quadratic, it "
-"generates quadratic faces, else it generates linear faces using medium "
-"nodes as if they are vertices. The 3D mesher generates quadratic volumes "
-"only if all boundary faces are quadratic, else it fails."
-msgstr ""
-
-# 2cb9226802bd4df887bc1a0d087cc914
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.StartEndLength:1
-msgid ""
-"Defines \"StartEndLength\" hypothesis to cut an edge in several segments "
-"with increasing geometric length"
-msgstr ""
-
-# be274772b8454a658d31e07baf544de9
-#: StdMeshersBuilder.StdMeshersBuilder_Segment.StartEndLength:10
-msgid "an instance of StdMeshers_StartEndLength hypothesis"
-msgstr ""
-
-# 76012d3d2ff9448bb42fd5b4d8c313a5
-#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python:3
-msgid ""
-"Defines a segment 1D algorithm for discretization of edges with Python "
-"function"
-msgstr ""
-
-# b4b0cc44082d4aa69fd763e834e25baa
-#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python:2
-msgid ""
-"It is created by calling "
-"smeshBuilder.Mesh.Segment(smeshBuilder.PYTHON,geom=0)"
-msgstr ""
-
-# 78d1d00125904ec19e9e48c275a798c4
-#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python.PythonSplit1D:1
-msgid "Defines \"PythonSplit1D\" hypothesis"
-msgstr ""
-
-# c7c88639db24496786080452e0d0307f
-#: StdMeshersBuilder.StdMeshersBuilder_Segment_Python.PythonSplit1D:4
-msgid "for the python function that calculates the length of all segments"
-msgstr ""
-
-# d547c98271ce4546853aef52f20e3c2e
-#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO:1
-msgid ""
-"Triangle MEFISTO 2D algorithm It is created by calling "
-"smeshBuilder.Mesh.Triangle(smeshBuilder.MEFISTO,geom=0)"
-msgstr ""
-
-# e09f098933e640e594676b483b1f314a
-#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.LengthFromEdges:1
-msgid "Defines \"LengthFromEdges\" hypothesis to build triangles"
-msgstr ""
-
-# 8cab223170024a7f9a113d5beb719693
-#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.LengthFromEdges:2
-msgid "based on the length of the edges taken from the wire"
-msgstr ""
-
-# a4f164e3e41146f5aa8c93217aa0266a
-#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.MaxElementArea:1
-msgid ""
-"Defines \"MaxElementArea\" hypothesis basing on the definition of the "
-"maximum area of each triangle"
-msgstr ""
-
-# 935dbd26fbb14373bb55ceef0689372e
-#: StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO.MaxElementArea:3
-msgid "for the maximum area of each triangle"
-msgstr ""
-
-# 9c32c3ef9a1149a494f005bca9b856a3
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D:1
-msgid "Defines a Use Existing Elements 1D algorithm"
-msgstr ""
-
-# d9c2f9be5b784a94ad003a5c7b628c12
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D:3
-msgid "It is created by calling smeshBuilder.Mesh.UseExisting1DElements(geom=0)"
-msgstr ""
-
-# f628365f70954e14a77619f2991faadf
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.SourceEdges:1
-msgid "Defines \"Source edges\" hypothesis, specifying groups of edges to import"
-msgstr ""
-
-# 4f51b380628747fd88b09fcd6cf3f709
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.SourceEdges:3
-msgid "list of groups of edges"
-msgstr ""
-
-# cbcbc778a830426ab731e10e24a499b0
-# ec351565be5e46d38b8104a90bb1d2a3
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.SourceEdges:4
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.SourceFaces:4
-msgid "if True, the whole mesh *groups* belong to is imported"
-msgstr ""
-
-# e373701fd07944a1a2f6695faa5d33d4
-# 4e89d75d8bff4774a21d474780c8b66e
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D.SourceEdges:5
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.SourceFaces:5
-msgid "if True, all groups of the mesh *groups* belong to are imported"
-msgstr ""
-
-# f2a4783105a1468c896366e921f82c24
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D:1
-msgid "Defines a Use Existing Elements 1D-2D algorithm"
-msgstr ""
-
-# 02835b5e0db4452f8a6652939b7e8499
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D:3
-msgid "It is created by calling smeshBuilder.Mesh.UseExisting2DElements(geom=0)"
-msgstr ""
-
-# 68e8e033208f41f19ada5fbe63eaea6f
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.SourceFaces:1
-msgid "Defines \"Source faces\" hypothesis, specifying groups of faces to import"
-msgstr ""
-
-# 6bdd3e9edf8a4a85a62df90980081ff7
-# 1a49fe0005324b5cb01e5d10dc5a7dbc
-#: StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D.SourceFaces:3
-#: smeshBuilder.Mesh.CreateFlatElementsOnFacesGroups:7
-msgid "list of groups of faces"
-msgstr ""
-
-# 27f09c2f23e44582b957b084e60a8440
-#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D:2
-msgid ""
-"Defines a stub 1D algorithm, which enables \"manual\" creation of nodes "
-"and"
-msgstr ""
-
-# 61bc9e0d4ad74bc8af3b1b84205bda80
-#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D:2
-msgid "segments usable by 2D algorithms"
-msgstr ""
-
-# 5385e1e5545d401f99640d5fae587267
-#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D:4
-msgid "It is created by calling smeshBuilder.Mesh.UseExistingSegments(geom=0)"
-msgstr ""
-
-# 7725a7ff60204f82b1b51f56af093f7a
-#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_2D:1
-msgid ""
-"Defines a stub 2D algorithm, which enables \"manual\" creation of nodes "
-"and faces usable by 3D algorithms"
-msgstr ""
-
-# ab7091440d8542789135e3a82c21fd8c
-#: StdMeshersBuilder.StdMeshersBuilder_UseExisting_2D:4
-msgid "It is created by calling smeshBuilder.Mesh.UseExistingFaces(geom=0)"
-msgstr ""
-
-# 81eaaacb448e4a04931eaca4de3423d7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/python_api.rst:16
-msgid "smeshBuilder module"
-msgstr ""
-
-# cc2071077fe7431699ced61701f4ad90
-#: smeshBuilder.AssureGeomPublished:1
-msgid ""
-"Private method. Add geom (sub-shape of the main shape) into the study if "
-"not yet there"
-msgstr ""
-
-# 8b642226be2443dcb380e3fdac9ece98
-#: smeshBuilder.DegreesToRadians:1
-msgid "Convert an angle from degrees to radians"
-msgstr ""
-
-# e874800d804942e9b7d50c64ad9af697
-#: smeshBuilder.FirstVertexOnCurve:1
-msgid "the first vertex of a geometrical edge by ignoring orientation"
-msgstr ""
-
-# 7231cf03559d4f64b82ad3042a31bbc7
-#: smeshBuilder.GetName:1
-msgid "object name"
-msgstr ""
-
-# a77bdb1e2d8f4359b37daf00c64ba995
-#: smeshBuilder.IsEqual:1
-msgid "Compare real values using smeshPrecisionConfusion as tolerance"
-msgstr ""
-
-# 663399986db64e6e812e471434476b83
-#: smeshBuilder.Mesh:1
-msgid ""
-"This class allows defining and managing a mesh. It has a set of methods "
-"to build a mesh on the given geometry, including the definition of sub-"
-"meshes. It also has methods to define groups of mesh elements, to modify "
-"a mesh (by addition of new nodes and elements and by changing the "
-"existing entities), to get information about a mesh and to export a mesh "
-"in different formats."
-msgstr ""
-
-# ad856877010c437c9b2ea37b045a077f
-#: smeshBuilder.Mesh.Add0DElement:1
-msgid "Create a 0D element on a node with given number."
-msgstr ""
-
-# 60413216d35244c7bec4973081678057
-# e7605f48221b439997dce94bfd738362
-#: smeshBuilder.Mesh.Add0DElement:3 smeshBuilder.Mesh.AddBall:3
-msgid "the ID of node for creation of the element."
-msgstr ""
-
-# 9395c6efc27b4a98ae6617ee78e448b8
-# 88506b1106ed4e06b3671ca983c14afa
-#: smeshBuilder.Mesh.Add0DElement:4 smeshBuilder.Mesh.Add0DElementsToAllNodes:9
-msgid "to add one more 0D element to a node or not"
-msgstr ""
-
-# d8645964a6034cd5b3ce2f1b1b0a0fff
-#: smeshBuilder.Mesh.Add0DElement:6
-msgid "the Id of the new 0D element"
-msgstr ""
-
-# 62d8c976c8ac48ba9b465510ab3f5e0f
-#: smeshBuilder.Mesh.Add0DElementsToAllNodes:1
-msgid ""
-"Create 0D elements on all nodes of the given elements except those nodes "
-"on which a 0D element already exists."
-msgstr ""
-
-# 6cdb298387ca47bbae25e38c6ff66678
-#: smeshBuilder.Mesh.Add0DElementsToAllNodes:4
-msgid ""
-"an object on whose nodes 0D elements will be created. It can be mesh, "
-"sub-mesh, group, list of element IDs or a holder of nodes IDs created by "
-"calling mesh.GetIDSource( nodes, SMESH.NODE )"
-msgstr ""
-
-# a8550a9c97c24e2c98d79129c263e6cd
-#: smeshBuilder.Mesh.Add0DElementsToAllNodes:7
-msgid ""
-"optional name of a group to add 0D elements created and/or found on nodes"
-" of *theObject*."
-msgstr ""
-
-# 725c19156e4345d8bba58ad5eb821051
-#: smeshBuilder.Mesh.Add0DElementsToAllNodes:11
-msgid ""
-"an object (a new group or a temporary SMESH_IDSource) holding     IDs of "
-"new and/or found 0D elements. IDs of 0D elements     can be retrieved "
-"from the returned object by calling GetIDs()"
-msgstr ""
-
-# 1294a3f90fe0496da7e2340f812693c3
-#: smeshBuilder.Mesh.Add0DElementsToAllNodes:14
-msgid "an object (a new group or a temporary SMESH_IDSource) holding"
-msgstr ""
-
-# d8371b5915714dbf8d5f4303ed3c9578
-#: smeshBuilder.Mesh.Add0DElementsToAllNodes:14
-msgid ""
-"IDs of new and/or found 0D elements. IDs of 0D elements can be retrieved "
-"from the returned object by calling GetIDs()"
-msgstr ""
-
-# 986599817f9b4d428d339e3888b5cf74
-#: smeshBuilder.Mesh.AddBall:1
-msgid "Create a ball element on a node with given ID."
-msgstr ""
-
-# 3a1a898c732b42bebc222f1581b3bc94
-#: smeshBuilder.Mesh.AddBall:4
-msgid "the bal diameter."
-msgstr ""
-
-# a266a51e143949ccbf89b5f8eb98be6f
-#: smeshBuilder.Mesh.AddBall:6
-msgid "the Id of the new ball element"
-msgstr ""
-
-# 0e88eaabfc234f348754af5a2515be72
-#: smeshBuilder.Mesh.AddEdge:2
-msgid "Create a linear or quadratic edge (this is determined"
-msgstr ""
-
-# 987f704a6ffa49d3a38a601b40437b91
-# 2f2d2a074b0a4071a4b17b7282295950
-#: smeshBuilder.Mesh.AddEdge:2 smeshBuilder.Mesh.AddVolume:2
-msgid "by the number of given nodes)."
-msgstr ""
-
-# ec7cba7b8fff4456aba5a1612816383e
-# ee2cec319e194274b091a06cfe633e91
-# 7e308293a4ed4078aa92853af22c32b0
-#: smeshBuilder.Mesh.AddEdge:4 smeshBuilder.Mesh.AddFace:4
-#: smeshBuilder.Mesh.AddVolume:4
-msgid ""
-"the list of node IDs for creation of the element. The order of nodes in "
-"this list should correspond to the description of MED. This description "
-"is located by the following link: http://www.code-"
-"aster.org/outils/med/html/modele_de_donnees.html#3."
-msgstr ""
-
-# 730956ad747c4ded9ca18b2372842859
-#: smeshBuilder.Mesh.AddEdge:10
-msgid "the Id of the new edge"
-msgstr ""
-
-# 049b31edb32e4776a89ea1349562d4c5
-#: smeshBuilder.Mesh.AddFace:1
-msgid ""
-"Create a linear or quadratic face (this is determined by the number of "
-"given nodes)."
-msgstr ""
-
-# 4d2df362600c4708b108fe726b3846ca
-# dca738271b57451d85713a558e1caf8b
-# 246efe2daae84905b1b7815c7fe64b10
-#: smeshBuilder.Mesh.AddFace:10 smeshBuilder.Mesh.AddPolygonalFace:5
-#: smeshBuilder.Mesh.AddQuadPolygonalFace:6
-msgid "the Id of the new face"
-msgstr ""
-
-# 3e5c902b4e2347eb9033954a846cd0e8
-#: smeshBuilder.Mesh.AddHypothesis:1
-msgid "Assign a hypothesis"
-msgstr ""
-
-# 8dc4a5a7de60448f859fd1e297bc811d
-#: smeshBuilder.Mesh.AddHypothesis:3
-msgid "a hypothesis to assign"
-msgstr ""
-
-# 4b629d89a2b44431996f840feb04a33f
-# 8d060d067ee44c12be90935348d9b339
-#: smeshBuilder.Mesh.AddHypothesis:4 smeshBuilder.Mesh.IsUsedHypothesis:4
-msgid "a subhape of mesh geometry"
-msgstr ""
-
-# 05cd8f67373b4ab580fa4b1249682bcc
-# 06b1f6b7863b4240a15936e4a530afa0
-#: smeshBuilder.Mesh.AddHypothesis:6 smeshBuilder.Mesh.RemoveHypothesis:6
-msgid "SMESH.Hypothesis_Status"
-msgstr ""
-
-# 62f74e1e74d34b02a7bab914bf3a9240
-#: smeshBuilder.Mesh.AddNode:1
-msgid "Add a node to the mesh by coordinates"
-msgstr ""
-
-# 733c72c6fa654be7908e3a5c46cab95b
-#: smeshBuilder.Mesh.AddNode:3
-msgid "Id of the new node"
-msgstr ""
-
-# 14cd480b28b0442e9fbe0ab728ed04d8
-#: smeshBuilder.Mesh.AddPolygonalFace:1
-msgid "Add a polygonal face to the mesh by the list of node IDs"
-msgstr ""
-
-# fa8909fa2e9e45b196356a1df3532fd4
-#: smeshBuilder.Mesh.AddPolygonalFace:3
-msgid "the list of node IDs for creation of the element."
-msgstr ""
-
-# 7d51e18ef5ba468ea6f751cba3ba30f9
-#: smeshBuilder.Mesh.AddPolyhedralVolume:1
-msgid "Create a volume of many faces, giving nodes for each face."
-msgstr ""
-
-# 32267ae5120743d78f91be2a0742c046
-#: smeshBuilder.Mesh.AddPolyhedralVolume:3
-msgid "the list of node IDs for volume creation face by face."
-msgstr ""
-
-# 8d2ad0e6ce7243e19fff852ac541a862
-#: smeshBuilder.Mesh.AddPolyhedralVolume:4
-msgid ""
-"the list of integer values, Quantities[i] gives the quantity of nodes in "
-"face number i."
-msgstr ""
-
-# 3065d36ca90f4299b990b9996ef3a2ac
-# bb3de0cd385f4bb5a9efe0d6af783e82
-# f6e92a05ff104a06aad5864b04dc8a00
-#: smeshBuilder.Mesh.AddPolyhedralVolume:7
-#: smeshBuilder.Mesh.AddPolyhedralVolumeByFaces:10
-#: smeshBuilder.Mesh.AddVolume:10
-msgid "the Id of the new volumic element"
-msgstr ""
-
-# f4eda9e76d1e454396f2c8d0645d4d41
-#: smeshBuilder.Mesh.AddPolyhedralVolumeByFaces:1
-msgid "Create a volume of many faces, giving the IDs of the existing faces."
-msgstr ""
-
-# 92326582283f47a98bae3857a6421cbc
-#: smeshBuilder.Mesh.AddPolyhedralVolumeByFaces:3
-msgid "the list of face IDs for volume creation."
-msgstr ""
-
-# e80671be78fc4c1392d6c29b65813355
-#: smeshBuilder.Mesh.AddPolyhedralVolumeByFaces:7
-msgid "The created volume will refer only to the nodes"
-msgstr ""
-
-# 7e3cd453d04c45718687615ae66cde3a
-#: smeshBuilder.Mesh.AddPolyhedralVolumeByFaces:8
-msgid "of the given faces, not to the faces themselves."
-msgstr ""
-
-# afd203f2f3684c238ee4c0c90ed1d411
-#: smeshBuilder.Mesh.AddQuadPolygonalFace:1
-msgid "Add a quadratic polygonal face to the mesh by the list of node IDs"
-msgstr ""
-
-# e13fb095ec554b1b9337259d149494e1
-#: smeshBuilder.Mesh.AddQuadPolygonalFace:3
-msgid ""
-"the list of node IDs for creation of the element; corner nodes follow "
-"first."
-msgstr ""
-
-# a770667503ba4eca81855dcbb5d2b586
-#: smeshBuilder.Mesh.AddVolume:2
-msgid "Create both simple and quadratic volume (this is determined"
-msgstr ""
-
-# 208483686cfa4c9c92866829bb8e3243
-# c62a3da1280445b9b27a158862301835
-#: smeshBuilder.Mesh.AdvancedExtrusion:1 smeshBuilder.Mesh.ExtrusionSweep:1
-msgid "Generate new elements by extrusion of the elements with given ids"
-msgstr ""
-
-# 35bd856f413e4e738d33aa2cb9523681
-#: smeshBuilder.Mesh.AdvancedExtrusion:3
-msgid "is ids of elements"
-msgstr ""
-
-# d2862da4e0ac4aa684f442b2ed61c0cd
-# 28b8bfd1077e4b10ab880af7d84a7dad
-# aa804cd9b4634a14b6057964b4201f22
-# 6f264ffc94fc44a79b9b0826aa119a79
-# e85d7a46e8ad4c11bc9b06a58a3e545c
-# 8bf7d912be8f4afcae5b425245b196b4
-#: smeshBuilder.Mesh.AdvancedExtrusion:4 smeshBuilder.Mesh.ExtrusionSweep:4
-#: smeshBuilder.Mesh.ExtrusionSweepObject:5
-#: smeshBuilder.Mesh.ExtrusionSweepObject1D:5
-#: smeshBuilder.Mesh.ExtrusionSweepObject2D:5
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:6
-msgid ""
-"vector or DirStruct or 3 vector components, defining the direction and "
-"value of extrusion for one step (the total extrusion length will be "
-"NbOfSteps * ||StepVector||)"
-msgstr ""
-
-# f23d7a88a8b945c481cb856136bd2784
-# 0146c97c22f245cbbe1893d939f70934
-# e46074c958094299802aecf36d27a553
-# 194ba16f7c8e474dba09cbdcfeaf5232
-# c8adb6f065a64a379e8c313a91ac4aeb
-# dec766ec1f234d80936249a2ab1d3035
-# 8f779544ff804cc1817497f92ea60c60
-# bb72277356a34d4da384f4faed738066
-#: smeshBuilder.Mesh.AdvancedExtrusion:7 smeshBuilder.Mesh.ExtrusionSweep:7
-#: smeshBuilder.Mesh.ExtrusionSweepObject:8
-#: smeshBuilder.Mesh.ExtrusionSweepObject1D:8
-#: smeshBuilder.Mesh.ExtrusionSweepObject2D:8
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:9 smeshBuilder.Mesh.RotationSweep:6
-#: smeshBuilder.Mesh.RotationSweepObjects:9
-msgid "the number of steps"
-msgstr ""
-
-# 205918ed37d843b9a20096d21f9b3ab7
-#: smeshBuilder.Mesh.AdvancedExtrusion:8
-msgid "sets flags for extrusion"
-msgstr ""
-
-# 2704c41547f84da788c318499518d6df
-#: smeshBuilder.Mesh.AdvancedExtrusion:9
-msgid "uses for comparing locations of nodes if flag EXTRUSION_FLAG_SEW is set"
-msgstr ""
-
-# c04ea863ca7b468a87e8c5dc89275dd3
-# 370e5b3d072a4cdfa182dcce2f1407a7
-# 78017bd134e9483282d1b542b08a3fc6
-# bd1d5fc7478347609e72bdd5ddf30ca7
-# 76cc3ae0a39642be87994eabda0599be
-# c2e7845111fa4263be289504f4493c36
-# 285387af061d497db1d09d819f5194b8
-# 15ec0ee8f9aa4a749c6545520a85c788
-# d6de86de5b3e4422a0b05b591511e04d
-# 2b4a19674e844d16b1abefb74135574e
-# 827eeff6455f4443ac5cb632460bee37
-# 1c6b6fff80d442baa3fad442f79270cf
-# 616870a33e384c1fb0638d2f85df10b2
-# bfe7d69eee0345e9955f4f8f1b245a5d
-# 1b63309c346d42de91d2aba9c7e58b1f
-# a87087c6c8014cfeb833a3a1861cbab3
-# 802799109bb54bc28e73f7c4bffd4ea3
-# becf266811084a739e4e1fe2e57cbca6
-# e094930dfa3a47c3945c52949d8d0643
-# d6aebd9f9b4e47caaef84974dec43b88
-# 37cfc21b3b3d4e599a5806028fac545a
-# 5b0ad9bcbf65477aab4f767d404ca848
-# d4a89dcfbb7f42d599f0633cd2304ab7
-#: smeshBuilder.Mesh.AdvancedExtrusion:11
-#: smeshBuilder.Mesh.ExtrusionAlongPath:14
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:15
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:15
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:15
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:19
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:17 smeshBuilder.Mesh.ExtrusionSweep:8
-#: smeshBuilder.Mesh.ExtrusionSweepObject:9
-#: smeshBuilder.Mesh.ExtrusionSweepObject2D:9
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:10
-#: smeshBuilder.Mesh.MirrorObjectMakeMesh:7 smeshBuilder.Mesh.Offset:5
-#: smeshBuilder.Mesh.RotateMakeMesh:6 smeshBuilder.Mesh.RotateObjectMakeMesh:6
-#: smeshBuilder.Mesh.RotationSweep:8 smeshBuilder.Mesh.RotationSweepObject:9
-#: smeshBuilder.Mesh.RotationSweepObject1D:9
-#: smeshBuilder.Mesh.RotationSweepObject2D:9
-#: smeshBuilder.Mesh.RotationSweepObjects:11 smeshBuilder.Mesh.ScaleMakeMesh:6
-#: smeshBuilder.Mesh.TranslateMakeMesh:5
-#: smeshBuilder.Mesh.TranslateObjectMakeMesh:5
-msgid "forces the generation of new groups from existing ones"
-msgstr ""
-
-# c6f08d5f4d2746e2a696c9e6db55f8e8
-# 558ff7b544d5494fa43f970f3a9195fb
-# 9fc69effeb484d66add307c83c675b92
-# 4bb433b1e84b43dd91abb7fdd98896bb
-# d45fcb2ba8af4e4da0cd98d5845a0a91
-# e578d79a91c24fd4b07d009e69499da6
-# 9f47a2ab0b9a494b96c96e2873185556
-# 3ebc0bf3cf3c4b34832b83990f4aae8c
-# 64bd4d8e7610400eaa23f10d3814710f
-# 3b7a097ca7c74d9c89a77e5ad4b83f82
-#: smeshBuilder.Mesh.AdvancedExtrusion:13
-#: smeshBuilder.Mesh.ExtrusionSweepObject:12
-#: smeshBuilder.Mesh.ExtrusionSweepObject1D:11
-#: smeshBuilder.Mesh.ExtrusionSweepObject2D:11 smeshBuilder.Mesh.Mirror:10
-#: smeshBuilder.Mesh.MirrorObject:10 smeshBuilder.Mesh.Rotate:9
-#: smeshBuilder.Mesh.RotateObject:9 smeshBuilder.Mesh.Translate:8
-#: smeshBuilder.Mesh.TranslateObject:8
-msgid ""
-"list of created groups (SMESH_GroupBase) if MakeGroups=True, empty list "
-"otherwise"
-msgstr ""
-
-# 81e6d6937b1842b5bfa1065acef9ea45
-#: smeshBuilder.Mesh.AffectedElemGroupsInRegion:1
-msgid ""
-"Identify the elements that will be affected by node duplication (actual "
-"duplication is not performed. This method is the first step of "
-"DoubleNodeElemGroupsInRegion."
-msgstr ""
-
-# b2fa45d9e7194cbe88722361e4176810
-#: smeshBuilder.Mesh.AffectedElemGroupsInRegion:4
-msgid "list of groups of nodes or elements (edges or faces) to be replicated"
-msgstr ""
-
-# 23fdc41ddf1e4246beff663a7c5ce0d2
-# 6a6472c194f842c98727495d860a7958
-# 50994ed3605a4a08afc725520aecee85
-#: smeshBuilder.Mesh.AffectedElemGroupsInRegion:5
-#: smeshBuilder.Mesh.DoubleNodeElemGroups:5
-#: smeshBuilder.Mesh.DoubleNodeElemGroupsInRegion:5
-msgid "list of groups of nodes not to replicated"
-msgstr ""
-
-# 6e931eba709143eeb542202273071c28
-# 4b0e9a4278ea40aabceab43c628e3179
-# 6f4c549402ba47d2969c4a28c08a4cd0
-# ca3f0b93034542f8b464ed614d350c0d
-#: smeshBuilder.Mesh.AffectedElemGroupsInRegion:6
-#: smeshBuilder.Mesh.DoubleNodeElemGroupInRegion:6
-#: smeshBuilder.Mesh.DoubleNodeElemGroupsInRegion:6
-#: smeshBuilder.Mesh.DoubleNodeElemInRegion:6
-msgid ""
-"shape to detect affected elements (element which geometric center located"
-" on or inside shape). The replicated nodes should be associated to "
-"affected elements."
-msgstr ""
-
-# 65733cda5abd4cffb7115656079b1d14
-#: smeshBuilder.Mesh.AffectedElemGroupsInRegion:10
-msgid "groups of affected elements in order:: volumes, faces, edges"
-msgstr ""
-
-# 129fd6650cd8407ab0a73f9f3f6fe9a2
-#: smeshBuilder.Mesh.AutomaticHexahedralization:1
-msgid "Compute an hexahedral mesh using AutomaticLength + Quadrangle + Hexahedron"
-msgstr ""
-
-# f1298ac9818d4a1f97299f7aa0bf2900
-# 194f27be622c411082cab20fc7be4325
-# 12935433ee6441b7a69c9a2ceb37c93f
-# 5afd0837c7d448ae9ba3c62c17db4750
-# 6b507e7db209403f88a0cc6715bfdbb0
-# e1393127b658483eb344d6cd77f4211b
-# 56b6015520414f7fac373e5efb6b914c
-# d7105e675dec46458d384c48f893229f
-# a59bec7fe0574c4b89687886a9f7d6b1
-#: smeshBuilder.Mesh.AutomaticHexahedralization:5
-#: smeshBuilder.Mesh.AutomaticTetrahedralization:5 smeshBuilder.Mesh.Compute:9
-#: smeshBuilder.Mesh.GetAutoColor:3
-#: smeshBuilder.Mesh.HasDuplicatedGroupNamesMED:4
-#: smeshBuilder.Mesh.IsReadyToCompute:5 smeshBuilder.Mesh.RemoveElements:5
-#: smeshBuilder.Mesh.RemoveNodes:5 smeshBuilder.submeshProxy.Compute:4
-msgid "True or False"
-msgstr ""
-
-# 26212aecfcc643fb9dc511431753921d
-#: smeshBuilder.Mesh.AutomaticTetrahedralization:1
-msgid "Compute a tetrahedral mesh using AutomaticLength + MEFISTO + Tetrahedron"
-msgstr ""
-
-# 44e5e6a62ba648ed8136c051484bce9d
-#: smeshBuilder.Mesh.AutomaticTetrahedralization:3
-msgid "[0.0,1.0] defines mesh fineness"
-msgstr ""
-
-# bae80c6186134cc9aa30bfdd59e31a1d
-#: smeshBuilder.Mesh.BaryCenter:1
-msgid ""
-"Return XYZ coordinates of the barycenter of the given element If there is"
-" no element for the given ID - return an empty list"
-msgstr ""
-
-# 0bbaf5af89d14deeb47b5499201c2f69
-#: smeshBuilder.Mesh.BaryCenter:4
-msgid "a list of three double values"
-msgstr ""
-
-# 710c39a5976f45859c95931eb4b8e0fc
-#: smeshBuilder.Mesh.BestSplit:1
-msgid "Find a better splitting of the given quadrangle."
-msgstr ""
-
-# 2ffb2485312249b4963f7514252eba53
-#: smeshBuilder.Mesh.BestSplit:3
-msgid "the ID of the quadrangle to be splitted."
-msgstr ""
-
-# 5877680b443b4873b2cb7693a76e6d3d
-#: smeshBuilder.Mesh.BestSplit:4
-msgid ""
-"is a numerical functor, in terms of enum SMESH.FunctorType, used to "
-"choose a diagonal for splitting. Type SMESH.FunctorType._items in the "
-"Python Console to see all items. Note that not all items correspond to "
-"numerical functors."
-msgstr ""
-
-# 2f8f2d5c7e8444f9b253ca53546b0a71
-#: smeshBuilder.Mesh.BestSplit:9
-msgid ""
-"1 if 1-3 diagonal is better, 2 if 2-4     diagonal is better, 0 if error "
-"occurs."
-msgstr ""
-
-# fcacc9b664724d379dc230741a3aa4ca
-#: smeshBuilder.Mesh.BestSplit:11
-msgid "1 if 1-3 diagonal is better, 2 if 2-4"
-msgstr ""
-
-# 016ae8b51ea6484d8b1f463995d5e671
-#: smeshBuilder.Mesh.BestSplit:12
-msgid "diagonal is better, 0 if error occurs."
-msgstr ""
-
-# 4cfdc35358e04b03a6f610a05388e612
-#: smeshBuilder.Mesh.BodyFitted:1
-msgid "Creates Body Fitting 3D algorithm for volumes"
-msgstr ""
-
-# 5dd540f0b37e4a3a947339a0f9920658
-# edb3cb9c6f314d45983a230e671971c8
-# fa8543d4e97740008275f1a5b5ca5872
-# 80459811afc2464da2595e4a8aa3b322
-# f105c80638934ebcb2040d7f55b0e44c
-# 27debb5144924e0aa280b72fab12bbee
-# dd653fcc21104565a4b08d2f0f74f324
-# b5d21aefc36944c0927e692e545bc520
-# 77c5da85385e4e1ca749f784315c2c2c
-# 9df47d73e8db4356a0bb16cad4562032
-# 72ed269405ab44059aa1ee7c6ca2fca0
-# 40857df81e694809b1cffa69005a8da5
-# d6f56ada726d4c71bcbe98db7d9566b4
-# 0fa764e452294a2d83c31e768c024d10
-# 990e65e6aeec468eb2ce8baf7d4959e6
-#: smeshBuilder.Mesh.BodyFitted:3 smeshBuilder.Mesh.Hexahedron:3
-#: smeshBuilder.Mesh.Polygon:3 smeshBuilder.Mesh.Prism:3
-#: smeshBuilder.Mesh.Projection1D:3 smeshBuilder.Mesh.Projection1D2D:3
-#: smeshBuilder.Mesh.Projection2D:3 smeshBuilder.Mesh.Projection3D:3
-#: smeshBuilder.Mesh.Quadrangle:3 smeshBuilder.Mesh.Segment:3
-#: smeshBuilder.Mesh.Triangle:3 smeshBuilder.Mesh.UseExisting1DElements:3
-#: smeshBuilder.Mesh.UseExisting2DElements:3
-#: smeshBuilder.Mesh.UseExistingFaces:3 smeshBuilder.Mesh.UseExistingSegments:3
-msgid ""
-"This method is dynamically added to **Mesh** class by the meshing plug-"
-"in(s)."
-msgstr ""
-
-# c2326df2e38c44f792b1b4cc6173ec9d
-# b79f4d6f219444399fb7e4908e82a075
-# d48adec0cbdc4d04a3cba80df5d6186e
-# 97a323aefc0f46ec84e74ed2083b7588
-# 870d3b6a66144ef388a1aa5636e67bf2
-# a095e3c123a146e6b7f3a16e4eb6028a
-# b86b2ed95f3a40e1894ee32163fc07da
-# d2a650ca64044462ad220c516b40f043
-# b60f5d4904e546279a3e57b14a24acd1
-# 212c61ae591f4427a4337c661e22bbb8
-# 377bcd20c1174714b00014b54e40e236
-# 81ec2db20ce7416bb0f3f8263096964e
-# d883fe92afc54ce18106481085743645
-# fd6e90827c4f448fb0cd5b37b42cfa5d
-# 2100dfb147af491ea03c94eef666a4de
-#: smeshBuilder.Mesh.BodyFitted:5 smeshBuilder.Mesh.Hexahedron:5
-#: smeshBuilder.Mesh.Polygon:5 smeshBuilder.Mesh.Prism:5
-#: smeshBuilder.Mesh.Projection1D:5 smeshBuilder.Mesh.Projection1D2D:5
-#: smeshBuilder.Mesh.Projection2D:5 smeshBuilder.Mesh.Projection3D:5
-#: smeshBuilder.Mesh.Quadrangle:5 smeshBuilder.Mesh.Segment:5
-#: smeshBuilder.Mesh.Triangle:5 smeshBuilder.Mesh.UseExisting1DElements:5
-#: smeshBuilder.Mesh.UseExisting2DElements:5
-#: smeshBuilder.Mesh.UseExistingFaces:5 smeshBuilder.Mesh.UseExistingSegments:5
-msgid ""
-"If the optional *geom_shape* parameter is not set, this algorithm is "
-"global (applied to whole mesh). Otherwise, this algorithm defines a "
-"submesh based on *geom_shape* subshape."
-msgstr ""
-
-# 1c903af0d39e4e3dad0c89b24be600cf
-# 58396f2c5d0941808502ecef3fdfa39d
-# 89e592e157b4477caeb92232948f1ee1
-# 9d480752853848a0975cf50d917af9dd
-# 8952f9f790ed416e8073f2f784a910cc
-# 810dd5c8d89945398a14d2ce6071d84e
-# d75c3f72149e413486fdf000aa540ef4
-# 3e32bc095e654494ae946e404ffffaea
-# d192056b6a0f4dcead5f276380a204e0
-# 8466e4cb15d74dcd93ddc525071f2a39
-# 9f1105dcab2f4061acedf712134948ff
-# cbcbe6bfa6e441779d81d0c2b53e43cb
-# 82121354f04041dd84e87a8a5c8e75b6
-# 4a697e38b4bb4b95bc5d634c3bbc9210
-# 61780de35bdc4e849766a8665c0cec94
-#: smeshBuilder.Mesh.BodyFitted:8 smeshBuilder.Mesh.Hexahedron:8
-#: smeshBuilder.Mesh.Polygon:8 smeshBuilder.Mesh.Prism:8
-#: smeshBuilder.Mesh.Projection1D:8 smeshBuilder.Mesh.Projection1D2D:8
-#: smeshBuilder.Mesh.Projection2D:8 smeshBuilder.Mesh.Projection3D:8
-#: smeshBuilder.Mesh.Quadrangle:8 smeshBuilder.Mesh.Segment:8
-#: smeshBuilder.Mesh.Triangle:8 smeshBuilder.Mesh.UseExisting1DElements:8
-#: smeshBuilder.Mesh.UseExisting2DElements:8
-#: smeshBuilder.Mesh.UseExistingFaces:8 smeshBuilder.Mesh.UseExistingSegments:8
-msgid ""
-"type of algorithm to be created; allowed values are specified by classes "
-"implemented by plug-in (see below)"
-msgstr ""
-
-# 9cc61e07d7164d87b5d894d54a0cc782
-# 225e3dd1a4d34ff9804a8a8690ac8a52
-# fe2617948f4f44009d81e6dc6b823bf0
-# ca0e6f92e7cf4b2492f6f57ab2f8a8be
-# 1caa4eba59c04f328b6a91b3c6c2903c
-# d1cbbd0bc3a1477bb218e1c4dc23b787
-# c803ec4f57e64383bd32983ece1efdf0
-# 61b0a1d62b824d0bbf916119b23fc905
-# 8deb105c48cd47b580901ee4b25d6e98
-# ce90bc283fdb4c2daf034909b0e4f064
-# 9bbac7c78bed4cdcbcb98cefa0afcba1
-# 0ac28ae1e5f1492ebf0bc8dd7ad5fdd7
-# 50e5196960fc43088d3ab29772ca161c
-# 765bfab6521d4d7eb0e4e3be1c42fa61
-# e1af8429e2e545e28eec21489d532e5c
-#: smeshBuilder.Mesh.BodyFitted:9 smeshBuilder.Mesh.Hexahedron:9
-#: smeshBuilder.Mesh.Polygon:9 smeshBuilder.Mesh.Prism:9
-#: smeshBuilder.Mesh.Projection1D:9 smeshBuilder.Mesh.Projection1D2D:9
-#: smeshBuilder.Mesh.Projection2D:9 smeshBuilder.Mesh.Projection3D:9
-#: smeshBuilder.Mesh.Quadrangle:9 smeshBuilder.Mesh.Segment:9
-#: smeshBuilder.Mesh.Triangle:9 smeshBuilder.Mesh.UseExisting1DElements:9
-#: smeshBuilder.Mesh.UseExisting2DElements:9
-#: smeshBuilder.Mesh.UseExistingFaces:9 smeshBuilder.Mesh.UseExistingSegments:9
-msgid "if defined, the subshape to be meshed"
-msgstr ""
-
-# 68f911ad512042b4a6285aa88f8fca17
-#: smeshBuilder.Mesh.BodyFitted:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Cartesian_3D`"
-msgstr ""
-
-# 4085d3c0f2b848109948aee1e9cc7bb6
-# a9486953e6b7402baadeb49a7c5e0fd7
-#: smeshBuilder.Mesh.BoundingBox:1 smeshBuilder.smeshBuilder.BoundingBox:1
-msgid "Get bounding box of the specified object(s)"
-msgstr ""
-
-# 71b17d18ce6b4f3f97d0d21de438263b
-# 8235fb4f2a644850b2dbe3cce65e4989
-#: smeshBuilder.Mesh.BoundingBox:3 smeshBuilder.Mesh.GetBoundingBox:3
-msgid ""
-"single source object or list of source objects or list of nodes/elements "
-"IDs"
-msgstr ""
-
-# 8d64e7f2053847088f4f127b1ae04a71
-#: smeshBuilder.Mesh.BoundingBox:4
-msgid ""
-"if *objects* is a list of IDs, *True* value in this parameters specifies "
-"that *objects* are elements, *False* specifies that *objects* are nodes"
-msgstr ""
-
-# 59b8d41e9b2049efb00c98b745767f7a
-# 77aeda9898a04e12bf147fffc6e75fbe
-#: smeshBuilder.Mesh.BoundingBox:7 smeshBuilder.smeshBuilder.BoundingBox:5
-msgid ""
-"tuple of six values (minX, minY, minZ, maxX, maxY, maxZ) "
-"**GetBoundingBox()**"
-msgstr ""
-
-# a537005a5b9d47979929c05f8eaeda15
-#: smeshBuilder.Mesh.ChangeElemNodes:1
-msgid "Set new nodes for the given element."
-msgstr ""
-
-# 36898169610340a18bf9a620e210ce2e
-#: smeshBuilder.Mesh.ChangeElemNodes:3
-msgid "the element id"
-msgstr ""
-
-# 21b6219a1e944f449257d19dd1ca0f02
-#: smeshBuilder.Mesh.ChangeElemNodes:4
-msgid "nodes ids"
-msgstr ""
-
-# d33c68dbe23e4006ad1956f0b6bbac23
-#: smeshBuilder.Mesh.ChangeElemNodes:6
-msgid ""
-"If the number of nodes does not correspond to the type of element - "
-"return false"
-msgstr ""
-
-# e731f2bf01644c4ebface29a1d5eb581
-#: smeshBuilder.Mesh.Clear:1
-msgid ""
-"Remove all nodes and elements generated on geometry. Imported elements "
-"remain."
-msgstr ""
-
-# 43d4bb85669342ec965afe9692af55cf
-#: smeshBuilder.Mesh.ClearLastCreated:1
-msgid ""
-"Forget what nodes and elements were created by the last mesh edition "
-"operation"
-msgstr ""
-
-# 337f6843fdf848bf81ccb8161b213da6
-#: smeshBuilder.Mesh.ClearLog:1
-msgid ""
-"Clear the log of nodes and elements added or removed since the previous "
-"clear. Must be used immediately after GetLog if clearAfterGet is false."
-msgstr ""
-
-# 69dc1a51cd0d40118941c517bca60295
-#: smeshBuilder.Mesh.ClearSubMesh:1
-msgid "Remove all nodes and elements of indicated shape"
-msgstr ""
-
-# ef5f4ddea02f482c880cbe8e5828f8cf
-# 1f83fe014ef54d45975dcc4035acdcc2
-#: smeshBuilder.Mesh.ClearSubMesh:3 smeshBuilder.Mesh.Compute:7
-msgid "if *True*, Object browser is automatically updated (when running in GUI)"
-msgstr ""
-
-# 857622f9b8164097ba8110880cc6a93e
-#: smeshBuilder.Mesh.ClearSubMesh:4
-msgid "the ID of a sub-shape to remove elements on"
-msgstr ""
-
-# bcf73c75711a44ac8ac2ff512325f48c
-#: smeshBuilder.Mesh.Compute:1
-msgid "Compute the mesh and return the status of the computation"
-msgstr ""
-
-# 043ddc61ba9d4e48adcdc7b1b94d666f
-#: smeshBuilder.Mesh.Compute:3
-msgid "geomtrical shape on which mesh data should be computed"
-msgstr ""
-
-# 8624bb7c060e4ecd81652d8c183fd92c
-#: smeshBuilder.Mesh.Compute:4
-msgid ""
-"if True and the mesh has been edited since a last total re-compute and "
-"that may prevent successful partial re-compute, then the mesh is cleaned "
-"before Compute()"
-msgstr ""
-
-# 639212e7b82a4ea4974c145288eb20f7
-#: smeshBuilder.Mesh.ConvertFromQuadratic:1
-msgid ""
-"Convert the mesh from quadratic to ordinary, deletes old quadratic "
-"elements, replacing them with ordinary mesh elements with the same id."
-msgstr ""
-
-# 6356163ae0b444c4899d91dde3590811
-#: smeshBuilder.Mesh.ConvertFromQuadratic:5
-msgid "a group or a sub-mesh to convert;"
-msgstr ""
-
-# 9343f4e468834c27948b431b1bbf9f65
-#: smeshBuilder.Mesh.ConvertFromQuadratic:7
-msgid "in this case the mesh can become not conformal"
-msgstr ""
-
-# 8a0643b208294ea093f1bf00dfac82a3
-#: smeshBuilder.Mesh.ConvertToQuadratic:2
-msgid ""
-"Convert the mesh to quadratic or bi-quadratic, deletes old elements, "
-"replacing"
-msgstr ""
-
-# 1266098d1ddb431bbe98d81729523637
-#: smeshBuilder.Mesh.ConvertToQuadratic:2
-msgid "them with quadratic with the same id."
-msgstr ""
-
-# f91480b1b96e45b68054e7ba6eaab85a
-#: smeshBuilder.Mesh.ConvertToQuadratic:4
-msgid ""
-"new node creation method: 0 - the medium node lies at the geometrical "
-"entity from which the mesh element is built 1 - the medium node lies at "
-"the middle of the line segments connecting two nodes of a mesh element"
-msgstr ""
-
-# 60da272828e2459da819b5a92387d16b
-#: smeshBuilder.Mesh.ConvertToQuadratic:7
-msgid ""
-"a group or a sub-mesh to convert; WARNING: in this case the mesh can "
-"become not conformal"
-msgstr ""
-
-# 2523e755b6924455a14dc793e7b8a0f2
-#: smeshBuilder.Mesh.ConvertToQuadratic:8
-msgid "If True, converts the mesh to bi-quadratic"
-msgstr ""
-
-# 5b4f5ff6007844a7a82ba357e14f033b
-#: smeshBuilder.Mesh.ConvertToQuadratic:10
-msgid "SMESH.ComputeError which can hold a warning"
-msgstr ""
-
-# da979298e8cd4b2f8a65c04388250143
-#: smeshBuilder.Mesh.ConvertToStandalone:1
-msgid "Convert group on geom into standalone group"
-msgstr ""
-
-# d4f04129796648f78d2790c31c3eaa69
-#: smeshBuilder.Mesh.CreateDimGroup:1
-msgid "Create a standalone group of entities basing on nodes of other groups."
-msgstr ""
-
-# 144de1ecf04545f898e18b2d29454486
-#: smeshBuilder.Mesh.CreateDimGroup:3
-msgid "list of reference groups, sub-meshes or filters, of any type."
-msgstr ""
-
-# 9b13adffcc684c80ae8584212b0d33b9
-#: smeshBuilder.Mesh.CreateDimGroup:4
-msgid ""
-"a type of elements to include to the new group; either of (SMESH.NODE, "
-"SMESH.EDGE, SMESH.FACE, SMESH.VOLUME)."
-msgstr ""
-
-# f597206b09c64cf3ab3bad4706e6242a
-#: smeshBuilder.Mesh.CreateDimGroup:6
-msgid "a name of the new group."
-msgstr ""
-
-# bf2b551a066446aeb28e677cefae27d1
-#: smeshBuilder.Mesh.CreateDimGroup:7
-msgid ""
-"a criterion of inclusion of an element to the new group basing on number "
-"of element nodes common with reference *groups*. Meaning of possible "
-"values are:          - SMESH.ALL_NODES - include if all nodes are common,"
-"         - SMESH.MAIN - include if all corner nodes are common "
-"(meaningful for a quadratic mesh),         - SMESH.AT_LEAST_ONE - include"
-" if one or more node is common,         - SMEHS.MAJORITY - include if "
-"half of nodes or more are common."
-msgstr ""
-
-# 160037f6ec2c4beb93482b4874860e56
-#: smeshBuilder.Mesh.CreateDimGroup:7
-msgid ""
-"a criterion of inclusion of an element to the new group basing on number "
-"of element nodes common with reference *groups*. Meaning of possible "
-"values are:"
-msgstr ""
-
-# f2d61b5aa0254a579de3098d213f93e8
-#: smeshBuilder.Mesh.CreateDimGroup:11
-msgid "SMESH.ALL_NODES - include if all nodes are common,"
-msgstr ""
-
-# 7656f2f899da49d4aac9e5f9b487a642
-#: smeshBuilder.Mesh.CreateDimGroup:12
-msgid ""
-"SMESH.MAIN - include if all corner nodes are common (meaningful for a "
-"quadratic mesh),"
-msgstr ""
-
-# 419c54fccd834e8ea7e060ea296cb9c5
-#: smeshBuilder.Mesh.CreateDimGroup:13
-msgid "SMESH.AT_LEAST_ONE - include if one or more node is common,"
-msgstr ""
-
-# ec67a22f44d54ebb8938845517125249
-#: smeshBuilder.Mesh.CreateDimGroup:14
-msgid "SMEHS.MAJORITY - include if half of nodes or more are common."
-msgstr ""
-
-# ff069aa6a01d4822a522a850b132c046
-#: smeshBuilder.Mesh.CreateDimGroup:15
-msgid ""
-"if *True* (default), an element is included to the new group provided "
-"that it is based on nodes of an element of *groups*; in this case the "
-"reference *groups* are supposed to be of higher dimension than "
-"*elemType*, which can be useful for example to get all faces lying on "
-"volumes of the reference *groups*."
-msgstr ""
-
-# 00931333da47448a8ad7a048843c7ef3
-# 9a39086a4ebc46a4902f20b2faa06528
-# 4b84520336ae4c8bb85bb502f81466dc
-# 9d6acb565eff420193f1c51fafe0eb00
-# 66803841112b4774b9348c1eb9bb785f
-# b6127fbe4b27486887f9dac52b32e0ea
-#: smeshBuilder.Mesh.CreateDimGroup:21 smeshBuilder.Mesh.CutGroups:5
-#: smeshBuilder.Mesh.CutListOfGroups:5 smeshBuilder.Mesh.IntersectGroups:5
-#: smeshBuilder.Mesh.IntersectListOfGroups:5
-#: smeshBuilder.Mesh.UnionListOfGroups:6
-msgid "an instance of SMESH_Group"
-msgstr ""
-
-# 6ac41cebc6194553a64e046f4f91fae1
-#: smeshBuilder.Mesh.CreateEmptyGroup:1
-msgid "Create an empty mesh group"
-msgstr ""
-
-# 6a617353eb5d4905b43a00659c0f36f0
-#: smeshBuilder.Mesh.CreateEmptyGroup:3
-msgid ""
-"the type of elements in the group; either of (SMESH.NODE, SMESH.EDGE, "
-"SMESH.FACE, SMESH.VOLUME)"
-msgstr ""
-
-# f9b29b2ce899431c8d37c81d7ff6f5db
-# afc694cbebae4d16bda1b8ed5f0af04f
-# 6685b1ee1cfe4ff68f0e2067413509d9
-# b6508bf014c04b0d843782cc27da1d33
-# 96065c4c2c4d4d4b85cb322927f152fa
-# 4480735602644f88a2b4579474c38946
-# 3f964e2ed4654075a157483af78fa2b0
-# 340cbc73380b49289bac4786915eb2f2
-# 5e083f891e3e45469891eba52670ef4b
-#: smeshBuilder.Mesh.CreateEmptyGroup:5 smeshBuilder.Mesh.Group:9
-#: smeshBuilder.Mesh.GroupOnFilter:7 smeshBuilder.Mesh.GroupOnGeom:6
-#: smeshBuilder.Mesh.MakeGroup:3 smeshBuilder.Mesh.MakeGroupByCriteria:3
-#: smeshBuilder.Mesh.MakeGroupByCriterion:3
-#: smeshBuilder.Mesh.MakeGroupByFilter:3 smeshBuilder.Mesh.MakeGroupByIds:3
-msgid "the name of the mesh group"
-msgstr ""
-
-# 278619c06dd34c5dbc8b2b8217886875
-# 2b6ed0ea3bab43f2b31f6f723ab98466
-#: smeshBuilder.Mesh.CreateEmptyGroup:7 smeshBuilder.Mesh.MakeGroupByIds:8
-msgid "SMESH_Group"
-msgstr ""
-
-# 559a2c9dd5f2420c897d007cafc7d58c
-#: smeshBuilder.Mesh.CreateFlatElementsOnFacesGroups:1
-msgid ""
-"Double nodes on some external faces and create flat elements. Flat "
-"elements are mainly used by some types of mechanic calculations."
-msgstr ""
-
-# 9f76557a0e5e4d2d998fc917c94c28ae
-#: smeshBuilder.Mesh.CreateFlatElementsOnFacesGroups:4
-msgid ""
-"Each group of the list must be constituted of faces. Triangles are "
-"transformed in prisms, and quadrangles in hexahedrons."
-msgstr ""
-
-# acd039e48ef5492b988af1c831ee86a0
-# e2ed2814c91c458b96f91741ecc3ed1b
-# 3e80a436104f454fba282642777c7d04
-# efdb004e5c5144c2953061024bafbd43
-# 5e145a5cf8454db2b58cc48814cd8932
-# 82746e360dce4c11a0517e80c26751b8
-# 039afa4632bb440db5e1bcf4192eef50
-# 293864ca2acc44b2a24c35b6c2276de8
-# d6643ae8b86b4d11bc504b9cac2bdfdd
-#: smeshBuilder.Mesh.CreateFlatElementsOnFacesGroups:9
-#: smeshBuilder.Mesh.DoubleNode:7 smeshBuilder.Mesh.DoubleNodeElem:9
-#: smeshBuilder.Mesh.DoubleNodeElemGroupsInRegion:10
-#: smeshBuilder.Mesh.DoubleNodeElemInRegion:10
-#: smeshBuilder.Mesh.DoubleNodeGroups:8 smeshBuilder.Mesh.DoubleNodes:8
-#: smeshBuilder.Mesh.DoubleNodesOnGroupBoundaries:12
-#: smeshBuilder.Mesh.Make2DMeshFrom3D:3
-msgid "TRUE if operation has been completed successfully, FALSE otherwise"
-msgstr ""
-
-# 6f8a1db7c6b544ad8c8727f54f1f124c
-#: smeshBuilder.Mesh.CreateHoleSkin:1
-msgid ""
-"identify all the elements around a geom shape, get the faces delimiting "
-"the hole"
-msgstr ""
-
-# 71ccdb1234cb4632bb023f04da9a3f4f
-#: smeshBuilder.Mesh.CutGroups:1
-msgid ""
-"Produce a cut of two groups. A new group is created. All mesh elements "
-"that are present in the main group but are not present in the tool group "
-"are added to the new one"
-msgstr ""
-
-# 51d77236e4704e1d93d61424836e4309
-#: smeshBuilder.Mesh.CutListOfGroups:1
-msgid ""
-"Produce a cut of groups. A new group is created. All mesh elements that "
-"are present in main groups but do not present in tool groups are added to"
-" the new one"
-msgstr ""
-
-# 18ce85c5064942998890dab69759bda8
-#: smeshBuilder.Mesh.DeleteDiag:1
-msgid ""
-"Replace two neighbour triangles sharing Node1-Node2 link with a "
-"quadrangle built on the same 4 nodes."
-msgstr ""
-
-# be458a25caf64762b486c43a063a9611
-# 46a58970af514f92954af0e8c79b5ec6
-#: smeshBuilder.Mesh.DeleteDiag:4 smeshBuilder.Mesh.InverseDiag:4
-msgid "the ID of the first node"
-msgstr ""
-
-# 8d6e087e79d740ec8d11c4b1494fc35c
-# 51c6ebbea19b412897508a588b468a8b
-#: smeshBuilder.Mesh.DeleteDiag:5 smeshBuilder.Mesh.InverseDiag:5
-msgid "the ID of the second node"
-msgstr ""
-
-# ccfb692252ad4211a4812aab0e331cb8
-# eb8dc4009d4946da92ec5160c05209eb
-#: smeshBuilder.Mesh.DeleteDiag:7 smeshBuilder.Mesh.InverseDiag:7
-msgid "false if proper faces were not found"
-msgstr ""
-
-# e46fee500fbd48c8bb8c55ac98bc1c4e
-#: smeshBuilder.Mesh.DoubleElements:2
-msgid "Create duplicates of given elements, i.e. create new elements based on the"
-msgstr ""
-
-# cc1e48add13c4c139fdae0c1254fa690
-#: smeshBuilder.Mesh.DoubleElements:2
-msgid "same nodes as the given ones."
-msgstr ""
-
-# 502e72c8b5d9421e810c478891cb7869
-#: smeshBuilder.Mesh.DoubleElements:4
-msgid ""
-"container of elements to duplicate. It can be a Mesh, sub-mesh, group, "
-"filter or a list of element IDs. If *theElements* is a Mesh, elements of "
-"highest dimension are duplicated"
-msgstr ""
-
-# 291aa5a8404c4b54ae7c32f646ee53c9
-#: smeshBuilder.Mesh.DoubleElements:7
-msgid ""
-"a name of group to contain the generated elements. If a group with such a"
-" name already exists, the new elements are added to the existng group, "
-"else a new group is created. If *theGroupName* is empty, new elements are"
-" not added in any group."
-msgstr ""
-
-# 618dd7e8c3a744048dd361c7f39f54b4
-#: smeshBuilder.Mesh.DoubleElements:13
-msgid "a group where the new elements are added. None if theGroupName == \"\"."
-msgstr ""
-
-# e56c1b45539c4a34831f86301e94adac
-# eef733654e854eb2ad5014485032afb3
-# 5f3800ca14ab44b79f47c94f6d85ea5f
-# 2985d17463c74477b843914c9daec26b
-# 812b119999204bb9b8aa746d4b1eb4c5
-# 19153c0526574628ab29a70716dd59f9
-# 11d4a9e79b79470083af0f147c0e9483
-#: smeshBuilder.Mesh.DoubleNode:1 smeshBuilder.Mesh.DoubleNodeElemGroup:1
-#: smeshBuilder.Mesh.DoubleNodeElemGroupInRegion:1
-#: smeshBuilder.Mesh.DoubleNodeElemGroups:1
-#: smeshBuilder.Mesh.DoubleNodeElemGroupsInRegion:1
-#: smeshBuilder.Mesh.DoubleNodeGroup:1 smeshBuilder.Mesh.DoubleNodeGroups:1
-msgid ""
-"Create a hole in a mesh by doubling the nodes of some particular elements"
-" This method provided for convenience works as DoubleNodes() described "
-"above."
-msgstr ""
-
-# 259af3a19fd347bf9f8b02035d51dad7
-#: smeshBuilder.Mesh.DoubleNode:4
-msgid "identifiers of node to be doubled"
-msgstr ""
-
-# a4b19d27254e45818a8c1a56ff66a038
-#: smeshBuilder.Mesh.DoubleNode:5
-msgid "identifiers of elements to be updated"
-msgstr ""
-
-# 32ad9a5f0b10469ca7e20335dd182432
-# a1f48415baae43c8a393801c1d4d1240
-# 55544c8546e94bf882d1a75538fd5e90
-#: smeshBuilder.Mesh.DoubleNodeElem:1
-#: smeshBuilder.Mesh.DoubleNodeElemInRegion:1 smeshBuilder.Mesh.DoubleNodes:1
-msgid "Create a hole in a mesh by doubling the nodes of some particular elements"
-msgstr ""
-
-# be335eea39f742ea80e3ab48f93f40f5
-# b2e19fd27a6b4a32bb58fef4c37910b3
-#: smeshBuilder.Mesh.DoubleNodeElem:3
-#: smeshBuilder.Mesh.DoubleNodeElemInRegion:3
-msgid ""
-"the list of elements (edges or faces) to be replicated The nodes for "
-"duplication could be found from these elements"
-msgstr ""
-
-# fce62c58353045b492cb22cdaf2db99b
-# e5db53edbf064cc0825163f4b463e041
-#: smeshBuilder.Mesh.DoubleNodeElem:5
-#: smeshBuilder.Mesh.DoubleNodeElemInRegion:5
-msgid "list of nodes to NOT replicate"
-msgstr ""
-
-# 41bfa10f113044e3aa5032f2cf78dc4e
-#: smeshBuilder.Mesh.DoubleNodeElem:6
-msgid ""
-"the list of elements (cells and edges) to which the replicated nodes "
-"should be associated to."
-msgstr ""
-
-# bf81aed18e674b61802e66d001d02d13
-# 0207a45ad3fe433b8902ae9a3198d10f
-#: smeshBuilder.Mesh.DoubleNodeElemGroup:4
-#: smeshBuilder.Mesh.DoubleNodeElemGroupInRegion:4
-msgid "group of of elements (edges or faces) to be replicated"
-msgstr ""
-
-# adef8bad906d4f13b1cfc6c92e460f07
-# c6316cf12ad74a5f9f72f9cba6af1391
-#: smeshBuilder.Mesh.DoubleNodeElemGroup:5
-#: smeshBuilder.Mesh.DoubleNodeElemGroupInRegion:5
-msgid "group of nodes not to replicated"
-msgstr ""
-
-# 4444addea632450693dfdbe76603848e
-# 88888b76c4024ac8803170c0813ebb36
-#: smeshBuilder.Mesh.DoubleNodeElemGroup:6
-#: smeshBuilder.Mesh.DoubleNodeElemGroups:6
-msgid "group of elements to which the replicated nodes should be associated to."
-msgstr ""
-
-# f716c47d5a2a4306b5f0fb023a9607c0
-# d1696e68ca88437f89d5d97cdfd98b5a
-#: smeshBuilder.Mesh.DoubleNodeElemGroup:8
-#: smeshBuilder.Mesh.DoubleNodeElemGroups:8
-msgid "forces the generation of a group containing new elements."
-msgstr ""
-
-# 2df4449e419440d99db078600fa68f95
-# 980b56a1fe9d4d39a4cea5aefc15eae6
-# 9f11003a43794083a09e13f1063ea8bd
-# 0d6de5c414484b008845830423d408be
-#: smeshBuilder.Mesh.DoubleNodeElemGroup:9
-#: smeshBuilder.Mesh.DoubleNodeElemGroups:9 smeshBuilder.Mesh.DoubleNodeGroup:6
-#: smeshBuilder.Mesh.DoubleNodeGroups:6
-msgid "forces the generation of a group containing new nodes."
-msgstr ""
-
-# 31110dca9a664187942bd9abad329e82
-# 9552785dd86c4586a423a69b3702f979
-#: smeshBuilder.Mesh.DoubleNodeElemGroup:11
-#: smeshBuilder.Mesh.DoubleNodeElemGroups:11
-msgid ""
-"TRUE or created groups (one or two) if operation has been completed "
-"successfully,     FALSE or None otherwise"
-msgstr ""
-
-# 6fbdd03967ae452ab66b9e71f9f0f7db
-# f9d5b26e697b48dda9589b574510684e
-#: smeshBuilder.Mesh.DoubleNodeElemGroup:13
-#: smeshBuilder.Mesh.DoubleNodeElemGroups:13
-msgid ""
-"TRUE or created groups (one or two) if operation has been completed "
-"successfully,"
-msgstr ""
-
-# 6b20fd99375349ce918bc6eaf1179886
-# 9be16c633c2a464e8e3ae404c0c3b1fb
-# 584895001cdc4cd19d20674d8743914b
-#: smeshBuilder.Mesh.DoubleNodeElemGroup:14
-#: smeshBuilder.Mesh.DoubleNodeElemGroups:14
-#: smeshBuilder.Mesh.DoubleNodeGroup:11
-msgid "FALSE or None otherwise"
-msgstr ""
-
-# 1d611d1625784aa69c6452d3f6597960
-# 49bbb073f1e748cb8ba0c3fa704ae8ae
-#: smeshBuilder.Mesh.DoubleNodeElemGroups:4
-#: smeshBuilder.Mesh.DoubleNodeElemGroupsInRegion:4
-msgid "list of groups of elements (edges or faces) to be replicated"
-msgstr ""
-
-# a4a9e63099394548ae2ab96dff284fa3
-#: smeshBuilder.Mesh.DoubleNodeGroup:4
-msgid "group of nodes to be doubled"
-msgstr ""
-
-# 5156192efdd441f8af2015bbf0cfd837
-#: smeshBuilder.Mesh.DoubleNodeGroup:5
-msgid "group of elements to be updated."
-msgstr ""
-
-# 513c59723fc8436d881eaad8855b1005
-#: smeshBuilder.Mesh.DoubleNodeGroup:8
-msgid ""
-"TRUE or a created group if operation has been completed successfully,"
-"     FALSE or None otherwise"
-msgstr ""
-
-# c5f15412e81a4094a187dc0ff94a805d
-#: smeshBuilder.Mesh.DoubleNodeGroup:10
-msgid "TRUE or a created group if operation has been completed successfully,"
-msgstr ""
-
-# 081ef4f15ceb48b59a956ebb491b58de
-#: smeshBuilder.Mesh.DoubleNodeGroups:4
-msgid "list of groups of nodes to be doubled"
-msgstr ""
-
-# 904373e03d75434292d28d381f46ec5b
-#: smeshBuilder.Mesh.DoubleNodeGroups:5
-msgid "list of groups of elements to be updated."
-msgstr ""
-
-# 736ebd7d03ae468c8194d99cdbcdb402
-#: smeshBuilder.Mesh.DoubleNodes:3
-msgid "identifiers of nodes to be doubled"
-msgstr ""
-
-# 191c612e539f45ddaaf695bd7fac77b8
-#: smeshBuilder.Mesh.DoubleNodes:4
-msgid ""
-"identifiers of elements to be updated by the new (doubled) nodes. If list"
-" of element identifiers is empty then nodes are doubled but they not "
-"assigned to elements"
-msgstr ""
-
-# 8f339342bfa14ff1a7beff3f2500a72d
-#: smeshBuilder.Mesh.DoubleNodesOnGroupBoundaries:1
-msgid ""
-"Double nodes on shared faces between groups of volumes and create flat "
-"elements on demand. The list of groups must describe a partition of the "
-"mesh volumes. The nodes of the internal faces at the boundaries of the "
-"groups are doubled. In option, the internal faces are replaced by flat "
-"elements. Triangles are transformed in prisms, and quadrangles in "
-"hexahedrons."
-msgstr ""
-
-# 76ba67f4c60d47618774228879e5fab1
-#: smeshBuilder.Mesh.DoubleNodesOnGroupBoundaries:7
-msgid "list of groups of volumes"
-msgstr ""
-
-# e82b9f2e1cb64b089d3e724218d37b08
-#: smeshBuilder.Mesh.DoubleNodesOnGroupBoundaries:8
-msgid "if TRUE, create the elements"
-msgstr ""
-
-# bc6d7ed43de6437b82fe8ace719f2243
-#: smeshBuilder.Mesh.DoubleNodesOnGroupBoundaries:9
-msgid ""
-"if TRUE, the nodes and elements are also created on the boundary between "
-"*theDomains* and the rest mesh"
-msgstr ""
-
-# a47554f878c6475ab638bcaf14eade3c
-#: smeshBuilder.Mesh.Dump:1
-msgid "Get the mesh description"
-msgstr ""
-
-# 7438e31768d44e7eb0c67b0e86b804bf
-#: smeshBuilder.Mesh.Dump:3
-msgid "string value"
-msgstr ""
-
-# 981c8719728745e5ba18fa3bd74e4d5e
-#: smeshBuilder.Mesh.ElemNbEdges:1
-msgid "Return the number of edges for the given element"
-msgstr ""
-
-# adc711c55c3e4ced978ddee57826cab2
-#: smeshBuilder.Mesh.ElemNbFaces:1
-msgid "Return the number of faces for the given element"
-msgstr ""
-
-# ade0fa9e5c494b39984f55521d35e024
-#: smeshBuilder.Mesh.Evaluate:1
-msgid "Evaluate size of prospective mesh on a shape"
-msgstr ""
-
-# af2257f13a5a484eaec80e404177ae2a
-#: smeshBuilder.Mesh.Evaluate:3
-msgid ""
-"a list where i-th element is a number of elements of i-th "
-"SMESH.EntityType To know predicted number of e.g. edges, inquire it this "
-"way Evaluate()[ EnumToLong( Entity_Edge )]"
-msgstr ""
-
-# ca65c1d873fa419e9f29045188d65355
-#: smeshBuilder.Mesh.ExportCGNS:1
-msgid "Export the mesh in a file in CGNS format"
-msgstr ""
-
-# 4d8730c310014fed95afde1cf16521b5
-# f56f24461f09484f9ae26192bb74dc1b
-# 16cd1ef1f37d4ac7bfb29e0ba1c76644
-# eaabc73aed1440d0b0aaebea0e38bf09
-#: smeshBuilder.Mesh.ExportCGNS:3 smeshBuilder.Mesh.ExportGMF:5
-#: smeshBuilder.Mesh.ExportMED:4 smeshBuilder.Mesh.ExportSAUV:4
-msgid "is the file name"
-msgstr ""
-
-# 0f8575dda55f4807813f5ca70414d422
-# 1b591563a70a41229ffc5e30039dfe57
-# 56a276aac58c4b40abf3c7a0a89cdef6
-#: smeshBuilder.Mesh.ExportCGNS:4 smeshBuilder.Mesh.ExportMED:11
-#: smeshBuilder.Mesh.ExportToMED:11
-msgid "boolean parameter for overwriting/not overwriting the file"
-msgstr ""
-
-# 920c4ef672054e848f0b3b31337093a4
-# d574c15e91a34c858eb6f73b279a38c8
-# 57fe3da10f0940e092be8f03d1b30490
-# 6a116fbdcda3410c9da9af7946679bff
-# f284f32cd9454c598eebfe46554127b4
-# 45870649c3614edd90eec1888b581bf7
-#: smeshBuilder.Mesh.ExportCGNS:5 smeshBuilder.Mesh.ExportDAT:4
-#: smeshBuilder.Mesh.ExportGMF:6 smeshBuilder.Mesh.ExportMED:12
-#: smeshBuilder.Mesh.ExportSTL:5 smeshBuilder.Mesh.ExportUNV:4
-msgid "a part of mesh (group, sub-mesh) to export instead of the mesh"
-msgstr ""
-
-# 81933cbf88a2426e89b6e2bd62be0f55
-#: smeshBuilder.Mesh.ExportCGNS:6
-msgid ""
-"if true all elements of same entity type are exported at ones, else "
-"elements are exported in order of their IDs which can cause creation of "
-"multiple cgns sections"
-msgstr ""
-
-# f81b920c3c38470f97cdc721ad04dd3a
-#: smeshBuilder.Mesh.ExportDAT:1
-msgid "Export the mesh in a file in DAT format"
-msgstr ""
-
-# 91b896bb5f8f4125abbd5c09539db9d0
-# df7d096aea81460185789e29acf21d4f
-# 62142d4bfbfd4e4094ed9b7ee2b0823f
-# ca8da077fc864b249b13b9718704c17c
-#: smeshBuilder.Mesh.ExportDAT:3 smeshBuilder.Mesh.ExportSTL:3
-#: smeshBuilder.Mesh.ExportToMED:5 smeshBuilder.Mesh.ExportUNV:3
-msgid "the file name"
-msgstr ""
-
-# 4215d946f6a84dd98c32799115d981b6
-#: smeshBuilder.Mesh.ExportGMF:1
-msgid ""
-"Export the mesh in a file in GMF format. GMF files must have .mesh "
-"extension for the ASCII format and .meshb for the bynary format. Other "
-"extensions are not allowed."
-msgstr ""
-
-# a59bf671306b4518aeaee39a16ddebb2
-#: smeshBuilder.Mesh.ExportMED:2
-msgid "Export the mesh in a file in MED format"
-msgstr ""
-
-# b423d2791a2f4f2694e3303f1c6b2495
-#: smeshBuilder.Mesh.ExportMED:2
-msgid ""
-"allowing to overwrite the file if it exists or add the exported data to "
-"its contents"
-msgstr ""
-
-# 0ebd88ad2dca48b68c682da54bf193f2
-#: smeshBuilder.Mesh.ExportMED:5
-msgid ""
-"boolean parameter for creating/not creating the groups "
-"Group_On_All_Nodes, Group_On_All_Faces, ... ; the typical use is "
-"auto_groups=False."
-msgstr ""
-
-# d2aa73692400496db744fd2b2d06c4d0
-# 7d550ce3f6c44e45bf1a1fc4242d545d
-#: smeshBuilder.Mesh.ExportMED:8 smeshBuilder.Mesh.ExportToMED:6
-msgid ""
-"MED format version (MED_V2_1 or MED_V2_2, the latter meaning any current "
-"version). The parameter is obsolete since MED_V2_1 is no longer "
-"supported."
-msgstr ""
-
-# 643a70d8af6e4d70b494eb5111940b4e
-#: smeshBuilder.Mesh.ExportMED:13
-msgid ""
-"if *True* (default), a space dimension of a MED mesh can be either  - 1D "
-"if all mesh nodes lie on OX coordinate axis, or - 2D if all mesh nodes "
-"lie on XOY coordinate plane, or - 3D in the rest cases.  If "
-"*autoDimension* is *False*, the space dimension is always 3."
-msgstr ""
-
-# 188fa80ce83d45da90f060958a0b88de
-# 5e86f9b88b524fdea8d335236ed2734b
-#: smeshBuilder.Mesh.ExportMED:13 smeshBuilder.Mesh.ExportToMED:12
-msgid "if *True* (default), a space dimension of a MED mesh can be either"
-msgstr ""
-
-# 4835a670e5f3403c8e8221d89641f4f0
-# 893afb16da9747f8bfae83a2003be1d3
-#: smeshBuilder.Mesh.ExportMED:15 smeshBuilder.Mesh.ExportToMED:14
-msgid "1D if all mesh nodes lie on OX coordinate axis, or"
-msgstr ""
-
-# 35b39341c5164536913fb74a914bf2f3
-# a76ff4051c15455d8d42b5c22febaa53
-#: smeshBuilder.Mesh.ExportMED:16 smeshBuilder.Mesh.ExportToMED:15
-msgid "2D if all mesh nodes lie on XOY coordinate plane, or"
-msgstr ""
-
-# ff1f5dd902d3495082109b1226cf2d33
-# a4a5506f37b14a4884040e679458154a
-#: smeshBuilder.Mesh.ExportMED:17 smeshBuilder.Mesh.ExportToMED:16
-msgid "3D in the rest cases."
-msgstr ""
-
-# b0cfd66cd8be4f65ac79251d8d75c16e
-#: smeshBuilder.Mesh.ExportMED:19
-msgid "If *autoDimension* is *False*, the space dimension is always 3."
-msgstr ""
-
-# dca75586baf544b89856ac34c5696e17
-#: smeshBuilder.Mesh.ExportMED:20
-msgid "list of GEOM fields defined on the shape to mesh."
-msgstr ""
-
-# e2e247a955424178b0f7f69b548091ce
-#: smeshBuilder.Mesh.ExportMED:21
-msgid ""
-"each character of this string means a need to export a corresponding "
-"field; correspondence between fields and characters is following:"
-"          - 'v' stands for \"_vertices _\" field;         - 'e' stands "
-"for \"_edges _\" field;         - 'f' stands for \"_faces _\" field;"
-"         - 's' stands for \"_solids _\" field."
-msgstr ""
-
-# 95f9b27f74fc458296695e9f6d3d7572
-#: smeshBuilder.Mesh.ExportMED:21
-msgid ""
-"each character of this string means a need to export a corresponding "
-"field; correspondence between fields and characters is following:"
-msgstr ""
-
-# bfcb3515f514406fb5a0b20b059083ff
-#: smeshBuilder.Mesh.ExportMED:24
-msgid "'v' stands for \"_vertices _\" field;"
-msgstr ""
-
-# cb193265fa234df590c538de074694bf
-#: smeshBuilder.Mesh.ExportMED:25
-msgid "'e' stands for \"_edges _\" field;"
-msgstr ""
-
-# 1a71b5ea0a6240649e7e801ba8e3594d
-#: smeshBuilder.Mesh.ExportMED:26
-msgid "'f' stands for \"_faces _\" field;"
-msgstr ""
-
-# 235d9c1731c243339a48ee6bbe8707a6
-#: smeshBuilder.Mesh.ExportMED:27
-msgid "'s' stands for \"_solids _\" field."
-msgstr ""
-
-# 4781cafb801a49408ec375e201526617
-#: smeshBuilder.Mesh.ExportSAUV:1
-msgid "Export the mesh in a file in SAUV format"
-msgstr ""
-
-# 05f769d7467e479199475bcffcb9b32a
-#: smeshBuilder.Mesh.ExportSAUV:5
-msgid ""
-"boolean parameter for creating/not creating the groups "
-"Group_On_All_Nodes, Group_On_All_Faces, ... ; the typical use is "
-"auto_groups=false."
-msgstr ""
-
-# e5f4a3c8b68947699e83368accae3169
-#: smeshBuilder.Mesh.ExportSTL:1
-msgid "Export the mesh in a file in STL format"
-msgstr ""
-
-# 4598e0cad2a2490e8f258041d3e5df47
-#: smeshBuilder.Mesh.ExportSTL:4
-msgid "defines the file encoding"
-msgstr ""
-
-# ddcb96f002a443dca1a2dd9e1db10825
-#: smeshBuilder.Mesh.ExportToMED:1
-msgid ""
-"Deprecated, used only for compatibility! Please, use ExportMED() method "
-"instead. Export the mesh in a file in MED format allowing to overwrite "
-"the file if it exists or add the exported data to its contents"
-msgstr ""
-
-# 0f5e467ce7644b728b00a9daafe884f9
-#: smeshBuilder.Mesh.ExportToMED:9
-msgid ""
-"boolean parameter for creating/not creating the groups "
-"Group_On_All_Nodes, Group_On_All_Faces, ..."
-msgstr ""
-
-# 8c6a9e9e643e43ec9c97af15159997f6
-#: smeshBuilder.Mesh.ExportToMED:12
-msgid ""
-"if *True* (default), a space dimension of a MED mesh can be either  - 1D "
-"if all mesh nodes lie on OX coordinate axis, or - 2D if all mesh nodes "
-"lie on XOY coordinate plane, or - 3D in the rest cases.  If "
-"**autoDimension** isc **False**, the space dimension is always 3."
-msgstr ""
-
-# 2988ab28dbc7448a886b66c61cd510d0
-#: smeshBuilder.Mesh.ExportToMED:18
-msgid "If **autoDimension** isc **False**, the space dimension is always 3."
-msgstr ""
-
-# b21cd34f34bf4cd8ab19d657b90f7c84
-#: smeshBuilder.Mesh.ExportUNV:1
-msgid "Export the mesh in a file in UNV format"
-msgstr ""
-
-# 093d969d266f4c669d0f853d5d22f32c
-# 69276d9cc94a482389196453d99cdc56
-#: smeshBuilder.Mesh.ExtrusionAlongPath:1
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:1
-msgid ""
-"Generate new elements by extrusion of the given elements The path of "
-"extrusion must be a meshed edge."
-msgstr ""
-
-# f6db2756c524477f846505296518f8ec
-#: smeshBuilder.Mesh.ExtrusionAlongPath:4
-msgid "ids of elements"
-msgstr ""
-
-# 64e67e10136041e98baedb6952172557
-#: smeshBuilder.Mesh.ExtrusionAlongPath:5
-msgid ""
-"mesh containing a 1D sub-mesh on the edge, along which proceeds the "
-"extrusion"
-msgstr ""
-
-# 156701d78a944f129f5c6a1ba379b79e
-# 9cde29796df24b65833f64144b03a9cf
-# 41abdd3ad90b4ef2ad7b9b79e299010f
-# c9db6c3356c3488b82edbcd4d8c89f7d
-#: smeshBuilder.Mesh.ExtrusionAlongPath:6
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:7
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:7
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:7
-msgid "shape(edge) defines the sub-mesh for the path"
-msgstr ""
-
-# 333e2e688ede4c3cb968aa2f4360d6a9
-# 7a2a4d98fb7e471aa45bdd62738cc7e7
-# 82bbac405e774d159c0c41c096654750
-# 31ebc23a88fc44d8a6efbb11fe655579
-#: smeshBuilder.Mesh.ExtrusionAlongPath:7
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:8
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:8
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:8
-msgid "the first or the last node on the edge. Defines the direction of extrusion"
-msgstr ""
-
-# 39611e7acfd145bda26a03a35014728c
-# 1d18d20fbabf4b89850507afa68ac647
-# 2952fc27cf6f47ed96cbaf1b6fabc3f4
-# 34215bf00645451e8a324ee07d58e90d
-# 93a79b3572ff4d87b0693286947fcc26
-# 3b1f1c0f508d4a70bb1aa1f88c9a327f
-#: smeshBuilder.Mesh.ExtrusionAlongPath:8
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:9
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:9
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:9
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:11
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:7
-msgid ""
-"allows the shape to be rotated around the path to get the resulting mesh "
-"in a helical fashion"
-msgstr ""
-
-# c5d2f4a73ff04cb586d1ddc79ff022b7
-# b7a55c6978ac4c98b4f28b83d030c96e
-#: smeshBuilder.Mesh.ExtrusionAlongPath:10
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:9
-msgid "list of angles in radians"
-msgstr ""
-
-# 3dc31460c71b4b6fbf4fa0b10a55be83
-# e887644b7c0e431b885e56a379ec6025
-# 2f4fca0c56eb421888edc48360791331
-# 5a2cf1f52ec74585a6f18978ba9404f4
-# 617ae0c3319f4a4ba09e3d3afccd3e66
-# 9c5cc8542f6641f786d8cd7e23ea6b14
-#: smeshBuilder.Mesh.ExtrusionAlongPath:11
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:12
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:12
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:12
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:16
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:12
-msgid "allows using the reference point"
-msgstr ""
-
-# aa148f9e0d574512bed28e24c156bf52
-# d98243bd32894e89bde8740826ab7eae
-# b1861a760e3740d1a4fbd75fa7e6d3d7
-# e70c349b4edd4c218c4e1018bd33f460
-#: smeshBuilder.Mesh.ExtrusionAlongPath:12
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:13
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:13
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:17
-msgid ""
-"the point around which the shape is rotated (the mass center of the shape"
-" by default). The User can specify any point as the Reference Point."
-msgstr ""
-
-# a30b1231c30743df8a9c2c793ee2c96e
-# 0957d3fdaec84db89adc2acfba5416b8
-# 7f9393200c1f4254b18de8ee0eb04c08
-# a6407dd18c2444168993652c48b45dde
-# f567908113e341b89a2a3217d16ec42a
-# 6e5b87ad1fcf4cf49667fec460732795
-#: smeshBuilder.Mesh.ExtrusionAlongPath:15
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:16
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:16
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:16
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:14
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:10
-msgid ""
-"forces the computation of rotation angles as linear variation of the "
-"given Angles along path steps"
-msgstr ""
-
-# 1206c33bb3c147b09b980cfdf0ed7874
-# 676452b1ce6d4b5cb39c3683476422fd
-# 062607aadc1640a1a23f75692baadfea
-# 2eadaf19d76d47178239c0bf111b8cd9
-# 2fa67055ed4744898ac7f4036aac4dff
-#: smeshBuilder.Mesh.ExtrusionAlongPath:18
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:19
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:19
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:19
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:20
-msgid ""
-"list of created groups (SMESH_GroupBase) and SMESH::Extrusion_Error if "
-"MakeGroups=True,     only SMESH::Extrusion_Error otherwise"
-msgstr ""
-
-# d873c12efc834a39911397599d591fd5
-# cf2dd2cbbb08433b911c653669be8d6b
-# ecb56eec71c7495b9c01c87a2677fcde
-# a8aa911029614961be2eaefa5ab67f0f
-# f9e8aaf31ab1449791e0a377563442ae
-#: smeshBuilder.Mesh.ExtrusionAlongPath:21
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:22
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:22
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:22
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:23
-msgid ""
-"list of created groups (SMESH_GroupBase) and SMESH::Extrusion_Error if "
-"MakeGroups=True,"
-msgstr ""
-
-# b1d41ef62b8c4f41ac8e989d8b6b9494
-# d24d52183b4344d982913f781d682204
-# dfffadcf5592463c8d3fccb9756f60da
-# 32e047bf9b534645b5ca3fe350cc7a72
-# 77f7a6cb85be4727aba96d8fffece278
-#: smeshBuilder.Mesh.ExtrusionAlongPath:21
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:22
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:22
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:22
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:23
-msgid "only SMESH::Extrusion_Error otherwise"
-msgstr ""
-
-# b8d504d1a24e4a9aa198e232dacfc62f
-# 66b2bcd8b32442b7a9770eabe4217daf
-# d778e730ab6d4dfead5477f7a783d35b
-# 1c9054977e6e443ea7efeffed1a2d486
-# 79af131371b543de937609f742cf539a
-# aeec9462ee554cb88bd41064eb0f9a3d
-#: smeshBuilder.Mesh.ExtrusionAlongPath:23
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:24
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:24
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:24
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:23
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:25
-msgid ":ref:`tui_extrusion_along_path` example"
-msgstr ""
-
-# 29c371341da64c8db612e7f601831198
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:1
-msgid ""
-"Generate new elements by extrusion of the elements which belong to the "
-"object The path of extrusion must be a meshed edge."
-msgstr ""
-
-# 3f1310aa94c54723bbee322d7ed7e219
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:4
-msgid ""
-"the object whose elements should be processed. It can be a mesh, a sub-"
-"mesh or a group."
-msgstr ""
-
-# 43b79770ebff4050921eda2cedcac6d7
-# 566ff1c00def4dc5b1ae465cfc7409d9
-# 7414df614424443dbda0bbdaeef817aa
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:6
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:6
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:6
-msgid ""
-"mesh containing a 1D sub-mesh on the edge, along which the extrusion "
-"proceeds"
-msgstr ""
-
-# 3e4f320cccf24ee986d597e8dea61849
-# f85a2bf4ffea423f91ca3ae11f44d2e3
-# 20517d7ed30c4e349b117753e2cfe9bc
-# 571c7edab1414308909052f04815f10a
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject:11
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:11
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:11
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:13
-msgid "list of angles"
-msgstr ""
-
-# 972a69a8474444949abc9a112391b75b
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:1
-msgid ""
-"Generate new elements by extrusion of mesh segments which belong to the "
-"object The path of extrusion must be a meshed edge."
-msgstr ""
-
-# 1caaf785a01d41119bb7447dad4b4eb5
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:4
-msgid ""
-"the object whose 1D elements should be processed. It can be a mesh, a "
-"sub-mesh or a group."
-msgstr ""
-
-# c989666b20d1410dba1ed497eb5a96c1
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject1D:13
-msgid ""
-"around which the shape is rotated (the mass center of the shape by "
-"default). The User can specify any point as the Reference Point."
-msgstr ""
-
-# fa39b18e6cee4523bdf3b2cc5fad3aa1
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:1
-msgid ""
-"Generate new elements by extrusion of faces which belong to the object "
-"The path of extrusion must be a meshed edge."
-msgstr ""
-
-# f83084b5d3e945b99464839307125cef
-#: smeshBuilder.Mesh.ExtrusionAlongPathObject2D:4
-msgid ""
-"the object whose 2D elements should be processed. It can be a mesh, a "
-"sub-mesh or a group."
-msgstr ""
-
-# 2324f7df315c4af8bb15d1ab33191cea
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:1
-msgid ""
-"Generate new elements by extrusion of the given elements and nodes along "
-"the path. The path of extrusion must be a meshed edge."
-msgstr ""
-
-# fe65fed6746642f684dbff5675c40388
-# a7b6a06933d64d5dbebf9a2e9db994cc
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:4
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:3
-msgid "nodes to extrude: a list including ids, groups, sub-meshes or a mesh"
-msgstr ""
-
-# 3a8658db54c14b97b54523f9148a9ed1
-# 99541a8fc29c4599897101cb55f5c970
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:5
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:4
-msgid "edges to extrude: a list including ids, groups, sub-meshes or a mesh"
-msgstr ""
-
-# 4c13442360aa4281aa3b640a41d89aa4
-# 88128559d1614061b2a3c82b5f1325af
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:6
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:5
-msgid "faces to extrude: a list including ids, groups, sub-meshes or a mesh"
-msgstr ""
-
-# 16eec3e1b2274150bd18951ba8f79fc8
-# 1f4dd5d6e94c41f5afce56157eb730aa
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:7
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:5
-msgid "1D mesh or 1D sub-mesh, along which proceeds the extrusion"
-msgstr ""
-
-# 7bfe51391d404d549fda0d18e54601c9
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:8
-msgid ""
-"shape (edge) defines the sub-mesh of PathMesh if PathMesh contains not "
-"only path segments, else it can be None"
-msgstr ""
-
-# b812a402a960422b961730c1d4ea452f
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:10
-msgid "the first or the last node on the path. Defines the direction of extrusion"
-msgstr ""
-
-# 74b34fecbdb544749b26b494f3df639e
-#: smeshBuilder.Mesh.ExtrusionAlongPathObjects:21
-msgid "list of created groups (SMESH_GroupBase) and SMESH::Extrusion_Error"
-msgstr ""
-
-# 87aa29e1d2bd4d1cab62cc6a31d46ccc
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:4
-msgid "mesh or group, or sub-mesh, or list of ids of elements for extrusion"
-msgstr ""
-
-# 324f923bd17a498b9aa75f97bad5de64
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:6
-msgid "the start node from Path. Defines the direction of extrusion"
-msgstr ""
-
-# 6699406d3d8e4ef296b41d603c82db8e
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:13
-msgid ""
-"the point around which the elements are rotated (the mass center of the "
-"elements by default). The User can specify any point as the Reference "
-"Point. RefPoint can be either GEOM Vertex, [x,y,z] or SMESH.PointStruct"
-msgstr ""
-
-# 3fccc986f6d84c16a2e05e2c37abd430
-#: smeshBuilder.Mesh.ExtrusionAlongPathX:18
-msgid "type of elements for extrusion (if param Base is a mesh)"
-msgstr ""
-
-# 409086041d2b48f6ace165b9013b164e
-#: smeshBuilder.Mesh.ExtrusionByNormal:1
-msgid ""
-"Generate new elements by extrusion along the normal to a discretized "
-"surface or wire"
-msgstr ""
-
-# 633d19ebe6eb45018f30ef0596bbe7d1
-#: smeshBuilder.Mesh.ExtrusionByNormal:3
-msgid ""
-"elements to extrude - a list including ids, groups, sub-meshes or a mesh."
-" Only faces can be extruded so far. A sub-mesh should be a sub-mesh on "
-"geom faces."
-msgstr ""
-
-# 5954cfc71b9942219e15327d2498093d
-#: smeshBuilder.Mesh.ExtrusionByNormal:5
-msgid ""
-"length of one extrusion step (the total extrusion length will be "
-"*NbOfSteps* *StepSize*)."
-msgstr ""
-
-# 3bd6b8143cc247e8b0d29569f81c2cd5
-#: smeshBuilder.Mesh.ExtrusionByNormal:7
-msgid "number of extrusion steps."
-msgstr ""
-
-# 0875fc4bcfc24c92aebf1ec02c404cce
-#: smeshBuilder.Mesh.ExtrusionByNormal:8
-msgid ""
-"if True each node is translated by *StepSize* along the average of the "
-"normal vectors to the faces sharing the node; else each node is "
-"translated along the same average normal till intersection with the plane"
-" got by translation of the face sharing the node along its own normal by "
-"*StepSize*."
-msgstr ""
-
-# fa069f90ec5a495ca7409eedf7c45de8
-#: smeshBuilder.Mesh.ExtrusionByNormal:13
-msgid ""
-"to use only *Elements* when computing extrusion direction for every node "
-"of *Elements*."
-msgstr ""
-
-# 189dbea6bb314911b5b27c5a7430d537
-#: smeshBuilder.Mesh.ExtrusionByNormal:15
-msgid "forces generation of new groups from existing ones."
-msgstr ""
-
-# a20c5376192241388610609beb6c68a1
-#: smeshBuilder.Mesh.ExtrusionByNormal:16
-msgid ""
-"dimension of elements to extrude: 2 - faces or 1 - edges. Extrusion of "
-"edges is not yet implemented. This parameter is used if *Elements* "
-"contains both faces and edges, i.e. *Elements* is a Mesh."
-msgstr ""
-
-# bea85b3ff00e443c95211ae90420717b
-#: smeshBuilder.Mesh.ExtrusionByNormal:20
-msgid ""
-"the list of created groups (SMESH_GroupBase) if *MakeGroups=True*,     "
-"empty list otherwise."
-msgstr ""
-
-# 70a29a1069f14f629ae984d59eb6305a
-#: smeshBuilder.Mesh.ExtrusionByNormal:23
-msgid "the list of created groups (SMESH_GroupBase) if *MakeGroups=True*,"
-msgstr ""
-
-# 39f9770896164fbeba5b6b4c08276e89
-#: smeshBuilder.Mesh.ExtrusionByNormal:23
-msgid "empty list otherwise."
-msgstr ""
-
-# 45a8825c374b4533970aac4c215817d2
-# e943d5dc089d40eca3a9b465a446ed73
-# aaa7d5be7ced4f5e82c5612da73ce778
-# 1109984bbb4e44ee8e67d84d80964977
-# be9608518a6b4e518dc93ab2d331ffe4
-# 8a966f83249c4beb8053f6cc5c81a19a
-#: smeshBuilder.Mesh.ExtrusionByNormal:25 smeshBuilder.Mesh.ExtrusionSweep:13
-#: smeshBuilder.Mesh.ExtrusionSweepObject:14
-#: smeshBuilder.Mesh.ExtrusionSweepObject1D:13
-#: smeshBuilder.Mesh.ExtrusionSweepObject2D:13
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:24
-msgid ":ref:`tui_extrusion` example"
-msgstr ""
-
-# 4116cd0ed61647159eb0490a87298fbb
-#: smeshBuilder.Mesh.ExtrusionSweep:3
-msgid "the list of ids of elements or nodes for extrusion"
-msgstr ""
-
-# d1e652596d5f4ddaaf3455f248b2307c
-#: smeshBuilder.Mesh.ExtrusionSweep:9
-msgid "is True if elements with given ids are nodes"
-msgstr ""
-
-# 32a048c785204455b5d9c022574477db
-# 4a94ca72e61d43b6ae2970dc92afa99f
-# 2ce54d1f8e164d9b95de8cca3e5ff884
-# dfe23afd36a1476781017daabc61d682
-# 1d6da843c9ab4ba2add2133828a783e5
-# 459a919a4a0b4ed1b76067373d9f6b34
-# 76c8fe399461419cbe693b60c8fda184
-#: smeshBuilder.Mesh.ExtrusionSweep:11
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:22
-#: smeshBuilder.Mesh.RotationSweep:12 smeshBuilder.Mesh.RotationSweepObject:13
-#: smeshBuilder.Mesh.RotationSweepObject1D:13
-#: smeshBuilder.Mesh.RotationSweepObject2D:13
-#: smeshBuilder.Mesh.RotationSweepObjects:15
-msgid ""
-"the list of created groups (SMESH_GroupBase) if MakeGroups=True, empty "
-"list otherwise"
-msgstr ""
-
-# 1c5324f6a077431ab6b9ae4eb29663aa
-#: smeshBuilder.Mesh.ExtrusionSweepObject:1
-msgid ""
-"Generate new elements by extrusion of the elements or nodes which belong "
-"to the object"
-msgstr ""
-
-# 6edea75c9be7418b970304f4dfe27bcd
-#: smeshBuilder.Mesh.ExtrusionSweepObject:3
-msgid ""
-"the object whose elements or nodes should be processed. It can be a mesh,"
-" a sub-mesh or a group."
-msgstr ""
-
-# 0f4d92743b644124acc44a3407e936c9
-#: smeshBuilder.Mesh.ExtrusionSweepObject:10
-msgid "is True if elements to extrude are nodes"
-msgstr ""
-
-# 117e2d5cef344ea994570972cd6475f3
-#: smeshBuilder.Mesh.ExtrusionSweepObject1D:1
-msgid "Generate new elements by extrusion of edges which belong to the object"
-msgstr ""
-
-# 95122d4fd03f4b83ac97197df03a8e61
-#: smeshBuilder.Mesh.ExtrusionSweepObject1D:3
-msgid ""
-"object whose 1D elements should be processed. It can be a mesh, a sub-"
-"mesh or a group."
-msgstr ""
-
-# a9fd4fd64585433688293ed1f14e71d1
-# 18e41dacbea74f02af80309fa4544c6d
-#: smeshBuilder.Mesh.ExtrusionSweepObject1D:9
-#: smeshBuilder.Mesh.MirrorMakeMesh:7
-msgid "to generate new groups from existing ones"
-msgstr ""
-
-# 626f2f387bfd43e5b5c563a8e68d8994
-#: smeshBuilder.Mesh.ExtrusionSweepObject2D:1
-msgid "Generate new elements by extrusion of faces which belong to the object"
-msgstr ""
-
-# 3835b1ef78af46099dddf8ffd3749ee7
-#: smeshBuilder.Mesh.ExtrusionSweepObject2D:3
-msgid ""
-"object whose 2D elements should be processed. It can be a mesh, a sub-"
-"mesh or a group."
-msgstr ""
-
-# 2874c97881034b43a417ebe95fb6d666
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:1
-msgid "Generate new elements by extrusion of the given elements and nodes"
-msgstr ""
-
-# bf8d47fedbfe4fd49ca9aca6f7074ac0
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:11
-msgid "optional scale factors to apply during extrusion"
-msgstr ""
-
-# 0c7f9aadd6c146718c840b699f5bf5cd
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:12
-msgid ""
-"if *True*, scaleFactors are spread over all *scaleFactors*, else "
-"scaleFactors[i] is applied to nodes at the i-th extrusion step"
-msgstr ""
-
-# 3b541903f8eb4071af7f80ec4c85d3c8
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:14
-msgid ""
-"optional scaling center; if not provided, a gravity center of nodes and "
-"elements being extruded is used as the scaling center. It can be either"
-"          - a list of tree components of the point or         - a node ID"
-" or         - a GEOM point"
-msgstr ""
-
-# 5019c64c350247c8b446e8a32f82dc8e
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:14
-msgid ""
-"optional scaling center; if not provided, a gravity center of nodes and "
-"elements being extruded is used as the scaling center. It can be either"
-msgstr ""
-
-# 666891c8023e4f38af346f354487557e
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:18
-msgid "a list of tree components of the point or"
-msgstr ""
-
-# c4ad62a1a5dc4f8780d9355a9bc1b957
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:19
-msgid "a node ID or"
-msgstr ""
-
-# 5d7e6fdd9d1e44c4b9e5ea443b28c193
-#: smeshBuilder.Mesh.ExtrusionSweepObjects:20
-msgid "a GEOM point"
-msgstr ""
-
-# c16514f3c26f4ed784b97d9c12cb913b
-#: smeshBuilder.Mesh.FillHole:1
-msgid "Fill with 2D elements a hole defined by a SMESH.FreeBorder."
-msgstr ""
-
-# 527450feb9754d7c990fd2232da6442d
-#: smeshBuilder.Mesh.FillHole:3
-msgid ""
-"either a SMESH.FreeBorder or a list on node IDs. These nodes must "
-"describe all sequential nodes of the hole border. The first and the last "
-"nodes must be the same. Use FindFreeBorders() to get nodes of holes."
-msgstr ""
-
-# ff6d2900fb5b4e719845f70c608156c5
-#: smeshBuilder.Mesh.FindCoincidentFreeBorders:1
-msgid "Return groups of FreeBorder's coincident within the given tolerance."
-msgstr ""
-
-# 6dcbbb32259842a59da9b99826629865
-#: smeshBuilder.Mesh.FindCoincidentFreeBorders:3
-msgid ""
-"the tolerance. If the tolerance <= 0.0 then one tenth of an average size "
-"of elements adjacent to free borders being compared is used."
-msgstr ""
-
-# bd29c83ede0b420581edbfb43ce4afb2
-#: smeshBuilder.Mesh.FindCoincidentFreeBorders:6
-msgid "SMESH.CoincidentFreeBorders structure"
-msgstr ""
-
-# aac72c01877d425a9a214eb2528fbf76
-#: smeshBuilder.Mesh.FindCoincidentNodes:1
-msgid "Find groups of adjacent nodes within Tolerance."
-msgstr ""
-
-# 2d32755b2be94bd0b368d13b248321d1
-# 223b44cdab944b36a06ece8556a117a2
-#: smeshBuilder.Mesh.FindCoincidentNodes:3
-#: smeshBuilder.Mesh.FindCoincidentNodesOnPart:3
-msgid "the value of tolerance"
-msgstr ""
-
-# 8d2524630f3345df9e8f35913be222fe
-# 0a47cd9f52f9428ca79a7051209ebdda
-#: smeshBuilder.Mesh.FindCoincidentNodes:4
-#: smeshBuilder.Mesh.FindCoincidentNodesOnPart:6
-msgid ""
-"if *True*, in quadratic mesh puts corner and medium nodes in separate "
-"groups thus preventing their further merge."
-msgstr ""
-
-# 1cdbf2150e29497991ec4a1287453d25
-# 22a4fee6431b446098f2540c1d2782d1
-#: smeshBuilder.Mesh.FindCoincidentNodes:8
-#: smeshBuilder.Mesh.FindCoincidentNodesOnPart:10
-msgid "the list of groups of nodes IDs (e.g. [[1,12,13],[4,25]])"
-msgstr ""
-
-# 54a9056e90884545b53359ff3ed83834
-#: smeshBuilder.Mesh.FindCoincidentNodesOnPart:1
-msgid "Find groups of ajacent nodes within Tolerance."
-msgstr ""
-
-# 8614079344054c5d8ac7ea069b68237a
-#: smeshBuilder.Mesh.FindCoincidentNodesOnPart:4
-msgid "SubMesh, Group or Filter"
-msgstr ""
-
-# 1ffbd227b50c482c8915531361a124c4
-#: smeshBuilder.Mesh.FindCoincidentNodesOnPart:5
-msgid "list of either SubMeshes, Groups or node IDs to exclude from search"
-msgstr ""
-
-# fc63f6cc9bab4804a88320f9bb9600fb
-#: smeshBuilder.Mesh.FindElementByNodes:1
-msgid "Return an element based on all given nodes."
-msgstr ""
-
-# 371a6f262b7d4f33b7de7086898585fb
-#: smeshBuilder.Mesh.FindElementsByPoint:1
-msgid "Find the elements where a point lays IN or ON"
-msgstr ""
-
-# 30b51e3601434245a3eefd35b666ee96
-# 3f2752dee91b40b5be761e444733fa9d
-# 3146cbd7c3cb4028af3e20f145d9d2d0
-# 4c591eb9c579403aab379d9644db4312
-#: smeshBuilder.Mesh.FindElementsByPoint:3
-#: smeshBuilder.Mesh.FindNodeClosestTo:3
-#: smeshBuilder.Mesh.MeshToPassThroughAPoint:3
-#: smeshBuilder.Mesh.MoveClosestNodeToPoint:3
-msgid "the X coordinate of a point"
-msgstr ""
-
-# 62fbd1a3dd9f4b67bd67aff4e2c8a885
-# 0fb150c354d64d7c8e91589998fe348b
-# 9bd687ce118f4c47bf8764db3ae6c015
-# 422b3df5c4d34575b38364ab133014b0
-#: smeshBuilder.Mesh.FindElementsByPoint:4
-#: smeshBuilder.Mesh.FindNodeClosestTo:4
-#: smeshBuilder.Mesh.MeshToPassThroughAPoint:4
-#: smeshBuilder.Mesh.MoveClosestNodeToPoint:4
-msgid "the Y coordinate of a point"
-msgstr ""
-
-# fb070ad4421545e492af21fb1eddc3ca
-# 5e0218c107494c049616b4c1b6668212
-# 400f4e0ca9e745a698b1b0b276d84579
-# e408b7659e724d95adca035f371af076
-#: smeshBuilder.Mesh.FindElementsByPoint:5
-#: smeshBuilder.Mesh.FindNodeClosestTo:5
-#: smeshBuilder.Mesh.MeshToPassThroughAPoint:5
-#: smeshBuilder.Mesh.MoveClosestNodeToPoint:5
-msgid "the Z coordinate of a point"
-msgstr ""
-
-# e3813715abb44fc987676fbea8854c88
-#: smeshBuilder.Mesh.FindElementsByPoint:6
-msgid ""
-"type of elements to find; either of (SMESH.NODE, SMESH.EDGE, SMESH.FACE, "
-"SMESH.VOLUME); SMESH.ALL type means elements of any type excluding nodes,"
-" discrete and 0D elements."
-msgstr ""
-
-# 7dd33cb667a649d5b962ec7a1bfb09f0
-#: smeshBuilder.Mesh.FindElementsByPoint:9
-msgid "a part of mesh (group, sub-mesh) to search within"
-msgstr ""
-
-# 540b448102b746b3879a4126094cd04f
-#: smeshBuilder.Mesh.FindElementsByPoint:11
-msgid "list of IDs of found elements"
-msgstr ""
-
-# 45a45cc8aafd484f9208312cb86f9af6
-#: smeshBuilder.Mesh.FindEqualElements:1
-msgid "Find the elements built on the same nodes."
-msgstr ""
-
-# 4fce3c3eb62c46a096d74c2283373dde
-#: smeshBuilder.Mesh.FindEqualElements:3
-msgid "Mesh or SubMesh, or Group of elements for searching"
-msgstr ""
-
-# 37c974a151ab4801bfef7c7d24f6f388
-#: smeshBuilder.Mesh.FindEqualElements:5
-msgid "the list of groups of equal elements IDs (e.g. [[1,12,13],[4,25]])"
-msgstr ""
-
-# 46ab142b430f4fad8be66b04aa173366
-#: smeshBuilder.Mesh.FindFreeBorders:1
-msgid "Returns all or only closed free borders"
-msgstr ""
-
-# 8eb0fa24ae4049ee9f5c85b7272dc818
-#: smeshBuilder.Mesh.FindFreeBorders:3
-msgid "list of SMESH.FreeBorder's"
-msgstr ""
-
-# 1c0c36da76664a72add79ebb5394fd6a
-#: smeshBuilder.Mesh.FindNodeClosestTo:1
-msgid "Find the node closest to a point"
-msgstr ""
-
-# b1f639be7ee9494791fb516f73403402
-# 68920dfed72e49c1810873d99aa7dec2
-#: smeshBuilder.Mesh.FindNodeClosestTo:7
-#: smeshBuilder.Mesh.MoveClosestNodeToPoint:9
-msgid "the ID of a node"
-msgstr ""
-
-# 2651e2b610844f079375fb9dbe7f224e
-#: smeshBuilder.Mesh.FunctorValue:1
-msgid "Return value of a functor for a given element"
-msgstr ""
-
-# 0ba8a013955b4a90a4661b8f980ae09d
-#: smeshBuilder.Mesh.FunctorValue:3
-msgid ""
-"an item of SMESH.FunctorType enum Type \"SMESH.FunctorType._items\" in "
-"the Python Console to see all items."
-msgstr ""
-
-# 32346a098c7041d8b47ee0f51d454de6
-#: smeshBuilder.Mesh.FunctorValue:5
-msgid "element or node ID"
-msgstr ""
-
-# 8a003ccbc9a84a4689dc888e6e16ea00
-#: smeshBuilder.Mesh.FunctorValue:6
-msgid "*elemId* is ID of element or node"
-msgstr ""
-
-# c8e41c5a725840f4b31cace71fdab206
-#: smeshBuilder.Mesh.FunctorValue:8
-msgid "the functor value or zero in case of invalid arguments"
-msgstr ""
-
-# 7cce1c3889854dcca3989702b2259d0c
-#: smeshBuilder.Mesh.GetAlgoState:1
-msgid ""
-"Return errors of hypotheses definition. The list of errors is empty if "
-"everything is OK."
-msgstr ""
-
-# 0576061edca64e5b84786c5dea756805
-# 98d44e05f9ca4125bc430b192429b8b7
-#: smeshBuilder.Mesh.GetAlgoState:4 smeshBuilder.Mesh.IsReadyToCompute:3
-msgid "a sub-shape of a mesh shape"
-msgstr ""
-
-# ac5d534627e64907a1900f4a984411ba
-#: smeshBuilder.Mesh.GetAlgoState:6
-msgid "a list of errors"
-msgstr ""
-
-# 29f19e8c0f654d01953f68d68b204e01
-#: smeshBuilder.Mesh.GetArea:2
-msgid "Get area of 2D element or sum of areas of all 2D mesh elements"
-msgstr ""
-
-# 5edba8f9a8924eb9adf0c5013caf28ac
-#: smeshBuilder.Mesh.GetArea:2
-msgid ""
-"elemId mesh element ID (if not defined - sum of areas of all 2D elements "
-"will be calculated)"
-msgstr ""
-
-# 8197a466527b48a8acd45af8016fe567
-#: smeshBuilder.Mesh.GetArea:4
-msgid ""
-"element's area value if *elemId* is specified or sum of all 2D mesh "
-"elements' areas otherwise"
-msgstr ""
-
-# 8daecbe9a7cb4bf2b0096aaa97519b00
-#: smeshBuilder.Mesh.GetAspectRatio:1
-msgid "Get aspect ratio of 2D or 3D element."
-msgstr ""
-
-# 3eb00d2391ed471dbb4d6f86b79667c0
-#: smeshBuilder.Mesh.GetAspectRatio:5
-msgid "element's aspect ratio value"
-msgstr ""
-
-# 739ec0ec6a6f464d8512013320208b47
-#: smeshBuilder.Mesh.GetAutoColor:1
-msgid "Get flag of object auto color mode."
-msgstr ""
-
-# ab1d8d329e3f4bc9aae6dac918633bfd
-#: smeshBuilder.Mesh.GetBallDiameter:1
-msgid ""
-"Return diameter of a ball discrete element or zero in case of an invalid "
-"*id*"
-msgstr ""
-
-# a807a080206b41838800b920c092a8ed
-# 8b88967abc9544eba2b1dea80b344158
-#: smeshBuilder.Mesh.GetBoundingBox:1
-#: smeshBuilder.smeshBuilder.GetBoundingBox:1
-msgid ""
-"Get measure structure specifying bounding box data of the specified "
-"object(s)"
-msgstr ""
-
-# 2147101885d544aea3f6f3a71eda6cdd
-#: smeshBuilder.Mesh.GetBoundingBox:4
-msgid ""
-"if *IDs* is a list of IDs, *True* value in this parameters specifies that"
-" *objects* are elements, *False* specifies that *objects* are nodes"
-msgstr ""
-
-# 3362a73b19134d82882a53243b3a002d
-# c04e8b5ac4ad4c10ab544e0ec29a44c1
-#: smeshBuilder.Mesh.GetBoundingBox:7
-#: smeshBuilder.smeshBuilder.GetBoundingBox:5
-msgid "Measure structure **BoundingBox()**"
-msgstr ""
-
-# 6a639a7d77604c1ca8c9b4ccc2ebf841
-#: smeshBuilder.Mesh.GetComputeErrors:1
-msgid "Return a list of error messages (SMESH.ComputeError) of the last Compute()"
-msgstr ""
-
-# 2a896de65dc24444912ff70b31138093
-#: smeshBuilder.Mesh.GetElemFaceNodes:1
-msgid "Return nodes of given face (counted from zero) for given volumic element."
-msgstr ""
-
-# a752558def9e41c1978ea78114f06ea2
-#: smeshBuilder.Mesh.GetElemNbNodes:1
-msgid "Return the number of nodes of the given element"
-msgstr ""
-
-# 37598ec881764feba924a2b180e1abeb
-#: smeshBuilder.Mesh.GetElemNbNodes:3
-msgid "an integer value > 0 or -1 if there is no element for the given ID"
-msgstr ""
-
-# 72d5ba1cbdc044f9870d353ce95bfe65
-#: smeshBuilder.Mesh.GetElemNode:1
-msgid ""
-"Return the node ID the given (zero based) index for the given element If "
-"there is no element for the given ID - return -1 If there is no node for "
-"the given index - return -2"
-msgstr ""
-
-# 11016a8d170344099cf358919cdf7a70
-# c79702c20c4542ad9780ec5fdeec9e0f
-# 69975b8a8faa4e7cacdec52b8b854fea
-# c345c75bf5af42cbbe6ba043a4376db4
-# 2092d156aa3849e182c70e4707b50f51
-# 9e48d17b9ebe43cc943b9d13344629d0
-# e8ad657758594b76b279162c2ffff4a1
-# 6d4a1576600e4bb7b58d032d69b167bd
-# 8926c0578174483691a072fe00fb1814
-# 78191756c082457a822e4137ad46eee5
-# 4b09abf6e5d24e07b68345eef201d755
-# d28edeaf041b4616a0dfeb3921ef93ea
-# 5e06226b1c43482788d14fbe38e758a0
-# 87f84c00ea424ef6a5f87ff062ce3c68
-# 0722b74919ac4c3591c548d6f7518c91
-# 8f19baaff3134a18a78b09eafb8dcada
-# c4fc09556fa04658be2cf0a18d7ff6fa
-# c8e469a86a984d5290143a788228c9b7
-# 87cfba8d6a6742ee8fc656f6264d385b
-# 942313a6ef044ce4a1ff677a29cd1ec2
-# 383ac4b701d045788d57e248bcbb8423
-# 5093a07e60d040bababb3f2c9d87abbc
-# a17cbd0c3c244a779f8dd40bee937139
-# 7dcc95e194d243b4a81c28c439af5a2d
-# 56104864a17c400c837bb83f64251f2d
-# 81f75b3336ac482b89544f9a461158dc
-# ac612c6cd39840258a32e81f049674b5
-# 5b55262ad1274ecda104df1859b4673b
-# 588c9c6ac6da4708b6475d56267a861f
-# dc63996b2eaf45a280516c4f7379bd37
-#: smeshBuilder.Mesh.GetElemNode:5 smeshBuilder.Mesh.Nb0DElements:3
-#: smeshBuilder.Mesh.NbBalls:3 smeshBuilder.Mesh.NbBiQuadQuadrangles:3
-#: smeshBuilder.Mesh.NbBiQuadTriangles:3 smeshBuilder.Mesh.NbEdges:3
-#: smeshBuilder.Mesh.NbEdgesOfOrder:6 smeshBuilder.Mesh.NbElements:3
-#: smeshBuilder.Mesh.NbFaces:3 smeshBuilder.Mesh.NbFacesOfOrder:6
-#: smeshBuilder.Mesh.NbHexagonalPrisms:3 smeshBuilder.Mesh.NbHexas:3
-#: smeshBuilder.Mesh.NbHexasOfOrder:6 smeshBuilder.Mesh.NbNodes:3
-#: smeshBuilder.Mesh.NbPolygons:6 smeshBuilder.Mesh.NbPolyhedrons:3
-#: smeshBuilder.Mesh.NbPrisms:3 smeshBuilder.Mesh.NbPrismsOfOrder:6
-#: smeshBuilder.Mesh.NbPyramids:3 smeshBuilder.Mesh.NbPyramidsOfOrder:6
-#: smeshBuilder.Mesh.NbQuadrangles:3 smeshBuilder.Mesh.NbQuadranglesOfOrder:5
-#: smeshBuilder.Mesh.NbSubMesh:3 smeshBuilder.Mesh.NbTetras:3
-#: smeshBuilder.Mesh.NbTetrasOfOrder:6 smeshBuilder.Mesh.NbTriQuadraticHexas:3
-#: smeshBuilder.Mesh.NbTriangles:3 smeshBuilder.Mesh.NbTrianglesOfOrder:6
-#: smeshBuilder.Mesh.NbVolumes:3 smeshBuilder.Mesh.NbVolumesOfOrder:6
-msgid "an integer value"
-msgstr ""
-
-# 3290fda355bf478b9b234734673ba8cf
-#: smeshBuilder.Mesh.GetElemNodes:1
-msgid "Return the IDs of nodes of the given element"
-msgstr ""
-
-# bfe7c3c9fff24777a94ab8e55ef9a73f
-# e584b6f5cdc74cd2aeea533f1e542d5a
-#: smeshBuilder.Mesh.GetElemNodes:3 smeshBuilder.Mesh.GetNodeInverseElements:4
-msgid "a list of integer values"
-msgstr ""
-
-# 8a5cfcdeb86841e2a921fe520ba42987
-#: smeshBuilder.Mesh.GetElementGeomType:1
-msgid "Return the geometric type of mesh element"
-msgstr ""
-
-# e66041a86a2b46f0a0d010fc76d07bae
-#: smeshBuilder.Mesh.GetElementGeomType:3
-msgid ""
-"the value from SMESH::EntityType enumeration     Type "
-"SMESH.EntityType._items in the Python Console to see all possible values."
-msgstr ""
-
-# c4de80da1de6470f8671820ce0bbf1f6
-#: smeshBuilder.Mesh.GetElementGeomType:5
-msgid "the value from SMESH::EntityType enumeration"
-msgstr ""
-
-# 2f85ba210b8e49f1ac0fef6a2fe33883
-#: smeshBuilder.Mesh.GetElementGeomType:6
-msgid ""
-"Type SMESH.EntityType._items in the Python Console to see all possible "
-"values."
-msgstr ""
-
-# 6c63ea8b4c7d4b63a6bc4ac3c780aca2
-#: smeshBuilder.Mesh.GetElementPosition:1
-msgid "Return the position of an element on the shape"
-msgstr ""
-
-# ca525309f1694ba3993d7ee45c180670
-#: smeshBuilder.Mesh.GetElementPosition:3
-msgid "SMESH::ElementPosition"
-msgstr ""
-
-# 6e9121b74c1f48e7bf53fd2fd87c91f4
-#: smeshBuilder.Mesh.GetElementShape:1
-msgid "Return the shape type of mesh element"
-msgstr ""
-
-# 659b85bd91604f559d3f8c5011ee46f6
-#: smeshBuilder.Mesh.GetElementShape:3
-msgid ""
-"the value from SMESH::GeometryType enumeration.     Type "
-"SMESH.GeometryType._items in the Python Console to see all possible "
-"values."
-msgstr ""
-
-# e851e9b286414ce79575b621de65a1b6
-#: smeshBuilder.Mesh.GetElementShape:5
-msgid "the value from SMESH::GeometryType enumeration."
-msgstr ""
-
-# 9956c2283b0f4c4d9ee6906d63711ac6
-#: smeshBuilder.Mesh.GetElementShape:6
-msgid ""
-"Type SMESH.GeometryType._items in the Python Console to see all possible "
-"values."
-msgstr ""
-
-# 18e82d9950794e00933e30d5c2d70929
-#: smeshBuilder.Mesh.GetElementType:1
-msgid "Return the type of mesh element"
-msgstr ""
-
-# 2a147e870f5f492cb84afdef131ba058
-#: smeshBuilder.Mesh.GetElementType:3
-msgid ""
-"the value from SMESH::ElementType enumeration     Type "
-"SMESH.ElementType._items in the Python Console to see all possible "
-"values."
-msgstr ""
-
-# f3d795a2c04a414f8c5916dc40d8c9d7
-#: smeshBuilder.Mesh.GetElementType:5
-msgid "the value from SMESH::ElementType enumeration"
-msgstr ""
-
-# 212db060cf85470b9bab6482e9a463ae
-#: smeshBuilder.Mesh.GetElementType:6
-msgid ""
-"Type SMESH.ElementType._items in the Python Console to see all possible "
-"values."
-msgstr ""
-
-# cc434adc3d45460eb95bfedc4a65b308
-#: smeshBuilder.Mesh.GetElementsByNodes:1
-msgid "Return elements including all given nodes."
-msgstr ""
-
-# 41004c036d294adbbac66a341f41fe06
-#: smeshBuilder.Mesh.GetElementsByType:1
-msgid "Return the list of IDs of mesh elements with the given type"
-msgstr ""
-
-# 9363d47e99a44908b173a981e608e424
-#: smeshBuilder.Mesh.GetElementsByType:3
-msgid ""
-"the required type of elements, either of (SMESH.NODE, SMESH.EDGE, "
-"SMESH.FACE or SMESH.VOLUME)"
-msgstr ""
-
-# c1958ca716614fffafc792953232023e
-#: smeshBuilder.Mesh.GetElementsByType:6
-msgid "list of integer values"
-msgstr ""
-
-# a29539be68854ef98ba640e260d640a1
-#: smeshBuilder.Mesh.GetElementsId:1
-msgid "Return the list of mesh elements IDs"
-msgstr ""
-
-# 9bd190bb06084568a0c917534d0eae10
-# be0054a7a01c4592a073ffb4c1bacf0c
-# fbb192bed78943e58c5ce647d9c1c2a6
-# 51b09592907741e6a29b0e94a426ce35
-# 7f69ab6395814bdd9b9fe08a4e9e1311
-#: smeshBuilder.Mesh.GetElementsId:3 smeshBuilder.Mesh.GetNodesId:3
-#: smeshBuilder.Mesh.GetSubMeshElementsId:6
-#: smeshBuilder.Mesh.GetSubMeshNodesId:7
-#: smeshBuilder.smeshBuilder.GetSubShapesId:3
-msgid "the list of integer values"
-msgstr ""
-
-# d7517dd858ab44ab92f50a1002d14273
-#: smeshBuilder.Mesh.GetFaceNormal:1
-msgid "Return three components of normal of given mesh face"
-msgstr ""
-
-# 687fceddc9ac4cd3b651c6a47296b9cd
-#: smeshBuilder.Mesh.GetFaceNormal:2
-msgid "(or an empty array in KO case)"
-msgstr ""
-
-# 1412506de94e45f1b05405eff9611ad9
-#: smeshBuilder.Mesh.GetFailedShapes:1
-msgid ""
-"Return a list of sub-shapes meshing of which failed, grouped into GEOM "
-"groups by error of an algorithm"
-msgstr ""
-
-# ddaabb92c1ef44a0a269535fef085e3d
-#: smeshBuilder.Mesh.GetFailedShapes:4
-msgid "if *True*, the returned groups will be published in the study"
-msgstr ""
-
-# c88fb7eeaff94a49b8e3db043a0af398
-#: smeshBuilder.Mesh.GetFailedShapes:6
-msgid "a list of GEOM groups each named after a failed algorithm"
-msgstr ""
-
-# c5618f05cbd5474aa9b0eeff3cdeb324
-#: smeshBuilder.Mesh.GetFreeBorders:1
-msgid ""
-"Verify whether a 2D mesh element has free edges (edges connected to one "
-"face only)"
-msgstr ""
-
-# de1289c4aa064546a44e435372d5d992
-#: smeshBuilder.Mesh.GetFreeBorders:3
-msgid "Return a list of special structures (borders)."
-msgstr ""
-
-# 975061fc2efc401096403aaaad97a899
-#: smeshBuilder.Mesh.GetFreeBorders:5
-msgid ""
-"a list of SMESH.FreeEdges. Border structure:: edge id and ids of two its "
-"nodes."
-msgstr ""
-
-# df8eac97931d4b5f9cc346cae7a12ffa
-#: smeshBuilder.Mesh.GetFunctor:1
-msgid "Return a cached numerical functor by its type."
-msgstr ""
-
-# e1b9d4d7a3a0409c96dbb2ce05324615
-#: smeshBuilder.Mesh.GetFunctor:3
-msgid ""
-"an item of SMESH.FunctorType enumeration. Type SMESH.FunctorType._items "
-"in the Python Console to see all items. Note that not all items "
-"correspond to numerical functors."
-msgstr ""
-
-# b37d12aecc534f9e8610b36e090a67ba
-#: smeshBuilder.Mesh.GetFunctor:7
-msgid "SMESH_NumericalFunctor. The functor is already initialized     with a mesh"
-msgstr ""
-
-# f42ca52ddb66432797aa0672ff0226f0
-#: smeshBuilder.Mesh.GetFunctor:9
-msgid "SMESH_NumericalFunctor. The functor is already initialized"
-msgstr ""
-
-# a008dc3939794ff9ba612a9c9f6ceb11
-#: smeshBuilder.Mesh.GetFunctor:10
-msgid "with a mesh"
-msgstr ""
-
-# c6ab738621e842ea9221cbc1f7445ed9
-#: smeshBuilder.Mesh.GetGeometryByMeshElement:1
-msgid ""
-"Return a geometrical object on which the given element was built. The "
-"returned geometrical object, if not nil, is either found in the study or "
-"published by this method with the given name"
-msgstr ""
-
-# 1749be4e1c4d4424aa6b461083e71069
-#: smeshBuilder.Mesh.GetGeometryByMeshElement:5
-msgid "the id of the mesh element"
-msgstr ""
-
-# 1192cb449ef44e9483ed7a6f879a677a
-#: smeshBuilder.Mesh.GetGeometryByMeshElement:6
-msgid "the user-defined name of the geometrical object"
-msgstr ""
-
-# e902e28a08ff4b2cac090e904b33e2d5
-#: smeshBuilder.Mesh.GetGeometryByMeshElement:8
-msgid "GEOM::GEOM_Object instance"
-msgstr ""
-
-# 50ebdfe142d54e3fb503f174ffe96694
-#: smeshBuilder.Mesh.GetGroupByName:1
-msgid "Find groups by name and type"
-msgstr ""
-
-# e0bf267cd076406cb98bc81e223764ef
-#: smeshBuilder.Mesh.GetGroupByName:3
-msgid "name of the group of interest"
-msgstr ""
-
-# 52b75d9634cb41ba8bb10aa70b025935
-#: smeshBuilder.Mesh.GetGroupByName:4
-msgid ""
-"type of elements the groups contain; either of (SMESH.ALL, SMESH.NODE, "
-"SMESH.EDGE, SMESH.FACE, SMESH.VOLUME); by default one group of any type "
-"of elements is returned if elemType == SMESH.ALL then all groups of any "
-"type are returned"
-msgstr ""
-
-# 97ea362068cc4615aff536330e33cdb4
-#: smeshBuilder.Mesh.GetGroupByName:9
-msgid "a list of SMESH_GroupBase's"
-msgstr ""
-
-# 50e3facd53e94198b1db18d7c78f6129
-#: smeshBuilder.Mesh.GetGroupNames:1
-msgid "Get the list of names of groups existing in the mesh"
-msgstr ""
-
-# a05c7af4139541f09c310ec8e6e6a3ea
-#: smeshBuilder.Mesh.GetGroupNames:3
-msgid "list of strings"
-msgstr ""
-
-# 1835c5a0a32043619dacd894ac5e5efc
-#: smeshBuilder.Mesh.GetGroups:1
-msgid ""
-"Get the list of groups existing in the mesh in the order of creation "
-"(starting from the oldest one)"
-msgstr ""
-
-# 10c835b7bd124c03a2b53830e1830b9c
-#: smeshBuilder.Mesh.GetGroups:4
-msgid ""
-"type of elements the groups contain; either of (SMESH.ALL, SMESH.NODE, "
-"SMESH.EDGE, SMESH.FACE, SMESH.VOLUME); by default groups of elements of "
-"all types are returned"
-msgstr ""
-
-# 43b224476cdc4408985aeac2c361bd87
-#: smeshBuilder.Mesh.GetGroups:8
-msgid "a sequence of SMESH_GroupBase"
-msgstr ""
-
-# 795fad6da0984542a2a9ee1269bfe5a4
-#: smeshBuilder.Mesh.GetHypothesisList:1
-msgid "Get the list of hypotheses added on a geometry"
-msgstr ""
-
-# d09e4639b2a54308b6cf80d4efca8082
-# 6c20db5a884740e58c964f46fdca507d
-#: smeshBuilder.Mesh.GetHypothesisList:3 smeshBuilder.Mesh.RemoveHypothesis:4
-msgid "a sub-shape of mesh geometry"
-msgstr ""
-
-# b6b1f11224b749549509b9007dc3b9d0
-#: smeshBuilder.Mesh.GetHypothesisList:5
-msgid "the sequence of SMESH_Hypothesis"
-msgstr ""
-
-# 558f8f24f5cd42849fa409da91d2689a
-#: smeshBuilder.Mesh.GetIDSource:1
-msgid ""
-"Wrap a list of IDs of elements or nodes into SMESH_IDSource which can be "
-"passed as argument to a method accepting mesh, group or sub-mesh"
-msgstr ""
-
-# 61742fe7856f41f49003ea1492ac7b60
-#: smeshBuilder.Mesh.GetIDSource:4
-msgid "list of IDs"
-msgstr ""
-
-# cf65d4dbe01e4b5494ad31458574d616
-#: smeshBuilder.Mesh.GetIDSource:5
-msgid ""
-"type of elements; this parameter is used to distinguish IDs of nodes from"
-" IDs of elements; by default ids are treated as IDs of elements; use "
-"SMESH.NODE if ids are IDs of nodes."
-msgstr ""
-
-# 592b631f4bd6424aa38f429a05919ab3
-#: smeshBuilder.Mesh.GetIDSource:9
-msgid "an instance of SMESH_IDSource"
-msgstr ""
-
-# 43f963b565ff41448c32572766554eb6
-#: smeshBuilder.Mesh.GetIDSource:15
-msgid "call UnRegister() for the returned object as soon as it is no more useful:"
-msgstr ""
-
-# f80671af055e4968b6677abda08ed9ed
-#: smeshBuilder.Mesh.GetIDSource:14
-msgid ""
-"idSrc = mesh.GetIDSource( [1,3,5], SMESH.NODE ) mesh.DoSomething( idSrc )"
-" idSrc.UnRegister()"
-msgstr ""
-
-# 1a9345f86be749fea6025482df7c3584
-#: smeshBuilder.Mesh.GetId:1
-msgid "Get the internal ID"
-msgstr ""
-
-# 4fad2fc6a92f4b65826ae34ec6e11db0
-#: smeshBuilder.Mesh.GetId:3
-msgid "integer value, which is the internal Id of the mesh"
-msgstr ""
-
-# 5038d36c19fa45ff9c456d151b578951
-#: smeshBuilder.Mesh.GetIdsFromFilter:1
-msgid ""
-"Pass mesh elements through the given filter and return IDs of fitting "
-"elements"
-msgstr ""
-
-# 446a54c1a23749e283233fa0d4a2f64a
-# f006491f4414462e822b22d5d893e5a3
-# 5b723c286d72473fb884b611816fae02
-#: smeshBuilder.Mesh.GetIdsFromFilter:3 smeshBuilder.smeshBuilder.GetFilter:14
-#: smeshBuilder.smeshBuilder.GetFilterFromCriteria:6
-msgid "SMESH_Filter"
-msgstr ""
-
-# e6796947add04f8ab0c1a3e2f75721d8
-#: smeshBuilder.Mesh.GetIdsFromFilter:5
-msgid "a list of ids"
-msgstr ""
-
-# 1c2f8df6e7be491e9ae5444d2e62998a
-#: smeshBuilder.Mesh.GetLastCreatedElems:4
-msgid "If during the last operation of MeshEditor some elements were"
-msgstr ""
-
-# 524111c98c0b400eb5950636b086753c
-#: smeshBuilder.Mesh.GetLastCreatedElems:2
-msgid "created this method return the list of their IDs,"
-msgstr ""
-
-# c3385f3d9c5a4c6c858f354958e10aa8
-#: smeshBuilder.Mesh.GetLastCreatedElems:4
-msgid "if new elements were not created - return empty list"
-msgstr ""
-
-# 2935846838ba4a2483e38860edcfa319
-# f828773f5c38492e9dccb49302f7cc05
-#: smeshBuilder.Mesh.GetLastCreatedElems:6
-#: smeshBuilder.Mesh.GetLastCreatedNodes:6
-msgid "the list of integer values (can be empty)"
-msgstr ""
-
-# 63879c2cf4ee47b9b5a1585b63665a27
-#: smeshBuilder.Mesh.GetLastCreatedNodes:4
-msgid "If during the last operation of MeshEditor some nodes were"
-msgstr ""
-
-# f77198d42e124a85bfa2f336e8a109a9
-#: smeshBuilder.Mesh.GetLastCreatedNodes:2
-msgid "created, this method return the list of their IDs,"
-msgstr ""
-
-# 71488b8e5d614bafb130c29b051a393d
-#: smeshBuilder.Mesh.GetLastCreatedNodes:4
-msgid "if new nodes were not created - return empty list"
-msgstr ""
-
-# a9c48c0c947a4049b35081551f99fd36
-#: smeshBuilder.Mesh.GetLength:1
-msgid "Get length of 1D element or sum of lengths of all 1D mesh elements"
-msgstr ""
-
-# 7422de5e006e4188874665fd12649d2c
-#: smeshBuilder.Mesh.GetLength:6
-msgid ""
-"element's length value if *elemId* is specified or sum of all 1D mesh "
-"elements' lengths otherwise"
-msgstr ""
-
-# e320ad5f7c784d13a920d4dbf725daac
-#: smeshBuilder.Mesh.GetLog:1
-msgid ""
-"Return the log of nodes and elements added or removed since the previous "
-"clear of the log."
-msgstr ""
-
-# ce3af55af57d44b5a717af5524264237
-#: smeshBuilder.Mesh.GetLog:4
-msgid "log is emptied after Get (safe if concurrents access)"
-msgstr ""
-
-# 9d52a8be40124bdaac5a2ca588a9ae5d
-#: smeshBuilder.Mesh.GetLog:6
-msgid "commandType number coords indexes"
-msgstr ""
-
-# ea91b60e96d040a5a846ddc7317b60ed
-#: smeshBuilder.Mesh.GetLog:10
-msgid "list of log_block structures"
-msgstr ""
-
-# fecaab4b2bff473e9ee2f3cf15197da6
-#: smeshBuilder.Mesh.GetMaxElementLength:1
-msgid "Get maximum element length."
-msgstr ""
-
-# fb0dad0f2d7d449baac69652c0caaa47
-#: smeshBuilder.Mesh.GetMaxElementLength:5
-msgid "element's maximum length value"
-msgstr ""
-
-# aa6033f659ca420996404e87e20a0e42
-#: smeshBuilder.Mesh.GetMesh:1
-msgid "Return the mesh, that is an instance of SMESH_Mesh interface"
-msgstr ""
-
-# 4d89c9876d6a4943a157657bf6f4f507
-# 22529ebe1e2644bca4150db918fc52e8
-#: smeshBuilder.Mesh.GetMesh:3 smeshBuilder.Mesh.SetMesh:3
-msgid "a SMESH_Mesh object"
-msgstr ""
-
-# 864361c9c1734f9980a7a7e9db65898b
-#: smeshBuilder.Mesh.GetMeshEditor:1
-msgid "Obtain the mesh editor tool"
-msgstr ""
-
-# e8788c5e87d64d51807993ffef2d97f8
-#: smeshBuilder.Mesh.GetMeshEditor:3
-msgid "an instance of SMESH_MeshEditor"
-msgstr ""
-
-# e9b45f13a2cd42239425e5dbbab2cf08
-# 8c2ef6c1733a4630881926f1c04eabbf
-#: smeshBuilder.Mesh.GetMeshInfo:1 smeshBuilder.smeshBuilder.GetMeshInfo:1
-msgid "Get the mesh statistic"
-msgstr ""
-
-# cc1a708538f443eca25cd07fd16f5228
-#: smeshBuilder.Mesh.GetMeshInfo:3
-msgid "dictionary type element - count of elements"
-msgstr ""
-
-# 54a40127ce6d4b0d97aa98493c097ba5
-#: smeshBuilder.Mesh.GetMeshOrder:1
-msgid "Return sub-mesh objects list in meshing order"
-msgstr ""
-
-# f4227c30939e48ddb24a1727bf410692
-#: smeshBuilder.Mesh.GetMeshOrder:3
-msgid "list of lists of sub-meshes"
-msgstr ""
-
-# 1267f1eb16c14a6aa9317cb576d55fb7
-# 3f8eb4106c8744ccb9fb63f9424599e2
-#: smeshBuilder.Mesh.GetMinDistance:1
-#: smeshBuilder.smeshBuilder.GetMinDistance:1
-msgid "Get measure structure specifying minimum distance data between two objects"
-msgstr ""
-
-# cf4dcc5eb8e74ded8c2d46fd120eae3e
-# 14c3fcb433f04d21aea1f1993b9142da
-#: smeshBuilder.Mesh.GetMinDistance:3 smeshBuilder.Mesh.MinDistance:3
-msgid "first node/element id"
-msgstr ""
-
-# 5939c139e0db4d06b389b9d0da043e5f
-# bc76c02af30c41919b9f68768616b919
-#: smeshBuilder.Mesh.GetMinDistance:4 smeshBuilder.Mesh.MinDistance:4
-msgid ""
-"second node/element id (if 0, distance from *id1* to the origin is "
-"computed)"
-msgstr ""
-
-# 171dbd97f5b24a6e9592134a1ff6f175
-# 74c16af31e9741489f4f640c011078f3
-# 35bdad39386e4e58933a939c9fa90b2f
-#: smeshBuilder.Mesh.GetMinDistance:5 smeshBuilder.Mesh.MinDistance:5
-#: smeshBuilder.smeshBuilder.MinDistance:10
-msgid "*True* if *id1* is element id, *False* if it is node id"
-msgstr ""
-
-# 2689e846de0f4abf9f5734e111480855
-# 87f98cdf71c84a6ab619c624ae8c32ad
-# 8db4ec9ae5714a08a18346a4df57d27f
-#: smeshBuilder.Mesh.GetMinDistance:6 smeshBuilder.Mesh.MinDistance:6
-#: smeshBuilder.smeshBuilder.MinDistance:11
-msgid "*True* if *id2* is element id, *False* if it is node id"
-msgstr ""
-
-# da7323a0b6f34b29b7a9b52b90bcb3a7
-#: smeshBuilder.Mesh.GetMinDistance:8
-msgid "Measure structure **MinDistance()**"
-msgstr ""
-
-# a595555385fd428d9078e5206b1d3a15
-#: smeshBuilder.Mesh.GetMinMax:1
-msgid "Return minimal and maximal value of a given functor."
-msgstr ""
-
-# bf64ae948b1944c09c4832e9ad8d6501
-#: smeshBuilder.Mesh.GetMinMax:3
-msgid "(one of SMESH.FunctorType._items)"
-msgstr ""
-
-# d868101dd7d94127b261d5a1cb6c9a7f
-#: smeshBuilder.Mesh.GetMinMax:7
-msgid "tuple (min,max)"
-msgstr ""
-
-# dce0ddbe8e1b40d2a302fa79f82c7b70
-#: smeshBuilder.Mesh.GetMinimumAngle:1
-msgid "Get minimum angle of 2D element."
-msgstr ""
-
-# 24cb750a566c4a9d811b964f419226b4
-#: smeshBuilder.Mesh.GetMinimumAngle:5
-msgid "element's minimum angle value"
-msgstr ""
-
-# a5f77b44bd3c4e79b6d3fbf4df312b2d
-#: smeshBuilder.Mesh.GetName:1
-msgid "Get the name of the mesh"
-msgstr ""
-
-# b9f236a96bb0487b9be14b7b54082265
-#: smeshBuilder.Mesh.GetName:3
-msgid "the name of the mesh as a string"
-msgstr ""
-
-# e8629cc79cdd43f687dbfa2ca947c568
-#: smeshBuilder.Mesh.GetNodeInverseElements:1
-msgid ""
-"Return list of IDs of inverse elements for the given node If there is no "
-"node for the given ID - return an empty list"
-msgstr ""
-
-# 8e9b4b56a3074829b8adaca367067e0b
-#: smeshBuilder.Mesh.GetNodePosition:1
-msgid "Return the position of a node on the shape"
-msgstr ""
-
-# 4b8b5f2b673d44f086a623e6f88c33b8
-#: smeshBuilder.Mesh.GetNodePosition:3
-msgid "SMESH::NodePosition"
-msgstr ""
-
-# 9153409224694ce5831302588b4ee9bd
-#: smeshBuilder.Mesh.GetNodeXYZ:1
-msgid ""
-"Get XYZ coordinates of a node If there is no nodes for the given ID - "
-"return an empty list"
-msgstr ""
-
-# 65656b7d16cc46298b31baebfec67b57
-#: smeshBuilder.Mesh.GetNodeXYZ:4
-msgid "a list of double precision values"
-msgstr ""
-
-# a521f7c383bd4afe8c20f9f5e442c035
-#: smeshBuilder.Mesh.GetNodesId:1
-msgid "Return the list of mesh nodes IDs"
-msgstr ""
-
-# 9cd254c3fb064401aa51d44b2e4fd15f
-#: smeshBuilder.Mesh.GetPointState:1
-msgid ""
-"Return point state in a closed 2D mesh in terms of TopAbs_State "
-"enumeration: 0-IN, 1-OUT, 2-ON, 3-UNKNOWN UNKNOWN state means that either"
-" mesh is wrong or the analysis fails."
-msgstr ""
-
-# a062d062a8a84be3b26df303ef0badb6
-#: smeshBuilder.Mesh.GetShape:1
-msgid "Return the shape associated to the mesh"
-msgstr ""
-
-# ed2a63f026fa435cbdfe821c6d729867
-#: smeshBuilder.Mesh.GetShape:3
-msgid "a GEOM_Object"
-msgstr ""
-
-# cb84d241f9974a49aa3b295ec70a323a
-#: smeshBuilder.Mesh.GetShapeID:1
-msgid "Return the ID of the shape, on which the given node was generated."
-msgstr ""
-
-# ad763776922743029e28916a58649870
-#: smeshBuilder.Mesh.GetShapeID:3
-msgid ""
-"an integer value > 0 or -1 if there is no node for the given     ID or "
-"the node is not assigned to any geometry"
-msgstr ""
-
-# 5720cf450c00491da0bea464bc321644
-#: smeshBuilder.Mesh.GetShapeID:5
-msgid "an integer value > 0 or -1 if there is no node for the given"
-msgstr ""
-
-# 97311ad80e4347a48d7f66fe946aaff4
-#: smeshBuilder.Mesh.GetShapeID:6
-msgid "ID or the node is not assigned to any geometry"
-msgstr ""
-
-# 9c2a8eb03c444c4094dc7e27223f97a9
-#: smeshBuilder.Mesh.GetShapeIDForElem:1
-msgid "Return the ID of the shape, on which the given element was generated."
-msgstr ""
-
-# 1c147b04affd4520b46aafe0fb7e0242
-#: smeshBuilder.Mesh.GetShapeIDForElem:3
-msgid ""
-"an integer value > 0 or -1 if there is no element for the given     ID or"
-" the element is not assigned to any geometry"
-msgstr ""
-
-# 3b30017eea9e4c6b878d333e479fb2bd
-#: smeshBuilder.Mesh.GetShapeIDForElem:5
-msgid "an integer value > 0 or -1 if there is no element for the given"
-msgstr ""
-
-# 11cb84eba2b8466591536a85ae02a734
-#: smeshBuilder.Mesh.GetShapeIDForElem:6
-msgid "ID or the element is not assigned to any geometry"
-msgstr ""
-
-# d3b77648e172466ab39dd3c9681e558d
-#: smeshBuilder.Mesh.GetSkew:1
-msgid "Get skew of 2D element."
-msgstr ""
-
-# 793db66725d441a1802c16c5e5ee1d9e
-#: smeshBuilder.Mesh.GetSkew:5
-msgid "element's skew value"
-msgstr ""
-
-# 4a984ddb44e94d4e8d5373e372f4a8c7
-#: smeshBuilder.Mesh.GetStudyId:1
-msgid "Get the study Id"
-msgstr ""
-
-# ade3b87da0a744d6ba5921234f6b3066
-#: smeshBuilder.Mesh.GetStudyId:3
-msgid "integer value, which is the study Id of the mesh"
-msgstr ""
-
-# 87a56f130476491d9467b974396a40ee
-#: smeshBuilder.Mesh.GetSubMesh:1
-msgid "Get a sub-mesh object associated to a *geom* geometrical object."
-msgstr ""
-
-# 89375d14fa7745c18dda883f24796eee
-#: smeshBuilder.Mesh.GetSubMesh:3
-msgid "a geometrical object (shape)"
-msgstr ""
-
-# 0dd3240bc6c34defa0d0edb7e6d9e18e
-#: smeshBuilder.Mesh.GetSubMesh:4
-msgid "a name for the sub-mesh in the Object Browser"
-msgstr ""
-
-# ee1adf28afc74be882db2a50033d2384
-#: smeshBuilder.Mesh.GetSubMesh:6
-msgid ""
-"an object of type SMESH.SMESH_subMesh, representing a part of mesh,"
-"         which lies on the given shape"
-msgstr ""
-
-# d4aa23bdded6421b8c436c989a98d78a
-#: smeshBuilder.Mesh.GetSubMesh:9
-msgid "an object of type SMESH.SMESH_subMesh, representing a part of mesh,"
-msgstr ""
-
-# fa0723ee67cf40dd89eda6f8af998ff3
-#: smeshBuilder.Mesh.GetSubMesh:9
-msgid "which lies on the given shape"
-msgstr ""
-
-# a8ce8eed620a43e2b6d5515ef45c896d
-#: smeshBuilder.Mesh.GetSubMesh:11
-msgid ""
-"The sub-mesh object gives access to the IDs of nodes and elements. The "
-"sub-mesh object has the following methods:"
-msgstr ""
-
-# 3ffa833443714ce9ba556ee25e4152ab
-#: smeshBuilder.Mesh.GetSubMesh:14
-msgid "SMESH.SMESH_subMesh.GetNumberOfElements()"
-msgstr ""
-
-# b50e04881a0e48598133a06b3a6f5879
-#: smeshBuilder.Mesh.GetSubMesh:15
-msgid "SMESH.SMESH_subMesh.GetNumberOfNodes( all )"
-msgstr ""
-
-# 671d9d4f5bcc4bcbbbd53b764fafb257
-#: smeshBuilder.Mesh.GetSubMesh:16
-msgid "SMESH.SMESH_subMesh.GetElementsId()"
-msgstr ""
-
-# 733a1a481c064324a5dc2fc96d9ba5cf
-#: smeshBuilder.Mesh.GetSubMesh:17
-msgid "SMESH.SMESH_subMesh.GetElementsByType( ElementType )"
-msgstr ""
-
-# 0d3dd16c9ebf48a7b0c813a7d142905e
-#: smeshBuilder.Mesh.GetSubMesh:18
-msgid "SMESH.SMESH_subMesh.GetNodesId()"
-msgstr ""
-
-# 40580e2aaf584de5a0b6c3a7a7c13dbc
-#: smeshBuilder.Mesh.GetSubMesh:19
-msgid "SMESH.SMESH_subMesh.GetSubShape()"
-msgstr ""
-
-# c52c4641b09448ea9c99207aabde8fe8
-#: smeshBuilder.Mesh.GetSubMesh:20
-msgid "SMESH.SMESH_subMesh.GetFather()"
-msgstr ""
-
-# adfa115085ca4137bf36dadff16ac286
-#: smeshBuilder.Mesh.GetSubMesh:21
-msgid "SMESH.SMESH_subMesh.GetId()"
-msgstr ""
-
-# 6223371fbe1b4360821b5ca331e6be3a
-#: smeshBuilder.Mesh.GetSubMesh:28
-msgid "A sub-mesh is implicitly created when a sub-shape is specified at"
-msgstr ""
-
-# 46594d575a4f4c1697ca8e5156dc2757
-#: smeshBuilder.Mesh.GetSubMesh:26
-msgid ""
-"creating an algorithm, for example: algo1D = mesh.Segment(geom=Edge_1) "
-"creates a sub-mesh on *Edge_1* and assign Wire Discretization algorithm "
-"to it. The created sub-mesh can be retrieved from the algorithm: submesh "
-"= algo1D.GetSubMesh()"
-msgstr ""
-
-# 2bab387032f245e0b1fd52c8d81e758c
-#: smeshBuilder.Mesh.GetSubMeshElementType:1
-msgid "Return type of elements on given shape"
-msgstr ""
-
-# 75dd88c9b1b842c79eaeff5890f75e14
-#: smeshBuilder.Mesh.GetSubMeshElementType:3
-msgid "a geom object(sub-shape) Shape must be a sub-shape of a ShapeToMesh()"
-msgstr ""
-
-# 465c269333b54520b04feee47d6a4573
-#: smeshBuilder.Mesh.GetSubMeshElementType:6
-msgid "element type"
-msgstr ""
-
-# f7172c546a4641b9948acacd6a63a699
-#: smeshBuilder.Mesh.GetSubMeshElementsId:1
-msgid "Return the list of submesh elements IDs"
-msgstr ""
-
-# d0e0d971edb640a9a4dcba7cede91d9a
-# da0ad129df0d4b19a3aa90c4e6452d00
-#: smeshBuilder.Mesh.GetSubMeshElementsId:3
-#: smeshBuilder.Mesh.GetSubMeshNodesId:3
-msgid "a geom object(sub-shape) Shape must be the sub-shape of a ShapeToMesh()"
-msgstr ""
-
-# 09360ea0f81c42ce81df00efdb0b66d3
-#: smeshBuilder.Mesh.GetSubMeshNodesId:1
-msgid "Return the list of submesh nodes IDs"
-msgstr ""
-
-# dd5dbb7606e74684b06ad12699533d4b
-#: smeshBuilder.Mesh.GetSubMeshNodesId:5
-msgid ""
-"If true, gives all nodes of submesh elements, otherwise gives only "
-"submesh nodes"
-msgstr ""
-
-# 244234dd1fa245989019ecbcafe4c56b
-#: smeshBuilder.Mesh.GetSubShapeName:1
-msgid "Return a name of a sub-shape by its ID"
-msgstr ""
-
-# 3263b66b7bd54ffdb0eac5e9cc50cff3
-#: smeshBuilder.Mesh.GetSubShapeName:3
-msgid "a unique ID of a sub-shape"
-msgstr ""
-
-# 7c7c6c9b664e407a8838e503323785bc
-#: smeshBuilder.Mesh.GetSubShapeName:5
-msgid ""
-"- \"Face_12\"    (published sub-shape) - FACE #3      (not published sub-"
-"shape) - sub-shape #3 (invalid sub-shape ID) - #3           (error in "
-"this function)"
-msgstr ""
-
-# ae8123e9af90440590d838050f09dc8b
-#: smeshBuilder.Mesh.GetSubShapeName:5
-msgid "\"Face_12\"    (published sub-shape)"
-msgstr ""
-
-# 9ed4c1c5a2734d9693180a5607971d1f
-#: smeshBuilder.Mesh.GetSubShapeName:6
-msgid "FACE #3      (not published sub-shape)"
-msgstr ""
-
-# 15caf3d0d714487492d0af246b17df90
-#: smeshBuilder.Mesh.GetSubShapeName:7
-msgid "sub-shape #3 (invalid sub-shape ID)"
-msgstr ""
-
-# 04f04d244da949c385430e4fc7a72685
-#: smeshBuilder.Mesh.GetSubShapeName:8
-msgid "#3           (error in this function)"
-msgstr ""
-
-# 81db83c759d548c8adcf2dc4e0caab5e
-#: smeshBuilder.Mesh.GetSubShapeName:9
-msgid "a string describing the sub-shape; possible variants"
-msgstr ""
-
-# 82a8e9e3f81d494b8f924cf553598cb1
-#: smeshBuilder.Mesh.GetTaper:1
-msgid "Get taper of 2D element."
-msgstr ""
-
-# 58aad7e5f7114f85a1683536841ac24f
-#: smeshBuilder.Mesh.GetTaper:5
-msgid "element's taper value"
-msgstr ""
-
-# c61b8b114e78472ab593229b5a7a9a41
-#: smeshBuilder.Mesh.GetVolume:2
-msgid "Get volume of 3D element or sum of volumes of all 3D mesh elements"
-msgstr ""
-
-# 6759508bc6254d2b9e2c521c245d171d
-#: smeshBuilder.Mesh.GetVolume:2
-msgid ""
-"elemId mesh element ID (if not defined - sum of volumes of all 3D "
-"elements will be calculated)"
-msgstr ""
-
-# 661cc6bdd3e94c0cac8e910f6ee1fcc0
-#: smeshBuilder.Mesh.GetVolume:4
-msgid ""
-"element's volume value if *elemId* is specified or sum of all 3D mesh "
-"elements' volumes otherwise"
-msgstr ""
-
-# df201da51bca44d1bb3e374a78597384
-#: smeshBuilder.Mesh.GetWarping:1
-msgid "Get warping angle of 2D element."
-msgstr ""
-
-# 555c2f12528b4c199b7d09574dfc84e4
-#: smeshBuilder.Mesh.GetWarping:5
-msgid "element's warping angle value"
-msgstr ""
-
-# b7958548a0034361b2ee1d08e1b28e03
-#: smeshBuilder.Mesh.Group:1
-msgid ""
-"Create a mesh group based on the geometric object *grp* and gives a "
-"*name*, if this parameter is not defined the name is the same as the "
-"geometric group name"
-msgstr ""
-
-# 2e0fd99c6b904a549df63d4c8a36116f
-#: smeshBuilder.Mesh.Group:6
-msgid "Works like GroupOnGeom()."
-msgstr ""
-
-# 4660bb505e6e4e6c8265682cf9283cf4
-#: smeshBuilder.Mesh.Group:8
-msgid "a geometric group, a vertex, an edge, a face or a solid"
-msgstr ""
-
-# 3f32151bce3648739e2b9297039e1249
-# aa104168caf84228b928180da8764115
-#: smeshBuilder.Mesh.Group:11 smeshBuilder.Mesh.GroupOnGeom:11
-msgid "SMESH_GroupOnGeom"
-msgstr ""
-
-# e73610316fd34c5f9f754270f5344f25
-#: smeshBuilder.Mesh.GroupOnFilter:1
-msgid ""
-"Create a mesh group with given *name* based on the *filter* which is a "
-"special type of group dynamically updating it's contents during mesh "
-"modification"
-msgstr ""
-
-# 8e5dc9ae1f7d4970bfdfad57d3f7b203
-# bf75b6a9db4340e4b26045630f3287cf
-#: smeshBuilder.Mesh.GroupOnFilter:5 smeshBuilder.Mesh.MakeGroupByIds:4
-msgid ""
-"the type of elements in the group; either of (SMESH.NODE, SMESH.EDGE, "
-"SMESH.FACE, SMESH.VOLUME)."
-msgstr ""
-
-# cc058633e1994c579f0d01998e3579f2
-#: smeshBuilder.Mesh.GroupOnFilter:8
-msgid "the filter defining group contents"
-msgstr ""
-
-# d94a02362f4c4109a8a97671865f066d
-# d2720efd8bac43c3a0517720d6b290d3
-# b33e96727be74eb58d131848196ef647
-# e91b93a98b844dd0b88364c44a19101a
-# 2bb980669b724504a204854973abd44c
-#: smeshBuilder.Mesh.GroupOnFilter:10 smeshBuilder.Mesh.MakeGroup:14
-#: smeshBuilder.Mesh.MakeGroupByCriteria:7
-#: smeshBuilder.Mesh.MakeGroupByCriterion:6
-#: smeshBuilder.Mesh.MakeGroupByFilter:6
-msgid "SMESH_GroupOnFilter"
-msgstr ""
-
-# ad598822867b4c7f80aeb7d6b6fbd3a1
-#: smeshBuilder.Mesh.GroupOnGeom:1
-msgid ""
-"Create a mesh group based on the geometrical object *grp* and gives a "
-"*name*, if this parameter is not defined the name is the same as the "
-"geometrical group name"
-msgstr ""
-
-# 8715c7c29d7343098a7cd7fa2f2d3c99
-#: smeshBuilder.Mesh.GroupOnGeom:5
-msgid "a geometrical group, a vertex, an edge, a face or a solid"
-msgstr ""
-
-# 28301f527fc843d49107bc9b0248bd32
-#: smeshBuilder.Mesh.GroupOnGeom:7
-msgid ""
-"the type of elements in the group; either of (SMESH.NODE, SMESH.EDGE, "
-"SMESH.FACE, SMESH.VOLUME). If not set, it is automatically detected by "
-"the type of the geometry"
-msgstr ""
-
-# caa73610517e4031bc762cc17a3f9e5d
-#: smeshBuilder.Mesh.HasDuplicatedGroupNamesMED:1
-msgid ""
-"Check the group names for duplications. Consider the maximum group name "
-"length stored in MED file."
-msgstr ""
-
-# e0ab5f97714e49cfaafaa32ded8dcac0
-#: smeshBuilder.Mesh.Hexahedron:1
-msgid "Creates hexahedron 3D algorithm for volumes"
-msgstr ""
-
-# 8d88641bdcb64e63a3c4a1c2b2844e82
-#: smeshBuilder.Mesh.Hexahedron:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see :class:`~StdMeshersBuilder.StdMeshersBuilder_Hexahedron`"
-msgstr ""
-
-# 29e43da0ee0d4bf88922194312cd9162
-#: smeshBuilder.Mesh.IntersectGroups:1
-msgid ""
-"Prodice an intersection of two groups. A new group is created. All mesh "
-"elements that are common for the two initial groups are added to the new "
-"one."
-msgstr ""
-
-# 018127875ced44abae96741ee628f168
-#: smeshBuilder.Mesh.IntersectListOfGroups:1
-msgid ""
-"Produce an intersection of groups. New group is created. All mesh "
-"elements that are present in all initial groups simultaneously are added "
-"to the new one"
-msgstr ""
-
-# b11ceec800174ab389abd0150f463383
-#: smeshBuilder.Mesh.InverseDiag:1
-msgid ""
-"Replace two neighbour triangles sharing Node1-Node2 link with the "
-"triangles built on the same 4 nodes but having other common link."
-msgstr ""
-
-# d0e539819a75482ba8a60ec9c707c548
-#: smeshBuilder.Mesh.IsCoherentOrientation2D:1
-msgid "Check if orientation of 2D elements is coherent"
-msgstr ""
-
-# 3a5cc92be55e4e358a967b87f1cc91ae
-#: smeshBuilder.Mesh.IsManifold:1
-msgid "Check if a 2D mesh is manifold"
-msgstr ""
-
-# 7a88a45048d04d8e8d58bb4621bc1307
-#: smeshBuilder.Mesh.IsMediumNode:1
-msgid ""
-"Return true if the given node is the medium node in the given quadratic "
-"element"
-msgstr ""
-
-# 1a3b85be8a384725a61c55d9ecd9ee48
-#: smeshBuilder.Mesh.IsMediumNodeOfAnyElem:1
-msgid ""
-"Return true if the given node is the medium node in one of quadratic "
-"elements"
-msgstr ""
-
-# f6961c3a748f4b2eac63f6fdd76c3bae
-#: smeshBuilder.Mesh.IsMediumNodeOfAnyElem:3
-msgid "ID of the node"
-msgstr ""
-
-# 61af2b540dc44becb1c6a76f1623c76b
-#: smeshBuilder.Mesh.IsMediumNodeOfAnyElem:4
-msgid ""
-"the type of elements to check a state of the node, either of (SMESH.ALL, "
-"SMESH.NODE, SMESH.EDGE, SMESH.FACE or SMESH.VOLUME)"
-msgstr ""
-
-# 249703c715e64c70a5955f545693525c
-#: smeshBuilder.Mesh.IsPoly:1
-msgid "Return true if the given element is a polygon"
-msgstr ""
-
-# 9c07fa29a53f4062aed38d6774823e02
-#: smeshBuilder.Mesh.IsQuadratic:1
-msgid "Return true if the given element is quadratic"
-msgstr ""
-
-# 81b977db4ea6422391e78914390c83d1
-#: smeshBuilder.Mesh.IsReadyToCompute:1
-msgid "Return true if the hypotheses are defined well"
-msgstr ""
-
-# f88a7596dd9147a6a35c8270ac1bb853
-#: smeshBuilder.Mesh.IsUsedHypothesis:1
-msgid "Return True if an algorithm of hypothesis is assigned to a given shape"
-msgstr ""
-
-# 99b9d6d2613b4e3a9a32f26c081169d8
-#: smeshBuilder.Mesh.IsUsedHypothesis:3
-msgid "a hypothesis to check"
-msgstr ""
-
-# d8f81a27392c43bb8ea4cd2207c0f575
-#: smeshBuilder.Mesh.IsUsedHypothesis:6
-msgid "True of False"
-msgstr ""
-
-# 73d043017f0345f8acfcd193ed26ee5b
-#: smeshBuilder.Mesh.Load:1
-msgid "Load mesh from the study after opening the study"
-msgstr ""
-
-# e4826bdeaaf24ed2aea95f46418aa57b
-#: smeshBuilder.Mesh.Make2DMeshFrom3D:1
-msgid "Create 2D mesh as skin on boundary faces of a 3D mesh"
-msgstr ""
-
-# 9a93764148764299901ff84cb9568ff3
-#: smeshBuilder.Mesh.MakeBoundaryElements:2
-msgid "**Create** missing boundary elements around either the whole mesh or"
-msgstr ""
-
-# 3c193d2f82b04fcfab803d6e30c39cf3
-#: smeshBuilder.Mesh.MakeBoundaryElements:2
-msgid "groups of elements"
-msgstr ""
-
-# cb43cd0e13a843168975163c1a621109
-#: smeshBuilder.Mesh.MakeBoundaryElements:4
-msgid ""
-"defines type of boundary elements to create, either of { "
-"SMESH.BND_2DFROM3D, SMESH.BND_1DFROM3D, SMESH.BND_1DFROM2D }"
-msgstr ""
-
-# 38a16fac79d842e89a1407dd14af479c
-#: smeshBuilder.Mesh.MakeBoundaryElements:6
-msgid ""
-"a name of group to store all boundary elements in, \"\" means not to "
-"create the group"
-msgstr ""
-
-# 011acb65638d4176b040bd74e5f1280d
-#: smeshBuilder.Mesh.MakeBoundaryElements:8
-msgid ""
-"a name of a new mesh, which is a copy of the initial mesh + created "
-"boundary elements; \"\" means not to create the new mesh"
-msgstr ""
-
-# 7577b706340840bd9b0805e0509959d9
-#: smeshBuilder.Mesh.MakeBoundaryElements:10
-msgid ""
-"if true, the whole initial mesh will be copied into the new mesh else "
-"only boundary elements will be copied into the new mesh"
-msgstr ""
-
-# cca217aabce54aa1945bd37e1c159538
-#: smeshBuilder.Mesh.MakeBoundaryElements:12
-msgid "groups of elements to make boundary around"
-msgstr ""
-
-# 9d609c784c6d44afa02f8d0bfb07eae3
-#: smeshBuilder.Mesh.MakeBoundaryElements:14
-msgid ""
-"tuple( long, mesh, groups )         long - number of added boundary "
-"elements         mesh - the mesh where elements were added to         "
-"group - the group of boundary elements or None"
-msgstr ""
-
-# 8d027f74bab2465abbdfed0476555460
-#: smeshBuilder.Mesh.MakeBoundaryElements:18
-msgid "tuple( long, mesh, groups )"
-msgstr ""
-
-# adebcdabdd404ff2b2380c3751c0f0c1
-#: smeshBuilder.Mesh.MakeBoundaryElements:17
-msgid ""
-"long - number of added boundary elements mesh - the mesh where elements "
-"were added to group - the group of boundary elements or None"
-msgstr ""
-
-# ae071eda0c29422b99c6d98c4920cd6a
-#: smeshBuilder.Mesh.MakeBoundaryMesh:1
-msgid "Create missing boundary elements"
-msgstr ""
-
-# b1c932b14df54c99a1248a409918a6dc
-#: smeshBuilder.Mesh.MakeBoundaryMesh:3
-msgid ""
-"elements whose boundary is to be checked: mesh, group, sub-mesh or list "
-"of elements if elements is mesh, it must be the mesh whose "
-"MakeBoundaryMesh() is called"
-msgstr ""
-
-# 24358831c2eb462ebd347d7141b9170d
-#: smeshBuilder.Mesh.MakeBoundaryMesh:6
-msgid ""
-"defines type of boundary elements to create, either of { "
-"SMESH.BND_2DFROM3D, SMESH.BND_1DFROM3D, SMESH.BND_1DFROM2D } "
-"SMESH.BND_1DFROM3D create mesh edges on all borders of free facets of 3D "
-"cells"
-msgstr ""
-
-# 894bfb5336614c4683b8cf4e7a9932e6
-#: smeshBuilder.Mesh.MakeBoundaryMesh:9
-msgid ""
-"a name of group to store created boundary elements in, \"\" means not to "
-"create the group"
-msgstr ""
-
-# f4fc9f2948d3441494054e8745b62c0d
-#: smeshBuilder.Mesh.MakeBoundaryMesh:11
-msgid ""
-"a name of new mesh to store created boundary elements in, \"\" means not "
-"to create the new mesh"
-msgstr ""
-
-# c6ce9ba1a4c84074bb985a997e78f0c0
-#: smeshBuilder.Mesh.MakeBoundaryMesh:13
-msgid ""
-"if true, the checked elements will be copied into the new mesh else only "
-"boundary elements will be copied into the new mesh"
-msgstr ""
-
-# d4847990ea9c42f1923187fed20f8fba
-#: smeshBuilder.Mesh.MakeBoundaryMesh:15
-msgid ""
-"if true, not only new but also pre-existing boundary elements will be "
-"copied into the new mesh"
-msgstr ""
-
-# 8307c137c0e349f6b0ceb687f337ccbe
-#: smeshBuilder.Mesh.MakeBoundaryMesh:18
-msgid "tuple (mesh, group) where boundary elements were added to"
-msgstr ""
-
-# 0c09e443bb904a449fc5989449c015a4
-#: smeshBuilder.Mesh.MakeGroup:1
-msgid "Create a mesh group by the given conditions"
-msgstr ""
-
-# d261dde9ae2a418e8891542422543393
-# 845e83642d7542629bef5b14d53be9a3
-#: smeshBuilder.Mesh.MakeGroup:4 smeshBuilder.smeshBuilder.GetCriterion:4
-msgid "the type of elements(SMESH.NODE, SMESH.EDGE, SMESH.FACE, SMESH.VOLUME)"
-msgstr ""
-
-# cc6ff34108d04fa6ad57c0ca71c61100
-# 74b2a4e8fbe54cd59719585dc091973e
-# 6cd59e1799d14ed79d35b81da8c3a602
-#: smeshBuilder.Mesh.MakeGroup:5 smeshBuilder.smeshBuilder.GetCriterion:5
-#: smeshBuilder.smeshBuilder.GetFilter:4
-msgid ""
-"the type of criterion (SMESH.FT_Taper, SMESH.FT_Area, etc.) Type "
-"SMESH.FunctorType._items in the Python Console to see all values. Note "
-"that the items starting from FT_LessThan are not suitable for CritType."
-msgstr ""
-
-# 9b293a1afc084bbca409c360cfd4943e
-# db5f05c67d924099bf2254cdadc3e80e
-# 1efb271c7f9749c48259a9e5552aca05
-#: smeshBuilder.Mesh.MakeGroup:8 smeshBuilder.smeshBuilder.GetCriterion:8
-#: smeshBuilder.smeshBuilder.GetFilter:7
-msgid "belongs to {SMESH.FT_LessThan, SMESH.FT_MoreThan, SMESH.FT_EqualTo}"
-msgstr ""
-
-# 56c6b0819e7649ed91f398f4dac17995
-# 18bc56446fbb4d45887b68086c47a97a
-# 025def87d0094069930e588af2bdfe23
-#: smeshBuilder.Mesh.MakeGroup:9 smeshBuilder.smeshBuilder.GetCriterion:9
-#: smeshBuilder.smeshBuilder.GetFilter:8
-msgid "the threshold value (range of ids as string, shape, numeric)"
-msgstr ""
-
-# 1484d47c52b54922990605b3f8b292c4
-# 5986c162b6044a2a970ec558375eb9d2
-# 69cf181fd3004ea8adafccd51ee4f412
-#: smeshBuilder.Mesh.MakeGroup:10 smeshBuilder.smeshBuilder.GetCriterion:10
-#: smeshBuilder.smeshBuilder.GetFilter:9
-msgid "SMESH.FT_LogicalNOT or SMESH.FT_Undefined"
-msgstr ""
-
-# 089f9db7b1e84bdf8958a47b3af6a4a3
-# 25fae3e3a9ae4a44add94e927977f3dd
-#: smeshBuilder.Mesh.MakeGroup:11 smeshBuilder.smeshBuilder.GetCriterion:13
-msgid ""
-"the tolerance used by SMESH.FT_BelongToGeom, SMESH.FT_BelongToSurface, "
-"SMESH.FT_LyingOnGeom, SMESH.FT_CoplanarFaces criteria"
-msgstr ""
-
-# c7108bb795e14c758bd4460bcfba750a
-#: smeshBuilder.Mesh.MakeGroupByCriteria:1
-msgid "Create a mesh group by the given criteria (list of criteria)"
-msgstr ""
-
-# e7ac5a66f59045049fb2a63179cbb672
-#: smeshBuilder.Mesh.MakeGroupByCriteria:4
-msgid "the list of criteria"
-msgstr ""
-
-# b42485d614a1425e8a8eccf051dd9f79
-# d7c9e088bcac4b36ad1016e0e8bc228c
-#: smeshBuilder.Mesh.MakeGroupByCriteria:5
-#: smeshBuilder.smeshBuilder.GetFilterFromCriteria:4
-msgid "binary operator used when binary operator of criteria is undefined"
-msgstr ""
-
-# 34e9f5f3630242ec9f88e2fb07f2999f
-#: smeshBuilder.Mesh.MakeGroupByCriterion:1
-msgid "Create a mesh group by the given criterion"
-msgstr ""
-
-# 64654da33977437086e3341ce2e30636
-#: smeshBuilder.Mesh.MakeGroupByCriterion:4
-msgid "the instance of Criterion class"
-msgstr ""
-
-# f358290b80e24febb8992a8bf83bb36c
-#: smeshBuilder.Mesh.MakeGroupByFilter:1
-msgid "Create a mesh group by the given filter"
-msgstr ""
-
-# 503b8b60697e45a696b0c674d01579a2
-#: smeshBuilder.Mesh.MakeGroupByFilter:4
-msgid "the instance of Filter class"
-msgstr ""
-
-# 48d762738f4940bb8ae60094fa306f22
-#: smeshBuilder.Mesh.MakeGroupByIds:1
-msgid "Create a mesh group by the given ids of elements"
-msgstr ""
-
-# 83ccfc4f76fb49afa5801d01bf63dceb
-#: smeshBuilder.Mesh.MakeGroupByIds:6
-msgid "either the list of ids, group, sub-mesh, or filter"
-msgstr ""
-
-# 32e2bab874fc47a0a57609f86a3791c2
-#: smeshBuilder.Mesh.MakePolyLine:1
-msgid ""
-"Create a polyline consisting of 1D mesh elements each lying on a 2D "
-"element of the initial mesh. Positions of new nodes are found by cutting "
-"the mesh by the plane passing through pairs of points specified by each "
-"PolySegment structure. If there are several paths connecting a pair of "
-"points, the shortest path is selected by the module. Position of the "
-"cutting plane is defined by the two points and an optional vector lying "
-"on the plane specified by a PolySegment. By default the vector is defined"
-" by Mesh module as following. A middle point of the two given points is "
-"computed. The middle point is projected to the mesh. The vector goes from"
-" the middle point to the projection point. In case of planar mesh, the "
-"vector is normal to the mesh."
-msgstr ""
-
-# bbfc468ee1ed4e24857acfebc27c04d1
-#: smeshBuilder.Mesh.MakePolyLine:16
-msgid "The used vector which goes from the middle point to its projection."
-msgstr ""
-
-# 2acb6fe0501440089ec9c370c7b944b4
-#: smeshBuilder.Mesh.MergeElements:1
-msgid "Merge elements in each given group."
-msgstr ""
-
-# 476112eae5354e668b8f025854128b99
-#: smeshBuilder.Mesh.MergeElements:3
-msgid ""
-"a list of groups of elements IDs for merging (e.g. [[1,12,13],[25,4]], "
-"then elements 12, 13 and 4 will be removed and replaced by elements 1 and"
-" 25 in all groups)"
-msgstr ""
-
-# 195eeb03d7204bdfb76f8eecf8a59552
-#: smeshBuilder.Mesh.MergeEqualElements:1
-msgid "Leave one element and remove all other elements built on the same nodes."
-msgstr ""
-
-# 221919e0fe904958871ee227e2eb7b6f
-#: smeshBuilder.Mesh.MergeNodes:1
-msgid "Merge nodes"
-msgstr ""
-
-# c8103fe1a26a43978730fb30e96fe408
-#: smeshBuilder.Mesh.MergeNodes:3
-msgid ""
-"a list of groups of nodes IDs for merging (e.g. [[1,12,13],[25,4]], then "
-"nodes 12, 13 and 4 will be removed and replaced by nodes 1 and 25 "
-"correspondingly in all elements and groups"
-msgstr ""
-
-# a36e97897dd54730956d349dec7c7e11
-#: smeshBuilder.Mesh.MergeNodes:6
-msgid ""
-"nodes to keep in the mesh: a list of groups, sub-meshes or node IDs. If "
-"*NodesToKeep* does not include a node to keep for some group to merge, "
-"then the first node in the group is kept."
-msgstr ""
-
-# 787b37de29724f1abe3fa9759f8becc1
-#: smeshBuilder.Mesh.MergeNodes:9
-msgid "prevent merging nodes which cause removal of elements becoming invalid"
-msgstr ""
-
-# a6caaf84dccf4d1a9afbd3d3fe878d9b
-#: smeshBuilder.Mesh.MeshDimension:2
-msgid ""
-"Return the mesh dimension depending on the dimension of the underlying "
-"shape"
-msgstr ""
-
-# d57868c7ebde495e92b2492eb07cbe72
-#: smeshBuilder.Mesh.MeshDimension:2
-msgid ""
-"or, if the mesh is not based on any shape, basing on deimension of "
-"elements"
-msgstr ""
-
-# d9129635a1474adf8c9f734082916b44
-#: smeshBuilder.Mesh.MeshDimension:4
-msgid "mesh dimension as an integer value [0,3]"
-msgstr ""
-
-# 6ec9ff213ba54076a32c70842eb09935
-# 431d585449fb43c5bc90a8c67a0b70c2
-#: smeshBuilder.Mesh.MeshToPassThroughAPoint:1
-#: smeshBuilder.Mesh.MoveClosestNodeToPoint:1
-msgid "Find the node closest to a point and moves it to a point location"
-msgstr ""
-
-# 9cdf102e076b45c781513235a257c86a
-#: smeshBuilder.Mesh.MeshToPassThroughAPoint:7
-msgid "the ID of a moved node"
-msgstr ""
-
-# c57e814e4b7b425ba1ea089330ed07be
-#: smeshBuilder.Mesh.MinDistance:1
-msgid "Get minimum distance between two nodes, elements or distance to the origin"
-msgstr ""
-
-# 7d11375edfe041c39f19bedf9bbf109f
-#: smeshBuilder.Mesh.MinDistance:8
-msgid "minimum distance value **GetMinDistance()**"
-msgstr ""
-
-# 6ec3ec4689ee4dfdaf269f701b46dbea
-#: smeshBuilder.Mesh.Mirror:1
-msgid "Create a symmetrical copy of mesh elements"
-msgstr ""
-
-# a745e2a0d2524a479647419a1f4613b3
-# b992b51bbfef488099ebce14cc5389e4
-# bdaf1c3763ec4e14a2e920d83eba804c
-# a4f96ef3620b43dcac78788135672f46
-#: smeshBuilder.Mesh.Mirror:3 smeshBuilder.Mesh.Rotate:3
-#: smeshBuilder.Mesh.Translate:3 smeshBuilder.Mesh.TranslateMakeMesh:3
-msgid "list of elements ids"
-msgstr ""
-
-# 579feadb5f014c7db3d6e5b28808c4e1
-#: smeshBuilder.Mesh.Mirror:4
-msgid "is AxisStruct or geom object(point, line, plane)"
-msgstr ""
-
-# b9f880240f6f4fbeb135d1611837a410
-# d776a146f6d2472faa9495f9e05e4f74
-# b7ecce6233ee4b14ab718490e9300f0c
-# 709450934f9a4558aa09aae415ec8b77
-#: smeshBuilder.Mesh.Mirror:5 smeshBuilder.Mesh.MirrorMakeMesh:5
-#: smeshBuilder.Mesh.MirrorObject:5 smeshBuilder.Mesh.MirrorObjectMakeMesh:5
-msgid ""
-"smeshBuilder.POINT, smeshBuilder.AXIS or smeshBuilder.PLANE If the Mirror"
-" is a geom object this parameter is unnecessary"
-msgstr ""
-
-# 34f765b3af464edd8cdeda2af4aac19d
-#: smeshBuilder.Mesh.Mirror:7
-msgid ""
-"allows to copy element (Copy is 1) or to replace with its mirroring (Copy"
-" is 0)"
-msgstr ""
-
-# 43673784b4f74f28aeb1f093267b935d
-# 7f5ee2abe6fc4bb0909bbb201f923fcc
-# 96d08431174e4cf38952ae2a7813856f
-# cebda19b855f47d4beeff530d0983615
-# 36c017f2868e41469b6ebc706527e9bb
-# bebfa499c2544bfc8d74b583dd8d4e82
-# 2989b421baa44a26b45dcecc5475facf
-#: smeshBuilder.Mesh.Mirror:8 smeshBuilder.Mesh.MirrorObject:8
-#: smeshBuilder.Mesh.Rotate:7 smeshBuilder.Mesh.RotateObject:7
-#: smeshBuilder.Mesh.Scale:7 smeshBuilder.Mesh.Translate:6
-#: smeshBuilder.Mesh.TranslateObject:6
-msgid "forces the generation of new groups from existing ones (if Copy)"
-msgstr ""
-
-# 15301a8e3428400a97eb51e6d92b1ace
-#: smeshBuilder.Mesh.MirrorMakeMesh:1
-msgid "Create a new mesh by a symmetrical copy of mesh elements"
-msgstr ""
-
-# 326148ed91084c178cf57202c662eaf6
-#: smeshBuilder.Mesh.MirrorMakeMesh:3
-msgid "the list of elements ids"
-msgstr ""
-
-# c2ac853fcc4a4ff19e2ffb05380b1ee7
-#: smeshBuilder.Mesh.MirrorMakeMesh:4
-msgid "is AxisStruct or geom object (point, line, plane)"
-msgstr ""
-
-# b751df94b8d54b2f84d54e2c5a6d3f7b
-#: smeshBuilder.Mesh.MirrorMakeMesh:8
-msgid "a name of the new mesh to create"
-msgstr ""
-
-# 6ab8e324dc214fcfaabac50f6c653e26
-# eedd8b882a4e40738dcb170f099a6e50
-# 5ae194b1fbe145109a594b9c1b46cecd
-# d422adbf9f7d4b9daad93aef2cd1b76c
-# 5ac22c9f7883474b9382e3f40e6cdeda
-# 52d229ced0e94ba4a112ea6bcb4ef3d8
-# 23e82e3e6d6d477b95660980bbcb9d66
-#: smeshBuilder.Mesh.MirrorMakeMesh:10
-#: smeshBuilder.Mesh.MirrorObjectMakeMesh:10 smeshBuilder.Mesh.RotateMakeMesh:9
-#: smeshBuilder.Mesh.RotateObjectMakeMesh:9 smeshBuilder.Mesh.ScaleMakeMesh:9
-#: smeshBuilder.Mesh.TranslateMakeMesh:8
-#: smeshBuilder.Mesh.TranslateObjectMakeMesh:8
-msgid "instance of Mesh class"
-msgstr ""
-
-# 680d63717ed14a6780c35c7fedd7a097
-#: smeshBuilder.Mesh.MirrorObject:1
-msgid "Create a symmetrical copy of the object"
-msgstr ""
-
-# 28d6b4dafb8c43058c2d199b4977e280
-# 2002ab036b6e49879e255cf4e298ffc9
-# feb60938f67546f983e0df8ea48f8419
-# 83eb7316cbc34f15bc742978e8715134
-# fe1613a2e2f14b899fe909eb253cf9b6
-# 045ad88f815a4e549fa7226399939447
-# e824919b8e6a49479297742f38aead04
-#: smeshBuilder.Mesh.MirrorObject:3 smeshBuilder.Mesh.MirrorObjectMakeMesh:3
-#: smeshBuilder.Mesh.ReorientObject:3 smeshBuilder.smeshBuilder.GetArea:3
-#: smeshBuilder.smeshBuilder.GetGravityCenter:3
-#: smeshBuilder.smeshBuilder.GetLength:3 smeshBuilder.smeshBuilder.GetVolume:3
-msgid "mesh, submesh or group"
-msgstr ""
-
-# 2b219079d14b4e29a3b4c60ece0a0071
-# 531f7eefbdb04a159898da6a2637b549
-#: smeshBuilder.Mesh.MirrorObject:4 smeshBuilder.Mesh.MirrorObjectMakeMesh:4
-msgid "AxisStruct or geom object (point, line, plane)"
-msgstr ""
-
-# 07cf3bc5f48a4f04a05204e800e4723d
-#: smeshBuilder.Mesh.MirrorObject:7
-msgid ""
-"allows copying the element (Copy is 1) or replacing it with its mirror "
-"(Copy is 0)"
-msgstr ""
-
-# 406a15954d7a4baab5725a901cca4c3c
-#: smeshBuilder.Mesh.MirrorObjectMakeMesh:1
-msgid "Create a new mesh by a symmetrical copy of the object"
-msgstr ""
-
-# 5b65d5d040644ddb8f1ce307cb197879
-#: smeshBuilder.Mesh.MirrorObjectMakeMesh:8
-msgid "the name of the new mesh to create"
-msgstr ""
-
-# 3b95f0ce8cf04f199b30546d7cc24882
-#: smeshBuilder.Mesh.MoveClosestNodeToPoint:6
-msgid ""
-"if specified (>0), the node with this ID is moved, otherwise, the node "
-"closest to point (*x*, *y*, *z*) is moved"
-msgstr ""
-
-# b7683da5c3274cceb10afc4239d1ecd3
-#: smeshBuilder.Mesh.MoveNode:1
-msgid "Move the node with the given id"
-msgstr ""
-
-# fbbe6aef51e04d118006334f95a046a3
-#: smeshBuilder.Mesh.MoveNode:3
-msgid "the id of the node"
-msgstr ""
-
-# cecdb900b3454cd9be19adea2c4b2e98
-#: smeshBuilder.Mesh.MoveNode:4
-msgid "a new X coordinate"
-msgstr ""
-
-# 1b685bea42de427ea877aa7d0a97940e
-#: smeshBuilder.Mesh.MoveNode:5
-msgid "a new Y coordinate"
-msgstr ""
-
-# 03a472028b274e26bd115804cf2278a3
-#: smeshBuilder.Mesh.MoveNode:6
-msgid "a new Z coordinate"
-msgstr ""
-
-# bec4a6d0fdb249099b01ae60855c777e
-# 731614669b5a418d9fcb87b407b2c8d4
-# 093f16da79c34e5682dac562a02e3ba8
-#: smeshBuilder.Mesh.MoveNode:8 smeshBuilder.Mesh.Reorient:5
-#: smeshBuilder.Mesh.ReorientObject:5
-msgid "True if succeed else False"
-msgstr ""
-
-# 670fa3a8470b4685b4ae0a036e08a59c
-#: smeshBuilder.Mesh.Nb0DElements:1
-msgid "Return the number of 0d elements in the mesh"
-msgstr ""
-
-# d501ceffcd2a4c74998c447ed0c647b1
-#: smeshBuilder.Mesh.NbBalls:1
-msgid "Return the number of ball discrete elements in the mesh"
-msgstr ""
-
-# 0b8c6b5ae0504a94b3c45f3ce3eea77a
-#: smeshBuilder.Mesh.NbBiQuadQuadrangles:1
-msgid "Return the number of biquadratic quadrangles in the mesh"
-msgstr ""
-
-# b3144a02e377499b8b59915e3b4fc185
-#: smeshBuilder.Mesh.NbBiQuadTriangles:1
-msgid "Return the number of biquadratic triangles in the mesh"
-msgstr ""
-
-# 2b30f9f5227343ffabba384a42057809
-#: smeshBuilder.Mesh.NbEdges:1
-msgid "Return the number of edges in the mesh"
-msgstr ""
-
-# dc932452561240c394b2a29b3b61ee8f
-#: smeshBuilder.Mesh.NbEdgesOfOrder:1
-msgid "Return the number of edges with the given order in the mesh"
-msgstr ""
-
-# 6890b9436e794324b31f247ab8d612c3
-# aac02ce9edb54783b761c28317b726ba
-#: smeshBuilder.Mesh.NbEdgesOfOrder:3 smeshBuilder.Mesh.NbVolumesOfOrder:3
-msgid "the order of elements:"
-msgstr ""
-
-# ad3e85312aa54059b1f4fc58ed741222
-#: smeshBuilder.Mesh.NbElements:1
-msgid "Return the number of elements in the mesh"
-msgstr ""
-
-# e198e4380a37401aa1ea8852aef3f68e
-#: smeshBuilder.Mesh.NbFaces:1
-msgid "Return the number of faces in the mesh"
-msgstr ""
-
-# 36cdef1f98ae471c9527b18bd4c3de81
-#: smeshBuilder.Mesh.NbFacesOfOrder:1
-msgid "Return the number of faces with the given order in the mesh"
-msgstr ""
-
-# a6bd2383cc5a49468d25e0bd6a52ee48
-# aa3907815d7342fb82e9c288451bf6a8
-# 8599df36cafc449290cc71cc673ed578
-# 3a4b4c07282e49069ab0afade1abfef9
-# e412b7d13f804b608e98945fa62a616a
-# 6ae31e9dcf084a829994792f03883fae
-#: smeshBuilder.Mesh.NbFacesOfOrder:3 smeshBuilder.Mesh.NbHexasOfOrder:3
-#: smeshBuilder.Mesh.NbPolygons:3 smeshBuilder.Mesh.NbPrismsOfOrder:3
-#: smeshBuilder.Mesh.NbPyramidsOfOrder:3 smeshBuilder.Mesh.NbTetrasOfOrder:3
-msgid ""
-"the order of elements: SMESH.ORDER_ANY, SMESH.ORDER_LINEAR or "
-"SMESH.ORDER_QUADRATIC"
-msgstr ""
-
-# 82e7ba6bcb1a46d7a94c4d6aa60e9ea2
-#: smeshBuilder.Mesh.NbGroups:1
-msgid "Get the number of groups existing in the mesh"
-msgstr ""
-
-# dbdc6f970d1e4c6c8edaa6bed05a6c79
-#: smeshBuilder.Mesh.NbGroups:3
-msgid "the quantity of groups as an integer value"
-msgstr ""
-
-# 79542c5fd7a6423a983e0b2d93103ee1
-#: smeshBuilder.Mesh.NbHexagonalPrisms:1
-msgid "Return the number of hexagonal prisms in the mesh"
-msgstr ""
-
-# d4d8535c80c24d608e03068c4308d057
-#: smeshBuilder.Mesh.NbHexas:1
-msgid "Return the number of hexahedrons in the mesh"
-msgstr ""
-
-# 4847206a982047ee848665c402fbd168
-#: smeshBuilder.Mesh.NbHexasOfOrder:1
-msgid "Return the number of hexahedrons with the given order in the mesh"
-msgstr ""
-
-# 4548aa650fc04928a0ac41d290d393b0
-#: smeshBuilder.Mesh.NbNodes:1
-msgid "Return the number of nodes in the mesh"
-msgstr ""
-
-# e0d773c05c0b4ef6babee05c46d254d2
-#: smeshBuilder.Mesh.NbPolygons:1
-msgid "Return the number of polygons of given order in the mesh"
-msgstr ""
-
-# 3e1ff178f86a43b8807b3979607defdb
-#: smeshBuilder.Mesh.NbPolyhedrons:1
-msgid "Return the number of polyhedrons in the mesh"
-msgstr ""
-
-# 63cc7d5b71514b0f8af00645bf673251
-#: smeshBuilder.Mesh.NbPrisms:1
-msgid "Return the number of prisms in the mesh"
-msgstr ""
-
-# d6699f454dec462399f0d564c532e86e
-#: smeshBuilder.Mesh.NbPrismsOfOrder:1
-msgid "Return the number of prisms with the given order in the mesh"
-msgstr ""
-
-# 80130bf865d8431eb9e61b8086307110
-#: smeshBuilder.Mesh.NbPyramids:1
-msgid "Return the number of pyramids in the mesh"
-msgstr ""
-
-# 2f0fe1ba762e43878339fd3060725853
-#: smeshBuilder.Mesh.NbPyramidsOfOrder:1
-msgid "Return the number of pyramids with the given order in the mesh"
-msgstr ""
-
-# 52f07b311461435a9d497562cc961bae
-#: smeshBuilder.Mesh.NbQuadrangles:1
-msgid "Return the number of quadrangles in the mesh"
-msgstr ""
-
-# d95465267e8347b8a4b2f6af612557ad
-#: smeshBuilder.Mesh.NbQuadranglesOfOrder:1
-msgid "Return the number of quadrangles with the given order in the mesh"
-msgstr ""
-
-# 57de7ad16a0f41eaa957da136fdff65e
-#: smeshBuilder.Mesh.NbQuadranglesOfOrder:3
-msgid "SMESH.ORDER_ANY, SMESH.ORDER_LINEAR or SMESH.ORDER_QUADRATIC"
-msgstr ""
-
-# 67164544511441b4b0d32c6b9f225962
-#: smeshBuilder.Mesh.NbSubMesh:1
-msgid "Return the number of submeshes in the mesh"
-msgstr ""
-
-# 5cb169c024d04e359ac630a8804c401f
-#: smeshBuilder.Mesh.NbTetras:1
-msgid "Return the number of tetrahedrons in the mesh"
-msgstr ""
-
-# 02a1825526834ac7886a0444e0d2a80f
-#: smeshBuilder.Mesh.NbTetrasOfOrder:1
-msgid "Return the number of tetrahedrons with the given order in the mesh"
-msgstr ""
-
-# d8756ad0b11a4937b18491c584fc02de
-#: smeshBuilder.Mesh.NbTriQuadraticHexas:1
-msgid "Return the number of triquadratic hexahedrons in the mesh"
-msgstr ""
-
-# eeb021ae99fa44d9b11bed70d12094b9
-#: smeshBuilder.Mesh.NbTriangles:1
-msgid "Return the number of triangles in the mesh"
-msgstr ""
-
-# 8c2f12f3eafd4a258de569797fb88336
-#: smeshBuilder.Mesh.NbTrianglesOfOrder:1
-msgid "Return the number of triangles with the given order in the mesh"
-msgstr ""
-
-# 7c40dc1e55824c96a7dae0c6336fab61
-#: smeshBuilder.Mesh.NbTrianglesOfOrder:3
-msgid ""
-"is the order of elements: SMESH.ORDER_ANY, SMESH.ORDER_LINEAR or "
-"SMESH.ORDER_QUADRATIC"
-msgstr ""
-
-# 21a17409cc274a2d98ae1bcbf6cbd0d7
-#: smeshBuilder.Mesh.NbVolumes:1
-msgid "Return the number of volumes in the mesh"
-msgstr ""
-
-# 058e9b8e06604ac38d6ee5a260a85c24
-#: smeshBuilder.Mesh.NbVolumesOfOrder:1
-msgid "Return the number of volumes with the given order in the mesh"
-msgstr ""
-
-# 9ddafb5e414f488c9c1cb5086b25e62a
-#: smeshBuilder.Mesh.Offset:1
-msgid "Create an offset mesh from the given 2D object"
-msgstr ""
-
-# 4a46bf6c49554f599292b8c17912abfa
-#: smeshBuilder.Mesh.Offset:3
-msgid "the source object (mesh, submesh, group or filter)"
-msgstr ""
-
-# 15cd5bab10c14859bf6078d2fde74a3d
-#: smeshBuilder.Mesh.Offset:4
-msgid "signed offset size"
-msgstr ""
-
-# f5a23b39f00a4e22872c0edf1e9f590b
-#: smeshBuilder.Mesh.Offset:6
-msgid ""
-"the name of a mesh to create. If empty, offset elements are added to this"
-" mesh"
-msgstr ""
-
-# a1c918cd955b4249922ca451c7910c1f
-#: smeshBuilder.Mesh.Offset:8
-msgid "A tuple (mesh, list_of_groups)"
-msgstr ""
-
-# a7fed4a9f2564d98b6ff575480dfc9a9
-#: smeshBuilder.Mesh.Polygon:1
-msgid "Creates polygon 2D algorithm for faces"
-msgstr ""
-
-# c4aa966221e6499c866bca842fd41d9a
-#: smeshBuilder.Mesh.Polygon:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_PolygonPerFace`"
-msgstr ""
-
-# a5efe0036d4d45ca8e76534bd3c34e99
-#: smeshBuilder.Mesh.Prism:1
-msgid "Creates prism 3D algorithm for volumes"
-msgstr ""
-
-# 362f2e883b04436387d8455dcd58b56e
-#: smeshBuilder.Mesh.Prism:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see :class:`~StdMeshersBuilder.StdMeshersBuilder_Prism3D`, "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_RadialPrism3D`"
-msgstr ""
-
-# 79e9d89c0fcb40179d8d361ec75b8c07
-#: smeshBuilder.Mesh.Projection1D:1
-msgid "Creates projection 1D algorithm for edges"
-msgstr ""
-
-# 4b46f8cee000405bbbf6232ae78cb494
-#: smeshBuilder.Mesh.Projection1D:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Projection1D`"
-msgstr ""
-
-# 2cdf9d32946f4a77a938bae9c20cd018
-#: smeshBuilder.Mesh.Projection1D2D:1
-msgid "Creates projection 1D-2D algorithm for faces"
-msgstr ""
-
-# 6845ffcf6a0c40a488daeb8a5f884dbe
-#: smeshBuilder.Mesh.Projection1D2D:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Projection1D2D`"
-msgstr ""
-
-# 2ee52187f2864760b5fad2a7711fb059
-#: smeshBuilder.Mesh.Projection2D:1
-msgid "Creates projection 2D algorithm for faces"
-msgstr ""
-
-# 07aaf8e10d5a4d5a95b36c78cda32ef8
-#: smeshBuilder.Mesh.Projection2D:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Projection2D`"
-msgstr ""
-
-# 61c0a07bc3a74ac7b1e2eecb6501a9de
-#: smeshBuilder.Mesh.Projection3D:1
-msgid "Creates projection 3D algorithm for volumes"
-msgstr ""
-
-# 3700a20cd6c44cf2acfb4e15ea3148a1
-#: smeshBuilder.Mesh.Projection3D:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Projection3D`"
-msgstr ""
-
-# 6e01ae3c12aa4ef5a15e45ab44441226
-#: smeshBuilder.Mesh.QuadTo4Tri:2
-msgid ""
-"Split each of given quadrangles into 4 triangles. A node is added at the "
-"center of"
-msgstr ""
-
-# 0a3eb2933fdb4627bd752f7f602158ea
-#: smeshBuilder.Mesh.QuadTo4Tri:2
-msgid "a quadrangle."
-msgstr ""
-
-# 9cbecbb7567c4739a53ef2d5f87eb7e7
-#: smeshBuilder.Mesh.QuadTo4Tri:4
-msgid ""
-"the faces to be splitted. This can be either mesh, sub-mesh, group or a "
-"list of face IDs. By default all quadrangles are split"
-msgstr ""
-
-# df9ab2576d614883a99c8dca3fd6dbd1
-# c4b94dfcec7f41ffaa07a23d24cbb1dc
-# 5f1bd704812d4909966ab8da439102e2
-# 2bb666642c8f4b4e9a1448f2e0cb855b
-#: smeshBuilder.Mesh.QuadToTri:1 smeshBuilder.Mesh.QuadToTriObject:1
-#: smeshBuilder.Mesh.SplitQuad:1 smeshBuilder.Mesh.SplitQuadObject:1
-msgid "Split quadrangles into triangles."
-msgstr ""
-
-# 15fc9dd51f8e4d4eab45e9d08a3846b7
-#: smeshBuilder.Mesh.QuadToTri:3
-msgid "the faces to be splitted."
-msgstr ""
-
-# 5afa14b85fe346d9bded59b81b17cb60
-# 79e120449dcd4c24b568e4070708f20c
-#: smeshBuilder.Mesh.QuadToTri:4 smeshBuilder.Mesh.QuadToTriObject:5
-msgid ""
-"is a numerical functor, in terms of enum SMESH.FunctorType, used to "
-"choose a diagonal for splitting. If *theCriterion* is None, which is a "
-"default value, then quadrangles will be split by the smallest diagonal. "
-"Type SMESH.FunctorType._items in the Python Console to see all items. "
-"Note that not all items correspond to numerical functors."
-msgstr ""
-
-# 1ccaec17af174d5db92836e729aeb1a2
-# de70418984e146f4b8e8d71347166520
-# 5c883b518feb4bbc84d1a0ac15f11bb3
-# d801d5f498f247ffb42fbff6331a88e1
-# c1a8954be77440019b35e39f39eb4d3d
-# 2920afb213d24744b859074ba187f527
-# dd2f831f4baf4003a216b5afbecaa8d7
-# 2d0f87c275cd499bace2f26da5cf1126
-# 687ec889305b4060b91bab8a9d0f4948
-# 3fb5a38d191b4431bc849094d4ad1a6c
-# 396e2002c44048eebdfde2bfc4280f40
-# 04890505277c4149adad367e93f4ef41
-#: smeshBuilder.Mesh.QuadToTri:10 smeshBuilder.Mesh.QuadToTriObject:11
-#: smeshBuilder.Mesh.Smooth:11 smeshBuilder.Mesh.SmoothObject:11
-#: smeshBuilder.Mesh.SmoothParametric:11
-#: smeshBuilder.Mesh.SmoothParametricObject:11
-#: smeshBuilder.Mesh.SplitHexaToPrisms:12
-#: smeshBuilder.Mesh.SplitHexaToTetras:12 smeshBuilder.Mesh.SplitQuad:6
-#: smeshBuilder.Mesh.SplitQuadObject:7 smeshBuilder.Mesh.TriToQuad:12
-#: smeshBuilder.Mesh.TriToQuadObject:11
-msgid "TRUE in case of success, FALSE otherwise."
-msgstr ""
-
-# 28e61878a78742a2a5d24310b9109833
-# 22313872303847759cc7d1886300f035
-#: smeshBuilder.Mesh.QuadToTriObject:3 smeshBuilder.Mesh.SplitQuadObject:3
-msgid ""
-"the object from which the list of elements is taken, this is mesh, "
-"submesh or group"
-msgstr ""
-
-# c1355935a8414929ba8724b020b53106
-#: smeshBuilder.Mesh.Quadrangle:1
-msgid "Creates quadrangle 1D-2D algorithm for faces"
-msgstr ""
-
-# 780c3c191f8c4b4e853503c5e1b03063
-#: smeshBuilder.Mesh.Quadrangle:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_QuadMA_1D2D`, "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Quadrangle`, "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_RadialQuadrangle1D2D`"
-msgstr ""
-
-# 18aa60aa7dc34d05b24cb6ed8dd69075
-#: smeshBuilder.Mesh.RemoveElements:1
-msgid "Remove the elements from the mesh by ids"
-msgstr ""
-
-# 52497476e77d477f94b6cc7969cdb057
-#: smeshBuilder.Mesh.RemoveElements:3
-msgid "is a list of ids of elements to remove"
-msgstr ""
-
-# 71b6bdb185fa4b2ab85bfa8b9f53ee99
-#: smeshBuilder.Mesh.RemoveGlobalHypotheses:1
-msgid "Remove all global hypotheses"
-msgstr ""
-
-# 531161f35bc14a7485211e8a92da6cbb
-#: smeshBuilder.Mesh.RemoveGroup:1
-msgid "Remove a group"
-msgstr ""
-
-# 944e0f95201e4915adcea8761b15415f
-#: smeshBuilder.Mesh.RemoveGroupWithContents:1
-msgid "Remove a group with its contents"
-msgstr ""
-
-# 0ac7bd59f6b84b169cfe30cc32628fa7
-#: smeshBuilder.Mesh.RemoveHypothesis:1
-msgid "Unassign a hypothesis"
-msgstr ""
-
-# 1840ef4d358e4dc8867165b2e031514a
-#: smeshBuilder.Mesh.RemoveHypothesis:3
-msgid "a hypothesis to unassign"
-msgstr ""
-
-# 9ae559fd4abd4faf8ec97d4bd6220ce2
-#: smeshBuilder.Mesh.RemoveNodes:1
-msgid "Remove nodes from mesh by ids"
-msgstr ""
-
-# 1342bd219b5547698ca12a89dd3f6332
-#: smeshBuilder.Mesh.RemoveNodes:3
-msgid "is a list of ids of nodes to remove"
-msgstr ""
-
-# 5145a93d11024f9b92f00fdf4fa963ce
-#: smeshBuilder.Mesh.RemoveOrphanNodes:1
-msgid "Remove all orphan (free) nodes from mesh"
-msgstr ""
-
-# ba8d703a7bfa437882b1c9eaf3d57e0b
-#: smeshBuilder.Mesh.RemoveOrphanNodes:3
-msgid "number of the removed nodes"
-msgstr ""
-
-# a2c1bf7d413943be9940c65676ca1ef3
-#: smeshBuilder.Mesh.RenumberElements:1
-msgid "Renumber mesh elements (Obsole, does nothing)"
-msgstr ""
-
-# 2f9af83f40614ef99f726ebbb952d745
-#: smeshBuilder.Mesh.RenumberNodes:1
-msgid "Renumber mesh nodes (Obsolete, does nothing)"
-msgstr ""
-
-# 3800946ec831483facc93efc05c64e35
-#: smeshBuilder.Mesh.Reorient:1
-msgid "Reorient elements by ids"
-msgstr ""
-
-# b4ef190fa87340418f91f171cc37acf4
-#: smeshBuilder.Mesh.Reorient:3
-msgid "if undefined reorients all mesh elements"
-msgstr ""
-
-# 4dc2a37a4aa04e0388c5c685b533f954
-#: smeshBuilder.Mesh.Reorient2D:1
-msgid "Reorient faces contained in *the2DObject*."
-msgstr ""
-
-# d8272af15da84f548eda6e142b5c36d5
-#: smeshBuilder.Mesh.Reorient2D:3
-msgid "is a mesh, sub-mesh, group or list of IDs of 2D elements"
-msgstr ""
-
-# b470b8c851584d52b33c9ebb80cb5182
-#: smeshBuilder.Mesh.Reorient2D:4
-msgid ""
-"is a desired direction of normal of *theFace*. It can be either a GEOM "
-"vector or a list of coordinates [x,y,z]."
-msgstr ""
-
-# 1dfe8339852f40c2bc9c14d89f70fd38
-#: smeshBuilder.Mesh.Reorient2D:6
-msgid ""
-"defines a face of *the2DObject* whose normal will be compared with "
-"theDirection. It can be either ID of face or a point by which the face "
-"will be found. The point can be given as either a GEOM vertex or a list "
-"of point coordinates."
-msgstr ""
-
-# f5e76222c9384a80b95e9d6ca96d3d82
-#: smeshBuilder.Mesh.Reorient2D:11
-msgid "number of reoriented faces"
-msgstr ""
-
-# ae586f23352c48d48b1251fe4adf9753
-#: smeshBuilder.Mesh.Reorient2DBy3D:1
-msgid "Reorient faces according to adjacent volumes."
-msgstr ""
-
-# 5637d8472ceb48a5ac09a36dccb6508d
-#: smeshBuilder.Mesh.Reorient2DBy3D:3
-msgid "is a mesh, sub-mesh, group or list of either IDs of faces or face groups."
-msgstr ""
-
-# fbe444904126480189a2b4bff30451cc
-#: smeshBuilder.Mesh.Reorient2DBy3D:5
-msgid "is a mesh, sub-mesh, group or list of IDs of volumes."
-msgstr ""
-
-# 60dbe9aedc35403f8d8874ec23872b78
-#: smeshBuilder.Mesh.Reorient2DBy3D:6
-msgid ""
-"to orient faces to have their normals pointing either *outside* or "
-"*inside* the adjacent volumes."
-msgstr ""
-
-# 9a3f971661f04a978656f650cf470d62
-#: smeshBuilder.Mesh.Reorient2DBy3D:9
-msgid "number of reoriented faces."
-msgstr ""
-
-# 8e1e80ae27d441ebba256e29ad38bd7d
-#: smeshBuilder.Mesh.ReorientObject:1
-msgid "Reorient all elements of the object"
-msgstr ""
-
-# 5ea928bc815a4398a209441663a403f9
-#: smeshBuilder.Mesh.Rotate:1
-msgid "Rotate the elements"
-msgstr ""
-
-# e954892976094ed39e622ccd8ec63101
-# 10562946803448acae999b6f2976f66a
-# 55888f73ab01433f925725524854a2f8
-# 962f6d422de94f06b61d8b6e06c70918
-#: smeshBuilder.Mesh.Rotate:4 smeshBuilder.Mesh.RotateMakeMesh:4
-#: smeshBuilder.Mesh.RotateObject:4 smeshBuilder.Mesh.RotateObjectMakeMesh:4
-msgid "the axis of rotation (AxisStruct or geom line)"
-msgstr ""
-
-# e798b5f0a16f489ea5fe3bd238dedb9d
-# 45432baabead4d679497dba8cc56288e
-# d6094f394259402c985fcac3132cbd40
-#: smeshBuilder.Mesh.Rotate:5 smeshBuilder.Mesh.RotateMakeMesh:5
-#: smeshBuilder.Mesh.RotateObject:5
-msgid ""
-"the angle of rotation (in radians) or a name of variable which defines "
-"angle in degrees"
-msgstr ""
-
-# 7e244b1bc35a4b249902750e33fa262e
-# ab5609c4ae0543feb12e3a9859e6acfb
-#: smeshBuilder.Mesh.Rotate:6 smeshBuilder.Mesh.RotateObject:6
-msgid "allows copying the rotated elements"
-msgstr ""
-
-# c578891480344a5c9172e6bc52881e86
-#: smeshBuilder.Mesh.RotateMakeMesh:1
-msgid "Create a new mesh of rotated elements"
-msgstr ""
-
-# a7fe90db49234210a481c8840bd8d35f
-#: smeshBuilder.Mesh.RotateMakeMesh:3
-msgid "list of element ids"
-msgstr ""
-
-# 5392a24799aa46688fe6f744b0087926
-# 9c22c1ee008847ae8d82e9597d23f3b2
-# 0267bee47be141fea39f30df4b681134
-# 85d8ed7906774892a8a14539dfd79551
-# 39269db1a0c848c5bfe786ae85a90506
-#: smeshBuilder.Mesh.RotateMakeMesh:7 smeshBuilder.Mesh.RotateObjectMakeMesh:7
-#: smeshBuilder.Mesh.ScaleMakeMesh:7 smeshBuilder.Mesh.TranslateMakeMesh:6
-#: smeshBuilder.Mesh.TranslateObjectMakeMesh:6
-msgid "the name of the newly created mesh"
-msgstr ""
-
-# d3e52e486673421a9ea6e8f4b694acbd
-#: smeshBuilder.Mesh.RotateObject:1
-msgid "Rotate the object"
-msgstr ""
-
-# 95c57a2024e54d0988fdcde1ca100d67
-#: smeshBuilder.Mesh.RotateObject:3
-msgid "the object to rotate( mesh, submesh, or group)"
-msgstr ""
-
-# 96b9049d72ab4f9d86c5713ef9bb9951
-#: smeshBuilder.Mesh.RotateObjectMakeMesh:1
-msgid "Create a new mesh from the rotated object"
-msgstr ""
-
-# 0ba9e4936617484ca1544bdde3e358b0
-#: smeshBuilder.Mesh.RotateObjectMakeMesh:3
-msgid "the object to rotate (mesh, submesh, or group)"
-msgstr ""
-
-# 09760b1db434420ab3e961a9fd4fb7b4
-#: smeshBuilder.Mesh.RotateObjectMakeMesh:5
-msgid ""
-"the angle of rotation (in radians)  or a name of variable which defines "
-"angle in degrees"
-msgstr ""
-
-# fe557e8c67a148b58253f81d8d0538cc
-#: smeshBuilder.Mesh.RotationSweep:1
-msgid "Generate new elements by rotation of the elements around the axis"
-msgstr ""
-
-# d1e4e9b1519844f9acc592f489d8fcd5
-#: smeshBuilder.Mesh.RotationSweep:3
-msgid "the list of ids of elements to sweep"
-msgstr ""
-
-# 9211a84e790b4419902c42436351c846
-# d5f675a069314f15ac736657d8cf9444
-# c88319f350e84125a9df83c0aad9690c
-# 6cd9136f76cf4aa8b5897c13b67d376b
-#: smeshBuilder.Mesh.RotationSweep:4 smeshBuilder.Mesh.RotationSweepObject:5
-#: smeshBuilder.Mesh.RotationSweepObject1D:5
-#: smeshBuilder.Mesh.RotationSweepObject2D:5
-msgid "the axis of rotation, AxisStruct or line(geom object)"
-msgstr ""
-
-# c6ffb46f19e44786944747f834051cc0
-# e8df8bc96e2d4fceb187e5969dafd975
-#: smeshBuilder.Mesh.RotationSweep:5 smeshBuilder.Mesh.RotationSweepObjects:7
-msgid ""
-"the angle of Rotation (in radians) or a name of variable which defines "
-"angle in degrees"
-msgstr ""
-
-# ca822c2e5f9c4462b4a80b58014e2a37
-# c142b057b52d4fb3879369ca5db72d7d
-# eeddbd9d68014ae594339a2082b26077
-# 0c5a26aa8a37439e83ba944d3489d28d
-# 96280e8fbd3d4a71904640bd12d1e61c
-#: smeshBuilder.Mesh.RotationSweep:7 smeshBuilder.Mesh.RotationSweepObject:8
-#: smeshBuilder.Mesh.RotationSweepObject1D:8
-#: smeshBuilder.Mesh.RotationSweepObject2D:8
-#: smeshBuilder.Mesh.RotationSweepObjects:10
-msgid "tolerance"
-msgstr ""
-
-# e8509709ee544b34abe00c1057b16b07
-# 5085fcbc4a944b7c8fc2811f1d345f71
-# 348f89957de441f0a2c549ebe199e7cf
-# b45308058f394e82b1b25a958770df86
-# cc49391df0ed4ff6b1264ae74382b8db
-#: smeshBuilder.Mesh.RotationSweep:9 smeshBuilder.Mesh.RotationSweepObject:10
-#: smeshBuilder.Mesh.RotationSweepObject1D:10
-#: smeshBuilder.Mesh.RotationSweepObject2D:10
-#: smeshBuilder.Mesh.RotationSweepObjects:12
-msgid ""
-"gives meaning of AngleInRadians: if True then it is an angular size of "
-"all steps, else - size of each step"
-msgstr ""
-
-# 3e521d72e9b54647956f4998b9bc0840
-# 38ed78d4c6384975a31150a167a7200e
-# 39e9331e693d43feb9064f38bd62b5af
-#: smeshBuilder.Mesh.RotationSweepObject:3
-#: smeshBuilder.Mesh.RotationSweepObject1D:3
-#: smeshBuilder.Mesh.RotationSweepObject2D:3
-msgid ""
-"Generate new elements by rotation of the elements of object around the "
-"axis"
-msgstr ""
-
-# 6ff4a11fa8254d849ea6a6f450ad14b7
-#: smeshBuilder.Mesh.RotationSweepObject:3
-msgid "theObject object which elements should be sweeped."
-msgstr ""
-
-# 83137c2b41aa4987a2ac3b710b34ba39
-#: smeshBuilder.Mesh.RotationSweepObject:3
-msgid "It can be a mesh, a sub mesh or a group."
-msgstr ""
-
-# c2da4840d98a474db629486e051739a5
-# 03c1653e504e4c63baa5308e290066b1
-# 9b064e635b1b47afae1cf78d3bd06a4e
-#: smeshBuilder.Mesh.RotationSweepObject:6
-#: smeshBuilder.Mesh.RotationSweepObject1D:6
-#: smeshBuilder.Mesh.RotationSweepObject2D:6
-msgid "the angle of Rotation"
-msgstr ""
-
-# 42a1b003000b4db59e9059a225054d33
-# 7365124f63a1490e928f494a6b33544e
-# c79a165ad4eb41f3bef3656052bd44a1
-#: smeshBuilder.Mesh.RotationSweepObject:7
-#: smeshBuilder.Mesh.RotationSweepObject1D:7
-#: smeshBuilder.Mesh.RotationSweepObject2D:7
-msgid "number of steps"
-msgstr ""
-
-# 1ef2426d19214a939ebeeacd22d1fcce
-# a0ed37cee1934ff690659176a69546bb
-#: smeshBuilder.Mesh.RotationSweepObject1D:2
-#: smeshBuilder.Mesh.RotationSweepObject2D:2
-msgid ""
-"theObject object which elements should be sweeped. It can be a mesh, a "
-"sub mesh or a group."
-msgstr ""
-
-# 175eb1156d0b4d8e939bf5e38beab96d
-#: smeshBuilder.Mesh.RotationSweepObjects:1
-msgid ""
-"Generate new elements by rotation of the given elements and nodes around "
-"the axis"
-msgstr ""
-
-# 6a195e01b87c4606a7251857ab2ec93c
-#: smeshBuilder.Mesh.RotationSweepObjects:3
-msgid "nodes to revolve: a list including ids, groups, sub-meshes or a mesh"
-msgstr ""
-
-# a50ab2030df843489629d6fa3cccf965
-#: smeshBuilder.Mesh.RotationSweepObjects:4
-msgid "edges to revolve: a list including ids, groups, sub-meshes or a mesh"
-msgstr ""
-
-# ddbef521730744c8b6085191aef64171
-#: smeshBuilder.Mesh.RotationSweepObjects:5
-msgid "faces to revolve: a list including ids, groups, sub-meshes or a mesh"
-msgstr ""
-
-# 1a38daae3d774ca6b93bb94500bd7438
-#: smeshBuilder.Mesh.RotationSweepObjects:6
-msgid "the axis of rotation: AxisStruct, line (geom object) or [x,y,z,dx,dy,dz]"
-msgstr ""
-
-# d485b5e3d56a4605a5ee381e343e9af5
-#: smeshBuilder.Mesh.Scale:1
-msgid "Scale the object"
-msgstr ""
-
-# 9349610dc317409a94bb4636d8f3ac63
-# e86292bb047f46bc8df75ad2a36a1c76
-# 097cd26b2a6c4a84872f83ca5289dadb
-# f1c57c7f726348e1b93baf9df40effd9
-#: smeshBuilder.Mesh.Scale:3 smeshBuilder.Mesh.ScaleMakeMesh:3
-#: smeshBuilder.Mesh.TranslateObject:3
-#: smeshBuilder.Mesh.TranslateObjectMakeMesh:3
-msgid "the object to translate (mesh, submesh, or group)"
-msgstr ""
-
-# c3ffaa87871c4f31b8ee204f1576e269
-# c4d7c82dfb6d417196eab97dba7115b2
-#: smeshBuilder.Mesh.Scale:4 smeshBuilder.Mesh.ScaleMakeMesh:4
-msgid "base point for scale (SMESH.PointStruct or list of 3 coordinates)"
-msgstr ""
-
-# 4baa1ceacd5f42069f7a7962b37d8fc4
-# 315b80ffc63c420e9fc5a6ab6ec45e7d
-#: smeshBuilder.Mesh.Scale:5 smeshBuilder.Mesh.ScaleMakeMesh:5
-msgid "list of 1-3 scale factors for axises"
-msgstr ""
-
-# 9e3df2ff23b5437fb6333c2b7d2695cb
-# cb4f6388baba40d584079a9e9d1cea41
-# 69d4d2544a814039ac7c35a470a817d5
-#: smeshBuilder.Mesh.Scale:6 smeshBuilder.Mesh.Translate:5
-#: smeshBuilder.Mesh.TranslateObject:5
-msgid "allows copying the translated elements"
-msgstr ""
-
-# b0cf7c8ebe434810b5873f3aff0bff81
-#: smeshBuilder.Mesh.Scale:10
-msgid ""
-"list of created groups (SMESH_GroupBase) if MakeGroups=True,     empty "
-"list otherwise"
-msgstr ""
-
-# d2cb4ab4f1ae42a2920330e679e3b7fa
-#: smeshBuilder.Mesh.Scale:12
-msgid "list of created groups (SMESH_GroupBase) if MakeGroups=True,"
-msgstr ""
-
-# 57fde673f9504e969e0987a1252948dc
-#: smeshBuilder.Mesh.Scale:13
-msgid "empty list otherwise"
-msgstr ""
-
-# 1200247e0a624a838e3bf6d74bef3c4b
-# effc1b5bf6ca449799137ed686f365e4
-#: smeshBuilder.Mesh.ScaleMakeMesh:1
-#: smeshBuilder.Mesh.TranslateObjectMakeMesh:1
-msgid "Create a new mesh from the translated object"
-msgstr ""
-
-# 2c1d2182a39644cc88b9d9122f0dc258
-#: smeshBuilder.Mesh.Segment:1
-msgid "Creates segment 1D algorithm for edges"
-msgstr ""
-
-# 303a9c89b17a4e02baced43d644c89d7
-#: smeshBuilder.Mesh.Segment:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_CompositeSegment`, "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Segment`, "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Segment_Python`"
-msgstr ""
-
-# 661e60226aaa41c79290fc109259f9ae
-#: smeshBuilder.Mesh.SetAutoColor:1
-msgid "Toggle auto color mode on the object."
-msgstr ""
-
-# ec7a121d4c67443d8076e360fb4bd67c
-#: smeshBuilder.Mesh.SetAutoColor:3
-msgid "the flag which toggles auto color mode."
-msgstr ""
-
-# e77ac0bcdb734859813e04aaa87a666b
-#: smeshBuilder.Mesh.SetAutoColor:5
-msgid ""
-"If switched on, a default color of a new group in Create Group dialog is "
-"chosen randomly."
-msgstr ""
-
-# 08a82d364f3a4464b28731243b47626a
-#: smeshBuilder.Mesh.SetMesh:1
-msgid "Initialize the Mesh object from an instance of SMESH_Mesh interface"
-msgstr ""
-
-# 63e36ea4c5f8437ea6e9ffa779851d50
-#: smeshBuilder.Mesh.SetMeshElementOnShape:1
-msgid "**Bind** an element to a shape"
-msgstr ""
-
-# 7a881589da124ec2916e73996f3990cb
-#: smeshBuilder.Mesh.SetMeshElementOnShape:3
-msgid "an element ID"
-msgstr ""
-
-# e2b27a38a0214b2f839dac8c803e2adf
-#: smeshBuilder.Mesh.SetMeshElementOnShape:4
-msgid "a shape or shape ID"
-msgstr ""
-
-# 403967f5bc554908ba47c9f40ea04ff9
-# 46fe30741b9443cca403648eda1c5736
-# f31170811fc84bf5bcc942d418443269
-# 5ef6df96a6204edb9eccc5b3339edfe1
-# 6e9e7b0e2f4f4674ae1155e966be7ba0
-#: smeshBuilder.Mesh.SetMeshElementOnShape:6
-#: smeshBuilder.Mesh.SetNodeInVolume:6 smeshBuilder.Mesh.SetNodeOnEdge:7
-#: smeshBuilder.Mesh.SetNodeOnFace:8 smeshBuilder.Mesh.SetNodeOnVertex:6
-msgid "True if succeed else raises an exception"
-msgstr ""
-
-# 89da82c2d185491ba1b3438ffd4bcd0f
-#: smeshBuilder.Mesh.SetMeshOrder:1
-msgid "Set order in which concurrent sub-meshes should be meshed"
-msgstr ""
-
-# 811de34c15c44eb68bdbf9c986369fa8
-#: smeshBuilder.Mesh.SetName:1
-msgid "Set a name to the mesh"
-msgstr ""
-
-# fd48e24790f64bf797557a046edd4f69
-#: smeshBuilder.Mesh.SetName:3
-msgid "a new name of the mesh"
-msgstr ""
-
-# fe130067b4aa46ad9ae22380b3fdbca8
-#: smeshBuilder.Mesh.SetNodeInVolume:1
-msgid "**Binds** a node to a solid"
-msgstr ""
-
-# 03d2c18b66664faf8c079cd58635393a
-# 8a43f5a0707246e8bd0a60eda6633710
-# 2b309e8431bd4c83b0f0cd19e83aa86a
-# 99f40985ffdb4a349a3aad9abe4d1ff9
-#: smeshBuilder.Mesh.SetNodeInVolume:3 smeshBuilder.Mesh.SetNodeOnEdge:3
-#: smeshBuilder.Mesh.SetNodeOnFace:3 smeshBuilder.Mesh.SetNodeOnVertex:3
-msgid "a node ID"
-msgstr ""
-
-# 2b4c61df89e04b01847397f8b2c82df5
-#: smeshBuilder.Mesh.SetNodeInVolume:4
-msgid "a solid or solid ID"
-msgstr ""
-
-# 0ff7d43597fc44538393c0999a1cecca
-#: smeshBuilder.Mesh.SetNodeOnEdge:1
-msgid "**Stores** the node position on an edge"
-msgstr ""
-
-# d4ddcede81c2471a8fac785855ca77e0
-#: smeshBuilder.Mesh.SetNodeOnEdge:4
-msgid "an edge or edge ID"
-msgstr ""
-
-# 117ddee40f9a4e3c9aec1f900c06f18f
-#: smeshBuilder.Mesh.SetNodeOnEdge:5
-msgid "a parameter on the edge where the node is located"
-msgstr ""
-
-# 9c35fc3be1664fa5a0b91fe86487d477
-#: smeshBuilder.Mesh.SetNodeOnFace:1
-msgid "**Stores** node position on a face"
-msgstr ""
-
-# 1e0300ec5db64dcb97fd9b250d6408c2
-#: smeshBuilder.Mesh.SetNodeOnFace:4
-msgid "a face or face ID"
-msgstr ""
-
-# f47c78dd5618421fbbac1a243ee20bcc
-#: smeshBuilder.Mesh.SetNodeOnFace:5
-msgid "U parameter on the face where the node is located"
-msgstr ""
-
-# 522e881bacb446eab4d56e76219740a5
-#: smeshBuilder.Mesh.SetNodeOnFace:6
-msgid "V parameter on the face where the node is located"
-msgstr ""
-
-# 66aa045902f645528ae9bcede1f131f2
-#: smeshBuilder.Mesh.SetNodeOnVertex:1
-msgid "**Binds** a node to a vertex"
-msgstr ""
-
-# 34fd1639b2954718b9e54e77581243f5
-#: smeshBuilder.Mesh.SetNodeOnVertex:4
-msgid "a vertex or vertex ID"
-msgstr ""
-
-# 23fe317488f44517b67558e687218654
-#: smeshBuilder.Mesh.SetShape:1
-msgid "Associate the given shape to the mesh (entails the recreation of the mesh)"
-msgstr ""
-
-# 71ac1481f61142d9b91596e761583f26
-#: smeshBuilder.Mesh.SetShape:3
-msgid "the shape to be meshed (GEOM_Object)"
-msgstr ""
-
-# c180cee81aa8405cbc15aed055ef3ad8
-#: smeshBuilder.Mesh.SewBorderToSide:1
-msgid "Sew border to side"
-msgstr ""
-
-# 247d4b291c5e489fa6d6b0f9fc3a32ae
-# db3be725c2354b6daa302e520daa3b3f
-# 54b2a73647c74c72b6fdda61e0edc573
-# dac7dc6664694b85892bc570a3a3ebd4
-#: smeshBuilder.Mesh.SewBorderToSide:3
-#: smeshBuilder.Mesh.SewConformFreeBorders:3 smeshBuilder.Mesh.SewFreeBorders:3
-#: smeshBuilder.Mesh.SewSideElements:8
-msgid "SMESH::Sew_Error"
-msgstr ""
-
-# 9581a6589d2b49cbb7b7efa5430ad85f
-#: smeshBuilder.Mesh.SewCoincidentFreeBorders:1
-msgid "Sew FreeBorder's of each group"
-msgstr ""
-
-# 00151bb72d41477aaf45c78e70c4a6c2
-#: smeshBuilder.Mesh.SewCoincidentFreeBorders:3
-msgid ""
-"either a SMESH.CoincidentFreeBorders structure or a list of lists where "
-"each enclosed list contains node IDs of a group of coincident free "
-"borders such that each consequent triple of IDs within a group describes "
-"a free border in a usual way: n1, n2, nLast - i.e. 1st node, 2nd node and"
-" last node of a border. For example [[1, 2, 10, 20, 21, 40], [11, 12, 15,"
-" 55, 54, 41]] describes two groups of coincident free borders, each group"
-" including two borders."
-msgstr ""
-
-# 6a9559e8500e407cba61089e55f942a0
-#: smeshBuilder.Mesh.SewCoincidentFreeBorders:10
-msgid ""
-"if :code:`True` faces adjacent to free borders are converted to polygons "
-"if a node of opposite border falls on a face edge, else such faces are "
-"split into several ones."
-msgstr ""
-
-# b47cc13c966547fbbc8d41a665052df0
-#: smeshBuilder.Mesh.SewCoincidentFreeBorders:13
-msgid ""
-"if :code:`True` volumes adjacent to free borders are converted to "
-"polyhedra if a node of opposite border falls on a volume edge, else such "
-"volumes, if any, remain intact and the mesh becomes non-conformal."
-msgstr ""
-
-# 706b5650355b4680aa31397eefeb062b
-#: smeshBuilder.Mesh.SewCoincidentFreeBorders:17
-msgid "a number of successfully sewed groups"
-msgstr ""
-
-# 4faf414d9f6247478f655942a32e226b
-#: smeshBuilder.Mesh.SewConformFreeBorders:1
-msgid "Sew conform free borders"
-msgstr ""
-
-# 6989a27e9d7144f6bf6024e5b7976964
-#: smeshBuilder.Mesh.SewFreeBorders:1
-msgid "Sew free borders"
-msgstr ""
-
-# abe4dc973c4c45289e323636555f783d
-#: smeshBuilder.Mesh.SewSideElements:6
-msgid "Sew two sides of a mesh. The nodes belonging to Side1 are"
-msgstr ""
-
-# 7f02e00eeacc4238a2e839413f4d161b
-#: smeshBuilder.Mesh.SewSideElements:2
-msgid ""
-"merged with the nodes of elements of Side2. The number of elements in "
-"theSide1 and in theSide2 must be equal and they should have similar nodal"
-" connectivity. The nodes to merge should belong to side borders and the "
-"first node should be linked to the second."
-msgstr ""
-
-# 02ef543e86a84d878888c6557d270aa5
-#: smeshBuilder.Mesh.Smooth:1
-msgid "Smooth elements"
-msgstr ""
-
-# 154cfe14533541fa8a9dc5d094d18134
-# 681b85e0f9b34ff38a8bded1c5e57b3f
-#: smeshBuilder.Mesh.Smooth:3 smeshBuilder.Mesh.SmoothParametric:3
-msgid "the list if ids of elements to smooth"
-msgstr ""
-
-# 6043c44f91d440ff8e3c5876e05bc21d
-# ecca2e50c4e44801bf3eb0b1700f9aa1
-# 37944ec3c2a142cd874370885d827588
-# 6632d80e7d6046a383142af30915c493
-#: smeshBuilder.Mesh.Smooth:4 smeshBuilder.Mesh.SmoothObject:4
-#: smeshBuilder.Mesh.SmoothParametric:4
-#: smeshBuilder.Mesh.SmoothParametricObject:4
-msgid ""
-"the list of ids of fixed nodes. Note that nodes built on edges and "
-"boundary nodes are always fixed."
-msgstr ""
-
-# 3cb948f7af214de08854f38efab9635e
-# 17b452585e294d2ca832a7da9309c6f1
-# ab788dc8758e47918488e51a8e8b58a9
-# ac9daca9714b4418b5359f235ca22730
-#: smeshBuilder.Mesh.Smooth:6 smeshBuilder.Mesh.SmoothObject:6
-#: smeshBuilder.Mesh.SmoothParametric:6
-#: smeshBuilder.Mesh.SmoothParametricObject:6
-msgid "the maximum number of iterations"
-msgstr ""
-
-# 9e006112d0df4780a0e225569a1d899e
-# 0f2f3ce4e96149018785a0e0f3ca2fb8
-# d2eef6dce8004e329fb5c508a4e1f74c
-# a456d0c936334517ba0eab92d7e0b0e1
-#: smeshBuilder.Mesh.Smooth:7 smeshBuilder.Mesh.SmoothObject:7
-#: smeshBuilder.Mesh.SmoothParametric:7
-#: smeshBuilder.Mesh.SmoothParametricObject:7
-msgid "varies in range [1.0, inf]"
-msgstr ""
-
-# 0c9cb6954b814290856ded0aeca3e4ca
-# 1a61a34c795e45ba9fedce22dcc5a05b
-# 5902aed0839640a08634ab11ae1a1e84
-# b14aff06b3c84f00a098ff176c3f7fec
-#: smeshBuilder.Mesh.Smooth:8 smeshBuilder.Mesh.SmoothObject:8
-#: smeshBuilder.Mesh.SmoothParametric:8
-#: smeshBuilder.Mesh.SmoothParametricObject:8
-msgid ""
-"is either Laplacian (smesh.LAPLACIAN_SMOOTH) or Centroidal "
-"(smesh.CENTROIDAL_SMOOTH)"
-msgstr ""
-
-# 665ad5c99b10496fa48cbd504d8942f8
-#: smeshBuilder.Mesh.SmoothObject:1
-msgid "Smooth elements which belong to the given object"
-msgstr ""
-
-# 52fb4c0b32b64cfcaa055f6cccc7578e
-# 48bb8ef9d7d14429ab25b85ed928e1d0
-#: smeshBuilder.Mesh.SmoothObject:3 smeshBuilder.Mesh.SmoothParametricObject:3
-msgid "the object to smooth"
-msgstr ""
-
-# 41e15641f0b349cfae899721a9dd3cbe
-#: smeshBuilder.Mesh.SmoothParametric:1
-msgid "Parametrically smooth the given elements"
-msgstr ""
-
-# b1c05f2c1fa04bafbdb3257c1213b729
-#: smeshBuilder.Mesh.SmoothParametricObject:1
-msgid "Parametrically smooth the elements which belong to the given object"
-msgstr ""
-
-# a740780fc50b40ef81571682246bb7cf
-#: smeshBuilder.Mesh.SplitBiQuadraticIntoLinear:1
-msgid ""
-"Split bi-quadratic elements into linear ones without creation of "
-"additional nodes:"
-msgstr ""
-
-# f83f2305134d44c78660269e7d0378f8
-#: smeshBuilder.Mesh.SplitBiQuadraticIntoLinear:3
-msgid "bi-quadratic triangle will be split into 3 linear quadrangles;"
-msgstr ""
-
-# a800e199e96b4e00a5241f51f75bf642
-#: smeshBuilder.Mesh.SplitBiQuadraticIntoLinear:4
-msgid "bi-quadratic quadrangle will be split into 4 linear quadrangles;"
-msgstr ""
-
-# bface8f27ea84bdd86616b8d7d71a075
-#: smeshBuilder.Mesh.SplitBiQuadraticIntoLinear:5
-msgid "tri-quadratic hexahedron will be split into 8 linear hexahedra."
-msgstr ""
-
-# cd418caf39ce43fa8540a4e0dc8659ac
-#: smeshBuilder.Mesh.SplitBiQuadraticIntoLinear:7
-msgid ""
-"Quadratic elements of lower dimension  adjacent to the split bi-quadratic"
-" element will be split in order to keep the mesh conformal."
-msgstr ""
-
-# 3a97c9f46ccf425680f436217f047e2b
-#: smeshBuilder.Mesh.SplitBiQuadraticIntoLinear:10
-msgid ""
-"elements to split\\: sub-meshes, groups, filters or element IDs; if None "
-"(default), all bi-quadratic elements will be split"
-msgstr ""
-
-# cc505fa534224e9d8b4f80b41f2be0e7
-#: smeshBuilder.Mesh.SplitHexaToPrisms:1
-msgid "**Split** hexahedrons into prisms."
-msgstr ""
-
-# 7d04e14dbdd34951b016b072522f9569
-#: smeshBuilder.Mesh.SplitHexaToPrisms:3
-msgid "Uses the pattern mapping functionality for splitting."
-msgstr ""
-
-# 87b2a6cf6287400cbf0f45e8e033cbd4
-#: smeshBuilder.Mesh.SplitHexaToPrisms:5
-msgid ""
-"the object (mesh, submesh or group) from where the list of hexahedrons is"
-" taken;"
-msgstr ""
-
-# 60c437066eb046f89a6ba4e40bd89374
-#: smeshBuilder.Mesh.SplitHexaToPrisms:6
-msgid ""
-"(within the range [0,7]) gives the orientation of the pattern relatively "
-"each hexahedron: keypoint (0,0,0) of the pattern will be mapped into the "
-"<VAR>theNode000</VAR>-th node of each volume, keypoint (0,0,1) will be "
-"mapped into the <VAR>theNode001</VAR>-th node of each volume. Edge "
-"(0,0,0)-(0,0,1) of used pattern connects two not split corners."
-msgstr ""
-
-# 74d4750929614a67a47630cfa8324541
-#: smeshBuilder.Mesh.SplitHexaToTetras:1
-msgid "**Splits** hexahedrons into tetrahedrons."
-msgstr ""
-
-# f95d0b324b9c41ce99e3bdb06217ea90
-#: smeshBuilder.Mesh.SplitHexaToTetras:3
-msgid "This operation uses pattern mapping functionality for splitting."
-msgstr ""
-
-# 6de4292735084605b8a54dcbaaab810a
-#: smeshBuilder.Mesh.SplitHexaToTetras:5
-msgid ""
-"the object from which the list of hexahedrons is taken; this is mesh, "
-"submesh or group."
-msgstr ""
-
-# 2e6f9bcf5ddc457c876fc9dbd8b839d7
-#: smeshBuilder.Mesh.SplitHexaToTetras:6
-msgid ""
-"within the range [0,7]; gives the orientation of the pattern relatively "
-"each hexahedron: the (0,0,0) key-point of the pattern will be mapped into"
-" <VAR>theNode000</VAR>-th node of each volume, the (0,0,1) key-point will"
-" be mapped into <VAR>theNode001</VAR>-th node of each volume. The (0,0,0)"
-" key-point of the used pattern corresponds to a non-split corner."
-msgstr ""
-
-# 8c5bf0905fee40d29c07f8c5ea24100b
-#: smeshBuilder.Mesh.SplitHexahedraIntoPrisms:1
-msgid "Split hexahedra into prisms"
-msgstr ""
-
-# dbdac7c3e3034a468cc73af0fd28d38a
-# eb37988219d9422a966ea68316144aa0
-#: smeshBuilder.Mesh.SplitHexahedraIntoPrisms:3
-#: smeshBuilder.Mesh.SplitVolumesIntoTetra:3
-msgid "either a list of elements or a mesh or a group or a submesh or a filter"
-msgstr ""
-
-# 5f9fd3a9e4914d1ea27e05164068c614
-#: smeshBuilder.Mesh.SplitHexahedraIntoPrisms:4
-msgid ""
-"a point used to find a hexahedron for which *facetNormal* gives a normal "
-"vector defining facets to split into triangles. **startHexPoint** can be "
-"either a triple of coordinates or a vertex."
-msgstr ""
-
-# 08dba551989f433791994a24c8c966c1
-#: smeshBuilder.Mesh.SplitHexahedraIntoPrisms:7
-msgid ""
-"a normal to a facet to split into triangles of a hexahedron found by "
-"*startHexPoint*. **facetNormal** can be either a triple of coordinates or"
-" an edge."
-msgstr ""
-
-# 824949766ae74cd986ff7c9c7c4f2944
-#: smeshBuilder.Mesh.SplitHexahedraIntoPrisms:10
-msgid ""
-"flags passing splitting method: smesh.Hex_2Prisms, smesh.Hex_4Prisms. "
-"smesh.Hex_2Prisms - to split the hexahedron into 2 prisms, etc."
-msgstr ""
-
-# a7fbbd0272e148d2bf71e176576f545e
-#: smeshBuilder.Mesh.SplitHexahedraIntoPrisms:12
-msgid ""
-"if :code:`False`, only hexahedra adjacent to one closest to "
-"**startHexPoint** are split, else **startHexPoint** is used to find the "
-"facet to split in all domains present in *elems*."
-msgstr ""
-
-# dec6057e41b240d6a894bac2c30304b1
-#: smeshBuilder.Mesh.SplitQuad:3
-msgid "the faces to be splitted"
-msgstr ""
-
-# e90d4cb2da8f4245ac44439bea87890f
-# 3feee83dce3947008c4887cc0f962b6f
-#: smeshBuilder.Mesh.SplitQuad:4 smeshBuilder.Mesh.SplitQuadObject:5
-msgid "is used to choose a diagonal for splitting."
-msgstr ""
-
-# 211e2e41bbf0491d9b5523d116449169
-#: smeshBuilder.Mesh.SplitQuadsNearTriangularFacets:1
-msgid "Split quadrangle faces near triangular facets of volumes"
-msgstr ""
-
-# 65fed148a8214637a39898c5319b83c0
-#: smeshBuilder.Mesh.SplitVolumesIntoTetra:1
-msgid "Split volumic elements into tetrahedrons"
-msgstr ""
-
-# 047a84737f3c42d1a547b8229e4562a7
-#: smeshBuilder.Mesh.SplitVolumesIntoTetra:4
-msgid ""
-"flags passing splitting method: smesh.Hex_5Tet, smesh.Hex_6Tet, "
-"smesh.Hex_24Tet. smesh.Hex_5Tet - to split the hexahedron into 5 "
-"tetrahedrons, etc."
-msgstr ""
-
-# 4c4f9a13ac6a46a1813fa0f95b5c88a4
-#: smeshBuilder.Mesh.Translate:1
-msgid "Translate the elements"
-msgstr ""
-
-# ecd1e254d5a146eba642dbb09e5722a7
-# 9f605349b8194637a8f9746cf7f34e43
-#: smeshBuilder.Mesh.Translate:4 smeshBuilder.Mesh.TranslateMakeMesh:4
-msgid "the direction of translation (DirStruct or vector or 3 vector components)"
-msgstr ""
-
-# faa7af32c5184623be4468f7760dd1b8
-#: smeshBuilder.Mesh.TranslateMakeMesh:1
-msgid "Create a new mesh of translated elements"
-msgstr ""
-
-# d7d150dcc20b432ab01773092f4b59d3
-#: smeshBuilder.Mesh.TranslateObject:1
-msgid "Translate the object"
-msgstr ""
-
-# 8a72aae394014837a177fa48fd31bb5d
-#: smeshBuilder.Mesh.TranslateObject:4
-msgid "direction of translation (DirStruct or geom vector or 3 vector components)"
-msgstr ""
-
-# ddaa8920204f48eb939f7b3b22fc3365
-#: smeshBuilder.Mesh.TranslateObjectMakeMesh:4
-msgid ""
-"the direction of translation (DirStruct or geom vector or 3 vector "
-"components)"
-msgstr ""
-
-# 6bce4504ca9e4daea70edde81b4d2596
-#: smeshBuilder.Mesh.TriToQuad:1
-msgid "Fuse the neighbouring triangles into quadrangles."
-msgstr ""
-
-# 7af80b79bcf844ccb374d3e2523dfd56
-#: smeshBuilder.Mesh.TriToQuad:3
-msgid "The triangles to be fused."
-msgstr ""
-
-# 94ee1b86f7d34880bed9e7d07b92d64f
-#: smeshBuilder.Mesh.TriToQuad:4
-msgid ""
-"a numerical functor, in terms of enum SMESH.FunctorType, used to applied "
-"to possible quadrangles to choose a neighbour to fuse with. Type "
-"SMESH.FunctorType._items in the Python Console to see all items. Note "
-"that not all items correspond to numerical functors."
-msgstr ""
-
-# 7e1382ca1e9d41859b24c6d81732ab8b
-#: smeshBuilder.Mesh.TriToQuad:8
-msgid ""
-"is the maximum angle between element normals at which the fusion is still"
-" performed; theMaxAngle is measured in radians. Also it could be a name "
-"of variable which defines angle in degrees."
-msgstr ""
-
-# b34994fed8794da1bb73bbd1b8adf13b
-#: smeshBuilder.Mesh.TriToQuadObject:1
-msgid "Fuse the neighbouring triangles of the object into quadrangles"
-msgstr ""
-
-# d4ef940bb2f24445b30382edfd7ade66
-#: smeshBuilder.Mesh.TriToQuadObject:3
-msgid "is mesh, submesh or group"
-msgstr ""
-
-# 4c44af95b75d45ec876b473b558e5bd4
-#: smeshBuilder.Mesh.TriToQuadObject:4
-msgid ""
-"is a numerical functor, in terms of enum SMESH.FunctorType, applied to "
-"possible quadrangles to choose a neighbour to fuse with. Type "
-"SMESH.FunctorType._items in the Python Console to see all items. Note "
-"that not all items correspond to numerical functors."
-msgstr ""
-
-# 82a6c6a0ff30457b9a223d55d78cc931
-#: smeshBuilder.Mesh.TriToQuadObject:8
-msgid ""
-"a max angle between element normals at which the fusion is still "
-"performed; theMaxAngle is measured in radians."
-msgstr ""
-
-# 187f6f8220fb4725b6330e22f23cbbe8
-#: smeshBuilder.Mesh.Triangle:1
-msgid "Creates triangle 2D algorithm for faces"
-msgstr ""
-
-# 2d3a24207b2b48e69f036f4e193d164f
-#: smeshBuilder.Mesh.Triangle:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO`"
-msgstr ""
-
-# 4c010a6d0ecc4cf0ba1e405f04c4ec30
-#: smeshBuilder.Mesh.UnionGroups:1
-msgid ""
-"Produce a union of two groups. A new group is created. All mesh elements "
-"that are present in the initial groups are added to the new one"
-msgstr ""
-
-# 30a14aec46224f4ca16b7cc531d826a6
-#: smeshBuilder.Mesh.UnionListOfGroups:1
-msgid ""
-"Produce a union list of groups. New group is created. All mesh elements "
-"that are present in initial groups are added to the new one"
-msgstr ""
-
-# df7bbb4623c24aaf8186bacd0d932720
-#: smeshBuilder.Mesh.UseExisting1DElements:1
-msgid "Creates 1D algorithm for edges with reusing of existing mesh elements"
-msgstr ""
-
-# 21f34ffe54d046c19cb17a42f952688b
-#: smeshBuilder.Mesh.UseExisting1DElements:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D`"
-msgstr ""
-
-# 2ba4e8c8724e4de697081d0832d4f821
-#: smeshBuilder.Mesh.UseExisting2DElements:1
-msgid "Creates 1D-2D algorithm for faces with reusing of existing mesh elements"
-msgstr ""
-
-# 906024c7ecef4c39b879884b797aa350
-#: smeshBuilder.Mesh.UseExisting2DElements:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_UseExistingElements_1D2D`"
-msgstr ""
-
-# 04532071962f47a7812b1c1faa014f5e
-#: smeshBuilder.Mesh.UseExistingFaces:1
-msgid "Creates 2D algorithm allowing batch meshing of faces"
-msgstr ""
-
-# 188cc698814641f094e55117737fa024
-#: smeshBuilder.Mesh.UseExistingFaces:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_UseExisting_2D`"
-msgstr ""
-
-# c09f5483a7874c1286a42cb8f73ca468
-#: smeshBuilder.Mesh.UseExistingSegments:1
-msgid "Creates 1D algorithm allowing batch meshing of edges"
-msgstr ""
-
-# 52f46a62b6eb452bb532648086b8acb3
-#: smeshBuilder.Mesh.UseExistingSegments:12
-msgid ""
-"An instance of Mesh_Algorithm sub-class according to the specified "
-"*algo_type*, see "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_UseExisting_1D`"
-msgstr ""
-
-# 4da8d5b0601f4e58bc1848560fa79f8f
-#: smeshBuilder.MeshMeta:1
-msgid ""
-"Private class used to workaround a problem that sometimes isinstance(m, "
-"Mesh) returns False"
-msgstr ""
-
-# 9e97c1dcf44a4bb78ffe41dea937c994
-#: smeshBuilder.New:1
-msgid ""
-"Create a new smeshBuilder instance.The smeshBuilder class provides the "
-"Python interface to create or load meshes."
-msgstr ""
-
-# ed3b6649b8ac4b0dbb83317d4b65c8f3
-#: smeshBuilder.New:8
-msgid "Typical use is:"
-msgstr ""
-
-# 22922498b0d3417daa17b17538594655
-#: smeshBuilder.New:5
-msgid ""
-"import salome salome.salome_init() from salome.smesh import smeshBuilder "
-"smesh = smeshBuilder.New(salome.myStudy)"
-msgstr ""
-
-# 5462d268961749c997c368999d5e68ba
-#: smeshBuilder.New:10
-msgid "SALOME study, generally obtained by salome.myStudy."
-msgstr ""
-
-# 03e6121aa1234366aecac9235fe0c0e6
-#: smeshBuilder.New:11
-msgid "CORBA proxy of SMESH Engine. If None, the default Engine is used."
-msgstr ""
-
-# 90dc03cd87e24db49827cb092044d558
-#: smeshBuilder.New:12
-msgid "CORBA proxy of GEOM  Engine. If None, the default Engine is used."
-msgstr ""
-
-# 81eaaacb448e4a04931eaca4de3423d7
-#: smeshBuilder.New:14
-msgid "smeshBuilder instance"
-msgstr ""
-
-# 886ccd689b794c09b0eb2bbf774f1cfa
-#: smeshBuilder.ParseAngles:1
-msgid "Parse parameters while converting variables to radians"
-msgstr ""
-
-# 53d8d96d589b497ea699b4ecb6d0380a
-#: smeshBuilder.ParseParameters:1
-msgid ""
-"Return list of variable values from salome notebook. The last argument, "
-"if is callable, is used to modify values got from notebook"
-msgstr ""
-
-# 2a9a65e99c3345fcbdd9dc9c9f111324
-#: smeshBuilder.Pattern:1
-msgid ""
-"Private class wrapping SMESH.SMESH_Pattern CORBA class in order to treat "
-"Notebook variables in some methods"
-msgstr ""
-
-# ed98b3537b0e4785a5f2355d1de41f14
-#: smeshBuilder.TreatHypoStatus:1
-msgid "Print error message if a hypothesis was not assigned."
-msgstr ""
-
-# 40c345d587c547488bc365f530a1ae5a
-#: smeshBuilder.algoCreator:1
-msgid "Private class used to bind methods creating algorithms to the class Mesh"
-msgstr ""
-
-# 352b047395684578b1c9c26ffaf5fe5c
-#: smeshBuilder.algoCreator.add:1
-msgid "Store a python class of algorithm"
-msgstr ""
-
-# 1019e62e1384419e8fdf95c16bd2ca26
-#: smeshBuilder.algoCreator.copy:1
-msgid "Create a copy of self and assign mesh to the copy"
-msgstr ""
-
-# 03de87b640a24ad19edffefb18a959a1
-#: smeshBuilder.genObjUnRegister:1
-msgid ""
-"A helper class that calls UnRegister() of SALOME.GenericObj'es stored in "
-"it"
-msgstr ""
-
-# 3b14d26a35c841ad9e077431311950a8
-#: smeshBuilder.genObjUnRegister.set:1
-msgid "Store one or a list of of SALOME.GenericObj'es"
-msgstr ""
-
-# 2449b4a64d8742c297211a453cf59645
-#: smeshBuilder.hypMethodWrapper:1
-msgid ""
-"Private class used to substitute and store variable parameters of "
-"hypotheses."
-msgstr ""
-
-# 5b8dc58dd3094efca74aab9fc1d9dec3
-#: smeshBuilder.meshEditor:1
-msgid ""
-"Private class used to compensate change of CORBA API of SMESH_MeshEditor "
-"for backward compatibility with old dump scripts which call "
-"SMESH_MeshEditor directly and not via smeshBuilder.Mesh"
-msgstr ""
-
-# cce8483f9b8d42fa9cdf34374e5c6a6e
-#: smeshBuilder.meshProxy:1
-msgid ""
-"Private class used to compensate change of CORBA API of SMESH_Mesh for "
-"backward compatibility with old dump scripts which call SMESH_Mesh "
-"directly and not via smeshBuilder.Mesh"
-msgstr ""
-
-# 50bb10f7ca4341a19a2dd356854fe60b
-#: smeshBuilder.smeshBuilder:1
-msgid ""
-"This class allows to create, load or manipulate meshes. It has a set of "
-"methods to create, load or copy meshes, to combine several meshes, etc. "
-"It also has methods to get infos and measure meshes."
-msgstr ""
-
-# ce8522ea80eb4ff8857f668cf225c7df
-# 954a31fd73ec46c59ecabc0e5868c6a7
-#: smeshBuilder.smeshBuilder.BoundingBox:3
-#: smeshBuilder.smeshBuilder.GetBoundingBox:3
-msgid "single source object or list of source objects"
-msgstr ""
-
-# 46aae021f7274a008048d7ac0a25b8f4
-#: smeshBuilder.smeshBuilder.ColorToString:1
-msgid "a string representation of the color."
-msgstr ""
-
-# e3e45db48984486f8984111398966743
-#: smeshBuilder.smeshBuilder.ColorToString:3
-msgid "To be used with filters."
-msgstr ""
-
-# 11b574b638f245208f1ecd021badb70b
-#: smeshBuilder.smeshBuilder.ColorToString:5
-msgid "Parametrs:"
-msgstr ""
-
-# 106c4740c6ba4d33b1201cdbf0ca8556
-#: smeshBuilder.smeshBuilder.ColorToString:6
-msgid "c: color value (SALOMEDS.Color)"
-msgstr ""
-
-# 43e55a0b1433462ab0ec9acc95092ab5
-#: smeshBuilder.smeshBuilder.Concatenate:2
-msgid ""
-"Concatenate the given meshes into one mesh. All groups of input meshes "
-"will be"
-msgstr ""
-
-# ba5402cdb7084614bec07409765b61c1
-#: smeshBuilder.smeshBuilder.Concatenate:2
-msgid "present in the new mesh."
-msgstr ""
-
-# 5ee6643f042f4e84bc7511db99d75c78
-#: smeshBuilder.smeshBuilder.Concatenate:4
-msgid "the meshes, sub-meshes and groups to combine into one mesh"
-msgstr ""
-
-# 2bb7fb5773c44c9a9d55e318f4ac0368
-#: smeshBuilder.smeshBuilder.Concatenate:5
-msgid "if true, groups with same names are united, else they are renamed"
-msgstr ""
-
-# 09efa2c38a3e4a9cb995d226822ac1cb
-#: smeshBuilder.smeshBuilder.Concatenate:6
-msgid "if true, equal nodes and elements are merged"
-msgstr ""
-
-# e72e7f2265744287b155ce30f2c76a59
-#: smeshBuilder.smeshBuilder.Concatenate:7
-msgid "tolerance for merging nodes"
-msgstr ""
-
-# e2641468104b4904ba14fecf0734fdbb
-#: smeshBuilder.smeshBuilder.Concatenate:8
-msgid "forces creation of groups corresponding to every input mesh"
-msgstr ""
-
-# f5647be3291546bb8acbf447cfb7d87d
-#: smeshBuilder.smeshBuilder.Concatenate:9
-msgid "name of a new mesh"
-msgstr ""
-
-# 1d7942a5ff684243bb082721bc400957
-# 53b9c3e234b346aab5f0208271af71de
-# a5c3ada4e4024218ab35653e02543ce1
-# 2a559b26d3594192a9a85ea8e3adc707
-#: smeshBuilder.smeshBuilder.Concatenate:11
-#: smeshBuilder.smeshBuilder.CopyMesh:10
-#: smeshBuilder.smeshBuilder.CreateMeshesFromSTL:3
-#: smeshBuilder.smeshBuilder.CreateMeshesFromUNV:3
-msgid "an instance of Mesh class"
-msgstr ""
-
-# cde6cd0a4e61480e91f539c0d405c969
-#: smeshBuilder.smeshBuilder.CopyMesh:1
-msgid "Create a mesh by copying a part of another mesh."
-msgstr ""
-
-# afce97c673994f6bbec91f13cf3d2837
-#: smeshBuilder.smeshBuilder.CopyMesh:3
-msgid ""
-"a part of mesh to copy, either a Mesh, a sub-mesh or a group; to copy "
-"nodes or elements not contained in any mesh object, pass result of "
-"Mesh.GetIDSource( list_of_ids, type ) as meshPart"
-msgstr ""
-
-# b9e706ed7ff74f0a84958604b6e54624
-#: smeshBuilder.smeshBuilder.CopyMesh:6
-msgid "a name of the new mesh"
-msgstr ""
-
-# 693150e3ba0b45bc90632fbd8d50d648
-#: smeshBuilder.smeshBuilder.CopyMesh:7
-msgid "to create in the new mesh groups the copied elements belongs to"
-msgstr ""
-
-# e70c4022cbdc4d5096c107eb7ad0634d
-#: smeshBuilder.smeshBuilder.CopyMesh:8
-msgid "to preserve order of the copied elements or not"
-msgstr ""
-
-# eae0ce9a1b7242ee90392e9a10a57d8c
-#: smeshBuilder.smeshBuilder.CreateHypothesis:1
-msgid "Create hypothesis"
-msgstr ""
-
-# 3c11986e69504e148d4e288cdc40847b
-#: smeshBuilder.smeshBuilder.CreateHypothesis:3
-msgid "mesh hypothesis type (string)"
-msgstr ""
-
-# 48350ff1faea441f8e0a15005a345bb1
-#: smeshBuilder.smeshBuilder.CreateHypothesis:4
-msgid "mesh plug-in library name"
-msgstr ""
-
-# f408cd8fb1cb4208866670a4b5f7de44
-#: smeshBuilder.smeshBuilder.CreateHypothesis:6
-msgid "created hypothesis instance"
-msgstr ""
-
-# 3ca15020381b4ef481d8526cb01a366d
-#: smeshBuilder.smeshBuilder.CreateMeshesFromCGNS:1
-msgid "Create Mesh objects importing data from the given CGNS file"
-msgstr ""
-
-# 7cd97d8119ee47bd9f599c57c2d358bd
-# dce25ed252fe4bf7b02cb19c39591cc0
-# 715f827a4e314892980e89800ed04dc8
-#: smeshBuilder.smeshBuilder.CreateMeshesFromCGNS:3
-#: smeshBuilder.smeshBuilder.CreateMeshesFromMED:3
-#: smeshBuilder.smeshBuilder.CreateMeshesFromSAUV:3
-msgid "a tuple ( list of Mesh class instances, SMESH.DriverMED_ReadStatus )"
-msgstr ""
-
-# 766566edc5014fc8babcd3ab7e0d7135
-#: smeshBuilder.smeshBuilder.CreateMeshesFromGMF:1
-msgid ""
-"Create a Mesh object importing data from the given GMF file. GMF files "
-"must have .mesh extension for the ASCII format and .meshb for the binary "
-"format."
-msgstr ""
-
-# a55518b82b3641fcadc1edec755dae9c
-#: smeshBuilder.smeshBuilder.CreateMeshesFromGMF:5
-msgid "[ an instance of Mesh class, SMESH.ComputeError ]"
-msgstr ""
-
-# 52151d47eff44cd9b5ca5786d5dce0ac
-#: smeshBuilder.smeshBuilder.CreateMeshesFromMED:1
-msgid "Create a Mesh object(s) importing data from the given MED file"
-msgstr ""
-
-# b425a23c3c34479fb34e78e62cf696af
-#: smeshBuilder.smeshBuilder.CreateMeshesFromSAUV:1
-msgid "Create a Mesh object(s) importing data from the given SAUV file"
-msgstr ""
-
-# 93960dc05e2a4e4287a377ef64049f36
-#: smeshBuilder.smeshBuilder.CreateMeshesFromSTL:1
-msgid "Create a Mesh object importing data from the given STL file"
-msgstr ""
-
-# 77fa47d89f184da392134cf8f791df4b
-#: smeshBuilder.smeshBuilder.CreateMeshesFromUNV:1
-msgid "Create a Mesh object importing data from the given UNV file"
-msgstr ""
-
-# 5e8674053b254209a9dba20a8184a985
-#: smeshBuilder.smeshBuilder.DumpPython:1
-msgid "Dump component to the Python script"
-msgstr ""
-
-# ca2faaf70c9a47b5bebb3701a71967df
-#: smeshBuilder.smeshBuilder.DumpPython:2
-msgid ""
-"This method overrides IDL function to allow default values for the "
-"parameters."
-msgstr ""
-
-# 18f91099adfe4c21b060e3b7268b9098
-#: smeshBuilder.smeshBuilder.EnumToLong:1
-msgid "Return a long value from enumeration"
-msgstr ""
-
-# 52fa8d4cee1b4819ad81f85ce48478f9
-#: smeshBuilder.smeshBuilder.GetArea:1
-msgid "Get sum of areas of all 2D elements in the mesh object."
-msgstr ""
-
-# c9f2ae81cb7240faa65550e95b484ec1
-#: smeshBuilder.smeshBuilder.GetArea:5
-msgid "sum of areas of all 2D elements"
-msgstr ""
-
-# 6d6c7e7379b64c6e8a8b8308816e19fa
-#: smeshBuilder.smeshBuilder.GetAxisStruct:1
-msgid "Get AxisStruct from object"
-msgstr ""
-
-# d6b5f4db3bcd42c0976287ae93a63dfd
-#: smeshBuilder.smeshBuilder.GetAxisStruct:3
-msgid "a GEOM object (line or plane)"
-msgstr ""
-
-# 07bf01fed379438e8c4222289269c0ad
-#: smeshBuilder.smeshBuilder.GetAxisStruct:5
-msgid "SMESH.AxisStruct"
-msgstr ""
-
-# 2aeeeddc77b841d5b8b8905ba47c5e6e
-#: smeshBuilder.smeshBuilder.GetCriterion:1
-msgid ""
-"Create a criterion by the given parameters Criterion structures allow to "
-"define complex filters by combining them with logical operations (AND / "
-"OR) (see example below)"
-msgstr ""
-
-# 71d59eee3fc140168279f26ef77877be
-#: smeshBuilder.smeshBuilder.GetCriterion:11
-msgid ""
-"a binary logical operation SMESH.FT_LogicalAND, SMESH.FT_LogicalOR or "
-"SMESH.FT_Undefined"
-msgstr ""
-
-# ae303d1213d840ecb0347f17d925bdd0
-#: smeshBuilder.smeshBuilder.GetCriterion:16
-msgid ""
-"SMESH.Filter.Criterion  "
-"href=\"../tui_filters_page.html#combining_filters\""
-msgstr ""
-
-# cf83985ae73b433798c924fb71cee38d
-# fd8f9324ee3f4e9fbb35bb8923af7fb6
-#: smeshBuilder.smeshBuilder.GetCriterion:16
-#: smeshBuilder.smeshBuilder.GetEmptyCriterion:3
-msgid "SMESH.Filter.Criterion"
-msgstr ""
-
-# df4d459dda594b949154225f52260dd1
-#: smeshBuilder.smeshBuilder.GetCriterion:18
-msgid "href=\"../tui_filters_page.html#combining_filters\""
-msgstr ""
-
-# c861c5d0daad4179bac56100e2e34c27
-#: smeshBuilder.smeshBuilder.GetCurrentStudy:1
-msgid "Get the current study"
-msgstr ""
-
-# 9e73926cf3ea4098be27d380303d3286
-#: smeshBuilder.smeshBuilder.GetDirStruct:1
-msgid "Get DirStruct from vector"
-msgstr ""
-
-# 6edaeacb5a1f415f8799dc19a1fc66a5
-#: smeshBuilder.smeshBuilder.GetDirStruct:3
-msgid "a GEOM object(vector)"
-msgstr ""
-
-# c4c99c4d2091498f99bb52de92ee3632
-# cc2d0236feb24943a2e33158f7a067c4
-#: smeshBuilder.smeshBuilder.GetDirStruct:5
-#: smeshBuilder.smeshBuilder.MakeDirStruct:5
-msgid "SMESH.DirStruct"
-msgstr ""
-
-# 8ffbefb4140e4c93bc6fa4a817555f23
-#: smeshBuilder.smeshBuilder.GetEmptyCriterion:1
-msgid "Create an empty criterion"
-msgstr ""
-
-# 5d621efe3be1420ebd1a6514097fd1dc
-#: smeshBuilder.smeshBuilder.GetFilter:1
-msgid "Create a filter with the given parameters"
-msgstr ""
-
-# 48c118ee71224bba945db89dad017d21
-#: smeshBuilder.smeshBuilder.GetFilter:3
-msgid "the type of elements (SMESH.NODE, SMESH.EDGE, SMESH.FACE, SMESH.VOLUME)"
-msgstr ""
-
-# 800a55dc4b4c413780b67806e2f8d664
-#: smeshBuilder.smeshBuilder.GetFilter:10
-msgid ""
-"the tolerance used by SMESH.FT_BelongToGeom, SMESH.FT_BelongToSurface, "
-"SMESH.FT_LyingOnGeom, SMESH.FT_CoplanarFaces and SMESH.FT_EqualNodes "
-"criteria"
-msgstr ""
-
-# ef8b0b6eb6154b13af29e8ca0a207b92
-#: smeshBuilder.smeshBuilder.GetFilter:12
-msgid "the mesh to initialize the filter with"
-msgstr ""
-
-# d6952d6fad784844a4fba5fdf3d67ec4
-# d161702c8dfb439badc203083b490ded
-#: smeshBuilder.smeshBuilder.GetFilter:16
-#: smeshBuilder.smeshBuilder.GetFilterFromCriteria:8
-msgid "`Example of Filters usage <../tui_filters_page.html#tui_filters>`_"
-msgstr ""
-
-# 12e8b50cd5be409ba99064f5e545b455
-#: smeshBuilder.smeshBuilder.GetFilterFromCriteria:1
-msgid "Create a filter from criteria"
-msgstr ""
-
-# 3603c02a4f694d2980f9877260ce8656
-#: smeshBuilder.smeshBuilder.GetFilterFromCriteria:3
-msgid "a list of criteria"
-msgstr ""
-
-# 297f1360b9504eab828af6d311cfb852
-#: smeshBuilder.smeshBuilder.GetFunctor:1
-msgid "Create a numerical functor by its type"
-msgstr ""
-
-# ca7e6b50d14f45e2b6f86f07701d18d9
-#: smeshBuilder.smeshBuilder.GetFunctor:3
-msgid ""
-"functor type - an item of SMESH.FunctorType enumeration. Type "
-"SMESH.FunctorType._items in the Python Console to see all items. Note "
-"that not all items correspond to numerical functors."
-msgstr ""
-
-# 29de585997b741d5b1f8a95e1d39092c
-#: smeshBuilder.smeshBuilder.GetFunctor:7
-msgid "SMESH_NumericalFunctor"
-msgstr ""
-
-# 724b0d3b748b4754b993cbf59e7d2d73
-#: smeshBuilder.smeshBuilder.GetGravityCenter:1
-msgid "Get gravity center of all nodes of the mesh object."
-msgstr ""
-
-# dfddc853a879495f8a83880f31784f23
-#: smeshBuilder.smeshBuilder.GetGravityCenter:5
-msgid "x,y,z"
-msgstr ""
-
-# 6df85880f6884d4f89bc8163309f7a2a
-#: smeshBuilder.smeshBuilder.GetGravityCenter:6
-msgid "Three components of the gravity center"
-msgstr ""
-
-# 18b13a0defe845458b58f68e1b6d491c
-#: smeshBuilder.smeshBuilder.GetLength:1
-msgid "Get sum of lengths of all 1D elements in the mesh object."
-msgstr ""
-
-# 08acfced5d874ffebab16adedab9d4a1
-#: smeshBuilder.smeshBuilder.GetLength:5
-msgid "sum of lengths of all 1D elements"
-msgstr ""
-
-# ac1baede1f5b49589be960b7945433a2
-#: smeshBuilder.smeshBuilder.GetMeshInfo:3
-msgid "dictionary \"element type\" - \"count of elements\""
-msgstr ""
-
-# 830b8e3ad14341dda43213c997ee2361
-#: smeshBuilder.smeshBuilder.GetMinDistance:3
-msgid ""
-"If *src2* is None, and *id2*  = 0, distance from *src1* / *id1* to the "
-"origin is computed. If *src2* is None, and *id2* != 0, it is assumed that"
-" both *id1* and *id2* belong to *src1*."
-msgstr ""
-
-# 6972030bf4f4451ea8b90175852df277
-# 20ba4154c905438a8b0918c5cf33bc95
-#: smeshBuilder.smeshBuilder.GetMinDistance:7
-#: smeshBuilder.smeshBuilder.MinDistance:6
-msgid "first source object"
-msgstr ""
-
-# 347afdeb64e44da6b92c0c0cd2ec386d
-# de9d0682ee684d6fb563808e3e0026bb
-#: smeshBuilder.smeshBuilder.GetMinDistance:8
-#: smeshBuilder.smeshBuilder.MinDistance:7
-msgid "second source object"
-msgstr ""
-
-# c2b05bfef14e4171abb5d4da1d9f6422
-# 8dcebee2093c4ec5ab017b3f0895a1b8
-#: smeshBuilder.smeshBuilder.GetMinDistance:9
-#: smeshBuilder.smeshBuilder.MinDistance:8
-msgid "node/element id from the first source"
-msgstr ""
-
-# b6a9490429704ebc96530cb9915f47a3
-# faa64b7589224a0fa2800b4d4df23258
-#: smeshBuilder.smeshBuilder.GetMinDistance:10
-#: smeshBuilder.smeshBuilder.MinDistance:9
-msgid "node/element id from the second (or first) source"
-msgstr ""
-
-# a7ae42d0e6b945b28f50571fc190014d
-#: smeshBuilder.smeshBuilder.GetMinDistance:11
-msgid "*True* if **id1** is element id, *False* if it is node id"
-msgstr ""
-
-# 856a2198830849b1b7e0e57f29ba84d5
-#: smeshBuilder.smeshBuilder.GetMinDistance:12
-msgid "*True* if **id2** is element id, *False* if it is node id"
-msgstr ""
-
-# 6047fe7e713e4819ad50ff2d7ca06f2b
-#: smeshBuilder.smeshBuilder.GetMinDistance:14
-msgid "Measure structure or None if input data is invalid **MinDistance()**"
-msgstr ""
-
-# 22c25c0f6f204f4d8e82d104014f268d
-#: smeshBuilder.smeshBuilder.GetPattern:1
-msgid "Create a pattern mapper."
-msgstr ""
-
-# d591946b500f435cb1bd411292aea1bb
-#: smeshBuilder.smeshBuilder.GetPattern:3
-msgid "an instance of SMESH_Pattern"
-msgstr ""
-
-# 19a23431f6124be3a12fa9dee330d4c5
-#: smeshBuilder.smeshBuilder.GetPattern:5
-msgid ""
-"`Example of Patterns usage "
-"<../tui_modifying_meshes_page.html#tui_pattern_mapping>`_"
-msgstr ""
-
-# 275f542f467c4757bcd181a38f085ca2
-#: smeshBuilder.smeshBuilder.GetPointStruct:1
-msgid "Get PointStruct from vertex"
-msgstr ""
-
-# 0dbe9267749e407e8c9e23afd63235b8
-#: smeshBuilder.smeshBuilder.GetPointStruct:3
-msgid "a GEOM object(vertex)"
-msgstr ""
-
-# 4489a8db1d5f4c7b8ea9a2728558ff63
-#: smeshBuilder.smeshBuilder.GetPointStruct:5
-msgid "SMESH.PointStruct"
-msgstr ""
-
-# 93208b834df64f3aada2b339134b0649
-#: smeshBuilder.smeshBuilder.GetSubShapesId:1
-msgid "Return IDs of sub-shapes"
-msgstr ""
-
-# 4317e35c4916444facef14ca15de9a74
-#: smeshBuilder.smeshBuilder.GetVolume:1
-msgid "Get sum of volumes of all 3D elements in the mesh object."
-msgstr ""
-
-# 1cfe646de2ca43de86b018756695c0ba
-#: smeshBuilder.smeshBuilder.GetVolume:5
-msgid "sum of volumes of all 3D elements"
-msgstr ""
-
-# 13963f343c6b496c9d6f1b0596fa17c9
-#: smeshBuilder.smeshBuilder.IsEmbeddedMode:1
-msgid "Get the current mode"
-msgstr ""
-
-# f389fdc3ccf5486685b2fb8c33bd84a8
-#: smeshBuilder.smeshBuilder.MakeDirStruct:1
-msgid "Make DirStruct from a triplet"
-msgstr ""
-
-# 53dec3e5cd344ff78a2b7dce8ce55794
-#: smeshBuilder.smeshBuilder.MakeDirStruct:3
-msgid "vector components"
-msgstr ""
-
-# 8efe66568aad4342b30757cee7c3c8c2
-#: smeshBuilder.smeshBuilder.Mesh:1
-msgid ""
-"Create a mesh. This can be either an empty mesh, possibly having an "
-"underlying geometry, or a mesh wrapping a CORBA mesh given as a "
-"parameter."
-msgstr ""
-
-# 3069de99891541b99aa27a58c9432fdb
-#: smeshBuilder.smeshBuilder.Mesh:4
-msgid ""
-"either (1) a CORBA mesh: (SMESH._objref_SMESH_Mesh) got e.g. by calling "
-"salome.myStudy.FindObjectID(\"0:1:2:3\").GetObject() or (2) a Geometrical"
-" object: for meshing or (3) none:."
-msgstr ""
-
-# add53f6aa7db45afb072ff9f87435088
-#: smeshBuilder.smeshBuilder.Mesh:7
-msgid "the name for the new mesh."
-msgstr ""
-
-# cd99f49a549b4c2784b90a029baf5dd0
-#: smeshBuilder.smeshBuilder.Mesh:9
-msgid "an instance of Mesh class."
-msgstr ""
-
-# a08747d9a0ff4b00b151f8ead4c6e23b
-#: smeshBuilder.smeshBuilder.MinDistance:1
-msgid "Get minimum distance between two objects"
-msgstr ""
-
-# 7982f36dd250432e8d576d03f22fc892
-#: smeshBuilder.smeshBuilder.MinDistance:3
-msgid ""
-"If *src2* is None, and *id2* = 0, distance from *src1* / *id1* to the "
-"origin is computed. If *src2* None, and *id2* != 0, it is assumed that "
-"both *id1* and *id2* belong to *src1*."
-msgstr ""
-
-# 8247bc3e90ee4bc880b0a94b8b3d2005
-#: smeshBuilder.smeshBuilder.MinDistance:13
-msgid "minimum distance value *GetMinDistance()*"
-msgstr ""
-
-# 3433b570e9c84b91a1d9e5fa2c41b5cd
-#: smeshBuilder.smeshBuilder.SetBoundaryBoxSegmentation:1
-msgid ""
-"Set number of segments per diagonal of boundary box of geometry, by which"
-" default segment length of appropriate 1D hypotheses is defined in GUI. "
-"Default value is 10."
-msgstr ""
-
-# e25fa41c75164b37bfb9f6fb163af35e
-#: smeshBuilder.smeshBuilder.SetCurrentStudy:1
-msgid "Set the current study. Calling SetCurrentStudy( None ) allows to"
-msgstr ""
-
-# 4d6d0511e66c450ba9b539da433e8028
-#: smeshBuilder.smeshBuilder.SetCurrentStudy:2
-msgid "switch OFF automatic pubilishing in the Study of mesh objects."
-msgstr ""
-
-# ea553b6b94bc4efe98e522e7b61c1fe0
-#: smeshBuilder.smeshBuilder.SetDumpPythonHistorical:4
-msgid "Set mode of DumpPython(), *historical* or *snapshot*."
-msgstr ""
-
-# 66f6a973954745369e2906f697d74d91
-#: smeshBuilder.smeshBuilder.SetDumpPythonHistorical:2
-msgid ""
-"In the *historical* mode, the Python Dump script includes all commands "
-"performed by SMESH engine. In the *snapshot* mode, commands relating to "
-"objects removed from the Study are excluded from the script as well as "
-"commands not influencing the current state of meshes"
-msgstr ""
-
-# d7d286c06a7f4a50b7dbc0742c19d1be
-#: smeshBuilder.smeshBuilder.SetEmbeddedMode:1
-msgid "Set the current mode"
-msgstr ""
-
-# db5ffbd6091146bab826a685c084b504
-#: smeshBuilder.smeshBuilder.SetName:1
-msgid "Set the given name to the object"
-msgstr ""
-
-# 65646129f4c6497b90246005ffcf99b1
-#: smeshBuilder.smeshBuilder.SetName:3
-msgid "the object to rename"
-msgstr ""
-
-# ddeccdda92ab46c494cb51d761fdf0ad
-#: smeshBuilder.smeshBuilder.SetName:4
-msgid "a new object name"
-msgstr ""
-
-# bf92183390384cc8a6d2454847f1fa52
-#: smeshBuilder.smeshBuilder.init_smesh:1
-msgid "Set the current study and Geometry component"
-msgstr ""
-
-# 8177e229556b41258ca96424e31c7f21
-#: smeshBuilder.smeshInst:1
-msgid "*Warning* -- smeshInst is a singleton"
-msgstr ""
-
-# 21ba20d294bc46b8a1d7fb6e4b0d44c4
-#: smeshBuilder.submeshProxy:1
-msgid "Private class wrapping SMESH.SMESH_SubMesh in order to add Compute()"
-msgstr ""
-
-# fa5d5cdc176c42c891ba2d44b2e159f1
-#: smeshBuilder.submeshProxy.Compute:2
-msgid "Compute the sub-mesh and return the status of the computation"
-msgstr ""
-
-# 830e9cb502014f90924a513955dbe67e
-#: smeshBuilder.submeshProxy.Compute:2
-msgid ""
-"refresh if *True*, Object browser is automatically updated (when running "
-"in GUI)"
-msgstr ""
-
-# 4938de1092114b069b646e90d1bb7784
-#: smeshBuilder.submeshProxy.Compute:6
-msgid ""
-"This is a method of SMESH.SMESH_submesh that can be obtained via "
-"Mesh.GetSubMesh() or :meth:`smeshBuilder.Mesh.GetSubMesh`."
-msgstr ""
-
-# fbbe6aef51e04d118006334f95a046a3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/python_api.rst:21
-msgid "smesh_algorithm module"
-msgstr ""
-
-# fa2ada56caab49819deb456b7d5b2dd2
-#: smesh_algorithm.Mesh_Algorithm:1
-msgid "The base class to define meshing algorithms"
-msgstr ""
-
-# f4460fce199e4ba59393cc0ad32caadf
-#: smesh_algorithm.Mesh_Algorithm:3
-msgid "This class should not be used directly, it is supposed to be sub-classed"
-msgstr ""
-
-# 2c6c6a357b97412ea66b85c7c0190d13
-#: smesh_algorithm.Mesh_Algorithm:5
-msgid "for implementing Python API for specific meshing algorithms"
-msgstr ""
-
-# bc5b345770f249f9bb50873b606e19dc
-#: smesh_algorithm.Mesh_Algorithm:7
-msgid ""
-"For each meshing algorithm, a python class inheriting from class "
-"%Mesh_Algorithm should be defined. This descendant class should have two "
-"attributes defining the way it is created by class Mesh (see e.g. class "
-":class:`~StdMeshersBuilder.StdMeshersBuilder_Segment` in "
-"StdMeshersBuilder package):"
-msgstr ""
-
-# af1608f8aa09422aad9dae5fc09fa642
-#: smesh_algorithm.Mesh_Algorithm:23
-msgid ""
-":code:`meshMethod` attribute defines name of method of class smesh.Mesh "
-"by calling which the"
-msgstr ""
-
-# 56d9fb20f42844108641f222020f3170
-#: smesh_algorithm.Mesh_Algorithm:13
-msgid ""
-"python class of algorithm is created; this method is dynamically added to"
-" the smesh.Mesh class in runtime. For example, if in :code:`class "
-"MyPlugin_Algorithm` this attribute is defined as ::"
-msgstr ""
-
-# 4a0f1ebc21fe4eb189b3ac8eccc38f79
-#: smesh_algorithm.Mesh_Algorithm:19
-msgid ""
-"then an instance of :code:`MyPlugin_Algorithm` can be created by the "
-"direct invocation of the function of smesh.Mesh class: ::"
-msgstr ""
-
-# bbf7bf4a61af415bbb7e24d158acbe6a
-#: smesh_algorithm.Mesh_Algorithm:36
-msgid ""
-":code:`algoType` defines type of algorithm and is used mostly to "
-"discriminate"
-msgstr ""
-
-# 92e2b40c8bc64e74958e5bbaa72156ef
-#: smesh_algorithm.Mesh_Algorithm:26
-msgid ""
-"algorithms that are created by the same method of class smesh.Mesh. For "
-"example, if this attribute is specified in :code:`MyPlugin_Algorithm` "
-"class as ::"
-msgstr ""
-
-# 4f3b493cedcd4fb58af45ac2ea4da361
-#: smesh_algorithm.Mesh_Algorithm:32
-msgid "then it's creation code can be: ::"
-msgstr ""
-
-# 82f7681d46144e41bbc7f9cc5a22c832
-# 094ab44d154e4956b5048365c4496418
-#: smesh_algorithm.Mesh_Algorithm.Assign:1
-#: smesh_algorithm.Mesh_Algorithm.Hypothesis:1
-msgid "Private method"
-msgstr ""
-
-# 0b0ec5ce4d304ffca5476fca6c0a4f76
-#: smesh_algorithm.Mesh_Algorithm.Create:1
-msgid "Private method."
-msgstr ""
-
-# c517a611369f4133ba71870835363a86
-#: smesh_algorithm.Mesh_Algorithm.FindAlgorithm:1
-msgid ""
-"Finds the algorithm in the study by its type name. Finds only the "
-"algorithms, which have been created in smeshpyD engine."
-msgstr ""
-
-# e59158bcf7e94f6c837d720a65e5f60d
-#: smesh_algorithm.Mesh_Algorithm.FindAlgorithm:4
-msgid "SMESH.SMESH_Algo"
-msgstr ""
-
-# 94541113c40a40b0be62eb5e6f99ad39
-#: smesh_algorithm.Mesh_Algorithm.FindHypothesis:1
-msgid ""
-"Finds a hypothesis in the study by its type name and parameters. Finds "
-"only the hypotheses created in smeshpyD engine. :returns: "
-"SMESH.SMESH_Hypothesis"
-msgstr ""
-
-# c932e1be8d0248838cd36de6b3aff80b
-#: smesh_algorithm.Mesh_Algorithm.GetAlgorithm:1
-msgid "Returns the wrapped mesher."
-msgstr ""
-
-# 98c14c5645d944bf88ad332dfdc95dae
-#: smesh_algorithm.Mesh_Algorithm.GetCompatibleHypothesis:1
-msgid "Gets the list of hypothesis that can be used with this algorithm"
-msgstr ""
-
-# 75938efff8e1459786a93b4fe77ded53
-#: smesh_algorithm.Mesh_Algorithm.GetId:1
-msgid "Gets the id of the algorithm"
-msgstr ""
-
-# 04a6a6ba80704b51ac9602559e33a0b5
-#: smesh_algorithm.Mesh_Algorithm.GetName:1
-msgid "Gets the name of the algorithm"
-msgstr ""
-
-# c90ba340cab8406e884a6d3e055a5310
-#: smesh_algorithm.Mesh_Algorithm.GetSubMesh:1
-msgid ""
-"If the algorithm is global, returns 0; else returns the submesh "
-"associated to this algorithm."
-msgstr ""
-
-# b5b8ed3249684be69dd705d253374177
-#: smesh_algorithm.Mesh_Algorithm.MainShapeEntry:1
-msgid "Returns entry of the shape to mesh in the study"
-msgstr ""
-
-# 7fa0cbb7a51f4f9ab86acfe72dd070ce
-#: smesh_algorithm.Mesh_Algorithm.ReversedEdgeIndices:1
-msgid ""
-"Transform a list of either edges or tuples (edge, 1st_vertex_of_edge) "
-"into a list acceptable to SetReversedEdges() of some 1D hypotheses"
-msgstr ""
-
-# 2725a48346674bc89778578f29666ee1
-#: smesh_algorithm.Mesh_Algorithm.SetName:1
-msgid "Sets the name to the algorithm"
-msgstr ""
-
-# 0933ed112eda445a9f081dfdc4e9e34d
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:1
-msgid ""
-"Defines \"ViscousLayers\" hypothesis to give parameters of layers of "
-"prisms to build near mesh boundary. This hypothesis can be used by "
-"several 3D algorithms: NETGEN 3D, MG-Tetra, Hexahedron(i,j,k)"
-msgstr ""
-
-# 958f2e8b6a0b4995b5303493380ab157
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:5
-msgid "total thickness of layers of prisms"
-msgstr ""
-
-# cc2a53444a554b709ff99b40ef31eb99
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:6
-msgid "number of layers of prisms"
-msgstr ""
-
-# cd2ff9a6db4642528a3f18b4327a40e3
-# 3abb8121d8d74546ae21dcd6999490b3
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:7
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers2D:7
-msgid "factor (>1.0) of growth of layer thickness towards inside of mesh"
-msgstr ""
-
-# 72d0e3b9cbd14050bfc72889d07c262a
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:8
-msgid ""
-"list of geometrical faces (or their ids). Viscous layers are either "
-"generated on these faces or not, depending on the value of "
-"**isFacesToIgnore** parameter."
-msgstr ""
-
-# 07c446c9fa154d458de112cae93676fc
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:11
-msgid ""
-"if *True*, the Viscous layers are not generated on the faces specified by"
-" the previous parameter (**faces**)."
-msgstr ""
-
-# 0abc5cc7f9f94c52a67347cc6def63ac
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:13
-msgid ""
-"extrusion method defines how position of new nodes are found during prism"
-" construction and how creation of distorted and intersecting prisms is "
-"prevented. Possible values are:  - StdMeshers.SURF_OFFSET_SMOOTH "
-"(default) method extrudes nodes along normal         to underlying "
-"geometrical surface. Smoothing of internal surface of         element "
-"layers can be used to avoid creation of invalid prisms. - "
-"StdMeshers.FACE_OFFSET method extrudes nodes along average normal of"
-"         surrounding mesh faces till intersection with a neighbor mesh "
-"face         translated along its own normal by the layers thickness. "
-"Thickness         of layers can be limited to avoid creation of invalid "
-"prisms. - StdMeshers.NODE_OFFSET method extrudes nodes along average "
-"normal of         surrounding mesh faces by the layers thickness. "
-"Thickness of         layers can be limited to avoid creation of invalid "
-"prisms."
-msgstr ""
-
-# ff10b55d0a224530ad8103a6f9a8943f
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:13
-msgid ""
-"extrusion method defines how position of new nodes are found during prism"
-" construction and how creation of distorted and intersecting prisms is "
-"prevented. Possible values are:"
-msgstr ""
-
-# 4b5efce50cdd4d36b26ce026e9edc7fb
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:18
-msgid "StdMeshers.SURF_OFFSET_SMOOTH (default) method extrudes nodes along normal"
-msgstr ""
-
-# a1bea658588441489437f1c8c2034149
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:18
-msgid ""
-"to underlying geometrical surface. Smoothing of internal surface of "
-"element layers can be used to avoid creation of invalid prisms."
-msgstr ""
-
-# bf92c2f615e541258cd6f8a0cd02c445
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:22
-msgid "StdMeshers.FACE_OFFSET method extrudes nodes along average normal of"
-msgstr ""
-
-# 78d1ea03383645c3a0dbfa83ec7fffeb
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:21
-msgid ""
-"surrounding mesh faces till intersection with a neighbor mesh face "
-"translated along its own normal by the layers thickness. Thickness of "
-"layers can be limited to avoid creation of invalid prisms."
-msgstr ""
-
-# a2c618bcb90443faa6c7a933f6dfebd1
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:25
-msgid "StdMeshers.NODE_OFFSET method extrudes nodes along average normal of"
-msgstr ""
-
-# f125fe84d6e040ffa7c4de753a4f40cc
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers:25
-msgid ""
-"surrounding mesh faces by the layers thickness. Thickness of layers can "
-"be limited to avoid creation of invalid prisms."
-msgstr ""
-
-# 9e250899701a48feb23a6233958d2774
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers2D:1
-msgid ""
-"Defines \"ViscousLayers2D\" hypothesis to give parameters of layers of "
-"quadrilateral elements to build near mesh boundary. This hypothesis can "
-"be used by several 2D algorithms: NETGEN 2D, NETGEN 1D-2D, Quadrangle "
-"(mapping), MEFISTO, MG-CADSurf"
-msgstr ""
-
-# 2a312e7d4f4c429b95d205b7d1e6b821
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers2D:5
-msgid "total thickness of layers of quadrilaterals"
-msgstr ""
-
-# 090b7189f8184fafbd1ffc0d26c4ef5e
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers2D:8
-msgid ""
-"list of geometrical edges (or their ids). Viscous layers are either "
-"generated on these edges or not, depending on the value of "
-"**isEdgesToIgnore** parameter."
-msgstr ""
-
-# ac6e4d0957954ee895f5808142f1b025
-#: smesh_algorithm.Mesh_Algorithm.ViscousLayers2D:11
-msgid ""
-"if *True*, the Viscous layers are not generated on the edges specified by"
-" the previous parameter (**edges**)."
-msgstr ""
-
-# 412ee7aacf90484ba9fefdfbdbb356b9
-#~ msgid ""
-#~ msgstr ""
-
-# 2fb6bab3f93e4bd9b3cb56843e11aaa7
-#~ msgid "Get the mesh item owning the mesh group `meshGroupItem`."
-#~ msgstr ""
-
-# 76a67fdaec2a45fd9be9965c45821d08
-#~ msgid "Mesh group belonging to the searched mesh."
-#~ msgstr ""
-
-# f25ed2b8104645bca1624bda2840ceb0
-#~ msgid "The SObject corresponding to the mesh, or None if it was not found."
-#~ msgstr ""
-
-# 694eb90b071c40f79a2f904620a958da
-#~ msgid "Returns the MESH object currently selected in the active study."
-#~ msgstr ""
-
-# bb78c7a9963849d386b88cd613093288
-#~ msgid "Python API for the standard meshing plug-in module."
-#~ msgstr ""
-
-# 42407d8a7213496d942e11721dad9587
-#~ msgid "Defines segment 1D algorithm for edges discretization."
-#~ msgstr ""
-
-# 4bdfd953126b46b88c49bc9af12563f5
-#~ msgid "It can be created by calling smeshBuilder.Mesh.Segment(geom=0)"
-#~ msgstr ""
-
-# eb6d876d4b794e90a7612e7b1f8973ea
-#~ msgid "for the length of segments that cut an edge"
-#~ msgstr ""
-
-# d12a452026ee4517a34db36ae76ff0c9
-#~ msgid "an instance of StdMeshers_LocalLength hypothesis"
-#~ msgstr ""
-
-# e17402a497624b7eb8f814b7641ff838
-#~ msgid "an instance of StdMeshers_MaxLength hypothesis"
-#~ msgstr ""
-
-# bdd902df1eca44c8a50a336b3efdba69
-#~ msgid "type of algorithm used with helper function in smeshBuilder.Mesh class"
-#~ msgstr ""
-
-# 3cddccd977ca4724b74b108d49a486b6
-#~ msgid "doc string of the method"
-#~ msgstr ""
-
-# 2416bd6f91d1499b8e30f976a8963aeb
-#~ msgid "name of the dynamic method in smeshBuilder.Mesh class"
-#~ msgstr ""
-
-# 1f0be11ffa9f4c79ba388930b237db4b
-#~ msgid "Typical use is:"
-#~ msgstr ""
-
-# d9872284b77a459aa017e4baf9318ba5
-#~ msgid "smeshBuilder instance"
-#~ msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/quad_from_ma_algo.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/quad_from_ma_algo.po
deleted file mode 100644 (file)
index dad657b..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 5ff0bcfebb72410a8732dc46e1e34e6f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst:5
-msgid "Medial Axis Projection Quadrangle meshing algorithm"
-msgstr ""
-
-# b63656f8703a4217af551d3ed9d1bc4a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst:7
-msgid ""
-"Medial Axis Projection algorithm can be used for meshing faces with "
-"sinuous borders and a channel-like shape, for which it can be difficult "
-"to define 1D hypotheses such that to obtain a good shape of resulting "
-"quadrangles. The algorithm can be also applied to faces with ring "
-"topology, which can be viewed as a closed 'channel'. In the latter case "
-"radial discretization of a ring can be specified by using **Number of "
-"Layers** or **Distribution of Layers** hypothesis."
-msgstr ""
-
-# 54d7dbc1a0924e2b99df8f005e06c131
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst:22
-msgid ""
-"The algorithm provides proper shape of quadrangles by constructing Medial"
-" Axis between sinuous borders of the face and using it to discretize the "
-"borders. (Shape of quadrangles can be not perfect at locations where "
-"opposite sides of a 'channel' are far from being parallel.)"
-msgstr ""
-
-# 01adeb096fec4346af71b4c1d954e111
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst:33
-msgid "The Medial Axis is used in two ways:"
-msgstr ""
-
-# ba840a59868c4f29a0ef420de7678f08
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst:35
-msgid ""
-"If there is a sub-mesh on a sinuous border, then the nodes of this border"
-" are mapped to the opposite border via the Medial Axis."
-msgstr ""
-
-# 237fafa93b8b424595b99dc70e23c04d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst:36
-msgid ""
-"If there are no sub-meshes on sinuous borders, then the part of the "
-"Medial Axis that can be mapped to both borders is discretized using a 1D "
-"hypothesis assigned to the face or its ancestor shapes, and the division "
-"points are mapped from the Medial Axis to both borders to find positions "
-"of nodes."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/quad_ijk_algo.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/quad_ijk_algo.po
deleted file mode 100644 (file)
index ebdbbda..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 1f1188e97555415db825c3d926377f34
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:5
-msgid "Quadrangle: Mapping meshing algorithm"
-msgstr ""
-
-# dadf07f382854ed18ab98565c378b217
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:7
-msgid ""
-"**Quadrangle: Mapping** meshing algorithm is intended for creating all-"
-"quadrangle and quad-dominant meshes on faces without holes and bound by "
-"at least three edges."
-msgstr ""
-
-# 15dcc95a5ec04d22b9df0a08cae3e856
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:11
-msgid ""
-"The algorithm can create mesh on any face but its quality and validity "
-"depend on two factors:"
-msgstr ""
-
-# 0cb07bafd0464d0782e45485439cfd88
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:14
-msgid "face shape (number of edges and boundary concavity);"
-msgstr ""
-
-# 545423d279ee462082dffc1f7b9abf0e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:15
-msgid "discretization of edges."
-msgstr ""
-
-# ecfd4360393e48beb0dd40dd718617b3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:23
-msgid ""
-"The algorithm uses **Transfinite Interpolation** technique in the "
-"parametric space of a face to locate nodes inside the face."
-msgstr ""
-
-# df0aff26c2db42468cf183bfd89de561
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:26
-msgid ""
-"The algorithm treats any face as quadrangle. If a face is bound by more "
-"than four edges, four most sharp vertices are considered as corners of "
-"the quadrangle and all edges between these vertices are treated as "
-"quadrangle sides. In the case of three edges, the vertex specified by the"
-" user is considered as a fourth degenerated side of the quadrangle."
-msgstr ""
-
-# 2f0bd59f2f544705aefe466f31315edc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:39
-msgid ""
-"To get an all-quadrangle mesh you have to carefully define 1D hypotheses "
-"on edges of a face. To get a **structured** mesh you have to provide "
-"equal number of segments on opposite sides of the quadrangle. If this "
-"condition is not respected, the algorithm by default (without a "
-"hypothesis) creates a **quad-dominant** mesh with triangles located near "
-"the side with the maximal number of segments. However, you can get an "
-"**all-quadrangle** mesh in this case by using "
-":ref:`hypo_quad_params_anchor` hypothesis to specify how to make "
-"transition mesh between opposite sides with different number of segments,"
-" provided that certain conditions are respected. In any case the total "
-"number of segments must be even. To use *Reduced* transition method, "
-"there must be an equal number of segments on one pair of opposite sides."
-msgstr ""
-
-# 1d4970aee4684396862a47d46a66b360
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:52
-msgid "The following hypotheses help to create quadrangle meshes."
-msgstr ""
-
-# 78034d06a148414dad332e76304f6a2b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:54
-msgid ""
-":ref:`propagation_anchor` additional 1D hypotheses help to get an equal "
-"number of segments on the opposite sides of a quadrilateral face."
-msgstr ""
-
-# 99c0a64c5fd44ab1b9d3b6d6b85e256a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/quad_ijk_algo.rst:55
-msgid ""
-":ref:`a1d_algos_anchor` algorithm is useful to discretize several C1 "
-"continuous edges as one quadrangle side."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/radial_prism_algo.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/radial_prism_algo.po
deleted file mode 100644 (file)
index 6aae274..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# cde549b2f48246d5bd491c75e3963e56
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_prism_algo.rst:5
-msgid "Radial Prism"
-msgstr ""
-
-# fbd0194a244f4859ab3d4dee4ad8a5fe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_prism_algo.rst:7
-msgid ""
-"This algorithm applies to the meshing of a hollow 3D shape, i.e. such "
-"shape should be composed of two meshed shells: an outer shell and an "
-"internal shell without intersection with the outer shell. One of the "
-"shells should be a 2D Projection of the other shell. The meshes of the "
-"shells can consist both of triangles and quadrangles."
-msgstr ""
-
-# cbcb0680641c42c5b044cdcccd917c14
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_prism_algo.rst:14
-msgid ""
-"The Radial Prism algorithm would fill the space between the two shells "
-"with prisms."
-msgstr ""
-
-# 78f5dae2c9004b208036a4c2f6092d08
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_prism_algo.rst:23
-msgid ""
-"This algorithm also needs the information concerning the number and "
-"distribution of mesh layers between the inner and the outer shapes."
-msgstr ""
-
-# 68409354b4ad4343b9bceb87b30ae966
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_prism_algo.rst:29
-msgid "Distribution of layers can be set with any of 1D Hypotheses."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/radial_quadrangle_1D2D_algo.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/radial_quadrangle_1D2D_algo.po
deleted file mode 100644 (file)
index 302d65b..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# f0ac03aa977749fbbd906fdab24b64be
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst:5
-msgid "Radial Quadrangle 1D-2D"
-msgstr ""
-
-# fa9894d81bb64b7e8ca471ffe1d0a458
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst:7
-msgid ""
-"This algorithm applies to the meshing of 2D shapes under the following "
-"conditions: the face must be a full ellipse or a part of ellipse (i.e. "
-"the number of edges is less or equal to 3 and one of them is an ellipse "
-"curve). The resulting mesh consists of triangles (near the center point) "
-"and quadrangles."
-msgstr ""
-
-# 259b8a9a3c9148a18cf68c58c3d597ed
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst:13
-msgid ""
-"This algorithm is optionally parametrized by the hypothesis indicating "
-"the number of mesh layers along the radius. The distribution of layers "
-"can be set with any 1D Hypothesis. If the face boundary includes radial "
-"edges, this distribution is applied to the longest radial edge. If the "
-"face boundary does not include radial edges, this distribution is applied"
-" to the longest virtual radial edge. The distribution is applied to the "
-"longest radial edge starting from its end lying on the elliptic curve."
-msgstr ""
-
-# 7ee304ad57e440008cffc634c3739734
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst:23
-msgid ""
-"If no own hypothesis of the algorithm is assigned, any local or global "
-"hypothesis is used by the algorithm to discretize edges."
-msgstr ""
-
-# 9a87ad2f50a1473385f55fd5593ba561
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst:26
-msgid ""
-"If no 1D hypothesis is assigned to an edge, :ref:`nb_segments_pref` "
-"preferences parameter is used to discretize the edge."
-msgstr ""
-
-# f69a04ca46b746e284f55cb575200996
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst:45
-msgid "**See also** A sample :ref:`tui_radial_quadrangle`."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/removing_nodes_and_elements.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/removing_nodes_and_elements.po
deleted file mode 100644 (file)
index 56e97c4..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 5bc7dc5777f24bb9b187bd099ff28cd0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:5
-msgid "Removing nodes and elements"
-msgstr ""
-
-# 72d9643c2e1843739eba26c4b9ffd548
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:7
-msgid "In MESH you can remove nodes and all types of cells of your mesh."
-msgstr ""
-
-# 6c120c5024824b06b409cb2d9707307d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:9
-msgid ":ref:`removing_nodes_anchor`"
-msgstr ""
-
-# b94a14aa44e34edcbbcfdf5798f373f9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:10
-msgid ":ref:`removing_orphan_nodes_anchor`"
-msgstr ""
-
-# 54fa4702bf9f4320bd97cf7eb53f7070
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:11
-msgid ":ref:`removing_elements_anchor`"
-msgstr ""
-
-# 38d728956d7c4ac2b19f303e2c52bd85
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:12
-msgid ":ref:`clear_mesh_anchor`"
-msgstr ""
-
-# 016116887ef14c6e9174da9c59d47a76
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:19
-msgid "Removing nodes"
-msgstr ""
-
-# 57ad24bd52ea469fa85af40dd5dfd1b1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:21
-msgid "**To remove a node:**"
-msgstr ""
-
-# c7eb84e300ef41fe93752ba59e373e69
-# 79f4873f63d5416e9f6571f2ef5034b7
-# ce977e7f17f346db9c0c09e27b72229f
-# 7a282dec068b4c6a821624de51ddcbff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:23
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:59
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:84
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:125
-msgid "Select your mesh in the Object Browser or in the 3D viewer."
-msgstr ""
-
-# 7678c235cd8547c89d951b970d8ace6c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:24
-msgid ""
-"From the **Modification** menu choose **Remove** and from the associated "
-"submenu select the **Nodes**, or just click **\"Remove nodes\"** button "
-"in the toolbar."
-msgstr ""
-
-# 0267cfd3bcae4e9f84eb3f2f2b5ae258
-# 1b82a2273df744148619d94afe8a5a47
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:32
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:93
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# b427bef390e1489a98cef5eb02163c31
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:38
-msgid "In this dialog box you can specify one or several nodes:"
-msgstr ""
-
-# 81e5d18bf8ef436fa514d40d8551ccad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:40
-msgid ""
-"choose mesh nodes with the mouse in the 3D Viewer. It is possible to "
-"select a whole area with a mouse frame; or"
-msgstr ""
-
-# e64a50ee07e74706a3d62080bbcb7b67
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:41
-msgid ""
-"input the node IDs directly in **ID Elements** field. The selected nodes "
-"will be highlighted in the viewer; or"
-msgstr ""
-
-# 9c5970a21b3d41a5a269d8dd6a875a45
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:42
-msgid ""
-"apply Filters. **Set filter** button allows to apply a filter to the "
-"selection of nodes. See more about filters in the "
-":ref:`selection_filter_library_page` page."
-msgstr ""
-
-# 0890d7d353644c938fc72636f7030e88
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:47
-msgid ""
-"Be careful while removing nodes because if you remove a definite node of "
-"your mesh all adjacent elements will be also deleted."
-msgstr ""
-
-# 54ad34c6a9ed434a9d2588f1db54f328
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:53
-msgid "Removing orphan nodes"
-msgstr ""
-
-# 1253e8f9c7324245a87dd8c4bb5aa3ea
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:55
-msgid "There is a quick way to remove all orphan (free) nodes."
-msgstr ""
-
-# dfbd7c24f58043e79102e027e312886e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:57
-msgid "**To remove orphan nodes:**"
-msgstr ""
-
-# de76854beb0349e0985c0ce382afff76
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:60
-msgid ""
-"From the **Modification** menu choose **Remove** and from the associated "
-"submenu select **Orphan Nodes**, or just click **\"Remove orphan "
-"nodes\"** button in the toolbar."
-msgstr ""
-
-# 2c3104701da94d61a3dbd9a6110a66c0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:68
-msgid "The following Warning message box will appear:"
-msgstr ""
-
-# b501f2a03e2c4f658a77e33b479d6193
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:74
-msgid "Confirm nodes removal by pressing \"Yes\" button."
-msgstr ""
-
-# 249781e7a71d461bbc538489102a3514
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:80
-msgid "Removing elements"
-msgstr ""
-
-# 7fb72900c9d0489db8399914fd06e937
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:82
-msgid "**To remove an element:**"
-msgstr ""
-
-# f6e9315ba99644708f439b8c3b31ee1b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:85
-msgid ""
-"From the **Modification** menu choose **Remove** and from the associated "
-"submenu select the **Elements**, or just click **\"Remove elements\"** "
-"button in the toolbar."
-msgstr ""
-
-# 860f4cfb7782422a9ddb136cdd942de3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:98
-msgid "In this dialog box you can specify one or several elements"
-msgstr ""
-
-# 672b8cdbf4d04abab64e4fa301db0bb6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:100
-msgid ""
-"choose mesh elements with the mouse in the 3D Viewer. It is possible to "
-"select a whole area with a mouse frame; or"
-msgstr ""
-
-# 654a3e3f58ca4b62ad9365d5878c82d5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:101
-msgid ""
-"input the element IDs directly in **ID Elements** field. The selected "
-"elements will be highlighted in the viewer; or"
-msgstr ""
-
-# 09bca0568e934c38946363aa0cfb32a8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:102
-msgid ""
-"apply Filters. **Set filter** button allows to apply a filter to the "
-"selection of elements. See more about filters in the "
-":ref:`selection_filter_library_page` page."
-msgstr ""
-
-# 395b19a0baa942079082c4e0f3dbba79
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:103
-msgid ""
-"Click **Apply** or **Apply and Close** to confirm deletion of the "
-"specified elements."
-msgstr ""
-
-# 8066994c98c549d39f8ef5b6df3b95c0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:121
-msgid "Clearing Mesh Data"
-msgstr ""
-
-# f8e71f16cdfd4e188166f38518e3809e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:123
-msgid "**To remove all nodes and all types of cells in your mesh at once:**"
-msgstr ""
-
-# d3362805418f4ffab732f86853506068
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:126
-msgid ""
-"From the Modification menu choose Remove and from the associated submenu "
-"select the Clear Mesh Data, or just click **\"Clear Mesh Data\"** button "
-"in the toolbar. You can also right-click on the mesh in the Object "
-"Browser and select Clear Mesh Data in the pop-up menu."
-msgstr ""
-
-# 5015bce04d8e4ba6bc30dfe750dedb66
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:136
-msgid "This command works in a different way in different situations:"
-msgstr ""
-
-# 63492c65ecb944a4b580d28c4a501fb6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:136
-msgid ""
-"if the mesh is computed on a geometry, then \"Clear Mesh Data\" removes "
-"all elements and nodes."
-msgstr ""
-
-# 638a8b45bb4b4ae994f61a0718ee6a87
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:137
-msgid ""
-"if the mesh is not based on a geometry (imported, compound, created from "
-"scratch etc.), then \"Clear Mesh Data\" removes only the elements and "
-"nodes computed by algorithms. If no such elements or nodes have been "
-"created, can remove nothing."
-msgstr ""
-
-# 6e8673cbfc2647b7994ac8448464c3d6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst:139
-msgid ""
-"**See Also** a sample TUI Script of a "
-":ref:`tui_removing_nodes_and_elements` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/reorient_faces.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/reorient_faces.po
deleted file mode 100644 (file)
index 3b40b49..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 0bdea21e0d144d2ead6f84abbbed4c46
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:6
-msgid "Orient faces"
-msgstr ""
-
-# 9859e23d791e4e9eac9c94018b8c6e71
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:8
-msgid ""
-"This operation allows fixing the orientation of a set of faces in the "
-"following ways:"
-msgstr ""
-
-# 90ed66a8fd9c4803966fa046e987a0dd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:11
-msgid ""
-"The required orientation of a set of neighboring faces can be defined by "
-"a vector giving the direction of a normal to a certain face. Since the "
-"direction of face normals in the set can be even opposite, it is "
-"necessary to specify a *control* face, the normal to which will be "
-"compared with the vector. This face can be either:"
-msgstr ""
-
-# 110f3e31151e451ab47b718dcd8a1187
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:11
-msgid "found by proximity to a given point, or"
-msgstr ""
-
-# c5177627b34a4943a52e8c155942d641
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:12
-msgid "specified explicitly."
-msgstr ""
-
-# b9467622883843bfbe5d5430a2111a4e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:13
-msgid ""
-"Alternatively, the faces can be oriented relatively to the adjacent "
-"volumes."
-msgstr ""
-
-# 09763a05394b4d2e969fb4fa4f268d5e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:15
-msgid "The orientation of a face is changed by reverting the order of its nodes."
-msgstr ""
-
-# 396f84a7a6b14a028f326e3073506a45
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:17
-msgid "**To set orientation of faces:**"
-msgstr ""
-
-# 37aad076460d4729afd3fbba7c52cdf6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:19
-msgid ""
-"In the **Modification** menu select **Reorient faces** item or click "
-"**Reorient faces** button in the toolbar."
-msgstr ""
-
-# 3c75a02cea294006b8261737abda28f2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:29
-msgid "In the \"Reorient faces\" dialog box"
-msgstr ""
-
-# 49d9250fdcbf47f19b76f7fd85250ff1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:30
-msgid ""
-"Select the **Object** (mesh, sub-mesh or group) containing faces to "
-"reorient, in the Object Browser or in the 3D Viewer."
-msgstr ""
-
-# 30cddddfd28a46469db3a832e59a35f3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:31
-msgid "To reorient by direction of the face normal:"
-msgstr ""
-
-# 188bd9f881a24557bf2791572b5d5b22
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:33
-msgid ""
-"Specify the coordinates of the **Point** by which the control face will "
-"be found. You can specify the **Point** by picking a node in the 3D "
-"Viewer or selecting a vertex in the Object Browser."
-msgstr ""
-
-# 868aa922269446629ea346b7273b0324
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:34
-msgid ""
-"Set up the **Direction** vector to be compared with the normal of the "
-"control face. There are following options:"
-msgstr ""
-
-# c84d68c428f74ee7acd733c114a11824
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:36
-msgid "adjust vector components directly;"
-msgstr ""
-
-# cc9edfb98e5744dba3f2dc4c05d87934
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:37
-msgid ""
-"select a vertex in the Object Browser or a node in the 3D Viewer; their "
-"coordinates will define vector components;"
-msgstr ""
-
-# bf70425a377f4818954be246e9851872
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:38
-msgid ""
-"pick two nodes (holding Shift button), the **Direction** vector will go "
-"from the first to the second node."
-msgstr ""
-
-# 6be73a1744414a939e04e424053bd71a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:46
-msgid ""
-"In the second mode it is possible to pick the **Face** by mouse in the 3D"
-" Viewer or directly input the **Face** ID in the corresponding field."
-msgstr ""
-
-# e03af85346da481bae91f969e3a516b6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:55
-msgid "In the third mode, the faces can be reoriented according to volumes:"
-msgstr ""
-
-# bc81a8fd80a94482a3eaabb3a3d842bc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:57
-msgid ""
-"Select an object (mesh, sub-mesh or group) containing reference "
-"**Volumes**, in the Object Browser or in the 3D Viewer."
-msgstr ""
-
-# 8cdac663c228432a958c3cbcdc24af81
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:58
-msgid ""
-"Specify whether face normals should point outside or inside the reference"
-" volumes using **Face normal outside volume** check-box."
-msgstr ""
-
-# 8f80a1f281634632900bb376721a726f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:66
-msgid ""
-"Click the **Apply** or **Apply and Close** button to confirm the "
-"operation."
-msgstr ""
-
-# aacdcc31b3454a4892adc33edff88c2d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/reorient_faces.rst:68
-msgid "**See Also** a sample TUI Script of a :ref:`tui_reorient_faces` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/revolution.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/revolution.po
deleted file mode 100644 (file)
index efaa17e..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 6ac789b6770b4001ba9a2d569e8cd5f1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:5
-msgid "Revolution"
-msgstr ""
-
-# ab9940fdedc243edb2b4ee309e9f969e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:7
-msgid ""
-"Revolution is used to build mesh elements of plus one dimension than the "
-"input ones.  Boundary elements around generated mesh of plus one "
-"dimension are additionally created. All created elements can be "
-"automatically grouped. Revolution can be used to create a "
-":ref:`extrusion_struct`. See :ref:`extrusion_page` page for general "
-"information on Revolution, which can be viewed as extrusion along a "
-"circular path."
-msgstr ""
-
-# 104b920b73084454b555a42d29aecf2a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:15
-msgid "**To apply revolution:**"
-msgstr ""
-
-# 59caed10ca8144f0aace21eefbde3bfa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:17
-msgid ""
-"From the **Modification** menu choose the **Revolution** item or click  "
-"**\"Revolution\"** button in the toolbar."
-msgstr ""
-
-# 9fef083959254db9821bee5bfb06f9d0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:25
-msgid "The following dialog will appear:"
-msgstr ""
-
-# 0c0fb5d5710c4ca096f75d7097c313a5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:31
-msgid "In this dialog:"
-msgstr ""
-
-# 5a8da583e6fa46b4893d5ce61ecdef22
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:33
-msgid ""
-"Use *Selection* button to specify what you are going to select at a given"
-" moment, **Nodes**, **Edges** or **Faces**."
-msgstr ""
-
-# ef79794a371e474b8ccc2d3e4dbf83fd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:44
-msgid ""
-"Specify **Nodes**, **Edges** and **Faces**, which will be revolved, by "
-"one of following means:"
-msgstr ""
-
-# 6d264df6a869443fa232e69226a8bad5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:42
-msgid "**Select the whole mesh, sub-mesh or group** activating this check-box."
-msgstr ""
-
-# 56588b162f7d4805b892c2ee8a3e5b26
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:43
-msgid ""
-"Choose mesh elements with the mouse in the 3D Viewer. It is possible to "
-"select a whole area with a mouse frame."
-msgstr ""
-
-# 96d1ec2172234d0cb6badd1c6622f44a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:44
-msgid ""
-"Input the element IDs directly in **Node IDs**, **Edge IDs** and **Face "
-"IDs** fields. The selected elements will be highlighted in the viewer, if"
-" the mesh is shown there."
-msgstr ""
-
-# 5c797feb032349d2ad83aee9b2b34fdb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:45
-msgid ""
-"Apply Filters. **Set filter** button allows to apply a filter to the "
-"selection of elements. See more about filters in the "
-":ref:`filtering_elements` page."
-msgstr ""
-
-# c9998bdb16c24a22b7572f7ab936bc00
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:50
-msgid "Specify the **Axis** of revolution:"
-msgstr ""
-
-# 93c18e08e2104004b1edc0088a8dd4f9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:47
-msgid ""
-"Specify the coordinates of the start **Point** of the axis of revolution;"
-" either directly or by picking a node in the Viewer (selection of nodes "
-"is activated as you click the *Selection* button)."
-msgstr ""
-
-# 2e0fdecb971b474aa133dc4d5d09ef64
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:50
-msgid "Specify the **Vector** of the axis in either of three ways:"
-msgstr ""
-
-# 8e407adfd68b4ca1b7741cf23c64ba80
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:49
-msgid "directly adjust vector components;"
-msgstr ""
-
-# 9eabcb1646d4482db9ae710be3c1b36e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:50
-msgid ""
-"click *Selection* button, choose **From Origin to selected Point** in the"
-" opened menu and pick a node in the Viewer;"
-msgstr ""
-
-# 178a26fc0011439bb9898807d2f8a1d6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:51
-msgid ""
-"click *Selection* button, chose **Normal to selected Face** in the opened"
-" menu and pick a mesh face in the Viewer."
-msgstr ""
-
-# ba1537f0e50149cd8522ec63a94428cc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:69
-msgid ""
-"Specify the **Angle** of revolution and the **Number of steps** of "
-"revolution,"
-msgstr ""
-
-# 70e4ba78bbbd404cad2a51bf425db034
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:53
-msgid ""
-"**Angle by Step** - the elements are revolved by the specified angle at "
-"each step (i.e. for Angle=30 and Number of Steps=3, the elements will be "
-"extruded by 30 degrees twice for a total of 30*3=90)"
-msgstr ""
-
-# a1b9aadc072e48b0bc80d0b6534097cb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:61
-msgid ""
-"**Total Angle** - the elements are revolved by the specified angle only "
-"once and the number of steps defines the number of iterations (i.e. for "
-"Angle=30 and Number of Steps=3, the elements will be revolved by 30/3=10 "
-"degrees twice for a total of 30)."
-msgstr ""
-
-# 9c2d8f6996d14050af5f0132ca066fd5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:71
-msgid ""
-"Specify the **Tolerance**, which is used to detect nodes lying on the "
-"axis of revolution."
-msgstr ""
-
-# 1e0b5219aa40468ea7d1c932fe70bbfe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:72
-msgid "Activate  **Preview** check-box to see the result mesh in the viewer."
-msgstr ""
-
-# b3486204cbf44474acc0252faf8e3b14
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:73
-msgid ""
-"If you activate **Generate Groups** check-box, the **result elements** "
-"created from **selected elements** contained in groups will be included "
-"into new groups named by pattern \"<old group name>_rotated\" and \"<old "
-"group name>_top\". For example if a selected quadrangle is included in "
-"*g_Faces* group (see figures below) then result hexahedra will be "
-"included in *g_Faces_rotated* group and a quadrangle created at the "
-"\"top\" of revolved mesh will be included in *g_Faces_top* group."
-msgstr ""
-
-# 8ec480305a2747b2b2c5a516354d672a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:82
-msgid "This check-box is active only if there are some groups in the mesh."
-msgstr ""
-
-# 0e2f1e95c686473e94392283cfbe39e6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:84
-msgid "Click **Apply** or **Apply and Close** button to confirm the operation."
-msgstr ""
-
-# 06b0f7f7794a487eb6b4c6219186ea1c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/revolution.rst:86
-msgid "**See Also** a sample TUI Script of a :ref:`tui_revolution` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/rotation.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/rotation.po
deleted file mode 100644 (file)
index 7ccf99c..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 3eb9d57562994caaa94e9953e98e2bc1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:5
-msgid "Rotation"
-msgstr ""
-
-# bc73581315ba4779a00ea3c885277127
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:7
-msgid "This operation allows to rotate in space the mesh or some of its elements."
-msgstr ""
-
-# cfb02e83b2c043ff971b9dd3d43d20c9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:9
-msgid "**To rotate the mesh:**"
-msgstr ""
-
-# f1722428e06e47c894e2278d3825abb0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:11
-msgid ""
-"From the **Modification** menu choose **Transformation** -> **Rotation** "
-"item  or click **\"Rotation\"** button in the toolbar."
-msgstr ""
-
-# d7c9eeadb119438197cb8816f237bc92
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:19
-msgid "The following dialog will appear:"
-msgstr ""
-
-# f3b8e39357ed41c5ab97d573ec21ff42
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:24
-msgid "In this dialog:"
-msgstr ""
-
-# b7be9cd5867144ffabf77890d50ecf35
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:26
-msgid "specify the IDs of the elements which will be rotated:"
-msgstr ""
-
-# 36838092b54a4d068cb1b8a1c464aab7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:28
-msgid "**Select the whole mesh, submesh or group** activating this checkbox; or"
-msgstr ""
-
-# 0e62984febc34a5c982f6616e6119121
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:29
-msgid ""
-"choose mesh elements with the mouse in the 3D Viewer. It is possible to "
-"select a whole area with a mouse frame; or"
-msgstr ""
-
-# 907470a5dc324ec3aef4e0d59411f38d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:30
-msgid ""
-"input the element IDs directly in **ID Elements** field. The selected "
-"elements will be highlighted in the viewer; or"
-msgstr ""
-
-# e5b7a86186084d4383e3a53b9cebcf7f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:31
-msgid ""
-"apply Filters. **Set filter** button allows to apply a filter to the "
-"selection of elements. See more about filters in the "
-":ref:`selection_filter_library_page` page."
-msgstr ""
-
-# f849780da2d54925a39b1b368f513ce8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:35
-msgid "specify the axis of rotation:"
-msgstr ""
-
-# 38585ef1d6f44a35b54bf789f04920b4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:34
-msgid "specify the cooordinates of the start **Point** of the vector of rotation;"
-msgstr ""
-
-# 3b3dbcebc8b94e34bf9736dcd7153339
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:35
-msgid ""
-"specify the **Vector** of rotation through the coordinates of its end "
-"point with respect to the coordinates of the start point;"
-msgstr ""
-
-# b33fb11b21144354ac42f28cdcbf892f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:37
-msgid "specify the **Angle** of rotation"
-msgstr ""
-
-# 9e55761562b143799baa51c67436291a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:39
-msgid "specify the conditions of rotation:"
-msgstr ""
-
-# 6fac6e8141cb416da498e891f9e80c3b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:41
-msgid ""
-"activate **Move elements** radio button to create  the source mesh (or "
-"elements) at the new location and erase it from the previous location;"
-msgstr ""
-
-# 1956319341624ef899aa47cb565dde65
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:42
-msgid ""
-"activate **Copy elements** radio button to create the source mesh (or "
-"elements) at the new location, but leave it at the previous location, the"
-" source mesh will be considered one and single mesh with the result of "
-"the rotation;"
-msgstr ""
-
-# d531bcb2281544fb9cf8b7182fe2ef78
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:43
-msgid ""
-"activate **Create as new mesh** radio button to leave the source mesh (or"
-" elements) at its previous location and create a new mesh at the new "
-"location, the new mesh appears in the Object Browser with the default "
-"name MeshName_rotated (it is possible to change this name in the adjacent"
-" box);"
-msgstr ""
-
-# bfc597d8f46f4bc89628ab4474e05108
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:44
-msgid ""
-"activate **Copy groups** checkbox to copy the groups of elements of the "
-"source mesh to the newly created mesh."
-msgstr ""
-
-# 6dba19eadb894b8f99a9e4605a37974c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:46
-msgid ""
-"activate **Preview** checkbox to show the result of transformation in the"
-" viewer"
-msgstr ""
-
-# 407bbc2d9e554da29cb8cfa5fe4d0d96
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:47
-msgid "click **Apply** or **Apply and Close** button to confirm the operation."
-msgstr ""
-
-# 0dea9b0910534ea2ab63434488817657
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/rotation.rst:62
-msgid "**See Also** a sample TUI Script of a :ref:`tui_rotation` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/scalar_bar.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/scalar_bar.po
deleted file mode 100644 (file)
index 448ac93..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 1156d5c7cd8b4ce1a3df82e82a707119
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:5
-msgid "Scalar Bar properties"
-msgstr ""
-
-# 4611908037724a82beac0a0b227692bb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:7
-msgid "In this dialog you can specify the properties of the scalar bar"
-msgstr ""
-
-# 27e42760cf0343ab852c0448815e1e95
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:13
-msgid ""
-"**Scalar Range** - in this menu you can specify **Min value** and **Max "
-"value** of the **Scalar Bar**, and turn on/off **Logarithmic** scaling of"
-" the scalar bar."
-msgstr ""
-
-# b5dabecd5af340298fae16f653e29ec6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:16
-msgid ""
-"**Logarithmic scale** is not applicable in case of negative and zero "
-"values in the range. In such cases it is disabled."
-msgstr ""
-
-# f8bbd34463744e8a939fae79d70564eb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:18
-msgid ""
-"**Font** - in this menu you can set type, face and color for the font of "
-"**Title** and **Labels** of the **Scalar Bar**"
-msgstr ""
-
-# 664c9633f415405e805f78afe06b4c9d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:20
-msgid ""
-"**Colors & Labels** - in this menu you can set the **number of colors** "
-"and the **number of labels** of the **Scalar Bar**"
-msgstr ""
-
-# ed868968ad2e488f90dbbbb34d38edcb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:22
-msgid ""
-"**Orientation** - allows choosing between vertical and horizontal "
-"orientation of the **Scalar Bar**."
-msgstr ""
-
-# 39360fa91ca54a70a9d489574fa1d4ed
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:25
-msgid ""
-"**Origin & Size Vertical & Horizontal** - allows defining the location "
-"(**X** and **Y**) and size (**Width** and **Height**) of **Scalar Bar**"
-msgstr ""
-
-# 79463d1d8df54ec0b4b64d7c5b54e0cc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:25
-msgid "**X**: abscissa of the origin (from the left side)"
-msgstr ""
-
-# 3dc2795dc89f47639ec6050cdc0a8da8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:26
-msgid "**Y**: ordinate of the origin (from the bottom)"
-msgstr ""
-
-# 03322a6dfedc42c09a9a078cd601e76b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:33
-msgid ""
-"**Distribution** - in this menu you can Show/Hide distribution histogram "
-"of the values of the **Scalar Bar** and specify histogram properties"
-msgstr ""
-
-# c10bd60eabd54a5f9d58bf7d23c80ffd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:28
-msgid "**Multicolor** the histogram is colored as **Scalar Bar**"
-msgstr ""
-
-# adcd8b4b90834ef1b259f5723ae5588a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scalar_bar.rst:29
-msgid ""
-"**Monocolor** the histogram is colored as selected with **Distribution "
-"color** selector"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/scale.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/scale.po
deleted file mode 100644 (file)
index 0cdcf0c..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 976649347dc04341ae9ba242b046a63f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:5
-msgid "Scale"
-msgstr ""
-
-# aa6151bc0ee9433c86ad127eb2accce5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:7
-msgid ""
-"This geometrical operation allows to scale in space your mesh or some of "
-"its elements."
-msgstr ""
-
-# 7c93fc0bfad147c388e6f8288ea113a3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:9
-msgid "**To scale a mesh:**"
-msgstr ""
-
-# 516f478f73cf4c57b83ebbd9c5abda5e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:22
-msgid ""
-"From the **Modification** menu choose **Transformation** -> **Scale "
-"Transform** item."
-msgstr ""
-
-# 592174632303487d8ce9c13810433a54
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:12
-msgid "One of the following dialogs will appear:"
-msgstr ""
-
-# b3abf3343d4e4614b82fd4471bef6f23
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:14
-msgid "With one scale factor:"
-msgstr ""
-
-# 1727f2fa7cf14d689c8d20b9b7fb5fa4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:19
-msgid "Or with different scale factors for axes:"
-msgstr ""
-
-# f6d8459879304805a1f76ac536164444
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:44
-msgid "In the dialog:"
-msgstr ""
-
-# 0c332aca8bd949ec80c5867c1787a603
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:29
-msgid "specify the IDs of the translated elements:"
-msgstr ""
-
-# f7cda11020c543ff8fea7ad971549c8d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:26
-msgid "**Select the whole mesh, submesh or group** activating this checkbox; or"
-msgstr ""
-
-# f9b333cbe5ac44e9acd16c790192e3db
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:27
-msgid ""
-"choose mesh elements with the mouse in the 3D Viewer. It is possible to "
-"select a whole area with a mouse frame; or"
-msgstr ""
-
-# e1518aed969b48f8a270e5f08cf051e1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:28
-msgid ""
-"input the element IDs directly in **ID Elements** field. The selected "
-"elements will be highlighted in the viewer; or"
-msgstr ""
-
-# 0c0b04720a4143e88071e45d47be2573
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:29
-msgid ""
-"apply Filters. **Set filter** button allows to apply a filter to the "
-"selection of elements. See more about filters in the "
-":ref:`selection_filter_library_page` page."
-msgstr ""
-
-# 0dff07c6312e4602a6d73eab27f77b16
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:31
-msgid "specify the base point for scale"
-msgstr ""
-
-# cb38c5456f3a420fa73112e558383d4c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:33
-msgid "specify the scale factor"
-msgstr ""
-
-# 207ff7432d104971920e94f1a1489058
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:35
-msgid "specify the conditions of scale:"
-msgstr ""
-
-# ae76fd3de0e145cbae97b2557a1ae1b4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:37
-msgid ""
-"activate **Move elements** radio button to scale the selected mesh (or "
-"elements) without creating a copy;"
-msgstr ""
-
-# 2b45e07b65e5447c81a5a9fa7a730813
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:38
-msgid ""
-"activate **Copy elements** radio button to duplicate the selected mesh "
-"(or elements) and to apply scaling to the copy within the same mesh;"
-msgstr ""
-
-# cfe3fb629ea3424a91a18cb3c2c343db
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:39
-msgid ""
-"activate **Create as new mesh** radio button to leave the selected mesh "
-"(or elements) at its previous location and create a new mesh of the "
-"scaled copy of the selected elements; the new mesh appears in the Object "
-"Browser with the default name MeshName_scaled (it is possible to change "
-"this name in the adjacent box);"
-msgstr ""
-
-# 7991c68193e24dc29f5a406dee204dd2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:40
-msgid ""
-"activate **Copy groups** checkbox to copy the groups of elements existing"
-" in the source mesh to the newly created mesh."
-msgstr ""
-
-# bf35cd9cb59e4b18b39740b76ef4e40f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:42
-msgid ""
-"activate **Preview** checkbox to show the result of transformation in the"
-" viewer"
-msgstr ""
-
-# eab666d03f084db59220125c74308d29
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:43
-msgid "click **Apply** or **Apply and Close** button to confirm the operation."
-msgstr ""
-
-# 30a53807813c440680fd35fe9e1fa820
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:46
-msgid "**Example of using:**"
-msgstr ""
-
-# e1be3e4a68d9473c99099a90dfeaae68
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:48
-msgid "Create quandrangle mesh 3x3 on a simple planar face (200x200)"
-msgstr ""
-
-# c9c9dec075ba4cad992dde2f2bdc5155
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:53
-msgid "and union 3 faces (along axis Z) to group \"gr_faces\""
-msgstr ""
-
-# ccee25b07af74515b94b5d27c3be58de
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:60
-msgid "Perform scale operation for the whole mesh and create a new mesh:"
-msgstr ""
-
-# 8d1cc8863f5645ca872ec1934ea72f82
-# 7c4b36782d234b55b1b5d4ea505b3fe1
-# 11937ca304cb451bbcb27a93701a01ce
-# 01da8b1362bb4532bc2a36e54870acdf
-# da6c180ec04043119602a6e5bb6f7e4f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:65
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:75
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:85
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:97
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:109
-msgid "result after operation:"
-msgstr ""
-
-# 95e75f754ac247448c9da13196a037f8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:70
-msgid "Perform scale operation for the whole mesh and copy elements:"
-msgstr ""
-
-# 09834714eb3540e1a254907302799225
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:80
-msgid "Perform scale operation for a group of faces and copy elements:"
-msgstr ""
-
-# 9b1c18e6ff8c4001bab9401ec88179f2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:92
-msgid "Perform scale operation for two edges and move elements:"
-msgstr ""
-
-# 6aee0052fed448c8b135b26af4479692
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:104
-msgid "Perform scale operation for one face and move elements:"
-msgstr ""
-
-# e5db8678a3a4415eaa2ef2096cc1e865
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/scale.rst:115
-msgid "**See Also** a sample TUI Script of a :ref:`tui_scale` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/segments_around_vertex_algo.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/segments_around_vertex_algo.po
deleted file mode 100644 (file)
index 14a9b3d..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# d4f6292a512f44e0949ebb0af600ae1b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/segments_around_vertex_algo.rst:5
-msgid "Segments around Vertex"
-msgstr ""
-
-# 1d1fe0e867d64d81b399c9952109111f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/segments_around_vertex_algo.rst:7
-msgid ""
-"**Segments around Vertex** algorithm is considered to be a 0D meshing "
-"algorithm, but, of course, it doesn't mesh vertices. It allows to define "
-"the local size of the segments in the neighborhood of a certain vertex. "
-"If we assign this algorithm to a geometrical object of higher dimension, "
-"it applies to all its vertices."
-msgstr ""
-
-# 958bbf124dab4412a71acd09cbcfc2ef
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/segments_around_vertex_algo.rst:13
-msgid ""
-"Length of segments near vertex is defined by **Length Near Vertex** "
-"hypothesis. This hypothesis is used by :ref:`a1d_algos_anchor` \"Wire "
-"Discretization\" or :ref:`a1d_algos_anchor` \"Composite Side "
-"Discretization\" algorithms as follows: a geometrical edge is discretized"
-" according to a 1D hypotheses and then nodes near vertices are modified "
-"to assure the segment length required by **Length Near Vertex** "
-"hypothesis."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/selection_filter_library.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/selection_filter_library.po
deleted file mode 100644 (file)
index 37e910d..0000000
+++ /dev/null
@@ -1,517 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 1c1fce2364eb4d10a0b9ef75f005a204
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:5
-msgid "Selection filter library"
-msgstr ""
-
-# 8bdbe1ebe74b443e9f379fcd3769a610
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:7
-msgid ""
-"Selection filter library allows creating and storing in files the filters"
-" that can be later reused for operations on meshes. You can access it "
-"from the Main Menu via **Tools / Selection filter library**. It is also "
-"possible to save/load a filter by invoking the filter library from "
-":ref:`filtering_elements` launched from any mesh operation."
-msgstr ""
-
-# 0e734e3b76c941b8ab1cdc3cd2278263
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:16
-msgid ""
-"**Library file name** shows the path and the file name where your filters"
-" will be stored. By clicking the **Browse** button you can load an "
-"existing filter library."
-msgstr ""
-
-# 3e3d1001ef1e4596b81c61efe31f259d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:20
-msgid ""
-"**Names of filters** lists the filters created or uploaded for the "
-"current study. You can **Add** or **Delete** filters."
-msgstr ""
-
-# 1d12f5c73eb145f58cf4d80c15b808fe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:23
-msgid ""
-"In **Filter name** box you can specify the name for your filter. By "
-"default it is prefixed with the corresponding entity type."
-msgstr ""
-
-# 8b3e05ba20e54cf9ae42610cb3b64bb9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:29
-msgid "Filter Dialog"
-msgstr ""
-
-# f8535670e6fc4c5893d9a7a134c6235a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:31
-msgid ""
-"When we use filters during group creation or another operation (by "
-"clicking **Set Filter** button in the corresponding dialog), the dialog "
-"for setting filters looks as shown below."
-msgstr ""
-
-# c8cad5728ed64f47a139515c0aac843c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:38
-msgid ""
-"The **Add** button creates a new criterion at the end of the list of "
-"criteria. The **Insert** button creates a new criterion before the "
-"selected criterion. The **Remove** button deletes the selected criterion."
-" The **Clear** button deletes all criteria."
-msgstr ""
-
-# c7be8ffe336742d8893887bd7ed12199
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:43
-msgid ""
-"If there is a choice of **Entity type** in the dialog, only criteria of "
-"currently selected type are used to create or change a filter, and "
-"criteria of hidden types (if were specified) are ignored."
-msgstr ""
-
-# 5df645a139e14ef0a5ab935cc2822f4e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:47
-msgid ""
-"Each **Entity type** has its specific list of criteria, however all "
-"filters have common syntax. The **Threshold Value** should be specified "
-"for most criteria. For numerical criteria it is necessary to indicate if "
-"the found elements should be **More**, **Less** or **Equal** to this "
-"**Value**. You can also reverse the sense of a criterion using **Unary** "
-"operator *Not* and you should specify logical relations between criteria "
-"using **Binary** operators *Or* and *And*."
-msgstr ""
-
-# 8550bb068c514fa4b58594b758559fb4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:55
-msgid ""
-"Some criteria have the additional parameter of **Tolerance**. Switching "
-"on **Insert filter in viewer** check-box limits selection of elements in "
-"the Viewer to the current filter."
-msgstr ""
-
-# 9acf2cc77b6245ce931c1ed13dff672d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:59
-msgid ""
-"In the **Source** field you choose if the filter will be applied to the "
-"whole **Mesh**, the **Initial Selection** or the **Current Dialog**. If "
-"**Mesh** is chosen, the elements satisfying the filter will be selected "
-"in the 3D Viewer. If **Initial Selection** is chosen, the filter will be "
-"applied to the selected elements and the elements rejected by the filter "
-"will be deselected. If **Current Dialog** is chosen, the filter will be "
-"applied to the list of elements in the current dialog and the elements "
-"rejected by the filter will be removed from the list."
-msgstr ""
-
-# e1610c78c0ed4b2794086eb144acd6a3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:69
-msgid ""
-"**Copy from...** button gives you a possibility to load an existing "
-"filter from **Selection filter library** and **Add to...** button gives "
-"you a possibility to save your current filter in the Library."
-msgstr ""
-
-# 490fe36e117e4c8886f86f11483197ad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:74
-msgid ""
-"If the button **Apply and Close** is disabled, there is no selected mesh "
-"in the Object Browser and the filter can not be created. You have to "
-"select the mesh and the button will be enabled."
-msgstr ""
-
-# 80cfefe334de4e478d2ee70d122f722c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:76
-msgid "Some criteria are applicable to all **Entity types**:"
-msgstr ""
-
-# eac45a6080c545e09c8b0ab33992aad6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:78
-msgid ""
-"**Belong to Geom** selects entities whose all nodes lie on the shape "
-"defined by **Threshold Value**. If the threshold shape is a sub-shape of "
-"the main shape of the mesh, the filtering algorithm works faster because "
-"node-to-shape association is used instead of measuring distance between "
-"nodes and the shape, and **Tolerance** is not used. If the threshold "
-"shape is any other shape, the algorithm works slower because distance "
-"between nodes and the shape is measured and is compared with "
-"**Tolerance**. The latter approach (distance measurement) is also used if"
-" an element is not associated to any shape."
-msgstr ""
-
-# f67124ffdff24567bf5b03fdb1444f8b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:79
-msgid ""
-"**Lying on Geom** selects entities whose at least one node lies on the "
-"shape defined by the **Threshold Value**. If the threshold shape is a "
-"sub-shape of the main shape of the mesh, the filtering algorithm works "
-"faster because node-to-shape association is used instead of measuring "
-"distance between nodes and the shape, and **Tolerance** is not used. If "
-"the threshold shape is any other shape, the algorithm works slower "
-"because distance between nodes and the shape is measured and is compared "
-"with **Tolerance**. The latter approach (distance measurement) is also "
-"used if an element is not associated to any shape."
-msgstr ""
-
-# 34e0eb39ce7649eba97c55fc8f783642
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:80
-msgid ""
-"**Belong to Mesh Group** selects entities included into the mesh group "
-"defined by the **Threshold Value**."
-msgstr ""
-
-# 1b2d26b182b3419abb3716a5a0fe4f59
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:81
-msgid ""
-"**Range of IDs** allows selection of entities with the specified IDs. "
-"**Threshold Value** can be, for example: \"1,2,3,50-60,63,67,70-78\""
-msgstr ""
-
-# e70b62585c804d82b8264c362e698a17
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:82
-msgid ""
-"**Color of Group** allows selection of entities belonging to the Group "
-"with the color defined by the **Threshold Value**."
-msgstr ""
-
-# 6a95643f6bac4e24b3b429add57f7105
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:86
-msgid ""
-"**Elements of a domain** allows selection of entities belonging to one "
-"domain of a mesh. The domain is mesh part not connected to other parts. "
-"**Threshold Value** locating any element of the domain can be either"
-msgstr ""
-
-# 38ca148d1a304511b5076a28fc54c9d6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:84
-msgid "node ID (that you can pick in the Viewer) or"
-msgstr ""
-
-# 9d0c424b3fa74c0a84b5fa14e67f1c20
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:85
-msgid ""
-"geometrical vertex (that you can pick either in the Viewer or in the "
-"Object Browser) or"
-msgstr ""
-
-# 8608ebd9c96e46c69ef2b8df43773378
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:86
-msgid "3 coordinates of a point (that you can enter in TUI mode only)."
-msgstr ""
-
-# ffea7f37121c4268b43ad9de9c20f421
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:88
-msgid ""
-"Some criteria are applicable to entities of dimension more than zero, "
-"i.e. to **Edges**, **Faces** and **Volumes**:"
-msgstr ""
-
-# 6aaffed45ef64e24b05096a94cc3afdc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:90
-msgid ""
-"**Linear** allows selection of Linear or Quadratic elements (if Unary is "
-"set to \"Not\")"
-msgstr ""
-
-# 8ec1110320cb485eae13c1a6c0d6c0f6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:91
-msgid ""
-"**Geometry type** allows selection of elements by their geometric type "
-"defined by the **Threshold Value**. The list of available geometric types"
-" depends on the current entity type."
-msgstr ""
-
-# 90b622d6c35944278f201fba7b79613f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:92
-msgid ""
-"**Entity type** allows selection of elements by their type defined as a "
-"combination of geometry type and the number of nodes."
-msgstr ""
-
-# 5c03d3620bf545c38cd2d0b7d079147c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:94
-msgid ""
-"The following criteria are applicable to Entities of **all** types except"
-" for *Volumes*:"
-msgstr ""
-
-# 829402e4a6284e6ab74ad292a98c4aab
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:96
-msgid ""
-"**Belong to Plane** selects entities whose all nodes belong to a "
-"specified plane within a given **Tolerance**."
-msgstr ""
-
-# 9a39d5991dd540e9a3402abcb53a1db0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:97
-msgid ""
-"**Belong to Cylinder** selects entities whose all nodes belong to a "
-"specified cylinder within a given **Tolerance**."
-msgstr ""
-
-# 5d4d7fbecf60482d8193729fd7f8c521
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:98
-msgid ""
-"**Belong to Surface** selects entities whose all nodes belong to a "
-"specified arbitrary surface within a given **Tolerance**."
-msgstr ""
-
-# 6336c1a5033e4f089d2c13133098a8e9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:100
-msgid "The following criteria allow selecting mesh **Nodes**:"
-msgstr ""
-
-# 837b8b1702c54744b16871a48fa37416
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:102
-msgid "**Free nodes** selects nodes not belonging to any mesh element."
-msgstr ""
-
-# cd6b965ce6ae41a08b73d5dd60bcec1f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:103
-msgid ""
-"**Double nodes** selects a node coincident with other nodes (within a "
-"given **Tolerance**). See also :ref:`tui_double_nodes_control`."
-msgstr ""
-
-# 6dea00644fa34febac6e86d56513001a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:104
-msgid ""
-"**Connectivity number** selects nodes with a number of connected "
-"elements, which is more, less or equal to the predefined **Threshold "
-"Value**. Elements of the highest dimension are countered only."
-msgstr ""
-
-# 4f3328b1ea8e4c808b3a2f00fc8566d8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:106
-msgid "The following criteria allow selecting mesh **Edges**:"
-msgstr ""
-
-# 70450e00d5ac49d2b4e3944fdf08dd77
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:108
-msgid ""
-"**Free Borders** selects free 1D mesh elements, i.e. edges belonging to "
-"one element (face or volume) only. See also a :ref:`free_borders_page`."
-msgstr ""
-
-# 0589aa44cbfc4646b09f1118227b42d5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:109
-msgid ""
-"**Double edges** selects 1D mesh elements basing on the same set of "
-"nodes. See also :ref:`filter_double_elements` ."
-msgstr ""
-
-# d8d8b9d1e788415ea6abdab073967ff3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:110
-msgid ""
-"**Borders at Multi-Connections** selects edges belonging to several "
-"faces. The number of faces should be more, less or equal (within a given "
-"**Tolerance**) to the predefined **Threshold Value**. See also a "
-":ref:`borders_at_multi_connection_page`."
-msgstr ""
-
-# c56be1de25a24c178460e748f230c825
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:111
-msgid ""
-"**Length** selects edges with a value of length, which is more, less or "
-"equal (within a given **Tolerance**) to the predefined **Threshold "
-"Value**. See also a :ref:`length_page` ."
-msgstr ""
-
-# 460916cdcb2f4597b398daf937a0bddb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:113
-msgid "The following criteria allow selecting mesh **Faces**:"
-msgstr ""
-
-# 36bcbcf2e34b4819b3e97c9c12c631cd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:115
-msgid ""
-"**Aspect ratio** selects 2D mesh elements with an aspect ratio (see also "
-"an :ref:`aspect_ratio_page`), which is more, less or equal (within a "
-"given **Tolerance**) to the predefined **Threshold Value**."
-msgstr ""
-
-# 31f11a8d74564ae293786fb388dd11f0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:116
-msgid ""
-"**Warping** selects quadrangles with warping angle (see also a "
-":ref:`warping_page`), which is more, less or equal (within a given "
-"**Tolerance**) to the predefined **Threshold Value**."
-msgstr ""
-
-# 59f4575a06874c57af5eab922fb54487
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:117
-msgid ""
-"**Minimum angle** selects triangles and quadrangles with minimum angle "
-"(see also a :ref:`minimum_angle_page`), which is more, less or equal "
-"(within a given **Tolerance**) to the predefined **Threshold Value**."
-msgstr ""
-
-# 18d26e933cea4cc683cfc077b606146c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:118
-msgid ""
-"**Taper** selects quadrangles cells with taper value (see also a "
-":ref:`taper_page`), which is more, less or equal (within a given "
-"**Tolerance**) to the predefined **Threshold Value**."
-msgstr ""
-
-# 30abd621800c45d0831eb72eb648274a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:119
-msgid ""
-"**Skew** selects triangles and quadrangles with skew value (see also a "
-":ref:`skew_page`), which is more, less or equal (within a given "
-"**Tolerance**) to the predefined **Threshold Value**."
-msgstr ""
-
-# 053853c3eb7849f9b26d5f711c8e11f2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:120
-msgid ""
-"**Area** selects triangles and quadrangles with a value of area (see also"
-" an :ref:`area_page`), which is more, less or equal (within a given "
-"**Tolerance**) to the predefined **Threshold Value**."
-msgstr ""
-
-# 02534930c9c74ffaa5819494e3a64911
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:121
-msgid ""
-"**Free edges** selects 2D mesh elements having at least one edge, which "
-"is not shared with other faces. See also a :ref:`free_edges_page`."
-msgstr ""
-
-# 9cf5e8a3b05f483dbbcb0789374f8c71
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:122
-msgid ""
-"**Free faces** selects 2D mesh elements, which belong to less than two "
-"volumes."
-msgstr ""
-
-# b9f5cfe961a6466c8d56e56395e197db
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:123
-msgid ""
-"**Double faces** selects 2D mesh elements basing on the same set of "
-"nodes. See also :ref:`filter_double_elements`."
-msgstr ""
-
-# 677dfbddc4364500b20b32752b20d483
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:124
-msgid ""
-"**Faces with bare border** selects 2D mesh elements having a free border "
-"without an edge on it. See also :ref:`bare_border_faces_page`."
-msgstr ""
-
-# 5b75d13db4a74770a725f1cd09c8b42e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:125
-msgid ""
-"**Over-constrained faces** selects 2D mesh elements having only one "
-"border shared with other 2D elements. See also "
-":ref:`over_constrained_faces_page`."
-msgstr ""
-
-# 8a8c1a6a9e444441bfbc48773d261806
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:126
-msgid ""
-"**Borders at Multi-Connections 2D** selects cells consisting of edges "
-"belonging to several elements of mesh. The number of mesh elements should"
-" be more, less or equal (within a given **Tolerance**) to the predefined "
-"**Threshold Value**. See also a "
-":ref:`borders_at_multi_connection_2d_page`."
-msgstr ""
-
-# a84ed7f236924d9dbb8438ffecafeba5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:127
-msgid ""
-"**Length 2D** selects triangles and quadrangles combining of the edges "
-"with a value of length, which is more, less or equal (within a given "
-"**Tolerance**) to the predefined **Threshold Value**. See also a "
-":ref:`length_2d_page`."
-msgstr ""
-
-# 54627dbe712540b3b3a85bc9eee7a24b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:128
-msgid ""
-"**Coplanar faces** selects mesh faces neighboring the one selected by ID "
-"in **Threshold Value** field, if the angle between the normal to the "
-"neighboring face and the normal to the selected face is less then the "
-"angular tolerance (defined in degrees). Selection continues among all "
-"neighbor faces of already selected ones."
-msgstr ""
-
-# df8bbc089d434f3eb71da4c6f0649904
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:129
-msgid ""
-"**Element Diameter 2D** selects triangles and quadrangles composed of the"
-" edges and diagonals with a value of length, which is more, less or equal"
-" (within a given **Tolerance**) to the predefined **Threshold Value**. "
-"See also a :ref:`max_element_length_2d_page`."
-msgstr ""
-
-# 6d7236a630c142ea9f0d30873c5f3b61
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:131
-msgid "The following criteria allow selecting mesh **Volumes**:"
-msgstr ""
-
-# c6462d3a7074480a99546e2823b5e310
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:133
-msgid ""
-"**Aspect ratio 3D** selects 3D mesh elements with an aspect ratio (see "
-"also an :ref:`aspect_ratio_3d_page`), which is more, less or equal "
-"(within a given **Tolerance**) to the predefined **Threshold Value**."
-msgstr ""
-
-# 1664adf90bb841bc9d0d712f5a2bd4f9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:134
-msgid ""
-"**Volume** selects 3D mesh elements with a value of volume (see also a "
-":ref:`volume_page`), which is more, less or equal (within a given "
-"**Tolerance**) to the predefined **Threshold Value**."
-msgstr ""
-
-# 4b238fb593444b72b69e50a0b009ac67
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:135
-msgid ""
-"**Element Diameter 3D** selects 3D mesh elements composed of the edges "
-"and diagonals with a value of length, which is more, less or equal "
-"(within a given **Tolerance**) to the predefined **Threshold Value**. See"
-" also a :ref:`max_element_length_3d_page`."
-msgstr ""
-
-# 2826aa3f994a45db95cf817efd5e85c5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:136
-msgid ""
-"**Double volumes** selects 3D mesh elements basing on the same set of "
-"nodes. See also :ref:`filter_double_elements`."
-msgstr ""
-
-# 6921b6529e1240858542b679f0db83b0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:137
-msgid ""
-"**Bad oriented volume** selects mesh volumes, which are incorrectly "
-"oriented from the point of view of MED convention."
-msgstr ""
-
-# 0d6876d7b2304932a550c4dfabca7b71
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:138
-msgid ""
-"**Over-constrained volumes** selects mesh volumes having only one facet "
-"shared with other volumes. See also :ref:`over_constrained_volumes_page`."
-msgstr ""
-
-# 5a3b01dc76d3443381382446e3ab2d7d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/selection_filter_library.rst:139
-msgid ""
-"**Volumes with bare border** selects 3D mesh elements having a free "
-"border without a face on it. See also :ref:`bare_border_volumes_page`."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/sewing_meshes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/sewing_meshes.po
deleted file mode 100644 (file)
index d431b08..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 0427a840a4e84ac6989aa0c77bfac249
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:5
-msgid "Sewing meshes"
-msgstr ""
-
-# 0f75e9f4e2e04aa59f00d0f88b0e2b0c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:7
-msgid ""
-"In SMESH you can sew elements of a mesh. The current functionality allows"
-" you to sew:"
-msgstr ""
-
-# 30937e9e896c4b1e8da93505b12fa892
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:10
-msgid ":ref:`free_borders_anchor`"
-msgstr ""
-
-# 1f1df6e111004472b003cda7e0c6b098
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:11
-msgid ":ref:`conform_free_borders_anchor`"
-msgstr ""
-
-# a0fdf0c2c0e04ab39246e05fcc02fe08
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:12
-msgid ":ref:`border_to_side_anchor`"
-msgstr ""
-
-# 17caeaf9ef344600b0a4863ddc79e48d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:13
-msgid ":ref:`side_elements_anchor`"
-msgstr ""
-
-# 2d547b0934db4141b1f612bcb80ae199
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:22
-msgid "**To sew elements of a mesh:**"
-msgstr ""
-
-# 832116b60d01498d9dd437868ce6c5eb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:24
-msgid ""
-"From the **Modification** menu choose the **Transformation** item and "
-"from its sub-menu select the **Sewing** item."
-msgstr ""
-
-# 177708ac72a04962849b6692eac54cee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:25
-msgid ""
-"Check in the dialog box one of the radio buttons corresponding to the "
-"type of sewing operation you would like to perform."
-msgstr ""
-
-# efe3e16943ef4edab8968180a97c6545
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:26
-msgid "Fill the other fields available in the dialog box."
-msgstr ""
-
-# a9f39065e73a4da885acd38d5507cf04
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:27
-msgid ""
-"Click the **Apply** or **Apply and Close** button to perform the "
-"operation of sewing."
-msgstr ""
-
-# 67fbff5164924d018bdc8c6aa5dca3b3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:34
-msgid "Sew free borders"
-msgstr ""
-
-# 45ffaa1d166d4a73b2e434da1dae0ab7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:36
-msgid "This functionality allows you to unite free borders of a 2D mesh."
-msgstr ""
-
-# a195379eb25b4b3c8def98cd965baeb5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:38
-msgid ""
-"There are two working modes: *Automatic* and *Manual*. In the "
-"**Automatic** mode, the program finds free borders coincident within the "
-"specified tolerance and sews them. Optionally it is possible to visually "
-"check and correct if necessary the found free borders before sewing. In "
-"the **Manual** mode you are to define borders to sew by picking three "
-"nodes of each of two borders."
-msgstr ""
-
-# cff4e716051842d29c7f4a08565327c7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:52
-msgid "To use **Automatic** sewing:"
-msgstr ""
-
-# 72336fb7e3fe4501ab80d5b5492733f3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:54
-msgid ""
-"Specify the mesh you want to sew by selecting it or any its part (group "
-"or sub-mesh) in the Object Browser or in the VTK Viewer."
-msgstr ""
-
-# 63c77719c09f4067b17893670f50e041
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:55
-msgid ""
-"Specify the **Tolerance**, within which free borders are considered "
-"coincident. At the default zero **Tolerance**, the tolerance used by he "
-"search algorithm is defined as one tenth of an average size of elements "
-"adjacent to compared free borders."
-msgstr ""
-
-# 4714fc6d3faa4c79ab36852cc0e4c74d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:56
-msgid ""
-"To visually check the coincident free borders found by the algorithm, "
-"switch off **Auto Sewing** check-box. The controls to adjust groups of "
-"coincident free borders will become available in the dialog."
-msgstr ""
-
-# acef3f7f661b4aecbaea899908fb9107
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:64
-msgid ""
-"**Detect** button launches the algorithm of search of coincident free "
-"borders."
-msgstr ""
-
-# 92e4f57d17cd4fdbb82b24f0fc95f45f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:65
-msgid ""
-"The found groups of **Coincident Free Borders** are shown in the list, "
-"one group per line. Each group has its own color, which is used to "
-"display the group borders in the VTK Viewer. A free border within a group"
-" is designated by the IDs of its first, second and last nodes within "
-"parenthesis. All borders present in the list will be sewn upon **Apply**."
-msgstr ""
-
-# eee96bafee2b41a1904366607c979078
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:66
-msgid "**Remove** button removes the selected groups from the list."
-msgstr ""
-
-# 4257c6d79e974570949891f524d38740
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:67
-msgid "**Select All** check-box selects all groups in the list."
-msgstr ""
-
-# 3208c772c2074645abc64177f162090d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:68
-msgid ""
-"When a group is selected, its borders appear in **Edit Selected Group** "
-"list that allows you to change this group."
-msgstr ""
-
-# 61981c0624434b3bbd85dd6b1d20f5e9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:83
-msgid ""
-"Selection of a border in the list allows changing its first and last "
-"nodes whose IDs appear in two fields below the list. *Arrow* buttons near"
-" each field move the corresponding end node by the number of nodes "
-"defined by **Step** field."
-msgstr ""
-
-# 84ef8d30fdb94cfa82a17768d40a7393
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:92
-msgid ""
-"For sewing free borders manually you should switch the **Mode** to "
-"**Manual** and define three points on each border: the first, the second "
-"and the last node:"
-msgstr ""
-
-# c9034feb9b2b4e3884a179194bafa9c7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:97
-msgid "the first node specifies beginning of the border;"
-msgstr ""
-
-# 17de1ef3b50c4d6c95babb7c8d3253fc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:98
-msgid ""
-"the second node specifies the part of the border which should be "
-"considered (as far as the free border usually forms a closed contour);"
-msgstr ""
-
-# bee01760bbfb4aefb6d885d0d4f081dc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:99
-msgid "the last node specifies the end of the border."
-msgstr ""
-
-# 5a0dc92cf1634f1b9f84f559096a1849
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:102
-msgid "You can select these nodes in the 3D viewer or define by its id."
-msgstr ""
-
-# caae9a4a6e6045d8b183bb97dd65b87e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:104
-msgid ""
-"The first and the second nodes should belong to the same link of a face. "
-"The second and the last nodes of a border can be the same. The first and "
-"the last nodes of two borders can be the same. The corresponding end "
-"nodes of two borders will be merged. Intermediate nodes of two borders "
-"will be either merged or inserted into faces of the opposite border."
-msgstr ""
-
-# 52a9e8df81dc45eb9570dd91eed42e10
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:111
-msgid ""
-"In practice the borders to sew often coincide and in this case it is "
-"difficult to specify the first and the last nodes of a border since they "
-"coincide with the first and the last nodes of the other border. To cope "
-"with this, :ref:`merging_nodes_page` coincident nodes into one "
-"beforehand. Two figures below illustrate this approach."
-msgstr ""
-
-# c7647d646eed4682a8d0f9e0359b66bd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:130
-msgid "The sewing algorithm is as follows:"
-msgstr ""
-
-# 7a7c60ebb975485ea6dda92c2f609a80
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:132
-msgid ""
-"The parameter (U) of each node within a border is computed. So that the "
-"first node has U=0.0, the last node has U=1.0, for the rest nodes 0.0 < U"
-" < 1.0;"
-msgstr ""
-
-# 50334149dbdb4c8aa8068989c6f0dbcb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:133
-msgid ""
-"Compare node parameters of the two borders. If two nodes of the opposite "
-"borders have close parameters, they are merged, i.e. a node of the first "
-"border is replaced in all elements by a node of the second border. If a "
-"node has no node with a close parameter in the opposite border, it is "
-"inserted into an edge of element of the opposite border, an element is "
-"split. Two nodes are considered close enough to merge, if difference of "
-"their parameters is less than one fifth of minimum length of adjacent "
-"face edges on the borders."
-msgstr ""
-
-# ad507053a5a5403ba9e0f023d5da133e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:142
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_sew_free_borders` "
-"operation."
-msgstr ""
-
-# 14435c9e9b574a8981617b79df0aea8a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:149
-msgid "Sew conform free borders"
-msgstr ""
-
-# b017b8bbb53f488db8fa09627d9904fd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:151
-msgid "This functionality can be used to unite two free borders of a 2D mesh."
-msgstr ""
-
-# 6a8a83cff00b4bc4a66562dfa130bfd0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:156
-msgid ""
-"The borders of meshes for sewing are defined as for \"Sew free borders\" "
-"except that the second free border is not limited and can be defined by "
-"the first and the second nodes only. The first nodes of two borders can "
-"be the same."
-msgstr ""
-
-# 927f9477f808490da86c1422ecfacf6e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:161
-msgid ""
-"The algorithm is following: counting nodes starting at the first ones, "
-"the n-th node of the first border is merged with the n-th node of the "
-"other border, until the end of either of borders. Nodes of the first "
-"border are replaced in all elements with corresponding nodes of the "
-"second border."
-msgstr ""
-
-# 1516ecc4950e4a9fb8b27ebe590122ec
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:168
-msgid ""
-"For sewing conform free borders you should define three points on the "
-"first border and two points on the second one. User can select these "
-"nodes in 3D viewer or define node by its id."
-msgstr ""
-
-# 041ce8ee41c14f9d927db512030afd36
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:176
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_sew_conform_free_borders`"
-" operation."
-msgstr ""
-
-# 65b0a0c74caa42e19e189c09d9afb252
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:183
-msgid "Sew border to side"
-msgstr ""
-
-# 88c3b5fd40ae42bbafa9b4d6644475a9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:185
-msgid "\"Sew border to side\" is intended to sew a free border to a mesh surface."
-msgstr ""
-
-# 37bb36c6f5e6447d88c3a40690d07c7f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:189
-msgid ""
-"The free border is defined as for \"Sewing of free borders\". The place "
-"where to sew the border is defined by two nodes, between which the border"
-" faces are placed, so that the first border node is merged with the first"
-" node on the side and the last node of the border is merged with the "
-"second specified node on the side."
-msgstr ""
-
-# 1b976c0dfd734579bb69d1f821541ce6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:194
-msgid "The algorithm is following."
-msgstr ""
-
-# d39a717ae6844ad7b25f5692ed57d70a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:196
-msgid ""
-"Find a sequence of linked nodes on the side such that the found links to "
-"be most co-directed with the links of the free border."
-msgstr ""
-
-# 66e7c6cefa3644a49ac9c1b787350287
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:197
-msgid "Sew two sequences of nodes using algorithm of \"Sewing of free berders\"."
-msgstr ""
-
-# 037508d4a2c2439d8488e9de3fe2f4da
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:200
-msgid ""
-"For sewing border to side you should define three points on the border "
-"and two points on the side. User can select these nodes in 3D viewer or "
-"define node by its id."
-msgstr ""
-
-# 60dcf19069f04f83bbf22733a3551e62
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:208
-msgid ""
-"**See Also** a sample TUI Script of a "
-":ref:`tui_sew_meshes_border_to_side` operation."
-msgstr ""
-
-# 8aa15075cb4e4698b3516044d6ba4ff1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:215
-msgid "Sew side elements"
-msgstr ""
-
-# dc6cdaaf8c3f43dcae25ade86910ab6a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:217
-msgid "This operation is intended to unite two mesh surfaces."
-msgstr ""
-
-# 73e1de6f7d8f401082281d1d07977628
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:222
-msgid ""
-"Surfaces may be defined by either 2d or 3d elements. The number of given "
-"elements of the sides must be the same. The sets of given elements must "
-"be topologically equal, i.e. each node of one element set must have a "
-"corresponding node in the other element set and corresponding nodes must "
-"be equally linked. If there are 3d elements in a set, only their free "
-"faces must obey to that rule."
-msgstr ""
-
-# 8be258d690594afe9e90428561b47cc1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:229
-msgid ""
-"Two corresponding nodes on each side must be specified. They must belong "
-"to one element and must be located on an element set boundary."
-msgstr ""
-
-# beffb26461c94fb29e06f062d9097797
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:231
-msgid ""
-"Sewing algorithm finds and merges the corresponding nodes starting from "
-"the specified ones."
-msgstr ""
-
-# 8d34e43f12604a0fae6e679f88de6c06
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:246
-msgid ""
-"For sewing side elements you should define elements for sewing and two "
-"nodes for merging on the each side. User can select these elements and "
-"nodes in 3D viewer or define them by its id."
-msgstr ""
-
-# 36d86c0d971448d58e132b91e11b4ab3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/sewing_meshes.rst:250
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_sew_side_elements` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/skew.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/skew.po
deleted file mode 100644 (file)
index dde0462..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# ffa0e140c2b94def8c2047d74ba0c16b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/skew.rst:5
-msgid "Skew"
-msgstr ""
-
-# 3d3fc82f66704e108328aaa7bf6d7126
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/skew.rst:7
-msgid ""
-"**Skew** mesh quality criterion reflects the angle between the lines that"
-" join opposite sides of a quadrangle element or the greatest angle "
-"between a median and a midline in a triangle element. This mesh quality "
-"criterion can be applied to elements composed of 4 and 3 nodes "
-"(quadrangles and triangles)."
-msgstr ""
-
-# 923ee2b37e8043919ea75c89979c3cc8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/skew.rst:20
-msgid "Display your mesh in the viewer."
-msgstr ""
-
-# 4334f64e54eb4a76bfa280c22114cbda
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/skew.rst:21
-msgid ""
-"Choose **Controls > Face Controls > Skew** or click **\"Skew\"** button "
-"of the toolbar."
-msgstr ""
-
-# ae0207e03e3f49ecaf5329395c50d8eb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/skew.rst:30
-msgid ""
-"Your mesh will be displayed in the viewer with its elements colored "
-"according to the applied mesh quality control criterion:"
-msgstr ""
-
-# 6bf94f1243344010a4fdade2e8ab5fe0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/skew.rst:36
-msgid "**See Also** a sample TUI Script of a :ref:`tui_skew` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smesh_migration.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smesh_migration.po
deleted file mode 100644 (file)
index 6ed8d5b..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 8b450be120c04c63852ba74f04c81751
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:5
-msgid "Modifing Mesh Python scripts from SALOME 6 and before"
-msgstr ""
-
-# c191d4032e124bbcad3e1a27bb60da68
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:7
-msgid ""
-"In SALOME 7.2, the Python interface for Mesh has been slightly modified "
-"to offer new functionality:"
-msgstr ""
-
-# c6559f70691240a5aef7174d5e327ef4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:10
-msgid ""
-"Scripts generated for SALOME 6 and older versions must be adapted to work"
-" in SALOME 7.2 with full functionality."
-msgstr ""
-
-# 4d881c45770f40a09a91865a699977ae
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:12
-msgid ""
-"The compatibility mode allows old scripts to work in almost all cases, "
-"but with a warning."
-msgstr ""
-
-# d41e76f89f924e589dbc84de5ec3ddad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:14
-msgid "See also :ref:`geompy_migration_page`"
-msgstr ""
-
-# 1efe6e67e0ec430eadb0271f23842008
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:16
-msgid "**Salome initialisation must always be done as shown below**"
-msgstr ""
-
-# 9c348713eaca4318bb1e2c2c225ab5d9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:18
-msgid "*salome_init()* can be invoked safely several times): ::"
-msgstr ""
-
-# d2d92cf52cb44cff8a02b8bf756b2955
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:24
-msgid "**smesh initialisation is modified.** the old mode (from dump): ::"
-msgstr ""
-
-# 6b5cd21311fa4798a3bf0f3d1a1f80f7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:31
-msgid "the new mode: ::"
-msgstr ""
-
-# 24b8a6c845ff4041b8f11283866191a8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:39
-msgid "**Of course,** from smesh import ***is no more possible.**"
-msgstr ""
-
-# 9b9222f01b9249849ac872974d58b652
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:41
-msgid "You have to explicitely write **smesh.some_method()**."
-msgstr ""
-
-# a7240003d98a46ae8ebf825bf077fd1c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:43
-msgid ""
-"**All algorithms have been transferred from the namespace **smesh** to "
-"the namespace **smeshBuilder**.**"
-msgstr ""
-
-# eec70a6104e74f0bb2f58d8b85be9b84
-# 17ef07996c744b0192b5e5ac93cb7df6
-# f8384e1dcbed4defbb18f5e607248983
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:45
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:72
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:100
-msgid "For instance: ::"
-msgstr ""
-
-# 1af4f091cd9045efba22b4b0858e269c
-# 04a637b826654124b013ac82d2507d5e
-# 4f13be19ae8a4447b7480725e6fb0502
-# 6720b8ab6d1e4a22a22784d6c1d87752
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:50
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:79
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:93
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:109
-msgid "is replaced by: ::"
-msgstr ""
-
-# 2186520416684b1f810a3bbcba6e641b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:55
-msgid ""
-"StdMeshers algorithms concerned are **REGULAR, PYTHON, COMPOSITE, "
-"MEFISTO, Hexa, QUADRANGLE, RADIAL_QUAD**."
-msgstr ""
-
-# ca97ecd8ffc74d798b1c512b44fb6b95
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:57
-msgid ""
-"SMESH Plugins provide such algorithms as: **NETGEN, NETGEN_FULL, "
-"FULL_NETGEN, NETGEN_1D2D3D, NETGEN_1D2D, NETGEN_2D, NETGEN_3D**."
-msgstr ""
-
-# 7d46f8f2323149b1868d0aa2c1e9a9db
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:59
-msgid ""
-"If you use DISTENE plugins, you also have **BLSURF, GHS3D, GHS3DPRL, "
-"Hexotic**."
-msgstr ""
-
-# 7bc97e73995041d68de5ade0778367a5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:61
-msgid ""
-"**Some variables were available in both namespaces **smesh** and "
-"**SMESH**."
-msgstr ""
-
-# e7f851707d834a95809cff62b1460dfb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:63
-msgid "Now they are available only in namespace **SMESH****."
-msgstr ""
-
-# 3711be03d0e14332b0fed16e6c91a35e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:65
-msgid ""
-"The dump function used only the namespace **SMESH**, so, if your script "
-"was built with the help of the dump function, it should be already OK in "
-"this respect."
-msgstr ""
-
-# 946aaace91cb49c58880a4716992f2bb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:70
-msgid "The most used variables concerned are:"
-msgstr ""
-
-# c8c14de4af5e49a2a06570f1d6887a46
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:69
-msgid "**NODE, EDGE, FACE, VOLUME, ALL.** **FT_xxx, geom_xxx, ADD_xxx...**"
-msgstr ""
-
-# a4b07f8af4e54fc4b398dfac4f308a0b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:87
-msgid ""
-"**The namespace **smesh.smesh** does not exist any more, use **smesh** "
-"instead.** For instance: ::"
-msgstr ""
-
-# f954da1e12334a6996f1ea8471dc8332
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smesh_migration.rst:98
-msgid ""
-"**If you need to import a %SMESH Plugin explicitely, keep in mind that  "
-"they are now located in separate namespaces.**"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smeshpy_interface.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smeshpy_interface.po
deleted file mode 100644 (file)
index d2b333e..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-03-30 11:57+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 7725fc981cc94de89acdccd2088f35a4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:5
-msgid "Python interface"
-msgstr ""
-
-# e19368b7f7a34dc48db2569dae7e5291
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:7
-msgid ""
-"Python API of SALOME Mesh module defines several classes that can be used"
-" for easy mesh creation and edition."
-msgstr ""
-
-# 6be23d95e5a44e398692170febb6d4cb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:10
-msgid "Documentation of SALOME %Mesh module Python API is available in two forms:"
-msgstr ""
-
-# 37a1e3ce35854a629095d7682fa27e60
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:12
-msgid ""
-":ref:`Structured documentation <modules_page>`, where all methods and "
-"classes are grouped by their functionality."
-msgstr ""
-
-# 03cd99fd95d94b309127b679dc6835d2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:14
-msgid ""
-":ref:`Linear documentation <genindex>` grouped only by classes, declared "
-"in the :mod:`smeshBuilder` and :mod:`StdMeshersBuilder` Python packages."
-msgstr ""
-
-# d710e9461bdc4f45a0faeea434abc341
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:16
-msgid ""
-"With SALOME 7.2, the Python interface for Mesh has been slightly modified"
-" to offer new functionality."
-msgstr ""
-
-# 66861809e6df468f8a3fef6ee7fdb292
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:18
-msgid ""
-"You may have to modify your scripts generated with SALOME 6 or older "
-"versions."
-msgstr ""
-
-# 7b5fb1f27d7b4cf1b515f027b0b9cc15
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:20
-msgid "Please see :ref:`smesh_migration_page`."
-msgstr ""
-
-# c35f8f8a860c4f199edbe17f196b75d0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:22
-msgid ""
-"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."
-msgstr ""
-
-# 38a66953850d4e8cb67317feb8d3ff49
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:25
-msgid ""
-"As soon as a mesh is created, it is possible to manage it via its own "
-"methods, described in class :class:`smeshBuilder.Mesh` documentation."
-msgstr ""
-
-# 65d27fa322db4233bb1d057c699932a6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:28
-msgid ""
-"Class :class:`smeshstudytools.SMeshStudyTools` provides several methods "
-"to manipulate mesh objects in Salome study."
-msgstr ""
-
-# ebfdbb9b5cb2423a80484d465b9bbda3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:30
-msgid "A usual workflow to generate a mesh on geometry is following:"
-msgstr ""
-
-# 7325e774da0e4d99bb2c0e18076b491e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:37
-msgid "Create an instance of :class:`smeshBuilder.smeshBuilder`:"
-msgstr ""
-
-# c9bb680e5d76433b8ddaa0121fc35150
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:39
-msgid "Create a :class:`smeshBuilder.Mesh` object:"
-msgstr ""
-
-# ee4c46ea575e486d88d054940aebcb2a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:53
-msgid ""
-"Create and assign :ref:`basic_meshing_algos_page` by calling "
-"corresponding methods of the mesh. If a sub-shape is provided as an "
-"argument, a :ref:`constructing_submeshes_page` is implicitly created on "
-"this sub-shape:"
-msgstr ""
-
-# c618faa4367a4977a3ed8ad425e6702b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:62
-msgid ""
-"Create and assign :ref:`about_hypo_page` by calling corresponding methods"
-" of algorithms:"
-msgstr ""
-
-# d18d0e12f0b44249a6529df2d07ebf10
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:68
-msgid ":ref:`compute_anchor` the mesh (generate mesh nodes and elements):"
-msgstr ""
-
-# 99bd87d2643a4cb685770112da7f5f42
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:70
-msgid ""
-"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."
-msgstr ""
-
-# 1e7aa4e79e8743afb20ebbf22a07fd3c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:76
-msgid ""
-"All methods of the Mesh Group can be found in "
-":ref:`tui_create_standalone_group` sample script."
-msgstr ""
-
-# a10ee356e3554a3d9df617d0b081f99c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:78
-msgid ""
-"An example below demonstrates usage of the Python API for 3d mesh "
-"generation and for retrieving information on mesh nodes and elements."
-msgstr ""
-
-# d35a364206ff45e99fea9dc0167a64ed
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:84
-msgid "Example of 3d mesh generation:"
-msgstr ""
-
-# 44c7b11cfd9c43b7a73072480ad32a85
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:88
-msgid "``3dmesh.py``"
-msgstr ""
-
-# a942d88c2ed943c5a6cbedf59a34c248
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:95
-msgid ":download:`../../../examples/3dmesh.py`"
-msgstr ""
-
-# fe6fd0e0d01f4ae8817e4275e0562c37
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:97
-msgid ""
-"Examples of Python scripts for Mesh operations are available by the "
-"following links:"
-msgstr ""
-
-# a0fef6efd55c42c1bd33865cada37134
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:100
-msgid ":ref:`tui_creating_meshes_page`"
-msgstr ""
-
-# a028be6d0d634101ad9b80da9ad0991f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:101
-msgid ":ref:`tui_defining_hypotheses_page`"
-msgstr ""
-
-# 70b167a57c9a40d385efc613ea487e2b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:102
-msgid ":ref:`tui_grouping_elements_page`"
-msgstr ""
-
-# dd96f10655c4490c8837571a81eff790
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:103
-msgid ":ref:`tui_filters_page`"
-msgstr ""
-
-# 838f3d1c63fc4ee6b15b18bcf913d3f1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:104
-msgid ":ref:`tui_modifying_meshes_page`"
-msgstr ""
-
-# b78563d5084e412a8f7069f85b629857
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:105
-msgid ":ref:`tui_transforming_meshes_page`"
-msgstr ""
-
-# 269060f5e2214b5ba0a890690f423ac2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:106
-msgid ":ref:`tui_viewing_meshes_page`"
-msgstr ""
-
-# 2014b65e70fa478ba342a7d0a68c9e1c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:107
-msgid ":ref:`tui_quality_controls_page`"
-msgstr ""
-
-# 4b599a1a794e4a8db2491c54a4da91a5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:108
-msgid ":ref:`tui_measurements_page`"
-msgstr ""
-
-# ed0c02dab98f4da19f0e54c062681f3f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:109
-msgid ":ref:`tui_work_on_objects_from_gui`"
-msgstr ""
-
-# e2883b7908054fdc94bad4f98b5fe582
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:110
-msgid ":ref:`tui_notebook_smesh_page`"
-msgstr ""
-
-# 1bd3f44f2ac4411c9288dc412be849c2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:111
-msgid ":ref:`tui_cartesian_algo`"
-msgstr ""
-
-# 6b1a4810574845b99cd0c0e08edcbc87
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:112
-msgid ":ref:`tui_use_existing_faces`"
-msgstr ""
-
-# cbb9ddbc6deb4a4b8919d92abf2cdda2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:113
-msgid ":ref:`tui_prism_3d_algo`"
-msgstr ""
-
-# a99f6683a95541dcb17ed36456920232
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smeshpy_interface.rst:114
-msgid ":ref:`tui_generate_flat_elements_page`"
-msgstr ""
-
-# b6db276b1c9f4b77a10b39c00717905a
-#~ msgid ""
-#~ "`Structured documentation <smeshpy_doc/modules.html>`_,"
-#~ " where all methods and classes are"
-#~ " grouped by their functionality."
-#~ msgstr ""
-
-# 3f32cff184674840aa9cce12b5775f27
-#~ msgid ""
-#~ "`Linear documentation <smeshpy_doc/namespaces.html>`_ "
-#~ "grouped only by classes, declared in "
-#~ "the :ref:`smeshBuilder` and :ref:`StdMeshersBuilder`"
-#~ " Python packages."
-#~ msgstr ""
-
-# dd7b4ac9c12b4d698a16d1bfb393ac8c
-#~ msgid ""
-#~ "Class :ref:`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."
-#~ msgstr ""
-
-# c428e5aec6a94435a7a613fa1ec960c0
-#~ msgid ""
-#~ "As soon as a mesh is created, "
-#~ "it is possible to manage it via"
-#~ " its own methods, described in class"
-#~ " :ref:`smeshBuilder.Mesh` documentation."
-#~ msgstr ""
-
-# 4e0780af47564120b2a66ce3a8e5d8be
-#~ msgid ""
-#~ "Class :ref:`smeshstudytools.SMeshStudyTools` provides "
-#~ "several methods to manipulate mesh "
-#~ "objects in Salome study."
-#~ msgstr ""
-
-# fd6196348a2846818ded35ae61ab3a67
-#~ msgid "Create an instance of :ref:`smeshBuilder.smeshBuilder`:"
-#~ msgstr ""
-
-# 2fc22dfd6ae844e7863238ea9ace54cc
-#~ msgid "Create a :ref:`smeshBuilder.Mesh` object:"
-#~ msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smoothing.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smoothing.po
deleted file mode 100644 (file)
index 4860f73..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# cf863739826947af9d5afcf8234f8dbd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:5
-msgid "Smoothing"
-msgstr ""
-
-# bb7cd702e13844ddb03cec82ab9c100b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:7
-msgid ""
-"Smoothing is used to improve quality of 2D mesh by adjusting the "
-"locations of element corners (nodes)."
-msgstr ""
-
-# 13dc0622011041e4bab05ff7a8f83628
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:10
-msgid ""
-"Depending on the chosen method and mesh geometry the smoothing can "
-"actually decrease the quality of elements and even make some elements "
-"inverted."
-msgstr ""
-
-# 16a2487a3bc4496aa0ab9a6ece3c9708
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:12
-msgid "**To apply smoothing to the elements of your mesh:**"
-msgstr ""
-
-# 483fb050748343299fb6302f03c32beb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:14
-msgid ""
-"In the **Modification** menu select the **Smoothing** item or click "
-"**\"Smoothing\"** button in the toolbar."
-msgstr ""
-
-# 9f5239cae0c745a687cc6a9df2535e9f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:22
-msgid "The following dialog will appear:"
-msgstr ""
-
-# 71738abf09644a5c82cd7d8bc4157584
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:27
-msgid "In this dialog:"
-msgstr ""
-
-# fd285577c524466ab2a0d6c4ec048d7b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:33
-msgid "specify the IDs of the elements which will be smoothed:"
-msgstr ""
-
-# 2a839824672a4e628e2494ffdf22edf0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:30
-msgid ""
-"**Select the whole mesh, sub-mesh or group** activating this   check-box;"
-" or"
-msgstr ""
-
-# f0bde8cde7414d89bc826ed96165beca
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:31
-msgid ""
-"choose mesh elements with the mouse in the 3D Viewer. It is possible to "
-"select a whole area with a mouse frame; or"
-msgstr ""
-
-# e143ff5810be4cf996333aebbfb61219
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:32
-msgid ""
-"input the element IDs directly in **ID Elements** field. The selected "
-"elements will be highlighted in the viewer; or"
-msgstr ""
-
-# d8b74c25572e46c0b1a245bb3282e830
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:33
-msgid ""
-"apply Filters. **Set filters** button allows to apply a filter to the "
-"selection of elements. See more about filters in the "
-":ref:`filtering_elements` page."
-msgstr ""
-
-# 03072e4c5f31457d9b4709773d6a4f4d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:35
-msgid ""
-"define the **Fixed nodes ids** that should remain at their location "
-"during smoothing. If a mesh is built on a shape, the nodes built on its "
-"geometric edges are always fixed. If the smoothing is applied to a part "
-"of the mesh (a set of element), the nodes on boundary of the element set "
-"are also fixed. It is possible to additionally fix any other nodes. The "
-"fixed nodes can be selected manually or by filters, just as the smoothed "
-"elements."
-msgstr ""
-
-# 8fcee8a4a93a42dfbcf0369b67d8daa6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:45
-msgid "choose the **Smoothing Method:**"
-msgstr ""
-
-# c8c7f9549e154d41a136e05719fd44a1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:37
-msgid ""
-"**Laplacian** smoothing pulls a node toward the center of surrounding "
-"nodes directly connected to that node along an element edge."
-msgstr ""
-
-# b65c9f617819483cb2778248de268827
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:38
-msgid ""
-"**Centroidal** smoothing pulls a node toward the element-area-weighted "
-"centroid of the surrounding elements."
-msgstr ""
-
-# afdcfbb427914c1c8807f923b9da1d6d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:40
-msgid ""
-"Laplacian method will produce the mesh with the least element edge "
-"length. It is also the fastest method. Centroidal smoothing produces a "
-"mesh with more uniform element sizes."
-msgstr ""
-
-# d8ab06f77d1b4e7898f1b48f5db2fb62
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:47
-msgid ""
-"specify the **Iteration limit**. Both smoothing methods iterate through a"
-" number of steps to produce the resulting smoothed mesh. At each new step"
-" the smoothing is reevaluated with the updated nodal locations. This "
-"process continues till the limit of iterations has been exceeded, or till"
-" the aspect ratio of all element is less than or equal to the specified "
-"one."
-msgstr ""
-
-# ba154a3b732d4f2ebcb01a4656048055
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:48
-msgid ""
-"specify the  **Max. aspect ratio** - the target mesh quality at which the"
-" smoothing algorithm should stop the iterations."
-msgstr ""
-
-# db68d7b538f14d0a89465f7d3506878c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:49
-msgid ""
-"activate **in parametric space** check-box if it is necessary to improve "
-"the shape of faces in the parametric space of geometrical surfaces on "
-"which they are generated, else the shape of faces in the 3D space is "
-"improved that is suitable for **planar meshes only**."
-msgstr ""
-
-# 298db87c9f3143c4b46ed74e3792b3f6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:51
-msgid "Click **Apply** or **Apply and Close** button to confirm the operation."
-msgstr ""
-
-# df70b0e55764480c960f71872ec503dd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/smoothing.rst:66
-msgid "**See Also** a sample TUI Script of a :ref:`tui_smoothing` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/split_biquad_to_linear.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/split_biquad_to_linear.po
deleted file mode 100644 (file)
index 57f12ba..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# d586796a73ed444e91fca369f1699c42
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:5
-msgid "Split bi-quadratic into linear"
-msgstr ""
-
-# a79e0b1e063e46faa6f423c43a4aeaf7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:7
-msgid ""
-"This functionality allows to split bi-quadratic elements into linear ones"
-" without creation of additional nodes."
-msgstr ""
-
-# 4d26ed47efe84c3c9533d8445441be70
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:10
-msgid "So that"
-msgstr ""
-
-# 37150c27548e4b21a205806e6a919e44
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:12
-msgid "bi-quadratic triangle will be split into 3 linear quadrangles;"
-msgstr ""
-
-# 623375dedc9d4cdab7697d7cd9a3ae4d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:13
-msgid "bi-quadratic quadrangle will be split into 4 linear quadrangles;"
-msgstr ""
-
-# 53b082a4b9de48a39e252ed9b5a93567
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:14
-msgid "tri-quadratic hexahedron will be split into 8 linear hexahedra;"
-msgstr ""
-
-# ca05f179a444481ba31a54aa5c4b5b74
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:15
-msgid ""
-"quadratic segments adjacent to the split bi-quadratic element will be "
-"split into 2 liner segments."
-msgstr ""
-
-# 14a637e5ca384229857536f0a34c4720
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:23
-msgid "**To split bi-quadratic elements into linear:**"
-msgstr ""
-
-# bc78cab1ddad45aa81406b25c497ecd5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:25
-msgid ""
-"From the **Modification** menu choose the **Split bi-quadratic into "
-"linear** item or click **\"Split bi-quadratic into linear\"** button in "
-"the toolbar."
-msgstr ""
-
-# b11085bb6b954cff8ac5b193770c9e4f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:33
-msgid "The following dialog box shall appear:"
-msgstr ""
-
-# cacf4180b5b64f73967f535192bf0b59
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:39
-msgid ""
-"Select a mesh, groups or sub-meshes in the Object Browser or in the "
-"Viewer."
-msgstr ""
-
-# 90bbda9e43704bd085035d1d0e65bcfe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:40
-msgid "Click the **Apply** or **Apply and Close** button."
-msgstr ""
-
-# 5fe7f729cf444b5ea9d400310506ea7d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst:42
-msgid "**See Also** a sample TUI Script of a :ref:`tui_split_biquad` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/split_to_tetra.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/split_to_tetra.po
deleted file mode 100644 (file)
index bb182de..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 5ced8a22e99446e1929425f34c14a8bd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:5
-msgid "Splitting volumes"
-msgstr ""
-
-# 161468ab01824a379f8f38c80bbcbfe8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:7
-msgid ""
-"This operation allows to split either any volumic elements into "
-"tetrahedra or hexahedra into prisms. 2D mesh is modified accordingly."
-msgstr ""
-
-# 3be3b131b4254a848b106c3cf7a8fe0b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:10
-msgid "**To split volumes:**"
-msgstr ""
-
-# 9518d0279e39403996b11d7fb0592fa0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:12
-msgid "Select a mesh, a sub-mesh or a group."
-msgstr ""
-
-# 9a5a4b2dc7a54d8d8c02b9a77773857e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:13
-msgid ""
-"In the **Modification** menu select the **Split Volumes** item or click "
-"**\"Split Volumes\"** button in the toolbar."
-msgstr ""
-
-# fa9648623934432f8d6d7672ef4e1d12
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:21
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# 532312c11d1d483e9ce1eaac09b67f24
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:27
-msgid "First it is possible to select the type of operation:"
-msgstr ""
-
-# 8a298844755549faaebcafd5b4bfa0a6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:29
-msgid ""
-"If **Tetrahedron** button is checked, the operation will split volumes of"
-" any type into tetrahedra."
-msgstr ""
-
-# 188be37713044e6a916bff37d0175f52
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:30
-msgid ""
-"If **Prism** button is checked, the operation will split hexahedra into "
-"prisms."
-msgstr ""
-
-# 3983a3aca6ed42d0a26e14b1eb9cd2ee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:32
-msgid ""
-"The main list contains the list of volumes to split. You can click on a "
-"volume in the 3D viewer and it will be highlighted (lock Shiftkeyboard "
-"button to select several volumes). Click **Add** button and the ID of "
-"this volume will be added to the list. To remove the selected element or "
-"elements from the list click **Remove** button. **Sort list** button "
-"allows to sort the list of IDs. **Filter** button allows applying a "
-"filter to the selection of volumes."
-msgstr ""
-
-# 4e01a89b8a3f450b93f926f6a978920c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:32
-msgid ""
-"**Note:** If you split not all adjacent non-tetrahedral volumes, your "
-"mesh becomes non-conform."
-msgstr ""
-
-# c38851c3c8f040b79ca92f7ead84fdbc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:34
-msgid ""
-"**Apply to all** radio button allows splitting all volumes of the "
-"currently selected mesh."
-msgstr ""
-
-# 237dc4f1a004445090614c601e1dd507
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:35
-msgid ""
-"If **Tetrahedron** element type is selected, **Split hexahedron** group "
-"allows specifying the number of tetrahedra  a hexahedron will be split "
-"into. If the chosen method does not allow to get a conform mesh, a "
-"generic solution is applied: an additional node is created at the gravity"
-" center of a hexahedron, serving an apex of tetrahedra, all quadrangle "
-"sides of the hexahedron are split into two triangles each serving a base "
-"of a new tetrahedron."
-msgstr ""
-
-# 35acacf4c9914c8a9e33abbb4a310ed7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:37
-msgid ""
-"If **Prism** element type is selected, the **Split hexahedron** group "
-"looks as follows:"
-msgstr ""
-
-# 2f1f7ea0b6ca43bc8ab8498ca5be93d9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:42
-msgid ""
-"**Into 2 (or 4) prisms** allows to specify the number of prisms a "
-"hexahedron will be split into."
-msgstr ""
-
-# f97d3214db0b40e098fa20434d79a41f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:43
-msgid ""
-"**Facet to split** group allows to specify the side (facet) of the "
-"hexahedron, which is split into triangles.  This facet is defined by a "
-"point and a direction. The algorithm finds a hexahedron closest to the "
-"specified point and splits a facet whose normal is closest to the "
-"specified direction. Then the splitting is propagated from that "
-"hexahedron to all adjacent hexahedra. The point and the direction by "
-"which the first split hexahedron is found can be specified:"
-msgstr ""
-
-# 2b05df53bb2f41c7b4feabdfdc3834b4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:45
-msgid ""
-"by input of coordinates in **Hexa location** and **Facet normal** fields,"
-" or"
-msgstr ""
-
-# e7b249c8747f4ff88bd4cc7ccc471e19
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:46
-msgid ""
-"by clicking **Selection** button and selecting in the viewer the element "
-"whose barycenter will be used as the start point and whose direction will"
-" be used as a normal to facet to split into triangles. Switch this button"
-" off to return to selection of volumes to split."
-msgstr ""
-
-# c716df95dcc34b5bb724cfcff649cf15
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:49
-msgid ""
-"If **All domains** option is off, the operation stops when all hehexedra "
-"adjacent to the start hexahedron are split into prisms. Else the "
-"operation tries to continue splitting starting from  another hexahedron "
-"closest to the **Hexa location**."
-msgstr ""
-
-# 0c9bafdf99364a47b9d613fb3614babc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:51
-msgid ""
-"**Select from** set of fields allows choosing a sub-mesh or an existing "
-"group whose elements will be added to the list as you click **Add** "
-"button."
-msgstr ""
-
-# 35a61cc562064cf08d1071a0936d2e5f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/split_to_tetra.rst:54
-msgid "Click **Apply** or **Apply and Close** button to confirm the operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/symmetry.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/symmetry.po
deleted file mode 100644 (file)
index 8b8bae5..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 4495625b73cb4025b5a466244ef3545c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:5
-msgid "Symmetry"
-msgstr ""
-
-# 4324e7ba74fe4f4e9a31f68950b412ef
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:7
-msgid ""
-"This geometrical operation allows to perform a symmetrical copy of your "
-"mesh or some of its elements."
-msgstr ""
-
-# 38426ec597c644cdb149162d515565e7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:9
-msgid "**To create a symmetrical copy:**"
-msgstr ""
-
-# 90098b12a4484472b188b7c4b5d80f61
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:11
-msgid ""
-"From the **Modification** menu choose **Transformation** -> **Symmetry** "
-"item  or click **\"Symmetry\"** button in the toolbar."
-msgstr ""
-
-# c2192cf2b3104e51b1ec178cfcc33eca
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:19
-msgid "One of the following dialogs will appear:"
-msgstr ""
-
-# 6b97037715704d8b96de0d25714c7bd5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:21
-msgid "It is possible to mirror a mesh or some of its elements through:"
-msgstr ""
-
-# 16cbf169672d463aa4aff02bf6840d6a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:43
-msgid "In the dialog:"
-msgstr ""
-
-# 89f61de1a46d49e08683ce60e41adf14
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:45
-msgid "specify the elements for the symmetry operation:"
-msgstr ""
-
-# 84857591a5f14ff3b49d88767e9f3f70
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:47
-msgid "**Select the whole mesh, submesh or group** activating this checkbox; or"
-msgstr ""
-
-# 7350982923864549b09f2d934160d037
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:48
-msgid ""
-"choose mesh elements with the mouse in the 3D Viewer. It is possible to "
-"select a whole area with a mouse frame; or"
-msgstr ""
-
-# fc3c522656574fdc938cd8560bc79b70
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:49
-msgid ""
-"input the element IDs directly in **ID Elements** field. The selected "
-"elements will be highlighted in the viewer; or"
-msgstr ""
-
-# 450994fc16c540168b6510532d3ade39
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:50
-msgid ""
-"apply Filters. **Set Filter** button allows to apply a "
-":ref:`filtering_elements` to the selection of elements."
-msgstr ""
-
-# f12b0236f21043c497f5f21ab103c4b8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:52
-msgid "depending on the nature of the mirror object:"
-msgstr ""
-
-# de42fe2fb04e4075b107992b4110df63
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:54
-msgid ""
-"if the mesh is mirrored through a point, specify the coordinates of the "
-"point, either directly or by picking a mesh node;"
-msgstr ""
-
-# 5215fb214ebd4fafb07b7c895edb6779
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:55
-msgid "if the mesh is mirrored through an axis:"
-msgstr ""
-
-# ca48af00155246339b411be28ecc179c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:57
-msgid ""
-"specify the coordinates of the start **Point** of the axis, either "
-"directly or by picking a mesh node;"
-msgstr ""
-
-# e36dc9065bda496aa51f61690433ebf6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:58
-msgid ""
-"specify the components of axis **Vector**, either directly or by picking "
-"a mesh node, in which case **Vector** is defined as a shift between the "
-"**Point** and the node;"
-msgstr ""
-
-# 222bbbf63b054017a6c41f559a50091e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:60
-msgid "if the mesh is mirrored through a plane:"
-msgstr ""
-
-# 18c4e2831a664228a6cc1cfbb08b828a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:62
-msgid ""
-"specify the cooordinates of the **Point** lying on the plane, either "
-"directly or by picking a mesh node;"
-msgstr ""
-
-# 9c1030fb3b694be2990ff40dc9342549
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:63
-msgid ""
-"specify the components of plane **Normal**, either directly or by picking"
-" a mesh node, in which case **Normal** is defined as a shift between the "
-"**Point** and the node."
-msgstr ""
-
-# fa13c8ac163b43b8b635749c980776a7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:65
-msgid "specify the conditions of symmetry operation:"
-msgstr ""
-
-# 22cb4b2735b14e3586b6f6e9e7fd3eff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:67
-msgid ""
-"activate **Move elements** radio button to change the location of the "
-"selected elements within the current mesh;"
-msgstr ""
-
-# 3ab6e1c74a3f4f4e95f87d21771484d7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:68
-msgid ""
-"activate **Copy elements** radio button to duplicate the selected "
-"elements at the new location within the current mesh;"
-msgstr ""
-
-# a591b9e839b84c9b9135eead5e85c774
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:69
-msgid ""
-"activate **Create as new mesh** radio button to create a new element in a"
-" new mesh; the new mesh appears in the Object Browser with the default "
-"name *MeshName_mirrored* (it is possible to change this name in the "
-"adjacent box);"
-msgstr ""
-
-# 5b254aa14c8f4a2381180807178f35e1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:70
-msgid ""
-"activate **Copy groups** check-box to put new mesh entities into new "
-"groups if source entities belong to some groups. New groups are named by "
-"pattern \"<old group name>_mirrored\"."
-msgstr ""
-
-# b1eefa9952644c5fa320845ea76897c1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:72
-msgid ""
-"activate **Preview** check-box to show the result of transformation in "
-"the viewer;"
-msgstr ""
-
-# 0fd36d39dee749ae8096f328ed19a2c4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:73
-msgid "click **Apply** or **Apply and Close** button to confirm the operation."
-msgstr ""
-
-# 9aa5cbd5e7e14b8c80772fb57302e4b0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/symmetry.rst:76
-msgid "**See Also** a sample TUI Script of a :ref:`tui_symmetry` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/taper.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/taper.po
deleted file mode 100644 (file)
index 40c5433..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 1e9adeaeeb69425190fd407c57902106
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/taper.rst:5
-msgid "Taper"
-msgstr ""
-
-# acc7190b275949bdaf6613e0746e8768
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/taper.rst:7
-msgid ""
-"**Taper** mesh quality criterion represents the ratio of the areas of two"
-" triangles separated by a diagonal within a quadrilateral face."
-msgstr ""
-
-# 93b0ace8bda64797befdae8e2cdd5db3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/taper.rst:15
-msgid "**To apply the Taper quality criterion to your mesh:**"
-msgstr ""
-
-# a35ceea825514a66b121967bc551392d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/taper.rst:18
-msgid "Display your mesh in the viewer."
-msgstr ""
-
-# e6cd91a111394cf7b566db11dda7bdd4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/taper.rst:20
-msgid ""
-"Choose **Controls > Face Controls > Taper** or click **\"Taper\"** button"
-" in the toolbar."
-msgstr ""
-
-# 2677c0963ced4dde8c75b0f45a239179
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/taper.rst:28
-msgid ""
-"Your mesh will be displayed in the viewer with its elements colored "
-"according to the applied mesh quality control criterion:"
-msgstr ""
-
-# 2fadca0282f24f0a8b28aa8f8a523ec7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/taper.rst:33
-msgid "**See Also** a sample TUI Script of a :ref:`tui_taper` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tools.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tools.po
deleted file mode 100644 (file)
index c6d0a56..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-03-30 11:57+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 56e312b0b9ca4fec801e76b102adbded
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:5
-msgid "Plugins"
-msgstr ""
-
-# 3869fe6e56ac4d7ca27466f43db495c5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:7
-msgid "The following plugins are accessible via **Mesh > SMESH pligins** menu:"
-msgstr ""
-
-# 4f7e61b2f3fb48d49a67587f7d529251
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:9
-msgid "`SpherePadder plugin <padder/padder_userguide_page.html>`_"
-msgstr ""
-
-# f491ec8ce78e4bf3849a4ff917fed902
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:10
-msgid "`MGSurfOpt plugin <yams/index.html>`_"
-msgstr ""
-
-# 58834d6718ff41e28c03a8c81404df2b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:11
-msgid "`MGCleaner plugin <MGCleaner/index.html>`_"
-msgstr ""
-
-# 740188c95c2149328d0f10436c729bfa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:12
-msgid "`Z-cracks plugin <zcracks/index.html>`_"
-msgstr ""
-
-# 91996358c5b946a996f799f67137ba66
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:13
-msgid "`MacMesh plugin <MacMesh/index.html>`_"
-msgstr ""
-
-# 68e16d5249224110896773bcf00e7d7f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:14
-msgid "`blocFissure plugin <blocFissure/index.html>`_"
-msgstr ""
-
-# 83082468774a410fbb9c226c936030d6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:15
-msgid ""
-"**MeshCut plugin** - allows to cut a mesh constituted of linear "
-"tetrahedrons by a plane."
-msgstr ""
-
-# 75fbba71f4824fa380aca3c52beceeb7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tools.rst:16
-msgid ""
-"**Get min or max value of control** - a sample plugin whose sources are "
-"located in **${GUI_ROOT_DIR}/share/salome/plugins/gui/demo** directory "
-"(files **minmax_plugin.py, minmax_ui.py and smesh_plugins.py**). You can "
-"find a detailed description of how to create your own plugin in "
-"documentation: **Help > User's Guide > GUI module > How-To's and Best "
-"Practices > Extend SALOME gui functions using python plugins**."
-msgstr ""
-
-# 4d26001be73042a6a7bb055871fa8cd1
-#~ msgid ""
-#~ "**Get min or max value of "
-#~ "control** - a sample plugin whose "
-#~ "sources are located in "
-#~ "**${GUI_ROOT_DIR}/share/salome/plugins/gui/demo** directory "
-#~ "(files **minmax_plugin.py, minmax_ui.py and "
-#~ "smesh_plugins.py**). You can find a "
-#~ "detailed description of how to create"
-#~ " your own plugin in documentation: "
-#~ "**Help > GUI module > User's Guide"
-#~ " > How-To's and Best Practices "
-#~ "> Extend SALOME gui functions using "
-#~ "python plugins**."
-#~ msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/translation.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/translation.po
deleted file mode 100644 (file)
index 98a8065..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 75143c8f4ac24570b02ae570d98ebd8b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:5
-msgid "Translation"
-msgstr ""
-
-# 93c59c012b8b4dbdb7476e2bdb1a779c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:7
-msgid ""
-"This geometrical operation allows to translate in space your mesh or some"
-" of its elements."
-msgstr ""
-
-# 06a73bd5a2034b8cb1083af72bad5396
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:10
-msgid "**To translate a mesh:**"
-msgstr ""
-
-# 0f9894f7613c48f8a356e21b4b772af9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:13
-msgid ""
-"From the **Modification** menu choose **Transformation** -> "
-"**Translation** item  or click **\"Translation\"** button in the toolbar."
-msgstr ""
-
-# b49ca4f6f8e349fa9400daf310f25a91
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:20
-msgid "One of the following dialogs will appear:"
-msgstr ""
-
-# 0d622382a5c244b79da86c37666a6bf1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:22
-msgid "It is possible to define the vector of thanslation:"
-msgstr ""
-
-# 7d2a29725e014f1bbd35da276cf2a0a3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:40
-msgid "In the dialog:"
-msgstr ""
-
-# fc5fe749adf2467abb7947060196777a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:42
-msgid "specify the IDs of the translated elements:"
-msgstr ""
-
-# c3444551d6f94cef954e14b46145a9bb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:44
-msgid "**Select the whole mesh, submesh or group** activating this checkbox; or"
-msgstr ""
-
-# d4d02adeac94491490a871185d70d5c7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:45
-msgid ""
-"choose mesh elements with the mouse in the 3D Viewer. It is possible to "
-"select a whole area with a mouse frame; or"
-msgstr ""
-
-# 953b8e912c08437691eff171d251eb09
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:46
-msgid ""
-"input the element IDs directly in **ID Elements** field. The selected "
-"elements will be highlighted in the viewer; or"
-msgstr ""
-
-# 9456f6f145994a4bb8ae5a4a20c80315
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:47
-msgid ""
-"apply Filters. **Set filter** button allows to apply a filter to the "
-"selection of elements. See more about filters in the "
-":ref:`selection_filter_library_page` page."
-msgstr ""
-
-# 8dd408c797fa4ce4b919ecfa336780f4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:49
-msgid "specify the vector of translation:"
-msgstr ""
-
-# 9e4ae19820a649ce9fb3cb41fdd7121d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:51
-msgid ""
-"specify the cooordinates of the start and end **Points** of the vector of"
-" translation; or"
-msgstr ""
-
-# 46e58c1328164c1b81199b513dbfdbe2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:52
-msgid ""
-"specify the end point of the **Vector** of rotation starting at the "
-"origin of coordinates."
-msgstr ""
-
-# 6b3b130a76d945a49e5fa53d4b66f3be
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:54
-msgid "specify the conditions of translation:"
-msgstr ""
-
-# cbed019014ff4141897955812061d1aa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:56
-msgid ""
-"activate **Move elements** radio button to create  the source mesh (or "
-"elements) at the new location and erase it from the previous location;"
-msgstr ""
-
-# ecef7d6a928e4a8ca1b1547adfdecfa1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:57
-msgid ""
-"activate **Copy elements** radio button to create the source mesh (or "
-"elements) at the new location, but leave it at the previous location, the"
-" source mesh will be considered one and single mesh with the result of "
-"the rotation;"
-msgstr ""
-
-# d1597b6481b742289939aefe62ed456e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:58
-msgid ""
-"activate **Create as new mesh** radio button to leave the source mesh (or"
-" elements) at its previous location and create a new mesh at the new "
-"location, the new mesh appears in the Object Browser with the default "
-"name MeshName_rotated (it is possible to change this name in the adjacent"
-" box);"
-msgstr ""
-
-# c00a18b1722c4bc795fd8937fcb76b0c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:59
-msgid ""
-"activate **Copy groups** checkbox to copy the groups of elements of the "
-"source mesh to the newly created mesh."
-msgstr ""
-
-# 12be0e834c254830b6c24235bdeb8a5c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:61
-msgid ""
-"activate **Preview** checkbox to show the result of transformation in the"
-" viewer"
-msgstr ""
-
-# 24a911c5c6bd43339186c416b5c14a66
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:62
-msgid "click **Apply** or **Apply and Close** button to confirm the operation."
-msgstr ""
-
-# 6059d279ae784f7e82d2450c6f3ece6e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/translation.rst:64
-msgid "**See Also** a sample TUI Script of a :ref:`tui_translation` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/transparency.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/transparency.po
deleted file mode 100644 (file)
index 66ad5fd..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 734d33d6daf841319c601b02886e6ad4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/transparency.rst:5
-msgid "Transparency"
-msgstr ""
-
-# e9d0a36f1b09490895f9636e2b95ec19
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/transparency.rst:10
-msgid ""
-"Using this slider you can set the transparency of shading. Absolutely "
-"transparent shading will be invisible. By default it is absolutely "
-"opaque."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_cartesian_algo.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_cartesian_algo.po
deleted file mode 100644 (file)
index 614e24c..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 180ddd91e3f14cbb8f6d62fc133a1ea9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_cartesian_algo.rst:4
-msgid "Body Fitting algorithm"
-msgstr ""
-
-# 40444fa973b44a7882e66a58c21dcc98
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_cartesian_algo.rst:6
-msgid "Usage of Body Fitting algorithm"
-msgstr ""
-
-# dae7c3c0de1641d1942ce8c46b5c10fb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_cartesian_algo.rst:10
-msgid "``cartesian_algo.py``"
-msgstr ""
-
-# e943416703384b49abd17b441a843bbe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_cartesian_algo.rst:16
-msgid ":download:`../../../examples/cartesian_algo.py`"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_creating_meshes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_creating_meshes.po
deleted file mode 100644 (file)
index df01cf8..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# ac7a0717f8d244518fa5fdabb38d07a5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:5
-msgid "Creating Meshes"
-msgstr ""
-
-# bb16f582ea84425180580fe14a31dc7e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:0
-msgid "`Table of contents`"
-msgstr ""
-
-# a6fa7546f4304831afd82d7d973db5ee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:10
-msgid ""
-"First of all see :ref:`example_3d_mesh` which is an example of good "
-"python script style for Mesh module."
-msgstr ""
-
-# 10eb5418949b42d09800a5c5e5a60fea
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:16
-msgid "Construction of a mesh"
-msgstr ""
-
-# 3f8be4bf1559421eb86a9ba1c944f985
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:21
-msgid "``creating_meshes_ex01.py``"
-msgstr ""
-
-# c92155e4983449c891131ed76749a221
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:27
-msgid ":download:`../../../examples/creating_meshes_ex01.py`"
-msgstr ""
-
-# 0b8281da12364d20bd26c2ff83899a71
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:32
-msgid "Construction of a sub-mesh"
-msgstr ""
-
-# 908b408a0c6d408f9cbebfbdad49d29c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:36
-msgid "``creating_meshes_ex02.py``"
-msgstr ""
-
-# 71d9105b47334a78a9a0db0fb8e468d1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:42
-msgid ":download:`../../../examples/creating_meshes_ex02.py`"
-msgstr ""
-
-# 374235b8f4c349c0a0f884e508cff43b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:47
-msgid "Change priority of sub-meshes in mesh"
-msgstr ""
-
-# 899cddf7981f4888bf1929dc3d285162
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:51
-msgid "``creating_meshes_ex03.py``"
-msgstr ""
-
-# 2fbbf9873faa407093dd86037f815dda
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:57
-msgid ":download:`../../../examples/creating_meshes_ex03.py`"
-msgstr ""
-
-# ac6d03ebb48e4fb69088a0271120f6bb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:62
-msgid "Intermediate edition while meshing"
-msgstr ""
-
-# 480c7f03907e45608baf3c8e69f43cee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:66
-msgid "``a3DmeshOnModified2Dmesh.py``"
-msgstr ""
-
-# 5cc05800014640b28dd743f6e7453555
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:72
-msgid ":download:`../../../examples/a3DmeshOnModified2Dmesh.py`"
-msgstr ""
-
-# e8ad1f4ee33c4d479cb915a35b3c3db7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:77
-msgid "Editing a mesh (i.e. changing hypotheses)"
-msgstr ""
-
-# 0c9b1c653fbe47c8b09369d8538b5d39
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:81
-msgid "``creating_meshes_ex04.py``"
-msgstr ""
-
-# 61662db532d5409ca59109471d35c39b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:87
-msgid ":download:`../../../examples/creating_meshes_ex04.py`"
-msgstr ""
-
-# 039432eb7ae9487d8963efc909074762
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:92
-msgid "Export of a Mesh"
-msgstr ""
-
-# 74bc2143ea7a4a4fb94f0a1467012412
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:96
-msgid "``creating_meshes_ex05.py``"
-msgstr ""
-
-# c22c9248148a406aa90e16b4494dcdf3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:102
-msgid ":download:`../../../examples/creating_meshes_ex05.py`"
-msgstr ""
-
-# fed234c83c27471b9051943f5378ca7e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:107
-msgid "How to mesh a cylinder with hexahedrons?"
-msgstr ""
-
-# 8d943c45953b4d419189795e070d3273
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:109
-msgid ""
-"Here you can see an example of python script, creating a hexahedral mesh "
-"on a cylinder. A picture below the source code of the script demonstrates"
-" the resulting mesh."
-msgstr ""
-
-# 2c383dd4995a48fdaf36d733606a42bc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:115
-msgid "``creating_meshes_ex06.py``"
-msgstr ""
-
-# 234f1450fee5488e965a8d6af376ff9f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:121
-msgid ":download:`../../../examples/creating_meshes_ex06.py`"
-msgstr ""
-
-# 72c01e65c6b84985a2f7548177ef0311
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:130
-msgid "Building a compound of meshes"
-msgstr ""
-
-# 3ff8a1b66bb64251836650a5b055e884
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:134
-msgid "``creating_meshes_ex07.py``"
-msgstr ""
-
-# a3219b112b1e4381acb12a727c6bce58
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:140
-msgid ":download:`../../../examples/creating_meshes_ex07.py`"
-msgstr ""
-
-# 4178a3e999b946abacb53ffa58e450c9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:145
-msgid "Mesh Copying"
-msgstr ""
-
-# 3d65fb2f3e2740c8b97c371fd2a6e051
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:149
-msgid "``creating_meshes_ex08.py``"
-msgstr ""
-
-# d7f57c79ef0f45ae9325384ff3226f49
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.rst:155
-msgid ":download:`../../../examples/creating_meshes_ex08.py`"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_defining_hypotheses.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_defining_hypotheses.po
deleted file mode 100644 (file)
index bbf304e..0000000
+++ /dev/null
@@ -1,411 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# fef0008953ff493596317de50d9af198
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:5
-msgid "Defining Hypotheses and Algorithms"
-msgstr ""
-
-# c2761b3cd6e847e284c642207a9dbae4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:7
-msgid ""
-"This page provides example codes of :ref:`tui_defining_meshing_algos` "
-"\"defining algorithms\" and hypotheses."
-msgstr ""
-
-# c9e1c1c60edb4751a3db653b97a21c87
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:10
-msgid "Wire discretisation 1D algorithm"
-msgstr ""
-
-# 344303a5cba04a3985a3355bbe1d6e38
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:12
-msgid ":ref:`tui_1d_adaptive` hypothesis"
-msgstr ""
-
-# 1035ff9af9b8425a8c48f39ac5e2ce00
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:13
-msgid ":ref:`tui_1d_arithmetic` hypothesis"
-msgstr ""
-
-# 4b851dd0ec06429d8e0a533db3975b81
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:14
-msgid ":ref:`tui_deflection_1d` hypotheses"
-msgstr ""
-
-# c27b16f572ff4412b14a330c42389c1c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:15
-msgid ":ref:`tui_start_and_end_length` hypotheses"
-msgstr ""
-
-# ed963d98d21b4aefaf2bda832c09bd0b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:16
-msgid ":ref:`tui_average_length`"
-msgstr ""
-
-# 748167c82d78473ea526f4e8d8c2d3ec
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:17
-msgid ":ref:`tui_propagation` additional hypothesis"
-msgstr ""
-
-# 29d0006192824915a840be1e7d8ae177
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:18
-msgid ":ref:`tui_fixed_points` hypothesis"
-msgstr ""
-
-# 65a07e23b54b4b28a44b18cee2f6eb18
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:21
-msgid "Triangle: Mefisto 2D algorithm"
-msgstr ""
-
-# 88b6fff7e253450eb7ea36fb2fe5445d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:23
-msgid ":ref:`tui_max_element_area` hypothesis"
-msgstr ""
-
-# 9660d4c455c8431995e1af311aed3eff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:24
-msgid ":ref:`tui_length_from_edges` hypothesis"
-msgstr ""
-
-# 286dfd3e3ac64755bf7c7f8352d83af0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:27
-msgid "NETGEN 3D algorithm"
-msgstr ""
-
-# ea8cdcd73ac04ef382c07aeb47336de2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:29
-msgid ":ref:`tui_max_element_volume` hypothesis"
-msgstr ""
-
-# 97b45786031b4464b8e918b006ed31a3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:30
-msgid ":ref:`tui_viscous_layers`"
-msgstr ""
-
-# d3fa46618ba3491182a63f8f3e36991d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:33
-msgid ":ref:`tui_projection`"
-msgstr ""
-
-# e2a68a4edf124db7ab3fdc6cb0f2fd9e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:34
-msgid ":ref:`tui_radial_quadrangle` algorithm"
-msgstr ""
-
-# ee80908dfbfb41cf9a458f3a733b3b9d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:35
-msgid "Quadrangle: Mapping 2D algorithm"
-msgstr ""
-
-# eb5627bfc52d4e7ea8ed4b488b5ff940
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:37
-msgid ":ref:`tui_quadrangle_parameters` hypothesis"
-msgstr ""
-
-# 7ba0bfac54614d77bb0afac0d3886ae8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:40
-msgid ":ref:`tui_import` from Another Mesh\" algorithm"
-msgstr ""
-
-# 9135b65a44554235a1fb725ebbd7e9b6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:45
-msgid "Defining 1D Hypotheses"
-msgstr ""
-
-# d379efca0bc04b01a9f0d9aa9cc26361
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:52
-msgid "Arithmetic Progression and Geometric Progression"
-msgstr ""
-
-# 2ea89443e3804bc5913ae6a42272dbef
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:56
-msgid "``defining_hypotheses_ex01.py``"
-msgstr ""
-
-# 8c40e54d62834623b01e282b9b4f53aa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:62
-msgid ":download:`../../../examples/defining_hypotheses_ex01.py`"
-msgstr ""
-
-# 865233d5ffe541189bcf7f275e045c6b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:67
-msgid "Adaptive"
-msgstr ""
-
-# 52d08d7e4014430eaa0126397b6304fe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:71
-msgid "``defining_hypotheses_adaptive1d.py``"
-msgstr ""
-
-# 32df2bbad47248d1a27591bbfdb558f6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:77
-msgid ":download:`../../../examples/defining_hypotheses_adaptive1d.py`"
-msgstr ""
-
-# 4fc2284ef7bd47729a90b2baa918b58f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:83
-msgid "Deflection and Number of Segments"
-msgstr ""
-
-# 3457de0a170e4f51b5a38950cb33a7d6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:87
-msgid "``defining_hypotheses_ex02.py``"
-msgstr ""
-
-# fbf4cb07dde24d8d902b4411cd68adca
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:93
-msgid ":download:`../../../examples/defining_hypotheses_ex02.py`"
-msgstr ""
-
-# 4133a0078c2947e98e1a23eaa1214723
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:99
-msgid "Start and End Length"
-msgstr ""
-
-# 1d6528b2e1674de2ba414b87b4be3089
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:103
-msgid "``defining_hypotheses_ex03.py``"
-msgstr ""
-
-# 30db29e648d244e2a8132ff959c7e407
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:109
-msgid ":download:`../../../examples/defining_hypotheses_ex03.py`"
-msgstr ""
-
-# d8ffb18c8207454eb0e4c8dee64df112
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:115
-msgid "Local Length"
-msgstr ""
-
-# 598f4c31b8574891a0965e55e70866c6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:119
-msgid "``defining_hypotheses_ex04.py``"
-msgstr ""
-
-# a0766eac8a974673842c45660f8cdef5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:125
-msgid ":download:`../../../examples/defining_hypotheses_ex04.py`"
-msgstr ""
-
-# 0e8b365ab8ab4d8fb15e5d2ea9b405b4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:128
-msgid "Defining 2D and 3D hypotheses"
-msgstr ""
-
-# 89800fec137147feb01f7d9ee2d09b2f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:134
-msgid "Maximum Element Area"
-msgstr ""
-
-# 5d20cdabae6d4f7785dfd0505ff8bd0e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:138
-msgid "``defining_hypotheses_ex05.py``"
-msgstr ""
-
-# d65f02a1247c4ad5b511199a2224afea
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:144
-msgid ":download:`../../../examples/defining_hypotheses_ex05.py`"
-msgstr ""
-
-# aed2c2c8c4534e8ba031bbb04c0b1c1e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:150
-msgid "Maximum Element Volume"
-msgstr ""
-
-# a99e22f6a36f465f92b39f281cb5374d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:154
-msgid "``defining_hypotheses_ex06.py``"
-msgstr ""
-
-# deda9ab5387443659f0e9560218d1715
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:160
-msgid ":download:`../../../examples/defining_hypotheses_ex06.py`"
-msgstr ""
-
-# a65055b4628340938008c65a533013ef
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:166
-msgid "Length from Edges"
-msgstr ""
-
-# 6de5dfa06ff54c19a898663e34448044
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:170
-msgid "``defining_hypotheses_ex07.py``"
-msgstr ""
-
-# 4c857ba35cdf4cf8a1124e7ec6156cba
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:176
-msgid ":download:`../../../examples/defining_hypotheses_ex07.py`"
-msgstr ""
-
-# 1b5eeb8e22c6416e97c9f0d5603ab0a8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:179
-msgid "Defining Additional Hypotheses"
-msgstr ""
-
-# d7e5a198618a4d81842e05f5dc7a0d9a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:184
-msgid "Propagation"
-msgstr ""
-
-# e5fa3c56469742528a05851b980f65c2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:188
-msgid "``defining_hypotheses_ex08.py``"
-msgstr ""
-
-# 3250b509d75a4ee89b947cc9028a59d3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:194
-msgid ":download:`../../../examples/defining_hypotheses_ex08.py`"
-msgstr ""
-
-# eb1e47f19f8544ffb91f05b2af1ee246
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:200
-msgid "Defining Meshing Algorithms"
-msgstr ""
-
-# beb05965953640b2a8e7be99a2011ae7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:204
-msgid "``defining_hypotheses_ex09.py``"
-msgstr ""
-
-# ce043d0aabab4e09bfae6e5f93bc499f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:210
-msgid ":download:`../../../examples/defining_hypotheses_ex09.py`"
-msgstr ""
-
-# f908d90100b342378143b7fb5a37cbde
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:216
-msgid "Projection Algorithms"
-msgstr ""
-
-# 0165bd13c2354adb88815bc8bc4f8f55
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:220
-msgid "``defining_hypotheses_ex10.py``"
-msgstr ""
-
-# 5a0fd55a3dfe46fa849ddcb9f6e9e947
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:226
-msgid ":download:`../../../examples/defining_hypotheses_ex10.py`"
-msgstr ""
-
-# ec37fa753ca144bc8cc78a6a23dabe49
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:229
-msgid "Projection 1D2D"
-msgstr ""
-
-# d73ecba8b9a14a23905217b1b85639e2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:233
-msgid "``defining_hypotheses_ex11.py``"
-msgstr ""
-
-# 67392b0373064c3987a2ba0589613aec
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:239
-msgid ":download:`../../../examples/defining_hypotheses_ex11.py`"
-msgstr ""
-
-# c1aae1e4269641deab1b0c442e86a486
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:244
-msgid "1D Mesh with Fixed Points example"
-msgstr ""
-
-# 42cc5b76354244dda062e9ab67178fba
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:248
-msgid "``defining_hypotheses_ex12.py``"
-msgstr ""
-
-# 0494d3054fa84ccbbdadaab71ab49c9c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:254
-msgid ":download:`../../../examples/defining_hypotheses_ex12.py`"
-msgstr ""
-
-# b5bf09c0c65441a5b649a8b4f872e4f8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:259
-msgid "Radial Quadrangle 1D-2D example"
-msgstr ""
-
-# e11dc47febb3451eae79505194a3b470
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:263
-msgid "``defining_hypotheses_ex13.py``"
-msgstr ""
-
-# e2042fb6379647289d81b952790fa19f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:269
-msgid ":download:`../../../examples/defining_hypotheses_ex13.py`"
-msgstr ""
-
-# a64deb7c4c0f4b1d85c9ab9698dffe82
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:274
-msgid "Quadrangle Parameters example 1 (meshing a face with 3 edges)"
-msgstr ""
-
-# 43383104800842d8bf7f3410cdac69e7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:278
-msgid "``defining_hypotheses_ex14.py``"
-msgstr ""
-
-# 8d1842c107224648a84e981c6f1fc2a7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:284
-msgid ":download:`../../../examples/defining_hypotheses_ex14.py`"
-msgstr ""
-
-# 74a27c17676d434a8c3d25ac9796ade7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:287
-msgid "Quadrangle Parameters example 2 (using different types)"
-msgstr ""
-
-# e5ff359d6f554d7f941d66fb203ec978
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:291
-msgid "``defining_hypotheses_ex15.py``"
-msgstr ""
-
-# 7c928ac31c924ffda50887b7dcd566c3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:297
-msgid ":download:`../../../examples/defining_hypotheses_ex15.py`"
-msgstr ""
-
-# f1274f94ecca401fbaa85dab2a3b6be9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:302
-msgid "\"Import 1D-2D Elements from Another Mesh\" example"
-msgstr ""
-
-# 5fdf903d6e714f6786bee45b22031939
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:306
-msgid "``defining_hypotheses_ex16.py``"
-msgstr ""
-
-# 8ecaa3f528ed4bec820d5b01fc54a9e3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:312
-msgid ":download:`../../../examples/defining_hypotheses_ex16.py`"
-msgstr ""
-
-# 38475312a47b409d884787b40e75f9bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:317
-msgid "Viscous layers construction"
-msgstr ""
-
-# 96c7c221e83c4d5092d4b663d1440e03
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:321
-msgid "``defining_hypotheses_ex17.py``"
-msgstr ""
-
-# 5101a4bf06ca4c6aa3d7738ab9890209
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst:327
-msgid ":download:`../../../examples/defining_hypotheses_ex17.py`"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_filters.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_filters.po
deleted file mode 100644 (file)
index 40d486c..0000000
+++ /dev/null
@@ -1,1577 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 6ca951476443456f8f3880c62a0a3c8c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:5
-msgid "Filters usage"
-msgstr ""
-
-# b497f51ac2e744ada5e94e44ea032ab8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:0
-msgid "`Table of contents`"
-msgstr ""
-
-# 5b11e27703fe49299f1424246527c350
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:10
-msgid ""
-"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."
-msgstr ""
-
-# e0bc747ec8da48b498263ccbc83aea2c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:15
-msgid ""
-"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*."
-msgstr ""
-
-# 252f6d38a089402f8870fb587d649fe4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:19
-msgid ""
-"Mesh filters can use the functionality of mesh quality controls to filter"
-" mesh nodes / elements by a specific characteristic (Area, Length, etc)."
-msgstr ""
-
-# 4bab7008da41451aa32b5e9c0fedda93
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:22
-msgid ""
-"This page provides a short description of the existing mesh filters, "
-"describes required parameters and gives simple examples of usage in "
-"Python scripts."
-msgstr ""
-
-# 9549e327926346be95fd0a0740aeb814
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:26
-msgid "**See also:** :ref:`tui_quality_controls_page`"
-msgstr ""
-
-# e3200c2af4e64ea79cb73645409035f6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:31
-msgid "Aspect ratio"
-msgstr ""
-
-# 7933273bcee34279b9f5c23f545455a4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:33
-msgid "filters 2D mesh elements (faces) according to the aspect ratio value:"
-msgstr ""
-
-# 7bdea22213bd49979ac671a12bc01fc6
-# 315c940ad9d44d51a586fe19e5783e5f
-# 282c2320af254ed68bfcaa04f54771e7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:35
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:517
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:541
-msgid "element type should be *SMESH.FACE*"
-msgstr ""
-
-# a91ead07432b4570a3b88ea82b3ccd83
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:36
-msgid "functor type should be *SMESH.FT_AspectRatio*"
-msgstr ""
-
-# 57bf0db5058247b8a8eedccb86171c4a
-# 11e43f1100c84460bd311554d4a95b16
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:37
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:60
-msgid "threshold is floating point value (aspect ratio)"
-msgstr ""
-
-# f571f009ac874dcf9ff3976f641fc0cd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:41
-msgid "``filters_ex01.py``"
-msgstr ""
-
-# 50cae771732940f3a948cae60b00caa4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:47
-msgid ":download:`../../../examples/filters_ex01.py`"
-msgstr ""
-
-# 89c85d23e6544b14aa115155b2230539
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:49
-msgid "**See also:** :ref:`tui_aspect_ratio`"
-msgstr ""
-
-# b613da0f68ea497bb460a190c334bc3b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:54
-msgid "Aspect ratio 3D"
-msgstr ""
-
-# a0fd9e8c8f6c45899712fcb3c99ce8f4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:56
-msgid "filters 3D mesh elements (volumes) according to the aspect ratio value:"
-msgstr ""
-
-# 7157bf5105b84a76982cddd8a2c0a4ab
-# b8f362a3c24e4761a2cf9999d83ea9f3
-# 31b4fe2b41704fd5bc5a385067db9e78
-# 9d87b96ae99e4b51980739aed794db4d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:58
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:196
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:589
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:612
-msgid "element type is *SMESH.VOLUME*"
-msgstr ""
-
-# 0c73594aeb55424d95b8ad4945bd4f09
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:59
-msgid "functor type is *SMESH.FT_AspectRatio3D*"
-msgstr ""
-
-# 522e2237e63b48399da257368c2c1728
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:64
-msgid "``filters_ex02.py``"
-msgstr ""
-
-# 0dbfae0c9a3e4107a32e15caa90218c0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:70
-msgid ":download:`../../../examples/filters_ex02.py`"
-msgstr ""
-
-# 93d6b45e533b49b7b25920014913d357
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:72
-msgid "**See also:** :ref:`tui_aspect_ratio_3d`"
-msgstr ""
-
-# ad8dae4703b04b6d9b54cb4174fe1ea0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:77
-msgid "Warping angle"
-msgstr ""
-
-# 487244067e0e4fbdb26701af49d9c47f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:79
-msgid "filters 2D mesh elements (faces) according to the warping angle value:"
-msgstr ""
-
-# ea3fae8352804a6c9dff4256c1b5c3d5
-# 5f7d1caffb734812b2489f8b0f9874a7
-# 3ff9306930c94205899b68c81cb68a33
-# 01f71c0f788f4737a10d59b1b155122b
-# f526cf45f23f4b23ab4fcf1785c719e0
-# 57a8ff64de584ce684970c5b2e110550
-# e0348a80ef09411fa943281c43c43d58
-# c670276d09b04b02a8f346e861c982ac
-# a7d2a29605fe4488bafd3e18fed928f0
-# df800954efdf45c2962686f8d62f38ef
-# 7925fed78391415a8fb3e536fc284d25
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:81
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:104
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:127
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:150
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:173
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:244
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:290
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:313
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:336
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:358
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:470
-msgid "element type is *SMESH.FACE*"
-msgstr ""
-
-# 35766a5cfda04256a609ed3b3c818bef
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:82
-msgid "functor type is *SMESH.FT_Warping*"
-msgstr ""
-
-# 0d1fd590ed0840c9b23f6fa7839d773b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:83
-msgid "threshold is floating point value (warping angle)"
-msgstr ""
-
-# 004ca3b2bbf24d60ae62b81c7f56ab2a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:87
-msgid "``filters_ex03.py``"
-msgstr ""
-
-# 98c70343810f4ffda5ac63a4adadabb0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:93
-msgid ":download:`../../../examples/filters_ex03.py`"
-msgstr ""
-
-# 096ee5252671498a957276fda40ab6df
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:95
-msgid "**See also:** :ref:`tui_warping`"
-msgstr ""
-
-# 6bb026f1fa054c4fb01951646c854ad4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:100
-msgid "Minimum angle"
-msgstr ""
-
-# 12caf452968a41058b0a85334dca77c0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:102
-msgid "filters 2D mesh elements (faces) according to the minimum angle value:"
-msgstr ""
-
-# 720cf4ef2ef64adfa76d7af6cc574455
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:105
-msgid "functor type is *SMESH.FT_MinimumAngle*"
-msgstr ""
-
-# f4c4e75ef6cc4748a3e967bf82ffe65b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:106
-msgid "threshold is floating point value (minimum angle)"
-msgstr ""
-
-# c419c4f2e6db46c28322c514d3ffdecc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:110
-msgid "``filters_ex04.py``"
-msgstr ""
-
-# d8683a622c644acbbe1ac0779a234e72
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:116
-msgid ":download:`../../../examples/filters_ex04.py`"
-msgstr ""
-
-# 79a773fc6c344aeca7633a1f11f7716e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:118
-msgid "**See also:** :ref:`tui_minimum_angle`"
-msgstr ""
-
-# 01e6e22f05ed417e8158d9f3ab0cc84a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:123
-msgid "Taper"
-msgstr ""
-
-# 55b300370c5d463db3e8bd3a4f412723
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:125
-msgid "filters 2D mesh elements (faces) according to the taper value:"
-msgstr ""
-
-# 2710fe0fb6c3489e93a69fa9d157176e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:128
-msgid "functor type is *SMESH.FT_Taper*"
-msgstr ""
-
-# ecc2c01f7dc84c1297ebb52d520cd00d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:129
-msgid "threshold is floating point value (taper)"
-msgstr ""
-
-# fda49acd55914c17993e58c4b6c86d60
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:133
-msgid "``filters_ex05.py``"
-msgstr ""
-
-# c52b74a578934750acacfeac670e83d7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:139
-msgid ":download:`../../../examples/filters_ex05.py`"
-msgstr ""
-
-# e8d1a6468c374732ba982b3039bc7aa7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:141
-msgid "**See also:** :ref:`tui_taper`"
-msgstr ""
-
-# e99e7aade16a49ee90a394ffc8ecc11d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:146
-msgid "Skew"
-msgstr ""
-
-# 362bfcb5a4574d0da125316db6306b45
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:148
-msgid "filters 2D mesh elements (faces) according to the skew value:"
-msgstr ""
-
-# d7669106a6c548629952804e7902dc47
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:151
-msgid "functor type is *SMESH.FT_Skew*"
-msgstr ""
-
-# 1ad14dace2c24e1fa614a6f0ab98f33a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:152
-msgid "threshold is floating point value (skew)"
-msgstr ""
-
-# 5a2f0b7c68364a7399af945295cfd5ee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:156
-msgid "``filters_ex06.py``"
-msgstr ""
-
-# f6507f1b8ffe4d07b8efc9f3aff79283
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:162
-msgid ":download:`../../../examples/filters_ex06.py`"
-msgstr ""
-
-# e3f2245ebcc443bc9b6d9326cb311850
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:164
-msgid "**See also:** :ref:`tui_skew`"
-msgstr ""
-
-# 2a35872abb8f42229f207c2f0dac79b9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:169
-msgid "Area"
-msgstr ""
-
-# fab468da32da4d078bbf686165f82fc2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:171
-msgid "filters 2D mesh elements (faces) according to the area value:"
-msgstr ""
-
-# 2c48b772ad4440f38e8e6a54af90e6d7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:174
-msgid "functor type is *SMESH.FT_Area*"
-msgstr ""
-
-# bcb070ddf7ed430288115a64f9997b8b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:175
-msgid "threshold is floating point value (area)"
-msgstr ""
-
-# e5a829774bc0473aa6157465224e97d8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:179
-msgid "``filters_ex07.py``"
-msgstr ""
-
-# 5e7b469c380f4b129cd61caacc510eaf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:185
-msgid ":download:`../../../examples/filters_ex07.py`"
-msgstr ""
-
-# 71d104b1a39f4541aac4a1f19afaad04
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:187
-msgid "**See also:** :ref:`tui_area`"
-msgstr ""
-
-# cade3174d4af4661a13f4034c642437a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:192
-msgid "Volume"
-msgstr ""
-
-# d3d522fdc8e74ec7815ad2af86cbfccd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:194
-msgid "filters 3D mesh elements (volumes) according to the volume value:"
-msgstr ""
-
-# f0e481836c9345318bbf2d09ad29778b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:197
-msgid "functor type is *SMESH.FT_Volume3D*"
-msgstr ""
-
-# 8fc470a5a2d04d49b98b004fef8a6f85
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:198
-msgid "threshold is floating point value (volume)"
-msgstr ""
-
-# a4cb688e843e46bea2e5092bbcbd39d7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:202
-msgid "``filters_ex08.py``"
-msgstr ""
-
-# c90d29137bcf4f38b87894b7a44692ed
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:208
-msgid ":download:`../../../examples/filters_ex08.py`"
-msgstr ""
-
-# a9f5d2a508574991a8fd2b506998e84a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:210
-msgid "**See also:** :ref:`tui_volume`"
-msgstr ""
-
-# 5e8dc7ece6ff41df86277f56a80a82dc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:215
-msgid "Free borders"
-msgstr ""
-
-# 80900b5870aa4feba0c22b82fff23d4a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:217
-msgid "filters 1D mesh elements (edges) which represent free borders of a mesh:"
-msgstr ""
-
-# c3b1a9b2652e416b8cb61e1485715f47
-# 6babd52bda944e25a8e911bf597caa2b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:219
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:446
-msgid "element type is *SMESH.EDGE*"
-msgstr ""
-
-# 6c7f9d52b7b848da9f6a5eaf5c43ef83
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:220
-msgid "functor type is *SMESH.FT_FreeBorders*"
-msgstr ""
-
-# b678157785b5496692aa2c3757dc41f9
-# 3e857b3cfa0f4ba4a93135d75c8e35ab
-# 0058ac055ebf4477828a3ac73037138d
-# d6588539972d48c6a80d7533b78578fc
-# 1adda2caff484444983aae369225952e
-# f20fabd0064a4978a871320e2b1d52fe
-# 9d17cff2bf2d4b68b714bb7e95b3ea37
-# 685e6790bb1143d1b3b9d241c632d554
-# f5741f2df7984f2090b050d30258c8d9
-# 1bdb459f82f943b1b7749308a8d84203
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:221
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:246
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:269
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:292
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:315
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:360
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:383
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:404
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:591
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:614
-msgid "threshold value is not required"
-msgstr ""
-
-# 5faf43e863384018bfe5c63414e66d1e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:223
-msgid "\\tui_script{filters_ex09.py} .. _filters_ex09.py:"
-msgstr ""
-
-# 169a801dbe544ac2bb5b4ade4efc45a8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:226
-msgid "``filters_ex09.py``"
-msgstr ""
-
-# 341442284c1e4e3f885f0d56b018d203
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:232
-msgid ":download:`../../../examples/filters_ex09.py`"
-msgstr ""
-
-# bb207a082f9c4ee2a85f364ae2c2c94a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:234
-msgid "**See also:** :ref:`tui_free_borders`"
-msgstr ""
-
-# c9acd5a0711146928be8dbd50d27d356
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:239
-msgid "Free edges"
-msgstr ""
-
-# e5319ce3c769424f9ab0b76e513bf5c2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:241
-msgid ""
-"filters 2D mesh elements (faces) having edges (i.e. links between nodes, "
-"not mesh segments) belonging to one face of mesh only:"
-msgstr ""
-
-# 59bbe7f428b8421e821854d837b11a4c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:245
-msgid "functor type is *SMESH.FT_FreeEdges*"
-msgstr ""
-
-# a541e40fb6ed4488b22dde5479931636
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:250
-msgid "``filters_ex10.py``"
-msgstr ""
-
-# 5fd5f86ef549410783987f8653f9808a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:256
-msgid ":download:`../../../examples/filters_ex10.py`"
-msgstr ""
-
-# 855a63570fdf4a54bbfd34b5adcb2b9f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:258
-msgid "**See also:** :ref:`tui_free_edges`"
-msgstr ""
-
-# c131072177fe4d0fbccc2584c215bbef
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:263
-msgid "Free nodes"
-msgstr ""
-
-# 0bdfce2a625649c39519a5fd49c01534
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:265
-msgid "filters free nodes:"
-msgstr ""
-
-# 3fe1ac2505b544e5992cd65ca6646583
-# 6ab61788929f46b5a1de4bc89a95b44c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:267
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:402
-msgid "element type is *SMESH.NODE*"
-msgstr ""
-
-# b34ecab8f7644b4abd6d5eb7aa534c7f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:268
-msgid "functor type is *SMESH.FT_FreeNodes*"
-msgstr ""
-
-# 5b7d110fa8b24ed2a6056410478ce858
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:273
-msgid "``filters_ex11.py``"
-msgstr ""
-
-# 4952268902a24518afedf3147172ce08
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:279
-msgid ":download:`../../../examples/filters_ex11.py`"
-msgstr ""
-
-# c59182067b7a4790aa895a136e15204b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:281
-msgid "**See also:** :ref:`tui_free_nodes`"
-msgstr ""
-
-# 10a92eee1b7e46bcb170df72bdcfd9f2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:286
-msgid "Free faces"
-msgstr ""
-
-# 2b728a8bac9e400fb898d7c8a27061bb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:288
-msgid "filters free faces:"
-msgstr ""
-
-# 67792cd6993e4907875ec9c487cba25d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:291
-msgid "functor type is *SMESH.FT_FreeFaces*"
-msgstr ""
-
-# 411788888f004991b473749b0ca5cefd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:296
-msgid "``filters_ex12.py``"
-msgstr ""
-
-# ee38dc421e7a4f098a2ee60bb23006b6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:302
-msgid ":download:`../../../examples/filters_ex12.py`"
-msgstr ""
-
-# a613dc31c6f449329ef91aa9105c1ccd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:304
-msgid "**See also:** :ref:`tui_free_faces`"
-msgstr ""
-
-# bd5a36a737724c19a29608b4676dbba8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:309
-msgid "Bare border faces"
-msgstr ""
-
-# b606eb169958417b8a42f85b9a6a1e28
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:311
-msgid "filters faces with bare borders:"
-msgstr ""
-
-# fdeee8621d674199a64c4cb5348a6f6a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:314
-msgid "functor type is *SMESH.FT_BareBorderFace*"
-msgstr ""
-
-# f71bbd8f5e78403ab26c094d60854b78
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:319
-msgid "``filters_ex13.py``"
-msgstr ""
-
-# 820f6be3459942f6ba02c2953174bf76
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:325
-msgid ":download:`../../../examples/filters_ex13.py`"
-msgstr ""
-
-# 16f12ffb34184224a1cbda67b40889c5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:327
-msgid "**See also:** :ref:`tui_bare_border_faces`"
-msgstr ""
-
-# aff2d16224c44cf092eb5a0cc601f920
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:332
-msgid "Coplanar faces"
-msgstr ""
-
-# d66a44e8bd354eb08c5a88ed12235d8e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:334
-msgid "filters coplanar faces:"
-msgstr ""
-
-# c27a8102cfda432d8d5ba0ec76f6eb33
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:337
-msgid "functor type is *SMESH.FT_CoplanarFaces*"
-msgstr ""
-
-# c70b12b4fee1485c8e6bd6791518f812
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:338
-msgid "threshold value is the face ID"
-msgstr ""
-
-# f4e64b57175044db8d1e9790fa296f48
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:339
-msgid "tolerance is in degrees"
-msgstr ""
-
-# 16972c51c17945dabb52860e2940ba29
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:343
-msgid "``filters_ex14.py``"
-msgstr ""
-
-# 56c23335552040db813464be02abc955
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:349
-msgid ":download:`../../../examples/filters_ex14.py`"
-msgstr ""
-
-# e6309d3e844a417c84e9f9fc2301e8c8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:354
-msgid "Over-constrained faces"
-msgstr ""
-
-# 1d50fd1a57cf4affb4a6126f6d70e97b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:356
-msgid "filters over-constrained faces:"
-msgstr ""
-
-# e95f92d730ae434ca39fa56652c53391
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:359
-msgid "functor type is *SMESH.FT_OverConstrainedFace*"
-msgstr ""
-
-# fbb88252d0f8448c86ba7292f91697fb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:364
-msgid "``filters_ex15.py``"
-msgstr ""
-
-# 9a79e54fe9a84efbae8d530043f5184e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:370
-msgid ":download:`../../../examples/filters_ex15.py`"
-msgstr ""
-
-# c430a7aef2474eedb4eac84e9289d461
-# 337ef1b2f716414f95c90c39cef03851
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:372
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:626
-msgid "**See also:** :ref:`tui_over_constrained_faces`"
-msgstr ""
-
-# 4c762816a7a64922827935e7645df238
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:377
-msgid "Double edges, Double faces, Double volumes"
-msgstr ""
-
-# 9f7e6b32dc904feeabe998c2d7277164
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:379
-msgid "filters mesh elements basing on the same set of nodes:"
-msgstr ""
-
-# 03dff5d9d02d4cc38ec4d46cc1732feb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:381
-msgid "element type is either *SMESH.EGDE*, *SMESH.FACE* or *SMESH.VOLUME*"
-msgstr ""
-
-# 51855d36e073427fba5f6ed59b5c0a48
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:382
-msgid ""
-"functor type is either *SMESH.FT_EqualEdges*, *SMESH.FT_EqualFaces* or "
-"*SMESH.FT_EqualVolumes*,"
-msgstr ""
-
-# 422403336e844500aeef72243b7bebd2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:387
-msgid "``filters_ex16.py``"
-msgstr ""
-
-# 14d268a0bf094221aeb85ada8de2dd73
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:393
-msgid ":download:`../../../examples/filters_ex16.py`"
-msgstr ""
-
-# 9be1962ed6184f24ac4d806fdf5cb8f3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:398
-msgid "Double nodes"
-msgstr ""
-
-# 9a9f6e25952c4722b3d3a8400c39a645
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:400
-msgid ""
-"filters mesh nodes which are coincident with other nodes (within a given "
-"tolerance):"
-msgstr ""
-
-# 0f73daf6ad974068b5a74c6b7ad5305f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:403
-msgid "functor type is *SMESH.FT_EqualNodes*"
-msgstr ""
-
-# 4ce59ef3270642dd9629c006d9c40c5a
-# 9c2b4ad2ec414dbbbe70cab52eb1313a
-# 014e3785e30f4b8e92c97075610de2d8
-# e4173d7352364008ac081a669f97ef14
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:405
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:709
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:732
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:755
-msgid "default tolerance is 1.0e-7"
-msgstr ""
-
-# 3f69e761164f4f8fb7d60c60d67d7d9c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:409
-msgid "``filters_ex17.py``"
-msgstr ""
-
-# 46c6789c91e949dd95431fc46ee67be6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:415
-msgid ":download:`../../../examples/filters_ex17.py`"
-msgstr ""
-
-# 54ec3d0384df4c2a98ddaf6bc07f3e3f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:420
-msgid "Node connectivity number"
-msgstr ""
-
-# 2b9c0d5edf854e72bdce648332c61ee6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:422
-msgid ""
-"filters nodes according to a number of elements of highest dimension "
-"connected to a node:"
-msgstr ""
-
-# b78de618c06e421a877db6b0f7007abf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:424
-msgid "element type should be *SMESH.NODE*"
-msgstr ""
-
-# 7104cd9c3c394b8195f90a41b4bc2804
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:425
-msgid "functor type should be *SMESH.FT_NodeConnectivityNumber*"
-msgstr ""
-
-# d1060b82fcdb4c43984b72ec1d765e41
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:426
-msgid "threshold is an integer value (number of elements)"
-msgstr ""
-
-# 5951063693494de88bf6be07130c5441
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:430
-msgid "``filters_node_nb_conn.py``"
-msgstr ""
-
-# 3080014f52ca4527818190584a929a00
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:436
-msgid ":download:`../../../examples/filters_node_nb_conn.py`"
-msgstr ""
-
-# dda1534b256f4c658a2eb2450c8a2fcc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:441
-msgid "Borders at multi-connection"
-msgstr ""
-
-# a5fa530a80534ee99245cd1484dce07e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:443
-msgid ""
-"filters 1D mesh elements (segments) according to the specified number of "
-"connections (faces and volumes on whose border the segment lies):"
-msgstr ""
-
-# 49a03ad028f54839b50abede8d970f34
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:447
-msgid "functor type is *SMESH.FT_MultiConnection*"
-msgstr ""
-
-# 5ec7e5eb0091420b92fdf13465e68b6c
-# 0a96e2ef8ef141b6adc2e267269eafae
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:448
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:472
-msgid "threshold is integer value (number of connections)"
-msgstr ""
-
-# 5733597ff1fe473eb40ce3ff7e301354
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:452
-msgid "``filters_ex18.py``"
-msgstr ""
-
-# a9f6687ddaaa475a947061b2e6922d5b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:458
-msgid ":download:`../../../examples/filters_ex18.py`"
-msgstr ""
-
-# a4e855cfcaf24964aaeb1888d5ab57c5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:460
-msgid "**See also:** :ref:`tui_borders_at_multiconnection`"
-msgstr ""
-
-# ca4388f462be424a9fa5738438a8dfb6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:465
-msgid "Borders at multi-connection 2D"
-msgstr ""
-
-# 385ca0044ae44f67bb24d0c3c294c653
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:467
-msgid ""
-"filters 2D mesh elements (faces) with the specified maximal number of "
-"faces connected to a border (link between nodes, not mesh segment):"
-msgstr ""
-
-# 605e2bb7c60341e3831e08ce9d00a288
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:471
-msgid "functor type is *SMESH.FT_MultiConnection2D*"
-msgstr ""
-
-# 1e8e880339b94eac818b655278bee946
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:476
-msgid "``filters_ex19.py``"
-msgstr ""
-
-# d355d82b74a3407e9a1b870177eb0232
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:482
-msgid ":download:`../../../examples/filters_ex19.py`"
-msgstr ""
-
-# 0d635a7069f94a5489fbfec8828788ae
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:484
-msgid "**See also:** :ref:`tui_borders_at_multiconnection_2d`"
-msgstr ""
-
-# 550261fe1fff44f78036162b87eca99e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:489
-msgid "Length"
-msgstr ""
-
-# ee52caa616fe4c8a92328758a6dac90e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:491
-msgid "filters 1D mesh elements (edges) according to the edge length value:"
-msgstr ""
-
-# 989ae7f833e64913950a07ffce7a599c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:493
-msgid "element type should be *SMESH.EDGE*"
-msgstr ""
-
-# fbf7ad28719e402da1a8858aec480ffa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:494
-msgid "functor type should be *SMESH.FT_Length*"
-msgstr ""
-
-# 5b1059d4691141c39a84aebb8f64c712
-# 6905f10af6e445bebef179769d7bd0e7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:495
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:543
-msgid "threshold is floating point value (length)"
-msgstr ""
-
-# 78e69795f69c4918ae37ba9438e4d581
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:499
-msgid "``filters_ex20.py``"
-msgstr ""
-
-# b1f5b9a6f59345bb9b65918b13dbf30f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:505
-msgid ":download:`../../../examples/filters_ex20.py`"
-msgstr ""
-
-# e49b59c96cbb493ba58613dab973137a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:507
-msgid "**See also:** :ref:`tui_length_1d`"
-msgstr ""
-
-# f055a144f07b412c8b1067b4cc86f095
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:512
-msgid "Length 2D"
-msgstr ""
-
-# c7666b79d18a427682a0f88fc50697fc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:514
-msgid ""
-"filters 2D mesh elements (faces) according to the maximum length of its "
-"edges (links between nodes):"
-msgstr ""
-
-# 9f6adc99edc5432098314557e142316c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:518
-msgid "functor type should be *SMESH.FT_Length2D*"
-msgstr ""
-
-# 5b6dfc0091a74cebbe66cb90bc14107c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:519
-msgid "threshold is floating point value (edge length)"
-msgstr ""
-
-# a7c4c530ebf844729a747786a918a469
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:523
-msgid "``filters_ex21.py``"
-msgstr ""
-
-# ed21709b073447aea73549c6b5e4ba52
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:529
-msgid ":download:`../../../examples/filters_ex21.py`"
-msgstr ""
-
-# a2e2655568de44af95deb658aa4e0020
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:531
-msgid "**See also:** :ref:`tui_length_2d`"
-msgstr ""
-
-# 7437e2569f1e4cc6a2aae12cceb7dde2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:536
-msgid "Element Diameter 2D"
-msgstr ""
-
-# 31bf394724b04028ba2aa2373fb4a497
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:538
-msgid ""
-"filters 2D mesh elements (faces) according to the maximum length of its "
-"edges and diagonals:"
-msgstr ""
-
-# 724391cb86d64f8b91ee6033f41271bd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:542
-msgid "functor type should be *SMESH.FT_MaxElementLength2D*"
-msgstr ""
-
-# d098a1e0cd784fffb785c4e89624e73f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:547
-msgid "``filters_ex22.py``"
-msgstr ""
-
-# f3fb04e667a145ffa27c4fa83c05e33a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:553
-msgid ":download:`../../../examples/filters_ex22.py`"
-msgstr ""
-
-# cc55efd54037451e9e93c117da20c134
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:555
-msgid "**See also:** :ref:`tui_max_element_length_2d`"
-msgstr ""
-
-# cc9136e7d65b4ca9b0bc04885b9c48d5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:560
-msgid "Element Diameter 3D"
-msgstr ""
-
-# 94101ffc6fda4d118986fa576c249e5a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:562
-msgid ""
-"filters 3D mesh elements (volumes) according to the maximum length of its"
-" edges and diagonals:"
-msgstr ""
-
-# 552586f6bd904272b24c888a47f75fe7
-# 1dbdd411375944168b321d06258363a4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:565
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:797
-msgid "element type should be *SMESH.VOLUME*"
-msgstr ""
-
-# fdda00bd406e45ba8c957adfe59aa584
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:566
-msgid "functor type should be *SMESH.FT_MaxElementLength3D*"
-msgstr ""
-
-# 8f503039f5d94e688fabbc1cab2a2fd5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:567
-msgid "threshold is floating point value (edge/diagonal length)"
-msgstr ""
-
-# e26cb32f84404ebba50404235dfcfc6f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:571
-msgid "``filters_ex23.py``"
-msgstr ""
-
-# b83daba736664a6ba10c6a60c85290f1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:577
-msgid ":download:`../../../examples/filters_ex23.py`"
-msgstr ""
-
-# cbe17c247adf473d838f06dfcacd5099
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:579
-msgid "**See also:** :ref:`tui_max_element_length_3d`"
-msgstr ""
-
-# 97fc03d800884cab911512fb355e844c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:584
-msgid "Bare border volumes"
-msgstr ""
-
-# ce40e24105914ebe844a3878981e73b3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:586
-msgid ""
-"filters 3D mesh elements with bare borders, i.e. having a facet not "
-"shared with other volumes and without a face on it:"
-msgstr ""
-
-# fcb10c03ffb54596a5d76535c59f4202
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:590
-msgid "functor type is *SMESH.FT_BareBorderVolume*"
-msgstr ""
-
-# 9d2614cf04c747009ab065d3b7c69f31
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:595
-msgid "``filters_ex24.py``"
-msgstr ""
-
-# 775702868e504cd99d3e13550722d54f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:601
-msgid ":download:`../../../examples/filters_ex24.py`"
-msgstr ""
-
-# b3355d3c2aef4db78b6409e9531d9fbe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:603
-msgid "**See also:** :ref:`tui_bare_border_volumes`"
-msgstr ""
-
-# d691f1abd0ca4c0eb16b217f6f77161a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:608
-msgid "Over-constrained volumes"
-msgstr ""
-
-# 28008f4ef2a94786ac06c4b1cb843d0b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:610
-msgid ""
-"filters over-constrained volumes, whose all nodes are on the mesh "
-"boundary:"
-msgstr ""
-
-# e43a3fdb876c4135ae79a3f2009aed0e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:613
-msgid "functor type is *SMESH.FT_OverConstrainedVolume*"
-msgstr ""
-
-# 90b875ac91454fdc9cbff4ccb4329f2d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:618
-msgid "``filters_ex25.py``"
-msgstr ""
-
-# 840c6c1a0eea44d88ed766016df2cfcb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:624
-msgid ":download:`../../../examples/filters_ex25.py`"
-msgstr ""
-
-# b49dbd8ec8764bc2a459735efa405e95
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:631
-msgid "Belong to Mesh Group"
-msgstr ""
-
-# 62e957b684c54214b232a947a4d3b240
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:633
-msgid ""
-"filters mesh entities (nodes or elements) included in a mesh group "
-"defined by threshold value:"
-msgstr ""
-
-# 5e2969a704914b97be7521835f9bfd53
-# 05e74d27e2154ec095b4eb8230cfa7d7
-# 8df46f4bc3294bf7b5fa6220ca737281
-# 9fa4accfe4f046499b5bb57cacd18624
-# 674b6ddf9d37471b825202d5e5297f86
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:636
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:658
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:681
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:775
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:840
-msgid "element type can be any, from *SMESH.NODE* to *SMESH.BALL*"
-msgstr ""
-
-# d50d8ecc6d2340c9bc7611e3384e69dc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:637
-msgid "functor type should be *SMESH.FT_BelongToMeshGroup*"
-msgstr ""
-
-# c77da6ebd3f74281b61d71383798e03c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:638
-msgid "threshold is mesh group object"
-msgstr ""
-
-# 681f97f7da9b4a9995e56c3e8df52622
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:642
-msgid "``filters_belong2group.py``"
-msgstr ""
-
-# 7a8de9bd18d24a2d95a429e0ee16b0a7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:648
-msgid ":download:`../../../examples/filters_belong2group.py`"
-msgstr ""
-
-# b6d57148f42940eda7259884042e820b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:653
-msgid "Belong to Geom"
-msgstr ""
-
-# dcff919a75a34a61a991fec26d73e191
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:655
-msgid ""
-"filters mesh entities (nodes or elements) which all nodes lie on the "
-"shape defined by threshold value:"
-msgstr ""
-
-# 6936949065a14fa59ebd082a704b8ddf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:659
-msgid "functor type should be *SMESH.FT_BelongToGeom*"
-msgstr ""
-
-# 425504babbae4ef1a87cd43390ab1911
-# 75b2f2e1075b4ca2b8f12c44948c7229
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:660
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:683
-msgid "threshold is geometrical object"
-msgstr ""
-
-# 3e5c35430f5a420580677ef5bb0fec6c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:661
-msgid ""
-"tolerance is a distance between a node and the geometrical object; it is "
-"used if an node is not associated to any geometry."
-msgstr ""
-
-# af4a62bc6bb944ad95818d6e7a580c69
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:665
-msgid "``filters_ex26.py``"
-msgstr ""
-
-# a7c2743b9d394107b485708f1a8e8f53
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:671
-msgid ":download:`../../../examples/filters_ex26.py`"
-msgstr ""
-
-# d1e3a37b037e48e09e9a5c95aed8b10d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:676
-msgid "Lying on Geom"
-msgstr ""
-
-# 42c56ae8e347449793280f9628e388db
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:678
-msgid ""
-"filters mesh entities (nodes or elements) at least one node of which lies"
-" on the shape defined by threshold value:"
-msgstr ""
-
-# 3405af1cedcf4f2eb0beead57d373a9d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:682
-msgid "functor type should be *SMESH.FT_LyingOnGeom*"
-msgstr ""
-
-# d7aa1223d52a49ffad2cea535fee5432
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:684
-msgid "tolerance is a distance between a node and the geometrical object;"
-msgstr ""
-
-# 5573b9622d1f403a9cc5a1f622aa66bc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:686
-msgid "it is used if an node is not associated to any geometry."
-msgstr ""
-
-# aebe7d59b7f24931ab8bc542276af606
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:690
-msgid "``filters_ex27.py``"
-msgstr ""
-
-# 0ed67cd816d44f81920f933879fffa4b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:696
-msgid ":download:`../../../examples/filters_ex27.py`"
-msgstr ""
-
-# 96669f8b61e8427ba147bddb9dbf0c1e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:701
-msgid "Belong to Plane"
-msgstr ""
-
-# b1f11adac265445da564b97d9a12e637
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:703
-msgid ""
-"filters mesh entities (nodes or elements) which all nodes belong to the "
-"plane defined by threshold value with the given tolerance:"
-msgstr ""
-
-# fabc3ac38127432f9b32d6da2514eff4
-# 3e4dc8f600bd414f90b3ec3bdf0e006a
-# 288d476ed0fa4275a28cfb3c0048a116
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:706
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:729
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:752
-msgid "element type can be any except *SMESH.VOLUME*"
-msgstr ""
-
-# beddd56fa51d443f8598332c6a798f61
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:707
-msgid "functor type should be *SMESH.FT_BelongToPlane*"
-msgstr ""
-
-# 7c33c3cb8ce8458e8d8dcc7406d5224c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:708
-msgid "threshold is geometrical object (plane)"
-msgstr ""
-
-# 1a779a6d926249da91ddba758563cdfe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:713
-msgid "``filters_ex28.py``"
-msgstr ""
-
-# 474063b5e9f64506ab7164ec35bdd591
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:719
-msgid ":download:`../../../examples/filters_ex28.py`"
-msgstr ""
-
-# 6e1fecbd1a3645e29a1ea342cc3e66da
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:724
-msgid "Belong to Cylinder"
-msgstr ""
-
-# f0b8bebbc11b47aba1911c6dec58e8fc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:726
-msgid ""
-"filters mesh entities (nodes or elements) which all nodes belong to the "
-"cylindrical face defined by threshold value with the given tolerance:"
-msgstr ""
-
-# e59bbbe974ab407da4746987550f092b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:730
-msgid "functor type should be *SMESH.FT_BelongToCylinder*"
-msgstr ""
-
-# 521885d6a25a49fbba26e2b3cd276bea
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:731
-msgid "threshold is geometrical object (cylindrical face)"
-msgstr ""
-
-# 7169b31929204c8d86171c5fc1e70790
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:736
-msgid "``filters_ex29.py``"
-msgstr ""
-
-# 79555c5a71184badbab65a080d78769d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:742
-msgid ":download:`../../../examples/filters_ex29.py`"
-msgstr ""
-
-# 443cfe1a044f4543beb1c9f691b2f8d2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:747
-msgid "Belong to Surface"
-msgstr ""
-
-# 89767428ece3443a882e6cdd310440d4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:749
-msgid ""
-"filters mesh entities (nodes or elements) which all nodes belong to the "
-"arbitrary surface defined by threshold value with the given tolerance:"
-msgstr ""
-
-# 51ac7306ca4e40a583f93e213b9d53e7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:753
-msgid "functor type should be *SMESH.FT_BelongToGenSurface*"
-msgstr ""
-
-# f47254b619d741ebb1268f6d3bc76479
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:754
-msgid "threshold is geometrical object (arbitrary surface)"
-msgstr ""
-
-# 6cc05deaab714e5597256bd4b8d575ba
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:759
-msgid "``filters_ex30.py``"
-msgstr ""
-
-# 755f6f5145794b1b9b3fbf0707841202
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:765
-msgid ":download:`../../../examples/filters_ex30.py`"
-msgstr ""
-
-# 480b58ba69224cacb3ea43c351b2cbe8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:770
-msgid "Range of IDs"
-msgstr ""
-
-# edc9065fcc7747fbbf4770e7a24e0150
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:772
-msgid ""
-"filters mesh entities elements (nodes or elements) according to the "
-"specified identifiers range:"
-msgstr ""
-
-# c5326641da7c4bc989742815cd547c94
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:776
-msgid "functor type is *SMESH.FT_RangeOfIds*"
-msgstr ""
-
-# f38032029e0f4f5c8e878e1a717c712f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:777
-msgid ""
-"threshold is string listing required IDs and/or ranges of IDs, "
-"e.g.\"1,2,3,50-60,63,67,70-78\""
-msgstr ""
-
-# 648a550fba2d4f1b91544b6a10d129ad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:781
-msgid "``filters_ex31.py``"
-msgstr ""
-
-# 5e865f6eea324433bd5ebb53aafe730a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:787
-msgid ":download:`../../../examples/filters_ex31.py`"
-msgstr ""
-
-# 629cd6d520ae4225be5a7656fb2e8e1c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:792
-msgid "Badly oriented volume"
-msgstr ""
-
-# 997d280d774c4f288595ab35ff4bac2d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:794
-msgid ""
-"filters 3D mesh elements (volumes), which are incorrectly oriented from "
-"the point of view of MED convention."
-msgstr ""
-
-# c6bd895bb88e4785ba8890ea4316884f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:798
-msgid "functor type is *SMESH.FT_BadOrientedVolume*"
-msgstr ""
-
-# 9093e5ba871a4b038cd1b1eff0b57367
-# de3b40264c3e4a24a0c2d5ea6d10576f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:799
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:820
-msgid "threshold is not required"
-msgstr ""
-
-# 7f090527951447c4b24547316452536b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:803
-msgid "``filters_ex32.py``"
-msgstr ""
-
-# 433cbf6bf097466f87da3706c761e002
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:809
-msgid ":download:`../../../examples/filters_ex32.py`"
-msgstr ""
-
-# 9c303932cfc04a3c8c0fdbf4465b7601
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:814
-msgid "Linear / quadratic"
-msgstr ""
-
-# 89dd525d28a14d629237d1b4b6be0500
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:816
-msgid "filters linear / quadratic mesh elements:"
-msgstr ""
-
-# 457e1ff1b5194af5b54d8def4d8e90e3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:818
-msgid "element type should be either *SMESH.EDGE*, *SMESH.FACE* or *SMESH.VOLUME*"
-msgstr ""
-
-# 6be06de695854193b299384f8e43a791
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:819
-msgid "functor type is *SMESH.FT_LinearOrQuadratic*"
-msgstr ""
-
-# 2c99fbd29b6d46aba55e0ad1312bb07e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:821
-msgid ""
-"if unary operator is set to SMESH.FT_LogicalNOT, the quadratic elements "
-"are selected, otherwise (by default) linear elements are selected"
-msgstr ""
-
-# dc627b9fa49c46d6a3620f426974ee18
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:825
-msgid "``filters_ex33.py``"
-msgstr ""
-
-# a67844d1abcd405b8585d15bc521ea85
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:831
-msgid ":download:`../../../examples/filters_ex33.py`"
-msgstr ""
-
-# bdffe57af7904d328b2149232e5dfd62
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:836
-msgid "Group color"
-msgstr ""
-
-# 38af276c6e714f55a1c27e72e90cd0f2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:838
-msgid ""
-"filters mesh entities, belonging to the group with the color defined by "
-"the threshold value."
-msgstr ""
-
-# 201d8bca7f004e57861e36d1edb41ced
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:841
-msgid "functor type is *SMESH.FT_GroupColor*"
-msgstr ""
-
-# 09bbe898a14e49fc9c75a34d93fcf3d7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:842
-msgid "threshold should be of SALOMEDS.Color type"
-msgstr ""
-
-# a6a0157dd48547db9a4ba61fb4a60254
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:846
-msgid "``filters_ex34.py``"
-msgstr ""
-
-# db3daeb12eeb490b99162cf67ea3d46f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:852
-msgid ":download:`../../../examples/filters_ex34.py`"
-msgstr ""
-
-# bfafa2ababc7495ab073caad36f52be7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:857
-msgid "Geometry type"
-msgstr ""
-
-# 3ed3adca96584f8cada6b1918ab063cb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:859
-msgid ""
-"filters mesh elements by the geometric type defined with the threshold "
-"value. The list of available geometric types depends on the element "
-"entity type."
-msgstr ""
-
-# a030232f559b4c739d14fab8c2d16bdc
-# 9d452c1d0b284f4081addf9f8026d897
-# 60870960f67b44b3a77fab3c58ab1e7b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:863
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:884
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:926
-msgid ""
-"element type can be any, e.g.: *SMESH.EDGE*, *SMESH.FACE*, "
-"*SMESH.VOLUME*, etc."
-msgstr ""
-
-# 89deb95aee72404b8403b79cdcf685f4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:864
-msgid "functor type should be *SMESH.FT_ElemGeomType*"
-msgstr ""
-
-# ae918bc9c07e459a88d77aef0d22b4f0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:865
-msgid ""
-"threshold is either of smesh.GeometryType values. Type "
-"*SMESH.GeometryType._items* in the Python Console to see all geometric "
-"types."
-msgstr ""
-
-# 4ff74a1e1b76464ebf6b20a8d9f26f45
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:869
-msgid "``filters_ex35.py``"
-msgstr ""
-
-# 1967c745730342e3bf48d70306f463fc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:875
-msgid ":download:`../../../examples/filters_ex35.py`"
-msgstr ""
-
-# 0eff6fa25f514cd8bbc6cbe1cf521c2e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:880
-msgid "Entity type"
-msgstr ""
-
-# ee373c0f383a4b809834d66fcaf2921b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:882
-msgid "filters mesh elements by the geometric type and number of nodes."
-msgstr ""
-
-# 963014e799e24f9fa30774202c1aa673
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:885
-msgid "functor type should be *SMESH.FT_EntityType*"
-msgstr ""
-
-# 0c19e26af5cc4b90afad5df964910125
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:886
-msgid ""
-"threshold is either of SMESH.EntityType values. Type "
-"*SMESH.EntityType._items* in the Python Console to see all entity types."
-msgstr ""
-
-# eb186ee8b0f2409ba4772249733b5364
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:890
-msgid "``filters_ex37.py``"
-msgstr ""
-
-# 19611ceebb8e46ceaa47aa0f2b21b44a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:896
-msgid ":download:`../../../examples/filters_ex37.py`"
-msgstr ""
-
-# 3208daefb114459d8a5a07b1e9e0b859
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:901
-msgid "Ball diameter"
-msgstr ""
-
-# f5fb287ff3a64f87bb9406c63a06923e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:903
-msgid "filters ball elements by diameter."
-msgstr ""
-
-# e46e09625f1c42f8932ca036c240d66a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:905
-msgid "element type should be *SMESH.BALL*"
-msgstr ""
-
-# 15653ec5de0d416387873f9406719593
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:906
-msgid "functor type should be *SMESH.FT_BallDiameter*"
-msgstr ""
-
-# 12bfc4b762bc429b92329056c102b932
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:907
-msgid "threshold is floating point value (ball diameter)"
-msgstr ""
-
-# c7d7ea6882164c28906e136939b14a3b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:911
-msgid "``filters_ex38.py``"
-msgstr ""
-
-# d6ce1938df5f4e13bbafa462547a2c2e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:917
-msgid ":download:`../../../examples/filters_ex38.py`"
-msgstr ""
-
-# fafdd97f37aa465086eac657054ceaa8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:922
-msgid "Elements of a domain"
-msgstr ""
-
-# 015db492db7a4573b3e67144cfffc42a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:924
-msgid "filters elements of a specified domain."
-msgstr ""
-
-# 91f93e9c0f524a38ac0d3187a8ca9606
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:927
-msgid "functor type should be *SMESH.FT_ConnectedElements*"
-msgstr ""
-
-# 245661334ae347e8b9055bce39e73f50
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:928
-msgid ""
-"threshold is either (1) node ID or (2)  geometrical vertex or (3) 3 "
-"coordinates of a point."
-msgstr ""
-
-# 6b1dc952084e499ab1118e00e68ee60e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:932
-msgid "``filters_ex39.py``"
-msgstr ""
-
-# 7857771c11de4843ba948ae370481e99
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:938
-msgid ":download:`../../../examples/filters_ex39.py`"
-msgstr ""
-
-# 4a247beda8fd45ac9adabf51f4ccc758
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:943
-msgid "How to combine several criteria into a filter?"
-msgstr ""
-
-# 20f523c9f1364fd493710745665b2485
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:945
-msgid "Several criteria can be combined into a filter."
-msgstr ""
-
-# 5cdcea56db2142c48da8d9f4ebd38432
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:947
-msgid "Example :"
-msgstr ""
-
-# 24fdd74430244cf999d12e78aa34bd2d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:951
-msgid "``filters_ex36.py``"
-msgstr ""
-
-# bdc03be37f0f4109bf502c473f4961ad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_filters.rst:957
-msgid ":download:`../../../examples/filters_ex36.py`"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_generate_flat_elements.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_generate_flat_elements.po
deleted file mode 100644 (file)
index cd89253..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 94b9bfcad24f4c1a8904595aacacd2a8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:5
-msgid "Generate flat elements"
-msgstr ""
-
-# 2d87fc8590ba46db8cfb3fdcb334acdd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:11
-msgid "Double nodes on groups boundaries"
-msgstr ""
-
-# b2e0b61a2bd541658aaa85d3701e2616
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:13
-msgid ""
-"Double nodes on shared faces between groups of volumes and create flat "
-"elements on demand."
-msgstr ""
-
-# ccba3377d12c4a03a60d8f94161453cf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:15
-msgid ""
-"The list of groups must contain at least two groups. The groups have to "
-"be disjoint: no common element into two different groups."
-msgstr ""
-
-# fecd61ff694c43ba92b41f184f8d29b0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:17
-msgid ""
-"The nodes of the internal faces at the boundaries of the groups are "
-"doubled. Optionally, the internal faces are replaced by flat elements."
-msgstr ""
-
-# bcfba18f40da4612ad4ff5c79d493694
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:19
-msgid "Triangles are transformed into prisms, and quadrangles into hexahedrons."
-msgstr ""
-
-# 9399b78410d546ac85910821b7ce6936
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:21
-msgid "The flat elements are stored in groups of volumes."
-msgstr ""
-
-# 0da6b80f0f2d469cbc70306609b90150
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:23
-msgid ""
-"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\"."
-msgstr ""
-
-# 791916a68e6a4ac68d0ca337f597f83c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:29
-msgid ""
-"This example represents an iron cable (a thin cylinder) in a concrete "
-"bloc (a big cylinder). The big cylinder is defined by two geometric "
-"volumes."
-msgstr ""
-
-# 32891b0da8c04c99a9f893d9a3d55737
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:34
-msgid "``generate_flat_elements.py``"
-msgstr ""
-
-# d28029c4ca634a2f8919c4710c5275fa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:40
-msgid ":download:`../../../examples/generate_flat_elements.py`"
-msgstr ""
-
-# d44554c1bbfa4b8e9f233f65f79b94ec
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:42
-msgid ""
-"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."
-msgstr ""
-
-# cd05508af49441a9a33f12dbeb40ba64
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:46
-msgid ""
-"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."
-msgstr ""
-
-# f5207480da63486c8a5da024105cc022
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_generate_flat_elements.rst:49
-msgid ""
-"To observe flat element groups, save the resulting mesh on a MED file and"
-" reload it."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_grouping_elements.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_grouping_elements.po
deleted file mode 100644 (file)
index f240ae7..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 7c8275db95614345840fe6b8724d25de
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:5
-msgid "Grouping Elements"
-msgstr ""
-
-# d007caedd364451e8c1f7495b62650f0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:0
-msgid "`Table of contents`"
-msgstr ""
-
-# c685a29a29eb44f98ef7d19dc0978ed8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:13
-msgid "Create a Standalone Group"
-msgstr ""
-
-# 33643a4602be45a1b707c60e35d04085
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:17
-msgid "``grouping_elements_ex01.py``"
-msgstr ""
-
-# efd94909a03d4ac6b67f376a2f97364d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:23
-msgid ":download:`../../../examples/grouping_elements_ex01.py`"
-msgstr ""
-
-# ce9f619fdeb348ebb932e1acf3b8ecb5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:32
-msgid "Create a Group on Geometry"
-msgstr ""
-
-# b4933694da724b6dbe8aac06260b5d91
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:36
-msgid "``grouping_elements_ex02.py``"
-msgstr ""
-
-# 7107a498cdc044f697c2309d05d7b626
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:42
-msgid ":download:`../../../examples/grouping_elements_ex02.py`"
-msgstr ""
-
-# a21f0e2bcf474b89b4d1d81660be451e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:47
-msgid "Create a Group on Filter"
-msgstr ""
-
-# 94708eb1603c4290a41abcbc4c65e23a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:51
-msgid "``grouping_elements_ex03.py``"
-msgstr ""
-
-# c055a286339c42f9abeff58eb1627edb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:57
-msgid ":download:`../../../examples/grouping_elements_ex03.py`"
-msgstr ""
-
-# 017ddf308a744a8a80ecadb90fc9afeb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:62
-msgid "Edit a Group"
-msgstr ""
-
-# 44b5e88de4f94adfb04e72de0af0961d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:66
-msgid "``grouping_elements_ex04.py``"
-msgstr ""
-
-# 6c7b0f9d495843e7ace6be6ceafb4b7e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:72
-msgid ":download:`../../../examples/grouping_elements_ex04.py`"
-msgstr ""
-
-# 259559a09b5d4a7aa5341005d1bb4030
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:81
-msgid "Union of groups"
-msgstr ""
-
-# 9d2a4762350a46d8ae13943b51245742
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:85
-msgid "``grouping_elements_ex05.py``"
-msgstr ""
-
-# 7f4f67b3c7534e9c955ebcdf671b473a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:91
-msgid ":download:`../../../examples/grouping_elements_ex05.py`"
-msgstr ""
-
-# 3ed79769097448299091c040b08e0c33
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:100
-msgid "Intersection of groups"
-msgstr ""
-
-# bea440376ec44c5ca7d569e70131360b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:104
-msgid "``grouping_elements_ex06.py``"
-msgstr ""
-
-# 35894b83067447ddac86733da1388d99
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:110
-msgid ":download:`../../../examples/grouping_elements_ex06.py`"
-msgstr ""
-
-# a148c83e4a70413c879340f761e8ab50
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:119
-msgid "Cut of groups"
-msgstr ""
-
-# 8dfec4cdb7474b089635f725049d40fc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:123
-msgid "``grouping_elements_ex07.py``"
-msgstr ""
-
-# 301f2d0fdf92422dae26c42c7a0cbc6f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:129
-msgid ":download:`../../../examples/grouping_elements_ex07.py`"
-msgstr ""
-
-# cbeebd8ad9d644a890f18c93d68ece31
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:138
-msgid "Creating groups of entities basing on nodes of other groups"
-msgstr ""
-
-# 95318b6177c74648acbd055014e45b1e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:142
-msgid "``grouping_elements_ex08.py``"
-msgstr ""
-
-# 98ca427d8a374b269637ae39951272d8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_grouping_elements.rst:148
-msgid ":download:`../../../examples/grouping_elements_ex08.py`"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_measurements.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_measurements.po
deleted file mode 100644 (file)
index c531f05..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# fcf1848f5fc64f4b9238b081ed8257d2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:5
-msgid "Measurements"
-msgstr ""
-
-# 37e730455ef24c8890f0c9cb06265fa5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:9
-msgid "Minimum Distance"
-msgstr ""
-
-# 4f8eb655f7d94344889df89550d28110
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:13
-msgid "``measurements_ex01.py``"
-msgstr ""
-
-# 9bd28729817f4b55a7bad0866aad3a11
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:19
-msgid ":download:`../../../examples/measurements_ex01.py`"
-msgstr ""
-
-# 55053f612a8944e497ece47425b6a60b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:24
-msgid "Bounding Box"
-msgstr ""
-
-# ac6650de22da46af8d3fc1feb70f392c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:28
-msgid "``measurements_ex02.py``"
-msgstr ""
-
-# 586956e8468b49ee963f0cd5ba48a639
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:34
-msgid ":download:`../../../examples/measurements_ex02.py`"
-msgstr ""
-
-# de1f00c886e04eaea481b695ad8272bb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:39
-msgid "Basic Properties"
-msgstr ""
-
-# 2ae18065fdb64633abf5d333546de3ed
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:43
-msgid "``measurements_ex03.py``"
-msgstr ""
-
-# e7d49eb227cd456fb619045a95dd6326
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_measurements.rst:49
-msgid ":download:`../../../examples/measurements_ex03.py`"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_modifying_meshes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_modifying_meshes.po
deleted file mode 100644 (file)
index b6afe1b..0000000
+++ /dev/null
@@ -1,429 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# aada02ed87e9482991a105a7096b13b9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:5
-msgid "Modifying Meshes"
-msgstr ""
-
-# 4fca5d359462431bbfb1a297c6f1c015
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:0
-msgid "`Table of contents`"
-msgstr ""
-
-# 3882fd88f2be46d2bf046435d1ab6116
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:13
-msgid "Adding Nodes and Elements"
-msgstr ""
-
-# 2912e95b7a304f02ac3e3a0f6b492e1f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:18
-msgid "Add Node"
-msgstr ""
-
-# e937ad8c1eee48b89418d8c87e754c40
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:22
-msgid "``modifying_meshes_ex01.py``"
-msgstr ""
-
-# 93520ad0813442f18bdf9a0b3def23f5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:28
-msgid ":download:`../../../examples/modifying_meshes_ex01.py`"
-msgstr ""
-
-# e015d501736443c787c8448daa4b1cf4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:33
-msgid "Add 0D Element"
-msgstr ""
-
-# 07f05da961cb4e3aa357c1125efd0dfa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:37
-msgid "``modifying_meshes_ex02.py``"
-msgstr ""
-
-# 8cd7162f281041e998a16ba15b6a2afd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:43
-msgid ":download:`../../../examples/modifying_meshes_ex02.py`"
-msgstr ""
-
-# 9ae5e80e36414b81bb414c6e3dbc0401
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:48
-msgid "Add 0D Element on Element Nodes"
-msgstr ""
-
-# 4ce9e69888e54ea6bc3d8123892df4bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:52
-msgid "``modifying_meshes_ex03.py``"
-msgstr ""
-
-# 1fc33b2f5afe4ef39a3e0386470702c7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:58
-msgid ":download:`../../../examples/modifying_meshes_ex03.py`"
-msgstr ""
-
-# 1b9d3c3a725b450e9ca4646848ed26e1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:63
-msgid "Add Edge"
-msgstr ""
-
-# ecdca588cdd84ff8aa87f45abec12590
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:67
-msgid "``modifying_meshes_ex04.py``"
-msgstr ""
-
-# 97c1b92363944e539c1d9b466977e5bd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:73
-msgid ":download:`../../../examples/modifying_meshes_ex04.py`"
-msgstr ""
-
-# af3bdd72bc624e11aaf32fbb7e915f29
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:78
-msgid "Add Triangle"
-msgstr ""
-
-# 3863dc59cd09494b904f960891c29256
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:82
-msgid "``modifying_meshes_ex05.py``"
-msgstr ""
-
-# 52380a726927405b899c634d3ee0c922
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:88
-msgid ":download:`../../../examples/modifying_meshes_ex05.py`"
-msgstr ""
-
-# ad7815a0144e444b9f1ffead0f73a605
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:93
-msgid "Add Quadrangle"
-msgstr ""
-
-# 1033fb8fc9a74063b718f6bb688d67bd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:97
-msgid "``modifying_meshes_ex06.py``"
-msgstr ""
-
-# 1c0f1e73f76640a89cf49c530537d010
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:103
-msgid ":download:`../../../examples/modifying_meshes_ex06.py`"
-msgstr ""
-
-# 0685aeaebe4c481c91a0b527c967396e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:108
-msgid "Add Tetrahedron"
-msgstr ""
-
-# 941189d082ff4a3f8e4b8ebb23f0d2f3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:112
-msgid "``modifying_meshes_ex07.py``"
-msgstr ""
-
-# dfa8e48ee2fc4165aa775033e6b052ea
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:118
-msgid ":download:`../../../examples/modifying_meshes_ex07.py`"
-msgstr ""
-
-# 5a5f7874626d427ea5a7fb55e797fa66
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:123
-msgid "Add Hexahedron"
-msgstr ""
-
-# b651ec6bdb5246e0aaf99bc1acb35d9f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:127
-msgid "``modifying_meshes_ex08.py``"
-msgstr ""
-
-# 418525e42ce74f7094b73b1413abfdae
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:133
-msgid ":download:`../../../examples/modifying_meshes_ex08.py`"
-msgstr ""
-
-# bae866607b304e0fbb9907ca192aa2ee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:138
-msgid "Add Polygon"
-msgstr ""
-
-# ecf9edb8d0994d9cbe4d186a66912cbc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:142
-msgid "``modifying_meshes_ex09.py``"
-msgstr ""
-
-# 52080c13dd784dabb391ab937ca983a9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:148
-msgid ":download:`../../../examples/modifying_meshes_ex09.py`"
-msgstr ""
-
-# 07055770fb864145b907da2b4909b703
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:153
-msgid "Add Polyhedron"
-msgstr ""
-
-# b1442132c7dc4cbd9f868b181428dcaa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:157
-msgid "``modifying_meshes_ex10.py``"
-msgstr ""
-
-# ed0593751615424989125f0586ac3936
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:163
-msgid ":download:`../../../examples/modifying_meshes_ex10.py`"
-msgstr ""
-
-# 9b285274402b48658860b32294e8dac5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:168
-msgid "Removing Nodes and Elements"
-msgstr ""
-
-# b436e294d1214a44ac54a0fab50212bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:173
-msgid "Removing Nodes"
-msgstr ""
-
-# 2f66f5eef3344132ba6c582bc1192a7e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:177
-msgid "``modifying_meshes_ex11.py``"
-msgstr ""
-
-# 32c27c776f6741d79e21444ad7e7f223
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:183
-msgid ":download:`../../../examples/modifying_meshes_ex11.py`"
-msgstr ""
-
-# af6993ae032c44f2956ef6b1b7219fa1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:188
-msgid "Removing Elements"
-msgstr ""
-
-# 6e2bc2d438014d5c91bf0650d0b93f62
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:192
-msgid "``modifying_meshes_ex12.py``"
-msgstr ""
-
-# dbcc049e4aba43d7943cd5d4e59f68b1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:198
-msgid ":download:`../../../examples/modifying_meshes_ex12.py`"
-msgstr ""
-
-# 8c6510d0103043a3b6d6c5009c58c140
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:203
-msgid "Removing Orphan Nodes"
-msgstr ""
-
-# a62084880a3d4d99a920c5c7d64c35d0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:207
-msgid "``modifying_meshes_ex13.py``"
-msgstr ""
-
-# 65829ed7318d44e5b213e4476cb88975
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:213
-msgid ":download:`../../../examples/modifying_meshes_ex13.py`"
-msgstr ""
-
-# 072e7fda68214ff6a9e82bb46d9e7b54
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:218
-msgid "Moving Nodes"
-msgstr ""
-
-# 6241da425fc341a6972bc52709c9f17d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:222
-msgid "``modifying_meshes_ex15.py``"
-msgstr ""
-
-# 761b5555313b4de6b6658a24bd1c5943
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:228
-msgid ":download:`../../../examples/modifying_meshes_ex15.py`"
-msgstr ""
-
-# eae98f1d881f47ad856d133c7fcf647d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:233
-msgid "Diagonal Inversion"
-msgstr ""
-
-# 17f8656a2043438498d5faa309d9db3f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:237
-msgid "``modifying_meshes_ex16.py``"
-msgstr ""
-
-# 93dd916eca644dfa818c988ce6a3ba6a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:243
-msgid ":download:`../../../examples/modifying_meshes_ex16.py`"
-msgstr ""
-
-# f29b26e5fc1e4f5ab64a01d46874bcca
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:248
-msgid "Uniting two Triangles"
-msgstr ""
-
-# ee685e2cbc4c45adabf0313c94ab265d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:252
-msgid "``modifying_meshes_ex17.py``"
-msgstr ""
-
-# 760efa3959614773944130605e38d103
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:258
-msgid ":download:`../../../examples/modifying_meshes_ex17.py`"
-msgstr ""
-
-# 0e8309d52aa24136bc511e7c8cbae48a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:263
-msgid "Uniting a Set of Triangles"
-msgstr ""
-
-# 09b737cbe2c0409983ecb054dbe346b0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:267
-msgid "``modifying_meshes_ex18.py``"
-msgstr ""
-
-# dffc67da027e422ea2d6731b538e248f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:273
-msgid ":download:`../../../examples/modifying_meshes_ex18.py`"
-msgstr ""
-
-# 0a3c94c6a162420aaae25531382282aa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:278
-msgid "Orientation"
-msgstr ""
-
-# b1c35bc3190c43c3ab90cc1c1d71526b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:282
-msgid "``modifying_meshes_ex19.py``"
-msgstr ""
-
-# d03db5ed6b0346eaba85dc3df49eeb2a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:288
-msgid ":download:`../../../examples/modifying_meshes_ex19.py`"
-msgstr ""
-
-# 6d1a49f7262a485295850a85e54992e9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:293
-msgid "Cutting Quadrangles"
-msgstr ""
-
-# c838a6074c60435a8113adb2e75db894
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:297
-msgid "``modifying_meshes_ex20.py``"
-msgstr ""
-
-# d0de4068046e44848a15fbf4eea6deb9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:303
-msgid ":download:`../../../examples/modifying_meshes_ex20.py`"
-msgstr ""
-
-# ad37ede65d2f46a8b22efc9d19e6b347
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:308
-msgid "Smoothing"
-msgstr ""
-
-# d705f65980314385901c4316f258235e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:312
-msgid "``modifying_meshes_ex21.py``"
-msgstr ""
-
-# 8c8d9acaabed4ddb892a839ea88c6e42
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:318
-msgid ":download:`../../../examples/modifying_meshes_ex21.py`"
-msgstr ""
-
-# 4cb97b8e8f2a44558385dbbce875e7c4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:323
-msgid "Extrusion"
-msgstr ""
-
-# df3a417c2dce420abdd0669fbb74ce9f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:327
-msgid "``modifying_meshes_ex22.py``"
-msgstr ""
-
-# 23e499ee8ac64a2283c6b7e195610dac
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:333
-msgid ":download:`../../../examples/modifying_meshes_ex22.py`"
-msgstr ""
-
-# 37b48cd5b20a4e3a9e23fd93831e395c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:338
-msgid "Extrusion along a Path"
-msgstr ""
-
-# e15b81f2dc884607b96325a960a0a814
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:342
-msgid "``modifying_meshes_ex23.py``"
-msgstr ""
-
-# 59666ee96fec4ddd866a6f9608742380
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:348
-msgid ":download:`../../../examples/modifying_meshes_ex23.py`"
-msgstr ""
-
-# 4d4ccc2f066246a7a5aeb153f5cdae2c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:353
-msgid "Revolution"
-msgstr ""
-
-# 8b7cde33b28d413c9572c095b91f4adc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:357
-msgid "``modifying_meshes_ex24.py``"
-msgstr ""
-
-# ad888657b3eb4279b21d70ae77361803
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:363
-msgid ":download:`../../../examples/modifying_meshes_ex24.py`"
-msgstr ""
-
-# be6c231c208445c4b20afdd211012acd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:368
-msgid "Pattern Mapping"
-msgstr ""
-
-# 952a2de3d76145639d9519752e453883
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:372
-msgid "``modifying_meshes_ex25.py``"
-msgstr ""
-
-# 325e04d139ca400dbdcc2860a1624425
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:378
-msgid ":download:`../../../examples/modifying_meshes_ex25.py`"
-msgstr ""
-
-# ee3a18d7cd0d4e168fb38e013f8e7d9b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:383
-msgid "Convert mesh to/from quadratic"
-msgstr ""
-
-# ccf9ab173a504d459c9a4bf914326489
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:387
-msgid "``modifying_meshes_ex26.py``"
-msgstr ""
-
-# fcb2a25c83fe400cbd804504e046b28a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:393
-msgid ":download:`../../../examples/modifying_meshes_ex26.py`"
-msgstr ""
-
-# 2345c457190f43888ddecd3a2b12558a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:398
-msgid "Split bi-quadratic into linear"
-msgstr ""
-
-# ede71e5407594b6197cb58e6b1c92ed4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:402
-msgid "``split_biquad.py``"
-msgstr ""
-
-# 57fa3126ba154d68acfd6079690d5e3d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst:408
-msgid ":download:`../../../examples/split_biquad.py`"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_notebook_smesh.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_notebook_smesh.po
deleted file mode 100644 (file)
index 61a6348..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 4e9993722e1649209e71f7d58df0c727
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_notebook_smesh.rst:6
-msgid "Using SALOME NoteBook"
-msgstr ""
-
-# 3ef41e73f8bb4aa8acc925fdf9579609
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_notebook_smesh.rst:11
-msgid "Notebook Smesh"
-msgstr ""
-
-# b30507833c0642d5a57fcfd094ffd345
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_notebook_smesh.rst:15
-msgid "``notebook_smesh.py``"
-msgstr ""
-
-# 19ab428fafa443aa83e77dd359b6c74a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_notebook_smesh.rst:21
-msgid ":download:`../../../examples/notebook_smesh.py`"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_prism_3d_algo.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_prism_3d_algo.po
deleted file mode 100644 (file)
index af7456b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 7db5116cadad4c5d8ef9c5b1562f3dd0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_prism_3d_algo.rst:5
-msgid "Use Extrusion 3D meshing algorithm"
-msgstr ""
-
-# 59d16afb08774f12bf587dcb9abeb044
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_prism_3d_algo.rst:10
-msgid "``prism_3d_algo.py``"
-msgstr ""
-
-# 4b2c1b045b1149e3933960789e9d33f8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_prism_3d_algo.rst:16
-msgid ":download:`../../../examples/prism_3d_algo.py`"
-msgstr ""
-
-# dbe9fc1e748e455b8069f3c2ef87c23b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_prism_3d_algo.rst:18
-msgid "The result geometry and mesh is shown below"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_quality_controls.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_quality_controls.po
deleted file mode 100644 (file)
index af13b95..0000000
+++ /dev/null
@@ -1,359 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 79e35e7183f44391bd0127332a78edfe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:5
-msgid "Quality Controls"
-msgstr ""
-
-# 4ce27f26de8842b5882924b1323f02f0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:0
-msgid "`Table of contents`"
-msgstr ""
-
-# 13768e85664a4fbc9881a3b17ed9ca05
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:13
-msgid "Free Borders"
-msgstr ""
-
-# 784ab797573c410fafb9fac67dc78051
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:17
-msgid "``quality_controls_ex01.py``"
-msgstr ""
-
-# fe45863436994e299ea06bcbfe306d6a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:23
-msgid ":download:`../../../examples/quality_controls_ex01.py`"
-msgstr ""
-
-# 3697f0194b364c83b756020ca6fb1804
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:29
-msgid "Borders at Multiconnection"
-msgstr ""
-
-# 92041fa12d294bd595c2c941ffad513f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:33
-msgid "``quality_controls_ex02.py``"
-msgstr ""
-
-# 1e7eaf4082714e01a1aeaa620a0fe01a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:39
-msgid ":download:`../../../examples/quality_controls_ex02.py`"
-msgstr ""
-
-# 8f3f90612ac645d39883bd1eb3fb30c7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:45
-msgid "Length 1D"
-msgstr ""
-
-# ecf20a9ecb9c4fcda965d671b55228fc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:49
-msgid "``quality_controls_ex03.py``"
-msgstr ""
-
-# 6bc7e3d4d48b45b5b436431a5bec19cc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:55
-msgid ":download:`../../../examples/quality_controls_ex03.py`"
-msgstr ""
-
-# d9f495d0a4464f11a9d256e46d45077d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:60
-msgid "Free Edges"
-msgstr ""
-
-# e5accfde373a4e2da11426532b5856a7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:64
-msgid "``quality_controls_ex04.py``"
-msgstr ""
-
-# ab630a0aa6fb404d87ed3bc702d050fd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:70
-msgid ":download:`../../../examples/quality_controls_ex04.py`"
-msgstr ""
-
-# 33edc58357a54da4b3d21406a4741ec6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:75
-msgid "Free Nodes"
-msgstr ""
-
-# 5ac5533032ef41f3974884acac5237c8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:79
-msgid "``quality_controls_ex05.py``"
-msgstr ""
-
-# b41c2828c4d24907a9f5a295b98b6f38
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:85
-msgid ":download:`../../../examples/quality_controls_ex05.py`"
-msgstr ""
-
-# c613dab5d0094c8a83696ffcc0be8137
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:90
-msgid "Free Faces"
-msgstr ""
-
-# 9c4dc5aebc9d4a5c83c0f0c4b2e1ed71
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:94
-msgid "``quality_controls_ex06.py``"
-msgstr ""
-
-# ba6f37b8eb7c41498d9e8271516a59e2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:100
-msgid ":download:`../../../examples/quality_controls_ex06.py`"
-msgstr ""
-
-# cf887f0dfa12482699950d6b3bb5b489
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:105
-msgid "Bare border faces"
-msgstr ""
-
-# e9b4af9d5633486483b4581effe13ae1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:109
-msgid "``quality_controls_ex07.py``"
-msgstr ""
-
-# 421b24a8d0314244819cf31b2ba0df93
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:115
-msgid ":download:`../../../examples/quality_controls_ex07.py`"
-msgstr ""
-
-# e186909d87774c88b5fa8b58f4757531
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:120
-msgid "Bare border volumes"
-msgstr ""
-
-# 346b907637574b70850ba0187a54856a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:124
-msgid "``quality_controls_ex08.py``"
-msgstr ""
-
-# ca2ca668a94b4fdf84534f6f73a8e482
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:130
-msgid ":download:`../../../examples/quality_controls_ex08.py`"
-msgstr ""
-
-# a389f8939d7349ae8a414b546001eacc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:135
-msgid "Over-constrained faces"
-msgstr ""
-
-# b2272c5024894b84815d4244be43d178
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:139
-msgid "``quality_controls_ex09.py``"
-msgstr ""
-
-# f6711314bc0047cdbcb22ae22a025745
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:145
-msgid ":download:`../../../examples/quality_controls_ex09.py`"
-msgstr ""
-
-# 0d87bea8ab484e5fbb9d4b46165d14f3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:150
-msgid "Over-constrained volumes"
-msgstr ""
-
-# f9ee64a6c6804e86b31cc06dba160ea4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:154
-msgid "``quality_controls_ex10.py``"
-msgstr ""
-
-# cab30492fe664ee791dbe30414b25a15
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:160
-msgid ":download:`../../../examples/quality_controls_ex10.py`"
-msgstr ""
-
-# 5b75b5252edd4fbbbb236c8580b3b1de
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:165
-msgid "Length 2D"
-msgstr ""
-
-# 21bab48b6c384b9991ddc1a4a8b355c5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:169
-msgid "``quality_controls_ex11.py``"
-msgstr ""
-
-# f5021d6d120c49fc99f62e989a2b3599
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:175
-msgid ":download:`../../../examples/quality_controls_ex11.py`"
-msgstr ""
-
-# 431b0039fcb4463ea06170622fbe46b8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:181
-msgid "Borders at Multiconnection 2D"
-msgstr ""
-
-# 579da091c4ab45e7a67f51737e6a6a22
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:185
-msgid "``quality_controls_ex12.py``"
-msgstr ""
-
-# 773748f0ac774c37b85791ebaa103976
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:191
-msgid ":download:`../../../examples/quality_controls_ex12.py`"
-msgstr ""
-
-# 0ceaa76eff2d4ac18c5883cddfc2b476
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:196
-msgid "Area"
-msgstr ""
-
-# ba82af02297e417fa93d810f93e87b16
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:200
-msgid "``quality_controls_ex13.py``"
-msgstr ""
-
-# ac09692057fb491191406ddcc11916d5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:206
-msgid ":download:`../../../examples/quality_controls_ex13.py`"
-msgstr ""
-
-# ba175a6522794c8281355cc289b803c4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:211
-msgid "Taper"
-msgstr ""
-
-# 8c9c6c79352b477184b6ccd7adf3f847
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:215
-msgid "``quality_controls_ex14.py``"
-msgstr ""
-
-# 57171e329029469088e8aa018c3cfa24
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:221
-msgid ":download:`../../../examples/quality_controls_ex14.py`"
-msgstr ""
-
-# c09aa0dda0f541d89a8da4725768169e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:226
-msgid "Aspect Ratio"
-msgstr ""
-
-# f207685150274592aec124e1bad1dc57
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:230
-msgid "``quality_controls_ex15.py``"
-msgstr ""
-
-# a718df3177fe4c939748b5b72acf45fa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:236
-msgid ":download:`../../../examples/quality_controls_ex15.py`"
-msgstr ""
-
-# 43f52454c1d44983aaf12519eb39b8e8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:241
-msgid "Minimum Angle"
-msgstr ""
-
-# 5b4eb968388c4158bcccd8aca32ac97b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:245
-msgid "``quality_controls_ex16.py``"
-msgstr ""
-
-# d155445c01c4476a8d6bf73c3017ac1e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:251
-msgid ":download:`../../../examples/quality_controls_ex16.py`"
-msgstr ""
-
-# f9fe7e4ee15645e9b6073ae8816dcce2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:256
-msgid "Warping"
-msgstr ""
-
-# 4f1675ddc859489e965531d752285526
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:260
-msgid "``quality_controls_ex17.py``"
-msgstr ""
-
-# edd793ad3f21412b8f77253b4b980e06
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:266
-msgid ":download:`../../../examples/quality_controls_ex17.py`"
-msgstr ""
-
-# 3a5139d6a0bf49b29d10f100cd96ae64
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:271
-msgid "Skew"
-msgstr ""
-
-# 62a3783633ba46da9f519209bb3c2705
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:275
-msgid "``quality_controls_ex18.py``"
-msgstr ""
-
-# f9544382e94c42cab5eeb4c9d549506c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:281
-msgid ":download:`../../../examples/quality_controls_ex18.py`"
-msgstr ""
-
-# a308653df1364d25838e9030a5f35f83
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:286
-msgid "Element Diameter 2D"
-msgstr ""
-
-# 75ca6180045b40b3bff2bcbdf3617331
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:290
-msgid "``quality_controls_ex19.py``"
-msgstr ""
-
-# e16559cbcea74e92b25fdc069a30b633
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:296
-msgid ":download:`../../../examples/quality_controls_ex19.py`"
-msgstr ""
-
-# 8b48cb86d5e34dde9a2d4414626e19b3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:301
-msgid "Aspect Ratio 3D"
-msgstr ""
-
-# e073edd069be4a5bbfd6267667a2d965
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:305
-msgid "``quality_controls_ex20.py``"
-msgstr ""
-
-# 426b4f7acc9b4d7798cb831383ed3595
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:311
-msgid ":download:`../../../examples/quality_controls_ex20.py`"
-msgstr ""
-
-# 0db14d711d0a47f788c3d16f49396926
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:316
-msgid "Volume"
-msgstr ""
-
-# 7ede37ac5a404c8080b9491960ce259d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:320
-msgid "``quality_controls_ex21.py``"
-msgstr ""
-
-# 6a96fbb599dd453f9eba8ff1be16ce24
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:326
-msgid ":download:`../../../examples/quality_controls_ex21.py`"
-msgstr ""
-
-# b41bc7c1334841aea8f91d8456a372f7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:331
-msgid "Element Diameter 3D"
-msgstr ""
-
-# 292ed9f29bba49018744a8a9e87493c9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:335
-msgid "``quality_controls_ex22.py``"
-msgstr ""
-
-# 599768d716b2417ab5a7e0410353aa8b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_quality_controls.rst:341
-msgid ":download:`../../../examples/quality_controls_ex22.py`"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_transforming_meshes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_transforming_meshes.po
deleted file mode 100644 (file)
index 0edf784..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 29bf61a3b72547389506b6a4965bd37c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:5
-msgid "Transforming Meshes"
-msgstr ""
-
-# 57af2fd00488467fb00a9e03a72759c0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:0
-msgid "`Table of contents`"
-msgstr ""
-
-# 1c60f8c47a3e4be98e503c34b554dc09
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:13
-msgid "Translation"
-msgstr ""
-
-# b878258a6bf448e1b9830f1c73f41637
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:17
-msgid "``transforming_meshes_ex01.py``"
-msgstr ""
-
-# 1766f2bf2ab24dc988ad390de07e89ad
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:23
-msgid ":download:`../../../examples/transforming_meshes_ex01.py`"
-msgstr ""
-
-# af8b339fa0fe4dc982b2796537a795db
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:28
-msgid "Rotation"
-msgstr ""
-
-# 3e8063e2480b4f8ba76ec78c425f49dd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:32
-msgid "``transforming_meshes_ex02.py``"
-msgstr ""
-
-# 9fe78b8a34c348d59749f25e7335d14c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:38
-msgid ":download:`../../../examples/transforming_meshes_ex02.py`"
-msgstr ""
-
-# aa586e69c42a4abd8923ddd1b7ab0cf0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:43
-msgid "Scale"
-msgstr ""
-
-# 3ae31c66014b45ad83a413a5c6235bdb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:47
-msgid "``transforming_meshes_ex03.py``"
-msgstr ""
-
-# 6493aa79b1714ac492c6850e4cfecbef
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:53
-msgid ":download:`../../../examples/transforming_meshes_ex03.py`"
-msgstr ""
-
-# 66e92a4ad2c84565b94a231fb7c5f32e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:58
-msgid "Symmetry"
-msgstr ""
-
-# 497ee5890c624291b06e090511967f8b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:62
-msgid "``transforming_meshes_ex04.py``"
-msgstr ""
-
-# 5540f43535344d868236748555f493f5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:68
-msgid ":download:`../../../examples/transforming_meshes_ex04.py`"
-msgstr ""
-
-# eaea65b5483d45a89c341a5703e35a03
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:73
-msgid "Merging Nodes"
-msgstr ""
-
-# a1c5602d67184c2c971d7820782b32dd
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:77
-msgid "``transforming_meshes_ex05.py``"
-msgstr ""
-
-# 5d0bda0b10c343c99f7dbbca2224798a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:83
-msgid ":download:`../../../examples/transforming_meshes_ex05.py`"
-msgstr ""
-
-# 14edd06325a34255bce5f7a6a84d8b43
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:88
-msgid "Merging Elements"
-msgstr ""
-
-# 7910501187be43ad8347f57291429a5b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:92
-msgid "``transforming_meshes_ex06.py``"
-msgstr ""
-
-# c772435312ae4ec491cf1b0620c82f7a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:98
-msgid ":download:`../../../examples/transforming_meshes_ex06.py`"
-msgstr ""
-
-# 0dcc87a2f6ff443f834bd65409e3f0ea
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:103
-msgid "Sew Meshes Border to Side"
-msgstr ""
-
-# e513c5cff88c4988b5b348e62e405230
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:107
-msgid "``transforming_meshes_ex07.py``"
-msgstr ""
-
-# 9c1952b3506047d18c737045e2ac7948
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:113
-msgid ":download:`../../../examples/transforming_meshes_ex07.py`"
-msgstr ""
-
-# 6d328da4f3e643cdaa0d3918489b374c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:118
-msgid "Sew Conform Free Borders"
-msgstr ""
-
-# a465d0a871a74164817c27b0f9221e2c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:122
-msgid "``transforming_meshes_ex08.py``"
-msgstr ""
-
-# bb8c800633044961980283b51ee5c778
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:128
-msgid ":download:`../../../examples/transforming_meshes_ex08.py`"
-msgstr ""
-
-# 5891f30fd4a54ff6b456551a455b870f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:133
-msgid "Sew Free Borders"
-msgstr ""
-
-# 20626fb04a77496fbd712257159998bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:137
-msgid "``transforming_meshes_ex09.py``"
-msgstr ""
-
-# c4a9a4507341432890f2792f0f7001c9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:143
-msgid ":download:`../../../examples/transforming_meshes_ex09.py`"
-msgstr ""
-
-# 9e70aa09d8274ba794836660edf208d2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:148
-msgid "Sew Side Elements"
-msgstr ""
-
-# 76fe380dea9a4fa79d1e11790bd51f38
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:152
-msgid "``transforming_meshes_ex10.py``"
-msgstr ""
-
-# 016d984b3be4476bb71ae33174b0f927
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:158
-msgid ":download:`../../../examples/transforming_meshes_ex10.py`"
-msgstr ""
-
-# ed239c8e17e343f7956d9344959a9f07
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:163
-msgid "Duplicate nodes or/and elements"
-msgstr ""
-
-# 65dee1a957b646d4a17602e87ae626bf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:167
-msgid "``transforming_meshes_ex11.py``"
-msgstr ""
-
-# 10f039ec9f1b48eebe57b990c2304fa9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:173
-msgid ":download:`../../../examples/transforming_meshes_ex11.py`"
-msgstr ""
-
-# 5f67454206644f72825d645d1844ab73
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:178
-msgid "Create boundary elements"
-msgstr ""
-
-# 4bb99511ee02479cb382af3532557158
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:182
-msgid "``transforming_meshes_ex12.py``"
-msgstr ""
-
-# 6b7afe9a5e55413cb8b60ae64081928f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:188
-msgid ":download:`../../../examples/transforming_meshes_ex12.py`"
-msgstr ""
-
-# 5d157cdb1ae345e6a6108ab5fef97706
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:193
-msgid "Reorient faces"
-msgstr ""
-
-# fdccce5846f243c38659c5aed18b65ee
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:197
-msgid "``transforming_meshes_ex13.py``"
-msgstr ""
-
-# 4a4fc603eaef4c1c8c7b97fab58caf4f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst:203
-msgid ":download:`../../../examples/transforming_meshes_ex13.py`"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_use_existing_faces.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_use_existing_faces.po
deleted file mode 100644 (file)
index f5b434b..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 951c6da30ad24b41a53bd5090cddd9e4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_use_existing_faces.rst:5
-msgid "Usage of \"Use Faces to be Created Manually\" algorithm"
-msgstr ""
-
-# 536bc28ccf7f4fe786270b527629af3a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_use_existing_faces.rst:7
-msgid ""
-"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."
-msgstr ""
-
-# 2537c7e3239b4e27b40a16eeab20f448
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_use_existing_faces.rst:13
-msgid "``use_existing_faces.py``"
-msgstr ""
-
-# e89473b2cd0d482fba928f49c9c70c6b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_use_existing_faces.rst:19
-msgid ":download:`../../../examples/use_existing_faces.py`"
-msgstr ""
-
-# 41d2468e00404babb8fc1036478c0796
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_use_existing_faces.rst:21
-msgid "Resulting mesh:"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_viewing_meshes.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_viewing_meshes.po
deleted file mode 100644 (file)
index 58095de..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# e75a6ef91ac6493c8cb144a6efc9b307
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst:6
-msgid "Viewing Meshes"
-msgstr ""
-
-# 7c73b9aefc6e4c3bb0e04ee48fb5d8dc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst:11
-msgid "Viewing Mesh Infos"
-msgstr ""
-
-# 1d849688136b4c2e869975603178269e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst:16
-msgid "``viewing_meshes_ex01.py``"
-msgstr ""
-
-# b66d51960c8a44418ae0a7c91f579d72
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst:22
-msgid ":download:`../../../examples/viewing_meshes_ex01.py`"
-msgstr ""
-
-# 425948694a794e66a8915f61cbbf3a8a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst:28
-msgid "Find Element by Point"
-msgstr ""
-
-# 59a17b434af14d5380f3a2424e53b03f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst:32
-msgid "``viewing_meshes_ex02.py``"
-msgstr ""
-
-# 3b8461917abd45b68fb272c988b4eaff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst:38
-msgid ":download:`../../../examples/viewing_meshes_ex02.py`"
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_work_on_objects_from_gui.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_work_on_objects_from_gui.po
deleted file mode 100644 (file)
index eac8cc8..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 38a63190759e43b981ee92c725262d0a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst:6
-msgid "How to work with objects from the GUI ?"
-msgstr ""
-
-# fbf19b7daf9f41af9041147012cfec6b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst:8
-msgid ""
-"It is sometimes useful to work alternatively in the GUI of SALOME and in "
-"the Python Console. To fetch an object from the TUI simply type:"
-msgstr ""
-
-# 0f16302c8b0c4dc1916eb8f8088a68bf
-# 2d00179ccdd3445eac328efd38e46dc9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst:18
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst:27
-msgid "or"
-msgstr ""
-
-# 6b1b647955a643d9875eeb5893adcc13
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst:37
-msgid "All the methods documented in these pages can then be used on myMesh"
-msgstr ""
-
-# 50f1a166cef847658f83228c303bd927
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst:39
-msgid ""
-"The first statement only gives you access to a reference to the object "
-"created via the GUI. But the methods available on this reference are not "
-"exactly the same as those documented in these help pages. This Python API"
-" is meant to be used on smesh.Mesh instances. That's why you'll have to "
-"create such an instance with the second statement."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/uniting_set_of_triangles.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/uniting_set_of_triangles.po
deleted file mode 100644 (file)
index b51f6c9..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# f8042d07102047329268efb61e02b9a2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:5
-msgid "Uniting a set of triangles"
-msgstr ""
-
-# a6b547af1c8c4296adddfd3bf6849a03
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:7
-msgid ""
-"It is possible to unite many neighboring triangles into quadrangles by "
-"deletion of the common edge."
-msgstr ""
-
-# f039a145e7f2459ab878bae042d7ef71
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:10
-msgid "**To union several triangles:**"
-msgstr ""
-
-# 6ee1069129ae4a4f8f46b2ac201ec417
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:12
-msgid ""
-"Select a mesh (and display it in the 3D Viewer if you are going to pick "
-"elements by mouse)."
-msgstr ""
-
-# 485bc385f58141c3a3a7560b2e06a6ce
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:13
-msgid ""
-"In the **Modification** menu select the **Union of triangles** item or "
-"click **\"Union of triangles\"** button in the tool-bar."
-msgstr ""
-
-# 1b121a3390c84d18baaac7eb0dd8f178
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:21
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# 9fc7d11072d64e46b333e451a6c1b43c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:26
-msgid ""
-"**The main list** shall contain the triangles which will be united. You "
-"can click on a triangle in the 3D viewer and it will be highlighted. "
-"After that click the **Add** button and the ID of this triangle will be "
-"added to the list. To remove a selected element or elements from the list"
-" click the **Remove** button. The **Sort** button allows to sort the list"
-" of IDs. The **Filter** button allows to apply a definite "
-":ref:`filtering_elements` to selection of triangles."
-msgstr ""
-
-# 092a1e4d360445b09db5d8c37251412f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:27
-msgid ""
-"**Apply to all** radio button allows to apply the operation to all "
-"triangles of the selected mesh."
-msgstr ""
-
-# e7eb65c04f0f444295a0c69df326a9b7
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:28
-msgid "**Preview** provides a preview in the viewer."
-msgstr ""
-
-# 8fb609e2e5db4de6bd2cbf4d0f5526fc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:29
-msgid ""
-"**Criterion** menu allows to choose a quality criterion, which will be "
-"optimized to select triangles to unite."
-msgstr ""
-
-# f84bc27ba947439c9e4d5c378e3b2b79
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:30
-msgid ""
-"**Select from** set of fields allows to choose a sub-mesh or an existing "
-"group whose triangle elements then can be added to the list."
-msgstr ""
-
-# 08c9b313413c4804b0bfdbc252be2301
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:32
-msgid ""
-"Click the **Apply** or **Apply and Close** button to confirm the "
-"operation."
-msgstr ""
-
-# 57153b5d99ab4d89af9d593e0402fe3e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:34
-msgid ""
-"If some selected triangle elements have no adjacent edges with one of the"
-" others, the operation on these elements shall take no effect."
-msgstr ""
-
-# 28a06926cf8d49ec89524b0c68e54bfc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst:49
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_uniting_set_of_triangles`"
-" operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/uniting_two_triangles.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/uniting_two_triangles.po
deleted file mode 100644 (file)
index e70b866..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# d10d95c85acc44b59aa60cc145c274f1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:5
-msgid "Uniting two triangles"
-msgstr ""
-
-# 7efb4f33b07c4d7c9b96666b50332748
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:7
-msgid ""
-"In MESH you can union two neighboring triangles by deletion of the common"
-" edge."
-msgstr ""
-
-# 0a773ec39a8040e7b6431f0bac5d7e8b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:9
-msgid "**To unite two triangles:**"
-msgstr ""
-
-# 9cd5777e6184434cb5434d682eb64c97
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:11
-msgid ""
-"From the **Modification** menu choose the **Union of two triangles** item"
-" or click **\"Union of two triangles\"** button in the tool-bar."
-msgstr ""
-
-# cc9997ad658044a49b45e7072e7f2702
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:19
-msgid "The following dialog box shall appear:"
-msgstr ""
-
-# 4b000ffa624b43e290c100700553f0ff
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:25
-msgid ""
-"Enter IDs of nodes forming the required edge in the **Edge** field (a "
-"couple of node IDs separated by a dash) or select this edge in the 3D "
-"viewer."
-msgstr ""
-
-# c3db06c8f1e44be388aec4b9659acea1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:26
-msgid "Click the **Apply** or **Apply and Close** button."
-msgstr ""
-
-# 34c5c46c61514edca75e1ef4a0ed3dd2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/uniting_two_triangles.rst:41
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_uniting_two_triangles` "
-"operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/use_existing_algos.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/use_existing_algos.po
deleted file mode 100644 (file)
index 81481e6..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 9256cdd25833423fb9b94c5a521e371c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:5
-msgid "Import Elements from Another Mesh Algorithms"
-msgstr ""
-
-# b62cc448e48e488c9f614f558da02dd9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:7
-msgid ""
-"**Import Elements from Another Mesh** algorithms allow to define the mesh"
-" of a geometrical object by importing suitably located mesh elements from"
-" another mesh. The mesh elements to import from the other mesh should be "
-"contained in groups. If several groups are used to mesh the same "
-"geometry, validity of nodal connectivity of result mesh must be assured "
-"by connectivity of the source mesh; no geometrical checks are performed "
-"to merge different nodes at same locations."
-msgstr ""
-
-# f7645fc4bea24180b90d6cbb03fb814f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:16
-msgid ""
-"The source elements must totally cover the meshed geometry. The source "
-"elements lying partially over the geometry will not be used."
-msgstr ""
-
-# e622165086af4b8ba48b7a0dde755f4e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:19
-msgid ""
-"These algorithms can be used to mesh a very complex geometry part by "
-"part, by storing meshes of parts in files and then fusing them together "
-"using these algorithms."
-msgstr ""
-
-# a156c398751b42b9814c87b3f9445ebf
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:24
-msgid ""
-"**Import 1D Elements from Another Mesh** algorithm allows to define the "
-"mesh of a geometrical edge (or group of edges) by importing mesh edges "
-"contained in a group (or groups) from another mesh."
-msgstr ""
-
-# c7834efef670431bbf92f4eaf9a15904
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:28
-msgid ""
-"To apply this algorithm select the edge to be meshed (indicated in the "
-"field **Geometry** of **Create mesh** dialog box), **Import 1D Elements "
-"from Another Mesh** in the list of 1D algorithms and click the **\"Add "
-"Hypothesis\"** button. The following dialog box will appear:"
-msgstr ""
-
-# 7354dcaf5146486895b6841595b4c80c
-# 341cf4e0e75141898ae652b38faf121a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:37
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:53
-msgid "In this dialog box you can define"
-msgstr ""
-
-# cdab0f64ef27485db96a543b3c67547e
-# 20b666eb31aa426f90c95d45776c3afb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:39
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:55
-msgid "The **Name** of the algorithm."
-msgstr ""
-
-# 615d8cf66218471a8868fbe1a949912b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:40
-msgid "The **Groups of Edges** to import 1D elements from."
-msgstr ""
-
-# 62b46b2d47b14f1db122657a9b4e4e8d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:41
-msgid ""
-"**To copy mesh** checkbox allows to import not only the edges of the "
-"selected **Groups of Edges**, but the whole source mesh. In this case "
-"**To copy groups** checkbox allows to create the same groups as in the "
-"imported source mesh."
-msgstr ""
-
-# 0e44000afb5f46f9a60851e12e7d75ca
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:44
-msgid ""
-"**Import 1D-2D Elements from Another Mesh** algorithm allows to define "
-"the mesh of a geometrical face (or group of faces) by importing mesh "
-"faces contained in a group (or groups) from another (or this) mesh. 1D "
-"elements on the boundary of the geometrical face (if not yet present) are"
-" also created by the algorithm in conformity with the created 2D "
-"elements."
-msgstr ""
-
-# 734d46eb23684f30830e906650b59021
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:46
-msgid ""
-"To apply this algorithm select the geometrical face to be meshed "
-"(indicated in the field **Geometry** of **Create mesh** dialog box), "
-"**Import 1D-2D Elements from Another Mesh** in the list of 2D algorithms "
-"and click the **\"Add Hypothesis\"** button."
-msgstr ""
-
-# 917c2f04ada84399b9596a4fcc837a6f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:48
-msgid "The following dialog box will appear:"
-msgstr ""
-
-# 2e682626bbaf491cbd85c2068ca0cf28
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:56
-msgid "The **Groups of Faces** to import 2D elements from."
-msgstr ""
-
-# 70466a59647642678446f260180f595a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:57
-msgid ""
-"**To copy mesh** checkbox allows to import not only the faces of the "
-"selected **Groups of Faces**, but the whole source mesh. In this case "
-"**To copy groups** checkbox allows to create the same groups as in the "
-"imported source mesh."
-msgstr ""
-
-# 405cfbf9b2154272a1a334322432d98c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/use_existing_algos.rst:60
-msgid "**See Also** a sample TUI Script of a :ref:`tui_import`."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/using_notebook_smesh_page.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/using_notebook_smesh_page.po
deleted file mode 100644 (file)
index d5d707b..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# d1b42be93bda4c598dc059e9c97d1738
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:5
-msgid "Using SALOME NoteBook"
-msgstr ""
-
-# 7c57ab017ac74ff496bcfdc011b95330
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:7
-msgid ""
-"**SALOME NoteBook** allows defining variables to be used for creation and"
-" modification of objects."
-msgstr ""
-
-# 7b838238936644fd9b00305a1c19acca
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:22
-msgid "The following limitations on the use of variables still exist:"
-msgstr ""
-
-# ca33bdf6af554545a419c6a12db08048
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:24
-msgid ""
-":ref:`radial_prism_algo_page` hypothesis - parametrical values are "
-"correctly applied, but they are not restored after \"Update study\" "
-"operation."
-msgstr ""
-
-# cf92e0e4ac844ac2bf2b581b94a28f48
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:25
-msgid ""
-":ref:`a1d_meshing_hypo_page` hypothesis, Distribution with Table Density "
-"and Distribution with Analytic Density - parametrical values are not "
-"applicable."
-msgstr ""
-
-# 8e23f202b73c4dbbbd9535fd1a9263fa
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:26
-msgid ""
-":ref:`translation_page` dialog box, default mode (translation by two "
-"points) - parametrical values are correctly applied, but they are not "
-"restored after \"Update study\" operation."
-msgstr ""
-
-# e84280726e0149aab30e3a2705203e12
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:27
-msgid ""
-":ref:`merging_nodes_page` dialog box - parametrical value (tolerance of "
-"coincident nodes detection) is correctly applied, but it is not restored "
-"after \"Update study\" operation."
-msgstr ""
-
-# ba5deecaf83c41b99bfadd30e03f3f30
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:28
-msgid ""
-":ref:`revolution_page` dialog box - it is impossible to use the angle of "
-"revolution as \"total angle\" if it is defined as variable."
-msgstr ""
-
-# d108675600ea43928a7d2dbecaaf9edc
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:29
-msgid ""
-":ref:`extrusion_along_path_page` dialog box - it is impossible to use "
-"\"Linear variation of the angles\" mode if at least one of those angles "
-"is defined as variable."
-msgstr ""
-
-# 1e2fcf17f43b4aedb6b836d82e796ac9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:30
-msgid ""
-":ref:`pattern_mapping_page` dialog box - parametrical values (indices of "
-"nodes) are correctly applied, but they are not restored after \"Update "
-"study\" operation."
-msgstr ""
-
-# 24c36e2739cd433f863159d254d84480
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:31
-msgid ":ref:`clipping_page` dialog box."
-msgstr ""
-
-# f81d6249e89243e38067caf0ff72c715
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:32
-msgid "**Properties** dialog box."
-msgstr ""
-
-# 8006786080b645a9a6dce82f7c55c761
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst:35
-msgid ""
-"Our **TUI Scripts** provide you with useful examples of "
-":ref:`tui_notebook_smesh` ."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/using_operations_on_groups.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/using_operations_on_groups.po
deleted file mode 100644 (file)
index 00de27c..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 3c64b29aedd340f9a4c8a9d78aa0f748
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:5
-msgid "Boolean operations on groups"
-msgstr ""
-
-# f50fb2f27b1f4af4a4faacb8d02b5544
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:7
-msgid ""
-"In MESH you can perform some Boolean operations on groups, which belong "
-"to one and the same mesh."
-msgstr ""
-
-# 97f7ab96b0304eccbced874f127391d2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:9
-msgid ":ref:`union_anchor`"
-msgstr ""
-
-# a932b7ac781d40d0a5edb2c7df941737
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:10
-msgid ":ref:`intersection_anchor`"
-msgstr ""
-
-# a13e1bae8b714ddc98cd380b550379d1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:11
-msgid ":ref:`cut_anchor`"
-msgstr ""
-
-# 00b67383c6404267952838b0f80e8b42
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:19
-msgid "Union of groups"
-msgstr ""
-
-# a52b1ab225b34f25a71659332c4da5d1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:21
-msgid ""
-"This operation allows to create a new group in such a way that all mesh "
-"elements that are present in the initial groups will be added to the new "
-"one."
-msgstr ""
-
-# 60200864f53047deb846f4787ffe9e2d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:25
-msgid "**To union groups:**"
-msgstr ""
-
-# 79500d1f6301426bbd36582a768b6a4a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:27
-msgid ""
-"In the **Mesh** menu select the **Union Groups** item. The following "
-"dialog box will appear:"
-msgstr ""
-
-# 1fca07005fb24ffd9028c7f192a3fc07
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:32
-msgid ""
-"In this dialog box you should specify the name of the resulting group and"
-" set of groups which will be united."
-msgstr ""
-
-# ddca19009642466bb8d275f0ac369bac
-# ec798971cec54ab08d347741b3caaed4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:34
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:81
-msgid "For example, we have two groups Group1 and Group2."
-msgstr ""
-
-# c360882c3c704fe89dfc555ed6126cdb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:36
-msgid "The result of their **Union** will be Group12:"
-msgstr ""
-
-# e1ddabadb62a4b78a561b88682d45a9f
-# 09a76bcc37364e9d9abd993db5e647c9
-# fbc7d6720ee243639f61dce988a0cbe9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:56
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:103
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:149
-msgid ""
-"Click the **Apply** or **Apply and Close** button to confirm creation of "
-"the group."
-msgstr ""
-
-# 759d086d5318424b8888a2d800212d80
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:59
-msgid ""
-"**See Also** a sample TUI Script of a :ref:`tui_union_of_groups` "
-"operation."
-msgstr ""
-
-# 3917c96854dd4c49a91c7db5f8ebf6ca
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:66
-msgid "Intersection of groups"
-msgstr ""
-
-# c80b258632c84841840f4a316b526287
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:68
-msgid ""
-"This operation allows to create a new group in such a way that all mesh "
-"elements that are present in all initial groups together are added to the"
-" new one."
-msgstr ""
-
-# 79a6317ac7be460c90d3dd02129ce6e4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:72
-msgid "**To intersect groups:**"
-msgstr ""
-
-# 310f0effcfd94de1b16574d971d7501b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:74
-msgid ""
-"In the **Mesh** menu select the **Intersect Groups** item. The following "
-"dialog box will appear:"
-msgstr ""
-
-# a67d12fd3dbf495596b81b85ca9a9411
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:79
-msgid ""
-"In this dialog box you should specify the name of the resulting group and"
-" set of groups which will be intersected."
-msgstr ""
-
-# 83b1d3fb99a64493b25546c6b451cd71
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:83
-msgid "The result of their **Intersection** will be Group12a:"
-msgstr ""
-
-# bf8e4ce41e284392a026fc8aac537630
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:106
-msgid ""
-"**See Also** a sample TUI Script of an :ref:`tui_intersection_of_groups` "
-"operation."
-msgstr ""
-
-# 168729d4492b41f1a2eeb714b66e945f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:113
-msgid "Cut of groups"
-msgstr ""
-
-# 8df8d15c9cba4785ad039fe6971f1106
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:115
-msgid ""
-"This operation allows to create a new group in such a way that all mesh "
-"elements that are present in the main groups but are absent in the tool "
-"groups are added to the new one."
-msgstr ""
-
-# b77c4cdfb3fa4a43930a82ae5ec9af26
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:119
-msgid "**To cut groups:**"
-msgstr ""
-
-# 9ec410a81f794af8b0e54b97fa27f35a
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:121
-msgid ""
-"In the **Mesh** menu select the **Cut Groups** item. The following dialog"
-" box will appear:"
-msgstr ""
-
-# 5c2b88f6382e45e3a960e5617beb146d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:126
-msgid ""
-"In this dialog box you should specify the name of the resulting group and"
-" groups which will be cut."
-msgstr ""
-
-# c7109abb6f4d4929993eaaf8637c2b94
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:128
-msgid ""
-"For example, we have two groups Group1 and Group2. The result of their "
-"**Cut** will be Group12b:"
-msgstr ""
-
-# f96cb4ad1b484af299485dd291e98a6c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/using_operations_on_groups.rst:152
-msgid "**See Also** a sample TUI Script of a :ref:`tui_cut_of_groups` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/viewing_meshes_overview.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/viewing_meshes_overview.po
deleted file mode 100644 (file)
index 750956d..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# e7c7f397cdb442788b36234ecaed36b4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:5
-msgid "Viewing meshes"
-msgstr ""
-
-# 5f14544f8bb44215afc7cb6f42776be1
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:7
-msgid ""
-"By default a just :ref:`compute_anchor` mesh will be automatically "
-"displayed in the **VTK 3D Viewer**. (You can switch off "
-":ref:`automatic_update_pref` preference parameter to prevent this.) Click"
-" **Display only** to hide all other objects at the same time."
-msgstr ""
-
-# e95a2faec0314177b13db4bcab3f6fe3
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:13
-msgid ""
-"**VTK 3D Viewer** is described in detail in the documentation on **GUI "
-"module**."
-msgstr ""
-
-# fff07c0bb4284d2eaad08e009593310f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:15
-msgid ""
-"Use the following :ref:`mesh_preferences_page` to adjust how the mesh is "
-"displayed by default:"
-msgstr ""
-
-# 0e213d2e130042c4b92200c06267346d
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:18
-msgid ":ref:`automatic_update_pref`"
-msgstr ""
-
-# 0bf29579e79a46328055da15ee273959
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:19
-msgid ":ref:`display_mode_pref`"
-msgstr ""
-
-# facc77f7e1e14c09942ca891bca1384b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:20
-msgid ":ref:`quadratic_2d_mode_pref`"
-msgstr ""
-
-# d1ad0b78f4944527824fd60862d10e00
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:21
-msgid "All parameters of :ref:`mesh_tab_preferences` Preferences dialog."
-msgstr ""
-
-# 1237883ac6e54d53a547928795463b49
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:23
-msgid ""
-"After the mesh has appeared in the Viewer, you can select it with left "
-"mouse click and  get information about it, change its presentation "
-"parameters and access to other useful options by right-clicking on the "
-"selected mesh."
-msgstr ""
-
-# 14c6a193f554414ebd2638642e4ff504
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:32
-msgid "**Rename** - allows to rename the object in the Object browser."
-msgstr ""
-
-# 13ebbe480dcb4b4ea5e16fe031657d92
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:33
-msgid "**Hide all** - allows to hide all objects in the viewer."
-msgstr ""
-
-# 519780a62b6d49389742500dfab6143e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:34
-msgid ""
-"**Update** - refreshes the presentation of your mesh in the Object "
-"Browser, applying all recent changes."
-msgstr ""
-
-# 5caead58cb3143509df4049037609bd9
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:35
-msgid ":ref:`mesh_infos_page` -  provides information about the mesh."
-msgstr ""
-
-# 421fa002af414f40a7a8d2519563f734
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:36
-msgid ""
-":ref:`find_element_by_point_page` - allows to find all mesh elements, to "
-"which belongs a point with the given coordinates."
-msgstr ""
-
-# aafb55a6a8e343e18109cc71a79d0786
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:37
-msgid ""
-"**Auto Color** - switch on / off auto-assigning colors for the groups. If"
-" switched on, a default color of a new group in "
-":ref:`creating_groups_page` dialog is chosen randomly."
-msgstr ""
-
-# 054e966cbb504ec1858f0687e9b67f2f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:38
-msgid ""
-":ref`:`numbering_page` - allows to display the ID numbers of all meshing "
-"elements or nodes composing your mesh in the viewer."
-msgstr ""
-
-# e14312ec063d4773952123a9b4b3fc1e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:39
-msgid ""
-":ref:`display_mode_page` - allows to select between Wireframe, Shading "
-"and Nodes presentation."
-msgstr ""
-
-# ed4f7f74007c4d9db01e98c8097d0939
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:40
-msgid ""
-":ref:`display_entity_page` - allows to display entities by types (Faces, "
-"Edges, Volumes etc.)."
-msgstr ""
-
-# 99b9dcc92dcb43ed911a77c3ea1df36f
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:45
-msgid "Quadratic 2D"
-msgstr ""
-
-# cb976db163fb44aea0b89fcf211d1487
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:47
-msgid ""
-"**2D Quadratic** - allows to select between the representation of "
-"quadratic edges as broken **lines** or as **arcs**. A default "
-"representation can be set in :ref:`quadratic_2d_mode_pref`. Arc "
-"representation applies to 1D and 2D elements only."
-msgstr ""
-
-# 3c1dd7b5911c4874b0e8a7e479425439
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:48
-msgid ""
-"**Orientation of faces** - shows vectors of orientation of faces of the "
-"selected mesh. The orientation vector is shown for each 2D mesh element "
-"and for each free facet of a 3D mesh element. The vector direction is "
-"calculated by the first three nodes of the face produced by vectors n1-n2"
-" and n1-n3."
-msgstr ""
-
-# 6d6af7afac6542048d0c655f84303764
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:49
-msgid ""
-":ref:`colors_size_page` - allows to define several visual properties, "
-"including color of elements, shrink size, ..."
-msgstr ""
-
-# 5089d61f57bf403a946be3592a4ad831
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:50
-msgid ""
-":ref:`transparency_page` - allows to change the transparency of mesh "
-"elements."
-msgstr ""
-
-# 3175b5d13d394940a12af858fe3dd9db
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:51
-msgid ""
-":ref:`quality_page` - graphically presents various information about the "
-"mesh."
-msgstr ""
-
-# 990f093d5a0243c492b2a3c91593d3cb
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:52
-msgid "**Hide** - allows to hide the selected mesh from the viewer."
-msgstr ""
-
-# c638a54c583f4a1f97d1977841fdc04b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:53
-msgid ""
-"**Show Only** - allows to display only the selected mesh, hiding all "
-"others from the viewer."
-msgstr ""
-
-# 378028db9d4c4652b324b6c310370de2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:54
-msgid ""
-":ref:`clipping_page` - allows to create cross-sections of the displayed "
-"objects."
-msgstr ""
-
-# 75070b04c6a14b1f97ec58ebffd04bd5
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:55
-msgid ""
-"**Dump view** - exports an object from the viewer in bmp, png or jpeg "
-"image format."
-msgstr ""
-
-# a60f3cf4bcf84fecb6d8f91134e48cd6
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:56
-msgid ""
-"**Change background** - allows to redefine the background color. By "
-"default it is black."
-msgstr ""
-
-# 000b4de0267840d894e6a2d05565a989
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:57
-msgid ""
-"**View Operations** - allows to show/hide the  visualization toolbar in "
-"the Viewer window."
-msgstr ""
-
-# 11c21e53710b45a081a9e40626ea9a14
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst:58
-msgid ""
-"**Recording Operations** - allows to show/hide the recording toolbar in "
-"the Viewer window."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/volume.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/volume.po
deleted file mode 100644 (file)
index 9a80a7f..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 57f538dc718c4981baddee8d1fb421c0
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/volume.rst:5
-msgid "Volume"
-msgstr ""
-
-# 2bc915cd665048fe82b3c2be923c4e8c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/volume.rst:7
-msgid ""
-"**Volume** mesh quality criterion reflects the volume of meshes of a 3D "
-"object."
-msgstr ""
-
-# 6e8fba6a124a4dde9388c78009158e51
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/volume.rst:10
-msgid "**To apply the Volume quality criterion to your mesh:**"
-msgstr ""
-
-# c7307510f76a42cb93a8806a67e3fe2e
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/volume.rst:12
-msgid "Display your mesh in the viewer."
-msgstr ""
-
-# 6ba3f8b7613f421ea7ae919acea450fe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/volume.rst:13
-msgid ""
-"Choose **Controls > Volume Controls > Volume** or click **\"Volume\"** "
-"button in the toolbar."
-msgstr ""
-
-# 3048375053e34eaab6e3aa5468e4edd2
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/volume.rst:21
-msgid ""
-"Your mesh will be displayed in the viewer with its elements colored "
-"according to the applied mesh quality control criterion:"
-msgstr ""
-
-# 4813b79376244712b5a529d6d01e56ea
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/volume.rst:27
-msgid "**See Also** a sample TUI Script of a :ref:`tui_volume` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/warping.po b/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/warping.po
deleted file mode 100644 (file)
index da4831a..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C)
-# This file is distributed under the same license as the Mesh package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesh 8.3.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-11 15:10+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.0\n"
-
-# 7336840f1de848839bb89abfd5044c58
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:5
-msgid "Warping"
-msgstr ""
-
-# 2b1e730a5eed435082c616cfb92d2172
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:10
-msgid ""
-"**Warping** indicates that a face is not planar and is applied only to 2D"
-" elements with 4 nodes. This quality control criterion is based on a "
-"projection plane created by:"
-msgstr ""
-
-# f638d6044b5c498f8800f89640fd8cfe
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:14
-msgid "bisecting the four element edges,"
-msgstr ""
-
-# 15c2ff7a765d4459aded3ffd6cddd735
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:15
-msgid ""
-"creating a point on the plane at the vector average of the corners, where"
-" the x-axis extends from the point to the bisector on edge 2."
-msgstr ""
-
-# e628a39d26eb4be1b03bd8136bfe5e01
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:17
-msgid ""
-"The plane normal is in the direction of the cross product of the x-axis "
-"and the vector from the origin to the bisector of edge 3. Every corner of"
-" the quad will then be a distance *h* from the plane. The length of each "
-"half edge is measured and the shortest length is assigned *l*. The warp "
-"angle is the arcsine of the ratio of the projection height *h* to the "
-"half edge length *l*."
-msgstr ""
-
-# bba359515cd74635a97441380386a30c
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:24
-msgid "**To apply the Warping quality criterion to your mesh:**"
-msgstr ""
-
-# 97ad951c40ad4b3698c539ad51522ee4
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:26
-msgid "Display your mesh in the viewer."
-msgstr ""
-
-# 1b2805c25e224aed8c110b9b37b5f6f8
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:28
-msgid ""
-"Choose **Controls > Face Controls > Warping Angle** or click **\"Warping "
-"angle\"** button of the toolbar."
-msgstr ""
-
-# 57c13746701e495da2fa2e17be8c850b
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:36
-msgid ""
-"Your mesh will be displayed in the viewer with its elements colored "
-"according to the applied mesh quality control criterion:"
-msgstr ""
-
-# e6e8740c285548c6a8aedc9af2c97139
-#: ../../../../../../../SRC/SMESH_SRC/doc/salome/gui/SMESH/input/warping.rst:42
-msgid "**See Also** a sample TUI Script of a :ref:`tui_warping` operation."
-msgstr ""
-
diff --git a/doc/salome/gui/SMESH/merge_mesh_class.py b/doc/salome/gui/SMESH/merge_mesh_class.py
deleted file mode 100755 (executable)
index de8ec22..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/usr/bin/env python3
-# Copyright (C) 2017-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
-#
-import inspect
-import sys
-from types import FunctionType
-import copy
-
-ORIGIN_MODULE_SUFFIX = "_origin"
-DYNAMIC_MODULE_SUFFIX = "_dynamic"
-
-
-def main(module_name, output_file = "smeshBuilder.py"):
-    oringin_module_name = module_name + ORIGIN_MODULE_SUFFIX
-    dynamic_module_name = module_name + DYNAMIC_MODULE_SUFFIX
-    try:
-        exec( "import %s" % oringin_module_name )
-        origin_module = locals()[ oringin_module_name ]
-        origin_module_lines = inspect.getsourcelines( origin_module )[0]
-        origin_meshClass_lines = inspect.getsourcelines(origin_module.Mesh)[0]
-        origin_module_text = "".join( origin_module_lines )
-        origin_meshClass_text = "".join( origin_meshClass_lines )
-        
-        exec( "import %s" % dynamic_module_name )
-        dynanmic_module = locals()[ dynamic_module_name ]
-        dynanmic_meshClass = dynanmic_module.Mesh
-    
-        new_meshClass_lines = copy.copy(origin_meshClass_lines)
-        # remove end of class 'pass'
-        if new_meshClass_lines[-1].find("pass") > 0:
-            new_meshClass_lines.pop()
-            
-        dynanmic_meshClass_methods = [x for x, y in dynanmic_meshClass.__dict__.items() if type(y) == FunctionType]
-        for method in dynanmic_meshClass_methods:
-            exec( "method_lines = inspect.getsourcelines(dynanmic_module.Mesh.%s)[0]"  % method)
-            new_meshClass_lines+=locals()['method_lines']
-            pass
-        new_meshClass_text = "".join( new_meshClass_lines )            
-
-        f = open( output_file, "w" )
-        
-        f.write( origin_module_text.replace( origin_meshClass_text, new_meshClass_text) )
-        f.close()        
-    except Exception as e:
-        print(e)
-        pass
-    pass
-
-
-if __name__ == "__main__":
-    import optparse
-    parser = optparse.OptionParser(usage="%prog [options] modulename")
-    h  = "Output file (smeshBuilder.py by default)"
-    parser.add_option("-o", "--output", dest="output",
-                      action="store", default="smeshBuilder.py", metavar="file",
-                      help=h)
-
-    (options, args) = parser.parse_args()
-
-    if len( args ) < 1: sys.exit("Module name is not specified")
-    main( args[0], options.output )
-    pass
diff --git a/doc/salome/gui/SMESH/static/switchers.js.in b/doc/salome/gui/SMESH/static/switchers.js.in
deleted file mode 100644 (file)
index 8595b5c..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-(function() {
-  'use strict';
-
-  // Parses versions in URL segments like:
-
-  var all_languages = {
-      'en': 'English',
-      'fr': 'French',
-  };
-
-  function build_language_select(current_language) {
-    var buf = ['<select>'];
-
-    $.each(all_languages, function(language, title) {
-      if (language == current_language)
-        buf.push('<option value="' + language + '" selected="selected">' +
-                 all_languages[current_language] + '</option>');
-      else
-        buf.push('<option value="' + language + '">' + title + '</option>');
-    });
-    buf.push('</select>');
-    return buf.join('');
-  }
-
-  function on_language_switch() {
-    var selected_language = $(this).children('option:selected').attr('value') + '/';
-    var url = window.location.href;
-
-    var current_language = language_segment_from_url(url);
-    var current_suffix = "";
-    if (current_language != "") {
-      current_suffix = "_";
-    } else {
-       current_language = "/";
-    }
-
-    var selected_suffix = "_";
-    if (selected_language == 'en/') { // Special 'default' case for english.
-      selected_language = '';
-      selected_suffix = "/";
-    }
-
-    var new_url = url.replace('/gui/SMESH' + current_suffix + current_language,
-                              '/gui/SMESH' + selected_suffix + selected_language);
-    if (new_url != url) {
-      window.location.href = new_url;
-    }
-  }
-
-  // Returns the path segment of the language as a string, like 'fr/'
-  // or '' if not found.
-  function language_segment_from_url(url) {
-    var language_regexp = '\/gui/SMESH_([a-z]{2}(?:-[a-z]{2})?/)';
-    var match = url.match(language_regexp);
-    if (match !== null)
-        return match[1];
-    return '';
-  }
-
-  $(document).ready(function() {
-    if(@BUILD_LANGUAGE_SWITCHER@) {
-       var release = DOCUMENTATION_OPTIONS.VERSION;
-       var language_segment = language_segment_from_url(window.location.href);
-       var current_language = language_segment.replace(/\/+$/g, '') || 'English';
-
-       var language_select = build_language_select(current_language);
-
-       $('.language_switcher_placeholder').html(language_select);
-       $('.language_switcher_placeholder select').bind('change', on_language_switch);
-    }
-  });
-})();
diff --git a/doc/salome/gui/SMESH/templates/layout.html b/doc/salome/gui/SMESH/templates/layout.html
deleted file mode 100644 (file)
index 6bc3f85..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-{% extends "!layout.html" %}
-
-{% block rootrellink %}
-  <span class="language_switcher_placeholder">{{ language or 'English' }}</span>
-  {{ super() }}
-{% endblock %}
-
-{% block extrahead %}
-<script type="text/javascript" src="{{ pathto('_static/switchers.js', 1) }}"></script>
-{{ super() }}
-{% endblock %}
-
-{%- block sidebarlogo %}
-{{ super() }}
-{%-
-include "searchbox.html"
-%}
-<p/>
-{%- endblock %}
-{%- block sidebarsearch %}
-{%- endblock %}
-
-{%- block footer %}
- <div class="footer">
-         Copyright &copy; 2007-2021  CEA/DEN, EDF R&amp;D, OPEN CASCADE
-         <br>
-         Copyright &copy; 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&amp;D, LEG, PRINCIPIA R&amp;D, BUREAU VERITAS.
- </div>
- {{ super() }}
-{%- endblock %}
diff --git a/doc/salome/tui/CMakeLists.txt b/doc/salome/tui/CMakeLists.txt
deleted file mode 100644 (file)
index 4d12f3f..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2007-2021  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
-#
-
-SALOME_CONFIGURE_FILE(doxyfile.in doxyfile)
-SALOME_CONFIGURE_FILE(static/header.html.in static/header.html)
-
-ADD_CUSTOM_TARGET(dev_docs ${DOXYGEN_EXECUTABLE})
-
-INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/SMESH
-        OPTIONAL
-        DESTINATION ${SALOME_INSTALL_DOC}/tui
-        PATTERN "*.md5" EXCLUDE
-        PATTERN "*.map" EXCLUDE)
-
-SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES SMESH)
diff --git a/doc/salome/tui/doxyfile.in b/doc/salome/tui/doxyfile.in
deleted file mode 100644 (file)
index e123d5b..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME           = "SALOME Mesh Module Developer"
-PROJECT_NUMBER         = 
-OUTPUT_DIRECTORY       = SMESH
-CREATE_SUBDIRS         = NO
-OUTPUT_LANGUAGE        = English
-USE_WINDOWS_ENCODING   = NO
-BRIEF_MEMBER_DESC      = YES
-REPEAT_BRIEF           = YES
-ABBREVIATE_BRIEF       = 
-ALWAYS_DETAILED_SEC    = YES
-INLINE_INHERITED_MEMB  = YES
-FULL_PATH_NAMES        = YES
-STRIP_FROM_PATH        = @PROJECT_SOURCE_DIR@ @PROJECT_BINARY_DIR@
-STRIP_FROM_INC_PATH    = 
-SHORT_NAMES            = NO
-JAVADOC_AUTOBRIEF      = YES
-QT_AUTOBRIEF           = YES
-MULTILINE_CPP_IS_BRIEF = NO
-DETAILS_AT_TOP         = NO
-INHERIT_DOCS           = YES
-SEPARATE_MEMBER_PAGES  = NO
-TAB_SIZE               = 5
-ALIASES                = 
-OPTIMIZE_OUTPUT_FOR_C  = YES
-OPTIMIZE_OUTPUT_JAVA   = YES
-BUILTIN_STL_SUPPORT    = @DOXYGEN_SUPPORT_STL@
-DISTRIBUTE_GROUP_DOC   = NO
-SUBGROUPING            = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-EXTRACT_ALL            = YES
-EXTRACT_PRIVATE        = YES
-EXTRACT_STATIC         = YES
-EXTRACT_LOCAL_CLASSES  = YES
-EXTRACT_LOCAL_METHODS  = YES
-HIDE_UNDOC_MEMBERS     = NO
-HIDE_UNDOC_CLASSES     = NO
-HIDE_FRIEND_COMPOUNDS  = NO
-HIDE_IN_BODY_DOCS      = NO
-INTERNAL_DOCS          = YES
-CASE_SENSE_NAMES       = YES
-HIDE_SCOPE_NAMES       = NO
-SHOW_INCLUDE_FILES     = YES
-INLINE_INFO            = YES
-SORT_MEMBER_DOCS       = YES
-SORT_BRIEF_DOCS        = NO
-SORT_BY_SCOPE_NAME     = NO
-GENERATE_TODOLIST      = YES
-GENERATE_TESTLIST      = YES
-GENERATE_BUGLIST       = YES
-GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS       = 
-MAX_INITIALIZER_LINES  = 25
-SHOW_USED_FILES        = NO
-SHOW_DIRECTORIES       = NO
-FILE_VERSION_FILTER    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET                  = NO
-WARNINGS               = YES
-WARN_IF_UNDOCUMENTED   = YES
-WARN_IF_DOC_ERROR      = YES
-WARN_NO_PARAMDOC       = NO
-WARN_FORMAT            = "$file:$line: $text"
-WARN_LOGFILE           = log.txt
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT                  = @PROJECT_SOURCE_DIR@/src \
-                        @PROJECT_SOURCE_DIR@/bin \
-                        @PROJECT_SOURCE_DIR@/idl \
-                        @PROJECT_SOURCE_DIR@/bin \
-                        @CMAKE_CURRENT_SOURCE_DIR@/input
-FILE_PATTERNS          = *.idl *.hxx *.cxx *.h *.c *.hh *.cc @DOXYGEN_PYTHON_EXTENSION@ *.doc
-RECURSIVE              = YES
-EXCLUDE                = 
-EXCLUDE_SYMLINKS       = NO
-EXCLUDE_PATTERNS       = 
-EXAMPLE_PATH           = 
-EXAMPLE_PATTERNS       = 
-EXAMPLE_RECURSIVE      = NO
-IMAGE_PATH             = @CMAKE_CURRENT_SOURCE_DIR@/images
-INPUT_FILTER           = 
-FILTER_PATTERNS        = 
-FILTER_SOURCE_FILES    = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER         = NO
-INLINE_SOURCES         = NO
-STRIP_CODE_COMMENTS    = YES
-REFERENCED_BY_RELATION = YES
-REFERENCES_RELATION    = YES
-#USE_HTAGS              = NO
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX     = YES
-COLS_IN_ALPHA_INDEX    = 2
-IGNORE_PREFIX          = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML          = YES
-HTML_OUTPUT            = .
-HTML_FILE_EXTENSION    = .html
-HTML_HEADER            = @CMAKE_CURRENT_BINARY_DIR@/static/header.html
-HTML_FOOTER            = @CMAKE_CURRENT_SOURCE_DIR@/static/footer.html
-HTML_EXTRA_STYLESHEET  = @CMAKE_CURRENT_SOURCE_DIR@/static/salome_extra.css
-HTML_EXTRA_FILES       = @CMAKE_CURRENT_SOURCE_DIR@/images/head.png
-HTML_ALIGN_MEMBERS     = YES
-GENERATE_HTMLHELP      = NO
-CHM_FILE               = 
-HHC_LOCATION           = 
-GENERATE_CHI           = NO
-BINARY_TOC             = NO
-TOC_EXPAND             = NO
-DISABLE_INDEX          = NO
-ENUM_VALUES_PER_LINE   = 4
-GENERATE_TREEVIEW      = YES
-TREEVIEW_WIDTH         = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX         = NO
-LATEX_OUTPUT           = latex
-LATEX_CMD_NAME         = latex
-MAKEINDEX_CMD_NAME     = makeindex
-COMPACT_LATEX          = NO
-PAPER_TYPE             = a4wide
-EXTRA_PACKAGES         = 
-LATEX_HEADER           = 
-PDF_HYPERLINKS         = NO
-USE_PDFLATEX           = NO
-LATEX_BATCHMODE        = NO
-LATEX_HIDE_INDICES     = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF           = NO
-RTF_OUTPUT             = rtf
-COMPACT_RTF            = NO
-RTF_HYPERLINKS         = NO
-RTF_STYLESHEET_FILE    = 
-RTF_EXTENSIONS_FILE    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN           = NO
-MAN_OUTPUT             = man
-MAN_EXTENSION          = .3
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML           = NO
-XML_OUTPUT             = xml
-XML_SCHEMA             = 
-XML_DTD                = 
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD       = NO
-PERLMOD_LATEX          = NO
-PERLMOD_PRETTY         = YES
-PERLMOD_MAKEVAR_PREFIX = 
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING   = YES
-MACRO_EXPANSION        = YES
-EXPAND_ONLY_PREDEF     = NO
-SEARCH_INCLUDES        = YES
-INCLUDE_PATH           = 
-INCLUDE_FILE_PATTERNS  = 
-PREDEFINED             = 
-EXPAND_AS_DEFINED      = 
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references   
-#---------------------------------------------------------------------------
-TAGFILES               = 
-GENERATE_TAGFILE       = 
-ALLEXTERNALS           = NO
-EXTERNAL_GROUPS        = YES
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-CLASS_DIAGRAMS         = YES
-HIDE_UNDOC_RELATIONS   = NO
-HAVE_DOT               = YES
-CLASS_GRAPH            = YES
-COLLABORATION_GRAPH    = NO
-GROUP_GRAPHS           = YES
-UML_LOOK               = NO
-TEMPLATE_RELATIONS     = YES
-INCLUDE_GRAPH          = YES
-INCLUDED_BY_GRAPH      = YES
-CALL_GRAPH             = NO
-GRAPHICAL_HIERARCHY    = YES
-DIRECTORY_GRAPH        = YES
-DOT_IMAGE_FORMAT       = png
-DOT_FONTNAME           = Arial
-DOT_PATH               = 
-DOTFILE_DIRS           = 
-MAX_DOT_GRAPH_WIDTH    = 1024
-MAX_DOT_GRAPH_HEIGHT   = 1024
-MAX_DOT_GRAPH_DEPTH    = 1000
-DOT_TRANSPARENT        = NO
-DOT_MULTI_TARGETS      = NO
-GENERATE_LEGEND        = YES
-DOT_CLEANUP            = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
-#---------------------------------------------------------------------------
-SEARCHENGINE           = NO
-
-
diff --git a/doc/salome/tui/images/application.gif b/doc/salome/tui/images/application.gif
deleted file mode 100644 (file)
index 0b05d5c..0000000
Binary files a/doc/salome/tui/images/application.gif and /dev/null differ
diff --git a/doc/salome/tui/images/head.png b/doc/salome/tui/images/head.png
deleted file mode 100755 (executable)
index 307d9ef..0000000
Binary files a/doc/salome/tui/images/head.png and /dev/null differ
diff --git a/doc/salome/tui/images/logocorp.gif b/doc/salome/tui/images/logocorp.gif
deleted file mode 100755 (executable)
index 7697e08..0000000
Binary files a/doc/salome/tui/images/logocorp.gif and /dev/null differ
diff --git a/doc/salome/tui/images/smeshscreen.png b/doc/salome/tui/images/smeshscreen.png
deleted file mode 100755 (executable)
index 638870e..0000000
Binary files a/doc/salome/tui/images/smeshscreen.png and /dev/null differ
diff --git a/doc/salome/tui/input/index.doc b/doc/salome/tui/input/index.doc
deleted file mode 100644 (file)
index 7464ac6..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*! \mainpage
-
-\image html smeshscreen.png
-
-To browse the \b SALOME Mesh module Developer Documentation, follow the links below or use navigation menu at the top of the page:
-<ul>
-<!-- <li> <a href="modules.html">Modules</a> - documentation of TUI functionality.</li> -->
-<li> <a href="namespaces.html">Name Spaces</a> - list of TUI packages and scripts.</li>
-<li> <a href="annotated.html">Data Structures</a> - list of all data structures and classes with brief descriptions.</li>
-<li> <a href="files.html">Files</a> - list of all files with brief descriptions.</li>
-</ul>
-
-*/
\ No newline at end of file
diff --git a/doc/salome/tui/static/footer.html b/doc/salome/tui/static/footer.html
deleted file mode 100644 (file)
index ee4bfe9..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<!-- HTML footer for doxygen 1.8.3.1-->
-<!--BEGIN GENERATE_TREEVIEW-->
-<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
-  <ul>
-    $navpath
-    <li class="footer">
-      Copyright &copy; 2007-2021  CEA/DEN, EDF R&amp;D, OPEN CASCADE<br>
-      Copyright &copy; 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&amp;D, LEG, PRINCIPIA R&amp;D, BUREAU VERITAS<br>
-    </li>
-  </ul>
-</div>
-<!--END GENERATE_TREEVIEW-->
-</body>
-</html>
diff --git a/doc/salome/tui/static/header.html.in b/doc/salome/tui/static/header.html.in
deleted file mode 100644 (file)
index 45674df..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!-- HTML header for doxygen 1.8.3.1-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen $doxygenversion"/>
-<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
-<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
-<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="$relpath^jquery.js"></script>
-<script type="text/javascript" src="$relpath^dynsections.js"></script>
-$treeview
-$search
-$mathjax
-<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
-$extrastylesheet
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-
-<div id="titlearea"><div align="right"><div class="version">Version: @SALOMESMESH_VERSION@</div></div></div>
-<!-- end header part -->
diff --git a/doc/salome/tui/static/salome_extra.css b/doc/salome/tui/static/salome_extra.css
deleted file mode 100644 (file)
index 3e8b838..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/* The extra CSS for doxygen 1.8.3.1 */
-
-#titlearea {
-        background-image:url('head.png');
-        background-color: #175783;
-        border: 1px solid;
-        height: 80px;
-        background-repeat: no-repeat;
-       padding: 0px;
-       margin: 0px;
-       width: 99.9%;
-       border-bottom: 1px solid #5373B4;
-}
-
-div.version {
-       border:1px solid #0000FF;
-        color: #CCCCCC;
-       font-family: Arial, Helvetica, sans-serif;
-       font-size: 9pt;
-       text-align: center;
-       width:100px;
-       -moz-border-radius: 8px;
-       margin: 5px;
-}
-
-.navpath li.footer {
-       line-height:15px;
-       text-align: right;
-}
\ No newline at end of file
diff --git a/doc/tui/CMakeLists.txt b/doc/tui/CMakeLists.txt
new file mode 100644 (file)
index 0000000..73e9be0
--- /dev/null
@@ -0,0 +1,34 @@
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+SALOME_CONFIGURE_FILE(doxyfile.in doxyfile)
+SALOME_CONFIGURE_FILE(static/header.html.in static/header.html)
+
+ADD_CUSTOM_TARGET(dev_docs ${DOXYGEN_EXECUTABLE})
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/SMESH
+        OPTIONAL
+        DESTINATION ${SALOME_INSTALL_DOC}/tui
+        PATTERN "*.md5" EXCLUDE
+        PATTERN "*.map" EXCLUDE)
+
+SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES SMESH)
diff --git a/doc/tui/doxyfile.in b/doc/tui/doxyfile.in
new file mode 100644 (file)
index 0000000..18b0894
--- /dev/null
@@ -0,0 +1,246 @@
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = "SALOME Mesh Module Developer"
+PROJECT_NUMBER         =
+OUTPUT_DIRECTORY       = SMESH
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+USE_WINDOWS_ENCODING   = NO
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       =
+ALWAYS_DETAILED_SEC    = YES
+INLINE_INHERITED_MEMB  = YES
+FULL_PATH_NAMES        = YES
+STRIP_FROM_PATH        = @PROJECT_SOURCE_DIR@ @PROJECT_BINARY_DIR@
+STRIP_FROM_INC_PATH    =
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = YES
+QT_AUTOBRIEF           = YES
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = NO
+TAB_SIZE               = 5
+ALIASES                =
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = YES
+BUILTIN_STL_SUPPORT    = @DOXYGEN_SUPPORT_STL@
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = YES
+EXTRACT_LOCAL_METHODS  = YES
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = YES
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = YES
+GENERATE_TESTLIST      = YES
+GENERATE_BUGLIST       = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS       =
+MAX_INITIALIZER_LINES  = 25
+SHOW_USED_FILES        = NO
+SHOW_DIRECTORIES       = NO
+FILE_VERSION_FILTER    =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = log.txt
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = @PROJECT_SOURCE_DIR@/src \
+                        @PROJECT_SOURCE_DIR@/bin \
+                        @PROJECT_SOURCE_DIR@/idl \
+                        @PROJECT_SOURCE_DIR@/bin \
+                        @CMAKE_CURRENT_SOURCE_DIR@/input
+FILE_PATTERNS          = *.idl *.hxx *.cxx *.h *.c *.hh *.cc @DOXYGEN_PYTHON_EXTENSION@ *.doc
+RECURSIVE              = YES
+EXCLUDE                =
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       =
+EXAMPLE_PATH           =
+EXAMPLE_PATTERNS       =
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = @CMAKE_CURRENT_SOURCE_DIR@/images
+INPUT_FILTER           =
+FILTER_PATTERNS        =
+FILTER_SOURCE_FILES    = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION    = YES
+#USE_HTAGS              = NO
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = YES
+COLS_IN_ALPHA_INDEX    = 2
+IGNORE_PREFIX          =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = YES
+HTML_OUTPUT            = .
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = @CMAKE_CURRENT_BINARY_DIR@/static/header.html
+HTML_FOOTER            = @CMAKE_CURRENT_SOURCE_DIR@/static/footer.html
+HTML_EXTRA_STYLESHEET  = @CMAKE_CURRENT_SOURCE_DIR@/static/salome_extra.css
+HTML_EXTRA_FILES       = @CMAKE_CURRENT_SOURCE_DIR@/images/head.png
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = NO
+CHM_FILE               =
+HHC_LOCATION           =
+GENERATE_CHI           = NO
+BINARY_TOC             = NO
+TOC_EXPAND             = NO
+DISABLE_INDEX          = NO
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = YES
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         =
+LATEX_HEADER           =
+PDF_HYPERLINKS         = NO
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    =
+RTF_EXTENSIONS_FILE    =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_SCHEMA             =
+XML_DTD                =
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           =
+INCLUDE_FILE_PATTERNS  =
+PREDEFINED             =
+EXPAND_AS_DEFINED      =
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+TAGFILES               =
+GENERATE_TAGFILE       =
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+HIDE_UNDOC_RELATIONS   = NO
+HAVE_DOT               = YES
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = NO
+GROUP_GRAPHS           = YES
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = YES
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = png
+DOT_FONTNAME           = Arial
+DOT_PATH               =
+DOTFILE_DIRS           =
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1024
+MAX_DOT_GRAPH_DEPTH    = 1000
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE           = YES
+
+
diff --git a/doc/tui/images/application.gif b/doc/tui/images/application.gif
new file mode 100644 (file)
index 0000000..0b05d5c
Binary files /dev/null and b/doc/tui/images/application.gif differ
diff --git a/doc/tui/images/head.png b/doc/tui/images/head.png
new file mode 100755 (executable)
index 0000000..307d9ef
Binary files /dev/null and b/doc/tui/images/head.png differ
diff --git a/doc/tui/images/logocorp.gif b/doc/tui/images/logocorp.gif
new file mode 100755 (executable)
index 0000000..7697e08
Binary files /dev/null and b/doc/tui/images/logocorp.gif differ
diff --git a/doc/tui/images/smeshscreen.png b/doc/tui/images/smeshscreen.png
new file mode 100755 (executable)
index 0000000..638870e
Binary files /dev/null and b/doc/tui/images/smeshscreen.png differ
diff --git a/doc/tui/input/index.doc b/doc/tui/input/index.doc
new file mode 100644 (file)
index 0000000..7464ac6
--- /dev/null
@@ -0,0 +1,13 @@
+/*! \mainpage
+
+\image html smeshscreen.png
+
+To browse the \b SALOME Mesh module Developer Documentation, follow the links below or use navigation menu at the top of the page:
+<ul>
+<!-- <li> <a href="modules.html">Modules</a> - documentation of TUI functionality.</li> -->
+<li> <a href="namespaces.html">Name Spaces</a> - list of TUI packages and scripts.</li>
+<li> <a href="annotated.html">Data Structures</a> - list of all data structures and classes with brief descriptions.</li>
+<li> <a href="files.html">Files</a> - list of all files with brief descriptions.</li>
+</ul>
+
+*/
\ No newline at end of file
diff --git a/doc/tui/static/footer.html b/doc/tui/static/footer.html
new file mode 100644 (file)
index 0000000..c75cc75
--- /dev/null
@@ -0,0 +1,14 @@
+<!-- HTML footer for doxygen 1.8.3.1-->
+<!--BEGIN GENERATE_TREEVIEW-->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    $navpath
+    <li class="footer">
+      Copyright &copy; 2007-2024  CEA, EDF, OPEN CASCADE<br>
+      Copyright &copy; 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&amp;D, LEG, PRINCIPIA R&amp;D, BUREAU VERITAS<br>
+    </li>
+  </ul>
+</div>
+<!--END GENERATE_TREEVIEW-->
+</body>
+</html>
diff --git a/doc/tui/static/header.html.in b/doc/tui/static/header.html.in
new file mode 100644 (file)
index 0000000..45674df
--- /dev/null
@@ -0,0 +1,23 @@
+<!-- HTML header for doxygen 1.8.3.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen $doxygenversion"/>
+<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
+<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
+<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="$relpath^jquery.js"></script>
+<script type="text/javascript" src="$relpath^dynsections.js"></script>
+$treeview
+$search
+$mathjax
+<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
+$extrastylesheet
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+
+<div id="titlearea"><div align="right"><div class="version">Version: @SALOMESMESH_VERSION@</div></div></div>
+<!-- end header part -->
diff --git a/doc/tui/static/salome_extra.css b/doc/tui/static/salome_extra.css
new file mode 100644 (file)
index 0000000..3e8b838
--- /dev/null
@@ -0,0 +1,29 @@
+/* The extra CSS for doxygen 1.8.3.1 */
+
+#titlearea {
+        background-image:url('head.png');
+        background-color: #175783;
+        border: 1px solid;
+        height: 80px;
+        background-repeat: no-repeat;
+       padding: 0px;
+       margin: 0px;
+       width: 99.9%;
+       border-bottom: 1px solid #5373B4;
+}
+
+div.version {
+       border:1px solid #0000FF;
+        color: #CCCCCC;
+       font-family: Arial, Helvetica, sans-serif;
+       font-size: 9pt;
+       text-align: center;
+       width:100px;
+       -moz-border-radius: 8px;
+       margin: 5px;
+}
+
+.navpath li.footer {
+       line-height:15px;
+       text-align: right;
+}
\ No newline at end of file
index bd2569e2a12a8d5262ea0b3b81be1ddd18ddea5a..5e97c628665698e5a24202339373088b29de08dd 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -40,6 +40,7 @@ SET(SalomeIDLSMESH_IDLSOURCES
   SMESH_Measurements.idl
   ${CMAKE_CURRENT_BINARY_DIR}/SMESH_smIdType.idl
   MG_ADAPT.idl
+  SMESH_Homard.idl
 )
 
 SET(_idl_include_dirs
index d6da9656567d60ea93ce2b625f4e776539743d29..a3039521e60acfd86af4b508322a812f64b8abce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2020-2021  CEA/DEN, EDF R&D
+// Copyright (C) 2020-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5dbdc5fbdd4b66e809144da48b8dfa7a47c5a39e..eb46c3c788bbe3b947224249daf112153538f72e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #ifndef _SMESH_BASICHYPOTHESIS_IDL_
 #define _SMESH_BASICHYPOTHESIS_IDL_
 
+#include "GEOM_Gen.idl"
+
 #include "SALOME_Exception.idl"
 #include "SMESH_Hypothesis.idl"
 #include "SMESH_Mesh.idl"
-
 /*!
  * StdMeshers: interfaces to standard hypotheses and algorithms
  */
@@ -933,7 +934,7 @@ module StdMeshers
    * interface of "Viscous Layers 2D" hypothesis.
    * This hypothesis specifies parameters of layers of quadrilaterals to build
    * near mesh boundary. This hypothesis can be used by several 2D algorithms:
-   * Mefisto, Quadrangle (mapping), NETGEN, BLSURF
+   * Quadrangle (mapping), NETGEN, BLSURF
    */
   interface StdMeshers_ViscousLayers2D : SMESH::SMESH_Hypothesis
   {
@@ -1061,6 +1062,15 @@ module StdMeshers
      */
     void SetToCreateFaces(in boolean toCreate);
     boolean GetToCreateFaces();
+    
+    /*!
+     * Enable creation of mesh faces.
+     */
+    void SetToUseQuanta(in boolean toUseQuanta);
+    boolean GetToUseQuanta();
+
+    void SetQuanta(in double quanta) raises (SALOME::SALOME_Exception);
+    double GetQuanta();
 
     /*!
      * Return axes at which a number of generated hexahedra is maximal
@@ -1129,13 +1139,6 @@ module StdMeshers
   {
   };
 
-  /*!
-   * StdMeshers_MEFISTO_2D: interface of "Triangle (Mefisto)" algorithm
-   */
-  interface StdMeshers_MEFISTO_2D : SMESH::SMESH_2D_Algo
-  {
-  };
-
   /*!
    * StdMeshers_Quadrangle_2D: interface of "Quadrangle (Mapping)" algorithm
    */
@@ -1254,6 +1257,39 @@ module StdMeshers
   interface StdMeshers_Cartesian_3D : SMESH::SMESH_3D_Algo
   {
   };
+  /*!
+   * StdMeshers_Cartesian_3D: interface of "ViscousLayerBuilder" algorithm
+   */
+  interface StdMeshers_ViscousLayerBuilder : SMESH::SMESH_2D_Algo
+  {
+    /*!
+     * Set faces to exclude from the definition of face to shrink
+     */
+    void SetIgnoreFaces(in SMESH::long_array faceIDs) raises (SALOME::SALOME_Exception);
+    // SMESH::long_array GetIgnoreFaces();
+
+    /*!
+     * Set faces either to exclude from treatment or to make the offset geometry on.
+     */
+    void SetFaces(in SMESH::long_array faceIDs,
+                  in boolean           toIgnore) raises (SALOME::SALOME_Exception);
+    // SMESH::long_array GetFaces();
+    // boolean           GetIsToIgnoreFaces();
+
+    void SetTotalThickness(in double thickness) raises (SALOME::SALOME_Exception);
+    void SetNumberLayers(in short numberOfLayers ) raises (SALOME::SALOME_Exception);
+    void SetStretchFactor(in double strechFactor ) raises (SALOME::SALOME_Exception);
+    void SetMethod( in VLExtrusionMethod how ) raises (SALOME::SALOME_Exception);
+    void SetGroupName(in string name) raises (SALOME::SALOME_Exception);
+
+    GEOM::GEOM_Object GetShrinkGeometry( in SMESH::SMESH_Mesh finalMesh, in GEOM::GEOM_Object theObject ) raises (SALOME::SALOME_Exception);
+
+    /*!
+     * Build the prismatic layer from the shrink mesh
+     */
+    boolean AddLayers( in SMESH::SMESH_Mesh sourceMesh, in SMESH::SMESH_Mesh finalMesh, in GEOM::GEOM_Object theObject ) raises (SALOME::SALOME_Exception);
+
+  };
 
 };
 
index daca385c8614b8367cf51dfab9f16c45ba36f218..05cfa6dc43a1c3e7f6d193944f233abdff67f5d1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -42,12 +42,14 @@ module SMESH
   {
     FT_AspectRatio,
     FT_AspectRatio3D,
-    FT_Warping,   
+    FT_Warping,
+    FT_Warping3D,
     FT_MinimumAngle,
     FT_Taper,       
     FT_Skew,         
     FT_Area,          
-    FT_Volume3D,          
+    FT_Volume3D,   
+    FT_ScaledJacobian,       
     FT_MaxElementLength2D,
     FT_MaxElementLength3D,
     FT_FreeBorders,
@@ -137,6 +139,7 @@ module SMESH
   interface AspectRatio     : NumericalFunctor{};
   interface AspectRatio3D   : NumericalFunctor{};
   interface Warping         : NumericalFunctor{};
+  interface Warping3D       : NumericalFunctor {};
   interface Taper           : NumericalFunctor{};
   interface Skew            : NumericalFunctor{};
   interface Area            : NumericalFunctor{};
@@ -170,6 +173,7 @@ module SMESH
   };
   interface BallDiameter    : NumericalFunctor{};
   interface NodeConnectivityNumber : NumericalFunctor{};
+  interface ScaledJacobian  : NumericalFunctor{};
   
 
   /*!
@@ -584,6 +588,7 @@ module SMESH
     AspectRatio        CreateAspectRatio();
     AspectRatio3D      CreateAspectRatio3D();
     Warping            CreateWarping();
+    Warping3D          CreateWarping3D();
     Taper              CreateTaper();
     Skew               CreateSkew();
     Area               CreateArea();
@@ -598,6 +603,7 @@ module SMESH
     MultiConnection2D  CreateMultiConnection2D();
     BallDiameter       CreateBallDiameter();
     NodeConnectivityNumber CreateNodeConnectivityNumber();
+    ScaledJacobian     CreateScaledJacobian();
     /*!
      *  Create logical functors ( predicates )
      */
index cfdca30f171af653b2d1ee3975b847e4af099b23..2368039752816c4ebbe2d57a4462a5d598b936c9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include "SMESH_Hypothesis.idl"
 #include "SMESH_smIdType.idl"
 
+module SMESHHOMARD
+{
+  interface HOMARD_Gen;
+};
+
 module SMESH
 {
   typedef sequence<SALOMEDS::SObject> sobject_list;
@@ -154,12 +159,12 @@ module SMESH
       Update the study
      */
     void UpdateStudy();
-    
+
     /*!
       Set enable publishing in the study
      */
     void SetEnablePublish( in boolean theIsEnablePublish );
-    
+
     /*!
       Get enable publishing in the study
      */
@@ -237,6 +242,16 @@ module SMESH
     SMESH_Mesh CreateMesh( in GEOM::GEOM_Object theObject )
       raises ( SALOME::SALOME_Exception );
 
+    /*!
+     * Create a Mesh object, given a geometry shape.
+     * Mesh is created empty (no points, no elements).
+     * Shape is explored via GEOM_Client to create local copies.
+     * of TopoDS_Shapes and bind CORBA references of shape & subshapes
+     * with TopoDS_Shapes
+     * The mesh is a parallel one
+     */
+    SMESH_ParallelMesh CreateParallelMesh( in GEOM::GEOM_Object theObject )
+      raises ( SALOME::SALOME_Exception );
     /*!
      * Create an empty mesh object
      */
@@ -279,6 +294,16 @@ module SMESH
                                     in boolean              theMakeRequiredGroups,
                                     out SMESH::ComputeError theError)
       raises ( SALOME::SALOME_Exception );
+    /*!
+     * Create a dual mesh of a Tetrahedron mesh
+     *  \param mesh - TetraHedron mesh to create dual from
+     *  \param meshName - a name of the new mesh
+     *  \param adaptToShape - if True project boundary point on shape
+     */
+    SMESH_Mesh CreateDualMesh(in SMESH_IDSource mesh,
+                              in string         meshName,
+                              in boolean        adaptToShape)
+      raises ( SALOME::SALOME_Exception );
 
     /*!
      * Create a mesh by copying a part of another mesh
@@ -300,7 +325,7 @@ module SMESH
      *  \param newGeometry - a new geometry
      *  \param meshName - a name of the new mesh
      *  \param toCopyGroups - to create groups in the new mesh
-     *  \param toReuseHypotheses - if True, existing hypothesis will be used by the new mesh, 
+     *  \param toReuseHypotheses - if True, existing hypothesis will be used by the new mesh,
      *         otherwise new hypotheses with the same parameters will be created for the new mesh.
      *  \param toCopyElements - to copy mesh elements of same sub-shapes of the two geometries
      *  \param newMesh - return a new mesh
@@ -521,10 +546,10 @@ module SMESH
      */
     long_array GetInsideSphere( in SMESH_IDSource theSource,
                                in ElementType    theElemType,
-                               in double theX, 
-                               in double theY, 
+                               in double theX,
+                               in double theY,
                                in double theZ,
-                               in double theR );    
+                               in double theR );
 
     /*!
      * Return indices of elements, which are located inside the box
@@ -539,12 +564,12 @@ module SMESH
      */
     long_array GetInsideBox( in SMESH_IDSource theSource,
                             in ElementType    theElemType,
-                            in double theX1, 
-                            in double theY1, 
+                            in double theX1,
+                            in double theY1,
                             in double theZ1,
                             in double theX2,
                             in double theY2,
-                            in double theZ2);    
+                            in double theZ2);
     /*!
      * Return indices of elements, which are located inside the box
      *  \param theSource - mesh, sub-mesh or group
@@ -560,14 +585,14 @@ module SMESH
      */
     long_array GetInsideCylinder( in SMESH_IDSource theSource,
                                  in ElementType    theElemType,
-                                 in double theX, 
-                                 in double theY, 
+                                 in double theX,
+                                 in double theY,
                                  in double theZ,
                                  in double theDX,
                                  in double theDY,
                                  in double theDZ,
                                  in double theH,
-                                 in double theR );    
+                                 in double theR );
     /*!
      * Return indices of elements, which are located inside the geometry
      *  \param theSource - mesh, sub-mesh or group
@@ -578,10 +603,12 @@ module SMESH
     long_array GetInside( in SMESH_IDSource theSource,
                          in ElementType    theElemType,
                          in GEOM::GEOM_Object theGeom,
-                         in double theTolerance );    
+                         in double theTolerance );
 
     MG_ADAPT CreateMG_ADAPT();
-    MG_ADAPT_OBJECT Adaptation(in string adaptType);
+    SMESHHOMARD::HOMARD_Gen CreateHOMARD_ADAPT() raises ( SALOME::SALOME_Exception );
+    //MG_ADAPT_OBJECT Adaptation(in string adaptType);
+    SALOME::GenericObj Adaptation(in string adaptType) raises ( SALOME::SALOME_Exception );
     MG_ADAPT CreateAdaptationHypothesis();
   };
 
index 8730c1a78be8b040c24a904e678b0000f3af0221..7be7c98177a89bc46dc62d17b185c45324ecb456 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/idl/SMESH_Homard.idl b/idl/SMESH_Homard.idl
new file mode 100644 (file)
index 0000000..c4e8c6d
--- /dev/null
@@ -0,0 +1,183 @@
+// Copyright (C) 2011-2024  CEA, EDF
+//
+// 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
+//
+
+#ifndef _SMESH_HOMARD_IDL
+#define _SMESH_HOMARD_IDL
+
+#include "SMESH_Mesh.idl"
+
+#include "SALOME_Exception.idl"
+#include "SALOMEDS.idl"
+
+module SMESHHOMARD
+{
+  typedef sequence<double> double_array;
+  typedef sequence<double> extrema;
+  typedef sequence<string> ListGroupType;
+  typedef sequence<string> ListBoundaryGroupType;
+  typedef sequence<string> listeBoundarys;
+
+  interface HOMARD_Boundary : SALOME::GenericObj
+  {
+    // Generalites
+    void     SetName(in string Name)         raises (SALOME::SALOME_Exception);
+    string   GetName()                       raises (SALOME::SALOME_Exception);
+
+    // Caracteristiques
+    void     SetType (in long Type)          raises (SALOME::SALOME_Exception);
+    long     GetType()                       raises (SALOME::SALOME_Exception);
+
+    void     SetDataFile(in string DataFile) raises (SALOME::SALOME_Exception);
+    string   GetDataFile()                   raises (SALOME::SALOME_Exception);
+
+    void     SetMeshName(in string MeshName) raises (SALOME::SALOME_Exception);
+    string   GetMeshName()                   raises (SALOME::SALOME_Exception);
+
+    void     SetCylinder (in double Xcentre, in double Ycentre, in double Zcentre,
+                          in double Xaxe, in double Yaxe, in double Zaxe, in double rayon)
+      raises (SALOME::SALOME_Exception);
+
+    void     SetSphere (in double Xcentre, in double Ycentre, in double Zcentre, in double rayon)
+      raises (SALOME::SALOME_Exception);
+
+    void     SetConeR (in double Xcentre1, in double Ycentre1, in double Zcentre1,
+                       in double Rayon1,
+                       in double Xcentre2, in double Ycentre2, in double Zcentre2,
+                       in double Rayon2) raises (SALOME::SALOME_Exception);
+
+    void     SetConeA(in double Xaxe, in double Yaxe, in double Zaxe, in double Angle,
+                      in double Xcentre, in double Ycentre, in double ZCentre)
+      raises (SALOME::SALOME_Exception);
+
+    void     SetTorus (in double Xcentre, in double Ycentre, in double Zcentre,
+                       in double Xaxe, in double Yaxe, in double Zaxe,
+                       in double rayonRev, in double rayonPri)
+      raises (SALOME::SALOME_Exception);
+
+    SMESHHOMARD::double_array GetCoords() raises (SALOME::SALOME_Exception);
+
+    void     SetLimit (in double Xincr, in double Yincr, in double Zincr)
+      raises (SALOME::SALOME_Exception);
+    SMESHHOMARD::double_array GetLimit() raises (SALOME::SALOME_Exception);
+
+    void       AddGroup(in string LeGroupe)                raises (SALOME::SALOME_Exception);
+    void       SetGroups(in ListGroupType ListGroup)       raises (SALOME::SALOME_Exception);
+    ListGroupType GetGroups()                              raises (SALOME::SALOME_Exception);
+
+    string   GetDumpPython()                 raises (SALOME::SALOME_Exception);
+  };
+
+  interface HOMARD_Cas : SALOME::GenericObj
+  {
+    void     SetDirName(in string NomDir) raises (SALOME::SALOME_Exception);
+    string   GetDirName()                 raises (SALOME::SALOME_Exception);
+
+    void     SetBoundingBox(in extrema LesExtremes)        raises (SALOME::SALOME_Exception);
+    extrema  GetBoundingBox()                              raises (SALOME::SALOME_Exception);
+
+    void     AddGroup(in string Group)                     raises (SALOME::SALOME_Exception);
+    void     SetGroups(in ListGroupType ListGroup)         raises (SALOME::SALOME_Exception);
+    ListGroupType GetGroups()                              raises (SALOME::SALOME_Exception);
+
+    void     AddBoundary(in string BoundaryName) raises (SALOME::SALOME_Exception);
+    void     AddBoundaryGroup(in string BoundaryName,
+                              in string Group) raises (SALOME::SALOME_Exception);
+    ListBoundaryGroupType GetBoundaryGroup() raises (SALOME::SALOME_Exception);
+    void SupprBoundaryGroup() raises (SALOME::SALOME_Exception);
+
+    string GetDumpPython() raises (SALOME::SALOME_Exception);
+  };
+
+  interface HOMARD_Gen : SALOME::GenericObj
+  {
+    // Create boundaries
+    HOMARD_Boundary CreateBoundaryCAO (in string BoundaryName, in string FileName)
+      raises(SALOME::SALOME_Exception);
+    HOMARD_Boundary CreateBoundaryDi (in string BoundaryName, in string MeshName,
+                                      in string FileName)
+      raises(SALOME::SALOME_Exception);
+    HOMARD_Boundary CreateBoundaryCylinder (in string BoundaryName,
+                                            in double Xcentre, in double Ycentre, in double Zcentre,
+                                            in double Xaxis, in double Yaxis, in double Zaxis,
+                                            in double Radius)
+      raises (SALOME::SALOME_Exception);
+    HOMARD_Boundary CreateBoundarySphere (in string BoundaryName,
+                                          in double Xcentre, in double Ycentre, in double Zcentre,
+                                          in double Radius)
+      raises(SALOME::SALOME_Exception);
+    HOMARD_Boundary CreateBoundaryConeR (in string BoundaryName,
+                                         in double Xcentre1, in double Ycentre1, in double Zcentre1,
+                                         in double Radius1,
+                                         in double Xcentre2, in double Ycentre2, in double Zcentre2,
+                                         in double Radius2)
+      raises(SALOME::SALOME_Exception);
+    HOMARD_Boundary CreateBoundaryConeA (in string BoundaryName,
+                                         in double Xaxis, in double Yaxis, in double Zaxis,
+                                         in double Angle,
+                                         in double Xcentre, in double Ycentre, in double Zcentre)
+      raises(SALOME::SALOME_Exception);
+    HOMARD_Boundary CreateBoundaryTorus (in string BoundaryName,
+                                         in double Xcentre, in double Ycentre, in double Zcentre,
+                                         in double Xaxis, in double Yaxis, in double Zaxis,
+                                         in double RadiusRev, in double RadiusPri)
+      raises (SALOME::SALOME_Exception);
+
+    // Set mesh (SMESH_Mesh object or MED file) and working directory
+    HOMARD_Cas CreateCaseOnMesh(in string MeshName,
+                                in SMESH::SMESH_Mesh smeshMesh,
+                                in string theWorkingDir) raises(SALOME::SALOME_Exception);
+    HOMARD_Cas CreateCase(in string MeshName,
+                          in string FileName,
+                          in string theWorkingDir) raises(SALOME::SALOME_Exception);
+
+    // Associate boundaries to groups
+    void AddBoundary(in string BoundaryName) raises (SALOME::SALOME_Exception);
+    void AddBoundaryGroup(in string BoundaryName,
+                          in string Group) raises (SALOME::SALOME_Exception);
+
+    // Information
+    HOMARD_Boundary  GetBoundary(in string BoundaryName) raises (SALOME::SALOME_Exception);
+    HOMARD_Cas       GetCase() raises (SALOME::SALOME_Exception);
+    listeBoundarys   GetAllBoundarysName()  raises (SALOME::SALOME_Exception);
+
+    //  Preferences
+    void SetConfType(in long ConfType) raises (SALOME::SALOME_Exception);
+    void SetKeepMedOUT (in boolean theKeepMedOUT);
+    void SetPublishMeshOUT (in boolean thePublishMeshOUT);
+    void SetMeshNameOUT (in string theMeshName) raises (SALOME::SALOME_Exception);
+    void SetMeshFileOUT (in string theFileName) raises (SALOME::SALOME_Exception);
+
+    void SetVerboseLevel (in long theLevel);
+    void SetKeepWorkingFiles (in boolean theKeepWorkingFiles);
+    void SetLogInFile (in boolean theLogInFile);
+    void SetLogFile (in string theFileName) raises (SALOME::SALOME_Exception);
+    void SetRemoveLogOnSuccess (in boolean theRemoveLogOnSuccess);
+
+    // Computation
+    long Compute() raises (SALOME::SALOME_Exception);
+
+    // Clean data
+    void InvalideBoundary (in string BoundaryName) raises (SALOME::SALOME_Exception);
+    long DeleteBoundary (in string BoundaryName) raises (SALOME::SALOME_Exception);
+    void DeleteCase() raises (SALOME::SALOME_Exception);
+  };
+
+}; // module SMESHHOMARD
+
+#endif
index 80f76bf97e06c2cb3ee4e7d13c3d1458e2aa47bc..c493f9dd4e531d512ea2a7cdb53df266e4d24623 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e6969766ec291a199fe17f5cecfc1bbb866742b0..192aa342bb2aaacf9efd75419efdb1cab375c224 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 49e8f97cb4872235945b58c6391312cb3d1a6e6c..fabf323432f2c69feac607a4d34e25e88411fae8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -156,7 +156,7 @@ module SMESH
     Geom_BALL,
     Geom_LAST
   };
-  
+
   /*!
    * ElementOrder points out entities of what order are requested
    */
@@ -238,7 +238,7 @@ module SMESH
     DRS_FAIL             // general failure (exception etc.)
   };
 
-  /*! 
+  /*!
    * \brief A structure containing information about MED file
    */
   struct MedFileInfo
@@ -263,7 +263,7 @@ module SMESH
    */
   const long EXTRUSION_FLAG_BOUNDARY = 1;
   const long EXTRUSION_FLAG_SEW = 2;
-  
+
   /*!
    * Structure used in mesh edit preview data (MeshPreviewStruct)
    */
@@ -344,7 +344,7 @@ module SMESH
 
     /*!
      * Get geom shape to mesh. A result should not be nil. Use HasShapeToMesh()
-     * to know if a returned shape 
+     * to know if a returned shape
      */
     GEOM::GEOM_Object GetShapeToMesh()
       raises (SALOME::SALOME_Exception);
@@ -436,6 +436,12 @@ module SMESH
     void RemoveGroupWithContents( in SMESH_GroupBase aGroup )
       raises (SALOME::SALOME_Exception);
 
+    /*!
+    *   Return True if all the submeshes are computed
+    */
+    boolean IsComputedOK()
+      raises (SALOME::SALOME_Exception);
+
     /*!
      *  Get the list of groups existing in the mesh
      */
@@ -457,7 +463,7 @@ module SMESH
                              in SMESH_GroupBase aGroup2,
                              in string          name )
       raises (SALOME::SALOME_Exception);
-      
+
     /*!
      * Union of list of groups
      * New group is created. All mesh elements that are
@@ -476,7 +482,7 @@ module SMESH
                                  in SMESH_GroupBase aGroup2,
                                  in string          name )
       raises (SALOME::SALOME_Exception);
-      
+
     /*!
      *  Intersection of list of groups
      *  New group is created. All mesh elements that are
@@ -495,7 +501,7 @@ module SMESH
                            in SMESH_GroupBase aToolGroup,
                            in string          name )
       raises (SALOME::SALOME_Exception);
-      
+
     /*!
      *  Cut of lists of groups
      *  New group is created. All mesh elements that are present in
@@ -505,14 +511,14 @@ module SMESH
                                  in ListOfGroups aToolGroups,
                                  in string       name)
       raises (SALOME::SALOME_Exception);
-      
+
     /*!
      *  Create a group of entities basing on nodes of other groups.
      *  \param [in] aListOfGroups - list of either groups, sub-meshes or filters.
      *  \param [in] anElemType - a type of elements to include to the new group.
      *  \param [in] name - a name of the new group.
      *  \param [in] nbCommonNodes - criterion of inclusion of an element to the new group.
-     *  \param [in] underlyingOnly - if \c True, an element is included to the 
+     *  \param [in] underlyingOnly - if \c True, an element is included to the
      *         new group provided that it is based on nodes of an element of
      *         \a aListOfGroups
      *  \return SMESH_Group - the created group
@@ -679,12 +685,12 @@ module SMESH
      *           med files in 4.0.0 (default format) or 3.2.1 or 3.3.1 formats.
      *           The minor must be between 0 and the current minor version of MED file library.
      *           If version is equal to -1, the version is not changed (default).
-     * - autoDimension : if @c True, a space dimension for export is defined by mesh 
+     * - autoDimension : if @c True, a space dimension for export is defined by mesh
      *                 configuration; for example a planar mesh lying on XOY plane
-     *                 will be exported as a mesh in 2D space. 
+     *                 will be exported as a mesh in 2D space.
      *                 If @a autoDimension == @c False, the space dimension is 3.
      * - fields : list of GEOM fields defined on the shape to mesh.
-     * - geomAssocFields : each character of this string means a need to export a 
+     * - geomAssocFields : each character of this string means a need to export a
      *         corresponding field; correspondence between fields and characters is following:
      *         - 'v' stands for _vertices_ field;
      *         - 'e' stands for _edges_ field;
@@ -724,7 +730,7 @@ module SMESH
      *  encoded in 10*major+minor (for instance, code for med 3.2.1 is 32)
      */
     long_array GetMEDVersionsCompatibleForAppend();
-    
+
     /*!
      * Export Mesh to different Formats
      * (UNV supported version is I-DEAS 10)
@@ -735,17 +741,17 @@ module SMESH
                     in boolean renumer ) raises (SALOME::SALOME_Exception);
     void ExportSTL( in string  file,
                     in boolean isascii ) raises (SALOME::SALOME_Exception);
-    void ExportCGNS( in SMESH_IDSource meshPart, 
+    void ExportCGNS( in SMESH_IDSource meshPart,
                      in string         file,
                      in boolean        overwrite,
                      in boolean        groupElemsByType) raises (SALOME::SALOME_Exception);
-    void ExportGMF( in SMESH_IDSource  meshPart, 
+    void ExportGMF( in SMESH_IDSource  meshPart,
                     in string          file,
                     in boolean         withRequiredGroups) raises (SALOME::SALOME_Exception);
-    void ExportPartToDAT( in SMESH_IDSource meshPart, 
+    void ExportPartToDAT( in SMESH_IDSource meshPart,
                           in string         file,
                           in boolean        renumer ) raises (SALOME::SALOME_Exception);
-    void ExportPartToUNV( in SMESH_IDSource meshPart, 
+    void ExportPartToUNV( in SMESH_IDSource meshPart,
                           in string         file,
                           in boolean        renumer ) raises (SALOME::SALOME_Exception);
     void ExportPartToSTL( in SMESH_IDSource meshPart,
@@ -857,10 +863,10 @@ module SMESH
 
     smIdType_array GetNodesId()
       raises (SALOME::SALOME_Exception);
-    
+
     /*!
      * Returns type of mesh element
-     */    
+     */
     ElementType GetElementType( in smIdType id, in boolean iselem )
       raises (SALOME::SALOME_Exception);
 
@@ -875,7 +881,7 @@ module SMESH
 
     smIdType_array GetSubMeshNodesId(in long ShapeID, in boolean all )
       raises (SALOME::SALOME_Exception);
-    
+
     ElementType GetSubMeshElementType(in long ShapeID)
       raises (SALOME::SALOME_Exception);
 
@@ -899,7 +905,6 @@ module SMESH
      */
     boolean SetMeshOrder(in submesh_array_array theSubMeshArray);
 
-
     /*!
      * Get mesh description
      */
@@ -939,7 +944,7 @@ module SMESH
     long GetShapeID(in smIdType id);
 
     /*!
-     * For given element returns ID of result shape after 
+     * For given element returns ID of result shape after
      * ::FindShape() from SMESH_MeshEditor
      * If there is not element for given ID - returns -1
      */
@@ -1072,7 +1077,7 @@ module SMESH
      */
     smIdType_array GetElementsByType( in ElementType theType )
       raises (SALOME::SALOME_Exception);
-    
+
     /*!
      * Returns type of mesh element (same as SMESH_Mesh::GetElementType() )
      */
@@ -1103,6 +1108,40 @@ module SMESH
     long GetId();
   };
 
+  interface SMESH_SequentialMesh:SMESH_Mesh{};
+  interface SMESH_ParallelMesh:SMESH_Mesh{
+
+    // Parallism method
+    long GetParallelismMethod();
+    void SetParallelismMethod(in long aMethod);
+
+    long GetParallelismDimension();
+    void SetParallelismDimension(in long aDim);
+
+    // Parameters for MutliThreading
+    long GetNbThreads();
+    void SetNbThreads(in long nbThreads);
+
+    // Parameters for MultiNode
+    string GetResource();
+    void SetResource(in string aResource);
+
+    long GetNbProc();
+    void SetNbProc(in long nbProc);
+
+    long GetNbProcPerNode();
+    void SetNbProcPerNode(in long nbProcPerNode);
+
+    long GetNbNode();
+    void SetNbNode(in long nbNode);
+
+    string GetWcKey();
+    void SetWcKey(in string wcKey);
+
+    string GetWalltime();
+    void SetWalltime(in string walltime);
+  };
+
 };
 
 #endif
index 69f159dc224b0782663a42c4cb2b125446765a28..44366e66de28f8338098435d53bea6d20d085618 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -159,6 +159,13 @@ module SMESH
      */
     smIdType RemoveOrphanNodes() raises (SALOME::SALOME_Exception);
 
+    /*!
+     * \brief Remove a mesh node and change surrounding faces to close a hole
+     * \param nodeID node identifier
+     * \throw if mesh is not a triangle one
+     */
+    void RemoveNodeWithReconnection(in smIdType nodeID) raises (SALOME::SALOME_Exception);
+
     /*!
      * \brief Add a new node.
      * \param x X coordinate of new node
@@ -291,18 +298,44 @@ module SMESH
       raises (SALOME::SALOME_Exception);
 
 
+    /*!
+     * \brief Change node location
+     */
     boolean MoveNode(in smIdType NodeID, in double x, in double y, in double z)
       raises (SALOME::SALOME_Exception);
 
+    /*!
+     * \brief Swap a diagonal of a quadrangle formed by two adjacent triangles
+     */
     boolean InverseDiag(in smIdType NodeID1, in smIdType NodeID2) 
       raises (SALOME::SALOME_Exception);
-
+    /*!
+     * \brief Delete a diagonal of a quadrangle formed by two adjacent triangles
+     *        so that a new quadrangle appears in place of the triangles
+     */
     boolean DeleteDiag(in smIdType NodeID1, in smIdType NodeID2) 
       raises (SALOME::SALOME_Exception);
+    /*!
+     * \brief Replace each triangle bound by Node1-Node2 segment with
+     *        two triangles by connecting a node made on the segment with a node opposite
+     *        to the segment.
+     */
+    void AddNodeOnSegment(in smIdType Node1, in smIdType Node2, in double position)
+      raises (SALOME::SALOME_Exception);
+    /*!
+     * \brief Split a face into triangles by adding a new node onto the face
+     *        and connecting the new node with face nodes
+     */
+    void AddNodeOnFace(in smIdType triangle, in double x, in double y, in double z);
 
+    /*!
+     * \brief Change orientation of cells
+     */
     boolean Reorient(in smIdType_array IDsOfElements) 
       raises (SALOME::SALOME_Exception);
-
+    /*!
+     * \brief Change orientation of cells
+     */
     boolean ReorientObject(in SMESH_IDSource theObject) 
       raises (SALOME::SALOME_Exception);
     /*!
@@ -408,8 +441,8 @@ module SMESH
      *  \return 1 if 1-3 diagonal is better, 2 if 2-4
      *          diagonal is better, 0 if error occurs.
      */
-    long BestSplit (in long            IDOfQuad,
-                    in NumericalFunctor Criterion) raises (SALOME::SALOME_Exception);
+    short BestSplit (in smIdType         IDOfQuad,
+                     in NumericalFunctor Criterion) raises (SALOME::SALOME_Exception);
 
     /*!
      * \brief Split volumic elements into tetrahedrons
@@ -1258,7 +1291,9 @@ module SMESH
      *  \param meshName - a name of a new mesh, which is a copy of the initial 
      *    mesh + created boundary elements; "" means not to create the new mesh
      *  \param toCopyAll - if true, the whole initial mesh will be copied into
-     *    the new mesh else only boundary elements will be copied into the new mesh
+     *    the new mesh else only the new elements will be copied into the new mesh
+     *  \param toCreateAllElements - if true, all the boundary elements of the mesh 
+     *    are computed. 
      *  \param groups - optional groups of 2D elements to make boundary around
      *  \param mesh - returns the mesh where elements were added to
      *  \param group - returns the created group, if any
@@ -1268,6 +1303,7 @@ module SMESH
                               in string          groupName,
                               in string          meshName,
                               in boolean         toCopyAll,
+                              in boolean         toCreateAllElements,
                               in ListOfIDSources groups,
                               out SMESH_Mesh     mesh,
                               out SMESH_Group    group) raises (SALOME::SALOME_Exception);
index edd29d0ef89d38ac73d33f0c8770fcc934307639..c77a96b3cc28f26236f44f0528878491ba4b07bc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5627249d702d43005b71ca41cfcd0f7ef36045db..c999b34bb520b26c419a9eb15f6e070cb72de9a1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7e0d620128926cfdcdec43980bf307d31177db49..a968755b65cffd01950e53232d5ea6cb50e526fe 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 #
 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -23,6 +23,7 @@
 SET(SMESH_RESOURCES_FILES
   ModuleMesh.png
   adapt_mg_adapt.png
+  adapt_homard.png
   advanced_mesh_info.png
   bare_border_face.png
   bare_border_volume.png
@@ -33,10 +34,11 @@ SET(SMESH_RESOURCES_FILES
   mesh_0D_elem.png
   mesh_0D_on_all_nodes.png
   mesh_2d_from_3d.png
+  mesh_2d_from_3d_elements.png
   mesh_add.png
   mesh_add_sub.png
   mesh_algo_hexa.png
-  mesh_algo_mefisto.png
+  mesh_algo_tri.png
   mesh_algo_quad.png
   mesh_algo_regular.png
   mesh_algo_tetra.png
@@ -59,6 +61,7 @@ SET(SMESH_RESOURCES_FILES
   mesh_conv_to_quad.png
   mesh_cutGroups.png
   mesh_cutquad.png
+  mesh_create_dual_mesh.png
   mesh_deflection.png
   mesh_deleteGroups.png
   mesh_diagonal.png
@@ -121,6 +124,9 @@ SET(SMESH_RESOURCES_FILES
   mesh_minus.png
   mesh_move_node.png
   mesh_move_without_node.png
+  mesh_move_node_interactive.png
+  mesh_split_diag_interactive.png
+  mesh_split_face_interactive.png
   mesh_multi_edges.png
   mesh_multi_edges_2d.png
   mesh_node_to_point.png
@@ -157,11 +163,13 @@ SET(SMESH_RESOURCES_FILES
   mesh_rem_element.png
   mesh_rem_node.png
   mesh_rem_orphan_nodes.png
+  mesh_rem_node_recon.png
   mesh_remove.png
   mesh_renumbering_elements.png
   mesh_renumbering_nodes.png
   mesh_revolution.png
   mesh_rotation.png
+  mesh_scaled_jacobian.png
   mesh_sew_bordertoside.png
   mesh_sew_conform_freeborders.png
   mesh_sew_freeborders.png
@@ -182,7 +190,7 @@ SET(SMESH_RESOURCES_FILES
   mesh_tree_algo_0D.png
   mesh_tree_algo_existing_2D.png
   mesh_tree_algo_hexa.png
-  mesh_tree_algo_mefisto.png
+  mesh_tree_algo_tri.png
   mesh_tree_algo_polygon.png
   mesh_tree_algo_prism.png
   mesh_tree_algo_projection_2d.png
index a6190a6755f4944584511fff6e936bda3cd5fc28..6c359bd51c3a3ec21d748000ef96ba3e70161599 100644 (file)
  <section name="windows_visibility">
   <parameter name="SMESH" value="#00 #00 #00 #00 #3A #FF #FF #FF #FF #00 #00 #00 #02 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #02 #44 #FC #02 #00 #00 #00 #01 #FC #00 #00 #00 #7B #00 #00 #02 #44 #00 #00 #00 #97 #01 #00 #00 #14 #FA #00 #00 #00 #00 #01 #00 #00 #00 #02 #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #30 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #46 #00 #FF #FF #FF #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #33 #01 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #00 #C0 #00 #FF #FF #FF #00 #00 #00 #03 #00 #00 #05 #40 #00 #00 #00 #53 #FC #01 #00 #00 #00 #01 #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #31 #01 #00 #00 #00 #00 #00 #00 #05 #40 #00 #00 #00 #46 #00 #FF #FF #FF #00 #00 #04 #38 #00 #00 #02 #44 #00 #00 #00 #04 #00 #00 #00 #04 #00 #00 #00 #08 #00 #00 #00 #08 #FC #00 #00 #00 #05 #00 #00 #00 #02 #00 #00 #00 #02 #00 #00 #00 #10 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #0E #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #CE #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #07 #00 #00 #00 #2A #00 #4E #00 #6F #00 #64 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #02 #01 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2A #00 #45 #00 #64 #00 #67 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #02 #4D #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2A #00 #46 #00 #61 #00 #63 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #02 #F6 #00 #00 #02 #4A #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #18 #00 #4D #00 #65 #00 #73 #00 #68 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #00 #00 #26 #00 #41 #00 #64 #00 #64 #00 #20 #00 #45 #00 #6C #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #3C #00 #41 #00 #64 #00 #64 #00 #20 #00 #4E #00 #6F #00 #6E #00 #20 #00 #4C #00 #69 #00 #6E #00 #65 #00 #61 #00 #72 #00 #20 #00 #45 #00 #6C #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #10 #00 #41 #00 #64 #00 #76 #00 #61 #00 #6E #00 #63 #00 #65 #00 #64 #01 #00 #00 #00 #0C #00 #42 #00 #6C #00 #6F #00 #63 #00 #6B #00 #73 #01 #00 #00 #00 #28 #00 #44 #00 #69 #00 #73 #00 #70 #00 #6C #00 #61 #00 #79 #00 #20 #00 #4D #00 #6F #00 #64 #00 #65 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2A #00 #45 #00 #64 #00 #67 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #2A #00 #46 #00 #61 #00 #63 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #12 #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #61 #00 #73 #00 #69 #00 #63 #00 #00 #00 #00 #2A #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #6F #00 #6F #00 #6C #00 #65 #00 #61 #00 #6E #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #00 #00 #00 #00 #12 #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #75 #00 #69 #00 #6C #00 #64 #00 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #47 #00 #65 #00 #6E #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #00 #00 #00 #26 #00 #47 #00 #45 #00 #4F #00 #4D #00 #49 #00 #6D #00 #70 #00 #6F #00 #72 #00 #74 #00 #45 #00 #78 #00 #70 #00 #6F #00 #72 #00 #74 #00 #58 #00 #41 #00 #4F #01 #00 #00 #00 #18 #00 #47 #00 #45 #00 #4F #00 #4D #00 #4D #00 #65 #00 #61 #00 #73 #00 #75 #00 #72 #00 #65 #00 #73 #00 #00 #00 #00 #20 #00 #47 #00 #45 #00 #4F #00 #4D #00 #4D #00 #6F #00 #64 #00 #69 #00 #66 #00 #69 #00 #63 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #00 #00 #00 #00 #18 #00 #47 #00 #45 #00 #4F #00 #4D #00 #50 #00 #69 #00 #63 #00 #74 #00 #75 #00 #72 #00 #65 #00 #73 #00 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #50 #00 #72 #00 #69 #00 #6D #00 #69 #00 #74 #00 #69 #00 #76 #00 #65 #00 #73 #00 #00 #00 #00 #24 #00 #47 #00 #45 #00 #4F #00 #4D #00 #54 #00 #72 #00 #61 #00 #6E #00 #73 #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #00 #00 #00 #1A #00 #47 #00 #72 #00 #6F #00 #75 #00 #70 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #26 #00 #49 #00 #6E #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #28 #00 #4D #00 #65 #00 #61 #00 #73 #00 #75 #00 #72 #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #18 #00 #4D #00 #65 #00 #73 #00 #68 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #28 #00 #4D #00 #6F #00 #64 #00 #69 #00 #66 #00 #69 #00 #63 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #0E #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #2A #00 #4E #00 #6F #00 #64 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #32 #00 #4F #00 #43 #00 #43 #00 #56 #00 #69 #00 #65 #00 #77 #00 #65 #00 #72 #00 #33 #00 #44 #00 #56 #00 #69 #00 #65 #00 #77 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #0E #00 #50 #00 #6C #00 #75 #00 #67 #00 #69 #00 #6E #00 #73 #00 #00 #00 #00 #1C #00 #50 #00 #79 #00 #74 #00 #68 #00 #6F #00 #6E #00 #20 #00 #50 #00 #6C #00 #75 #00 #67 #00 #69 #00 #6E #00 #73 #00 #00 #00 #00 #28 #00 #52 #00 #65 #00 #63 #00 #6F #00 #72 #00 #64 #00 #69 #00 #6E #00 #67 #00 #20 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #1C #00 #52 #00 #65 #00 #6D #00 #6F #00 #76 #00 #65 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #26 #00 #52 #00 #65 #00 #6E #00 #75 #00 #6D #00 #62 #00 #65 #00 #72 #00 #69 #00 #6E #00 #67 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #1A #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #20 #00 #70 #00 #6C #00 #75 #00 #67 #00 #69 #00 #6E #00 #73 #01 #00 #00 #00 #2C #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #41 #00 #64 #00 #64 #00 #45 #00 #6C #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2E #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #44 #00 #69 #00 #73 #00 #70 #00 #6C #00 #61 #00 #79 #00 #4D #00 #6F #00 #64 #00 #65 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #45 #00 #64 #00 #67 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #46 #00 #61 #00 #63 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #22 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #47 #00 #72 #00 #6F #00 #75 #00 #70 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2E #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #49 #00 #6E #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #65 #00 #61 #00 #73 #00 #75 #00 #72 #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #20 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #65 #00 #73 #00 #68 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #6F #00 #64 #00 #69 #00 #66 #00 #69 #00 #63 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4E #00 #6F #00 #64 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #24 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #52 #00 #65 #00 #6D #00 #6F #00 #76 #00 #65 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2E #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #52 #00 #65 #00 #6E #00 #75 #00 #6D #00 #62 #00 #65 #00 #72 #00 #69 #00 #6E #00 #67 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #34 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #54 #00 #72 #00 #61 #00 #6E #00 #73 #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #34 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #56 #00 #6F #00 #6C #00 #75 #00 #6D #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #1A #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #1C #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #10 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #1A #00 #54 #00 #4F #00 #4F #00 #4C #00 #5F #00 #41 #00 #44 #00 #56 #00 #41 #00 #4E #00 #43 #00 #45 #00 #44 #01 #00 #00 #00 #16 #00 #54 #00 #4F #00 #4F #00 #4C #00 #5F #00 #42 #00 #4C #00 #4F #00 #43 #00 #4B #00 #53 #01 #00 #00 #00 #2C #00 #54 #00 #72 #00 #61 #00 #6E #00 #73 #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2C #00 #56 #00 #54 #00 #4B #00 #52 #00 #65 #00 #63 #00 #6F #00 #72 #00 #64 #00 #69 #00 #6E #00 #67 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #2E #00 #56 #00 #54 #00 #4B #00 #56 #00 #69 #00 #65 #00 #77 #00 #65 #00 #72 #00 #56 #00 #69 #00 #65 #00 #77 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #1E #00 #56 #00 #69 #00 #65 #00 #77 #00 #20 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #2E #00 #56 #00 #6F #00 #6C #00 #75 #00 #6D #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #01 #00 #00 #00 #07 #00 #00 #00 #1A #00 #69 #00 #6E #00 #66 #00 #6F #00 #50 #00 #61 #00 #6E #00 #65 #00 #6C #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #18 #00 #6E #00 #6F #00 #74 #00 #65 #00 #42 #00 #6F #00 #6F #00 #6B #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #22 #00 #6F #00 #62 #00 #6A #00 #65 #00 #63 #00 #74 #00 #42 #00 #72 #00 #6F #00 #77 #00 #73 #00 #65 #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #22 #00 #70 #00 #79 #00 #74 #00 #68 #00 #6F #00 #6E #00 #43 #00 #6F #00 #6E #00 #73 #00 #6F #00 #6C #00 #65 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #30 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #31 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #33 #01"/>
  </section>
+  <section name="pythonpath">
+    <parameter name="SMESH" value="%SMESH_ROOT_DIR%/bin/salome/test/other;;%SMESH_ROOT_DIR%/share/doc/salome/examples/SMESH"/>
+ </section>
 </document>
index 8baf92e0af5eff02e15c683882642a7663bd2f9a..53899c8f37e596345fd8c4eaba2928a787d7fbd5 100644 (file)
       </python-wrap>
     </algorithm>
 
-    <algorithm type      ="@MEFISTO2D_NAME@"
-              label-id  ="Triangle: Mefisto"
-              icon-id   ="mesh_algo_mefisto.png"
-               group-id ="1"
-               priority ="40"
-               hypos     ="LengthFromEdges,MaxElementArea"
-               opt-hypos ="ViscousLayers2D"
-               input     ="EDGE"
-               output    ="TRIA"
-               dim       ="2">
-      <python-wrap>
-        <algo>MEFISTO_2D=Triangle(algo=smeshBuilder.MEFISTO)</algo>
-        <hypo>LengthFromEdges=LengthFromEdges()</hypo>
-        <hypo>MaxElementArea=MaxElementArea(SetMaxElementArea())</hypo>
-        <hypo>ViscousLayers2D=ViscousLayers2D(SetTotalThickness(),SetNumberLayers(),SetStretchFactor(),SetEdges(1),SetEdges(2),SetGroupName())</hypo>
-      </python-wrap>
-    </algorithm>
-
     <algorithm type     ="Quadrangle_2D"
                label-id ="Quadrangle: Mapping"
                icon-id  ="mesh_algo_quad.png"
                group-id         ="0"
                priority         ="20"
                hypos            ="CartesianParameters3D"
+               opt-hypos        ="ViscousLayers"
                support-submeshes="false"
                output           ="HEXA"
                need-hyp         ="true"
                dim              ="3">
       <python-wrap>
         <algo>Cartesian_3D=BodyFitted()</algo>
+        <hypo>ViscousLayers=ViscousLayers(SetTotalThickness(),SetNumberLayers(),SetStretchFactor(),SetFaces(1),SetFaces(2),SetMethod(),SetGroupName())</hypo>
       </python-wrap>
     </algorithm>
 
diff --git a/resources/adapt_homard.png b/resources/adapt_homard.png
new file mode 100644 (file)
index 0000000..95b4c13
Binary files /dev/null and b/resources/adapt_homard.png differ
index 1993f2087f86b35ee09a9f1fdb7530e0785a0ae1..bb8e80fddc87594c79e219f9940bd1d6bfee1b21 100644 (file)
Binary files a/resources/bare_border_face.png and b/resources/bare_border_face.png differ
index 3ef6e6a462c653c05e5694a08ed5ece6decf422e..58e179af6ed3511db89b259dec9d17e33d240dfb 100644 (file)
Binary files a/resources/bare_border_volume.png and b/resources/bare_border_volume.png differ
diff --git a/resources/mesh_2d_from_3d_elements.png b/resources/mesh_2d_from_3d_elements.png
new file mode 100644 (file)
index 0000000..d347d2e
Binary files /dev/null and b/resources/mesh_2d_from_3d_elements.png differ
diff --git a/resources/mesh_algo_mefisto.png b/resources/mesh_algo_mefisto.png
deleted file mode 100644 (file)
index 018cf4e..0000000
Binary files a/resources/mesh_algo_mefisto.png and /dev/null differ
diff --git a/resources/mesh_algo_tri.png b/resources/mesh_algo_tri.png
new file mode 100644 (file)
index 0000000..018cf4e
Binary files /dev/null and b/resources/mesh_algo_tri.png differ
old mode 100755 (executable)
new mode 100644 (file)
index f01bae8..27ce4b3
Binary files a/resources/mesh_bounding_box.png and b/resources/mesh_bounding_box.png differ
diff --git a/resources/mesh_create_dual_mesh.png b/resources/mesh_create_dual_mesh.png
new file mode 100644 (file)
index 0000000..d7a7be3
Binary files /dev/null and b/resources/mesh_create_dual_mesh.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 6713caf..003084e
Binary files a/resources/mesh_min_dist.png and b/resources/mesh_min_dist.png differ
diff --git a/resources/mesh_move_node_interactive.png b/resources/mesh_move_node_interactive.png
new file mode 100644 (file)
index 0000000..b219e24
Binary files /dev/null and b/resources/mesh_move_node_interactive.png differ
diff --git a/resources/mesh_rem_node_recon.png b/resources/mesh_rem_node_recon.png
new file mode 100644 (file)
index 0000000..af5fa62
Binary files /dev/null and b/resources/mesh_rem_node_recon.png differ
diff --git a/resources/mesh_scaled_jacobian.png b/resources/mesh_scaled_jacobian.png
new file mode 100644 (file)
index 0000000..e25a7fa
Binary files /dev/null and b/resources/mesh_scaled_jacobian.png differ
index 61ebe47036fe9f0e6e168a97fe16b733ba28f178..3209cc79d6e4bd727e21251c4ef55580c8523db5 100644 (file)
Binary files a/resources/mesh_show.png and b/resources/mesh_show.png differ
diff --git a/resources/mesh_split_diag_interactive.png b/resources/mesh_split_diag_interactive.png
new file mode 100644 (file)
index 0000000..7998788
Binary files /dev/null and b/resources/mesh_split_diag_interactive.png differ
diff --git a/resources/mesh_split_face_interactive.png b/resources/mesh_split_face_interactive.png
new file mode 100644 (file)
index 0000000..2afb098
Binary files /dev/null and b/resources/mesh_split_face_interactive.png differ
diff --git a/resources/mesh_tree_algo_mefisto.png b/resources/mesh_tree_algo_mefisto.png
deleted file mode 100644 (file)
index de69b87..0000000
Binary files a/resources/mesh_tree_algo_mefisto.png and /dev/null differ
diff --git a/resources/mesh_tree_algo_tri.png b/resources/mesh_tree_algo_tri.png
new file mode 100644 (file)
index 0000000..de69b87
Binary files /dev/null and b/resources/mesh_tree_algo_tri.png differ
index a19574b0bb7a019c7090cb6165e843c6ab3a99b7..dc5daa51f31c12a573e5bad0039617a55b1e1e38 100644 (file)
Binary files a/resources/mesh_tree_mesh_geom_modif.png and b/resources/mesh_tree_mesh_geom_modif.png differ
index 22b61bbed60d150c22bde0c23b1e9bd96b503cf7..c1a42ebe506e43b6b465021ac9b826a8b1a4a204 100644 (file)
Binary files a/resources/over_constrained_face.png and b/resources/over_constrained_face.png differ
index 0e2da263fc8d6a08e7d1634fd589703529a3a5b8..74ec0e296df012691dbc6500677a7f0712190760 100644 (file)
Binary files a/resources/over_constrained_volume.png and b/resources/over_constrained_volume.png differ
index f9cf53bd9beef0ea1376772f8dbbdcc9ef979f73..452582871d153345d519a32a0eac6154a7cf39e3 100644 (file)
Binary files a/resources/reorient_faces_ref_groups.png and b/resources/reorient_faces_ref_groups.png differ
index c380973153aa309143babb4a4dc105ccb0e0271a..7fb5fc413ae49b0aa9916d25012ce02e7ef25ff4 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -40,13 +40,8 @@ SET(SUBDIRS_COMMON
   StdMeshers_I
   SMESH_PY
   Tools
-  SalomeSessionless
 )
 
-IF(SALOME_SMESH_ENABLE_MEFISTO)
-  SET(SUBDIRS_MEFISTO2 MEFISTO2)
-ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
-
 ##
 # CGNS
 ##
@@ -71,7 +66,6 @@ ENDIF(SALOME_BUILD_GUI)
 
 SET(SUBDIRS
   ${SUBDIRS_COMMON}
-  ${SUBDIRS_MEFISTO2}
   ${SUBDIRS_CGNS}
   ${SUBDIRS_GUI}
 )
index b90e2b23b091dbac7cbdced0300249158f093154..edf0955ba1769b1fd62a86be656279a958d62d4b 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 1adabb5c6f0dba5560eacd473848fa413d1affaf..57855777584e688899d0d94b68d9c5e5086ef901 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -1423,21 +1423,7 @@ bool Warping::IsApplicable( const SMDS_MeshElement* element ) const
 
 double Warping::GetValue( const TSequenceOfXYZ& P )
 {
-  if ( P.size() != 4 )
-    return 0;
-
-  gp_XYZ G = ( P( 1 ) + P( 2 ) + P( 3 ) + P( 4 ) ) / 4.;
-
-  double A1 = ComputeA( P( 1 ), P( 2 ), P( 3 ), G );
-  double A2 = ComputeA( P( 2 ), P( 3 ), P( 4 ), G );
-  double A3 = ComputeA( P( 3 ), P( 4 ), P( 1 ), G );
-  double A4 = ComputeA( P( 4 ), P( 1 ), P( 2 ), G );
-
-  double val = Max( Max( A1, A2 ), Max( A3, A4 ) );
-
-  const double eps = 0.1; // val is in degrees
-
-  return val < eps ? 0. : val;
+  return ComputeValue(P);
 }
 
 double Warping::ComputeA( const gp_XYZ& thePnt1,
@@ -1464,6 +1450,25 @@ double Warping::ComputeA( const gp_XYZ& thePnt1,
   return asin( fabs( H / L ) ) * 180. / M_PI;
 }
 
+double Warping::ComputeValue(const TSequenceOfXYZ& thePoints) const
+{
+  if (thePoints.size() != 4)
+    return 0;
+
+  gp_XYZ G = (thePoints(1) + thePoints(2) + thePoints(3) + thePoints(4)) / 4.;
+
+  double A1 = ComputeA(thePoints(1), thePoints(2), thePoints(3), G);
+  double A2 = ComputeA(thePoints(2), thePoints(3), thePoints(4), G);
+  double A3 = ComputeA(thePoints(3), thePoints(4), thePoints(1), G);
+  double A4 = ComputeA(thePoints(4), thePoints(1), thePoints(2), G);
+
+  double val = Max(Max(A1, A2), Max(A3, A4));
+
+  const double eps = 0.1; // val is in degrees
+
+  return val < eps ? 0. : val;
+}
+
 double Warping::GetBadRate( double Value, int /*nbNodes*/ ) const
 {
   // the warp is in the range [0.0,PI/2]
@@ -1478,6 +1483,93 @@ SMDSAbs_ElementType Warping::GetType() const
 }
 
 
+//================================================================================
+/*
+  Class       : Warping3D
+  Description : Functor for calculating warping
+*/
+//================================================================================
+
+bool Warping3D::IsApplicable(const SMDS_MeshElement* element) const
+{
+  return NumericalFunctor::IsApplicable(element);//&& element->NbNodes() == 4;
+}
+
+double Warping3D::GetValue(long theId)
+{
+  double aVal = 0;
+  myCurrElement = myMesh->FindElement(theId);
+  if (myCurrElement)
+  {
+    WValues aValues;
+    ProcessVolumeELement(aValues);
+    for (const auto& aValue: aValues)
+    {
+      aVal = Max(aVal, aValue.myWarp);
+    }
+  }
+  return aVal;
+}
+
+double Warping3D::GetValue(const TSequenceOfXYZ& P)
+{
+  return ComputeValue(P);
+}
+
+SMDSAbs_ElementType Warping3D::GetType() const
+{
+  return SMDSAbs_Volume;
+}
+
+bool Warping3D::Value::operator<(const Warping3D::Value& x) const
+{
+  if (myPntIds.size() != x.myPntIds.size())
+    return myPntIds.size() < x.myPntIds.size();
+
+  for (int anInd = 0; anInd < myPntIds.size(); ++anInd)
+    if (myPntIds[anInd] != x.myPntIds[anInd])
+      return myPntIds[anInd] != x.myPntIds[anInd];
+
+  return false;
+}
+
+// Compute value on each face of volume
+void Warping3D::ProcessVolumeELement(WValues& theValues)
+{
+  SMDS_VolumeTool aVTool(myCurrElement);
+  double aCoord[3];
+  for (int aFaceID = 0; aFaceID < aVTool.NbFaces(); ++aFaceID)
+  {
+    TSequenceOfXYZ aPoints;
+    std::set<const SMDS_MeshNode*> aNodes;
+    std::vector<long> aNodeIds;
+    const SMDS_MeshNode** aNodesPtr = aVTool.GetFaceNodes(aFaceID);
+
+    if (aNodesPtr)
+    {
+      for (int i = 0; i < aVTool.NbFaceNodes(aFaceID); ++i)
+      {
+        aNodesPtr[i]->GetXYZ(aCoord);
+        aPoints.push_back(gp_XYZ{ aCoord[0], aCoord[1], aCoord[2] });
+        aNodeIds.push_back(aNodesPtr[i]->GetID());
+      }
+      double aWarp = GetValue(aPoints);
+      Value aVal{ aWarp, aNodeIds };
+
+      theValues.push_back(aVal);
+    }
+  }
+}
+
+void Warping3D::GetValues(WValues& theValues)
+{
+  for (SMDS_VolumeIteratorPtr anIter = myMesh->volumesIterator(); anIter->more(); )
+  {
+    myCurrElement = anIter->next();
+    ProcessVolumeELement(theValues);
+  }
+}
+
 //================================================================================
 /*
   Class       : Taper
@@ -2351,6 +2443,70 @@ SMDSAbs_ElementType NodeConnectivityNumber::GetType() const
   return SMDSAbs_Node;
 }
 
+//================================================================================
+/*
+  Class       : ScaledJacobian
+  Description : Functor returning the ScaledJacobian for volumetric elements
+*/
+//================================================================================
+
+double ScaledJacobian::GetValue( long theElementId )
+{  
+  if ( theElementId && myMesh ) {
+    SMDS_VolumeTool aVolumeTool;
+    if ( aVolumeTool.Set( myMesh->FindElement( theElementId )))
+      return aVolumeTool.GetScaledJacobian();
+  }
+  return 0;
+
+  /* 
+  //VTK version not used because lack of implementation for HEXAGONAL_PRISM. 
+  //Several mesh quality measures implemented in vtkMeshQuality can be accessed left here as reference
+  double aVal = 0;
+  myCurrElement = myMesh->FindElement( theElementId );
+  if ( myCurrElement )
+  {
+    VTKCellType cellType      = myCurrElement->GetVtkType();
+    vtkUnstructuredGrid* grid = const_cast<SMDS_Mesh*>( myMesh )->GetGrid();
+    vtkCell* avtkCell         = grid->GetCell( myCurrElement->GetVtkID() );
+    switch ( cellType )
+    {
+      case VTK_QUADRATIC_TETRA:      
+      case VTK_TETRA:
+        aVal = Round( vtkMeshQuality::TetScaledJacobian( avtkCell ));
+        break;
+      case VTK_QUADRATIC_HEXAHEDRON:
+      case VTK_HEXAHEDRON:
+        aVal = Round( vtkMeshQuality::HexScaledJacobian( avtkCell ));
+        break;
+      case VTK_QUADRATIC_WEDGE:
+      case VTK_WEDGE: //Pentahedron
+        aVal = Round( vtkMeshQuality::WedgeScaledJacobian( avtkCell ));
+        break;
+      case VTK_QUADRATIC_PYRAMID:
+      case VTK_PYRAMID:
+        aVal = Round( vtkMeshQuality::PyramidScaledJacobian( avtkCell ));
+        break;
+      case VTK_HEXAGONAL_PRISM:
+      case VTK_POLYHEDRON:
+      default:
+        break;
+    }          
+  }
+  return aVal;
+  */
+}
+
+double ScaledJacobian::GetBadRate( double Value, int /*nbNodes*/ ) const
+{
+  return Value;
+}
+
+SMDSAbs_ElementType ScaledJacobian::GetType() const
+{
+  return SMDSAbs_Volume;
+}
+
 /*
                             PREDICATES
 */
@@ -2469,16 +2625,22 @@ bool BareBorderFace::IsSatisfy(long theElementId )
 
 bool OverConstrainedVolume::IsSatisfy(long theElementId )
 {
-  // An element is over-constrained if it has N-1 free borders where
-  // N is the number of edges/faces for a 2D/3D element.
-  SMDS_VolumeTool  myTool;
-  if ( myTool.Set( myMesh->FindElement(theElementId)))
+  // An element is over-constrained if all its nodes are on the boundary.
+  // A node is on the boundary if it is connected to one or more faces.
+  SMDS_VolumeTool myTool;
+  if (myTool.Set(myMesh->FindElement(theElementId)))
   {
-    int nbSharedFaces = 0;
-    for ( int iF = 0; iF < myTool.NbFaces(); ++iF )
-      if ( !myTool.IsFreeFace( iF ) && ++nbSharedFaces > 1 )
-        break;
-    return ( nbSharedFaces == 1 );
+    auto nodes = myTool.GetNodes();
+
+    for (int i = 0; i < myTool.NbNodes(); ++i)
+    {
+      auto node = nodes[i];
+      if (node->NbInverseElements(SMDSAbs_Face) == 0)
+      {
+        return false;
+      }
+    }
+    return true;
   }
   return false;
 }
@@ -2491,29 +2653,19 @@ bool OverConstrainedVolume::IsSatisfy(long theElementId )
 
 bool OverConstrainedFace::IsSatisfy(long theElementId )
 {
-  // An element is over-constrained if it has N-1 free borders where
-  // N is the number of edges/faces for a 2D/3D element.
-  if ( const SMDS_MeshElement* face = myMesh->FindElement(theElementId))
-    if ( face->GetType() == SMDSAbs_Face )
+  // An element is over-constrained if all its nodes are on the boundary.
+  // A node is on the boundary if it is connected to one or more faces.
+  if (const SMDS_MeshElement *face = myMesh->FindElement(theElementId))
+    if (face->GetType() == SMDSAbs_Face)
     {
-      int nbSharedBorders = 0;
       int nbN = face->NbCornerNodes();
-      for ( int i = 0; i < nbN; ++i )
+      for (int i = 0; i < nbN; ++i)
       {
-        // check if a link is shared by another face
-        const SMDS_MeshNode* n1 = face->GetNode( i );
-        const SMDS_MeshNode* n2 = face->GetNode( (i+1)%nbN );
-        SMDS_ElemIteratorPtr fIt = n1->GetInverseElementIterator( SMDSAbs_Face );
-        bool isShared = false;
-        while ( !isShared && fIt->more() )
-        {
-          const SMDS_MeshElement* f = fIt->next();
-          isShared = ( f != face && f->GetNodeIndex(n2) != -1 );
-        }
-        if ( isShared && ++nbSharedBorders > 1 )
-          break;
+        const SMDS_MeshNode *n1 = face->GetNode(i);
+        if (n1->NbInverseElements(SMDSAbs_Edge) == 0)
+          return false;
       }
-      return ( nbSharedBorders == 1 );
+      return true;
     }
   return false;
 }
@@ -4347,7 +4499,7 @@ namespace {
 
 struct ElementsOnShape::Classifier
 {
-  Classifier() { mySolidClfr = 0; myFlags = 0; }
+  Classifier(): mySolidClfr(0), myProjFace(0), myProjEdge(0), myFlags(0) { myU = myV = 1e100; }
   ~Classifier();
   void Init(const TopoDS_Shape& s, double tol, const Bnd_B3d* box = 0 );
   bool IsOut(const gp_Pnt& p)        { return SetChecked( true ), (this->*myIsOutFun)( p ); }
@@ -4360,6 +4512,7 @@ struct ElementsOnShape::Classifier
   void SetChecked( bool is ) { is ? SetFlag( theIsCheckedFlag ) : UnsetFlag( theIsCheckedFlag ); }
   void SetFlag  ( int flag ) { myFlags |= flag; }
   void UnsetFlag( int flag ) { myFlags &= ~flag; }
+  void GetParams( double & u, double & v ) const { u = myU; v = myV; }
 
 private:
   bool isOutOfSolid (const gp_Pnt& p);
@@ -4373,13 +4526,14 @@ private:
   TopoDS_Shape prepareSolid( const TopoDS_Shape& theSolid );
 
   bool (Classifier::*          myIsOutFun)(const gp_Pnt& p);
-  BRepClass3d_SolidClassifier* mySolidClfr; // ptr because of a run-time forbidden copy-constructor
+  BRepClass3d_SolidClassifier* mySolidClfr;
   Bnd_B3d                      myBox;
-  GeomAPI_ProjectPointOnSurf   myProjFace;
-  GeomAPI_ProjectPointOnCurve  myProjEdge;
+  GeomAPI_ProjectPointOnSurf*  myProjFace;
+  GeomAPI_ProjectPointOnCurve* myProjEdge;
   gp_Pnt                       myVertexXYZ;
   TopoDS_Shape                 myShape;
   double                       myTol;
+  double                       myU, myV; // result of isOutOfFace() and isOutOfEdge()
   int                          myFlags;
 };
 
@@ -4427,9 +4581,10 @@ Predicate* ElementsOnShape::clone() const
     size += sizeof( myWorkClassifiers[0] ) * myWorkClassifiers.size();
   if ( size > 1e+9 ) // 1G
   {
-#ifdef _DEBUG_
+
+  if (SALOME::VerbosityActivated())
     std::cout << "Avoid ElementsOnShape::clone(), too large: " << size << " bytes " << std::endl;
-#endif
+
     return 0;
   }
 
@@ -4457,9 +4612,12 @@ SMDSAbs_ElementType ElementsOnShape::GetType() const
 
 void ElementsOnShape::SetTolerance (const double theToler)
 {
-  if (myToler != theToler) {
+  if (myToler != theToler)
+  {
     myToler = theToler;
-    SetShape(myShape, myType);
+    TopoDS_Shape s = myShape;
+    myShape.Nullify();
+    SetShape( s, myType );
   }
 }
 
@@ -4687,6 +4845,7 @@ bool ElementsOnShape::IsSatisfy (const SMDS_MeshNode* node,
           isNodeOut = false;
           if ( okShape )
             *okShape = myWorkClassifiers[i]->Shape();
+          myWorkClassifiers[i]->GetParams( myU, myV );
           break;
         }
     }
@@ -4698,6 +4857,7 @@ bool ElementsOnShape::IsSatisfy (const SMDS_MeshNode* node,
           isNodeOut = false;
           if ( okShape )
             *okShape = myClassifiers[i].Shape();
+          myClassifiers[i].GetParams( myU, myV );
           break;
         }
     }
@@ -4740,7 +4900,8 @@ void ElementsOnShape::Classifier::Init( const TopoDS_Shape& theShape,
     else
     {
       surf->Bounds( u1,u2,v1,v2 );
-      myProjFace.Init(surf, u1,u2, v1,v2, myTol );
+      myProjFace = new GeomAPI_ProjectPointOnSurf;
+      myProjFace->Init( surf, u1,u2, v1,v2, myTol );
       myIsOutFun = & ElementsOnShape::Classifier::isOutOfFace;
     }
     break;
@@ -4753,7 +4914,8 @@ void ElementsOnShape::Classifier::Init( const TopoDS_Shape& theShape,
       myIsOutFun = & ElementsOnShape::Classifier::isOutOfNone;
     else
     {
-      myProjEdge.Init(curve, u1, u2);
+      myProjEdge = new GeomAPI_ProjectPointOnCurve;
+      myProjEdge->Init( curve, u1, u2 );
       myIsOutFun = & ElementsOnShape::Classifier::isOutOfEdge;
     }
     break;
@@ -4803,6 +4965,8 @@ void ElementsOnShape::Classifier::Init( const TopoDS_Shape& theShape,
 ElementsOnShape::Classifier::~Classifier()
 {
   delete mySolidClfr; mySolidClfr = 0;
+  delete myProjFace;  myProjFace = 0;
+  delete myProjEdge;  myProjEdge = 0;
 }
 
 TopoDS_Shape ElementsOnShape::Classifier::prepareSolid( const TopoDS_Shape& theSolid )
@@ -4839,13 +5003,12 @@ bool ElementsOnShape::Classifier::isOutOfBox( const gp_Pnt& p )
 bool ElementsOnShape::Classifier::isOutOfFace( const gp_Pnt& p )
 {
   if ( isOutOfBox( p )) return true;
-  myProjFace.Perform( p );
-  if ( myProjFace.IsDone() && myProjFace.LowerDistance() <= myTol )
+  myProjFace->Perform( p );
+  if ( myProjFace->IsDone() && myProjFace->LowerDistance() <= myTol )
   {
     // check relatively to the face
-    Standard_Real u, v;
-    myProjFace.LowerDistanceParameters(u, v);
-    gp_Pnt2d aProjPnt (u, v);
+    myProjFace->LowerDistanceParameters( myU, myV );
+    gp_Pnt2d aProjPnt( myU, myV );
     BRepClass_FaceClassifier aClsf ( TopoDS::Face( myShape ), aProjPnt, myTol );
     if ( aClsf.State() == TopAbs_IN || aClsf.State() == TopAbs_ON )
       return false;
@@ -4856,8 +5019,11 @@ bool ElementsOnShape::Classifier::isOutOfFace( const gp_Pnt& p )
 bool ElementsOnShape::Classifier::isOutOfEdge( const gp_Pnt& p )
 {
   if ( isOutOfBox( p )) return true;
-  myProjEdge.Perform( p );
-  return ! ( myProjEdge.NbPoints() > 0 && myProjEdge.LowerDistance() <= myTol );
+  myProjEdge->Perform( p );
+  bool isOn = ( myProjEdge->NbPoints() > 0 && myProjEdge->LowerDistance() <= myTol );
+  if ( isOn )
+    myU = myProjEdge->LowerDistanceParameter();
+  return !isOn;
 }
 
 bool ElementsOnShape::Classifier::isOutOfVertex( const gp_Pnt& p )
index c1fe797bc34753f048b7728e8f44389ebdc52069..456f4b30a8237473853594b5fff070764367d0e6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -246,9 +246,35 @@ namespace SMESH{
       virtual SMDSAbs_ElementType GetType() const;
       virtual bool IsApplicable( const SMDS_MeshElement* element ) const;
 
-    private:
+    protected:
       double ComputeA( const gp_XYZ&, const gp_XYZ&, const gp_XYZ&, const gp_XYZ& ) const;
+      double ComputeValue( const TSequenceOfXYZ& thePoints ) const;
     };
+
+    /*
+      Class       : Warping3D
+      Description : Functor for calculating warping
+    */
+    class SMESHCONTROLS_EXPORT Warping3D: public virtual Warping {
+    public:
+      virtual bool IsApplicable(const SMDS_MeshElement* element) const;
+      virtual double GetValue(const TSequenceOfXYZ& thePoints);
+      virtual double GetValue(long theId);
+      virtual SMDSAbs_ElementType GetType() const;
+      
+      struct Value {
+        double myWarp;
+        std::vector<long> myPntIds;
+        bool operator<(const Value& x) const;
+      };
+
+      typedef std::vector<Value> WValues;
+      void GetValues(WValues& theValues);
+
+    private:
+      void ProcessVolumeELement(WValues& theValues);
+    };
+    typedef boost::shared_ptr<Warping3D> Warping3DPtr;
   
   
     /*
@@ -404,6 +430,17 @@ namespace SMESH{
       virtual double GetBadRate( double Value, int nbNodes ) const;
       virtual SMDSAbs_ElementType GetType() const;
     };
+    
+    /*
+      Class       : ScaledJacobian
+      Description : Functor returning the ScaledJacobian as implemeted in VTK for volumetric elements
+    */
+    class SMESHCONTROLS_EXPORT ScaledJacobian: public virtual NumericalFunctor{
+    public:
+      virtual double GetValue( long theNodeId );
+      virtual double GetBadRate( double Value, int nbNodes ) const;
+      virtual SMDSAbs_ElementType GetType() const;
+    };
 
 
     /*
@@ -947,6 +984,7 @@ namespace SMESH{
                         const SMDSAbs_ElementType theType);
       bool    IsSatisfy (const SMDS_MeshElement* elem);
       bool    IsSatisfy (const SMDS_MeshNode* node, TopoDS_Shape* okShape=0);
+      void    GetParams( double & u, double & v ) const { u = myU; v = myV; }
 
     private:
 
@@ -963,6 +1001,7 @@ namespace SMESH{
       SMDSAbs_ElementType        myType;
       TopoDS_Shape               myShape;
       double                     myToler;
+      double                     myU, myV; // result of node projection on EDGE or FACE
       bool                       myAllNodesFlag;
 
       TMeshModifTracer           myMeshModifTracer;
index e7d8f6793632678b57800effabc566ef60bdac2f..0e9153f53b60d8f5df4a999bf6fc41826f335945 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 2f25a04f0b6725240e20bd094bbbd2c6e8775f8c..b1f43062612e7304ef538e0b86d5e37a7becadf1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -28,7 +28,6 @@
 
 #include "SMESH_Comment.hxx"
 
-//#define _DEBUG_
 #include <utilities.h>
 
 using namespace std;
@@ -79,9 +78,7 @@ Driver_Mesh::Status Driver_Mesh::addMessage(const std::string& msg,
   myErrorMessages.push_back( msg );
 
   MESSAGE(msg);
-#ifdef _DEBUG_
-  cout << msg << endl;
-#endif
+
   return ( myStatus = isFatal ? DRS_FAIL : DRS_WARN_SKIP_ELEM );
 }
 
index 8ec3bac1f77137908129d1e71b1731a499c9594a..7293e22846dc7831018d93500d5f0747f1d42c54 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2ae245b6106acf1af1588495c51ea905c14b72b9..2baa2917fbc58da8823eb5fd7f33667bf6fbfe2b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 321a44dcb943f5e9b00e0d793507d5fe56f4ab34..7b590ce4f226deace834887bff3b947830d8ccaa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a7a4b42c91b47396e5f32c1a0999d681407eb547..35eecba9b4e78e511b4d6145cbed10be37ff3550 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2a47b083786f9f921034171032bf7d906aab71ac..46e3e419a790b2efa6c9ddeffd6bff6732fd28fb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 17476be58c14a2ae6a09a1ae717223d8f2ae0a60..0380176e4a412bde2f79b9035c9e1a1897c5a903 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 5afdfa3e7d1d2d9db8cb26f24c579a66822db3ea..22514d36c0ad300aa339b2e6f9038003b27f4b7b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -22,7 +22,7 @@
 // File      : DriverCGNS_Read.cxx
 // Created   : Thu Jun 30 10:33:31 2011
 // Author    : Edward AGAPOV (eap)
-//#define _DEBUG_
+
 #include <utilities.h>
 
 #include "DriverCGNS_Read.hxx"
@@ -217,7 +217,8 @@ namespace
    */
   //================================================================================
 
-  bool isEqualNodes( const int* nIds1, const int* nIds2, int nbNodes, SMESHDS_Mesh* mesh )
+  bool isEqualNodes( const cgsize_t* nIds1, const cgsize_t* nIds2, size_t nbNodes,
+                     SMESHDS_Mesh* mesh )
   {
     if ( nbNodes > 0 )
     {
@@ -317,7 +318,7 @@ namespace
             }
             // check if range and donorRange describe the same nodes
             {
-              int ids1[2], ids2[2], nbN = 0;
+              cgsize_t ids1[2], ids2[2], nbN = 0;
               TPointRangeIterator rangeIt1bis( range, _meshDim );
               index1 = rangeIt1bis.Next();
               index2 = T * ( index1 - begin1 ) + begin2;
index 2086498c80b9880ecf7827bdeb2288358fd561b1..30543ed425253b071cc391f1e2fe6b5273117886 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index bdedf770bf0f443b612f352d3ba0e39afcaeeff7..e713a66b5fc64561e4030a93ae080207f2453f42 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0b2e2a67eb8f7fd40cf6740e6c046619e4310f08..0530a34e03289d0be5ad0cc9bcf5363cb017015a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index b2149b6e3a8c731fe43c40fb4e226447de809225..3f49b837dce738cfa11ce02df724d38b5126bece 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 3aad8cc2b006502f9c1e98fa9c2bcb673693e529..c8cb8285fff072deefd59d8760c5dc4d19c41878 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d0f233ecc9ed9cca4ea835da0547a661bafa31f8..9b2e67e7c2652bdc9cc0361d16fed986ee97b4a2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index b6b1b73667907c2fa622d5420446d5915d9779d1..f9a00256aabb384617f456be9b884cd917e5cd06 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 70b2d073acf2abc90d4511ab95f900d2b63a06b8..0de907c80e39722e1da9bb6a04163ef3cd7d739b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 481f5b080358ee4e911c4f17f8da5ee93b488b1f..0207c721e8ad509d5db7aed511de133ede5c1eaa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 81ada81e14e4905d9102dd3b337b12a0e3faf0f0..592b529ed50c1da2cce66e98af553723dd7d6cf0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a64293194662707048cf2ad040b9937f4114fd07..30b1f3da4a89d350f716c3ce0abc82df9cf1c249 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index a087bdaa93b333ca01f41343f2a33d6fa5f0cea6..84d4f3a2f5b2e26f363e18ee15e57bfed1423ac6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2ca9ca89b7e50ceb3400b238c5c221492387289b..ab9ee32cf527306075ddabc826471015f8b1b7ec 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index c85abbf3c8e831b1542933e6734c430528ded7ee..9e654ea18e0be317688fe32bfce07dbf8ab2a0a8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 8464a5345bd97942fd7d6572d5feb9a0627d9c20..81f7cc4a355f704ef97c4165268ebd6ba059887d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index dfa9ca5c31c8768a966eb88ceb58b215fcb26bf8..1877f42b57799c29d034e45121c7cad1b10a876c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f9bcba8abb04639875a51839bd9df936bd61d62c..db121f945819b981418f5d1e9c0fbc3b2fa4b014 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 3cb0fdc1851d51f63a72f7b6b894d72d89437385..dee167c234c7fa1f0e9f24840b4a760697a8e6ca 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2186564d45256601f4aebb2eddf98595b732cd2a..9a977d854e43ce1969c22fa772188b87139c262e 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6e974b8a9630306a57a72c1e31ebbaa3bab3aec9..41968b6678dc7ee7eead07326b9084f6e774a712 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f5b00968a0d58c314b0d8302c44722b74798b91e..6e900151bbe25174b565ed7da835bf4f58321842 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index bdbf843013546ae7804e20ca10646eff994ebafc..e00f68581ffb3e14e097a72dda6a503c51f4f16e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index bc343e1b5937dca569240f7761184f4410fdee17..7c6807f9ad140efd5990aa8eaac0093c698972fb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 
 //#include <stdlib.h>
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-//#define _DEXCEPT_
-#else
-static int MYDEBUG = 0;
-#endif
-
 #define _EDF_NODE_IDS_
 
 using namespace MED;
@@ -110,7 +103,7 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
   try {
 #endif
     myFamilies.clear();
-    if(MYDEBUG) MESSAGE("Perform - myFile : "<<myFile);
+    MESSAGE("Perform - myFile : "<<myFile);
     PWrapper aMed = CrWrapperR(myFile);
 
     aResult = DRS_EMPTY;
@@ -125,7 +118,7 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
       if (myMeshId != -1) aMeshName = SMESH_Comment( myMeshId );
       else                aMeshName = myMeshName;
 
-      if(MYDEBUG) MESSAGE("Perform - aMeshName : "<<aMeshName<<"; "<<aMeshInfo->GetName());
+      MESSAGE("Perform - aMeshName : "<<aMeshName<<"; "<<aMeshInfo->GetName());
       if ( aMeshName != aMeshInfo->GetName() ) continue;
       aResult = DRS_OK;
 
@@ -133,18 +126,18 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
       //------------------------------------------------
       TErr anErr;
       TInt aNbFams = aMed->GetNbFamilies(aMeshInfo);
-      if(MYDEBUG) MESSAGE("Read " << aNbFams << " families");
+      MESSAGE("Read " << aNbFams << " families");
       for (TInt iFam = 0; iFam < aNbFams; iFam++)
       {
         PFamilyInfo aFamilyInfo = aMed->GetPFamilyInfo(aMeshInfo,iFam+1,&anErr);
         if(anErr >= 0){
           TInt aFamId = aFamilyInfo->GetId();
-          if(MYDEBUG) MESSAGE("Family " << aFamId << " :");
+          MESSAGE("Family " << aFamId << " :");
 
           DriverMED_FamilyPtr aFamily (new DriverMED_Family);
 
           TInt aNbGrp = aFamilyInfo->GetNbGroup();
-          if(MYDEBUG) MESSAGE("belong to " << aNbGrp << " groups");
+          MESSAGE("belong to " << aNbGrp << " groups");
           bool isAttrOk = false;
           if(aFamilyInfo->GetNbAttr() == aNbGrp)
             isAttrOk = true;
@@ -155,7 +148,7 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
               TInt anAttrVal = aFamilyInfo->GetAttrVal(iGr);
               aFamily->SetGroupAttributVal(anAttrVal);
             }
-            if(MYDEBUG) MESSAGE(aGroupName);
+            MESSAGE(aGroupName);
             if ( strncmp( aGroupName.c_str(), NIG_GROUP_PREFIX, strlen(NIG_GROUP_PREFIX) ) != 0 )
               aFamily->AddGroupName( fixUTF8( aGroupName ));
           }
@@ -182,7 +175,7 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
 
       EBooleen anIsNodeNum = aNodeInfo->IsElemNum();
       TInt aNbElems = aNodeInfo->GetNbElem();
-      if(MYDEBUG) MESSAGE("Perform - aNodeInfo->GetNbElem() = "<<aNbElems<<"; anIsNodeNum = "<<anIsNodeNum);
+      MESSAGE("Perform - aNodeInfo->GetNbElem() = "<<aNbElems<<"; anIsNodeNum = "<<anIsNodeNum);
       DriverMED_FamilyPtr aFamily;
       for ( TInt iElem = 0; iElem < aNbElems; iElem++ )
       {
@@ -475,8 +468,8 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
             PCellInfo aCellInfo = aMed->GetPCellInfo(aMeshInfo,anEntity,aGeom);
             EBooleen anIsElemNum = takeNumbers ? aCellInfo->IsElemNum() : eFAUX;
             TInt aNbElems = aCellInfo->GetNbElem();
-            if(MYDEBUG) MESSAGE("Perform - anEntity = "<<anEntity<<"; anIsElemNum = "<<anIsElemNum);
-            if(MYDEBUG) MESSAGE("Perform - aGeom = "<<aGeom<<"; aNbElems = "<<aNbElems);
+            MESSAGE("Perform - anEntity = "<<anEntity<<"; anIsElemNum = "<<anIsElemNum);
+            MESSAGE("Perform - aGeom = "<<aGeom<<"; aNbElems = "<<aNbElems);
 
             TInt aNbNodes = -1;
             switch(aGeom){
@@ -1046,7 +1039,7 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
     aResult = DRS_WARN_DESCENDING;
   }
 
-  if(MYDEBUG) MESSAGE("Perform - aResult status = "<<aResult);
+  MESSAGE("Perform - aResult status = "<<aResult);
   return aResult;
 }
 
@@ -1055,7 +1048,7 @@ list<string> DriverMED_R_SMESHDS_Mesh::GetMeshNames(Status& theStatus)
   list<string> aMeshNames;
 
   try {
-    if(MYDEBUG) MESSAGE("GetMeshNames - myFile : " << myFile);
+    MESSAGE("GetMeshNames - myFile : " << myFile);
     theStatus = DRS_OK;
     PWrapper aMed = CrWrapperR(myFile);
 
@@ -1132,7 +1125,7 @@ void DriverMED_R_SMESHDS_Mesh::GetGroup(SMESHDS_Group* theGroup)
   }
 
   const char* aGroupName = theGroup->GetStoreName();
-  if(MYDEBUG) MESSAGE("Get Group " << aGroupName);
+  MESSAGE("Get Group " << aGroupName);
 
   if (( famVecPtr = myGroups2FamiliesMap.ChangeSeek( aGroupName )))
   {
index ef4e74a93c2938eed60f60871734f9945309ef22..7913b61ca9a1eedc631e8cbf281db5151bbd6d24 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1db5c32a8d7b2388899ac99d0b4f80b3476b4a10..65c86a8607da770cc2d94dee824f42c7f4f71a11 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d3438237102a024f4e32f7b990dead54709c6d33..6e3e536867e1c469596d72f3f6b6fe7231e870ac 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 844e372386cf2b71f833859fc80ee22c83e3668d..fda03669496e05472a35873d9cd1becc20585c14 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index fc8cf9b154dd4cb94170b33e5a9d0b7cceb3339e..c0c7ce4cd5e055d22b63eff104bee86902e42e99 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d5b0d8803c26f512910499443e975bde9aae9ed3..582718cfeae1463d0b05f5c7fde0284c73918fd3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 10d924c55f56f0dc53489e9eab1f795a0bfd5558..ef95a3698a62732245d68ea5a6b0e014678c63b1 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index ca6f393b1cb41e8c26172e67f58d908d06d00e07..c838ec8065d6e16f07917ed29016c9862558e32b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9aa65aa009a64b464e38b880223e20b872b5200a..702d4dfce4cde92be51fea6088b63ac33cf0f5db 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d0239cfe14a2906b2aa3bece58d65b037fd7375d..1dee48d8bee9e3555736e42619eac77ccb363ffb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5f406606aa503042931b9ed1026fe0498b5078cd..df47fba2605b43fc7732ee4a827124a4c171711e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 690b05e09d1bb799a2ce49506a0b1c1698a80860..b7db77ca84506eed5196af3a752f559c8d983319 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f0bbd91aceb411b877dcd4fcc574a13a0772a402..58166ef2898e71d3d3171bbfd29e3d7b7a460a85 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 261e2b4ea12fff96dcd9e6ca5c5ee784f69d7f42..a489c4cddecd3884bdcbde013bd322c8ad13840d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 
 using namespace std;
 
-
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
-
 namespace
 {
   /*!
@@ -123,7 +116,7 @@ Driver_Mesh::Status DriverUNV_R_SMDS_Mesh::Perform()
       using namespace UNV2411;
       TDataSet aDataSet2411;
       UNV2411::Read(in_stream,aDataSet2411);
-      if(MYDEBUG) MESSAGE("Perform - aDataSet2411.size() = "<<aDataSet2411.size());
+      MESSAGE("Perform - aDataSet2411.size() = "<<aDataSet2411.size());
 
       // Move nodes in a global CS
       if ( !aCoordSysDataSet.empty() )
@@ -168,7 +161,7 @@ Driver_Mesh::Status DriverUNV_R_SMDS_Mesh::Perform()
       TDataSet aDataSet2412;
       UNV2412::Read(in_stream,aDataSet2412);
       TDataSet::const_iterator anIter = aDataSet2412.begin();
-      if(MYDEBUG) MESSAGE("Perform - aDataSet2412.size() = "<<aDataSet2412.size());
+      MESSAGE("Perform - aDataSet2412.size() = "<<aDataSet2412.size());
       for(; anIter != aDataSet2412.end(); anIter++)
       {
         SMDS_MeshElement* anElement = NULL;
@@ -404,7 +397,7 @@ Driver_Mesh::Status DriverUNV_R_SMDS_Mesh::Perform()
       using namespace UNV2417;
       TDataSet aDataSet2417;
       UNV2417::Read(in_stream,aDataSet2417);
-      if(MYDEBUG) MESSAGE("Perform - aDataSet2417.size() = "<<aDataSet2417.size());
+      MESSAGE("Perform - aDataSet2417.size() = "<<aDataSet2417.size());
       if (aDataSet2417.size() > 0)
       {
         TDataSet::const_iterator anIter = aDataSet2417.begin();
index bb54c1b6c59cc88632ae2cf64affaf8a348ce788..45bf1aebe89def3d2bda68a16a3a295cd7ac8dc4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 68c33035c0c5d7279bed1bae09b46905e370fe90..9ac1bf49dbfada6da2d23a5b668caaa619ac06c3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 008123eb53307c20df9f228bc967626477512e3c..080d97eda88d287e0b8548aa4b953690c9e0d2ae 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1921d40953b38f2bedcc09ba1152ad79a1757a72..e2ba0af7b096ebbcd5788b61165ba29fcbae386e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a11fd77973244242eb66b054128e5217fe95f24d..16f8a83d163d94448123c07abf12c684c36c3cfb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 444eee46dc15654cea45e3ba312f8efeec84157f..1e92639a03d4de2cc04aff049a7db04d27647f38 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6a1604d5a830b30e21ae4fe92597fb68c2950778..a6e8a20dedc2abfc15be55e4b3bcefc06c7a4880 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index be0301c3e860c57bda202301ea797f06c7cd0fda..4a7708b6a1b0b08f72940ef76b2ef521317c1135 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 08937fe7da2c676b6949cad9177fa4cf7158218b..05b3db4f75a02c637e654848423b5948a23e7c7d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ac2f06705a9839b75cf0223135d32f1ef2f88453..2828e135ad55dfa44eeddffbafc5afea293bd82d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 51570a48f0ab164052c991f2f205417b9246d928..9a29c91b44c2e01ab7f79dfb7dfc9f1f7cfd220b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index b11348b04d920fc8253a42e36851b5ff9521f184..619085e166c5a648db9c0b7a5f3048484c1ff5ff 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 4c93399553039f167ebfed5621720816160d5f67..4136dea2c65dcf1753b0d3106723035a0289ef4f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e938a78635234718542d6ddd6ddf2665e52aa811..c4b168b53af1875ed15130b3c9aad98e29c1e0f6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ef34cff6b550d0b762555b6f97784058d8ee56c9..b7e5c760c1dcf788e6ab881fd2dd209da708f678 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 489aaa301e68dae87a7feb828736dd543d39d367..3ee8e8a1e247576132bf12399b245a4fcf028c5f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2e8a32fb61edc5b561ad49033fdff5385429ae0d..c188ff5b37762e8c1a2a23010566ae135d6bbb25 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 5343f0b54b76bb4dc82350164b607a85ac5504e9..5598ef8c010dd5101368986c0ae1abaf06387a19 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include "MED_Wrapper.hxx"
 #include "MED_Utilities.hxx"
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-static int MYVALUEDEBUG = 0;
-#else
-// static int MYDEBUG = 0;
-// static int MYVALUEDEBUG = 0;
-#endif
-
 namespace MED
 {
   //---------------------------------------------------------------
@@ -40,7 +32,7 @@ namespace MED
                            const PMeshInfo& theMeshInfo,
                            const MED::TEntityInfo& theEntityInfo)
   {
-    MSG(MYDEBUG,"GetElemsByEntity(...)");
+    MSG("GetElemsByEntity(...)");
     TEntity2TGeom2ElemInfo anEntity2TGeom2ElemInfo;
     MED::TEntityInfo::const_iterator anIter = theEntityInfo.begin();
     PElemInfo anElemInfo;
@@ -61,7 +53,7 @@ namespace MED
         aGeom2ElemInfo[aGeom] = theWrapper->GetPElemInfo(theMeshInfo,anEntity,aGeom,MED::eNOD,&anErr);
       }
     }
-    ADDMSG(MYDEBUG,"\n");
+    ADDMSG("\n");
     return anEntity2TGeom2ElemInfo;
   }
 
@@ -70,17 +62,17 @@ namespace MED
   GetFamilyInfoSet(const PWrapper& theWrapper,
                    const PMeshInfo& theMeshInfo)
   {
-    MSG(MYDEBUG,"GetFamilies(...)");
+    MSG("GetFamilies(...)");
     TErr anErr;
     TFamilyInfoSet aFamilyInfoSet;
     TInt aNbFam = theWrapper->GetNbFamilies(*theMeshInfo);
-    INITMSG(MYDEBUG,"GetNbFamilies() = "<<aNbFam<<"\n");
+    INITMSG("GetNbFamilies() = "<<aNbFam<<"\n");
     for(TInt iFam = 1; iFam <= aNbFam; iFam++){
       PFamilyInfo aFamilyInfo = theWrapper->GetPFamilyInfo(theMeshInfo,iFam,&anErr);
       if(anErr >= 0)
         aFamilyInfoSet.insert(aFamilyInfo);
     }
-    ADDMSG(MYDEBUG,"\n");
+    ADDMSG("\n");
     return aFamilyInfoSet;
   }
 
@@ -88,7 +80,7 @@ namespace MED
   TGroupInfo
   GetGroupInfo(const TFamilyInfoSet& theFamilyInfoSet)
   {
-    MSG(MYDEBUG,"GetFamiliesByGroup(...)");
+    MSG("GetFamiliesByGroup(...)");
     TGroupInfo aGroup;
     TFamilyInfoSet::const_iterator anIter = theFamilyInfoSet.begin();
     for(; anIter != theFamilyInfoSet.end(); anIter++){
@@ -99,22 +91,20 @@ namespace MED
       }
     }
 
-#ifdef _DEBUG_
-    if(MYDEBUG){
+    if(SALOME::VerbosityActivated()){
       TGroupInfo::const_iterator anIter = aGroup.begin();
       for(; anIter != aGroup.end(); anIter++){
         const std::string& aName = anIter->first;
-        INITMSG(MYDEBUG,"aGroupName = '"<<aName<<"'\n");
+        INITMSG("aGroupName = '"<<aName<<"'\n");
         const TFamilyInfoSet& aFamilyInfoSet = anIter->second;
         TFamilyInfoSet::const_iterator anFamIter = aFamilyInfoSet.begin();
         for(; anFamIter != aFamilyInfoSet.end(); anFamIter++){
           const PFamilyInfo& aFamilyInfo = *anFamIter;
-          INITMSG(MYDEBUG,"aFamilyName = '"<<aFamilyInfo->GetName()<<"'\n");
+          INITMSG("aFamilyName = '"<<aFamilyInfo->GetName()<<"'\n");
         }
       }
-      ADDMSG(MYDEBUG,"\n");
+      ADDMSG("\n");
     }
-#endif
 
     return aGroup;
   }
@@ -125,28 +115,26 @@ namespace MED
                                 const PMeshInfo& theMeshInfo,
                                 const MED::TEntityInfo& theEntityInfo)
   {
-    MSG(MYDEBUG,"GetFieldsByEntity(...)");
+    MSG("GetFieldsByEntity(...)");
     TFieldInfo2TimeStampInfoSet aFieldInfo2TimeStampInfoSet;
     TInt aNbFields = theWrapper->GetNbFields();
-    INITMSG(MYDEBUG,"GetNbFields() = "<<aNbFields<<"\n");
+    INITMSG("GetNbFields() = "<<aNbFields<<"\n");
     for(TInt iField = 1; iField <= aNbFields; iField++){
       PFieldInfo aFieldInfo = theWrapper->GetPFieldInfo(theMeshInfo,iField);
-      INITMSG(MYDEBUG,"aFieldName = '"<<aFieldInfo->GetName()<<
+      INITMSG("aFieldName = '"<<aFieldInfo->GetName()<<
               "'; aNbComp = "<<aFieldInfo->GetNbComp()<<"; ");
       TGeom2Size aGeom2Size;
       EEntiteMaillage anEntity = EEntiteMaillage(-1);
       TInt aNbTimeStamps = theWrapper->GetNbTimeStamps(aFieldInfo,theEntityInfo,anEntity,aGeom2Size);
-      ADDMSG(MYDEBUG,"anEntity = "<<anEntity<<"; GetNbTimeStamps = "<<aNbTimeStamps<<"\n");
+      ADDMSG("anEntity = "<<anEntity<<"; GetNbTimeStamps = "<<aNbTimeStamps<<"\n");
       for(TInt iTimeStamp = 1; iTimeStamp <= aNbTimeStamps; iTimeStamp++){
         PTimeStampInfo aTimeStamp =
           theWrapper->GetPTimeStampInfo(aFieldInfo,anEntity,aGeom2Size,iTimeStamp);
         aFieldInfo2TimeStampInfoSet[aFieldInfo].insert(aTimeStamp);
-        INITMSG(MYDEBUG,
-                "aDt = "<<aTimeStamp->GetDt()<<
-                ", Unit = \'"<<aTimeStamp->GetUnitDt()<<"\n");
+        INITMSG("aDt = "<<aTimeStamp->GetDt()<<", Unit = \'"<<aTimeStamp->GetUnitDt()<<"\n");
       }
     }
-    ADDMSG(MYDEBUG,"\n");
+    ADDMSG("\n");
     return aFieldInfo2TimeStampInfoSet;
   }
 
@@ -182,7 +170,7 @@ namespace MED
                       const TEntity2TGeom2ElemInfo& theEntity2TGeom2ElemInfo,
                       const TFamilyInfoSet& theFamilyInfoSet)
   {
-    MSG(MYDEBUG,"GetFamiliesByEntity(...)");
+    MSG("GetFamiliesByEntity(...)");
     TEntity2FamilySet anEntity2FamilySet;
 
     typedef std::map<TInt,PFamilyInfo> TId2Family;
@@ -220,7 +208,7 @@ namespace MED
         TEntity2FamilyID::const_iterator anIter = anEntity2FamilyID.begin();
         for(; anIter != anEntity2FamilyID.end(); anIter++){
           const EEntiteMaillage& anEntity = anIter->first;
-          INITMSG(MYDEBUG,"anEntity = "<<anEntity<<":\n");
+          INITMSG("anEntity = "<<anEntity<<":\n");
           const TFamilyID2Size& aFamilyID2Size = anIter->second;
           TFamilyID2Size::const_iterator anIter2 = aFamilyID2Size.begin();
           for(; anIter2 != aFamilyID2Size.end(); anIter2++){
@@ -230,15 +218,14 @@ namespace MED
             if(anIter3 != anId2Family.end()){
               const PFamilyInfo& aFamilyInfo = anIter3->second;
               anEntity2FamilySet[anEntity].insert(TFamilyTSize(aFamilyInfo,aSize));
-              INITMSG(MYDEBUG,
-                      "aFamilyName = '"<<aFamilyInfo->GetName()<<
+              INITMSG("aFamilyName = '"<<aFamilyInfo->GetName()<<
                       "' anId = "<<aFamilyInfo->GetId()<<"\n");
             }
           }
         }
       }
     }
-    ADDMSG(MYDEBUG,"\n");
+    ADDMSG("\n");
     return anEntity2FamilySet;
   }
 
@@ -248,7 +235,7 @@ namespace MED
                TErr* theErr,
                EModeSwitch theMode)
   {
-    INITMSG(MYDEBUG,"GetKey2Gauss - theMode = "<<theMode<<std::endl);
+    INITMSG("GetKey2Gauss - theMode = "<<theMode<<std::endl);
     TKey2Gauss aKey2Gauss;
     TInt aNbGauss = theWrapper->GetNbGauss(theErr);
     for(TInt anId = 1; anId <= aNbGauss; anId++){
@@ -258,16 +245,14 @@ namespace MED
       TGaussInfo::TKey aKey = boost::get<0>(aPreInfo);
       aKey2Gauss[aKey] = anInfo;
 
-#ifdef _DEBUG_
-      const EGeometrieElement& aGeom = boost::get<0>(aKey);
-      const std::string& aName = boost::get<1>(aKey);
-      INITMSG(MYDEBUG,
-              "- aGeom = "<<aGeom<<
-              "; aName = '"<<aName<<"'"<<
-              std::endl);
-#endif
-
+      if (SALOME::VerbosityActivated())
+      {
+        const EGeometrieElement& aGeom = boost::get<0>(aKey);
+        const std::string& aName = boost::get<1>(aKey);
+        INITMSG("- aGeom = "<<aGeom<<"; aName = '"<<aName<<"'"<<std::endl);
+      }
     }
+    
     return aKey2Gauss;
   }
 
@@ -295,7 +280,7 @@ namespace MED
                   TErr* theErr,
                   EModeProfil theMode)
   {
-    INITMSG(MYDEBUG,"GetMKey2Profile - theMode = "<<theMode<<std::endl);
+    INITMSG("GetMKey2Profile - theMode = "<<theMode<<std::endl);
     TKey2Profile aKey2Profile;
     TInt aNbProfiles = theWrapper->GetNbProfiles(theErr);
     for(TInt anId = 1; anId <= aNbProfiles; anId++){
@@ -304,18 +289,16 @@ namespace MED
       const std::string& aName = boost::get<0>(aPreInfo);
       aKey2Profile[aName] = anInfo;
 
-#ifdef _DEBUG_
-      INITMSG(MYDEBUG,
-              "- aName = '"<<aName<<"'"<<
-              " : "<<
-              std::endl);
-      TInt aNbElem = anInfo->GetSize();
-      for(TInt iElem = 0; iElem < aNbElem; iElem++){
-        ADDMSG(MYVALUEDEBUG,anInfo->GetElemNum(iElem)<<", ");
-      }
-      ADDMSG(MYVALUEDEBUG, std::endl);
-#endif
+      if(SALOME::VerbosityActivated()){
+        INITMSG("- aName = '"<<aName<<"'"<<" : "<<std::endl);
+        TInt aNbElem = anInfo->GetSize();
 
+        for(TInt iElem = 0; iElem < aNbElem; iElem++){
+          ADDMSG(anInfo->GetElemNum(iElem)<<", ");
+        }
+
+        ADDMSG(std::endl);
+      }
     }
     return TMKey2Profile(theMode,aKey2Profile);
   }
index 7227cdccde18d950a40bbf7842098d0ed074b8b0..5fc0b75cd44067045e5384491b986d59afefb64c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 158acd296b52854419690abd6ab174746db63537..f6dd3d19cdfd215b96f5ba8135eef0915bf76954 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e5c33803ef7a7cf15e7e03d32502aea65efd016f..2249e60d77eebb920f35f900452dea43a7037f5b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 32f4c2b21c7de37b9a2465489c02e2a47db92478..682f02297dccc241988c0ec7500cfb146513c8cc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1b297911f15ccd48769ce5a0011a0c7814d0f611..b818883ec693493e5cd602ab9cfd7e7df62d9729 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 72f080ca20be482cf0f8ee6f25d418b53e1d4161..093511810167504b3eccdfb160a530932058577e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0a2e4efce3e5a78fad9a513bf8be1e4214c525a9..c3a5dbe41e28fc4bbd5d539706efad57c1e1e8fe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 900443549d1f087877282f44efb608154272e395..88c01bbe48b64385d78e812a371df5b6c130f16e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 56a8a0b60e8b822ed1e39037c730b72346e660b4..4fbd7c18a136306e6e2b249106ebacc011376522 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 862d4898d7bf243298b18396820ee9175d0a30a5..1be619dc8e8b2325db8288eb5340977be7b580d5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include "MED_GaussUtils.hxx"
 #include "MED_Utilities.hxx"
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-static int MYVALUEDEBUG = 0;
-#else
-// static int MYDEBUG = 0;      // unused in release mode
-// static int MYVALUEDEBUG = 0; // unused in release mode
-#endif
-
 namespace MED
 {
   //---------------------------------------------------------------
@@ -209,7 +201,7 @@ namespace MED
   {
     TInt aNbRef = theRefCoord.size();
     TInt aNbRef2 = GetNbRef();
-    INITMSG(MYDEBUG,"TShapeFun::IsSatisfy "<<
+    INITMSG("TShapeFun::IsSatisfy "<<
             "- aNbRef("<<aNbRef<<")"<<
             "; aNbRef2("<<aNbRef2<<")\n");
     bool anIsSatisfy = (aNbRef == aNbRef2);
@@ -227,27 +219,26 @@ namespace MED
           }
         }
         if(!anIsEqual){
-#ifdef _DEBUG_
-          TCCoordSlice aCoord = GetCoord(aRefId);
-          INITMSG(MYDEBUG,aRefId + 1<<": aCoord = {");
-          TInt aDim = aCoord.size();
-          for(TInt anId = 0; anId < aDim; anId++)
-            ADDMSG(MYDEBUG,"\t"<<aCoord[anId]);
-          const TCCoordSlice& aCoord2 = theRefCoord[aRefId];
-          ADDMSG(MYDEBUG,"}\t!=\taCoord2 = {");
-          for(TInt anId = 0; anId < aDim; anId++)
-            ADDMSG(MYDEBUG,"\t"<<aCoord2[anId]);
-          ADDMSG(MYDEBUG,"}\n");
-#endif
-#ifndef _DEBUG_
-          BEGMSG(MYDEBUG,"anIsSatisfy = "<<anIsSatisfy<<"\n");
+          if(SALOME::VerbosityActivated()){
+            TCCoordSlice aCoord = GetCoord(aRefId);
+            INITMSG(aRefId + 1<<": aCoord = {");
+            TInt aDim = aCoord.size();
+            for(TInt anId = 0; anId < aDim; anId++)
+              ADDMSG("\t"<<aCoord[anId]);
+            const TCCoordSlice& aCoord2 = theRefCoord[aRefId];
+            ADDMSG("}\t!=\taCoord2 = {");
+            for(TInt anId = 0; anId < aDim; anId++)
+              ADDMSG("\t"<<aCoord2[anId]);
+            ADDMSG("}\n");
+          }
+
+          BEGMSG("anIsSatisfy = "<<anIsSatisfy<<"\n");
           return anIsSatisfy;
-#endif
         }
       }
     }
 
-    BEGMSG(MYDEBUG,"anIsSatisfy = "<<anIsSatisfy<<"\n");
+    BEGMSG("anIsSatisfy = "<<anIsSatisfy<<"\n");
     return anIsSatisfy;
   }
 
@@ -260,7 +251,7 @@ namespace MED
                   TGaussCoord&           theGaussCoord,
                   EModeSwitch            theMode)
   {
-    INITMSG(MYDEBUG,"TShapeFun::Eval"<<std::endl);
+    INITMSG("TShapeFun::Eval"<<std::endl);
 
     if(IsSatisfy(theRef)){
       const PMeshInfo& aMeshInfo = theCellInfo.GetMeshInfo();
@@ -280,7 +271,7 @@ namespace MED
       InitFun(theRef,theGauss,aFun);
       TInt aConnDim = theCellInfo.GetConnDim();
 
-      INITMSG(MYDEBUG,"aDim = "<<aDim<<
+      INITMSG("aDim = "<<aDim<<
               "; aNbGauss = "<<aNbGauss<<
               "; aNbElem = "<<aNbElem<<
               "; aNbNodes = "<<theNodeInfo.GetNbElem()<<
@@ -306,33 +297,34 @@ namespace MED
         }
       }
 
-#ifdef _DEBUG_
+      if (SALOME::VerbosityActivated())
       {
-        INITMSG(MYVALUEDEBUG,"theGauss: ");
+        INITMSG("theGauss: ");
         for(TInt aGaussId = 0; aGaussId < aNbGauss; aGaussId++){
           TCCoordSlice aCoordSlice = theGauss[aGaussId];
-          ADDMSG(MYVALUEDEBUG,"{");
+          ADDMSG("{");
           for(TInt aDimId = 0; aDimId < aDim; aDimId++){
-            ADDMSG(MYVALUEDEBUG,aCoordSlice[aDimId]<<" ");
+            ADDMSG(aCoordSlice[aDimId]<<" ");
           }
-          ADDMSG(MYVALUEDEBUG,"} ");
+          ADDMSG("} ");
         }
-        ADDMSG(MYVALUEDEBUG,std::endl);
-      }
-      for(TInt anElemId = 0; anElemId < aNbElem; anElemId++){
-        TCCoordSliceArr aCoordSliceArr = theGaussCoord.GetCoordSliceArr(anElemId);
-        INITMSG(MYVALUEDEBUG,"");
-        for(TInt aGaussId = 0; aGaussId < aNbGauss; aGaussId++){
-          TCCoordSlice aCoordSlice = aCoordSliceArr[aGaussId];
-          ADDMSG(MYVALUEDEBUG,"{");
-          for(TInt aDimId = 0; aDimId < aDim; aDimId++){
-            ADDMSG(MYVALUEDEBUG,aCoordSlice[aDimId]<<" ");
+        ADDMSG(std::endl);
+
+        for(TInt anElemId = 0; anElemId < aNbElem; anElemId++){
+          TCCoordSliceArr aCoordSliceArr = theGaussCoord.GetCoordSliceArr(anElemId);
+          INITMSG("");
+          for(TInt aGaussId = 0; aGaussId < aNbGauss; aGaussId++){
+            TCCoordSlice aCoordSlice = aCoordSliceArr[aGaussId];
+            ADDMSG("{");
+            for(TInt aDimId = 0; aDimId < aDim; aDimId++){
+              ADDMSG(aCoordSlice[aDimId]<<" ");
+            }
+            ADDMSG("} ");
           }
-          ADDMSG(MYVALUEDEBUG,"} ");
+          ADDMSG(std::endl);
         }
-        ADDMSG(MYVALUEDEBUG,std::endl);
       }
-#endif
+
       return true;
     }
 
@@ -1727,7 +1719,7 @@ namespace MED
                   const TElemNum& theElemNum,
                   EModeSwitch theMode)
   {
-    INITMSG(MYDEBUG,"GetGaussCoord3D\n");
+    INITMSG("GetGaussCoord3D\n");
 
     if(theGaussInfo.myGeom == theCellInfo.myGeom){
       EGeometrieElement aGeom = theGaussInfo.myGeom;
@@ -1744,7 +1736,7 @@ namespace MED
 
       switch(aGeom){
       case eSEG2: {
-        INITMSG(MYDEBUG,"eSEG2"<<std::endl);
+        INITMSG("eSEG2"<<std::endl);
 
         if(TSeg2a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1752,7 +1744,7 @@ namespace MED
         break;
       }
       case eSEG3: {
-        INITMSG(MYDEBUG,"eSEG3"<<std::endl);
+        INITMSG("eSEG3"<<std::endl);
 
         if(TSeg3a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1760,7 +1752,7 @@ namespace MED
         break;
       }
       case eTRIA3: {
-        INITMSG(MYDEBUG,"eTRIA3"<<std::endl);
+        INITMSG("eTRIA3"<<std::endl);
 
         if(TTria3a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1771,7 +1763,7 @@ namespace MED
         break;
       }
       case eTRIA6: {
-        INITMSG(MYDEBUG,"eTRIA6"<<std::endl);
+        INITMSG("eTRIA6"<<std::endl);
 
         if(TTria6a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1782,7 +1774,7 @@ namespace MED
         break;
       }
       case eQUAD4: {
-        INITMSG(MYDEBUG,"eQUAD4"<<std::endl);
+        INITMSG("eQUAD4"<<std::endl);
 
         if(TQuad4a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1793,7 +1785,7 @@ namespace MED
         break;
       }
       case eQUAD8: {
-        INITMSG(MYDEBUG,"eQUAD8"<<std::endl);
+        INITMSG("eQUAD8"<<std::endl);
 
         if(TQuad8a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1804,7 +1796,7 @@ namespace MED
         break;
       }
       case eQUAD9: {
-        INITMSG(MYDEBUG,"eQUAD9"<<std::endl);
+        INITMSG("eQUAD9"<<std::endl);
 
         if(TQuad9a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1815,7 +1807,7 @@ namespace MED
         break;
       }
       case eTETRA4: {
-        INITMSG(MYDEBUG,"eTETRA4"<<std::endl);
+        INITMSG("eTETRA4"<<std::endl);
 
         if(TTetra4a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1826,7 +1818,7 @@ namespace MED
         break;
       }
       case ePYRA5: {
-        INITMSG(MYDEBUG,"ePYRA5"<<std::endl);
+        INITMSG("ePYRA5"<<std::endl);
 
         if(TPyra5a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1837,7 +1829,7 @@ namespace MED
         break;
       }
       case ePENTA6: {
-        INITMSG(MYDEBUG,"ePENTA6"<<std::endl);
+        INITMSG("ePENTA6"<<std::endl);
 
         if(TPenta6a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1848,7 +1840,7 @@ namespace MED
         break;
       }
       case eHEXA8: {
-        INITMSG(MYDEBUG,"eHEXA8"<<std::endl);
+        INITMSG("eHEXA8"<<std::endl);
 
         if(THexa8a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1859,7 +1851,7 @@ namespace MED
         break;
       }
       case eTETRA10: {
-        INITMSG(MYDEBUG,"eTETRA10"<<std::endl);
+        INITMSG("eTETRA10"<<std::endl);
 
         if(TTetra10a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1870,7 +1862,7 @@ namespace MED
         break;
       }
       case ePYRA13: {
-        INITMSG(MYDEBUG,"ePYRA13"<<std::endl);
+        INITMSG("ePYRA13"<<std::endl);
 
         if(TPyra13a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1881,7 +1873,7 @@ namespace MED
         break;
       }
       case ePENTA15: {
-        INITMSG(MYDEBUG,"ePENTA15"<<std::endl);
+        INITMSG("ePENTA15"<<std::endl);
 
         if(TPenta15a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1892,7 +1884,7 @@ namespace MED
         break;
       }
       case eHEXA20: {
-        INITMSG(MYDEBUG,"eHEXA20"<<std::endl);
+        INITMSG("eHEXA20"<<std::endl);
 
         if(THexa20a().Eval(theCellInfo,theNodeInfo,theElemNum,aRefSlice,aGaussSlice,theGaussCoord,theMode))
           return true;
@@ -1903,7 +1895,7 @@ namespace MED
         break;
       }
       default:
-        INITMSG(MYDEBUG,"eNONE"<<std::endl);
+        INITMSG("eNONE"<<std::endl);
         return false;
       }
     }
@@ -1919,7 +1911,7 @@ namespace MED
                 const TElemNum& theElemNum,
                 EModeSwitch theMode)
   {
-    INITMSG(MYDEBUG,"GetBaryCenter\n");
+    INITMSG("GetBaryCenter\n");
     const PMeshInfo& aMeshInfo = theCellInfo.GetMeshInfo();
     TInt aDim = aMeshInfo->GetDim();
     static TInt aNbGauss = 1;
@@ -1935,7 +1927,7 @@ namespace MED
 
     TInt aConnDim = theCellInfo.GetConnDim();
 
-    INITMSGA(MYDEBUG,0,
+    INITMSGA(0,
              "- aDim = "<<aDim<<
              "; aNbGauss = "<<aNbGauss<<
              "; aNbElem = "<<aNbElem<<
@@ -1965,21 +1957,22 @@ namespace MED
       }
     }
 
-#ifdef _DEBUG_
-    for(TInt anElemId = 0; anElemId < aNbElem; anElemId++){
-      TCoordSliceArr aCoordSliceArr = theGaussCoord.GetCoordSliceArr(anElemId);
-      INITMSG(MYVALUEDEBUG,"");
-      for(TInt aGaussId = 0; aGaussId < aNbGauss; aGaussId++){
-        TCoordSlice& aCoordSlice = aCoordSliceArr[aGaussId];
-        ADDMSG(MYVALUEDEBUG,"{");
-        for(TInt aDimId = 0; aDimId < aDim; aDimId++){
-          ADDMSG(MYVALUEDEBUG,aCoordSlice[aDimId]<<" ");
+    if (SALOME::VerbosityActivated())
+    {
+      for(TInt anElemId = 0; anElemId < aNbElem; anElemId++){
+        TCoordSliceArr aCoordSliceArr = theGaussCoord.GetCoordSliceArr(anElemId);
+        INITMSG("");
+        for(TInt aGaussId = 0; aGaussId < aNbGauss; aGaussId++){
+          TCoordSlice& aCoordSlice = aCoordSliceArr[aGaussId];
+          ADDMSG("{");
+          for(TInt aDimId = 0; aDimId < aDim; aDimId++){
+            ADDMSG(aCoordSlice[aDimId]<<" ");
+          }
+          ADDMSG("} ");
         }
-        ADDMSG(MYVALUEDEBUG,"} ");
+        ADDMSG(std::endl);
       }
-      ADDMSG(MYVALUEDEBUG,std::endl);
     }
-#endif
 
     return true;
   }
@@ -1992,7 +1985,7 @@ namespace MED
                 const TElemNum& theElemNum,
                 EModeSwitch theMode)
   {
-    INITMSG(MYDEBUG,"GetBaryCenter\n");
+    INITMSG("GetBaryCenter\n");
     const PMeshInfo& aMeshInfo = thePolygoneInfo.GetMeshInfo();
     TInt aDim = aMeshInfo->GetDim();
     static TInt aNbGauss = 1;
@@ -2006,7 +1999,7 @@ namespace MED
 
     theGaussCoord.Init(aNbElem,aNbGauss,aDim,theMode);
 
-    INITMSGA(MYDEBUG,0,
+    INITMSGA(0,
              "- aDim = "<<aDim<<
              "; aNbGauss = "<<aNbGauss<<
              "; aNbElem = "<<aNbElem<<
@@ -2050,7 +2043,7 @@ namespace MED
                 const TElemNum& theElemNum,
                 EModeSwitch theMode)
   {
-    INITMSG(MYDEBUG,"GetBaryCenter\n");
+    INITMSG("GetBaryCenter\n");
     const PMeshInfo& aMeshInfo = thePolyedreInfo.GetMeshInfo();
     TInt aDim = aMeshInfo->GetDim();
     static TInt aNbGauss = 1;
@@ -2064,7 +2057,7 @@ namespace MED
 
     theGaussCoord.Init(aNbElem,aNbGauss,aDim,theMode);
 
-    INITMSGA(MYDEBUG,0,
+    INITMSGA(0,
              "- aDim = "<<aDim<<
              "; aNbGauss = "<<aNbGauss<<
              "; aNbElem = "<<aNbElem<<
index fa6bb1a4de0bf5015671fba9a1e4a2057cd2910c..87ace10afeec225d9c7582708d84727b590aa248 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a4e1e229e0de9a1a4123bdc53339a40f1e602730..e650cd5cb05dc6243f01235181a02d7436f3a866 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d232db7cf5d599e2c4a1a6f7811f761bd3e7d4e3..9c52c90ba3816c86744120117962314f81458be4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -31,9 +31,7 @@
 #include <valarray>
 #include <stdexcept>
 
-//#if defined(_DEBUG_)
 #  define MED_TCSLICE_CHECK_RANGE
-//#endif
 
 namespace MED
 {
index c04113bc43a3a4d7e3a16e80243b606d945cb532..7bc99345ff11ac92d7c91920ef7f43f42ec793c0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 40d78ebd6c25abfb7ed2910d9ee209dae75c007e..08e51e2bd99ae2986660bc837e0f029cc32e83dc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 09634f89167e5ee04e62c74b5b4b6e1a3f10a74b..c03b9faa3445f31be333ef58a40036d24e867c0d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2021  CEA/DEN, EDF R&D
+// Copyright (C) 2021-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3197b6b6dbbf6a4547413b674a197ed3e7d84362..5ab4bd3d4c5217ef0ddcbaa91b465cd5cded2e39 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2db125dd54175ca49af3295f696f549c7e52ea08..3119dfa745f6cfa8e752a96a37f51ae5cca004f7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include "MED_Utilities.hxx"
 #include "MED_Common.hxx"
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-//static int MYDEBUG = 0; // unused in release mode
-#endif
-
 int MED::PrefixPrinter::myCounter = 0;
 
 MED::PrefixPrinter::PrefixPrinter(bool theIsActive):
@@ -36,7 +30,8 @@ MED::PrefixPrinter::PrefixPrinter(bool theIsActive):
 {
   if(myIsActive)
     myCounter++;
-  MSG(MYDEBUG,"MED::PrefixPrinter::PrefixPrinter(...)- "<<myCounter);
+    
+  MSG("MED::PrefixPrinter::PrefixPrinter(...)- "<<myCounter);
 }
 
 MED::PrefixPrinter::~PrefixPrinter() noexcept(false)
index 2f718e9f5a044088cf616ff9ab7c7c0946f1fc6d..2caff59565a35491e26ce01ba3e83bd41781de67 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -24,6 +24,7 @@
 #define MED_Utilities_HeaderFile
 
 #include "MED_WrapperDef.hxx"
+#include "utilities.h"
 
 #include <iostream>
 #include <sstream>
@@ -45,19 +46,11 @@ namespace MED
   };
 }
 
-#ifdef _DEBUG_
-  #define MSG(deb,msg) if(deb) std::cout<<MED::PrefixPrinter::GetPrefix()<<msg<<" ("<<__FILE__<<" ["<<__LINE__<<"])\n"
-  #define BEGMSG(deb,msg) if(deb) std::cout<<MED::PrefixPrinter::GetPrefix()<<msg
-  #define INITMSGA(deb,lev,msg) MED::PrefixPrinter aPrefixPrinter_##lev(deb); BEGMSG(deb,msg)
-  #define INITMSG(deb,msg) INITMSGA(deb,,msg)
-  #define ADDMSG(deb,msg) if(deb) std::cout<<msg
-#else // _DEBUG_
-  #define MSG(deb,msg)
-  #define BEGMSG(deb,msg)
-  #define INITMSGA(deb,lev,msg)
-  #define INITMSG(deb,msg)
-  #define ADDMSG(deb,msg)
-#endif // _DEBUG_
+#define MSG(msg) if(SALOME::VerbosityActivated()) std::cout<<MED::PrefixPrinter::GetPrefix()<<msg<<" ("<<__FILE__<<" ["<<__LINE__<<"])\n"; else (void)0
+#define BEGMSG(msg) if(SALOME::VerbosityActivated()) std::cout<<MED::PrefixPrinter::GetPrefix()<<msg; else (void)0
+#define INITMSGA(lev,msg) if(SALOME::VerbosityActivated()) { MED::PrefixPrinter aPrefixPrinter_##lev(true); BEGMSG(msg); } else (void)0
+#define INITMSG(msg) INITMSGA(,msg)
+#define ADDMSG(msg) if(SALOME::VerbosityActivated()) std::cout<<msg; else (void)0
 
 #ifndef EXCEPTION
 
index 88d4492505ec5fe18179e718a37f9e070b12e586..f0b0577fcc0f95760022db667f1627c9874e837c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -26,9 +26,7 @@
 #include <vector>
 #include <stdexcept>
 
-//#if defined(_DEBUG_)
 #  define MED_TVECTOR_CHECK_RANGE
-//#endif
 
 namespace MED
 {
index b0c56200e2a7555f564fe80262f1fc409247dca5..1510e3c04ebdad1f24f2d35a0175e5a82e64c44d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 
 #include <boost/version.hpp>
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-static int MYVALUEDEBUG = 0;
-#else
-// static int MYDEBUG = 0;      // unused in release mode
-// static int MYVALUEDEBUG = 0; // unused in release mode
-#endif
-
 namespace MED
 {
   //---------------------------------------------------------------
@@ -56,13 +48,13 @@ namespace MED
 #else
     boost::detail::thread::lock_ops<TWrapper::TMutex>::lock(myWrapper->myMutex);
 #endif
-    INITMSG(MYDEBUG, "TLockProxy() - this -"<<this<<"; myWrapper = "<<myWrapper<<std::endl);
+    INITMSG("TLockProxy() - this -"<<this<<"; myWrapper = "<<myWrapper<<std::endl);
   }
 
   TLockProxy
   ::~TLockProxy()
   {
-    INITMSG(MYDEBUG, "~TLockProxy() - this -"<<this<<"; myWrapper = "<<myWrapper<<std::endl);
+    INITMSG("~TLockProxy() - this -"<<this<<"; myWrapper = "<<myWrapper<<std::endl);
 #if BOOST_VERSION >= 103500
     myWrapper->myMutex.unlock();
 #else
@@ -168,7 +160,7 @@ namespace MED
   void
   Print(SharedPtr<TimeStampValueType> theTimeStampValue)
   {
-    INITMSG(MYDEBUG,"Print - TimeStampValue\n");
+    INITMSG("Print - TimeStampValue\n");
     typename TimeStampValueType::TTGeom2Value& aGeom2Value = theTimeStampValue->myGeom2Value;
     typename TimeStampValueType::TTGeom2Value::const_iterator anIter = aGeom2Value.begin();
     for (; anIter != aGeom2Value.end(); anIter++) {
@@ -177,22 +169,22 @@ namespace MED
       TInt aNbElem = aMeshValue.myNbElem;
       TInt aNbGauss = aMeshValue.myNbGauss;
       TInt aNbComp = aMeshValue.myNbComp;
-      INITMSG(MYDEBUG, "aGeom = "<<aGeom<<" - "<<aNbElem<<": ");
+      INITMSG("aGeom = "<<aGeom<<" - "<<aNbElem<<": ");
       for (TInt iElem = 0; iElem < aNbElem; iElem++) {
         typename TimeStampValueType::TTMeshValue::TCValueSliceArr aValueSliceArr =
           aMeshValue.GetGaussValueSliceArr(iElem);
-        ADDMSG(MYVALUEDEBUG, "{");
+        ADDMSG("{");
         for (TInt iGauss = 0; iGauss < aNbGauss; iGauss++) {
           const typename TimeStampValueType::TTMeshValue::TCValueSlice& aValueSlice =
             aValueSliceArr[iGauss];
           for (TInt iComp = 0; iComp < aNbComp; iComp++) {
-            ADDMSG(MYVALUEDEBUG, aValueSlice[iComp]<<" ");
+            ADDMSG(aValueSlice[iComp]<<" ");
           }
-          ADDMSG(MYVALUEDEBUG, "| ");
+          ADDMSG("| ");
         }
-        ADDMSG(MYVALUEDEBUG, "} ");
+        ADDMSG("} ");
       }
-      ADDMSG(MYDEBUG, "\n");
+      ADDMSG("\n");
     }
   }
 
@@ -341,7 +333,7 @@ namespace MED
     //if (aRet == 0)
     //  aRet = MEDunvCr(myFile->Id(),&aMeshName);
 
-    INITMSG(MYDEBUG, "TWrapper::SetMeshInfo - MED_MODE_ACCES = "<<theMode<<"; aRet = "<<aRet<<std::endl);
+    INITMSG("TWrapper::SetMeshInfo - MED_MODE_ACCES = "<<theMode<<"; aRet = "<<aRet<<std::endl);
 
     if (theErr)
       *theErr = aRet;
@@ -529,7 +521,7 @@ namespace MED
                             aNbGroup,
                             &aGroupNames);
 
-    INITMSG(MYDEBUG, "TWrapper::SetFamilyInfo - MED_MODE_ACCES = "<<theMode<<"; aRet = "<<aRet<<std::endl);
+    INITMSG("TWrapper::SetFamilyInfo - MED_MODE_ACCES = "<<theMode<<"; aRet = "<<aRet<<std::endl);
 
     if (theErr)
       *theErr = aRet;
@@ -602,17 +594,18 @@ namespace MED
     PFamilyInfo anInfo = CrFamilyInfo(theMeshInfo, aNbGroup, aNbAttr);
     GetFamilyInfo(theId, *anInfo, theErr);
 
-#ifdef _DEBUG_
-    std::string aName = anInfo->GetName();
-    INITMSG(MYDEBUG, "GetPFamilyInfo - aFamilyName = '"<<aName<<
-            "'; andId = "<<anInfo->GetId()<<
-            "; aNbAttr = "<<aNbAttr<<
-            "; aNbGroup = "<<aNbGroup<<"\n");
-    for (TInt iGroup = 0; iGroup < aNbGroup; iGroup++) {
-      aName = anInfo->GetGroupName(iGroup);
-      INITMSG(MYDEBUG, "aGroupName = '"<<aName<<"'\n");
+    if (SALOME::VerbosityActivated())
+    {
+      std::string aName = anInfo->GetName();
+      INITMSG("GetPFamilyInfo - aFamilyName = '"<<aName<<
+              "'; andId = "<<anInfo->GetId()<<
+              "; aNbAttr = "<<aNbAttr<<
+              "; aNbGroup = "<<aNbGroup<<"\n");
+      for (TInt iGroup = 0; iGroup < aNbGroup; iGroup++) {
+        aName = anInfo->GetGroupName(iGroup);
+        INITMSG("aGroupName = '"<<aName<<"'\n");
+      }
     }
-#endif
 
     return anInfo;
   }
@@ -1163,37 +1156,38 @@ namespace MED
     PNodeInfo anInfo = CrNodeInfo(theMeshInfo, aNbElems);
     GetNodeInfo(*anInfo, theErr);
 
-#ifdef _DEBUG_
-    TInt aDim = theMeshInfo->myDim;
-    TInt aNbElem = anInfo->GetNbElem();
-    INITMSG(MYDEBUG, "GetPNodeInfo: ");
+    if (SALOME::VerbosityActivated())
     {
-      INITMSG(MYDEBUG, "aCoords: "<<aNbElem<<": ");
-      TNodeCoord& aCoord = anInfo->myCoord;
-      for (TInt iElem = 0; iElem < aNbElem; iElem++) {
-        for (TInt iDim = 0, anId = iElem*aDim; iDim < aDim; iDim++, anId++) {
-          ADDMSG(MYVALUEDEBUG, aCoord[anId]<<",");
+      TInt aDim = theMeshInfo->myDim;
+      TInt aNbElem = anInfo->GetNbElem();
+      INITMSG("GetPNodeInfo: ");
+      {
+        INITMSG("aCoords: "<<aNbElem<<": ");
+        TNodeCoord& aCoord = anInfo->myCoord;
+        for (TInt iElem = 0; iElem < aNbElem; iElem++) {
+          for (TInt iDim = 0, anId = iElem*aDim; iDim < aDim; iDim++, anId++) {
+            ADDMSG(aCoord[anId]<<",");
+          }
+          ADDMSG(" ");
         }
-        ADDMSG(MYVALUEDEBUG, " ");
-      }
-      ADDMSG(MYDEBUG, std::endl);
-
-      BEGMSG(MYVALUEDEBUG, "GetFamNum: ");
-      for (TInt iElem = 0; iElem < aNbElem; iElem++) {
-        ADDMSG(MYVALUEDEBUG, anInfo->GetFamNum(iElem)<<", ");
-      }
-      ADDMSG(MYVALUEDEBUG, std::endl);
+        ADDMSG(std::endl);
 
-      if (anInfo->IsElemNum()) {
-        BEGMSG(MYVALUEDEBUG, "GetElemNum: ");
+        BEGMSG("GetFamNum: ");
         for (TInt iElem = 0; iElem < aNbElem; iElem++) {
-          ADDMSG(MYVALUEDEBUG, anInfo->GetElemNum(iElem)<<", ");
+          ADDMSG(anInfo->GetFamNum(iElem)<<", ");
+        }
+        ADDMSG(std::endl);
+
+        if (anInfo->IsElemNum()) {
+          BEGMSG("GetElemNum: ");
+          for (TInt iElem = 0; iElem < aNbElem; iElem++) {
+            ADDMSG(anInfo->GetElemNum(iElem)<<", ");
+          }
+          ADDMSG(std::endl);
         }
-        ADDMSG(MYVALUEDEBUG, std::endl);
       }
+      ADDMSG(std::endl);
     }
-    ADDMSG(MYDEBUG, std::endl);
-#endif
 
     return anInfo;
   }
@@ -1548,20 +1542,21 @@ namespace MED
     PPolygoneInfo anInfo = CrPolygoneInfo(theMeshInfo, theEntity, theGeom, aNbElem, aConnSize, theConnMode);
     GetPolygoneInfo(anInfo);
 
-#ifdef _DEBUG_
-    INITMSG(MYDEBUG, "GetPPolygoneInfo"<<
-            " - theGeom = "<<theGeom<<
-            "; aNbElem = "<<aNbElem<<": ");
-    for (TInt iElem = 1; iElem < aNbElem; iElem++) {
-      TCConnSlice aConnSlice = anInfo->GetConnSlice(iElem);
-      TInt aConnDim = aConnSlice.size();
-      for (TInt iConn = 0; iConn < aConnDim; iConn++) {
-        ADDMSG(MYVALUEDEBUG, aConnSlice[iConn]<<",");
+    if (SALOME::VerbosityActivated())
+    {
+      INITMSG("GetPPolygoneInfo"<<
+              " - theGeom = "<<theGeom<<
+              "; aNbElem = "<<aNbElem<<": ");
+      for (TInt iElem = 1; iElem < aNbElem; iElem++) {
+        TCConnSlice aConnSlice = anInfo->GetConnSlice(iElem);
+        TInt aConnDim = aConnSlice.size();
+        for (TInt iConn = 0; iConn < aConnDim; iConn++) {
+          ADDMSG(aConnSlice[iConn]<<",");
+        }
+        ADDMSG(" ");
       }
-      ADDMSG(MYDEBUG, " ");
+      ADDMSG(std::endl);
     }
-    ADDMSG(MYDEBUG, std::endl);
-#endif
 
     return anInfo;
   }
@@ -1858,27 +1853,28 @@ namespace MED
     PPolyedreInfo anInfo = CrPolyedreInfo(theMeshInfo, theEntity, theGeom, aNbElem, aNbFaces, aConnSize, theConnMode);
     GetPolyedreInfo(anInfo);
 
-#ifdef _DEBUG_
-    INITMSG(MYDEBUG, "GetPPolyedreInfo"<<
-            " - theGeom = "<<theGeom<<
-            "; aNbElem = "<<aNbElem<<": ");
-    for (TInt iElem = 0; iElem < aNbElem; iElem++) {
-      TCConnSliceArr aConnSliceArr = anInfo->GetConnSliceArr(iElem);
-      TInt aNbFaces = aConnSliceArr.size();
-      ADDMSG(MYDEBUG, "{");
-      for (TInt iFace = 0; iFace < aNbFaces; iFace++) {
-        TCConnSlice aConnSlice = aConnSliceArr[iFace];
-        TInt aNbConn = aConnSlice.size();
-        ADDMSG(MYDEBUG, "[");
-        for (TInt iConn = 0; iConn < aNbConn; iConn++) {
-          ADDMSG(MYVALUEDEBUG, aConnSlice[iConn]<<",");
+    if (SALOME::VerbosityActivated())
+    {
+      INITMSG("GetPPolyedreInfo"<<
+              " - theGeom = "<<theGeom<<
+              "; aNbElem = "<<aNbElem<<": ");
+      for (TInt iElem = 0; iElem < aNbElem; iElem++) {
+        TCConnSliceArr aConnSliceArr = anInfo->GetConnSliceArr(iElem);
+        TInt aNbFaces = aConnSliceArr.size();
+        ADDMSG("{");
+        for (TInt iFace = 0; iFace < aNbFaces; iFace++) {
+          TCConnSlice aConnSlice = aConnSliceArr[iFace];
+          TInt aNbConn = aConnSlice.size();
+          ADDMSG("[");
+          for (TInt iConn = 0; iConn < aNbConn; iConn++) {
+            ADDMSG(aConnSlice[iConn]<<",");
+          }
+          ADDMSG("] ");
         }
-        ADDMSG(MYDEBUG, "] ");
+        ADDMSG("} ");
       }
-      ADDMSG(MYDEBUG, "} ");
+      ADDMSG(std::endl);
     }
-    ADDMSG(MYDEBUG, std::endl);
-#endif
 
     return anInfo;
   }
@@ -2279,34 +2275,35 @@ namespace MED
     PCellInfo anInfo = CrCellInfo(theMeshInfo, theEntity, theGeom, aNbElem, theConnMode);
     GetCellInfo(anInfo, theErr);
 
-#ifdef _DEBUG_
-    TInt aConnDim = anInfo->GetConnDim();
-    INITMSG(MYDEBUG, "GetPCellInfo - theEntity = "<<theEntity<<"; theGeom = "<<theGeom<<"; aConnDim: "<<aConnDim<<"\n");
-    BEGMSG(MYDEBUG, "GetPCellInfo - aNbElem: "<<aNbElem<<": ");
-    for (TInt iElem = 0; iElem < aNbElem; iElem++) {
-      TCConnSlice aConnSlice = anInfo->GetConnSlice(iElem);
-      for (TInt iConn = 0; iConn < aConnDim; iConn++) {
-        ADDMSG(MYVALUEDEBUG, aConnSlice[iConn]<<",");
+    if (SALOME::VerbosityActivated())
+    {
+      TInt aConnDim = anInfo->GetConnDim();
+      INITMSG("GetPCellInfo - theEntity = "<<theEntity<<"; theGeom = "<<theGeom<<"; aConnDim: "<<aConnDim<<"\n");
+      BEGMSG("GetPCellInfo - aNbElem: "<<aNbElem<<": ");
+      for (TInt iElem = 0; iElem < aNbElem; iElem++) {
+        TCConnSlice aConnSlice = anInfo->GetConnSlice(iElem);
+        for (TInt iConn = 0; iConn < aConnDim; iConn++) {
+          ADDMSG(aConnSlice[iConn]<<",");
+        }
+        ADDMSG(" ");
       }
-      ADDMSG(MYVALUEDEBUG, " ");
-    }
-    ADDMSG(MYDEBUG, std::endl);
-
-    BEGMSG(MYVALUEDEBUG, "GetPCellInfo - GetFamNum: ");
-    for (TInt iElem = 0; iElem < aNbElem; iElem++) {
-      ADDMSG(MYVALUEDEBUG, anInfo->GetFamNum(iElem)<<", ");
-    }
-    ADDMSG(MYVALUEDEBUG, std::endl);
+      ADDMSG(std::endl);
 
-    if (anInfo->IsElemNum()) {
-      BEGMSG(MYVALUEDEBUG, "GetPCellInfo - GetElemNum: ");
+      BEGMSG("GetPCellInfo - GetFamNum: ");
       for (TInt iElem = 0; iElem < aNbElem; iElem++) {
-        ADDMSG(MYVALUEDEBUG, anInfo->GetElemNum(iElem)<<", ");
+        ADDMSG(anInfo->GetFamNum(iElem)<<", ");
+      }
+      ADDMSG(std::endl);
+
+      if (anInfo->IsElemNum()) {
+        BEGMSG("GetPCellInfo - GetElemNum: ");
+        for (TInt iElem = 0; iElem < aNbElem; iElem++) {
+          ADDMSG(anInfo->GetElemNum(iElem)<<", ");
+        }
+        ADDMSG(std::endl);
       }
-      ADDMSG(MYVALUEDEBUG, std::endl);
+      ADDMSG(std::endl);
     }
-    ADDMSG(MYDEBUG, std::endl);
-#endif
 
     return anInfo;
   }
@@ -2687,14 +2684,14 @@ namespace MED
     PFieldInfo anInfo = CrFieldInfo(theMeshInfo, aNbComp);
     GetFieldInfo(theId, *anInfo, theErr);
 
-#ifdef _DEBUG_
-    INITMSG(MYDEBUG,
-            "GetPFieldInfo "<<
-            "- aName = '"<<anInfo->GetName()<<"'"<<
-            "; aType = "<<anInfo->GetType()<<
-            "; aNbComp = "<<aNbComp<<
-            std::endl);
-#endif
+    if (SALOME::VerbosityActivated())
+    {
+      INITMSG("GetPFieldInfo "<<
+              "- aName = '"<<anInfo->GetName()<<"'"<<
+              "; aType = "<<anInfo->GetType()<<
+              "; aNbComp = "<<aNbComp<<
+              std::endl);
+    }
 
     return anInfo;
   }
@@ -2896,14 +2893,12 @@ namespace MED
           }
         bool anIsSatisfied =(nval > 0);
         if (anIsSatisfied) {
-          INITMSG(MYDEBUG,
-                  "GetNbTimeStamps aNbTimeStamps = "<<aNbStamps<<
+          INITMSG("GetNbTimeStamps aNbTimeStamps = "<<aNbStamps<<
                   "; aGeom = "<<aGeom<<"; anEntity = "<<anEntity<<"\n");
           if (anIsPerformAdditionalCheck) {
             anIsSatisfied = !strcmp(&aMeshName[0], &aMeshInfo.myName[0]);
             if (!anIsSatisfied) {
-              INITMSG(MYDEBUG,
-                      "GetNbTimeStamps aMeshName = '"<<&aMeshName[0]<<"' != "<<
+              INITMSG("GetNbTimeStamps aMeshName = '"<<&aMeshName[0]<<"' != "<<
                       "; aMeshInfo.myName = '"<<&aMeshInfo.myName[0]<<"'\n");
             }
           }
@@ -3062,15 +3057,16 @@ namespace MED
     PTimeStampInfo anInfo = CrTimeStampInfo(theFieldInfo, theEntity, theGeom2Size);
     GetTimeStampInfo(theId, *anInfo, theErr);
 
-#ifdef _DEBUG_
-    INITMSG(MYDEBUG, "GetPTimeStampInfo - anEntity = "<<anInfo->GetEntity()<<"\n");
-    TGeom2NbGauss& aGeom2NbGauss = anInfo->myGeom2NbGauss;
-    TGeom2NbGauss::const_iterator anIter = aGeom2NbGauss.begin();
-    for (; anIter != aGeom2NbGauss.end(); anIter++) {
-      const EGeometrieElement& aGeom = anIter->first;
-      INITMSG(MYDEBUG, "aGeom = "<<aGeom<<" - "<<aGeom2NbGauss[aGeom]<<";\n");
+    if (SALOME::VerbosityActivated())
+    {
+      INITMSG("GetPTimeStampInfo - anEntity = "<<anInfo->GetEntity()<<"\n");
+      TGeom2NbGauss& aGeom2NbGauss = anInfo->myGeom2NbGauss;
+      TGeom2NbGauss::const_iterator anIter = aGeom2NbGauss.begin();
+      for (; anIter != aGeom2NbGauss.end(); anIter++) {
+        const EGeometrieElement& aGeom = anIter->first;
+        INITMSG("aGeom = "<<aGeom<<" - "<<aGeom2NbGauss[aGeom]<<";\n");
+      }
     }
-#endif
 
     return anInfo;
   }
@@ -3285,8 +3281,7 @@ namespace MED
                                        aNbComp);
       TInt aValueSize = theTimeStampValue->GetValueSize(aGeom);
 
-      INITMSG(MYDEBUG,
-              "TWrapper::GetTimeStampValue - aGeom = "<<aGeom<<
+      INITMSG("TWrapper::GetTimeStampValue - aGeom = "<<aGeom<<
               "; aNbVal = "<<aNbVal<<
               "; aNbValue = "<<aNbValue<<
               "; aNbGauss = "<<aNbGauss<<
@@ -3476,7 +3471,7 @@ namespace MED
 
     }
 
-    INITMSG(MYDEBUG, "TWrapper::SetTimeStampValue - MED_MODE_ACCES = "<<theMode<<"; aRet = "<<aRet<<std::endl);
+    INITMSG("TWrapper::SetTimeStampValue - MED_MODE_ACCES = "<<theMode<<"; aRet = "<<aRet<<std::endl);
   }
 
   //----------------------------------------------------------------------------
@@ -3559,12 +3554,13 @@ namespace MED
                       theMKey2Profile,
                       theKey2Gauss,
                       theErr);
-#ifdef _DEBUG_
-    if (aFieldInfo->GetType() == eFLOAT64)
-      Print<TFloatTimeStampValue>(anInfo);
-    else
-      Print<TIntTimeStampValue>(anInfo);
-#endif
+    if (SALOME::VerbosityActivated())
+    {
+      if (aFieldInfo->GetType() == eFLOAT64)
+        Print<TFloatTimeStampValue>(anInfo);
+      else
+        Print<TIntTimeStampValue>(anInfo);
+    }
     return anInfo;
   }
 
@@ -3694,33 +3690,32 @@ namespace MED
     GetGrilleInfo(anInfo);
     anInfo->SetGrilleType(type);
 
-#ifdef _DEBUG_
-    INITMSG(MYDEBUG, "GetPGrilleInfo: ");
+    if (SALOME::VerbosityActivated())
     {
+      INITMSG("GetPGrilleInfo: ");
+
       TInt aNbElem = anInfo->GetNbNodes();
-      BEGMSG(MYVALUEDEBUG, "GetFamNumNode: ");
+      BEGMSG("GetFamNumNode: ");
       for (TInt iElem = 0; iElem < aNbElem; iElem++) {
-        ADDMSG(MYVALUEDEBUG, anInfo->GetFamNumNode(iElem)<<", ");
+        ADDMSG(anInfo->GetFamNumNode(iElem)<<", ");
       }
       TInt aNbCells = anInfo->GetNbCells();
-      BEGMSG(MYVALUEDEBUG, "GetFamNum: ");
+      BEGMSG("GetFamNum: ");
       for (TInt iElem = 0; iElem < aNbCells; iElem++) {
-        ADDMSG(MYVALUEDEBUG, anInfo->GetFamNum(iElem)<<", ");
+        ADDMSG(anInfo->GetFamNum(iElem)<<", ");
       }
-      ADDMSG(MYVALUEDEBUG, std::endl);
-      BEGMSG(MYVALUEDEBUG, "GetCoordName: ");
+      ADDMSG(std::endl);
+      BEGMSG("GetCoordName: ");
       for (TInt iElem = 0; iElem < theMeshInfo->GetDim(); iElem++) {
-        ADDMSG(MYVALUEDEBUG, anInfo->GetCoordName(iElem)<<", ");
+        ADDMSG(anInfo->GetCoordName(iElem)<<", ");
       }
-      ADDMSG(MYVALUEDEBUG, std::endl);
-      BEGMSG(MYVALUEDEBUG, "GetCoordUnit: ");
+      ADDMSG(std::endl);
+      BEGMSG("GetCoordUnit: ");
       for (TInt iElem = 0; iElem < theMeshInfo->GetDim(); iElem++) {
-        ADDMSG(MYVALUEDEBUG, anInfo->GetCoordUnit(iElem)<<", ");
+        ADDMSG(anInfo->GetCoordUnit(iElem)<<", ");
       }
-      ADDMSG(MYVALUEDEBUG, std::endl);
-
+      ADDMSG(std::endl);
     }
-#endif
 
     return anInfo;
   }
index ddd3a159b9209f2c98febc0f44980b64451aafca..427c3d196e07fe4d5a5681236d0fa20d5cfc8f1a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1ddf0cd0a40e810ebdee186fc3017d31b48eb772..8dfcee23c1cc0ea77516b20eab110dc15707baef 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 3d77327aec31d3c0d945de6be3ca006a214a3d3c..a1f79c4bc396d10ed03b7ae8dd2226c9c4b2a61e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/src/MEFISTO2/CMakeLists.txt b/src/MEFISTO2/CMakeLists.txt
deleted file mode 100644 (file)
index edf6a46..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-# Copyright (C) 2012-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
-#
-
-# --- options ---
-# additional include directories
-INCLUDE_DIRECTORIES(
-  ${KERNEL_INCLUDE_DIRS}
-  ${OpenCASCADE_INCLUDE_DIR}
-  ${HDF5_INCLUDE_DIRS}
-  ${PLATFORM_INCLUDES}
-)
-
-# additional preprocessor / compiler flags
-ADD_DEFINITIONS(
-  ${OpenCASCADE_DEFINITIONS}
-)
-
-# libraries to link to
-SET(_link_LIBRARIES
-  ${OpenCASCADE_FoundationClasses_LIBRARIES}
-  ${KERNEL_SALOMELocalTrace}
-)
-
-# --- headers ---
-
-# header files / no moc processing
-SET(MEFISTO2D_HEADERS
-  aptrte.h 
-  Rn.h
-)
-
-# --- sources ---
-
-IF(${F2C_FOUND})
-ADD_DEFINITIONS()
-  SET(F2C_INPUT ${CMAKE_CURRENT_SOURCE_DIR}/trte.f)
-  SET(F2C_OUTPUT trte.c)
-
-  # additional include directories
-  INCLUDE_DIRECTORIES(${f2c_INCLUDE_DIRS})
-
-  # additional preprocessor / compiler flags
-  ADD_DEFINITIONS(-DF2C_BUILD)
-
-
-  # libraries to link to
-  SET(_link_LIBRARIES ${_link_LIBRARIES} ${f2c_LIBRARIES})
-
-  # generate C sources from Fortran
-  ADD_CUSTOM_COMMAND(
-    OUTPUT ${F2C_OUTPUT}
-    COMMAND ${f2c_GENERATOR} ${F2C_INPUT}
-    MAIN_DEPENDENCY ${F2C_INPUT}
-    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-  )  
-  # sources / static
-  SET(MEFISTO2D_SOURCES
-      aptrte.cxx
-      ${F2C_OUTPUT}
-  )
-ELSE(${F2C_FOUND})
-  # sources / static
-  SET(MEFISTO2D_SOURCES
-    aptrte.cxx
-    trte.f
-  )
-ENDIF(${F2C_FOUND})
-
-# --- rules ---
-
-ADD_LIBRARY(MEFISTO2D ${MEFISTO2D_SOURCES})
-TARGET_LINK_LIBRARIES(MEFISTO2D ${_link_LIBRARIES} )
-
-#Ignore MSVCRT.lib on WINDOWS in case using f2c code generator
-IF(WIN32)
-  IF(CMAKE_BUILD_TYPE STREQUAL Debug)
-    IF(${F2C_FOUND})
-      SET_TARGET_PROPERTIES(MEFISTO2D PROPERTIES LINK_FLAGS "/NODEFAULTLIB:MSVCRT")
-    ENDIF(${F2C_FOUND})
-  ENDIF()
-ENDIF(WIN32)
-
-INSTALL(TARGETS MEFISTO2D EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
-INSTALL(FILES ${MEFISTO2D_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
diff --git a/src/MEFISTO2/Rn.h b/src/MEFISTO2/Rn.h
deleted file mode 100644 (file)
index 8699381..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-// MEFISTO :  library to compute 2D triangulation from segmented boundaries
-//
-// Copyright (C) 2006-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
-//
-//  File   : Rn.h
-//  Module : SMESH
-//  Authors: Frederic HECHT & Alain PERRONNET
-//  Date   : 13 novembre 2006
-
-#ifndef Rn__h
-#define Rn__h
-
-#include <gp_Pnt.hxx>      //Dans OpenCascade
-#include <gp_Vec.hxx>      //Dans OpenCascade
-#include <gp_Dir.hxx>      //Dans OpenCascade
-
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// BUT:   Definir les espaces affines R R2 R3 R4 soit Rn pour n=1,2,3,4
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// AUTEUR : Frederic HECHT      ANALYSE NUMERIQUE UPMC  PARIS   OCTOBRE   2000
-// MODIFS : Alain    PERRONNET  ANALYSE NUMERIQUE UPMC  PARIS   NOVEMBRE  2000
-//...............................................................................
-#include <iostream>
-#include <cmath>
-
-
-template<class T> inline T Abs (const T &a){return a <0 ? -a : a;}
-template<class T> inline void Echange (T& a,T& b) {T c=a;a=b;b=c;}
-
-template<class T> inline T Min (const T &a,const T &b)  {return a < b ? a : b;}
-template<class T> inline T Max (const T &a,const T & b) {return a > b ? a : b;}
-
-template<class T> inline T Max (const T &a,const T & b,const T & c){return Max(Max(a,b),c);}
-template<class T> inline T Min (const T &a,const T & b,const T & c){return Min(Min(a,b),c);}
-
-template<class T> inline T Max (const T &a,const T & b,const T & c,const T & d)
- {return Max(Max(a,b),Max(c,d));}
-template<class T> inline T Min (const T &a,const T & b,const T & c,const T & d)
- {return Min(Min(a,b),Min(c,d));}
-
-//le type Nom des entites geometriques P L S V O
-//===========
-typedef char Nom[1+24];
-
-//le type N des nombres entiers positifs
-//=========
-#ifndef PCLINUX64
-typedef unsigned long int N;
-#else 
-typedef unsigned int N;
-#endif
-
-//le type Z des nombres entiers relatifs
-//=========
-#ifndef PCLINUX64
-typedef long int Z;
-#else
-typedef int Z;
-#endif
-
-//le type R des nombres "reels"
-//=========
-typedef double R;
-
-//le type XPoint  des coordonnees d'un pixel dans une fenetre
-//==============
-//typedef struct { short int x,y } XPoint;  //en fait ce type est defini dans X11-Window
-                                            // #include <X11/Xlib.h>
-//la classe R2
-//============
-class R2 
-{
-  friend std::ostream& operator << (std::ostream& f, const R2 & P)
-  { f << P.x << ' ' << P.y ; return f; }
-  friend std::istream& operator >> (std::istream& f, R2 & P)
-  { f >> P.x >> P.y ; return f; }
-
-  friend std::ostream& operator << (std::ostream& f, const R2 * P)
-  { f << P->x << ' ' << P->y ; return f; }
-  friend std::istream& operator >> (std::istream& f, R2 * P)
-  { f >> P->x >> P->y ; return f; }
-
-public:
-  R x,y;  //les donnees
-
-  R2 () :x(0),y(0) {}              //les constructeurs
-  R2 (R a,R b)   :x(a),y(b)  {}
-  R2 (R2 A,R2 B) :x(B.x-A.x),y(B.y-A.y)  {} //vecteur defini par 2 points
-
-  R2  operator+(R2 P) const {return R2(x+P.x,y+P.y);}     // Q+P possible
-  R2  operator+=(R2 P)  {x += P.x;y += P.y; return *this;}// Q+=P;
-  R2  operator-(R2 P) const {return R2(x-P.x,y-P.y);}     // Q-P
-  R2  operator-=(R2 P) {x -= P.x;y -= P.y; return *this;} // Q-=P;
-  R2  operator-()const  {return R2(-x,-y);}               // -Q
-  R2  operator+()const  {return *this;}                   // +Q
-  R   operator,(R2 P)const {return x*P.x+y*P.y;} // produit scalaire (Q,P)
-  R   operator^(R2 P)const {return x*P.y-y*P.x;} // produit vectoriel Q^P
-  R2  operator*(R c)const {return R2(x*c,y*c);}  // produit a droite  P*c
-  R2  operator*=(R c)  {x *= c; y *= c; return *this;}
-  R2  operator/(R c)const {return R2(x/c,y/c);}  // division par un reel
-  R2  operator/=(R c)  {x /= c; y /= c; return *this;}
-  R & operator[](int i) {return (&x)[i];}        // la coordonnee i
-  R2  orthogonal() {return R2(-y,x);}    //le vecteur orthogonal dans R2
-  friend R2 operator*(R c,R2 P) {return P*c;}    // produit a gauche c*P
-};
-
-
-//la classe R3
-//============
-class R3
-{
-  friend std::ostream& operator << (std::ostream& f, const R3 & P)
-  { f << P.x << ' ' << P.y << ' ' << P.z ; return f; }
-  friend std::istream& operator >> (std::istream& f, R3 & P)
-  { f >> P.x >> P.y >> P.z ; return f; }
-
-  friend std::ostream& operator << (std::ostream& f, const R3 * P)
-  { f << P->x << ' ' << P->y << ' ' << P->z ; return f; }
-  friend std::istream& operator >> (std::istream& f, R3 * P)
-  { f >> P->x >> P->y >> P->z ; return f; }
-
-public:  
-  R  x,y,z;  //les 3 coordonnees
-  R3 () :x(0),y(0),z(0) {}  //les constructeurs
-  R3 (R a,R b,R c):x(a),y(b),z(c)  {}                  //Point ou Vecteur (a,b,c)
-  R3 (R3 A,R3 B):x(B.x-A.x),y(B.y-A.y),z(B.z-A.z)  {}  //Vecteur AB
-
-  R3 (gp_Pnt P) : x(P.X()), y(P.Y()), z(P.Z()) {}      //Point     d'OpenCascade
-  R3 (gp_Vec V) : x(V.X()), y(V.Y()), z(V.Z()) {}      //Vecteur   d'OpenCascade
-  R3 (gp_Dir P) : x(P.X()), y(P.Y()), z(P.Z()) {}      //Direction d'OpenCascade
-
-  R3   operator+(R3 P)const  {return R3(x+P.x,y+P.y,z+P.z);}
-  R3   operator+=(R3 P)  {x += P.x; y += P.y; z += P.z; return *this;}
-  R3   operator-(R3 P)const  {return R3(x-P.x,y-P.y,z-P.z);}
-  R3   operator-=(R3 P)  {x -= P.x; y -= P.y; z -= P.z; return *this;}
-  R3   operator-()const  {return R3(-x,-y,-z);}
-  R3   operator+()const  {return *this;}
-  R    operator,(R3 P)const {return  x*P.x+y*P.y+z*P.z;} // produit scalaire
-  R3   operator^(R3 P)const {return R3(y*P.z-z*P.y ,P.x*z-x*P.z, x*P.y-y*P.x);} // produit vectoriel
-  R3   operator*(R c)const {return R3(x*c,y*c,z*c);}
-  R3   operator*=(R c)  {x *= c; y *= c; z *= c; return *this;}
-  R3   operator/(R c)const {return R3(x/c,y/c,z/c);}
-  R3   operator/=(R c)  {x /= c; y /= c; z /= c; return *this;}
-  R  & operator[](int i) {return (&x)[i];}
-  friend R3 operator*(R c,R3 P) {return P*c;}
-
-  R3   operator=(gp_Pnt P) {return R3(P.X(),P.Y(),P.Z());}
-  R3   operator=(gp_Dir P) {return R3(P.X(),P.Y(),P.Z());}
-
-  friend gp_Pnt gp_pnt(R3 xyz) { return gp_Pnt(xyz.x,xyz.y,xyz.z); }
-  //friend gp_Pnt operator=() { return gp_Pnt(x,y,z); }
-  friend gp_Dir gp_dir(R3 xyz) { return gp_Dir(xyz.x,xyz.y,xyz.z); }
-
-  bool  DansPave( R3 & xyzMin, R3 & xyzMax )
-    { return xyzMin.x<=x && x<=xyzMax.x &&
-             xyzMin.y<=y && y<=xyzMax.y &&
-             xyzMin.z<=z && z<=xyzMax.z; }
-};
-
-//la classe R4
-//============
-class R4: public R3
-{
-  friend std::ostream& operator <<(std::ostream& f, const R4 & P )
-  { f << P.x << ' ' << P.y << ' ' << P.z << ' ' << P.omega; return f; }
-  friend std::istream& operator >>(std::istream& f,  R4 & P)
-  { f >> P.x >>  P.y >>  P.z >> P.omega ; return f; }
-
-  friend std::ostream& operator <<(std::ostream& f, const R4 * P )
-  { f << P->x << ' ' << P->y << ' ' << P->z << ' ' << P->omega; return f; }
-  friend std::istream& operator >>(std::istream& f,  R4 * P)
-  { f >> P->x >>  P->y >>  P->z >> P->omega ; return f; }
-
-public:  
-  R  omega;  //la donnee du poids supplementaire
-  R4 () :omega(1.0) {}  //les constructeurs
-  R4 (R a,R b,R c,R d):R3(a,b,c),omega(d) {}
-  R4 (R4 A,R4 B) :R3(B.x-A.x,B.y-A.y,B.z-A.z),omega(B.omega-A.omega) {}
-
-  R4   operator+(R4 P)const  {return R4(x+P.x,y+P.y,z+P.z,omega+P.omega);}
-  R4   operator+=(R4 P)  {x += P.x;y += P.y;z += P.z;omega += P.omega;return *this;}
-  R4   operator-(R4 P)const  {return R4(x-P.x,y-P.y,z-P.z,omega-P.omega);}
-  R4   operator-=(R4 P) {x -= P.x;y -= P.y;z -= P.z;omega -= P.omega;return *this;}
-  R4   operator-()const  {return R4(-x,-y,-z,-omega);}
-  R4   operator+()const  {return *this;}
-  R    operator,(R4 P)const {return  x*P.x+y*P.y+z*P.z+omega*P.omega;} // produit scalaire
-  R4   operator*(R c)const {return R4(x*c,y*c,z*c,omega*c);}
-  R4   operator*=(R c)  {x *= c; y *= c; z *= c; omega *= c; return *this;}
-  R4   operator/(R c)const {return R4(x/c,y/c,z/c,omega/c);}
-  R4   operator/=(R c)  {x /= c; y /= c; z /= c; omega /= c; return *this;}
-  R  & operator[](int i) {return (&x)[i];}
-  friend R4 operator*(R c,R4 P) {return P*c;}
-};
-
-//quelques fonctions supplementaires sur ces classes
-//==================================================
-inline R Aire2d(const R2 A,const R2 B,const R2 C){return (B-A)^(C-A);} 
-inline R Angle2d(R2 P){ return atan2(P.y,P.x);}
-
-inline R Norme2_2(const R2 & A){ return (A,A);}
-inline R Norme2(const R2 & A){ return sqrt((A,A));}
-inline R NormeInfinie(const R2 & A){return Max(Abs(A.x),Abs(A.y));}
-
-inline R Norme2_2(const R3 & A){ return (A,A);}
-inline R Norme2(const R3 & A){ return sqrt((A,A));}
-inline R NormeInfinie(const R3 & A){return Max(Abs(A.x),Abs(A.y),Abs(A.z));}
-
-inline R Norme2_2(const R4 & A){ return (A,A);}
-inline R Norme2(const R4 & A){ return sqrt((A,A));}
-inline R NormeInfinie(const R4 & A){return Max(Abs(A.x),Abs(A.y),Abs(A.z),Abs(A.omega));}
-
-inline R2 XY(R3 P) {return R2(P.x, P.y);}  //restriction a R2 d'un R3 par perte de z
-inline R3 Min(R3 P, R3 Q) 
-{return R3(P.x<Q.x ? P.x : Q.x, P.y<Q.y ? P.y : Q.y, P.z<Q.z ? P.z : Q.z);} //Pt de xyz Min
-inline R3 Max(R3 P, R3 Q) 
-{return R3(P.x>Q.x ? P.x : Q.x, P.y>Q.y ? P.y : Q.y, P.z>Q.z ? P.z : Q.z);} //Pt de xyz Max
-
-#endif
diff --git a/src/MEFISTO2/aptrte.cxx b/src/MEFISTO2/aptrte.cxx
deleted file mode 100644 (file)
index f6b37ea..0000000
+++ /dev/null
@@ -1,869 +0,0 @@
-//  MEFISTO2: a library to compute 2D triangulation from segmented boundaries
-//
-// Copyright (C) 2006-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
-//
-//  File   : aptrte.cxx   le C++ de l'appel du trianguleur plan
-//  Module : SMESH
-//  Author : Alain PERRONNET
-//  Date   : 13 novembre 2006
-
-#include "Rn.h"
-#include "aptrte.h"
-#include "utilities.h"
-
-using namespace std;
-
-extern "C"
-{
-  R aretemaxface_;
-  MEFISTO2D_EXPORT   
-    R
-  #ifdef WIN32
-  #ifdef F2C_BUILD
-  #else
-      __stdcall
-  #endif
-  #endif
-      areteideale()//( R3 xyz, R3 direction )
-  {
-    return aretemaxface_;
-  }
-}
-//calcul de la longueur ideale de l'arete au sommet xyz (z ici inactif)
-//dans la direction donnee
-//a ajuster pour chaque surface plane et selon l'entier notysu (voir plus bas)
-
-
-static double cpunew, cpuold=0;
-
-void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-tempscpu_( double & tempsec )
-//Retourne le temps CPU utilise en secondes
-{  
-  tempsec = ( (double) clock() ) / CLOCKS_PER_SEC;
-  //MESSAGE( "temps cpu=" << tempsec );
-}
-
-
-void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-deltacpu_( R & dtcpu )
-//Retourne le temps CPU utilise en secondes depuis le precedent appel
-{
-  tempscpu_( cpunew );
-  dtcpu  = R( cpunew - cpuold );
-  cpuold = cpunew;
-  //MESSAGE( "delta temps cpu=" << dtcpu );
-  return;
-}
-
-
-void  aptrte( Z   nutysu, R      aretmx,
-              Z   nblf,   Z  *   nudslf,  R2 * uvslf,
-              Z   nbpti,  R2 *   uvpti,
-              Z & nbst,   R2 * & uvst,
-              Z & nbt,    Z  * & nust,
-              Z & ierr )
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// but : appel de la triangulation par un arbre-4 recouvrant
-// ----- de triangles equilateraux
-//       le contour du domaine plan est defini par des lignes fermees
-//       la premiere ligne etant l'enveloppe de toutes les autres
-//       la fonction areteideale(s,d) donne la taille d'arete
-//       au point s dans la direction (actuellement inactive) d
-//       des lors toute arete issue d'un sommet s devrait avoir une longueur
-//       comprise entre 0.65 areteideale_(s,d) et 1.3 areteideale_(s,d)
-//
-//Attention:
-//  Les tableaux uvslf et uvpti sont supposes ne pas avoir de sommets identiques!
-//  De meme, un sommet d'une ligne fermee ne peut appartenir a une autre ligne fermee
-//
-// entrees:
-// --------
-// nutysu : numero de traitement de areteideale_(s,d) selon le type de surface
-//          0 pas d'emploi de la fonction areteideale_() et aretmx est active
-//          1 il existe une fonction areteideale_(s,d)
-//            dont seules les 2 premieres composantes de uv sont actives
-//          ... autres options a definir ...
-// aretmx : longueur maximale des aretes de la future triangulation
-// nblf   : nombre de lignes fermees de la surface
-// nudslf : numero du dernier sommet de chacune des nblf lignes fermees
-//          nudslf(0)=0 pour permettre la difference sans test
-//          Attention le dernier sommet de chaque ligne est raccorde au premier
-//          tous les sommets et les points internes ont des coordonnees
-//          UV differentes <=> Pas de point double!
-// uvslf  : uv des nudslf(nblf) sommets des lignes fermees
-// nbpti  : nombre de points internes futurs sommets de la triangulation
-// uvpti  : uv des points internes futurs sommets de la triangulation
-//
-// sorties:
-// --------
-// nbst   : nombre de sommets de la triangulation finale
-// uvst   : coordonnees uv des nbst sommets de la triangulation
-// nbt    : nombre de triangles de la triangulation finale
-// nust   : 4 numeros dans uvst des sommets des nbt triangles
-//          s1, s2, s3, 0: no dans uvst des 3 sommets et 0 car quadrangle!
-// ierr   : 0 si pas d'erreur
-//        > 0 sinon
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// auteur : Alain Perronnet  Laboratoire J.-L. LIONS Paris UPMC mars 2006
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-{
-  Z  nbsttria=4; //Attention: 4 sommets stockes par triangle
-                 //no st1, st2, st3, 0 (non quadrangle)
-
-  R  d, tcpu=0;
-//  R3 direction=R3(0,0,0);  //direction pour areteideale() inactive ici!
-  Z  nbarfr=nudslf[nblf];  //nombre total d'aretes des lignes fermees
-  Z  mxtrou = Max( 1024, nblf );  //nombre maximal de trous dans la surface
-
-  R3 *mnpxyd=NULL;
-  Z  *mnsoar=NULL, mosoar=7, mxsoar, n1soar; //le hachage des aretes
-  Z  *mnartr=NULL, moartr=3, mxartr, n1artr; //le no des 3 aretes des triangles
-  Z  *mntree=NULL, motree=9, mxtree; //L'arbre 4 de TE et nombre d'entiers par TE
-  Z  *mnqueu=NULL, mxqueu;
-  Z  *mn1arcf=NULL;
-  Z  *mnarcf=NULL, mxarcf;
-  Z  *mnarcf1=NULL;
-  Z  *mnarcf2=NULL;
-  Z  *mnarcf3=NULL;
-  Z  *mntrsu=NULL;
-  Z  *mnslig=NULL;
-  Z  *mnarst=NULL;
-  Z  *mnlftr=NULL;
-
-  R3 comxmi[2];            //coordonnees UV Min et Maximales
-  R  aremin, aremax;       //longueur minimale et maximale des aretes
-  R  airemx;               //aire maximale souhaitee d'un triangle
-  R  quamoy, quamin;
-
-  Z  noar0, noar, na;
-  Z  i, l, n, ns, ns0, ns1, ns2, nosotr[3], nt;
-  Z  mxsomm, nbsomm, nbarpi, nbarli, ndtri0, mn;
-  Z  moins1=-1;
-  Z  nuds = 0;
-
-  // initialisation du temps cpu
-  deltacpu_( d );
-  ierr = 0;
-
-  // quelques reservations de tableaux pour faire les calculs
-  // ========================================================
-  // declaration du tableau des coordonnees des sommets de la frontiere
-  // puis des sommets internes ajoutes
-  // majoration empirique du nombre de sommets de la triangulation
-  i = 4*nbarfr/10;
-  mxsomm = Max( 20000, 64*nbpti+i*i );
-  // MESSAGE( "APTRTE: Debut de la triangulation plane avec " );
-  // MESSAGE( "nutysu=" << nutysu << "  aretmx=" << aretmx
-  //          << "  mxsomm=" << mxsomm );
-  // MESSAGE( nbarfr << " sommets sur la frontiere et " << nbpti << " points internes");
-
- NEWDEPART:
-  //mnpxyd( 3, mxsomm ) les coordonnees UV des sommets et la taille d'arete aux sommets
-  if( mnpxyd!=NULL ) delete [] mnpxyd;
-  mnpxyd = new R3[mxsomm];
-  if( mnpxyd==NULL ) goto ERREUR;
-
-  // le tableau mnsoar des aretes des triangles
-  // 1: sommet 1 dans pxyd,
-  // 2: sommet 2 dans pxyd,
-  // 3: numero de 1 a nblf de la ligne qui supporte l'arete
-  // 4: numero dans mnartr du triangle 1 partageant cette arete,
-  // 5: numero dans mnartr du triangle 2 partageant cette arete,
-  // 6: chainage des aretes frontalieres ou internes ou
-  //    des aretes simples des etoiles de triangles,
-  // 7: chainage du hachage des aretes
-  // nombre d'aretes = 3 ( nombre de sommets - 1 + nombre de trous )
-  // pour le hachage des aretes mxsoar doit etre > 3*mxsomm!
-  // h(ns1,ns2) = min( ns1, ns2 )
-  if( mnsoar!=NULL ) delete [] mnsoar;
-  mxsoar = 3 * ( mxsomm + mxtrou );
-  mnsoar = new Z[mosoar*mxsoar];
-  if( mnsoar==NULL ) goto ERREUR;
-  //initialiser le tableau mnsoar pour le hachage des aretes
-  insoar( mxsomm, mosoar, mxsoar, n1soar, mnsoar );
-
-  // mnarst( mxsomm ) numero mnsoar d'une arete pour chacun des sommets
-  if( mnarst!=NULL ) delete [] mnarst;
-  mnarst = new Z[1+mxsomm];
-  if( mnarst==NULL ) goto ERREUR;
-  n = 1+mxsomm;
-  azeroi( n, mnarst );
-
-  // mnslig( mxsomm ) no de sommet dans sa ligne pour chaque sommet frontalier
-  //               ou no du point si interne forc'e par l'utilisateur
-  //               ou  0 si interne cree par le module
-  if( mnslig!=NULL ) delete [] mnslig;
-  mnslig = new Z[mxsomm];
-  if( mnslig==NULL ) goto ERREUR;
-  azeroi( mxsomm, mnslig );
-
-  // initialisation des aretes frontalieres de la triangulation future
-  // renumerotation des sommets des aretes des lignes pour la triangulation
-  // mise a l'echelle des coordonnees des sommets pour obtenir une
-  // meilleure precision lors des calculs + quelques verifications
-  // boucle sur les lignes fermees qui forment la frontiere
-  // ======================================================================
-  noar = 0;
-  aremin = 1e100;
-  aremax = 0;
-
-  for (n=1; n<=nblf; n++)
-  {
-    //l'initialisation de la premiere arete de la ligne n dans la triangulation
-    //-------------------------------------------------------------------------
-    //le sommet ns0 est le numero de l'origine de la ligne
-    ns0 = nudslf[n-1];
-    mnpxyd[ns0].x = uvslf[ns0].x;
-    mnpxyd[ns0].y = uvslf[ns0].y;
-    mnpxyd[ns0].z = areteideale();//( mnpxyd[ns0], direction );
-//     MESSAGE("Sommet " << ns0 << ": " << mnpxyd[ns0].x
-//       << " " << mnpxyd[ns0].y << " longueur arete=" << mnpxyd[ns0].z);
-
-    //carre de la longueur de l'arete 1 de la ligne fermee n
-    d = pow( uvslf[ns0+1].x - uvslf[ns0].x, 2 ) 
-      + pow( uvslf[ns0+1].y - uvslf[ns0].y, 2 ) ;
-    aremin = Min( aremin, d );
-    aremax = Max( aremax, d );
-
-    //le numero des 2 sommets (ns1,ns2) de la premiere arete de la ligne
-    //initialisation de la 1-ere arete ns1-ns1+1 de cette ligne fermee n
-    //le numero des 2 sommets ns1 ns2 de la 1-ere arete
-    //Attention: les numeros ns debutent a 1 (ils ont >0)
-    //           les tableaux c++ demarrent a zero!
-    //           les tableaux fortran demarrent ou l'on veut!
-    ns0++;
-    ns1 = ns0;
-    ns2 = ns1+1;
-
-     //le numero n de la ligne du sommet et son numero ns1 dans la ligne
-    mnslig[ns0-1] = 1000000 * n + ns1-nudslf[n-1];
-    fasoar( ns1, ns2, moins1, moins1, n,
-             mosoar, mxsoar, n1soar, mnsoar, mnarst,
-             noar0,  ierr );
-    //pas de test sur ierr car pas de saturation possible a ce niveau
-
-    //le pointeur dans le hachage sur la premiere arete de la ligne fermee n
-    //mndalf[n] = noar0;
-
-    //la nouvelle arete est la suivante de l'arete definie juste avant
-    if( noar > 0 )
-      mnsoar[mosoar * noar - mosoar + 5] = noar0;
-
-    //l'initialisation des aretes suivantes de la ligne dans la triangulation
-    //-----------------------------------------------------------------------
-    nbarli = nudslf[n] - nudslf[n-1];  //nombre d'aretes=sommets de la ligne n
-    for (i=2; i<=nbarli; i++)
-    {
-      ns1 = ns2; //le numero de l'arete et le numero du premier sommet de l'arete
-      if( i < nbarli )
-        //nbs+1 est le 2-eme sommet de l'arete i de la ligne fermee n
-        ns2 = ns1+1;
-      else
-        //le 2-eme sommet de la derniere arete est le premier sommet de la ligne
-        ns2 = ns0;
-
-      //l'arete precedente est dotee de sa suivante:celle cree ensuite
-      //les 2 coordonnees du sommet ns2 de la ligne
-      ns = ns1 - 1;
-//debut ajout  5/10/2006  ................................................
-      nuds = Max( nuds, ns );   //le numero du dernier sommet traite
-//fin   ajout  5/10/2006  ................................................
-      mnpxyd[ns].x = uvslf[ns].x;
-      mnpxyd[ns].y = uvslf[ns].y;
-      mnpxyd[ns].z = areteideale();//( mnpxyd[ns], direction );
-//       MESSAGE("Sommet " << ns << ": " << mnpxyd[ns].x
-//         << " " << mnpxyd[ns].y << " longueur arete=" << mnpxyd[ns].z);
-
-      //carre de la longueur de l'arete
-      d = pow( uvslf[ns2-1].x - uvslf[ns1-1].x, 2) 
-        + pow( uvslf[ns2-1].y - uvslf[ns1-1].y, 2);
-      aremin = Min( aremin, d );
-      aremax = Max( aremax, d );
-
-//debut ajout du 5/10/2006  .............................................
-      //la longueur de l'arete ns1-ns2
-      d = sqrt( d );
-      //longueur arete = Min ( aretmx, aretes incidentes )
-      mnpxyd[ns   ].z = Min( mnpxyd[ns   ].z, d );
-      mnpxyd[ns2-1].z = Min( mnpxyd[ns2-1].z, d );
-//fin ajout du 5/10/2006  ...............................................
-
-      //le numero n de la ligne du sommet et son numero ns1 dans la ligne
-      mnslig[ns] = 1000000 * n + ns1-nudslf[n-1];
-
-      //ajout de l'arete dans la liste
-      fasoar( ns1, ns2, moins1, moins1, n,
-               mosoar, mxsoar, n1soar, mnsoar,
-               mnarst, noar, ierr );
-      //pas de test sur ierr car pas de saturation possible a ce niveau
-
-      //chainage des aretes frontalieres en position 6 du tableau mnsoar
-      //la nouvelle arete est la suivante de l'arete definie juste avant
-      mnsoar[ mosoar * noar0 - mosoar + 5 ] = noar;
-      noar0 = noar;
-   }
-    //attention: la derniere arete de la ligne fermee enveloppe
-    //           devient en fait la premiere arete de cette ligne
-    //           dans le chainage des aretes de la frontiere!
-  }
-  if( ierr != 0 ) goto ERREUR;
-
-  aremin = sqrt( aremin );  //longueur minimale d'une arete des lignes fermees
-  aremax = sqrt( aremax );  //longueur maximale d'une arete
-
-//debut ajout  9/11/2006  ................................................
-  // devenu un commentaire aretmx = Min( aretmx, aremax ); //pour homogeneiser
-
-  // protection contre une arete max desiree trop grande ou trop petite
-  if( aretmx > aremax*2.05 ) aretmx = aremax;
-
-  // protection contre une arete max desiree trop petite
-  if( (aremax-aremin) > (aremin+aremax)*0.05 && aretmx < aremin*0.5 )
-    aretmx =(aremin+aremax*2)/3.0;
-
-  if( aretmx < aremin  && aremin > 0 )
-    aretmx = aremin;
-
-  //sauvegarde pour la fonction areteideale_
-  aretemaxface_ = aretmx;
-
-  //aire maximale souhaitee des triangles
-  airemx = aretmx * aretmx * sqrt(3.0) / 2.0;  //Aire triangle equilateral
-
-  for(i=0; i<=nuds; i++ )
-    mnpxyd[i].z = Min( mnpxyd[i].z, aretmx );
-  //MESSAGE("Numero du dernier sommet frontalier=" << nuds+1);
-//fin  ajout 9/11/2006  .................................................
-
-
-  // MESSAGE("Sur  le  bord: arete min=" << aremin << " arete max=" << aremax );
-  // MESSAGE("Triangulation: arete mx=" << aretmx
-  //         << " triangle aire mx=" << airemx );
-
-  //chainage des aretes frontalieres : la derniere arete frontaliere
-  mnsoar[ mosoar * noar - mosoar + 5 ] = 0;
-
-  //tous les sommets et aretes frontaliers sont numerotes de 1 a nbarfr
-  //reservation du tableau des numeros des 3 aretes de chaque triangle
-  //mnartr( moartr, mxartr )
-  //En nombre: Triangles = Aretes Internes + Aretes Frontalieres - Sommets + 1-Trous
-  //          3Triangles = 2 Aretes internes + Aretes frontalieres
-  //       d'ou 3T/2 < AI + AF => T < 3T/2  - Sommets + 1-Trous
-  //nombre de triangles < 2 ( nombre de sommets - 1 + nombre de trous )
-  if( mnartr!=NULL ) delete [] mnartr;
-  mxartr = 2 * ( mxsomm + mxtrou );
-  mnartr = new Z[moartr*mxartr];
-  if( mnartr==NULL ) goto ERREUR;
-
-  //Ajout des points internes
-  ns1 = nudslf[ nblf ];
-  for (i=0; i<nbpti; i++)
-  {
-    //les 2 coordonnees du point i de sommet nbs
-    mnpxyd[ns1].x = uvpti[i].x;
-    mnpxyd[ns1].y = uvpti[i].y;
-    mnpxyd[ns1].z = areteideale();//( mnpxyd[ns1], direction );
-    //le numero i du point interne
-    mnslig[ns1] = i+1;
-    ns1++;
-  }
-
-  //nombre de sommets de la frontiere et internes
-  nbarpi = ns1;
-
-  // creation de l'arbre-4 des te (tableau letree)
-  // ajout dans les te des sommets des lignes et des points internes imposes
-  // =======================================================================
-  // premiere estimation de mxtree
-  mxtree = 2 * mxsomm;
-
- NEWTREE:  //en cas de saturation de l'un des tableaux, on boucle
-  //MESSAGE( "Debut triangulation avec mxsomm=" << mxsomm );
-  if( mntree != NULL ) delete [] mntree;
-  nbsomm = nbarpi;
-  mntree = new Z[motree*(1+mxtree)];
-  if( mntree==NULL ) goto ERREUR;
-
-  //initialisation du tableau letree et ajout dans letree des sommets 1 a nbsomm
-  comxmi[0].x = comxmi[1].x = uvslf[0].x;
-  comxmi[0].y = comxmi[1].y = uvslf[0].y;
-  teajte( mxsomm, nbsomm, mnpxyd, comxmi, aretmx, mxtree, mntree, ierr );
-  comxmi[0].z=0;
-  comxmi[1].z=0;
-
-  if( ierr == 51 )
-  {
-    //saturation de letree => sa taille est augmentee et relance
-    mxtree = mxtree * 2;
-    ierr   = 0;
-    //MESSAGE( "Nouvelle valeur de mxtree=" << mxtree );
-    goto NEWTREE;
-  }
-
-  deltacpu_( d );
-  tcpu += d;
-  //MESSAGE( "Temps de l'ajout arbre-4 des Triangles Equilateraux=" << d << " secondes" );
-  if( ierr != 0 ) goto ERREUR;
-  //ici le tableau mnpxyd contient les sommets des te et les points frontaliers et internes
-
-  // homogeneisation de l'arbre des te a un saut de taille au plus
-  // prise en compte des tailles d'aretes souhaitees autour des sommets initiaux
-  // ===========================================================================
-  // reservation de la queue pour parcourir les te de l'arbre
-  if( mnqueu != NULL ) delete [] mnqueu;
-  mxqueu = mxtree;
-  mnqueu = new Z[mxqueu];
-  if( mnqueu==NULL) goto ERREUR;
-
-  tehote( nutysu, nbarpi, mxsomm, nbsomm, mnpxyd,
-           comxmi, aretmx,
-           mntree, mxqueu, mnqueu,
-           ierr );
-
-  deltacpu_( d );
-  tcpu += d;
-  //MESSAGE("Temps de l'adaptation et l'homogeneisation de l'arbre-4 des TE="
-       // << d << " secondes");
-  if( ierr != 0 )
-  {
-    //destruction du tableau auxiliaire et de l'arbre
-    if( ierr == 51 )
-    {
-      //letree sature
-      mxtree = mxtree * 2;
-      //MESSAGE( "Redemarrage avec la valeur de mxtree=" << mxtree );
-      ierr = 0;
-      goto NEWTREE;
-    }
-    else
-      goto ERREUR;
-  }
-
-  // trianguler les triangles equilateraux feuilles a partir de leurs 3 sommets
-  // et des points de la frontiere, des points internes imposes interieurs
-  // ==========================================================================
-  tetrte( comxmi, aretmx, nbarpi, mxsomm, mnpxyd,
-           mxqueu, mnqueu, mntree, mosoar, mxsoar, n1soar, mnsoar,
-           moartr, mxartr, n1artr, mnartr, mnarst,
-           ierr );
-
-  // destruction de la queue et de l'arbre devenus inutiles
-  delete [] mnqueu;  mnqueu=NULL;
-  delete [] mntree;  mntree=NULL;
-
-  //Temps calcul
-  deltacpu_( d );
-  tcpu += d;
-//MESSAGE( "Temps de la triangulation des TE=" << d << " secondes" );
-
-  // ierr =0 si pas d'erreur
-  //      =1 si le tableau mnsoar est sature
-  //      =2 si le tableau mnartr est sature
-  //      =3 si aucun des triangles ne contient l'un des points internes
-  //      =5 si saturation de la queue de parcours de l'arbre des te
-  if( ierr != 0 ) goto ERREUR;
-
-  //qualites de la triangulation actuelle
-  qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
-                nbt, quamoy, quamin );
-
-  // boucle sur les aretes internes (non sur une ligne de la frontiere)
-  // avec echange des 2 diagonales afin de rendre la triangulation delaunay
-  // ======================================================================
-  // formation du chainage 6 des aretes internes a echanger eventuellement
-  aisoar( mosoar, mxsoar, mnsoar, na );
-  tedela( mnpxyd, mnarst,
-           mosoar, mxsoar, n1soar, mnsoar, na,
-           moartr, mxartr, n1artr, mnartr, n );
-
-//MESSAGE( "Nombre d'echanges des diagonales de 2 triangles=" << n );
-  deltacpu_( d );
-  tcpu += d;
-  // MESSAGE("Temps de la triangulation Delaunay par echange des diagonales="
-  //      << d << " secondes");
-
-  //qualites de la triangulation actuelle
-  qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
-                nbt, quamoy, quamin );
-
-  // detection des aretes frontalieres initiales perdues
-  // triangulation frontale pour les restaurer
-  // ===================================================
-  mxarcf = mxsomm/5;
-  if( mn1arcf != NULL ) delete [] mn1arcf;
-  if( mnarcf  != NULL ) delete [] mnarcf;
-  if( mnarcf1 != NULL ) delete [] mnarcf1;
-  if( mnarcf2 != NULL ) delete [] mnarcf2;
-  mn1arcf = new Z[1+mxarcf];
-  if( mn1arcf == NULL ) goto ERREUR;
-  mnarcf  = new Z[3*mxarcf];
-  if( mnarcf == NULL ) goto ERREUR;
-  mnarcf1 = new Z[mxarcf];
-  if( mnarcf1 == NULL ) goto ERREUR;
-  mnarcf2 = new Z[mxarcf];
-  if( mnarcf2 == NULL ) goto ERREUR;
-
-  terefr( nbarpi, mnpxyd,
-           mosoar, mxsoar, n1soar, mnsoar,
-           moartr, mxartr, n1artr, mnartr, mnarst,
-           mxarcf, mn1arcf, mnarcf, mnarcf1, mnarcf2,
-           n, ierr );
-
-//MESSAGE( "Restauration de " << n << " aretes perdues de la frontiere  ierr=" << ierr );
-  deltacpu_( d );
-  tcpu += d;
-//MESSAGE("Temps de la recuperation des aretes perdues de la frontiere="
-//     << d << " secondes");
-
-  if( ierr != 0 ) goto ERREUR;
-
-  //qualites de la triangulation actuelle
-  qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
-                nbt, quamoy, quamin );
-
-  // fin de la triangulation avec respect des aretes initiales frontalieres
-
-  // suppression des triangles externes a la surface
-  // ===============================================
-  // recherche du dernier triangle utilise
-  mn = mxartr * moartr;
-  for ( ndtri0=mxartr; ndtri0<=1; ndtri0-- )
-  {
-    mn -= moartr;
-    if( mnartr[mn] != 0 ) break;
-  }
-
-  if( mntrsu != NULL ) delete [] mntrsu;
-  mntrsu = new Z[ndtri0];
-  if( mntrsu == NULL ) goto ERREUR;
-
-  if( mnlftr != NULL ) delete [] mnlftr;
-  mnlftr = new Z[nblf];
-  if( mnlftr == NULL ) goto ERREUR;
-
-  for (n=0; n<nblf; n++)  //numero de la ligne fermee de 1 a nblf
-    mnlftr[n] = n+1;
-
-  tesuex( nblf,   mnlftr,
-           ndtri0, nbsomm, mnpxyd, mnslig,
-           mosoar, mxsoar, mnsoar,
-           moartr, mxartr, n1artr, mnartr, mnarst,
-           nbt, mntrsu, ierr );
-
-  delete [] mnlftr; mnlftr=NULL;
-  delete [] mntrsu; mntrsu=NULL;
-
-  deltacpu_( d );
-  tcpu += d;
-//MESSAGE( "Temps de la suppression des triangles externes=" << d << "ierr=" << ierr );
-  if( ierr != 0 ) goto ERREUR;
-
-  //qualites de la triangulation actuelle
-  qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
-                nbt, quamoy, quamin );
-
-  // amelioration de la qualite de la triangulation par
-  // barycentrage des sommets internes a la triangulation
-  // suppression des aretes trop longues ou trop courtes
-  // modification de la topologie des groupes de triangles
-  // mise en delaunay de la triangulation
-  // =====================================================
-  mnarcf3 = new Z[mxarcf];
-  if( mnarcf3 == NULL )
-  {
-    MESSAGE ( "aptrte: MC saturee mnarcf3=" << mnarcf3 );
-    goto ERREUR;
-  }
-  teamqt( nutysu,  aretmx,  airemx,
-           mnarst,  mosoar,  mxsoar, n1soar, mnsoar,
-           moartr,  mxartr,  n1artr, mnartr,
-           mxarcf,  mnarcf2, mnarcf3,
-           mn1arcf, mnarcf,  mnarcf1,
-           nbarpi,  nbsomm, mxsomm, mnpxyd, mnslig,
-           ierr );
-  if( mnarcf3 != NULL ) {delete [] mnarcf3; mnarcf3=NULL;}
-  if( mn1arcf != NULL ) {delete [] mn1arcf; mn1arcf=NULL;}
-  if( mnarcf  != NULL ) {delete [] mnarcf;  mnarcf =NULL;}
-  if( mnarcf1 != NULL ) {delete [] mnarcf1; mnarcf1=NULL;}
-  if( mnarcf2 != NULL ) {delete [] mnarcf2; mnarcf2=NULL;}
-
-  deltacpu_( d );
-  tcpu += d;
-//MESSAGE( "Temps de l'amelioration de la qualite de la triangulation=" << d );
-  if( ierr == -13 ) ierr=0; //6/10/2006 arret de l'amelioration apres boucle infinie dans caetoi
-  if( ierr !=   0 ) goto ERREUR;
-
-  //qualites de la triangulation finale
-  qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
-                nbt, quamoy, quamin );
-
-  // renumerotation des sommets internes: mnarst(i)=numero final du sommet
-  // ===================================
-  for (i=0; i<=nbsomm; i++)
-    mnarst[i] = 0;
-
-  for (nt=1; nt<=mxartr; nt++)
-  {
-    if( mnartr[nt*moartr-moartr] != 0 )
-    {
-      //le numero des 3 sommets du triangle nt
-      nusotr( nt, mosoar, mnsoar, moartr, mnartr, nosotr );
-      //les 3 sommets du triangle sont actifs
-      mnarst[ nosotr[0] ] = 1;
-      mnarst[ nosotr[1] ] = 1;
-      mnarst[ nosotr[2] ] = 1;
-    }
-  }
-  nbst = 0;
-  for (i=1; i<=nbsomm; i++)
-  {
-    if( mnarst[i] >0 )
-      mnarst[i] = ++nbst;
-  }
-
-  // generation du tableau uvst de la surface triangulee
-  // ---------------------------------------------------
-  if( uvst != NULL ) delete [] uvst;
-  uvst = new R2[nbst];
-  if( uvst == NULL ) goto ERREUR;
-
-  nbst=-1;
-  for (i=0; i<nbsomm; i++ )
-  {
-    if( mnarst[i+1]>0 )
-    {
-      nbst++;
-      uvst[nbst].x = mnpxyd[i].x;
-      uvst[nbst].y = mnpxyd[i].y;
-
-      //si le sommet est un point ou appartient a une ligne
-      //ses coordonnees initiales sont restaurees
-      n = mnslig[i];
-      if( n > 0 )
-      {
-        if( n >= 1000000 )
-        {
-          //sommet d'une ligne
-          //retour aux coordonnees initiales dans uvslf
-          l = n / 1000000;
-          n = n - 1000000 * l + nudslf[l-1] - 1;
-          uvst[nbst].x = uvslf[n].x;
-          uvst[nbst].y = uvslf[n].y;
-        }
-        else
-        {
-          //point utilisateur n interne impose
-          //retour aux coordonnees initiales dans uvpti
-          uvst[nbst].x = uvpti[n-1].x;
-          uvst[nbst].y = uvpti[n-1].y;
-        }
-      }
-    }
-  }
-  nbst++;
-
-  // generation du tableau 'nsef' de la surface triangulee
-  // -----------------------------------------------------
-  // boucle sur les triangles occupes (internes et externes)
-  if( nust != NULL ) delete [] nust;
-  nust = new Z[nbsttria*nbt];
-  if( nust == NULL ) goto ERREUR;
-  nbt = 0;
-  for (i=1; i<=mxartr; i++)
-  {
-    //le triangle i de mnartr
-    if( mnartr[i*moartr-moartr] != 0 )
-    {
-      //le triangle i est interne => nosotr numero de ses 3 sommets
-      nusotr( i, mosoar, mnsoar, moartr, mnartr,  nosotr );
-      nust[nbt++] = mnarst[ nosotr[0] ];
-      nust[nbt++] = mnarst[ nosotr[1] ];
-      nust[nbt++] = mnarst[ nosotr[2] ];
-      nust[nbt++] = 0;
-    }
-  }
-  nbt /= nbsttria;  //le nombre final de triangles de la surface
-  // MESSAGE( "APTRTE: Fin de la triangulation plane avec "<<nbst<<" sommets et "
-  //          << nbt << " triangles" );
-  deltacpu_( d );
-  tcpu += d;
-  // MESSAGE( "APTRTE: Temps total de la triangulation plane=" << tcpu << " secondes" );
-
-  // destruction des tableaux auxiliaires
-  // ------------------------------------
- NETTOYAGE:
-  if( mnarst != NULL ) delete [] mnarst;
-  if( mnartr != NULL ) delete [] mnartr;
-  if( mnslig != NULL ) delete [] mnslig;
-  if( mnsoar != NULL ) delete [] mnsoar;
-  if( mnpxyd != NULL ) delete [] mnpxyd;
-  if( mntree != NULL ) delete [] mntree;
-  if( mnqueu != NULL ) delete [] mnqueu;
-  if( mntrsu != NULL ) delete [] mntrsu;
-  if( mnlftr != NULL ) delete [] mnlftr;
-  if( mn1arcf != NULL ) delete [] mn1arcf;
-  if( mnarcf  != NULL ) delete [] mnarcf;
-  if( mnarcf1 != NULL ) delete [] mnarcf1;
-  if( mnarcf2 != NULL ) delete [] mnarcf2;
-  if( mnarcf3 != NULL ) delete [] mnarcf3;
-  return;
-
- ERREUR:
-  if( ierr == 51 || ierr == 52 )
-  {
-    //saturation des sommets => redepart avec 2 fois plus de sommets
-    mxsomm = 2 * mxsomm;
-    ierr   = 0;
-    goto NEWDEPART;
-  }
-  else
-  {
-    MESSAGE( "APTRTE: Triangulation NON REALISEE  avec erreur=" << ierr );
-    if( ierr == 0 ) ierr=1;
-    goto NETTOYAGE;
-  }
-}
-void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
- qualitetrte( R3 *mnpxyd,
-                   Z & mosoar, Z & /*mxsoar*/, Z *mnsoar,
-                   Z & moartr, Z & mxartr, Z *mnartr,
-                   Z & nbtria, R & quamoy, R & quamin )
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// but :    calculer la qualite moyenne et minimale de la triangulation
-// -----    actuelle definie par les tableaux mnsoar et mnartr
-// entrees:
-// --------
-// mnpxyd : tableau des coordonnees 2d des points
-//          par point : x  y  distance_souhaitee
-// mosoar : nombre maximal d'entiers par arete et
-//          indice dans mnsoar de l'arete suivante dans le hachage
-// mxsoar : nombre maximal d'aretes stockables dans le tableau mnsoar
-//          attention: mxsoar>3*mxsomm obligatoire!
-// mnsoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-//          chainage des aretes frontalieres, chainage du hachage des aretes
-//          hachage des aretes = mnsoar(1)+mnsoar(2)*2
-//          avec mxsoar>=3*mxsomm
-//          une arete i de mnsoar est vide <=> mnsoar(1,i)=0 et
-//          mnsoar(2,arete vide)=l'arete vide qui precede
-//          mnsoar(3,arete vide)=l'arete vide qui suit
-// moartr : nombre maximal d'entiers par arete du tableau mnartr
-// mxartr : nombre maximal de triangles declarables
-// mnartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-//          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-// sorties:
-// --------
-// nbtria : nombre de triangles internes au domaine
-// quamoy : qualite moyenne  des triangles actuels
-// quamin : qualite minimale des triangles actuels
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-{
-  R  d, aire, qualite;
-  Z  nosotr[3], mn, nbtrianeg, nt, ntqmin;
-
-  aire   = 0;
-  quamoy = 0;
-  quamin = 2.0;
-  nbtria = 0;
-  nbtrianeg = 0;
-  ntqmin = 0;
-
-  mn = -moartr;
-  for ( nt=1; nt<=mxartr; nt++ )
-  {
-    mn += moartr;
-    if( mnartr[mn]!=0 )
-    {
-      //un triangle occupe de plus
-      nbtria++;
-
-      //le numero des 3 sommets du triangle nt
-      nusotr( nt, mosoar, mnsoar, moartr, mnartr,  nosotr );
-
-      //la qualite du triangle ns1 ns2 ns3
-      qutr2d( mnpxyd[nosotr[0]-1], mnpxyd[nosotr[1]-1], mnpxyd[nosotr[2]-1],
-               qualite );
-
-      //la qualite moyenne
-      quamoy += qualite;
-
-      //la qualite minimale
-      if( qualite < quamin )
-      {
-         quamin = qualite;
-         ntqmin = nt;
-      }
-
-      //aire signee du triangle nt
-      d = surtd2( mnpxyd[nosotr[0]-1], mnpxyd[nosotr[1]-1], mnpxyd[nosotr[2]-1] );
-      if( d<0 )
-      {
-        //un triangle d'aire negative de plus
-        nbtrianeg++;
-        MESSAGE("ATTENTION: le triangle " << nt << " de sommets:"
-             << nosotr[0] << " " << nosotr[1] << " " << nosotr[2]
-             << " a une aire " << d <<"<=0");
-      }
-
-      //aire des triangles actuels
-      aire += Abs(d);
-    }
-  }
-
-  //les affichages
-  quamoy /= nbtria;
-  // MESSAGE("Qualite moyenne=" << quamoy
-  //      << "  Qualite minimale=" << quamin
-  //      << " des " << nbtria << " triangles de surface plane totale="
-  //      << aire);
-
-  if( quamin<0.3 )
-  {
-    //le numero des 3 sommets du triangle ntqmin de qualite minimale
-    nusotr(ntqmin, mosoar, mnsoar, moartr, mnartr,  nosotr );
-    // MESSAGE("Triangle de qualite minimale "<<quamin<<" de sommets:"
-    //         <<nosotr[0]<<" "<<nosotr[1]<<" "<<nosotr[2]<<" ");
-    // for (int i=0;i<3;i++)
-    //   MESSAGE("Sommet "<<nosotr[i]<<": x="<< mnpxyd[nosotr[i]-1].x
-    //           <<" y="<< mnpxyd[nosotr[i]-1].y);
-  }
-
-  if( nbtrianeg>0 )
-    MESSAGE( "ATTENTION: "<< nbtrianeg << " TRIANGLES d'AIRE NEGATIVE" );
-
-  return;
-}
diff --git a/src/MEFISTO2/aptrte.h b/src/MEFISTO2/aptrte.h
deleted file mode 100644 (file)
index b30cab0..0000000
+++ /dev/null
@@ -1,451 +0,0 @@
-// SMESH MEFISTO2 : algorithm for meshing
-//
-// Copyright (C) 2006-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
-//
-//  File   : aptrte.h
-//  Author : Alain PERRONNET
-//  Module : SMESH
-//  Date   : 13 novembre 2006
-
-#ifndef aptrte__h
-#define aptrte__h
-
-#include <climits>   // limites min max int long real ...
-#ifndef WIN32
-#include <unistd.h>   // gethostname, ...
-#endif
-#include <stdio.h>
-#ifndef WIN32
-#include <iostream> // pour cout cin ...
-#include <iomanip>  // pour le format des io setw, stx, setfill, ...
-#endif
-#include <string.h>   // pour les fonctions sur les chaines de caracteres
-#include <ctype.h>
-#include <stdlib.h>
-#include <math.h>     // pour les fonctions mathematiques
-#include <time.h>
-
-#include <sys/types.h>
-#ifndef WIN32
-#include <sys/time.h>
-#endif
-
-#ifdef WIN32
- #if defined MEFISTO2D_EXPORTS
-  #define MEFISTO2D_EXPORT __declspec( dllexport )
- #else
-  #define MEFISTO2D_EXPORT __declspec( dllimport )
- #endif
-#else
- #define MEFISTO2D_EXPORT
-#endif
-
-
-MEFISTO2D_EXPORT
-  void  aptrte( Z nutysu, R aretmx,
-              Z nblf,   Z *nudslf, R2 *uvslf,
-              Z nbpti,  R2 *uvpti,
-              Z & nbst, R2 * & uvst, Z & nbt, Z * & nust,
-              Z & ierr );
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// but : appel de la triangulation par un arbre-4 recouvrant
-// ----- de triangles equilateraux
-//       le contour du domaine plan est defini par des lignes fermees
-//       la premiere ligne etant l'enveloppe de toutes les autres
-//       la fonction areteideale_(s,d) donne la taille d'arete
-//       au point s dans la direction d (direction inactive pour l'instant)
-//       des lors toute arete issue d'un sommet s devrait avoir une longueur
-//       comprise entre 0.65 areteideale_(s,d) et 1.3 areteideale_(s,d)
-//
-//Attention:
-//  Les tableaux uvslf et uvpti sont supposes ne pas avoir de sommets identiques!
-//  De meme, un sommet d'une ligne fermee ne peut appartenir a une autre ligne fermee
-//
-// entrees:
-// --------
-// nutysu : numero de traitement de areteideale_() selon le type de surface
-//          0 pas d'emploi de la fonction areteideale_() et aretmx est active
-//          1 il existe une fonction areteideale_(s,d)
-//            dont seules les 2 premieres composantes de uv sont actives
-//          ... autres options a definir ...
-// aretmx : longueur maximale des aretes de la future triangulation
-// nblf   : nombre de lignes fermees de la surface
-// nudslf : numero du dernier sommet de chacune des nblf lignes fermees
-//          nudslf(0)=0 pour permettre la difference sans test
-//          Attention le dernier sommet de chaque ligne est raccorde au premier
-//          tous les sommets et les points internes ont des coordonnees
-//          UV differentes <=> Pas de point double!
-// uvslf  : uv des nudslf(nblf) sommets des lignes fermees
-// nbpti  : nombre de points internes futurs sommets de la triangulation
-// uvpti  : uv des points internes futurs sommets de la triangulation
-//
-// sorties:
-// --------
-// nbst   : nombre de sommets de la triangulation finale
-// uvst   : coordonnees uv des nbst sommets de la triangulation
-// nbt    : nombre de triangles de la triangulation finale
-// nust   : 3 numeros dans uvst des sommets des nbt triangles
-// ierr   : 0 si pas d'erreur
-//        > 0 sinon
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// auteur : Alain Perronnet  Analyse Numerique Paris UPMC   decembre 2001
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-#if WIN32 & DFORTRAN
-  #define tempscpu TEMPSCPU
-  #define deltacpu DELTACPU
-  #define insoar   INSOAR
-  #define azeroi   AZEROI
-  #define fasoar   FASOAR
-  #define teajte   TEAJTE
-  #define tehote   TEHOTE
-  #define tetrte   TETRTE
-  #define aisoar   AISOAR
-  #define tedela   TEDELA
-  #define terefr   TEREFR
-  #define tesuex   TESUEX
-  #define teamqt   TEAMQT
-  #define nusotr   NUSOTR
-  #define qutr2d   QUTR2D
-  #define surtd2   SURTD2
-  #define qualitetrte   QUALITETRTE
-  
-  #define areteideale ARETEIDEALE
-  
-#else
-  #define tempscpu tempscpu_
-  #define deltacpu deltacpu_
-  #define insoar   insoar_
-  #define azeroi   azeroi_
-  #define fasoar   fasoar_
-  #define teajte   teajte_
-  #define tehote   tehote_
-  #define tetrte   tetrte_
-  #define aisoar   aisoar_
-  #define tedela   tedela_
-  #define terefr   terefr_
-  #define tesuex   tesuex_
-  #define teamqt   teamqt_
-  #define nusotr   nusotr_
-  #define qutr2d   qutr2d_
-  #define surtd2   surtd2_
-  #define qualitetrte   qualitetrte_
-
-  #define areteideale areteideale_
-
-#endif
-
-
-extern "C" { void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-   qualitetrte( R3 *mnpxyd,
-                   Z & mosoar, Z & mxsoar, Z *mnsoar,
-                   Z & moartr, Z & mxartr, Z *mnartr,
-                   Z & nbtria, R & quamoy, R & quamin ); }
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// but :    calculer la qualite moyenne et minimale de la triangulation
-// -----    actuelle definie par les tableaux nosoar et noartr
-// entrees:
-// --------
-// mnpxyd : tableau des coordonnees 2d des points
-//          par point : x  y  distance_souhaitee
-// mosoar : nombre maximal d'entiers par arete et
-//          indice dans nosoar de l'arete suivante dans le hachage
-// mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-//          attention: mxsoar>3*mxsomm obligatoire!
-// nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-//          chainage des aretes frontalieres, chainage du hachage des aretes
-//          hachage des aretes = nosoar(1)+nosoar(2)*2
-//          avec mxsoar>=3*mxsomm
-//          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-//          nosoar(2,arete vide)=l'arete vide qui precede
-//          nosoar(3,arete vide)=l'arete vide qui suit
-// moartr : nombre maximal d'entiers par arete du tableau noartr
-// mxartr : nombre maximal de triangles declarables
-// noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-//          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-// sorties:
-// --------
-// nbtria : nombre de triangles internes au domaine
-// quamoy : qualite moyenne  des triangles actuels
-// quamin : qualite minimale des triangles actuels
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-extern "C" {  void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  tempscpu( double & tempsec );
-}
-    
-//Retourne le temps CPU utilise en secondes
-
-extern "C" { void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  deltacpu( R & dtcpu );
-}
-    
-//Retourne le temps CPU utilise en secondes depuis le precedent appel
-
-//initialiser le tableau mnsoar pour le hachage des aretes
-extern "C" {void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  insoar( Z & mxsomm, Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar );
-}
-
-//mettre a zero les nb entiers de tab
-extern "C" {void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  azeroi( Z & nb, Z * tab );
-}
-
-extern "C" {void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  fasoar( Z & ns1, Z & ns2, Z & nt1, Z & nt2, Z & nolign,
-                          Z & mosoar,  Z & mxsoar,  Z & n1soar,  Z * mnsoar,  Z * mnarst,
-                          Z & noar, Z & ierr );
-}
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// but :    former l'arete de sommet ns1-ns2 dans le hachage du tableau
-// -----    nosoar des aretes de la triangulation
-// entrees:
-// --------
-// ns1 ns2: numero pxyd des 2 sommets de l'arete
-// nt1    : numero du triangle auquel appartient l'arete
-//          nt1=-1 si numero inconnu
-// nt2    : numero de l'eventuel second triangle de l'arete si connu
-//          nt2=-1 si numero inconnu
-// nolign : numero de la ligne fermee de l'arete
-//          =0 si l'arete n'est une arete de ligne
-//          ce numero est ajoute seulement si l'arete est creee
-// mosoar : nombre maximal d'entiers par arete du tableau nosoar
-// mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-// modifies:
-// ---------
-// n1soar : numero de la premiere arete vide dans le tableau nosoar
-//          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-//          chainage des aretes vides amont et aval
-//          l'arete vide qui precede=nosoar(4,i)
-//          l'arete vide qui suit   =nosoar(5,i)
-// nosoar : numero des 2 sommets, no ligne, 2 triangles de l'arete,
-//          chainage momentan'e d'aretes, chainage du hachage des aretes
-//          hachage des aretes = min( nosoar(1), nosoar(2) )
-// noarst : noarst(np) numero d'une arete du sommet np
-
-// ierr   : si < 0  en entree pas d'affichage en cas d'erreur du type
-//         "arete appartenant a plus de 2 triangles et a creer!"
-//          si >=0  en entree       affichage de ce type d'erreur
-// sorties:
-// --------
-// noar   : >0 numero de l'arete retrouvee ou ajoutee
-// ierr   : =0 si pas d'erreur
-//          =1 si le tableau nosoar est sature
-//          =2 si arete a creer et appartenant a 2 triangles distincts
-//             des triangles nt1 et nt2
-//          =3 si arete appartenant a 2 triangles distincts
-//             differents des triangles nt1 et nt2
-//          =4 si arete appartenant a 2 triangles distincts
-//             dont le second n'est pas le triangle nt2
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-//initialisation du tableau letree et ajout dans letree des sommets 1 a nbsomm
-extern "C" {void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  teajte( Z & mxsomm, Z &  nbsomm, R3 * mnpxyd,  R3 * comxmi,
-                            R & aretmx,  Z & mxtree, Z * letree,
-                            Z & ierr );
-}
-
-extern "C" {void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  tehote( Z & nutysu, Z & nbarpi, Z &  mxsomm, Z &  nbsomm, R3 * mnpxyd,
-                            R3 * comxmi, R & aretmx,
-                            Z * letree, Z & mxqueu, Z * mnqueu,
-                            Z & ierr );
-}
-// homogeneisation de l'arbre des te a un saut de taille au plus
-// prise en compte des tailles d'aretes souhaitees autour des sommets initiaux
-
-extern "C" {void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  tetrte( R3 * comxmi, R & aretmx, Z & nbarpi, Z & mxsomm, R3 * mnpxyd,
-                            Z & mxqueu,  Z * mnqueu,  Z * mntree,
-                            Z & mosoar,  Z & mxsoar,  Z & n1soar, Z * mnsoar,
-                            Z & moartr, Z &  mxartr,  Z & n1artr,  Z * mnartr,  Z * mnarst,
-                            Z & ierr );
-}
-// trianguler les triangles equilateraux feuilles a partir de leurs 3 sommets
-// et des points de la frontiere, des points internes imposes interieurs
-
-extern "C" {void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  aisoar( Z & mosoar, Z & mxsoar, Z * mnsoar, Z & na );
-}
-// formation du chainage 6 des aretes internes a echanger eventuellement
-
-extern "C" {void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  tedela( R3 * mnpxyd, Z * mnarst,
-                            Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar, Z & na,
-                            Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr, Z & n );
-}
-// boucle sur les aretes internes (non sur une ligne de la frontiere)
-// avec echange des 2 diagonales afin de rendre la triangulation delaunay
-extern "C" {void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  terefr( Z & nbarpi, R3 * mnpxyd,
-                            Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar,
-                            Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr, Z * mnarst,
-                            Z & mxarcf, Z * mnarc1, Z * mnarc2,
-                            Z * mnarc3, Z * mnarc4,
-                            Z & n, Z & ierr );
-}
-// detection des aretes frontalieres initiales perdues
-// triangulation frontale pour les restaurer
-
-extern "C" {void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  tesuex( Z & nblf, Z * nulftr,
-                            Z & ndtri0, Z & nbsomm, R3 * mnpxyd, Z * mnslig,
-                            Z & mosoar, Z & mxsoar, Z * mnsoar,
-                            Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr, Z * mnarst,
-                            Z & nbtria, Z * mntrsu, Z & ierr );
-}
-// suppression des triangles externes a la surface
-
-extern "C" {void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  teamqt( Z & nutysu, R & aretmx, R & airemx,
-                            Z * mnarst, Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar,
-                            Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr,
-                            Z & mxarcf, Z * mntrcf, Z * mnstbo,
-                            Z * n1arcf, Z * mnarcf, Z * mnarc1,
-                            Z & nbarpi, Z & nbsomm, Z & mxsomm,
-                            R3 * mnpxyd, Z * mnslig,
-                            Z & ierr );
-}
-// amelioration de la qualite de la triangulation par
-// barycentrage des sommets internes a la triangulation
-// suppression des aretes trop longues ou trop courtes
-// modification de la topologie des groupes de triangles
-// mise en delaunay de la triangulation
-extern "C" {void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  nusotr( Z & nt, Z & mosoar, Z * mnsoar, Z & moartr, Z * mnartr,Z * nosotr );
-}
-//retrouver les numero des 3 sommets du triangle nt
-
-extern "C" {void
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  qutr2d( R3 & p1, R3 & p2, R3 & p3, R & qualite );
-}
-//calculer la qualite d'un triangle de R2 de sommets p1, p2, p3
-
-extern "C" { R
-#ifdef WIN32
-#ifdef F2C_BUILD
-#else
-              __stdcall
-#endif
-#endif
-  surtd2( R3 & p1, R3 & p2, R3 & p3 );
-}
-//calcul de la surface d'un triangle defini par 3 points de r**2
-
-#endif
diff --git a/src/MEFISTO2/areteideale.f b/src/MEFISTO2/areteideale.f
deleted file mode 100644 (file)
index 35c9de9..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-c MEFISTO : library to compute 2D triangulation from segmented boundaries
-c
-c Copyright (C) 2006-2021  CEA/DEN, EDF R&D, OPEN CASCADE
-c
-c This library is free software; you can redistribute it and/or
-c modify it under the terms of the GNU Lesser General Public
-c License as published by the Free Software Foundation; either
-c version 2.1 of the License, or (at your option) any later version.
-c
-c This library is distributed in the hope that it will be useful,
-c but WITHOUT ANY WARRANTY; without even the implied warranty of
-c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-c Lesser General Public License for more details.
-c
-c You should have received a copy of the GNU Lesser General Public
-c License along with this library; if not, write to the Free Software
-c Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-c
-c See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-c
-c  File   : areteideale.f
-c  Module : SMESH
-c  Author : Alain PERRONNET
-c  Date   : 13 novembre 2006
-
-      double precision function areteideale( xyz, direction )
-      double precision xyz(3), direction(3)
-      areteideale = 10
-      return
-      end
diff --git a/src/MEFISTO2/trte.f b/src/MEFISTO2/trte.f
deleted file mode 100644 (file)
index f40663b..0000000
+++ /dev/null
@@ -1,8426 +0,0 @@
-c MEFISTO2: a library to compute 2D triangulation from segmented boundaries
-c
-c Copyright (C) 2006-2021  CEA/DEN, EDF R&D, OPEN CASCADE
-c
-c This library is free software; you can redistribute it and/or
-c modify it under the terms of the GNU Lesser General Public
-c License as published by the Free Software Foundation; either
-c version 2.1 of the License, or (at your option) any later version.
-c
-c This library is distributed in the hope that it will be useful,
-c but WITHOUT ANY WARRANTY; without even the implied warranty of
-c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-c Lesser General Public License for more details.
-c
-c You should have received a copy of the GNU Lesser General Public
-c License along with this library; if not, write to the Free Software
-c Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-c
-c See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-c
-c  File   : trte.f    le Fortran du trianguleur plan
-c  Module : SMESH
-c  Author : Alain PERRONNET
-c  Date   : 13 novembre 2006
-
-      double precision  function diptdr( pt , p1dr , p2dr )
-c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++012
-c but : calculer la distance entre un point et une droite
-c ----- definie par 2 points p1dr et p2dr
-c
-c entrees :
-c ---------
-c pt        : le point de R ** 2
-c p1dr p2dr : les 2 points de R ** 2  de la droite
-c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++012
-c programmeur : alain perronnet analyse numrique paris  janvier 1986
-c....................................................................012
-      double precision  pt(2),p1dr(2),p2dr(2), a, b, c
-c
-c     les coefficients de la droite a x + by + c =0
-      a = p2dr(2) - p1dr(2)
-      b = p1dr(1) - p2dr(1)
-      c = - a * p1dr(1) - b * p1dr(2)
-c
-c     la distance = | a * x + b * y + c | / sqrt( a*a + b*b )
-      diptdr = abs( a * pt(1) + b * pt(2) + c ) / sqrt( a*a + b*b )
-      end
-
-      subroutine qutr2d( p1, p2, p3, qualite )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :     calculer la qualite d'un triangle de r**2
-c -----     2 coordonnees des 3 sommets en double precision
-c
-c entrees :
-c ---------
-c p1,p2,p3 : les 3 coordonnees des 3 sommets du triangle
-c            sens direct pour une surface et qualite >0
-c sorties :
-c ---------
-c qualite: valeur de la qualite du triangle entre 0 et 1 (equilateral)
-c          1 etant la qualite optimale
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet analyse numerique upmc paris     janvier 1995
-c2345x7..............................................................012
-      parameter  ( d2uxr3 = 3.4641016151377544d0 )
-c                  d2uxr3 = 2 * sqrt(3)
-      double precision  p1(2), p2(2), p3(2), qualite, a, b, c, p
-c
-c     la longueur des 3 cotes
-      a = sqrt( (p2(1)-p1(1))**2 + (p2(2)-p1(2))**2 )
-      b = sqrt( (p3(1)-p2(1))**2 + (p3(2)-p2(2))**2 )
-      c = sqrt( (p1(1)-p3(1))**2 + (p1(2)-p3(2))**2 )
-c
-c     demi perimetre
-      p = (a+b+c) * 0.5d0
-c
-      if ( (a*b*c) .ne. 0d0 ) then
-c        critere : 2 racine(3) * rayon_inscrit / plus longue arete
-         qualite = d2uxr3 * sqrt( abs( (p-a) / p * (p-b) * (p-c) ) )
-     %          / max(a,b,c)
-      else
-         qualite = 0d0
-      endif
-c
-c
-c     autres criteres possibles:
-c     critere : 2 * rayon_inscrit / rayon_circonscrit
-c     qualite = 8d0 * (p-a) * (p-b) * (p-c) / (a * b * c)
-c
-c     critere : 3*sqrt(3.) * ray_inscrit / demi perimetre
-c     qualite = 3*sqrt(3.) * sqrt ((p-a)*(p-b)*(p-c) / p**3)
-c
-c     critere : 2*sqrt(3.) * ray_inscrit / max( des aretes )
-c     qualite = 2*sqrt(3.) * sqrt( (p-a)*(p-b)*(p-c) / p ) / max(a,b,c)
-      end
-
-
-      double precision function surtd2( p1 , p2 , p3 )
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but : calcul de la surface d'un triangle defini par 3 points de R**2
-c -----
-c parametres d entree :
-c ---------------------
-c p1 p2 p3 : les 3 fois 2 coordonnees des sommets du triangle
-c
-c parametre resultat :
-c --------------------
-c surtd2 : surface du triangle
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet analyse numerique upmc paris     fevrier 1992
-c2345x7..............................................................012
-      double precision  p1(2), p2(2), p3(2)
-c
-c     la surface du triangle
-      surtd2 = ( ( p2(1)-p1(1) ) * ( p3(2)-p1(2) )
-     %         - ( p2(2)-p1(2) ) * ( p3(1)-p1(1) ) ) * 0.5d0
-      end
-
-      integer function nopre3( i )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   numero precedent i dans le sens circulaire  1 2 3 1 ...
-c -----
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      if( i .eq. 1 ) then
-         nopre3 = 3
-      else
-         nopre3 = i - 1
-      endif
-      end
-
-      integer function nosui3( i )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   numero suivant i dans le sens circulaire  1 2 3 1 ...
-c -----
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      if( i .eq. 3 ) then
-         nosui3 = 1
-      else
-         nosui3 = i + 1
-      endif
-      end
-
-      subroutine provec( v1 , v2 , v3 )
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    v3 vecteur = produit vectoriel de 2 vecteurs de r ** 3
-c -----
-c entrees:
-c --------
-c v1, v2 : les 2 vecteurs de 3 composantes
-c
-c sortie :
-c --------
-c v3     : vecteur = v1  produit vectoriel v2
-cc++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : perronnet alain upmc analyse numerique paris        mars 1987
-c2345x7..............................................................012
-      double precision    v1(3), v2(3), v3(3)
-c
-      v3( 1 ) = v1( 2 ) * v2( 3 ) - v1( 3 ) * v2( 2 )
-      v3( 2 ) = v1( 3 ) * v2( 1 ) - v1( 1 ) * v2( 3 )
-      v3( 3 ) = v1( 1 ) * v2( 2 ) - v1( 2 ) * v2( 1 )
-c
-      return
-      end
-
-      subroutine norme1( n, v, ierr )
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   normalisation euclidienne a 1 d un vecteur v de n composantes
-c -----
-c entrees :
-c ---------
-c n       : nombre de composantes du vecteur
-c
-c modifie :
-c ---------
-c v       : le vecteur a normaliser a 1
-c
-c sortie  :
-c ---------
-c ierr    : 1 si la norme de v est egale a 0
-c           0 si pas d'erreur
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet analyse numerique paris             mars 1987
-c ......................................................................
-      double precision  v( n ), s, sqrt
-c
-      s = 0.0d0
-      do 10 i=1,n
-         s = s + v( i ) * v( i )
-   10 continue
-c
-c     test de nullite de la norme du vecteur
-c     --------------------------------------
-      if( s .le. 0.0d0 ) then
-c        norme nulle du vecteur non normalisable a 1
-         ierr = 1
-         return
-      endif
-c
-      s = 1.0d0 / sqrt( s )
-      do 20 i=1,n
-         v( i ) = v ( i ) * s
-   20 continue
-c
-      ierr = 0
-      end
-
-
-      subroutine insoar( mxsomm, mosoar, mxsoar, n1soar, nosoar )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    initialiser le tableau nosoar pour le hachage des aretes
-c -----
-c
-c entrees:
-c --------
-c mxsomm : plus grand numero de sommet d'une arete au cours du calcul
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          avec mxsoar>=3*mxsomm
-c
-c sorties:
-c --------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c          chainage des aretes vides amont et aval
-c          l'arete vide qui precede=nosoar(4,i)
-c          l'arete vide qui suit   =nosoar(5,i)
-c nosoar : numero des 2 sommets, no ligne, 2 triangles de l'arete,
-c          chainage momentan'e d'aretes, chainage du hachage des aretes
-c          hachage des aretes = min( nosoar(1), nosoar(2) )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      integer   nosoar(mosoar,mxsoar)
-c
-c     initialisation des aretes 1 a mxsomm
-      do 10 i=1,mxsomm
-c
-c        sommet 1 = 0 <=> temoin d'arete vide pour le hachage
-         nosoar( 1, i ) = 0
-c
-c        arete sur aucune ligne
-         nosoar( 3, i ) = 0
-c
-c        la position de l'arete interne ou frontaliere est inconnue
-         nosoar( 6, i ) = -2
-c
-c        fin de chainage du hachage pas d'arete suivante
-         nosoar( mosoar, i ) = 0
-c
- 10   continue
-c
-c     la premiere arete vide chainee est la mxsomm+1 du tableau
-c     car ces aretes ne sont pas atteignables par le hachage direct
-      n1soar = mxsomm + 1
-c
-c     initialisation des aretes vides et des chainages
-      do 20 i = n1soar, mxsoar
-c
-c        sommet 1 = 0 <=> temoin d'arete vide pour le hachage
-         nosoar( 1, i ) = 0
-c
-c        arete sur aucune ligne
-         nosoar( 3, i ) = 0
-c
-c        chainage sur l'arete vide qui precede
-c        (si arete occupee cela deviendra le no du triangle 1 de l'arete)
-         nosoar( 4, i ) = i-1
-c
-c        chainage sur l'arete vide qui suit
-c        (si arete occupee cela deviendra le no du triangle 2 de l'arete)
-         nosoar( 5, i ) = i+1
-c
-c        chainages des aretes frontalieres ou internes ou ...
-         nosoar( 6, i ) = -2
-c
-c        fin de chainage du hachage
-         nosoar( mosoar, i ) = 0
-c
- 20   continue
-c
-c     la premiere arete vide n'a pas de precedent
-      nosoar( 4, n1soar ) = 0
-c
-c     la derniere arete vide est mxsoar sans arete vide suivante
-      nosoar( 5, mxsoar ) = 0
-      end
-
-
-      subroutine azeroi ( l , ntab )
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but : initialisation a zero d un tableau ntab de l variables entieres
-c -----
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet analyse numerique upmc paris septembre 1988
-c23456---------------------------------------------------------------012
-      integer ntab(l)
-      do 1 i = 1 , l
-         ntab( i ) = 0
-    1 continue
-      end
-
-
-      subroutine fasoar( ns1,    ns2,    nt1,    nt2,    nolign,
-     %                   mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                   noar,   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former l'arete de sommet ns1-ns2 dans le hachage du tableau
-c -----    nosoar des aretes de la triangulation
-c
-c entrees:
-c --------
-c ns1 ns2: numero pxyd des 2 sommets de l'arete
-c nt1    : numero du triangle auquel appartient l'arete
-c          nt1=-1 si numero inconnu
-c nt2    : numero de l'eventuel second triangle de l'arete si connu
-c          nt2=-1 si numero inconnu
-c nolign : numero de la ligne de l'arete dans ladefi(wulftr-1+nolign)
-c          =0 si l'arete n'est une arete de ligne
-c          ce numero est ajoute seulement si l'arete est creee
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c          chainage des aretes vides amont et aval
-c          l'arete vide qui precede=nosoar(4,i)
-c          l'arete vide qui suit   =nosoar(5,i)
-c nosoar : numero des 2 sommets, no ligne, 2 triangles de l'arete,
-c          chainage momentan'e d'aretes, chainage du hachage des aretes
-c          hachage des aretes = min( nosoar(1), nosoar(2) )
-c noarst : noarst(np) numero d'une arete du sommet np
-c
-c ierr   : si < 0  en entree pas d'affichage en cas d'erreur du type
-c         "arete appartenant a plus de 2 triangles et a creer!"
-c          si >=0  en entree       affichage de ce type d'erreur
-c
-c sorties:
-c --------
-c noar   : >0 numero de l'arete retrouvee ou ajoutee
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si arete a creer et appartenant a 2 triangles distincts
-c             des triangles nt1 et nt2
-c          =3 si arete appartenant a 2 triangles distincts
-c             differents des triangles nt1 et nt2
-c          =4 si arete appartenant a 2 triangles distincts
-c             dont le second n'est pas le triangle nt2
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      parameter        (lchain=6)
-      common / unites / lecteu, imprim, nunite(30)
-      integer           nosoar(mosoar,mxsoar), noarst(*)
-      integer           nu2sar(2)
-c
-      ierr = 0
-c
-c     ajout eventuel de l'arete s1 s2 dans nosoar
-      nu2sar(1) = ns1
-      nu2sar(2) = ns2
-c
-c     hachage de l'arete de sommets nu2sar
-      call hasoar( mosoar, mxsoar, n1soar, nosoar, nu2sar, noar )
-c     en sortie: noar>0 => no arete retrouvee
-c                    <0 => no arete ajoutee
-c                    =0 => saturation du tableau nosoar
-c
-      if( noar .eq. 0 ) then
-c
-c        saturation du tableau nosoar
-         write(imprim,*) 'fasoar: tableau nosoar sature'
-         ierr = 1
-         return
-c
-      else if( noar .lt. 0 ) then
-c
-c        l'arete a ete ajoutee. initialisation des autres informations
-         noar = -noar
-c        le numero de la ligne de l'arete
-         nosoar(3,noar) = nolign
-c        le triangle 1 de l'arete => le triangle nt1
-         nosoar(4,noar) = nt1
-c        le triangle 2 de l'arete => le triangle nt2
-         nosoar(5,noar) = nt2
-c        le chainage est mis a -1
-         nosoar(lchain,noar) = -1
-c
-c        le sommet appartient a l'arete noar
-         noarst( nu2sar(1) ) = noar
-         noarst( nu2sar(2) ) = noar
-c
-      else
-c
-c        l'arete a ete retrouvee.
-c        si elle appartient a 2 triangles differents de nt1 et nt2
-c        alors il y a une erreur
-         if( nosoar(4,noar) .gt. 0 .and.
-     %       nosoar(5,noar) .gt. 0 ) then
-             if( nosoar(4,noar) .ne. nt1 .and.
-     %           nosoar(4,noar) .ne. nt2 .or.
-     %           nosoar(5,noar) .ne. nt1 .and.
-     %           nosoar(5,noar) .ne. nt2 ) then
-c                arete appartenant a plus de 2 triangles => erreur
-                 if( ierr .ge. 0 ) then
-                    write(imprim,*) 'erreur fasoar: arete ',noar,
-     %              ' dans 2 triangles',nosoar(4,noar),nosoar(5,noar),
-     %              ' et ajouter',nt1,nt2
-                write(imprim,*)'arete',noar,(nosoar(i,noar),i=1,mosoar)
-                 endif
-c
-c                ERREUR. CORRECTION POUR VOIR ...
-                 nosoar(4,noar) = NT1
-                 nosoar(5,noar) = NT2
-ccc                 ierr = 2
-ccc                 return
-             endif
-         endif
-c
-c        mise a jour du numero des triangles de l'arete noar
-c        le triangle 2 de l'arete => le triangle nt1
-         if( nosoar(4,noar) .le. 0 ) then
-c            pas de triangle connu pour cette arete
-             n = 4
-         else
-c            deja un triangle connu. ce nouveau est le second
-             if( nosoar(5,noar) .gt. 0  .and.  nt1 .gt. 0 .and.
-     %           nosoar(5,noar) .ne. nt1 ) then
-c               arete appartenant a plus de 2 triangles => erreur
-                    write(imprim,*) 'erreur fasoar: arete ',noar,
-     %              ' dans triangles',nosoar(4,noar),nosoar(5,noar),
-     %              ' et ajouter triangle',nt1
-                ierr = 3
-                return
-             endif
-             n = 5
-         endif
-         nosoar(n,noar) = nt1
-c
-c        cas de l'arete frontaliere retrouvee comme diagonale d'un quadrangle
-         if( nt2 .gt. 0 ) then
-c           l'arete appartient a 2 triangles
-            if( nosoar(5,noar) .gt. 0  .and.
-     %          nosoar(5,noar) .ne. nt2 ) then
-c               arete appartenant a plus de 2 triangles => erreur
-                write(imprim,*) 'erreur fasoar: arete ',noar,
-     %         ' de st',nosoar(1,noar),'-',nosoar(2,noar),
-     %         ' dans plus de 2 triangles'
-                ierr = 4
-                return
-            endif
-            nosoar(5,noar) = nt2
-         endif
-c
-      endif
-c
-c     pas d'erreur
-      ierr = 0
-      end
-
-      subroutine fq1inv( x, y, s, xc, yc, ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   calcul des 2 coordonnees (xc,yc) dans le carre (0,1)
-c -----   image par f:carre unite-->quadrangle appartenant a q1**2
-c         par une resolution directe due a Nicolas Thenault
-c
-c entrees:
-c --------
-c x,y   : coordonnees du point image dans le quadrangle de sommets s
-c s     : les 2 coordonnees des 4 sommets du quadrangle
-c
-c sorties:
-c --------
-c xc,yc : coordonnees dans le carre dont l'image par f vaut (x,y)
-c ierr  : 0 si calcul sans erreur, 1 si quadrangle degenere
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteurs: thenault tulenew  analyse numerique paris        janvier 1998
-c modifs : perronnet alain   analyse numerique paris        janvier 1998
-c234567..............................................................012
-      real             s(1:2,1:4), dist(2)
-      double precision a,b,c,d,alpha,beta,gamma,delta,x0,y0,t(2),u,v,w
-c
-      a = s(1,1)
-      b = s(1,2) - s(1,1)
-      c = s(1,4) - s(1,1)
-      d = s(1,1) - s(1,2) + s(1,3) - s(1,4)
-c
-      alpha = s(2,1)
-      beta  = s(2,2) - s(2,1)
-      gamma = s(2,4) - s(2,1)
-      delta = s(2,1) - s(2,2) + s(2,3) - s(2,4)
-c
-      u = beta  * c - b * gamma
-      if( u .eq. 0 ) then
-c        quadrangle degenere
-         ierr = 1
-         return
-      endif
-      v = delta * c - d * gamma
-      w = b * delta - beta * d
-c
-      x0 = c * (y-alpha) - gamma * (x-a)
-      y0 = b * (y-alpha) - beta  * (x-a)
-c
-      a = v  * w
-      b = u  * u - w * x0 - v * y0
-      c = x0 * y0
-c
-      if( a .ne. 0 ) then
-c
-         delta = sqrt( b*b-4*a*c )
-         if( b .ge. 0.0 ) then
-            t(2) = -b - delta
-         else
-            t(2) = -b + delta
-         endif
-c        la racine de plus grande valeur absolue
-c       (elle donne le plus souvent le point exterieur au carre unite
-c        donc a tester en second pour reduire les calculs)
-         t(2) = t(2) / ( 2 * a )
-c        calcul de la seconde racine a partir de la somme => plus stable
-         t(1) = - b/a - t(2)
-c
-         do 10 i=1,2
-c
-c           la solution i donne t elle un point interne au carre unite?
-            xc = ( x0 - v * t(i) ) / u
-            yc = ( w * t(i) - y0 ) / u
-            if( 0.0 .le. xc .and. xc .le. 1.0 ) then
-               if( 0.0 .le. yc .and. yc .le. 1.0 ) goto 9000
-            endif
-c
-c           le point (xc,yc) n'est pas dans le carre unite
-c           cela peut etre du aux erreurs d'arrondi
-c           => choix par le minimum de la distance aux bords du carre
-            dist(i) = max( 0.0, -xc, xc-1.0, -yc, yc-1.0 )
-c
- 10      continue
-c
-         if( dist(1) .gt. dist(2) ) then
-c           f(xc,yc) pour la racine 2 est plus proche de x,y
-c           xc yc sont deja calcules
-            goto 9000
-         endif
-c
-      else if ( b .ne. 0 ) then
-         t(1) = - c / b
-      else
-         t(1) = 0
-      endif
-c
-c     les 2 coordonnees du point dans le carre unite
-      xc = ( x0 - v * t(1) ) / u
-      yc = ( w * t(1) - y0 ) / u
-c
- 9000 ierr = 0
-      return
-      end
-
-
-      subroutine ptdatr( point, pxyd, nosotr, nsigne )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    le point est il dans le triangle de sommets nosotr
-c -----
-c
-c entrees:
-c --------
-c point  : les 2 coordonnees du point
-c pxyd   : les 2 coordonnees et distance souhaitee des points du maillage
-c nosotr : le numero des 3 sommets du triangle
-c
-c sorties:
-c --------
-c nsigne : >0 si le point est dans le triangle ou sur une des 3 aretes
-c          =0 si le triangle est degenere ou indirect ou ne contient pas le poin
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      integer           nosotr(3)
-      double precision  point(2), pxyd(3,*)
-      double precision  xp,yp, x1,x2,x3, y1,y2,y3, d,dd, cb1,cb2,cb3
-c
-      xp = point( 1 )
-      yp = point( 2 )
-c
-      n1 = nosotr( 1 )
-      x1 = pxyd( 1 , n1 )
-      y1 = pxyd( 2 , n1 )
-c
-      n2 = nosotr( 2 )
-      x2 = pxyd( 1 , n2 )
-      y2 = pxyd( 2 , n2 )
-c
-      n3 = nosotr( 3 )
-      x3 = pxyd( 1 , n3 )
-      y3 = pxyd( 2 , n3 )
-c
-c     2 fois la surface du triangle = determinant de la matrice
-c     de calcul des coordonnees barycentriques du point p
-      d  = ( x2 - x1 ) * ( y3 - y1 ) - ( x3 - x1 ) * ( y2 - y1 )
-c
-      if( d .gt. 0 ) then
-c
-c        triangle non degenere
-c        =====================
-c        calcul des 3 coordonnees barycentriques du
-c        point xp yp dans le triangle
-         cb1 = ( ( x2-xp ) * ( y3-yp ) - ( x3-xp ) * ( y2-yp ) ) / d
-         cb2 = ( ( x3-xp ) * ( y1-yp ) - ( x1-xp ) * ( y3-yp ) ) / d
-         cb3 = 1d0 - cb1 -cb2
-ccc         cb3 = ( ( x1-xp ) * ( y2-yp ) - ( x2-xp ) * ( y1-yp ) ) / d
-c
-ccc         if( cb1 .ge. -0.00005d0 .and. cb1 .le. 1.00005d0 .and.
-         if( cb1 .ge. 0d0 .and. cb1 .le. 1d0 .and.
-     %       cb2 .ge. 0d0 .and. cb2 .le. 1d0 .and.
-     %       cb3 .ge. 0d0 .and. cb3 .le. 1d0 ) then
-c
-c           le triangle nosotr contient le point
-            nsigne = 1
-         else
-            nsigne = 0
-         endif
-c
-      else
-c
-c        triangle degenere
-c        =================
-c        le point est il du meme cote que le sommet oppose de chaque arete?
-         nsigne = 0
-         do 10 i=1,3
-c           le sinus de l'angle p1 p2-p1 point
-            x1  = pxyd(1,n1)
-            y1  = pxyd(2,n1)
-            d   = ( pxyd(1,n2) - x1 ) * ( point(2) - y1 )
-     %          - ( pxyd(2,n2) - y1 ) * ( point(1) - x1 )
-            dd  = ( pxyd(1,n2) - x1 ) * ( pxyd(2,n3) - y1 )
-     %          - ( pxyd(2,n2) - y1 ) * ( pxyd(1,n3) - x1 )
-            cb1 = ( pxyd(1,n2) - x1 ) ** 2
-     %          + ( pxyd(2,n2) - y1 ) ** 2
-            cb2 = ( point(1) - x1 ) ** 2
-     %          + ( point(2) - y1 ) ** 2
-            cb3 = ( pxyd(1,n3) - x1 ) ** 2
-     %          + ( pxyd(2,n3) - y1 ) ** 2
-            if( abs( dd ) .le. 1e-4 * sqrt( cb1 * cb3 ) ) then
-c              le point 3 est sur l'arete 1-2
-c              le point doit y etre aussi
-               if( abs( d ) .le. 1e-4 * sqrt( cb1 * cb2 ) ) then
-c                 point sur l'arete
-                  nsigne = nsigne + 1
-               endif
-            else
-c              le point 3 n'est pas sur l'arete . test des signes
-               if( d * dd .ge. 0 ) then
-                  nsigne = nsigne + 1
-               endif
-            endif
-c           permutation circulaire des 3 sommets et aretes
-            n  = n1
-            n1 = n2
-            n2 = n3
-            n3 = n
- 10      continue
-         if( nsigne .ne. 3 ) nsigne = 0
-      endif
-      end
-
-      integer function nosstr( p, pxyd, nt, letree )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    calculer le numero 0 a 3 du sous-triangle te contenant
-c -----    le point p
-c
-c entrees:
-c --------
-c p      : point de r**2 contenu dans le te nt de letree
-c pxyd   : x y distance des points
-c nt     : numero letree du te de te voisin a calculer
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c      letree(0,0)  no du 1-er te vide dans letree
-c      letree(0,1) : maximum du 1-er indice de letree (ici 8)
-c      letree(0,2) : maximum declare du 2-eme indice de letree (ici mxtree)
-c      letree(0:8,1) : racine de l'arbre  (triangle sans sur triangle)
-c      si letree(0,.)>0 alors
-c         letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c      sinon
-c         letree(0:3,j) :-no pxyd des 1 \85a 4 points internes au triangle j
-c                         0  si pas de point
-c                       ( j est alors une feuille de l'arbre )
-c      letree(4,j) : no letree du sur-triangle du triangle j
-c      letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c      letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c sorties :
-c ---------
-c nosstr : 0 si le sous-triangle central contient p
-c          i =1,2,3 numero du sous-triangle contenant p
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      integer           letree(0:8,0:*)
-      double precision  pxyd(3,*), p(2),
-     %                  x1, y1, x21, y21, x31, y31, d, xe, ye
-c
-c     le numero des 3 sommets du triangle
-      ns1 = letree( 6, nt )
-      ns2 = letree( 7, nt )
-      ns3 = letree( 8, nt )
-c
-c     les coordonnees entre 0 et 1 du point p
-      x1  = pxyd(1,ns1)
-      y1  = pxyd(2,ns1)
-c
-      x21 = pxyd(1,ns2) - x1
-      y21 = pxyd(2,ns2) - y1
-c
-      x31 = pxyd(1,ns3) - x1
-      y31 = pxyd(2,ns3) - y1
-c
-      d   = 1.0 / ( x21 * y31 - x31 * y21 )
-c
-      xe  = ( ( p(1) - x1 ) * y31 - ( p(2) - y1 ) * x31 ) * d
-      ye  = ( ( p(2) - y1 ) * x21 - ( p(1) - x1 ) * y21 ) * d
-c
-      if( xe .gt. 0.5d0 ) then
-c        sous-triangle droit
-         nosstr = 2
-      else if( ye .gt. 0.5d0 ) then
-c        sous-triangle haut
-         nosstr = 3
-      else if( xe+ye .lt. 0.5d0 ) then
-c        sous-triangle gauche
-         nosstr = 1
-      else
-c        sous-triangle central
-         nosstr = 0
-      endif
-      end
-
-
-      integer function notrpt( p, pxyd, notrde, letree )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    calculer le numero letree du sous-triangle feuille contenant
-c -----    le point p a partir du te notrde de letree
-c
-c entrees:
-c --------
-c p      : point de r**2 contenu dans le te nt de letree
-c pxyd   : x y distance des points
-c notrde : numero letree du triangle depart de recherche (1=>racine)
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c      letree(0,0)  no du 1-er te vide dans letree
-c      letree(0,1) : maximum du 1-er indice de letree (ici 8)
-c      letree(0,2) : maximum declare du 2-eme indice de letree (ici mxtree)
-c      letree(0:8,1) : racine de l'arbre  (triangle sans sur triangle)
-c      si letree(0,.)>0 alors
-c         letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c      sinon
-c         letree(0:3,j) :-no pxyd des 1 \85 4 points internes au triangle j
-c                         0  si pas de point
-c                        ( j est alors une feuille de l'arbre )
-c      letree(4,j) : no letree du sur-triangle du triangle j
-c      letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c      letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c sorties :
-c ---------
-c notrpt : numero letree du triangle contenant le point p
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      integer           letree(0:8,0:*)
-      double precision  pxyd(1:3,*), p(2)
-c
-c     la racine depart de la recherche
-      notrpt = notrde
-c
-c     tant que la feuille n'est pas atteinte descendre l'arbre
- 10   if( letree(0,notrpt) .gt. 0 ) then
-c
-c        recherche du sous-triangle contenant p
-         nsot = nosstr( p, pxyd, notrpt, letree )
-c
-c        le numero letree du sous-triangle
-         notrpt = letree( nsot, notrpt )
-         goto 10
-c
-      endif
-      end
-
-
-      subroutine teajpt( ns,   nbsomm, mxsomm, pxyd, letree,
-     &                   ntrp, ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    ajout du point ns de pxyd dans letree
-c -----
-c
-c entrees:
-c --------
-c ns     : numero du point a ajouter dans letree
-c mxsomm : nombre maximal de points declarables dans pxyd
-c pxyd   : tableau des coordonnees des points
-c          par point : x  y  distance_souhaitee
-c
-c modifies :
-c ----------
-c nbsomm : nombre actuel de points dans pxyd
-c
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c      letree(0,0) : no du 1-er te vide dans letree
-c      letree(0,1) : maximum du 1-er indice de letree (ici 8)
-c      letree(0,2) : maximum declare du 2-eme indice de letree (ici mxtree)
-c      letree(0:8,1) : racine de l'arbre  (triangle sans sur triangle)
-c      si letree(0,.)>0 alors
-c         letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c      sinon
-c         letree(0:3,j) :-no pxyd des 1 \85a 4 points internes au triangle j
-c                         0  si pas de point
-c                        ( j est alors une feuille de l'arbre )
-c      letree(4,j) : no letree du sur-triangle du triangle j
-c      letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c      letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c sorties :
-c ---------
-c ntrp    : numero letree du triangle te ou a ete ajoute le point
-c ierr    : 0 si pas d'erreur,  51 saturation letree, 52 saturation pxyd
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      integer           letree(0:8,0:*)
-      double precision  pxyd(3,mxsomm)
-c
-c     depart de la racine
-      ntrp = 1
-c
-c     recherche du triangle contenant le point pxyd(ns)
- 1    ntrp = notrpt( pxyd(1,ns), pxyd, ntrp, letree )
-c
-c     existe t il un point libre
-      do 10 i=0,3
-         if( letree(i,ntrp) .eq. 0 ) then
-c           la place i est libre
-            letree(i,ntrp) = -ns
-            ierr = 0
-            return
-         endif
- 10   continue
-c
-c     pas de place libre => 4 sous-triangles sont crees
-c                           a partir des 3 milieux des aretes
-      call te4ste( nbsomm, mxsomm, pxyd, ntrp, letree, ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout du point ns
-      goto 1
-      end
-
-      subroutine n1trva( nt, lar, letree, notrva, lhpile )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    calculer le numero letree du triangle voisin du te nt
-c -----    par l'arete lar (1 a 3 ) de nt
-c          attention : notrva n'est pas forcement minimal
-c
-c entrees:
-c --------
-c nt     : numero letree du te de te voisin a calculer
-c lar    : numero 1 a 3 de l'arete du triangle nt
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c   letree(0,0)  no du 1-er te vide dans letree
-c   letree(0,1) : maximum du 1-er indice de letree (ici 8)
-c   letree(0,2) : maximum declare du 2-eme indice de letree (ici mxtree)
-c   letree(0:8,1) : racine de l'arbre  (triangle sans sur-triangle)
-c   si letree(0,.)>0 alors
-c      letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c   sinon
-c      letree(0:3,j) :-no pxyd des 1 a 4 points internes au triangle j
-c                      0  si pas de point
-c                     ( j est alors une feuille de l'arbre )
-c   letree(4,j) : no letree du sur-triangle du triangle j
-c   letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c   letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c sorties :
-c ---------
-c notrva  : >0 numero letree du te voisin par l'arete lar
-c           =0 si pas de te voisin (racine , ... )
-c lhpile  : =0 si nt et notrva ont meme taille
-c           >0 nt est 4**lhpile fois plus petit que notrva
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      integer   letree(0:8,0:*)
-      integer   lapile(1:64)
-c
-c     initialisation de la pile
-c     le triangle est empile
-      lapile(1) = nt
-      lhpile = 1
-c
-c     tant qu'il existe un sur-triangle
- 10   ntr  = lapile( lhpile )
-      if( ntr .eq. 1 ) then
-c        racine atteinte => pas de triangle voisin
-         notrva = 0
-         lhpile = lhpile - 1
-         return
-      endif
-c
-c     le type du triangle ntr
-      nty  = letree( 5, ntr )
-c     l'eventuel sur-triangle
-      nsut = letree( 4, ntr )
-c
-      if( nty .eq. 0 ) then
-c
-c        triangle de type 0 => triangle voisin de type precedent(lar)
-c                              dans le sur-triangle de ntr
-c                              ce triangle remplace ntr dans lapile
-         lapile( lhpile ) = letree( nopre3(lar), nsut )
-         goto 20
-      endif
-c
-c     triangle ntr de type nty>0
-      if( nosui3(nty) .eq. lar ) then
-c
-c        le triangle voisin par lar est le triangle 0
-         lapile( lhpile ) = letree( 0, nsut )
-         goto 20
-      endif
-c
-c     triangle sans voisin direct => passage par le sur-triangle
-      if( nsut .eq. 0 ) then
-c
-c        ntr est la racine => pas de triangle voisin par cette arete
-         notrva = 0
-         return
-      else
-c
-c        le sur-triangle est empile
-         lhpile = lhpile + 1
-         lapile(lhpile) = nsut
-         goto 10
-      endif
-c
-c     descente aux sous-triangles selon la meme arete
- 20   notrva = lapile( lhpile )
-c
- 30   lhpile = lhpile - 1
-      if( letree(0,notrva) .le. 0 ) then
-c        le triangle est une feuille de l'arbre 0 sous-triangle
-c        lhpile = nombre de differences de niveaux dans l'arbre
-         return
-      else
-c        le triangle a 4 sous-triangles
-         if( lhpile .gt. 0 ) then
-c
-c           bas de pile non atteint
-            nty  = letree( 5, lapile(lhpile) )
-            if( nty .eq. lar ) then
-c              l'oppose est suivant(nty) de notrva
-               notrva = letree( nosui3(nty) , notrva )
-            else
-c              l'oppose est precedent(nty) de notrva
-               notrva = letree( nopre3(nty) , notrva )
-            endif
-            goto 30
-         endif
-      endif
-c
-c     meme niveau dans l'arbre lhpile = 0
-      end
-
-
-      subroutine cenced( xy1, xy2, xy3, cetria, ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but : calcul des coordonnees du centre du cercle circonscrit
-c ----- du triangle defini par ses 3 sommets de coordonnees
-c       xy1 xy2 xy3 ainsi que le carre du rayon de ce cercle
-c
-c entrees :
-c ---------
-c xy1 xy2 xy3 : les 2 coordonnees des 3 sommets du triangle
-c ierr   : <0  => pas d'affichage si triangle degenere
-c          >=0 =>       affichage si triangle degenere
-c
-c sortie :
-c --------
-c cetria : cetria(1)=abcisse  du centre
-c          cetria(2)=ordonnee du centre
-c          cetria(3)=carre du rayon   1d28 si triangle degenere
-c ierr   : 0 si triangle non degenere
-c          1 si triangle degenere
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : perronnet alain upmc analyse numerique paris        juin 1995
-c2345x7..............................................................012
-      parameter        (epsurf=1d-7)
-      common / unites / lecteu,imprim,nunite(30)
-      double precision  x1,y1,x21,y21,x31,y31,
-     %                  aire2,xc,yc,rot,
-     %                  xy1(2),xy2(2),xy3(2),cetria(3)
-c
-c     le calcul de 2 fois l'aire du triangle
-c     attention l'ordre des 3 sommets est direct ou non
-      x1  = xy1(1)
-      x21 = xy2(1) - x1
-      x31 = xy3(1) - x1
-c
-      y1  = xy1(2)
-      y21 = xy2(2) - y1
-      y31 = xy3(2) - y1
-c
-      aire2  = x21 * y31 - x31 * y21
-c
-c     recherche d'un test relatif peu couteux
-c     pour reperer la degenerescence du triangle
-      if( abs(aire2) .le.
-     %    epsurf*(abs(x21)+abs(x31))*(abs(y21)+abs(y31)) ) then
-c        triangle de qualite trop faible
-         if( ierr .ge. 0 ) then
-c            nblgrc(nrerr) = 1
-c            kerr(1) = 'erreur cenced: triangle degenere'
-c            call lereur
-            write(imprim,*) 'erreur cenced: triangle degenere'
-            write(imprim,10000)  xy1,xy2,xy3,aire2
-         endif
-10000 format( 3(' x=',g24.16,' y=',g24.16/),' aire*2=',g24.16)
-         cetria(1) = 0d0
-         cetria(2) = 0d0
-         cetria(3) = 1d28
-         ierr = 1
-         return
-      endif
-c
-c     les 2 coordonnees du centre intersection des 2 mediatrices
-c     x = (x1+x2)/2 + lambda * (y2-y1)
-c     y = (y1+y2)/2 - lambda * (x2-x1)
-c     x = (x1+x3)/2 + rot    * (y3-y1)
-c     y = (y1+y3)/2 - rot    * (x3-x1)
-c     ==========================================================
-      rot = ((xy2(1)-xy3(1))*x21 + (xy2(2)-xy3(2))*y21) / (2 * aire2)
-c
-      xc = ( x1 + xy3(1) ) * 0.5d0 + rot * y31
-      yc = ( y1 + xy3(2) ) * 0.5d0 - rot * x31
-c
-      cetria(1) = xc
-      cetria(2) = yc
-c
-c     le carre du rayon
-      cetria(3) = (x1-xc) ** 2 + (y1-yc) ** 2
-c
-c     pas d'erreur rencontree
-      ierr = 0
-      end
-
-
-      double precision function angled( p1, p2, p3 )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   calculer l'angle (p1p2,p1p3) en radians
-c -----
-c
-c entrees :
-c ---------
-c p1,p2,p3 : les 2 coordonnees des 3 sommets de l'angle
-c               sens direct pour une surface >0
-c sorties :
-c ---------
-c angled :  angle (p1p2,p1p3) en radians entre [0 et 2pi]
-c           0 si p1=p2 ou p1=p3
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet analyse numerique upmc paris     fevrier 1992
-c2345x7..............................................................012
-      double precision  p1(2),p2(2),p3(2),x21,y21,x31,y31,a1,a2,d,c
-c
-c     les cotes
-      x21 = p2(1) - p1(1)
-      y21 = p2(2) - p1(2)
-      x31 = p3(1) - p1(1)
-      y31 = p3(2) - p1(2)
-c
-c     longueur des cotes
-      a1 = x21 * x21 + y21 * y21
-      a2 = x31 * x31 + y31 * y31
-      d  = sqrt( a1 * a2 )
-      if( d .eq. 0 ) then
-         angled = 0
-         return
-      endif
-c
-c     cosinus de l'angle
-      c  = ( x21 * x31 + y21 * y31 ) / d
-      if( c .le. -1.d0 ) then
-c        tilt sur apollo si acos( -1 -eps )
-         angled = atan( 1.d0 ) * 4.d0
-         return
-      else if( c .ge. 1.d0 ) then
-c        tilt sur apollo si acos( 1 + eps )
-         angled = 0
-         return
-      endif
-c
-      angled = acos( c )
-      if( x21 * y31 - x31 * y21 .lt. 0 ) then
-c        demi plan inferieur
-         angled = 8.d0 * atan( 1.d0 ) - angled
-      endif
-      end
-
-
-      subroutine teajte( mxsomm, nbsomm, pxyd,   comxmi,
-     %                   aretmx, mxtree, letree,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    initialisation des tableaux letree
-c -----    ajout des sommets 1 a nbsomm (valeur en entree) dans letree
-c
-c entrees:
-c --------
-c mxsomm : nombre maximal de sommets permis pour la triangulation
-c mxtree : nombre maximal de triangles equilateraux (te) declarables
-c aretmx : longueur maximale des aretes des triangles equilateraux
-c
-c entrees et sorties :
-c --------------------
-c nbsomm : nombre de sommets apres identification
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c          tableau reel(3,mxsomm)
-c
-c sorties:
-c --------
-c comxmi : coordonnees minimales et maximales des points frontaliers
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          letree(0,0) : no du 1-er te vide dans letree
-c          letree(0,1) : maximum du 1-er indice de letree (ici 8)
-c          letree(0,2) : maximum declare du 2-eme indice de letree (ici mxtree)
-c          letree(0:8,1) : racine de l'arbre  (triangle sans sur triangle)
-c          si letree(0,.)>0 alors
-c             letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c          sinon
-c             letree(0:3,j) :-no pxyd des 1 a 4 points internes au triangle j
-c                             0  si pas de point
-c                             ( j est alors une feuille de l'arbre )
-c          letree(4,j) : no letree du sur-triangle du triangle j
-c          letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c ierr   :  0 si pas d'erreur
-c          51 saturation letree
-c          52 saturation pxyd
-c           7 tous les points sont alignes
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    juillet 1994
-c....................................................................012
-      integer           letree(0:8,0:mxtree)
-      double precision  pxyd(3,mxsomm)
-      double precision  comxmi(3,2)
-      double precision  a(2),s,aretmx,rac3
-c
-c     protection du nombre de sommets avant d'ajouter ceux de tetree
-      ierr   = 0
-      nbsofr = nbsomm
-      do 1 i = 1, nbsomm 
-         comxmi(1,1) = min( comxmi(1,1), pxyd(1,i) )
-         comxmi(1,2) = max( comxmi(1,2), pxyd(1,i) )
-         comxmi(2,1) = min( comxmi(2,1), pxyd(2,i) )
-         comxmi(2,2) = max( comxmi(2,2), pxyd(2,i) )
- 1    continue
-c
-c     creation de l'arbre letree
-c     ==========================
-c     la premiere colonne vide de letree
-      letree(0,0) = 2
-c     chainage des te vides
-      do 4 i = 2 , mxtree
-         letree(0,i) = i+1
- 4    continue
-      letree(0,mxtree) = 0
-c     les maxima des 2 indices de letree
-      letree(1,0) = 8
-      letree(2,0) = mxtree
-c
-c     la racine
-c     aucun point interne au triangle equilateral (te) 1
-      letree(0,1) = 0
-      letree(1,1) = 0
-      letree(2,1) = 0
-      letree(3,1) = 0
-c     pas de sur-triangle
-      letree(4,1) = 0
-      letree(5,1) = 0
-c     le numero pxyd des 3 sommets du te 1
-      letree(6,1) = nbsomm + 1
-      letree(7,1) = nbsomm + 2
-      letree(8,1) = nbsomm + 3
-c
-c     calcul de la largeur et hauteur du rectangle englobant
-c     ======================================================
-      a(1) = comxmi(1,2) - comxmi(1,1)
-      a(2) = comxmi(2,2) - comxmi(2,1)
-c     la longueur de la diagonale
-      s = sqrt( a(1)**2 + a(2)**2 )
-      do 60 k=1,2
-         if( a(k) .lt. 1e-4 * s ) then
-c            nblgrc(nrerr) = 1
-            write(imprim,*) 'tous les points sont alignes'
-c            call lereur
-            ierr = 7
-            return
-         endif
- 60   continue
-c
-c     le maximum des ecarts
-      s = s + s
-c
-c     le triangle equilateral englobant
-c     =================================
-c     ecart du rectangle au triangle equilateral
-      rac3 = sqrt( 3.0d0 )
-      arete = a(1) + 2 * aretmx + 2 * ( a(2) + aretmx ) / rac3
-c
-c     le point nbsomm + 1 en bas a gauche
-      nbsomm = nbsomm + 1
-      pxyd(1,nbsomm) = (comxmi(1,1)+comxmi(1,2))*0.5d0 - arete*0.5d0
-      pxyd(2,nbsomm) =  comxmi(2,1) - aretmx
-      pxyd(3,nbsomm) = s
-c
-c     le point nbsomm + 2 en bas a droite
-      nbsomm = nbsomm + 1
-      pxyd(1,nbsomm) = pxyd(1,nbsomm-1) + arete
-      pxyd(2,nbsomm) = pxyd(2,nbsomm-1)
-      pxyd(3,nbsomm) = s
-c
-c     le point nbsomm + 3 sommet au dessus
-      nbsomm = nbsomm + 1
-      pxyd(1,nbsomm) = pxyd(1,nbsomm-2) + arete * 0.5d0
-      pxyd(2,nbsomm) = pxyd(2,nbsomm-2) + arete * 0.5d0 * rac3
-      pxyd(3,nbsomm) = s
-c
-c     ajout des sommets des lignes pour former letree
-c     ===============================================
-      do 150 i=1,nbsofr
-c        ajout du point i de pxyd a letree
-         call teajpt(  i, nbsomm, mxsomm, pxyd, letree,
-     &                nt, ierr )
-         if( ierr .ne. 0 ) return
- 150  continue
-c
-      return
-      end
-
-
-      subroutine tetaid( nutysu, dx, dy, longai, ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :     calculer la longueur de l'arete ideale longai en dx,dy
-c -----
-c entrees:
-c --------
-c nutysu : numero de traitement de areteideale() selon le type de surface
-c          0 pas d'emploi de la fonction areteideale() => aretmx active
-c          1 il existe une fonction areteideale(xyz,xyzdir)
-c          ... autres options a definir ...
-c dx, dy : abscisse et ordonnee dans le plan du point (reel2!)
-c
-c sorties:
-c --------
-c longai : longueur de l'areteideale(xyz,xyzdir) autour du point xyz
-c ierr   : 0 si pas d'erreur, <>0 sinon
-c          1 calcul incorrect de areteideale(xyz,xyzdir)
-c          2 longueur calculee nulle
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      common / unites / lecteu, imprim, nunite(30)
-c
-      double precision  areteideale
-      double precision  dx, dy, longai
-      double precision  xyz(3), xyzd(3), d0
-c
-      ierr = 0
-      if( nutysu .gt. 0 ) then
-         d0 = longai
-c        le point ou se calcule la longueur
-         xyz(1) = dx
-         xyz(2) = dy
-c        z pour le calcul de la longueur (inactif ici!)
-         xyz(3) = 0d0
-c        la direction pour le calcul de la longueur (inactif ici!)
-         xyzd(1) = 0d0
-         xyzd(2) = 0d0
-         xyzd(3) = 0d0
-
-         longai = areteideale(xyz,xyzd)
-c         (xyz,xyzd)
-         if( longai .lt. 0d0 ) then
-            write(imprim,10000) xyz
-10000       format('attention: longueur de areteideale(',
-     %              g14.6,',',g14.6,',',g14.6,')<=0! => rendue >0' )
-            longai = -longai
-         endif
-         if( longai .eq. 0d0 ) then
-            write(imprim,10001) xyz
-10001       format('erreur: longueur de areteideale(',
-     %              g14.6,',',g14.6,',',g14.6,')=0!' )
-            ierr = 2
-            longai = d0
-         endif
-      endif
-      end
-
-
-      subroutine tehote( nutysu,
-     %                   nbarpi, mxsomm, nbsomm, pxyd,
-     %                   comxmi, aretmx,
-     %                   letree, mxqueu, laqueu,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :     homogeneisation de l'arbre des te a un saut de taille au plus
-c -----     prise en compte des distances souhaitees autour des sommets initiaux
-c
-c entrees:
-c --------
-c nutysu : numero de traitement de areteideale() selon le type de surface
-c          0 pas d'emploi de la fonction areteideale() => aretmx active
-c          1 il existe une fonction areteideale()
-c            dont seules les 2 premieres composantes de uv sont actives
-c          autres options a definir...
-c nbarpi : nombre de sommets de la frontiere + nombre de points internes
-c          imposes par l'utilisateur
-c mxsomm : nombre maximal de sommets permis pour la triangulation  et te
-c mxqueu : nombre d'entiers utilisables dans laqueu
-c comxmi : minimum et maximum des coordonnees de l'objet
-c aretmx : longueur maximale des aretes des triangles equilateraux
-c permtr : perimetre de la ligne enveloppe dans le plan
-c          avant mise a l'echelle a 2**20
-c
-c modifies:
-c ---------
-c nbsomm : nombre de sommets apres identification
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          letree(0,0) : no du 1-er te vide dans letree
-c          letree(1,0) : maximum du 1-er indice de letree (ici 8)
-c          letree(2,0) : maximum declare du 2-eme indice de letree (ici mxtree)
-c          letree(0:8,1) : racine de l'arbre  (triangle sans sur triangle)
-c          si letree(0,.)>0 alors
-c             letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c          sinon
-c             letree(0:3,j) :-no pxyd des 1 a 4 points internes au triangle j
-c                             0  si pas de point
-c                             ( j est alors une feuille de l'arbre )
-c          letree(4,j) : no letree du sur-triangle du triangle j
-c          letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c auxiliaire :
-c ------------
-c laqueu : mxqueu entiers servant de queue pour le parcours de letree
-c
-c sorties:
-c --------
-c ierr   :  0 si pas d'erreur
-c          51 si saturation letree dans te4ste
-c          52 si saturation pxyd   dans te4ste
-c          >0 si autre erreur
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc      avril 1997
-c2345x7..............................................................012
-      double precision  ampli
-      parameter        (ampli=1.34d0)
-      common / unites / lecteu, imprim, intera, nunite(29)
-c
-      double precision  pxyd(3,mxsomm), d2, aretm2
-      double precision  comxmi(3,2),aretmx,a,s,xrmin,xrmax,yrmin,yrmax
-      double precision  dmin, dmax
-      integer           letree(0:8,0:*)
-c
-      integer           laqueu(1:mxqueu),lequeu
-c                       lequeu : entree dans la queue
-c                       lhqueu : longueur de la queue
-c                       gestion circulaire
-c
-      integer           nuste(3)
-      equivalence      (nuste(1),ns1),(nuste(2),ns2),(nuste(3),ns3)
-c
-      ierr = 0
-c
-c     existence ou non de la fonction 'taille_ideale' des aretes
-c     autour du point.  ici la carte est supposee isotrope
-c     ==========================================================
-c     attention: si la fonction taille_ideale existe
-c                alors pxyd(3,*) est la taille_ideale dans l'espace initial
-c                sinon pxyd(3,*) est la distance calculee dans le plan par
-c                propagation a partir des tailles des aretes de la frontiere
-c
-      if( nutysu .gt. 0 ) then
-c
-c        la fonction taille_ideale(x,y,z) existe
-c        ---------------------------------------
-c        initialisation de la distance souhaitee autour des points 1 a nbsomm
-         do 1 i=1,nbsomm
-c           calcul de pxyzd(3,i)
-            call tetaid( nutysu, pxyd(1,i), pxyd(2,i),
-     %                   pxyd(3,i), ierr )
-            if( ierr .ne. 0 ) goto 9999
- 1       continue
-c
-      else
-c
-c        la fonction taille_ideale(x,y,z) n'existe pas
-c        ---------------------------------------------
-c        prise en compte des distances souhaitees dans le plan
-c        autour des points frontaliers et des points internes imposes
-c        toutes les autres distances souhaitees ont ete mis a aretmx
-c        lors de l'execution du sp teqini
-         do 3 i=1,nbarpi
-c           le sommet i n'est pas un sommet de letree => sommet frontalier
-c           recherche du sous-triangle minimal feuille contenant le point i
-            nte = 1
- 2          nte = notrpt( pxyd(1,i), pxyd, nte, letree )
-c           la distance au sommet le plus eloigne est elle inferieure
-c           a la distance souhaitee?
-            ns1 = letree(6,nte)
-            ns2 = letree(7,nte)
-            ns3 = letree(8,nte)
-            d2  = max( ( pxyd(1,i)-pxyd(1,ns1) )**2 +
-     %                 ( pxyd(2,i)-pxyd(2,ns1) )**2
-     %               , ( pxyd(1,i)-pxyd(1,ns2) )**2 +
-     %                 ( pxyd(2,i)-pxyd(2,ns2) )**2
-     %               , ( pxyd(1,i)-pxyd(1,ns3) )**2 +
-     %                 ( pxyd(2,i)-pxyd(2,ns3) )**2 )
-            if( d2 .gt. pxyd(3,i)**2 ) then
-c              le triangle nte trop grand doit etre subdivise en 4 sous-triangle
-               call te4ste( nbsomm, mxsomm, pxyd, nte, letree,
-     &                      ierr )
-               if( ierr .ne. 0 ) return
-               goto 2
-            endif
- 3       continue
-      endif
-c
-c     le sous-triangle central de la racine est decoupe systematiquement
-c     ==================================================================
-      nte = 2
-      if( letree(0,2) .le. 0 ) then
-c        le sous-triangle central de la racine n'est pas subdivise
-c        il est donc decoupe en 4 soustriangles
-         nbsom0 = nbsomm
-         call te4ste( nbsomm, mxsomm, pxyd, nte, letree,
-     %                ierr )
-         if( ierr .ne. 0 ) return
-         do 4 i=nbsom0+1,nbsomm
-c           mise a jour de taille_ideale des nouveaux sommets de te
-            call tetaid( nutysu, pxyd(1,i), pxyd(2,i),
-     %                   pxyd(3,i), ierr )
-            if( ierr .ne. 0 ) goto 9999
- 4       continue
-      endif
-c
-c     le carre de la longueur de l'arete de triangles equilateraux
-c     souhaitee pour le fond de la triangulation
-      aretm2 = (aretmx*ampli) ** 2
-c
-c     tout te contenu dans le rectangle englobant doit avoir un
-c     cote < aretmx et etre de meme taille que les te voisins
-c     s'il contient un point; sinon un seul saut de taille est permis
-c     ===============================================================
-c     le rectangle englobant pour selectionner les te "internes"
-c     le numero des 3 sommets du te englobant racine de l'arbre des te
-      ns1 = letree(6,1)
-      ns2 = letree(7,1)
-      ns3 = letree(8,1)
-      a   = aretmx * 0.01d0
-c     abscisse du milieu de l'arete gauche du te 1
-      s      = ( pxyd(1,ns1) + pxyd(1,ns3) ) / 2
-      xrmin  = min( s, comxmi(1,1) - aretmx ) - a
-c     abscisse du milieu de l'arete droite du te 1
-      s      = ( pxyd(1,ns2) + pxyd(1,ns3) ) / 2
-      xrmax  = max( s, comxmi(1,2) + aretmx ) + a
-      yrmin  = comxmi(2,1) - aretmx
-c     ordonnee de la droite passant par les milieus des 2 aretes
-c     droite gauche du te 1
-      s      = ( pxyd(2,ns1) + pxyd(2,ns3) ) / 2
-      yrmax  = max( s, comxmi(2,2) + aretmx ) + a
-c
-c     cas particulier de 3 ou 4 ou peu d'aretes frontalieres
-      if( nbarpi .le. 8 ) then
-c        tout le triangle englobant (racine) est a prendre en compte
-         xrmin = pxyd(1,ns1) - a
-         xrmax = pxyd(1,ns2) + a
-         yrmin = pxyd(2,ns1) - a
-         yrmax = pxyd(2,ns3) + a
-      endif
-c
-      nbs0   = nbsomm
-      nbiter = -1
-c
-c     initialisation de la queue
-  5   nbiter = nbiter + 1
-      lequeu = 1
-      lhqueu = 0
-c     la racine de letree initialise la queue
-      laqueu(1) = 1
-c
-c     tant que la longueur de la queue est >=0 traiter le debut de queue
- 10   if( lhqueu .ge. 0 ) then
-c
-c        le triangle te a traiter
-         i   = lequeu - lhqueu
-         if( i .le. 0 ) i = mxqueu + i
-         nte = laqueu( i )
-c        la longueur de la queue est reduite
-         lhqueu = lhqueu - 1
-c
-c        nte est il un sous-triangle feuille minimal ?
- 15      if( letree(0,nte) .gt. 0 ) then
-c
-c           non les 4 sous-triangles sont mis dans la queue
-            if( lhqueu + 4 .ge. mxqueu ) then
-               write(imprim,*) 'tehote: saturation de la queue'
-               ierr = 7
-               return
-            endif
-            do 20 i=3,0,-1
-c              ajout du sous-triangle i
-               lhqueu = lhqueu + 1
-               lequeu = lequeu + 1
-               if( lequeu .gt. mxqueu ) lequeu = lequeu - mxqueu
-               laqueu( lequeu ) = letree( i, nte )
- 20         continue
-            goto 10
-c
-         endif
-c
-c        ici nte est un triangle minimal non subdivise
-c        ---------------------------------------------
-c        le te est il dans le cadre englobant de l'objet ?
-         ns1 = letree(6,nte)
-         ns2 = letree(7,nte)
-         ns3 = letree(8,nte)
-         if( pxyd(1,ns1) .gt. pxyd(1,ns2) ) then
-            dmin = pxyd(1,ns2)
-            dmax = pxyd(1,ns1)
-         else
-            dmin = pxyd(1,ns1)
-            dmax = pxyd(1,ns2)
-         endif
-         if( (xrmin .le. dmin .and. dmin .le. xrmax) .or.
-     %       (xrmin .le. dmax .and. dmax .le. xrmax) ) then
-            if( pxyd(2,ns1) .gt. pxyd(2,ns3) ) then
-               dmin = pxyd(2,ns3)
-               dmax = pxyd(2,ns1)
-            else
-               dmin = pxyd(2,ns1)
-               dmax = pxyd(2,ns3)
-            endif
-            if( (yrmin .le. dmin .and. dmin .le. yrmax) .or.
-     %          (yrmin .le. dmax .and. dmax .le. yrmax) ) then
-c
-c              nte est un te feuille et interne au rectangle englobant
-c              =======================================================
-c              le carre de la longueur de l'arete du te de numero nte
-               d2 = (pxyd(1,ns1)-pxyd(1,ns2)) ** 2 +
-     %              (pxyd(2,ns1)-pxyd(2,ns2)) ** 2
-c
-               if( nutysu .eq. 0 ) then
-c
-c                 il n'existe pas de fonction 'taille_ideale'
-c                 -------------------------------------------
-c                 si la taille effective de l'arete du te est superieure a aretmx
-c                 alors le te est decoupe
-                  if( d2 .gt. aretm2 ) then
-c                    le triangle nte trop grand doit etre subdivise
-c                    en 4 sous-triangles
-                     call te4ste( nbsomm,mxsomm, pxyd,
-     %                            nte, letree, ierr )
-                     if( ierr .ne. 0 ) return
-                     goto 15
-                  endif
-c
-               else
-c
-c                 il existe ici une fonction 'taille_ideale'
-c                 ------------------------------------------
-c                 si la taille effective de l'arete du te est superieure au mini
-c                 des 3 tailles_ideales aux sommets  alors le te est decoupe
-                  do 28 i=1,3
-                     if( d2 .gt. (pxyd(3,nuste(i))*ampli)**2 ) then
-c                       le triangle nte trop grand doit etre subdivise
-c                       en 4 sous-triangles
-                        nbsom0 = nbsomm
-                        call te4ste( nbsomm, mxsomm, pxyd,
-     &                               nte, letree, ierr )
-                        if( ierr .ne. 0 ) return
-                        do 27 j=nbsom0+1,nbsomm
-c                          mise a jour de taille_ideale des nouveaux sommets de
-                           call tetaid( nutysu, pxyd(1,j), pxyd(2,j),
-     %                                  pxyd(3,j), ierr )
-                           if( ierr .ne. 0 ) goto 9999
- 27                     continue
-                        goto 15
-                     endif
- 28               continue
-               endif
-c
-c              recherche du nombre de niveaux entre nte et les te voisins par se
-c              si la difference de subdivisions excede 1 alors le plus grand des
-c              =================================================================
- 29            do 30 i=1,3
-c
-c                 noteva triangle voisin de nte par l'arete i
-                  call n1trva( nte, i, letree, noteva, niveau )
-                  if( noteva .le. 0 ) goto 30
-c                 il existe un te voisin
-                  if( niveau .gt. 0 ) goto 30
-c                 nte a un te voisin plus petit ou egal
-                  if( letree(0,noteva) .le. 0 ) goto 30
-c                 nte a un te voisin noteva subdivise au moins une fois
-c
-                  if( nbiter .gt. 0 ) then
-c                    les 2 sous triangles voisins sont-ils subdivises?
-                     ns2 = letree(i,noteva)
-                     if( letree(0,ns2) .le. 0 ) then
-c                       ns2 n'est pas subdivise
-                        ns2 = letree(nosui3(i),noteva)
-                        if( letree(0,ns2) .le. 0 ) then
-c                          les 2 sous-triangles ne sont pas subdivises
-                           goto 30
-                        endif
-                     endif
-                  endif
-c
-c                 saut>1 => le triangle nte doit etre subdivise en 4 sous-triang
-c                 --------------------------------------------------------------
-                  nbsom0 = nbsomm
-                  call te4ste( nbsomm,mxsomm, pxyd, nte, letree,
-     &                         ierr )
-                  if( ierr .ne. 0 ) return
-                  if( nutysu .gt. 0 ) then
-                     do 32 j=nbsom0+1,nbsomm
-c                       mise a jour de taille_ideale des nouveaux sommets de te
-                        call tetaid( nutysu, pxyd(1,j), pxyd(2,j),
-     %                               pxyd(3,j), ierr )
-                        if( ierr .ne. 0 ) goto 9999
- 32                  continue
-                  endif
-                  goto 15
-c
- 30            continue
-            endif
-         endif
-         goto 10
-      endif
-      if( nbs0 .lt. nbsomm ) then
-         nbs0 = nbsomm
-         goto 5
-      endif
-      return
-c
-c     pb dans le calcul de la fonction taille_ideale
-
- 9999 write(imprim,*) 'pb dans le calcul de taille_ideale'
-c      nblgrc(nrerr) = 1
-c      kerr(1) = 'pb dans le calcul de taille_ideale'
-c      call lereur
-      return
-      end
-
-
-      subroutine tetrte( comxmi, aretmx, nbarpi, mxsomm, pxyd,
-     %                   mxqueu, laqueu, letree,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr, noarst,
-     %                   ierr  )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    trianguler les triangles equilateraux feuilles et
-c -----    les points de la frontiere et les points internes imposes
-c
-c attention: la triangulation finale n'est pas de type delaunay!
-c
-c entrees:
-c --------
-c comxmi : minimum et maximum des coordonnees de l'objet
-c aretmx : longueur maximale des aretes des triangles equilateraux
-c nbarpi : nombre de sommets de la frontiere + nombre de points internes
-c          imposes par l'utilisateur
-c mxsomm : nombre maximal de sommets declarables dans pxyd
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c
-c mxqueu : nombre d'entiers utilisables dans laqueu
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          letree(0,0) : no du 1-er te vide dans letree
-c          letree(0,1) : maximum du 1-er indice de letree (ici 8)
-c          letree(0,2) : maximum declare du 2-eme indice de letree (ici mxtree)
-c          letree(0:8,1) : racine de l'arbre  (triangle sans sur triangle)
-c          si letree(0,.)>0 alors
-c             letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c          sinon
-c             letree(0:3,j) :-no pxyd des 1 a 4 points internes au triangle j
-c                             0  si pas de point
-c                             ( j est alors une feuille de l'arbre )
-c          letree(4,j) : no letree du sur-triangle du triangle j
-c          letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c noarst : noarst(i) numero d'une arete de sommet i
-c
-c auxiliaire :
-c ------------
-c laqueu : mxqueu entiers servant de queue pour le parcours de letree
-c
-c sorties:
-c --------
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si le tableau noartr est sature
-c          =3 si aucun des triangles ne contient l'un des points internes d'un t
-c          =5 si saturation de la queue de parcours de l'arbre des te
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      common / unites / lecteu, imprim, intera, nunite(29)
-c
-      double precision  pxyd(3,mxsomm)
-      double precision  comxmi(3,2),aretmx,a,s,xrmin,xrmax,yrmin,yrmax
-      double precision  dmin, dmax
-c
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(mxsomm)
-c
-      integer           letree(0:8,0:*)
-      integer           laqueu(1:mxqueu)
-c                       lequeu:entree dans la queue en gestion circulaire
-c                       lhqueu:longueur de la queue en gestion circulaire
-c
-      integer           milieu(3), nutr(1:13)
-c
-c     le rectangle englobant pour selectionner les te "internes"
-c     le numero des 3 sommets du te englobant racine de l'arbre des te
-      ns1 = letree(6,1)
-      ns2 = letree(7,1)
-      ns3 = letree(8,1)
-      a   = aretmx * 0.01d0
-c     abscisse du milieu de l'arete gauche du te 1
-      s      = ( pxyd(1,ns1) + pxyd(1,ns3) ) / 2
-      xrmin  = min( s, comxmi(1,1) - aretmx ) - a
-c     abscisse du milieu de l'arete droite du te 1
-      s      = ( pxyd(1,ns2) + pxyd(1,ns3) ) / 2
-      xrmax  = max( s, comxmi(1,2) + aretmx ) + a
-      yrmin  = comxmi(2,1) - aretmx
-c     ordonnee de la droite passant par les milieus des 2 aretes
-c     droite gauche du te 1
-      s      = ( pxyd(2,ns1) + pxyd(2,ns3) ) / 2
-      yrmax  = max( s, comxmi(2,2) + aretmx ) + a
-c
-c     cas particulier de 3 ou 4 ou peu d'aretes frontalieres
-      if( nbarpi .le. 8 ) then
-c        tout le triangle englobant (racine) est a prendre en compte
-         xrmin = pxyd(1,ns1) - a
-         xrmax = pxyd(1,ns2) + a
-         yrmin = pxyd(2,ns1) - a
-         yrmax = pxyd(2,ns3) + a
-      endif
-c
-c     initialisation du tableau noartr
-      do 5 i=1,mxartr
-c        le numero de l'arete est inconnu
-         noartr(1,i) = 0
-c        le chainage sur le triangle vide suivant
-         noartr(2,i) = i+1
- 5    continue
-      noartr(2,mxartr) = 0
-      n1artr = 1
-c
-c     parcours des te jusqu'a trianguler toutes les feuilles (triangles eq)
-c     =====================================================================
-c     initialisation de la queue sur les te
-      ierr   = 0
-      lequeu = 1
-      lhqueu = 0
-c     la racine de letree initialise la queue
-      laqueu(1) = 1
-c
-c     tant que la longueur de la queue est >=0 traiter le debut de queue
- 10   if( lhqueu .ge. 0 ) then
-c
-c        le triangle te a traiter
-         i   = lequeu - lhqueu
-         if( i .le. 0 ) i = mxqueu + i
-         nte = laqueu( i )
-c        la longueur est reduite
-         lhqueu = lhqueu - 1
-c
-c        nte est il un sous-triangle feuille (minimal) ?
- 15      if( letree(0,nte) .gt. 0 ) then
-c           non les 4 sous-triangles sont mis dans la queue
-            if( lhqueu + 4 .ge. mxqueu ) then
-               write(imprim,*) 'tetrte: saturation de la queue'
-               ierr = 5
-               return
-            endif
-            do 20 i=3,0,-1
-c              ajout du sous-triangle i
-               lhqueu = lhqueu + 1
-               lequeu = lequeu + 1
-               if( lequeu .gt. mxqueu ) lequeu = lequeu - mxqueu
-               laqueu( lequeu ) = letree( i, nte )
- 20         continue
-            goto 10
-         endif
-c
-c        ici nte est un triangle minimal non subdivise
-c        ---------------------------------------------
-c        le te est il dans le cadre englobant de l'objet ?
-         ns1 = letree(6,nte)
-         ns2 = letree(7,nte)
-         ns3 = letree(8,nte)
-         if( pxyd(1,ns1) .gt. pxyd(1,ns2) ) then
-            dmin = pxyd(1,ns2)
-            dmax = pxyd(1,ns1)
-         else
-            dmin = pxyd(1,ns1)
-            dmax = pxyd(1,ns2)
-         endif
-         if( (xrmin .le. dmin .and. dmin .le. xrmax) .or.
-     %       (xrmin .le. dmax .and. dmax .le. xrmax) ) then
-            if( pxyd(2,ns1) .gt. pxyd(2,ns3) ) then
-               dmin = pxyd(2,ns3)
-               dmax = pxyd(2,ns1)
-            else
-               dmin = pxyd(2,ns1)
-               dmax = pxyd(2,ns3)
-            endif
-            if( (yrmin .le. dmin .and. dmin .le. yrmax) .or.
-     %          (yrmin .le. dmax .and. dmax .le. yrmax) ) then
-c
-c              te minimal et interne au rectangle englobant
-c              --------------------------------------------
-c              recherche du nombre de niveaux entre nte et les te voisins
-c              par ses aretes
-               nbmili = 0
-               do 30 i=1,3
-c
-c                 a priori pas de milieu de l'arete i du te nte
-                  milieu(i) = 0
-c
-c                 recherche de noteva te voisin de nte par l'arete i
-                  call n1trva( nte, i, letree, noteva, niveau )
-c                 noteva  : >0 numero letree du te voisin par l'arete i
-c                           =0 si pas de te voisin (racine , ... )
-c                 niveau  : =0 si nte et noteva ont meme taille
-c                           >0 nte est 4**niveau fois plus petit que noteva
-                  if( noteva .gt. 0 ) then
-c                    il existe un te voisin
-                     if( letree(0,noteva) .gt. 0 ) then
-c                       noteva est plus petit que nte
-c                       => recherche du numero du milieu du cote=sommet du te no
-c                       le sous-te 0 du te noteva
-                        nsot = letree(0,noteva)
-c                       le numero dans pxyd du milieu de l'arete i de nte
-                        milieu( i ) = letree( 5+nopre3(i), nsot )
-                        nbmili = nbmili + 1
-                     endif
-                  endif
-c
- 30            continue
-c
-c              triangulation du te nte en fonction du nombre de ses milieux
-               goto( 50, 100, 200, 300 ) , nbmili + 1
-c
-c              0 milieu => 1 triangle = le te nte
-c              ----------------------------------
- 50            call f0trte( letree(0,nte),  pxyd,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      noarst,
-     %                      nbtr,   nutr,   ierr )
-               if( ierr .ne. 0 ) return
-               goto 10
-c
-c              1 milieu => 2 triangles = 2 demi te
-c              -----------------------------------
- 100           call f1trte( letree(0,nte),  pxyd,   milieu,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      noarst,
-     %                      nbtr,   nutr,   ierr )
-               if( ierr .ne. 0 ) return
-               goto 10
-c
-c              2 milieux => 3 triangles
-c              -----------------------------------
- 200           call f2trte( letree(0,nte),  pxyd,   milieu,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      noarst,
-     %                      nbtr,   nutr,   ierr )
-               if( ierr .ne. 0 ) return
-               goto 10
-c
-c              3 milieux => 4 triangles = 4 quart te
-c              -------------------------------------
- 300           call f3trte( letree(0,nte),  pxyd,   milieu,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      noarst,
-     %                      nbtr,   nutr,   ierr )
-               if( ierr .ne. 0 ) return
-               goto 10
-            endif
-         endif
-         goto 10
-      endif
-      end
-
-
-      subroutine aisoar( mosoar, mxsoar, nosoar, na1 )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    chainer en colonne lchain les aretes non vides et
-c -----    non frontalieres du tableau nosoar
-c
-c entrees:
-c --------
-c mosoar : nombre maximal d'entiers par arete dans le tableau nosoar
-c mxsoar : nombre maximal d'aretes frontalieres declarables
-c
-c modifies :
-c ----------
-c nosoar : numero des 2 sommets , no ligne, 2 triangles, chainages en +
-c          nosoar(lchain,i)=arete interne suivante
-c
-c sortie :
-c --------
-c na1    : numero dans nosoar de la premiere arete interne
-c          les suivantes sont nosoar(lchain,na1), ...
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      parameter (lchain=6)
-      integer    nosoar(mosoar,mxsoar)
-c
-c     formation du chainage des aretes internes a echanger eventuellement
-c     recherche de la premiere arete non vide et non frontaliere
-      do 10 na1=1,mxsoar
-         if( nosoar(1,na1) .gt. 0 .and. nosoar(3,na1) .le. 0 ) goto 15
- 10   continue
-c
-c     protection de la premiere arete non vide et non frontaliere
- 15   na0 = na1
-      do 20 na=na1+1,mxsoar
-         if( nosoar(1,na) .gt. 0 .and. nosoar(3,na) .le. 0 ) then
-c           arete interne => elle est chainee a partir de la precedente
-            nosoar(lchain,na0) = na
-            na0 = na
-         endif
- 20   continue
-c
-c     la derniere arete interne n'a pas de suivante
-      nosoar(lchain,na0) = 0
-      end
-
-
-      subroutine tedela( pxyd,   noarst,
-     %                   mosoar, mxsoar, n1soar, nosoar, n1ardv,
-     %                   moartr, mxartr, n1artr, noartr, modifs )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    pour toutes les aretes chainees dans nosoar(lchain,*)
-c -----    du tableau nosoar
-c          echanger la diagonale des 2 triangles si le sommet oppose
-c          a un triangle ayant en commun une arete appartient au cercle
-c          circonscrit de l'autre (violation boule vide delaunay)
-c
-c entrees:
-c --------
-c pxyd   : tableau des x  y  distance_souhaitee de chaque sommet
-c
-c modifies :
-c ----------
-c noarst : noarst(i) numero d'une arete de sommet i
-c mosoar : nombre maximal d'entiers par arete dans le tableau nosoar
-c mxsoar : nombre maximal d'aretes frontalieres declarables
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles, chainages en +
-c n1ardv : numero dans nosoar de la premiere arete du chainage
-c          des aretes a rendre delaunay
-c
-c moartr : nombre d'entiers par triangle dans le tableau noartr
-c mxartr : nombre maximal de triangles declarables dans noartr
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c modifs : nombre d'echanges de diagonales pour maximiser la qualite
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      parameter        (lchain=6)
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*), surtd2, s123, s142, s143, s234,
-     %                  s12, s34, a12, cetria(3), r0
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*)
-c
-c     le nombre d'echanges de diagonales pour minimiser l'aire
-      modifs = 0
-      r0     = 0
-c
-c     la premiere arete du chainage des aretes a rendre delaunay
-      na0 = n1ardv
-c
-c     tant que la pile des aretes a echanger eventuellement est non vide
-c     ==================================================================
- 20   if( na0 .gt. 0 ) then
-c
-c        l'arete a traiter
-         na  = na0
-c        la prochaine arete a traiter
-         na0 = nosoar(lchain,na0)
-c
-c        l'arete est marquee traitee avec le numero -1
-         nosoar(lchain,na) = -1
-c
-c        l'arete est elle active?
-         if( nosoar(1,na) .eq. 0 ) goto 20
-c
-c        si arete frontaliere pas d'echange possible
-         if( nosoar(3,na) .gt. 0 ) goto 20
-c
-c        existe-t-il 2 triangles ayant cette arete commune?
-         if( nosoar(4,na) .le. 0 .or. nosoar(5,na) .le. 0 ) goto 20
-c
-c        aucun des 2 triangles est-il desactive?
-         if( noartr(1,nosoar(4,na)) .eq. 0 .or.
-     %       noartr(1,nosoar(5,na)) .eq. 0 ) goto 20
-c
-c        l'arete appartient a deux triangles actifs
-c        le numero des 4 sommets du quadrangle des 2 triangles
-         call mt4sqa( na, moartr, noartr, mosoar, nosoar,
-     %                ns1, ns2, ns3, ns4 )
-         if( ns4 .eq. 0 ) goto 20
-c
-c        carre de la longueur de l'arete ns1 ns2
-         a12 = (pxyd(1,ns2)-pxyd(1,ns1))**2+(pxyd(2,ns2)-pxyd(2,ns1))**2
-c
-c        comparaison de la somme des aires des 2 triangles
-c        -------------------------------------------------
-c        calcul des surfaces des triangles 123 et 142 de cette arete
-         s123=surtd2( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3) )
-         s142=surtd2( pxyd(1,ns1), pxyd(1,ns4), pxyd(1,ns2) )
-         s12 = abs( s123 ) + abs( s142 )
-         if( s12 .le. 0.001*a12 ) goto 20
-c
-c        calcul des surfaces des triangles 143 et 234 de cette arete
-         s143=surtd2( pxyd(1,ns1), pxyd(1,ns4), pxyd(1,ns3) )
-         s234=surtd2( pxyd(1,ns2), pxyd(1,ns3), pxyd(1,ns4) )
-         s34 = abs( s234 ) + abs( s143 )
-c
-         if( abs(s34-s12) .gt. 1d-15*s34 ) goto 20
-c
-c        quadrangle convexe : le critere de delaunay intervient
-c        ------------------   ---------------------------------
-c        calcul du centre et rayon de la boule circonscrite a ns123
-c        pas d'affichage si le triangle est degenere
-         ierr = -1
-         call cenced( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3), cetria,
-     %                ierr )
-         if( ierr .gt. 0 ) then
-c           ierr=1 si triangle degenere  => abandon
-            goto 20
-         endif
-c
-         if( (cetria(1)-pxyd(1,ns4))**2+(cetria(2)-pxyd(2,ns4))**2
-     %       .lt. cetria(3) ) then
-c
-c           protection contre une boucle infinie sur le meme cercle
-            if( r0 .eq. cetria(3) ) goto 20
-c
-c           oui: ns4 est dans le cercle circonscrit a ns1 ns2 ns3
-c           => ns3 est aussi dans le cercle circonscrit de ns1 ns2 ns4
-c           echange de la diagonale 12 par 34 des 2 triangles
-            call te2t2t( na,     mosoar, n1soar, nosoar, noarst,
-     %                   moartr, noartr, na34 )
-            if( na34 .eq. 0 ) goto 20
-            r0 = cetria(3)
-c
-c           l'arete na34 est marquee traitee
-            nosoar(lchain,na34) = -1
-            modifs = modifs + 1
-c
-c           les aretes internes peripheriques des 2 triangles sont enchainees
-            do 60 j=4,5
-               nt = nosoar(j,na34)
-               do 50 i=1,3
-                  n = abs( noartr(i,nt) )
-                  if( n .ne. na34 ) then
-                     if( nosoar(3,n)      .eq.  0  .and.
-     %                   nosoar(lchain,n) .eq. -1 ) then
-c                        cette arete marquee est chainee pour etre traitee
-                         nosoar(lchain,n) = na0
-                         na0 = n
-                     endif
-                  endif
- 50            continue
- 60         continue
-            goto 20
-         endif
-c
-c        retour en haut de la pile des aretes a traiter
-         goto 20
-      endif
-c
-      return
-      end
-
-
-      subroutine terefr( nbarpi, pxyd,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr, noarst,
-     %                   mxarcf, n1arcf, noarcf, larmin, notrcf,
-     %                   nbarpe, ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   recherche des aretes de la frontiere non dans la triangulation
-c -----   triangulation frontale pour les reobtenir
-c
-c         attention: le chainage lchain de nosoar devient celui des cf
-c
-c entrees:
-c --------
-c          le tableau nosoar
-c nbarpi : numero du dernier point interne impose par l'utilisateur
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles declarables dans noartr
-c mxarcf : nombre de variables des tableaux n1arcf, noarcf, larmin, notrcf
-c
-c modifies:
-c ---------
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(i) numero d'une arete de sommet i
-c
-c
-c auxiliaires :
-c -------------
-c n1arcf : tableau (0:mxarcf) auxiliaire d'entiers
-c noarcf : tableau (3,mxarcf) auxiliaire d'entiers
-c larmin : tableau (mxarcf)   auxiliaire d'entiers
-c notrcf : tableau (mxarcf)   auxiliaire d'entiers
-c
-c sortie :
-c --------
-c nbarpe : nombre d'aretes perdues puis retrouvees
-c ierr   : =0 si pas d'erreur
-c          >0 si une erreur est survenue
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      parameter        (lchain=6)
-      common / unites / lecteu,imprim,intera,nunite(29)
-      double precision  pxyd(3,*)
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*),
-     %                  n1arcf(0:mxarcf),
-     %                  noarcf(3,mxarcf),
-     %                  larmin(mxarcf),
-     %                  notrcf(mxarcf)
-c
-      ierr = 0
-c
-c     le nombre d'aretes de la frontiere non arete de la triangulation
-      nbarpe = 0
-c
-c     initialisation du chainage des aretes des cf => 0 arete de cf
-      do 10 narete=1,mxsoar
-         nosoar( lchain, narete) = -1
- 10   continue
-c
-c     boucle sur l'ensemble des aretes actuelles
-c     ==========================================
-      do 30 narete=1,mxsoar
-c
-         if( nosoar(3,narete) .gt. 0 ) then
-c           arete appartenant a une ligne => frontaliere
-c
-            if(nosoar(4,narete) .le. 0 .or. nosoar(5,narete) .le. 0)then
-c              l'arete narete frontaliere n'appartient pas a 2 triangles
-c              => elle est perdue
-               nbarpe = nbarpe + 1
-c
-c              le numero des 2 sommets de l'arete frontaliere perdue
-               ns1 = nosoar( 1, narete )
-               ns2 = nosoar( 2, narete )
-c               write(imprim,10000) ns1,(pxyd(j,ns1),j=1,2),
-c     %                             ns2,(pxyd(j,ns2),j=1,2)
-10000          format(' arete perdue a forcer',
-     %               (t24,'sommet=',i6,' x=',g13.5,' y=',g13.5))
-c
-c              traitement de cette arete perdue ns1-ns2
-               call tefoar( narete, nbarpi, pxyd,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr, noarst,
-     %                      mxarcf, n1arcf, noarcf, larmin, notrcf,
-     %                      ierr )
-               if( ierr .ne. 0 ) return
-c
-c              fin du traitement de cette arete perdue et retrouvee
-            endif
-         endif
-c
- 30   continue
-      end
-
-
-      subroutine tesuex( nblftr, nulftr,
-     %                   ndtri0, nbsomm, pxyd, nslign,
-     %                   mosoar, mxsoar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr, noarst,
-     %                   nbtria, letrsu, ierr  )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    supprimer du tableau noartr les triangles externes au domaine
-c -----    en annulant le numero de leur 1-ere arete dans noartr
-c          et en les chainant comme triangles vides
-c
-c entrees:
-c --------
-c nblftr : nombre de  lignes fermees definissant la surface
-c nulftr : numero des lignes fermees definissant la surface
-c ndtri0 : plus grand numero dans noartr d'un triangle
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c nslign : tableau du numero de sommet dans sa ligne pour chaque
-c          sommet frontalier
-c          numero du point dans le lexique point si interne impose
-c          0 si le point est interne non impose par l'utilisateur
-c         -1 si le sommet est externe au domaine
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles declarables
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(i) numero nosoar d'une arete de sommet i
-c
-c sorties:
-c --------
-c nbtria : nombre de triangles internes au domaine
-c letrsu : letrsu(nt)=numero du triangle interne, 0 sinon
-c noarst : noarst(i) numero nosoar d'une arete du sommet i (modifi'e)
-c ierr   : 0 si pas d'erreur, >0 sinon
-cc++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc        mai 1999
-c2345x7..............................................................012
-      common / unites / lecteu,imprim,intera,nunite(29)
-      double precision  pxyd(3,*)
-      integer           nulftr(nblftr),nslign(nbsomm),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*)
-      integer           letrsu(1:ndtri0)
-      double precision  dmin
-c
-c     les triangles sont a priori non marques
-      do 5 nt=1,ndtri0
-         letrsu(nt) = 0
- 5    continue
-c
-c     les aretes sont marquees non chainees
-      do 10 noar1=1,mxsoar
-         nosoar(6,noar1) = -2
- 10   continue
-c
-c     recherche du sommet de la triangulation de plus petite abscisse
-c     ===============================================================
-      ntmin = 0
-      dmin  = 1d38
-      do 20 i=1,nbsomm
-         if( pxyd(1,i) .lt. dmin ) then
-c           le nouveau minimum
-            noar1 = noarst(i)
-            if( noar1 .gt. 0 ) then
-c              le sommet appartient a une arete de triangle
-               if( nosoar(4,noar1) .gt. 0 ) then
-c                 le nouveau minimum
-                  dmin  = pxyd(1,i)
-                  ntmin = i
-               endif
-            endif
-         endif
- 20   continue
-c
-c     une arete de sommet ntmin
-      noar1 = noarst( ntmin )
-c     un triangle d'arete noar1
-      ntmin = nosoar( 4, noar1 )
-      if( ntmin .le. 0 ) then
-c         nblgrc(nrerr) = 1
-c         kerr(1) = 'pas de triangle d''abscisse minimale'
-c         call lereur
-         write(imprim,*) 'pas de triangle d''abscisse minimale'
-         ierr = 2
-         goto 9990
-      endif
-c
-c     chainage des 3 aretes du triangle ntmin
-c     =======================================
-c     la premiere arete du chainage des aretes traitees
-      noar1 = abs( noartr(1,ntmin) )
-      na0   = abs( noartr(2,ntmin) )
-c     elle est chainee sur la seconde arete du triangle ntmin
-      nosoar(6,noar1) = na0
-c     les 2 autres aretes du triangle ntmin sont chainees
-      na1 = abs( noartr(3,ntmin) )
-c     la seconde est chainee sur la troisieme arete
-      nosoar(6,na0) = na1
-c     la troisieme n'a pas de suivante
-      nosoar(6,na1) = 0
-c
-c     le triangle ntmin est a l'exterieur du domaine
-c     tous les triangles externes sont marques -123 456 789
-c     les triangles de l'autre cote d'une arete sur une ligne
-c     sont marques: no de la ligne de l'arete * signe oppose
-c     =======================================================
-      ligne0 = 0
-      ligne  = -123 456 789
-c
- 40   if( noar1 .ne. 0 ) then
-c
-c        l'arete noar1 du tableau nosoar est a traiter
-c        ---------------------------------------------
-         noar = noar1
-c        l'arete suivante devient la premiere a traiter ensuite
-         noar1 = nosoar(6,noar1)
-c        l'arete noar est traitee
-         nosoar(6,noar) = -3
-c
-         do 60 i=4,5
-c
-c           l'un des 2 triangles de l'arete
-            nt = nosoar(i,noar)
-            if( nt .gt. 0 ) then
-c
-c              triangle deja traite pour une ligne anterieure?
-               if(     letrsu(nt)  .ne. 0      .and.
-     %             abs(letrsu(nt)) .ne. ligne ) goto 60
-c
-c              le triangle est marque avec la valeur de ligne
-               letrsu(nt) = ligne
-c
-c              chainage eventuel des autres aretes de ce triangle
-c              si ce n'est pas encore fait
-               do 50 j=1,3
-c
-c                 le numero na de l'arete j du triangle nt dans nosoar
-                  na = abs( noartr(j,nt) )
-                  if( nosoar(6,na) .ne. -2 ) goto 50
-c
-c                 le numero de 1 a nblftr dans nulftr de la ligne de l'arete
-                  nl = nosoar(3,na)
-c
-c                 si l'arete est sur une ligne fermee differente de celle envelo
-c                 et non marquee alors examen du triangle oppose
-                  if( nl .gt. 0 ) then
-c
-                     if( nl .eq. ligne0 ) goto 50
-c
-c                    arete frontaliere de ligne non traitee
-c                    => passage de l'autre cote de la ligne
-c                    le triangle de l'autre cote de la ligne est recherche
-                     if( nt .eq. abs( nosoar(4,na) ) ) then
-                        nt2 = 5
-                     else
-                        nt2 = 4
-                     endif
-                     nt2 = abs( nosoar(nt2,na) )
-                     if( nt2 .gt. 0 ) then
-c
-c                       le triangle nt2 de l'autre cote est marque avec le
-c                       avec le signe oppose de celui de ligne
-                        if( ligne .ge. 0 ) then
-                           lsigne = -1
-                        else
-                           lsigne =  1
-                        endif
-                        letrsu(nt2) = lsigne * nl
-c
-c                       temoin de ligne a traiter ensuite dans nulftr
-                        nulftr(nl) = -abs( nulftr(nl) )
-c
-c                       l'arete est traitee
-                        nosoar(6,na) = -3
-c
-                     endif
-c
-c                    l'arete est traitee
-                     goto 50
-c
-                  endif
-c
-c                 arete non traitee => elle est chainee
-                  nosoar(6,na) = noar1
-                  noar1 = na
-c
- 50            continue
-c
-            endif
- 60      continue
-c
-         goto 40
-      endif
-c     les triangles de la ligne fermee ont tous ete marques
-c     plus d'arete chainee
-c
-c     recherche d'une nouvelle ligne fermee a traiter
-c     ===============================================
- 65   do 70 nl=1,nblftr
-         if( nulftr(nl) .lt. 0 ) goto 80
- 70   continue
-c     plus de ligne fermee a traiter
-      goto 110
-c
-c     tous les triangles de cette composante connexe
-c     entre ligne et ligne0 vont etre marques
-c     ==============================================
-c     remise en etat du numero de ligne
-c     nl est le numero de la ligne dans nulftr a traiter
- 80   nulftr(nl) = -nulftr(nl)
-      do 90 nt2=1,ndtri0
-         if( abs(letrsu(nt2)) .eq. nl ) goto 92
- 90   continue
-c
-c     recherche de l'arete j du triangle nt2 avec ce numero de ligne nl
- 92   do 95 j=1,3
-c
-c        le numero de l'arete j du triangle dans nosoar
-         noar1 = 0
-         na0   = abs( noartr(j,nt2) )
-         if( nl .eq. nosoar(3,na0) ) then
-c
-c           na0 est l'arete de ligne nl
-c           l'arete suivante du triangle nt2
-            i   = mod(j,3) + 1
-c           le numero dans nosoar de l'arete i de nt2
-            na1 = abs( noartr(i,nt2) )
-            if( nosoar(6,na1) .eq. -2 ) then
-c              arete non traitee => elle est la premiere du chainage
-               noar1 = na1
-c              pas de suivante dans ce chainage
-               nosoar(6,na1) = 0
-            else
-               na1 = 0
-            endif
-c
-c           l'eventuelle seconde arete suivante
-            i  = mod(i,3) + 1
-            na = abs( noartr(i,nt2) )
-            if( nosoar(6,na) .eq. -2 ) then
-               if( na1 .eq. 0 ) then
-c                 1 arete non traitee et seule a chainer
-                  noar1 = na
-                  nosoar(6,na) = 0
-               else
-c                 2 aretes a chainer
-                  noar1 = na
-                  nosoar(6,na) = na1
-               endif
-            endif
-c
-            if( noar1 .gt. 0 ) then
-c
-c              il existe au moins une arete a visiter pour ligne
-c              marquage des triangles internes a la ligne nl
-               ligne  = letrsu(nt2)
-               ligne0 = nl
-               goto 40
-c
-            else
-c
-c              nt2 est le seul triangle de la ligne fermee
-               goto 65
-c
-            endif
-         endif
- 95   continue
-c
-c     reperage des sommets internes ou externes dans nslign
-c     nslign(sommet externe au domaine)=-1
-c     nslign(sommet interne au domaine)= 0
-c     =====================================================
- 110  do 170 ns1=1,nbsomm
-c        tout sommet non sur la frontiere ou interne impose
-c        est suppose externe
-         if( nslign(ns1) .eq. 0 ) nslign(ns1) = -1
- 170  continue
-c
-c     les triangles externes sont marques vides dans le tableau noartr
-c     ================================================================
-      nbtria = 0
-      do 200 nt=1,ndtri0
-c
-         if( letrsu(nt) .le. 0 ) then
-c
-c           triangle nt externe
-            if( noartr(1,nt) .ne. 0 ) then
-c              la premiere arete est annulee
-               noartr(1,nt) = 0
-c              le triangle nt est considere comme etant vide
-               noartr(2,nt) = n1artr
-               n1artr = nt
-            endif
-c
-         else
-c
-c           triangle nt interne
-            nbtria = nbtria + 1
-            letrsu(nt) = nbtria
-c
-c           marquage des 3 sommets du triangle nt
-            do 190 i=1,3
-c              le numero nosoar de l'arete i du triangle nt
-               noar = abs( noartr(i,nt) )
-c              le numero des 2 sommets
-               ns1 = nosoar(1,noar)
-               ns2 = nosoar(2,noar)
-c              mise a jour du numero d'une arete des 2 sommets de l'arete
-               noarst( ns1 ) = noar
-               noarst( ns2 ) = noar
-c              ns1 et ns2 sont des sommets de la triangulation du domaine
-               if( nslign(ns1) .lt. 0 ) nslign(ns1)=0
-               if( nslign(ns2) .lt. 0 ) nslign(ns2)=0
- 190        continue
-c
-         endif
-c
- 200  continue
-c     ici tout sommet externe ns verifie nslign(ns)=-1
-c
-c     les triangles externes sont mis a zero dans nosoar
-c     ==================================================
-      do 300 noar=1,mxsoar
-c
-         if( nosoar(1,noar) .gt. 0 ) then
-c
-c           le second triangle de l'arete noar
-            nt = nosoar(5,noar)
-            if( nt .gt. 0 ) then
-c              si le triangle nt est externe
-c              alors il est supprime pour l'arete noar
-               if( letrsu(nt) .le. 0 ) nosoar(5,noar)=0
-            endif
-c
-c           le premier triangle de l'arete noar
-            nt = nosoar(4,noar)
-            if( nt .gt. 0 ) then
-               if( letrsu(nt) .le. 0 ) then
-c                 si le triangle nt est externe
-c                 alors il est supprime pour l'arete noar
-c                 et l'eventuel triangle oppose prend sa place
-c                 en position 4 de nosoar
-                  if( nosoar(5,noar) .gt. 0 ) then
-                     nosoar(4,noar)=nosoar(5,noar)
-                     nosoar(5,noar)=0
-                  else
-                     nosoar(4,noar)=0
-                  endif
-               endif
-            endif
-         endif
-c
- 300  continue
-c
-c     remise en etat pour eviter les modifications de ladefi
- 9990 do 9991 nl=1,nblftr
-         if( nulftr(nl) .lt. 0 ) nulftr(nl)=-nulftr(nl)
- 9991 continue
-      return
-      end
-
-
-      subroutine trp1st( ns,     noarst, mosoar, nosoar,
-     %                   moartr, mxartr, noartr,
-     %                   mxpile, lhpile, lapile )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   recherche des triangles de noartr partageant le sommet ns
-c -----
-c         limite: un camembert de centre ns entame 2 fois
-c                 ne donne que l'une des parties
-c
-c entrees:
-c --------
-c ns     : numero du sommet
-c noarst : noarst(i) numero d'une arete de sommet i
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre de triangles declares dans noartr
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c mxpile : nombre maximal de triangles empilables
-c
-c sorties :
-c ---------
-c lhpile : >0 nombre de triangles empiles
-c          =0       si impossible de tourner autour du point
-c                   ou zero triangle contenant le sommet ns
-c          =-lhpile si apres butee sur la frontiere il y a a nouveau
-c          butee sur la frontiere . a ce stade on ne peut dire si tous
-c          les triangles ayant ce sommet ont ete recenses
-c          ce cas arrive seulement si le sommet est sur la frontiere
-c          par un balayage de tous les triangles, lhpile donne le
-c          nombre de triangles de sommet ns
-c          remarque: si la pile est saturee recherche de tous les
-c          triangles de sommet ns par balayage de tous les triangles
-c lapile : numero dans noartr des triangles de sommet ns
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur: alain perronnet analyse numerique paris upmc         mars 1997
-c modifs: alain perronnet Laboratoire J-L. Lions UPMC Paris octobre 2006
-c....................................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      integer           noartr(moartr,mxartr),
-     %                  nosoar(mosoar,*),
-     %                  noarst(*)
-      integer           lapile(1:mxpile)
-      integer           nosotr(3)
-c
-      lhpile = 0
-c
-c     la premiere arete de sommet ns
-      nar = noarst( ns )
-      if( nar .le. 0 ) then
-ccc         write(imprim,*) 'trp1st: sommet',ns,' sans arete'
-         goto 100
-      endif
-c
-c     l'arete nar est elle active?
-      if( nosoar(1,nar) .le. 0 ) then
-ccc         write(imprim,*) 'trp1st: arete vide',nar,
-ccc     %                  ' st1:', nosoar(1,nar),' st2:',nosoar(2,nar)
-         goto 100
-      endif
-c
-c     le premier triangle de sommet ns
-      nt0 = abs( nosoar(4,nar) )
-      if( nt0 .le. 0 ) then
-         write(imprim,*) 'trp1st: sommet',ns,' dans aucun triangle'
-         goto 100
-      endif
-c
-c     le triangle est il actif?
-      if( noartr(1,nt0) .eq. 0 ) goto 100
-c
-c     le numero des 3 sommets du triangle nt0 dans le sens direct
-      call nusotr( nt0, mosoar, nosoar, moartr, noartr, nosotr )
-c
-c     reperage du sommet ns dans le triangle nt0
-      do 5 nar=1,3
-         if( nosotr(nar) .eq. ns ) goto 10
- 5    continue
-c     pas de sommet ns dans le triangle nt0
-      goto 100
-c
-c     ns retrouve : le triangle nt0 de sommet ns est empile
- 10   lhpile = 1
-      lapile(1) = nt0
-      nta = nt0
-c
-c     recherche dans le sens des aiguilles d'une montre
-c     (sens indirect) du triangle nt1 de l'autre cote de l'arete
-c     nar du triangle et en tournant autour du sommet ns
-c     ==========================================================
-      noar = abs( noartr(nar,nt0) )
-c     le triangle nt1 oppose du triangle nt0 par l'arete noar
-      if( nosoar(4,noar) .eq. nt0 ) then
-         nt1 = nosoar(5,noar)
-      else if( nosoar(5,noar) .eq. nt0 ) then
-         nt1 = nosoar(4,noar)
-      else
-       write(imprim,*)'trp1st: anomalie arete',noar,' sans triangle',nt0
-         goto 100
-      endif
-c
-c     la boucle sur les triangles nt1 de sommet ns dans le sens indirect
-c     ==================================================================
-      if( nt1 .gt. 0 ) then
-c
-         if( noartr(1,nt1) .eq. 0 ) goto 30
-c
-c        le triangle nt1 n'a pas ete detruit. il est actif
-c        le triangle oppose par l'arete noar existe
-c        le numero des 3 sommets du triangle nt1 dans le sens direct
- 15      call nusotr( nt1, mosoar, nosoar, moartr, noartr, nosotr )
-c
-c        reperage du sommet ns dans nt1
-         do 20 nar=1,3
-            if( nosotr(nar) .eq. ns ) goto 25
- 20      continue
-c        pas de sommet ns dans le triangle nt1
-         goto 100
-c
-c        nt1 est empile
- 25      if( lhpile .ge. mxpile ) goto 100
-         lhpile = lhpile + 1
-         lapile(lhpile) = nt1
-c
-c        le triangle nt1 de l'autre cote de l'arete de sommet ns
-c        sauvegarde du precedent triangle dans nta
-         nta  = nt1
-         noar = abs( noartr(nar,nt1) )
-         if( nosoar(4,noar) .eq. nt1 ) then
-            nt1 = nosoar(5,noar)
-         else if( nosoar(5,noar) .eq. nt1 ) then
-            nt1 = nosoar(4,noar)
-         else
-            write(imprim,*)'trp1st: Anomalie arete',noar,
-     %                     ' sans triangle',nt1
-            goto 100
-         endif
-c
-c        le triangle suivant est il a l'exterieur?
-         if( nt1 .le. 0 ) goto 30
-c
-c        non: est il le premier triangle de sommet ns?
-         if( nt1 .ne. nt0 ) goto 15
-c
-c        oui: recherche terminee par arrivee sur nt0
-c        les triangles forment un "cercle" de "centre" ns
-c        lhpile ressort avec le signe +
-         return
-c
-      endif
-c
-c     pas de triangle voisin a nt1 qui doit etre frontalier
-c     =====================================================
-c     le parcours passe par 1 des triangles exterieurs
-c     le parcours est inverse par l'arete de gauche
-c     le triangle nta est le premier triangle empile
- 30   lhpile = 1
-      lapile(lhpile) = nta
-c
-c     le numero des 3 sommets du triangle nta dans le sens direct
-      call nusotr( nta, mosoar, nosoar, moartr, noartr, nosotr )
-      do 32 nar=1,3
-         if( nosotr(nar) .eq. ns ) goto 33
- 32   continue
-      goto 100
-c
-c     l'arete qui precede (rotation / ns dans le sens direct)
- 33   if( nar .eq. 1 ) then
-         nar = 3
-      else
-         nar = nar - 1
-      endif
-c
-c     le triangle voisin de nta dans le sens direct
-      noar = abs( noartr(nar,nta) )
-      if( nosoar(4,noar) .eq. nta ) then
-         nt1 = nosoar(5,noar)
-      else if( nosoar(5,noar) .eq. nta ) then
-         nt1 = nosoar(4,noar)
-      else
-         write(imprim,*)'trp1st: Anomalie arete',noar,
-     %                  ' SANS triangle',nta
-         goto 100
-      endif
-      if( nt1 .le. 0 ) then
-c        un seul triangle contient ns
-c        parcours de tous les triangles pour lever le doute
-         goto 100
-      endif
-c
-c     boucle sur les triangles de sommet ns dans le sens direct
-c     ==========================================================
- 40   if( noartr(1,nt1) .eq. 0 ) goto 70
-c
-c     le triangle nt1 n'a pas ete detruit. il est actif
-c     le numero des 3 sommets du triangle nt1 dans le sens direct
-      call nusotr( nt1, mosoar, nosoar, moartr, noartr, nosotr )
-c
-c     reperage du sommet ns dans nt1
-      do 50 nar=1,3
-         if( nosotr(nar) .eq. ns ) goto 60
- 50   continue
-      goto 100
-c
-c     nt1 est empile
- 60   if( lhpile .ge. mxpile ) goto 70
-      lhpile = lhpile + 1
-      lapile(lhpile) = nt1
-c
-c     l'arete qui precede dans le sens direct
-      if( nar .eq. 1 ) then
-         nar = 3
-      else
-         nar = nar - 1
-      endif
-c
-c     l'arete de sommet ns dans nosoar
-      noar = abs( noartr(nar,nt1) )
-c
-c     le triangle voisin de nta dans le sens direct
-      nta = nt1
-      if( nosoar(4,noar) .eq. nt1 ) then
-         nt1 = nosoar(5,noar)
-      else if( nosoar(5,noar) .eq. nt1 ) then
-         nt1 = nosoar(4,noar)
-      else
-         write(imprim,*)'trp1st: anomalie arete',noar,
-     %                  ' SANS triangle',nt1
-         goto 100
-      endif
-      if( nt1 .gt. 0 ) goto 40
-c
-c     butee sur le trou => fin des triangles de sommet ns
-c     ----------------------------------------------------
-c     impossible ici de trouver tous les triangles de sommet ns directement
-c     les triangles de sommet ns ne forment pas une boule de centre ns
-c     au moins 1, voire 2 triangles frontaliers de sommet ns
- 70   lhpile = -lhpile
-      return
-c
-c     Balayage de tous les triangles actifs et de sommet ns
-c     methode lourde et couteuse mais a priori tres fiable
-c     -----------------------------------------------------
- 100  lhpile = 0
-      do 120 nt1=1,mxartr
-         if( noartr(1,nt1) .ne. 0 ) then
-c           le numero des 3 sommets du triangle i
-            call nusotr( nt1, mosoar, nosoar, moartr, noartr, nosotr )
-            do 110 j=1,3
-               if( nosotr(j) .eq. ns ) then
-c                 le triangle contient le sommet ns
-                  lhpile = lhpile + 1
-                  if( lhpile .gt. mxpile ) goto 9990
-                  lapile( lhpile ) = nt1
-               endif
- 110        continue
-         endif
- 120  continue
-c     il n'est pas sur que ces triangles forment une boule de centre ns
-      lhpile = -lhpile
-      return
-c
-c     saturation de la pile des triangles
-c     -----------------------------------
- 9990 write(imprim,*)'trp1st: saturation pile des triangles autour du so
-     %mmet',ns
-      write(imprim,*) 'Plus de',mxpile,' triangles de sommet',ns
-      write(imprim,19990) (ii,lapile(ii),ii=1,mxpile)
-19990 format(5(' triangle',i9))
-c
- 9999 lhpile = 0
-      return
-      end
-
-
-
-      subroutine nusotr( nt, mosoar, nosoar, moartr, noartr, nosotr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    calcul du numero des 3 sommets du triangle nt de noartr
-c -----    dans le sens direct (aire>0 si non degenere)
-c
-c entrees:
-c --------
-c nt     : numero du triangle dans le tableau noartr
-c mosoar : nombre maximal d'entiers par arete
-c nosoar : numero des 2 sommets , no ligne, 2 triangles, chainages en +
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1=0 si triangle vide => arete2=triangle vide suivant
-c
-c sorties:
-c --------
-c nosotr : numero (dans le tableau pxyd) des 3 sommets du triangle
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      integer     nosoar(mosoar,*), noartr(moartr,*), nosotr(3)
-c
-c     les 2 sommets de l'arete 1 du triangle nt dans le sens direct
-      na = noartr( 1, nt )
-      if( na .gt. 0 ) then
-         nosotr(1) = 1
-         nosotr(2) = 2
-      else
-         nosotr(1) = 2
-         nosotr(2) = 1
-         na = -na
-      endif
-      nosotr(1) = nosoar( nosotr(1), na )
-      nosotr(2) = nosoar( nosotr(2), na )
-c
-c     l'arete suivante
-      na = abs( noartr(2,nt) )
-c
-c     le sommet nosotr(3 du triangle 123
-      nosotr(3) = nosoar( 1, na )
-      if( nosotr(3) .eq. nosotr(1) .or. nosotr(3) .eq. nosotr(2) ) then
-         nosotr(3) = nosoar(2,na)
-      endif
-      end
-
-
-      subroutine tesusp( quamal, nbarpi, pxyd,   noarst,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   mxarcf, n1arcf, noarcf, larmin, notrcf, liarcf,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   supprimer de la triangulation les sommets de te trop proches
-c -----   soit d'un sommet frontalier ou point interne impose
-c         soit d'une arete frontaliere si la qualite minimale des triangles
-c         est inferieure a quamal
-c
-c         attention: le chainage lchain de nosoar devient celui des cf
-c
-c entrees:
-c --------
-c quamal : qualite des triangles au dessous de laquelle supprimer des sommets
-c nbarpi : numero du dernier point interne impose par l'utilisateur
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxarcf : nombre de variables des tableaux n1arcf, noarcf, larmin, notrcf
-c
-c modifies:
-c ---------
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c
-c auxiliaires :
-c -------------
-c n1arcf : tableau (0:mxarcf) auxiliaire d'entiers
-c noarcf : tableau (3,mxarcf) auxiliaire d'entiers
-c larmin : tableau ( mxarcf ) auxiliaire d'entiers
-c notrcf : tableau ( mxarcf ) auxiliaire d'entiers
-c liarcf : tableau ( mxarcf ) auxiliaire d'entiers
-c
-c sortie :
-c --------
-c ierr   : =0 si pas d'erreur
-c          >0 si une erreur est survenue
-c          11 algorithme defaillant
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      parameter       ( lchain=6 )
-      common / unites / lecteu,imprim,intera,nunite(29)
-      double precision  pxyd(3,*), quamal, qualit, quaopt, quamin
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*),
-     %                  n1arcf(0:mxarcf),
-     %                  noarcf(3,mxarcf),
-     %                  larmin(mxarcf),
-     %                  notrcf(mxarcf),
-     %                  liarcf(mxarcf)
-c
-      integer           nosotr(3)
-      equivalence      (nosotr(1),ns1), (nosotr(2),ns2),
-     %                 (nosotr(3),ns3)
-c
-c     le nombre de sommets de te supprimes
-      nbstsu = 0
-      ierr   = 0
-c
-c     initialisation du chainage des aretes des cf => 0 arete de cf
-      do 10 narete=1,mxsoar
-         nosoar( lchain, narete ) = -1
- 10   continue
-c
-c     boucle sur l'ensemble des sommets frontaliers ou points internes
-c     ================================================================
-      do 100 ns = 1, nbarpi
-c
-c        le nombre de sommets supprimes pour ce sommet ns
-         nbsuns = 0
-c        la qualite minimale au dessous de laquelle le point proche
-c        interne est supprime
-         quaopt = quamal
-c
-c        une arete de sommet ns
- 15      narete = noarst( ns )
-         if( narete .le. 0 ) then
-c           erreur: le point appartient a aucune arete
-            write(imprim,*) 'sommet ',ns,' dans aucune arete'
-            ierr = 11
-            return
-         endif
-c
-c        recherche des triangles de sommet ns
-         call trp1st( ns, noarst, mosoar, nosoar,
-     %                moartr, mxartr, noartr,
-     %                mxarcf, nbtrcf, notrcf )
-         if( nbtrcf .eq. 0 ) goto 100
-         if( nbtrcf .lt. 0 ) then
-c           impossible de trouver tous les triangles de sommet ns
-c           seule une partie est a priori retrouvee ce qui est normal
-c           si ns est un sommet frontalier 
-            nbtrcf = -nbtrcf
-         endif
-c
-c        boucle sur les triangles de l'etoile du sommet ns
-c        recherche du triangle de sommet ns ayant la plus basse qualite
-         quamin = 2.0d0
-         do 20 i=1,nbtrcf
-c           le numero des 3 sommets du triangle nt
-            nt = notrcf(i)
-            call nusotr( nt, mosoar, nosoar, moartr, noartr, nosotr )
-c           nosotr(1:3) est en equivalence avec ns1, ns2, ns3
-c           la qualite du triangle ns1 ns2 ns3
-            call qutr2d( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3), qualit )
-            if( qualit .lt. quamin ) then
-               quamin = qualit
-               ntqmin = nt
-            endif
- 20      continue
-c
-c        bilan sur la qualite des triangles de sommet ns
-         if( quamin .lt. quaopt ) then
-c
-c           recherche du sommet de ntqmin le plus proche et non frontalier
-c           ==============================================================
-c           le numero des 3 sommets du triangle ntqmin
-            call nusotr(ntqmin, mosoar, nosoar, moartr, noartr, nosotr)
-            nste = 0
-            d0   = 1e28
-            do 30 j=1,3
-               nst = nosotr(j)
-               if( nst .ne. ns .and. nst .gt. nbarpi ) then
-                  d = (pxyd(1,nst)-pxyd(1,ns))**2
-     %              + (pxyd(2,nst)-pxyd(2,ns))**2
-                  if( d .lt. d0 ) then
-                     d0   = d
-                     nste = j
-                  endif
-               endif
- 30         continue
-c
-            if( nste .gt. 0 ) then
-c
-c              nste est le sommet le plus proche de ns de ce
-c              triangle de mauvaise qualite et sommet non encore traite
-               nste = nosotr( nste )
-c
-c              nste est un sommet de triangle equilateral
-c              => le sommet nste va etre supprime
-c              ==========================================
-               call te1stm( nste,   nbarpi, pxyd,   noarst,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      mxarcf, n1arcf, noarcf,
-     %                      larmin, notrcf, liarcf, ierr )
-               if( ierr .eq. 0 ) then
-c                 un sommet de te supprime de plus
-                  nbstsu = nbstsu + 1
-c
-c                 boucle jusqu'a obtenir une qualite suffisante
-c                 si triangulation tres irreguliere =>
-c                 destruction de beaucoup de points internes
-c                 les 2 variables suivantes brident ces destructions massives
-                  nbsuns = nbsuns + 1
-                  quaopt = quaopt * 0.8
-                  if( nbsuns .lt. 5 ) goto 15
-               else
-                  if( ierr .lt. 0 ) then
-c                    le sommet nste est externe donc non supprime
-c                    ou bien le sommet nste est le centre d'un cf dont toutes
-c                    les aretes simples sont frontalieres
-c                    dans les 2 cas le sommet n'est pas supprime
-                     ierr = 0
-                     goto 100
-                  else
-c                    erreur motivant un arret de la triangulation
-                     return
-                  endif
-               endif
-            endif
-         endif
-c
- 100  continue
-c
-      write(imprim,*)'tesusp: suppression de',nbstsu,
-     %               ' sommets de te trop proches de la frontiere'
-      return
-      end
-
-
-      subroutine teamqa( nutysu, airemx,
-     %                   noarst, mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   mxtrcf, notrcf, nostbo,
-     %                   n1arcf, noarcf, larmin,
-     %                   nbarpi, nbsomm, mxsomm, pxyd, nslign,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but:    Boucles sur les aretes actives de la triangulation actuelle
-c ----    si la taille de l'arete moyenne est >ampli*taille souhaitee
-c         alors ajout d'un sommet barycentre du plus grand triangle
-c               de sommet ns
-c         si la taille de l'arete moyenne est <ampli/2*taille souhaitee
-c         alors suppression du sommet ns
-c         sinon le sommet ns devient le barycentre pondere de ses voisins
-c
-c         remarque: ampli est defini dans $mefisto/mail/tehote.f
-c         et doit avoir la meme valeur pour eviter trop de modifications
-c
-c entrees:
-c --------
-c nutysu : numero de traitement de areteideale() selon le type de surface
-c          0 pas d'emploi de la fonction areteideale() => aretmx active
-c          1 il existe une fonction areteideale()
-c            dont seules les 2 premieres composantes de uv sont actives
-c          autres options a definir...
-c airemx : aire maximale d'un triangle
-c noarst : noarst(i) numero d'une arete de sommet i
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes frontalieres declarables
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles declarables dans noartr
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c mxtrcf : nombre maximal de triangles empilables
-c nbarpi : numero du dernier sommet frontalier ou interne impose
-c nslign : tableau du numero de sommet dans sa ligne pour chaque
-c          sommet frontalier
-c          numero du point dans le lexique point si interne impose
-c          0 si le point est interne non impose par l'utilisateur
-c         -1 si le sommet est externe au domaine
-c
-c modifies :
-c ----------
-c nbsomm : nombre actuel de sommets de la triangulation
-c          (certains sommets internes ont ete desactives ou ajoutes)
-c pxyd   : tableau des coordonnees 2d des points
-c
-c auxiliaires:
-c ------------
-c notrcf : tableau ( mxtrcf ) auxiliaire d'entiers
-c          numero dans noartr des triangles de sommet ns
-c nostbo : tableau ( mxtrcf ) auxiliaire d'entiers
-c          numero dans pxyd des sommets des aretes simples de la boule
-c n1arcf : tableau (0:mxtrcf) auxiliaire d'entiers
-c noarcf : tableau (3,mxtrcf) auxiliaire d'entiers
-c larmin : tableau ( mxtrcf ) auxiliaire d'entiers
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       juin 1997
-c....................................................................012
-      double precision  ampli,ampli2
-      parameter        (ampli=1.34d0,ampli2=ampli/2d0)
-      parameter        (lchain=6)
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*), airemx
-      double precision  ponder, ponde1, xbar, ybar, x, y, surtd2,
-     %                  xns, yns, airetm
-      double precision  d, dmoy, dmax, dmin, dns, xyzns(3), s0, s1
-      integer           noartr(moartr,mxartr),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noarst(*),
-     %                  notrcf(mxtrcf),
-     %                  nslign(*),
-     %                  nostbo(*),
-     %                  n1arcf(0:mxtrcf),
-     %                  noarcf(3,mxtrcf),
-     %                  larmin(mxtrcf)
-      integer           nosotr(3)
-c
-c     initialisation du chainage des aretes des cf => 0 arete de cf
-      do 1 noar=1,mxsoar
-         nosoar( lchain, noar ) = -1
- 1    continue
-      noar0 = 0
-c
-c     le nombre d'iterations pour ameliorer la qualite
-      nbitaq = 5
-      ier    = 0
-c
-c     initialisation du parcours
-      nbs1 = nbsomm
-      nbs2 = nbarpi + 1
-      nbs3 = -1
-c
-      do 5000 iter=1,nbitaq
-c
-cccc        le nombre de barycentres ajoutes
-ccc         nbbaaj = 0
-c
-c        coefficient de ponderation croissant avec les iterations
-         ponder = 0.1d0 + iter * 0.5d0 / nbitaq
-ccc 9 octobre 2006 ponder = min( 1d0, 0.1d0 + iter * 0.9d0 / nbitaq )
-ccc 9 mars    2006 ponder = min( 1d0, ( 50 + (50*iter)/nbitaq ) * 0.01d0 )
-         ponde1 = 1d0 - ponder
-c
-c        l'ordre du parcours dans le sens croissant ou decroissant
-c        alternance du parcours
-         nt   = nbs1
-         nbs1 = nbs2
-         nbs2 = nt
-         nbs3 =-nbs3
-c
-         do 1000 ns = nbs1, nbs2, nbs3
-c
-c           le sommet est il interne au domaine?
-            if( nslign(ns) .ne. 0 ) goto 1000
-c
-c           existe-t-il une arete de sommet ns ?
-            noar = noarst( ns )
-            if( noar .le. 0 ) goto 1000
-            if( nosoar(1,noar) .le. 0 ) goto 1000
-c
-c           le 1-er triangle de l'arete noar
-            nt = nosoar( 4, noar )
-            if( nt .le. 0 ) goto 1000
-c
-c           recherche des triangles de sommet ns
-c           ils doivent former un contour ferme de type etoile
-            call trp1st( ns, noarst, mosoar, nosoar,
-     %                   moartr, mxartr, noartr,
-     %                   mxtrcf, nbtrcf, notrcf )
-            if( nbtrcf .le. 0 ) goto 1000
-c
-c           mise a jour de la distance souhaitee autour de ns
-            xns =  pxyd(1,ns)
-            yns =  pxyd(2,ns)
-            if( nutysu .gt. 0 ) then
-c              la fonction taille_ideale(x,y,z) existe
-               call tetaid( nutysu, xns, yns,
-     %                      pxyd(3,ns), ier )
-            endif
-c
-c           boucle sur les triangles qui forment une etoile autour du sommet ns
-c           chainage des aretes simples de l'etoile formee par ces triangles
-c
-c           remise a zero du lien nosoar des aretes a rendre Delaunay
- 19         if( noar0 .gt. 0 ) then
-               noar = nosoar(lchain,noar0)
-               nosoar(lchain,noar0) = -1
-               noar0 = noar
-               goto 19
-            endif
-c              
-            noar0  = 0
-            nbstbo = 0
-            airetm = 0d0
-            do 40 i=1,nbtrcf
-c              recherche du triangle de plus grande aire
-               nt = notrcf(i)
-               call nusotr( nt, mosoar, nosoar,
-     %                      moartr, noartr, nosotr )
-               d = surtd2( pxyd(1,nosotr(1)),
-     %                     pxyd(1,nosotr(2)),
-     %                     pxyd(1,nosotr(3)) )
-               if( d .gt. airetm ) then
-                  airetm = d
-                  imax   = i
-               else if( d .le. 0 ) then
-                  write(imprim,*)'teamqa: triangle notrcf(',i,')=',
-     %            notrcf(i),' st', nosotr,' AIRE=',d,'<=0'
-                  goto 1000
-               endif
-c
-c              le no de l'arete du triangle nt ne contenant pas le sommet ns
-               do 20 na=1,3
-c                 le numero de l'arete na dans le tableau nosoar
-                  noar = abs( noartr(na,nt) )
-                  if( nosoar(1,noar) .ne. ns   .and.
-     %                nosoar(2,noar) .ne. ns ) goto 25
- 20            continue
-               write(imprim,*)'teamqa: ERREUR triangle',nt,
-     %                        ' SANS sommet',ns
-c
-c              construction de la liste des sommets des aretes simples
-c              de la boule des triangles de sommet ns
-c              -------------------------------------------------------
- 25            do 35 na=1,2
-                  ns1 = nosoar(na,noar)
-                  do 30 j=nbstbo,1,-1
-                     if( ns1 .eq. nostbo(j) ) goto 35
- 30               continue
-c                 ns1 est un nouveau sommet a ajouter a l'etoile
-                  nbstbo = nbstbo + 1
-                  nostbo(nbstbo) = ns1
- 35            continue
-c
-c              noar est une arete potentielle a rendre Delaunay
-               if( nosoar(3,noar) .eq. 0 ) then
-c                 arete non frontaliere
-                  nosoar(lchain,noar) = noar0
-                  noar0 = noar
-               endif
-c
- 40         continue
-c
-c           calcul des 2 coordonnees du barycentre de la boule du sommet ns
-c           calcul de la longueur moyenne des aretes issues du sommet ns
-c           ---------------------------------------------------------------
-            xbar = 0d0
-            ybar = 0d0
-            dmoy = 0d0
-            dmax = 0d0
-            dmin = 1d124
-            dns  = 0d0
-            do 50 i=1,nbstbo
-               nst  = nostbo(i)
-               x    = pxyd(1,nst)
-               y    = pxyd(2,nst)
-               xbar = xbar + x
-               ybar = ybar + y
-               d    = sqrt( (x-xns)**2 + (y-yns)**2 )
-               dmoy = dmoy + d
-               dmax = max( dmax, d )
-               dmin = min( dmin, d )
-               dns  = dns + pxyd(3,nst)
- 50         continue
-            xbar = xbar / nbstbo
-            ybar = ybar / nbstbo
-            dmoy = dmoy / nbstbo
-            dns  = dns  / nbstbo
-c
-c           pas de modification de la topologie lors de la derniere iteration
-c           =================================================================
-            if( iter .eq. nbitaq ) goto 200
-c
-c           si la taille de l'arete maximale est >ampli*taille souhaitee
-c           alors ajout d'un sommet barycentre du plus grand triangle
-c                 de sommet ns
-c           ============================================================
-            if( airetm .gt. airemx .or. dmax .gt. ampli*dns ) then
-c
-c              ajout du barycentre du triangle notrcf(imax)
-               nt = notrcf( imax )
-               call nusotr( nt, mosoar, nosoar,
-     %                      moartr, noartr, nosotr )
-               if( nbsomm .ge. mxsomm ) then
-                  write(imprim,*) 'saturation du tableau pxyd'
-c                 abandon de l'amelioration du sommet ns
-                  goto 9999
-               endif
-               nbsomm = nbsomm + 1
-               do 160 i=1,3
-                  pxyd(i,nbsomm) = ( pxyd(i,nosotr(1))
-     %                             + pxyd(i,nosotr(2))
-     %                             + pxyd(i,nosotr(3)) ) / 3d0
- 160           continue
-               if( nutysu .gt. 0 ) then
-c                 la fonction taille_ideale(x,y,z) existe
-                  call tetaid( nutysu, pxyd(1,nbsomm), pxyd(2,nbsomm),
-     %                         pxyd(3,nbsomm), ier )
-               endif
-c
-c              sommet interne a la triangulation
-               nslign(nbsomm) = 0
-c
-c              les 3 aretes du triangle nt sont a rendre delaunay
-               do 170 i=1,3
-                  noar = abs( noartr(i,nt) )
-                  if( nosoar(3,noar) .eq. 0 ) then
-c                    arete non frontaliere
-                     if( nosoar(lchain,noar) .lt. 0 ) then
-c                       arete non encore chainee
-                        nosoar(lchain,noar) = noar0
-                        noar0 = noar
-                     endif
-                  endif
- 170           continue
-c
-c              triangulation du triangle de barycentre nbsomm
-c              protection a ne pas modifier sinon erreur!
-               call tr3str( nbsomm, nt,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      noarst, nosotr, ierr )
-               if( ierr .ne. 0 ) goto 9999
-c
-cccc              un barycentre ajoute de plus
-ccc               nbbaaj = nbbaaj + 1
-c
-c              les aretes chainees de la boule sont rendues delaunay
-               goto 900
-c
-            endif
-c
-c           les 2 coordonnees du barycentre des sommets des aretes
-c           simples de la boule du sommet ns
-c           ======================================================
-C DEBUT AJOUT 10 octobre 2006
-C           PONDERATION POUR EVITER LES DEGENERESCENSES AVEC PROTECTION
-C           SI UN TRIANGLE DE SOMMET NS A UNE AIRE NEGATIVE APRES BARYCENTRAGE
-C           ALORS LE SOMMET NS N'EST PAS BOUGE
-c
-c           protection des XY du point initial
- 200        xyzns(1) = pxyd(1,ns)
-            xyzns(2) = pxyd(2,ns)
-            xyzns(3) = pxyd(3,ns)
-c
-c           ponderation pour eviter les degenerescenses
-            pxyd(1,ns) = ponde1 * pxyd(1,ns) + ponder * xbar
-            pxyd(2,ns) = ponde1 * pxyd(2,ns) + ponder * ybar
-            if( nutysu .gt. 0 ) then
-c              la fonction taille_ideale(x,y,z) existe
-               call tetaid( nutysu, pxyd(1,ns), pxyd(2,ns),
-     %                      pxyd(3,ns), ier )
-            endif
-c
-c           calcul des surfaces avant et apres deplacement de ns
-            s0 = 0d0
-            s1 = 0d0
-            do 210 i=1,nbtrcf
-c              le numero de l'arete du triangle nt ne contenant pas le sommet ns
-               nt = notrcf(i)
-               do 204 na=1,3
-c                 le numero de l'arete na dans le tableau nosoar
-                  noar = abs( noartr(na,nt) )
-                  if( nosoar(1,noar) .ne. ns   .and.
-     %                nosoar(2,noar) .ne. ns ) then
-                     ns2 = nosoar(1,noar)
-                     ns3 = nosoar(2,noar)
-                     goto 206
-                  endif
- 204           continue
-c              aire signee des 2 triangles
- 206           s0 = s0 + abs(surtd2(xyzns,     pxyd(1,ns2),pxyd(1,ns3)))
-               s1 = s1 + abs(surtd2(pxyd(1,ns),pxyd(1,ns2),pxyd(1,ns3)))
- 210        continue
-            if( abs(s0-s1) .gt. 1d-10*abs(s0) ) then
-c              retour a la position initiale
-c              car le point est passe au dela d'une arete de son etoile
-               pxyd(1,ns) = xyzns(1)
-               pxyd(2,ns) = xyzns(2)
-               pxyd(3,ns) = xyzns(3)
-c              la ponderation est reduite  10 octobre 2006
-               ponder = max( 0.1d0, ponder*0.5d0 )
-               ponde1 = 1d0 - ponder
-               goto 1000
-            endif
-c
-c           les aretes chainees de la boule sont rendues delaunay
- 900        call tedela( pxyd,   noarst,
-     %                   mosoar, mxsoar, n1soar, nosoar, noar0,
-     %                   moartr, mxartr, n1artr, noartr, modifs )
-c
- 1000    continue
-c
-ccc         write(imprim,11000) iter, nbbaaj
-ccc11000 format('teamqa: iteration',i3,' =>',i6,' barycentres ajoutes')
-c
-c        mise a jour pour ne pas oublier les nouveaux sommets
-         if( nbs1 .gt. nbs2 ) then
-            nbs1 = nbsomm
-         else
-            nbs2 = nbsomm
-         endif
-c
- 5000 continue
-c
- 9999 return
-      end
-
-
-      subroutine teamqt( nutysu, aretmx, airemx,
-     %                   noarst, mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   mxarcf, notrcf, nostbo,
-     %                   n1arcf, noarcf, larmin,
-     %                   nbarpi, nbsomm, mxsomm, pxyd, nslign,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    amelioration de la qualite de la triangulation
-c -----
-c
-c entrees:
-c --------
-c nutysu : numero de traitement de areteideale() selon le type de surface
-c          0 pas d'emploi de la fonction areteideale() => aretmx active
-c          1 il existe une fonction areteideale()
-c            dont seules les 2 premieres composantes de uv sont actives
-c          autres options a definir...
-c aretmx : longueur maximale des aretes de la future triangulation
-c airemx : aire maximale souhaitee des triangles
-c noarst : noarst(i) numero d'une arete de sommet i
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes frontalieres declarables
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles declarables dans noartr
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c mxarcf : nombre maximal de triangles empilables
-c nbarpi : numero du dernier sommet frontalier ou interne impose
-c nslign : tableau du numero de sommet dans sa ligne pour chaque
-c          sommet frontalier
-c          numero du point dans le lexique point si interne impose
-c          0 si le point est interne non impose par l'utilisateur
-c         -1 si le sommet est externe au domaine
-c
-c modifies :
-c ----------
-c nbsomm : nombre actuel de sommets de la triangulation
-c          (certains sommets internes ont ete desactives ou ajoutes)
-c pxyd   : tableau des coordonnees 2d des points
-c
-c auxiliaires:
-c ------------
-c notrcf : tableau ( mxarcf ) auxiliaire d'entiers
-c          numero dans noartr des triangles de sommet ns
-c nostbo : tableau ( mxarcf ) auxiliaire d'entiers
-c          numero dans pxyd des sommets des aretes simples de la boule
-c n1arcf : tableau (0:mxarcf) auxiliaire d'entiers
-c noarcf : tableau (3,mxarcf) auxiliaire d'entiers
-c larmin : tableau ( mxarcf ) auxiliaire d'entiers
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       juin 1997
-c....................................................................012
-      double precision  quamal
-c     parameter       ( quamal=0.3d0 ) => ok
-c     parameter       ( quamal=0.4d0 ) => pb pour le test ocean
-c     parameter       ( quamal=0.5d0 ) => pb pour le test ocean
-      parameter       ( quamal=0.1d0 )
-c     quamal=0.1d0 est choisi pour ne pas trop detruire de sommets
-c
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      integer           noartr(moartr,*),
-     %                  nosoar(mosoar,*),
-     %                  noarst(*),
-     %                  notrcf(mxarcf),
-     %                  nslign(*),
-     %                  nostbo(mxarcf),
-     %                  n1arcf(0:mxarcf),
-     %                  noarcf(3,mxarcf),
-     %                  larmin(mxarcf)
-      double precision  aretmx, airemx
-      double precision  quamoy, quamin
-c
-      ierr = 0
-c
-c     supprimer de la triangulation les triangles de qualite
-c     inferieure a quamal
-c     ======================================================
-      call tesuqm( quamal, nbarpi, pxyd,   noarst,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, mxartr, n1artr, noartr,
-     %             mxarcf, n1arcf, noarcf,
-     %             larmin, notrcf, nostbo,
-     %             quamin )
-      call qualitetrte( pxyd,   mosoar, mxsoar, nosoar,
-     %                  moartr, mxartr, noartr,
-     %                  nbtria, quamoy, quamin )
-c
-c     suppression des sommets de triangles equilateraux trop proches
-c     d'un sommet frontalier ou d'un point interne impose par
-c     triangulation frontale de l'etoile et mise en delaunay
-c     ==============================================================
-      if( quamin .le. quamal ) then
-         call tesusp( quamal, nbarpi, pxyd,   noarst,
-     %                mosoar, mxsoar, n1soar, nosoar,
-     %                moartr, mxartr, n1artr, noartr,
-     %                mxarcf, n1arcf, noarcf,
-     %                larmin, notrcf, nostbo,
-     %                ierr )
-         if( ierr .ne. 0 ) goto 9999
-      endif
-c
-c     ajustage des tailles moyennes des aretes avec ampli=1.34d0 entre
-c     ampli/2 x taille_souhaitee et ampli x taille_souhaitee 
-c     + barycentrage des sommets et mise en triangulation delaunay
-c     ================================================================
-      call teamqa( nutysu, airemx,
-     %             noarst, mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, mxartr, n1artr, noartr,
-     %             mxarcf, notrcf, nostbo,
-     %             n1arcf, noarcf, larmin,
-     %             nbarpi, nbsomm, mxsomm, pxyd, nslign,
-     %             ierr )
-      call qualitetrte( pxyd,   mosoar, mxsoar, nosoar,
-     %                  moartr, mxartr, noartr,
-     %                  nbtria, quamoy, quamin )
-      if( ierr .ne. 0 ) goto 9999
-c
- 9999 return
-      end
-
-      subroutine trfrcf( nscent, mosoar, nosoar, moartr, noartr,
-     %                   nbtrcf, notrcf, nbarfr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    calculer le nombre d'aretes simples du contour ferme des
-c -----    nbtrcf triangles de numeros stockes dans le tableau notrcf
-c          ayant tous le sommet nscent
-c
-c entrees:
-c --------
-c nscent : numero du sommet appartenant a tous les triangles notrcf
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c nbtrcf : >0 nombre de triangles empiles
-c          =0       si impossible de tourner autour du point
-c          =-nbtrcf si apres butee sur la frontiere il y a a nouveau
-c          butee sur la frontiere . a ce stade on ne peut dire si tous
-c          les triangles ayant ce sommet ont ete recenses
-c          ce cas arrive seulement si le sommet est sur la frontiere
-c notrcf : numero dans noartr des triangles de sommet ns
-c
-c sortie :
-c --------
-c nbarfr : nombre d'aretes simples frontalieres
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       juin 1997
-c....................................................................012
-      integer           noartr(moartr,*),
-     %                  nosoar(mosoar,*),
-     %                  notrcf(1:nbtrcf)
-c
-      nbarfr = 0
-      do 50 n=1,nbtrcf
-c        le numero du triangle n dans le tableau noartr
-         nt = notrcf( n )
-c        parcours des 3 aretes du triangle nt
-         do 40 i=1,3
-c           le numero de l'arete i dans le tableau nosoar
-            noar = abs( noartr( i, nt ) )
-            do 30 j=1,2
-c              le numero du sommet j de l'arete noar
-               ns = nosoar( j, noar )
-               if( ns .eq. nscent ) goto 40
- 30         continue
-c           l'arete noar (sans sommet nscent) est elle frontaliere?
-            if( nosoar( 5, noar ) .le. 0 ) then
-c              l'arete appartient au plus a un triangle
-c              une arete simple frontaliere de plus
-               nbarfr = nbarfr + 1
-            endif
-c           le triangle a au plus une arete sans sommet nscent
-            goto 50
- 40      continue
- 50   continue
-      end
-
-      subroutine int2ar( p1, p2, p3, p4, oui )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    les 2 aretes de r**2 p1-p2  p3-p4 s'intersectent elles
-c -----    entre leurs sommets?
-c
-c entrees:
-c --------
-c p1,p2,p3,p4 : les 2 coordonnees reelles des sommets des 2 aretes
-c
-c sortie :
-c --------
-c oui    : .true. si intersection, .false. sinon
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    octobre 1991
-c2345x7..............................................................012
-      double precision  p1(2),p2(2),p3(2),p4(2)
-      double precision  x21,y21,d21,x43,y43,d43,d,x,y,xx
-      logical  oui
-c
-c     longueur des aretes
-      x21 = p2(1)-p1(1)
-      y21 = p2(2)-p1(2)
-      d21 = x21**2 + y21**2
-c
-      x43 = p4(1)-p3(1)
-      y43 = p4(2)-p3(2)
-      d43 = x43**2 + y43**2
-c
-c     les 2 aretes sont-elles jugees paralleles ?
-      d = x43 * y21 - y43 * x21
-      if( abs(d) .le. 0.001 * sqrt(d21 * d43) ) then
-c        aretes paralleles . pas d'intersection
-         oui = .false.
-         return
-      endif
-c
-c     les 2 coordonnees du point d'intersection
-      x = ( p1(1)*x43*y21 - p3(1)*x21*y43 - (p1(2)-p3(2))*x21*x43 ) / d
-      y =-( p1(2)*y43*x21 - p3(2)*y21*x43 - (p1(1)-p3(1))*y21*y43 ) / d
-c
-c     coordonnees de x,y dans le repere ns1-ns2
-      xx  = ( x - p1(1) ) * x21 + ( y - p1(2) ) * y21
-c     le point est il entre p1 et p2 ?
-      oui = -0.00001d0*d21 .le. xx .and. xx .le. 1.00001d0*d21
-c
-c     coordonnees de x,y dans le repere ns3-ns4
-      xx  = ( x - p3(1) ) * x43 + ( y - p3(2) ) * y43
-c     le point est il entre p3 et p4 ?
-      oui = oui .and. -0.00001d0*d43 .le. xx .and. xx .le. 1.00001d0*d43
-      end
-
-
-      subroutine trchtd( pxyd,   nar00, nar0,  noarcf,
-     %                   namin0, namin, larmin )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    recherche dans le contour ferme du sommet qui joint a la plus
-c -----    courte arete nar00 donne le triangle sans intersection
-c          avec le contour ferme de meilleure qualite
-c
-c entrees:
-c --------
-c pxyd   : tableau des coordonnees des sommets et distance_souhaitee
-c
-c entrees et sorties:
-c -------------------
-c nar00  : numero dans noarcf de l'arete avant nar0
-c nar0   : numero dans noarcf de la plus petite arete du contour ferme
-c          a joindre a noarcf(1,namin) pour former le triangle ideal
-c noarcf : numero du sommet , numero de l'arete suivante
-c          numero du triangle exterieur a l'etoile
-c
-c sortie :
-c --------
-c namin0 : numero dans noarcf de l'arete avant namin
-c namin  : numero dans noarcf du sommet choisi
-c          0 si contour ferme reduit a moins de 3 aretes
-c larmin : tableau auxiliaire pour stocker la liste des numeros des
-c          aretes de meilleure qualite pour faire le choix final
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      double precision dmaxim, precision
-      parameter        (dmaxim=1.7d+308, precision=1d-16)
-c     ATTENTION:variables a ajuster selon la machine!
-c     ATTENTION:dmaxim : le plus grand reel machine
-c     ATTENTION:sur dec-alpha la precision est de 10**-14 seulement
-
-      common / unites / lecteu,imprim,nunite(30)
-      double precision  pxyd(1:3,1:*)
-      integer           noarcf(1:3,1:*),
-     %                  larmin(1:*)
-      double precision  q, dd, dmima,
-     %                  unpeps, rayon, surtd2
-      logical           oui
-      double precision  centre(3)
-c
-c     initialisations
-c     dmaxim : le plus grand reel machine
-      unpeps = 1d0 + 100d0 * precision
-c
-c     recherche de la plus courte arete du contour ferme
-      nbmin = 0
-      na00  = nar00
-      dmima = dmaxim
-      nbar  = 0
-c
- 2    na0  = noarcf( 2, na00 )
-      na1  = noarcf( 2, na0  )
-      nbar = nbar + 1
-c     les 2 sommets de l'arete na0 du cf
-      ns1  = noarcf( 1, na0 )
-      ns2  = noarcf( 1, na1 )
-      dd   = (pxyd(1,ns2)-pxyd(1,ns1))**2 + (pxyd(2,ns2)-pxyd(2,ns1))**2
-      if( dd .lt. dmima ) then
-         dmima = dd
-         larmin(1) = na00
-      endif
-      na00 = na0
-      if( na00 .ne. nar00 ) then
-c        derniere arete non atteinte
-         goto 2
-      endif
-c
-      if( nbar .eq. 3 ) then
-c
-c        contour ferme reduit a un triangle
-c        ----------------------------------
-         namin  = nar00
-         nar0   = noarcf( 2, nar00 )
-         namin0 = noarcf( 2, nar0  )
-         return
-c
-      else if( nbar .le. 2 ) then
-         write(imprim,*) 'erreur trchtd: cf<3 aretes'
-         namin  = 0
-         namin0 = 0
-         return
-      endif
-c
-c     cf non reduit a un triangle
-c     la plus petite arete est nar0 dans noarcf
-      nar00 = larmin( 1 )
-      nar0  = noarcf( 2, nar00 )
-      nar   = noarcf( 2, nar0  )
-c
-      ns1   = noarcf( 1, nar0 )
-      ns2   = noarcf( 1, nar  )
-c
-c     recherche dans cette etoile du sommet offrant la meilleure qualite
-c     du triangle ns1-ns2 ns3 sans intersection avec le contour ferme
-c     ==================================================================
-      nar3  = nar
-      qmima = -1
-c
-c     parcours des sommets possibles ns3
- 10   nar3  = noarcf( 2, nar3 )
-      if( nar3 .ne. nar0 ) then
-c
-c        il existe un sommet ns3 different de ns1 et ns2
-         ns3 = noarcf( 1, nar3 )
-c
-c        les aretes ns1-ns3 et ns2-ns3 intersectent-elles une arete
-c        du contour ferme ?
-c        ----------------------------------------------------------
-c        intersection de l'arete ns2-ns3 et des aretes du cf
-c        jusqu'au sommet ns3
-         nar1 = noarcf( 2, nar )
-c
- 15      if( nar1 .ne. nar3 .and. noarcf( 2, nar1 ) .ne. nar3 ) then
-c           l'arete suivante
-            nar2 = noarcf( 2, nar1 )
-c           le numero des 2 sommets de l'arete
-            np1  = noarcf( 1, nar1 )
-            np2  = noarcf( 1, nar2 )
-            call int2ar( pxyd(1,ns2), pxyd(1,ns3),
-     %                   pxyd(1,np1), pxyd(1,np2), oui )
-            if( oui ) goto 10
-c           les 2 aretes ne s'intersectent pas entre leurs sommets
-            nar1 = nar2
-            goto 15
-         endif
-c
-c        intersection de l'arete ns3-ns1 et des aretes du cf
-c        jusqu'au sommet de l'arete nar0
-         nar1 = noarcf( 2, nar3 )
-c
- 18      if( nar1 .ne. nar0 .and. noarcf( 2, nar1 ) .ne. nar0 ) then
-c           l'arete suivante
-            nar2 = noarcf( 2, nar1 )
-c           le numero des 2 sommets de l'arete
-            np1  = noarcf( 1, nar1 )
-            np2  = noarcf( 1, nar2 )
-            call int2ar( pxyd(1,ns1), pxyd(1,ns3),
-     %                   pxyd(1,np1), pxyd(1,np2), oui )
-            if( oui ) goto 10
-c           les 2 aretes ne s'intersectent pas entre leurs sommets
-            nar1 = nar2
-            goto 18
-         endif
-c
-c        le triangle ns1-ns2-ns3 n'intersecte pas une arete du contour ferme
-c        le calcul de la surface du triangle
-         dd = surtd2( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3) )
-         if( dd .le. 0d0 ) then
-c           surface negative => triangle a rejeter
-            q = 0
-         else
-c           calcul de la qualite du  triangle  ns1-ns2-ns3
-            call qutr2d( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3), q )
-         endif
-c
-         if( q .ge. qmima*1.00001 ) then
-c           q est un vrai maximum de la qualite
-            qmima = q
-            nbmin = 1
-            larmin(1) = nar3
-         else if( q .ge. qmima*0.999998 ) then
-c           q est voisin de qmima
-c           il est empile
-            nbmin = nbmin + 1
-            larmin( nbmin ) = nar3
-         endif
-         goto 10
-      endif
-c
-c     bilan : existe t il plusieurs sommets de meme qualite?
-c     ======================================================
-      if( nbmin .gt. 1 ) then
-c
-c        oui:recherche de ceux de cercle ne contenant pas d'autres sommets
-         do 80 i=1,nbmin
-c           le sommet
-            nar = larmin( i )
-            if( nar .le. 0 ) goto 80
-            ns3 = noarcf(1,nar)
-c           les coordonnees du centre du cercle circonscrit
-c           et son rayon
-            ier = -1
-            call cenced( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3),
-     %                   centre, ier )
-            if( ier .ne. 0 ) then
-c              le sommet ns3 ne convient pas
-               larmin( i ) = 0
-               goto 80
-            endif
-            rayon = centre(3) * unpeps
-            do 70 j=1,nbmin
-               if( j .ne. i ) then
-c                 l'autre sommet
-                  nar1 = larmin(j)
-                  if( nar1 .le. 0 ) goto 70
-                  ns4 = noarcf(1,nar1)
-c                 appartient t il au cercle ns1 ns2 ns3 ?
-                  dd = (centre(1)-pxyd(1,ns4))**2 +
-     %                 (centre(2)-pxyd(2,ns4))**2
-                  if( dd .le. rayon ) then
-c                    ns4 est dans le cercle circonscrit  ns1 ns2 ns3
-c                    le sommet ns3 ne convient pas
-                     larmin( i ) = 0
-                     goto 80
-                  endif
-               endif
- 70         continue
- 80      continue
-c
-c        existe t il plusieurs sommets ?
-         j = 0
-         do 90 i=1,nbmin
-            if( larmin( i ) .gt. 0 ) then
-c              compactage des min
-               j = j + 1
-               larmin(j) = larmin(i)
-            endif
- 90      continue
-c
-         if( j .gt. 1 ) then
-c           oui : choix du plus petit rayon de cercle circonscrit
-            dmima = dmaxim
-            do 120 i=1,nbmin
-               ns3 = noarcf(1,larmin(i))
-c
-c              les coordonnees du centre de cercle circonscrit
-c              au triangle nt et son rayon
-               ier = -1
-               call cenced( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3),
-     %                      centre, ier )
-               if( ier .ne. 0 ) then
-c                 le sommet ns3 ne convient pas
-                  goto 120
-               endif
-               rayon = sqrt( centre(3) )
-               if( rayon .lt. dmima ) then
-                  dmima = rayon
-                  larmin(1) = larmin(i)
-               endif
- 120        continue
-         endif
-      endif
-c
-c     le choix final
-c     ==============
-      namin = larmin(1)
-c
-c     recherche de l'arete avant namin ( nar0 <> namin )
-c     ==================================================
-      nar1 = nar0
- 200  if( nar1 .ne. namin ) then
-         namin0 = nar1
-         nar1   = noarcf( 2, nar1 )
-         goto 200
-      endif
-      end
-
-      subroutine trcf0a( nbcf,   na01,   na1, na2, na3,
-     %                   noar1,  noar2,  noar3,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, n1artr, noartr, noarst,
-     %                   mxarcf, n1arcf, noarcf, nt )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    modification de la triangulation du contour ferme nbcf
-c -----    par ajout d'un triangle ayant 0 arete sur le contour
-c          creation des 3 aretes dans le tableau nosoar
-c          modification du contour par ajout de la 3-eme arete
-c          creation d'un contour ferme a partir de la seconde arete
-c
-c entrees:
-c --------
-c nbcf    : numero dans n1arcf du cf traite ici
-c na01    : numero noarcf de l'arete precedent l'arete na1 de noarcf
-c na1     : numero noarcf du 1-er sommet du triangle
-c           implicitement l'arete na1 n'est pas une arete du triangle
-c na2     : numero noarcf du 2-eme sommet du triangle
-c           implicitement l'arete na1 n'est pas une arete du triangle
-c na3     : numero noarcf du 3-eme sommet du triangle
-c           implicitement l'arete na1 n'est pas une arete du triangle
-c
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c
-c entrees et sorties :
-c --------------------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1arcf : numero d'une arete de chaque contour
-c noarcf : numero des aretes de la ligne du contour ferme
-c          attention : chainage circulaire des aretes
-c
-c sortie :
-c --------
-c noar1  : numero dans le tableau nosoar de l'arete 1 du triangle
-c noar2  : numero dans le tableau nosoar de l'arete 2 du triangle
-c noar3  : numero dans le tableau nosoar de l'arete 3 du triangle
-c nt     : numero du triangle ajoute dans noartr
-c          0 si saturation du tableau noartr ou noarcf ou n1arcf
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      integer           nosoar(mosoar,*),
-     %                  noartr(moartr,*),
-     %                  noarst(*),
-     %                  n1arcf(0:*),
-     %                  noarcf(3,*)
-c
-      ierr = 0
-c
-c     2 contours fermes peuvent ils etre ajoutes ?
-      if( nbcf+2 .gt. mxarcf ) goto 9100
-c
-c     creation des 3 aretes du triangle dans le tableau nosoar
-c     ========================================================
-c     la formation de l'arete sommet1-sommet2 dans le tableau nosoar
-      call fasoar( noarcf(1,na1), noarcf(1,na2), -1, -1,  0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             noar1,  ierr )
-      if( ierr .ne. 0 ) goto 9900
-c
-c     la formation de l'arete sommet2-sommet3 dans le tableau nosoar
-      call fasoar( noarcf(1,na2), noarcf(1,na3), -1, -1,  0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             noar2,  ierr )
-      if( ierr .ne. 0 ) goto 9900
-c
-c     la formation de l'arete sommet3-sommet1 dans le tableau nosoar
-      call fasoar( noarcf(1,na3), noarcf(1,na1), -1, -1,  0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             noar3,  ierr )
-      if( ierr .ne. 0 ) goto 9900
-c
-c     ajout dans noartr de ce triangle nt
-c     ===================================
-      call trcf3a( noarcf(1,na1),  noarcf(1,na2), noarcf(1,na3),
-     %             noar1,  noar2,  noar3,
-     %             mosoar, nosoar,
-     %             moartr, n1artr, noartr,
-     %             nt )
-      if( nt .le. 0 ) return
-c
-c     modification du contour nbcf existant
-c     chainage de l'arete na2 vers l'arete na1
-c     ========================================
-c     modification du cf en pointant na2 sur na1
-      na2s = noarcf( 2, na2 )
-      noarcf( 2, na2 ) = na1
-c     le numero de l'arete dans le tableau nosoar
-      noar2s = noarcf( 3, na2 )
-c     le numero de l'arete dans le tableau nosoar
-      noarcf( 3, na2 ) = noar1
-c     debut du cf
-      n1arcf( nbcf ) = na2
-c
-c     creation d'un nouveau contour ferme na2 - na3
-c     =============================================
-      nbcf = nbcf + 1
-c     recherche d'une arete de cf vide
-      nav = n1arcf(0)
-      if( nav .le. 0 ) goto 9100
-c     la 1-ere arete vide est mise a jour
-      n1arcf(0) = noarcf( 2, nav )
-c
-c     ajout de l'arete nav pointant sur na2s
-c     le numero du sommet
-      noarcf( 1, nav ) = noarcf( 1, na2 )
-c     l'arete suivante
-      noarcf( 2, nav ) = na2s
-c     le numero nosoar de cette arete
-      noarcf( 3, nav ) = noar2s
-c
-c     l'arete na3 se referme sur nav
-      na3s = noarcf( 2, na3 )
-      noarcf( 2, na3 ) = nav
-c     le numero de l'arete dans le tableau nosoar
-      noar3s = noarcf( 3, na3 )
-      noarcf( 3, na3 ) = noar2
-c     debut du cf+1
-      n1arcf( nbcf ) = na3
-c
-c     creation d'un nouveau contour ferme na3 - na1
-c     =============================================
-      nbcf = nbcf + 1
-c     recherche d'une arete de cf vide
-      nav = n1arcf(0)
-      if( nav .le. 0 ) goto 9100
-c     la 1-ere arete vide est mise a jour
-      n1arcf(0) = noarcf( 2, nav )
-c
-c     ajout de l'arete nav pointant sur na3s
-c     le numero du sommet
-      noarcf( 1, nav ) = noarcf( 1, na3 )
-c     l'arete suivante
-      noarcf( 2, nav ) = na3s
-c     le numero de l'arete dans le tableau nosoar
-      noarcf( 3, nav ) = noar3s
-c
-c     recherche d'une arete de cf vide
-      nav1 = n1arcf(0)
-      if( nav1 .le. 0 ) goto 9100
-c     la 1-ere arete vide est mise a jour
-      n1arcf(0) = noarcf( 2, nav1 )
-c
-c     l'arete precedente na01 de na1 pointe sur la nouvelle nav1
-      noarcf( 2, na01 ) = nav1
-c
-c     ajout de l'arete nav1 pointant sur nav
-c     le numero du sommet
-      noarcf( 1, nav1 ) = noarcf( 1, na1 )
-c     l'arete suivante
-      noarcf( 2, nav1 ) = nav
-c     le numero de l'arete dans le tableau nosoar
-      noarcf( 3, nav1 ) = noar3
-c
-c     debut du cf+2
-      n1arcf( nbcf ) = nav1
-      return
-c
-c     erreur
- 9100 write(imprim,*) 'saturation du tableau mxarcf'
-      nt = 0
-      return
-c
-c     erreur tableau nosoar sature
- 9900 write(imprim,*) 'saturation du tableau nosoar'
-      nt = 0
-      return
-      end
-
-
-      subroutine trcf1a( nbcf,   na01,   na1,    na2, noar1, noar3,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, n1artr, noartr, noarst,
-     %                   mxarcf, n1arcf, noarcf, nt )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    modification de la triangulation du contour ferme nbcf
-c -----    par ajout d'un triangle ayant 1 arete sur le contour
-c          modification du contour par ajout de la 3-eme arete
-c          creation d'un contour ferme a partir de la seconde arete
-c
-c entrees:
-c --------
-c nbcf    : numero dans n1arcf du cf traite ici
-c na01    : numero noarcf de l'arete precedant l'arete na1 de noarcf
-c na1     : numero noarcf du 1-er sommet du triangle
-c           implicitement l'arete na1 n'est pas une arete du triangle
-c na2     : numero noarcf du 2-eme sommet du triangle
-c           cette arete est l'arete 2 du triangle a ajouter
-c           son arete suivante dans noarcf n'est pas sur le contour
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c
-c entrees et sorties :
-c --------------------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1arcf : numero d'une arete de chaque contour
-c noarcf : numero des aretes de la ligne du contour ferme
-c          attention : chainage circulaire des aretes
-c
-c sortie :
-c --------
-c noar1  : numero nosoar de l'arete 1 du triangle cree
-c noar3  : numero nosoar de l'arete 3 du triangle cree
-c nt     : numero du triangle ajoute dans notria
-c          0 si saturation du tableau notria ou noarcf ou n1arcf
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,*),
-     %                  noarst(*),
-     %                  n1arcf(0:*),
-     %                  noarcf(3,*)
-c
-c     un cf supplementaire peut il etre ajoute ?
-      if( nbcf .ge. mxarcf ) then
-         write(imprim,*) 'saturation du tableau noarcf'
-         nt = 0
-         return
-      endif
-c
-      ierr = 0
-c
-c     l' arete suivante du triangle non sur le cf
-      na3 = noarcf( 2, na2 )
-c
-c     creation des 2 nouvelles aretes du triangle dans le tableau nosoar
-c     ==================================================================
-c     la formation de l'arete sommet1-sommet2 dans le tableau nosoar
-      call fasoar( noarcf(1,na1), noarcf(1,na2), -1, -1,  0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             noar1,  ierr )
-      if( ierr .ne. 0 ) goto 9900
-c
-c     la formation de l'arete sommet1-sommet3 dans le tableau nosoar
-      call fasoar( noarcf(1,na3), noarcf(1,na1), -1, -1,  0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             noar3,  ierr )
-      if( ierr .ne. 0 ) goto 9900
-c
-c     le triangle nt de noartr a l'arete 2 comme arete du contour na2
-c     ===============================================================
-      call trcf3a( noarcf(1,na1), noarcf(1,na2), noarcf(1,na3),
-     %             noar1, noarcf(3,na2), noar3,
-     %             mosoar, nosoar,
-     %             moartr, n1artr, noartr,
-     %             nt )
-      if( nt .le. 0 ) return
-c
-c     modification du contour ferme existant
-c     suppression de l'arete na2 du cf
-c     ======================================
-c     modification du cf en pointant na2 sur na1
-      noarcf( 2, na2 ) = na1
-      noarcf( 3, na2 ) = noar1
-c     debut du cf
-      n1arcf( nbcf ) = na2
-c
-c     creation d'un nouveau contour ferme na3 - na1
-c     =============================================
-      nbcf = nbcf + 1
-c
-c     recherche d'une arete de cf vide
-      nav = n1arcf(0)
-      if( nav .le. 0 ) then
-         write(imprim,*) 'saturation du tableau noarcf'
-         nt = 0
-         return
-      endif
-c
-c     la 1-ere arete vide est mise a jour
-      n1arcf(0) = noarcf( 2, nav )
-c
-c     ajout de l'arete nav pointant sur na3
-c     le numero du sommet
-      noarcf( 1, nav ) = noarcf( 1, na1 )
-c     l'arete suivante
-      noarcf( 2, nav ) = na3
-c     le numero de l'arete dans le tableau nosoar
-      noarcf( 3, nav ) = noar3
-c
-c     l'arete precedente na01 de na1 pointe sur la nouvelle nav
-      noarcf( 2, na01 ) = nav
-c
-c     debut du cf
-      n1arcf( nbcf ) = nav
-      return
-c
-c     erreur tableau nosoar sature
- 9900 write(imprim,*) 'saturation du tableau nosoar'
-      nt = 0
-      return
-      end
-
-
-      subroutine trcf2a( nbcf,   na1,    noar3,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, n1artr, noartr, noarst,
-     %                   n1arcf, noarcf, nt )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    modification de la triangulation du contour ferme nbcf
-c -----    par ajout d'un triangle ayant 2 aretes sur le contour
-c          creation d'une arete dans nosoar (sommet3-sommet1)
-c          et modification du contour par ajout de la 3-eme arete
-c
-c entrees:
-c --------
-c nbcf   : numero dans n1arcf du cf traite ici
-c na1    : numero noarcf de la premiere arete sur le contour
-c          implicitement sa suivante est sur le contour
-c          la suivante de la suivante n'est pas sur le contour
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c
-c entrees et sorties :
-c --------------------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1arcf : numero d'une arete de chaque contour
-c noarcf : numero des aretes de la ligne du contour ferme
-c          attention : chainage circulaire des aretes
-c
-c sortie :
-c --------
-c noar3  : numero de l'arete 3 dans le tableau nosoar
-c nt     : numero du triangle ajoute dans noartr
-c          0 si saturation du tableau noartr ou nosoar
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      integer           nosoar(mosoar,*),
-     %                  noartr(moartr,*),
-     %                  noarst(*)
-      integer           n1arcf(0:*),
-     %                  noarcf(3,*)
-c
-      ierr = 0
-c
-c     l'arete suivante de l'arete na1 dans noarcf
-      na2 = noarcf( 2, na1 )
-c     l'arete suivante de l'arete na2 dans noarcf
-      na3 = noarcf( 2, na2 )
-c
-c     la formation de l'arete sommet3-sommet1 dans le tableau nosoar
-      call fasoar( noarcf(1,na3), noarcf(1,na1), -1, -1,  0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             noar3,  ierr )
-      if( ierr .ne. 0 ) then
-         if( ierr .eq. 1 ) then
-            write(imprim,*) 'saturation des aretes (tableau nosoar)'
-         endif
-         nt = 0
-         return
-      endif
-c
-c     le triangle a ses 2 aretes na1 na2 sur le contour ferme
-c     ajout dans noartr de ce triangle nt
-      call trcf3a( noarcf(1,na1), noarcf(1,na2), noarcf(1,na3),
-     %             noarcf(3,na1), noarcf(3,na2), noar3,
-     %             mosoar, nosoar,
-     %             moartr, n1artr, noartr,
-     %             nt )
-      if( nt .le. 0 ) return
-c
-c     suppression des 2 aretes (na1 na2) du cf
-c     ces 2 aretes se suivent dans le chainage du cf
-c     ajout de la 3-eme arete  (noar3) dans le cf
-c     l'arete suivante de na1 devient la suivante de na2
-      noarcf(2,na1) = na3
-      noarcf(3,na1) = noar3
-c
-c     l'arete na2 devient vide dans noarcf
-      noarcf(2,na2) = n1arcf( 0 )
-      n1arcf( 0 )   = na2
-c
-c     la premiere pointee dans noarcf est na1
-c     chainage circulaire => ce peut etre n'importe laquelle
-      n1arcf(nbcf) = na1
-      end
-
-
-      subroutine trcf3a( ns1,    ns2,    ns3,
-     %                   noar1,  noar2,  noar3,
-     %                   mosoar, nosoar,
-     %                   moartr, n1artr, noartr,
-     %                   nt )
-c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    ajouter dans le tableau noartr le triangle
-c -----    de sommets ns1   ns2   ns3
-c          d'aretes   noar1 noar2 noar3 deja existantes
-c                     dans le tableau nosoar des aretes
-c
-c entrees:
-c --------
-c ns1,  ns2,  ns3   : le numero dans pxyd   des 3 sommets du triangle
-c noar1,noar2,noar3 : le numero dans nosoar des 3 aretes  du triangle
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies :
-c ----------
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c sorties:
-c --------
-c nt     : numero dans noartr du triangle ajoute
-c          =0 si le tableau noartr est sature
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      common / unites / lecteu,imprim,nunite(30)
-      integer           nosoar(mosoar,*),
-     %                  noartr(moartr,*)
-c
-c     recherche d'un triangle libre dans le tableau noartr
-      if( n1artr .le. 0 ) then
-         write(imprim,*) 'saturation du tableau noartr des aretes'
-         nt = 0
-         return
-      endif
-c
-c     le numero dans noartr du nouveau triangle
-      nt = n1artr
-c
-c     le nouveau premier triangle vide dans le tableau noartr
-      n1artr = noartr(2,n1artr)
-c
-c     arete 1 du triangle nt
-c     ======================
-c     orientation des 3 aretes du triangle pour qu'il soit direct
-      if( ns1 .eq. nosoar(1,noar1) ) then
-         n =  1
-      else
-         n = -1
-      endif
-c     le numero de l'arete 1 du triangle nt
-      noartr(1,nt) = n * noar1
-c
-c     le numero du triangle nt pour l'arete
-      if( nosoar(4,noar1) .le. 0 ) then
-         n = 4
-      else
-         n = 5
-      endif
-      nosoar(n,noar1) = nt
-c
-c     arete 2 du triangle nt
-c     ======================
-c     orientation des 3 aretes du triangle pour qu'il soit direct
-      if( ns2 .eq. nosoar(1,noar2) ) then
-         n =  1
-      else
-         n = -1
-      endif
-c     le numero de l'arete 2 du triangle nt
-      noartr(2,nt) = n * noar2
-c
-c     le numero du triangle nt pour l'arete
-      if( nosoar(4,noar2) .le. 0 ) then
-         n = 4
-      else
-         n = 5
-      endif
-      nosoar(n,noar2) = nt
-c
-c     arete 3 du triangle nt
-c     ======================
-c     orientation des 3 aretes du triangle pour qu'il soit direct
-      if( ns3 .eq. nosoar(1,noar3) ) then
-         n =  1
-      else
-         n = -1
-      endif
-c     le numero de l'arete 3 du triangle nt
-      noartr(3,nt) = n * noar3
-c
-c     le numero du triangle nt pour l'arete
-      if( nosoar(4,noar3) .le. 0 ) then
-         n = 4
-      else
-         n = 5
-      endif
-      nosoar(n,noar3) = nt
-      end
-
-
-
-      subroutine trcf3s( nbcf,   na01,   na1,    na02,  na2, na03, na3,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, n1artr, noartr, noarst,
-     %                   mxarcf, n1arcf, noarcf, nt )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :     ajout d'un triangle d'aretes na1 2 3 du tableau noarcf
-c -----     a la triangulation d'un contour ferme (cf)
-c
-c entrees:
-c --------
-c nbcf    : numero dans n1arcf du cf traite ici
-c           mais aussi nombre actuel de cf avant ajout du triangle
-c na01    : numero noarcf de l'arete precedent l'arete na1 de noarcf
-c na1     : numero noarcf du 1-er sommet du triangle
-c na02    : numero noarcf de l'arete precedent l'arete na2 de noarcf
-c na2     : numero noarcf du 2-eme sommet du triangle
-c na03    : numero noarcf de l'arete precedent l'arete na3 de noarcf
-c na3     : numero noarcf du 3-eme sommet du triangle
-c
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxarcf : nombre maximal d'aretes declarables dans noarcf, n1arcf
-c
-c modifies:
-c ---------
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(i) numero d'une arete de sommet i
-c
-c n1arcf : numero d'une arete de chaque contour ferme
-c noarcf : numero du sommet , numero de l'arete suivante
-c          numero de l'arete dans le tableau nosoar
-c          attention : chainage circulaire des aretes
-c
-c sortie :
-c --------
-c nbcf   : nombre actuel de cf apres ajout du triangle
-c nt     : numero du triangle ajoute dans noartr
-c          0 si saturation du tableau nosoar ou noartr ou noarcf ou n1arcf
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      integer        nosoar(mosoar,*),
-     %               noartr(moartr,*),
-     %               noarst(*),
-     %               n1arcf(0:mxarcf),
-     %               noarcf(3,mxarcf)
-c
-c     combien y a t il d'aretes nbascf sur le cf ?
-c     ============================================
-c     la premiere arete est elle sur le cf?
-      if( noarcf(2,na1) .eq. na2 ) then
-c        la 1-ere arete est sur le cf
-         na1cf  = 1
-      else
-c        la 1-ere arete n'est pas sur le cf
-         na1cf  = 0
-      endif
-c
-c     la seconde arete est elle sur le cf?
-      if( noarcf(2,na2) .eq. na3 ) then
-c        la 2-eme arete est sur le cf
-         na2cf = 1
-      else
-         na2cf = 0
-      endif
-c
-c     la troisieme arete est elle sur le cf?
-      if( noarcf(2,na3) .eq. na1 ) then
-c        la 3-eme arete est sur le cf
-         na3cf = 1
-      else
-         na3cf = 0
-      endif
-c
-c     le nombre d'aretes sur le cf
-      nbascf = na1cf + na2cf + na3cf
-c
-c     traitement selon le nombre d'aretes sur le cf
-c     =============================================
-      if( nbascf .eq. 3 ) then
-c
-c        le contour ferme se reduit a un triangle avec 3 aretes sur le cf
-c        ----------------------------------------------------------------
-c        ajout dans noartr de ce nouveau triangle
-         call trcf3a( noarcf(1,na1), noarcf(1,na2), noarcf(1,na3),
-     %                noarcf(3,na1), noarcf(3,na2), noarcf(3,na3),
-     %                mosoar, nosoar,
-     %                moartr, n1artr, noartr,
-     %                nt )
-         if( nt .le. 0 ) return
-c
-c        le cf est supprime et chaine vide
-         noarcf(2,na3) = n1arcf(0)
-         n1arcf( 0 )   = na1
-c
-c        ce cf a ete traite => un cf de moins a traiter
-         nbcf = nbcf - 1
-c
-      else if( nbascf .eq. 2 ) then
-c
-c        le triangle a 2 aretes sur le contour
-c        -------------------------------------
-c        les 2 aretes sont la 1-ere et 2-eme du triangle
-         if( na1cf .eq. 0 ) then
-c           l'arete 1 n'est pas sur le cf
-            naa1 = na2
-         else if( na2cf .eq. 0 ) then
-c           l'arete 2 n'est pas sur le cf
-            naa1 = na3
-         else
-c           l'arete 3 n'est pas sur le cf
-            naa1 = na1
-         endif
-c        le triangle oppose a l'arete 3 est inconnu
-c        modification du contour apres integration du
-c        triangle ayant ses 2-eres aretes sur le cf
-         call trcf2a( nbcf,   naa1,   naor3,
-     %                mosoar, mxsoar, n1soar, nosoar,
-     %                moartr, n1artr, noartr, noarst,
-     %                n1arcf, noarcf, nt )
-c
-      else if( nbascf .eq. 1 ) then
-c
-c        le triangle a 1 arete sur le contour
-c        ------------------------------------
-c        cette arete est la seconde du triangle
-         if( na3cf .ne. 0 ) then
-c           l'arete 3 est sur le cf
-            naa01 = na02
-            naa1  = na2
-            naa2  = na3
-         else if( na1cf .ne. 0 ) then
-c           l'arete 1 est sur le cf
-            naa01 = na03
-            naa1  = na3
-            naa2  = na1
-         else
-c           l'arete 2 est sur le cf
-            naa01 = na01
-            naa1  = na1
-            naa2  = na2
-         endif
-c        le triangle oppose a l'arete 1 et 3 est inconnu
-c        modification du contour apres integration du
-c        triangle ayant 1 arete sur le cf avec creation
-c        d'un nouveau contour ferme
-         call trcf1a( nbcf, naa01, naa1, naa2, naor1, naor3,
-     %                mosoar, mxsoar, n1soar, nosoar,
-     %                moartr, n1artr, noartr, noarst,
-     %                mxarcf, n1arcf, noarcf, nt )
-c
-      else
-c
-c        le triangle a 0 arete sur le contour
-c        ------------------------------------
-c        modification du contour apres integration du
-c        triangle ayant 0 arete sur le cf avec creation
-c        de 2 nouveaux contours fermes
-         call trcf0a( nbcf, na01,  na1, na2, na3,
-     %                naa1, naa2, naa01,
-     %                mosoar, mxsoar, n1soar, nosoar,
-     %                moartr, n1artr, noartr, noarst,
-     %                mxarcf, n1arcf, noarcf, nt )
-      endif
-      end
-
-
-      subroutine tridcf( nbcf0,  nbstpe, nostpe, pxyd,   noarst,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, n1artr, noartr,
-     %                   mxarcf, n1arcf, noarcf, larmin,
-     %                   nbtrcf, notrcf, ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    triangulation directe de nbcf0 contours fermes (cf)
-c -----    definis par la liste circulaire de leurs aretes peripheriques
-c          avec integration de nbstpe sommets isoles a l'un des cf initiaux
-c
-c entrees:
-c --------
-c nbcf0  : nombre initial de cf a trianguler
-c nbstpe : nombre de sommets isoles a l'interieur des cf et
-c          a devenir sommets de la triangulation
-c nostpe : numero dans pxyd des nbstpe sommets isoles
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxarcf  : nombre maximal d'aretes declarables dans noarcf, n1arcf, larmin, not
-c
-c modifies:
-c ---------
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c n1arcf : numero de la premiere arete de chacun des nbcf0 cf
-c          n1arcf(0)   no de la premiere arete vide du tableau noarcf
-c          noarcf(2,i) no de l'arete suivante
-c noarcf : numero du sommet , numero de l'arete suivante du cf
-c          numero de l'arete dans le tableau nosoar
-c
-c auxiliaires :
-c -------------
-c larmin : tableau (mxarcf)   auxiliaire
-c          stocker la liste des numeros des meilleures aretes
-c          lors de la selection du meilleur sommet du cf a trianguler
-c          cf le sp trchtd
-c
-c sortie :
-c --------
-c nbtrcf : nombre de  triangles des nbcf0 cf
-c notrcf : numero des triangles des nbcf0 cf dans le tableau noartr
-c ierr   : 0 si pas d'erreur
-c          2 saturation de l'un des des tableaux nosoar, noartr, ...
-c          3 si contour ferme reduit a moins de 3 aretes
-c          4 saturation du tableau notrcf
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    mars    1997
-c modifs : alain perronnet laboratoire jl lions upmc paris  octobre 2006
-c....................................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      integer           nostpe(nbstpe),
-     %                  noartr(moartr,*),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noarst(*),
-     %                  n1arcf(0:mxarcf),
-     %                  noarcf(3,mxarcf),
-     %                  larmin(mxarcf),
-     %                  notrcf(mxarcf)
-c
-      integer           nosotr(3)
-      double precision  d, diptdr, surtd2, dmin, s
-c
-c     depart avec nbcf0 cf a trianguler
-      nbcf   = nbcf0
-c
-c     le nombre de triangles formes dans l'ensemble des cf
-      nbtrcf = 0
-c
-c     le nombre restant de sommets isoles a integrer au cf
-      nbstp = nbstpe
-c
- 1    if( nbstp .le. 0 ) goto 10
-c
-c     il existe au moins un sommet isole
-c     recherche d'un cf dont la premiere arete forme un triangle
-c     d'aire>0 avec un sommet isole et recherche du sommet isole
-c     le plus proche de cette arete
-c     ==========================================================
-      imin = 0
-      dmin = 1d123
-      do 6 ncf=1,nbcf
-c        le cf en haut de pile a pour arete avant la premiere arete
-         na1 = n1arcf( ncf )
-         na2 = na1
-c        recherche de l'arete qui precede la premiere arete
- 2       if( noarcf( 2, na2 ) .ne. na1 ) then
-            na2 = noarcf( 2, na2 )
-            goto 2
-         endif
-c        l'arete na0 dans noarcf qui precede n1arcf( ncf )
-         na0 = na2
-c        la premiere arete du cf
-         na1   = noarcf( 2, na0 )
-c        son numero dans nosoar
-         noar1 = noarcf( 3, na1 )
-c        l'arete suivante
-         na2   = noarcf( 2, na1 )
-c        le no pxyd des 2 sommets de l'arete na1
-         ns1   = noarcf( 1, na1 )
-         ns2   = noarcf( 1, na2  )
-         do 3 i=1,nbstpe
-c           le sommet isole ns3
-            ns3 = nostpe( i )
-            if( ns3 .le. 0 ) goto 3
-c           aire du triangle arete na1 et sommet ns3
-            d = surtd2( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3) )
-            if( d .gt. 0d0 ) then
-c              distance de ce sommet ns3 a l'arete na1
-               d = diptdr( pxyd(1,ns3),  pxyd(1,ns1), pxyd(1,ns2) )
-               if( d .lt. dmin ) then
-                  dmin = d
-                  imin = i
-               endif
-            endif
- 3       continue
-         if( imin .gt. 0 ) then
-c           le sommet imin de nostpe est a distance minimale de
-c           la premiere arete du cf de numero ncf
-c           la formation de l'arete ns2-ns3 dans le tableau nosoar
-            call fasoar( ns2, ns3, -1, -1,  0,
-     %                   mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                   noar2,  ierr )
-            if( ierr .ne. 0 ) goto 9900
-c           la formation de l'arete ns3-ns1 dans le tableau nosoar
-            call fasoar( ns3, ns1, -1, -1,  0,
-     %                   mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                   noar3,  ierr )
-            if( ierr .ne. 0 ) goto 9900
-c
-c           ajout dans noartr du triangle de sommets ns1 ns2 ns3
-c           et d'aretes na1, noar2, noar3 dans nosoar
-            call trcf3a( ns1,   ns2,   ns3,
-     %                   noar1, noar2, noar3,
-     %                   mosoar, nosoar,
-     %                   moartr, n1artr, noartr,
-     %                   nt )
-            s = surtd2( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3) )
-            if( s .le. 0 ) then
-               write(imprim,*)'tridcf: trcf3a produit tr',nt,' st',
-     %                         ns1,ns2,ns3
-               write(imprim,*)'tridcf: triangle AIRE<0'
-            endif
-            if( nt .le. 0 ) then
-               ierr = 7
-               return
-            endif
-            if( nbtrcf .ge. mxarcf ) then
-               write(imprim,*) 'saturation du tableau notrcf'
-               ierr = 8
-               return
-            endif
-            nbtrcf = nbtrcf + 1
-            notrcf( nbtrcf ) = nt
-c
-c           modification du cf. creation d'une arete dans noarcf
-            na12 = n1arcf(0)
-            if( na12 .le. 0 ) then
-               write(imprim,*) 'saturation du tableau noarcf'
-               ierr = 10
-               return
-            endif
-c           la 1-ere arete vide de noarcf est mise a jour
-            n1arcf(0) = noarcf( 2, na12 )
-c
-c           l'arete suivante de na0
-            noarcf( 1, na1 ) = ns1
-            noarcf( 2, na1 ) = na12
-            noarcf( 3, na1 ) = noar3
-c           l'arete suivante de na1
-            noarcf( 1, na12 ) = ns3
-            noarcf( 2, na12 ) = na2
-            noarcf( 3, na12 ) = noar2
-c
-c           un sommet isole traite
-            nbstp = nbstp - 1
-            nostpe( imin ) = - nostpe( imin )
-            goto 1
-         endif
-c
- 6    continue
-c
-      if( imin .eq. 0 ) then
-         write(imprim,*) 'tridcf: il reste',nbstp,
-     %                   ' sommets isoles non triangules'
-         write(imprim,*) 'ameliorer l''algorithme'
-ccc         pause
-         ierr = 9
-         return
-      endif
-c
-c     tant qu'il existe un cf a trianguler faire
-c     la triangulation directe du cf
-c     ==========================================
- 10   if( nbcf .gt. 0 ) then
-c
-c        le cf en haut de pile a pour premiere arete
-         na01 = n1arcf( nbcf )
-         na1  = noarcf( 2, na01 )
-c
-c        choix du sommet du cf a relier a l'arete na1
-c        --------------------------------------------
-         call trchtd( pxyd, na01, na1, noarcf,
-     %                na03, na3,  larmin )
-         if( na3 .eq. 0 ) then
-            ierr = 3
-            return
-         endif
-c
-c        l'arete suivante de na1
-         na02 = na1
-         na2  = noarcf( 2, na1 )
-c
-c        formation du triangle arete na1 - sommet noarcf(1,na3)
-c        ------------------------------------------------------
-         call trcf3s( nbcf,   na01, na1, na02, na2, na03, na3,
-     %                mosoar, mxsoar, n1soar, nosoar,
-     %                moartr, n1artr, noartr, noarst,
-     %                mxarcf, n1arcf, noarcf, nt )
-         if( nt .le. 0 ) then
-c           saturation du tableau noartr ou noarcf ou n1arcf
-            ierr = 2
-            return
-         endif
-         call nusotr( nt, mosoar, nosoar, moartr, noartr, nosotr)
-         s = surtd2( pxyd(1,nosotr(1)),
-     %               pxyd(1,nosotr(2)),
-     %               pxyd(1,nosotr(3)) )
-         if( s .le. 0 ) then
-            write(imprim,*)'tridcf: trcf3s produit tr',nt,' st',nosotr
-            write(imprim,*)'tridcf: triangle AIRE<0'
-         endif
-c
-c        ajout du triangle cree a sa pile
-         if( nbtrcf .ge. mxarcf ) then
-            write(imprim,*) 'saturation du tableau notrcf'
-            ierr = 4
-            return
-         endif
-         nbtrcf = nbtrcf + 1
-         notrcf( nbtrcf ) = nt
-         goto 10
-      endif
-c
-c     mise a jour du chainage des triangles des aretes
-c     ================================================
-      do 30 ntp0 = 1, nbtrcf
-c
-c        le numero du triangle ajoute dans le tableau noartr
-         nt0 = notrcf( ntp0 )
-c
-c        boucle sur les 3 aretes du triangle nt0
-         do 20 i=1,3
-c
-c           le numero de l'arete i du triangle dans le tableau nosoar
-            noar = abs( noartr(i,nt0) )
-c
-c           ce triangle est il deja chaine dans cette arete?
-            nt1 = nosoar(4,noar)
-            nt2 = nosoar(5,noar)
-            if( nt1 .eq. nt0 .or. nt2 .eq. nt0 ) goto 20
-c
-c           ajout de ce triangle nt0 a l'arete noar
-            if( nt1 .le. 0 ) then
-c               le triangle est ajoute a l'arete
-                nosoar( 4, noar ) = nt0
-            else if( nt2 .le. 0 ) then
-c               le triangle est ajoute a l'arete
-                nosoar( 5, noar ) = nt0
-            else
-c              l'arete appartient a 2 triangles differents de nt0
-c              anomalie. chainage des triangles des aretes defectueux
-c              a corriger
-               write(imprim,*) 'tridcf: erreur 1 arete dans 3 triangles'
-               write(imprim,*) 'tridcf: arete nosoar(',noar,')=',
-     %                          (nosoar(k,noar),k=1,mosoar)
-               call nusotr( nt0, mosoar, nosoar, moartr, noartr, nosotr)
-               write(imprim,*) 'tridcf: triangle nt0=',nt0,' st:',
-     %                          (nosotr(k),k=1,3)
-               call nusotr( nt1, mosoar, nosoar, moartr, noartr, nosotr)
-               write(imprim,*) 'tridcf: triangle nt1=',nt1,' st:',
-     %                          (nosotr(k),k=1,3)
-               call nusotr( nt2, mosoar, nosoar, moartr, noartr, nosotr)
-               write(imprim,*) 'tridcf: triangle nt2=',nt2,' st:',
-     %                          (nosotr(k),k=1,3)
-ccc               pause
-               ierr = 5
-               return
-            endif
-c
- 20      continue
-c
- 30   continue
-      return
-c
-c     erreur tableau nosoar sature
- 9900 write(imprim,*) 'saturation du tableau nosoar'
-      ierr = 6
-      return
-      end
-
-      subroutine te1stm( nsasup, nbarpi, pxyd,   noarst,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   mxarcf, n1arcf, noarcf, larmin, notrcf, liarcf,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    supprimer de la triangulation le sommet nsasup qui doit
-c -----    etre un sommet interne ("centre" d'une boule de triangles)
-c
-c          attention: le chainage lchain de nosoar devient celui des cf
-c
-c entrees:
-c --------
-c nsasup : numero dans le tableau pxyd du sommet a supprimer
-c nbarpi : numero du dernier sommet frontalier ou interne impose
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxarcf : nombre de variables des tableaux n1arcf, noarcf, larmin, notrcf
-c
-c modifies:
-c ---------
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c
-c auxiliaires :
-c -------------
-c n1arcf : tableau (0:mxarcf) auxiliaire d'entiers
-c noarcf : tableau (3,mxarcf) auxiliaire d'entiers
-c larmin : tableau ( mxarcf ) auxiliaire d'entiers
-c notrcf : tableau ( mxarcf ) auxiliaire d'entiers
-c liarcf : tableau ( mxarcf ) auxiliaire d'entiers
-c
-c sortie :
-c --------
-c ierr   : =0 si pas d'erreur
-c          -1 le sommet a supprimer n'est pas le centre d'une boule
-c             de triangles. il est suppose externe
-c             ou bien le sommet est centre d'un cf dont toutes les
-c             aretes sont frontalieres
-c             dans les 2 cas => retour sans modifs
-c          >0 si une erreur est survenue
-c          =11 algorithme defaillant
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      parameter       ( lchain=6, mxstpe=512)
-      common / unites / lecteu,imprim,intera,nunite(29)
-      double precision  pxyd(3,*), s0, s1, surtd2, s
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*),
-     %                  n1arcf(0:mxarcf),
-     %                  noarcf(3,mxarcf),
-     %                  larmin(mxarcf),
-     %                  notrcf(mxarcf),
-     %                  liarcf(mxarcf),
-     %                  nostpe(mxstpe),
-     %                  nosotr(3)
-c
-      if( nsasup .le. nbarpi ) then
-c        sommet frontalier non destructible
-         ierr = -1
-         return
-      endif
-      ierr = 0
-c
-c     nsasup est il un sommet interne, "centre" d'une boule de triangles?
-c     => le sommet nsasup peut etre supprime
-c     ===================================================================
-c     formation du cf de ''centre'' le sommet nsasup
-      call trp1st( nsasup, noarst, mosoar, nosoar,
-     %             moartr, mxartr, noartr,
-     %             mxarcf, nbtrcf, notrcf )
-c
-      if( nbtrcf .le. 2 ) then
-c        erreur: impossible de trouver tous les triangles de sommet nsasup
-c        ou pas assez de triangles de sommet nsasup
-c        le sommet nsasup n'est pas supprime de la triangulation
-         ierr = -1
-         return
-      endif
-c
-      if( nbtrcf*3 .gt. mxarcf ) then
-         write(imprim,*) 'saturation du tableau noarcf'
-         ierr = 10
-         return
-      endif
-c
-c     si toutes les aretes du cf sont frontalieres, alors il est
-c     interdit de detruire le sommet "centre" du cf
-c     calcul du nombre nbarfr des aretes simples des nbtrcf triangles
-      call trfrcf( nsasup, mosoar, nosoar, moartr, noartr,
-     %             nbtrcf, notrcf, nbarfr )
-      if( nbarfr .ge. nbtrcf ) then
-c        toutes les aretes simples sont frontalieres
-c        le sommet nsasup ("centre" de la cavite) n'est pas supprime
-         ierr = -1
-         return
-      endif
-c
-c     calcul des surfaces avant suppression du point
-      s0 = 0d0
-      do 10 i=1,nbtrcf
-         nt = notrcf(i)
-c        les numeros des 3 sommets du triangle nt
-         call nusotr( nt, mosoar, nosoar, moartr, noartr, nosotr )
-         s = surtd2( pxyd(1,nosotr(1)),
-     %               pxyd(1,nosotr(2)),
-     %               pxyd(1,nosotr(3)) )
-         s0 = s0 + abs( s )
- 10   continue
-c
-c     formation du contour ferme (liste chainee des aretes simples)
-c     forme a partir des aretes des triangles de l'etoile du sommet nsasup
-c     les aretes doubles sont detruites
-c     les triangles du cf sont detruits
-      call focftr( nbtrcf, notrcf, nbarpi, pxyd,   noarst,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, n1artr, noartr,
-     %             nbarcf, n1arcf, noarcf, nbstpe, nostpe,
-     %             ierr )
-      if( ierr .ne. 0 ) then
-c        modification de ierr pour continuer le calcul
-         ierr = -543
-         return
-      endif
-c
-c     ici le sommet nsasup n'appartient plus a aucune arete
-      noarst( nsasup ) = 0
-c
-c     chainage des aretes vides dans le tableau noarcf
-      n1arcf(0) = nbarcf+1
-      mmarcf = min(8*nbarcf,mxarcf)
-      do 40 i=nbarcf+1,mmarcf
-         noarcf(2,i) = i+1
- 40   continue
-      noarcf(2,mmarcf) = 0
-c
-c     sauvegarde du chainage des aretes peripheriques
-c     pour la mise en delaunay du maillage
-      nbcf = n1arcf(1)
-      do 50 i=1,nbarcf
-c        le numero de l'arete dans le tableau nosoar
-         liarcf( i ) = noarcf( 3, nbcf )
-c        l'arete suivante dans le cf
-         nbcf = noarcf( 2, nbcf )
- 50   continue
-c
-c     triangulation directe du contour ferme sans le sommet nsasup
-c     ============================================================
-      nbcf = 1
-      call tridcf( nbcf,   nbstpe, nostpe, pxyd,   noarst,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, n1artr, noartr,
-     %             mxarcf, n1arcf, noarcf, larmin,
-     %             nbtrcf, notrcf, ierr )
-      if( ierr .ne. 0 ) return
-c     calcul des surfaces apres suppression du point
-      s1 = 0d0
-      do 55 i=1,nbtrcf
-         nt = notrcf(i)
-c        les numeros des 3 sommets du triangle nt
-         call nusotr( nt, mosoar, nosoar, moartr, noartr, nosotr )
-         s = surtd2( pxyd(1,nosotr(1)),
-     %               pxyd(1,nosotr(2)),
-     %               pxyd(1,nosotr(3)) )
-         if( s .le. 0 ) then
-            write(imprim,*)'te1stm: apres tridcf le triangle',nt,
-     %                     ' st',nosotr,' AIRE<0'
-         endif
-         s1 = s1 + abs( s )
- 55   continue
-c
-      if( abs(s0-s1) .gt. 1d-10*s0 ) then
-      write(imprim,*)
-      write(imprim,*)'te1stm: difference des aires lors suppression st',
-     %   nsasup
-      write(imprim,10055) s0, s1
-10055 format('aire0=',d25.16,' aire1=',d25.16)
-      endif
-c
-c     transformation des triangles du cf en triangles delaunay
-c     ========================================================
-c     construction du chainage lchain dans nosoar
-c     des aretes peripheriques du cf a partir de la sauvegarde liarcf
-      noar0 = liarcf(1)
-      do 60 i=2,nbarcf
-c        le numero de l'arete peripherique du cf dans nosoar
-         noar = liarcf( i )
-         if( nosoar(3,noar) .le. 0 ) then
-c           arete interne => elle est chainee a partir de la precedente
-            nosoar( lchain, noar0 ) = noar
-            noar0 = noar
-         endif
- 60   continue
-c     la derniere arete peripherique n'a pas de suivante
-      nosoar(lchain,noar0) = 0
-c
-c     mise en delaunay des aretes chainees
-      call tedela( pxyd,   noarst,
-     %             mosoar, mxsoar, n1soar, nosoar, liarcf(1),
-     %             moartr, mxartr, n1artr, noartr, modifs )
-      return
-      end
-
-
-      subroutine tr3str( np,     nt,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   noarst, nutr,   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former les 3 sous-triangles du triangle nt a partir
-c -----    du point interne np
-c
-c entrees:
-c --------
-c np     : numero dans le tableau pxyd du point
-c nt     : numero dans le tableau noartr du triangle a trianguler
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles, chainages
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c          hachage des aretes = (nosoar(1)+nosoar(2)) modulo mxsoar
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(i) numero d'une arete de sommet i
-c
-c sorties:
-c --------
-c nutr   : le numero des 3 sous-triangles du triangle nt
-c nt     : en sortie le triangle initial n'est plus actif dans noartr
-c          c'est en fait le premier triangle vide de noartr
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si le tableau noartr est sature
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      integer    nosoar(mosoar,mxsoar),
-     %           noartr(moartr,mxartr),
-     %           noarst(*),
-     %           nutr(3)
-c
-      integer    nosotr(3), nu2sar(2), nuarco(3)
-c
-c     reservation des 3 nouveaux triangles dans le tableau noartr
-c     ===========================================================
-      do 10 i=1,3
-c        le numero du sous-triangle i dans le tableau noartr
-         if( n1artr .le. 0 ) then
-c           tableau noartr sature
-            ierr = 2
-            return
-         endif
-         nutr(i) = n1artr
-c        le nouveau premier triangle libre dans noartr
-         n1artr = noartr(2,n1artr)
- 10   continue
-c
-c     les numeros des 3 sommets du triangle nt
-      call nusotr( nt, mosoar, nosoar, moartr, noartr, nosotr )
-c
-c     formation des 3 aretes nosotr(i)-np dans le tableau nosoar
-c     ==========================================================
-      nt0 = nutr(3)
-      do 20 i=1,3
-c
-c        le triangle a creer
-         nti = nutr(i)
-c
-c        les 2 sommets du cote i du triangle nosotr
-         nu2sar(1) = nosotr(i)
-         nu2sar(2) = np
-         call hasoar( mosoar, mxsoar, n1soar, nosoar, nu2sar, noar )
-c        en sortie: noar>0 => no arete retrouvee
-c                       <0 => no arete ajoutee
-c                       =0 => saturation du tableau nosoar
-c
-         if( noar .eq. 0 ) then
-c           saturation du tableau nosoar
-            ierr = 1
-            return
-         else if( noar .lt. 0 ) then
-c           l'arete a ete ajoutee. initialisation des autres informations
-            noar = -noar
-c           le numero des 2 sommets a ete initialise par hasoar
-c           et (nosoar(1,noar)<nosoar(2,noar))
-c           le numero de la ligne de l'arete: ici arete interne
-            nosoar(3,noar) = 0
-c        else
-c           l'arete a ete retrouvee
-c           le numero des 2 sommets a ete retrouve par hasoar
-c           et (nosoar(1,noar)<nosoar(2,noar))
-c           le numero de ligne reste inchange
-         endif
-c
-c        le triangle 1 de l'arete noar => le triangle nt0
-         nosoar(4,noar) = nt0
-c        le triangle 2 de l'arete noar => le triangle nti
-         nosoar(5,noar) = nti
-c
-c        le sommet nosotr(i) appartient a l'arete noar
-         noarst( nosotr(i) ) = noar
-c
-c        le numero d'arete nosotr(i)-np
-         nuarco(i) = noar
-c
-c        le triangle qui precede le suivant
-         nt0 = nti
- 20   continue
-c
-c     le numero d'une arete du point np
-      noarst( np ) = noar
-c
-c     les 3 sous-triangles du triangle nt sont formes dans le tableau noartr
-c     ======================================================================
-      do 30 i=1,3
-c
-c        le numero suivant i => i mod 3 + 1
-         if( i .ne. 3 ) then
-            i1 = i + 1
-         else
-            i1 = 1
-         endif
-c
-c        le numero dans noartr du sous-triangle a ajouter
-         nti = nutr( i )
-c
-c        le numero de l'arete i du triangle initial nt
-c        est l'arete 1 du sous-triangle i
-         noar = noartr(i,nt)
-         noartr( 1, nti ) = noar
-c
-c        mise a jour du numero de triangle de cette arete
-         noar = abs( noar )
-         if( nosoar(4,noar) .eq. nt ) then
-c           le sous-triangle nti remplace le triangle nt
-            nosoar(4,noar) = nti
-         else
-c           le sous-triangle nti remplace le triangle nt
-            nosoar(5,noar) = nti
-         endif
-c
-c        l'arete 2 du sous-triangle i est l'arete i1 ajoutee
-         if( nosotr(i1) .eq. nosoar(1,nuarco(i1)) ) then
-c           l'arete ns i1-np dans nosoar est dans le sens direct
-            noartr( 2, nti ) = nuarco(i1)
-         else
-c           l'arete ns i1-np dans nosoar est dans le sens indirect
-            noartr( 2, nti ) = -nuarco(i1)
-         endif
-c
-c        l'arete 3 du sous-triangle i est l'arete i ajoutee
-         if( nosotr(i) .eq. nosoar(1,nuarco(i)) ) then
-c           l'arete ns i1-np dans nosoar est dans le sens indirect
-            noartr( 3, nti ) = -nuarco(i)
-         else
-c           l'arete ns i1-np dans nosoar est dans le sens direct
-            noartr( 3, nti ) = nuarco(i)
-         endif
- 30   continue
-c
-c     le triangle nt est rendu libre
-c     ==============================
-c     il devient n1artr le premier triangle libre
-      noartr( 1, nt ) = 0
-      noartr( 2, nt ) = n1artr
-      n1artr = nt
-      end
-
-
-      subroutine mt4sqa( na,  moartr, noartr, mosoar, nosoar,
-     %                   ns1, ns2, ns3, ns4)
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    calcul du numero des 4 sommets de l'arete na de nosoar
-c -----    formant un quadrangle
-c
-c entrees:
-c --------
-c na     : numero de l'arete dans nosoar a traiter
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1=0 si triangle vide => arete2=triangle vide suivant
-c mosoar : nombre maximal d'entiers par arete
-c nosoar : numero des 2 sommets , no ligne, 2 triangles, chainages en +
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c
-c sorties:
-c --------
-c ns1,ns2,ns3 : les 3 numeros des sommets du triangle t1 en sens direct
-c ns1,ns4,ns2 : les 3 numeros des sommets du triangle t2 en sens direct
-c
-c si erreur rencontree => ns4 = 0
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      integer           noartr(moartr,*), nosoar(mosoar,*)
-c
-c     le numero de triangle est il correct  ?
-c     a supprimer apres mise au point
-      if( na .le. 0 ) then
-c         nblgrc(nrerr) = 1
-c         write(kerr(mxlger)(1:6),'(i6)') na
-c         kerr(1) = kerr(mxlger)(1:6) //
-c     %           ' no incorrect arete dans nosoar'
-c         call lereur
-          write(imprim,*) na, ' no incorrect arete dans nosoar'
-         ns4 = 0
-         return
-      endif
-c
-      if( nosoar(1,na) .le. 0 ) then
-c         nblgrc(nrerr) = 1
-c         write(kerr(mxlger)(1:6),'(i6)') na
-c         kerr(1) = kerr(mxlger)(1:6) //
-c     %           ' arete non active dans nosoar'
-c         call lereur
-         write(imprim,*) na, ' arete non active dans nosoar'
-         ns4 = 0
-         return
-      endif
-c
-c     recherche de l'arete na dans le premier triangle
-      nt = nosoar(4,na)
-      if( nt .le. 0 ) then
-c         nblgrc(nrerr) = 1
-c         write(kerr(mxlger)(1:6),'(i6)') na
-c         kerr(1) =  'triangle 1 incorrect pour l''arete ' //
-c     %               kerr(mxlger)(1:6)
-c         call lereur
-         write(imprim,*) 'triangle 1 incorrect pour l''arete ', na
-         ns4 = 0
-         return
-      endif
-c
-      do 5 i=1,3
-         if( abs( noartr(i,nt) ) .eq. na ) goto 8
- 5    continue
-c     si arrivee ici => bogue avant
-      write(imprim,*) 'mt4sqa: arete',na,' non dans le triangle',nt
-      ns4 = 0
-      return
-c
-c     les 2 sommets de l'arete na
- 8    if( noartr(i,nt) .gt. 0 ) then
-         ns1 = 1
-         ns2 = 2
-      else
-         ns1 = 2
-         ns2 = 1
-      endif
-      ns1 = nosoar(ns1,na)
-      ns2 = nosoar(ns2,na)
-c
-c     l'arete suivante
-      if( i .lt. 3 ) then
-         i = i + 1
-      else
-         i = 1
-      endif
-      naa = abs( noartr(i,nt) )
-c
-c     le sommet ns3 du triangle 123
-      ns3 = nosoar(1,naa)
-      if( ns3 .eq. ns1 .or. ns3 .eq. ns2 ) then
-         ns3 = nosoar(2,naa)
-      endif
-c
-c     le triangle de l'autre cote de l'arete na
-c     =========================================
-      nt = nosoar(5,na)
-      if( nt .le. 0 ) then
-c         nblgrc(nrerr) = 1
-c         write(kerr(mxlger)(1:6),'(i6)') na
-c         kerr(1) =  'triangle 2 incorrect pour l''arete ' //
-c     %               kerr(mxlger)(1:6)
-c         call lereur
-          write(imprim,*) 'triangle 2 incorrect pour l''arete ',na
-         ns4 = 0
-         return
-      endif
-c
-c     le numero de l'arete naa du triangle nt
-      naa = abs( noartr(1,nt) )
-      if( naa .eq. na ) naa = abs( noartr(2,nt) )
-      ns4 = nosoar(1,naa)
-      if( ns4 .eq. ns1 .or. ns4 .eq. ns2 ) then
-         ns4 = nosoar(2,naa)
-      endif
-      end
-
-
-      subroutine te2t2t( noaret, mosoar, n1soar, nosoar, noarst,
-     %                   moartr, noartr, noar34 )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    echanger la diagonale des 2 triangles ayant en commun
-c -----    l'arete noaret du tableau nosoar si c'est possible
-c
-c entrees:
-c --------
-c noaret : numero de l'arete a echanger entre les 2 triangles
-c mosoar : nombre maximal d'entiers par arete
-c moartr : nombre maximal d'entiers par triangle
-c
-c modifies :
-c ----------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles, chainages en +
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c noarst : noarst(i) numero d'une arete de sommet i
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c sortie :
-c --------
-c noar34 : numero nosoar de la nouvelle arete diagonale
-c          0 si pas d'echange des aretes diagonales
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc      avril 1997
-c....................................................................012
-      common / unites / lecteu,imprim,intera,nunite(29)
-      integer     nosoar(mosoar,*),
-     %            noartr(moartr,*),
-     %            noarst(*)
-c
-c     une arete frontaliere ne peut etre echangee
-      noar34 = 0
-      if( nosoar(3,noaret) .gt. 0 ) return
-c
-c     les 4 sommets des 2 triangles ayant l'arete noaret en commun
-      call mt4sqa( noaret, moartr, noartr, mosoar, nosoar,
-     %             ns1, ns2, ns3, ns4)
-c     ns1,ns2,ns3 : les 3 numeros des sommets du triangle nt1 en sens direct
-c     ns1,ns4,ns2 : les 3 numeros des sommets du triangle nt2 en sens direct
-c
-c     recherche du numero de l'arete noaret dans le triangle nt1
-      nt1 = nosoar(4,noaret)
-      do 10 n1 = 1, 3
-         if( abs(noartr(n1,nt1)) .eq. noaret ) goto 15
- 10   continue
-c     impossible d'arriver ici sans bogue!
-      write(imprim,*) 'anomalie dans te2t2t 1'
-c
-c     l'arete de sommets 2 et 3
- 15   if( n1 .lt. 3 ) then
-         n2 = n1 + 1
-      else
-         n2 = 1
-      endif
-      na23 = noartr(n2,nt1)
-c
-c     l'arete de sommets 3 et 1
-      if( n2 .lt. 3 ) then
-         n3 = n2 + 1
-      else
-         n3 = 1
-      endif
-      na31 = noartr(n3,nt1)
-c
-c     recherche du numero de l'arete noaret dans le triangle nt2
-      nt2 = nosoar(5,noaret)
-      do 20 n1 = 1, 3
-         if( abs(noartr(n1,nt2)) .eq. noaret ) goto 25
- 20   continue
-c     impossible d'arriver ici sans bogue!
-      write(imprim,*) 'Anomalie dans te2t2t 2'
-c
-c     l'arete de sommets 1 et 4
- 25   if( n1 .lt. 3 ) then
-         n2 = n1 + 1
-      else
-         n2 = 1
-      endif
-      na14 = noartr(n2,nt2)
-c
-c     l'arete de sommets 4 et 2
-      if( n2 .lt. 3 ) then
-         n3 = n2 + 1
-      else
-         n3 = 1
-      endif
-      na42 = noartr(n3,nt2)
-c
-c     les triangles 123 142 deviennent 143 234
-c     ========================================
-c     ajout de l'arete ns3-ns4
-c     on evite l'affichage de l'erreur
-      ierr = -1
-      call fasoar( ns3,    ns4,    nt1,    nt2,    0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             noar34, ierr )
-      if( ierr .gt. 0 ) then
-c        ierr=1 si le tableau nosoar est sature
-c            =2 si arete a creer et appartenant a 2 triangles distincts
-c               des triangles nt1 et nt2
-c            =3 si arete appartenant a 2 triangles distincts
-c               differents des triangles nt1 et nt2
-c            =4 si arete appartenant a 2 triangles distincts
-c               dont le second n'est pas le triangle nt2
-c        => pas d'echange
-         noar34 = 0
-         return
-      endif
-c
-c     suppression de l'arete noaret
-      call sasoar( noaret, mosoar, mxsoar, n1soar, nosoar, noarst )
-c
-c     nt1 = triangle 143
-      noartr(1,nt1) =  na14
-c     sens de stockage de l'arete ns3-ns4 dans nosoar?
-      if( nosoar(1,noar34) .eq. ns3 ) then
-         n1 = -1
-      else
-         n1 =  1
-      endif
-      noartr(2,nt1) = noar34 * n1
-      noartr(3,nt1) = na31
-c
-c     nt2 = triangle 234
-      noartr(1,nt2) =  na23
-      noartr(2,nt2) = -noar34 * n1
-      noartr(3,nt2) =  na42
-c
-c     echange nt1 -> nt2 pour l'arete na23
-      na23 = abs( na23 )
-      if( nosoar(4,na23) .eq. nt1 ) then
-         n1 = 4
-      else
-         n1 = 5
-      endif
-      nosoar(n1,na23) = nt2
-c
-c     echange nt2 -> nt1 pour l'arete na14
-      na14 = abs( na14 )
-      if( nosoar(4,na14) .eq. nt2 ) then
-         n1 = 4
-      else
-         n1 = 5
-      endif
-      nosoar(n1,na14) = nt1
-c
-c     numero d'une arete de chacun des 4 sommets
-      noarst(ns1) = na14
-      noarst(ns2) = na23
-      noarst(ns3) = noar34
-      noarst(ns4) = noar34
-      end
-
-
-      subroutine f0trte( letree, pxyd,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   noarst,
-     %                   nbtr,   nutr,   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former le ou les triangles du triangle equilateral letree
-c -----    les points internes au te deviennent des sommets des
-c          sous-triangles du te
-c
-c entrees:
-c --------
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          si letree(0)>0 alors
-c             letree(0:3) : no (>0) letree des 4 sous-triangles du triangle j
-c          sinon
-c             letree(0:3) :-no pxyd des 1 a 4 points internes au triangle j
-c                           0  si pas de point
-c                         ( le te est une feuille de l'arbre )
-c          letree(4) : no letree du sur-triangle du triangle j
-c          letree(5) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8) : no pxyd des 3 sommets du triangle j
-c pxyd   : tableau des x  y  distance_souhaitee de chaque sommet
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = (nosoar(1)+nosoar(2)) modulo mxsoar
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(i) numero d'une arete de sommet i
-c
-c sorties:
-c --------
-c nbtr   : nombre de sous-triangles du te, triangulation du te
-c nutr   : numero des nbtr sous-triangles du te dans le tableau noartr
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si le tableau noartr est sature
-c          =3 si aucun des triangles ne contient l'un des points internes au te
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      integer           letree(0:8),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*),
-     %                  nutr(1:nbtr)
-      integer           nuarco(3)
-c
-c     le numero nt du triangle dans le tableau noartr
-      if( n1artr .le. 0 ) then
-c        tableau noartr sature
-         write(imprim,*) 'f0trte: tableau noartr sature'
-         ierr = 2
-         return
-      endif
-      nt = n1artr
-c     le numero du nouveau premier triangle libre dans noartr
-      n1artr = noartr( 2, n1artr )
-c
-c     formation du triangle = le triangle equilateral letree
-      do 10 i=1,3
-         if( i .ne. 3 ) then
-            i1 = i + 1
-         else
-            i1 = 1
-         endif
-c        ajout eventuel de l'arete si si+1 dans le tableau nosoar
-         call fasoar( letree(5+i), letree(5+i1), nt, -1, 0,
-     %                mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                nuarco(i), ierr )
-         if( ierr .ne. 0 ) return
- 10   continue
-c
-c     le triangle nt est forme dans le tableau noartr
-      do 20 i=1,3
-c        letree(5+i) est le numero du sommet 1 de l'arete i du te
-         if( letree(5+i) .eq. nosoar(1,nuarco(i)) ) then
-            lesign =  1
-         else
-            lesign = -1
-         endif
-c        l'arete ns1-ns2 dans nosoar est celle du cote du te
-         noartr( i, nt ) = lesign * nuarco(i)
- 20   continue
-c
-c     triangulation du te=triangle nt par ajout des points internes du te
-      nbtr    = 1
-      nutr(1) = nt
-      call trpite( letree, pxyd,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, mxartr, n1artr, noartr, noarst,
-     %             nbtr,   nutr,   ierr )
-      end
-
-
-      subroutine f1trte( letree, pxyd,   milieu,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   noarst,
-     %                   nbtr,   nutr,   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former les triangles du triangle equilateral letree
-c -----    a partir de l'un des 3 milieux des cotes du te
-c          et des points internes au te
-c          ils deviennent tous des sommets des sous-triangles du te
-c
-c entrees:
-c --------
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          si letree(0)>0 alors
-c             letree(0:3) : no (>0) letree des 4 sous-triangles du triangle j
-c          sinon
-c             letree(0:3) :-no pxyd des 1 a 4 points internes au triangle j
-c                           0  si pas de point
-c                         ( le te est une feuille de l'arbre )
-c          letree(4) : no letree du sur-triangle du triangle j
-c          letree(5) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8) : no pxyd des 3 sommets du triangle j
-c pxyd   : tableau des x  y  distance_souhaitee de chaque sommet
-c milieu : milieu(i) numero dans pxyd du milieu de l'arete i du te
-c                    0 si pas de milieu du cote i a ajouter
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = (nosoar(1)+nosoar(2)) modulo mxsoar
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(np) numero d'une arete du sommet np
-c
-c sorties:
-c --------
-c nbtr   : nombre de sous-triangles du te, triangulation du te
-c nutr   : numero des nbtr sous-triangles du te dans le tableau noartr
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si le tableau noartr est sature
-c          =3 si aucun des triangles ne contient l'un des points internes au te
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      double precision  pxyd(3,*)
-      integer           letree(0:8),
-     %                  milieu(3),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*),
-     %                  nutr(1:nbtr)
-c
-      integer           nosotr(3), nuarco(5)
-c
-c     le numero des 2 triangles (=2 demi te) a creer dans le tableau noartr
-      do 5 nbtr=1,2
-         if( n1artr .le. 0 ) then
-c           tableau noartr sature
-            ierr = 2
-            return
-         endif
-         nutr(nbtr) = n1artr
-c        le nouveau premier triangle libre dans noartr
-         n1artr = noartr(2,n1artr)
- 5    continue
-      nbtr = 2
-c
-c     recherche du milieu a creer
-      do 7 i=1,3
-         if( milieu(i) .ne. 0 ) goto 9
- 7    continue
-c     le numero pxyd du point milieu du cote i
- 9    nm = milieu( i )
-c
-c     on se ramene au seul cas i=3 c-a-d le milieu est sur le cote 3
-      if( i .eq. 1 ) then
-c        milieu sur le cote 1
-         nosotr(1) = letree(7)
-         nosotr(2) = letree(8)
-         nosotr(3) = letree(6)
-      else if( i .eq. 2 ) then
-c        milieu sur le cote 2
-         nosotr(1) = letree(8)
-         nosotr(2) = letree(6)
-         nosotr(3) = letree(7)
-      else
-c        milieu sur le cote 3
-         nosotr(1) = letree(6)
-         nosotr(2) = letree(7)
-         nosotr(3) = letree(8)
-      endif
-c
-c     formation des 2 aretes s1 s2 et s2 s3
-      do 10 i=1,2
-         if( i .ne. 3 ) then
-            i1 = i + 1
-         else
-            i1 = 1
-         endif
-c        ajout eventuel de l'arete dans nosoar
-         call fasoar( nosotr(i), nosotr(i1), nutr(i), -1, 0,
-     %                mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                nuarco(i), ierr )
-         if( ierr .ne. 0 ) return
- 10   continue
-c
-c     ajout eventuel de l'arete s3 milieu dans nosoar
-      call fasoar( nosotr(3), nm, nutr(2), -1, 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(3), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout eventuel de l'arete milieu s1 dans nosoar
-      call fasoar( nosotr(1), nm, nutr(1), -1, 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(4), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout eventuel de l'arete milieu s2 dans nosoar
-      call fasoar( nosotr(2), nm, nutr(1), nutr(2), 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(5), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     les aretes s1 s2 et s2 s3 dans le tableau noartr
-      do 20 i=1,2
-c        nosotr(i) est le numero du sommet 1 de l'arete i du te
-         if( nosotr(i) .eq. nosoar(1,nuarco(i)) ) then
-            lesign = 1
-         else
-            lesign = -1
-         endif
-c        l'arete ns1-ns2 dans nosoar est celle du cote du te
-         noartr( 1, nutr(i) ) = lesign * nuarco(i)
- 20   continue
-c
-c     l'arete mediane s2 milieu
-      if( nm .eq. nosoar(1,nuarco(5)) ) then
-         lesign = -1
-      else
-         lesign =  1
-      endif
-      noartr( 2, nutr(1) ) =  lesign * nuarco(5)
-      noartr( 3, nutr(2) ) = -lesign * nuarco(5)
-c
-c     l'arete s1 milieu
-      if( nm .eq. nosoar(1,nuarco(4)) ) then
-         lesign =  1
-      else
-         lesign = -1
-      endif
-      noartr( 3, nutr(1) ) = lesign * nuarco(4)
-c
-c     l'arete s3 milieu
-      if( nm .eq. nosoar(1,nuarco(3)) ) then
-         lesign = -1
-      else
-         lesign =  1
-      endif
-      noartr( 2, nutr(2) ) = lesign * nuarco(3)
-c
-c     triangulation des 2 demi te par ajout des points internes du te
-      call trpite( letree, pxyd,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, mxartr, n1artr, noartr, noarst,
-     %             nbtr,   nutr,   ierr )
-      end
-
-
-      subroutine f2trte( letree, pxyd,   milieu,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   noarst,
-     %                   nbtr,   nutr,   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former les triangles du triangle equilateral letree
-c -----    a partir de 2 milieux des cotes du te
-c          et des points internes au te
-c          ils deviennent tous des sommets des sous-triangles du te
-c
-c entrees:
-c --------
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          si letree(0)>0 alors
-c             letree(0:3) : no (>0) letree des 4 sous-triangles du triangle j
-c          sinon
-c             letree(0:3) :-no pxyd des 1 a 4 points internes au triangle j
-c                           0  si pas de point
-c                         ( le te est une feuille de l'arbre )
-c          letree(4) : no letree du sur-triangle du triangle j
-c          letree(5) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8) : no pxyd des 3 sommets du triangle j
-c pxyd   : tableau des x  y  distance_souhaitee de chaque sommet
-c milieu : milieu(i) numero dans pxyd du milieu de l'arete i du te
-c                    0 si pas de milieu du cote i a ajouter
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = (nosoar(1)+nosoar(2)) modulo mxsoar
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(np) numero d'une arete du sommet np
-c
-c sorties:
-c --------
-c nbtr   : nombre de sous-triangles du te, triangulation du te
-c nutr   : numero des nbtr sous-triangles du te dans le tableau noartr
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si le tableau noartr est sature
-c          =3 si aucun des triangles ne contient l'un des points internes au te
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      integer           letree(0:8),
-     %                  milieu(3),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*),
-     %                  nutr(1:nbtr)
-c
-      integer           nosotr(3), nuarco(7)
-c
-c     le numero des 3 triangles a creer dans le tableau noartr
-      do 5 nbtr=1,3
-         if( n1artr .le. 0 ) then
-c           tableau noartr sature
-            ierr = 2
-            return
-         endif
-         nutr(nbtr) = n1artr
-c        le nouveau premier triangle libre dans noartr
-         n1artr = noartr(2,n1artr)
- 5    continue
-      nbtr = 3
-c
-c     recherche du premier milieu a creer
-      do 7 i=1,3
-         if( milieu(i) .ne. 0 ) goto 9
- 7    continue
-c
-c     on se ramene au seul cas i=2 c-a-d le cote 1 n'a pas de milieu
- 9    if( i .eq. 2 ) then
-c        pas de milieu sur le cote 1
-         nosotr(1) = letree(6)
-         nosotr(2) = letree(7)
-         nosotr(3) = letree(8)
-c        le numero pxyd du milieu du cote 2
-         nm2 = milieu( 2 )
-c        le numero pxyd du milieu du cote 3
-         nm3 = milieu( 3 )
-      else if( milieu(2) .ne. 0 ) then
-c        pas de milieu sur le cote 3
-         nosotr(1) = letree(8)
-         nosotr(2) = letree(6)
-         nosotr(3) = letree(7)
-c        le numero pxyd du milieu du cote 2
-         nm2 = milieu( 1 )
-c        le numero pxyd du milieu du cote 3
-         nm3 = milieu( 2 )
-      else
-c        pas de milieu sur le cote 2
-         nosotr(1) = letree(7)
-         nosotr(2) = letree(8)
-         nosotr(3) = letree(6)
-c        le numero pxyd du milieu du cote 2
-         nm2 = milieu( 3 )
-c        le numero pxyd du milieu du cote 3
-         nm3 = milieu( 1 )
-      endif
-c
-c     ici seul le cote 1 n'a pas de milieu
-c     nm2 est le milieu du cote 2
-c     nm3 est le milieu du cote 3
-c
-c     ajout eventuel de l'arete s1 s2 dans nosoar
-      call fasoar( nosotr(1), nosotr(2), nutr(1), -1, 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(1), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout eventuel de l'arete s1 s2 dans nosoar
-      call fasoar( nosotr(2), nm2, nutr(1), -1, 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(2), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout eventuel de l'arete s1 nm2 dans nosoar
-      call fasoar( nosotr(1), nm2, nutr(1), nutr(2), 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(3), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout eventuel de l'arete nm2 nm3 dans nosoar
-      call fasoar( nm3, nm2, nutr(2), nutr(3), 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(4), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout eventuel de l'arete s1 nm3 dans nosoar
-      call fasoar( nosotr(1), nm3, nutr(2), -1, 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(5), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout eventuel de l'arete nm2 s3 dans nosoar
-      call fasoar( nm2, nosotr(3), nutr(3), -1, 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(6), ierr )
-c
-c     ajout eventuel de l'arete nm3 s3 dans nosoar
-      call fasoar( nosotr(3), nm3, nutr(3), -1, 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(7), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     le triangle s1 s2 nm2  ou arete1 arete2 arete3
-      do 20 i=1,2
-c        nosotr(i) est le numero du sommet 1 de l'arete i du te
-         if( nosotr(i) .eq. nosoar(1,nuarco(i)) ) then
-            lesign = 1
-         else
-            lesign = -1
-         endif
-c        l'arete ns1-ns2 dans nosoar est celle du cote du te
-         noartr( i, nutr(1) ) = lesign * nuarco(i)
- 20   continue
-      if( nm2 .eq. nosoar(1,nuarco(3)) ) then
-         lesign =  1
-      else
-         lesign = -1
-      endif
-      noartr( 3, nutr(1) ) = lesign * nuarco(3)
-c
-c     le triangle s1 nm2 nm3
-      noartr( 1, nutr(2) ) = -lesign * nuarco(3)
-      if( nm2 .eq. nosoar(1,nuarco(4)) ) then
-         lesign =  1
-      else
-         lesign = -1
-      endif
-      noartr( 2, nutr(2) ) =  lesign * nuarco(4)
-      noartr( 1, nutr(3) ) = -lesign * nuarco(4)
-      if( nm3 .eq. nosoar(1,nuarco(5)) ) then
-         lesign =  1
-      else
-         lesign = -1
-      endif
-      noartr( 3, nutr(2) ) = lesign * nuarco(5)
-c
-c     le triangle nm2 nm3 s3
-      if( nm2 .eq. nosoar(1,nuarco(6)) ) then
-         lesign =  1
-      else
-         lesign = -1
-      endif
-      noartr( 2, nutr(3) ) =  lesign * nuarco(6)
-      if( nm3 .eq. nosoar(1,nuarco(7)) ) then
-         lesign = -1
-      else
-         lesign =  1
-      endif
-      noartr( 3, nutr(3) ) = lesign * nuarco(7)
-c
-c     triangulation des 3 sous-te par ajout des points internes du te
-      call trpite( letree, pxyd,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, mxartr, n1artr, noartr, noarst,
-     %             nbtr,   nutr,   ierr )
-      end
-
-
-      subroutine f3trte( letree, pxyd,   milieu,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   noarst,
-     %                   nbtr,   nutr,   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former les triangles du triangle equilateral letree
-c -----    a partir de 3 milieux des cotes du te
-c          et des points internes au te
-c          ils deviennent tous des sommets des sous-triangles du te
-c
-c entrees:
-c --------
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          si letree(0)>0 alors
-c             letree(0:3) : no (>0) letree des 4 sous-triangles du triangle j
-c          sinon
-c             letree(0:3) :-no pxyd des 1 a 4 points internes au triangle j
-c                           0  si pas de point
-c                         ( le te est une feuille de l'arbre )
-c          letree(4) : no letree du sur-triangle du triangle j
-c          letree(5) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8) : no pxyd des 3 sommets du triangle j
-c pxyd   : tableau des x  y  distance_souhaitee de chaque sommet
-c milieu : milieu(i) numero dans pxyd du milieu de l'arete i du te
-c                    0 si pas de milieu du cote i a ajouter
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = (nosoar(1)+nosoar(2)) modulo mxsoar
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(np) numero d'une arete du sommet np
-c
-c sorties:
-c --------
-c nbtr   : nombre de sous-triangles du te, triangulation du te
-c nutr   : numero des nbtr sous-triangles du te dans le tableau noartr
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si le tableau noartr est sature
-c          =3 si aucun des triangles ne contient l'un des points internes au te
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      double precision  pxyd(3,*)
-      integer           letree(0:8),
-     %                  milieu(3),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*),
-     %                  nutr(1:nbtr)
-c
-      integer           nuarco(9)
-c
-c     le numero des 4 triangles a creer dans le tableau noartr
-      do 5 nbtr=1,4
-         if( n1artr .le. 0 ) then
-c           tableau noartr sature
-            ierr = 2
-            return
-         endif
-         nutr(nbtr) = n1artr
-c        le nouveau premier triangle libre dans noartr
-         n1artr = noartr(2,n1artr)
- 5    continue
-      nbtr = 4
-c
-      do 10 i=1,3
-c        le sommet suivant
-         if( i .ne. 3 ) then
-            i1 = i + 1
-         else
-            i1 = 1
-         endif
-c        le sommet precedant
-         if( i .ne. 1 ) then
-            i0 = i - 1
-         else
-            i0 = 3
-         endif
-         i3 = 3 * i
-c
-c        ajout eventuel de l'arete si mi dans nosoar
-         call fasoar( letree(5+i), milieu(i), nutr(i), -1, 0,
-     %                mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                nuarco(i3-2), ierr )
-         if( ierr .ne. 0 ) return
-c
-c        ajout eventuel de l'arete mi mi-1 dans nosoar
-         call fasoar( milieu(i), milieu(i0), nutr(i), nutr(4), 0,
-     %                mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                nuarco(i3-1), ierr )
-         if( ierr .ne. 0 ) return
-c
-c        ajout eventuel de l'arete m i-1  si dans nosoar
-         call fasoar( milieu(i0), letree(5+i), nutr(i), -1, 0,
-     %                mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                nuarco(i3), ierr )
-         if( ierr .ne. 0 ) return
-c
- 10   continue
-c
-c     les 3 sous-triangles pres des sommets
-      do 20 i=1,3
-c        le sommet suivant
-         if( i .ne. 3 ) then
-            i1 = i + 1
-         else
-            i1 = 1
-         endif
-c        le sommet precedant
-         if( i .ne. 1 ) then
-            i0 = i - 1
-         else
-            i0 = 3
-         endif
-         i3 = 3 * i
-c
-c        ajout du triangle  arete3i-2 arete3i-1 arete3i
-         if( letree(5+i) .eq. nosoar(1,nuarco(i3-2)) ) then
-            lesign =  1
-         else
-            lesign = -1
-         endif
-         noartr( 1, nutr(i) ) = lesign * nuarco(i3-2)
-c
-         if( milieu(i) .eq. nosoar(1,nuarco(i3-1)) ) then
-            lesign =  1
-         else
-            lesign = -1
-         endif
-         noartr( 2, nutr(i) ) = lesign * nuarco(i3-1)
-c
-         if( milieu(i0) .eq. nosoar(1,nuarco(i3)) ) then
-            lesign =  1
-         else
-            lesign = -1
-         endif
-         noartr( 3, nutr(i) ) = lesign * nuarco(i3)
-c
- 20   continue
-c
-c     le sous triangle central
-      i3 = -1
-      do 30 i=1,3
-         i3 = i3 + 3
-         if( milieu(i) .eq. nosoar(1,nuarco(i3)) ) then
-            lesign = -1
-         else
-            lesign =  1
-         endif
-         noartr( i, nutr(4) ) = lesign * nuarco(i3)
- 30   continue
-c
-c     triangulation des 3 sous-te par ajout des points internes du te
-      call trpite( letree, pxyd,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, mxartr, n1artr, noartr, noarst,
-     %             nbtr,   nutr,   ierr )
-      end
-
-
-
-      subroutine hasoar( mosoar, mxsoar, n1soar, nosoar, nu2sar,
-     %                   noar )
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    rechercher le numero des 2 sommets d'une arete parmi
-c -----    les numeros des 2 sommets des aretes du tableau nosoar
-c          s ils n y sont pas stockes les y ajouter
-c          dans tous les cas retourner le numero de l'arete dans nosoar
-c
-c          la methode employee ici est celle du hachage
-c          avec pour fonction d'adressage h(ns1,ns2)=min(ns1,ns2)
-c
-c          remarque: h(ns1,ns2)=ns1 + 2*ns2
-c                    ne marche pas si des aretes sont detruites
-c                    et ajoutees aux aretes vides
-c                    le chainage est commun a plusieurs hachages!
-c                    d'ou ce choix du minimum pour le hachage
-c
-c entrees:
-c --------
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c          chainage des aretes vides amont et aval
-c          l'arete vide qui precede=nosoar(4,i)
-c          l'arete vide qui suit   =nosoar(5,i)
-c nosoar : numero des 2 sommets, no ligne, 2 triangles de l'arete,
-c          chainage momentan'e d'aretes, chainage du hachage des aretes
-c          hachage des aretes = min( nosoar(1), nosoar(2) )
-c nu2sar : en entree les 2 numeros des sommets de l'arete
-c          en sortie nu2sar(1)<nu2sar(2) numeros des 2 sommets de l'arete
-c
-c sorties:
-c --------
-c noar   : numero dans nosoar de l'arete apres hachage
-c          =0 si saturation du tableau nosoar
-c          >0 si le tableau nu2sar est l'arete noar retrouvee
-c             dans le tableau nosoar
-c          <0 si le tableau nu2sar a ete ajoute et forme l'arete
-c             -noar du tableau nosoar avec nosoar(1,noar)<nosoar(2,noar)
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique upmc paris       mars 1997
-c ...................................................................012
-      integer  nu2sar(2), nosoar(mosoar,mxsoar)
-c
-      if( nu2sar(1) .gt. nu2sar(2) ) then
-c
-c        permutation des numeros des 2 sommets pour
-c        amener le plus petit dans nu2sar(1)
-         i         = nu2sar(1)
-         nu2sar(1) = nu2sar(2)
-         nu2sar(2) = i
-      endif
-c
-c     la fonction d'adressage du hachage des aretes : h(ns1,ns2)=min(ns1,ns2)
-c     ===============================================
-      noar = nu2sar(1)
-c
-c     la recherche de l'arete dans le chainage du hachage
-c     ---------------------------------------------------
- 10   if( nu2sar(1) .eq. nosoar(1,noar) ) then
-         if( nu2sar(2) .eq. nosoar(2,noar) ) then
-c
-c           l'arete est retrouvee
-c           .....................
-            return
-         endif
-      endif
-c
-c     l'arete suivante parmi celles ayant meme fonction d'adressage
-      i = nosoar( mosoar, noar )
-      if( i .gt. 0 ) then
-         noar = i
-         goto 10
-      endif
-c
-c     noar est ici la derniere arete (sans suivante) du chainage
-c     a partir de l'adressage du hachage
-c
-c     l'arete non retrouvee doit etre ajoutee
-c     .......................................
-      if( nosoar( 1, nu2sar(1) ) .eq. 0 ) then
-c
-c        l'adresse de hachage est libre => elle devient la nouvelle arete
-c        retouche des chainages de cette arete noar qui ne sera plus vide
-         noar = nu2sar(1)
-c        l'eventuel chainage du hachage n'est pas modifie
-c
-      else
-c
-c        la premiere arete dans l'adressage du hachage n'est pas libre
-c        => choix quelconque d'une arete vide pour ajouter cette arete
-         if( n1soar .le. 0 ) then
-c
-c           le tableau nosoar est sature avec pour temoin d'erreur
-            noar = 0
-            return
-c
-         else
-c
-c           l'arete n1soar est vide => c'est la nouvelle arete
-c           mise a jour du chainage de la derniere arete noar du chainage
-c           sa suivante est la nouvelle arete n1soar
-            nosoar( mosoar, noar ) = n1soar
-c
-c           l'arete ajoutee est n1soar
-            noar = n1soar
-c
-c           la nouvelle premiere arete vide
-            n1soar = nosoar( 5, n1soar )
-c
-c           la premiere arete vide n1soar n'a pas d'arete vide precedente
-            nosoar( 4, n1soar ) = 0
-c
-c           noar la nouvelle arete est la derniere du chainage du hachage
-            nosoar( mosoar, noar ) = 0
-c
-         endif
-c
-      endif
-c
-c     les 2 sommets de la nouvelle arete noar
-      nosoar( 1, noar ) = nu2sar(1)
-      nosoar( 2, noar ) = nu2sar(2)
-c
-c     le tableau nu2sar a ete ajoute avec l'indice -noar
-      noar = - noar
-      end
-
-
-      subroutine mt3str( nt, moartr, noartr, mosoar, nosoar,
-     %                   ns1, ns2, ns3 )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but : calcul du numero des 3 sommets du triangle nt du tableau noartr
-c -----
-c
-c entrees:
-c --------
-c nt     : numero du triangle de noartr a traiter
-c moartr : nombre maximal d'entiers par triangle
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1=0 si triangle vide => arete2=triangle vide suivant
-c mosoar : nombre maximal d'entiers par arete
-c nosoar : numero des 2 sommets , no ligne, 2 triangles, chainages en +
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c
-c sorties:
-c --------
-c ns1,ns2,ns3 : les 3 numeros des sommets du triangle en sens direct
-c
-c si erreur rencontree => ns1 = 0
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    juillet 1995
-c2345x7..............................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      integer    noartr(moartr,*), nosoar(mosoar,*)
-c
-c     le numero de triangle est il correct  ?
-c     a supprimer apres mise au point
-      if( nt .le. 0 ) then
-c         nblgrc(nrerr) = 1
-c         write(kerr(mxlger)(1:6),'(i6)') nt
-c         kerr(1) = kerr(mxlger)(1:6) //
-c     %           ' no triangle dans noartr incorrect'
-c         call lereur
-         write(imprim,*) nt,' no triangle dans noartr incorrect'
-         ns1 = 0
-         return
-      endif
-c
-      na = noartr(1,nt)
-      if( na .gt. 0 ) then
-c        arete dans le sens direct
-         ns1 = nosoar(1,na)
-         ns2 = nosoar(2,na)
-      else
-c        arete dans le sens indirect
-         ns1 = nosoar(2,-na)
-         ns2 = nosoar(1,-na)
-      endif
-c
-      na = noartr(2,nt)
-      if( na .gt. 0 ) then
-c        arete dans le sens direct => ns3 est le second sommet de l'arete
-         ns3 = nosoar(2,na)
-      else
-c        arete dans le sens indirect => ns3 est le premier sommet de l'arete
-         ns3 = nosoar(1,-na)
-      endif
-      end
-
-      subroutine trpite( letree, pxyd,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   noarst,
-     %                   nbtr,   nutr,   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former le ou les sous-triangles des nbtr triangles nutr
-c -----    qui forment le triangle equilateral letree par ajout
-c          des points internes au te qui deviennent des sommets des
-c          sous-triangles des nbtr triangles
-c
-c entrees:
-c --------
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          letree(0:3):-no pxyd des 1 a 4 points internes au triangle j
-c                       0  si pas de point
-c                     ( le te est ici une feuille de l'arbre )
-c          letree(4) : no letree du sur-triangle du triangle j
-c          letree(5) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8) : no pxyd des 3 sommets du triangle j
-c pxyd   : tableau des x  y  distance_souhaitee de chaque sommet
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = (nosoar(1)+nosoar(2)) modulo mxsoar
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(i) numero d'une arete de sommet i
-c
-c sorties:
-c --------
-c nbtr   : nombre de sous-triangles du te
-c nutr   : numero des nbtr sous-triangles du te dans le tableau noartr
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si le tableau noartr est sature
-c          =3 si aucun des triangles ne contient l'un des points internes au te
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      integer           letree(0:8),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*),
-     %                  nutr(1:nbtr)
-c
-      integer           nosotr(3)
-c
-      ierr = 0
-c
-c     si pas de point interne alors retour
-      if( letree(0) .eq. 0 ) goto 150
-c
-c     il existe au moins un point interne a trianguler
-c     dans les nbtr triangles
-      do 100 k=0,3
-c
-c        le numero du point
-         np = -letree(k)
-         if( np .eq. 0 ) goto 150
-c
-c        le point np dans pxyd est a traiter
-         do 10 n = 1, nbtr
-c
-c           les numeros des 3 sommets du triangle nt=nutr(n)
-            nt = nutr(n)
-            call nusotr( nt, mosoar, nosoar, moartr, noartr,  nosotr )
-c
-c           le triangle nt contient il le point np?
-            call ptdatr( pxyd(1,np), pxyd, nosotr, nsigne )
-c           nsigne>0 si le point est dans le triangle ou sur une des 3 aretes
-c                 =0 si triangle degenere ou indirect ou ne contient pas le poin
-c
-            if( nsigne .gt. 0 ) then
-c
-c              le triangle nt est triangule en 3 sous-triangles
-               call tr3str( np, nt,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      noarst,
-     %                      nutr(nbtr+1),  ierr )
-               if( ierr .ne. 0 ) return
-c
-c              reamenagement des 3 triangles crees dans nutr
-c              en supprimant le triangle nt
-               nutr( n ) = nutr( nbtr + 3 )
-               nbtr = nbtr + 2
-c              le point np est triangule
-               goto 100
-c
-            endif
- 10      continue
-c
-c        erreur: le point np n'est pas dans l'un des nbtr triangles
-         write(imprim,10010) np
-         ierr = 3
-         return
-c
- 100  continue
-10010 format(' erreur trpite: pas de triangle contenant le point',i7)
-c
- 150  continue
-      end
-
-
-      subroutine sasoar( noar, mosoar, mxsoar, n1soar, nosoar, noarst )
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    supprimer l'arete noar du tableau nosoar
-c -----    si celle ci n'est pas une arete des lignes de la fontiere
-c
-c          la methode employee ici est celle du hachage
-c          avec pour fonction d'adressage h = min( nu2sar(1), nu2sar(2) )
-c
-c          attention: il faut mettre a jour le no d'arete des 2 sommets
-c                     de l'arete supprimee dans le tableau noarst!
-c
-c entrees:
-c --------
-c noar   : numero de l'arete de nosoar a supprimer
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage h
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c
-c modifies:
-c ---------
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(4,arete vide)=l'arete vide qui precede
-c          nosoar(5,arete vide)=l'arete vide qui suit
-c noarst : numero d'une arete de nosoar pour chaque sommet
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet analyse numerique    upmc paris  mars    1997
-c modifs : alain perronnet laboratoire jl lions upmc paris  octobre 2006
-c ...................................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      integer           nosoar(mosoar,mxsoar), noarst(*), ns(2)
-c
-c     13/10/2006
-c     mise a jour de noarst pour les 2 sommets de l'arete a supprimer
-c     necessaire uniquement pour les sommets frontaliers et internes imposes
-c     le numero des 2 sommets de l'arete noar a supprimer
-      ns(1) = nosoar(1,noar)
-      ns(2) = nosoar(2,noar)
-      do 8 k=1,2
-         if( noarst(ns(k)) .eq. noar ) then
-c           il faut remettre a jour le pointeur sur une arete
-            if(nosoar(1,ns(k)).eq.ns(k) .and. nosoar(2,ns(k)).gt.0
-     %         .and. nosoar(4,ns(k)) .gt. 0 ) then
-c              arete active de sommet ns(k)
-               noarst( ns(k) ) = ns(k)
-            else
-               do 5 i=1,mxsoar
-                  if( nosoar(1,i).gt.0 .and. nosoar(4,i).gt.0 ) then
-c                    arete non vide
-                     if( nosoar(2,i).eq.ns(k) .or.
-     %                  (nosoar(1,i).eq.ns(k).and.nosoar(2,i).gt.0))then
-c                       arete active de sommet ns(k)
-                        noarst( ns(k) ) = i
-                        goto 8
-                     endif
-                  endif
- 5             continue
-            endif
-         endif
- 8    continue
-c     13/10/2006
-c
-      if( nosoar(3,noar) .le. 0 ) then
-c
-c        l'arete n'est pas frontaliere => elle devient une arete vide
-c
-c        recherche de l'arete qui precede dans le chainage du hachage
-         noar1 = nosoar(1,noar)
-c
-c        parcours du chainage du hachage jusqu'a retrouver l'arete noar
- 10      if( noar1 .ne. noar ) then
-c
-c           l'arete suivante parmi celles ayant meme fonction d'adressage
-            noar0 = noar1
-            noar1 = nosoar( mosoar, noar1 )
-            if( noar1 .gt. 0 ) goto 10
-c
-c           l'arete noar n'a pas ete retrouvee dans le chainage => erreur
-            write(imprim,*) 'erreur sasoar:arete non dans le chainage '
-     %                      ,noar
-            write(imprim,*) 'arete de st1=',nosoar(1,noar),
-     %      ' st2=',nosoar(2,noar),' ligne=',nosoar(3,noar),
-     %      ' tr1=',nosoar(4,noar),' tr2=',nosoar(5,noar)
-            write(imprim,*) 'chainages=',(nosoar(i,noar),i=6,mosoar)
-ccc            pause
-c           l'arete n'est pas detruite
-            return
-c
-         endif
-c
-         if( noar .ne. nosoar(1,noar) ) then
-c
-c           saut de l'arete noar dans le chainage du hachage
-c           noar0 initialisee est ici l'arete qui precede noar dans ce chainage
-            nosoar( mosoar, noar0 ) = nosoar( mosoar, noar )
-c
-c           le chainage du hachage n'existe plus pour noar
-c           pas utile car mise a zero faite dans le sp hasoar
-ccc         nosoar( mosoar, noar ) = 0
-c
-c           noar devient la nouvelle premiere arete du chainage des vides
-            nosoar( 4, noar ) = 0
-            nosoar( 5, noar ) = n1soar
-c           la nouvelle precede l'ancienne premiere
-            nosoar( 4, n1soar ) = noar
-            n1soar = noar
-c
-ccc      else
-c
-c           noar est la premiere arete du chainage du hachage h
-c           cette arete ne peut etre consideree dans le chainage des vides
-c           car le chainage du hachage doit etre conserve (sinon perte...)
-c
-         endif
-c
-c        le temoin d'arete vide
-         nosoar( 1, noar ) = 0
-      endif
-      end
-
-
-      subroutine caetoi( noar,   mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                   n1aeoc, nbtrar  )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    ajouter (ou retirer) l'arete noar de nosoar de l'etoile
-c -----    des aretes simples chainees en position lchain de nosoar
-c          detruire du tableau nosoar les aretes doubles
-c
-c          attention: le chainage lchain de nosoar devient celui des cf
-c
-c entree :
-c --------
-c noar   : numero dans le tableau nosoar de l'arete a traiter
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c
-c entrees et sorties:
-c -------------------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c n1aeoc : numero dans nosoar de la premiere arete simple de l'etoile
-c
-c sortie :
-c --------
-c nbtrar : 1 si arete ajoutee, 2 si arete double supprimee, 0 si erreur
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      parameter        (lchain=6)
-      common / unites / lecteu, imprim, nunite(30)
-      integer           nosoar(mosoar,mxsoar), noarst(*)
-c
-c     si    l'arete n'appartient pas aux aretes de l'etoile naetoi
-c     alors elle est ajoutee a l'etoile dans naetoi
-c     sinon elle est empilee dans npile pour etre detruite ensuite
-c           elle est supprimee de l'etoile naetoi
-c
-      if( nosoar( lchain, noar ) .lt. 0 ) then
-c
-c        arete de l'etoile vue pour la premiere fois
-c        elle est ajoutee au chainage
-         nosoar( lchain, noar ) = n1aeoc
-c        elle devient la premiere du chainage
-         n1aeoc = noar
-c        arete simple
-         nbtrar = 1
-c
-      else
-c
-c        arete double de l'etoile. elle est supprimee du chainage
-         na0 = 0
-         na  = n1aeoc
-         nbpass = 0
-c        parcours des aretes chainees jusqu'a trouver l'arete noar
- 10      if( na .ne. noar ) then
-c           passage a la suivante
-            na0 = na
-            na  = nosoar( lchain, na )
-            if( na .le. 0 ) then
-               nbtrar = 0
-               return
-            endif
-            nbpass = nbpass + 1
-            if( nbpass .gt. 512 ) then
-               write(imprim,*)'Pb dans caetoi: boucle infinie evitee'
-               nbtrar = 0
-               return
-            endif
-            goto 10
-         endif
-c
-c        suppression de noar du chainage des aretes simples de l'etoile
-         if( na0 .gt. 0 ) then
-c           il existe une arete qui precede
-            nosoar( lchain, na0 ) = nosoar( lchain, noar )
-         else
-c           noar est en fait n1aeoc la premiere du chainage
-            n1aeoc = nosoar( lchain, noar )
-         endif
-c        noar n'est plus une arete simple de l'etoile
-         nosoar( lchain, noar ) = -1
-c
-c        destruction du tableau nosoar de l'arete double noar
-         call sasoar( noar, mosoar, mxsoar, n1soar, nosoar, noarst )
-c
-c        arete double
-         nbtrar = 2
-      endif
-      end
-
-
-      subroutine focftr( nbtrcf, notrcf, nbarpi, pxyd,   noarst,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, n1artr, noartr,
-     %                   nbarcf, n1arcf, noarcf, nbstpe, nostpe,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former un contour ferme (cf) avec les aretes simples des
-c -----    nbtrcf triangles du tableau notrcf
-c          destruction des nbtrcf triangles du tableau noartr
-c          destruction des aretes doubles   du tableau nosoar
-c
-c          attention: le chainage lchain de nosoar devient celui des cf
-c
-c entrees:
-c --------
-c nbtrcf : nombre de  triangles du cf a former
-c notrcf : numero des triangles dans le tableau noartr
-c nbarpi : numero du dernier sommet frontalier ou interne impose
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c
-c entrees et sorties :
-c --------------------
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c sorties:
-c --------
-c nbarcf : nombre d'aretes du cf
-c n1arcf : numero d'une arete de chaque contour
-c noarcf : numero des aretes de la ligne du contour ferme
-c attention: chainage circulaire des aretes
-c            les aretes vides pointes par n1arcf(0) ne sont pas chainees
-c nbstpe : nombre de  sommets perdus dans la suppression des triangles
-c nostpe : numero des sommets perdus dans la suppression des triangles 
-c ierr   :  0 si pas d'erreur
-c          14 si les lignes fermees se coupent => donnees a revoir
-c          15 si une seule arete simple frontaliere
-c          16 si boucle infinie car toutes les aretes simples
-c                de la boule sont frontalieres!
-c          17 si boucle infinie dans caetoi
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet analyse numerique    upmc paris  mars    1997
-c modifs : alain perronnet laboratoire jl lions upmc paris  octobre 2006
-c....................................................................012
-      parameter        (lchain=6, mxstpe=512)
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      integer           notrcf(1:nbtrcf)
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,*),
-     %                  n1arcf(0:*),
-     %                  noarcf(3,*),
-     %                  noarst(*),
-     %                  nostpe(mxstpe),
-     %                  nosotr(3)
-c
-c     formation des aretes simples du cf autour de l'arete ns1-ns2
-c     attention: le chainage lchain du tableau nosoar devient actif
-c     ============================================================
-c     ici toutes les aretes du tableau nosoar verifient nosoar(lchain,i) = -1
-c     ce qui equivaut a dire que l'etoile des aretes simples est vide
-c     (initialisation dans le sp insoar puis remise a -1 dans la suite!)
-      n1aeoc = 0
-      ierr   = 0
-c
-c     13/10/2006
-c     nombre de sommets des triangles a supprimer sans repetition
-      nbst = 0
-c     13/10/2006
-c
-c     ajout a l'etoile des aretes simples des 3 aretes des triangles a supprimer
-c     suppression des triangles de l'etoile pour les aretes simples de l'etoile
-      do 10 i=1,nbtrcf
-c
-c        ajout ou retrait des 3 aretes du triangle notrcf(i) de l'etoile
-         nt = notrcf( i )
-c
-c        13/10/2006  ...............................................
-         call nusotr( nt, mosoar, nosoar, moartr, noartr, nosotr )
-c
-c        ajout des numeros de sommets non encore vus dans l'etoile
-         do 3 k=1,3
-            do 2 j=1,nbst
-               if( nosotr(k) .eq. nostpe(j) ) goto 3
- 2          continue
-c           ajout du sommet
-            nbst = nbst + 1
-            nostpe( nbst ) = nosotr(k)
- 3       continue
-c        13/10/2006 ................................................
-c
-         do 5 j=1,3
-c           l'arete de nosoar a traiter
-            noar = abs( noartr(j,nt) )
-            call caetoi( noar,   mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                   n1aeoc, nbtrar  )
-            if( nbtrar .le. 0 ) then
-               write(imprim,*)'focftr: erreur dans caetoi noar=',noar
-               ierr = 17
-               return
-            endif
-c           si arete simple alors suppression du numero de triangle
-c           pour cette arete
-            if( nbtrar .eq. 1 ) then
-               if( nosoar(4,noar) .eq. nt ) then
-                  nosoar(4,noar) = nosoar(5,noar)
-               else if( nosoar(5,noar) .eq. nt ) then
-                  nosoar(5,noar) = -1
-               else
-                  write(imprim,*)'focftr: anomalie arete',noar,
-     %                           ' sans triangle',nt
-                  write(imprim,*)'focftr: nosoar(',noar,')=',
-     %                            (nosoar(kk,noar),kk=1,mosoar)
-                  nosoar(5,noar) = -1
-               endif
-c           else
-c              l'arete appartient a aucun triangle => elle est vide
-c              les positions 4 et 5 servent maintenant aux chainages des vides
-            endif
-  5      continue
- 10   continue
-c
-c     les aretes simples de l'etoile sont reordonnees pour former une
-c     ligne fermee = un contour ferme peripherique de l'etoile encore dit 1 cf
-c     ========================================================================
-      n1ae00 = n1aeoc
- 12   na1    = n1aeoc
-c     la premiere arete du contour ferme
-      ns0 = nosoar(1,na1)
-      ns1 = nosoar(2,na1)
-c
-c     l'arete est-elle dans le sens direct?
-c     recherche de l'arete du triangle exterieur nt d'arete na1
-      nt = nosoar(4,na1)
-      if( nt .le. 0 ) nt = nosoar(5,na1)
-c
-c     attention au cas de l'arete initiale frontaliere de no de triangles 0 et -
-      if( nt .le. 0 ) then
-c        permutation circulaire des aretes simples chainees
-c        la premiere arete doit devenir la derniere du chainage,
-c        la 2=>1, la 3=>2, ... , la derniere=>l'avant derniere, 1=>derniere
-         n1aeoc = nosoar( lchain, n1aeoc )
-         if( n1aeoc .eq. n1ae00 ) then
-c           attention: boucle infinie si toutes les aretes simples
-c           de la boule sont frontalieres!... arretee par ce test
-            ierr = 16
-            write(imprim,*)'focftr: boucle dans les aretes de l etoile'
-            return
-         endif
-         noar = n1aeoc
-         na0  = 0
- 14      if( noar .gt. 0 ) then
-c           la sauvegarde de l'arete et l'arete suivante
-            na0  = noar
-            noar = nosoar(lchain,noar)
-            goto 14
-         endif
-         if( na0 .le. 0 ) then
-c           une seule arete simple frontaliere
-            ierr = 15
-            write(imprim,*)'focftr: 1 arete seule pour l etoile'
-            return
-         endif
-c        le suivant de l'ancien dernier est l'ancien premier
-         nosoar(lchain,na0) = na1
-c        le nouveau dernier est l'ancien premier
-         nosoar(lchain,na1) = 0
-         goto 12
-      endif
-c
-c     ici l'arete na1 est l'une des aretes du triangle nt
-      do 15 i=1,3
-         if( abs(noartr(i,nt)) .eq. na1 ) then
-c           c'est l'arete
-            if( noartr(i,nt) .gt. 0 ) then
-c              elle est parcourue dans le sens indirect de l'etoile
-c             (car c'est en fait le triangle exterieur a la boule)
-               ns0 = nosoar(2,na1)
-               ns1 = nosoar(1,na1)
-            endif
-            goto 17
-         endif
- 15   continue
-c
-c     le 1-er sommet ou arete du contour ferme
- 17   n1arcf( 1 ) = 1
-c     le nombre de sommets du contour ferme de l'etoile
-      nbarcf = 1
-c     le premier sommet de l'etoile
-      noarcf( 1, nbarcf ) = ns0
-c     l'arete suivante du cf
-      noarcf( 2, nbarcf ) = nbarcf + 1
-c     le numero de cette arete dans le tableau nosoar
-      noarcf( 3, nbarcf ) = na1
-c     mise a jour du numero d'arete du sommet ns0
-      noarst(ns0) = na1
-c
-c     l'arete suivante a chainer
-      n1aeoc = nosoar( lchain, na1 )
-c     l'arete na1 n'est plus dans l'etoile
-      nosoar( lchain, na1 ) = -1
-c
-c     boucle sur les aretes simples de l'etoile
- 20   if( n1aeoc .gt. 0 ) then
-c
-c        recherche de l'arete de 1-er sommet ns1
-         na0 = -1
-         na1 = n1aeoc
- 25      if( na1 .gt. 0 ) then
-c
-c           le numero du dernier sommet de l'arete precedente
-c           est il l'un des 2 sommets de l'arete na1?
-            if ( ns1 .eq. nosoar(1,na1) ) then
-c               l'autre sommet de l'arete na1
-                ns2 = nosoar(2,na1)
-            else if( ns1 .eq. nosoar(2,na1) ) then
-c               l'autre sommet de l'arete na1
-                ns2 = nosoar(1,na1)
-            else
-c              non: passage a l'arete suivante
-               na0 = na1
-               na1 = nosoar( lchain, na1 )
-               goto 25
-            endif
-c
-c           oui: na1 est l'arete peripherique suivante
-c                na0 est sa precedente dans le chainage
-c           une arete de plus dans le contour ferme (cf)
-            nbarcf = nbarcf + 1
-c           le premier sommet de l'arete nbarcf peripherique
-            noarcf( 1, nbarcf ) = ns1
-c           l'arete suivante du cf
-            noarcf( 2, nbarcf ) = nbarcf + 1
-c           le numero de cette arete dans le tableau nosoar
-            noarcf( 3, nbarcf ) = na1
-c           mise a jour du numero d'arete du sommet ns1
-            noarst(ns1) = na1
-c
-c           suppression de l'arete des aretes simples de l'etoile
-            if( n1aeoc .eq. na1 ) then
-                n1aeoc = nosoar( lchain, na1 )
-            else
-                nosoar( lchain, na0 ) = nosoar( lchain, na1 )
-            endif
-c           l'arete n'est plus une arete simple de l'etoile
-            nosoar( lchain, na1 ) = -1
-c
-c           le sommet final de l'arete a rechercher ensuite
-            ns1 = ns2
-            goto 20
-         endif
-      endif
-c
-c     verification
-      if( ns1 .ne. ns0 ) then
-c        arete non retrouvee : l'etoile ne se referme pas
-         write(imprim,*)'focftr: revoyez vos donnees du bord'
-         write(imprim,*)'les lignes fermees doivent etre disjointes'
-         write(imprim,*)'verifiez si elles ne se coupent pas'
-         ierr = 14
-         return
-      endif
-c
-c     l'arete suivant la derniere arete du cf est la premiere du cf
-c     => realisation d'un chainage circulaire des aretes du cf
-      noarcf( 2, nbarcf ) = 1
-c
-c     13/10/2006
-c     existe t il des sommets perdus?
-c     -------------------------------
-      if( nbst .gt. mxstpe ) then
-         write(imprim,*)'focftr: tableau nostfe(',mxstpe,') a augmenter'
-         ierr = 15
-         return
-      endif
-c     le nombre de sommets perdus
-      nbstpe = nbst - nbarcf
-      if( nbstpe .gt. 0 ) then
-c        oui: stockage dans nostpe des sommets perdus
-c        tout sommet des aretes de l'etoile est supprime
-c        de la liste des sommets
-         do 40 i=1,nbarcf
-c           le numero du sommet de l'arete du cf
-            ns1 = noarcf( 1, i )
-            do 30 j=1,nbst
-               if( ns1 .eq. nostpe(j) ) then
-c                 le sommet peripherique est supprime
-c                 de la liste des sommets perdus
-                  nostpe(j) = 0
-                  goto 40
-               endif
- 30         continue
- 40      continue
-c
-c        compression
-         n = 0
-         do 45 i=1,nbst
-            if( nostpe(i) .eq. 0 .or. nostpe(i) .gt. nbarpi ) then
-c              un sommet de l'etoile ou perdu mais supprimable
-c              ce qui apporte plus de qualites aux triangles a former
-               n = n + 1
-            else
-c              un sommet perdu
-               nostpe(i-n) = nostpe(i)
-            endif
- 45      continue
-         nbstpe = nbst - n
-ccc      write(imprim,*)'focftr:',nbstpe,' sommets isoles:',(nostpe(k),k=1,nbstpe)
-      endif
-c     13/10/2006
-c
-c     destruction des triangles de l'etoile du tableau noartr
-c     -------------------------------------------------------
-      do 60 n=1,nbtrcf
-c        le numero du triangle dans noartr
-         nt0 = notrcf( n )
-c        l'arete 1 de nt0 devient nulle
-         noartr( 1, nt0 ) = 0
-c        chainage de nt0 en tete du chainage des triangles vides de noartr
-         noartr( 2, nt0 ) = n1artr
-         n1artr = nt0
- 60   continue
-      end
-
-
-      subroutine int1sd( ns1, ns2, ns3, ns4, pxyd, linter, x0, y0 )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    existence ou non  d'une intersection a l'interieur
-c -----    des 2 aretes ns1-ns2 et ns3-ns4
-c          attention les intersections au sommet sont comptees
-c
-c entrees:
-c --------
-c ns1,...ns4 : numero pxyd des 4 sommets
-c pxyd   : les coordonnees des sommets
-c
-c sortie :
-c --------
-c linter : -1 si ns3-ns4 parallele a ns1 ns2
-c           0 si ns3-ns4 n'intersecte pas ns1-ns2 entre les aretes
-c           1 si ns3-ns4   intersecte     ns1-ns2 entre les aretes
-c           2 si le point d'intersection est ns1  entre ns3-ns4
-c           3 si le point d'intersection est ns3  entre ns1-ns2
-c           4 si le point d'intersection est ns4  entre ns1-ns2
-c x0,y0  :  2 coordonnees du point d'intersection s'il existe(linter>=1)
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      parameter        ( epsmoi=-0.000001d0, eps=0.001d0,
-     %                   unmeps= 0.999d0, unpeps=1.000001d0 )
-      double precision  pxyd(3,*), x0, y0
-      double precision  x1,y1,x21,y21,d21,x43,y43,d43,d,x,y,p21,p43
-c
-      x1  = pxyd(1,ns1)
-      y1  = pxyd(2,ns1)
-      x21 = pxyd(1,ns2) - x1
-      y21 = pxyd(2,ns2) - y1
-      d21 = x21**2 + y21**2
-c
-      x43 = pxyd(1,ns4) - pxyd(1,ns3)
-      y43 = pxyd(2,ns4) - pxyd(2,ns3)
-      d43 = x43**2 + y43**2
-c
-c     les 2 aretes sont-elles jugees paralleles ?
-      d = x43 * y21 - y43 * x21
-      if( d*d .le. 0.000001d0 * d21 * d43 ) then
-c        cote i parallele a ns1-ns2
-         linter = -1
-         return
-      endif
-c
-c     les 2 coordonnees du point d'intersection
-      x =( x1*x43*y21-pxyd(1,ns3)*x21*y43-(y1-pxyd(2,ns3))*x21*x43)/d
-      y =(-y1*y43*x21+pxyd(2,ns3)*y21*x43+(x1-pxyd(1,ns3))*y21*y43)/d
-c
-c     coordonnee barycentrique de x,y dans le repere ns1-ns2
-      p21 = ( ( x - x1 )       * x21 + ( y - y1 )        * y21 ) / d21
-c     coordonnee barycentrique de x,y dans le repere ns3-ns4
-      p43 = ( (x - pxyd(1,ns3))* x43 + (y - pxyd(2,ns3)) * y43 ) / d43
-c
-c
-      if( epsmoi .le. p21 .and. p21 .le. unpeps ) then
-c        x,y est entre ns1-ns2
-         if( (p21 .le. eps)  .and.
-     %       (epsmoi .le. p43 .and. p43 .le. unpeps) ) then
-c           le point x,y est proche de ns1 et interne a ns3-ns4
-            linter = 2
-            x0 = pxyd(1,ns1)
-            y0 = pxyd(2,ns1)
-            return
-         else if( epsmoi .le. p43 .and. p43 .le. eps ) then
-c           le point x,y est proche de ns3 et entre ns1-ns2
-            linter = 3
-            x0 = pxyd(1,ns3)
-            y0 = pxyd(2,ns3)
-            return
-         else if( unmeps .le. p43 .and. p43 .le. unpeps ) then
-c           le point x,y est proche de ns4 et entre ns1-ns2
-            linter = 4
-            x0 = pxyd(1,ns4)
-            y0 = pxyd(2,ns4)
-            return
-         else if( eps .le. p43 .and. p43 .le. unmeps ) then
-c           le point x,y est entre ns3-ns4
-            linter = 1
-            x0     = x
-            y0     = y
-            return
-         endif
-      endif
-c
-c     pas d'intersection a l'interieur des aretes
-      linter = 0
-      end
-
-      subroutine tefoar( narete, nbarpi, pxyd,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr, noarst,
-     %                   mxarcf, n1arcf, noarcf, larmin, notrcf,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   forcer l'arete narete de nosoar dans la triangulation actuelle
-c -----   triangulation frontale pour la reobtenir
-c
-c         attention: le chainage lchain(=6) de nosoar devient actif
-c                    durant la formation des contours fermes (cf)
-c
-c entrees:
-c --------
-c narete : numero nosoar de l'arete frontaliere a forcer
-c nbarpi : numero du dernier point interne impose par l'utilisateur
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies:
-c ---------
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(i) numero d'une arete de sommet i
-c
-c mxarcf : nombre de variables des tableaux n1arcf, noarcf, larmin, notrcf
-c
-c tableaux auxiliaires :
-c ----------------------
-c n1arcf : tableau (0:mxarcf) auxiliaire
-c noarcf : tableau (3,mxarcf) auxiliaire
-c larmin : tableau (mxarcf)   auxiliaire
-c notrcf : tableau (1:mxarcf) auxiliaire
-c
-c sortie :
-c --------
-c ierr   : 0 si pas d'erreur
-c          1 saturation des sommets
-c          2 ns1 dans aucun triangle
-c          9 tableau nosoar de taille insuffisante car trop d'aretes
-c            a probleme
-c          10 un des tableaux n1arcf, noarcf notrcf est sature
-c             augmenter a l'appel mxarcf
-c         >11 algorithme defaillant
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet analyse numerique paris upmc     mars    1997
-c modifs : alain perronnet laboratoire jl lions upmc paris  octobre 2006
-c....................................................................012
-      parameter        (mxpitr=32, mxstpe=512)
-      common / unites / lecteu,imprim,intera,nunite(29)
-      double precision  pxyd(3,*)
-      integer           noartr(moartr,mxartr),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noarst(*),
-     %                  n1arcf(0:mxarcf),
-     %                  noarcf(3,mxarcf),
-     %                  larmin(mxarcf),
-     %                  notrcf(mxarcf),
-     %                  nostpe(mxstpe)
-c
-      integer           lapitr(mxpitr)
-      double precision  x1,y1,x2,y2,d12,d3,d4,x,y,d,dmin
-      integer           nosotr(3), ns(2)
-      integer           nacf(1:2), nacf1, nacf2
-      equivalence      (nacf(1),nacf1), (nacf(2),nacf2)
-c
-      ierr = 0
-c
-c     traitement de cette arete perdue
-      ns1 = nosoar( 1, narete )
-      ns2 = nosoar( 2, narete )
-c
-ccc      write(imprim,*)
-ccc      write(imprim,*) 'tefoar reconstruction de l''arete ',ns1,' ', ns2
-ccc      write(imprim,*) 'sommet',ns1,' x=',pxyd(1,ns1),' y=',pxyd(2,ns1)
-ccc      write(imprim,*) 'sommet',ns2,' x=',pxyd(1,ns2),' y=',pxyd(2,ns2)
-c
-c     le sommet ns2 est il correct?
-      na = noarst( ns2 )
-      if( na .le. 0 ) then
-         write(imprim,*) 'tefoar: erreur sommet ',ns2,' sans arete'
-         ierr = 8
-ccc         pause
-         return
-      endif
-      if( nosoar(4,na) .le. 0 ) then
-         write(imprim,*) 'tefoar: erreur sommet ',ns2,
-     %                   ' dans aucun triangle'
-         ierr = 8
-ccc         pause
-         return
-      endif
-c
-c     le premier passage: recherche dans le sens ns1->ns2
-      ipas = 0
-c
-c     recherche des triangles intersectes par le segment ns1-ns2
-c     ==========================================================
- 3    x1  = pxyd(1,ns1)
-      y1  = pxyd(2,ns1)
-      x2  = pxyd(1,ns2)
-      y2  = pxyd(2,ns2)
-      d12 = (x2-x1)**2 + (y2-y1)**2
-c
-c     recherche du triangle voisin dans le sens indirect de rotation
-      nsens = -1
-c
-c     recherche du no local du sommet ns1 dans l'un de ses triangles
- 10   na01 = noarst( ns1 )
-      if( na01 .le. 0 ) then
-         write(imprim,*) 'tefoar: sommet ',ns1,' sans arete'
-         ierr = 8
-ccc         pause
-         return
-      endif
-      nt0 = nosoar(4,na01)
-      if( nt0 .le. 0 ) then
-         write(imprim,*) 'tefoar: sommet ',ns1,' dans aucun triangle'
-         ierr = 8
-ccc         pause
-         return
-      endif
-c
-c     le numero des 3 sommets du triangle nt0 dans le sens direct
- 20   call nusotr( nt0, mosoar, nosoar, moartr, noartr, nosotr )
-      do 22 na00=1,3
-         if( nosotr(na00) .eq. ns1 ) goto 26
- 22   continue
-c
- 25   if( ipas .eq. 0 ) then
-c        le second passage: recherche dans le sens ns2->ns1
-c        tentative d'inversion des 2 sommets extremites de l'arete a forcer
-         na00 = ns1
-         ns1  = ns2
-         ns2  = na00
-         ipas = 1
-         goto 3
-      else
-c        les sens ns1->ns2 et ns2->ns1 ne donne pas de solution!
-         write(imprim,*)'tefoar:arete ',ns1,' - ',ns2,' a imposer'
-         write(imprim,*)'tefoar:anomalie sommet ',ns1,
-     %   'non dans le triangle de sommets ',(nosotr(i),i=1,3)
-         ierr = 11
-ccc         pause
-         return
-      endif
-c
-c     le numero des aretes suivante et precedente
- 26   na0 = nosui3( na00 )
-      na1 = nopre3( na00 )
-      ns3 = nosotr( na0 )
-      ns4 = nosotr( na1 )
-c
-c     point d'intersection du segment ns1-ns2 avec l'arete ns3-ns4
-c     ------------------------------------------------------------
-      call int1sd( ns1, ns2, ns3, ns4, pxyd, linter, x1, y1 )
-      if( linter .le. 0 ) then
-c
-c        pas d'intersection: rotation autour du point ns1
-c        pour trouver le triangle de l'autre cote de l'arete na01
-         if( nsens .lt. 0 ) then
-c           sens indirect de rotation: l'arete de sommet ns1
-            na01 = abs( noartr(na00,nt0) )
-         else
-c           sens direct de rotation: l'arete de sommet ns1 qui precede
-            na01 = abs( noartr(na1,nt0) )
-         endif
-c        le triangle de l'autre cote de l'arete na01
-         if( nosoar(4,na01) .eq. nt0 ) then
-            nt0 = nosoar(5,na01)
-         else
-            nt0 = nosoar(4,na01)
-         endif
-         if( nt0 .gt. 0 ) goto 20
-c
-c        le parcours sort du domaine
-c        il faut tourner dans l'autre sens autour de ns1
-         if( nsens .lt. 0 ) then
-            nsens = 1
-            goto 10
-         endif
-c
-c        dans les 2 sens, pas d'intersection => impossible
-c        essai avec l'arete inversee ns1 <-> ns2
-         if( ipas .eq. 0 ) goto 25
-         write(imprim,*) 'tefoar: arete ',ns1,' ',ns2,
-     %  ' sans intersection avec les triangles actuels'
-         write(imprim,*) 'revoyez les lignes du contour'
-         ierr = 12
-ccc         pause
-         return
-      endif
-c
-c     il existe une intersection avec l'arete opposee au sommet ns1
-c     =============================================================
-c     nbtrcf : nombre de triangles du cf
-      nbtrcf = 1
-      notrcf( 1 ) = nt0
-c
-c     le triangle oppose a l'arete na0 de nt0
- 30   noar = abs( noartr(na0,nt0) )
-      if( nosoar(4,noar) .eq. nt0 ) then
-         nt1 = nosoar(5,noar)
-      else
-         nt1 = nosoar(4,noar)
-      endif
-      if( nt1 .le. 0 ) then
-         write(imprim,*) 'erreur dans tefoar nt1=',nt1
-         read(lecteu,*) j
-      endif
-c
-c     le numero des 3 sommets du triangle nt1 dans le sens direct
-      call nusotr( nt1, mosoar, nosoar, moartr, noartr, nosotr )
-c
-c     le triangle nt1 contient il ns2 ?
-      do 32 j=1,3
-         if( nosotr(j) .eq. ns2 ) goto 70
- 32   continue
-c
-c     recherche de l'arete noar, na1 dans nt1 qui est l'arete na0 de nt0
-      do 34 na1=1,3
-         if( abs( noartr(na1,nt1) ) .eq. noar ) goto 35
- 34   continue
-c
-c     recherche de l'intersection de ns1-ns2 avec les 2 autres aretes de nt1
-c     ======================================================================
- 35   na2 = na1
-      do 50 i1 = 1,2
-c        l'arete suivante
-         na2 = nosui3(na2)
-c
-c        les 2 sommets de l'arete na2 de nt1
-         noar = abs( noartr(na2,nt1) )
-         ns3  = nosoar( 1, noar )
-         ns4  = nosoar( 2, noar )
-c
-c        point d'intersection du segment ns1-ns2 avec l'arete ns3-ns4
-c        ------------------------------------------------------------
-         call int1sd( ns1, ns2, ns3, ns4, pxyd, linter, x , y )
-         if( linter .gt. 0 ) then
-c
-c           les 2 aretes s'intersectent en (x,y)
-c           distance de (x,y) a ns3 et ns4
-            d3 = (pxyd(1,ns3)-x)**2 + (pxyd(2,ns3)-y)**2
-            d4 = (pxyd(1,ns4)-x)**2 + (pxyd(2,ns4)-y)**2
-c           nsp est le point le plus proche de (x,y)
-            if( d3 .lt. d4 ) then
-               nsp = ns3
-               d   = d3
-            else
-               nsp = ns4
-               d   = d4
-            endif
-            if( d .gt. 1d-5*d12 ) goto 60
-c
-c           ici le sommet nsp est trop proche de l'arete perdue ns1-ns2
-            if( nsp .le. nbarpi ) then
-c              point utilisateur ou frontalier donc non supprimable
-               write(imprim,*) 'tefoar: sommet nsp=',nsp,
-     %' frontalier trop proche de l''arete perdue ns1=',ns1,'-ns2=',ns2
-           write(imprim,*)'s',nsp,': x=', pxyd(1,nsp),' y=', pxyd(2,nsp)
-           write(imprim,*)'s',ns1,': x=', pxyd(1,ns1),' y=', pxyd(2,ns1)
-           write(imprim,*)'s',ns2,': x=', pxyd(1,ns2),' y=', pxyd(2,ns2)
-           write(imprim,*)'arete s',ns1,'-s',ns2,
-     %                    ' coupe arete s',ns3,'-s',ns4,' en (x,y)'
-          write(imprim,*) 's',ns3,': x=', pxyd(1,ns3),' y=', pxyd(2,ns3)
-          write(imprim,*) 's',ns4,': x=', pxyd(1,ns4),' y=', pxyd(2,ns4)
-          write(imprim,*) 'intersection en: x=', x, ' y=', y
-          write(imprim,*) 'distance ns1-ns2=', sqrt(d12)
-          write(imprim,*) 'distance (x,y) au plus proche',ns3,ns4,'=',
-     %                     sqrt(d)
-               ierr = 13
-ccc               pause
-               return
-            endif
-c
-c           le sommet interne nsp est supprime en mettant tous les triangles
-c           l'ayant comme sommet dans la pile notrcf des triangles a supprimer
-c           ------------------------------------------------------------------
-ccc            write(imprim,*) 'tefoar: le sommet ',nsp,' est supprime'
-c           construction de la liste des triangles de sommet nsp
-            call trp1st( nsp,    noarst, mosoar, nosoar,
-     %                   moartr, mxartr, noartr,
-     %                   mxpitr, nbt, lapitr )
-            if( nbt .le. 0 ) then
-c              les triangles de sommet nsp ne forme pas une "boule"
-c              avec ce sommet nsp pour "centre"
-               write(imprim,*)
-     %        'tefoar: les triangles autour du sommet ',nsp,
-     %        ' ne forme pas une etoile'
-               nbt = -nbt
-            endif
-c
-c           ajout des triangles de sommet nsp a notrcf
-            nbtrc0 = nbtrcf
-            do 38 j=1,nbt
-               nt = lapitr(j)
-               do 37 k=nbtrcf,1,-1
-                  if( nt .eq. notrcf(k) ) goto 38
- 37            continue
-c              triangle ajoute
-               nbtrcf = nbtrcf + 1
-               notrcf( nbtrcf ) = nt
- 38         continue
-c
-c           ce sommet supprime n'appartient plus a aucun triangle
-            noarst( nsp ) = 0
-c
-c           ns2 est-il un sommet des triangles empiles?
-c           -------------------------------------------
-            do 40 nt=nbtrc0+1,nbtrcf
-c              le triangle a supprimer nt
-               nt1 = notrcf( nt )
-c              le numero des 3 sommets du triangle nt1 dans le sens direct
-               call nusotr( nt1, mosoar, nosoar, moartr, noartr, nosotr)
-               do 39 k=1,3
-c                 le sommet k de nt1
-                  if( nosotr( k ) .eq. ns2 ) then
-c                    but atteint
-                     goto 80
-                  endif
- 39            continue
- 40         continue
-c
-c           recherche du plus proche point d'intersection de ns1-ns2
-c           par rapport a ns2 avec les aretes des triangles ajoutes
-            nt0  = 0
-            dmin = d12 * 10000
-            do 48 nt=nbtrc0+1,nbtrcf
-               nt1 = notrcf( nt )
-c              le numero des 3 sommets du triangle nt1 dans le sens direct
-               call nusotr( nt1, mosoar, nosoar, moartr, noartr, nosotr)
-               do 45 k=1,3
-c                 les 2 sommets de l'arete k de nt
-                  ns3 = nosotr( k )
-                  ns4 = nosotr( nosui3(k) )
-c
-c                 point d'intersection du segment ns1-ns2 avec l'arete ns3-ns4
-c                 ------------------------------------------------------------
-                  call int1sd( ns1, ns2, ns3, ns4, pxyd,
-     %                         linter, x , y )
-                   if( linter .gt. 0 ) then
-c                    les 2 aretes s'intersectent en (x,y)
-                     d = (x-x2)**2+(y-y2)**2
-                     if( d .lt. dmin ) then
-                        nt0  = nt1
-                        na0  = k
-                        dmin = d
-                     endif
-                  endif
- 45            continue
- 48         continue
-c
-c           redemarrage avec le triangle nt0 et l'arete na0
-            if( nt0 .gt. 0 ) goto 30
-c
-            write(imprim,*) 'tefoar: algorithme defaillant'
-            ierr = 14
-ccc            pause
-            return
-         endif
- 50   continue
-c
-c     pas d'intersection differente de l'initiale => sommet sur ns1-ns2
-c     tentative d'inversion des sommets de l'arete ns1-ns2
-      if( ipas .eq. 0 ) goto 25
-      write(imprim,*)
-      write(imprim,*) 'tefoar 50: revoyez vos donnees'
-      write(imprim,*) 'les lignes fermees doivent etre disjointes'
-      write(imprim,*) 'verifiez si elles ne se coupent pas'
-      ierr = 15
-ccc      pause
-      return
-c
-c     cas sans probleme : intersection differente de celle initiale
-c     =================   =========================================
- 60   nbtrcf = nbtrcf + 1
-      notrcf( nbtrcf ) = nt1
-c     passage au triangle suivant
-      na0 = na2
-      nt0 = nt1
-      goto 30
-c
-c     ----------------------------------------------------------
-c     ici toutes les intersections de ns1-ns2 ont ete parcourues
-c     tous les triangles intersectes ou etendus forment les
-c     nbtrcf triangles du tableau notrcf
-c     ----------------------------------------------------------
- 70   nbtrcf = nbtrcf + 1
-      notrcf( nbtrcf ) = nt1
-c
-c     formation du cf des aretes simples des triangles de notrcf
-c     et destruction des nbtrcf triangles du tableau noartr
-c     attention: le chainage lchain du tableau nosoar devient actif
-c     =============================================================
- 80   if( nbtrcf*3 .gt. mxarcf ) then
-         write(imprim,*) 'saturation du tableau noarcf'
-         ierr = 10
-ccc         pause
-         return
-      endif
-c
-      call focftr( nbtrcf, notrcf, nbarpi, pxyd,   noarst,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, n1artr, noartr,
-     %             nbarcf, n1arcf, noarcf, nbstpe, nostpe,
-     %             ierr )
-      if( ierr .ne. 0 ) return
-c
-c     chainage des aretes vides dans le tableau noarcf
-c     ------------------------------------------------
-c     decalage de 2 aretes car 2 aretes sont necessaires ensuite pour
-c     integrer 2 fois l'arete perdue et former ainsi 2 cf
-c     comme nbtrcf*3 minore mxarcf il existe au moins 2 places vides
-c     derriere => pas de test de debordement
-      n1arcf(0) = nbarcf+3
-      mmarcf = min(8*nbarcf,mxarcf)
-      do 90 i=nbarcf+3,mmarcf
-         noarcf(2,i) = i+1
- 90   continue
-      noarcf(2,mmarcf) = 0
-c
-c     reperage des sommets ns1 ns2 de l'arete perdue dans le cf
-c     ---------------------------------------------------------
-      ns1   = nosoar( 1, narete )
-      ns2   = nosoar( 2, narete )
-      ns(1) = ns1
-      ns(2) = ns2
-      do 120 i=1,2
-c        la premiere arete dans noarcf du cf
-         na0 = n1arcf(1)
- 110     if( noarcf(1,na0) .ne. ns(i) ) then
-c           passage a l'arete suivante
-            na0 = noarcf( 2, na0 )
-            goto 110
-         endif
-c        position dans noarcf du sommet i de l'arete perdue
-         nacf(i) = na0
- 120  continue
-c
-c     formation des 2 cf chacun contenant l'arete ns1-ns2
-c     ---------------------------------------------------
-c     sauvegarde de l'arete suivante de celle de sommet ns1
-      na0 = noarcf( 2, nacf1 )
-      nt1 = noarcf( 3, nacf1 )
-c
-c     le premier cf
-      n1arcf( 1 ) = nacf1
-c     l'arete suivante dans le premier cf
-      noarcf( 2, nacf1 ) = nacf2
-c     cette arete est celle perdue
-      noarcf( 3, nacf1 ) = narete
-c
-c     le second cf
-c     l'arete doublee
-      n1 = nbarcf + 1
-      n2 = nbarcf + 2
-c     le premier sommet de la premiere arete du second cf
-      noarcf( 1, n1 ) = ns2
-c     l'arete suivante dans le second cf
-      noarcf( 2, n1 ) = n2
-c     cette arete est celle perdue
-      noarcf( 3, n1 ) = narete
-c     la seconde arete du second cf
-      noarcf( 1, n2 ) = ns1
-      noarcf( 2, n2 ) = na0
-      noarcf( 3, n2 ) = nt1
-      n1arcf( 2 ) = n1
-c
-c     recherche du precedent de nacf2
- 130  na1 = noarcf( 2, na0 )
-      if( na1 .ne. nacf2 ) then
-c        passage a l'arete suivante
-         na0 = na1
-         goto 130
-      endif
-c     na0 precede nacf2 => il precede n1
-      noarcf( 2, na0 ) = n1
-c
-c     depart avec 2 cf
-      nbcf = 2
-c
-c     triangulation directe des 2 contours fermes
-c     l'arete ns1-ns2 devient une arete de la triangulation des 2 cf
-c     ==============================================================
-      call tridcf( nbcf,   nbstpe, nostpe, pxyd,   noarst,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, n1artr, noartr,
-     %             mxarcf, n1arcf, noarcf, larmin,
-     %             nbtrcf, notrcf, ierr )
-c
-      return
-      end
-
-
-      subroutine te4ste( nbsomm, mxsomm, pxyd, ntrp, letree,
-     &                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    decouper un te ntrp de letree en 4 sous-triangles
-c -----    eliminer les sommets de te trop proches des points
-c
-c entrees:
-c --------
-c mxsomm : nombre maximal de points declarables dans pxyd
-c ntrp   : numero letree du triangle a decouper en 4 sous-triangles
-c
-c modifies :
-c ----------
-c nbsomm : nombre actuel de points dans pxyd
-c pxyd   : tableau des coordonnees des points
-c          par point : x  y  distance_souhaitee
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c      letree(0,0) :  no du 1-er te vide dans letree
-c      letree(0,1) : maximum du 1-er indice de letree (ici 8)
-c      letree(0,2) : maximum declare du 2-eme indice de letree (ici mxtree)
-c      letree(0:8,1) : racine de l'arbre  (triangle sans sur triangle)
-c      si letree(0,.)>0 alors
-c         letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c      sinon
-c         letree(0:3,j) :-no pxyd des 1 a 4 points internes au triangle j
-c                         0  si pas de point
-c                        ( j est alors une feuille de l'arbre )
-c      letree(4,j) : no letree du sur-triangle du triangle j
-c      letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c      letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c sorties :
-c ---------
-c ierr    : 0 si pas d'erreur, 51 saturation letree, 52 saturation pxyd
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    juillet 1994
-c2345x7..............................................................012
-      common / unites / lecteu,imprim,nunite(30)
-      integer           letree(0:8,0:*)
-      double precision  pxyd(3,mxsomm)
-      integer           np(0:3),milieu(3)
-c
-c     debut par l'arete 2 du triangle ntrp
-      ierr = 0
-      i1 = 2
-      i2 = 3
-      do 30 i=1,3
-c
-c        le milieu de l'arete i1 existe t il deja ?
-         call n1trva( ntrp, i1, letree, noteva, niveau )
-         if( noteva .gt. 0 ) then
-c           il existe un te voisin
-c           s'il existe 4 sous-triangles le milieu existe deja
-            if( letree(0,noteva) .gt. 0 ) then
-c              le milieu existe
-               nsot = letree(0,noteva)
-               milieu(i) = letree( 5+nopre3(i1), nsot )
-               goto 25
-            endif
-         endif
-c
-c        le milieu n'existe pas. il est cree
-         nbsomm = nbsomm + 1
-         if( nbsomm .gt. mxsomm ) then
-c           plus assez de place dans pxyd
-            write(imprim,*) 'te4ste: saturation pxyd'
-            write(imprim,*)
-            ierr = 52
-            return
-         endif
-c        le milieu de l'arete i
-         milieu(i) = nbsomm
-c
-c        ntrp est le triangle de milieux d'arete ces 3 sommets
-         ns1    = letree( 5+i1, ntrp )
-         ns2    = letree( 5+i2, ntrp )
-         pxyd(1,nbsomm) = ( pxyd(1,ns1) + pxyd(1,ns2) ) * 0.5
-         pxyd(2,nbsomm) = ( pxyd(2,ns1) + pxyd(2,ns2) ) * 0.5
-c
-c        l'arete et milieu suivant
- 25      i1 = i2
-         i2 = nosui3( i2 )
- 30   continue
-c
-      do 50 i=0,3
-c
-c        le premier triangle vide
-         nsot = letree(0,0)
-         if( nsot .le. 0 ) then
-c           manque de place. saturation letree
-            ierr = 51
-            write(imprim,*) 'te4ste: saturation letree'
-            write(imprim,*)
-            return
-         endif
-c
-c        mise a jour du premier te libre
-         letree(0,0) = letree(0,nsot)
-c
-c        nsot est le i-eme sous triangle
-         letree(0,nsot) = 0
-         letree(1,nsot) = 0
-         letree(2,nsot) = 0
-         letree(3,nsot) = 0
-c
-c        le numero des points et sous triangles dans ntrp
-         np(i) = -letree(i,ntrp)
-         letree(i,ntrp) = nsot
-c
-c        le sommet commun avec le triangle ntrp
-         letree(5+i,nsot) = letree(5+i,ntrp)
-c
-c        le sur-triangle et numero de sous-triangle de nsot
-c        a laisser ici car incorrect sinon pour i=0
-         letree(4,nsot) = ntrp
-         letree(5,nsot) = i
-c
-c        le sous-triangle du triangle
-         letree(i,ntrp) = nsot
- 50   continue
-c
-c     le numero des nouveaux sommets milieux
-      nsot = letree(0,ntrp)
-      letree(6,nsot) = milieu(1)
-      letree(7,nsot) = milieu(2)
-      letree(8,nsot) = milieu(3)
-c
-      nsot = letree(1,ntrp)
-      letree(7,nsot) = milieu(3)
-      letree(8,nsot) = milieu(2)
-c
-      nsot = letree(2,ntrp)
-      letree(6,nsot) = milieu(3)
-      letree(8,nsot) = milieu(1)
-c
-      nsot = letree(3,ntrp)
-      letree(6,nsot) = milieu(2)
-      letree(7,nsot) = milieu(1)
-c
-c     repartition des eventuels 4 points np dans ces 4 sous-triangles
-c     il y a obligatoirement suffisamment de place
-      do 110 i=0,3
-         if( np(i) .gt. 0 ) then
-            nsot = notrpt( pxyd(1,np(i)), pxyd, ntrp, letree )
-c           ajout du point
-            do 100 i1=0,3
-               if( letree(i1,nsot) .eq. 0 ) then
-c                 place libre a occuper
-                  letree(i1,nsot) = -np(i)
-                  goto 110
-               endif
- 100        continue
-         endif
- 110  continue
-      end
-
-
-      subroutine tesuqm( quamal, nbarpi, pxyd,   noarst,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   mxarcf, n1arcf, noarcf,
-     %                   larmin, notrcf, liarcf,
-     %                   quamin )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    supprimer de la triangulation les triangles de qualite
-c -----    inferieure a quamal
-c
-c entrees:
-c --------
-c quamal : qualite des triangles au dessous de laquelle supprimer des sommets
-c nbarpi : numero du dernier point interne impose par l'utilisateur
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c
-c modifies:
-c ---------
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c auxiliaires :
-c -------------
-c n1arcf : tableau (0:mxarcf) auxiliaire d'entiers
-c noarcf : tableau (3,mxarcf) auxiliaire d'entiers
-c larmin : tableau (mxarcf)   auxiliaire d'entiers
-c notrcf : tableau (mxarcf)   auxiliaire d'entiers
-c liarcf : tableau (mxarcf)   auxiliaire d'entiers
-c
-c sortie :
-c --------
-c quamin : qualite minimale des triangles
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet Laboratoire JL Lions UPMC Paris  Octobre 2006
-c....................................................................012
-      parameter       ( lchain=6, mxtrqm=1024 )
-      common / unites / lecteu,imprim,intera,nunite(29)
-      double precision  pxyd(3,*), quamal, qualit, quamin
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*)
-      integer           nosotr(3), notraj(3)
-      double precision  surtd2, s123, s142, s143, s234,
-     %                  s12, s34, a12
-      integer           notrqm(mxtrqm)
-      double precision  qutrqm(mxtrqm)
-      integer           n1arcf(0:mxarcf),
-     %                  noarcf(3,mxarcf),
-     %                  larmin(mxarcf),
-     %                  notrcf(mxarcf),
-     %                  liarcf(mxarcf)
-c
-      ierr = 0
-c
-c     initialisation du chainage des aretes des cf => 0 arete de cf
-      do 5 narete=1,mxsoar
-         nosoar( lchain, narete ) = -1
- 5    continue
-c
-c     recherche des triangles de plus basse qualite
-      quamin = 2.0
-      nbtrqm = 0
-      do 10 nt=1,mxartr
-         if( noartr(1,nt) .eq. 0 ) goto 10
-c        le numero des 3 sommets du triangle nt
-         call nusotr( nt, mosoar, nosoar, moartr, noartr, nosotr )
-c        la qualite du triangle ns1 ns2 ns3
-         call qutr2d( pxyd(1,nosotr(1)), pxyd(1,nosotr(2)),
-     %                pxyd(1,nosotr(3)), qualit )
-         if( qualit .lt. quamal ) then
-            if( nbtrqm .ge. mxtrqm ) goto 10
-            nbtrqm = nbtrqm + 1
-            notrqm(nbtrqm) = nt
-            qutrqm(nbtrqm) = qualit
-         endif
- 10   continue
-c
-c     tri croissant des qualites minimales des triangles
-      call tritas( nbtrqm, qutrqm, notrqm )
-c
-c     le plus mauvais triangle
-      ntqmin = notrqm(1)
-      quamin = qutrqm(1)
-c
-      do 100 n=1,nbtrqm
-c
-c        no du triangle de mauvaise qualite
-         ntqmin = notrqm( n )
-c
-c        le triangle a t il ete traite?
-         if( noartr(1,ntqmin) .eq. 0 ) goto 100
-c
-ccc         print *
-ccc         print *,'tesuqm: triangle',ntqmin,' qualite=',qutrqm(n)
-ccc         print *,'tesuqm: noartr(',ntqmin,')=',
-ccc     %           (noartr(j,ntqmin),j=1,moartr)
-cccc
-ccc         do 12 j=1,3
-ccc            noar = noartr(j,ntqmin)
-ccc         print*,'arete',noar,' nosoar=',(nosoar(i,abs(noar)),i=1,mosoar)
-ccc 12      continue
-c
-c        le numero des 3 sommets du triangle ntqmin
-         call nusotr( ntqmin, mosoar, nosoar, moartr, noartr, nosotr )
-c
-ccc         do 15 j=1,3
-ccc            nbt = nosotr(j)
-ccc            print *,'sommet',nbt,':  x=',pxyd(1,nbt),'  y=',pxyd(2,nbt)
-ccc 15      continue
-c
-c        recherche des triangles adjacents par les aretes de ntqmin
-         nbt = 0
-         do 20 j=1,3
-c           le no de l'arete j dans nosoar
-            noar = abs( noartr(j,ntqmin) )
-c           le triangle adjacent a l'arete j de ntqmin
-            if( nosoar(4,noar) .eq. ntqmin ) then
-               notraj(j) = nosoar(5,noar)
-            else
-               notraj(j) = nosoar(4,noar)
-            endif
-            if( notraj(j) .gt. 0 ) then
-c              1 triangle adjacent de plus
-               naop = j
-               nbt  = nbt + 1
-            else
-c              pas de triangle adjacent
-               notraj(j) = 0
-            endif
- 20      continue
-c
-         if( nbt .eq. 1 ) then
-c
-c           ntqmin a un seul triangle oppose par l'arete naop
-c           le triangle a 2 aretes frontalieres est plat
-c           l'arete commune aux 2 triangles est rendue Delaunay
-c           ---------------------------------------------------
-            noar = abs( noartr(naop,ntqmin) )
-            if( nosoar(3,noar) .ne. 0 ) then
-c              arete frontaliere
-               goto 100
-            endif
-c
-c           l'arete appartient a deux triangles actifs
-c           le numero des 4 sommets du quadrangle des 2 triangles
-            call mt4sqa( noar, moartr, noartr, mosoar, nosoar,
-     %                   ns1, ns2, ns3, ns4 )
-            if( ns4 .eq. 0 ) goto 100
-c
-c           carre de la longueur de l'arete ns1 ns2
-           a12=(pxyd(1,ns2)-pxyd(1,ns1))**2+(pxyd(2,ns2)-pxyd(2,ns1))**2
-c
-c           comparaison de la somme des aires des 2 triangles
-c           -------------------------------------------------
-c           calcul des surfaces des triangles 123 et 142 de cette arete
-            s123=surtd2( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3) )
-            s142=surtd2( pxyd(1,ns1), pxyd(1,ns4), pxyd(1,ns2) )
-ccc            print *,'tesuqm: ns4=',ns4,' x=',pxyd(1,ns4),
-ccc     %                                 ' y=',pxyd(2,ns4)
-ccc            print *,'tesuqm: s123=',s123,'  s142=',s142
-            s12 = abs( s123 ) + abs( s142 )
-            if( s12 .le. 0.001*a12 ) goto 100
-c
-c           calcul des surfaces des triangles 143 et 234 de cette arete
-            s143=surtd2( pxyd(1,ns1), pxyd(1,ns4), pxyd(1,ns3) )
-            s234=surtd2( pxyd(1,ns2), pxyd(1,ns3), pxyd(1,ns4) )
-ccc            print *,'tesuqm: s143=',s143,'  s234=',s234
-            s34 = abs( s234 ) + abs( s143 )
-ccc            print *,'tesuqm: s12=',s12,'  s34=',s34
-c
-            if( abs(s34-s12) .gt. 1d-14*s34 ) goto 100
-c
-c           quadrangle convexe 
-c           echange de la diagonale 12 par 34 des 2 triangles
-c           -------------------------------------------------
-            call te2t2t( noar,   mosoar, n1soar, nosoar, noarst,
-     %                   moartr, noartr, noar34 )
-ccc            print *,'tesuqm: sortie te2t2t avec noar34=',noar34
-c
-c
-         else if( nbt .eq. 2 ) then
-c
-c           ntqmin a 2 triangles opposes par l'arete naop
-c           essai de supprimer le sommet non frontalier
-c           ---------------------------------------------
-            do 30 j=1,3
-               if( notraj(j) .eq. 0 ) goto 33
- 30         continue
-c
-c           arete sans triangle adjacent
- 33         noar = abs( noartr(j,ntqmin) )
-ccc            print *,'tesuqm: nosoar(',noar,')=',
-ccc     %              (nosoar(j,noar),j=1,mosoar)
-            if( noar .le. 0 ) goto 100
-c
-c           ses 2 sommets
-            ns1 = nosoar(1,noar)
-            ns2 = nosoar(2,noar)
-c
-c           ns3 l'autre sommet non frontalier
-            do 36 j=1,3
-               ns3 = nosotr(j)
-               if( ns3 .ne. ns1 .and. ns3 .ne. ns2 ) goto 40
- 36         continue
-c
- 40         if( ns3 .gt. nbarpi ) then
-c
-c              le sommet ns3 non frontalier va etre supprime
-ccc               print*,'tesuqm: ntqmin=',ntqmin,
-ccc     %                ' demande la suppression ns3=',ns3
-               call te1stm( ns3,    nbarpi, pxyd,   noarst,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      mxarcf, n1arcf, noarcf,
-     %                      larmin, notrcf, liarcf, ierr )
-ccc               if( ierr .eq. 0 ) then
-ccc                  print *,'tesuqm: st supprime ns3=',ns3
-ccc               else
-ccc                print *,'tesuqm: ST NON SUPPRIME ns3=',ns3,' ierr=',ierr
-ccc               endif
-            endif
-c
-         endif
-c
- 100  continue
-c
-      return
-      end
-
-
-      subroutine tritas( nb, a, noanc )
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    tri croissant du tableau a de nb reels par la methode du tas
-c -----    methode due a williams et floyd     o(n log n )
-c          version avec un pointeur sur un tableau dont est extrait a
-c entrees:
-c --------
-c nb     : nombre de termes du tableau a
-c a      : les nb reels double precision a trier dans a
-c noanc  : numero ancien position de l'information (souvent noanc(i)=i)
-c
-c sorties:
-c --------
-c a      : les nb reels croissants dans a
-c noanc  : numero ancien position de l'information
-c          noanc(1)=no position pointeur sur a(1), ...
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : perronnet alain analyse numerique upmc paris     fevrier 1991
-c ...................................................................012
-      integer           noanc(1:nb)
-      integer           pere,per,fil,fils1,fils2,fin
-      double precision  a(1:nb),aux
-c
-c     formation du tas sous forme d'un arbre binaire
-      fin = nb + 1
-c
-      do 20 pere = nb/2,1,-1
-c
-c        descendre pere jusqu'a n dans a  de facon  a respecter
-c        a(pere)>a(j) pour j fils ou petit fils de pere
-c        c-a-d pour tout j tel que pere <= e(j/2)<j<nb+1
-c                                          a(j/2) >= a(j)
-c                                                 >= a(j+1)
-c
-c        protection du pere
-         per = pere
-c
-c        le fils 1 du pere
- 10      fils1 = 2 * per
-         if( fils1 .lt. fin ) then
-c           il existe un fils1
-            fil   = fils1
-            fils2 = fils1 + 1
-            if( fils2 .lt. fin ) then
-c              il existe 2 fils . selection du plus grand
-               if( a(fils2) .gt. a(fils1) ) fil = fils2
-            endif
-c
-c           ici fil est le plus grand des fils
-            if( a(per) .lt. a(fil) ) then
-c              permutation de per et fil
-               aux    = a(per)
-               a(per) = a(fil)
-               a(fil) = aux
-c              le pointeur est aussi permute
-               naux       = noanc(per)
-               noanc(per) = noanc(fil)
-               noanc(fil) = naux
-c              le nouveau pere est le fils permute
-               per = fil
-               goto 10
-            endif
-         endif
- 20   continue
-c
-c     a chaque iteration la racine (plus grande valeur actuelle de a)
-c     est mise a sa place (fin actuelle du tableau) et permutee avec
-c     la valeur qui occupe cette place, puis descente de cette nouvelle
-c     racine pour respecter le fait que tout pere est plus grand que tous
-c     ses fils
-c     c-a-d pour tout j tel que pere <= e(j/2)<j<nb+1
-c                                          a(j/2) >= a(j)
-c                                                 >= a(j+1)
-      do 50 fin=nb,2,-1
-c        la permutation premier dernier
-         aux    = a(fin)
-         a(fin) = a(1)
-         a(1)   = aux
-c        le pointeur est aussi permute
-         naux       = noanc(fin)
-         noanc(fin) = noanc(1)
-         noanc(1)   = naux
-c
-c        descendre a(1) entre 1 et fin
-         per = 1
-c
-c        le fils 1 du pere
- 30      fils1 = 2 * per
-         if( fils1 .lt. fin ) then
-c           il existe un fils1
-            fil   = fils1
-            fils2 = fils1 + 1
-            if( fils2 .lt. fin ) then
-c              il existe 2 fils . selection du plus grand
-               if( a(fils2) .gt. a(fils1) ) fil = fils2
-            endif
-c
-c           ici fil est le plus grand des fils
-            if( a(per) .lt. a(fil) ) then
-c              permutation de per et fil
-               aux    = a(per)
-               a(per) = a(fil)
-               a(fil) = aux
-c              le pointeur est aussi permute
-               naux       = noanc(per)
-               noanc(per) = noanc(fil)
-               noanc(fil) = naux
-c              le nouveau pere est le fils permute
-               per = fil
-               goto 30
-            endif
-         endif
- 50   continue
-      end
index d11f5b696200e535249a470f6386336e70bc9262..3cf7e40357c5850ab393d9dbe33599e42f75be38 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 5c64804eca223a049966f2fa596578f2818f5c12..2799e4494d5292f79b638af2bc02776369c57507 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include <vtkImplicitBoolean.h>
 #include <vtkImplicitFunctionCollection.h>
 
+#include <vtkThreshold.h>
+#include <vtkPassThrough.h>
+
 #include "utilities.h"
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
 
 SMESH_ActorDef* SMESH_ActorDef::New(){
   return new SMESH_ActorDef();
@@ -114,7 +112,7 @@ SMESH_Actor* SMESH_Actor::New(TVisualObjPtr theVisualObj,
 
 SMESH_ActorDef::SMESH_ActorDef()
 {
-  if(MYDEBUG) MESSAGE("SMESH_ActorDef - "<<this);
+  MESSAGE("SMESH_ActorDef - "<<this);
 
   SALOME_Actor::SetVisibility(false); // avoid update of pipelines
 
@@ -125,6 +123,7 @@ SMESH_ActorDef::SMESH_ActorDef()
   myIsPointsVisible = false;
   myIsEntityModeCache = false;
   myRepresentationCache = 0;
+  objectEntitiesCache = 0;
 
   myHighlightActor = SMESH_SVTKActor::New();
   myHighlightActor->Delete(); // vtkSmartPointer!
@@ -589,7 +588,7 @@ SMESH_ActorDef::SMESH_ActorDef()
 
 SMESH_ActorDef::~SMESH_ActorDef()
 {
-  if(MYDEBUG) MESSAGE("~SMESH_ActorDef - "<<this);
+  MESSAGE("~SMESH_ActorDef - "<<this);
 
   // Please keep the order same as one in the header file
 
@@ -842,6 +841,8 @@ void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode )
   my3DActor->GetMapper()->SetScalarVisibility(false);
   myBallActor->GetMapper()->SetScalarVisibility(false);
   myScalarBarActor->SetVisibility(false);
+  ClipThreshold(false);
+  SetWireframeOff(false);
 
   bool anIsScalarVisible = theMode > eNone;
 
@@ -952,6 +953,14 @@ void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode )
       myControlActor = my3DActor;
       break;
     }
+    case eScaledJacobian:
+    {
+      SMESH::Controls::ScaledJacobian* aControl = new SMESH::Controls::ScaledJacobian();
+      aControl->SetPrecision( myControlsPrecision );
+      myFunctor.reset( aControl );
+      myControlActor = my3DActor;
+      break;
+    }
     case eMaxElementLength2D:
     {
       SMESH::Controls::MaxElementLength2D* aControl = new SMESH::Controls::MaxElementLength2D();
@@ -1004,6 +1013,14 @@ void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode )
       myControlActor = my2DActor;
       break;
     }
+    case eWarping3D:
+    {
+      SMESH::Controls::Warping3D* aControl = new SMESH::Controls::Warping3D();
+      aControl->SetPrecision(myControlsPrecision);
+      myFunctor.reset(aControl);
+      myControlActor = my3DActor;
+      break;
+    }
     case eSkew:
     {
       SMESH::Controls::Skew* aControl = new SMESH::Controls::Skew();
@@ -1069,6 +1086,10 @@ void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode )
         my1DExtActor->SetExtControlMode(myFunctor,myScalarBarActor,myLookupTable);
         UpdateDistribution();
         break;
+      case eWarping3D:
+        my2DExtActor->SetExtControlMode(myFunctor, myScalarBarActor, myLookupTable);
+        UpdateDistribution();
+        break;
       default:
         myControlActor->SetControlMode(myFunctor,myScalarBarActor,myLookupTable);
         UpdateDistribution();
@@ -1111,7 +1132,6 @@ void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode )
     QString aTitle = QString(myScalarBarActor->GetTitle());
     aTitle.replace(QRegExp("(:\\s).*"),"\\1"+ QString::number(GetNumberControlEntities()));
     myScalarBarActor->SetTitle(aTitle.toUtf8().constData());
-
   }
   else {
     if(theCheckEntityMode){
@@ -1507,12 +1527,14 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation)
   my3DExtActor->VisibilityOff();
 
   myScalarBarActor->VisibilityOff();
+  
 
   if ( GetVisibility() ) {
     if ( theIsUpdateRepersentation )
       SetRepresentation(GetRepresentation());
-
-    if(myControlMode != eNone) {
+  
+    // Avoid calling VisibilityOn of ExtActor after editing hypothesis. Use the same criteria than scalarBarActor
+    if( myControlMode != eNone && myFunctor && myVisualObj->GetNbEntities( myFunctor->GetType() ) ) { 
       switch(myControlMode) {
       case eFreeNodes:
       case eCoincidentNodes:
@@ -1533,6 +1555,7 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation)
       case eBareBorderFace:
       case eOverConstrainedFace:
       case eCoincidentElems2D:
+      case eWarping3D:
         my2DExtActor->VisibilityOn();
         break;
       case eBareBorderVolume:
@@ -1542,14 +1565,14 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation)
         break;
       default:;
       }
-      if ( myFunctor && myVisualObj->GetNbEntities( myFunctor->GetType() ))
-        myScalarBarActor->VisibilityOn();
-    }
+      myScalarBarActor->VisibilityOn();
+    }    
 
     if ( GetPickable( ))
       myPickableActor->VisibilityOn();
 
-    if ( GetRepresentation() != ePoint )
+    if ( GetRepresentation() != ePoint && 
+      !(IsClipThresholdOn() && GetActorForThreshold() != myControlActor)) // Avoid calling VisibilityOn if for display result of Threshold Criteria need only ExtActor
     {
       if(myEntityMode & e0DElements  ){
         my0DActor->VisibilityOn();
@@ -1652,6 +1675,12 @@ void SMESH_ActorDef::SetEntityMode(unsigned int theMode)
     SetRepresentation( ePoint );
   }
 
+  if ( anObjectEntities != 0 && objectEntitiesCache == 0 )
+  {
+    objectEntitiesCache = anObjectEntities;
+    SetRepresentation( eSurface );
+  }
+
   if ( myEntityMode != theMode )
   {
     myEntityMode = theMode; // entities to show
@@ -1819,6 +1848,8 @@ void SMESH_ActorDef::UpdateHighlight()
   case SMESH_DeviceActor::eSurface:
   case SMESH_DeviceActor::eWireframe:
     {
+      anIsVisible = anIsVisible && !IsWireframeOff();
+
       if(myIsHighlighted) {
         myHighlitableActor->SetProperty(myHighlightProp);
       }else if(myIsPreselected){
@@ -1927,7 +1958,7 @@ void SMESH_ActorDef::Render(vtkRenderer* /*ren*/)
 
 void SMESH_ActorDef::Update()
 {
-  if(MYDEBUG) MESSAGE("SMESH_ActorDef::Update");
+  MESSAGE("SMESH_ActorDef::Update");
 
   myVisualObj->Update();
 
@@ -2485,6 +2516,71 @@ void SMESH_ActorDef::UpdateScalarBar()
 
 }
 
+// Get Actor for Threshold criteria compute
+SMESH_DeviceActor* SMESH_ActorDef::GetActorForThreshold()
+{
+  switch (myControlMode) {
+  case eLength2D:
+    return my1DExtActor;
+  case eWarping3D:
+    return my2DExtActor;
+  default:;
+    return myControlActor;
+  }
+}
+
+// Hides the cells beyond threshold if isThresholdOn == true.
+void SMESH_ActorDef::ClipThreshold(bool isThresholdOn,double min /*= 0.0*/, double max /*= 0.0*/)
+{
+  SMESH_DeviceActor* anActor = GetActorForThreshold();
+  if (anActor != myControlActor)
+    myControlActor->VisibilityOff();
+
+  myIsClipThresholdOn = isThresholdOn;
+  if (isThresholdOn)
+  {
+    // Initialize the filter
+    vtkSmartPointer<vtkThreshold> threshold = vtkSmartPointer<vtkThreshold>::New();
+
+    // We have set scalar data with SMESH_DeviceActor::SetControlMode() call as vtkDataSetAttributes::SCALARS.
+    // So, we don't need to pass an array name in SetInputArrayToProcess().
+    threshold->SetInputConnection(anActor->myMergeFilter->GetOutputPort());
+    threshold->SetInputArrayToProcess(0, 0, 0, vtkDataObject::FIELD_ASSOCIATION_CELLS, vtkDataSetAttributes::SCALARS);
+
+    // Set range
+    threshold->SetThresholdFunction(vtkThreshold::THRESHOLD_BETWEEN);
+    threshold->SetLowerThreshold(min);
+    threshold->SetUpperThreshold(max);
+
+    // Debug output
+    threshold->Update();
+    SCRUTE(threshold->GetOutput()->GetNumberOfCells());
+
+    // Add to the filters' chain
+    vtkAlgorithmOutput* port = threshold->GetOutputPort();
+    anActor->myPassFilter[0]->SetInputConnection(port);
+  }
+  else
+  {
+    // Restore the filters' chain
+    anActor->SetImplicitFunctionUsed(anActor->myIsImplicitFunctionUsed);
+    // Restore Actor filters when after Controls, which not use ExtACtor was called Controls, which use ExtActor
+    // For avoid artifact's
+    if (anActor != myControlActor)
+      myControlActor->SetImplicitFunctionUsed(myControlActor->myIsImplicitFunctionUsed);
+
+    myControlActor->VisibilityOn();
+  }
+}
+
+// Hides the wireframe if isWireframeOff == true.
+void SMESH_ActorDef::SetWireframeOff(bool isWireframeOff)
+{
+  myIsWireframeOff = isWireframeOff;
+
+  UpdateHighlight();
+}
+
 void SMESH_ActorDef::UpdateDistribution()
 {
   if(SMESH::Controls::NumericalFunctor* fun =
@@ -2657,7 +2753,7 @@ void SMESH_ActorDef::UpdateFilter()
   }
   if ( GetVisibility() )
     aFilter->Update();
-  if (MYDEBUG) MESSAGE(aFilter->GetOutput()->GetNumberOfCells());
+  MESSAGE(aFilter->GetOutput()->GetNumberOfCells());
 }
 
 #ifndef DISABLE_PLOT2DVIEWER
index 6de50af116431745fd1198b0bd6aa5dfa348b866..15519a24cd4e1234a151c6d882d823df1170650b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -38,6 +38,7 @@
 class vtkUnstructuredGrid;
 
 class SMESH_ScalarBarActor;
+class SMESH_DeviceActor;
 
 class vtkPlane;
 class vtkImplicitBoolean;
@@ -139,7 +140,7 @@ class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
 
   enum eControl{eNone, eLength, eLength2D, eDeflection2D, eFreeBorders, eFreeEdges, eFreeNodes,
                 eFreeFaces, eMultiConnection, eArea, eTaper, eAspectRatio,
-                eMinimumAngle, eWarping, eSkew, eAspectRatio3D, eMultiConnection2D, eVolume3D,
+                eMinimumAngle, eWarping, eSkew, eAspectRatio3D, eWarping3D, eMultiConnection2D, eVolume3D, eScaledJacobian,
                 eMaxElementLength2D, eMaxElementLength3D, eBareBorderFace, eBareBorderVolume,
                 eOverConstrainedFace, eOverConstrainedVolume, eCoincidentNodes,
                 eCoincidentElems1D, eCoincidentElems2D, eCoincidentElems3D, eNodeConnectivityNb,
@@ -166,6 +167,11 @@ class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
 
   virtual void UpdateScalarBar() = 0;
   virtual void UpdateDistribution() = 0;
+  virtual void ClipThreshold(bool isThresholdOn, double min = 0.0, double max = 0.0) = 0;
+  virtual SMESH_DeviceActor* GetActorForThreshold() = 0;
+  virtual bool IsClipThresholdOn() const = 0;
+  virtual void SetWireframeOff(bool isWireframeOff) = 0;
+  virtual bool IsWireframeOff() const = 0;
 
   virtual void SetPointsFontProperties( SMESH::LabelFont family, int size, 
                                         bool bold, bool italic, bool shadow,
index 0d3051c54f032a5590c4eee4dbe8899e6a3d3ebe..49a326b69486e75c7968cd27f80f7e6d64140b2a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -226,6 +226,11 @@ class SMESH_ActorDef : public SMESH_Actor
 
   virtual void UpdateScalarBar();
   virtual void UpdateDistribution();
+  virtual SMESH_DeviceActor* GetActorForThreshold();
+  virtual void ClipThreshold(bool isThresholdOn, double min = 0.0, double max = 0.0);
+  virtual bool IsClipThresholdOn() const { return myIsClipThresholdOn; }
+  virtual void SetWireframeOff(bool isWireframeOff);
+  virtual bool IsWireframeOff() const { return myIsWireframeOff; }
 
 #ifndef DISABLE_PLOT2DVIEWER
   virtual SPlot2d_Histogram* GetPlot2Histogram() { return my2dHistogram; }
@@ -296,9 +301,12 @@ class SMESH_ActorDef : public SMESH_Actor
 
   unsigned int myEntityMode;
   unsigned int myEntityModeCache;
+  unsigned int objectEntitiesCache;
   int  myRepresentationCache;
   bool myIsEntityModeCache;
   bool myIsPointsVisible;
+  bool myIsClipThresholdOn = false;
+  bool myIsWireframeOff = false;
 
   bool myIsShrinkable;
   bool myIsShrunk;
index 9349c32550f8bb03461089072c39f2504c920e92..0aac1ed4ad0b710ac06882cce26ba603e103b543 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ff6811cd2c6286739cffcd8f4d97db9e57e3eb68..b76abae6f3d158567e30ff6714c5e8c6485e3f2d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 203f7931be9664c192c4c1cf4dc76c01e3a3e862..089025c46394db2f9360e8217b6655aba07e748e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include <vtkUnstructuredGridWriter.h>
 #include <vtkUnsignedCharArray.h>
 
-//#ifdef _DEBUG_
-//static int MYDEBUG = 1;
-//#else
-//static int MYDEBUG = 0;
-//#endif
 
 namespace SMESH
 {
index 4167e5ae1e27077bd161353668ccf07e034fd7c0..b33a46089f066680e03abb3d36339f5ab262ab8e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index eb66cf18f7c5100d40f12dcb3be0791c87f4fb28..387448e865213921e464286d8b097cdb3a897aed 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0ee201dc595ed0a019c198f4b24a865330a97df0..2aa2eb849c560fbeda075459694f779bd2d741f1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index bd9f62e4abb4e148ed6f995ebf04a18d546613bf..be17fe3c30317da05193bf43c17d083e1e28f2d5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -60,7 +60,7 @@
 #include <vtkUnsignedCharArray.h>
 
 #include <vtkImplicitBoolean.h>
-#include <vtkPassThroughFilter.h>
+#include <vtkPassThrough.h>
 
 #include <vtkRenderer.h>
 
 
 #include "utilities.h"
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
 
 using namespace std;
 
@@ -83,7 +78,7 @@ vtkStandardNewMacro(SMESH_DeviceActor)
 SMESH_DeviceActor
 ::SMESH_DeviceActor()
 {
-  if(MYDEBUG) MESSAGE("SMESH_DeviceActor - "<<this);
+  MESSAGE("SMESH_DeviceActor - "<<this);
 
   myIsShrinkable = false;
   myIsShrunk = false;
@@ -118,7 +113,7 @@ SMESH_DeviceActor
   myTransformFilter = VTKViewer_TransformFilter::New();
 
   for(int i = 0; i < 6; i++)
-    myPassFilter.push_back(vtkPassThroughFilter::New());
+    myPassFilter.push_back(vtkPassThrough::New());
 
   // Orientation of faces
   myIsFacesOriented = false;
@@ -140,7 +135,7 @@ SMESH_DeviceActor
 SMESH_DeviceActor
 ::~SMESH_DeviceActor()
 {
-  if(MYDEBUG) MESSAGE("~SMESH_DeviceActor - "<<this);
+  MESSAGE("~SMESH_DeviceActor - "<<this);
 
   myMapper->Delete();
   // myPlaneCollection->Delete(); -- it is vtkSmartPointer
@@ -509,6 +504,80 @@ SMESH_DeviceActor
       theLookupTable->SetRange(aScalars->GetRange());
       theLookupTable->Build();
 
+      myMergeFilter->SetScalarsData(aDataSet);
+      aDataSet->Delete();
+    }
+    else if (Warping3D* aWarping3D = dynamic_cast<Warping3D*>(theFunctor.get())){
+
+      SMESH::Controls::Warping3D::WValues aValues;
+
+      aWarping3D->GetValues(aValues);
+      vtkUnstructuredGrid* aDataSet = vtkUnstructuredGrid::New();
+      vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
+
+      aDataSet->SetPoints(aGrid->GetPoints());
+
+      vtkIdType aNbCells = aValues.size();
+
+      vtkDoubleArray* aScalars = vtkDoubleArray::New();
+      aScalars->SetNumberOfComponents(1);
+      aScalars->SetNumberOfTuples(aNbCells);
+
+      vtkIdType aCellsSize = 3 * aNbCells;
+      vtkCellArray* aConnectivity = vtkCellArray::New();
+      aConnectivity->Allocate(aCellsSize, 0);
+
+      vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
+      aCellTypesArray->SetNumberOfComponents(1);
+      aCellTypesArray->Allocate(aNbCells* aCellTypesArray->GetNumberOfComponents());
+
+      Warping3D::WValues::const_iterator anIter = aValues.begin();
+      aNbCells = 0;
+      for (; anIter != aValues.end(); anIter++) {
+
+        const Warping3D::Value& aValue = *anIter;
+        vtkIdList* anIdList = vtkIdList::New();
+        anIdList->SetNumberOfIds(aValue.myPntIds.size());
+        bool isExist = true;
+        for (int i = 0; i < aValue.myPntIds.size(); ++i)
+        {
+          int aVTKId = myVisualObj->GetNodeVTKId(aValue.myPntIds[i]);
+          if (aVTKId < 0)
+          {
+            isExist = false;
+            break;
+          }
+          anIdList->SetId(i, aVTKId);
+        }
+        if (isExist)
+        {
+          aConnectivity->InsertNextCell(anIdList);
+          aCellTypesArray->InsertNextValue(VTK_POLYGON);
+          aScalars->SetValue(aNbCells, aValue.myWarp);
+          aNbCells++;
+        }
+      }
+      aCellTypesArray->SetNumberOfTuples(aNbCells);
+      aScalars->SetNumberOfTuples(aNbCells);
+
+      vtkIdTypeArray* aCellLocationsArray = vtkIdTypeArray::New();
+      aCellLocationsArray->SetNumberOfComponents(1);
+      aCellLocationsArray->SetNumberOfTuples(aNbCells);
+
+      aConnectivity->InitTraversal();
+      vtkIdType const* pts(nullptr);
+      for (vtkIdType idType = 0, npts; aConnectivity->GetNextCell(npts, pts); idType++)
+        aCellLocationsArray->SetValue(idType, aConnectivity->GetTraversalLocation(npts));
+
+      aDataSet->SetCells(aCellTypesArray, aCellLocationsArray, aConnectivity);
+      SetUnstructuredGrid(aDataSet);
+
+      aDataSet->GetCellData()->SetScalars(aScalars);
+      aScalars->Delete();
+
+      theLookupTable->SetRange(aScalars->GetRange());
+      theLookupTable->Build();
+
       myMergeFilter->SetScalarsData(aDataSet);
       aDataSet->Delete();
     }
@@ -851,7 +920,7 @@ SMESH_DeviceActor
     anID = myExtractGeometry->GetNodeObjId(theVtkID);
 
   vtkIdType aRetID = myVisualObj->GetNodeObjId(anID);
-  if(MYDEBUG) MESSAGE("GetNodeObjId - theVtkID = "<<theVtkID<<"; anID = "<<anID<<"; aRetID = "<<aRetID);
+  MESSAGE("GetNodeObjId - theVtkID = "<<theVtkID<<"; anID = "<<anID<<"; aRetID = "<<aRetID);
   return aRetID;
 }
 
@@ -862,7 +931,7 @@ SMESH_DeviceActor
   vtkDataSet* aDataSet = myMergeFilter->GetOutput();
   vtkIdType anID = myVisualObj->GetNodeVTKId(theObjID);
   double* aCoord = (anID >=0 && anID < aDataSet->GetNumberOfPoints()) ? aDataSet->GetPoint(anID) : NULL;
-  if(MYDEBUG) MESSAGE("GetNodeCoord - theObjID = "<<theObjID<<"; anID = "<<anID);
+  MESSAGE("GetNodeCoord - theObjID = "<<theObjID<<"; anID = "<<anID);
   return aCoord;
 }
 
@@ -892,8 +961,8 @@ SMESH_DeviceActor
     return -1;
 
   vtkIdType aRetID = myVisualObj->GetElemObjId(anId3);
-  if(MYDEBUG) 
-     MESSAGE("GetElemObjId - theVtkID = "<<theVtkID<<"; anId2 = "<<anId2<<"; anId3 = "<<anId3<<"; aRetID = "<<aRetID);
+
+  MESSAGE("GetElemObjId - theVtkID = "<<theVtkID<<"; anId2 = "<<anId2<<"; anId3 = "<<anId3<<"; aRetID = "<<aRetID);
   return aRetID;
 }
 
@@ -904,8 +973,8 @@ SMESH_DeviceActor
   vtkDataSet* aDataSet = myVisualObj->GetUnstructuredGrid();
   vtkIdType aGridID = myVisualObj->GetElemVTKId(theObjID);
   vtkCell* aCell = (aGridID >= 0 ) ? aDataSet->GetCell(aGridID) : NULL;
-  if(MYDEBUG) 
-    MESSAGE("GetElemCell - theObjID = "<<theObjID<<"; aGridID = "<<aGridID);
+
+  MESSAGE("GetElemCell - theObjID = "<<theObjID<<"; aGridID = "<<aGridID);
   return aCell;
 }
 
index 1e863a6e20abfc256dec9d379f4a67b45a085478..c8f17d254e3d42f13c881b6a7a1b4b8833e5254c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -44,7 +44,7 @@ class vtkShrinkFilter;
 class vtkUnstructuredGrid;
 class vtkLookupTable;
 class vtkImplicitBoolean;
-class vtkPassThroughFilter;
+class vtkPassThrough;
 class vtkPlaneCollection;
 
 class VTKViewer_Transform;
@@ -183,7 +183,7 @@ class SMESHOBJECT_EXPORT SMESH_DeviceActor: public vtkLODActor{
   bool myStoreClippingMapping;
   VTKViewer_GeometryFilter *myGeomFilter;
   VTKViewer_TransformFilter *myTransformFilter;
-  std::vector<vtkPassThroughFilter*> myPassFilter;
+  std::vector<vtkPassThrough*> myPassFilter;
 
   vtkShrinkFilter* myShrinkFilter;
   bool myIsShrinkable;
index 3b09ed04234aaaa95cbad30710d266c1f6888c35..22e7cdd672a36d4e04727198aff46b7aa45e3bef 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 
 using namespace std;
 
-//#ifdef _DEBUG_
-//static int MYDEBUG = 0;
-//#else
-//static int MYDEBUG = 0;
-//#endif
-
 #if defined __GNUC__
   #if __GNUC__ == 2
     #define __GNUC_2__
index be636fbd61d6ced1f1730e7b4959f983a71f8650..9043841567d139c75d2a9092ca5f9a1e3dba7fca 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e9dbd511da1554eee2c62f2a542d2aee2bb4ec6b..7e718ab423451d837cc3ab31c54e71cd86ea5861 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 591bb180eccfc0a064681af235e9a0793f589a6a..282804b310717d82616cd9481b3f30f04074198f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4ac4c90f20faabb31a0df0dd2216adf4653b4274..e3fa7389b6ec15aca5e50532c4e67f0a4c9e4a9b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f4ebbe36f8c5f033e9ef65de5bff945d79c0d7c9..a47a1017b5037ad4ec98ff91dbc11f90e52f2eb6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 846c815625ea2cd3c528356d07cfe3330ab6ce78..585442ccb128d208aaa132d04119641895c0d68c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -67,14 +67,7 @@ using namespace std;
 }
 #endif
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
 static int MYDEBUGWITHFILES = 0;//1;
-#else
-static int MYDEBUG = 0;
-static int MYDEBUGWITHFILES = 0;
-#endif
-
 
 /*
   Class       : SMESH_VisualObjDef
@@ -86,7 +79,7 @@ static int MYDEBUGWITHFILES = 0;
 //=================================================================================
 SMESH_VisualObjDef::SMESH_VisualObjDef()
 {
-  if ( MYDEBUG ) MESSAGE("-------------------------------SMESH_VisualObjDef::SMESH_VisualObjDef");
+  MESSAGE("-------------------------------SMESH_VisualObjDef::SMESH_VisualObjDef");
   myGrid = vtkUnstructuredGrid::New();
   myLocalGrid = false;
   ClearEntitiesFlags();
@@ -94,8 +87,8 @@ SMESH_VisualObjDef::SMESH_VisualObjDef()
 }
 SMESH_VisualObjDef::~SMESH_VisualObjDef()
 {
-  if ( MYDEBUG ) MESSAGE("--------------------------------SMESH_VisualObjDef::~SMESH_VisualObjDef");
-  if ( MYDEBUG ) MESSAGE( "myGrid->GetReferenceCount() = " << myGrid->GetReferenceCount() );
+  MESSAGE("--------------------------------SMESH_VisualObjDef::~SMESH_VisualObjDef");
+  MESSAGE( "myGrid->GetReferenceCount() = " << myGrid->GetReferenceCount() );
   myGrid->Delete();
 }
 
@@ -200,7 +193,7 @@ void SMESH_VisualObjDef::createPoints( vtkPoints* thePoints )
 //=================================================================================
 void SMESH_VisualObjDef::buildPrs(bool buildGrid)
 {
-  if ( MYDEBUG ) MESSAGE("---------------------------SMESH_VisualObjDef::buildPrs " << buildGrid);
+  MESSAGE("---------------------------SMESH_VisualObjDef::buildPrs " << buildGrid);
   if (buildGrid)
   {
     myLocalGrid = true;
@@ -234,7 +227,7 @@ void SMESH_VisualObjDef::buildPrs(bool buildGrid)
     if (!GetMesh()->IsCompacted())
     {
       NulData(); // detach from the SMDS grid to allow immediate memory de-allocation in compactMesh()
-      if ( MYDEBUG ) MESSAGE("*** buildPrs ==> compactMesh!");
+      MESSAGE("*** buildPrs ==> compactMesh!");
       GetMesh()->CompactMesh();
       if ( SMESHDS_Mesh* m = dynamic_cast<SMESHDS_Mesh*>( GetMesh() )) // IPAL53915
         m->GetScript()->SetModified(false); // drop IsModified set in compactMesh()
@@ -309,8 +302,7 @@ void SMESH_VisualObjDef::buildElemPrs()
   myGrid->SetPoints( aPoints );
   aPoints->Delete();
 
-  if ( MYDEBUG )
-    MESSAGE("Update - myGrid->GetNumberOfPoints() = "<<myGrid->GetNumberOfPoints());
+  MESSAGE("Update - myGrid->GetNumberOfPoints() = "<<myGrid->GetNumberOfPoints());
 
   // Calculate cells size
 
@@ -361,8 +353,8 @@ void SMESH_VisualObjDef::buildElemPrs()
       }
     }
   }
-  if ( MYDEBUG )
-    MESSAGE( "Update - aNbCells = "<<aNbCells<<"; aCellsSize = "<<aCellsSize );
+
+  MESSAGE( "Update - aNbCells = "<<aNbCells<<"; aCellsSize = "<<aCellsSize );
 
   // Create cells
 
@@ -628,8 +620,8 @@ SMESH_MeshObj::SMESH_MeshObj(SMESH::SMESH_Mesh_ptr theMesh):
   myClient(SalomeApp_Application::orb(),theMesh)
 {
         myEmptyGrid = 0;
-  if ( MYDEBUG ) 
-    MESSAGE("SMESH_MeshObj - this = "<<this<<"; theMesh->_is_nil() = "<<theMesh->_is_nil());
+
+  MESSAGE("SMESH_MeshObj - this = "<<this<<"; theMesh->_is_nil() = "<<theMesh->_is_nil());
 }
 
 //=================================================================================
@@ -638,8 +630,7 @@ SMESH_MeshObj::SMESH_MeshObj(SMESH::SMESH_Mesh_ptr theMesh):
 //=================================================================================
 SMESH_MeshObj::~SMESH_MeshObj()
 {
-  if ( MYDEBUG ) 
-    MESSAGE("SMESH_MeshObj - this = "<<this<<"\n");
+  MESSAGE("SMESH_MeshObj - this = "<<this<<"\n");
   if ( myEmptyGrid )
     myEmptyGrid->Delete();
 }
@@ -651,9 +642,9 @@ SMESH_MeshObj::~SMESH_MeshObj()
 bool SMESH_MeshObj::Update( int theIsClear )
 {
   // Update SMDS_Mesh on client part
-  if ( MYDEBUG ) MESSAGE("SMESH_MeshObj::Update " << this);
+  MESSAGE("SMESH_MeshObj::Update " << this);
   if ( myClient.Update(theIsClear) || GetUnstructuredGrid()->GetNumberOfPoints()==0) {
-    if ( MYDEBUG ) MESSAGE("buildPrs");
+    MESSAGE("buildPrs");
     buildPrs();  // Fill unstructured grid
     return true;
   }
@@ -662,7 +653,7 @@ bool SMESH_MeshObj::Update( int theIsClear )
 
 bool SMESH_MeshObj::NulData()
 {
-  if ( MYDEBUG ) MESSAGE ("SMESH_MeshObj::NulData() =============================================");
+  MESSAGE ("SMESH_MeshObj::NulData() =============================================");
   if (!myEmptyGrid)
   {
     myEmptyGrid = SMDS_UnstructuredGrid::New();
@@ -821,7 +812,7 @@ bool SMESH_MeshObj::IsNodePrs() const
 //=================================================================================
 SMESH_SubMeshObj::SMESH_SubMeshObj( SMESH_MeshObj* theMeshObj )
 {
-  if ( MYDEBUG ) MESSAGE( "SMESH_SubMeshObj - theMeshObj = " << theMeshObj );
+  MESSAGE( "SMESH_SubMeshObj - theMeshObj = " << theMeshObj );
   
   myMeshObj = theMeshObj;
 }
@@ -855,7 +846,7 @@ void SMESH_SubMeshObj::UpdateFunctor( const SMESH::Controls::FunctorPtr& theFunc
 //=================================================================================
 bool SMESH_SubMeshObj::Update( int theIsClear )
 {
-  if ( MYDEBUG ) MESSAGE("SMESH_SubMeshObj::Update " << this)
+  MESSAGE("SMESH_SubMeshObj::Update " << this);
   bool changed = myMeshObj->Update( theIsClear );
   buildPrs(true);
   return changed;
@@ -876,13 +867,13 @@ SMESH_GroupObj::SMESH_GroupObj( SMESH::SMESH_GroupBase_ptr theGroup,
 : SMESH_SubMeshObj( theMeshObj ),
   myGroupServer( SMESH::SMESH_GroupBase::_duplicate(theGroup) )
 {
-  if ( MYDEBUG ) MESSAGE("SMESH_GroupObj - theGroup->_is_nil() = "<<theGroup->_is_nil());
+  MESSAGE("SMESH_GroupObj - theGroup->_is_nil() = "<<theGroup->_is_nil());
   myGroupServer->Register();
 }
 
 SMESH_GroupObj::~SMESH_GroupObj()
 {
-  if ( MYDEBUG ) MESSAGE("~SMESH_GroupObj");
+  MESSAGE("~SMESH_GroupObj");
   myGroupServer->UnRegister();
 }
 
@@ -1011,14 +1002,14 @@ SMESH_subMeshObj::SMESH_subMeshObj( SMESH::SMESH_subMesh_ptr theSubMesh,
 : SMESH_SubMeshObj( theMeshObj ),
   mySubMeshServer( SMESH::SMESH_subMesh::_duplicate( theSubMesh ) )
 {
-  if ( MYDEBUG ) MESSAGE( "SMESH_subMeshObj - theSubMesh->_is_nil() = " << theSubMesh->_is_nil() );
+  MESSAGE( "SMESH_subMeshObj - theSubMesh->_is_nil() = " << theSubMesh->_is_nil() );
   
   mySubMeshServer->Register();
 }
 
 SMESH_subMeshObj::~SMESH_subMeshObj()
 {
-  if ( MYDEBUG ) MESSAGE( "~SMESH_subMeshObj" );
+  MESSAGE( "~SMESH_subMeshObj" );
   mySubMeshServer->UnRegister();
 }
 
index f92f19cca0e625f566db6172fef7c2e9d9bcda61..35bb1d4563cfb87651f079b46446dc4707e51b82 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 75ac52981f892454aa1b0b72023d5ae2c7d266c4..60efbbe75c915e852158dbf5e13db89ab804df82 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 8a62e4877a303075af8cfc7d57a502239d0a32fb..8cd492e786530709f80d3bf9756a6c96ba5fcb52 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 #include <SUIT_ResourceMgr.h>
 #include <SUIT_Session.h>
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
-
 
 SMESH_PreviewActorsCollection::SMESH_PreviewActorsCollection() :
   mySelector( 0 ), myRenderer( 0 ), myCurrentChunk( 0 ), myChunkSize( 0 ), myIsShown( true )
 {
-  if(MYDEBUG) MESSAGE("SMESH_PreviewActorsCollection - "<<this);
+  MESSAGE("SMESH_PreviewActorsCollection - "<<this);
 }
 
 
 SMESH_PreviewActorsCollection::~SMESH_PreviewActorsCollection()
 {
-  if(MYDEBUG) MESSAGE("~SMESH_PreviewActorsCollection - "<<this);
+  MESSAGE("~SMESH_PreviewActorsCollection - "<<this);
   clearActors();
 }
 
index b1b2efb44b1ac6bc0692a7a285b3c01b7946c9de..c8f8f87fee5b9e8630816344d2961f11323f1acf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 32e966c699aa91fa67cb1908d10bdb02fb551b41..d9ba3cd765866efe62a4a6e9d8107bad7c7c8310 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 41969e6f8f3ad57570d97db6cd3f36fc6aba533c..5e156cc4596c4b89488acba1e5c33cbe8bd132a2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 42b79d992acaf3fa9dc0b72ff77a29778f4c301d..d9321d9edfb38d22ab99805720f5955e4676bcfe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a140647dbc651b2b1b392d2cae12e0f9b56b35cc..a4cca47c2dcf598c847e003d662004d1429c8eba 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9e6ae77410107e27d7a1052ef9fdaeb5a9bba836..4cd3fcd1182196b225712bd05826183b1db4bf82 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 1e27cd4100343aea1f553f2ec1fcf00809a2bdfd..a24664c260b5e47ebb0fb7332b6c5ddd5b2062b3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e1b8c741ec4749fb49b0ccc34cc33817c9556ae1..cadfe2204c4f802c0ccee85c0fb9da79b010c1b5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index fbde0356dd9a9a505cadab3835726761e23d5a8a..c60a111ad10073d23c7d23ea774afce563bc4d9d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 4c926bf32dcfcd288a0a308b36ee5e5ce0ef5678..35a34761e856455bf6c1ab962ef1810b9250fbc5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2645765030f79bb8e895e0419d1a308478e314fa..c4b0b349327bc759826cc935158d49cb13a392e9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d58eaa9427dea4625af1d02ff3a5e826dba834d4..198f8ec81addb84faa06f448d1eff35fff34ac7d 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 1f1630b2756a3e53199a3a41fae96386c9d3fea6..3dd35931822126a24aa1c2e22b0fd5d7f5241e9a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2010-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 48794fd0377ef2eb6e83e0d5178e2b9e2e5e0b7e..edf08fdbbbad675deee4127f4decae8923f45818 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0436bdfd961b6112427f0cf0a3fc0505753bcea4..235d02d91e0f3b1ab1112aa361e80953bd80066b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2010-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ffce7b6729d5324e40e37a1d8b13de04ed9405b8..644d1ceb1f51729059f138a09c54e890759c17ee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f399834eb5eef2adf85e566b2f1349eef7034dd5..677c1429ec1882474d20ab5e748872d2aa78e175 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 4282e647800c5dbdec47d39b0df349c3b6314059..cba5dfe435d4faf9e5624a8cc37af9ed44f12926 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d2152f22051332818ffc2d69c59701f27d3ea774..90140d091fdc4961a84e351f9b867a3066feb84e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2010-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 579b2577a98d813cd2972a078aca7d38738e4efa..7de1b1e4c030dcd5614b5743a816a6a7f169a323 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2010-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index de8bf492519ddf362ac03d561e82220fe7ed5087..6bc82963db5c07f0cb078a8206c1659b7de80d38 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index b546fe2c70222ca2e67aef7822c775b1e2671376..ff4f5d49158b16594d834723f5ef7d5012e91157 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 611511916dd3fd57ae6767f97408eb145436f6ad..e13af2db37d2c6760d8c1084377ba5e6d980fc8c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -649,6 +649,13 @@ void SMDS_ElementChunk::SetVTKID( const SMDS_MeshElement* e, const vtkIdType vtk
     }
     myFactory->mySmdsIDs[ vtkID ] = e->GetID() - 1;
   }
+  else
+  {
+    if ((size_t) e->GetID() <= myFactory->myVtkIDs.size() )
+      myFactory->myVtkIDs[ e->GetID() - 1 ] = vtkID;
+    if ((size_t) vtkID < myFactory->mySmdsIDs.size() )
+      myFactory->mySmdsIDs[ vtkID ] = e->GetID() - 1;
+  }
 }
 
 //================================================================================
index 92f22e55a460b590ae9e1188e548e6bd66a52f1c..1abc94e023dab7bf5459531b983b77c360985f7f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 36edba31a0882cfba0850a04660f32649ab1df81..641da5e28d1b3018f2e731622c972b068b092259 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a5ab4d86dfa8960d335670ac919ddd7a52b2f9ca..41a7eb9016732061d067138a8b1d8a8bbc80b8f7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9496230c3e6a9e70d858ea47d91997bef2639588..866b7a07e72338bb71feec5731c79692311570e0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 27ab1e5b122e9b8595ca40e51ea0def47fd0295a..1ccd14f6a4cf7c417edd785252a65ef5594e6485 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a44b7805bc82576a403f62f6f52055768b1582c6..0fb49e078dfa4a672ffc9ca9c8d95c0db6b734bd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 23df7a9912f3fe9468a2914292d9be7b3604f0b2..9c2ad947ac62e10ab0d2407348888438d7614191 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 717a35cf8f48551a8881cb2b3162992914d8dd94..9a0aaa03c011ecb99b32595f1b8c1c800e08be65 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d6c634853801a39eed037f3f49161e72576b489d..c76e9edb7d95f4567f96506ddac1c7366e36cd2d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index c6d69b798559bbe2356b3b874bcf1dc72ddb2669..06fccd6b0ac9a114429e92fa9214f1aa6f33e079 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -45,6 +45,13 @@ SMDS_LinearEdge::SMDS_LinearEdge(const SMDS_MeshNode * node1,
   myNodes[1] = node2;
 }
 
+void SMDS_LinearEdge::Init(const SMDS_MeshNode * node1,
+                           const SMDS_MeshNode * node2)
+{
+  myNodes[0] = node1;
+  myNodes[1] = node2;
+}
+
 int SMDS_LinearEdge::NbNodes() const
 {
   return 2;
index b3fe7631037f4fb3955270c2d16c93d1fc93f5ea..626ff2857fb008b977e21e8d70ba6e4ea1a7a8ce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -32,7 +32,8 @@
 class SMDS_EXPORT SMDS_LinearEdge: public SMDS_CellOfNodes
 {
 public:
-  SMDS_LinearEdge(const SMDS_MeshNode * node1, const SMDS_MeshNode * node2);
+  SMDS_LinearEdge(const SMDS_MeshNode * node1=nullptr, const SMDS_MeshNode * node2=nullptr);
+  void Init( const SMDS_MeshNode * node1, const SMDS_MeshNode * node2);
 
   virtual SMDSAbs_ElementType  GetType()       const { return SMDSAbs_Edge; }
   virtual SMDSAbs_GeometryType GetGeomType()   const { return SMDSGeom_EDGE; }
index feb6329ff10ed3a6e3e50ed7fdb7566b531b46d2..056dace17e9dc7c98a60df17b98c48beab741da2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -29,9 +29,7 @@
 #include <sys/sysinfo.h>
 #endif
 
-#ifdef _DEBUG_
 #include <iostream>
-#endif
 
 int main ()
 {
@@ -59,9 +57,9 @@ int main ()
     }
   } catch (...) {}
 
-// #ifdef _DEBUG_
-//   std::cout << freeRamKb / 1024 << std::endl;
-// #endif
+// if (SALOME::VerbosityActivated())
+//  std::cout << freeRamKb / 1024 << std::endl;
+
   return freeRamKb / 1024;
 
 #endif
index d26107218b83f42a71d505cf5a60bed951fc9903..c948100ac26ad48d0cbe096191c2fc31646fa557 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index de50492f946ed7dbf5b4c3b7e4fce68ab55a02e2..e643ee20f47a5de283691fcab169565b8df633e2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f9cb1fa17056db02874920a247d33fbdcf7596a9..371b54b63fd5bd15e23872e09416f03465feaeb2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 49ef9aaeb72df2503efb52ccd5e4196c124a200d..987bef6235d34aa8458b3ee9af13e88b915b7aaa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2010-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3241d0943ba607fe6694fa9340b614bfed6e25f2..b32da877bca1725601cdcc5293796219b43b752e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2010-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 920f19304a19b5cca599aca32573734d8dfd21cd..c6515cb48c5edd8b3a4fc3184ff775875afdd299 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2010-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 42ce33bfaf08f91a5b48f6a7976a519c907d9d82..551cff4405080a5deaff010b1461de18c1b5756e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index df242c4e11d2dc34ec073dca4a91b0db4ca10eba..eeec4a1f7073fbb192397c7fcd9858bc323d026e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 93df3ebabd9065135343d6c3599e984803da8931..5c2558301b74594b8aaf9f70041ae909846e89a9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index de7330c66c7d8c2908753b1d81b970a28d10709d..6f8a84e6ed8695e00debb5bb70c1b4cf5008ea33 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 140216c0e01588de5059b17e9af810c3ae303455..a9d783ab2f6116951eeda983700b37d7a044900a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a30ec9a7e3eed2e3e8a2a65163a1da63349e4d8e..f9f2d8dc325829b9bf409870ea0471765cdbfe07 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ac99e349df5a81b14ee9a57bd38cdc32ce557779..087879ab016339aa602cb4d643647b62c9561f81 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 268045ef8e666cd9dda90f12807a20a3cf25c204..99549e937ac82351651ac68882625c19e62cba14 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 79313d392cbd54643ba577b137c8a8db21f6a8a1..a681a08722233121231e1ca7d44e285bb24c680a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 25810b9923c3d30ef82222a04bd75a377acef1db..c29f937193e06116073797c1278ea2af9498f7fc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5570bc32361e1b97ee722ea263696c36f58034be..a6a396c779d6073d54cdc658ff260c1765e87629 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f2e57743c1b0cc66175e2f45f3aa83e12cdd443d..e4decbe8fcd044d1cf92c92ce71e0ce38041c333 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index cecb7daa1b327c52f65863fe6bd82ef907dac414..2dbd9dd58977fd1f090e9f947830ac4ed8cc81c0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1dc87d0f9b772e9556348cf59c91924f2c1af61a..7dbff12111138adf448cbce3465218d5db14e488 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 3bd79d86c9a8d113d6b3c7dcb484c73749d7e584..2b33f0b05b0cdaa852b657ac8dad0423ba7a3391 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index bd505bdc2e04330fa99e693fff17f5a5f654f10b..02fb6fb7e90bbc5fc80d949d93cfadcc7b07e8c8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 22c949de8ef82ef48d6dba461642120a6e01307e..bc7c7bc09554179716e96e5da4a0b760e5013bbf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 60a7c8529e22e9031430296b287c8b8c08d1063d..8ee3ba0986a19ee3f37e91eb6d8a07e821a6a997 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a6bc79130a593f9e2bb2415a7a09c879217fcfe9..3251e6336e0f6c5f566ccaf33869b286e0884b4a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 37ad1fdd8d8222efad3b05d2026b74acce3d01c3..9f13e57513a2fc361a97bc12cd9be062d2cc32d7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 124d069f1b3e407335b4a4c78fbb26f31fd3e37b..03bdce1b412d9490dc9a3e82615684ebed253eb9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2010-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 89ba29445ea1019e25515112d05eb29e4bdd8ca8..ebe224a2d3ee050864c36309c478e4971d4c851e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2010-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 53fa48cd17055bdecf0dbb96251b4337ad4917a4..5f2e5fc0d5b3aa190498a5228f683e442313a471 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 36ede0c36c05e96e81feaf10e05b5dc42361edc8..acc4fc00b74f049b4a876ea8479bb909abff4c7d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index dfda41943532fbdd481b9d958fbd50215500da28..36a515c5d215b1552675233e3c461b52ddeebc52 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ff41083c96b9bba89014cc33944d3a0975126b04..4475f7a829ecdb484e7f2685aacd85c9ee5d7c34 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -42,6 +42,7 @@
 #include <cstring>
 #include <numeric>
 #include <algorithm>
+#include <array>
 
 namespace
 {
@@ -80,9 +81,17 @@ static int Tetra_RE [4][4] = { // REVERSED -> FORWARD (EXTERNAL)
   { 0, 3, 2, 0 }};
 static int Tetra_nbN [] = { 3, 3, 3, 3 };
 
-//
-//     PYRAMID
-//
+/*        
+//    N1 +---------+ N2
+//       | \     / | 
+//       |  \   /  |
+//       |   \ /   |
+//       |   /+\   |     PYRAMID
+//       |  / N4\  |
+//       | /     \ |
+//       |/       \|
+//    N0 +---------+ N3
+*/
 static int Pyramid_F [5][5] = { // FORWARD == EXTERNAL
   { 0, 1, 2, 3, 0 },            // All faces have external normals
   { 0, 4, 1, 0, 4 },
@@ -363,13 +372,18 @@ struct XYZ {
   inline XYZ operator-( const XYZ& other );
   inline XYZ operator+( const XYZ& other );
   inline XYZ Crossed( const XYZ& other );
+  inline XYZ operator-();
   inline double Dot( const XYZ& other );
   inline double Magnitude();
   inline double SquareMagnitude();
+  inline XYZ Normalize();
 };
 inline XYZ XYZ::operator-( const XYZ& Right ) {
   return XYZ(x - Right.x, y - Right.y, z - Right.z);
 }
+inline XYZ XYZ::operator-() {
+  return XYZ(-x,-y,-z);
+}
 inline XYZ XYZ::operator+( const XYZ& Right ) {
   return XYZ(x + Right.x, y + Right.y, z + Right.z);
 }
@@ -387,6 +401,13 @@ inline double XYZ::Magnitude() {
 inline double XYZ::SquareMagnitude() {
   return (x * x + y * y + z * z);
 }
+inline XYZ XYZ::Normalize() {
+  double magnitude = Magnitude();
+  if ( magnitude != 0.0 )
+    return XYZ(x /= magnitude,y /= magnitude,z /= magnitude );   
+  else
+    return XYZ(x,y,z);
+}
 
   //================================================================================
   /*!
@@ -694,7 +715,6 @@ static double getTetraVolume(const SMDS_MeshNode* n1,
 //function : GetSize
 //purpose  : Return element volume
 //=======================================================================
-
 double SMDS_VolumeTool::GetSize() const
 {
   double V = 0.;
@@ -710,7 +730,7 @@ double SMDS_VolumeTool::GetSize() const
 
     // split a polyhedron into tetrahedrons
 
-    bool oriOk = true;
+    bool oriOk = AllFacesSameOriented();
     SMDS_VolumeTool* me = const_cast< SMDS_VolumeTool* > ( this );
     for ( int f = 0; f < NbFaces(); ++f )
     {
@@ -723,7 +743,6 @@ double SMDS_VolumeTool::GetSize() const
         p1 = p2;
       }
       V += p1.Dot( area );
-      oriOk = oriOk && IsFaceExternal( f );
     }
     V /= 6;
     if ( !oriOk && V > 0 )
@@ -847,6 +866,334 @@ double SMDS_VolumeTool::GetSize() const
   return V;
 }
 
+
+//=======================================================================
+//function : getTetraScaledJacobian
+//purpose  : Given the smesh nodes in the canonical order of the tetrahedron, return the scaled jacobian
+//=======================================================================
+static double getTetraScaledJacobian(const SMDS_MeshNode* n0,
+                                     const SMDS_MeshNode* n1,
+                                     const SMDS_MeshNode* n2,
+                                     const SMDS_MeshNode* n3)
+{
+  const double sqrt = std::sqrt(2.0);
+  // Get the coordinates
+  XYZ p0( n0 );
+  XYZ p1( n1 );
+  XYZ p2( n2 );
+  XYZ p3( n3 );
+  // Define the edges connecting the nodes
+  XYZ L0 = p1-p0;
+  XYZ L1 = p2-p1;
+  XYZ L2 = p2-p0; // invert the definition of doc to get the proper orientation of the crossed product
+  XYZ L3 = p3-p0;
+  XYZ L4 = p3-p1;
+  XYZ L5 = p3-p2;
+  double Jacobian = L2.Crossed( L0 ).Dot( L3 );
+  double norm0 = L0.Magnitude();
+  double norm1 = L1.Magnitude();
+  double norm2 = L2.Magnitude();
+  double norm3 = L3.Magnitude();
+  double norm4 = L4.Magnitude();
+  double norm5 = L5.Magnitude();
+
+  std::array<double, 5> norms{};
+  norms[0] = Jacobian;
+  norms[1] = norm3*norm4*norm5;
+  norms[2] = norm1*norm2*norm5;
+  norms[3] = norm0*norm1*norm4;
+  norms[4] = norm0*norm2*norm3;  
+
+  auto findMaxNorm = std::max_element(norms.begin(), norms.end());
+  double maxNorm = *findMaxNorm;
+
+  if ( std::fabs( maxNorm ) < std::numeric_limits<double>::min() )
+    maxNorm = std::numeric_limits<double>::max();
+
+  return Jacobian * sqrt / maxNorm;
+}
+
+//=======================================================================
+//function : getPyramidScaledJacobian
+//purpose  : Given the pyramid, compute the scaled jacobian of the four tetrahedrons and return the minimun value.
+//=======================================================================
+static double getPyramidScaledJacobian(const SMDS_MeshNode* n0,
+                                        const SMDS_MeshNode* n1,
+                                        const SMDS_MeshNode* n2,
+                                        const SMDS_MeshNode* n3,
+                                        const SMDS_MeshNode* n4)
+{ 
+  const double sqrt = std::sqrt(2.0);
+  std::array<double, 4> tetScaledJacobian{};
+  tetScaledJacobian[0] = getTetraScaledJacobian(n0, n1, n3, n4);
+  tetScaledJacobian[1] = getTetraScaledJacobian(n1, n2, n0, n4);
+  tetScaledJacobian[2] = getTetraScaledJacobian(n2, n3, n1, n4);
+  tetScaledJacobian[3] = getTetraScaledJacobian(n3, n0, n2, n4);  
+
+  auto minEntry = std::min_element(tetScaledJacobian.begin(), tetScaledJacobian.end());
+
+  double scaledJacobian = (*minEntry) * 2.0/sqrt;
+  return scaledJacobian < 1.0 ? scaledJacobian : 1.0 - (scaledJacobian - 1.0);
+}
+
+
+
+//=======================================================================
+//function : getHexaScaledJacobian
+//purpose  : Evaluate the scaled jacobian on the eight vertices of the hexahedron and return the minimal registered value
+//remark   : Follow the reference numeration described at the top of the class.
+//=======================================================================
+static double getHexaScaledJacobian(const SMDS_MeshNode* n0,
+                                    const SMDS_MeshNode* n1,
+                                    const SMDS_MeshNode* n2,
+                                    const SMDS_MeshNode* n3,
+                                    const SMDS_MeshNode* n4,
+                                    const SMDS_MeshNode* n5,
+                                    const SMDS_MeshNode* n6,
+                                    const SMDS_MeshNode* n7)
+{ 
+  // Scaled jacobian is an scalar quantity measuring the deviation of the geometry from the perfect geometry
+  // Get the coordinates
+  XYZ p0( n0 );
+  XYZ p1( n1 );
+  XYZ p2( n2 );
+  XYZ p3( n3 );
+  XYZ p4( n4 );
+  XYZ p5( n5 );
+  XYZ p6( n6 );
+  XYZ p7( n7 );
+
+  // Define the edges connecting the nodes  
+  XYZ L0  = (p1-p0).Normalize();
+  XYZ L1  = (p2-p1).Normalize();
+  XYZ L2  = (p3-p2).Normalize();
+  XYZ L3  = (p3-p0).Normalize();
+  XYZ L4  = (p4-p0).Normalize();
+  XYZ L5  = (p5-p1).Normalize();
+  XYZ L6  = (p6-p2).Normalize();
+  XYZ L7  = (p7-p3).Normalize();
+  XYZ L8  = (p5-p4).Normalize();
+  XYZ L9  = (p6-p5).Normalize();
+  XYZ L10 = (p7-p6).Normalize();
+  XYZ L11 = (p7-p4).Normalize();
+  XYZ X0  = (p1-p0+p2-p3+p6-p7+p5-p4).Normalize();
+  XYZ X1  = (p3-p0+p2-p1+p7-p4+p6-p5).Normalize();
+  XYZ X2  = (p4-p0+p7-p3+p5-p1+p6-p2).Normalize();
+  
+  std::array<double, 9> scaledJacobian{};
+  //Scaled jacobian of nodes following their numeration
+  scaledJacobian[0] =  L4.Crossed( L3).Dot( L0 );   // For L0
+  scaledJacobian[1] =  L5.Crossed(-L0).Dot( L1 );   // For L1
+  scaledJacobian[2] =  L6.Crossed(-L1).Dot( L2 );   // For L2
+  scaledJacobian[3] =  L7.Crossed(-L2).Dot(-L3 );   // For L3
+  scaledJacobian[4] = -L4.Crossed( L8).Dot( L11 );  // For L11  
+  scaledJacobian[5] = -L5.Crossed( L9).Dot(-L8 );   // For L8
+  scaledJacobian[6] = -L6.Crossed(L10).Dot(-L9 );   // For L9
+  scaledJacobian[7] = -L7.Crossed(-L11).Dot(-L10 ); // For L10
+  scaledJacobian[8] =  X2.Crossed( X1).Dot( X0 );   // For principal axes
+
+  auto minScaledJacobian = std::min_element(scaledJacobian.begin(), scaledJacobian.end());
+  return *minScaledJacobian;
+}
+
+
+//=======================================================================
+//function : getTetraNormalizedJacobian
+//purpose  : Return the jacobian of the tetrahedron based on normalized vectors
+//=======================================================================
+static double getTetraNormalizedJacobian(const SMDS_MeshNode* n0,
+                                          const SMDS_MeshNode* n1,
+                                          const SMDS_MeshNode* n2,
+                                          const SMDS_MeshNode* n3)
+{
+  const double sqrt = std::sqrt(2.0);
+  // Get the coordinates
+  XYZ p0( n0 );
+  XYZ p1( n1 );
+  XYZ p2( n2 );
+  XYZ p3( n3 );
+  // Define the normalized edges connecting the nodes
+  XYZ L0 = (p1-p0).Normalize();
+  XYZ L2 = (p2-p0).Normalize(); // invert the definition of doc to get the proper orientation of the crossed product
+  XYZ L3 = (p3-p0).Normalize();
+  return L2.Crossed( L0 ).Dot( L3 );
+}
+
+//=======================================================================
+//function : getPentaScaledJacobian
+//purpose  : Evaluate the scaled jacobian on the pentahedron based on decomposed tetrahedrons
+//=======================================================================
+/*   
+//            + N1
+//           /|\
+//          / | \
+//         /  |  \
+//        /   |   \
+//    N0 +---------+ N2
+//       |    |    |               NUMERATION RERENCE FOLLOWING POSSITIVE RIGHT HAND RULE
+//       |    + N4 |               
+//       |   / \   |               PENTAHEDRON
+//       |  /   \  |
+//       | /     \ |
+//       |/       \|
+//    N3 +---------+ N5
+//
+//          N1
+//          +
+//          |\
+//         /| \
+//        / |  \
+//    N0 +--|---+ N2               TETRAHEDRON ASSOCIATED TO N0
+//       \  |   /                  Numeration passed to getTetraScaledJacobian 
+//        \ |  /                   N0=N0; N1=N2; N2=N3; N3=N1
+//         \| /                     
+//          |/
+//          +
+//          N3
+//
+//           N1
+//           +
+//          /|\
+//         / | \
+//        /  |  \
+//    N2 +---|---+ N5             TETRAHEDRON ASSOCIATED TO N2
+//       \   |  /                 Numeration passed to getTetraScaledJacobian 
+//        \  | /                  N0=N2; N1=N5; N2=N0; N3=N1
+//         \ |/
+//          \|
+//           +
+//           N0
+//
+//           N4
+//           +
+//          /|\
+//         / | \
+//        /  |  \
+//    N3 +---|---+ N0             TETRAHEDRON ASSOCIATED TO N3
+//       \   |   /                Numeration passed to getTetraScaledJacobian 
+//        \  |  /                 N0=N3; N1=N0; N2=N5; N3=N4
+//         \ | /
+//          \|/
+//           +
+//           N5
+//
+//           N3
+//           +
+//          /|\
+//         / | \
+//        /  |  \
+//    N1 +---|---+ N2             TETRAHEDRON ASSOCIATED TO N1
+//       \   |   /                Numeration passed to getTetraScaledJacobian 
+//        \  |  /                 N0=N1; N1=N2; N2=N0; N3=N3
+//         \ | /
+//          \|/
+//           +
+//           N0
+//
+//          ...
+*/
+static double getPentaScaledJacobian(const SMDS_MeshNode* n0,
+                                     const SMDS_MeshNode* n1,
+                                     const SMDS_MeshNode* n2,
+                                     const SMDS_MeshNode* n3,
+                                     const SMDS_MeshNode* n4,
+                                     const SMDS_MeshNode* n5)
+{ 
+  std::array<double, 6> scaledJacobianOfReferenceTetra{};
+  scaledJacobianOfReferenceTetra[0] = getTetraNormalizedJacobian(n0, n2, n3, n1);  // For n0
+  scaledJacobianOfReferenceTetra[1] = getTetraNormalizedJacobian(n2, n5, n0, n1);  // For n2
+  scaledJacobianOfReferenceTetra[2] = getTetraNormalizedJacobian(n3, n0, n5, n4);  // For n3
+  scaledJacobianOfReferenceTetra[3] = getTetraNormalizedJacobian(n5, n3, n2, n4);  // For n5
+  scaledJacobianOfReferenceTetra[4] = getTetraNormalizedJacobian(n1, n2, n0, n3);  // For n1  
+  scaledJacobianOfReferenceTetra[5] = getTetraNormalizedJacobian(n4, n3, n5, n2);  // For n4
+  
+  auto minScaledJacobian = std::min_element(scaledJacobianOfReferenceTetra.begin(), scaledJacobianOfReferenceTetra.end());
+  double minScalJac = (*minScaledJacobian)* 2.0 / std::sqrt(3.0);
+
+  if (minScalJac > 0)
+    return std::min(minScalJac, std::numeric_limits<double>::max());
+
+  return std::max(minScalJac, -std::numeric_limits<double>::max());
+}
+
+//=======================================================================
+//function : getHexaPrismScaledJacobian
+//purpose  : Evaluate the scaled jacobian on the hexaprism by decomposing the goemetry into three 1hexa + 2 pentahedrons
+//=======================================================================
+static double getHexaPrismScaledJacobian(const SMDS_MeshNode* n0,
+                                          const SMDS_MeshNode* n1,
+                                          const SMDS_MeshNode* n2,
+                                          const SMDS_MeshNode* n3,
+                                          const SMDS_MeshNode* n4,
+                                          const SMDS_MeshNode* n5,
+                                          const SMDS_MeshNode* n6,
+                                          const SMDS_MeshNode* n7,
+                                          const SMDS_MeshNode* n8,
+                                          const SMDS_MeshNode* n9,
+                                          const SMDS_MeshNode* n10, 
+                                          const SMDS_MeshNode* n11)
+{ 
+  // The Pentahedron from the left
+  // n0=n0; n1=n1; n2=n2; n3=n6; n4=n7, n5=n8; 
+  double scaledJacobianPentleft = getPentaScaledJacobian( n0, n1, n2, n6, n7, n8 );
+  // The core Hexahedron
+  // n0=n0; n1=n2, n2=n3; n3=n5; n4=n6; n5=n8; n6=n9; n7=n11
+  double scaledJacobianHexa     = getHexaScaledJacobian( n0, n2, n3, n5, n6, n8, n9, n11 );
+  // The Pentahedron from the right
+  // n0=n5; n1=n4; n2=n3; n3=n11; n4=n10; n5=n9
+  double scaledJacobianPentright = getPentaScaledJacobian( n5, n4, n3, n11, n10, n9 );
+
+  return std::min( scaledJacobianHexa, std::min( scaledJacobianPentleft, scaledJacobianPentright ) );
+  
+}
+
+//=======================================================================
+//function : GetScaledJacobian
+//purpose  : Return element Scaled Jacobian using the generic definition given 
+//            in https://gitlab.kitware.com/third-party/verdict/-/blob/master/SAND2007-2853p.pdf
+//=======================================================================
+
+double SMDS_VolumeTool::GetScaledJacobian() const
+{
+  
+  // For Tetra, call directly the getTetraScaledJacobian 
+  double scaledJacobian = 0.;
+
+  VolumeType type = GetVolumeType();    
+  switch (type)
+  {
+  case TETRA:
+  case QUAD_TETRA:
+    scaledJacobian = getTetraScaledJacobian( myVolumeNodes[0], myVolumeNodes[1], myVolumeNodes[2], myVolumeNodes[3] );
+    break;    
+  case HEXA:
+  case QUAD_HEXA: 
+    scaledJacobian = getHexaScaledJacobian( myVolumeNodes[0], myVolumeNodes[1], myVolumeNodes[2], myVolumeNodes[3],
+                                            myVolumeNodes[4], myVolumeNodes[5], myVolumeNodes[6], myVolumeNodes[7] );
+    break;
+  case PYRAM:
+  case QUAD_PYRAM:  
+    scaledJacobian = getPyramidScaledJacobian( myVolumeNodes[0], myVolumeNodes[1], myVolumeNodes[2], myVolumeNodes[3], myVolumeNodes[4] );
+    break;
+  case PENTA:
+  case QUAD_PENTA:
+    scaledJacobian = getPentaScaledJacobian( myVolumeNodes[0], myVolumeNodes[1], 
+                                             myVolumeNodes[2], myVolumeNodes[3], 
+                                             myVolumeNodes[4], myVolumeNodes[5] );
+    break;
+  case HEX_PRISM: 
+    scaledJacobian = getHexaPrismScaledJacobian( myVolumeNodes[0], myVolumeNodes[1], myVolumeNodes[2], myVolumeNodes[3], 
+                                                 myVolumeNodes[4], myVolumeNodes[5], myVolumeNodes[6], myVolumeNodes[7],
+                                                 myVolumeNodes[8], myVolumeNodes[9], myVolumeNodes[10], myVolumeNodes[11]);
+    break;
+  default:
+    break;
+  }
+
+  return scaledJacobian;
+}
+
+
 //=======================================================================
 //function : GetBaryCenter
 //purpose  : 
@@ -1248,6 +1595,60 @@ bool SMDS_VolumeTool::GetFaceBaryCenter (int faceIndex, double & X, double & Y,
   return true;
 }
 
+//================================================================================
+/*!
+ * \brief Check that all the faces in a polyhedron follow the same orientation
+ * \remark there is no differentiation for outward and inward face orientation.
+ */
+//================================================================================
+bool SMDS_VolumeTool::AllFacesSameOriented() const
+{  
+  SMDS_VolumeTool* me = const_cast< SMDS_VolumeTool* > ( this );
+  bool validOrientation = true;
+  std::map<Link, std::vector<int>> collectLinksOrientations;
+  me->myFwdLinks.clear();
+  for ( int faceId = 0; faceId < NbFaces(); ++faceId )
+  {
+    me->setFace( faceId );
+    myExternalFaces = false;
+
+    // Build the links
+    for ( int i = 0; i < myCurFace.myNbNodes; ++i )
+    {
+      NLink link( myCurFace.myNodes[i], myCurFace.myNodes[i+1] );
+      std::map<Link, int>::const_iterator foundLink = myFwdLinks.find( link );
+
+      if ( foundLink == myFwdLinks.end() )
+        me->myFwdLinks.insert( make_pair( link, link.myOri ));               
+
+      collectLinksOrientations[ link ].push_back( link.myOri );
+    }     
+  }
+
+  // Check duality of the orientations
+  std::map<Link, std::vector<int>>::const_iterator theLinks;
+  for ( theLinks = collectLinksOrientations.begin(); theLinks != collectLinksOrientations.end(); theLinks++ )
+  {
+    if ( theLinks->second.size() == 2 ) // 99% of the cases there are 2 faces per link
+    {
+      if ( 1 != -1*theLinks->second[0]*theLinks->second[1] ) 
+        return false;
+      continue;
+    }
+
+    if ( theLinks->second.size() % 2 != 0 )// Dont treat uneven number of links 
+      continue;
+
+    // In the other 1% of the cases we count the number occurrence and check that they match
+    int minusOne  = std::count( theLinks->second.begin(), theLinks->second.end(), -1 );
+    int plusOne   = std::count( theLinks->second.begin(), theLinks->second.end(),  1 );
+    if ( minusOne != plusOne ) 
+      return false;
+  }
+
+  return validOrientation;
+}
+
 //=======================================================================
 //function : GetFaceArea
 //purpose  : Return face area
@@ -1736,6 +2137,52 @@ bool SMDS_VolumeTool::IsFreeFace( int faceIndex, const SMDS_MeshElement** otherV
   return isFree;
 }
 
+//================================================================================
+/*!
+ * \brief Check that only one volume is built on the face nodes
+ *        Different to IsFreeFace function, all nodes of the face are checked.
+ *        For non conforming meshes, the face that is not conform with the neighbor 
+ *        will be identify as free.
+ */
+//================================================================================
+
+bool SMDS_VolumeTool::IsFreeFaceCheckAllNodes( int faceIndex, const SMDS_MeshElement** otherVol/*=0*/ ) const
+{
+  const bool isFree = true;
+
+  if ( !setFace( faceIndex ))
+    return !isFree;
+
+  const SMDS_MeshNode** nodes = GetFaceNodes( faceIndex );
+
+  const int  di = myVolume->IsQuadratic() ? 2 : 1;
+  const int nbN = myCurFace.myNbNodes/di;
+  std::vector<bool> allNodesCoincideWithNeighbor(nbN,false);
+
+  for (int nodeId = 0; nodeId < nbN; nodeId++)
+  {
+    SMDS_ElemIteratorPtr eIt = nodes[nodeId]->GetInverseElementIterator( SMDSAbs_Volume );
+    int count = 0;
+    while ( eIt->more() )
+    {
+      const SMDS_MeshElement* vol = eIt->next();
+      if ( vol == myVolume )
+        continue;
+      else
+      {
+        count++;
+      }
+    }
+
+    if ( count==0 /*free corner in the face means free face*/)
+    {
+      if ( otherVol ) *otherVol = 0;
+      return true;
+    }
+  }
+  return IsFreeFace( faceIndex, otherVol );
+}
+
 //================================================================================
 /*!
  * \brief Thorough check that only one volume is built on the face nodes
index 19aaeadf48ff36915193874b9841c2c2f39aa9c9..56affdd48636c854eb3248ecf9586980bf4925f2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -98,11 +98,14 @@ class SMDS_EXPORT SMDS_VolumeTool
   // Return array of volume nodes
 
   int NbNodes() const { return (int) myVolumeNodes.size(); }
-  // Return array of volume nodes
+  // Return number of volume nodes
 
   double GetSize() const;
   // Return element volume
 
+  double GetScaledJacobian() const;
+  // Return the scaled jacobian 
+
   bool GetBaryCenter (double & X, double & Y, double & Z) const;
 
   bool IsOut(double X, double Y, double Z, double tol) const;
@@ -185,6 +188,12 @@ class SMDS_EXPORT SMDS_VolumeTool
   bool IsFreeFace(  int faceIndex, const SMDS_MeshElement** otherVol=0 ) const;
   // Fast check that only one volume is built on nodes of a given face
   // otherVol returns another volume sharing the given facet
+  // Function works for conforming mesh.
+
+  bool IsFreeFaceCheckAllNodes(  int faceIndex, const SMDS_MeshElement** otherVol=0 ) const;
+  // Check that only one volume is built on nodes of a given face
+  // otherVol returns another volume sharing the given facet
+  // Function to be used on mesh with non conforming elements. The face shared between 
 
   bool IsFreeFaceAdv(  int faceIndex, const SMDS_MeshElement** otherVol=0 ) const;
   // Thorough check that all volumes built on the face nodes lays on one side
@@ -196,6 +205,10 @@ class SMDS_EXPORT SMDS_VolumeTool
   bool GetFaceBaryCenter (int faceIndex, double & X, double & Y, double & Z) const;
   // Return barycenter of a face
 
+  bool AllFacesSameOriented() const;
+  // Check that all the faces of a polyhedron have the same orientation
+  // no differentiation between inward and outward orientation is made.
+
   double GetFaceArea( int faceIndex ) const;
   // Return face area
 
index d9a553891c5d304babb2cf10db8e49e4127e8bf6..deec21d115df913ae1fcbfee50b4a2e2df5c1d93 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2010-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 650b0ea9ef73ab9c3f13f342714459ea3b90e4a9..3fa804f23fc02436add006346664a44242cb2661 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2010-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 262375bb51e87efbc8c0570e7551b7ca60be5cd1..bcdf6a67e580d08895c4d8048639b90c5259fc9d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a2ca53b27c5c10804263a6ebddccc3f3e427f6c4..6b36f0f4a8c37bd085ab442c2e17095042e16356 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2006-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index fea16b273090b4b3e45625f0681411cebd362170..300e6f268bcdb344586f40fcf0aa92006684c038 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2006-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ad34d18d8806e53098880a77759757f06aaa775f..a9d9e8ad8219d7de45455fa029a17d46fd0a0176 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -20,6 +20,7 @@
 # --- options ---
 # additional include directories
 INCLUDE_DIRECTORIES(
+  ${QT_INCLUDES}
   ${KERNEL_INCLUDE_DIRS}
   ${GEOM_INCLUDE_DIRS}
   ${OpenCASCADE_INCLUDE_DIR}
@@ -69,6 +70,7 @@ SET(_link_LIBRARIES
   MeshDriverGMF
   ${DriverCGNS_LIB}
   ${MEDCoupling_medloader}
+  Qt5::Core
 )
 
 # --- headers ---
@@ -77,6 +79,8 @@ SET(_link_LIBRARIES
 SET(SMESHimpl_HEADERS
   SMESH_Gen.hxx
   SMESH_Mesh.hxx
+  SMESH_SequentialMesh.hxx
+  SMESH_ParallelMesh.hxx
   SMESH_subMesh.hxx
   SMESH_subMeshEventListener.hxx
   SMESH_Hypothesis.hxx
@@ -89,6 +93,10 @@ SET(SMESHimpl_HEADERS
   SMESH_ProxyMesh.hxx
   SMESH_SMESH.hxx
   MG_ADAPT.hxx
+  SMESH_Homard.hxx
+  SMESH_DriverMesh.hxx
+  SMESH_DriverShape.hxx
+  SMESH_MeshLocker.hxx
 )
 
 # --- sources ---
@@ -98,6 +106,8 @@ SET(SMESHimpl_SOURCES
   memoire.h
   SMESH_Gen.cxx
   SMESH_Mesh.cxx
+  SMESH_SequentialMesh.cxx
+  SMESH_ParallelMesh.cxx
   SMESH_subMesh.cxx
   SMESH_Hypothesis.cxx
   SMESH_Algo.cxx
@@ -108,6 +118,10 @@ SET(SMESHimpl_SOURCES
   SMESH_ProxyMesh.cxx
   SMESH_MesherHelper.cxx
   MG_ADAPT.cxx
+  SMESH_Homard.cxx
+  SMESH_DriverMesh.cxx
+  SMESH_DriverShape.cxx
+  SMESH_MeshLocker.cxx
 )
 
 # --- rules ---
@@ -115,7 +129,7 @@ SET(SMESHimpl_SOURCES
 ADD_LIBRARY(SMESHimpl ${SMESHimpl_SOURCES})
 IF(WIN32)
   TARGET_COMPILE_OPTIONS(SMESHimpl PRIVATE /bigobj)
-  ADD_DEFINITIONS(-DNOMINMAX) 
+  ADD_DEFINITIONS(-DNOMINMAX)
 ENDIF(WIN32)
 
 TARGET_LINK_LIBRARIES(SMESHimpl ${_link_LIBRARIES} )
index 27a57c894cc24edb5544fa21a0d1b1b1807641dc..b7af53ab04a152f4750c8f36c8c4b7685d195413 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2020-2021  CEA/DEN, EDF R&D
+// Copyright (C) 2020-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -43,6 +43,7 @@
 #include <fcntl.h>
 #include <array>
 #include <memory>   // unique_ptr
+#include <chrono>
 
 typedef SMESH_Comment ToComment;
 
@@ -956,6 +957,7 @@ std::string MgAdapt::getCommandToRun()
   cmd+= " --in "+ meshIn;
   meshFormatOutputMesh = getFileName()+".mesh";
   tmpFilesToBeDeleted.push_back(meshFormatOutputMesh);
+
   cmd+= " --out "+ meshFormatOutputMesh;
   if (useLocalMap || useConstantValue) cmd+= " --sizemap "+ solFileIn;
   else //  (useBackgroundMap)
@@ -1036,14 +1038,19 @@ std::string MgAdapt::getCommandToRun()
     if ( key.empty() )
       return ToComment( "Problem with library SalomeMeshGemsKeyGenerator: " + errorTxt );
 
-    cmd += " --key " + key;
+    if ( key!="0" )
+      cmd += " --key " + key;
   }
 
 #ifdef WIN32
   cmd += " < NUL";
 #endif
-  //   std::cout << "--- cmd :"<< std::endl;
-  //   std::cout << cmd << std::endl;
+
+  if (SALOME::VerbosityActivated())
+    {
+      std::cout << "--- cmd :"<< std::endl;
+      std::cout << cmd << std::endl;
+    }
 
   return cmd;
 }
@@ -1130,7 +1137,7 @@ std::string MgAdapt::getFileName() const
 aGenericName << _getpid();
 #endif
   aGenericName << "_";
-  aGenericName << std::abs((int)(long) aGenericName.data());
+  aGenericName << std::chrono::system_clock::now().time_since_epoch().count();
 
   return aGenericName;
 }
@@ -1575,9 +1582,9 @@ MgAdapt::Status MgAdapt::addMessage(const std::string& msg,
   _errorMessages.push_back( msg );
 
   //~MESSAGE(msg);
-#ifdef _DEBUG_
-  std::cout << msg << std::endl;
-#endif
+  if (SALOME::VerbosityActivated())
+    std::cout << msg << std::endl;
+
   return ( _status = isFatal ? MgAdapt::DRS_FAIL : MgAdapt::DRS_WARN_SKIP_ELEM );
 }
 
index 12629a9dab485814e283d59a70bb60d6ba1481b6..323a3c07364f4292a2bae07f520cea62117449bc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2020-2021  CEA/DEN, EDF R&D
+// Copyright (C) 2020-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9575c5881b9e8f592d5d72fcef3e3b05a3a3a75e..a03fa748995b9a01a56824338013b169fb021882 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -169,7 +169,7 @@ const SMESH_Algo::Features& SMESH_Algo::GetFeatures( const std::string& algoType
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 
@@ -186,7 +186,7 @@ SMESH_Algo::SMESH_Algo (int hypId, SMESH_Gen * gen)
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 
@@ -198,7 +198,7 @@ SMESH_Algo::~SMESH_Algo()
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 
@@ -238,7 +238,7 @@ istream & SMESH_Algo::LoadFrom(istream & load) { return load; }
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 
@@ -252,7 +252,7 @@ const vector < string > &SMESH_Algo::GetCompatibleHypothesis()
  *  List the hypothesis used by the algorithm associated to the shape.
  *  Hypothesis associated to father shape -are- taken into account (see
  *  GetAppliedHypothesis). Relevant hypothesis have a name (type) listed in
- *  the algorithm. This method could be surcharged by specific algorithms, in 
+ *  the algorithm. This method could be surcharged by specific algorithms, in
  *  case of several hypothesis simultaneously applicable.
  */
 //=============================================================================
@@ -264,7 +264,7 @@ SMESH_Algo::GetUsedHypothesis(SMESH_Mesh &         aMesh,
 {
   SMESH_Algo* me = const_cast< SMESH_Algo* >( this );
 
-  std::list<const SMESHDS_Hypothesis *> savedHyps; // don't delete the list if 
+  std::list<const SMESHDS_Hypothesis *> savedHyps; // don't delete the list if
   savedHyps.swap( me->_usedHypList );              // it does not change (#16578)
 
   me->_usedHypList.clear();
@@ -565,7 +565,7 @@ bool SMESH_Algo::IsStraight( const TopoDS_Edge & E,
     return false; // E seems closed
 
   double edgeTol = 10 * curve.Tolerance();
-  double lenTol2 = lineLen2 * 1e-4; 
+  double lenTol2 = lineLen2 * 1e-4;
   double tol2 = Min( edgeTol * edgeTol, lenTol2 );
 
   const double nbSamples = 7;
@@ -816,7 +816,7 @@ SMESH_Algo::EMeshError SMESH_Algo::GetMeshError(SMESH_subMesh* subMesh)
 /*!
  * \brief Sets event listener to submeshes if necessary
  * \param subMesh - submesh where algo is set
- * 
+ *
  * After being set, event listener is notified on each event of a submesh.
  * By default non listener is set
  */
@@ -1020,7 +1020,7 @@ void SMESH_Algo::addBadInputElements(const SMESHDS_SubMesh* sm,
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 
@@ -1034,7 +1034,7 @@ void SMESH_Algo::addBadInputElements(const SMESHDS_SubMesh* sm,
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 
index 25d54fec5fa97d5027d713efa33c1a0e1da44dab..127d437a114720241187e8368bb3288fa34ee152 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -198,15 +198,15 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
 
   /*!
    * \brief Return a list of compatible hypotheses used to mesh a shape
-    * \param aMesh - the mesh 
+    * \param aMesh - the mesh
     * \param aShape - the shape
     * \param ignoreAuxiliary - do not include auxiliary hypotheses in the list
     * \retval const std::list <const SMESHDS_Hypothesis*> - hypotheses list
-   * 
+   *
    *  List the hypothesis used by the algorithm associated to the shape.
    *  Hypothesis associated to father shape -are- taken into account (see
    *  GetAppliedHypothesis). Relevant hypothesis have a name (type) listed in
-   *  the algorithm. This method could be surcharged by specific algorithms, in 
+   *  the algorithm. This method could be surcharged by specific algorithms, in
    *  case of several hypothesis simultaneously applicable.
    */
   virtual const std::list <const SMESHDS_Hypothesis *> &
@@ -277,10 +277,13 @@ public:
   // 6 - if algo !NeedDiscreteBoundary() but requires presence of
   // hypotheses of dimension <dim> to generate all-dimensional mesh.
   // This info is used not to issue warnings on hiding of lower global algos.
+  //
+
+  virtual void setSubMeshesToCompute(SMESH_subMesh * aSubMesh) {SubMeshesToCompute().assign( 1, aSubMesh );}
 
 public:
   // ==================================================================
-  // Methods to track non hierarchical dependencies between submeshes 
+  // Methods to track non hierarchical dependencies between submeshes
   // ==================================================================
 
   /*!
@@ -292,7 +295,7 @@ public:
    * By default none listener is set
    */
   virtual void SetEventListener(SMESH_subMesh* subMesh);
-  
+
   /*!
    * \brief Allow algo to do something after persistent restoration
     * \param subMesh - restored submesh
@@ -300,7 +303,7 @@ public:
    * This method is called only if a submesh has HYP_OK algo_state.
    */
   virtual void SubmeshRestored(SMESH_subMesh* subMesh);
-  
+
 public:
   // ==================================================================
   // Common algo utilities
@@ -398,7 +401,7 @@ public:
   enum EMeshError { MEr_OK = 0, MEr_HOLES, MEr_BAD_ORI, MEr_EMPTY };
 
   /*!
-   * \brief Finds topological errors of a sub-mesh 
+   * \brief Finds topological errors of a sub-mesh
    */
   static EMeshError GetMeshError(SMESH_subMesh* subMesh);
 
@@ -434,7 +437,7 @@ protected:
   std::vector<std::string>              _compatibleHypothesis;
   std::list<const SMESHDS_Hypothesis *> _usedHypList;
   std::list<TopoDS_Shape>               _assigedShapeList; // _usedHypList assigned to
-  
+
 
   // Algo features influencing which Compute() and how is called:
   // in what turn and with what input shape.
diff --git a/src/SMESH/SMESH_DriverMesh.cxx b/src/SMESH/SMESH_DriverMesh.cxx
new file mode 100644 (file)
index 0000000..496d1ed
--- /dev/null
@@ -0,0 +1,105 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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_DriverMesh.cxx
+//  Author : Yoann AUDOUIN, EDF
+//  Module : SMESH
+//
+
+#include "utilities.h"
+
+#include "SMESH_DriverMesh.hxx"
+
+#include "SMESH_Mesh.hxx"
+#include "SMESH_Gen.hxx"
+
+#include <MEDFileMesh.hxx>
+#include <MEDCouplingUMesh.hxx>
+
+using namespace MEDCoupling;
+
+/**
+ * @brief Compares the mesh from two mesh files (MED)
+ *
+ * @param mesh_file1 First file
+ * @param mesh_file2 Second file
+ * @param mesh_name Name of the mesh in the files
+ *
+ * @return true if the mesh within the files are identical
+ */
+bool SMESH_DriverMesh::diffMEDFile(const std::string mesh_file1, const std::string mesh_file2, const std::string mesh_name){
+  MEDFileUMesh* medmesh1 = MEDFileUMesh::New(mesh_file1, mesh_name);
+  MEDFileUMesh* medmesh2 = MEDFileUMesh::New(mesh_file2, mesh_name);
+  MEDCouplingUMesh *m0_1=medmesh1->getMeshAtLevel(0,false);
+  MEDCouplingUMesh *m0_2=medmesh2->getMeshAtLevel(0,false);
+  return m0_1->isEqual(m0_2, 1e-12);
+}
+
+std::string getMeshName(std::string mesh_file){
+  // TODO: Memory leak but desctructor private check with AG
+  MEDFileUMesh * myMedMesh = MEDFileUMesh::New(mesh_file);
+
+  return myMedMesh->getLevel0Mesh()->getName();
+}
+
+/**
+ * @brief Import a mesh from a mesh file (MED) into a SMESH_Mesh object
+ *
+ * @param mesh_file the file
+ * @param aMesh the object
+ * @param mesh_name the name of the mesh in the file
+ *
+ * @return error code
+ */
+int SMESH_DriverMesh::importMesh(const std::string mesh_file, SMESH_Mesh& aMesh){
+  // TODO: change that as it depends on the language
+  std::string mesh_name = getMeshName(mesh_file);
+  MESSAGE("Importing mesh from " << mesh_file << " mesh " << mesh_name);
+  int ret = aMesh.MEDToMesh(mesh_file.c_str(), mesh_name.c_str());
+  return ret;
+}
+
+/**
+ * @brief Export the content of a SMESH_Mesh into a mesh file (MED)
+ *
+ * @param mesh_file the file
+ * @param aMesh the object
+ * @param mesh_name name of the mesh in the file
+ *
+ * @return error code
+ */
+int SMESH_DriverMesh::exportMesh(const std::string mesh_file, SMESH_Mesh& aMesh, const std::string mesh_name){
+
+  MESSAGE("Exporting mesh to " << mesh_file);
+  aMesh.ExportMED(mesh_file.c_str(), // theFile
+                  mesh_name.c_str(), // theMeshName
+                  false, // theAutoGroups
+                  -1, // theVersion
+                  nullptr, // theMeshPart
+                  true, // theAutoDimension
+                  true, // theAddODOnVertices
+                  1e-8, // theZTolerance
+                  true // theSaveNumbers
+                  );
+  return true;
+}
diff --git a/src/SMESH/SMESH_DriverMesh.hxx b/src/SMESH/SMESH_DriverMesh.hxx
new file mode 100644 (file)
index 0000000..0e3ef92
--- /dev/null
@@ -0,0 +1,47 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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_DriverMesh.hxx
+//  Author : Yoann AUDOUIN, EDF
+//  Module : SMESH
+//
+
+#ifndef _SMESH_DRIVERMESH_HXX_
+#define _SMESH_DRIVERMESH_HXX_
+
+#include <string>
+#include <cassert>
+#include "SMESH_SMESH.hxx"
+
+class SMESH_Mesh;
+class SMESH_EXPORT SMESH_DriverMesh{
+  public:
+    static bool diffMEDFile(const std::string mesh_file1,
+                            const std::string mesh_file2,
+                            const std::string mesh_name);
+    static int importMesh(const std::string mesh_file,
+                          SMESH_Mesh& aMesh);
+    static int exportMesh(const std::string mesh_file,
+                          SMESH_Mesh& aMesh,
+                          const std::string meshName);
+};
+#endif
diff --git a/src/SMESH/SMESH_DriverShape.cxx b/src/SMESH/SMESH_DriverShape.cxx
new file mode 100644 (file)
index 0000000..b35e9cc
--- /dev/null
@@ -0,0 +1,188 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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_DriverShape.cxx
+//  Author : Yoann AUDOUIN, EDF
+//  Module : SMESH
+//
+#include <utilities.h>
+#include <Utils_SALOME_Exception.hxx>
+#include "SMESH_DriverShape.hxx"
+
+// step include
+#include <STEPControl_Reader.hxx>
+#include <STEPControl_Writer.hxx>
+#include <Interface_Static.hxx>
+
+// Brep include
+#include <BRepTools.hxx>
+#include <BRep_Builder.hxx>
+
+//Occ include
+#include <TopoDS.hxx>
+
+#ifndef WIN32
+#include <boost/filesystem.hpp>
+#include <boost/algorithm/string.hpp>
+namespace fs = boost::filesystem;
+#endif
+
+/**
+ * @brief Import the content of a shape file (STEP) into a TopDS_Shape object
+ *
+ * @param shape_file the shape file
+ * @param aShape the object
+ *
+ * @return error code
+ */
+int importSTEPShape(const std::string shape_file, TopoDS_Shape& aShape){
+
+  MESSAGE("Importing STEP shape from " << shape_file);
+  STEPControl_Reader reader;
+  // Forcing Unit in meter
+  Interface_Static::SetCVal("xstep.cascade.unit","M");
+  Interface_Static::SetIVal("read.step.ideas", 1);
+  Interface_Static::SetIVal("read.step.nonmanifold", 1);
+  IFSelect_ReturnStatus aStat = reader.ReadFile(shape_file.c_str());
+  if(aStat != IFSelect_RetDone){
+    throw SALOME_Exception("Reading error for " + shape_file);
+  }
+
+  int NbTrans = reader.TransferRoots();
+  // There should be only one shape within the file
+  assert(NbTrans==1);
+  aShape = reader.OneShape();
+
+  return false;
+}
+
+/**
+ * @brief Export the content of a TopoDS_Shape into a shape file (STEP)
+ *
+ * @param shape_file the shape file
+ * @param aShape the object
+ *
+ * @return error code
+ */
+int exportSTEPShape(const std::string shape_file, const TopoDS_Shape& aShape){
+
+  MESSAGE("Exporting STEP shape to " << shape_file);
+
+  STEPControl_Writer aWriter;
+  // Forcing Unit in meter
+  Interface_Static::SetCVal("xstep.cascade.unit","M");
+  Interface_Static::SetCVal("write.step.unit","M");
+  Interface_Static::SetIVal("write.step.nonmanifold", 1);
+
+  IFSelect_ReturnStatus aStat = aWriter.Transfer(aShape,STEPControl_AsIs);
+  if(aStat != IFSelect_RetDone){
+    throw SALOME_Exception("Reading error for " + shape_file);
+  }
+
+  aStat = aWriter.Write(shape_file.c_str());
+
+  if(aStat != IFSelect_RetDone){
+    throw SALOME_Exception("Writing error for " + shape_file);
+  }
+  return aStat;
+}
+
+/**
+ * @brief Import the content of a shape file (BREP) into a TopDS_Shape object
+ *
+ * @param shape_file the shape file
+ * @param aShape the object
+ *
+ * @return error code
+ */
+int importBREPShape(const std::string shape_file, TopoDS_Shape& aShape){
+
+  MESSAGE("Importing BREP shape from " << shape_file);
+  BRep_Builder builder;
+  BRepTools::Read(aShape, shape_file.c_str(), builder);
+
+  return false;
+}
+
+/**
+ * @brief Export the content of a TopoDS_Shape into a shape file (BREP)
+ *
+ * @param shape_file the shape file
+ * @param aShape the object
+ *
+ * @return error code
+ */
+int exportBREPShape(const std::string shape_file, const TopoDS_Shape& aShape){
+
+  MESSAGE("Exporting BREP shape to " << shape_file);
+  BRepTools::Write(aShape, shape_file.c_str());
+
+  return false;
+}
+
+/**
+ * @brief Import the content of a shape file into a TopDS_Shape object
+ *
+ * @param shape_file the shape file
+ * @param aShape the object
+ *
+ * @return error code
+ */
+int SMESH_DriverShape::importShape(const std::string shape_file, TopoDS_Shape& aShape){
+#ifndef WIN32
+  std::string type = fs::path(shape_file).extension().string();
+  boost::algorithm::to_lower(type);
+  if (type == ".brep"){
+    return importBREPShape(shape_file, aShape);
+  } else if (type == ".step"){
+    return importSTEPShape(shape_file, aShape);
+  } else {
+    throw SALOME_Exception("Unknow format for importShape: " + type);
+  }
+#else
+  return 0;
+#endif
+}
+
+/**
+ * @brief Import the content of a shape file into a TopDS_Shape object
+ *
+ * @param shape_file the shape file
+ * @param aShape the object
+ *
+ * @return error code
+ */
+int SMESH_DriverShape::exportShape(const std::string shape_file, const TopoDS_Shape& aShape){
+#ifndef WIN32
+  std::string type = fs::path(shape_file).extension().string();
+  boost::algorithm::to_lower(type);
+  if (type == ".brep"){
+    return exportBREPShape(shape_file, aShape);
+  } else if (type == ".step"){
+    return exportSTEPShape(shape_file, aShape);
+  } else {
+    throw SALOME_Exception("Unknow format for exportShape: " + type);
+  }
+#else
+  return 0;
+#endif
+}
diff --git a/src/SMESH/SMESH_DriverShape.hxx b/src/SMESH/SMESH_DriverShape.hxx
new file mode 100644 (file)
index 0000000..721ba96
--- /dev/null
@@ -0,0 +1,40 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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_DriverShape.hxx
+//  Author : Yoann AUDOUIN, EDF
+//  Module : SMESH
+//
+
+#ifndef _SMESH_DRIVERSHAPE_HXX_
+#define _SMESH_DRIVERSHAPE_HXX_
+
+#include <string>
+#include <cassert>
+#include "SMESH_SMESH.hxx"
+class TopoDS_Shape;
+class SMESH_EXPORT SMESH_DriverShape{
+  public:
+    static int importShape(const std::string shape_file, TopoDS_Shape& aShape);
+    static int exportShape(const std::string shape_file, const TopoDS_Shape& aShape);
+};
+#endif
index 7b02701b3c72227515ad10e94bb71ca29d853e77..8b042cf00f2451808deda9a27c9e0ef257f0230b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //  Author : Paul RASCLE, EDF
 //  Module : SMESH
 //
-
 //#define CHRONODEF
-
+//
 #include "SMESH_Gen.hxx"
 
+#include "SMESH_DriverMesh.hxx"
 #include "SMDS_Mesh.hxx"
 #include "SMDS_MeshElement.hxx"
 #include "SMDS_MeshNode.hxx"
 #include "SMESHDS_Document.hxx"
 #include "SMESH_HypoFilter.hxx"
 #include "SMESH_Mesh.hxx"
+#include "SMESH_SequentialMesh.hxx"
+#include "SMESH_ParallelMesh.hxx"
 #include "SMESH_MesherHelper.hxx"
 #include "SMESH_subMesh.hxx"
 
-#include "utilities.h"
-#include "OpUtil.hxx"
-#include "Utils_ExceptHandlers.hxx"
+#include <utilities.h>
+#include <Utils_ExceptHandlers.hxx>
 
-#include <TopoDS_Iterator.hxx>
+#include <TopExp_Explorer.hxx>
 #include <TopoDS.hxx>
+#include <TopoDS_Iterator.hxx>
 
 #include "memoire.h"
+#include <functional>
+
+#include <QString>
+#include <QProcess>
 
 #ifdef WIN32
   #include <windows.h>
 
 #include <Basics_Utils.hxx>
 
+#ifndef WIN32
+#include <boost/asio.hpp>
+#endif
+
 using namespace std;
+#ifndef WIN32
+#include <boost/filesystem.hpp>
+namespace fs = boost::filesystem;
+#endif
 
 // Environment variable separator
 #ifdef WIN32
@@ -146,7 +160,8 @@ SMESH_Mesh* SMESH_Gen::CreateMesh(bool theIsEmbeddedMode)
   Unexpect aCatch(SalomeException);
 
   // create a new SMESH_mesh object
-  SMESH_Mesh *aMesh = new SMESH_Mesh(_localId++,
+  SMESH_Mesh *aMesh = new SMESH_SequentialMesh(
+                                     _localId++,
                                      this,
                                      theIsEmbeddedMode,
                                      _studyContext->myDocument);
@@ -155,6 +170,286 @@ SMESH_Mesh* SMESH_Gen::CreateMesh(bool theIsEmbeddedMode)
   return aMesh;
 }
 
+//=============================================================================
+/*!
+ * Creates a parallel mesh in a study.
+ * if (theIsEmbeddedMode) { mesh modification commands are not logged }
+ */
+//=============================================================================
+
+SMESH_ParallelMesh* SMESH_Gen::CreateParallelMesh(bool theIsEmbeddedMode)
+{
+  Unexpect aCatch(SalomeException);
+
+  // create a new SMESH_mesh object
+  SMESH_ParallelMesh *aMesh = new SMESH_ParallelMesh(
+                                     _localId++,
+                                     this,
+                                     theIsEmbeddedMode,
+                                     _studyContext->myDocument);
+  _studyContext->mapMesh[_localId-1] = aMesh;
+
+  return aMesh;
+}
+
+//=============================================================================
+/*!
+ * Algo to run the computation of all the submeshes of a mesh in sequentila
+ */
+//=============================================================================
+
+bool SMESH_Gen::sequentialComputeSubMeshes(
+          SMESH_Mesh & aMesh,
+          const TopoDS_Shape & aShape,
+          const ::MeshDimension       aDim,
+          TSetOfInt*                  aShapesId /*=0*/,
+          TopTools_IndexedMapOfShape* allowedSubShapes,
+          SMESH_subMesh::compute_event &computeEvent,
+          const bool includeSelf,
+          const bool complexShapeFirst,
+          const bool   aShapeOnly)
+{
+  MESSAGE("Sequential Compute of submeshes");
+
+  bool ret = true;
+
+  SMESH_subMeshIteratorPtr smIt;
+  SMESH_subMesh *shapeSM = aMesh.GetSubMesh(aShape);
+
+  smIt = shapeSM->getDependsOnIterator(includeSelf, !complexShapeFirst);
+  while ( smIt->more() )
+  {
+    SMESH_subMesh* smToCompute = smIt->next();
+
+    // do not mesh vertices of a pseudo shape
+    const TopoDS_Shape&        shape = smToCompute->GetSubShape();
+    const TopAbs_ShapeEnum shapeType = shape.ShapeType();
+    if ( !aMesh.HasShapeToMesh() && shapeType == TopAbs_VERTEX )
+      continue;
+
+    // check for preview dimension limitations
+    if ( aShapesId && SMESH_Gen::GetShapeDim( shapeType ) > (int)aDim )
+    {
+      // clear compute state not to show previous compute errors
+      //  if preview invoked less dimension less than previous
+      smToCompute->ComputeStateEngine( SMESH_subMesh::CHECK_COMPUTE_STATE );
+      continue;
+    }
+
+    if (smToCompute->GetComputeState() == SMESH_subMesh::READY_TO_COMPUTE)
+    {
+      if (_compute_canceled)
+        return false;
+      smToCompute->SetAllowedSubShapes( fillAllowed( shapeSM, aShapeOnly, allowedSubShapes ));
+      setCurrentSubMesh( smToCompute );
+      smToCompute->ComputeStateEngine( computeEvent );
+      setCurrentSubMesh( nullptr );
+      smToCompute->SetAllowedSubShapes( nullptr );
+    }
+
+    // we check all the sub-meshes here and detect if any of them failed to compute
+    if (smToCompute->GetComputeState() == SMESH_subMesh::FAILED_TO_COMPUTE &&
+        ( shapeType != TopAbs_EDGE || !SMESH_Algo::isDegenerated( TopoDS::Edge( shape ))))
+      ret = false;
+    else if ( aShapesId )
+      aShapesId->insert( smToCompute->GetId() );
+  }
+  //aMesh.GetMeshDS()->Modified();
+  return ret;
+
+};
+
+//=============================================================================
+/*
+ * compute of a submesh
+ * This function is passed to the thread pool
+ */
+//=============================================================================
+const std::function<void(SMESH_subMesh*,
+                         SMESH_subMesh::compute_event,
+                         SMESH_subMesh*,
+                         bool,
+                         TopTools_IndexedMapOfShape *,
+                         TSetOfInt*)>
+     compute_function([] (SMESH_subMesh* sm,
+                          SMESH_subMesh::compute_event event,
+                          SMESH_subMesh *shapeSM,
+                          bool aShapeOnly,
+                          TopTools_IndexedMapOfShape *allowedSubShapes,
+                          TSetOfInt*                  aShapesId) -> void
+{
+  if (sm->GetComputeState() == SMESH_subMesh::READY_TO_COMPUTE)
+  {
+    sm->SetAllowedSubShapes( fillAllowed( shapeSM, aShapeOnly, allowedSubShapes ));
+    //setCurrentSubMesh( sm );
+    sm->ComputeStateEngine(event);
+    //setCurrentSubMesh( nullptr );
+    sm->SetAllowedSubShapes( nullptr );
+  }
+
+  if ( aShapesId )
+    aShapesId->insert( sm->GetId() );
+
+});
+
+
+//=============================================================================
+/*
+ * Copy a file on remote resource
+ */
+//=============================================================================
+
+void SMESH_Gen::send_mesh(SMESH_Mesh& aMesh, std::string file_name)
+{
+#ifndef WIN32
+  SMESH_ParallelMesh& aParMesh = dynamic_cast<SMESH_ParallelMesh&>(aMesh);
+  // Calling run_mesher
+  // Path to mesher script
+  fs::path send_files = fs::path(std::getenv("SMESH_ROOT_DIR"))/
+  fs::path("bin")/
+  fs::path("salome")/
+  fs::path("send_files.py");
+
+  std::string s_program="python3";
+  std::list<std::string> params;
+  params.push_back(send_files.string());
+  params.push_back(file_name);
+  params.push_back("--resource="+aParMesh.GetResource());
+
+  // log file
+  fs::path log_file=aParMesh.GetTmpFolder() / fs::path("copy.log");
+  QString out_file = log_file.string().c_str();
+
+  // Building arguments for QProcess
+  QString program = QString::fromStdString(s_program);
+  QStringList arguments;
+  for(auto arg : params){
+    arguments << arg.c_str();
+  }
+
+  std::string cmd = "";
+  cmd += s_program;
+  for(auto arg: params){
+    cmd += " " + arg;
+  }
+  MESSAGE("Send files command: ");
+  MESSAGE(cmd);
+
+  QProcess myProcess;
+  myProcess.setProcessChannelMode(QProcess::MergedChannels);
+  myProcess.setStandardOutputFile(out_file);
+
+  myProcess.start(program, arguments);
+  // Waiting for process to finish (argument -1 make it wait until the end of
+  // the process otherwise it just waits 30 seconds)
+  bool finished = myProcess.waitForFinished(-1);
+  int ret = myProcess.exitCode();
+
+  if(ret != 0 || !finished){
+  // Run crahed
+    std::string msg = "Issue with send_files: \n";
+    msg += "See log for more details: " + log_file.string() + "\n";
+    msg += cmd + "\n";
+    throw SALOME_Exception(msg);
+  }
+#endif
+}
+
+//=============================================================================
+/*!
+ * Algo to run the computation of all the submeshes of a mesh in parallel
+ */
+//=============================================================================
+
+bool SMESH_Gen::parallelComputeSubMeshes(
+          SMESH_Mesh & aMesh,
+          const TopoDS_Shape & aShape,
+          const ::MeshDimension       aDim,
+          TSetOfInt*                  aShapesId /*=0*/,
+          TopTools_IndexedMapOfShape* allowedSubShapes,
+          SMESH_subMesh::compute_event &computeEvent,
+          const bool includeSelf,
+          const bool complexShapeFirst,
+          const bool   aShapeOnly)
+{
+#ifdef WIN32
+  throw SALOME_Exception("ParallelMesh is not working on Windows");
+#else
+
+  bool ret = true;
+
+  SMESH_subMeshIteratorPtr smIt;
+  SMESH_subMesh *shapeSM = aMesh.GetSubMesh(aShape);
+  SMESH_ParallelMesh &aParMesh = dynamic_cast<SMESH_ParallelMesh&>(aMesh);
+
+  TopAbs_ShapeEnum previousShapeType = TopAbs_VERTEX;
+  MESSAGE("Parallel Compute of submeshes");
+
+
+  smIt = shapeSM->getDependsOnIterator(includeSelf, !complexShapeFirst);
+  while ( smIt->more() )
+  {
+    SMESH_subMesh* smToCompute = smIt->next();
+
+    // do not mesh vertices of a pseudo shape
+    const TopoDS_Shape&        shape = smToCompute->GetSubShape();
+    const TopAbs_ShapeEnum shapeType = shape.ShapeType();
+    // Not doing in parallel 1D meshes
+    if ( !aMesh.HasShapeToMesh() && shapeType == TopAbs_VERTEX )
+      continue;
+
+    if (shapeType != previousShapeType) {
+      // Waiting for all threads for the previous type to end
+      aMesh.wait();
+
+      std::string file_name="";
+      if (previousShapeType == aParMesh.GetDumpElement())
+        file_name = "Mesh"+std::to_string(aParMesh.GetParallelismDimension()-1)+"D.med";
+
+      if(file_name != "")
+      {
+        fs::path mesh_file = fs::path(aParMesh.GetTmpFolder()) / fs::path(file_name);
+             SMESH_DriverMesh::exportMesh(mesh_file.string(), aMesh, "MESH");
+        if (aParMesh.GetParallelismMethod() == ParallelismMethod::MultiNode) {
+          this->send_mesh(aMesh, mesh_file.string());
+        }
+      }
+      //Resetting threaded pool info
+      previousShapeType = shapeType;
+    }
+
+    // check for preview dimension limitations
+    if ( aShapesId && SMESH_Gen::GetShapeDim( shapeType ) > (int)aDim )
+    {
+      // clear compute state not to show previous compute errors
+      //  if preview invoked less dimension less than previous
+      smToCompute->ComputeStateEngine( SMESH_subMesh::CHECK_COMPUTE_STATE );
+      continue;
+    }
+    // Parallelism is only for 3D parts
+    if(shapeType!=aMesh.GetParallelElement()){
+      compute_function(smToCompute, computeEvent,
+                      shapeSM, aShapeOnly, allowedSubShapes,
+                      aShapesId);
+    }else{
+      boost::asio::post(*(aParMesh.GetPool()), std::bind(compute_function, smToCompute, computeEvent,
+                        shapeSM, aShapeOnly, allowedSubShapes,
+                        aShapesId));
+    }
+  }
+
+  // Waiting for the thread for Solids to finish
+  aMesh.wait();
+
+  aMesh.GetMeshDS()->Modified();
+
+  // Cleanup done here as in Python the destructor is not called
+  aParMesh.cleanup();
+
+  return ret;
+#endif
+};
+
 //=============================================================================
 /*
  * Compute a mesh
@@ -201,57 +496,25 @@ bool SMESH_Gen::Compute(SMESH_Mesh &                aMesh,
     // ===============================================
     // Mesh all the sub-shapes starting from vertices
     // ===============================================
+    ret = aMesh.ComputeSubMeshes(
+            this,
+            aMesh, aShape, aDim,
+            aShapesId, allowedSubShapes,
+            computeEvent,
+            includeSelf,
+            complexShapeFirst,
+            aShapeOnly);
 
-    smIt = shapeSM->getDependsOnIterator(includeSelf, !complexShapeFirst);
-    while ( smIt->more() )
-    {
-      SMESH_subMesh* smToCompute = smIt->next();
-
-      // do not mesh vertices of a pseudo shape
-      const TopoDS_Shape&        shape = smToCompute->GetSubShape();
-      const TopAbs_ShapeEnum shapeType = shape.ShapeType();
-      if ( !aMesh.HasShapeToMesh() && shapeType == TopAbs_VERTEX )
-        continue;
-
-      // check for preview dimension limitations
-      if ( aShapesId && GetShapeDim( shapeType ) > (int)aDim )
-      {
-        // clear compute state not to show previous compute errors
-        //  if preview invoked less dimension less than previous
-        smToCompute->ComputeStateEngine( SMESH_subMesh::CHECK_COMPUTE_STATE );
-        continue;
-      }
-
-      if (smToCompute->GetComputeState() == SMESH_subMesh::READY_TO_COMPUTE)
-      {
-        if (_compute_canceled)
-          return false;
-        smToCompute->SetAllowedSubShapes( fillAllowed( shapeSM, aShapeOnly, allowedSubShapes ));
-        setCurrentSubMesh( smToCompute );
-        smToCompute->ComputeStateEngine( computeEvent );
-        setCurrentSubMesh( nullptr );
-        smToCompute->SetAllowedSubShapes( nullptr );
-      }
-
-      // we check all the sub-meshes here and detect if any of them failed to compute
-      if (smToCompute->GetComputeState() == SMESH_subMesh::FAILED_TO_COMPUTE &&
-          ( shapeType != TopAbs_EDGE || !SMESH_Algo::isDegenerated( TopoDS::Edge( shape ))))
-        ret = false;
-      else if ( aShapesId )
-        aShapesId->insert( smToCompute->GetId() );
-    }
-    //aMesh.GetMeshDS()->Modified();
     return ret;
   }
   else
   {
     // ================================================================
-    // Apply algos that do NOT require discreteized boundaries
+    // Apply algos that do NOT require discretized boundaries
     // ("all-dimensional") and do NOT support sub-meshes, starting from
-    // the most complex shapes and collect sub-meshes with algos that 
+    // the most complex shapes and collect sub-meshes with algos that
     // DO support sub-meshes
     // ================================================================
-
     list< SMESH_subMesh* > smWithAlgoSupportingSubmeshes[4]; // for each dim
 
     // map to sort sm with same dim algos according to dim of
@@ -273,7 +536,7 @@ bool SMESH_Gen::Compute(SMESH_Mesh &                aMesh,
       const TopoDS_Shape& aSubShape = smToCompute->GetSubShape();
       aShapeDim = GetShapeDim( aSubShape );
       if ( aShapeDim < 1 ) break;
-      
+
       // check for preview dimension limitations
       if ( aShapesId && aShapeDim > (int)aDim )
         continue;
@@ -341,6 +604,36 @@ bool SMESH_Gen::Compute(SMESH_Mesh &                aMesh,
       smVec.insert( smVec.end(),
                     smWithAlgoSupportingSubmeshes[aShapeDim].begin(),
                     smWithAlgoSupportingSubmeshes[aShapeDim].end() );
+
+    // gather sub-shapes with local uni-dimensional algos (bos #29143)
+    // ----------------------------------------------------------------
+    TopTools_MapOfShape uniDimAlgoShapes;
+    if ( !smVec.empty() )
+    {
+      ShapeToHypothesis::Iterator s2hyps( aMesh.GetMeshDS()->GetHypotheses() );
+      for ( ; s2hyps.More(); s2hyps.Next() )
+      {
+        const TopoDS_Shape& s = s2hyps.Key();
+        if ( s.IsSame( aMesh.GetShapeToMesh() ))
+          continue;
+        for ( auto & hyp : s2hyps.Value() )
+        {
+          if ( const SMESH_Algo* algo = dynamic_cast< const SMESH_Algo*>( hyp ))
+            if ( algo->NeedDiscreteBoundary() )
+            {
+              TopAbs_ShapeEnum sType;
+              switch ( algo->GetDim() ) {
+              case 3:  sType = TopAbs_SOLID; break;
+              case 2:  sType = TopAbs_FACE; break;
+              default: sType = TopAbs_EDGE; break;
+              }
+              for ( TopExp_Explorer ex( s2hyps.Key(), sType ); ex.More(); ex.Next() )
+                uniDimAlgoShapes.Add( ex.Current() );
+            }
+        }
+      }
+    }
+
     {
       // ------------------------------------------------
       // sort list of sub-meshes according to mesh order
@@ -360,45 +653,50 @@ bool SMESH_Gen::Compute(SMESH_Mesh &                aMesh,
 
         const TopAbs_ShapeEnum shapeType = sm->GetSubShape().ShapeType();
 
-        // get a shape the algo is assigned to
-        if ( !GetAlgo( sm, & algoShape ))
-          continue; // strange...
+        if ( !uniDimAlgoShapes.IsEmpty() )
+        {
+          // get a shape the algo is assigned to
+          if ( !GetAlgo( sm, & algoShape ))
+            continue; // strange...
 
-        // look for more local algos
-        if ( SMESH_subMesh* algoSM = aMesh.GetSubMesh( algoShape ))
-          smIt = algoSM->getDependsOnIterator(!includeSelf, !complexShapeFirst);
-        else
-          smIt = sm->getDependsOnIterator(!includeSelf, !complexShapeFirst);
+          // look for more local algos
+          if ( SMESH_subMesh* algoSM = aMesh.GetSubMesh( algoShape ))
+            smIt = algoSM->getDependsOnIterator(!includeSelf, !complexShapeFirst);
+          else
+            smIt = sm->getDependsOnIterator(!includeSelf, !complexShapeFirst);
 
-        while ( smIt->more() )
-        {
-          SMESH_subMesh* smToCompute = smIt->next();
+          while ( smIt->more() )
+          {
+            SMESH_subMesh* smToCompute = smIt->next();
 
-          const TopoDS_Shape& aSubShape = smToCompute->GetSubShape();
-          const int aShapeDim = GetShapeDim( aSubShape );
-          if ( aShapeDim < 1 || aSubShape.ShapeType() <= shapeType )
-            continue;
+            const TopoDS_Shape& aSubShape = smToCompute->GetSubShape();
+            const           int aShapeDim = GetShapeDim( aSubShape );
+            if ( aShapeDim < 1 || aSubShape.ShapeType() <= shapeType )
+              continue;
+            if ( !uniDimAlgoShapes.Contains( aSubShape ))
+              continue; // [bos #29143] aMesh.GetHypothesis() is too long
 
-          // check for preview dimension limitations
-          if ( aShapesId && GetShapeDim( aSubShape.ShapeType() ) > (int)aDim )
-            continue;
+            // check for preview dimension limitations
+            if ( aShapesId && GetShapeDim( aSubShape.ShapeType() ) > (int)aDim )
+              continue;
 
-          SMESH_HypoFilter filter( SMESH_HypoFilter::IsAlgo() );
-          filter
-            .And( SMESH_HypoFilter::IsApplicableTo( aSubShape ))
-            .And( SMESH_HypoFilter::IsMoreLocalThan( algoShape, aMesh ));
+            SMESH_HypoFilter filter( SMESH_HypoFilter::IsAlgo() );
+            filter
+              .And( SMESH_HypoFilter::IsApplicableTo( aSubShape ))
+              .And( SMESH_HypoFilter::IsMoreLocalThan( algoShape, aMesh ));
 
-          if ( SMESH_Algo* subAlgo = (SMESH_Algo*) aMesh.GetHypothesis( smToCompute, filter, true))
-          {
-            if ( ! subAlgo->NeedDiscreteBoundary() ) continue;
-            TopTools_IndexedMapOfShape* localAllowed = allowedSubShapes;
-            if ( localAllowed && localAllowed->IsEmpty() )
-              localAllowed = 0; // prevent fillAllowed() with  aSubShape
-
-            SMESH_Hypothesis::Hypothesis_Status status;
-            if ( subAlgo->CheckHypothesis( aMesh, aSubShape, status ))
-              // mesh a lower smToCompute starting from vertices
-              Compute( aMesh, aSubShape, aFlags | SHAPE_ONLY_UPWARD, aDim, aShapesId, localAllowed );
+            if ( SMESH_Algo* subAlgo = (SMESH_Algo*) aMesh.GetHypothesis( smToCompute, filter, true))
+            {
+              if ( ! subAlgo->NeedDiscreteBoundary() ) continue;
+              TopTools_IndexedMapOfShape* localAllowed = allowedSubShapes;
+              if ( localAllowed && localAllowed->IsEmpty() )
+                localAllowed = 0; // prevent fillAllowed() with  aSubShape
+
+              SMESH_Hypothesis::Hypothesis_Status status;
+              if ( subAlgo->CheckHypothesis( aMesh, aSubShape, status ))
+                // mesh a lower smToCompute starting from vertices
+                Compute( aMesh, aSubShape, aFlags | SHAPE_ONLY_UPWARD, aDim, aShapesId, localAllowed );
+            }
           }
         }
         // --------------------------------
@@ -411,8 +709,10 @@ bool SMESH_Gen::Compute(SMESH_Mesh &                aMesh,
           if ( aShapesId && GetShapeDim( shapeType ) > (int)aDim )
             continue;
           sm->SetAllowedSubShapes( fillAllowed( shapeSM, aShapeOnly, allowedSubShapes ));
+
           setCurrentSubMesh( sm );
           sm->ComputeStateEngine( computeEvent );
+
           setCurrentSubMesh( NULL );
           sm->SetAllowedSubShapes( nullptr );
           if ( aShapesId )
@@ -425,6 +725,7 @@ bool SMESH_Gen::Compute(SMESH_Mesh &                aMesh,
     // mesh the rest sub-shapes starting from vertices
     // -----------------------------------------------
     ret = Compute( aMesh, aShape, aFlags | UPWARD, aDim, aShapesId, allowedSubShapes );
+
   }
 
   MEMOSTAT;
@@ -568,7 +869,7 @@ bool SMESH_Gen::Evaluate(SMESH_Mesh &          aMesh,
       const TopoDS_Shape& aSubShape = smToCompute->GetSubShape();
       const int aShapeDim = GetShapeDim( aSubShape );
       if ( aShapeDim < 1 ) break;
-      
+
       SMESH_Algo* algo = GetAlgo( smToCompute );
       if ( algo && !algo->NeedDiscreteBoundary() ) {
         if ( algo->SupportSubmeshes() ) {
@@ -1223,6 +1524,26 @@ int SMESH_Gen::GetShapeDim(const TopAbs_ShapeEnum & aShapeType)
   return dim[ aShapeType ];
 }
 
+//================================================================================
+/*!
+ * \brief Return shape dimension by exploding compounds
+ */
+//================================================================================
+
+int SMESH_Gen::GetFlatShapeDim(const TopoDS_Shape &aShape)
+{
+  int aShapeDim;
+  if ( aShape.ShapeType() == TopAbs_COMPOUND ||
+       aShape.ShapeType() == TopAbs_COMPSOLID )
+  {
+    TopoDS_Iterator it( aShape );
+    aShapeDim = GetFlatShapeDim( it.Value() );
+  }
+  else
+    aShapeDim = GetShapeDim( aShape );
+  return aShapeDim;
+}
+
 //=============================================================================
 /*!
  * Generate a new id unique within this Gen
index d2dd8271c9d51ae09c102b6001a0643a8ab7e88b..275bc06dfbc97e4df817d035ae22443bd6764e98 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -34,6 +34,7 @@
 
 #include "SMESH_Algo.hxx"
 #include "SMESH_ComputeError.hxx"
+#include "SMESH_subMesh.hxx"
 
 #include <map>
 #include <list>
 #include <vector>
 #include <string>
 
+
 #include <TopoDS_Shape.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 
 class SMESHDS_Document;
 class SMESH_Algo;
 class SMESH_Mesh;
+class SMESH_ParallelMesh;
 class TopoDS_Shape;
-class SMESH_subMesh;
+
 
 typedef SMESH_Hypothesis::Hypothesis_Status TAlgoStateErrorName;
 
@@ -68,6 +71,7 @@ public:
   ~SMESH_Gen();
 
   SMESH_Mesh* CreateMesh(bool theIsEmbeddedMode);
+  SMESH_ParallelMesh* CreateParallelMesh(bool theIsEmbeddedMode);
 
   enum ComputeFlags
   {
@@ -77,7 +81,7 @@ public:
     SHAPE_ONLY_UPWARD = 3  // SHAPE_ONLY | UPWARD
   };
   /*!
-   * \brief Computes aMesh on aShape 
+   * \brief Computes aMesh on aShape
    *  \param aMesh - the mesh.
    *  \param aShape - the shape.
    *  \param aFlags - ComputeFlags. By default compute the whole mesh and compact at the end.
@@ -101,7 +105,7 @@ public:
   const SMESH_subMesh* GetCurrentSubMesh() const;
 
   /*!
-   * \brief evaluates size of prospective mesh on a shape 
+   * \brief evaluates size of prospective mesh on a shape
    * \param aMesh - the mesh
    * \param aShape - the shape
    * \param aResMap - map for prospective numbers of elements
@@ -154,6 +158,7 @@ public:
   static int GetShapeDim(const TopAbs_ShapeEnum & aShapeType);
   static int GetShapeDim(const TopoDS_Shape &     aShape)
   { return GetShapeDim( aShape.ShapeType() ); }
+  static int GetFlatShapeDim(const TopoDS_Shape &aShape);
 
   SMESH_Algo* GetAlgo(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape, TopoDS_Shape* assignedTo=0);
   SMESH_Algo* GetAlgo(SMESH_subMesh * aSubMesh, TopoDS_Shape* assignedTo=0);
@@ -164,8 +169,35 @@ public:
 
   int GetANewId();
 
+public:
+  void send_mesh(SMESH_Mesh & aMesh, std::string filename);
+
+  bool parallelComputeSubMeshes(
+          SMESH_Mesh & aMesh,
+          const TopoDS_Shape & aShape,
+          const ::MeshDimension       aDim,
+          TSetOfInt*                  aShapesId,
+          TopTools_IndexedMapOfShape* allowedSubShapes,
+          SMESH_subMesh::compute_event &computeEvent,
+          const bool includeSelf,
+          const bool complexShapeFirst,
+          const bool   aShapeOnly);
+
+  bool sequentialComputeSubMeshes(
+          SMESH_Mesh & aMesh,
+          const TopoDS_Shape & aShape,
+          const ::MeshDimension       aDim,
+          TSetOfInt*                  aShapesId /*=0*/,
+          TopTools_IndexedMapOfShape* allowedSubShapes,
+          SMESH_subMesh::compute_event &computeEvent,
+          const bool includeSelf,
+          const bool complexShapeFirst,
+          const bool aShapeOnly);
+
 private:
 
+
+
   int _localId;                         // unique Id of created objects, within SMESH_Gen entity
   StudyContextStruct* _studyContext;
 
index 9a0198ba2ffc822d10c4d83a2bd6a4d4dc80ab1c..b6ab964e17bfa4a48c740d90e504718c5440f6d8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 222b98c41658441b4b62680832fe737ef1d87556..184197fa35c029a8517761369d1fbe956c3b44e1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/src/SMESH/SMESH_Homard.cxx b/src/SMESH/SMESH_Homard.cxx
new file mode 100644 (file)
index 0000000..8808419
--- /dev/null
@@ -0,0 +1,1184 @@
+// SMESH HOMARD : implementation of SMESHHOMARD idl descriptions
+//
+// Copyright (C) 2011-2024  CEA, EDF
+//
+// 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 "SMESH_Homard.hxx"
+
+#include <Utils_SALOME_Exception.hxx>
+#include <utilities.h>
+
+#include <iostream>
+#include <sstream>
+#include <cstdlib>
+#include <sys/stat.h>
+
+#ifndef WIN32
+#include <unistd.h>
+#else
+#include <direct.h>
+#endif
+
+// La gestion des repertoires
+#ifndef CHDIR
+  #ifdef WIN32
+    #define CHDIR _chdir
+  #else
+    #define CHDIR chdir
+  #endif
+#endif
+
+namespace SMESHHOMARDImpl
+{
+
+//=============================================================================
+/*!
+ *  default constructor:
+ */
+//=============================================================================
+HOMARD_Boundary::HOMARD_Boundary():
+  _Name( "" ),_Type( 1 ),
+  _Xmin( 0 ), _Xmax( 0 ), _Ymin( 0 ), _Ymax( 0 ), _Zmin( 0 ), _Zmax( 0 ),
+  _Xaxe( 0 ), _Yaxe( 0 ), _Zaxe( 0 ),
+  _Xcentre( 0 ), _Ycentre( 0 ), _Zcentre( 0 ), _rayon( 0 ),
+  _Xincr( 0 ), _Yincr( 0 ), _Zincr( 0 )
+{
+  MESSAGE("HOMARD_Boundary");
+}
+
+//=============================================================================
+HOMARD_Boundary::~HOMARD_Boundary()
+{
+  MESSAGE("~HOMARD_Boundary");
+}
+//=============================================================================
+//=============================================================================
+// Generalites
+//=============================================================================
+//=============================================================================
+void HOMARD_Boundary::SetName( const char* Name )
+{
+  _Name = std::string( Name );
+}
+//=============================================================================
+std::string HOMARD_Boundary::GetName() const
+{
+  return _Name;
+}
+//=============================================================================
+std::string HOMARD_Boundary::GetDumpPython() const
+{
+  std::ostringstream aScript;
+  switch (_Type) {
+    case -1:
+    {
+      aScript << _Name << " = smeshhomard.CreateBoundaryCAO(\"" << _Name << "\", ";
+      aScript << "\"" << _DataFile << "\")\n";
+      break ;
+    }
+    case 0:
+    {
+      aScript << _Name << " = smeshhomard.CreateBoundaryDi(\"" << _Name << "\", ";
+      aScript << "\"" << _MeshName << "\", ";
+      aScript << "\"" << _DataFile << "\")\n";
+      break ;
+    }
+    case 1:
+    {
+      aScript << _Name << " = smeshhomard.CreateBoundaryCylinder(\"" << _Name << "\", ";
+      aScript << _Xcentre << ", " << _Ycentre << ", " << _Zcentre << ", " << _Xaxe << ", " << _Yaxe << ", " << _Zaxe << ", " << _rayon << ")\n";
+      break ;
+    }
+    case 2:
+    {
+      aScript << _Name << " = smeshhomard.CreateBoundarySphere(\"" << _Name << "\", ";
+      aScript << _Xcentre << ", " << _Ycentre << ", " << _Zcentre << ", " << _rayon << ")\n";
+      break ;
+    }
+    case 3:
+    {
+      aScript << _Name << " = smeshhomard.CreateBoundaryConeA(\"" << _Name << "\", ";
+      aScript << _Xaxe << ", " << _Yaxe << ", " << _Zaxe << ", " << _Angle << ", " << _Xcentre << ", " << _Ycentre << ", " << _Zcentre << ")\n";
+      break ;
+    }
+    case 4:
+    {
+      aScript << _Name << " = smeshhomard.CreateBoundaryConeR(\"" << _Name << "\", ";
+      aScript << _Xcentre1 << ", " << _Ycentre1 << ", " << _Zcentre1 << ", " << _Rayon1 << ", " << _Xcentre2 << ", " << _Ycentre2 << ", " << _Zcentre2 << ", " << _Rayon2 << ")\n";
+      break ;
+    }
+    case 5:
+    {
+      aScript << _Name << " = smeshhomard.CreateBoundaryTorus(\"" << _Name << "\", ";
+      aScript << _Xcentre << ", " << _Ycentre << ", " << _Zcentre << ", " << _Xaxe << ", " << _Yaxe << ", " << _Zaxe << ", " << _Rayon1 << ", " << _Rayon2 << ")\n";
+      break ;
+    }
+  }
+
+  return aScript.str();
+}
+//=============================================================================
+//=============================================================================
+// Caracteristiques
+//=============================================================================
+//=============================================================================
+void HOMARD_Boundary::SetType( int Type )
+{
+  _Type = Type;
+}
+//=============================================================================
+int HOMARD_Boundary::GetType() const
+{
+  return _Type;
+}
+//=============================================================================
+void HOMARD_Boundary::SetMeshName( const char* MeshName )
+{
+  _MeshName = std::string( MeshName );
+}
+//=============================================================================
+std::string HOMARD_Boundary::GetMeshName() const
+{
+  return _MeshName;
+}
+//=============================================================================
+void HOMARD_Boundary::SetDataFile( const char* DataFile )
+{
+  _DataFile = std::string( DataFile );
+}
+//=============================================================================
+std::string HOMARD_Boundary::GetDataFile() const
+{
+  return _DataFile;
+}
+//=======================================================================================
+void HOMARD_Boundary::SetCylinder( double X0, double X1, double X2,
+                                   double X3, double X4, double X5, double X6 )
+{
+  _Xcentre = X0; _Ycentre = X1; _Zcentre = X2;
+  _Xaxe = X3; _Yaxe = X4; _Zaxe = X5;
+  _rayon = X6;
+}
+//======================================================================
+void HOMARD_Boundary::SetSphere( double X0, double X1, double X2, double X3 )
+{
+  _Xcentre = X0; _Ycentre = X1; _Zcentre = X2;
+  _rayon = X3;
+}
+//======================================================================
+void HOMARD_Boundary::SetConeR( double Xcentre1, double Ycentre1, double Zcentre1, double Rayon1,
+                                double Xcentre2, double Ycentre2, double Zcentre2, double Rayon2)
+{
+  _Xcentre1 = Xcentre1; _Ycentre1 = Ycentre1; _Zcentre1 = Zcentre1;
+  _Rayon1 = Rayon1;
+  _Xcentre2 = Xcentre2; _Ycentre2 = Ycentre2; _Zcentre2 = Zcentre2;
+  _Rayon2 = Rayon2;
+}
+//======================================================================
+void HOMARD_Boundary::SetConeA( double Xaxe, double Yaxe, double Zaxe, double Angle,
+                                double Xcentre, double Ycentre, double Zcentre)
+{
+  _Xaxe = Xaxe; _Yaxe = Yaxe; _Zaxe = Zaxe;
+  _Angle = Angle;
+  _Xcentre = Xcentre; _Ycentre = Ycentre; _Zcentre = Zcentre;
+}
+//=======================================================================================
+void HOMARD_Boundary::SetTorus( double X0, double X1, double X2,
+                                double X3, double X4, double X5, double X6, double X7 )
+{
+  _Xcentre = X0; _Ycentre = X1; _Zcentre = X2;
+  _Xaxe = X3; _Yaxe = X4; _Zaxe = X5;
+  _Rayon1 = X6;
+  _Rayon2 = X7;
+}
+//=======================================================================================
+std::vector<double> HOMARD_Boundary::GetCoords() const
+{
+  std::vector<double> mesCoor;
+  switch (_Type)
+  {
+    //  Cylindre
+    case 1:
+    {
+      mesCoor.push_back( _Xcentre );
+      mesCoor.push_back( _Ycentre );
+      mesCoor.push_back( _Zcentre );
+      mesCoor.push_back( _Xaxe );
+      mesCoor.push_back( _Yaxe );
+      mesCoor.push_back( _Zaxe );
+      mesCoor.push_back( _rayon );
+      break ;
+    }
+    //  Sphere
+    case 2:
+    {
+      mesCoor.push_back( _Xcentre );
+      mesCoor.push_back( _Ycentre );
+      mesCoor.push_back( _Zcentre );
+      mesCoor.push_back( _rayon );
+      break ;
+    }
+    //  Cone defini par un axe et un angle
+    case 3:
+    {
+      mesCoor.push_back( _Xaxe );
+      mesCoor.push_back( _Yaxe );
+      mesCoor.push_back( _Zaxe );
+      mesCoor.push_back( _Angle );
+      mesCoor.push_back( _Xcentre );
+      mesCoor.push_back( _Ycentre );
+      mesCoor.push_back( _Zcentre );
+      break ;
+    }
+    //  Cone defini par les 2 rayons
+    case 4:
+    {
+      mesCoor.push_back( _Xcentre1 );
+      mesCoor.push_back( _Ycentre1 );
+      mesCoor.push_back( _Zcentre1 );
+      mesCoor.push_back( _Rayon1 );
+      mesCoor.push_back( _Xcentre2 );
+      mesCoor.push_back( _Ycentre2 );
+      mesCoor.push_back( _Zcentre2 );
+      mesCoor.push_back( _Rayon2 );
+      break ;
+    }
+    //  Tore
+    case 5:
+    {
+      mesCoor.push_back( _Xcentre );
+      mesCoor.push_back( _Ycentre );
+      mesCoor.push_back( _Zcentre );
+      mesCoor.push_back( _Xaxe );
+      mesCoor.push_back( _Yaxe );
+      mesCoor.push_back( _Zaxe );
+      mesCoor.push_back( _Rayon1 );
+      mesCoor.push_back( _Rayon2 );
+      break ;
+    }
+    default:
+      break ;
+  }
+  return mesCoor;
+}
+//======================================================================
+void HOMARD_Boundary::SetLimit( double X0, double X1, double X2 )
+{
+  _Xincr = X0; _Yincr = X1; _Zincr = X2;
+}
+//=======================================================================================
+std::vector<double> HOMARD_Boundary::GetLimit() const
+{
+  std::vector<double> mesLimit;
+  mesLimit.push_back( _Xincr );
+  mesLimit.push_back( _Yincr );
+  mesLimit.push_back( _Zincr );
+  return mesLimit;
+}
+//=============================================================================
+void HOMARD_Boundary::AddGroup( const char* Group)
+{
+  _ListGroupSelected.push_back(Group);
+}
+//=============================================================================
+void HOMARD_Boundary::SetGroups( const std::list<std::string>& ListGroup )
+{
+  _ListGroupSelected.clear();
+  std::list<std::string>::const_iterator it = ListGroup.begin();
+  while(it != ListGroup.end())
+    _ListGroupSelected.push_back((*it++));
+}
+//=============================================================================
+const std::list<std::string>& HOMARD_Boundary::GetGroups() const
+{
+  return _ListGroupSelected;
+}
+//=============================================================================
+
+//=============================================================================
+/*!
+ *  default constructor:
+ *  Par defaut, l'adaptation est conforme, sans suivi de frontiere
+ */
+//=============================================================================
+HOMARD_Cas::HOMARD_Cas():
+  _NomDir("/tmp")
+{
+  MESSAGE("HOMARD_Cas");
+}
+//=============================================================================
+HOMARD_Cas::~HOMARD_Cas()
+//=============================================================================
+{
+  MESSAGE("~HOMARD_Cas");
+}
+//=============================================================================
+//=============================================================================
+// Generalites
+//=============================================================================
+//=============================================================================
+std::string HOMARD_Cas::GetDumpPython() const
+{
+  std::ostringstream aScript;
+  // Suivi de frontieres
+  std::list<std::string>::const_iterator it = _ListBoundaryGroup.begin();
+  while (it != _ListBoundaryGroup.end()) {
+    aScript << "smeshhomard.AddBoundaryGroup(\"" << *it << "\", \"";
+    it++;
+    aScript << *it << "\")\n";
+    it++;
+  }
+
+  return aScript.str();
+}
+//=============================================================================
+//=============================================================================
+// Caracteristiques
+//=============================================================================
+//=============================================================================
+int HOMARD_Cas::SetDirName( const char* NomDir )
+{
+  int erreur = 0 ;
+  // On vérifie qu'aucun calcul n'a eu lieu pour ce cas
+  if ( _ListIter.size() > 1 ) { erreur = 1 ; }
+  // Creation
+  if ( CHDIR(NomDir) == 0 ) {
+    _NomDir = std::string( NomDir );
+  }
+  else {
+#ifndef WIN32
+    if ( mkdir(NomDir, S_IRWXU|S_IRGRP|S_IXGRP) == 0 )
+#else
+    if ( _mkdir(NomDir) == 0 )
+#endif
+    {
+      if ( CHDIR(NomDir) == 0 ) { _NomDir = std::string( NomDir ); }
+      else                      { erreur = 2 ; }
+    }
+    else { erreur = 2 ; }
+  }
+  return erreur;
+}
+//=============================================================================
+std::string HOMARD_Cas::GetDirName() const
+{
+  return _NomDir;
+}
+//
+// La boite englobante
+//
+//=============================================================================
+void HOMARD_Cas::SetBoundingBox( const std::vector<double>& extremas )
+{
+  _Boite.clear();
+  _Boite.resize( extremas.size() );
+  for ( unsigned int i = 0; i < extremas.size(); i++ )
+    _Boite[i] = extremas[i];
+}
+//=============================================================================
+const std::vector<double>& HOMARD_Cas::GetBoundingBox() const
+{
+  return _Boite;
+}
+//
+// Les groupes
+//
+//=============================================================================
+void HOMARD_Cas::AddGroup( const char* Group )
+{
+  _ListGroup.push_back(Group);
+}
+//=============================================================================
+void HOMARD_Cas::SetGroups( const std::list<std::string>& ListGroup )
+{
+  _ListGroup.clear();
+  std::list<std::string>::const_iterator it = ListGroup.begin();
+  while(it != ListGroup.end())
+  {
+    _ListGroup.push_back((*it++));
+  }
+}
+//=============================================================================
+const std::list<std::string>& HOMARD_Cas::GetGroups() const
+{
+  return _ListGroup;
+}
+//=============================================================================
+void HOMARD_Cas::SupprGroups()
+{
+  _ListGroup.clear();
+}
+//
+// Les frontieres
+//
+//=============================================================================
+void HOMARD_Cas::AddBoundary( const char* Boundary )
+{
+//   MESSAGE ( ". HOMARD_Cas::AddBoundary : Boundary = " << Boundary );
+  const char* Group = "";
+  AddBoundaryGroup( Boundary, Group );
+}
+//=============================================================================
+void HOMARD_Cas::AddBoundaryGroup( const char* Boundary, const char* Group )
+{
+//   MESSAGE ( ". HOMARD_Cas::AddBoundaryGroup : Boundary = " << Boundary );
+//   MESSAGE ( ". HOMARD_Cas::AddBoundaryGroup : Group = " << Group );
+  _ListBoundaryGroup.push_back( Boundary );
+  _ListBoundaryGroup.push_back( Group    );
+}
+//=============================================================================
+const std::list<std::string>& HOMARD_Cas::GetBoundaryGroup() const
+{
+  return _ListBoundaryGroup;
+}
+//=============================================================================
+void HOMARD_Cas::SupprBoundaryGroup()
+{
+  _ListBoundaryGroup.clear();
+}
+//=============================================================================
+//=============================================================================
+// Liens avec les autres structures
+//=============================================================================
+//=============================================================================
+void HOMARD_Cas::AddIteration( const char* NomIteration )
+{
+  _ListIter.push_back( std::string( NomIteration ) );
+}
+
+//=============================================================================
+//=============================================================================
+HomardDriver::HomardDriver(const std::string siter, const std::string siterp1):
+  _HOMARD_Exec( "" ), _NomDir( "" ), _NomFichierConfBase( "HOMARD.Configuration" ),
+  _NomFichierConf( "" ), _NomFichierDonn( "" ), _siter( "" ), _siterp1( "" ),
+  _Texte( "" ), _bLu( false )
+{
+  MESSAGE("siter = "<<siter<<", siterp1 = "<<siterp1);
+  // Le repertoire ou se trouve l'executable HOMARD
+  std::string dir ;
+  // TODO?
+  if ( getenv("HOMARD_ROOT_DIR") != NULL ) { dir = getenv("HOMARD_ROOT_DIR") ; }
+  dir += "/bin/salome";
+  MESSAGE("dir ="<<dir);
+  // L'executable HOMARD
+  std::string executable = "homard";
+  MESSAGE("executable ="<<executable);
+  // Memorisation du nom complet de l'executable HOMARD
+  _HOMARD_Exec = dir + "/" + executable ;
+  MESSAGE("==> _HOMARD_Exec ="<<_HOMARD_Exec) ;
+  //
+  _siter = siter ;
+  _siterp1 = siterp1 ;
+}
+//=============================================================================
+//=============================================================================
+HomardDriver::~HomardDriver()
+{
+}
+//===============================================================================
+// A. Generalites
+//===============================================================================
+void HomardDriver::TexteInit( const std::string DirCompute, const std::string LogFile, const std::string Langue )
+{
+  MESSAGE("TexteInit, DirCompute ="<<DirCompute<<", LogFile ="<<LogFile);
+//
+  _Texte  = "ListeStd \"" + LogFile + "\"\n" ;
+  _Texte += "RepeTrav \"" + DirCompute + "\"\n" ;
+  _Texte += "RepeInfo \"" + DirCompute + "\"\n" ;
+  _Texte += "Langue \"" + Langue + "\"\n" ;
+//
+}
+//===============================================================================
+void HomardDriver::TexteAdap()
+{
+  MESSAGE("TexteAdap");
+
+  _Texte += "Action   homa\n";
+  _Texte += "CCAssoci med\n";
+  _Texte += "ModeHOMA 1\n";
+  _Texte += "NumeIter " + _siter + "\n";
+  _modeHOMARD = 1;
+}
+//===============================================================================
+void HomardDriver::TexteInfo( int TypeBila, int NumeIter )
+{
+  MESSAGE("TexteInfo: TypeBila ="<<TypeBila<<", NumeIter ="<<NumeIter);
+//
+  _Texte += "ModeHOMA 2\n" ;
+  std::stringstream saux1 ;
+  saux1 << TypeBila ;
+  std::string saux2 = saux1.str() ;
+  _Texte += "TypeBila " + saux2 + "\n" ;
+  if ( NumeIter ==  0 )
+  {
+    _Texte += "NumeIter 0\n" ;
+    _Texte += "Action   info_av\n" ;
+    _Texte += "CCAssoci med\n" ;
+  }
+  else
+  {
+    _Texte += "NumeIter " + _siter + "\n" ;
+    _Texte += "Action   info_ap\n" ;
+    _Texte += "CCAssoci homard\n" ;
+  }
+  _modeHOMARD = 2 ;
+//
+}
+//===============================================================================
+void HomardDriver::TexteMajCoords( int NumeIter )
+{
+  MESSAGE("TexteMajCoords: NumeIter ="<<NumeIter);
+//
+  _Texte += "ModeHOMA 5\n" ;
+  _Texte += "NumeIter " + _siterp1 + "\n" ;
+  _Texte += "Action   homa\n" ;
+  _Texte += "CCAssoci med\n" ;
+  _Texte += "EcriFiHO N_SANS_FRONTIERE\n" ;
+  _modeHOMARD = 5 ;
+//
+}
+//===============================================================================
+// B. Les maillages en entree et en sortie
+//===============================================================================
+void HomardDriver::TexteMaillage( const std::string NomMesh, const std::string MeshFile, int apres )
+{
+  MESSAGE("TexteMaillage, NomMesh  = "<<NomMesh);
+  MESSAGE("TexteMaillage, MeshFile = "<<MeshFile);
+  MESSAGE("TexteMaillage, apres = "<<apres);
+  std::string saux ;
+  saux = "P1" ;
+  if ( apres < 1 ) { saux = "__" ; }
+
+  _Texte += "# Maillages Med " + saux + "\n" ;
+  _Texte += "CCNoMN" + saux + " \"" + NomMesh  + "\"\n" ;
+  _Texte += "CCMaiN" + saux + " \"" + MeshFile + "\"\n" ;
+}
+
+//===============================================================================
+void HomardDriver::TexteMaillageHOMARD( const std::string Dir, const std::string liter, int apres )
+{
+  MESSAGE("TexteMaillageHOMARD, Dir ="<<Dir<<", liter ="<<liter<<", apres ="<<apres);
+  std::string saux ;
+  if ( apres < 1 ) { saux = "__" ; }
+  else             { saux = "P1" ; }
+
+  _Texte += "# Maillage HOMARD " + liter + "\n" ;
+  _Texte += "HOMaiN" + saux + " Mai" + liter   + " \"" + Dir + "/maill." + liter   + ".hom.med\"\n" ;
+}
+
+//===============================================================================
+// C. Le pilotage de l'adaptation
+//===============================================================================
+void HomardDriver::TexteConfRaffDera( int ConfType )
+{
+  MESSAGE("TexteConfRaffDera, ConfType = " << ConfType);
+  //
+  // Type de conformite
+  //
+  std::string saux;
+  switch (ConfType)
+  {
+    case -2: //
+    {
+      saux = "NON_CONFORME_1_ARETE" ;
+      break;
+    }
+    case -1: //
+    {
+      saux = "CONFORME_BOITES" ;
+      break;
+    }
+    case 0: //
+    {
+      saux = "CONFORME" ;
+      break;
+    }
+    case 1: //
+    {
+      saux = "NON_CONFORME" ;
+      break;
+    }
+    case 2: //
+    {
+      saux = "NON_CONFORME_1_NOEUD" ;
+      break;
+    }
+    case 3: //
+    {
+      saux = "NON_CONFORME_INDICATEUR" ;
+      break;
+    }
+  }
+  _Texte += "# Type de conformite\nTypeConf " + saux + "\n" ;
+  //
+  // Type de raffinement/deraffinement
+  //
+  saux = "TypeRaff uniforme\n" ;
+  saux += "TypeDera non" ;
+  _Texte += "# Type de raffinement/deraffinement\n" + saux + "\n" ;
+}
+//===============================================================================
+// D. Les frontieres
+//===============================================================================
+void HomardDriver::TexteBoundaryOption( int BoundaryOption )
+{
+  MESSAGE("TexteBoundaryOption, BoundaryOption = "<<BoundaryOption);
+//
+// Type de suivi de frontiere
+//
+  std::stringstream saux1 ;
+  saux1 << BoundaryOption ;
+  std::string saux = saux1.str() ;
+  _Texte += "SuivFron " + saux + "\n" ;
+//
+}//===============================================================================
+void HomardDriver::TexteBoundaryCAOGr(  const std::string GroupName )
+{
+  MESSAGE("TexteBoundaryCAOGr, GroupName  = "<<GroupName);
+//
+  _Texte += "GrFroCAO \"" + GroupName + "\"\n" ;
+//
+}
+
+//===============================================================================
+void HomardDriver::TexteBoundaryDi(  const std::string MeshName, const std::string MeshFile )
+{
+  MESSAGE("TexteBoundaryDi, MeshName  = "<<MeshName);
+  MESSAGE("TexteBoundaryDi, MeshFile  = "<<MeshFile);
+//
+  _Texte += "#\n# Frontiere discrete\n" ;
+  _Texte += "CCNoMFro \"" + MeshName + "\"\n" ;
+  _Texte += "CCFronti \"" + MeshFile + "\"\n" ;
+//
+}
+//===============================================================================
+void HomardDriver::TexteBoundaryDiGr(  const std::string GroupName )
+{
+  MESSAGE("TexteBoundaryDiGr, GroupName  = "<<GroupName);
+//
+  _Texte += "CCGroFro \"" + GroupName + "\"\n" ;
+//
+}
+//===============================================================================
+void HomardDriver::TexteBoundaryAn( const std::string NameBoundary, int NumeBoundary, int BoundaryType, double x0, double x1, double x2, double x3, double x4, double x5, double x6, double x7 )
+{
+  MESSAGE("TexteBoundaryAn, NameBoundary = "<<NameBoundary);
+//   MESSAGE("TexteBoundaryAn, NumeBoundary = "<<NumeBoundary);
+  MESSAGE("TexteBoundaryAn, BoundaryType = "<<BoundaryType);
+//   MESSAGE("TexteBoundaryAn, coor         = "<< x0<<","<<x1<< ","<< x2<< ","<< x3<<","<<x4<<","<<x5<<","<<x6","<<x7);
+//
+  std::string saux, saux2 ;
+//
+// Commentaires
+//
+  std::stringstream saux1 ;
+  saux1 << NumeBoundary ;
+  saux2 = saux1.str() ;
+  saux = "#\n# Frontiere numero " + saux2 + "\n" ;
+  if ( BoundaryType == 1 )
+  { saux += "# Cylindre\n" ; }
+  if ( BoundaryType == 2 )
+  { saux += "# Sphere\n" ; }
+  if ( BoundaryType == 3 || BoundaryType == 4 )
+  { saux += "# Cone\n" ; }
+  if ( BoundaryType == 5 )
+  { saux += "# Tore\n" ; }
+//
+// Le nom de la frontiere
+//
+  { std::stringstream saux1 ;
+    saux1 << NumeBoundary ;
+    saux += "FANom " + saux1.str() + " \"" + NameBoundary + "\"\n" ;
+  }
+//
+// Type de frontiere
+//
+  { std::stringstream saux1 ;
+    saux1 << NumeBoundary << " " << BoundaryType ;
+    saux += "FAType " + saux1.str() + "\n" ;
+  }
+//
+// Cas du cylindre
+//
+  if ( BoundaryType == 1 )
+  {
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x0 ;
+      saux2 = saux1.str() ;
+      saux += "FAXCen " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x1 ;
+      saux += "FAYCen " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x2 ;
+      saux += "FAZCen " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x3 ;
+      saux += "FAXAxe " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x4 ;
+      saux += "FAYAxe " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x5 ;
+      saux += "FAZAxe " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x6 ;
+      saux += "FARayon " + saux1.str() + "\n" ;
+    }
+ }
+//
+// Cas de la sphere
+//
+  else if ( BoundaryType == 2 )
+  {
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x0 ;
+      saux += "FAXCen " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x1 ;
+      saux += "FAYCen " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x2 ;
+      saux += "FAZCen " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x3 ;
+      saux += "FARayon " + saux1.str() + "\n" ;
+    }
+  }
+//
+// Cas du cone defini par un axe et un angle
+//
+  if ( BoundaryType == 3 )
+  {
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x0 ;
+      saux += "FAXAxe " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x1 ;
+      saux += "FAYAxe " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x2 ;
+      saux += "FAZAxe " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x3 ;
+      saux += "FAAngle " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x4 ;
+      saux += "FAXCen " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x5 ;
+      saux += "FAYCen " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x6 ;
+      saux += "FAZCen " + saux1.str() + "\n" ;
+    }
+ }
+//
+// Cas du cone defini par les 2 rayons
+//
+  if ( BoundaryType == 4 )
+  {
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x0 ;
+      saux += "FAXCen " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x1 ;
+      saux += "FAYCen " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x2 ;
+      saux += "FAZCen " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x3 ;
+      saux += "FARayon " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x4 ;
+      saux += "FAXCen2 " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x5 ;
+      saux += "FAYCen2 " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x6 ;
+      saux += "FAZCen2 " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x7 ;
+      saux += "FARayon2 " + saux1.str() + "\n" ;
+    }
+ }
+//
+// Cas du tore
+//
+  if ( BoundaryType == 5 )
+  {
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x0 ;
+      saux2 = saux1.str() ;
+      saux += "FAXCen " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x1 ;
+      saux += "FAYCen " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x2 ;
+      saux += "FAZCen " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x3 ;
+      saux += "FAXAxe " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x4 ;
+      saux += "FAYAxe " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x5 ;
+      saux += "FAZAxe " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x6 ;
+      saux += "FARayon  " + saux1.str() + "\n" ;
+    }
+    { std::stringstream saux1 ;
+      saux1 << NumeBoundary << " " << x7 ;
+      saux += "FARayon2 " + saux1.str() + "\n" ;
+    }
+ }
+//
+  _Texte += saux + "#\n" ;
+//
+}
+//===============================================================================
+void HomardDriver::TexteBoundaryAnGr( const std::string NameBoundary, int NumeBoundary, const std::string GroupName )
+{
+  MESSAGE("TexteBoundaryAnGr, NameBoundary  = "<<NameBoundary);
+//   MESSAGE("TexteBoundaryAnGr, NumeBoundary  = "<<NumeBoundary);
+//   MESSAGE("TexteBoundaryAnGr, GroupName  = "<<GroupName);
+//
+// Commentaires
+//
+  std::string saux, saux2 ;
+  std::stringstream saux1 ;
+  saux1 << NumeBoundary ;
+  saux2 = saux1.str() ;
+  saux = "#\n# Lien Frontiere/Groupe numero " + saux2 + "\n" ;
+//
+  saux += "FGNomFro " + saux2 + " \"" + NameBoundary + "\"\n" ;
+  saux += "FGNomGro " + saux2 + " \"" + GroupName + "\"\n" ;
+//
+  _Texte += saux + "#\n" ;
+//
+}
+//===============================================================================
+// F. Les options avancees
+//===============================================================================
+void HomardDriver::TexteAdvanced( int NivMax, double DiamMin, int AdapInit, int ExtraOutput )
+{
+  MESSAGE("TexteAdvanced, NivMax ="<<NivMax<<", DiamMin ="<<DiamMin<<
+          ", AdapInit ="<<AdapInit<<", ExtraOutput ="<<ExtraOutput);
+
+  if ( NivMax > 0 )
+  {
+    _Texte += "# Niveaux extremes\n" ;
+    { std::stringstream saux1 ;
+      saux1 << NivMax ;
+      _Texte += "NiveauMa " + saux1.str() + "\n" ;
+    }
+  }
+  if ( DiamMin > 0 )
+  {
+    _Texte += "# Diametre minimal\n" ;
+    { std::stringstream saux1 ;
+      saux1 << DiamMin ;
+      _Texte += "DiametMi " + saux1.str()  + "\n" ;
+    }
+  }
+  if ( AdapInit != 0 )
+  {
+    if ( AdapInit > 0 )
+    { _Texte += "# Raffinement" ; }
+    else
+    { _Texte += "# Deraffinement" ; }
+    _Texte += " des regions sans indicateur\n" ;
+    { std::stringstream saux1 ;
+      saux1 << AdapInit ;
+      _Texte += "AdapInit " + saux1.str() + "\n" ;
+    }
+  }
+  if ( ExtraOutput % 2 == 0 )
+  {
+    _Texte += "# Sortie des niveaux de raffinement\n" ;
+    _Texte += "NCNiveau NIVEAU\n" ;
+  }
+  if ( ExtraOutput % 3 == 0 )
+  {
+    _Texte += "# Sortie des qualités des mailles\n" ;
+    _Texte += "NCQualit QUAL\n" ;
+  }
+  if ( ExtraOutput % 5 == 0 )
+  {
+    _Texte += "# Sortie des diamètres des mailles\n" ;
+    _Texte += "NCDiamet DIAM\n" ;
+  }
+  if ( ExtraOutput % 7 == 0 )
+  {
+    _Texte += "# Sortie des parents des mailles\n" ;
+    _Texte += "NCParent PARENT\n" ;
+  }
+  if ( ExtraOutput % 11 == 0 )
+  {
+    _Texte += "# Volumes voisins par recollement\n" ;
+    _Texte += "NCVoisRc Voisin-Recollement\n" ;
+  }
+}
+//===============================================================================
+// G. Les messages
+//===============================================================================
+void HomardDriver::TexteInfoCompute( int MessInfo )
+{
+  MESSAGE("TexteAdvanced, MessInfo ="<<MessInfo);
+
+  if ( MessInfo != 0 )
+  {
+     _Texte += "# Messages d'informations\n" ;
+    { std::stringstream saux1 ;
+      saux1 << MessInfo ;
+      _Texte += "MessInfo " + saux1.str()  + "\n" ;
+    }
+   }
+}
+//===============================================================================
+void HomardDriver::CreeFichier( )
+{
+//
+  if ( _modeHOMARD == 1 )
+  { _NomFichierConf = _NomFichierConfBase + "." + _siter + ".vers." + _siterp1 ; }
+  else if ( _modeHOMARD == 2 )
+  { _NomFichierConf = _NomFichierConfBase + "." + _siter + ".info" ; }
+  else if ( _modeHOMARD == 5 )
+  { _NomFichierConf = _NomFichierConfBase + ".majc" ; }
+//
+  std::ofstream Fic(_NomFichierConf.c_str(), std::ios::out ) ;
+  if (Fic.is_open() == true) { Fic << _Texte << std::endl ; }
+  Fic.close() ;
+//
+}
+//===============================================================================
+// Creation du fichier de donnees pour l'information
+//===============================================================================
+void HomardDriver::CreeFichierDonn( )
+{
+//
+  MESSAGE("CreeFichierDonn");
+  _NomFichierDonn = "info.donn" ;
+//
+  std::string data ;
+  data  = "0\n" ;
+  data += "0\n" ;
+  data += "q\n" ;
+  std::ofstream Fic(_NomFichierDonn.c_str(), std::ios::out ) ;
+  if (Fic.is_open() == true) { Fic << data << std::endl ; }
+  Fic.close() ;
+//
+}
+//===============================================================================
+int HomardDriver::ExecuteHomard()
+{
+  MESSAGE("ExecuteHomard");
+  std::string commande ;
+  int codret ;
+  // Copie des Fichiers HOMARD
+  commande = "cp " + _NomFichierConf + " " + _NomFichierConfBase ;
+  codret = system(commande.c_str()) ;
+
+// Execution de HOMARD
+  if ( codret == 0)
+  {
+    commande = _HOMARD_Exec.c_str() ;
+    if ( _NomFichierDonn != "" ) { commande += " < " + _NomFichierDonn ; }
+    codret = system(commande.c_str());
+    if ( codret != 0) { MESSAGE ( "Erreur en executant HOMARD : " << codret ); };
+    _NomFichierDonn = "" ;
+  };
+  return codret ;
+}
+
+//=============================================================================
+//=============================================================================
+HOMARD_Gen::HOMARD_Gen()
+{
+  MESSAGE("HOMARD_Gen");
+}
+
+//=============================================================================
+//=============================================================================
+HOMARD_Gen::~HOMARD_Gen()
+{
+  MESSAGE("~HOMARD_Gen");
+}
+//=============================================================================
+
+//=============================================================================
+/*!
+ *  default constructor:
+ */
+//=============================================================================
+HOMARD_Iteration::HOMARD_Iteration():
+  _Name( "" ),
+  _Etat( 0 ),
+  _NumIter( -1 ),
+  _NomMesh( "" ),
+  _MeshFile( "" ),
+  _LogFile( "" ),
+  _NomDir( "" ),
+  _FileInfo( "" ),
+  _MessInfo( 1 )
+{
+  MESSAGE("HOMARD_Iteration");
+}
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+HOMARD_Iteration::~HOMARD_Iteration()
+{
+  MESSAGE("~HOMARD_Iteration");
+}
+//=============================================================================
+//=============================================================================
+// Generalites
+//=============================================================================
+//=============================================================================
+void HOMARD_Iteration::SetName( const char* Name )
+{
+  _Name = std::string( Name );
+}
+//=============================================================================
+std::string HOMARD_Iteration::GetName() const
+{
+  return _Name;
+}
+//=============================================================================
+//=============================================================================
+// Caracteristiques
+//=============================================================================
+//=============================================================================
+void HOMARD_Iteration::SetDirNameLoc( const char* NomDir )
+{
+  _NomDir = std::string( NomDir );
+}
+//=============================================================================
+std::string HOMARD_Iteration::GetDirNameLoc() const
+{
+   return _NomDir;
+}
+//=============================================================================
+void HOMARD_Iteration::SetNumber( int NumIter )
+{
+  _NumIter = NumIter;
+}
+//=============================================================================
+int HOMARD_Iteration::GetNumber() const
+{
+  return _NumIter;
+}
+//=============================================================================
+void HOMARD_Iteration::SetState( int etat )
+{
+  _Etat = etat;
+}
+//=============================================================================
+int HOMARD_Iteration::GetState() const
+{
+  return _Etat;
+}
+//=============================================================================
+void HOMARD_Iteration::SetMeshName( const char* NomMesh )
+{
+  _NomMesh = std::string( NomMesh );
+}
+//=============================================================================
+std::string HOMARD_Iteration::GetMeshName() const
+{
+  return _NomMesh;
+}
+//=============================================================================
+void HOMARD_Iteration::SetMeshFile( const char* MeshFile )
+{
+  _MeshFile = std::string( MeshFile );
+}
+//=============================================================================
+std::string HOMARD_Iteration::GetMeshFile() const
+{
+  return _MeshFile;
+}
+//=============================================================================
+void HOMARD_Iteration::SetLogFile( const char* LogFile )
+{
+  _LogFile = std::string( LogFile );
+}
+//=============================================================================
+std::string HOMARD_Iteration::GetLogFile() const
+{
+  return _LogFile;
+}
+//=============================================================================
+void HOMARD_Iteration::SetFileInfo( const char* FileInfo )
+{
+  _FileInfo = std::string( FileInfo );
+}
+//=============================================================================
+std::string HOMARD_Iteration::GetFileInfo() const
+{
+  return _FileInfo;
+}
+//=============================================================================
+void HOMARD_Iteration::SetInfoCompute( int MessInfo )
+{
+  _MessInfo = MessInfo;
+}
+//=============================================================================
+int HOMARD_Iteration::GetInfoCompute() const
+{
+  return _MessInfo;
+}
+
+} // namespace SMESHHOMARDImpl /end/
diff --git a/src/SMESH/SMESH_Homard.hxx b/src/SMESH/SMESH_Homard.hxx
new file mode 100644 (file)
index 0000000..5f576ce
--- /dev/null
@@ -0,0 +1,242 @@
+//  HOMARD HOMARD : implementation of HOMARD idl descriptions
+//
+// Copyright (C) 2011-2024  CEA, EDF
+//
+// 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   : HOMARD.hxx
+//  Author : Gerald NICOLAS, EDF
+//  Module : HOMARD
+
+#ifndef _SMESH_HOMARD_ADAPT_HXX_
+#define _SMESH_HOMARD_ADAPT_HXX_
+
+#include "SMESH_SMESH.hxx"
+
+#include <vector>
+#include <string>
+#include <list>
+
+#include <iostream>
+#include <fstream>
+
+#if defined WIN32
+#pragma warning ( disable: 4251 )
+#endif
+
+namespace SMESHHOMARDImpl
+{
+
+class SMESH_EXPORT HOMARD_Boundary
+{
+public:
+  HOMARD_Boundary();
+  ~HOMARD_Boundary();
+
+  // Generalites
+  void                          SetName( const char* Name );
+  std::string                   GetName() const;
+
+  std::string                   GetDumpPython() const;
+
+  // Caracteristiques
+  void                          SetType( int Type );
+  int                           GetType() const;
+
+  void                          SetMeshName( const char* MeshName );
+  std::string                   GetMeshName() const;
+
+  void                          SetDataFile( const char* DataFile );
+  std::string                   GetDataFile() const;
+
+  void                          SetCylinder( double X0, double X1, double X2, double X3,
+                                             double X4, double X5, double X6 );
+  void                          SetSphere( double X0, double X1, double X2, double X3 );
+  void                          SetConeR( double Xcentre1, double Ycentre1, double Zcentre1, double Rayon1,
+                                          double Xcentre2, double Ycentre2, double Zcentre2, double Rayon2);
+  void                          SetConeA( double Xaxe, double Yaxe, double Zaxe, double Angle,
+                                          double Xcentre, double Ycentre, double ZCentre);
+  void                          SetTorus( double X0, double X1, double X2, double X3,
+                                             double X4, double X5, double X6, double X7 );
+
+  std::vector<double>           GetCoords() const;
+
+  void                          SetLimit( double X0, double X1, double X2 );
+  std::vector<double>           GetLimit() const;
+
+  void                          AddGroup( const char* LeGroupe);
+  void                          SetGroups(const std::list<std::string>& ListGroup );
+  const std::list<std::string>& GetGroups() const;
+
+private:
+  std::string                   _Name;
+  std::string                   _DataFile;
+  std::string                   _MeshName;
+  int                           _Type;
+  double                        _Xmin, _Xmax, _Ymin, _Ymax, _Zmin, _Zmax;
+  double                        _Xaxe, _Yaxe, _Zaxe;
+  double                        _Xcentre, _Ycentre, _Zcentre, _rayon;
+  double                        _Xincr, _Yincr, _Zincr;
+  double                        _Xcentre1, _Ycentre1, _Zcentre1, _Rayon1;
+  double                        _Xcentre2, _Ycentre2, _Zcentre2, _Rayon2;
+  double                        _Angle;
+
+  std::list<std::string>        _ListGroupSelected;
+};
+
+class SMESH_EXPORT HOMARD_Cas
+{
+public:
+  HOMARD_Cas();
+  ~HOMARD_Cas();
+
+  // Generalites
+  std::string                   GetDumpPython() const;
+
+  // Caracteristiques
+  int                           SetDirName( const char* NomDir );
+  std::string                   GetDirName() const;
+
+  void                          SetBoundingBox( const std::vector<double>& extremas );
+  const std::vector<double>&    GetBoundingBox() const;
+
+  void                          AddGroup( const char* Group);
+  void                          SetGroups( const std::list<std::string>& ListGroup );
+  const std::list<std::string>& GetGroups() const;
+  void                          SupprGroups();
+
+  void                          AddBoundary( const char* Boundary );
+  void                          AddBoundaryGroup( const char* Boundary, const char* Group );
+  const std::list<std::string>& GetBoundaryGroup() const;
+  void                          SupprBoundaryGroup();
+
+  void                          AddIteration( const char* NomIteration );
+
+private:
+  std::string                   _NomDir;
+  int                           _Etat;
+
+  std::vector<double>           _Boite;         // cf HomardQTCommun pour structure du vecteur
+  std::list<std::string>        _ListGroup;
+  std::list<std::string>        _ListBoundaryGroup;
+
+  typedef std::string           IterName;
+  typedef std::list<IterName>   IterNames;
+  IterNames                     _ListIter;
+};
+
+class SMESH_EXPORT HomardDriver
+{
+public:
+  HomardDriver(const std::string siter, const std::string siterp1);
+  ~HomardDriver();
+  //
+  void        TexteInit( const std::string DirCompute, const std::string LogFile, const std::string Langue );
+  void        TexteInfo( int TypeBila, int NumeIter );
+  void        TexteMajCoords( int NumeIter );
+  void        CreeFichierDonn();
+  void        TexteAdap();
+  void        CreeFichier();
+  void        TexteMaillage( const std::string NomMesh, const std::string MeshFile, int apres );
+  void        TexteMaillageHOMARD( const std::string Dir, const std::string liter, int apres );
+  void        TexteConfRaffDera( int ConfType );
+
+  void        TexteBoundaryOption( int BoundaryOption );
+  void        TexteBoundaryCAOGr( const std::string GroupName );
+  void        TexteBoundaryDi( const std::string MeshName, const std::string MeshFile );
+  void        TexteBoundaryDiGr( const std::string GroupName );
+  void        TexteBoundaryAn( const std::string NameBoundary, int NumeBoundary, int BoundaryType, double x0, double x1, double x2, double x3, double x4, double x5, double x6, double x7 );
+  void        TexteBoundaryAnGr( const std::string NameBoundary, int NumeBoundary, const std::string GroupName );
+
+  void        TexteAdvanced( int NivMax, double DiamMin, int AdapInit, int LevelOutput );
+  void        TexteInfoCompute( int MessInfo );
+  //
+  int         ExecuteHomard();
+
+public:
+  int         _modeHOMARD;
+  std::string _HOMARD_Exec;
+  std::string _NomDir;
+  std::string _NomFichierConfBase;
+  std::string _NomFichierConf;
+  std::string _NomFichierDonn;
+  std::string _siter;
+  std::string _siterp1;
+  std::string _Texte;
+  bool _bLu;
+};
+
+class HOMARD_Iteration;
+
+class SMESH_EXPORT HOMARD_Gen
+{
+public :
+  HOMARD_Gen();
+  ~HOMARD_Gen();
+};
+
+class SMESH_EXPORT HOMARD_Iteration
+{
+public:
+  HOMARD_Iteration();
+  ~HOMARD_Iteration();
+
+  // Generalites
+  void                          SetName( const char* Name );
+  std::string                   GetName() const;
+
+  // Caracteristiques
+  void                          SetDirNameLoc( const char* NomDir );
+  std::string                   GetDirNameLoc() const;
+
+  void                          SetNumber( int NumIter );
+  int                           GetNumber() const;
+
+  void                          SetState( int etat );
+  int                           GetState() const;
+
+  void                          SetMeshName( const char* NomMesh );
+  std::string                   GetMeshName() const;
+
+  void                          SetMeshFile( const char* MeshFile );
+  std::string                   GetMeshFile() const;
+
+  void                          SetLogFile( const char* LogFile );
+  std::string                   GetLogFile() const;
+
+  void                          SetFileInfo( const char* FileInfo );
+  std::string                   GetFileInfo() const;
+
+  // Divers
+  void                          SetInfoCompute( int MessInfo );
+  int                           GetInfoCompute() const;
+
+private:
+  std::string                   _Name;
+  int                           _Etat;
+  int                           _NumIter;
+  std::string                   _NomMesh;
+  std::string                   _MeshFile;
+  std::string                   _LogFile;
+  std::string                   _NomDir;
+  std::string                   _FileInfo;
+  int                           _MessInfo;
+};
+
+} // namespace SMESHHOMARDImpl
+
+#endif
index cb7ec14e99c142d397d61fd51f8c560faf2b0181..a742c0e07c2fd9e43cb5d81d04d5af02fea98393 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index b24b3a2ac33c70d35b6d110296b32b5d1149d143..bcf1e9407745c63046635dff62f26f55d387f5fd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e0de00792987de26e33a4c1863b914390e99f508..d75aead36117719e5a708e76bdec63d0e4195d9d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6ae7cdcc9348f6204fdd6b437ce02d29082b92f7..af740366a0b3198ac62ebe9505c1ffb5baec5622 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f03468977c8f1b91462aa6b67bde8f829b55414a..2f7c6efa7599da99586107a7ee7f149bd28567b8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -57,7 +57,7 @@
 
 #include <GEOMUtils.hxx>
 
-#undef _Precision_HeaderFile
+//#undef _Precision_HeaderFile
 #include <BRepBndLib.hxx>
 #include <BRepPrimAPI_MakeBox.hxx>
 #include <Bnd_Box.hxx>
 #ifndef WIN32
 #include <boost/thread/thread.hpp>
 #include <boost/bind.hpp>
-#else 
+#else
 #include <pthread.h>
 #endif
 
+#ifndef WIN32
+#include <boost/filesystem.hpp>
+namespace fs=boost::filesystem;
+#endif
+
 // maximum stored group name length in MED file
 #define MAX_MED_GROUP_NAME_LENGTH 80
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
-
 #define cSMESH_Hyp(h) static_cast<const SMESH_Hypothesis*>(h)
 
 typedef SMESH_HypoFilter THypType;
@@ -99,7 +98,7 @@ class SMESH_Mesh::SubMeshHolder : public SMESHDS_TSubMeshHolder< SMESH_subMesh >
 
 //=============================================================================
 /*!
- * 
+ *
  */
 //=============================================================================
 
@@ -109,7 +108,7 @@ SMESH_Mesh::SMESH_Mesh(int               theLocalId,
                        SMESHDS_Document* theDocument):
   _groupId( 0 ), _nbSubShapes( 0 )
 {
-  if(MYDEBUG) MESSAGE("SMESH_Mesh::SMESH_Mesh(int localId)");
+  MESSAGE("SMESH_Mesh::SMESH_Mesh(int localId)");
   _id            = theLocalId;
   _gen           = theGen;
   _document    = theDocument;
@@ -168,13 +167,11 @@ namespace
 #ifndef WIN32
   void deleteMeshDS(SMESHDS_Mesh* meshDS)
   {
-    //cout << "deleteMeshDS( " << meshDS << endl;
     delete meshDS;
   }
 #else
   static void* deleteMeshDS(void* meshDS)
   {
-    //cout << "deleteMeshDS( " << meshDS << endl;
     SMESHDS_Mesh* m = (SMESHDS_Mesh*)meshDS;
     if(m) {
       delete m;
@@ -192,7 +189,7 @@ namespace
 
 SMESH_Mesh::~SMESH_Mesh()
 {
-  if(MYDEBUG) MESSAGE("SMESH_Mesh::~SMESH_Mesh");
+  MESSAGE("SMESH_Mesh::~SMESH_Mesh");
 
   if ( _document ) // avoid destructing _meshDS from ~SMESH_Gen()
     _document->RemoveMesh( _id );
@@ -276,7 +273,7 @@ SMESH_Mesh* SMESH_Mesh::FindMesh( int meshId ) const
 
 void SMESH_Mesh::ShapeToMesh(const TopoDS_Shape & aShape)
 {
-  if(MYDEBUG) MESSAGE("SMESH_Mesh::ShapeToMesh");
+  MESSAGE("SMESH_Mesh::ShapeToMesh");
 
   if ( !aShape.IsNull() && _isShapeToMesh ) {
     if ( aShape.ShapeType() != TopAbs_COMPOUND && // group contents is allowed to change
@@ -530,10 +527,12 @@ int SMESH_Mesh::MEDToMesh(const char* theFileName, const char* theMeshName)
   myReader.SetFile(theFileName);
   myReader.SetMeshName(theMeshName);
   Driver_Mesh::Status status = myReader.Perform();
-#ifdef _DEBUG_
-  SMESH_ComputeErrorPtr er = myReader.GetError();
-  if ( er && !er->IsOK() ) std::cout << er->myComment << std::endl;
-#endif
+
+  if (SALOME::VerbosityActivated())
+  {
+    SMESH_ComputeErrorPtr er = myReader.GetError();
+    if ( er && !er->IsOK() ) std::cout << er->myComment << std::endl;
+  }
 
   // Reading groups (sub-meshes are out of scope of MED import functionality)
   std::list<TNameAndType> aGroupNames = myReader.GetGroupNamesAndTypes();
@@ -629,7 +628,7 @@ SMESH_ComputeErrorPtr SMESH_Mesh::GMFToMesh(const char* theFileName,
 
 //=============================================================================
 /*!
- * 
+ *
  */
 //=============================================================================
 
@@ -638,7 +637,7 @@ SMESH_Mesh::AddHypothesis(const TopoDS_Shape & aSubShape,
                           int                  anHypId,
                           std::string*         anError  )
 {
-  if(MYDEBUG) MESSAGE("SMESH_Mesh::AddHypothesis");
+  MESSAGE("SMESH_Mesh::AddHypothesis");
 
   if ( anError )
     anError->clear();
@@ -662,7 +661,7 @@ SMESH_Mesh::AddHypothesis(const TopoDS_Shape & aSubShape,
     std::string hypName = anHyp->GetName();
     if ( hypName == "NotConformAllowed" )
     {
-      if(MYDEBUG) MESSAGE( "Hypothesis <NotConformAllowed> can be only global" );
+      MESSAGE( "Hypothesis <NotConformAllowed> can be only global" );
       return SMESH_Hypothesis::HYP_INCOMPATIBLE;
     }
   }
@@ -705,7 +704,7 @@ SMESH_Mesh::AddHypothesis(const TopoDS_Shape & aSubShape,
       while ( smIt->more() ) {
         SMESH_subMesh* sm = smIt->next();
         if ( sm->IsApplicableHypothesis( anHyp )) {
-          ret2 = sm->CheckConcurrentHypothesis( anHyp->GetType() );
+          ret2 = sm->CheckConcurrentHypothesis( anHyp );
           if (ret2 > ret) {
             ret = ret2;
             break;
@@ -717,14 +716,14 @@ SMESH_Mesh::AddHypothesis(const TopoDS_Shape & aSubShape,
   HasModificationsToDiscard(); // to reset _isModified flag if a mesh becomes empty
   GetMeshDS()->Modified();
 
-  if(MYDEBUG) subMesh->DumpAlgoState(true);
-  if(MYDEBUG) SCRUTE(ret);
+  if(SALOME::VerbosityActivated()) subMesh->DumpAlgoState(true);
+  SCRUTE(ret);
   return ret;
 }
 
 //=============================================================================
 /*!
- * 
+ *
  */
 //=============================================================================
 
@@ -732,16 +731,16 @@ SMESH_Hypothesis::Hypothesis_Status
 SMESH_Mesh::RemoveHypothesis(const TopoDS_Shape & aSubShape,
                              int                    anHypId)
 {
-  if(MYDEBUG) MESSAGE("SMESH_Mesh::RemoveHypothesis");
+  MESSAGE("SMESH_Mesh::RemoveHypothesis");
 
   StudyContextStruct *sc = _gen->GetStudyContext();
   if (sc->mapHypothesis.find(anHypId) == sc->mapHypothesis.end())
     throw SALOME_Exception(LOCALIZED("hypothesis does not exist"));
 
   SMESH_Hypothesis *anHyp = sc->mapHypothesis[anHypId];
-  if(MYDEBUG) { SCRUTE(anHyp->GetType()); }
+  SCRUTE(anHyp->GetType());
 
-  // shape 
+  // shape
 
   bool                     isAlgo = ( !anHyp->GetType() == SMESHDS_Hypothesis::PARAM_ALGO );
   SMESH_subMesh::algo_event event = isAlgo ? SMESH_subMesh::REMOVE_ALGO : SMESH_subMesh::REMOVE_HYP;
@@ -753,7 +752,7 @@ SMESH_Mesh::RemoveHypothesis(const TopoDS_Shape & aSubShape,
   // there may appear concurrent hyps that were covered by the removed hyp
   if (ret < SMESH_Hypothesis::HYP_CONCURRENT &&
       subMesh->IsApplicableHypothesis( anHyp ) &&
-      subMesh->CheckConcurrentHypothesis( anHyp->GetType() ) != SMESH_Hypothesis::HYP_OK)
+      subMesh->CheckConcurrentHypothesis( anHyp ) != SMESH_Hypothesis::HYP_OK)
     ret = SMESH_Hypothesis::HYP_CONCURRENT;
 
   // sub-shapes
@@ -774,7 +773,7 @@ SMESH_Mesh::RemoveHypothesis(const TopoDS_Shape & aSubShape,
       while ( smIt->more() ) {
         SMESH_subMesh* sm = smIt->next();
         if ( sm->IsApplicableHypothesis( anHyp )) {
-          ret2 = sm->CheckConcurrentHypothesis( anHyp->GetType() );
+          ret2 = sm->CheckConcurrentHypothesis( anHyp );
           if (ret2 > ret) {
             ret = ret2;
             break;
@@ -787,14 +786,14 @@ SMESH_Mesh::RemoveHypothesis(const TopoDS_Shape & aSubShape,
   HasModificationsToDiscard(); // to reset _isModified flag if mesh become empty
   GetMeshDS()->Modified();
 
-  if(MYDEBUG) subMesh->DumpAlgoState(true);
-  if(MYDEBUG) SCRUTE(ret);
+  if(SALOME::VerbosityActivated()) subMesh->DumpAlgoState(true);
+  SCRUTE(ret);
   return ret;
 }
 
 //=============================================================================
 /*!
- * 
+ *
  */
 //=============================================================================
 
@@ -861,7 +860,7 @@ const SMESH_Hypothesis * SMESH_Mesh::GetHypothesis(const SMESH_subMesh *   aSubM
       const_cast< std::vector< SMESH_subMesh * > & > ( aSubMesh->GetAncestors() );
     SortByMeshOrder( ancestors );
 
-    std::vector<SMESH_subMesh*>::const_iterator smIt = ancestors.begin(); 
+    std::vector<SMESH_subMesh*>::const_iterator smIt = ancestors.begin();
     for ( ; smIt != ancestors.end(); smIt++ )
     {
       const TopoDS_Shape& curSh = (*smIt)->GetSubShape();
@@ -1004,7 +1003,7 @@ SMESH_Hypothesis * SMESH_Mesh::GetHypothesis(const int anHypId) const
 
 //=============================================================================
 /*!
- * 
+ *
  */
 //=============================================================================
 
@@ -1015,7 +1014,7 @@ const std::list<SMESHDS_Command*> & SMESH_Mesh::GetLog()
 
 //=============================================================================
 /*!
- * 
+ *
  */
 //=============================================================================
 void SMESH_Mesh::ClearLog()
@@ -1727,7 +1726,7 @@ double SMESH_Mesh::GetComputeProgress() const
   const SMESH_subMesh* curSM = _gen->GetCurrentSubMesh();
 
   // get progress of a current algo
-  TColStd_MapOfInteger currentSubIds; 
+  TColStd_MapOfInteger currentSubIds;
   if ( curSM )
     if ( SMESH_Algo* algo = curSM->GetAlgo() )
     {
@@ -1748,9 +1747,8 @@ double SMESH_Mesh::GetComputeProgress() const
         rate = algo->GetProgress();
       }
       catch (...) {
-#ifdef _DEBUG_
-        std::cerr << "Exception in " << algo->GetName() << "::GetProgress()" << std::endl;
-#endif
+        if (SALOME::VerbosityActivated())
+          std::cerr << "Exception in " << algo->GetName() << "::GetProgress()" << std::endl;
       }
       if ( 0. < rate && rate < 1.001 )
       {
@@ -1761,7 +1759,6 @@ double SMESH_Mesh::GetComputeProgress() const
         rate = algo->GetProgressByTic();
         computedCost += algoDoneCost + rate * algoNotDoneCost;
       }
-      // cout << "rate: "<<rate << " algoNotDoneCost: " << algoNotDoneCost << endl;
     }
 
   // get cost of already treated sub-meshes
@@ -1782,9 +1779,6 @@ double SMESH_Mesh::GetComputeProgress() const
       }
     }
   }
-  // cout << "Total: " << totalCost
-  //      << " computed: " << computedCost << " progress: " << computedCost / totalCost
-  //      << " nbElems: " << GetMeshDS()->GetMeshInfo().NbElements() << endl;
   return computedCost / totalCost;
 }
 
@@ -2027,7 +2021,7 @@ int SMESH_Mesh::NbMeshes() const // nb meshes in the Study
 
 bool SMESH_Mesh::IsNotConformAllowed() const
 {
-  if(MYDEBUG) MESSAGE("SMESH_Mesh::IsNotConformAllowed");
+  MESSAGE("SMESH_Mesh::IsNotConformAllowed");
 
   static SMESH_HypoFilter filter( SMESH_HypoFilter::HasName( "NotConformAllowed" ));
   return GetHypothesis( _meshDS->ShapeToMesh(), filter, false );
@@ -2035,7 +2029,7 @@ bool SMESH_Mesh::IsNotConformAllowed() const
 
 //=======================================================================
 //function : IsMainShape
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 bool SMESH_Mesh::IsMainShape(const TopoDS_Shape& theShape) const
@@ -2055,7 +2049,7 @@ TopoDS_Shape SMESH_Mesh::GetShapeByEntry(const std::string& entry) const
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 
@@ -2169,7 +2163,7 @@ std::list<int> SMESH_Mesh::GetGroupIds() const
   std::map<int, SMESH_Group*>::const_iterator it = _mapGroup.begin();
   for ( ; it != _mapGroup.end(); it++ )
     anIds.push_back( it->first );
-  
+
   return anIds;
 }
 
@@ -2188,7 +2182,7 @@ void SMESH_Mesh::SetCallUp( TCallUp* upCaller )
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 
@@ -2546,7 +2540,7 @@ bool SMESH_Mesh::IsOrderOK( const SMESH_subMesh* smBefore,
     }
   }
   return true; // no order imposed to given sub-meshes
-} 
+}
 
 //=============================================================================
 /*!
index 927aa4047f0da46f2f04c2d82994ac5d7c0fde1d..b831998d5b75237bf85becd8b415b43a46efabe0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -33,6 +33,7 @@
 #include "SMESH_ComputeError.hxx"
 #include "SMESH_Controls.hxx"
 #include "SMESH_Hypothesis.hxx"
+#include "SMESH_subMesh.hxx"
 #include "SMDS_Iterator.hxx"
 
 #include "Utils_SALOME_Exception.hxx"
 #include <vector>
 #include <ostream>
 
+#ifndef WIN32
+#include <boost/filesystem.hpp>
+#endif
+#include <boost/thread.hpp>
+
 #ifdef WIN32
 #pragma warning(disable:4251) // Warning DLL Interface ...
 #pragma warning(disable:4290) // Warning Exception ...
@@ -66,6 +72,7 @@ class TopoDS_Solid;
 
 class DriverMED_W_SMESHDS_Mesh;
 
+typedef std::set<int> TSetOfInt;
 typedef std::list<int> TListOfInt;
 typedef std::list<TListOfInt> TListOfListOfInt;
 
@@ -127,20 +134,20 @@ class SMESH_EXPORT SMESH_Mesh
   int UNVToMesh(const char* theFileName);
 
   int MEDToMesh(const char* theFileName, const char* theMeshName);
-  
+
   std::string STLToMesh(const char* theFileName);
 
   int CGNSToMesh(const char* theFileName, const int theMeshIndex, std::string& theMeshName);
-  
+
   SMESH_ComputeErrorPtr GMFToMesh(const char* theFileName,
                                   bool        theMakeRequiredGroups = true );
 
   SMESH_Hypothesis::Hypothesis_Status
   AddHypothesis(const TopoDS_Shape & aSubShape, int anHypId, std::string* error=0);
-  
+
   SMESH_Hypothesis::Hypothesis_Status
   RemoveHypothesis(const TopoDS_Shape & aSubShape, int anHypId);
-  
+
   const std::list <const SMESHDS_Hypothesis * >&
   GetHypothesisList(const TopoDS_Shape & aSubShape) const;
 
@@ -148,7 +155,7 @@ class SMESH_EXPORT SMESH_Mesh
                                          const SMESH_HypoFilter& aFilter,
                                          const bool              andAncestors,
                                          TopoDS_Shape*           assignedTo=0) const;
-  
+
   int GetHypotheses(const TopoDS_Shape &                     aSubShape,
                     const SMESH_HypoFilter&                  aFilter,
                     std::list< const SMESHDS_Hypothesis * >& aHypList,
@@ -159,7 +166,7 @@ class SMESH_EXPORT SMESH_Mesh
                                          const SMESH_HypoFilter& aFilter,
                                          const bool              andAncestors,
                                          TopoDS_Shape*           assignedTo=0) const;
-  
+
   int GetHypotheses(const SMESH_subMesh *                    aSubMesh,
                     const SMESH_HypoFilter&                  aFilter,
                     std::list< const SMESHDS_Hypothesis * >& aHypList,
@@ -169,25 +176,25 @@ class SMESH_EXPORT SMESH_Mesh
   SMESH_Hypothesis * GetHypothesis(const int aHypID) const;
 
   const std::list<SMESHDS_Command*> & GetLog();
-  
+
   void ClearLog();
-  
+
   int GetId() const          { return _id; }
-  
+
   bool MeshExists( int meshId ) const;
-  
+
   SMESH_Mesh* FindMesh( int meshId ) const;
 
   SMESHDS_Mesh * GetMeshDS() { return _meshDS; }
 
   const SMESHDS_Mesh * GetMeshDS() const { return _meshDS; }
-  
+
   SMESH_Gen *GetGen()        { return _gen; }
 
   SMESH_subMesh *GetSubMesh(const TopoDS_Shape & aSubShape);
-  
+
   SMESH_subMesh *GetSubMeshContaining(const TopoDS_Shape & aSubShape) const;
-  
+
   SMESH_subMesh *GetSubMeshContaining(const int aShapeID) const;
   /*!
    * \brief Return submeshes of groups containing the given subshape
@@ -209,7 +216,7 @@ class SMESH_EXPORT SMESH_Mesh
    * \brief check if a hypothesis allowing notconform mesh is present
    */
   bool IsNotConformAllowed() const;
-  
+
   bool IsMainShape(const TopoDS_Shape& theShape) const;
 
   TopoDS_Shape GetShapeByEntry(const std::string& entry) const;
@@ -303,20 +310,20 @@ class SMESH_EXPORT SMESH_Mesh
                  bool                withRequiredGroups = true );
 
   double GetComputeProgress() const;
-  
+
   smIdType NbNodes() const;
   smIdType Nb0DElements() const;
   smIdType NbBalls() const;
-  
+
   smIdType NbEdges(SMDSAbs_ElementOrder order = ORDER_ANY) const;
-  
+
   smIdType NbFaces(SMDSAbs_ElementOrder order = ORDER_ANY) const;
   smIdType NbTriangles(SMDSAbs_ElementOrder order = ORDER_ANY) const;
   smIdType NbQuadrangles(SMDSAbs_ElementOrder order = ORDER_ANY) const;
   smIdType NbBiQuadQuadrangles() const;
   smIdType NbBiQuadTriangles() const;
   smIdType NbPolygons(SMDSAbs_ElementOrder order = ORDER_ANY) const;
-  
+
   smIdType NbVolumes(SMDSAbs_ElementOrder order = ORDER_ANY) const;
   smIdType NbTetras(SMDSAbs_ElementOrder order = ORDER_ANY) const;
   smIdType NbHexas(SMDSAbs_ElementOrder order = ORDER_ANY) const;
@@ -327,9 +334,9 @@ class SMESH_EXPORT SMESH_Mesh
   smIdType NbBiQuadPrisms() const;
   smIdType NbHexagonalPrisms() const;
   smIdType NbPolyhedrons() const;
-  
+
   smIdType NbSubMesh() const;
-  
+
   size_t NbGroup() const { return _mapGroup.size(); }
 
   int NbMeshes() const; // nb meshes in the Study
@@ -344,9 +351,9 @@ class SMESH_EXPORT SMESH_Mesh
 
   typedef boost::shared_ptr< SMDS_Iterator<SMESH_Group*> > GroupIteratorPtr;
   GroupIteratorPtr GetGroups() const;
-  
+
   std::list<int> GetGroupIds() const;
-  
+
   SMESH_Group* GetGroup (const int theGroupID) const;
 
   bool RemoveGroup (const int theGroupID);
@@ -381,7 +388,29 @@ class SMESH_EXPORT SMESH_Mesh
                   const SMESH_subMesh* smAfter ) const;
 
   std::ostream& Dump(std::ostream & save);
-  
+
+  // Parallel computation functions
+
+  virtual void Lock(){};
+  virtual void Unlock(){};
+
+  virtual void wait(){};
+
+  virtual bool IsParallel(){throw SALOME_Exception("Calling SMESH_Mesh::IsParallel");return false;};
+  virtual int GetParallelElement(){throw SALOME_Exception("Calling SMESH_Mesh::GetParallelElement");return 0;};
+
+  virtual bool ComputeSubMeshes(
+            SMESH_Gen* gen,
+            SMESH_Mesh & aMesh,
+            const TopoDS_Shape & aShape,
+            const ::MeshDimension       aDim,
+            TSetOfInt*                  aShapesId /*=0*/,
+            TopTools_IndexedMapOfShape* allowedSubShapes,
+            SMESH_subMesh::compute_event &computeEvent,
+            const bool includeSelf,
+            const bool complexShapeFirst,
+            const bool aShapeOnly){(void) gen;(void) aMesh;(void) aShape;(void) aDim;(void) aShapesId;(void) allowedSubShapes;(void) computeEvent;(void) includeSelf;(void) complexShapeFirst;(void) aShapeOnly;throw SALOME_Exception("Calling SMESH_Mesh::ComputeSubMeshes");return false;};
+
 private:
 
   void exportMEDCommmon(DriverMED_W_SMESHDS_Mesh& myWriter,
@@ -397,7 +426,7 @@ private:
   void fillAncestorsMap(const TopoDS_Shape& theShape);
   void getAncestorsSubMeshes(const TopoDS_Shape&            theSubShape,
                              std::vector< SMESH_subMesh* >& theSubMeshes) const;
-  
+
 protected:
   int                        _id;           // id given by creator (unique within the creator instance)
   int                        _groupId;      // id generator for group objects
@@ -410,12 +439,12 @@ protected:
 
   class SubMeshHolder;
   SubMeshHolder*             _subMeshHolder;
-  
+
   bool                       _isAutoColor;
   bool                       _isModified; //!< modified since last total re-compute, issue 0020693
 
   double                     _shapeDiagonal; //!< diagonal size of bounding box of shape to mesh
-  
+
   TopTools_IndexedDataMapOfShapeListOfShape _mapAncestors;
 
   mutable std::vector<SMESH_subMesh*> _ancestorSubMeshes; // to speed up GetHypothes[ei]s()
@@ -432,5 +461,4 @@ protected:
   SMESH_Mesh();
   SMESH_Mesh(const SMESH_Mesh&) {};
 };
-
 #endif
index 853d59b3e8428070ca9dc8cde48fb3a4b11db31a..8c940322e0229a86bdf12fb802492d234ae6f260 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -62,6 +62,8 @@
 #include <Geom_Curve.hxx>
 #include <Geom_Surface.hxx>
 #include <Precision.hxx>
+#include <ShapeAnalysis.hxx>
+#include <ShapeAnalysis_Curve.hxx>
 #include <TColStd_ListOfInteger.hxx>
 #include <TopAbs_State.hxx>
 #include <TopExp.hxx>
@@ -412,8 +414,8 @@ SMDS_MeshElement* SMESH_MeshEditor::AddElement(const vector<smIdType> & nodeIDs,
 //           Modify a compute state of sub-meshes which become empty
 //=======================================================================
 
-smIdType SMESH_MeshEditor::Remove (const list< smIdType >& theIDs,
-                              const bool         isNodes )
+smIdType SMESH_MeshEditor::Remove (const std::list< smIdType >& theIDs,
+                                   const bool                   isNodes )
 {
   ClearLastCreated();
 
@@ -474,10 +476,87 @@ smIdType SMESH_MeshEditor::Remove (const list< smIdType >& theIDs,
   return removed;
 }
 
+//================================================================================
+/*!
+ * \brief Remove a node and fill a hole appeared, by changing surrounding faces
+ */
+//================================================================================
+
+void SMESH_MeshEditor::RemoveNodeWithReconnection( const SMDS_MeshNode* node )
+{
+  if ( ! node )
+    return;
+
+  if ( node->NbInverseElements( SMDSAbs_Volume ) > 0 )
+    throw SALOME_Exception( "RemoveNodeWithReconnection() applies to 2D mesh only" );
+
+  // check that only triangles surround the node
+  for ( SMDS_ElemIteratorPtr fIt = node->GetInverseElementIterator( SMDSAbs_Face ); fIt->more(); )
+  {
+    const SMDS_MeshElement* face = fIt->next();
+    if ( face->GetGeomType() != SMDSGeom_TRIANGLE )
+      throw SALOME_Exception( "RemoveNodeWithReconnection() applies to triangle mesh only" );
+    if ( face->IsQuadratic() )
+      throw SALOME_Exception( "RemoveNodeWithReconnection() applies to linear mesh only" );
+  }
+
+  std::vector< const SMDS_MeshNode*> neighbours(2);
+  SMESH_MeshAlgos::IsOn2DBoundary( node, & neighbours );
+
+  bool toRemove = ( neighbours.size() > 2 ); // non-manifold ==> just remove
+
+  // if ( neighbours.size() == 2 ) // on boundary
+  // {
+  //   // check if theNode and neighbours are on a line
+  //   gp_Pnt pN = SMESH_NodeXYZ( node );
+  //   gp_Pnt p0 = SMESH_NodeXYZ( neighbours[0] );
+  //   gp_Pnt p1 = SMESH_NodeXYZ( neighbours[1] );
+  //   double dist01 = p0.Distance( p1 );
+  //   double    tol = 0.01 * dist01;
+  //   double  distN = ( gp_Vec( p0, p1 ) ^ gp_Vec( p0, pN )).Magnitude() / dist01;
+  //   bool   onLine = distN < tol;
+  //   toRemove = !onLine;
+  // }
+
+  if ( neighbours.empty() ) // not on boundary
+  {
+    TIDSortedElemSet linkedNodes;
+    GetLinkedNodes( node, linkedNodes, SMDSAbs_Face );
+    for ( const SMDS_MeshElement* e : linkedNodes ) neighbours.push_back( cast2Node( e ));
+    if ( neighbours.empty() )
+      toRemove = true;
+  }
+
+  if ( toRemove )
+  {
+    this->Remove( std::list< smIdType >( 1, node->GetID() ), /*isNode=*/true );
+    return;
+  }
+
+  // choose a node to replace by
+  const SMDS_MeshNode* nToReplace = nullptr;
+  SMESH_NodeXYZ           nodeXYZ = node;
+  double                  minDist = Precision::Infinite();
+  for ( const SMDS_MeshNode* n : neighbours )
+  {
+    double dist = nodeXYZ.SquareDistance( n );
+    if ( dist < minDist )
+    {
+      minDist = dist;
+      nToReplace = n;
+    }
+  }
+
+  // remove node + replace by nToReplace
+  std::list< const SMDS_MeshNode* > nodeGroup = { nToReplace, node };
+  TListOfListOfNodes nodesToMerge( 1, nodeGroup );
+  this->MergeNodes( nodesToMerge );
+}
+
 //================================================================================
 /*!
  * \brief Create 0D elements on all nodes of the given object.
- *  \param elements - Elements on whose nodes to create 0D elements; if empty, 
+ *  \param elements - Elements on whose nodes to create 0D elements; if empty,
  *                    the all mesh is treated
  *  \param all0DElems - returns all 0D elements found or created on nodes of \a elements
  *  \param duplicateElements - to add one more 0D element to a node or not
@@ -947,24 +1026,24 @@ bool getQuadrangleNodes(const SMDS_MeshNode *    theQuadNodes [],
 {
   if( tr1->NbNodes() != tr2->NbNodes() )
     return false;
+
   // find the 4-th node to insert into tr1
   const SMDS_MeshNode* n4 = 0;
   SMDS_ElemIteratorPtr it = tr2->nodesIterator();
-  int i=0;
-  while ( !n4 && i<3 ) {
+  for ( int i = 0; !n4 && i < 3; ++i )
+  {
     const SMDS_MeshNode * n = cast2Node( it->next() );
-    i++;
     bool isDiag = ( n == theNode1 || n == theNode2 );
     if ( !isDiag )
       n4 = n;
   }
+
   // Make an array of nodes to be in a quadrangle
   int iNode = 0, iFirstDiag = -1;
   it = tr1->nodesIterator();
-  i=0;
-  while ( i<3 ) {
+  for ( int i = 0; i < 3; ++i )
+  {
     const SMDS_MeshNode * n = cast2Node( it->next() );
-    i++;
     bool isDiag = ( n == theNode1 || n == theNode2 );
     if ( isDiag ) {
       if ( iFirstDiag < 0 )
@@ -1079,6 +1158,210 @@ bool SMESH_MeshEditor::DeleteDiag (const SMDS_MeshNode * theNode1,
   return true;
 }
 
+//=======================================================================
+//function : SplitEdge
+//purpose  : Replace each triangle bound by theNode1-theNode2 segment with
+//           two triangles by connecting a node made on the link with a node opposite to the link.
+//=======================================================================
+
+void SMESH_MeshEditor::SplitEdge (const SMDS_MeshNode * theNode1,
+                                  const SMDS_MeshNode * theNode2,
+                                  double                thePosition)
+{
+  ClearLastCreated();
+
+  SMESHDS_Mesh * mesh = GetMeshDS();
+
+  // Get triangles and segments to divide
+
+  std::vector<const SMDS_MeshNode *> diagNodes = { theNode1, theNode2 };
+  std::vector<const SMDS_MeshElement *> foundElems;
+  if ( !mesh->GetElementsByNodes( diagNodes, foundElems ) || foundElems.empty() )
+    throw SALOME_Exception( SMESH_Comment("No triangle is bound by the edge ")
+                            << theNode1->GetID() << " - " << theNode2->GetID());
+
+  SMESH_MesherHelper helper( *GetMesh() );
+
+  for ( const SMDS_MeshElement * elem : foundElems )
+  {
+    SMDSAbs_ElementType type = elem->GetType();
+    switch ( type ) {
+    case SMDSAbs_Volume:
+      throw SALOME_Exception( "Can't split an edge of a volume");
+      break;
+
+    case SMDSAbs_Face:
+      if ( elem->GetGeomType() != SMDSGeom_TRIANGLE )
+        throw SALOME_Exception( "Can't split an edge of a face of type other than triangle");
+      if ( elem->IsQuadratic() )
+      {
+        helper.SetIsQuadratic( true );
+        helper.AddTLinks( static_cast< const SMDS_MeshFace*>( elem ));
+        helper.SetIsBiQuadratic( elem->GetEntityType() == SMDSEntity_BiQuad_Triangle );
+      }
+      break;
+
+    case SMDSAbs_Edge:
+      if ( elem->IsQuadratic() )
+      {
+        helper.SetIsQuadratic( true );
+        helper.AddTLinks( static_cast< const SMDS_MeshEdge*>( elem ));
+      }
+      break;
+    default:;
+    }
+  }
+
+  // Make a new node
+
+  const SMDS_MeshNode* nodeOnLink = helper.GetMediumNode( theNode1, theNode2,/*force3d=*/false );
+
+  gp_Pnt newNodeXYZ = ( SMESH_NodeXYZ( theNode1 ) * ( 1 - thePosition ) +
+                        SMESH_NodeXYZ( theNode2 ) * thePosition );
+
+  const TopoDS_Shape& S = mesh->IndexToShape( nodeOnLink->GetShapeID() );
+  if ( !S.IsNull() && S.ShapeType() == TopAbs_FACE ) // find newNodeXYZ by UV on FACE
+  {
+    Handle(ShapeAnalysis_Surface) surface = helper.GetSurface( TopoDS::Face( S ));
+    double  tol = 100 * helper.MaxTolerance( S );
+    gp_Pnt2d uv = surface->ValueOfUV( newNodeXYZ, tol );
+    if ( surface->Gap() < SMESH_NodeXYZ( theNode1 ).Distance( theNode2 ))
+    {
+      newNodeXYZ = surface->Value( uv );
+      if ( SMDS_FacePositionPtr nPos = nodeOnLink->GetPosition())
+        nPos->SetParameters( uv.X(), uv.Y() );
+    }
+  }
+  if ( !S.IsNull() && S.ShapeType() == TopAbs_EDGE ) // find newNodeXYZ by param on EDGE
+  {
+    mesh->MoveNode( nodeOnLink, newNodeXYZ.X(), newNodeXYZ.Y(), newNodeXYZ.Z() );
+    double u = Precision::Infinite(), tol = 100 * helper.MaxTolerance( S ), distXYZ[4];
+    helper.ToFixNodeParameters( true );
+    if ( helper.CheckNodeU( TopoDS::Edge( S ), nodeOnLink, u, tol, /*force3D=*/false, distXYZ ))
+      newNodeXYZ.SetCoord( distXYZ[1], distXYZ[2], distXYZ[3] );
+  }
+  mesh->MoveNode( nodeOnLink, newNodeXYZ.X(), newNodeXYZ.Y(), newNodeXYZ.Z() );
+
+  // Split triangles and segments
+
+  std::vector<const SMDS_MeshNode *> nodes( 7 );
+  for ( const SMDS_MeshElement * elem : foundElems )
+  {
+    nodes.assign( elem->begin_nodes(), elem->end_nodes() );
+    nodes.resize( elem->NbCornerNodes() + 1 );
+    nodes.back() = nodes[0];
+
+    smIdType id = elem->GetID();
+    int shapeID = elem->GetShapeID();
+
+    const SMDS_MeshNode* centralNode = nullptr;
+    if ( elem->GetEntityType() == SMDSEntity_BiQuad_Triangle )
+      centralNode = elem->GetNode( 6 );
+
+    mesh->RemoveFreeElement( elem, /*sm=*/0, /*fromGroups=*/false );
+    if ( centralNode )
+      mesh->RemoveFreeNode( centralNode, /*sm=*/0, /*fromGroups=*/true );
+
+    for ( size_t i = 1; i < nodes.size(); ++i )
+    {
+      const SMDS_MeshNode* n1 = nodes[i-1];
+      const SMDS_MeshNode* n2 = nodes[i];
+      const SMDS_MeshElement* newElem;
+      if ( nodes.size() == 4 ) //    triangle
+      {
+        bool isDiag1 = ( n1 == theNode1 || n1 == theNode2 );
+        bool isDiag2 = ( n2 == theNode1 || n2 == theNode2 );
+        if ( isDiag1 && isDiag2 )
+          continue;
+
+        newElem = helper.AddFace( n1, n2, nodeOnLink, id );
+      }
+      else //    segment
+      {
+        newElem = helper.AddEdge( n1, nodeOnLink, id );
+      }
+      myLastCreatedElems.push_back( newElem );
+      AddToSameGroups( newElem, elem, mesh );
+      if ( shapeID )
+        mesh->SetMeshElementOnShape( newElem, shapeID );
+      id = 0;
+    }
+  }
+  return;
+}
+
+//=======================================================================
+//function : SplitFace
+//purpose  : Split a face into triangles each formed by two nodes of the 
+//           face and a new node added at the given coordinates.
+//=======================================================================
+
+void SMESH_MeshEditor::SplitFace (const SMDS_MeshElement * theFace,
+                                  double                   theX,
+                                  double                   theY,
+                                  double                   theZ )
+{
+  ClearLastCreated();
+
+  if ( !theFace )
+    throw SALOME_Exception("Null face given");
+  if ( theFace->GetType() != SMDSAbs_Face )
+    throw SALOME_Exception("Not a face given");
+
+  SMESHDS_Mesh * mesh = GetMeshDS();
+
+  SMESH_MesherHelper helper( *GetMesh() );
+  if ( theFace->IsQuadratic() )
+  {
+    helper.SetIsQuadratic( true );
+    helper.AddTLinks( static_cast< const SMDS_MeshFace*>( theFace ));
+  }
+  const TopoDS_Shape& shape = mesh->IndexToShape( theFace->GetShapeID() );
+  helper.SetSubShape( shape );
+  helper.SetElementsOnShape( true );
+
+  // Make a new node
+
+  const SMDS_MeshNode* centralNode = nullptr;
+  if (      theFace->GetEntityType() == SMDSEntity_BiQuad_Triangle )
+    centralNode = theFace->GetNode( 6 );
+  else if ( theFace->GetEntityType() == SMDSEntity_BiQuad_Quadrangle )
+    centralNode = theFace->GetNode( 8 );
+
+  if ( centralNode )
+  {
+    helper.SetIsBiQuadratic( true );
+    mesh->MoveNode( centralNode, theX, theY, theZ );
+  }
+  else
+    centralNode = helper.AddNode( theX, theY, theZ );
+
+
+  // Split theFace
+
+  std::vector<const SMDS_MeshNode *> nodes( theFace->NbNodes() + 1 );
+  nodes.assign( theFace->begin_nodes(), theFace->end_nodes() );
+  nodes.resize( theFace->NbCornerNodes() + 1 );
+  nodes.back() = nodes[0];
+
+  smIdType id = theFace->GetID();
+  int shapeID = theFace->GetShapeID();
+
+  mesh->RemoveFreeElement( theFace, /*sm=*/0, /*fromGroups=*/false );
+
+  for ( size_t i = 1; i < nodes.size(); ++i )
+  {
+    const SMDS_MeshElement* newElem = helper.AddFace( nodes[i-1], nodes[i], centralNode, id );
+
+    myLastCreatedElems.push_back( newElem );
+    AddToSameGroups( newElem, theFace, mesh );
+    if ( shapeID )
+      mesh->SetMeshElementOnShape( newElem, shapeID );
+    id = 0;
+  }
+  return;
+}
+
 //=======================================================================
 //function : Reorient
 //purpose  : Reverse theElement orientation
@@ -3568,6 +3851,68 @@ void SMESH_MeshEditor::GetLinkedNodes( const SMDS_MeshNode* theNode,
   }
 }
 
+//=======================================================================
+//function : averageBySurface
+//purpose  : Auxiliar function to treat properly nodes in periodic faces in the laplacian smoother
+//=======================================================================
+void averageBySurface( const Handle(Geom_Surface)& theSurface, const SMDS_MeshNode* refNode, 
+                        TIDSortedElemSet& nodeSet, map< const SMDS_MeshNode*, gp_XY* >& theUVMap, double * coord )
+{
+  if ( theSurface.IsNull() ) 
+  {
+    TIDSortedElemSet::iterator nodeSetIt = nodeSet.begin();
+    for ( ; nodeSetIt != nodeSet.end(); nodeSetIt++ ) 
+    {
+      const SMDS_MeshNode* node = cast2Node(*nodeSetIt);
+      coord[0] += node->X();
+      coord[1] += node->Y();
+      coord[2] += node->Z();
+    }
+  }
+  else
+  {
+    Standard_Real Umin,Umax,Vmin,Vmax;
+    theSurface->Bounds( Umin, Umax, Vmin, Vmax );
+    ASSERT( theUVMap.find( refNode ) != theUVMap.end() );
+    gp_XY* nodeUV = theUVMap[ refNode ];
+    Standard_Real uref = nodeUV->X();
+    Standard_Real vref = nodeUV->Y();
+
+    TIDSortedElemSet::iterator nodeSetIt = nodeSet.begin();
+    for ( ; nodeSetIt != nodeSet.end(); nodeSetIt++ ) 
+    {
+      const SMDS_MeshNode* node = cast2Node(*nodeSetIt);
+      ASSERT( theUVMap.find( node ) != theUVMap.end() );
+      gp_XY* uv = theUVMap[ node ];    
+
+      if ( theSurface->IsUPeriodic() || theSurface->IsVPeriodic() )  
+      {          
+        Standard_Real u          = uv->X();
+        Standard_Real v          = uv->Y();                      
+        Standard_Real uCorrected = u;
+        Standard_Real vCorrected = v;
+        bool isUTobeCorrected = (std::fabs( uref - u ) >= 0.7 * std::fabs( Umax - Umin ));
+        bool isVTobeCorrected = (std::fabs( vref - v ) >= 0.7 * std::fabs( Vmax - Vmin ));
+
+        if( isUTobeCorrected  )
+          uCorrected = uref > u ? Umax + std::fabs(Umin - u) : Umin - std::fabs(Umax - u);
+
+        if( isVTobeCorrected )
+          vCorrected = vref > v ? Vmax + std::fabs(Vmin - v) : Vmin - std::fabs(Vmax - v);
+        
+        coord[0] += uCorrected;
+        coord[1] += vCorrected;
+
+      }
+      else
+      {
+        coord[0] += uv->X();
+        coord[1] += uv->Y();
+      }
+    }   
+  }
+}
+
 //=======================================================================
 //function : laplacianSmooth
 //purpose  : pulls theNode toward the center of surrounding nodes directly
@@ -3584,26 +3929,14 @@ void laplacianSmooth(const SMDS_MeshNode*                 theNode,
   SMESH_MeshEditor::GetLinkedNodes( theNode, nodeSet, SMDSAbs_Face );
 
   // compute new coodrs
+  double coord[] = { 0., 0., 0. };  
+
+  averageBySurface( theSurface, theNode, nodeSet, theUVMap, coord );
 
-  double coord[] = { 0., 0., 0. };
-  TIDSortedElemSet::iterator nodeSetIt = nodeSet.begin();
-  for ( ; nodeSetIt != nodeSet.end(); nodeSetIt++ ) {
-    const SMDS_MeshNode* node = cast2Node(*nodeSetIt);
-    if ( theSurface.IsNull() ) { // smooth in 3D
-      coord[0] += node->X();
-      coord[1] += node->Y();
-      coord[2] += node->Z();
-    }
-    else { // smooth in 2D
-      ASSERT( theUVMap.find( node ) != theUVMap.end() );
-      gp_XY* uv = theUVMap[ node ];
-      coord[0] += uv->X();
-      coord[1] += uv->Y();
-    }
-  }
   int nbNodes = nodeSet.size();
   if ( !nbNodes )
     return;
+
   coord[0] /= nbNodes;
   coord[1] /= nbNodes;
 
@@ -3613,7 +3946,7 @@ void laplacianSmooth(const SMDS_MeshNode*                 theNode,
     gp_Pnt p3d = theSurface->Value( coord[0], coord[1] );
     coord[0] = p3d.X();
     coord[1] = p3d.Y();
-    coord[2] = p3d.Z();
+    coord[2] = p3d.Z();    
   }
   else
     coord[2] /= nbNodes;
@@ -3623,6 +3956,72 @@ void laplacianSmooth(const SMDS_MeshNode*                 theNode,
   const_cast< SMDS_MeshNode* >( theNode )->setXYZ(coord[0],coord[1],coord[2]);
 }
 
+//=======================================================================
+//function : correctTheValue
+//purpose  : Given a boundaries of parametric space determine if the node coordinate (u,v) need correction 
+//            based on the reference coordinate (uref,vref)
+//=======================================================================
+void correctTheValue( Standard_Real Umax, Standard_Real Umin, Standard_Real Vmax, Standard_Real Vmin, 
+                        Standard_Real uref, Standard_Real vref, Standard_Real &u, Standard_Real &v  )
+{
+  bool isUTobeCorrected = (std::fabs( uref - u ) >= 0.7 * std::fabs( Umax - Umin ));
+  bool isVTobeCorrected = (std::fabs( vref - v ) >= 0.7 * std::fabs( Vmax - Vmin ));
+  if ( isUTobeCorrected )
+    u = std::fabs(u-Umin) < 1e-7 ? Umax : Umin;            
+  if ( isVTobeCorrected )
+    v = std::fabs(v-Vmin) < 1e-7 ? Vmax : Vmin;
+}
+
+//=======================================================================
+//function : averageByElement
+//purpose  : Auxiliar function to treat properly nodes in periodic faces in the centroidal smoother
+//=======================================================================
+void averageByElement( const Handle(Geom_Surface)& theSurface, const SMDS_MeshNode* refNode, const SMDS_MeshElement* elem,
+                        map< const SMDS_MeshNode*, gp_XY* >& theUVMap, SMESH::Controls::TSequenceOfXYZ& aNodePoints, 
+                        gp_XYZ& elemCenter )
+{
+  int nn = elem->NbNodes();
+  if(elem->IsQuadratic()) nn = nn/2;
+  int i=0;
+  SMDS_ElemIteratorPtr itN = elem->nodesIterator();
+  Standard_Real Umin,Umax,Vmin,Vmax;
+  while ( i<nn ) 
+  {
+    const SMDS_MeshNode* aNode = static_cast<const SMDS_MeshNode*>( itN->next() );
+    i++;
+    gp_XYZ aP( aNode->X(), aNode->Y(), aNode->Z() );
+    aNodePoints.push_back( aP );
+    if ( !theSurface.IsNull() ) // smooth in 2D
+    { 
+      ASSERT( theUVMap.find( aNode ) != theUVMap.end() );
+      gp_XY* uv = theUVMap[ aNode ];
+
+      if ( theSurface->IsUPeriodic() || theSurface->IsVPeriodic() )  
+      {  
+        theSurface->Bounds( Umin, Umax, Vmin, Vmax );
+        Standard_Real u          = uv->X();
+        Standard_Real v          = uv->Y();   
+        bool isSingularPoint     = std::fabs(u - Umin) < 1e-7 || std::fabs(v - Vmin) < 1e-7 || std::fabs(u - Umax) < 1e-7 || std::fabs( v - Vmax ) < 1e-7;
+        if ( !isSingularPoint )
+        {
+          aP.SetCoord( uv->X(), uv->Y(), 0. );
+        }
+        else
+        {
+          gp_XY* refPoint = theUVMap[ refNode ];
+          Standard_Real uref = refPoint->X();
+          Standard_Real vref = refPoint->Y();
+          correctTheValue( Umax, Umin, Vmax, Vmin, uref, vref, u, v ); 
+          aP.SetCoord( u, v, 0. );
+        }        
+      }
+      else
+        aP.SetCoord( uv->X(), uv->Y(), 0. );
+    }    
+    elemCenter += aP;   
+  }
+}
+
 //=======================================================================
 //function : centroidalSmooth
 //purpose  : pulls theNode toward the element-area-weighted centroid of the
@@ -3637,48 +4036,46 @@ void centroidalSmooth(const SMDS_MeshNode*                 theNode,
   SMESH::Controls::Area anAreaFunc;
   double totalArea = 0.;
   int nbElems = 0;
-
   // compute new XYZ
-
+  bool notToMoveNode = false;
+  // Do not correct singular nodes
+  if ( !theSurface.IsNull() && (theSurface->IsUPeriodic() || theSurface->IsVPeriodic()) )
+  { 
+    Standard_Real Umin,Umax,Vmin,Vmax;
+    theSurface->Bounds( Umin, Umax, Vmin, Vmax );
+    gp_XY* uv = theUVMap[ theNode ];
+    Standard_Real u = uv->X();
+    Standard_Real v = uv->Y();   
+    notToMoveNode = std::fabs(u - Umin) < 1e-7 || std::fabs(v - Vmin) < 1e-7 || std::fabs(u - Umax) < 1e-7 || std::fabs( v - Vmax ) < 1e-7;
+  }
+  
   SMDS_ElemIteratorPtr elemIt = theNode->GetInverseElementIterator(SMDSAbs_Face);
-  while ( elemIt->more() )
+  while ( elemIt->more() && !notToMoveNode )
   {
     const SMDS_MeshElement* elem = elemIt->next();
     nbElems++;
 
     gp_XYZ elemCenter(0.,0.,0.);
     SMESH::Controls::TSequenceOfXYZ aNodePoints;
-    SMDS_ElemIteratorPtr itN = elem->nodesIterator();
     int nn = elem->NbNodes();
     if(elem->IsQuadratic()) nn = nn/2;
-    int i=0;
-    //while ( itN->more() ) {
-    while ( i<nn ) {
-      const SMDS_MeshNode* aNode = static_cast<const SMDS_MeshNode*>( itN->next() );
-      i++;
-      gp_XYZ aP( aNode->X(), aNode->Y(), aNode->Z() );
-      aNodePoints.push_back( aP );
-      if ( !theSurface.IsNull() ) { // smooth in 2D
-        ASSERT( theUVMap.find( aNode ) != theUVMap.end() );
-        gp_XY* uv = theUVMap[ aNode ];
-        aP.SetCoord( uv->X(), uv->Y(), 0. );
-      }
-      elemCenter += aP;
-    }
+    averageByElement( theSurface, theNode, elem, theUVMap, aNodePoints, elemCenter );
+
     double elemArea = anAreaFunc.GetValue( aNodePoints );
     totalArea += elemArea;
     elemCenter /= nn;
     aNewXYZ += elemCenter * elemArea;
   }
   aNewXYZ /= totalArea;
-  if ( !theSurface.IsNull() ) {
+  
+  if ( !theSurface.IsNull() && !notToMoveNode ) {
     theUVMap[ theNode ]->SetCoord( aNewXYZ.X(), aNewXYZ.Y() );
     aNewXYZ = theSurface->Value( aNewXYZ.X(), aNewXYZ.Y() ).XYZ();
   }
 
   // move node
-
-  const_cast< SMDS_MeshNode* >( theNode )->setXYZ(aNewXYZ.X(),aNewXYZ.Y(),aNewXYZ.Z());
+  if ( !notToMoveNode )
+    const_cast< SMDS_MeshNode* >( theNode )->setXYZ(aNewXYZ.X(),aNewXYZ.Y(),aNewXYZ.Z());
 }
 
 //=======================================================================
@@ -3981,7 +4378,8 @@ void SMESH_MeshEditor::Smooth (TIDSortedElemSet &          theElems,
         if ( !BRep_Tool::IsClosed( edge, face ))
           continue;
         SMESHDS_SubMesh* sm = aMesh->MeshElements( edge );
-        if ( !sm ) continue;
+        if ( !sm )
+          continue;
         // find out which parameter varies for a node on seam
         double f,l;
         gp_Pnt2d uv1, uv2;
@@ -4355,7 +4753,7 @@ void SMESH_MeshEditor::sweepElement(const SMDS_MeshElement*               elem,
         std::swap( itNN[0],    itNN[1] );
         std::swap( prevNod[0], prevNod[1] );
         std::swap( nextNod[0], nextNod[1] );
-        std::swap( isSingleNode[0], isSingleNode[1] );
+       std::vector<bool>::swap(isSingleNode[0], isSingleNode[1]);
         if ( nbSame > 0 )
           sames[0] = 1 - sames[0];
         iNotSameNode = 1 - iNotSameNode;
@@ -4938,13 +5336,12 @@ void SMESH_MeshEditor::makeWalls (TNodeOfNodeListMap &     mapNewNodes,
               srcEdges.push_back(aMesh->FindEdge (commonNodes[0],commonNodes[1],commonNodes[2]));
             else
               srcEdges.push_back(aMesh->FindEdge (commonNodes[0],commonNodes[1]));
-#ifdef _DEBUG_
-            if ( !srcEdges.back() )
+
+            if (SALOME::VerbosityActivated() && !srcEdges.back())
             {
               cout << "SMESH_MeshEditor::makeWalls(), no source edge found for a free face #"
-                   << iF << " of volume #" << vTool.ID() << endl;
+                  << iF << " of volume #" << vTool.ID() << endl;
             }
-#endif
           }
         }
         if ( freeInd.empty() )
@@ -6535,9 +6932,8 @@ SMESH_MeshEditor::PGroupIDs SMESH_MeshEditor::Offset( TIDSortedElemSet & theElem
   for ( size_t i = 0; i < new2OldNodes.size(); ++i )
     if ( const SMDS_MeshNode* n = new2OldNodes[ i ].first )
     {
-#ifndef _DEBUG_
-      if ( n->NbInverseElements() > 0 )
-#endif
+
+      if (!SALOME::VerbosityActivated() || n->NbInverseElements() > 0 )
       {
         const SMDS_MeshNode* n2 =
           tgtMeshDS->AddNodeWithID( n->X(), n->Y(), n->Z(), idShift + n->GetID() );
@@ -7000,6 +7396,7 @@ void SMESH_MeshEditor::MergeNodes (TListOfListOfNodes & theGroupsOfNodes,
   {
     const SMDS_MeshElement* elem = *eIt;
     SMESHDS_SubMesh*          sm = mesh->MeshElements( elem->getshapeId() );
+    bool                 marked = elem->isMarked();
 
     bool keepElem = applyMerge( elem, newElemDefs, nodeNodeMap, /*noHoles=*/false );
     if ( !keepElem )
@@ -7036,6 +7433,8 @@ void SMESH_MeshEditor::MergeNodes (TListOfListOfNodes & theGroupsOfNodes,
           sm->AddElement( newElem );
         if ( elem != newElem )
           ReplaceElemInGroups( elem, newElem, mesh );
+        if ( marked && newElem )
+          newElem->setIsMarked( true );
       }
     }
   }
@@ -12527,7 +12926,8 @@ int SMESH_MeshEditor::MakeBoundaryMesh(const TIDSortedElemSet& elements,
                                        bool                    toCopyElements/*=false*/,
                                        bool                    toCopyExistingBoundary/*=false*/,
                                        bool                    toAddExistingBondary/*= false*/,
-                                       bool                    aroundElements/*= false*/)
+                                       bool                    aroundElements/*= false*/,
+                                       bool                    toCreateAllElements/*= false*/)
 {
   SMDSAbs_ElementType missType = (dimension == BND_2DFROM3D) ? SMDSAbs_Face : SMDSAbs_Edge;
   SMDSAbs_ElementType elemType = (dimension == BND_1DFROM2D) ? SMDSAbs_Face : SMDSAbs_Volume;
@@ -12546,7 +12946,6 @@ int SMESH_MeshEditor::MakeBoundaryMesh(const TIDSortedElemSet& elements,
   SMESH_MeshEditor* presentEditor;
   SMESH_MeshEditor tgtEditor2( tgtEditor.GetMesh() );
   presentEditor = toAddExistingBondary ? &tgtEditor : &tgtEditor2;
-
   SMESH_MesherHelper helper( *myMesh );
   const TopAbs_ShapeEnum missShapeType = ( missType==SMDSAbs_Face ? TopAbs_FACE : TopAbs_EDGE );
   SMDS_VolumeTool vTool;
@@ -12584,8 +12983,9 @@ int SMESH_MeshEditor::MakeBoundaryMesh(const TIDSortedElemSet& elements,
       const SMDS_MeshElement* otherVol = 0;
       for ( int iface = 0, n = vTool.NbFaces(); iface < n; iface++ )
       {
-        if ( !vTool.IsFreeFace(iface, &otherVol) &&
-             ( !aroundElements || elements.count( otherVol )))
+        if ( !toCreateAllElements && 
+              !vTool.IsFreeFace(iface, &otherVol) &&
+                ( !aroundElements || elements.count( otherVol )))
           continue;
         freeFacets.push_back( iface );
       }
index 6962f2c2db4d14a56b03c023cd78cc71f36d6686..8d253a45f34734c5400060795035bf7f86a37453 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -126,6 +126,10 @@ public:
    */
   SMDS_MeshElement* AddElement(const std::vector<smIdType> & nodeIDs,
                                const ElemFeatures&           features);
+  /*!
+   * \brief Remove a node and fill a hole appeared by changing surrounding faces
+   */
+  void RemoveNodeWithReconnection( const SMDS_MeshNode* node );
 
   smIdType Remove (const std::list< smIdType >& theElemIDs, const bool isNodes);
   // Remove a node or an element.
@@ -155,6 +159,20 @@ public:
   // with a quadrangle built on the same 4 nodes.
   // Return false if proper faces not found
 
+  void SplitEdge (const SMDS_MeshNode * theNode1,
+                  const SMDS_MeshNode * theNode2,
+                  double                thePosition);
+  // Replace each triangle bound by theNode1-theNode2 link
+  // with two triangles by connecting a node made on the link with a node opposite to the link.
+
+  void SplitFace (const SMDS_MeshElement * theFace,
+                  double                   theX,
+                  double                   theY,
+                  double                   theZ );
+  // Split a face into triangles each formed by two nodes of the face and a new node added
+  // at the given coordinates.
+
+
   bool Reorient (const SMDS_MeshElement * theElement);
   // Reverse theElement orientation
 
@@ -730,7 +748,8 @@ public:
                        bool                    toCopyElements = false,
                        bool                    toCopyExistingBondary = false,
                        bool                    toAddExistingBondary = false,
-                       bool                    aroundElements = false);
+                       bool                    aroundElements = false,
+                       bool                    toCreateAllElements= false);
 
  private:
 
diff --git a/src/SMESH/SMESH_MeshLocker.cxx b/src/SMESH/SMESH_MeshLocker.cxx
new file mode 100644 (file)
index 0000000..42ad8c4
--- /dev/null
@@ -0,0 +1,46 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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_MeshLocker.cxx
+//  Author : Yoann AUDOUIN, EDF
+//  Module : SMESH
+//
+
+#include "SMESH_MeshLocker.hxx"
+
+#include "SMESH_Mesh.hxx"
+
+/*
+ * When instanced will run the command Lock from a SMESH_Mesh
+ */
+SMESH_MeshLocker::SMESH_MeshLocker(SMESH_Mesh * aMesh) : _myMesh(aMesh)
+{
+  _myMesh->Lock();
+}
+
+/*
+ * When freed will run the command Unlock from the SMESH_Mesh associated
+ */
+SMESH_MeshLocker::~SMESH_MeshLocker()
+{
+  _myMesh->Unlock();
+}
diff --git a/src/SMESH/SMESH_MeshLocker.hxx b/src/SMESH/SMESH_MeshLocker.hxx
new file mode 100644 (file)
index 0000000..2b5e814
--- /dev/null
@@ -0,0 +1,45 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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_Mesh.hxx
+//  Author : Paul RASCLE, EDF
+//  Module : SMESH
+//
+#ifndef _SMESH_MESHLOCKER_HXX_
+#define _SMESH_MESHLOCKER_HXX_
+#include "SMESH_SMESH.hxx"
+
+class SMESH_Mesh;
+
+class SMESH_EXPORT SMESH_MeshLocker{
+public:
+  SMESH_MeshLocker(SMESH_Mesh * aMesh);
+  ~SMESH_MeshLocker();
+
+protected:
+  SMESH_MeshLocker();
+
+private:
+  SMESH_Mesh * _myMesh=nullptr;
+};
+
+#endif
index 1dcc5b0643e4ab8d4ee4c92bc88166964dd5e5ca..1be97fb72763ae21a0d01f134bd2799f431425ca 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -28,7 +28,7 @@
 
 #include "SMDS_EdgePosition.hxx"
 #include "SMDS_FaceOfNodes.hxx"
-#include "SMDS_FacePosition.hxx" 
+#include "SMDS_FacePosition.hxx"
 #include "SMDS_IteratorOnIterators.hxx"
 #include "SMDS_VolumeTool.hxx"
 #include "SMESHDS_Mesh.hxx"
@@ -51,6 +51,7 @@
 #include <Geom_RectangularTrimmedSurface.hxx>
 #include <Geom_Surface.hxx>
 #include <ShapeAnalysis.hxx>
+#include <ShapeAnalysis_Curve.hxx>
 #include <TopExp.hxx>
 #include <TopExp_Explorer.hxx>
 #include <TopTools_ListIteratorOfListOfShape.hxx>
@@ -99,7 +100,7 @@ SMESH_MesherHelper::SMESH_MesherHelper(SMESH_Mesh& theMesh)
 
 //=======================================================================
 //function : ~SMESH_MesherHelper
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 SMESH_MesherHelper::~SMESH_MesherHelper()
@@ -424,7 +425,7 @@ bool SMESH_MesherHelper::GetNodeUVneedInFaceNode(const TopoDS_Face& F) const
 
 //=======================================================================
 //function : IsMedium
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 bool SMESH_MesherHelper::IsMedium(const SMDS_MeshNode*      node,
@@ -582,7 +583,7 @@ bool SMESH_MesherHelper::toCheckPosOnShape(int shapeID ) const
 
 void SMESH_MesherHelper::setPosOnShapeValidity(int shapeID, bool ok ) const
 {
-  std::map< int,bool >::iterator sh_ok = 
+  std::map< int,bool >::iterator sh_ok =
     ((SMESH_MesherHelper*)this)->myNodePosShapesValidity.insert( make_pair( shapeID, ok)).first;
   if ( !ok )
     sh_ok->second = ok;
@@ -590,7 +591,7 @@ void SMESH_MesherHelper::setPosOnShapeValidity(int shapeID, bool ok ) const
 
 //=======================================================================
 //function : ToFixNodeParameters
-//purpose  : Enables fixing node parameters on EDGEs and FACEs in 
+//purpose  : Enables fixing node parameters on EDGEs and FACEs in
 //           GetNodeU(...,check=true), GetNodeUV(...,check=true), CheckNodeUV() and
 //           CheckNodeU() in case if a node lies on a shape set via SetSubShape().
 //           Default is False
@@ -875,6 +876,51 @@ GeomAPI_ProjectPointOnSurf& SMESH_MesherHelper::GetProjector(const TopoDS_Face&
   return *( i_proj->second );
 }
 
+//=======================================================================
+//function : GetProjector
+//purpose  : Return projector initialized by given face, which is returned
+//=======================================================================
+
+GeomAPI_ProjectPointOnSurf& SMESH_MesherHelper::GetProjector(const TopoDS_Face& F,
+                                                             double             tol ) const
+{
+  Handle(Geom_Surface) surface = BRep_Tool::Surface( F );
+  int faceID = GetMeshDS()->ShapeToIndex( F );
+  TID2ProjectorOnSurf& i2proj = const_cast< TID2ProjectorOnSurf&>( myFace2Projector );
+  TID2ProjectorOnSurf::iterator i_proj = i2proj.find( faceID );
+  if ( i_proj == i2proj.end() )
+  {
+    if ( tol == 0 ) tol = BRep_Tool::Tolerance( F );
+    double U1, U2, V1, V2;
+    surface->Bounds(U1, U2, V1, V2);
+    GeomAPI_ProjectPointOnSurf* proj = new GeomAPI_ProjectPointOnSurf();
+    proj->Init( surface, U1, U2, V1, V2, tol );
+    i_proj = i2proj.insert( make_pair( faceID, proj )).first;
+  }
+  return *( i_proj->second );
+}
+
+//=======================================================================
+//function : GetPCProjector
+//purpose  : Return projector initialized by given EDGE
+//=======================================================================
+
+GeomAPI_ProjectPointOnCurve& SMESH_MesherHelper::GetPCProjector(const TopoDS_Edge& E ) const
+{
+  int edgeID = GetMeshDS()->ShapeToIndex( E );
+  TID2ProjectorOnCurve& i2proj = const_cast< TID2ProjectorOnCurve&>( myEdge2Projector );
+  TID2ProjectorOnCurve::iterator i_proj = i2proj.insert( make_pair( edgeID, nullptr )).first;
+  if ( !i_proj->second  )
+  {
+    double f,l;
+    Handle(Geom_Curve) curve = BRep_Tool::Curve( E,f,l );
+    i_proj->second = new GeomAPI_ProjectPointOnCurve();
+    i_proj->second->Init( curve, f, l );
+  }
+  GeomAPI_ProjectPointOnCurve* projector = i_proj->second;
+  return *projector;
+}
+
 //=======================================================================
 //function : GetSurface
 //purpose  : Return a cached ShapeAnalysis_Surface of a FACE
@@ -897,7 +943,7 @@ namespace
 {
   gp_XY AverageUV(const gp_XY& uv1, const gp_XY& uv2) { return ( uv1 + uv2 ) / 2.; }
   gp_XY_FunPtr(Added); // define gp_XY_Added pointer to function calling gp_XY::Added(gp_XY)
-  gp_XY_FunPtr(Subtracted); 
+  gp_XY_FunPtr(Subtracted);
 }
 
 //=======================================================================
@@ -921,9 +967,9 @@ gp_XY SMESH_MesherHelper::ApplyIn2D(Handle(Geom_Surface) surface,
     return fun(uv1,uv2);
 
   // move uv2 not far than half-period from uv1
-  double u2 = 
+  double u2 =
     uv2.X()+(isUPeriodic ? ShapeAnalysis::AdjustByPeriod(uv2.X(),uv1.X(),surface->UPeriod()) :0);
-  double v2 = 
+  double v2 =
     uv2.Y()+(isVPeriodic ? ShapeAnalysis::AdjustByPeriod(uv2.Y(),uv1.Y(),surface->VPeriod()) :0);
 
   // execute operation
@@ -992,8 +1038,8 @@ gp_XY SMESH_MesherHelper::GetMiddleUV(const Handle(Geom_Surface)& surface,
 //=======================================================================
 
 gp_XY SMESH_MesherHelper::GetCenterUV(const gp_XY& uv1,
-                                      const gp_XY& uv2, 
-                                      const gp_XY& uv3, 
+                                      const gp_XY& uv2,
+                                      const gp_XY& uv3,
                                       const gp_XY& uv12,
                                       const gp_XY& uv23,
                                       const gp_XY& uv31,
@@ -1121,27 +1167,17 @@ bool SMESH_MesherHelper::CheckNodeU(const TopoDS_Edge&   E,
       {
         setPosOnShapeValidity( shapeID, false );
         // u incorrect, project the node to the curve
-        int edgeID = GetMeshDS()->ShapeToIndex( E );
-        TID2ProjectorOnCurve& i2proj = const_cast< TID2ProjectorOnCurve&>( myEdge2Projector );
-        TID2ProjectorOnCurve::iterator i_proj =
-          i2proj.insert( make_pair( edgeID, (GeomAPI_ProjectPointOnCurve*) 0 )).first;
-        if ( !i_proj->second  )
-        {
-          i_proj->second = new GeomAPI_ProjectPointOnCurve();
-          i_proj->second->Init( curve, f, l );
-        }
-        GeomAPI_ProjectPointOnCurve* projector = i_proj->second;
-        projector->Perform( nodePnt );
-        if ( projector->NbPoints() < 1 )
-        {
-          MESSAGE( "SMESH_MesherHelper::CheckNodeU() failed to project" );
-          return false;
-        }
-        Standard_Real U = projector->LowerDistanceParameter();
-        u = double( U );
-        curvPnt = curve->Value( u );
-        dist = nodePnt.Distance( curvPnt );
+        //GeomAPI_ProjectPointOnCurve& projector = GetPCProjector( E ); -- bug in OCCT-7.5.3p1
+        GeomAdaptor_Curve curveAd( curve, f, l );
+        ShapeAnalysis_Curve projector;
+        dist = projector.Project( curveAd, nodePnt, tol, curvPnt, u, false );
+        // if ( projector.NbPoints() < 1 )
+        // {
+        //   MESSAGE( "SMESH_MesherHelper::CheckNodeU() failed to project" );
+        //   return false;
+        // }
         if ( distXYZ ) {
+          curvPnt = curve->Value( u );
           curvPnt.Transform( loc );
           distXYZ[0] = dist;
           distXYZ[1] = curvPnt.X(); distXYZ[2] = curvPnt.Y(); distXYZ[3]=curvPnt.Z();
@@ -1154,7 +1190,7 @@ bool SMESH_MesherHelper::CheckNodeU(const TopoDS_Edge&   E,
         // store the fixed U on the edge
         if ( myShape.IsSame(E) && shapeID == myShapeID && myFixNodeParameters )
           const_cast<SMDS_MeshNode*>(n)->SetPosition
-            ( SMDS_PositionPtr( new SMDS_EdgePosition( U )));
+            ( SMDS_PositionPtr( new SMDS_EdgePosition( u )));
       }
       else if ( fabs( u ) > numeric_limits<double>::min() )
       {
@@ -1334,7 +1370,7 @@ const SMDS_MeshNode* SMESH_MesherHelper::GetCentralNode(const SMDS_MeshNode* n1,
   TBiQuad keyOfMap(n1,n2,n3,n4);
   std::map<TBiQuad, const SMDS_MeshNode* >::iterator itMapCentralNode;
   itMapCentralNode = myMapWithCentralNode.find( keyOfMap );
-  if ( itMapCentralNode != myMapWithCentralNode.end() ) 
+  if ( itMapCentralNode != myMapWithCentralNode.end() )
   {
     return (*itMapCentralNode).second;
   }
@@ -1349,9 +1385,9 @@ const SMDS_MeshNode* SMESH_MesherHelper::GetCentralNode(const SMDS_MeshNode* n1,
 
   std::map< int, int > faceId2nbNodes;
   std::map< int, int > ::iterator itMapWithIdFace;
-  
+
   SMESHDS_Mesh* meshDS = GetMeshDS();
-  
+
   // check if a face lies on a FACE, i.e. its all corner nodes lie either on the FACE or
   // on sub-shapes of the FACE
   if ( GetMesh()->HasShapeToMesh() )
@@ -1509,7 +1545,7 @@ const SMDS_MeshNode* SMESH_MesherHelper::GetCentralNode(const SMDS_MeshNode* n1,
   TBiQuad keyOfMap(n1,n2,n3);
   std::map<TBiQuad, const SMDS_MeshNode* >::iterator itMapCentralNode;
   itMapCentralNode = myMapWithCentralNode.find( keyOfMap );
-  if ( itMapCentralNode != myMapWithCentralNode.end() ) 
+  if ( itMapCentralNode != myMapWithCentralNode.end() )
   {
     return (*itMapCentralNode).second;
   }
@@ -1524,9 +1560,9 @@ const SMDS_MeshNode* SMESH_MesherHelper::GetCentralNode(const SMDS_MeshNode* n1,
 
   std::map< int, int > faceId2nbNodes;
   std::map< int, int > ::iterator itMapWithIdFace;
-  
+
   SMESHDS_Mesh* meshDS = GetMeshDS();
-  
+
   // check if a face lies on a FACE, i.e. its all corner nodes lie either on the FACE or
   // on sub-shapes of the FACE
   if ( GetMesh()->HasShapeToMesh() )
@@ -1968,7 +2004,7 @@ SMDS_MeshEdge* SMESH_MesherHelper::AddEdge(const SMDS_MeshNode* n1,
                                            const bool           force3d)
 {
   SMESHDS_Mesh * meshDS = GetMeshDS();
-  
+
   SMDS_MeshEdge* edge = 0;
   if (myCreateQuadratic) {
     const SMDS_MeshNode* n12 = GetMediumNode(n1,n2,force3d);
@@ -2431,7 +2467,7 @@ SMDS_MeshVolume* SMESH_MesherHelper::AddVolume(const SMDS_MeshNode* n1,
                                                const SMDS_MeshNode* n10,
                                                const SMDS_MeshNode* n11,
                                                const SMDS_MeshNode* n12,
-                                               const smIdType id, 
+                                               const smIdType id,
                                                bool /*force3d*/)
 {
   SMESHDS_Mesh * meshDS = GetMeshDS();
@@ -3170,7 +3206,7 @@ bool SMESH_MesherHelper::IsSubShape( const TopoDS_Shape& shape,
 
 //=======================================================================
 //function : IsSubShape
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 bool SMESH_MesherHelper::IsSubShape( const TopoDS_Shape& shape, SMESH_Mesh* aMesh )
@@ -3185,7 +3221,7 @@ bool SMESH_MesherHelper::IsSubShape( const TopoDS_Shape& shape, SMESH_Mesh* aMes
 
 //=======================================================================
 //function : IsBlock
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 bool SMESH_MesherHelper::IsBlock( const TopoDS_Shape& shape )
@@ -3287,9 +3323,7 @@ double SMESH_MesherHelper::GetAngle( const TopoDS_Edge &   theE1,
       vecRef = du ^ dv;
       if ( ++nbLoops > 10 )
       {
-#ifdef _DEBUG_
-        cout << "SMESH_MesherHelper::GetAngle(): Captured in a sigularity" << endl;
-#endif
+        MESSAGE("SMESH_MesherHelper::GetAngle(): Captured in a singularity");
         return angle;
       }
     }
@@ -3368,7 +3402,7 @@ TopoDS_Vertex SMESH_MesherHelper::IthVertex( const bool  is2nd,
 
 //================================================================================
 /*!
- * \brief Return type of shape contained in a group 
+ * \brief Return type of shape contained in a group
  *  \param group - a shape of type TopAbs_COMPOUND
  *  \param avoidCompound - not to return TopAbs_COMPOUND
  */
@@ -3428,13 +3462,13 @@ SMESH_MesherHelper:: MType SMESH_MesherHelper::IsQuadraticMesh()
   NbAllEdgsAndFaces = myMesh->NbEdges() + myMesh->NbFaces();
   if ( NbAllEdgsAndFaces == 0 )
     return SMESH_MesherHelper::LINEAR;
-  
+
   //Quadratic faces and edges
   NbQuadFacesAndEdgs = myMesh->NbEdges(ORDER_QUADRATIC) + myMesh->NbFaces(ORDER_QUADRATIC);
 
   //Linear faces and edges
   NbFacesAndEdges = myMesh->NbEdges(ORDER_LINEAR) + myMesh->NbFaces(ORDER_LINEAR);
-  
+
   if (NbAllEdgsAndFaces == NbQuadFacesAndEdgs) {
     //Quadratic mesh
     return SMESH_MesherHelper::QUADRATIC;
@@ -3709,9 +3743,7 @@ namespace { // Structures used by FixQuadraticElements()
     mutable vector< const QLink* >  _sides;
     mutable bool                    _sideIsAdded[4]; // added in chain of links
     gp_Vec                          _normal;
-#ifdef _DEBUG_
     mutable const SMDS_MeshElement* _face;
-#endif
 
     QFace( const vector< const QLink*>& links, const SMDS_MeshElement* face=0 );
 
@@ -3825,11 +3857,8 @@ namespace { // Structures used by FixQuadraticElements()
     else
       _normal.SetCoord(1e-33,0,0);
 
-#ifdef _DEBUG_
-    _face = face;
-#else
-    (void)face; // unused in release mode
-#endif
+    if (SALOME::VerbosityActivated())
+      _face = face;
   }
   //================================================================================
   /*!
@@ -4084,7 +4113,7 @@ namespace { // Structures used by FixQuadraticElements()
       }
     }
     else if ( _sides.size() < 4 )
-      return thePrevLen;      
+      return thePrevLen;
 
     // propagate to adjacent faces till limit step or boundary
     double len1 = thePrevLen + (theLink->MiddlePnt() - _sides[iL1]->MiddlePnt()).Modulus();
@@ -4174,7 +4203,7 @@ namespace { // Structures used by FixQuadraticElements()
   void QLink::SetContinuesFaces() const
   {
     //       x0         x - QLink, [-|] - QFace, v - volume
-    //   v0  |   v1   
+    //   v0  |   v1
     //       |          Between _faces of link x2 two vertical faces are continues
     // x1----x2-----x3  and two horizontal faces are continues. We set vertical faces
     //       |          to _faces[0] and _faces[1] and horizontal faces to
@@ -4281,7 +4310,7 @@ namespace { // Structures used by FixQuadraticElements()
     }
     return isStraight;
   }
-  
+
   //================================================================================
   /*!
    * \brief Move medium nodes of vertical links of pentahedrons adjacent by side faces
@@ -4410,13 +4439,13 @@ namespace { // Structures used by FixQuadraticElements()
     while ( startLink != linksEnd) // loop on columns
     {
       // We suppose we have a rectangular structure like shown here. We have found a
-      //               corner of the rectangle (startCorner) and a boundary link sharing  
-      //    |/  |/  |  the startCorner (startLink). We are going to loop on rows of the   
-      //  --o---o---o  structure making several chains at once. One chain (columnChain)   
-      //    |\  |  /|  starts at startLink and continues upward (we look at the structure 
-      //  \ | \ | / |  from such point that startLink is on the bottom of the structure). 
-      //   \|  \|/  |  While going upward we also fill horizontal chains (rowChains) we   
-      //  --o---o---o  encounter.                                                         
+      //               corner of the rectangle (startCorner) and a boundary link sharing
+      //    |/  |/  |  the startCorner (startLink). We are going to loop on rows of the
+      //  --o---o---o  structure making several chains at once. One chain (columnChain)
+      //    |\  |  /|  starts at startLink and continues upward (we look at the structure
+      //  \ | \ | / |  from such point that startLink is on the bottom of the structure).
+      //   \|  \|/  |  While going upward we also fill horizontal chains (rowChains) we
+      //  --o---o---o  encounter.
       //   /|\  |\  |
       //  / | \ | \ |  startCorner
       //    |  \|  \|,'
@@ -4679,7 +4708,7 @@ namespace { // Structures used by FixQuadraticElements()
                 continue;
               gp_XYZ edgeDir  = SMESH_TNodeXYZ( nOnEdge[0] ) - SMESH_TNodeXYZ( nOnEdge[1] );
               gp_XYZ edgeNorm = faceNorm ^ edgeDir;
-              n = theHelper.GetMediumNode( nOnEdge[0], nOnEdge[1], true ); // find n, not create 
+              n = theHelper.GetMediumNode( nOnEdge[0], nOnEdge[1], true ); // find n, not create
               gp_XYZ pN0     = SMESH_TNodeXYZ( nOnEdge[0] );
               gp_XYZ pMedium = SMESH_TNodeXYZ( n );                   // on-edge node location
               gp_XYZ pFaceN  = SMESH_TNodeXYZ( nOnFace );             // on-face node location
@@ -4927,12 +4956,11 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError,
     if ( !myMesh->HasShapeToMesh() ) return;
     SetSubShape( myMesh->GetShapeToMesh() );
 
-#ifdef _DEBUG_
     int nbSolids = 0;
     TopTools_IndexedMapOfShape solids;
     TopExp::MapShapes(myShape,TopAbs_SOLID,solids);
     nbSolids = solids.Extent();
-#endif
+
     TopTools_MapOfShape faces; // faces not in solid or in not meshed solid
     for ( TopExp_Explorer f(myShape,TopAbs_FACE,TopAbs_SOLID); f.More(); f.Next() ) {
       faces.Add( f.Current() ); // not in solid
@@ -4943,27 +4971,39 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError,
           faces.Add( f.Current() ); // in not meshed solid
       }
       else { // fix nodes in the solid and its faces
-#ifdef _DEBUG_
         MSG("FIX SOLID " << nbSolids-- << " #" << GetMeshDS()->ShapeToIndex(s.Current()));
-#endif
+
         SMESH_MesherHelper h(*myMesh);
         h.SetSubShape( s.Current() );
         h.ToFixNodeParameters(true);
-        h.FixQuadraticElements( compError, false );
+        try {
+          OCC_CATCH_SIGNALS;
+          h.FixQuadraticElements( compError, false );
+        }
+        catch(...) {
+          if ( compError && compError->myComment.empty() )
+            compError->myComment = "SMESH_MesherHelper::FixQuadraticElements() failed";
+        }
       }
     }
     // fix nodes on geom faces
-#ifdef _DEBUG_
-    int nbfaces = nbSolids;
-    nbfaces = faces.Extent(); /*avoid "unused varianbles": */ nbfaces++, nbfaces--; 
-#endif
+
+    int nbfaces = faces.Extent();
+
     for ( TopTools_MapIteratorOfMapOfShape fIt( faces ); fIt.More(); fIt.Next() ) {
       MESSAGE("FIX FACE " << nbfaces-- << " #" << GetMeshDS()->ShapeToIndex(fIt.Key()));
       MSG("FIX FACE " << nbfaces-- << " #" << GetMeshDS()->ShapeToIndex(fIt.Key()));
       SMESH_MesherHelper h(*myMesh);
       h.SetSubShape( fIt.Key() );
       h.ToFixNodeParameters(true);
-      h.FixQuadraticElements( compError, true);
+      try {
+        OCC_CATCH_SIGNALS;
+        h.FixQuadraticElements( compError, true);
+      }
+      catch(...) {
+        if ( compError && compError->myComment.empty() )
+          compError->myComment = "SMESH_MesherHelper::FixQuadraticElements() failed";
+      }
     }
     //perf_print_all_meters(1);
     if ( compError && compError->myName == EDITERR_NO_MEDIUM_ON_GEOM )
@@ -5052,13 +5092,15 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError,
 //         hasRectFaces = hasRectFaces ||
 //           ( volTool.GetVolumeType() == SMDS_VolumeTool::QUAD_HEXA ||
 //             volTool.GetVolumeType() == SMDS_VolumeTool::QUAD_PENTA );
-#ifdef _DEBUG_
-        if ( nbN == 6 )
-          pFace->_face = GetMeshDS()->FindFace(faceNodes[0],faceNodes[2],faceNodes[4]);
-        else
-          pFace->_face = GetMeshDS()->FindFace(faceNodes[0],faceNodes[2],
-                                               faceNodes[4],faceNodes[6] );
-#endif
+
+        if (SALOME::VerbosityActivated())
+        {
+          if ( nbN == 6 )
+            pFace->_face = GetMeshDS()->FindFace(faceNodes[0],faceNodes[2],faceNodes[4]);
+          else
+            pFace->_face = GetMeshDS()->FindFace(faceNodes[0],faceNodes[2],
+                                                faceNodes[4],faceNodes[6] );
+        }
       }
       // collect pyramid apexes for further correction
       if ( vol->NbCornerNodes() == 5 )
@@ -5171,8 +5213,10 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError,
             while ( len < numeric_limits<double>::min() ) { // remove degenerated link
               if ( savedChain.empty() ) savedChain = chain;
               link1 = chain.erase( link1 );
-              if ( link1 == chain.end() )
+              if ( link1 == chain.end() ) {
+                link1 = --chain.end();
                 break;
+              }
               len = ((*link0)->MiddlePnt() - (*link1)->MiddlePnt()).Modulus();
             }
             chainLen += len;
@@ -5189,6 +5233,9 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError,
               linkPos.push_back( chainLen );
             }
           }
+          if ( chain.begin() == --chain.end() ) // chain.size() == 1
+            continue;
+
           gp_Vec move0 = chain.front()->_nodeMove;
           gp_Vec move1 = chain.back ()->_nodeMove;
 
@@ -5285,20 +5332,22 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError,
               move = gp_Vec( XYZ((*link1)->_mediumNode), newPnt.Transformed(loc) );
               if ( SMDS_FacePositionPtr nPos = (*link1)->_mediumNode->GetPosition())
                 nPos->SetParameters( newUV.X(), newUV.Y() );
-#ifdef _DEBUG_
-              if ( (XYZ((*link1)->node1()) - XYZ((*link1)->node2())).SquareModulus() <
-                   move.SquareMagnitude())
+
+              if (SALOME::VerbosityActivated())
               {
-                gp_XY uv0 = faceHlp.GetNodeUV( face, (*link0)->_mediumNode, 0, &checkUV );
-                gp_XY uv2 = faceHlp.GetNodeUV( face, (*link2)->_mediumNode, 0, &checkUV );
-                MSG( "TOO LONG MOVE \t" <<
-                     "uv0: "<<uv0.X()<<", "<<uv0.Y()<<" \t" <<
-                     "uv2: "<<uv2.X()<<", "<<uv2.Y()<<" \t" <<
-                     "uvOld: "<<oldUV.X()<<", "<<oldUV.Y()<<" \t" <<
-                     "newUV: "<<newUV.X()<<", "<<newUV.Y()<<" \t");
-                uv0.SetX( uv2.X() ); // avoid warning: variable set but not used
+                if ( (XYZ((*link1)->node1()) - XYZ((*link1)->node2())).SquareModulus() <
+                    move.SquareMagnitude())
+                {
+                  gp_XY uv0 = faceHlp.GetNodeUV( face, (*link0)->_mediumNode, 0, &checkUV );
+                  gp_XY uv2 = faceHlp.GetNodeUV( face, (*link2)->_mediumNode, 0, &checkUV );
+                  MSG( "TOO LONG MOVE \t" <<
+                      "uv0: "<<uv0.X()<<", "<<uv0.Y()<<" \t" <<
+                      "uv2: "<<uv2.X()<<", "<<uv2.Y()<<" \t" <<
+                      "uvOld: "<<oldUV.X()<<", "<<oldUV.Y()<<" \t" <<
+                      "newUV: "<<newUV.X()<<", "<<newUV.Y()<<" \t");
+                  uv0.SetX( uv2.X() ); // avoid warning: variable set but not used
+                }
               }
-#endif
               (*link1)->Move( move, /*sum=*/false, /*is2dFixed=*/true );
             }
             MSG( "Move " << (*link1)->_mediumNode->GetID() << " following "
@@ -5385,7 +5434,7 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError,
       {
         uv[ i ] = GetNodeUV( F, nodes[i], nodes[8], &checkUV );
         // as this method is used after mesh generation, UV of nodes is not
-        // updated according to bending links, so we update 
+        // updated according to bending links, so we update
         if ( i > 3 && nodes[i]->GetPosition()->GetTypeOfPosition() == SMDS_TOP_FACE )
           CheckNodeUV( F, nodes[i], uv[ i ], 2*tol, /*force=*/true );
       }
@@ -5420,7 +5469,7 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError,
       {
         uv[ i ] = GetNodeUV( F, nodes[i], nodes[(i+1)%3], &uvOK );
         // as this method is used after mesh generation, UV of nodes is not
-        // updated according to bending links, so we update 
+        // updated according to bending links, so we update
         if ( nodes[i]->GetPosition()->GetTypeOfPosition() == SMDS_TOP_FACE )
           CheckNodeUV( F, nodes[i], uv[ i ], 2*tol, /*force=*/true );
       }
@@ -5487,16 +5536,16 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError,
       pointsOnShapes[ SMESH_Block::ID_Ex11 ] = SMESH_TNodeXYZ( hexNodes[ 13 ] );
       pointsOnShapes[ SMESH_Block::ID_E0y1 ] = SMESH_TNodeXYZ( hexNodes[ 12 ] );
       pointsOnShapes[ SMESH_Block::ID_E1y1 ] = SMESH_TNodeXYZ( hexNodes[ 14 ] );
-      pointsOnShapes[ SMESH_Block::ID_E00z ] = SMESH_TNodeXYZ( hexNodes[ 16 ] );    
-      pointsOnShapes[ SMESH_Block::ID_E10z ] = SMESH_TNodeXYZ( hexNodes[ 19 ] );    
-      pointsOnShapes[ SMESH_Block::ID_E01z ] = SMESH_TNodeXYZ( hexNodes[ 17 ] );    
+      pointsOnShapes[ SMESH_Block::ID_E00z ] = SMESH_TNodeXYZ( hexNodes[ 16 ] );
+      pointsOnShapes[ SMESH_Block::ID_E10z ] = SMESH_TNodeXYZ( hexNodes[ 19 ] );
+      pointsOnShapes[ SMESH_Block::ID_E01z ] = SMESH_TNodeXYZ( hexNodes[ 17 ] );
       pointsOnShapes[ SMESH_Block::ID_E11z ] = SMESH_TNodeXYZ( hexNodes[ 18 ] );
 
       pointsOnShapes[ SMESH_Block::ID_Fxy0 ] = SMESH_TNodeXYZ( hexNodes[ 20 ] );
       pointsOnShapes[ SMESH_Block::ID_Fxy1 ] = SMESH_TNodeXYZ( hexNodes[ 25 ] );
-      pointsOnShapes[ SMESH_Block::ID_Fx0z ] = SMESH_TNodeXYZ( hexNodes[ 21 ] );   
-      pointsOnShapes[ SMESH_Block::ID_Fx1z ] = SMESH_TNodeXYZ( hexNodes[ 23 ] );   
-      pointsOnShapes[ SMESH_Block::ID_F0yz ] = SMESH_TNodeXYZ( hexNodes[ 24 ] );    
+      pointsOnShapes[ SMESH_Block::ID_Fx0z ] = SMESH_TNodeXYZ( hexNodes[ 21 ] );
+      pointsOnShapes[ SMESH_Block::ID_Fx1z ] = SMESH_TNodeXYZ( hexNodes[ 23 ] );
+      pointsOnShapes[ SMESH_Block::ID_F0yz ] = SMESH_TNodeXYZ( hexNodes[ 24 ] );
       pointsOnShapes[ SMESH_Block::ID_F1yz ] = SMESH_TNodeXYZ( hexNodes[ 22 ] );
 
       gp_XYZ nCenterParams(0.5, 0.5, 0.5), nCenterCoords;
@@ -5533,8 +5582,6 @@ void SMESH_MesherHelper::WriteShape(const TopoDS_Shape& s)
 {
   const char* name = "/tmp/shape.brep";
   BRepTools::Write( s, name );
-#ifdef _DEBUG_
-  std::cout << name << std::endl;
-#endif
+  MESSAGE(name);
 }
 
index 82d242ec2c741c424f114d0893bdfa2dfa978384..1dc0594f5064b2ed09f14b40c3a799685859d2d1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -554,11 +554,20 @@ public:
   bool GetNodeUVneedInFaceNode(const TopoDS_Face& F = TopoDS_Face()) const;
 
   /*!
-   * \brief Return projector initialized by given face without location, which is returned
+   * \brief Return projector initialized by given face without location
    */
   GeomAPI_ProjectPointOnSurf& GetProjector(const TopoDS_Face& F,
                                            TopLoc_Location&   loc,
-                                           double             tol=0 ) const; 
+                                           double             tol=0 ) const;
+  /*!
+   * \brief Return projector initialized by given face
+   */
+  GeomAPI_ProjectPointOnSurf& GetProjector(const TopoDS_Face& F,
+                                           double             tol=0 ) const;
+  /*!
+   * \brief Return projector initialized by given EDGE
+   */
+  GeomAPI_ProjectPointOnCurve& GetPCProjector(const TopoDS_Edge& E ) const;
   /*!
    * \brief Return a cached ShapeAnalysis_Surface of a FACE
    */
diff --git a/src/SMESH/SMESH_ParallelMesh.cxx b/src/SMESH/SMESH_ParallelMesh.cxx
new file mode 100644 (file)
index 0000000..9d61f6b
--- /dev/null
@@ -0,0 +1,202 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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_ParallelMesh.cxx
+//  Author : Yoann AUDOUIN, EDF
+//  Module : SMESH
+//
+#include "SMESH_ParallelMesh.hxx"
+
+#include "SMESH_Gen.hxx"
+
+#ifdef WIN32
+  #include <windows.h>
+#endif
+
+#include <boost/filesystem.hpp>
+namespace fs=boost::filesystem;
+
+#ifndef WIN32
+#include <boost/asio.hpp>
+#endif
+
+#include <utilities.h>
+
+SMESH_ParallelMesh::SMESH_ParallelMesh(int               theLocalId,
+                       SMESH_Gen*        theGen,
+                       bool              theIsEmbeddedMode,
+                       SMESHDS_Document* theDocument) :SMESH_Mesh(theLocalId,
+                                                                  theGen,
+                                                                  theIsEmbeddedMode,
+                                                                  theDocument)
+{
+  MESSAGE("SMESH_ParallelMesh::SMESH_ParallelMesh(int localId)");
+  CreateTmpFolder();
+};
+
+SMESH_ParallelMesh::~SMESH_ParallelMesh()
+{
+  cleanup();
+};
+
+void SMESH_ParallelMesh::cleanup()
+{
+  DeletePoolThreads();
+  if(!keepingTmpFolfer())
+  {
+    MESSAGE("Set SMESH_KEEP_TMP to > 0 to keep temporary folders")
+    DeleteTmpFolder();
+  }
+};
+
+//=============================================================================
+/*!
+ * \brief Checking if we should keep the temporary folder
+ *        They are kept if the variable SMESH_KEEP_TMP is set to higher than 0
+ */
+//=============================================================================
+bool SMESH_ParallelMesh::keepingTmpFolfer()
+{
+  const char* envVar = std::getenv("SMESH_KEEP_TMP");
+
+  if (envVar && (envVar[0] != '\0'))
+  {
+    try
+    {
+      const long long numValue = std::stoll(envVar);
+      return numValue > 0;
+    }
+    catch(const std::exception& e)
+    {
+      std::cerr << e.what() << '\n';
+    }
+  }
+
+  return false;
+};
+
+
+//=============================================================================
+/*!
+ * \brief Build folder for parallel computation
+ */
+//=============================================================================
+void SMESH_ParallelMesh::CreateTmpFolder()
+{
+  // Temporary folder that will be used by parallel computation
+  tmp_folder = fs::temp_directory_path()/fs::unique_path(fs::path("SMESH_%%%%-%%%%"));
+  fs::create_directories(tmp_folder);
+}
+//
+//=============================================================================
+/*!
+ * \brief Delete temporary folder used for parallel computation
+ */
+//=============================================================================
+void SMESH_ParallelMesh::DeleteTmpFolder()
+{
+    MESSAGE("Deleting temporary folder" << tmp_folder.string());
+    fs::remove_all(tmp_folder);
+}
+
+//=============================================================================
+/*!
+ * \brief Get the number of Threads to be used for the pool of Threads
+ */
+//=============================================================================
+int SMESH_ParallelMesh::GetPoolNbThreads()
+{
+  int nbThreads = -1;
+
+  if(_method == ParallelismMethod::MultiThread){
+    nbThreads = _NbThreads;
+  }else if( _method == ParallelismMethod::MultiNode){
+    //TODO: Check of that is the right way
+    nbThreads = std::max(_nbProc, _nbNode*_nbProcPerNode);
+  } else {
+    throw SALOME_Exception("Unknown method "+std::to_string(_method));
+  }
+
+  return nbThreads;
+}
+
+//=============================================================================
+/*!
+ * \brief Set Number of thread for multithread run
+ */
+//=============================================================================
+void SMESH_ParallelMesh::SetNbThreads(long nbThreads)
+{
+  if(nbThreads < 1)
+    throw SALOME_Exception("Number of threads should be higher than 1");
+  _NbThreads=nbThreads;
+};
+
+//=============================================================================
+/*!
+ * \brief Get the element associated to the dimension of the parallelism
+ */
+//=============================================================================
+int SMESH_ParallelMesh::GetParallelElement()
+{
+  if (_paraDim==2){
+    return TopAbs_FACE;
+  }else{
+    return TopAbs_SOLID;
+  }
+};
+
+//=============================================================================
+/*!
+ * \brief Get the element associated to the dimension of the parallelism
+ */
+//=============================================================================
+int SMESH_ParallelMesh::GetDumpElement()
+{
+  if (_paraDim==2){
+    return TopAbs_EDGE;
+  }else{
+    return TopAbs_FACE;
+  }
+};
+
+bool SMESH_ParallelMesh::ComputeSubMeshes(
+          SMESH_Gen* gen,
+          SMESH_Mesh & aMesh,
+          const TopoDS_Shape & aShape,
+          const ::MeshDimension       aDim,
+          TSetOfInt*                  aShapesId /*=0*/,
+          TopTools_IndexedMapOfShape* allowedSubShapes,
+          SMESH_subMesh::compute_event &computeEvent,
+          const bool includeSelf,
+          const bool complexShapeFirst,
+          const bool   aShapeOnly)
+{
+  InitPoolThreads();
+  return gen->parallelComputeSubMeshes(
+            aMesh, aShape, aDim,
+            aShapesId, allowedSubShapes,
+            computeEvent,
+            includeSelf,
+            complexShapeFirst,
+            aShapeOnly);
+}
diff --git a/src/SMESH/SMESH_ParallelMesh.hxx b/src/SMESH/SMESH_ParallelMesh.hxx
new file mode 100644 (file)
index 0000000..7a91d5b
--- /dev/null
@@ -0,0 +1,153 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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_ParallelMesh.hxx
+//  Author : Yoann AUDOUIN, EDF
+//  Module : SMESH
+//
+#ifndef _SMESH_PARALLELMESH_HXX_
+#define _SMESH_PARALLELMESH_HXX_
+
+#include "SMESH_Mesh.hxx"
+
+#ifndef WIN32
+#include <boost/asio.hpp>
+#endif
+
+#include "SMESH_Gen.hxx"
+#include "SMESH_subMesh.hxx"
+#ifdef WIN32
+#include <thread>
+#include <boost/filesystem.hpp>
+#endif
+enum ParallelismMethod {MultiThread, MultiNode};
+
+class SMESH_EXPORT SMESH_ParallelMesh: public SMESH_Mesh
+{
+ public:
+  SMESH_ParallelMesh(int               theLocalId,
+                       SMESH_Gen*        theGen,
+                       bool              theIsEmbeddedMode,
+                       SMESHDS_Document* theDocument);
+
+  ~SMESH_ParallelMesh();
+
+  // Locking mechanism
+  #ifndef WIN32
+  void Lock() override {_my_lock.lock();};
+  void Unlock() override {_my_lock.unlock();};
+  // We need to recreate the pool afterthe join
+  void wait() override {_pool->join(); DeletePoolThreads(); InitPoolThreads(); };
+  #endif
+
+  // Thread Pool
+#ifndef WIN32
+  void InitPoolThreads() {_pool = new boost::asio::thread_pool(GetPoolNbThreads());};
+  boost::asio::thread_pool* GetPool() {return _pool;};
+  void DeletePoolThreads() {delete _pool;};
+#else
+  void InitPoolThreads() {};
+  void* GetPool() {return NULL;};
+  void DeletePoolThreads(){};
+#endif
+
+  int GetPoolNbThreads();
+
+  // Temporary folder
+  bool keepingTmpFolfer();
+  void CreateTmpFolder();
+  void DeleteTmpFolder();
+  boost::filesystem::path GetTmpFolder() {return tmp_folder;};
+  void cleanup();
+
+  //
+  bool IsParallel() override {return true;};
+  int GetParallelElement() override;
+  int GetDumpElement();
+
+  // Parallelims paramaters
+  int GetParallelismMethod() {return _method;};
+  void SetParallelismMethod(int aMethod) {_method = aMethod;};
+
+  int GetParallelismDimension() {return _paraDim;};
+  void SetParallelismDimension(int aDim) {_paraDim = aDim;};
+
+  // Mutlithreading parameters
+  int GetNbThreads() {return _NbThreads;};
+  void SetNbThreads(long nbThreads);
+
+  // Multinode parameters
+  std::string GetResource() {return _resource;};
+  void SetResource(std::string aResource) {_resource = aResource;};
+
+  int GetNbProc() {return _nbProc;};
+  void SetNbProc(long nbProc) {_nbProc = nbProc;};
+
+  int GetNbProcPerNode() {return _nbProcPerNode;};
+  void SetNbProcPerNode(long nbProcPerNodes) {_nbProcPerNode = nbProcPerNodes;};
+
+  int GetNbNode() {return _nbNode;};
+  void SetNbNode(long nbNodes) {_nbNode = nbNodes;};
+
+  std::string GetWcKey() {return _wcKey;};
+  void SetWcKey(std::string wcKey) {_wcKey = wcKey;};
+
+  std::string GetWalltime() {return _walltime;};
+  void SetWalltime(std::string walltime) {_walltime = walltime;};
+
+  // Parallel computation
+  bool ComputeSubMeshes(
+            SMESH_Gen* gen,
+            SMESH_Mesh & aMesh,
+            const TopoDS_Shape & aShape,
+            const ::MeshDimension       aDim,
+            TSetOfInt*                  aShapesId /*=0*/,
+            TopTools_IndexedMapOfShape* allowedSubShapes,
+            SMESH_subMesh::compute_event &computeEvent,
+            const bool includeSelf,
+            const bool complexShapeFirst,
+            const bool   aShapeOnly) override;
+
+ protected:
+  SMESH_ParallelMesh():SMESH_Mesh() {};
+  SMESH_ParallelMesh(const SMESH_ParallelMesh& aMesh):SMESH_Mesh(aMesh) {};
+ private:
+  // Mutex for multhitreading write in SMESH_Mesh
+#ifndef WIN32
+  boost::mutex _my_lock;
+  // thread pool for computation
+  boost::asio::thread_pool *     _pool = nullptr;
+#endif
+  boost::filesystem::path tmp_folder;
+  int _method = ParallelismMethod::MultiThread;
+  int _paraDim = 3;
+
+  int _NbThreads = std::thread::hardware_concurrency();
+
+  int _nbProc = 1;
+  int _nbProcPerNode = 1;
+  int _nbNode = 1;
+  std::string _resource = "";
+  std::string _wcKey = "P11N0:SALOME";
+  std::string _walltime = "01:00:00";
+};
+#endif
index f605a90e65d4b405d09b1ea143b1c8fe7cb8593c..d59495d15e70ce633a5f13aeb3a9889fe40313dc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -4925,11 +4925,12 @@ list< SMESH_Pattern::TPoint* > & SMESH_Pattern::getShapePoints(const int theShap
 
 void SMESH_Pattern::DumpPoints() const
 {
-#ifdef _DEBUG_
-  vector< TPoint >::const_iterator pVecIt = myPoints.begin();
-  for ( int i = 0; pVecIt != myPoints.end(); pVecIt++, i++ )
-    MESSAGE_ADD ( std::endl << i << ": " << *pVecIt );
-#endif
+  if (SALOME::VerbosityActivated())
+  {
+    vector< TPoint >::const_iterator pVecIt = myPoints.begin();
+    for ( int i = 0; pVecIt != myPoints.end(); pVecIt++, i++ )
+      MESSAGE_ADD ( std::endl << i << ": " << *pVecIt );
+  }
 }
 
 //=======================================================================
@@ -4939,14 +4940,15 @@ void SMESH_Pattern::DumpPoints() const
 
 SMESH_Pattern::TPoint::TPoint()
 {
-#ifdef _DEBUG_
-  myInitXYZ.SetCoord(7,7,7);
-  myInitUV.SetCoord(7.,7.);
-  myInitU = 7;
-  myXYZ.SetCoord(7,7,7);
-  myUV.SetCoord(7.,7.);
-  myU = 7;
-#endif
+  if (SALOME::VerbosityActivated())
+  {
+    myInitXYZ.SetCoord(7,7,7);
+    myInitUV.SetCoord(7.,7.);
+    myInitU = 7;
+    myXYZ.SetCoord(7,7,7);
+    myUV.SetCoord(7.,7.);
+    myU = 7;
+  }
 }
 
 //=======================================================================
index 5e68fd8a2634d525fbe8ec88fc34b1c310ef9753..f757935253b935a0967b02cd92965dc1d5373cf5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 4c1a87ea4645c48fbec7e903f627d666d0fc61e3..25d363400fbc3ad03238f9c71d6754441ea59b54 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c630a729769e998d432cc56d1ee23ffb21ca400d..a9ce71ef3b20562223572a2f54f9426faa8ea3fd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e9c22fff8a8260ba0eea7007a52938c119ddebaf..81322bb71b8a66cf960beec47c91ad07a7c864b8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/src/SMESH/SMESH_SequentialMesh.cxx b/src/SMESH/SMESH_SequentialMesh.cxx
new file mode 100644 (file)
index 0000000..e5c27f2
--- /dev/null
@@ -0,0 +1,69 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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_SequentialMesh.cxx
+//  Author : Yoann AUDOUIN, EDF
+//  Module : SMESH
+//
+#include "SMESH_SequentialMesh.hxx"
+
+#include <TopExp_Explorer.hxx>
+#include <TopoDS.hxx>
+#include <TopoDS_Iterator.hxx>
+
+#include <utilities.h>
+
+SMESH_SequentialMesh::SMESH_SequentialMesh(int               theLocalId,
+                       SMESH_Gen*        theGen,
+                       bool              theIsEmbeddedMode,
+                       SMESHDS_Document* theDocument) :SMESH_Mesh(theLocalId,
+                                                                  theGen,
+                                                                  theIsEmbeddedMode,
+                                                                  theDocument)
+{
+  MESSAGE("SMESH_SequentialMesh::SMESH_SequentialMesh(int localId)");
+};
+
+SMESH_SequentialMesh::~SMESH_SequentialMesh()
+{
+};
+
+bool SMESH_SequentialMesh::ComputeSubMeshes(
+          SMESH_Gen* gen,
+          SMESH_Mesh & aMesh,
+          const TopoDS_Shape & aShape,
+          const ::MeshDimension       aDim,
+          TSetOfInt*                  aShapesId /*=0*/,
+          TopTools_IndexedMapOfShape* allowedSubShapes,
+          SMESH_subMesh::compute_event &computeEvent,
+          const bool includeSelf,
+          const bool complexShapeFirst,
+          const bool   aShapeOnly)
+{
+    return gen->sequentialComputeSubMeshes(
+            aMesh, aShape, aDim,
+            aShapesId, allowedSubShapes,
+            computeEvent,
+            includeSelf,
+            complexShapeFirst,
+            aShapeOnly);
+};
diff --git a/src/SMESH/SMESH_SequentialMesh.hxx b/src/SMESH/SMESH_SequentialMesh.hxx
new file mode 100644 (file)
index 0000000..bcc564a
--- /dev/null
@@ -0,0 +1,69 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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_SequentialMesh.hxx
+//  Author : Yoann AUDOUIN, EDF
+//  Module : SMESH
+//
+#ifndef _SMESH_SEQUENTIALMESH_HXX_
+#define _SMESH_SEQUENTIALMESH_HXX_
+
+#include "SMESH_Mesh.hxx"
+
+#include "SMESH_Gen.hxx"
+#include "SMESH_subMesh.hxx"
+
+class SMESH_EXPORT SMESH_SequentialMesh: public SMESH_Mesh
+{
+ public:
+  SMESH_SequentialMesh(int               theLocalId,
+                       SMESH_Gen*        theGen,
+                       bool              theIsEmbeddedMode,
+                       SMESHDS_Document* theDocument);
+
+  virtual ~SMESH_SequentialMesh();
+
+  void Lock() override {};
+  void Unlock() override {};
+
+  void wait() override {};
+
+  bool IsParallel() override {return false;};
+  int GetParallelElement() override {return 0;};
+
+  bool ComputeSubMeshes (
+            SMESH_Gen* gen,
+            SMESH_Mesh & aMesh,
+            const TopoDS_Shape & aShape,
+            const ::MeshDimension       aDim,
+            TSetOfInt*                  aShapesId /*=0*/,
+            TopTools_IndexedMapOfShape* allowedSubShapes,
+            SMESH_subMesh::compute_event &computeEvent,
+            const bool includeSelf,
+            const bool complexShapeFirst,
+            const bool   aShapeOnly) override;
+
+ protected:
+  SMESH_SequentialMesh():SMESH_Mesh() {};
+  SMESH_SequentialMesh(const SMESH_SequentialMesh& aMesh):SMESH_Mesh(aMesh) {};
+};
+#endif
index 6975f958bb08a86ab917e34798312582229e5fe5..18b6c3cdfe9687603d1dea4f8dacc19b5806ea71 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -37,9 +37,9 @@
 #include "SMESH_Mesh.hxx"
 #include "SMESH_MesherHelper.hxx"
 #include "SMESH_subMeshEventListener.hxx"
+#include "SMESH_MeshLocker.hxx"
 
 #include "utilities.h"
-#include "OpUtil.hxx"
 #include "Basics_Utils.hxx"
 
 #include <BRep_Builder.hxx>
@@ -63,7 +63,7 @@ using namespace std;
 
 #ifdef _DEBUG_
 // enable printing algo + shape id + hypo used while meshing
-//#define PRINT_WHO_COMPUTE_WHAT
+#define PRINT_WHO_COMPUTE_WHAT
 #endif
 
 //=============================================================================
@@ -257,7 +257,7 @@ bool SMESH_subMesh::IsMeshComputed() const
       TopExp_Explorer exp( _subShape, (TopAbs_ShapeEnum) type );
       for ( ; exp.More(); exp.Next() )
       {
-        if ( SMESHDS_SubMesh * smDS = meshDS->MeshElements( exp.Current() ))
+        if ( SMESHDS_SubMesh * smDS = meshDS->MeshElements( exp.Current() ) )
         {
           bool computed = (dim > 0) ? smDS->NbElements() : smDS->NbNodes();
           if ( computed )
@@ -610,7 +610,7 @@ bool SMESH_subMesh::IsApplicableHypothesis(const SMESH_Hypothesis* theHypothesis
  *  \param [in] event - what happens
  *  \param [in] anHyp - a hypothesis
  *  \return SMESH_Hypothesis::Hypothesis_Status - a treatment result.
- * 
+ *
  * Optional description of a problematic situation (if any) can be retrieved
  * via GetComputeError().
  */
@@ -891,7 +891,10 @@ SMESH_Hypothesis::Hypothesis_Status
           ret = SMESH_Hypothesis::HYP_INCOMPATIBLE;
       }
       else if (!_father->IsUsedHypothesis( anHyp, this ))
-        ret = SMESH_Hypothesis::HYP_INCOMPATIBLE;
+      {
+        if ( anHyp->GetDim() == this->GetAlgo()->GetDim() )
+          ret = SMESH_Hypothesis::HYP_INCOMPATIBLE;
+      }
 
       if (SMESH_Hypothesis::IsStatusFatal( ret ))
       {
@@ -1034,8 +1037,8 @@ SMESH_Hypothesis::Hypothesis_Status
 
   // detect algorithm hiding
   //
-  if ( ret == SMESH_Hypothesis::HYP_OK && 
-       ( event == ADD_ALGO || event == ADD_FATHER_ALGO ) && algo && 
+  if ( ret == SMESH_Hypothesis::HYP_OK &&
+       ( event == ADD_ALGO || event == ADD_FATHER_ALGO ) && algo &&
        algo->GetName() == anHyp->GetName() )
   {
     // is algo hidden?
@@ -1393,6 +1396,7 @@ bool SMESH_subMesh::ComputeStateEngine(compute_event event)
     else if (( event == COMPUTE || event == COMPUTE_SUBMESH )
              && !_alwaysComputed )
     {
+      SMESH_MeshLocker myLocker(_father);
       const TopoDS_Vertex & V = TopoDS::Vertex( _subShape );
       gp_Pnt P = BRep_Tool::Pnt(V);
       if ( SMDS_MeshNode * n = _father->GetMeshDS()->AddNode(P.X(), P.Y(), P.Z()) ) {
@@ -1512,9 +1516,11 @@ bool SMESH_subMesh::ComputeStateEngine(compute_event event)
           break;
         }
         TopoDS_Shape shape = _subShape;
-        algo->SubMeshesToCompute().assign( 1, this );
+        algo->setSubMeshesToCompute(this);
         // check submeshes needed
-        if (_father->HasShapeToMesh() ) {
+        // When computing in parallel mode we do not have a additional layer of submesh
+        // The check should not be done in parallel as that check is not thread-safe
+        if (_father->HasShapeToMesh() && (!_father->IsParallel() || shape.ShapeType() != _father->GetParallelElement() )) {
           bool subComputed = false, subFailed = false;
           if (!algo->OnlyUnaryInput()) {
             //  --- commented for bos#22320 to compute all sub-shapes at once if possible;
@@ -1576,7 +1582,7 @@ bool SMESH_subMesh::ComputeStateEngine(compute_event event)
           _computeError = SMESH_ComputeError::Worst( _computeError, algo->GetComputeError() );
         }
         catch ( ::SMESH_ComputeError& comperr ) {
-          cout << " SMESH_ComputeError caught" << endl;
+          MESSAGE(" SMESH_ComputeError caught");
           if ( !_computeError ) _computeError = SMESH_ComputeError::New();
           *_computeError = comperr;
         }
@@ -1643,8 +1649,9 @@ bool SMESH_subMesh::ComputeStateEngine(compute_event event)
 #ifdef PRINT_WHO_COMPUTE_WHAT
         for (subS.ReInit(); subS.More(); subS.Next())
         {
+          SMESH_MeshLocker myLocker(_father);
           const std::list <const SMESHDS_Hypothesis *> & hyps =
-            _algo->GetUsedHypothesis( *_father, _subShape );
+              _algo->GetUsedHypothesis( *_father, _subShape );
           SMESH_Comment hypStr;
           if ( !hyps.empty() )
           {
@@ -2098,7 +2105,7 @@ void SMESH_subMesh::updateDependantsState(const compute_event theEvent)
 
 //=======================================================================
 //function : cleanDependants
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 void SMESH_subMesh::cleanDependants()
@@ -2122,7 +2129,7 @@ void SMESH_subMesh::cleanDependants()
 
 //=======================================================================
 //function : removeSubMeshElementsAndNodes
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 void SMESH_subMesh::removeSubMeshElementsAndNodes()
@@ -2184,10 +2191,13 @@ TopoDS_Shape SMESH_subMesh::getCollection(SMESH_Gen * /*theGen*/,
   {
     SMESH_subMesh* subMesh = smIt->next();
     const TopoDS_Shape&  S = subMesh->_subShape;
-    if ( S.ShapeType() != this->_subShape.ShapeType() )
+
+    if ( S.ShapeType() != this->_subShape.ShapeType() ){
       continue;
-    if ( _allowedSubShapes && !_allowedSubShapes->IsEmpty() && !_allowedSubShapes->Contains( S ))
+    }
+    if ( _allowedSubShapes && !_allowedSubShapes->IsEmpty() && !_allowedSubShapes->Contains( S )){
       continue;
+    }
     if ( subMesh == this )
     {
       aBuilder.Add( aCompound, S );
@@ -2196,6 +2206,7 @@ TopoDS_Shape SMESH_subMesh::getCollection(SMESH_Gen * /*theGen*/,
     else if ( subMesh->GetComputeState() == READY_TO_COMPUTE )
     {
       SMESH_Algo* anAlgo = subMesh->GetAlgo();
+
       if (( anAlgo->IsSameName( *theAlgo )) && // same algo
           ( anAlgo->GetUsedHypothesis( *_father, S, skipAuxHyps ) == usedHyps ) && // same hyps
           ( anAlgo->GetAssignedShapes() == assiShapes ) && // on same sub-shapes
@@ -2248,10 +2259,10 @@ const SMESH_Hypothesis* SMESH_subMesh::getSimilarAttached(const TopoDS_Shape&
 //=======================================================================
 
 SMESH_Hypothesis::Hypothesis_Status
-  SMESH_subMesh::CheckConcurrentHypothesis (const int theHypType)
+  SMESH_subMesh::CheckConcurrentHypothesis( SMESH_Hypothesis* theHypothesis)
 {
   // is there local hypothesis on me?
-  if ( getSimilarAttached( _subShape, 0, theHypType ) )
+  if ( getSimilarAttached( _subShape, theHypothesis ) )
     return SMESH_Hypothesis::HYP_OK;
 
 
@@ -2261,7 +2272,7 @@ SMESH_Hypothesis::Hypothesis_Status
   for (; it.More(); it.Next())
   {
     const TopoDS_Shape& ancestor = it.Value();
-    const SMESH_Hypothesis* hyp = getSimilarAttached( ancestor, 0, theHypType );
+    const SMESH_Hypothesis* hyp = getSimilarAttached( ancestor, theHypothesis );
     if ( hyp )
     {
       if ( aPrevWithHyp.IsNull() || aPrevWithHyp.IsSame( ancestor ))
@@ -2298,7 +2309,7 @@ SMESH_subMesh::OwnListenerData::OwnListenerData( SMESH_subMesh* sm, EventListene
  * \param listener - the listener to store
  * \param data - the listener data to store
  * \param where - the submesh to store the listener and it's data
- * 
+ *
  * It remembers the submesh where it puts the listener in order to delete
  * them when HYP_OK algo_state is lost
  * After being set, event listener is notified on each event of where submesh.
@@ -2320,7 +2331,7 @@ void SMESH_subMesh::SetEventListener(EventListener*     listener,
  * \brief Sets an event listener and its data to a submesh
  * \param listener - the listener to store
  * \param data - the listener data to store
- * 
+ *
  * After being set, event listener is notified on each event of a submesh.
  */
 //================================================================================
@@ -2530,7 +2541,7 @@ void SMESH_subMesh::loadDependentMeshes()
  * \param subMesh - the submesh where the event occurs
  * \param data - listener data stored in the subMesh
  * \param hyp - hypothesis, if eventType is algo_event
- * 
+ *
  * The base implementation translates CLEAN event to the subMesh
  * stored in listener data. Also it sends SUBMESH_COMPUTED event in case of
  * successful COMPUTE event.
index 576047f7d2e8c95a000f104581abd5a69c294c44..0358cc6627db822bdf029efcfb4911dd81dd3f68 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -69,7 +69,7 @@ class SMESH_EXPORT SMESH_subMesh
   int GetId() const; // == meshDS->ShapeToIndex( aSubShape )
 
   SMESH_Mesh* GetFather() { return _father; }
-  
+
   SMESHDS_SubMesh *       GetSubMeshDS();
   const SMESHDS_SubMesh * GetSubMeshDS() const;
 
@@ -79,6 +79,7 @@ class SMESH_EXPORT SMESH_subMesh
   SMESH_subMesh *GetFirstToCompute();
 
   SMESH_Algo* GetAlgo() const;
+  SMESH_Algo* CopyAlgo() const;
 
   const std::map < int, SMESH_subMesh * >& DependsOn();
   bool DependsOn( const SMESH_subMesh* other ) const;
@@ -123,7 +124,7 @@ class SMESH_EXPORT SMESH_subMesh
   };
 
   // ==================================================================
-  // Members to track non hierarchical dependencies between sub-meshes 
+  // Members to track non hierarchical dependencies between sub-meshes
   // ==================================================================
 
   /*!
@@ -131,7 +132,7 @@ class SMESH_EXPORT SMESH_subMesh
     * \param listener - the listener to store
     * \param data - the listener data to store
     * \param where - the submesh to store the listener and it's data
-   * 
+   *
    * The method remembers the submesh \awhere it puts the listener in order to delete
    * it when HYP_OK algo_state is lost
    * After being set, event listener is notified on each event of \awhere submesh.
@@ -185,7 +186,7 @@ protected:
    * \brief Sets an event listener and its data to a submesh
     * \param listener - the listener to store
     * \param data - the listener data to store
-   * 
+   *
    * After being set, event listener is notified on each event of a submesh.
    */
   void setEventListener(EventListener* listener, EventListenerData* data);
@@ -245,8 +246,8 @@ public:
   bool IsApplicableHypothesis(const SMESH_Hypothesis* theHypothesis) const;
   // return true if theHypothesis can be used to mesh me:
   // its shape type is checked
-  
-  SMESH_Hypothesis::Hypothesis_Status CheckConcurrentHypothesis (const int theHypType);
+
+  SMESH_Hypothesis::Hypothesis_Status CheckConcurrentHypothesis (SMESH_Hypothesis* theHypothesis);
   // check if there are several applicable hypothesis on fathers
 
   /*!
@@ -277,7 +278,7 @@ public:
 
   int GetComputeCost() const;
   // how costly is to compute this sub-mesh
-  
+
   /*!
    * \brief  Find common submeshes (based on shared subshapes with other
    * \param theOther submesh to check
@@ -319,7 +320,7 @@ protected:
 
   /*!
    * \brief Return a hypothesis attached to theShape.
-   * 
+   *
    * If theHyp is provided, similar but not same hypotheses
    * is returned; else an applicable ones having theHypType
    * is returned
@@ -327,7 +328,7 @@ protected:
   const SMESH_Hypothesis* getSimilarAttached(const TopoDS_Shape&      theShape,
                                              const SMESH_Hypothesis * theHyp,
                                              const int                theHypType = 0);
-  // 
+  //
   int computeCost() const;
 
 protected:
index 24c0c43db3d640259e0c45110364520e591ea222..a271676d9e26b184a7aeb552a62e45b8a3a67e62 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index bf0b19cc5d867ecd1dc8f7d91444b62240d15d8f..a1091b213043a49cc77b0795f572fdfec51bb54c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2010-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ed7f14f4728a4d2f05f52bbc8078f3087d177a08..197c295fa6bdb41f2cba1c1caadd935a2a0930cd 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index b28d3aee35681bfc0018f9fd278f76dae160e770..a8aa1d84c5fc0e18282e2eb4334e4e3b2853a1fd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f0473ff66ae43334ce18e62f279260f7d87b7766..f5251c2ff46e8c38fb17f26817689ea5fc07888c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -28,9 +28,9 @@
 #include "SMESHDS_Mesh.hxx"
 #include "SMESHDS_Script.hxx"
 #include "SMESH_Mesh.hxx"
-#include "SMESH_Component_Generator.hxx"
 
 #include "SALOME_NamingService.hxx"
+#include "SALOME_Fake_NamingService.hxx"
 #include "SALOME_LifeCycleCORBA.hxx"
 
 #include <SALOMEconfig.h>
@@ -39,6 +39,7 @@
 #include CORBA_SERVER_HEADER(SALOME_Exception)
 
 #include "Basics_Utils.hxx"
+#include "KernelBasis.hxx"
 #include "utilities.h"
 
 #ifdef WIN32
@@ -48,6 +49,7 @@
 #endif
 
 #include <stdexcept>
+#include <memory>
 
 #ifndef EXCEPTION
 #define EXCEPTION(TYPE, MSG) {\
 }
 #endif
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
-
 namespace
 {
   using std::runtime_error;
@@ -787,31 +783,30 @@ SMESH_Client::GetSMESHGen(CORBA::ORB_ptr theORB,
 
   if(CORBA::is_nil(aMeshGen.in()))
   {
-    Engines::EngineComponent_var isCompoInSSLMode = GetSMESHInstanceHasThis();
-    if( CORBA::is_nil(isCompoInSSLMode) )
-    {
 #ifdef WIN32
-      long aClientPID = (long)_getpid();
+    long aClientPID = (long)_getpid();
 #else
-      long aClientPID =  (long)getpid();
+    long aClientPID =  (long)getpid();
 #endif
 
-      SALOME_NamingService aNamingService(theORB);
-      SALOME_LifeCycleCORBA aLifeCycleCORBA(&aNamingService);
-      Engines::EngineComponent_var aComponent = aLifeCycleCORBA.FindOrLoad_Component("FactoryServer","SMESH");
-      aMeshGen = SMESH::SMESH_Gen::_narrow(aComponent);
-
-      std::string aClientHostName = Kernel_Utils::GetHostname();
-      Engines::Container_var aServerContainer = aMeshGen->GetContainerRef();
-      CORBA::String_var aServerHostName = aServerContainer->getHostName();
-      CORBA::Long aServerPID = aServerContainer->getPID();
-      aMeshGen->SetEmbeddedMode((aClientPID == aServerPID) && (aClientHostName == aServerHostName.in()));
+    std::unique_ptr<SALOME_NamingService_Abstract> aNamingService;
+    if(getSSLMode())
+    {
+      aNamingService.reset(new SALOME_Fake_NamingService);
     }
     else
     {
-      aMeshGen = SMESH::SMESH_Gen::_narrow(isCompoInSSLMode);
+      aNamingService.reset(new SALOME_NamingService(theORB));
     }
-    
+    SALOME_LifeCycleCORBA aLifeCycleCORBA(aNamingService.get());
+    Engines::EngineComponent_var aComponent = aLifeCycleCORBA.FindOrLoad_Component("FactoryServer","SMESH");
+    aMeshGen = SMESH::SMESH_Gen::_narrow(aComponent);
+
+    std::string aClientHostName = Kernel_Utils::GetHostname();
+    Engines::Container_var aServerContainer = aMeshGen->GetContainerRef();
+    CORBA::String_var aServerHostName = aServerContainer->getHostName();
+    CORBA::Long aServerPID = aServerContainer->getPID();
+    aMeshGen->SetEmbeddedMode((aClientPID == aServerPID) && (aClientHostName == aServerHostName.in()));
   }
   theIsEmbeddedMode = aMeshGen->IsEmbeddedMode();
   return aMeshGen;
@@ -828,19 +823,19 @@ SMESH_Client::SMESH_Client(CORBA::ORB_ptr theORB,
   mySMESHDSMesh(NULL),
   mySMDSMesh(NULL)
 {
-  if ( MYDEBUG ) MESSAGE("SMESH_Client::SMESH_Client");
+  MESSAGE("SMESH_Client::SMESH_Client");
   myMeshServer->Register();
 
   CORBA::Boolean anIsEmbeddedMode;
   GetSMESHGen(theORB,anIsEmbeddedMode);
   if(anIsEmbeddedMode){
-    if ( MYDEBUG ) MESSAGE("Info: The same process, update mesh by pointer ");
+    MESSAGE("Info: The same process, update mesh by pointer ");
     // just set client mesh pointer to server mesh pointer
     //SMESH_Mesh* aMesh = reinterpret_cast<SMESH_Mesh*>(theMesh->GetMeshPtr());
     CORBA::LongLong pointeur = theMesh->GetMeshPtr();
-    if( MYDEBUG ) MESSAGE("SMESH_Client::SMESH_Client pointeur "<<pointeur);
+    MESSAGE("SMESH_Client::SMESH_Client pointeur "<<pointeur);
     SMESH_Mesh* aMesh = reinterpret_cast<SMESH_Mesh*> (pointeur);
-    if ( MYDEBUG ) MESSAGE("SMESH_Client::SMESH_Client aMesh "<<aMesh);
+    MESSAGE("SMESH_Client::SMESH_Client aMesh "<<aMesh);
     //if(aMesh->GetMeshDS()->IsEmbeddedMode()){
     if(anIsEmbeddedMode){
       mySMESHDSMesh = aMesh->GetMeshDS();
@@ -898,18 +893,18 @@ SMESH_Client::Update(bool theIsClear)
   bool anIsModified = true;
   if(mySMESHDSMesh)
   {
-    if ( MYDEBUG ) MESSAGE("Update mySMESHDSMesh");
+    MESSAGE("Update mySMESHDSMesh");
     SMESHDS_Script* aScript = mySMESHDSMesh->GetScript();
     anIsModified = aScript->IsModified();
     aScript->SetModified(false);
   }
   else
   {
-    if ( MYDEBUG ) MESSAGE("Update CORBA");
+    MESSAGE("Update CORBA");
     SMESH::log_array_var aSeq = myMeshServer->GetLog( theIsClear );
     CORBA::Long aLength = aSeq->length();
     anIsModified = aLength > 0;
-    if ( MYDEBUG ) MESSAGE( "Update: length of the script is "<<aLength );
+    MESSAGE( "Update: length of the script is "<<aLength );
 
     if ( !anIsModified )
       return false;
@@ -1020,7 +1015,7 @@ SMESH_Client::Update(bool theIsClear)
       INFOS("Unknown exception was cought !!!");
     }
 
-    if ( MYDEBUG && mySMDSMesh )
+    if (mySMDSMesh )
     {
       MESSAGE("Update - mySMDSMesh->NbNodes() = "<<mySMDSMesh->NbNodes());
       MESSAGE("Update - mySMDSMesh->Nb0DElements() = "<<mySMDSMesh->Nb0DElements());
index fe561176e90640341604810eae412be8376c7e24..4fa82fbc7da3649f49b9561b55d56df18dfaa63a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index c5ff4364c52e4986c6765a48a40531e9160beac1..4d058b84da8cb3aacb52f215b6ae89bc24e3892e 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6c4e911e93b580952d2c873abca5bfe1412b0e57..ec1e293bb638c37effa2d3bf1f9524b3de191bbc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1770319b65be89281f5a46c66dbc978b6f961731..955de27942b5b3fefcaf15a5b30e517d5161247d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e854943219d72663f47ddd7060f1166996c84400..58b706714edf008f1cea3f819df1ca12a0f22b93 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ac47dfc024b075ba1284b023f6280f9fb1e8f8a2..200ac29c6b0687b61ebab57519703e281f6bae2c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index c2395ccaed680bf72082f6e3822ba70ba6744cc8..7eff635ca1566fc8185687cdecd0de623d2212c0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2dfa8c16f83042c449ed33b10fa3f2a0046a4f0d..6d253b1fcc60f3d456cea1cc69fdb047a73927f7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f1df7c324f605227279fd8d071f268754505b820..8fb6ae6e062a5120ccbecd0682d1049cc2430abd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d1505ea5a3c7d9051b9a081d6ef4060ae64361a5..d7a2b0c7e9bdc284417b745ddb97dda957004ec0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 89542aded12723b5e7ed9ba4dab172a9052c2971..cc133c45599ad7a07c79558ae7f3c7fb0158fe96 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -184,9 +184,9 @@ void SMESHDS_GroupBase::SetColorGroup(int theColorGroup)
   if ( aR < 0. || aR > 1. || // PAL19395
        aG < 0. || aG > 1. ||
        aB < 0. || aB > 1. )
-// #ifdef _DEBUG_
-//     cout << "SMESHDS_GroupBase::SetColorGroup("<<theColorGroup<<"), invalid color ignored"<<endl;
-// #endif
+// if (SALOME::VerbosityActivated())
+//  cout << "SMESHDS_GroupBase::SetColorGroup("<<theColorGroup<<"), invalid color ignored"<<endl;
+
     return;
   Quantity_Color aColor( aR, aG, aB, Quantity_TOC_RGB );
   SetColor( aColor );
index 01bf869a9000a648156ffb3031191b22668cc1e2..7814d078781c33a3a18ef39f2420165b43cf8cb4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1672ff0691ac2c223d5586e73744dde7edaf11e1..d8ea06fdac80901e5ac6c4349b697fb5c3af35ee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 524ce861355f9dc4b0c63f003782802f864924fa..a011c255d94c4677aaa1e4295e768cbd208d2e97 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0c0460b2f3a9cac1a57e3f7a61d65d45cc3e75ed..8db8cf834089d3b99b28022cccde315082785b81 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5050aac512c604160ad25f98b0069e55731400c3..59ccaa7ee79eb919c88d44c684a37f5300cc8df8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 712ab920dc2929cc2da58a247913f4b10bcbf807..ec2a68078fd799be0035da35695af243b504bc39 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5ecf507890f87e83732242befa193168833a8354..b9c4efa4d39b5bf2c92b6b4528eb2aa0c620c4e7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1396cdf219d0d398ccab709c34f9560a2eef9250..adc79ad7574307ad6c55385ac447ab43eece83c3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -99,7 +99,7 @@ int SMESHDS_Mesh::GetPersistentId() const
 
 //=======================================================================
 //function : ShapeToMesh
-//purpose  : 
+//purpose  :
 //=======================================================================
 void SMESHDS_Mesh::ShapeToMesh(const TopoDS_Shape & S)
 {
@@ -141,7 +141,7 @@ void SMESHDS_Mesh::ShapeToMesh(const TopoDS_Shape & S)
 
 //=======================================================================
 //function : AddHypothesis
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 bool SMESHDS_Mesh::AddHypothesis(const TopoDS_Shape & SS,
@@ -165,7 +165,7 @@ bool SMESHDS_Mesh::AddHypothesis(const TopoDS_Shape & SS,
 
 //=======================================================================
 //function : RemoveHypothesis
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 bool SMESHDS_Mesh::RemoveHypothesis(const TopoDS_Shape &       S,
@@ -186,7 +186,7 @@ bool SMESHDS_Mesh::RemoveHypothesis(const TopoDS_Shape &       S,
 
 //=======================================================================
 //function : AddNode
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshNode* SMESHDS_Mesh::AddNode(double x, double y, double z)
 {
@@ -204,7 +204,7 @@ SMDS_MeshNode* SMESHDS_Mesh::AddNodeWithID(double x, double y, double z, smIdTyp
 
 //=======================================================================
 //function : MoveNode
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 void SMESHDS_Mesh::MoveNode(const SMDS_MeshNode *n, double x, double y, double z)
@@ -235,7 +235,7 @@ bool SMESHDS_Mesh::ChangeElementNodes(const SMDS_MeshElement * elem,
 
 //=======================================================================
 //function : ChangePolygonNodes
-//purpose  : 
+//purpose  :
 //=======================================================================
 bool SMESHDS_Mesh::ChangePolygonNodes (const SMDS_MeshElement *           elem,
                                        std::vector<const SMDS_MeshNode*>& nodes)
@@ -309,7 +309,7 @@ SMDS_Mesh0DElement* SMESHDS_Mesh::Add0DElement(const SMDS_MeshNode * node)
 
 //=======================================================================
 //function :AddBallWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 SMDS_BallElement* SMESHDS_Mesh::AddBallWithID(smIdType node, double diameter, smIdType ID)
@@ -338,7 +338,7 @@ SMDS_BallElement* SMESHDS_Mesh::AddBall (const SMDS_MeshNode * node,
 
 //=======================================================================
 //function :AddEdgeWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 SMDS_MeshEdge* SMESHDS_Mesh::AddEdgeWithID(smIdType n1, smIdType n2, smIdType ID)
@@ -349,7 +349,7 @@ SMDS_MeshEdge* SMESHDS_Mesh::AddEdgeWithID(smIdType n1, smIdType n2, smIdType ID
 }
 
 SMDS_MeshEdge* SMESHDS_Mesh::AddEdgeWithID(const SMDS_MeshNode * n1,
-                                           const SMDS_MeshNode * n2, 
+                                           const SMDS_MeshNode * n2,
                                            smIdType ID)
 {
   return AddEdgeWithID(n1->GetID(),
@@ -361,15 +361,15 @@ SMDS_MeshEdge* SMESHDS_Mesh::AddEdge(const SMDS_MeshNode * n1,
                                      const SMDS_MeshNode * n2)
 {
   SMDS_MeshEdge* anElem = SMDS_Mesh::AddEdge(n1,n2);
-  if(anElem) myScript->AddEdge(anElem->GetID(), 
-                               n1->GetID(), 
+  if(anElem) myScript->AddEdge(anElem->GetID(),
+                               n1->GetID(),
                                n2->GetID());
   return anElem;
 }
 
 //=======================================================================
 //function :AddFace
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(smIdType n1, smIdType n2, smIdType n3, smIdType ID)
 {
@@ -380,7 +380,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(smIdType n1, smIdType n2, smIdType n3
 
 SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
                                            const SMDS_MeshNode * n2,
-                                           const SMDS_MeshNode * n3, 
+                                           const SMDS_MeshNode * n3,
                                            smIdType ID)
 {
   return AddFaceWithID(n1->GetID(),
@@ -394,8 +394,8 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFace( const SMDS_MeshNode * n1,
                                       const SMDS_MeshNode * n3)
 {
   SMDS_MeshFace *anElem = SMDS_Mesh::AddFace(n1, n2, n3);
-  if(anElem) myScript->AddFace(anElem->GetID(), 
-                               n1->GetID(), 
+  if(anElem) myScript->AddFace(anElem->GetID(),
+                               n1->GetID(),
                                n2->GetID(),
                                n3->GetID());
   return anElem;
@@ -403,7 +403,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFace( const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function :AddFace
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4, smIdType ID)
 {
@@ -415,7 +415,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(smIdType n1, smIdType n2, smIdType n3
 SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
                                            const SMDS_MeshNode * n2,
                                            const SMDS_MeshNode * n3,
-                                           const SMDS_MeshNode * n4, 
+                                           const SMDS_MeshNode * n4,
                                            smIdType ID)
 {
   return AddFaceWithID(n1->GetID(),
@@ -431,9 +431,9 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
                                      const SMDS_MeshNode * n4)
 {
   SMDS_MeshFace *anElem = SMDS_Mesh::AddFace(n1, n2, n3, n4);
-  if(anElem) myScript->AddFace(anElem->GetID(), 
-                               n1->GetID(), 
-                               n2->GetID(), 
+  if(anElem) myScript->AddFace(anElem->GetID(),
+                               n1->GetID(),
+                               n2->GetID(),
                                n3->GetID(),
                                n4->GetID());
   return anElem;
@@ -441,7 +441,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function :AddVolume
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4, smIdType ID)
 {
@@ -453,11 +453,11 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(smIdType n1, smIdType n2, smIdTyp
 SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
                                                const SMDS_MeshNode * n2,
                                                const SMDS_MeshNode * n3,
-                                               const SMDS_MeshNode * n4, 
+                                               const SMDS_MeshNode * n4,
                                                smIdType ID)
 {
-  return AddVolumeWithID(n1->GetID(), 
-                         n2->GetID(), 
+  return AddVolumeWithID(n1->GetID(),
+                         n2->GetID(),
                          n3->GetID(),
                          n4->GetID(),
                          ID);
@@ -469,9 +469,9 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
                                          const SMDS_MeshNode * n4)
 {
   SMDS_MeshVolume *anElem = SMDS_Mesh::AddVolume(n1, n2, n3, n4);
-  if(anElem) myScript->AddVolume(anElem->GetID(), 
-                                 n1->GetID(), 
-                                 n2->GetID(), 
+  if(anElem) myScript->AddVolume(anElem->GetID(),
+                                 n1->GetID(),
+                                 n2->GetID(),
                                  n3->GetID(),
                                  n4->GetID());
   return anElem;
@@ -479,7 +479,7 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function :AddVolume
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4, smIdType n5, smIdType ID)
 {
@@ -492,13 +492,13 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
                                                const SMDS_MeshNode * n2,
                                                const SMDS_MeshNode * n3,
                                                const SMDS_MeshNode * n4,
-                                               const SMDS_MeshNode * n5, 
+                                               const SMDS_MeshNode * n5,
                                                smIdType ID)
 {
-  return AddVolumeWithID(n1->GetID(), 
-                         n2->GetID(), 
+  return AddVolumeWithID(n1->GetID(),
+                         n2->GetID(),
                          n3->GetID(),
-                         n4->GetID(), 
+                         n4->GetID(),
                          n5->GetID(),
                          ID);
 }
@@ -510,18 +510,18 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
                                          const SMDS_MeshNode * n5)
 {
   SMDS_MeshVolume *anElem = SMDS_Mesh::AddVolume(n1, n2, n3, n4, n5);
-  if(anElem) myScript->AddVolume(anElem->GetID(), 
-                                 n1->GetID(), 
-                                 n2->GetID(), 
+  if(anElem) myScript->AddVolume(anElem->GetID(),
+                                 n1->GetID(),
+                                 n2->GetID(),
                                  n3->GetID(),
-                                 n4->GetID(), 
+                                 n4->GetID(),
                                  n5->GetID());
   return anElem;
 }
 
 //=======================================================================
 //function :AddVolume
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4, smIdType n5, smIdType n6, smIdType ID)
 {
@@ -535,14 +535,14 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
                                                const SMDS_MeshNode * n3,
                                                const SMDS_MeshNode * n4,
                                                const SMDS_MeshNode * n5,
-                                               const SMDS_MeshNode * n6, 
+                                               const SMDS_MeshNode * n6,
                                                smIdType ID)
 {
-  return AddVolumeWithID(n1->GetID(), 
-                         n2->GetID(), 
+  return AddVolumeWithID(n1->GetID(),
+                         n2->GetID(),
                          n3->GetID(),
-                         n4->GetID(), 
-                         n5->GetID(), 
+                         n4->GetID(),
+                         n5->GetID(),
                          n6->GetID(),
                          ID);
 }
@@ -555,19 +555,19 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
                                          const SMDS_MeshNode * n6)
 {
   SMDS_MeshVolume *anElem = SMDS_Mesh::AddVolume(n1, n2, n3, n4, n5, n6);
-  if(anElem) myScript->AddVolume(anElem->GetID(), 
-                                 n1->GetID(), 
-                                 n2->GetID(), 
+  if(anElem) myScript->AddVolume(anElem->GetID(),
+                                 n1->GetID(),
+                                 n2->GetID(),
                                  n3->GetID(),
-                                 n4->GetID(), 
-                                 n5->GetID(), 
+                                 n4->GetID(),
+                                 n5->GetID(),
                                  n6->GetID());
   return anElem;
 }
 
 //=======================================================================
 //function :AddVolume
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4, smIdType n5, smIdType n6, smIdType n7, smIdType n8, smIdType ID)
 {
@@ -583,16 +583,16 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
                                                const SMDS_MeshNode * n5,
                                                const SMDS_MeshNode * n6,
                                                const SMDS_MeshNode * n7,
-                                               const SMDS_MeshNode * n8, 
+                                               const SMDS_MeshNode * n8,
                                                smIdType ID)
 {
-  return AddVolumeWithID(n1->GetID(), 
-                         n2->GetID(), 
+  return AddVolumeWithID(n1->GetID(),
+                         n2->GetID(),
                          n3->GetID(),
-                         n4->GetID(), 
-                         n5->GetID(), 
-                         n6->GetID(), 
-                         n7->GetID(), 
+                         n4->GetID(),
+                         n5->GetID(),
+                         n6->GetID(),
+                         n7->GetID(),
                          n8->GetID(),
                          ID);
 }
@@ -607,14 +607,14 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
                                          const SMDS_MeshNode * n8)
 {
   SMDS_MeshVolume *anElem = SMDS_Mesh::AddVolume(n1, n2, n3, n4, n5, n6, n7, n8);
-  if(anElem) myScript->AddVolume(anElem->GetID(), 
-                                 n1->GetID(), 
-                                 n2->GetID(), 
+  if(anElem) myScript->AddVolume(anElem->GetID(),
+                                 n1->GetID(),
+                                 n2->GetID(),
                                  n3->GetID(),
-                                 n4->GetID(), 
-                                 n5->GetID(), 
-                                 n6->GetID(), 
-                                 n7->GetID(), 
+                                 n4->GetID(),
+                                 n5->GetID(),
+                                 n6->GetID(),
+                                 n7->GetID(),
                                  n8->GetID());
   return anElem;
 }
@@ -641,14 +641,14 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
                                                const SMDS_MeshNode * n5,
                                                const SMDS_MeshNode * n6,
                                                const SMDS_MeshNode * n7,
-                                               const SMDS_MeshNode * n8, 
-                                               const SMDS_MeshNode * n9, 
-                                               const SMDS_MeshNode * n10, 
-                                               const SMDS_MeshNode * n11, 
-                                               const SMDS_MeshNode * n12, 
+                                               const SMDS_MeshNode * n8,
+                                               const SMDS_MeshNode * n9,
+                                               const SMDS_MeshNode * n10,
+                                               const SMDS_MeshNode * n11,
+                                               const SMDS_MeshNode * n12,
                                                smIdType ID)
 {
-  return AddVolumeWithID(n1->GetID(), 
+  return AddVolumeWithID(n1->GetID(),
                          n2->GetID(),
                          n3->GetID(),
                          n4->GetID(),
@@ -670,14 +670,14 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
                                          const SMDS_MeshNode * n5,
                                          const SMDS_MeshNode * n6,
                                          const SMDS_MeshNode * n7,
-                                         const SMDS_MeshNode * n8, 
-                                         const SMDS_MeshNode * n9, 
-                                         const SMDS_MeshNode * n10, 
-                                         const SMDS_MeshNode * n11, 
+                                         const SMDS_MeshNode * n8,
+                                         const SMDS_MeshNode * n9,
+                                         const SMDS_MeshNode * n10,
+                                         const SMDS_MeshNode * n11,
                                          const SMDS_MeshNode * n12)
 {
   SMDS_MeshVolume *anElem = SMDS_Mesh::AddVolume(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12);
-  if(anElem) myScript->AddVolume(anElem->GetID(), 
+  if(anElem) myScript->AddVolume(anElem->GetID(),
                                  n1->GetID(),
                                  n2->GetID(),
                                  n3->GetID(),
@@ -696,7 +696,7 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function : AddPolygonalFace
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddPolygonalFaceWithID (const std::vector<smIdType>& nodes_ids,
                                                      const smIdType               ID)
@@ -742,7 +742,7 @@ SMESHDS_Mesh::AddPolygonalFace (const std::vector<const SMDS_MeshNode*>& nodes)
 
 //=======================================================================
 //function : AddQuadPolygonalFace
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddQuadPolygonalFaceWithID (const std::vector<smIdType>& nodes_ids,
                                                          const smIdType               ID)
@@ -788,7 +788,7 @@ SMESHDS_Mesh::AddQuadPolygonalFace (const std::vector<const SMDS_MeshNode*>& nod
 
 //=======================================================================
 //function : AddPolyhedralVolume
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshVolume* SMESHDS_Mesh::AddPolyhedralVolumeWithID (const std::vector<smIdType>& nodes_ids,
                                                           const std::vector<int>&      quantities,
@@ -836,7 +836,7 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddPolyhedralVolume
 
 //=======================================================================
 //function : removeFromContainers
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 static void removeFromContainers (SMESHDS_Mesh*                         /*theMesh*/,
@@ -905,8 +905,8 @@ void SMESHDS_Mesh::RemoveNode(const SMDS_MeshNode * n)
   }
   if ( SMESHDS_SubMesh * sm = MeshElements( n->getshapeId() ))
     sm->RemoveNode( n );
-    
-  
+
+
   std::vector<const SMDS_MeshElement *> removedElems;
   std::vector<const SMDS_MeshElement *> removedNodes;
 
@@ -918,7 +918,7 @@ void SMESHDS_Mesh::RemoveNode(const SMDS_MeshNode * n)
 
 //=======================================================================
 //function : RemoveFreeNode
-//purpose  : 
+//purpose  :
 //=======================================================================
 bool SMESHDS_Mesh::RemoveFreeNode(const SMDS_MeshNode * n,
                                   SMESHDS_SubMesh *     subMesh,
@@ -971,20 +971,20 @@ void SMESHDS_Mesh::RemoveElement(const SMDS_MeshElement * elt)
     RemoveFreeElement( elt, subMesh, true );
     return;
   }
+
   myScript->RemoveElement(elt->GetID());
 
   std::vector<const SMDS_MeshElement *> removedElems;
   std::vector<const SMDS_MeshElement *> removedNodes;
 
   SMDS_Mesh::RemoveElement(elt, removedElems, removedNodes );
-  
+
   removeFromContainers( this, myGroups, removedElems );
 }
 
 //=======================================================================
 //function : RemoveFreeElement
-//purpose  : 
+//purpose  :
 //========================================================================
 void SMESHDS_Mesh::RemoveFreeElement(const SMDS_MeshElement * elt,
                                      SMESHDS_SubMesh *        subMesh,
@@ -1151,7 +1151,7 @@ void SMESHDS_Mesh::SetNodeOnVertex(const SMDS_MeshNode * aNode,
 
 //=======================================================================
 //function : UnSetNodeOnShape
-//purpose  : 
+//purpose  :
 //=======================================================================
 void SMESHDS_Mesh::UnSetNodeOnShape(const SMDS_MeshNode* aNode)
 {
@@ -1161,6 +1161,18 @@ void SMESHDS_Mesh::UnSetNodeOnShape(const SMDS_MeshNode* aNode)
       sm->RemoveNode(aNode);
 }
 
+//=======================================================================
+//function : UnSetElementOnShape
+//purpose  :
+//=======================================================================
+void SMESHDS_Mesh::UnSetElementOnShape(const SMDS_MeshElement * anElement)
+{
+  int shapeId = anElement->getshapeId();
+  if (shapeId > 0)
+    if ( SMESHDS_SubMesh* sm = MeshElements( shapeId ))
+      sm->RemoveElement(anElement);
+}
+
 //=======================================================================
 //function : SetMeshElementOnShape
 //purpose  :
@@ -1173,7 +1185,7 @@ void SMESHDS_Mesh::SetMeshElementOnShape(const SMDS_MeshElement * anElement,
 
 //=======================================================================
 //function : UnSetMeshElementOnShape
-//purpose  : 
+//purpose  :
 //=======================================================================
 void SMESHDS_Mesh::UnSetMeshElementOnShape(const SMDS_MeshElement * elem,
                                            const TopoDS_Shape &     S)
@@ -1184,7 +1196,7 @@ void SMESHDS_Mesh::UnSetMeshElementOnShape(const SMDS_MeshElement * elem,
 
 //=======================================================================
 //function : ShapeToMesh
-//purpose  : 
+//purpose  :
 //=======================================================================
 TopoDS_Shape SMESHDS_Mesh::ShapeToMesh() const
 {
@@ -1229,7 +1241,7 @@ SMESHDS_SubMesh * SMESHDS_Mesh::MeshElements(const int Index) const
 
 //=======================================================================
 //function : SubMeshIndices
-//purpose  : 
+//purpose  :
 //=======================================================================
 std::list<int> SMESHDS_Mesh::SubMeshIndices() const
 {
@@ -1243,7 +1255,7 @@ std::list<int> SMESHDS_Mesh::SubMeshIndices() const
 
 //=======================================================================
 //function : SubMeshes
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 SMESHDS_SubMeshIteratorPtr SMESHDS_Mesh::SubMeshes() const
@@ -1253,7 +1265,7 @@ SMESHDS_SubMeshIteratorPtr SMESHDS_Mesh::SubMeshes() const
 
 //=======================================================================
 //function : GetHypothesis
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 const std::list<const SMESHDS_Hypothesis*>&
@@ -1283,7 +1295,7 @@ bool SMESHDS_Mesh::IsUsedHypothesis(const SMESHDS_Hypothesis * H) const
 
 //=======================================================================
 //function : GetScript
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMESHDS_Script* SMESHDS_Mesh::GetScript()
 {
@@ -1292,7 +1304,7 @@ SMESHDS_Script* SMESHDS_Mesh::GetScript()
 
 //=======================================================================
 //function : ClearScript
-//purpose  : 
+//purpose  :
 //=======================================================================
 void SMESHDS_Mesh::ClearScript()
 {
@@ -1301,7 +1313,7 @@ void SMESHDS_Mesh::ClearScript()
 
 //=======================================================================
 //function : HasMeshElements
-//purpose  : 
+//purpose  :
 //=======================================================================
 bool SMESHDS_Mesh::HasMeshElements(const TopoDS_Shape & S) const
 {
@@ -1311,7 +1323,7 @@ bool SMESHDS_Mesh::HasMeshElements(const TopoDS_Shape & S) const
 
 //=======================================================================
 //function : HasHypothesis
-//purpose  : 
+//purpose  :
 //=======================================================================
 bool SMESHDS_Mesh::HasHypothesis(const TopoDS_Shape & S)
 {
@@ -1319,8 +1331,8 @@ bool SMESHDS_Mesh::HasHypothesis(const TopoDS_Shape & S)
 }
 
 //=======================================================================
-//function : NewSubMesh 
-//purpose  : 
+//function : NewSubMesh
+//purpose  :
 //=======================================================================
 SMESHDS_SubMesh * SMESHDS_Mesh::NewSubMesh(int Index)
 {
@@ -1335,7 +1347,7 @@ SMESHDS_SubMesh * SMESHDS_Mesh::NewSubMesh(int Index)
 
 //=======================================================================
 //function : AddCompoundSubmesh
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 int SMESHDS_Mesh::AddCompoundSubmesh(const TopoDS_Shape& S,
@@ -1370,7 +1382,7 @@ int SMESHDS_Mesh::AddCompoundSubmesh(const TopoDS_Shape& S,
 
 //=======================================================================
 //function : IndexToShape
-//purpose  : 
+//purpose  :
 //=======================================================================
 const TopoDS_Shape& SMESHDS_Mesh::IndexToShape(int ShapeIndex) const
 {
@@ -1399,7 +1411,7 @@ int SMESHDS_Mesh::MaxSubMeshIndex() const
 
 //=======================================================================
 //function : ShapeToIndex
-//purpose  : 
+//purpose  :
 //=======================================================================
 int SMESHDS_Mesh::ShapeToIndex(const TopoDS_Shape & S) const
 {
@@ -1409,7 +1421,7 @@ int SMESHDS_Mesh::ShapeToIndex(const TopoDS_Shape & S) const
 
 //=======================================================================
 //function : SetNodeOnVolume
-//purpose  : 
+//purpose  :
 //=======================================================================
 void SMESHDS_Mesh::SetNodeInVolume(const SMDS_MeshNode* aNode, int Index)
 {
@@ -1457,7 +1469,7 @@ void SMESHDS_Mesh::SetNodeOnVertex(const SMDS_MeshNode* aNode, int Index)
 
 //=======================================================================
 //function : SetMeshElementOnShape
-//purpose  : 
+//purpose  :
 //=======================================================================
 void SMESHDS_Mesh::SetMeshElementOnShape(const SMDS_MeshElement* anElement,
                                          int                     Index)
@@ -1467,7 +1479,7 @@ void SMESHDS_Mesh::SetMeshElementOnShape(const SMDS_MeshElement* anElement,
 
 //=======================================================================
 //function : ~SMESHDS_Mesh
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMESHDS_Mesh::~SMESHDS_Mesh()
 {
@@ -1488,9 +1500,9 @@ SMESHDS_Mesh::~SMESHDS_Mesh()
 
 //=======================================================================
 //function : AddEdgeWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
-SMDS_MeshEdge* SMESHDS_Mesh::AddEdgeWithID(smIdType n1, smIdType n2, smIdType n12, smIdType ID) 
+SMDS_MeshEdge* SMESHDS_Mesh::AddEdgeWithID(smIdType n1, smIdType n2, smIdType n12, smIdType ID)
 {
   SMDS_MeshEdge* anElem = SMDS_Mesh::AddEdgeWithID(n1,n2,n12,ID);
   if(anElem) myScript->AddEdge(ID,n1,n2,n12);
@@ -1499,15 +1511,15 @@ SMDS_MeshEdge* SMESHDS_Mesh::AddEdgeWithID(smIdType n1, smIdType n2, smIdType n1
 
 //=======================================================================
 //function : AddEdge
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshEdge* SMESHDS_Mesh::AddEdge(const SMDS_MeshNode* n1,
                                      const SMDS_MeshNode* n2,
                                      const SMDS_MeshNode* n12)
 {
   SMDS_MeshEdge* anElem = SMDS_Mesh::AddEdge(n1,n2,n12);
-  if(anElem) myScript->AddEdge(anElem->GetID(), 
-                               n1->GetID(), 
+  if(anElem) myScript->AddEdge(anElem->GetID(),
+                               n1->GetID(),
                                n2->GetID(),
                                n12->GetID());
   return anElem;
@@ -1515,11 +1527,11 @@ SMDS_MeshEdge* SMESHDS_Mesh::AddEdge(const SMDS_MeshNode* n1,
 
 //=======================================================================
 //function : AddEdgeWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshEdge* SMESHDS_Mesh::AddEdgeWithID(const SMDS_MeshNode * n1,
-                                           const SMDS_MeshNode * n2, 
-                                           const SMDS_MeshNode * n12, 
+                                           const SMDS_MeshNode * n2,
+                                           const SMDS_MeshNode * n12,
                                            smIdType ID)
 {
   return AddEdgeWithID(n1->GetID(),
@@ -1531,7 +1543,7 @@ SMDS_MeshEdge* SMESHDS_Mesh::AddEdgeWithID(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function : AddFace
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
                                      const SMDS_MeshNode * n2,
@@ -1541,7 +1553,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
                                      const SMDS_MeshNode * n31)
 {
   SMDS_MeshFace *anElem = SMDS_Mesh::AddFace(n1,n2,n3,n12,n23,n31);
-  if(anElem) myScript->AddFace(anElem->GetID(), 
+  if(anElem) myScript->AddFace(anElem->GetID(),
                                n1->GetID(), n2->GetID(), n3->GetID(),
                                n12->GetID(), n23->GetID(), n31->GetID());
   return anElem;
@@ -1549,7 +1561,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function : AddFaceWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(smIdType n1, smIdType n2, smIdType n3,
                                            smIdType n12,smIdType n23,smIdType n31, smIdType ID)
@@ -1561,14 +1573,14 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(smIdType n1, smIdType n2, smIdType n3
 
 //=======================================================================
 //function : AddFaceWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
                                            const SMDS_MeshNode * n2,
                                            const SMDS_MeshNode * n3,
                                            const SMDS_MeshNode * n12,
                                            const SMDS_MeshNode * n23,
-                                           const SMDS_MeshNode * n31, 
+                                           const SMDS_MeshNode * n31,
                                            smIdType ID)
 {
   return AddFaceWithID(n1->GetID(), n2->GetID(), n3->GetID(),
@@ -1578,7 +1590,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function : AddFace
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
                                      const SMDS_MeshNode * n2,
@@ -1589,7 +1601,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
                                      const SMDS_MeshNode * nCenter)
 {
   SMDS_MeshFace *anElem = SMDS_Mesh::AddFace(n1,n2,n3,n12,n23,n31,nCenter);
-  if(anElem) myScript->AddFace(anElem->GetID(), 
+  if(anElem) myScript->AddFace(anElem->GetID(),
                                n1->GetID(), n2->GetID(), n3->GetID(),
                                n12->GetID(), n23->GetID(), n31->GetID(),
                                nCenter->GetID());
@@ -1598,7 +1610,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function : AddFaceWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(smIdType n1, smIdType n2, smIdType n3,
                                            smIdType n12,smIdType n23,smIdType n31, smIdType nCenter, smIdType ID)
@@ -1610,15 +1622,15 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(smIdType n1, smIdType n2, smIdType n3
 
 //=======================================================================
 //function : AddFaceWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
                                            const SMDS_MeshNode * n2,
                                            const SMDS_MeshNode * n3,
                                            const SMDS_MeshNode * n12,
                                            const SMDS_MeshNode * n23,
-                                           const SMDS_MeshNode * n31, 
-                                           const SMDS_MeshNode * nCenter, 
+                                           const SMDS_MeshNode * n31,
+                                           const SMDS_MeshNode * nCenter,
                                            smIdType ID)
 {
   return AddFaceWithID(n1->GetID(), n2->GetID(), n3->GetID(),
@@ -1629,7 +1641,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function : AddFace
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
                                      const SMDS_MeshNode * n2,
@@ -1641,7 +1653,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
                                      const SMDS_MeshNode * n41)
 {
   SMDS_MeshFace *anElem = SMDS_Mesh::AddFace(n1,n2,n3,n4,n12,n23,n34,n41);
-  if(anElem) myScript->AddFace(anElem->GetID(), 
+  if(anElem) myScript->AddFace(anElem->GetID(),
                                n1->GetID(), n2->GetID(), n3->GetID(), n4->GetID(),
                                n12->GetID(), n23->GetID(), n34->GetID(), n41->GetID());
   return anElem;
@@ -1649,7 +1661,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function : AddFaceWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4,
                                            smIdType n12,smIdType n23,smIdType n34,smIdType n41, smIdType ID)
@@ -1661,7 +1673,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(smIdType n1, smIdType n2, smIdType n3
 
 //=======================================================================
 //function : AddFaceWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
                                            const SMDS_MeshNode * n2,
@@ -1669,8 +1681,8 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
                                            const SMDS_MeshNode * n4,
                                            const SMDS_MeshNode * n12,
                                            const SMDS_MeshNode * n23,
-                                           const SMDS_MeshNode * n34, 
-                                           const SMDS_MeshNode * n41, 
+                                           const SMDS_MeshNode * n34,
+                                           const SMDS_MeshNode * n41,
                                            smIdType ID)
 {
   return AddFaceWithID(n1->GetID(), n2->GetID(), n3->GetID(), n4->GetID(),
@@ -1681,7 +1693,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function : AddFace
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
                                      const SMDS_MeshNode * n2,
@@ -1690,11 +1702,11 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
                                      const SMDS_MeshNode * n12,
                                      const SMDS_MeshNode * n23,
                                      const SMDS_MeshNode * n34,
-                                     const SMDS_MeshNode * n41, 
+                                     const SMDS_MeshNode * n41,
                                      const SMDS_MeshNode * nCenter)
 {
   SMDS_MeshFace *anElem = SMDS_Mesh::AddFace(n1,n2,n3,n4,n12,n23,n34,n41,nCenter);
-  if(anElem) myScript->AddFace(anElem->GetID(), 
+  if(anElem) myScript->AddFace(anElem->GetID(),
                                n1->GetID(), n2->GetID(), n3->GetID(), n4->GetID(),
                                n12->GetID(), n23->GetID(), n34->GetID(), n41->GetID(),
                                nCenter->GetID());
@@ -1703,7 +1715,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function : AddFaceWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4,
                                            smIdType n12,smIdType n23,smIdType n34,smIdType n41,
@@ -1716,7 +1728,7 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(smIdType n1, smIdType n2, smIdType n3
 
 //=======================================================================
 //function : AddFaceWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
                                            const SMDS_MeshNode * n2,
@@ -1724,9 +1736,9 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
                                            const SMDS_MeshNode * n4,
                                            const SMDS_MeshNode * n12,
                                            const SMDS_MeshNode * n23,
-                                           const SMDS_MeshNode * n34, 
-                                           const SMDS_MeshNode * n41, 
-                                           const SMDS_MeshNode * nCenter, 
+                                           const SMDS_MeshNode * n34,
+                                           const SMDS_MeshNode * n41,
+                                           const SMDS_MeshNode * nCenter,
                                            smIdType ID)
 {
   return AddFaceWithID(n1->GetID(), n2->GetID(), n3->GetID(), n4->GetID(),
@@ -1737,21 +1749,21 @@ SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function : AddVolume
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
-                                         const SMDS_MeshNode * n2, 
+                                         const SMDS_MeshNode * n2,
                                          const SMDS_MeshNode * n3,
                                          const SMDS_MeshNode * n4,
                                          const SMDS_MeshNode * n12,
                                          const SMDS_MeshNode * n23,
                                          const SMDS_MeshNode * n31,
-                                         const SMDS_MeshNode * n14, 
+                                         const SMDS_MeshNode * n14,
                                          const SMDS_MeshNode * n24,
                                          const SMDS_MeshNode * n34)
 {
   SMDS_MeshVolume *anElem = SMDS_Mesh::AddVolume(n1,n2,n3,n4,n12,n23,n31,n14,n24,n34);
-  if(anElem) myScript->AddVolume(anElem->GetID(), 
+  if(anElem) myScript->AddVolume(anElem->GetID(),
                                  n1->GetID(), n2->GetID(), n3->GetID(), n4->GetID(),
                                  n12->GetID(), n23->GetID(), n31->GetID(),
                                  n14->GetID(), n24->GetID(), n34->GetID());
@@ -1760,7 +1772,7 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function : AddVolumeWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4,
                                                smIdType n12,smIdType n23,smIdType n31,
@@ -1771,7 +1783,7 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(smIdType n1, smIdType n2, smIdTyp
   if(anElem) myScript->AddVolume(ID,n1,n2,n3,n4,n12,n23,n31,n14,n24,n34);
   return anElem;
 }
-        
+
 //=======================================================================
 //function : AddVolumeWithID
 //purpose  : 2d order tetrahedron of 10 nodes
@@ -1783,7 +1795,7 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
                                                const SMDS_MeshNode * n12,
                                                const SMDS_MeshNode * n23,
                                                const SMDS_MeshNode * n31,
-                                               const SMDS_MeshNode * n14, 
+                                               const SMDS_MeshNode * n14,
                                                const SMDS_MeshNode * n24,
                                                const SMDS_MeshNode * n34,
                                                smIdType ID)
@@ -1796,18 +1808,18 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function : AddVolume
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
-                                         const SMDS_MeshNode * n2, 
+                                         const SMDS_MeshNode * n2,
                                          const SMDS_MeshNode * n3,
                                          const SMDS_MeshNode * n4,
-                                         const SMDS_MeshNode * n5, 
+                                         const SMDS_MeshNode * n5,
                                          const SMDS_MeshNode * n12,
                                          const SMDS_MeshNode * n23,
                                          const SMDS_MeshNode * n34,
                                          const SMDS_MeshNode * n41,
-                                         const SMDS_MeshNode * n15, 
+                                         const SMDS_MeshNode * n15,
                                          const SMDS_MeshNode * n25,
                                          const SMDS_MeshNode * n35,
                                          const SMDS_MeshNode * n45)
@@ -1824,7 +1836,7 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function : AddVolumeWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4, smIdType n5,
                                                smIdType n12,smIdType n23,smIdType n34,smIdType n41,
@@ -1837,7 +1849,7 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(smIdType n1, smIdType n2, smIdTyp
                                  n15,n25,n35,n45);
   return anElem;
 }
-        
+
 //=======================================================================
 //function : AddVolumeWithID
 //purpose  : 2d order pyramid of 13 nodes
@@ -1846,12 +1858,12 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
                                                const SMDS_MeshNode * n2,
                                                const SMDS_MeshNode * n3,
                                                const SMDS_MeshNode * n4,
-                                               const SMDS_MeshNode * n5, 
+                                               const SMDS_MeshNode * n5,
                                                const SMDS_MeshNode * n12,
                                                const SMDS_MeshNode * n23,
                                                const SMDS_MeshNode * n34,
                                                const SMDS_MeshNode * n41,
-                                               const SMDS_MeshNode * n15, 
+                                               const SMDS_MeshNode * n15,
                                                const SMDS_MeshNode * n25,
                                                const SMDS_MeshNode * n35,
                                                const SMDS_MeshNode * n45,
@@ -1870,17 +1882,17 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
 //purpose  : 2nd order pentahedron (prism) with 15 nodes
 //=======================================================================
 SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
-                                         const SMDS_MeshNode * n2, 
+                                         const SMDS_MeshNode * n2,
                                          const SMDS_MeshNode * n3,
                                          const SMDS_MeshNode * n4,
-                                         const SMDS_MeshNode * n5, 
-                                         const SMDS_MeshNode * n6, 
+                                         const SMDS_MeshNode * n5,
+                                         const SMDS_MeshNode * n6,
                                          const SMDS_MeshNode * n12,
                                          const SMDS_MeshNode * n23,
-                                         const SMDS_MeshNode * n31, 
+                                         const SMDS_MeshNode * n31,
                                          const SMDS_MeshNode * n45,
                                          const SMDS_MeshNode * n56,
-                                         const SMDS_MeshNode * n64, 
+                                         const SMDS_MeshNode * n64,
                                          const SMDS_MeshNode * n14,
                                          const SMDS_MeshNode * n25,
                                          const SMDS_MeshNode * n36)
@@ -2000,7 +2012,7 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(smIdType n1, smIdType n2, smIdTyp
                                  n45,n56,n64,n14,n25,n36, n1245, n2356, n1346);
   return anElem;
 }
-        
+
 //=======================================================================
 //function : AddVolumeWithID
 //purpose  : 2d order Pentahedron with 18 nodes
@@ -2009,14 +2021,14 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
                                                const SMDS_MeshNode * n2,
                                                const SMDS_MeshNode * n3,
                                                const SMDS_MeshNode * n4,
-                                               const SMDS_MeshNode * n5, 
-                                               const SMDS_MeshNode * n6, 
+                                               const SMDS_MeshNode * n5,
+                                               const SMDS_MeshNode * n6,
                                                const SMDS_MeshNode * n12,
                                                const SMDS_MeshNode * n23,
-                                               const SMDS_MeshNode * n31, 
+                                               const SMDS_MeshNode * n31,
                                                const SMDS_MeshNode * n45,
                                                const SMDS_MeshNode * n56,
-                                               const SMDS_MeshNode * n64, 
+                                               const SMDS_MeshNode * n64,
                                                const SMDS_MeshNode * n14,
                                                const SMDS_MeshNode * n25,
                                                const SMDS_MeshNode * n36,
@@ -2039,21 +2051,21 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
 //purpose  : add quadratic hexahedron
 //=======================================================================
 SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
-                                         const SMDS_MeshNode * n2, 
+                                         const SMDS_MeshNode * n2,
                                          const SMDS_MeshNode * n3,
                                          const SMDS_MeshNode * n4,
-                                         const SMDS_MeshNode * n5, 
-                                         const SMDS_MeshNode * n6, 
+                                         const SMDS_MeshNode * n5,
+                                         const SMDS_MeshNode * n6,
                                          const SMDS_MeshNode * n7,
-                                         const SMDS_MeshNode * n8, 
+                                         const SMDS_MeshNode * n8,
                                          const SMDS_MeshNode * n12,
                                          const SMDS_MeshNode * n23,
                                          const SMDS_MeshNode * n34,
-                                         const SMDS_MeshNode * n41, 
+                                         const SMDS_MeshNode * n41,
                                          const SMDS_MeshNode * n56,
                                          const SMDS_MeshNode * n67,
                                          const SMDS_MeshNode * n78,
-                                         const SMDS_MeshNode * n85, 
+                                         const SMDS_MeshNode * n85,
                                          const SMDS_MeshNode * n15,
                                          const SMDS_MeshNode * n26,
                                          const SMDS_MeshNode * n37,
@@ -2075,7 +2087,7 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
 
 //=======================================================================
 //function : AddVolumeWithID
-//purpose  : 
+//purpose  :
 //=======================================================================
 SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4,
                                                smIdType n5, smIdType n6, smIdType n7, smIdType n8,
@@ -2091,7 +2103,7 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(smIdType n1, smIdType n2, smIdTyp
                                  n56,n67,n78,n85,n15,n26,n37,n48);
   return anElem;
 }
-        
+
 //=======================================================================
 //function : AddVolumeWithID
 //purpose  : 2d order Hexahedrons with 20 nodes
@@ -2100,18 +2112,18 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
                                                const SMDS_MeshNode * n2,
                                                const SMDS_MeshNode * n3,
                                                const SMDS_MeshNode * n4,
-                                               const SMDS_MeshNode * n5, 
-                                               const SMDS_MeshNode * n6, 
+                                               const SMDS_MeshNode * n5,
+                                               const SMDS_MeshNode * n6,
                                                const SMDS_MeshNode * n7,
-                                               const SMDS_MeshNode * n8, 
+                                               const SMDS_MeshNode * n8,
                                                const SMDS_MeshNode * n12,
                                                const SMDS_MeshNode * n23,
                                                const SMDS_MeshNode * n34,
-                                               const SMDS_MeshNode * n41, 
+                                               const SMDS_MeshNode * n41,
                                                const SMDS_MeshNode * n56,
                                                const SMDS_MeshNode * n67,
                                                const SMDS_MeshNode * n78,
-                                               const SMDS_MeshNode * n85, 
+                                               const SMDS_MeshNode * n85,
                                                const SMDS_MeshNode * n15,
                                                const SMDS_MeshNode * n26,
                                                const SMDS_MeshNode * n37,
@@ -2132,25 +2144,25 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
 //=======================================================================
 
 SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
-                                         const SMDS_MeshNode * n2, 
+                                         const SMDS_MeshNode * n2,
                                          const SMDS_MeshNode * n3,
                                          const SMDS_MeshNode * n4,
-                                         const SMDS_MeshNode * n5, 
-                                         const SMDS_MeshNode * n6, 
+                                         const SMDS_MeshNode * n5,
+                                         const SMDS_MeshNode * n6,
                                          const SMDS_MeshNode * n7,
-                                         const SMDS_MeshNode * n8, 
+                                         const SMDS_MeshNode * n8,
                                          const SMDS_MeshNode * n12,
                                          const SMDS_MeshNode * n23,
                                          const SMDS_MeshNode * n34,
-                                         const SMDS_MeshNode * n41, 
+                                         const SMDS_MeshNode * n41,
                                          const SMDS_MeshNode * n56,
                                          const SMDS_MeshNode * n67,
                                          const SMDS_MeshNode * n78,
-                                         const SMDS_MeshNode * n85, 
+                                         const SMDS_MeshNode * n85,
                                          const SMDS_MeshNode * n15,
                                          const SMDS_MeshNode * n26,
                                          const SMDS_MeshNode * n37,
-                                         const SMDS_MeshNode * n48, 
+                                         const SMDS_MeshNode * n48,
                                          const SMDS_MeshNode * n1234,
                                          const SMDS_MeshNode * n1256,
                                          const SMDS_MeshNode * n2367,
index 814b3d450d6732800140f9ad27923b986559c70a..c90ba3e25bec7b0bef4fb88f0235d2535f6bd645 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -609,6 +609,7 @@ class SMESHDS_EXPORT SMESHDS_Mesh : public SMDS_Mesh
   void SetNodeOnEdge  (const SMDS_MeshNode * aNode, const TopoDS_Edge& S, double u=0.);
   void SetNodeOnVertex(const SMDS_MeshNode * aNode, const TopoDS_Vertex & S);
   void UnSetNodeOnShape(const SMDS_MeshNode * aNode);
+  void UnSetElementOnShape(const SMDS_MeshElement * anElt);
   void SetMeshElementOnShape  (const SMDS_MeshElement * anElt, const TopoDS_Shape & S);
   void UnSetMeshElementOnShape(const SMDS_MeshElement * anElt, const TopoDS_Shape & S);
   void SetNodeInVolume(const SMDS_MeshNode * aNode, int Index);
index f78858c72e5a89cfae88a67fa5924cd48df42f40..f1e484397d9542c73463f1d83bf39c4a999e9f4c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 85e30bcfe000e369bf5650cd1c1980da377dea2f..894645965431c73dd7f0f73405d2ef8f897ff9a3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 73007402cebf090d4fd869b6ac36bfb84e90fb65..1a559f77c496ad883898658c56727a5b47eed3ae 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 8550561aaef3f15b7080a7df0afbdcfe0a31651c..741f897fe7caf5c01ee78e36c024d20ec0965130 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d8ddaff8ebb6c7aa3c86a34a58e27fe860b33be6..94c014e9d54ff17d3910d000b378aedb8fa4f00c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2af3a049fc1ef6018a5ecd8a8c3a840ffa231291..6f5fae9a5230e0b99ebfbdb38804c7ab5900c755 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f86e942f348767dfc3de0cf8a2f00d20ab72624c..13038b0c32a07cc1025d00809a6dbc7a5ebd9319 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 12058c24fcca409c431c429961a1c183c34a79b5..89c98359b2d24d6176bfbd0b9131acd80cb3772c 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 69f468820445ef53a781bb6e34b0bff3189fea0c..7387316808bd0ba253079f7213c64d63aeaf4a4b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e03ee9e59abfd75eab1a5caf86dbd745930c6117..0ade526fa0356a39f302261cdb931372cf38ab82 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1bfdd3eb5f11bced7d2c3078d430f5d7f544fe60..ca8d095d67910b365d35e8a5f74d758abb2dacda 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ff728c727b122f0f7f4cd037316443e6deb8eff4..8570bad3965b27b4fd860300fecbeefbfaaaf06a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2d2838c120eb1a071d888777858151bff094537c..6e81cefd1976252a2dc8b07e47cb54dd233aa01a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d38cb5ab7ae0d31a0c2c8ebe3b913afd7e0b4357..bc40205a1f7b7c6b8197710a2e918960a383495f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 46f8e3c25ce1ae468c71d69dadb2354f236b09dd..e5d445ebdfd83faf1af57d2552c6f6366e90bc2e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 587ee89bd2f766ce4e4003e10a303cbed1f01ac9..862ef5de0d00d630926b06aeb03cd315bc56ef18 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -44,6 +44,7 @@ INCLUDE_DIRECTORIES(
   ${PROJECT_SOURCE_DIR}/src/SMESHClient
   ${PROJECT_SOURCE_DIR}/src/MEDWrapper
   ${PROJECT_SOURCE_DIR}/src/SMESH_I
+  ${PROJECT_SOURCE_DIR}/src/SMESH
   ${PROJECT_BINARY_DIR}
   ${PROJECT_BINARY_DIR}/idl
 )
@@ -135,6 +136,7 @@ SET(_moc_HEADERS
   SMESHGUI_MakeNodeAtPointDlg.h
   SMESHGUI_MeshInfosBox.h
   SMESHGUI_Make2DFrom3DOp.h
+  SMESHGUI_MakeFull2DFrom3DOp.h
   SMESHGUI_FindElemByPointDlg.h
   SMESHGUI_MeshOrderDlg.h
   SMESHGUI_CopyMeshDlg.h
@@ -150,6 +152,15 @@ SET(_moc_HEADERS
   SMESHGUI_PreVisualObj.h
   SMESHGUI_MG_ADAPTDRIVER.h
   SMESHGUI_MgAdaptDlg.h
+  SMESHGUI_HomardAdaptDlg.h
+  SMESHGUI_HomardBoundaryDlg.h
+  SMESHGUI_HomardListGroup.h
+  SMESHGUI_RemoveNodeReconnectionDlg.h
+  SMESHGUI_AddNodeOnSegmentDlg.h
+  SMESHGUI_AddNodeOnFaceDlg.h
+  SMESHGUI_InteractiveOp.h
+  SMESHGUI_CreateDualMeshDlg.h
+  SMESHGUI_CreateDualMeshOp.h
 )
 
 # header files / no moc processing
@@ -172,6 +183,7 @@ SET(_other_HEADERS
   SMESHGUI_FileValidator.h
   SMESHGUI_SelectionProxy.h
   SMESH_SMESHGUI.hxx
+  SMESHGUI_HomardUtils.h
 )
 
 # header files / to install
@@ -238,6 +250,7 @@ SET(_other_SOURCES
   SMESHGUI_FileInfoDlg.cxx
   SMESHGUI_MeshInfosBox.cxx
   SMESHGUI_Make2DFrom3DOp.cxx
+  SMESHGUI_MakeFull2DFrom3DOp.cxx
   SMESHGUI_FindElemByPointDlg.cxx
   SMESHGUI_MeshOrderDlg.cxx
   SMESHGUI_CopyMeshDlg.cxx
@@ -267,6 +280,16 @@ SET(_other_SOURCES
   SMESHGUI_IdPreview.cxx
   SMESHGUI_MG_ADAPTDRIVER.cxx
   SMESHGUI_MgAdaptDlg.cxx
+  SMESHGUI_HomardUtils.cxx
+  SMESHGUI_HomardAdaptDlg.cxx
+  SMESHGUI_HomardBoundaryDlg.cxx
+  SMESHGUI_HomardListGroup.cxx
+  SMESHGUI_RemoveNodeReconnectionDlg.cxx
+  SMESHGUI_AddNodeOnSegmentDlg.cxx
+  SMESHGUI_AddNodeOnFaceDlg.cxx
+  SMESHGUI_InteractiveOp.cxx
+  SMESHGUI_CreateDualMeshDlg.cxx
+  SMESHGUI_CreateDualMeshOp.cxx
 )
 
 # sources / to compile
@@ -280,6 +303,9 @@ SET(_ts_RESOURCES
   SMESH_msg_en.ts
   SMESH_msg_fr.ts
   SMESH_msg_ja.ts
+  SMESHGUI_Homard_msg_en.ts
+  SMESHGUI_Homard_msg_fr.ts
+  SMESHGUI_Homard_msg_ja.ts
 )
 
 # --- rules ---
index 531901fd139a319d0759c36f4f90d2e7fd16c0af..bbf36ce1eae6e140b7f6b591d570d37da8ea19b4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -32,6 +32,8 @@
 #include "SMESHGUI.h"
 #include "SMESHGUI_Add0DElemsOnAllNodesDlg.h"
 #include "SMESHGUI_AddMeshElementDlg.h"
+#include "SMESHGUI_AddNodeOnSegmentDlg.h"
+#include "SMESHGUI_AddNodeOnFaceDlg.h"
 #include "SMESHGUI_AddQuadraticElementDlg.h"
 #include "SMESHGUI_BuildCompoundDlg.h"
 #include "SMESHGUI_ClippingDlg.h"
@@ -61,7 +63,9 @@
 #include "SMESHGUI_Hypotheses.h"
 #include "SMESHGUI_HypothesesUtils.h"
 #include "SMESHGUI_MG_ADAPTDRIVER.h"
+#include "SMESHGUI_HomardAdaptDlg.h"
 #include "SMESHGUI_Make2DFrom3DOp.h"
+#include "SMESHGUI_MakeFull2DFrom3DOp.h"
 #include "SMESHGUI_MakeNodeAtPointDlg.h"
 #include "SMESHGUI_Measurements.h"
 #include "SMESHGUI_MergeDlg.h"
@@ -78,6 +82,7 @@
 #include "SMESHGUI_Preferences_ScalarBarDlg.h"
 #include "SMESHGUI_PropertiesDlg.h"
 #include "SMESHGUI_RemoveElementsDlg.h"
+#include "SMESHGUI_RemoveNodeReconnectionDlg.h"
 #include "SMESHGUI_RemoveNodesDlg.h"
 #include "SMESHGUI_RenumberingDlg.h"
 #include "SMESHGUI_ReorientFacesDlg.h"
@@ -93,6 +98,8 @@
 #include "SMESHGUI_SymmetryDlg.h"
 #include "SMESHGUI_TranslationDlg.h"
 #include "SMESHGUI_TransparencyDlg.h"
+#include "SMESHGUI_CreateDualMeshDlg.h"
+#include "SMESHGUI_CreateDualMeshOp.h"
 #include "SMESHGUI_Utils.h"
 #include "SMESHGUI_VTKUtils.h"
 
 #include "SMESH_ControlsDef.hxx"
 #include "SMESH_ScalarBarActor.h"
 #include "SMESH_TypeFilter.hxx"
-#include "SMESH_Component_Generator.hxx"
 
 // SALOME GUI includes
 #include <LightApp_DataOwner.h>
 #include CORBA_CLIENT_HEADER(SMESH_MeshEditor)
 #include CORBA_CLIENT_HEADER(SMESH_Measurements)
 #include CORBA_CLIENT_HEADER(SMESH_Mesh)
+#include CORBA_CLIENT_HEADER(SMESH_Homard)
 
 // Qt includes
 // #define       INCLUDE_MENUITEM_DEF // VSR commented ????????
@@ -1114,6 +1121,8 @@ namespace
       type = QObject::tr( "ASPECTRATIO_3D_ELEMENTS" );
     else if ( dynamic_cast< SMESH::Controls::Warping* >( f.get() ) )
       type = QObject::tr( "WARP_ELEMENTS" );
+    else if (dynamic_cast<SMESH::Controls::Warping3D*>(f.get()))
+      type = QObject::tr("WARP_3D_ELEMENTS");
     else if ( dynamic_cast< SMESH::Controls::Taper* >( f.get() ) )
       type = QObject::tr( "TAPER_ELEMENTS" );
     else if ( dynamic_cast< SMESH::Controls::Skew* >( f.get() ) )
@@ -1156,6 +1165,8 @@ namespace
       type = QObject::tr( "EQUAL_VOLUME" );
     else if ( dynamic_cast< SMESH::Controls::NodeConnectivityNumber* >( f.get() ) )
       type = QObject::tr( "NODE_CONNECTIVITY_NB" );
+    else if ( dynamic_cast< SMESH::Controls::ScaledJacobian* >( f.get() ) )
+      type = QObject::tr( "SCALED_JACOBIAN" );
     return type;
   }
 
@@ -1771,7 +1782,9 @@ namespace
     ActionControl.Bind( SMESHOp::OpMaxElementLength2D,    SMESH_Actor::eMaxElementLength2D );
     ActionControl.Bind( SMESHOp::OpEqualFace,             SMESH_Actor::eCoincidentElems2D );
     ActionControl.Bind( SMESHOp::OpAspectRatio3D,         SMESH_Actor::eAspectRatio3D );
+    ActionControl.Bind( SMESHOp::OpWarping3D,             SMESH_Actor::eWarping3D );
     ActionControl.Bind( SMESHOp::OpVolume,                SMESH_Actor::eVolume3D );
+    ActionControl.Bind( SMESHOp::OpScaledJacobian,        SMESH_Actor::eScaledJacobian );
     ActionControl.Bind( SMESHOp::OpMaxElementLength3D,    SMESH_Actor::eMaxElementLength3D );
     ActionControl.Bind( SMESHOp::OpBareBorderVolume,      SMESH_Actor::eBareBorderVolume );
     ActionControl.Bind( SMESHOp::OpOverConstrainedVolume, SMESH_Actor::eOverConstrainedVolume );
@@ -2083,6 +2096,19 @@ void SMESHGUI::OnEditDelete()
         aStudyBuilder->RemoveObjectWithChildren( SO );
       }
       else {// default action: remove SObject from the study
+        // Find Sub-Meshes and Group and delete corresopning visual objects and actors
+        _PTR(ChildIterator) it1 = aStudy->NewChildIterator(SO);
+        for (it1->InitEx(false); it1->More(); it1->Next()) {
+          _PTR(SObject) SObj = it1->Value();
+          if (!SObj) continue;
+          if (SObj->FindAttribute(anAttr, "AttributeIOR")) {
+            SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(SMESH::SObjectToObject(SObj));
+            SMESH::SMESH_subMesh_var   aSubMesh = SMESH::SMESH_subMesh::_narrow(SMESH::SObjectToObject(SObj));
+            if (!aGroup->_is_nil() || !aSubMesh->_is_nil()) {
+              SMESH::RemoveVisualObjectWithActors(SObj->GetID().c_str(), true);
+            }
+          }
+        }
         // san - it's no use opening a transaction here until UNDO/REDO is provided in SMESH
         //SUIT_Operation *op = new SALOMEGUI_ImportOperation(myActiveStudy);
         //op->start();
@@ -2124,15 +2150,8 @@ SMESHGUI::SMESHGUI() : SalomeApp_Module( "SMESH" )
   if ( CORBA::is_nil( myComponentSMESH ) )
   {
     CORBA::Boolean anIsEmbeddedMode;
-    SALOME_NamingService_Abstract *ns = SalomeApp_Application::namingService();
-    if( dynamic_cast<SALOME_NamingService *>(ns) )
-      myComponentSMESH = SMESH_Client::GetSMESHGen(getApp()->orb(),anIsEmbeddedMode);
-    else
-      {
-        Engines::EngineComponent_var comp = RetrieveSMESHInstance();
-        myComponentSMESH = SMESH::SMESH_Gen::_narrow(comp);
-      }
-    
+    myComponentSMESH = SMESH_Client::GetSMESHGen(getApp()->orb(),anIsEmbeddedMode);
+
     //MESSAGE("-------------------------------> anIsEmbeddedMode=" << anIsEmbeddedMode);
 
     //  0019923: EDF 765 SMESH : default values of hypothesis
@@ -2541,6 +2560,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
   SVTK_ViewWindow* vtkwnd = dynamic_cast<SVTK_ViewWindow*>( view );
 
   //QAction* act = action( theCommandID );
+  bool logAction(false);
 
   switch (theCommandID) {
   case SMESHOp::OpDelete:
@@ -2858,6 +2878,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
     break;
   case SMESHOp::OpCopyMesh:
     {
+      logAction = true;
       if (isStudyLocked()) break;
       EmitSignalDeactivateDialog();
       ( new SMESHGUI_CopyMeshDlg( this ) )->show();
@@ -3014,11 +3035,36 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
       ( new SMESHGUI_MG_ADAPTDRIVER( this, model, isCreation ))->show();
       break;
     }
+#endif
+#ifndef DISABLE_HOMARD_ADAPT
+  case SMESHOp::OpHomardAdapt:
+    {
+      if ( isStudyLocked() )
+        break;
+      EmitSignalDeactivateDialog();
+
+      SALOME::GenericObj_wrap< SMESHHOMARD::HOMARD_Gen > homardGen;
+      try {
+        homardGen = GetSMESHGen()->CreateHOMARD_ADAPT();
+      }
+      catch ( const SALOME::SALOME_Exception& S_ex ) {
+        SUIT_MessageBox::critical(SMESHGUI::desktop(),
+                                  QObject::tr("SMESH_ERROR"),
+                                  QObject::tr(S_ex.details.text.in()));
+      }
+      if (!homardGen->_is_nil()) {
+        SMESHGUI_HomardAdaptDlg *aDlg = new SMESHGUI_HomardAdaptDlg(homardGen);
+        aDlg->show();
+      }
+      break;
+    }
 #endif
   // Adaptation - end
   case SMESHOp::OpSplitBiQuadratic:
   case SMESHOp::OpConvertMeshToQuadratic:
+  case SMESHOp::OpCreateDualMesh:
   case SMESHOp::OpCreateBoundaryElements: // create 2D mesh from 3D
+  case SMESHOp::OpCreate2DElements: // create full 2D mesh from 3D
   case SMESHOp::OpReorientFaces:
   case SMESHOp::OpCreateGeometryGroup:
     {
@@ -3518,6 +3564,14 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
       }
       break;
     }
+  case SMESHOp::OpRemoveNodeWithReconn:
+    {
+      if(isStudyLocked()) break;
+      if ( warnOnGeomModif() )
+        break; // action forbidden as geometry modified
+      startOperation( SMESHOp::OpRemoveNodeWithReconn );
+      break;
+    }
   case SMESHOp::OpRemoveElements:                                    // REMOVES ELEMENTS
     {
       if(isStudyLocked()) break;
@@ -3650,6 +3704,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
     }
   case SMESHOp::OpTranslation:
     {
+      logAction = true;
       if(isStudyLocked()) break;
       if ( warnOnGeomModif() )
         break; // action forbidden as geometry modified
@@ -3665,6 +3720,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
     }
   case SMESHOp::OpRotation:
     {
+      logAction = true;
       if(isStudyLocked()) break;
       if ( warnOnGeomModif() )
         break; // action forbidden as geometry modified
@@ -3680,6 +3736,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
     }
   case SMESHOp::OpSymmetry:
     {
+      logAction = true;
       if(isStudyLocked()) break;
       if ( warnOnGeomModif() )
         break; // action forbidden as geometry modified
@@ -3695,6 +3752,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
     }
   case SMESHOp::OpScale:
     {
+      logAction = true;
       if(isStudyLocked()) break;
       if ( warnOnGeomModif() )
         break; // action forbidden as geometry modified
@@ -3711,6 +3769,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
 
   case SMESHOp::OpOffset:
     {
+      logAction = true;
       if(isStudyLocked()) break;
       if ( warnOnGeomModif() )
         break; // action forbidden as geometry modified
@@ -3727,6 +3786,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
 
   case SMESHOp::OpSewing:
     {
+      logAction = true;
       if(isStudyLocked()) break;
       if ( warnOnGeomModif() )
         break; // action forbidden as geometry modified
@@ -3776,6 +3836,24 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
     startOperation( SMESHOp::OpMoveNode );
     break;
 
+  case SMESHOp::OpMoveNodeInteractive:
+    if ( warnOnGeomModif() )
+      break; // action forbidden as geometry modified
+    startOperation( SMESHOp::OpMoveNodeInteractive );
+    break;
+
+  case SMESHOp::OpSplitEdgeInteract:
+    if ( warnOnGeomModif() )
+      break; // action forbidden as geometry modified
+    startOperation( SMESHOp::OpSplitEdgeInteract );
+    break;
+
+  case SMESHOp::OpSplitFaceInteract:
+    if ( warnOnGeomModif() )
+      break; // action forbidden as geometry modified
+    startOperation( SMESHOp::OpSplitFaceInteract );
+    break;
+
   case SMESHOp::OpDuplicateNodes:
     {
       if(isStudyLocked()) break;
@@ -3839,7 +3917,9 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
   case SMESHOp::OpMaxElementLength2D:
   case SMESHOp::OpEqualFace:
   case SMESHOp::OpAspectRatio3D:
+  case SMESHOp::OpWarping3D:
   case SMESHOp::OpVolume:
+  case SMESHOp::OpScaledJacobian:
   case SMESHOp::OpMaxElementLength3D:
   case SMESHOp::OpBareBorderVolume:
   case SMESHOp::OpOverConstrainedVolume:
@@ -3936,6 +4016,14 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
 
   anApp->updateActions(); //SRN: To update a Save button in the toolbar
   //updateObjBrowser();
+  if(logAction)
+  {
+    QAction* anAction = action( theCommandID );
+    CAM_Application::logStructuredUserEvent( "Mesh",
+                                             "Operation",
+                                             anAction->text(),
+                                             "activated" );
+  }
   return true;
 }
 
@@ -4146,11 +4234,13 @@ void SMESHGUI::initialize( CAM_Application* app )
   createSMESHAction( SMESHOp::OpMaxElementLength2D,    "MAX_ELEMENT_LENGTH_2D",   "ICON_MAX_ELEMENT_LENGTH_2D",   0, true );
   createSMESHAction( SMESHOp::OpEqualFace,             "EQUAL_FACE",              "ICON_EQUAL_FACE",    0, true );
   createSMESHAction( SMESHOp::OpAspectRatio3D,         "ASPECT_3D",               "ICON_ASPECT_3D",     0, true );
+  createSMESHAction( SMESHOp::OpWarping3D,             "WARP_3D",                 "ICON_WARP",          0, true);
   createSMESHAction( SMESHOp::OpVolume,                "VOLUME_3D",               "ICON_VOLUME_3D",     0, true );
   createSMESHAction( SMESHOp::OpMaxElementLength3D,    "MAX_ELEMENT_LENGTH_3D",   "ICON_MAX_ELEMENT_LENGTH_3D",   0, true );
   createSMESHAction( SMESHOp::OpBareBorderVolume,      "BARE_BORDER_VOLUME",      "ICON_BARE_BORDER_VOLUME",      0, true );
   createSMESHAction( SMESHOp::OpOverConstrainedVolume, "OVER_CONSTRAINED_VOLUME", "ICON_OVER_CONSTRAINED_VOLUME", 0, true );
   createSMESHAction( SMESHOp::OpEqualVolume,           "EQUAL_VOLUME",            "ICON_EQUAL_VOLUME",  0, true );
+  createSMESHAction( SMESHOp::OpScaledJacobian,        "SCALED_JACOBIAN",         "ICON_SCALED_JACOBIAN",         0, true );
   createSMESHAction( SMESHOp::OpOverallMeshQuality,    "OVERALL_MESH_QUALITY",    "ICON_OVL_MESH_QUALITY" );
 
   createSMESHAction( SMESHOp::OpNode,                   "NODE",            "ICON_DLG_NODE" );
@@ -4183,6 +4273,7 @@ void SMESHGUI::initialize( CAM_Application* app )
   createSMESHAction( SMESHOp::OpRemoveNodes,       "REMOVE_NODES",          "ICON_DLG_REM_NODE" );
   createSMESHAction( SMESHOp::OpRemoveElements,    "REMOVE_ELEMENTS",       "ICON_DLG_REM_ELEMENT" );
   createSMESHAction( SMESHOp::OpRemoveOrphanNodes, "REMOVE_ORPHAN_NODES",   "ICON_DLG_REM_ORPHAN_NODES" );
+  createSMESHAction( SMESHOp::OpRemoveNodeWithReconn, "REMOVE_NODE_RECON",  "ICON_REM_NODE_RECON" );
   createSMESHAction( SMESHOp::OpClearMesh,         "CLEAR_MESH",            "ICON_CLEAR_MESH" );
 
   //createSMESHAction( SMESHOp::OpRenumberingNodes,    "RENUM_NODES",     "ICON_DLG_RENUMBERING_NODES" );
@@ -4197,6 +4288,9 @@ void SMESHGUI::initialize( CAM_Application* app )
   createSMESHAction( SMESHOp::OpMergeNodes,             "MERGE",           "ICON_SMESH_MERGE_NODES" );
   createSMESHAction( SMESHOp::OpMergeElements,          "MERGE_ELEMENTS",  "ICON_DLG_MERGE_ELEMENTS" );
   createSMESHAction( SMESHOp::OpMoveNode,               "MESH_THROU_POINT","ICON_DLG_MOVE_NODE" );
+  createSMESHAction( SMESHOp::OpMoveNodeInteractive,    "MOVE_NODE_INTRCT","ICON_DLG_MOVE_NODE_INTERACTIVE" );
+  createSMESHAction( SMESHOp::OpSplitEdgeInteract,  "SPLIT_DIAG_INTRC","ICON_SPLIT_DIAG_INTERACTIVE" );
+  createSMESHAction( SMESHOp::OpSplitFaceInteract,      "SPLIT_FACE_INTRC","ICON_SPLIT_FACE_INTERACTIVE" );
   createSMESHAction( SMESHOp::OpDuplicateNodes,         "DUPLICATE_NODES", "ICON_SMESH_DUPLICATE_NODES" );
   createSMESHAction( SMESHOp::OpDiagonalInversion,      "INV",             "ICON_DLG_MESH_DIAGONAL" );
   createSMESHAction( SMESHOp::OpUnionOfTwoTriangle,     "UNION2",          "ICON_UNION2TRI" );
@@ -4212,7 +4306,9 @@ void SMESHGUI::initialize( CAM_Application* app )
   createSMESHAction( SMESHOp::OpRevolution,             "REVOLUTION",      "ICON_REVOLUTION" );
   createSMESHAction( SMESHOp::OpPatternMapping,         "MAP",             "ICON_MAP" );
   createSMESHAction( SMESHOp::OpConvertMeshToQuadratic, "CONV_TO_QUAD",    "ICON_CONV_TO_QUAD" );
+  createSMESHAction( SMESHOp::OpCreateDualMesh,         "CREATE_DUAL_MESH","ICON_CREATE_DUAL_MESH" );
   createSMESHAction( SMESHOp::OpCreateBoundaryElements, "2D_FROM_3D",      "ICON_2D_FROM_3D" );
+  createSMESHAction( SMESHOp::OpCreate2DElements,    "2D_FROM_3D_ELEMENTS","ICON_2D_FROM_3D_ELEMENTS" );
 
   createSMESHAction( SMESHOp::OpReset,               "RESET" );
   createSMESHAction( SMESHOp::OpScalarBarProperties, "SCALAR_BAR_PROP" );
@@ -4252,6 +4348,9 @@ void SMESHGUI::initialize( CAM_Application* app )
   // Adaptation - begin
 #ifndef DISABLE_MG_ADAPT
   createSMESHAction( SMESHOp::OpMGAdapt, "MG_ADAPT", "ICON_MG_ADAPT" );
+#endif
+#ifndef DISABLE_HOMARD_ADAPT
+  createSMESHAction( SMESHOp::OpHomardAdapt, "HOMARD_ADAPT", "ICON_HOMARD_ADAPT" );
 #endif
   // Adaptation - end
 
@@ -4281,9 +4380,9 @@ void SMESHGUI::initialize( CAM_Application* app )
                << SMESHOp::OpMinimumAngle << SMESHOp::OpWarpingAngle << SMESHOp::OpSkew
                << SMESHOp::OpMaxElementLength2D << SMESHOp::OpBareBorderFace
                << SMESHOp::OpOverConstrainedFace << SMESHOp::OpEqualFace                // face controls
-               << SMESHOp::OpAspectRatio3D << SMESHOp::OpVolume
+               << SMESHOp::OpAspectRatio3D << SMESHOp::OpVolume << SMESHOp::OpWarping3D
                << SMESHOp::OpMaxElementLength3D << SMESHOp::OpBareBorderVolume
-               << SMESHOp::OpOverConstrainedVolume << SMESHOp::OpEqualVolume;           // volume controls
+               << SMESHOp::OpOverConstrainedVolume << SMESHOp::OpEqualVolume << SMESHOp::OpScaledJacobian; // volume controls
   QActionGroup* aCtrlGroup = new QActionGroup( application()->desktop() );
   aCtrlGroup->setExclusive( true );
   for( int i = 0; i < aCtrlActions.size(); i++ )
@@ -4296,7 +4395,7 @@ void SMESHGUI::initialize( CAM_Application* app )
       meshId    = createMenu( tr( "MEN_MESH" ),    -1, 70, 10 ),
       ctrlId    = createMenu( tr( "MEN_CTRL" ),    -1, 60, 10 ),
       modifyId  = createMenu( tr( "MEN_MODIFY" ),  -1, 40, 10 ),
-#ifndef DISABLE_MG_ADAPT
+#if !defined(DISABLE_MG_ADAPT) || !defined(DISABLE_HOMARD_ADAPT)
       adaptId   = createMenu( tr( "MEN_ADAPT" ),   -1, 80, 10 ),
 #endif
       measureId = createMenu( tr( "MEN_MEASURE" ), -1, 50, 10 ),
@@ -4345,6 +4444,7 @@ void SMESHGUI::initialize( CAM_Application* app )
   createMenu( SMESHOp::OpEditMeshOrSubMesh,    meshId, -1 );
   createMenu( SMESHOp::OpBuildCompoundMesh,    meshId, -1 );
   createMenu( SMESHOp::OpCopyMesh,             meshId, -1 );
+  createMenu( SMESHOp::OpCreateDualMesh,       meshId, -1 );
   createMenu( separator(),                     meshId, -1 );
   createMenu( SMESHOp::OpCompute,              meshId, -1 );
   createMenu( SMESHOp::OpPreCompute,           meshId, -1 );
@@ -4393,11 +4493,13 @@ void SMESHGUI::initialize( CAM_Application* app )
   createMenu( SMESHOp::OpEqualFace,             faceId,   -1 );
   createMenu( SMESHOp::OpDeflection2D,          faceId,   -1 );
   createMenu( SMESHOp::OpAspectRatio3D,         volumeId, -1 );
+  createMenu( SMESHOp::OpWarping3D,             volumeId, -1 );
   createMenu( SMESHOp::OpVolume,                volumeId, -1 );
   createMenu( SMESHOp::OpMaxElementLength3D,    volumeId, -1 );
   createMenu( SMESHOp::OpBareBorderVolume,      volumeId, -1 );
   createMenu( SMESHOp::OpOverConstrainedVolume, volumeId, -1 );
   createMenu( SMESHOp::OpEqualVolume,           volumeId, -1 );
+  createMenu( SMESHOp::OpScaledJacobian,        volumeId, -1 );
   createMenu( separator(),                      ctrlId,   -1 );
   createMenu( SMESHOp::OpReset,                 ctrlId,   -1 );
   createMenu( separator(),                      ctrlId,   -1 );
@@ -4430,14 +4532,18 @@ void SMESHGUI::initialize( CAM_Application* app )
   createMenu( SMESHOp::OpBiQuadraticPentahedron, addId, -1 );
   createMenu( SMESHOp::OpQuadraticHexahedron,    addId, -1 );
   createMenu( SMESHOp::OpTriQuadraticHexahedron, addId, -1 );
-
-  createMenu( SMESHOp::OpRemoveNodes,       removeId, -1 );
-  createMenu( SMESHOp::OpRemoveElements,    removeId, -1 );
-  createMenu( SMESHOp::OpRemoveOrphanNodes, removeId, -1 );
-  createMenu( separator(),                  removeId, -1 );
-  createMenu( SMESHOp::OpDeleteGroup,       removeId, -1 );
-  createMenu( separator(),                  removeId, -1 );
-  createMenu( SMESHOp::OpClearMesh,         removeId, -1 );
+  createMenu( separator(),                       addId, -1 );
+  createMenu( SMESHOp::OpSplitEdgeInteract,      addId, -1 );
+  createMenu( SMESHOp::OpSplitFaceInteract,      addId, -1 );
+
+  createMenu( SMESHOp::OpRemoveNodes,          removeId, -1 );
+  createMenu( SMESHOp::OpRemoveElements,       removeId, -1 );
+  createMenu( SMESHOp::OpRemoveOrphanNodes,    removeId, -1 );
+  createMenu( SMESHOp::OpRemoveNodeWithReconn, removeId, -1 );
+  createMenu( separator(),                     removeId, -1 );
+  createMenu( SMESHOp::OpDeleteGroup,          removeId, -1 );
+  createMenu( separator(),                     removeId, -1 );
+  createMenu( SMESHOp::OpClearMesh,            removeId, -1 );
 
   //createMenu( SMESHOp::OpRenumberingNodes,    renumId, -1 );
   //createMenu( SMESHOp::OpRenumberingElements, renumId, -1 );
@@ -4454,6 +4560,7 @@ void SMESHGUI::initialize( CAM_Application* app )
 
   createMenu( SMESHOp::OpConvertMeshToQuadratic, modifyId, -1 );
   createMenu( SMESHOp::OpCreateBoundaryElements, modifyId, -1 );
+  createMenu( SMESHOp::OpCreate2DElements,       modifyId, -1 );
   createMenu( SMESHOp::OpExtrusion,              modifyId, -1 );
   createMenu( SMESHOp::OpExtrusionAlongAPath,    modifyId, -1 );
   createMenu( SMESHOp::OpRevolution,             modifyId, -1 );
@@ -4472,6 +4579,9 @@ void SMESHGUI::initialize( CAM_Application* app )
   // Adaptation - begin
 #ifndef DISABLE_MG_ADAPT
   createMenu( SMESHOp::OpMGAdapt, adaptId, -1 );
+#endif
+#ifndef DISABLE_HOMARD_ADAPT
+  createMenu( SMESHOp::OpHomardAdapt, adaptId, -1 );
 #endif
   // Adaptation - end
 
@@ -4543,11 +4653,13 @@ void SMESHGUI::initialize( CAM_Application* app )
 
   int ctrl3dTb = createTool( tr( "TB_CTRL3D" ), QString( "SMESHVolumeControlsToolbar" ) ) ;
   createTool( SMESHOp::OpAspectRatio3D,         ctrl3dTb );
+  createTool( SMESHOp::OpWarping3D,             ctrl3dTb );
   createTool( SMESHOp::OpVolume,                ctrl3dTb );
   createTool( SMESHOp::OpMaxElementLength3D,    ctrl3dTb );
   createTool( SMESHOp::OpBareBorderVolume,      ctrl3dTb );
   createTool( SMESHOp::OpOverConstrainedVolume, ctrl3dTb );
   createTool( SMESHOp::OpEqualVolume,           ctrl3dTb );
+  createTool( SMESHOp::OpScaledJacobian,        ctrl3dTb );
 
   int addElemTb = createTool( tr( "TB_ADD" ), QString( "SMESHAddElementToolbar" ) ) ;
   createTool( SMESHOp::OpNode,              addElemTb );
@@ -4603,6 +4715,7 @@ void SMESHGUI::initialize( CAM_Application* app )
   int modifyTb = createTool( tr( "TB_MODIFY" ), QString( "SMESHModificationToolbar" ) ) ;
   createTool( SMESHOp::OpConvertMeshToQuadratic, modifyTb );
   createTool( SMESHOp::OpCreateBoundaryElements, modifyTb );
+  createTool( SMESHOp::OpCreate2DElements,       modifyTb );
   createTool( SMESHOp::OpExtrusion,              modifyTb );
   createTool( SMESHOp::OpExtrusionAlongAPath,    modifyTb );
   createTool( SMESHOp::OpRevolution,             modifyTb );
@@ -4618,10 +4731,21 @@ void SMESHGUI::initialize( CAM_Application* app )
   createTool( SMESHOp::OpSmoothing,              modifyTb );
   createTool( SMESHOp::OpPatternMapping,         modifyTb );
 
+  int interactTb = createTool( tr( "TB_INTERACT" ), QString( "SMESHInteractiveToolbar" ) ) ;
+  createTool( SMESHOp::OpMoveNodeInteractive,   interactTb );
+  createTool( SMESHOp::OpRemoveNodeWithReconn,  interactTb );
+  createTool( SMESHOp::OpSplitEdgeInteract, interactTb );
+  createTool( SMESHOp::OpSplitFaceInteract,     interactTb );
+
   // Adaptation - begin
-#ifndef DISABLE_MG_ADAPT
+#if !defined(DISABLE_MG_ADAPT) || !defined(DISABLE_HOMARD_ADAPT)
   int adaptTb = createTool( tr( "TB_ADAPTATION" ), QString( "SMESHAdaptationToolbar" ) ) ;
+#endif
+#ifndef DISABLE_MG_ADAPT
   createTool( SMESHOp::OpMGAdapt, adaptTb );
+#endif
+#ifndef DISABLE_HOMARD_ADAPT
+  createTool( SMESHOp::OpHomardAdapt, adaptTb );
 #endif
   // Adaptation - end
 
@@ -4706,11 +4830,14 @@ void SMESHGUI::initialize( CAM_Application* app )
   createPopupItem( SMESHOp::OpCreateBoundaryElements, OB, mesh_group, "&& selcount=1 && dim>=2");
 
   // Adaptation - begin
-#ifndef DISABLE_MG_ADAPT
   popupMgr()->insert( separator(), -1, 0 );
+#ifndef DISABLE_MG_ADAPT
   createPopupItem( SMESHOp::OpMGAdapt, OB, mesh );
-  popupMgr()->insert( separator(), -1, 0 );
 #endif
+#ifndef DISABLE_HOMARD_ADAPT
+  createPopupItem( SMESHOp::OpHomardAdapt, OB, mesh );
+#endif
+  popupMgr()->insert( separator(), -1, 0 );
   // Adaptation - end
 
   QString only_one_non_empty = QString( " && %1=1 && numberOfNodes>0" ).arg( dc );
@@ -4991,6 +5118,10 @@ void SMESHGUI::initialize( CAM_Application* app )
   popupMgr()->setRule( action( SMESHOp::OpAspectRatio3D ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
   popupMgr()->setRule( action( SMESHOp::OpAspectRatio3D ), "controlMode = 'eAspectRatio3D'", QtxPopupMgr::ToggleRule );
 
+  popupMgr()->insert ( action( SMESHOp::OpWarping3D ), aSubId, -1 );
+  popupMgr()->setRule( action( SMESHOp::OpWarping3D ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
+  popupMgr()->setRule( action( SMESHOp::OpWarping3D), "controlMode = 'eWarping3D'", QtxPopupMgr::ToggleRule );
+
   popupMgr()->insert ( action( SMESHOp::OpVolume ), aSubId, -1 );
   popupMgr()->setRule( action( SMESHOp::OpVolume ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
   popupMgr()->setRule( action( SMESHOp::OpVolume ), "controlMode = 'eVolume3D'", QtxPopupMgr::ToggleRule );
@@ -5011,6 +5142,10 @@ void SMESHGUI::initialize( CAM_Application* app )
   popupMgr()->setRule( action( SMESHOp::OpEqualVolume ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
   popupMgr()->setRule( action( SMESHOp::OpEqualVolume ), "controlMode = 'eCoincidentElems3D'", QtxPopupMgr::ToggleRule );
 
+  popupMgr()->insert ( action( SMESHOp::OpScaledJacobian  ), aSubId, -1 );
+  popupMgr()->setRule( action( SMESHOp::OpScaledJacobian ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
+  popupMgr()->setRule( action( SMESHOp::OpScaledJacobian ), "controlMode = 'eScaledJacobian'", QtxPopupMgr::ToggleRule );
+
   popupMgr()->insert( separator(), anId, -1 );
 
   popupMgr()->insert( action( SMESHOp::OpShowScalarBar ), anId, -1 );
@@ -5938,6 +6073,12 @@ LightApp_Operation* SMESHGUI::createOperation( const int id ) const
   case SMESHOp::OpCreateBoundaryElements: // create 2D mesh as boundary on 3D
     op = new SMESHGUI_Make2DFrom3DOp();
     break;
+  case SMESHOp::OpCreateDualMesh:
+    op = new SMESHGUI_CreateDualMeshOp();
+    break;
+  case SMESHOp::OpCreate2DElements:
+    op = new SMESHGUI_MakeFull2DFrom3DOp();
+    break;
   case SMESHOp::OpReorientFaces:
     op = new SMESHGUI_ReorientFacesOp();
     break;
@@ -5977,6 +6118,18 @@ LightApp_Operation* SMESHGUI::createOperation( const int id ) const
   case SMESHOp::OpMoveNode: // Make mesh pass through point
     op = new SMESHGUI_MakeNodeAtPointOp();
     break;
+  case SMESHOp::OpMoveNodeInteractive: // Make mesh pass through point / by mouse
+    op = new SMESHGUI_MakeNodeAtPointOp( 2 );
+    break;
+  case SMESHOp::OpRemoveNodeWithReconn:
+    op = new SMESHGUI_RemoveNodeReconnectionOp();
+    break;
+  case SMESHOp::OpSplitEdgeInteract:
+    op = new SMESHGUI_AddNodeOnSegmentOp();
+    break;
+  case SMESHOp::OpSplitFaceInteract:
+    op = new SMESHGUI_AddNodeOnFaceOp();
+    break;
   case SMESHOp::OpElem0DOnElemNodes: // Create 0D elements on all nodes
     op = new SMESHGUI_Add0DElemsOnAllNodesOp();
     break;
index a0ce83cdca097b1696203f3aa7e8065d9150f3e6..08ecbdf51e117f3ac57a4803e5453334c7294960 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -212,6 +212,7 @@ private:
                                                   const bool = false);
 
   void                            connectView( const SUIT_ViewWindow* );
+  void                            logSmeshGUIEvent(int theCommandID);
  
 
 private :
index 3ecc872858f0dcae0049690fcb5e849eb85aab15..143b187b6a7b769bccf0fadd649492a5dc2a963b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0bd72e3d257eb6708a5d2ec82f4457743017a434..bb98fbfd4b2d101c5270e7cc1993df0bcb55bb9e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 37b401f79e97534ac6f5df1c4cfac679b56f4184..7d38aa51084a1e8aecc48df74529d59a9d8f302b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 7874e93601a5ea2ccddcff2529956f65729b422b..4d739b2716ee27a22f6d9d9b4c2cc0e39e4ccd73 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/src/SMESHGUI/SMESHGUI_AddNodeOnFaceDlg.cxx b/src/SMESHGUI/SMESHGUI_AddNodeOnFaceDlg.cxx
new file mode 100644 (file)
index 0000000..529d4e3
--- /dev/null
@@ -0,0 +1,786 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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   : SMESHGUI_AddNodeOnFaceDlg.cxx
+// Author : Edward AGAPOV, Open CASCADE S.A.S.
+//
+#include "SMESHGUI_AddNodeOnFaceDlg.h"
+
+#include "SMESHGUI.h"
+#include "SMESHGUI_Filter.h"
+#include "SMESHGUI_IdValidator.h"
+#include "SMESHGUI_MeshEditPreview.h"
+#include "SMESHGUI_MeshUtils.h"
+#include "SMESHGUI_SpinBox.h"
+#include "SMESHGUI_VTKUtils.h"
+
+#include <SMDS_Mesh.hxx>
+#include <SMESH_Actor.h>
+#include <SMESH_ActorUtils.h>
+#include <SMESH_TypeDefs.hxx>
+#include <SMESH_MeshAlgos.hxx>
+
+// SALOME GUI includes
+#include <LightApp_SelectionMgr.h>
+#include <SALOME_ListIO.hxx>
+#include <SUIT_Desktop.h>
+#include <SVTK_ViewModel.h>
+#include <SVTK_ViewWindow.h>
+#include <SalomeApp_Tools.h>
+#include <SalomeApp_TypeFilter.h>
+#include <SUIT_ResourceMgr.h>
+#include <SUIT_OverrideCursor.h>
+#include <SUIT_MessageBox.h>
+#include <SVTK_RenderWindowInteractor.h>
+#include <SVTK_Renderer.h>
+#include <SVTK_Event.h>
+
+// Qt includes
+#include <QApplication>
+#include <QGroupBox>
+#include <QGridLayout>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QLineEdit>
+#include <QPushButton>
+#include <QLabel>
+#include <QRadioButton>
+#include <QCheckBox>
+#include <QButtonGroup>
+
+// VTK includes
+#include <vtkProperty.h>
+#include <vtkCellPicker.h>
+#include <vtkInteractorStyle.h>
+#include <vtkGenericRenderWindowInteractor.h>
+#include <vtkInteractorObserver.h>
+
+
+// IDL includes
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Mesh)
+#include CORBA_SERVER_HEADER(SMESH_MeshEditor)
+
+#define SPACING 6
+#define MARGIN  11
+
+#define TOLERANCE 1e-3
+
+//=======================================================================
+/*!
+ * \brief Dialog to publish a sub-shape of the mesh main shape
+ *        by selecting mesh elements
+ */
+//=======================================================================
+
+SMESHGUI_AddNodeOnFaceDlg::SMESHGUI_AddNodeOnFaceDlg()
+  : SMESHGUI_Dialog( 0, false, true )
+{
+  setWindowTitle(tr("CAPTION"));
+
+  QVBoxLayout* aDlgLay = new QVBoxLayout (mainFrame());
+  aDlgLay->setMargin(0);
+  aDlgLay->setSpacing(SPACING);
+  myMainFrame = createMainFrame(mainFrame());
+
+  aDlgLay->addWidget(myMainFrame);
+
+  aDlgLay->setStretchFactor(myMainFrame, 1);
+}
+
+//=======================================================================
+// function : createMainFrame()
+// purpose  : Create frame containing dialog's input fields
+//=======================================================================
+
+QWidget* SMESHGUI_AddNodeOnFaceDlg::createMainFrame (QWidget* theParent)
+{
+  QWidget* aFrame = new QWidget(theParent);
+
+  SUIT_ResourceMgr* rm = SMESH::GetResourceMgr( SMESHGUI::GetSMESHGUI() );
+  QPixmap iconSelect( rm->loadPixmap("SMESH", tr("ICON_SELECT")));
+
+  // Face to split
+
+  QGroupBox* faceGrp = new QGroupBox(tr("FACE_GROUP"), aFrame);
+  faceGrp->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  QLabel* idLabel = new QLabel(tr("FACE_ID"), faceGrp);
+  myIdBtn = new QPushButton(faceGrp);
+  myIdBtn->setIcon(iconSelect);
+  myIdBtn->setCheckable(true);
+  myId = new QLineEdit(faceGrp);
+  myId->setValidator(new SMESHGUI_IdValidator(this, 1));
+
+  QGridLayout* faceGrpLayout = new QGridLayout(faceGrp);
+  faceGrpLayout->setSpacing(SPACING);
+  faceGrpLayout->setMargin(MARGIN);
+
+  faceGrpLayout->addWidget( idLabel, 0, 0 );
+  faceGrpLayout->addWidget( myIdBtn, 0, 1 );
+  faceGrpLayout->addWidget( myId,    0, 2 );
+
+  // Node location
+
+  QGroupBox* xyzGrp = new QGroupBox(tr("XYZ_GROUP"), aFrame);
+  xyzGrp->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  myDestBtn = new QPushButton(xyzGrp);
+  myDestBtn->setIcon(iconSelect);
+  myDestBtn->setCheckable(true);
+
+  QLabel* locationXLabel = new QLabel(tr("SMESH_X"), xyzGrp);
+  myDestinationX = new SMESHGUI_SpinBox(xyzGrp);
+  QLabel* locationYLabel = new QLabel(tr("SMESH_Y"), xyzGrp);
+  myDestinationY = new SMESHGUI_SpinBox(xyzGrp);
+  QLabel* locationZLabel = new QLabel(tr("SMESH_Z"), xyzGrp);
+  myDestinationZ = new SMESHGUI_SpinBox(xyzGrp);
+
+  myDestinationX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, "length_precision");
+  myDestinationY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, "length_precision");
+  myDestinationZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, "length_precision");
+
+  myPointOnFace = new QCheckBox(tr("XYZ_NODE_ON_FACE"), xyzGrp);
+
+  QGridLayout* aDestLayout = new QGridLayout(xyzGrp);
+  aDestLayout->setMargin(MARGIN);
+  aDestLayout->setSpacing(SPACING);
+  aDestLayout->addWidget(myDestBtn, 0, 0);
+  aDestLayout->addWidget(locationXLabel, 0, 1);
+  aDestLayout->addWidget(myDestinationX, 0, 2);
+  aDestLayout->addWidget(locationYLabel, 0, 3);
+  aDestLayout->addWidget(myDestinationY, 0, 4);
+  aDestLayout->addWidget(locationZLabel, 0, 5);
+  aDestLayout->addWidget(myDestinationZ, 0, 6);
+  aDestLayout->setColumnStretch(2, 1);
+  aDestLayout->setColumnStretch(4, 1);
+  aDestLayout->setColumnStretch(6, 1);
+  aDestLayout->addWidget(myPointOnFace, 1, 0, 1, 6);
+
+  // Preview
+  myPreviewChkBox = new QCheckBox( tr("PREVIEW"), aFrame);
+  myPreviewChkBox->setChecked( true );
+
+  QVBoxLayout* aLay = new QVBoxLayout(aFrame);
+  aLay->addWidget(faceGrp);
+  aLay->addWidget(xyzGrp);
+  aLay->addWidget(myPreviewChkBox);
+
+  connect(myDestBtn, SIGNAL (toggled(bool)), this, SLOT(ButtonToggled(bool)));
+  connect(myIdBtn,   SIGNAL (toggled(bool)), this, SLOT(ButtonToggled(bool)));
+
+  myIdBtn->setChecked(true);
+
+  return aFrame;
+}
+
+//================================================================================
+/*!
+ * \brief SLOT called when any button is toggled
+  * \param bool - on or off
+ */
+//================================================================================
+
+void SMESHGUI_AddNodeOnFaceDlg::ButtonToggled (bool on)
+{
+  const QObject* aSender = sender();
+  if ( on ) {
+    if ( aSender == myDestBtn ) // button to set coord by node selection
+    {
+      if ( myIdBtn->isEnabled() )
+        myIdBtn->setChecked( !on );
+    }
+    else if ( aSender == myIdBtn ) // button to select a node to move
+    {
+      myDestBtn->setChecked( !on );
+    }
+  }
+  emit selTypeChanged();
+}
+
+//================================================================================
+/*!
+ * \brief Constructor
+*/
+//================================================================================
+
+SMESHGUI_AddNodeOnFaceOp::SMESHGUI_AddNodeOnFaceOp() : 
+  SMESHGUI_InteractiveOp()
+{
+  mySimulation = 0;
+  mySMESHGUI = 0;
+  myDlg = new SMESHGUI_AddNodeOnFaceDlg;
+  myHelpFileName = "add_node_on_face.html";
+
+  myNoPreview = false;
+  myUpdateDestination = false;
+
+  // connect signals and slots
+  connect(myDlg->myDestinationX,  SIGNAL (valueChanged(double)), this, SLOT(onDestCoordChanged()));
+  connect(myDlg->myDestinationY,  SIGNAL (valueChanged(double)), this, SLOT(onDestCoordChanged()));
+  connect(myDlg->myDestinationZ,  SIGNAL (valueChanged(double)), this, SLOT(onDestCoordChanged()));
+  connect(myDlg->myId,            SIGNAL (textChanged(const QString&)),SLOT(redisplayPreview()));
+  connect(myDlg->myPreviewChkBox, SIGNAL (toggled(bool)),              SLOT(redisplayPreview()));
+  connect(myDlg,                  SIGNAL (selTypeChanged() ),          SLOT(onSelTypeChange()));
+  connect(myDlg->myId,            SIGNAL (textChanged(const QString&)),SLOT(onTextChange(const QString&)));
+  connect(myDlg->myPointOnFace,   SIGNAL(toggled(bool)),               SLOT(pointLocationChanged(bool)));
+
+  myFacePicker = vtkCellPicker::New();
+  myFacePicker->SetTolerance(0.005);
+  myFacePicker->PickFromListOn();
+
+}
+
+//================================================================================
+/*!
+ * \brief SLOT. Called upon change of selection type
+ */
+//================================================================================
+
+void SMESHGUI_AddNodeOnFaceOp::onSelTypeChange()
+{
+  if ( myDlg->myIdBtn->isChecked() )
+  {
+    setSelectionMode( FaceSelection );
+  }
+  else if ( myDlg->myDestBtn->isChecked() )
+  {
+    QString msg;
+    if (isValid(msg)) {
+      //Disconnect selectionChanged to keep selected element
+      disconnect(selectionMgr(), SIGNAL(selectionChanged()), this, SLOT(onSelectionDone()));
+      // Set selection mode to ActorSelection to avoid element's prehighlight during interactive selection
+      setSelectionMode(ActorSelection);
+      connect(selectionMgr(), SIGNAL(selectionChanged()), SLOT(onSelectionDone()));
+    }
+  }
+  else
+  {
+    setSelectionMode( ActorSelection );
+  }
+}
+
+//=======================================================================
+// function : startOperation()
+// purpose  : Init dialog fields, connect signals and slots, show dialog
+//=======================================================================
+
+void SMESHGUI_AddNodeOnFaceOp::startOperation()
+{
+  myNoPreview = false;
+  myMeshActor = 0;
+
+  // init simulation with a current View
+  if ( mySimulation ) delete mySimulation;
+  mySMESHGUI = getSMESHGUI();
+  mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI ) );
+  connect(mySMESHGUI, SIGNAL (SignalActivatedViewManager()), this, SLOT(onOpenView()));
+  connect(mySMESHGUI, SIGNAL (SignalCloseView()), this, SLOT(onCloseView()));
+  vtkProperty* aProp = vtkProperty::New();
+  aProp->SetRepresentationToWireframe();
+  aProp->SetColor(250, 0, 250);
+  aProp->SetPointSize(5);
+  aProp->SetLineWidth( SMESH::GetFloat("SMESH:element_width",1) + 1);
+  mySimulation->GetActor()->SetProperty(aProp);
+  aProp->Delete();
+
+  SMESHGUI_SelectionOp::startOperation();
+  SMESHGUI_InteractiveOp::startOperation();
+  myDlg->myId->setText("");
+  myUpdateDestination = true;
+  myDlg->myDestinationX->SetValue(0);
+  myDlg->myDestinationY->SetValue(0);
+  myDlg->myDestinationZ->SetValue(0);
+  myUpdateDestination = false;
+
+  addObserver();
+
+  myDlg->show();
+
+  onSelectionDone(); // init myMeshActor
+}
+
+//================================================================================
+/*!
+ * \brief Stops operation
+ */
+//================================================================================
+
+void SMESHGUI_AddNodeOnFaceOp::stopOperation()
+{
+  myNoPreview = true;
+  if ( mySimulation )
+  {
+    mySimulation->SetVisibility(false);
+    delete mySimulation;
+    mySimulation = 0;
+  }
+  if ( myMeshActor ) {
+    myMeshActor = 0;
+  }
+  // SMESH::SetPointRepresentation( false );
+  // SMESH::RepaintCurrentView();
+
+  disconnect(mySMESHGUI, SIGNAL (SignalActivatedViewManager()), this, SLOT(onOpenView()));
+  disconnect(mySMESHGUI, SIGNAL (SignalCloseView()),            this, SLOT(onCloseView()));
+  SMESHGUI_SelectionOp::stopOperation();
+  removeObserver();
+}
+
+//================================================================================
+/*!
+ * \brief perform it's intention action: split a face
+ */
+//================================================================================
+
+bool SMESHGUI_AddNodeOnFaceOp::onApply()
+{
+  if( SMESHGUI::isStudyLocked() )
+    return false;
+
+  if ( !myMeshActor ) {
+    SUIT_MessageBox::warning( dlg(), tr( "SMESH_WRN_WARNING" ), tr("INVALID_MESH") );
+    dlg()->show();
+    return false;
+  }
+
+  QString msg;
+  if ( !isValid( msg ) ) { // node id is invalid
+    if( !msg.isEmpty() )
+      SUIT_MessageBox::warning( dlg(), tr( "SMESH_WRN_WARNING" ), tr("INVALID_ID") );
+    dlg()->show();
+    return false;
+  }
+
+  QStringList aParameters;
+  aParameters << myDlg->myDestinationX->text();
+  aParameters << myDlg->myDestinationY->text();
+  aParameters << myDlg->myDestinationZ->text();
+
+  try {
+    SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO(myMeshActor->getIO());
+    if (aMesh->_is_nil()) {
+      SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_ERROR"), tr("SMESHG_NO_MESH") );
+      return true;
+    }
+    SMESH::SMESH_MeshEditor_var aMeshEditor = aMesh->GetMeshEditor();
+    if (aMeshEditor->_is_nil())
+      return true;
+
+    aMesh->SetParameters( aParameters.join(":").toUtf8().constData() );
+
+    bool ok;
+    SMESH::smIdType anId = myDlg->myId->text().toLong( &ok );
+
+    aMeshEditor->AddNodeOnFace( anId,
+                                myDlg->myDestinationX->GetValue(),
+                                myDlg->myDestinationY->GetValue(),
+                                myDlg->myDestinationZ->GetValue() );
+    SALOME_ListIO aList;
+    selectionMgr()->setSelectedObjects(aList,false);
+    aList.Append(myMeshActor->getIO());
+    selectionMgr()->setSelectedObjects(aList,false);
+    onSelectionDone();
+    SMESH::UpdateView();
+    SMESHGUI::Modified();
+  }
+  catch (const SALOME::SALOME_Exception& S_ex) {
+    SalomeApp_Tools::QtCatchCorbaException(S_ex);
+  }
+  catch (...) {
+  }
+
+  return true;
+}
+
+//================================================================================
+/*!
+ * \brief Check selected face id validity
+ */
+//================================================================================
+
+bool SMESHGUI_AddNodeOnFaceOp::isValid( QString& msg )
+{
+  bool ok = false;
+  if ( myMeshActor )
+  {
+    SMESH::smIdType id = myDlg->myId->text().toLong();
+    if ( id > 0 )
+      if (SMDS_Mesh* aMesh = myMeshActor->GetObject()->GetMesh())
+        if ( const SMDS_MeshElement* face = aMesh->FindElement( id ))
+        {
+          if ( face->GetType() == SMDSAbs_Face )
+            ok = true;
+          else
+            msg += tr("NOT_FACE") + "\n";
+        }
+    if ( !ok )
+      msg += tr("INVALID_ID") + "\n";
+  }
+
+  ok = myDlg->myDestinationX->isValid( msg, !myNoPreview ) && ok;
+  ok = myDlg->myDestinationY->isValid( msg, !myNoPreview ) && ok;
+  ok = myDlg->myDestinationZ->isValid( msg, !myNoPreview ) && ok;
+
+  return ok;
+}
+
+//================================================================================
+/*!
+ * \brief SLOT called when selection changed
+ */
+//================================================================================
+
+void SMESHGUI_AddNodeOnFaceOp::onSelectionDone()
+{
+  if ( !myDlg->isVisible() || !myDlg->isEnabled() )
+    return;
+
+  myNoPreview = true;
+  QString idStr;
+  try {
+    SALOME_ListIO aList;
+    selectionMgr()->selectedObjects(aList, SVTK_Viewer::Type());
+    if (aList.Extent() != 1)
+      return;
+    Handle(SALOME_InteractiveObject) anIO = aList.First();
+    myMeshActor = SMESH::FindActorByEntry(anIO->getEntry());
+    myFacePicker->InitializePickList();
+    myFacePicker->AddPickList(myMeshActor);
+
+    QString aString;
+    int nbElems = SMESH::GetNameOfSelectedElements(selector(),anIO, aString);
+    if (nbElems == 1)
+      if ( SMDS_Mesh* aMesh = myMeshActor->GetObject()->GetMesh())
+        if ( const SMDS_MeshElement* face = aMesh->FindElement( aString.toLong() ))
+        {
+          idStr = aString;
+          // set coordinates to face gravity center
+          gp_XYZ faceGC( 0,0,0 );
+          for ( int i = 0; i < face->NbCornerNodes(); ++i )
+            faceGC += SMESH_NodeXYZ( face->GetNode( i ));
+          faceGC /= face->NbCornerNodes();
+          myUpdateDestination = true;
+          myDlg->myDestinationX->SetValue(faceGC.X());
+          myDlg->myDestinationY->SetValue(faceGC.Y());
+          myDlg->myDestinationZ->SetValue(faceGC.Z());
+          myUpdateDestination = false;
+        }
+  } catch (...) {
+  }
+  myDlg->myId->setText( idStr );
+
+  myNoPreview = false;
+  redisplayPreview();
+}
+
+//================================================================================
+/*!
+ * \brief update preview
+ */
+//================================================================================
+
+void SMESHGUI_AddNodeOnFaceOp::redisplayPreview()
+{
+  if ( myNoPreview )
+    return;
+  myNoPreview = true;
+
+  SMESH::MeshPreviewStruct_var aMeshPreviewStruct;
+
+  if ( myMeshActor && myDlg->myPreviewChkBox->isChecked() )
+  {
+    QString msg;
+    if ( isValid( msg ))
+    {
+      try {
+        SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO(myMeshActor->getIO());
+        if (!aMesh->_is_nil()) {
+          SMESH::SMESH_MeshEditor_var aPreviewer = aMesh->GetMeshEditPreviewer();
+          if (!aPreviewer->_is_nil())
+          {
+            SUIT_OverrideCursor aWaitCursor;
+
+            SMESH::smIdType anId = myDlg->myId->text().toLong();
+            aPreviewer->AddNodeOnFace(anId,
+                                      myDlg->myDestinationX->GetValue(),
+                                      myDlg->myDestinationY->GetValue(),
+                                      myDlg->myDestinationZ->GetValue());
+            aMeshPreviewStruct = aPreviewer->GetPreviewData();
+          }
+        }
+      }
+      catch (...) {
+      }
+    }
+  }
+  if (!mySimulation)
+    mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI ));
+  // display data
+  if ( & aMeshPreviewStruct.in() )
+  {
+    mySimulation->SetData( aMeshPreviewStruct.in() );
+  }
+  else
+  {
+    mySimulation->SetVisibility(false);
+  }
+
+  myNoPreview = false;
+}
+
+//=================================================================================
+/*!
+ * \brief SLOT called when the viewer opened
+ */
+//=================================================================================
+
+void SMESHGUI_AddNodeOnFaceOp::onOpenView()
+{
+  if ( mySimulation ) {
+    mySimulation->SetVisibility(false);
+    SMESH::SetPointRepresentation(false);
+  }
+  else {
+    mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI ));
+  }
+}
+
+//=================================================================================
+/*!
+ * \brief SLOT called when the viewer closed
+ */
+//=================================================================================
+
+void SMESHGUI_AddNodeOnFaceOp::onCloseView()
+{
+  delete mySimulation;
+  mySimulation = 0;
+}
+
+//================================================================================
+/*!
+ * \brief SLOT called when the face id is manually changed
+ */
+//================================================================================
+
+void SMESHGUI_AddNodeOnFaceOp::onTextChange( const QString& theText )
+{
+  if( myMeshActor )
+  {
+    if( SMDS_Mesh* aMesh = myMeshActor->GetObject()->GetMesh() )
+    {
+      Handle(SALOME_InteractiveObject) anIO = myMeshActor->getIO();
+      SALOME_ListIO aList;
+      aList.Append( anIO );
+      selectionMgr()->setSelectedObjects( aList, false );
+
+      if( const SMDS_MeshElement* face = aMesh->FindElement( theText.toLong() ) )
+      {
+        SVTK_TVtkIDsMap aListInd;
+        aListInd.Add( FromSmIdType<int>( face->GetID()) );
+        selector()->AddOrRemoveIndex( anIO, aListInd, false );
+        if( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( SMESHGUI::GetSMESHGUI() ) )
+          aViewWindow->highlight( anIO, true, true );
+      }
+    }
+  }
+}
+
+//================================================================================
+/*!
+ * \brief Activate selection
+ */
+//================================================================================
+
+void SMESHGUI_AddNodeOnFaceOp::activateSelection()
+{
+  selectionMgr()->clearFilters();
+  SMESH::SetPointRepresentation( false );
+  onSelTypeChange();
+}
+
+//================================================================================
+/*!
+ * \brief Destructor
+*/
+//================================================================================
+
+SMESHGUI_AddNodeOnFaceOp::~SMESHGUI_AddNodeOnFaceOp()
+{
+  if ( myDlg )        delete myDlg;
+  if ( mySimulation ) delete mySimulation;
+  myFacePicker->Delete();
+}
+
+//================================================================================
+/*!
+ * \brief SLOT called when destination coordinates are changed
+*/
+//================================================================================
+void SMESHGUI_AddNodeOnFaceOp::onDestCoordChanged() 
+{
+  if (myUpdateDestination)
+    return;
+  pointLocationChanged(myDlg->myPointOnFace->isChecked());
+  redisplayPreview();
+}
+
+//================================================================================
+/*!
+ * \brief SLOT called when 'Node on face' checkbox is changed
+*/
+//================================================================================
+void SMESHGUI_AddNodeOnFaceOp::pointLocationChanged(bool onFace) {
+  if (onFace) {
+    QString msg;
+    if (myMeshActor && isValid(msg)) {
+      SMESH::smIdType id = myDlg->myId->text().toLong();
+      if (id > 0) {
+        if (SMDS_Mesh* aMesh = myMeshActor->GetObject()->GetMesh()) {
+          if (const SMDS_MeshElement* face = aMesh->FindElement(id))
+          {
+            if (face->GetType() == SMDSAbs_Face) {
+              gp_Pnt point(myDlg->myDestinationX->GetValue(), myDlg->myDestinationY->GetValue(),myDlg->myDestinationZ->GetValue());
+              gp_XYZ closestPnt;
+              double dist = SMESH_MeshAlgos::GetDistance( face, point, &closestPnt);
+              if (dist > TOLERANCE) {
+                myUpdateDestination = true;
+                myDlg->myDestinationX->SetValue(closestPnt.X());
+                myDlg->myDestinationY->SetValue(closestPnt.Y());
+                myDlg->myDestinationZ->SetValue(closestPnt.Z());
+                myUpdateDestination = false;
+                redisplayPreview();
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+//================================================================================
+/*!
+ * \brief Gets dialog of this operation
+ * \retval LightApp_Dialog* - pointer to dialog of this operation
+ */
+//================================================================================
+
+LightApp_Dialog* SMESHGUI_AddNodeOnFaceOp::dlg() const
+{
+  return myDlg;
+}
+
+//================================================================================
+/*
+* \brief Process InteractiveSelectionChanged event
+*/
+//================================================================================
+void SMESHGUI_AddNodeOnFaceOp::processStyleEvents(unsigned long theEvent, void* theCallData)
+{
+  (void*)theCallData;
+  QString msg;
+  if (isValid(msg)) {
+    if (theEvent == SVTK::InteractiveSelectionChanged) {
+      if (myDlg->myPointOnFace->isChecked()) {
+        // Pick point on a mesh surface
+        QString msg;
+        if (myMeshActor && isValid(msg)) {
+          SMESH::smIdType id = myDlg->myId->text().toLong();
+          if (id > 0) {
+            if (SMDS_Mesh* aMesh = myMeshActor->GetObject()->GetMesh()) {
+              if (const SMDS_MeshElement* face = aMesh->FindElement(id))
+              {
+                if (face->GetType() == SMDSAbs_Face) {
+                  int xClick, yClick; // Last event (move or left button bown) position
+                  myRWInteractor->GetDevice()->GetEventPosition(xClick, yClick);
+                  gp_XYZ faceNode(0, 0, 0);
+                  SMDS_Mesh tmp;
+                  double Ni[3];
+                  std::vector<const SMDS_MeshNode*> tmpNodes;
+                  for (int i = 0; i < face->NbCornerNodes(); ++i) {
+                    faceNode = SMESH_NodeXYZ(face->GetNode(i));
+                    vtkInteractorObserver::ComputeWorldToDisplay(myRWInteractor->GetRenderer()->GetDevice(),
+                      faceNode.X(), faceNode.Y(), faceNode.Z(), Ni);
+                    tmpNodes.push_back(tmp.AddNode(Ni[0], Ni[1], 0));
+                  }
+                  SMDS_MeshFace* face2D = tmp.AddPolygonalFace(tmpNodes);
+                  gp_Pnt point(double(xClick), double(yClick), 0);
+                  gp_XYZ closestPnt;
+                  double dist = SMESH_MeshAlgos::GetDistance(face2D, point, &closestPnt);
+                  double xPick = 0, yPick = 0;
+                  if (dist < TOLERANCE) {
+                    xPick = xClick;
+                    yPick = yClick;
+                  }
+                  else {
+                    xPick = closestPnt.X();
+                    yPick = closestPnt.Y();
+                  }
+                  myFacePicker->Pick(xPick, yPick, 0.0, myRWInteractor->GetRenderer()->GetDevice());
+                  double closest[3];
+                  myFacePicker->GetPickPosition(closest);
+                  myUpdateDestination = true;
+                  myDlg->myDestinationX->SetValue(closest[0]);
+                  myDlg->myDestinationY->SetValue(closest[1]);
+                  myDlg->myDestinationZ->SetValue(closest[2]);
+                  myUpdateDestination = false;
+                  redisplayPreview();
+                }
+              }
+            }
+          }
+        }
+      }
+      else {
+        double* aCoord = (double*)theCallData;
+        myUpdateDestination = true;
+        myDlg->myDestinationX->SetValue(aCoord[0]);
+        myDlg->myDestinationY->SetValue(aCoord[1]);
+        myDlg->myDestinationZ->SetValue(aCoord[2]);
+        myUpdateDestination = false;
+        redisplayPreview();
+      }
+    }
+  }
+}
+
+//================================================================================
+/*
+* \brief Process LeftButtonPressEvent event: activate interactive selection
+*/
+//================================================================================
+void SMESHGUI_AddNodeOnFaceOp::processInteractorEvents(unsigned long theEvent, void* theCallData)
+{
+  (void*)theCallData;
+  if (theEvent == vtkCommand::LeftButtonPressEvent && myDlg->myDestBtn->isChecked()) {
+    bool control = myRWInteractor->GetDevice()->GetControlKey();
+    bool shift = myRWInteractor->GetDevice()->GetControlKey();
+    SVTK_ViewWindow* svtkViewWindow = SMESH::GetViewWindow(mySMESHGUI);
+    if (svtkViewWindow && !shift && !control) {
+      QString msg;
+      if (isValid(msg)) {
+        svtkViewWindow->activateInteractiveSelection();
+      }
+    }
+  }
+}
diff --git a/src/SMESHGUI/SMESHGUI_AddNodeOnFaceDlg.h b/src/SMESHGUI/SMESHGUI_AddNodeOnFaceDlg.h
new file mode 100644 (file)
index 0000000..ece7ede
--- /dev/null
@@ -0,0 +1,140 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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   : SMESHGUI_AddNodeOnFaceDlg.h
+// Author : Edward AGAPOV, Open CASCADE S.A.S.
+//
+#ifndef SMESHGUI_AddNodeOnFaceDLG_H
+#define SMESHGUI_AddNodeOnFaceDLG_H
+
+// SMESH includes
+#include "SMESH_SMESHGUI.hxx"
+
+#include "SMESHGUI_Dialog.h"
+#include "SMESHGUI_InteractiveOp.h"
+
+class QButtonGroup;
+class QCheckBox;
+class QGroupBox;
+class QLineEdit;
+class QPushButton;
+class QRadioButton;
+class SMESHGUI_SpinBox;
+class SMESHGUI_MeshEditPreview;
+class SMESHGUI_AddNodeOnFaceDlg;
+class vtkCellPicker;
+
+/*!
+ * \brief Operation to split a face into triangles by creating a new node
+ *        on the face and connecting it to the face nodes
+ */
+class SMESHGUI_EXPORT SMESHGUI_AddNodeOnFaceOp: public SMESHGUI_InteractiveOp
+{
+  Q_OBJECT
+
+public:
+  SMESHGUI_AddNodeOnFaceOp();
+  virtual ~SMESHGUI_AddNodeOnFaceOp();
+
+  virtual LightApp_Dialog*      dlg() const;  
+
+protected:
+
+  virtual void                  startOperation() override;
+  virtual void                  stopOperation() override;
+
+  virtual void                  activateSelection() override;
+
+  bool                          isValid( QString& );
+
+  virtual void                   processStyleEvents(unsigned long event,
+                                                    void* calldata)  override;
+
+  virtual void                   processInteractorEvents(unsigned long event,
+                                                         void* calldata) override;
+
+
+protected slots:
+  virtual bool                  onApply();
+
+private slots:
+  void                          onSelectionDone();
+  void                          redisplayPreview();
+  void                          onSelTypeChange();
+  void                          onTextChange( const QString& );
+//  void                          onDestCoordChanged();
+  void                          onOpenView();
+  void                          onCloseView();
+  void                          pointLocationChanged(bool);
+  void                          onDestCoordChanged();
+
+private:
+  SMESHGUI_AddNodeOnFaceDlg*    myDlg;
+
+  SUIT_SelectionFilter*         myFilter;
+  SMESHGUI*                     mySMESHGUI;
+  SMESHGUI_MeshEditPreview*     mySimulation;
+  SMESH_Actor*                  myMeshActor;
+  bool                          myNoPreview;
+  bool                          myUpdateDestination;
+  bool                          myDestCoordChanged;
+  vtkCellPicker*                myFacePicker;      
+};
+
+/*!
+ * \brief Dialog to split a face into triangles by creating a new node
+ *        on the face and connecting it to the face nodes
+ */
+
+class SMESHGUI_EXPORT SMESHGUI_AddNodeOnFaceDlg : public SMESHGUI_Dialog
+{
+  Q_OBJECT
+
+public:
+  SMESHGUI_AddNodeOnFaceDlg();
+
+private:
+  QWidget*                      createMainFrame( QWidget* );
+
+  QWidget*                      myMainFrame;
+
+  QPushButton*                  myDestBtn;
+  QPushButton*                  myIdBtn;
+  QLineEdit*                    myId;
+  SMESHGUI_SpinBox*             myDestinationX;
+  SMESHGUI_SpinBox*             myDestinationY;
+  SMESHGUI_SpinBox*             myDestinationZ;
+  QCheckBox*                    myPointOnFace;
+  QCheckBox*                    myPreviewChkBox;
+
+  QString                       myHelpFileName;
+
+  friend class SMESHGUI_AddNodeOnFaceOp;
+
+signals:
+  void                          selTypeChanged();
+
+ private slots:
+  void                          ButtonToggled( bool );
+};
+
+#endif // SMESHGUI_AddNodeOnFaceDLG_H
diff --git a/src/SMESHGUI/SMESHGUI_AddNodeOnSegmentDlg.cxx b/src/SMESHGUI/SMESHGUI_AddNodeOnSegmentDlg.cxx
new file mode 100644 (file)
index 0000000..12a4d4c
--- /dev/null
@@ -0,0 +1,701 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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   : SMESHGUI_AddNodeOnSegmentDlg.cxx
+// Author : Edward AGAPOV, Open CASCADE S.A.S.
+//
+#include "SMESHGUI_AddNodeOnSegmentDlg.h"
+
+#include "SMESHGUI.h"
+#include "SMESHGUI_MeshUtils.h"
+#include "SMESHGUI_VTKUtils.h"
+#include "SMESHGUI_SpinBox.h"
+#include "SMESHGUI_MeshEditPreview.h"
+
+#include <SMDS_Mesh.hxx>
+#include <SMESH_Actor.h>
+#include <SMESH_ActorUtils.h>
+#include <SMESH_TypeDefs.hxx>
+
+#include <LightApp_SelectionMgr.h>
+#include <SALOME_ListIO.hxx>
+#include <SUIT_Desktop.h>
+#include <SUIT_MessageBox.h>
+#include <SUIT_OverrideCursor.h>
+#include <SUIT_ResourceMgr.h>
+#include <SVTK_ViewModel.h>
+#include <SVTK_ViewWindow.h>
+#include <SVTK_RenderWindowInteractor.h>
+#include <SVTK_Renderer.h>
+#include <SVTK_Event.h>
+#include <SalomeApp_Tools.h>
+
+// Qt includes
+#include <QApplication>
+#include <QGroupBox>
+#include <QGridLayout>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QLineEdit>
+#include <QPushButton>
+#include <QLabel>
+#include <QRadioButton>
+#include <QCheckBox>
+#include <QButtonGroup>
+
+// VTK includes
+#include <vtkProperty.h>
+#include <vtkInteractorStyle.h>
+#include <vtkGenericRenderWindowInteractor.h>
+#include <vtkInteractorObserver.h>
+#include <vtkLine.h>
+
+// IDL includes
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Mesh)
+#include CORBA_SERVER_HEADER(SMESH_MeshEditor)
+
+#define SPACING 6
+#define MARGIN  11
+
+#define SPIN_TOLERANCE 1e-3
+
+//=======================================================================
+/*!
+ * \brief Dialog to split a diagonal of a quadrangle formed by two adjacent triangles
+ */
+//=======================================================================
+
+SMESHGUI_AddNodeOnSegmentDlg::SMESHGUI_AddNodeOnSegmentDlg()
+: SMESHGUI_Dialog( 0, false, true )
+{
+  setWindowTitle(tr("CAPTION"));
+
+  QVBoxLayout* aDlgLay = new QVBoxLayout (mainFrame());
+  aDlgLay->setMargin(0);
+  aDlgLay->setSpacing(SPACING);
+  QWidget* mainFr = createMainFrame(mainFrame());
+
+  aDlgLay->addWidget( mainFr );
+
+  aDlgLay->setStretchFactor( mainFr, 1);
+}
+
+//=======================================================================
+// function : createMainFrame()
+// purpose  : Create frame containing dialog's input fields
+//=======================================================================
+
+QWidget* SMESHGUI_AddNodeOnSegmentDlg::createMainFrame (QWidget* theParent)
+{
+  QWidget* aFrame = new QWidget(theParent);
+
+  SUIT_ResourceMgr* rm = SMESH::GetResourceMgr( SMESHGUI::GetSMESHGUI() );
+  QPixmap iconSelect( rm->loadPixmap("SMESH", tr("ICON_SELECT")));
+
+  // Segment
+
+  QGroupBox* segmentGrp = new QGroupBox(tr("SEGMENT_GROUP"), aFrame);
+  segmentGrp->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  QLabel* segmentLabel = new QLabel(tr("SEGMENT"), segmentGrp);
+  mySegmentBtn = new QPushButton(segmentGrp);
+  mySegmentBtn->setIcon(iconSelect);
+  mySegmentBtn->setCheckable(true);
+  mySegment = new QLineEdit(segmentGrp);
+  mySegment->setValidator(new QRegExpValidator(QRegExp("[\\d]*-[\\d]*"), this));
+
+  QGridLayout* segmentGrpLayout = new QGridLayout(segmentGrp);
+  segmentGrpLayout->setSpacing(SPACING);
+  segmentGrpLayout->setMargin(MARGIN);
+
+  segmentGrpLayout->addWidget( segmentLabel, 0, 0 );
+  segmentGrpLayout->addWidget( mySegmentBtn, 0, 1 );
+  segmentGrpLayout->addWidget( mySegment,    0, 2 );
+
+  // Position on segment
+
+  QGroupBox* positionGrp = new QGroupBox(tr("POSITION_GROUP"), aFrame);
+  positionGrp->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  myPositionBtn = new QPushButton(positionGrp);
+  myPositionBtn->setIcon(iconSelect);
+  myPositionBtn->setCheckable(true);
+
+  QLabel* positionLbl = new QLabel(tr("POSITION"), positionGrp);
+
+  myPositionSpin = new SMESHGUI_SpinBox(positionGrp);
+  myPositionSpin->setReadOnly(false);
+  myPositionSpin->RangeStepAndValidator(SPIN_TOLERANCE, 1- SPIN_TOLERANCE, 0.1, "length_precision");
+
+  QGridLayout* positionLayout = new QGridLayout(positionGrp);
+  positionLayout->setMargin(MARGIN);
+  positionLayout->setSpacing(SPACING);
+  positionLayout->addWidget(positionLbl, 0, 0);
+  positionLayout->addWidget(myPositionBtn, 0, 1);
+  positionLayout->addWidget(myPositionSpin, 0, 2);
+  positionLayout->setColumnStretch(2, 1);
+
+  // Preview
+
+  myPreviewChkBox = new QCheckBox( tr("PREVIEW"), aFrame);
+  myPreviewChkBox->setChecked( true );
+
+  QVBoxLayout* aLay = new QVBoxLayout(aFrame);
+  aLay->addWidget(segmentGrp);
+  aLay->addWidget(positionGrp);
+  aLay->addWidget(myPreviewChkBox);
+
+  connect(myPositionBtn, SIGNAL (toggled(bool)), this, SLOT(ButtonToggled(bool)));
+  connect(mySegmentBtn,  SIGNAL (toggled(bool)), this, SLOT(ButtonToggled(bool)));
+
+  mySegmentBtn->setChecked(true);
+
+  return aFrame;
+}
+
+//================================================================================
+/*!
+ * \brief SLOT called when any button is toggled
+ * \param bool - on or off
+ */
+//================================================================================
+
+void SMESHGUI_AddNodeOnSegmentDlg::ButtonToggled (bool on)
+{
+  const QObject* aSender = sender();
+  if ( on ) {
+    if ( aSender == myPositionBtn )
+    {
+      mySegmentBtn->setChecked( !on );
+    }
+    else if ( aSender == mySegmentBtn )
+    {
+      myPositionBtn->setChecked( !on );
+    }
+  }
+  emit selTypeChanged();
+}
+
+//================================================================================
+/*!
+ * \brief Constructor
+ */
+//================================================================================
+
+SMESHGUI_AddNodeOnSegmentOp::SMESHGUI_AddNodeOnSegmentOp() :
+  SMESHGUI_InteractiveOp()
+{
+  mySimulation = 0;
+  mySMESHGUI = 0;
+  myDlg = new SMESHGUI_AddNodeOnSegmentDlg;
+  myHelpFileName = "add_node_on_segment.html";
+
+  myNoPreview = false;
+
+  // connect signals and slots
+  connect(myDlg->myPreviewChkBox, SIGNAL (toggled(bool)),              SLOT(redisplayPreview()));
+  connect(myDlg->myPositionSpin,  SIGNAL (valueChanged(double)),       SLOT(redisplayPreview()));
+  connect(myDlg->myPositionSpin,  SIGNAL (textChanged(const QString&)),SLOT(redisplayPreview()));
+  connect(myDlg,                  SIGNAL (selTypeChanged() ),          SLOT(onSelTypeChange()));
+  connect(myDlg->mySegment,       SIGNAL (textChanged(const QString&)),SLOT(onTextChange(const QString&)));
+}
+
+//================================================================================
+/*!
+ * \brief SLOT. Called upon change of selection type
+ */
+//================================================================================
+
+void SMESHGUI_AddNodeOnSegmentOp::onSelTypeChange()
+{
+  if ( myDlg->mySegmentBtn->isChecked() )
+  {
+    setSelectionMode( EdgeOfCellSelection );
+  }
+  else if ( myDlg->myPositionBtn->isChecked() )
+  {
+    if (SVTK_ViewWindow* svtkViewWindow = SMESH::GetViewWindow(mySMESHGUI)) {
+      QString msg;
+      SMESH::smIdType node1 = 0, node2 = 0;
+      if (isValid(msg, node1, node2)) {
+        //Disconnect selectionChanged to keep selected element
+        disconnect(selectionMgr(), SIGNAL(selectionChanged()), this, SLOT(onSelectionDone()));
+        // Set selection mode to ActorSelection to avoid element's prehighlight during interactive selection
+        setSelectionMode(ActorSelection);
+        connect(selectionMgr(), SIGNAL(selectionChanged()), SLOT(onSelectionDone()));
+      }      
+    }
+  }
+  else
+  {
+    setSelectionMode( ActorSelection );
+  }
+}
+
+//=======================================================================
+// function : startOperation()
+// purpose  : Init dialog fields, connect signals and slots, show dialog
+//=======================================================================
+
+void SMESHGUI_AddNodeOnSegmentOp::startOperation()
+{
+  myNoPreview = false;
+  myMeshActor = 0;
+
+  // init simulation with a current View
+  if ( mySimulation ) delete mySimulation;
+  mySMESHGUI = getSMESHGUI();
+  mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI ) );
+  connect(mySMESHGUI, SIGNAL (SignalActivatedViewManager()), this, SLOT(onOpenView()));
+  connect(mySMESHGUI, SIGNAL (SignalCloseView()), this, SLOT(onCloseView()));
+  vtkProperty* aProp = vtkProperty::New();
+  aProp->SetRepresentationToWireframe();
+  aProp->SetColor(250, 0, 250);
+  aProp->SetPointSize(5);
+  aProp->SetLineWidth( SMESH::GetFloat("SMESH:element_width",1) + 1);
+  mySimulation->GetActor()->SetProperty(aProp);
+  aProp->Delete();
+
+  SMESHGUI_SelectionOp::startOperation(); // this method should be called only after filter creation
+  SMESHGUI_InteractiveOp::startOperation();
+  myDlg->mySegment->setText("");
+  myDlg->myPositionSpin->SetValue(0.5);
+  myDlg->myPositionSpin->setReadOnly(false);
+
+  addObserver();
+
+  myDlg->show();
+
+  onSelectionDone(); // init myMeshActor
+}
+
+//================================================================================
+/*!
+ * \brief Stops operation
+ */
+//================================================================================
+
+void SMESHGUI_AddNodeOnSegmentOp::stopOperation()
+{
+  myNoPreview = true;
+  if ( mySimulation )
+  {
+    mySimulation->SetVisibility(false);
+    delete mySimulation;
+    mySimulation = 0;
+  }
+  if ( myMeshActor ) {
+    myMeshActor = 0;
+  }
+  SMESH::SetPointRepresentation( false );
+  SMESH::RepaintCurrentView();
+
+  disconnect(mySMESHGUI, SIGNAL (SignalActivatedViewManager()), this, SLOT(onOpenView()));
+  disconnect(mySMESHGUI, SIGNAL (SignalCloseView()),            this, SLOT(onCloseView()));
+  //selectionMgr()->removeFilter( myFilter );
+  SMESHGUI_SelectionOp::stopOperation();
+  removeObserver();
+}
+
+//================================================================================
+/*!
+ * \brief perform it's intention action: create a node on a segment
+ */
+//================================================================================
+
+bool SMESHGUI_AddNodeOnSegmentOp::onApply()
+{
+  if( SMESHGUI::isStudyLocked() )
+    return false;
+
+  QString msg;
+  SMESH::smIdType node1= 0, node2 = 0;
+  if ( !isValid( msg, node1, node2 ))
+  {
+    SUIT_MessageBox::warning( dlg(), tr( "SMESH_WRN_WARNING" ),
+                              msg.isEmpty() ? tr("INVALID_ID") : msg );
+    dlg()->show();
+    return false;
+  }
+
+  QStringList aParameters;
+  aParameters << myDlg->myPositionSpin->text();
+
+  try {
+    SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO( myMeshActor->getIO() );
+    if (aMesh->_is_nil()) {
+      SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_ERROR"), tr("INVALID_MESH") );
+      return true;
+    }
+    SMESH::SMESH_MeshEditor_var aMeshEditor = aMesh->GetMeshEditor();
+    if (aMeshEditor->_is_nil())
+      return true;
+
+    aMesh->SetParameters( aParameters.join(":").toUtf8().constData() );
+
+    aMeshEditor->AddNodeOnSegment( node1, node2, myDlg->myPositionSpin->GetValue() );
+
+    selector()->ClearIndex();
+    selector()->ClearCompositeIndex();
+    SALOME_ListIO aList;
+    aList.Append( myMeshActor->getIO() );
+    selectionMgr()->setSelectedObjects(aList,false);
+    onSelectionDone();
+    SMESH::UpdateView();
+    SMESHGUI::Modified();
+  }
+  catch (const SALOME::SALOME_Exception& S_ex) {
+    SalomeApp_Tools::QtCatchCorbaException(S_ex);
+  }
+  catch (...) {
+  }
+
+  return true;
+}
+
+//================================================================================
+/*!
+ * \brief Check selected node id validity
+ */
+//================================================================================
+
+bool SMESHGUI_AddNodeOnSegmentOp::isValid( QString&          msg,
+                                           SMESH::smIdType & node1,
+                                           SMESH::smIdType & node2 )
+{
+  bool ok = false;
+  if ( !myMeshActor )
+  {
+    msg = tr("INVALID_MESH");
+  }
+  else
+  {
+    if ( SMDS_Mesh* mesh = myMeshActor->GetObject()->GetMesh() )
+    {
+      QString txt = myDlg->mySegment->text();
+      if ( txt.contains('-'))
+      {
+        QString str1 = txt.section('-', 0, 0, QString::SectionSkipEmpty);
+        QString str2 = txt.section('-', 1, 1, QString::SectionSkipEmpty);
+        node1 = str1.toLong();
+        node2 = str2.toLong();
+        const SMDS_MeshNode* n1 = mesh->FindNode( node1 );
+        const SMDS_MeshNode* n2 = mesh->FindNode( node2 );
+        std::vector<const SMDS_MeshNode *> nodes = { n1, n2 };
+        std::vector<const SMDS_MeshElement *> foundElems;
+        if ( !mesh->GetElementsByNodes( nodes, foundElems ))
+          msg = tr("NO_ELEMENTS");
+        else
+        {
+          for ( const SMDS_MeshElement * elem : foundElems )
+          {
+            if ( elem->GetGeomType() == SMDSGeom_TRIANGLE )
+              ok = true;
+            else
+            {
+              if ( elem->GetType() == SMDSAbs_Volume )
+                msg = tr("VOLUME_FOUND");
+              if ( elem->GetType() == SMDSAbs_Face )
+                msg = tr("NOT_TRIANGLE_FACE_FOUND");
+            }
+          }
+          if ( !msg.isEmpty() )
+            ok = false;
+        }
+      }
+    }
+  }
+  if ( !ok && msg.isEmpty() )
+  {
+    node1 = node2 = 0;
+    msg += tr("INVALID_EDGE") + "\n";
+  }
+
+  if ( ok && ! myDlg->myPositionSpin->isValid( msg, /*toCorrect=*/false ))
+  {
+    msg = tr("BAD_POSITION");
+    ok = false;
+  }
+
+  return ok;
+}
+
+//================================================================================
+/*!
+ * \brief SLOT called when selection changed
+ */
+//================================================================================
+
+void SMESHGUI_AddNodeOnSegmentOp::onSelectionDone()
+{
+  if ( !myDlg->isVisible() || !myDlg->isEnabled() )
+    return;
+
+  myNoPreview = true;
+  QString segmentStr;
+  try {
+    SALOME_ListIO aList;
+    selectionMgr()->selectedObjects(aList, SVTK_Viewer::Type());
+    if (aList.Extent() != 1)
+      return;
+    Handle(SALOME_InteractiveObject) anIO = aList.First();
+    if (( myMeshActor = SMESH::FindActorByEntry(anIO->getEntry()) ))
+    {
+      SVTK_IndexedMapOfVtkIds IDs;
+      selector()->GetCompositeIndex( anIO, IDs );
+      if ( IDs.Extent() == 1 && IDs(1).size() == 2 )
+      {
+        SMESH::smIdType id1 = IDs(1)[0];
+        SMESH::smIdType id2 = IDs(1)[1];
+        segmentStr = QString("%1-%2").arg( id1 ).arg( id2 );
+      }
+    }
+  } catch (...) {
+  }
+  myDlg->mySegment->setText( segmentStr );
+
+  myNoPreview = false;
+  redisplayPreview();
+}
+
+//================================================================================
+/*!
+ * \brief update preview
+ */
+//================================================================================
+
+void SMESHGUI_AddNodeOnSegmentOp::redisplayPreview()
+{
+  if ( myNoPreview || !myDlg->myPreviewChkBox->isChecked() )
+  {
+    if ( mySimulation )
+      mySimulation->SetVisibility(false);
+    return;
+  }
+  myNoPreview = true;
+
+  SMESH::MeshPreviewStruct_var aMeshPreviewStruct;
+
+  QString msg;
+  SMESH::smIdType node1, node2;
+  try {
+    if ( isValid( msg, node1, node2 ))
+    {
+      SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO(myMeshActor->getIO());
+      if ( !aMesh->_is_nil() )
+      {
+        SMESH::SMESH_MeshEditor_var aPreviewer = aMesh->GetMeshEditPreviewer();
+        if ( !aPreviewer->_is_nil() )
+        {
+          SUIT_OverrideCursor aWaitCursor;
+          double pos = myDlg->myPositionSpin->value();
+          aPreviewer->AddNodeOnSegment( node1, node2, pos );
+
+          aMeshPreviewStruct = aPreviewer->GetPreviewData();
+        }
+      }
+    }
+  }
+  catch (...) {
+  }
+
+  if (!mySimulation)
+    mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI ));
+  // display data
+  if ( & aMeshPreviewStruct.in() )
+  {
+    mySimulation->SetData( aMeshPreviewStruct.in() );
+  }
+  else
+  {
+    mySimulation->SetVisibility(false);
+  }
+
+  myNoPreview = false;
+}
+
+//=================================================================================
+/*!
+ * \brief SLOT called when the viewer opened
+ */
+//=================================================================================
+
+void SMESHGUI_AddNodeOnSegmentOp::onOpenView()
+{
+  if ( mySimulation ) {
+    mySimulation->SetVisibility(false);
+    SMESH::SetPointRepresentation(false);
+  }
+  else {
+    mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI ));
+  }
+}
+
+//=================================================================================
+/*!
+ * \brief SLOT called when the viewer closed
+ */
+//=================================================================================
+
+void SMESHGUI_AddNodeOnSegmentOp::onCloseView()
+{
+  delete mySimulation;
+  mySimulation = 0;
+}
+
+//================================================================================
+/*!
+ * \brief SLOT called when the node ids are manually changed
+ */
+//================================================================================
+
+void SMESHGUI_AddNodeOnSegmentOp::onTextChange( const QString& /*theText*/ )
+{
+  QString msg;
+  SMESH::smIdType node1= 0, node2 = 0;
+
+  if (( isValid( msg, node1, node2 )) ||
+      ( node1 && node2 )) // position only can be invalid
+  {
+    // highlight entered segment
+
+    Handle(SALOME_InteractiveObject) anIO = myMeshActor->getIO();
+    SALOME_ListIO aList;
+    aList.Append( anIO );
+    selectionMgr()->setSelectedObjects( aList, false );
+
+    SVTK_ListOfVtk newIndices = { node1, node2 };
+    selector()->AddOrRemoveCompositeIndex( anIO, newIndices, false );
+    SMESH::GetViewWindow(mySMESHGUI)->highlight( anIO, true, true );
+  }
+}
+
+//================================================================================
+/*!
+ * \brief Activate Node selection
+ */
+//================================================================================
+
+void SMESHGUI_AddNodeOnSegmentOp::activateSelection()
+{
+  selectionMgr()->clearFilters();
+  SMESH::SetPointRepresentation( false );
+  onSelTypeChange();
+}
+
+//================================================================================
+/*!
+ * \brief Destructor
+ */
+//================================================================================
+
+SMESHGUI_AddNodeOnSegmentOp::~SMESHGUI_AddNodeOnSegmentOp()
+{
+  if ( myDlg )        delete myDlg;
+  if ( mySimulation ) delete mySimulation;
+}
+
+//================================================================================
+/*!
+ * \brief Gets dialog of this operation
+ * \retval LightApp_Dialog* - pointer to dialog of this operation
+ */
+//================================================================================
+
+LightApp_Dialog* SMESHGUI_AddNodeOnSegmentOp::dlg() const
+{
+  return myDlg;
+}
+
+//================================================================================
+/*
+* \brief Process InteractiveSelectionChanged event
+*/
+//================================================================================
+void SMESHGUI_AddNodeOnSegmentOp::processStyleEvents(unsigned long theEvent, void* theCallData) 
+{
+  (void*)theCallData;
+  QString msg;
+  SMESH::smIdType node1 = 0, node2 = 0;
+  if (isValid(msg, node1, node2)) {
+    if (theEvent == SVTK::InteractiveSelectionChanged) {
+      if (SMDS_Mesh* mesh = myMeshActor->GetObject()->GetMesh())
+        if(myRWInteractor && myRWInteractor->GetDevice() && myInteractorStyle) {
+        {
+          double N1[3];
+          double N2[3];
+          double pos;
+          double N1_SC[3];
+          double N2_SC[3];
+          double xyz[3];
+          double closest[3];
+
+          const SMDS_MeshNode* n1 = mesh->FindNode(node1);
+          const SMDS_MeshNode* n2 = mesh->FindNode(node2);
+          int xClick, yClick; // Last event (move or left button down) position
+          myRWInteractor->GetDevice()->GetEventPosition(xClick, yClick);
+
+          n1->GetXYZ(N1);
+          n2->GetXYZ(N2);
+          // Get 2D screen coordinates of each node
+          vtkInteractorObserver::ComputeWorldToDisplay(myRWInteractor->GetRenderer()->GetDevice(),
+            N1[0], N1[1], N1[2], N1_SC);
+          vtkInteractorObserver::ComputeWorldToDisplay(myRWInteractor->GetRenderer()->GetDevice(),
+            N2[0], N2[1], N2[2], N2_SC);
+          N1_SC[2] = N2_SC[2] = xyz[2] = 0;
+          xyz[0] = static_cast<double>(xClick);
+          xyz[1] = static_cast<double>(yClick);
+          // Parametric position of selected point on a line
+          vtkLine::DistanceToLine(xyz, N1_SC, N2_SC, pos, closest);
+          if (pos < 0)
+            pos = SPIN_TOLERANCE;
+          else if (pos > 1.0)
+            pos = 1.0 - SPIN_TOLERANCE;
+          myDlg->myPositionSpin->SetValue(pos);
+          redisplayPreview();
+        }
+      }
+    }
+  }
+}
+
+//================================================================================
+/*
+* \brief Process LeftButtonPressEvent event: activate interactive selection
+*/
+//================================================================================
+void SMESHGUI_AddNodeOnSegmentOp::processInteractorEvents(unsigned long theEvent, void* theCallData) 
+{
+  (void*)theCallData;
+  if (theEvent == vtkCommand::LeftButtonPressEvent && myDlg->myPositionBtn->isChecked()) {
+    bool control = myRWInteractor->GetDevice()->GetControlKey();
+    bool shift = myRWInteractor->GetDevice()->GetControlKey();
+    SVTK_ViewWindow* svtkViewWindow = SMESH::GetViewWindow(mySMESHGUI);
+    if (svtkViewWindow  && !shift && ! control) {
+      QString msg;
+      SMESH::smIdType node1 = 0, node2 = 0;
+      if (isValid(msg, node1, node2)) {
+        svtkViewWindow->activateInteractiveSelection();
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/SMESHGUI/SMESHGUI_AddNodeOnSegmentDlg.h b/src/SMESHGUI/SMESHGUI_AddNodeOnSegmentDlg.h
new file mode 100644 (file)
index 0000000..f5dda94
--- /dev/null
@@ -0,0 +1,125 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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   : SMESHGUI_AddNodeOnSegmentDlg.h
+// Author : Edward AGAPOV, Open CASCADE S.A.S.
+//
+#ifndef SMESHGUI_AddNodeOnSegmentDLG_H
+#define SMESHGUI_AddNodeOnSegmentDLG_H
+
+#include "SMESHGUI_Dialog.h"
+#include "SMESHGUI_InteractiveOp.h"
+
+class QButtonGroup;
+class QCheckBox;
+class QGroupBox;
+class QLineEdit;
+class QPushButton;
+class QRadioButton;
+class SMESHGUI_SpinBox;
+class SMESHGUI_MeshEditPreview;
+class SMESHGUI_AddNodeOnSegmentDlg;
+
+/*!
+ * \brief Operation to make a mesh pass through a point
+ */
+class SMESHGUI_EXPORT SMESHGUI_AddNodeOnSegmentOp: public SMESHGUI_InteractiveOp
+{
+  Q_OBJECT
+
+public:
+  SMESHGUI_AddNodeOnSegmentOp();
+  virtual ~SMESHGUI_AddNodeOnSegmentOp();
+
+  virtual LightApp_Dialog*       dlg() const;  
+
+protected:
+
+  virtual void                   startOperation() override;
+  virtual void                   stopOperation() override;
+
+  virtual void                   activateSelection();
+
+  bool                           isValid( QString&, SMESH::smIdType& n1, SMESH::smIdType& n2 );
+
+  virtual void                   processStyleEvents(unsigned long event,
+    void* calldata)  override;
+
+  virtual void                   processInteractorEvents(unsigned long event,
+    void* calldata) override;
+
+
+protected slots:
+  virtual bool                   onApply() override;
+
+
+private slots:
+  void                           onSelectionDone();
+  void                           redisplayPreview();
+  void                           onTextChange( const QString& );
+  void                           onSelTypeChange();
+  void                           onOpenView();
+  void                           onCloseView();
+
+private:
+
+  SMESHGUI_AddNodeOnSegmentDlg* myDlg;
+
+  SMESHGUI*                     mySMESHGUI;
+  SMESHGUI_MeshEditPreview*     mySimulation;
+  SMESH_Actor*                  myMeshActor;
+  bool                          myNoPreview;
+};
+
+/*!
+ * \brief Dialog to make a mesh pass through a point
+ */
+
+class SMESHGUI_EXPORT SMESHGUI_AddNodeOnSegmentDlg : public SMESHGUI_Dialog
+{
+  Q_OBJECT
+
+public:
+  SMESHGUI_AddNodeOnSegmentDlg();
+
+signals:
+
+  void                          selTypeChanged();
+
+private:
+  QWidget*                      createMainFrame( QWidget* );
+
+  QPushButton*                  mySegmentBtn;
+  QLineEdit*                    mySegment;
+  QPushButton*                  myPositionBtn;
+  SMESHGUI_SpinBox*             myPositionSpin;
+  QCheckBox*                    myPreviewChkBox;
+
+  QString                       myHelpFileName;
+
+  friend class SMESHGUI_AddNodeOnSegmentOp;
+
+private slots:
+  void                          ButtonToggled( bool );
+};
+
+#endif // SMESHGUI_AddNodeOnSegmentDLG_H
index 937a1f241801e1bf90c6323d43758dd89402f8df..a348a1e18d7142510cff05ff7846cd06807a63f7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 917b042b460a153d7d32d901da5963833a6efcb7..b858421727226bfe454263116f86787b9d149d10 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2587e0010999aa9b40e904ddfb32fdc41bfc22d8..5abe633ca9acfbec247efacc26924f9abb8b7b90 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index df3813f2d04c460a4770311e1022c6723bea1a00..29f40f3aad715132e3f0861087714d6e5bb2300f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 11926c33c83f0cd818e7575d34c584a87e746c36..241826316a1c5b04fae4376a9df331c76cd8bef4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 86bdf7b404e3afe496da7ad1939e99c3f3bfb503..a4bf07d210bdb1f20d34457db52dbaf0bd1285ed 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 8bbec57dec7493c33a391296e88a6ed07b5298bd..039a7cde27c92491bf39e3a770b24878b90dad0f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -896,6 +896,56 @@ void SMESHGUI_ComputeDlg_QThreadQDialog::closeEvent(QCloseEvent *event)
   event->accept();
 }
 
+//================================================================================
+void SMESHGUI_BaseComputeOp::logMeshSize()
+{
+  if(myMesh->_is_nil())
+  {
+    return;
+  }
+
+  SMESH::smIdType_array_var aRes = myMesh->GetMeshInfo();
+  QString aMessage = QString("%1").arg( aRes[SMDSAbs_EntityType::SMDSEntity_Node]) + " nodes";
+  CAM_Application::logStructuredUserEvent("Mesh",
+                                          "Result size",
+                                          "",
+                                          "",
+                                          aMessage);
+  
+  int nbEdges = aRes[SMDSAbs_EntityType::SMDSEntity_Edge] + aRes[SMDSAbs_EntityType::SMDSEntity_Quad_Edge];
+  aMessage = QString("%1").arg(nbEdges) + " edges";
+  CAM_Application::logStructuredUserEvent("Mesh",
+                                          "Result size",
+                                          "",
+                                          "",
+                                          aMessage);
+  
+  int nbFaces = aRes[SMDSAbs_EntityType::SMDSEntity_Triangle] + aRes[SMDSAbs_EntityType::SMDSEntity_Quad_Triangle] +
+                aRes[SMDSAbs_EntityType::SMDSEntity_BiQuad_Triangle] + aRes[SMDSAbs_EntityType::SMDSEntity_Quadrangle] +
+                aRes[SMDSAbs_EntityType::SMDSEntity_Quad_Quadrangle] + aRes[SMDSAbs_EntityType::SMDSEntity_BiQuad_Quadrangle] +
+                aRes[SMDSAbs_EntityType::SMDSEntity_Polygon] + aRes[SMDSAbs_EntityType::SMDSEntity_Quad_Polygon];
+  aMessage = QString("%1").arg(nbFaces) + " faces";
+  CAM_Application::logStructuredUserEvent("Mesh",
+                                          "Result size",
+                                          "",
+                                          "",
+                                          aMessage);
+  
+  int nbVolumes = aRes[SMDSAbs_EntityType::SMDSEntity_Tetra] + aRes[SMDSAbs_EntityType::SMDSEntity_Quad_Tetra] +
+                  aRes[SMDSAbs_EntityType::SMDSEntity_Pyramid] + aRes[SMDSAbs_EntityType::SMDSEntity_Quad_Pyramid] +
+                  aRes[SMDSAbs_EntityType::SMDSEntity_Hexa] + aRes[SMDSAbs_EntityType::SMDSEntity_Quad_Hexa] +
+                  aRes[SMDSAbs_EntityType::SMDSEntity_TriQuad_Hexa] + aRes[SMDSAbs_EntityType::SMDSEntity_Penta] +
+                  aRes[SMDSAbs_EntityType::SMDSEntity_Quad_Penta] + aRes[SMDSAbs_EntityType::SMDSEntity_BiQuad_Penta] +
+                  aRes[SMDSAbs_EntityType::SMDSEntity_Hexagonal_Prism] + aRes[SMDSAbs_EntityType::SMDSEntity_Polyhedra];
+  aMessage = QString("%1").arg(nbVolumes) + " volumes";
+  CAM_Application::logStructuredUserEvent("Mesh",
+                                          "Result size",
+                                          "",
+                                          "",
+                                          aMessage);
+
+}
+
 //================================================================================
 /*!
  * \brief computeMesh()
@@ -1060,9 +1110,9 @@ void SMESHGUI_BaseComputeOp::computeMesh()
               }
             }
             catch (...) {
-#ifdef _DEBUG_
+
               MESSAGE ( "Exception thrown during mesh visualization" );
-#endif
+
               if ( SMDS_Mesh::CheckMemory(true) ) { // has memory to show warning?
                 SMESH::OnVisuException();
               }
@@ -1122,9 +1172,13 @@ void SMESHGUI_BaseComputeOp::computeMesh()
     isShowResultDlg = true;
   }
 
+  //log Mesh size info
+  logMeshSize();
+
   // SHOW RESULTS
   if ( isShowResultDlg )
     showComputeResult( memoryLack, noCompError,aCompErrors, noHypoError, aHypErrors );
+
 }
 
 void SMESHGUI_BaseComputeOp::showComputeResult( const bool theMemoryLack,
index c25f32255db9618f2e6bd9d9703728f8f9a71551..869a3185a2319c35b1e9d317a551971f461b877b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -95,6 +95,7 @@ protected:
                                                     const QString&);
 
   virtual bool                   isValid( SUIT_Operation* theOp ) const;
+  void                           logMeshSize();
     
 protected slots:
   virtual bool                   onApply();
index fb5c164b765ee0ab18dcd2e73d440848dd030a57..920c42b387117cd538026e3037b6b2ca34923414 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9273dd6376eb9f4d2a05c979dac332c09187ba0e..4887956243388d960f43a5559487d370e8dc51ef 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index db5fcb66d1e0787e748869da9db00756d4cd1f66..6a3fcf9b2dde3515f3797dc9ec502890813aad3c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a2e3e133ea183fff0333a27edae3f0f88eb44825..f8a90b41be5fa4aad3fd98bfd2793b660f4a7632 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d2e137b066efa5dd7588d507b2e974fa21941902..5deaaee81b29ee635fa6a0ad2511193ea392dfee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ea0d8ed07eb43b142f7d6f683e65cb79690ea4a3..ce1256a65817b4326c81f35316954642109cd01d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/src/SMESHGUI/SMESHGUI_CreateDualMeshDlg.cxx b/src/SMESHGUI/SMESHGUI_CreateDualMeshDlg.cxx
new file mode 100644 (file)
index 0000000..c4a08a1
--- /dev/null
@@ -0,0 +1,96 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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
+//
+
+// SMESH SMESHGUI : GUI for SMESH component
+// File   : SMESHGUI_CreateDualMeshDlg.cxx
+// Author : Yoann AUDOUIN (EDF)
+// SMESH includes
+//
+#include "SMESHGUI_CreateDualMeshDlg.h"
+
+#include "SMESHGUI_CreateDualMeshOp.h"
+
+// Qt includes
+#include <QGroupBox>
+#include <QCheckBox>
+#include <QRadioButton>
+#include <QButtonGroup>
+#include <QGroupBox>
+#include <QFrame>
+#include <QHBoxLayout>
+#include <QGridLayout>
+#include <QLabel>
+#include <QLineEdit>
+
+#define SPACING 6
+#define MARGIN  11
+
+SMESHGUI_CreateDualMeshDlg::SMESHGUI_CreateDualMeshDlg()
+  : SMESHGUI_Dialog( 0, false, true )
+{
+  setWindowTitle( tr( "CAPTION" ) );
+
+  // Create top controls
+
+  // mesh
+  setObjectPixmap( "SMESH", tr( "ICON_SELECT" ) );
+  createObject( tr( "MESH" ), mainFrame(), 0 );
+
+  myMeshNameLabel = new QLabel(QString(tr("DUAL_MESH_NAME")), mainFrame());
+  myMeshName = new QLineEdit(mainFrame());
+
+  myProjShape = new QCheckBox(QString(tr("PROJ_SHAPE")), mainFrame());
+  myProjShape->toggle();
+
+  myWarning = new QLabel(QString("<b>%1</b>").arg(tr("NON_TETRA_MESH_WARNING")), mainFrame());
+
+  // Fill layout
+  QGridLayout* aLay = new QGridLayout( mainFrame() );
+  aLay->setMargin( 5 );
+  aLay->setSpacing( 5 );
+
+  aLay->addWidget( objectWg( 0,  Label ),   0, 0 );
+  aLay->addWidget( objectWg( 0,  Btn ),     0, 1 );
+  aLay->addWidget( objectWg( 0,  Control ), 0, 2 );
+  aLay->addWidget( myWarning,               3, 0, 1, 3 );
+  aLay->addWidget( myMeshNameLabel,         1, 0 );
+  aLay->addWidget( myMeshName,              1, 2 );
+  aLay->addWidget( myProjShape,              2, 0 );
+
+}
+
+SMESHGUI_CreateDualMeshDlg::~SMESHGUI_CreateDualMeshDlg()
+{
+}
+
+void SMESHGUI_CreateDualMeshDlg::ShowWarning(bool toShow)
+{
+  if ( toShow )
+    myWarning->show();
+  else
+    myWarning->hide();
+}
+
+bool SMESHGUI_CreateDualMeshDlg::isWarningShown()
+{
+  return myWarning->isVisible();
+}
\ No newline at end of file
diff --git a/src/SMESHGUI/SMESHGUI_CreateDualMeshDlg.h b/src/SMESHGUI/SMESHGUI_CreateDualMeshDlg.h
new file mode 100644 (file)
index 0000000..b38531b
--- /dev/null
@@ -0,0 +1,65 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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
+//
+
+// SMESH SMESHGUI : GUI for SMESH component
+// File   : SMESHGUI_CreateDualMeshDlg.h
+// Author : Yoann Audouin (EDF)
+//
+#ifndef SMESHGUI_CREATEDUALMESHDLG_H
+#define SMESHGUI_CREATEDUALMESHDLG_H
+
+// SMESH includes
+#include "SMESH_SMESHGUI.hxx"
+
+#include "SMESHGUI_Dialog.h"
+
+class QCheckBox;
+class QRadioButton;
+class QButtonGroup;
+class QGroupBox;
+class QLabel;
+class QLineEdit;
+
+class SMESHGUI_EXPORT SMESHGUI_CreateDualMeshDlg : public SMESHGUI_Dialog
+{
+  Q_OBJECT
+
+public:
+  SMESHGUI_CreateDualMeshDlg();
+  virtual ~SMESHGUI_CreateDualMeshDlg();
+
+  void          ShowWarning(bool);
+  bool          isWarningShown();
+
+  QLineEdit* myMeshName;
+  QCheckBox* myProjShape;
+
+signals:
+  void          onClicked( int );
+
+
+private:
+  QLabel* myWarning;
+  QLabel* myMeshNameLabel;
+};
+
+#endif // SMESHGUI_CREATEDUALMESHDLG_H
diff --git a/src/SMESHGUI/SMESHGUI_CreateDualMeshOp.cxx b/src/SMESHGUI/SMESHGUI_CreateDualMeshOp.cxx
new file mode 100644 (file)
index 0000000..9ca334c
--- /dev/null
@@ -0,0 +1,293 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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
+//
+
+// SMESH SMESHGUI : GUI for SMESH component
+// File   : SMESHGUI_CreateDualMeshOp.cxx
+// Author : Yoann AUDOUIN (EDF)
+// SMESH includes
+//
+#include "SMESHGUI_CreateDualMeshOp.h"
+
+#include "SMESHGUI.h"
+#include "SMESHGUI_CreateDualMeshDlg.h"
+#include "SMESHGUI_MeshEditPreview.h"
+#include "SMESHGUI_Utils.h"
+#include "SMESH_ActorUtils.h"
+#include "SMESH_TypeFilter.hxx"
+#include "SMDSAbs_ElementType.hxx"
+
+// SALOME GUI includes
+#include <LightApp_UpdateFlags.h>
+#include <SUIT_MessageBox.h>
+#include <SUIT_OverrideCursor.h>
+#include <SalomeApp_Tools.h>
+#include <SalomeApp_Application.h>
+#include <SALOME_Actor.h>
+
+// Qt includes
+#include <QLineEdit>
+#include <QCheckBox>
+
+// IDL includes
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_MeshEditor)
+
+// VTK includes
+#include <vtkProperty.h>
+
+//================================================================================
+/*!
+ * \brief Constructor
+ *
+ * Initialize operation
+*/
+//================================================================================
+SMESHGUI_CreateDualMeshOp::SMESHGUI_CreateDualMeshOp()
+  : SMESHGUI_SelectionOp(),
+    myDlg( 0 )
+{
+}
+
+//================================================================================
+/*!
+ * \brief Destructor
+*/
+//================================================================================
+SMESHGUI_CreateDualMeshOp::~SMESHGUI_CreateDualMeshOp()
+{
+  if ( myDlg ) delete myDlg;
+}
+
+//================================================================================
+/*!
+ * \brief Gets dialog of this operation
+  * \retval LightApp_Dialog* - pointer to dialog of this operation
+*/
+//================================================================================
+LightApp_Dialog* SMESHGUI_CreateDualMeshOp::dlg() const
+{
+  return myDlg;
+}
+
+//================================================================================
+/*!
+ * \brief Creates dialog if necessary and shows it
+ *
+ * Virtual method redefined from base class called when operation is started creates
+ * dialog if necessary and shows it, activates selection
+ */
+//================================================================================
+void SMESHGUI_CreateDualMeshOp::startOperation()
+{
+  if( !myDlg )
+  {
+    myDlg = new SMESHGUI_CreateDualMeshDlg( );
+  }
+  connect( myDlg, SIGNAL( onClicked( int ) ), SLOT( ConnectRadioButtons( int ) ) );
+
+  myHelpFileName = "create_dual_mesh.html";
+
+  SMESHGUI_SelectionOp::startOperation();
+
+  myDlg->activateObject( 0 );
+  myDlg->ShowWarning( false );
+  myDlg->show();
+
+  selectionDone();
+}
+
+//================================================================================
+/*!
+ * \brief Updates dialog's look and feel
+ *
+ * Virtual method redefined from the base class updates dialog's look and feel
+ */
+//================================================================================
+void SMESHGUI_CreateDualMeshOp::selectionDone()
+{
+  if ( !dlg()->isVisible() )
+    return;
+
+  SMESHGUI_SelectionOp::selectionDone();
+  try
+  {
+    QString anObjEntry = myDlg->selectedObject( 0 );
+    _PTR(SObject) pObj = SMESH::getStudy()->FindObjectID( anObjEntry.toUtf8().data() );
+    if ( !pObj ) return;
+
+    SMESH::SMESH_IDSource_var idSource =
+      SMESH::SObjectToInterface<SMESH::SMESH_IDSource>( pObj );
+
+    myDlg->setButtonEnabled( true, QtxDialog::OK | QtxDialog::Apply );
+    if( idSource->_is_nil() )
+    {
+      myDlg->setButtonEnabled( false, QtxDialog::OK | QtxDialog::Apply );
+      return;
+    }
+    SMESH::SMESH_Mesh_var      mesh = idSource->GetMesh();
+
+    // show warning on non-conformal result mesh
+    if ( ! idSource->_is_nil() )
+    {
+      SMESH::SMESH_subMesh_var subMesh =
+        SMESH::SObjectToInterface<SMESH::SMESH_subMesh>( pObj );
+      // Check that mesh is only tetra
+      if (!checkMesh(idSource)){
+        myDlg->ShowWarning( true );
+        myDlg->setButtonEnabled(false, QtxDialog::OK|QtxDialog::Apply);
+      }
+    }
+    std::string mesh_name = "dual_" + pObj->GetName();
+    myDlg->myMeshName->setText(QString(mesh_name.c_str()));
+
+  }
+  catch ( const SALOME::SALOME_Exception& S_ex )
+  {
+    SalomeApp_Tools::QtCatchCorbaException( S_ex );
+  }
+  catch ( ... )
+  {
+  }
+
+}
+
+//================================================================================
+/*!
+ * \brief Creates selection filter
+  * \param theId - identifier of current selection widget
+  * \retval SUIT_SelectionFilter* - pointer to the created filter or null
+ *
+ * Creates selection filter in accordance with identifier of current selection widget
+ */
+//================================================================================
+SUIT_SelectionFilter* SMESHGUI_CreateDualMeshOp::createFilter( const int theId ) const
+{
+  if ( theId == 0 )
+    return new SMESH_TypeFilter( SMESH::MESHorSUBMESH );
+  else
+    return 0;
+}
+
+//================================================================================
+/*!
+ * \brief Edits mesh
+ *
+ * Virtual slot redefined from the base class called when "Apply" button is clicked
+ */
+//================================================================================
+bool SMESHGUI_CreateDualMeshOp::onApply()
+{
+  SUIT_OverrideCursor aWaitCursor;
+
+  QString aMess;
+  QStringList anEntryList;
+
+  QString anObjEntry = myDlg->selectedObject( 0 );
+  _PTR(SObject) pObj = SMESH::getStudy()->FindObjectID( anObjEntry.toUtf8().data() );
+  if ( !pObj )
+  {
+    dlg()->show();
+    SUIT_MessageBox::warning( myDlg,
+                              tr( "SMESH_WRN_WARNING" ), tr("MESH_IS_NOT_SELECTED") );
+    return false;
+  }
+
+  SMESH::SMESH_Mesh_var mesh;
+  SMESH::SMESH_IDSource_var idSource =
+    SMESH::SObjectToInterface<SMESH::SMESH_IDSource>( pObj );
+  if( !CORBA::is_nil(idSource) )
+    mesh = idSource->GetMesh();
+
+  if( CORBA::is_nil(mesh) )
+  {
+    SUIT_MessageBox::warning( myDlg,
+                              tr( "SMESH_WRN_WARNING" ), tr("REF_IS_NULL") );
+    return false;
+  }
+
+  bool aResult = false;
+  SMESH::SMESH_Gen_var gen = SMESHGUI::GetSMESHGen();
+  SMESH::SMESH_Mesh_var newMesh;
+  QByteArray newMeshName=myDlg->myMeshName->text().toUtf8();
+  bool adapt_to_shape=myDlg->myProjShape->isChecked();
+  try
+  {
+    newMesh = gen->CreateDualMesh(mesh, newMeshName.constData(), adapt_to_shape);
+
+    if ( !newMesh->_is_nil() )
+      if ( _PTR(SObject) aSObject = SMESH::ObjectToSObject( newMesh ) )
+      {
+        anEntryList.append( aSObject->GetID().c_str() );
+
+        SMESH::SetName( aSObject, newMeshName );
+      }
+    aResult = true;
+  }
+  catch ( const SALOME::SALOME_Exception& S_ex )
+  {
+    SalomeApp_Tools::QtCatchCorbaException( S_ex );
+    aResult = false;
+  }
+  catch ( ... )
+  {
+    aResult = false;
+  }
+  if( aResult )
+  {
+    SMESHGUI::Modified();
+    selectionDone();
+    update( UF_ObjBrowser | UF_Model | UF_Viewer );
+
+  }
+  SMESHGUI::GetSMESHGUI()->getApp()->updateObjectBrowser();
+
+  // updateObjBrowser(true);
+  // SMESHGUI::Modified();
+
+  // if( LightApp_Application* anApp =
+  //     dynamic_cast<LightApp_Application*>( SUIT_Session::session()->activeApplication() ) )
+  //   anApp->browseObjects( anEntryList, true );
+
+  return true;
+
+}
+
+//================================================================================
+/*! checkMesh
+ *  Verify that mesh as only tetraheadrons as 3D elements
+ */
+//================================================================================
+
+bool
+SMESHGUI_CreateDualMeshOp::checkMesh( const SMESH::SMESH_IDSource_var& idSource)
+{
+  SMESH::smIdType_array_var nbElemOfType = idSource->GetMeshInfo();
+  // Checking that the mesh only has Tetrahedron
+  bool hasOnlyTetra  = (
+                    nbElemOfType[SMDSEntity_Tetra     ] &&
+                   !nbElemOfType[SMDSEntity_Hexa      ] &&
+                   !nbElemOfType[SMDSEntity_Pyramid   ] &&
+                   !nbElemOfType[SMDSEntity_Polygon   ] &&
+                   !nbElemOfType[SMDSEntity_Penta     ] );
+
+  return hasOnlyTetra;
+}
diff --git a/src/SMESHGUI/SMESHGUI_CreateDualMeshOp.h b/src/SMESHGUI/SMESHGUI_CreateDualMeshOp.h
new file mode 100644 (file)
index 0000000..15f0f87
--- /dev/null
@@ -0,0 +1,64 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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
+//
+
+// SMESH SMESHGUI : GUI for SMESH component
+// File   : SMESHGUI_CreateDualMeshOp.h
+// Author : Yoann AUDOUIN (EDF)
+//
+#ifndef SMESHGUI_CREATEDUALMESHOP_H
+#define SMESHGUI_CREATEDUALMESHOP_H
+
+// SMESH includes
+#include "SMESH_SMESHGUI.hxx"
+
+#include "SMESHGUI_SelectionOp.h"
+
+// IDL includes
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Mesh)
+
+class SMESHGUI_CreateDualMeshDlg;
+
+class SMESHGUI_EXPORT SMESHGUI_CreateDualMeshOp : public SMESHGUI_SelectionOp
+{
+  Q_OBJECT
+
+public:
+  SMESHGUI_CreateDualMeshOp();
+  virtual ~SMESHGUI_CreateDualMeshOp();
+
+  virtual LightApp_Dialog*       dlg() const;
+
+  static bool     checkMesh( const SMESH::SMESH_IDSource_var& );
+protected:
+  virtual void                   startOperation();
+  virtual void                   selectionDone();
+  virtual SUIT_SelectionFilter*  createFilter( const int ) const;
+
+protected slots:
+  virtual bool                   onApply();
+
+private:
+  SMESHGUI_CreateDualMeshDlg*        myDlg;
+};
+
+#endif // SMESHGUI_CREATEDUALMESHOP_H
index b17b231e69a60a4fc48ad5395e06afa52b5ab1d0..07979cf42ca7477e852fb1e1a6a796cb3bc216e0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 43e2c9c27ccb5b048f671082044de5f33e9bd498..61d491d97633733918c0c7adf8d549433472c045 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ef6949db3e559a8d6e35eff7a977fb340819a8e7..07444af59a648a9a1600c4380fab6c20d97b6d2d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a947039211c918aef597f68570ebe0fc10c3a296..fe12e2b7b1c5dd9abbabc0fddecb114051e16ac4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index c23328b7469d4a6fbabf579d74b431ec0ec1cf53..619569497fd67403c274bf6929253e96dcc9b4d6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6a149d9f2adce1a67ce3df2e7d393c33b7b63d66..ee9344f9d318fc94ea5091acc55aaddf078f9d35 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 7d393cf904fb686694f0c5df27d0597aa308f852..df3b0d9c33c0ec064d6865edfc6f3267d9796216 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0db633a116704dc9a3c14d855f8b80e362c59a57..be482ca5240ee616e1afbf91bae2350127d22f1c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 06a44303aa540602b354fa74a682a8876a57de76..74ebdf63095e17b23fd3cfdf0554dce4029fdc15 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2014-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c5520c434a7ef39506c4751f1253ea36e8fc583c..b263b74f05d5ad63a420f73668dc57c050c95292 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2014-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 05fea2e6a8a249a8fc323355dd83e3711133e316..f722385ce486ee79b6d3b846e4da41c24822256b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include <SUIT_ViewManager.h>
 #include <SVTK_ViewModel.h>
 #include <SVTK_ViewWindow.h>
+#include <SPV3D_Prs.h>
+#include <SPV3D_ViewModel.h>
+#include <PV3DViewer_ViewWindow.h>
 
+//For PV3D
+#include "SMESH_Actor.h"
 
 // IDL includes
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SMESH_Group)
 #include CORBA_SERVER_HEADER(SMESH_Mesh)
 
+std::string SMESHGUI_Displayer::getName( const QString& entry )
+{
+  Handle( SALOME_InteractiveObject ) theIO = new SALOME_InteractiveObject();
+  theIO->setEntry( entry.toUtf8().constData() );
+  if ( !theIO.IsNull() )
+  {
+    //  Find SOBject (because shape should be published previously)
+    if ( study() )
+    {
+      _PTR(SObject) aSObj ( study()->studyDS()->FindObjectID( theIO->getEntry() ) );
+      _PTR(GenericAttribute) anAttr;
+
+      if ( aSObj && aSObj->FindAttribute( anAttr, "AttributeName") )
+      {
+        _PTR(AttributeName) aNameAttr( anAttr );
+        return aNameAttr->Value();
+      }
+    }
+  }
+  return "";
+}
 
 SMESHGUI_Displayer::SMESHGUI_Displayer( SalomeApp_Application* app )
 : LightApp_Displayer(),
@@ -57,7 +83,7 @@ SMESHGUI_Displayer::~SMESHGUI_Displayer()
 
 SALOME_Prs* SMESHGUI_Displayer::buildPresentation( const QString& entry, SALOME_View* theViewFrame )
 {
-  SALOME_Prs* prs = 0;
+  SALOME_Prs *prs = nullptr;
 
   SALOME_View* aViewFrame = theViewFrame ? theViewFrame : GetActiveView();
 
@@ -81,6 +107,28 @@ SALOME_Prs* SMESHGUI_Displayer::buildPresentation( const QString& entry, SALOME_
       else if( anActor )
         SMESH::RemoveActor( vtk_viewer->getViewManager()->getActiveView(), anActor );
     }
+    
+    SPV3D_ViewModel *pv3d_viewer = dynamic_cast<SPV3D_ViewModel *>( aViewFrame );
+    if(pv3d_viewer)
+    {
+      SUIT_ViewWindow* wnd = pv3d_viewer->getViewManager()->getActiveView();
+      SMESH_Actor* anActor = SMESH::FindActorByEntry( wnd, entry.toUtf8().data() );
+      if( !anActor )
+        anActor = SMESH::CreateActor( entry.toUtf8().data(), true );
+      if( anActor )
+      {
+        prs = LightApp_Displayer::buildPresentation( entry.toUtf8().data(), aViewFrame );
+        if( prs )
+        {
+          SPV3D_Prs *pv3dPrs = dynamic_cast<SPV3D_Prs*>( prs );
+          if( pv3dPrs )
+          {
+            pv3dPrs->SetName( getName( entry ) );
+            pv3dPrs->FillUsingActor( anActor );
+          }
+        }
+      }
+    }
   }
 
   return prs;
@@ -94,7 +142,7 @@ SalomeApp_Study* SMESHGUI_Displayer::study() const
 bool SMESHGUI_Displayer::canBeDisplayed( const QString& entry, const QString& viewer_type ) const
 {
   bool res = false;
-  if(viewer_type != SVTK_Viewer::Type())
+  if(viewer_type != SVTK_Viewer::Type() && viewer_type != SPV3D_ViewModel::Type())
     return res;
   
   _PTR(SObject) obj = SMESH::getStudy()->FindObjectID( (const char*)entry.toUtf8() );
index e706f1441b9bf89a375523dc7d94f8a6d38a63a6..dd428354e7e0a3e9b4b856d61875193eff98c88c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -48,6 +48,7 @@ public:
 
 protected:
   SalomeApp_Study*         study() const;
+  std::string              getName( const QString& entry );
 
 private:
   SalomeApp_Application*   myApp;
index c1d1a7ff58ead543ae37e1ef37e34ea32493784f..227a2f8ab7700c8431eb07ebc9fc7a6b2094092c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6df085552a6d0cc918354081b4951e549ce27eed..3eca9299e002b94dcffd986e6e85a9d7ebd67d8e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9afbe218c28d6e73798daceb162d9412d3860329..647db35d5c7dd89a9ead674b7305fc95940898bc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f9c5e6433537815629ee4163c651cdf4d0fef798..6b5d7358f22871028ac46c094d4ac39498e8306a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ce69ade5e63432a1517365400e29c8c4543f903f..e62812954dc4882cae6f917ac950bdfed538767b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 524ec478be13315f5a38a01cb38b9a613e6c593b..df77ef9d918b079796664831562bc56c10bcebf2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index bd79186f190a2a048e856ca18d6461cf73e6615a..ed1b50d2b13f6adf86bd7cab3f9c4c8b972eb5cf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 489e301b150d4e137dbde09fba864dd0428de37a..e28efdf2ee2c41d657ceb922da7ce84316581d1b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 847a07888422f1f23611db613bd0a28a5eea7770..ce92326a56aed4b1e9c14bb8eee9e5bbc951ff7c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0d98f8911a671466b5b54f0c61b590cbbb3de1cc..497f446c2378e79799733312c2a54a3a3e2c2618 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 89af243b28b333a6bf6e76922d8cfa04999ba14b..1169933cbb4ed7ad63237dfafb1b82ee4d63f2d9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ae9b589b052f6b05922392533977b1fa98167ba2..cd7919c5b548207ccf27f3a23a841c50fdd992ba 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 82b94cefeca7cb87e0dcbbb7c7f338fc90b9e786..39e5be0991f74177fb8031bcf61528eefa5ccec9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9b2888a4073e223ec9f9598e9a40885aca534410..4e9ba78c53e63f3583344263566a9af872d51462 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1aba21f879a5b1803ec7f8e24e7b5defd2613273..0ccdd94b4f1f5916ae9a617b2a601b1cbcf63943 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9742601ef14190fa7dbe51358f1c1c1ce0a2b369..d30ca443ba915ba4727b42c851643b9a3a2ca882 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5b2496d4a7a77e83cb62b070e4a28741749484c4..98439f06eb8ec44f0db59006c5218bd8fda6d8c7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -1563,11 +1563,13 @@ void SMESHGUI_FilterTable::updateAdditionalWidget()
   bool isDbl = ( aCriterion == SMESH::FT_AspectRatio        ||
                  aCriterion == SMESH::FT_AspectRatio3D      ||
                  aCriterion == SMESH::FT_Warping            ||
+                 aCriterion == SMESH::FT_Warping3D          ||
                  aCriterion == SMESH::FT_MinimumAngle       ||
                  aCriterion == SMESH::FT_Taper              ||
                  aCriterion == SMESH::FT_Skew               ||
                  aCriterion == SMESH::FT_Area               ||
                  aCriterion == SMESH::FT_Volume3D           ||
+                 aCriterion == SMESH::FT_ScaledJacobian     ||
                  aCriterion == SMESH::FT_MaxElementLength2D ||
                  aCriterion == SMESH::FT_MaxElementLength3D ||
                  aCriterion == SMESH::FT_Length             ||
@@ -1605,6 +1607,7 @@ const char* SMESHGUI_FilterTable::getPrecision( const int aType )
   case SMESH::FT_Taper:
     retval = "parametric_precision"; break;
   case SMESH::FT_Warping:
+  case SMESH::FT_Warping3D:
   case SMESH::FT_MinimumAngle:
   case SMESH::FT_Skew:
   case SMESH::FT_CoplanarFaces:
@@ -1811,11 +1814,13 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int /*col*/,
   case SMESH::FT_AspectRatio:
   case SMESH::FT_AspectRatio3D:
   case SMESH::FT_Warping:
+  case SMESH::FT_Warping3D:
   case SMESH::FT_MinimumAngle:
   case SMESH::FT_Taper:
   case SMESH::FT_Skew:
   case SMESH::FT_Area:
   case SMESH::FT_Volume3D:
+  case SMESH::FT_ScaledJacobian:
   case SMESH::FT_MaxElementLength2D:
   case SMESH::FT_MaxElementLength3D: anIsDoubleCriterion = true; break;
 
@@ -2268,6 +2273,7 @@ const QMap<int, QString>& SMESHGUI_FilterTable::getCriteria (const int theType)
     if (aCriteria.isEmpty())
     {
       aCriteria[ SMESH::FT_AspectRatio3D        ] = tr("ASPECT_RATIO_3D");
+      aCriteria[ SMESH::FT_Warping3D            ] = tr("WARPING_3D");
       aCriteria[ SMESH::FT_RangeOfIds           ] = tr("RANGE_OF_IDS");
       aCriteria[ SMESH::FT_BelongToMeshGroup    ] = tr("BELONG_TO_MESH_GROUP");
       aCriteria[ SMESH::FT_BelongToGeom         ] = tr("BELONG_TO_GEOM");
@@ -2284,6 +2290,7 @@ const QMap<int, QString>& SMESHGUI_FilterTable::getCriteria (const int theType)
       aCriteria[ SMESH::FT_EqualVolumes         ] = tr("EQUAL_VOLUME");
       aCriteria[ SMESH::FT_EntityType           ] = tr("ENTITY_TYPE");
       aCriteria[ SMESH::FT_ConnectedElements    ] = tr("CONNECTED_ELEMS");
+      aCriteria[ SMESH::FT_ScaledJacobian       ] = tr("SCALED_JACOBIAN");
     }
     return aCriteria;
   }
index 7bad3813abf77f165c71999f53d3174df45be2bf..4ff5bf929bb33796dd6b1c29572d84f522b3d4b3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index def89e790f838576aa9f3806d02fb95af89c4cd2..d22cbd373bf6958ecce6927c390d4086fc6ce2ac 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e275b154579c7ed8e4a09f258dce42213df43949..6156b014f2a7e1d280fa989eb59de3b0edeaec03 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f24ed0bbe8604587d42dfb9b07379d4fa51d657d..594ac9137f863ba8b056e950e161e58130f3d921 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 01e5bb6e994a472c899a60f1ff6d26b0ebabdcdb..d71e3b4707976498f2b225bb26c73c6f2ff54614 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9024eb92504619d57dc5d70e3a9b1f084191b4c2..dfd43198d2036af8f18363955c2cc232127f999c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 024eb887a3ef2d7666991f92fab647d00689607e..1f14f6d7880747c9c4dacc1a8f8abe628f0d8291 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 57fce1eea0c252d7f8f55c4000144c7fe18bcf12..6b9524458975aaf195e95ada39fb3ffb36ca83a0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -276,12 +276,15 @@ namespace SMESH
   //================================================================================
 
   bool ContainsSubShape( GEOM::GEOM_Object_ptr mainGeom,
-                         GEOM::GEOM_Object_ptr subGeom )
+                         GEOM::GEOM_Object_ptr subGeom, bool allowMainShape )
   {
     if ( CORBA::is_nil( mainGeom ) ||
          CORBA::is_nil( subGeom ))
       return false;
 
+    if (allowMainShape && mainGeom->IsSame(subGeom))
+      return true;
+
     GEOM::GEOM_Gen_var geomGen = mainGeom->GetGen();
     if ( geomGen->_is_nil() ) return false;
 
index 04e8bfd93a8525b0a16b6849bf3e325ee31dbd04..2278b64f8ad3b2b187da84924a2ca78a424936ea 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -61,7 +61,8 @@ namespace SMESH
                                        QString& subGeom, QString& meshGeom);
 
   SMESHGUI_EXPORT bool ContainsSubShape( GEOM::GEOM_Object_ptr mainShape,
-                                         GEOM::GEOM_Object_ptr subShape );
+                                         GEOM::GEOM_Object_ptr subShape,
+                                         bool allowMainShape = true );
 }
 
 #endif // SMESHGUI_GEOMGENUTILS_H
index 18f2612341e973f17be2a6a2854671a7fe1ca67d..018c75c2196fe3c1c88feaf79018e2adfa00a635 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 606a0a7325a155245a70a467c90628ac06f00392..6a5fd6e5f81d45405449b9924d735a88a47d903a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f7dccaff45c6304e29d3f6a81d9533a6d885f68c..746adb9941ca9dc3e280161a1dcfc92d60b275bd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 157cbdf835eab9cf33b40a3a96826ba73223181e..1a734b2cd43ac69a7cc5518b02ee989206fd07a8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3ff95f061dfe3f128ed518546b3a5eb2f15843e3..1b6c9ba4caae01e964a206a1506711a910ae877e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 3b911500eb6519fa8398e826eebc1bace971f5a9..e1c2d023a111cd8a4acbc06b934804b1094be2a6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 4e5718412253d309bf816de3a399bc50edaa4040..022eb68c7dd931c4dfdd5fcbfd658086b82f3f98 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index dbf0701e0a654dfe393809b5c87232f2cd39f1b0..73aae1c98560aaa644a46469da72c6a455e9b512 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/src/SMESHGUI/SMESHGUI_HomardAdaptDlg.cxx b/src/SMESHGUI/SMESHGUI_HomardAdaptDlg.cxx
new file mode 100644 (file)
index 0000000..d56527d
--- /dev/null
@@ -0,0 +1,1213 @@
+// Copyright (C) 2011-2024  CEA, EDF
+//
+// 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 "SMESHGUI_HomardAdaptDlg.h"
+
+#include "SMESHGUI.h"
+#include "SMESHGUI_HomardBoundaryDlg.h"
+#include "SMESHGUI_HomardUtils.h"
+#include "SMESHGUI_Utils.h"
+#include "SMESHGUI_VTKUtils.h"
+#include "SMESHGUI_MeshUtils.h"
+#include "SMESH_TryCatch.hxx"
+
+#include <SalomeApp_Tools.h>
+#include <SalomeApp_Module.h>
+#include <SalomeApp_Application.h>
+#include <LightApp_SelectionMgr.h>
+#include <SUIT_MessageBox.h>
+#include <SUIT_OverrideCursor.h>
+#include <SUIT_FileDlg.h>
+#include <SUIT_Desktop.h>
+#include <SUIT_Session.h>
+#include <SVTK_ViewWindow.h>
+
+#include <QFileDialog>
+#include <QMessageBox>
+#include <QButtonGroup>
+
+#include <utilities.h>
+
+#ifdef WIN32
+#include <direct.h>
+#endif
+
+using namespace std;
+
+// La gestion des repertoires
+#ifndef CHDIR
+  #ifdef WIN32
+    #define CHDIR _chdir
+  #else
+    #define CHDIR chdir
+  #endif
+#endif
+
+const int SPACING = 6;            // layout spacing
+const int MARGIN  = 9;            // layout margin
+
+//================================================================================
+/*!
+ * \brief Constructor
+ */
+//================================================================================
+SMESHGUI_HomardAdaptDlg::SMESHGUI_HomardAdaptDlg(SMESHHOMARD::HOMARD_Gen_ptr myHomardGen0)
+  : QDialog(SMESHGUI::desktop())
+{
+  MESSAGE("Debut du constructeur de SMESHGUI_HomardAdaptDlg");
+  myHomardGen = SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen0);
+  //myHomardGen = SMESHGUI::GetSMESHGen()->CreateHOMARD_ADAPT();
+  myHomardGen->Register();
+
+  setModal(false);
+  setAttribute( Qt::WA_DeleteOnClose, true );
+  setWindowTitle( tr( "ADAPT_WITH_HOMARD" ) );
+  setSizeGripEnabled( true );
+
+  QTabWidget* myTabWidget = new QTabWidget( this );
+
+  // Arguments
+  myArgs = new SMESHGUI_HomardAdaptArguments(myTabWidget);
+
+  // Advanced options
+  myAdvOpt = new SMESHGUI_HomardAdaptAdvanced(myTabWidget);
+
+  myTabWidget->addTab( myArgs, tr( "Args" ) );
+  myTabWidget->addTab( myAdvOpt, tr( "ADVOP" ) );
+
+  myAdvOpt->logGroupBox               ->setTitle(tr( "LOG_GROUP_TITLE" ));
+  myAdvOpt->workingDirectoryLabel     ->setText (tr( "WORKING_DIR" ));
+  myAdvOpt->workingDirectoryPushButton->setText (tr( "SELECT_DIR" ));
+  myAdvOpt->verboseLevelLabel         ->setText (tr( "VERBOSE_LEVEL" ));
+  myAdvOpt->logInFileCheck            ->setText (tr( "LOG_IN_FILE" ));
+  myAdvOpt->removeLogOnSuccessCheck   ->setText (tr( "REMOVE_LOG_ON_SUCCESS" ));
+  myAdvOpt->keepWorkingFilesCheck     ->setText (tr( "KEEP_WORKING_FILES" ));
+
+  //myAdvOpt->logInFileCheck->setChecked(true);
+  //myAdvOpt->removeLogOnSuccessCheck->setChecked(false);
+
+  // Working directory
+  QString aWorkingDir = QDir::tempPath();
+  char *aTmp_dir = getenv("SALOME_TMP_DIR");
+  if (aTmp_dir != NULL) {
+    QDir aTmpDir (aTmp_dir);
+    if (aTmpDir.exists()) {
+      aWorkingDir = aTmpDir.absolutePath();
+    }
+  }
+  myAdvOpt->workingDirectoryLineEdit->setText(aWorkingDir);
+
+  // Out med file and/or mesh publication
+  myArgs->myOutMedFileChk->setChecked(true);
+  myArgs->myOutPublishChk->setChecked(true);
+
+  // buttons
+  QHBoxLayout* btnLayout = new QHBoxLayout;
+  btnLayout->setSpacing( 6 );
+  btnLayout->setMargin( 0 );
+
+  buttonOk = new QPushButton(tr("SMESH_BUT_APPLY_AND_CLOSE"), this);
+  buttonOk->setAutoDefault(false);
+  btnLayout->addWidget(buttonOk);
+  btnLayout->addStretch( 10 );
+
+  buttonApply = new QPushButton(tr("SMESH_BUT_APPLY"), this);
+  buttonApply->setAutoDefault(false);
+  btnLayout->addWidget(buttonApply);
+  btnLayout->addStretch( 10 );
+
+  buttonCancel = new QPushButton(tr( "SMESH_BUT_CANCEL" ), this);
+  buttonCancel->setAutoDefault(false);
+  btnLayout->addWidget(buttonCancel);
+  btnLayout->addStretch( 10 );
+
+  buttonHelp = new QPushButton(tr( "SMESH_BUT_HELP" ), this);
+  buttonHelp->setAutoDefault(false);
+  btnLayout->addWidget(buttonHelp);
+
+  // dialog layout
+  QVBoxLayout* l = new QVBoxLayout ( this );
+  l->setMargin( 9 );
+  l->setSpacing( 6 );
+  l->addWidget( myTabWidget );
+  l->addStretch();
+  l->addLayout( btnLayout );
+
+  // dialog name and size
+  resize(600, 1000);
+  QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+  sizePolicy.setHorizontalStretch(0);
+  sizePolicy.setVerticalStretch(0);
+  sizePolicy.setHeightForWidth(this->sizePolicy().hasHeightForWidth());
+  setSizePolicy(sizePolicy);
+  setMinimumSize(QSize(500, 320));
+  setSizeIncrement(QSize(1, 1));
+  setBaseSize(QSize(600, 600));
+  setAutoFillBackground(true);
+
+  SetBoundaryNo();
+  InitConnect();
+
+  myArgs->GBBoundaryC->setVisible(0);
+  myArgs->GBBoundaryN->setVisible(0);
+  myArgs->GBBoundaryA->setVisible(0);
+  myArgs->GBBoundaryD->setVisible(0);
+
+  adjustSize();
+
+  //MESSAGE("Fin du constructeur de SMESHGUI_HomardAdaptDlg");
+}
+
+//=================================================================================
+// function : ~SMESHGUI_HomardAdaptDlg()
+// purpose  : Destroys the object and frees any allocated resources
+//=================================================================================
+SMESHGUI_HomardAdaptDlg::~SMESHGUI_HomardAdaptDlg()
+{
+  // no need to delete child widgets, Qt does it all for us
+  myHomardGen->DeleteCase();
+}
+
+//=================================================================================
+// function : InitConnect
+// purpose  : 
+//=================================================================================
+void SMESHGUI_HomardAdaptDlg::InitConnect()
+{
+  connect( myArgs->mySelectInMedFileButton, SIGNAL(pressed()), this, SLOT(SetFileName()));
+
+  connect( myArgs->RBBoundaryNo,      SIGNAL(clicked()), this, SLOT(SetBoundaryNo()));
+  connect( myArgs->RBBoundaryCAO,     SIGNAL(clicked()), this, SLOT(SetBoundaryCAO()));
+  connect( myArgs->RBBoundaryNonCAO,  SIGNAL(clicked()), this, SLOT(SetBoundaryNonCAO()));
+
+  connect( myArgs->PBBoundaryCAONew,  SIGNAL(pressed()), this, SLOT(PushBoundaryCAONew()));
+  connect( myArgs->PBBoundaryCAOEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryCAOEdit()) );
+  connect( myArgs->PBBoundaryCAOHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryCAOHelp()) );
+  connect( myArgs->CBBoundaryD,       SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryD()));
+  connect( myArgs->PBBoundaryDiNew,   SIGNAL(pressed()), this, SLOT(PushBoundaryDiNew()));
+  connect( myArgs->PBBoundaryDiEdit,  SIGNAL(pressed()), this, SLOT(PushBoundaryDiEdit()) );
+  connect( myArgs->PBBoundaryDiHelp,  SIGNAL(pressed()), this, SLOT(PushBoundaryDiHelp()) );
+  connect( myArgs->CBBoundaryA,       SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryA()));
+  connect( myArgs->PBBoundaryAnNew,   SIGNAL(pressed()), this, SLOT(PushBoundaryAnNew()));
+  connect( myArgs->PBBoundaryAnEdit,  SIGNAL(pressed()), this, SLOT(PushBoundaryAnEdit()) );
+  connect( myArgs->PBBoundaryAnHelp,  SIGNAL(pressed()), this, SLOT(PushBoundaryAnHelp()) );
+
+  connect( buttonOk,       SIGNAL(pressed()), this, SLOT(PushOnOK()));
+  connect( buttonApply,    SIGNAL(pressed()), this, SLOT(PushOnApply()));
+  connect( buttonCancel,   SIGNAL(pressed()), this, SLOT(close()));
+  connect( buttonHelp,     SIGNAL(pressed()), this, SLOT(PushOnHelp()));
+
+  connect(myArgs, SIGNAL(updateSelection()), this, SLOT(updateSelection()));
+}
+
+//=================================================================================
+// function : InitBoundarys
+// purpose  : Initialisation des menus avec les frontieres deja enregistrees
+//=================================================================================
+void SMESHGUI_HomardAdaptDlg::InitBoundarys()
+{
+  MESSAGE("InitBoundarys");
+  //myArgs->TWBoundary->clearContents();
+  //myArgs->TWBoundary->clear();
+  // Pour les frontieres analytiques : la colonne des groupes
+  SMESHHOMARD::ListGroupType_var _listeGroupesCas = myCase->GetGroups();
+  QTableWidgetItem *__colItem = new QTableWidgetItem();
+  __colItem->setText(tr(""));
+  myArgs->TWBoundary->setHorizontalHeaderItem(0, __colItem);
+  for ( int i = 0; i < (int)_listeGroupesCas->length(); i++ ) {
+    myArgs->TWBoundary->insertRow(i);
+    myArgs->TWBoundary->setItem( i, 0, new QTableWidgetItem(QString((_listeGroupesCas)[i]).trimmed()));
+    myArgs->TWBoundary->item( i, 0 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
+  }
+  // Pour les frontieres CAO : la liste a saisir
+  // Pour les frontieres discretes : la liste a saisir
+  // Pour les frontieres analytiques : les colonnes de chaque frontiere
+  SMESHHOMARD::HOMARD_Boundary_var myBoundary ;
+  SMESHHOMARD::listeBoundarys_var  mesBoundarys = myHomardGen->GetAllBoundarysName();
+  //MESSAGE("Nombre de frontieres enregistrees : "<<mesBoundarys->length());
+  for (int i=0; i < (int)mesBoundarys->length(); i++) {
+    myBoundary = myHomardGen->GetBoundary(mesBoundarys[i]);
+    int type_obj = myBoundary->GetType() ;
+    if ( type_obj==-1 )     { myArgs->CBBoundaryCAO->addItem(QString(mesBoundarys[i])); }
+    else if ( type_obj==0 ) { myArgs->CBBoundaryDi->addItem(QString(mesBoundarys[i])); }
+    else                    { AddBoundaryAn(QString(mesBoundarys[i])); }
+  }
+  // Ajustement
+  myArgs->TWBoundary->resizeColumnsToContents();
+  myArgs->TWBoundary->resizeRowsToContents();
+  myArgs->TWBoundary->clearSelection();
+}
+
+//=================================================================================
+// function : CheckCase
+// purpose  : 
+//=================================================================================
+bool SMESHGUI_HomardAdaptDlg::CheckCase(bool fixCase)
+{
+  MESSAGE("CheckCase");
+
+  QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
+  if (aWorkingDir == QString("")) {
+    QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                              QObject::tr("HOM_CASE_DIRECTORY_1") );
+    return false;
+  }
+
+  if (CHDIR(aWorkingDir.toStdString().c_str()) != 0) {
+    QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                              QObject::tr("HOM_CASE_DIRECTORY_3") );
+    return false;
+  }
+
+  QString aMeshName, aFileName;
+  if (myArgs->myInMedFileRadio->isChecked()) {
+    aFileName = myArgs->mySelectInMedFileLineEdit->text().trimmed();
+    if (aFileName == QString("")) {
+      QMessageBox::critical(0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_CASE_MESH"));
+      return false;
+    }
+
+    // In mesh name
+    aMeshName = SMESH_HOMARD_QT_COMMUN::LireNomMaillage(aFileName);
+    if (aMeshName == "") {
+      QMessageBox::critical(0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_MED_FILE_2"));
+      return false;
+    }
+  }
+  else {
+    aMeshName = myArgs->myInBrowserObject->text();
+    if (aMeshName == "" || myMesh->_is_nil()) {
+      QMessageBox::critical(0, QObject::tr("HOM_ERROR"),
+                            QObject::tr("Mesh object is not selected"));
+      return false;
+    }
+  }
+
+  // On verifie qu'un groupe n'est pas associe a deux frontieres differentes
+  if (myArgs->CBBoundaryA->isChecked()) {
+    QStringList ListeGroup;
+    QString NomGroup;
+    int nbcol = myArgs->TWBoundary->columnCount();
+    int nbrow = myArgs->TWBoundary->rowCount();
+    for ( int col=1; col< nbcol; col++) {
+      for ( int row=0; row< nbrow; row++) {
+        if ( myArgs->TWBoundary->item( row, col )->checkState() ==  Qt::Checked ) {
+          // Group name
+          NomGroup = QString(myArgs->TWBoundary->item(row, 0)->text()) ;
+          for ( int nugr = 0 ; nugr < ListeGroup.size(); nugr++) {
+            if ( NomGroup == ListeGroup[nugr] ) {
+              QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                                        QObject::tr("HOM_CASE_GROUP").arg(NomGroup) );
+              return false;
+            }
+          }
+          ListeGroup.insert(0, NomGroup );
+        }
+      }
+    }
+  }
+
+  if (!fixCase) return true;
+
+  // Creation du cas
+  if (myCase->_is_nil()) {
+    try {
+      if (myArgs->myInMedFileRadio->isChecked()) {
+        // create case from MED file
+        myCase = myHomardGen->CreateCase
+          (CORBA::string_dup(aMeshName.toStdString().c_str()),
+           CORBA::string_dup(aFileName.toStdString().c_str()),
+           aWorkingDir.toStdString().c_str());
+      }
+      else {
+        // create case from SMESH_Mesh
+        myCase = myHomardGen->CreateCaseOnMesh
+          (CORBA::string_dup(aMeshName.toStdString().c_str()),
+           myMesh,
+           aWorkingDir.toStdString().c_str());
+      }
+    }
+    catch( SALOME::SALOME_Exception& S_ex ) {
+      QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                             QObject::tr(CORBA::string_dup(S_ex.details.text)) );
+      return false;
+    }
+    // Prevent changing case data
+    myArgs->myInMedFileRadio->setEnabled(false);
+    myArgs->myInBrowserRadio->setEnabled(false);
+    myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
+    myArgs->mySelectInMedFileButton->setEnabled(false);
+    myArgs->myInBrowserObject->setReadOnly(true);
+    myAdvOpt->workingDirectoryLineEdit->setReadOnly(true);
+    myAdvOpt->workingDirectoryPushButton->setEnabled(false);
+    InitBoundarys();
+  }
+
+  // Menage des eventuelles frontieres deja enregistrees
+  myCase->SupprBoundaryGroup();
+
+  return true;
+}
+
+//=================================================================================
+// function : PushOnApply
+// purpose  : 
+//=================================================================================
+bool SMESHGUI_HomardAdaptDlg::PushOnApply()
+{
+  MESSAGE("PushOnApply");
+
+  // Check data, create Case if not yet
+  if (!CheckCase(true))
+    return false;
+
+  // Create boundaries
+  if (myArgs->RBBoundaryCAO->isChecked()) {
+    QString monBoundaryCAOName = myArgs->CBBoundaryCAO->currentText();
+    if (monBoundaryCAOName != "" ) {
+      myCase->AddBoundary(monBoundaryCAOName.toStdString().c_str());
+    }
+  }
+  if (myArgs->CBBoundaryD->isChecked()) {
+    QString monBoundaryDiName = myArgs->CBBoundaryDi->currentText();
+    if (monBoundaryDiName != "" ) {
+      myCase->AddBoundary(monBoundaryDiName.toStdString().c_str());
+    }
+  }
+  if (myArgs->CBBoundaryA->isChecked()) {
+    QString NomGroup;
+    int nbcol = myArgs->TWBoundary->columnCount();
+    int nbrow = myArgs->TWBoundary->rowCount();
+    for ( int col = 1; col < nbcol; col++) {
+      for ( int row = 0; row < nbrow; row++) {
+        if ( myArgs->TWBoundary->item( row, col )->checkState() == Qt::Checked ) {
+          // Nom du groupe
+          NomGroup = QString(myArgs->TWBoundary->item(row, 0)->text()) ;
+          // Nom de la frontiere
+          QTableWidgetItem *__colItem = myArgs->TWBoundary->horizontalHeaderItem(col);
+          myCase->AddBoundaryGroup(QString(__colItem->text()).toStdString().c_str(),
+                                   NomGroup.toStdString().c_str());
+        }
+      }
+    }
+  }
+
+  // Output MED and MESH parameters
+  myHomardGen->SetKeepMedOUT(myArgs->myOutMedFileChk->isChecked());
+  myHomardGen->SetPublishMeshOUT(myArgs->myOutPublishChk->isChecked());
+  QString anOutMeshName = myArgs->myOutMeshNameLineEdit->text();
+  if (anOutMeshName.isEmpty()) anOutMeshName = "DEFAULT_MESH_NAME";
+  myHomardGen->SetMeshNameOUT(anOutMeshName.toStdString().c_str());
+
+  std::string aMeshFileOUT;
+  if (myArgs->myOutMedFileChk->isChecked()) {
+    QString anOutMed = myArgs->mySelectOutMedFileLineEdit->text();
+    if (anOutMed.isEmpty()) {
+      // store in working directory and with default name
+      QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
+      QFileInfo aFileInfo (QDir(aWorkingDir), "Uniform_R.med");
+      anOutMed = aFileInfo.absoluteFilePath();
+      // show it
+      myArgs->mySelectOutMedFileLineEdit->setText(anOutMed);
+    }
+    else {
+      QFileInfo aFileInfo (anOutMed);
+      anOutMed = aFileInfo.absoluteFilePath();
+    }
+    aMeshFileOUT = anOutMed.toStdString();
+  }
+  else {
+    // Set file name without path for it to be created in current directory
+    // (it will be iteration's dir, and it will be destroyed after)
+    aMeshFileOUT = "Uniform_R.med";
+  }
+  myHomardGen->SetMeshFileOUT(aMeshFileOUT.c_str());
+
+  // Conformity type
+  myHomardGen->SetConfType(myArgs->RBConforme->isChecked() ? 0 : 1);
+
+  // Advanced options
+  myHomardGen->SetVerboseLevel(myAdvOpt->verboseLevelSpin->value());
+  myHomardGen->SetKeepWorkingFiles(myAdvOpt->keepWorkingFilesCheck->isChecked());
+  myHomardGen->SetLogInFile(myAdvOpt->logInFileCheck->isChecked());
+  myHomardGen->SetRemoveLogOnSuccess(myAdvOpt->removeLogOnSuccessCheck->isChecked());
+
+  // Log file
+  if (myAdvOpt->logInFileCheck->isChecked()) {
+    // Write log file in the working dir
+    QString aLogBaseName;
+    if (myArgs->myInMedFileRadio->isChecked()) {
+      // Name of log file will be "<name_of_input_med_file>_Uniform_R.log"
+      QString aMedFileIn = myArgs->mySelectInMedFileLineEdit->text().trimmed();
+      QFileInfo aFileInfoIn (aMedFileIn);
+      aLogBaseName = aFileInfoIn.fileName();
+    }
+    else {
+      // Name of log file will be "SMESH_Mesh_<name_of_input_mesh>_Uniform_R.log"
+      aLogBaseName = "SMESH_Mesh_";
+      aLogBaseName += myArgs->myInBrowserObject->text();
+    }
+    QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
+    QFileInfo aFileInfo (QDir(aWorkingDir), aLogBaseName + "_Uniform_R.log");
+    QString anOutLog = aFileInfo.absoluteFilePath();
+    MESSAGE("myHomardGen->SetLogFile(" << anOutLog.toStdString().c_str() << ")");
+    myHomardGen->SetLogFile(anOutLog.toStdString().c_str());
+  }
+
+  // Compute and publish
+  bool isSuccess = true;
+  try {
+    SUIT_OverrideCursor aWaitCursor;
+    isSuccess = myHomardGen->Compute() == 0;
+  }
+  catch( SALOME::SALOME_Exception& S_ex ) {
+    QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                           QObject::tr(CORBA::string_dup(S_ex.details.text)) );
+    isSuccess = false;
+  }
+
+  // Update Object Browser
+  if (isSuccess) {
+    SMESHGUI::GetSMESHGUI()->updateObjBrowser();
+
+    // Clean case, as it is deleted after successful Compute
+    myCase = SMESHHOMARD::HOMARD_Cas::_nil();
+  }
+
+  // Enable new case data selection
+  myArgs->myInMedFileRadio->setEnabled(true);
+  myArgs->myInBrowserRadio->setEnabled(true);
+  myArgs->mySelectInMedFileLineEdit->setReadOnly(false);
+  myArgs->mySelectInMedFileButton->setEnabled(true);
+  myArgs->myInBrowserObject->setReadOnly(false);
+  myAdvOpt->workingDirectoryLineEdit->setReadOnly(false);
+  myAdvOpt->workingDirectoryPushButton->setEnabled(true);
+
+  return isSuccess;
+}
+
+//=================================================================================
+// function : PushOnOK
+// purpose  : 
+//=================================================================================
+void SMESHGUI_HomardAdaptDlg::PushOnOK()
+{
+  bool bOK = PushOnApply();
+  if ( bOK ) this->close();
+}
+
+void SMESHGUI_HomardAdaptDlg::PushOnHelp()
+{
+  SMESH::ShowHelpFile("adaptation.html#_homard_adapt_anchor");
+}
+
+void SMESHGUI_HomardAdaptDlg::updateSelection()
+{
+  LightApp_SelectionMgr *selMgr = SMESHGUI::selectionMgr();
+  disconnect(selMgr, 0, this, 0);
+  selMgr->clearFilters();
+
+  if (!myArgs->myInBrowserRadio->isChecked())
+    return;
+
+  SMESH::SetPointRepresentation(false);
+  if (SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow())
+    aViewWindow->SetSelectionMode(ActorSelection);
+  if (myArgs->myInBrowserRadio->isChecked()) {
+    connect(selMgr, SIGNAL(currentSelectionChanged()), this, SLOT(selectionChanged()));
+    selectionChanged();
+  }
+}
+
+void SMESHGUI_HomardAdaptDlg::selectionChanged()
+{
+  if (!myArgs->myInBrowserRadio->isChecked())
+    return;
+
+  //SUIT_OverrideCursor aWaitCursor;
+  LightApp_SelectionMgr *selMgr = SMESHGUI::selectionMgr();
+
+  // get selected mesh
+  SALOME_ListIO aList;
+  selMgr->selectedObjects(aList);
+  QString aMeshName = "";
+
+  if (aList.Extent() == 1) {
+    Handle(SALOME_InteractiveObject) IO = aList.First();
+    myMesh = SMESH::GetMeshByIO(IO);
+    SMESH::GetNameOfSelectedIObjects(selMgr, aMeshName);
+    if (aMeshName.isEmpty()) aMeshName = " ";
+    else                     aMeshName = aMeshName.trimmed();
+  }
+  else {
+    myMesh = SMESH::SMESH_Mesh::_nil();
+  }
+
+  myArgs->myInBrowserObject->setText(aMeshName);
+
+  // Out mesh name default value
+  myArgs->myOutMeshNameLineEdit->setText(aMeshName + "_Uniform_R");
+
+  // Output med file default value
+  // Construct it from Input mesh name and working directory
+  //if (myArgs->myOutMedFileChk->isChecked()) {
+  if (aMeshName.isEmpty()) {
+    myArgs->mySelectOutMedFileLineEdit->setText("");
+  }
+  else {
+    QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
+    QFileInfo aFileInfo (QDir(aWorkingDir), aMeshName + QString("_Uniform_R.med"));
+    for (int ii = 1; aFileInfo.exists(); ii++) {
+      QString anUniqueName = QString("%1_Uniform_R_%2.med").arg(aMeshName).arg(ii);
+      aFileInfo.setFile(QDir(aWorkingDir), anUniqueName);
+    }
+    myArgs->mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
+  }
+  //}
+
+  // Check data
+  if (!aMeshName.isEmpty())
+    CheckCase(false);
+}
+
+void SMESHGUI_HomardAdaptDlg::SetFileName()
+{
+  // Input med file
+  QString fileName0 = myArgs->mySelectInMedFileLineEdit->text().trimmed();
+  QString fileName = SMESH_HOMARD_QT_COMMUN::PushNomFichier(false, QString("med"));
+  //SUIT_OverrideCursor aWaitCursor;
+  if (fileName.isEmpty()) {
+    fileName = fileName0;
+    if (fileName.isEmpty()) return;
+  }
+  QFileInfo aFileInInfo (fileName);
+  fileName = aFileInInfo.absoluteFilePath();
+  myArgs->mySelectInMedFileLineEdit->setText(fileName);
+
+  // Out mesh name default value
+  QString aMeshName = SMESH_HOMARD_QT_COMMUN::LireNomMaillage(fileName);
+  myArgs->myOutMeshNameLineEdit->setText(aMeshName + "_Uniform_R");
+
+  // Output med file default value
+  // Construct it from Input med file name and path
+  //if (myArgs->myOutMedFileChk->isChecked()) {
+  std::string fname = fileName.toStdString();
+  size_t lastdot = fname.find_last_of(".");
+  if (lastdot != std::string::npos)
+    fname = fname.substr(0, lastdot);
+  QString fileNameOut = fname.c_str();
+  QFileInfo aFileInfo (fileNameOut + QString("_Uniform_R.med"));
+  for (int ii = 1; aFileInfo.exists(); ii++) {
+    QString anUniqueName = QString("%1_Uniform_R_%2.med").arg(fileNameOut).arg(ii);
+    aFileInfo.setFile(anUniqueName);
+  }
+  myArgs->mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
+  //}
+
+  // Check data
+  CheckCase(false);
+}
+
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::SetBoundaryNo()
+{
+  myArgs->GBBoundaryC->setVisible(0);
+  myArgs->GBBoundaryN->setVisible(0);
+  adjustSize();
+}
+
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::SetBoundaryCAO()
+{
+  if (CheckCase(true)) {
+    myArgs->GBBoundaryC->setVisible(1);
+    myArgs->GBBoundaryN->setVisible(0);
+    resize(600, 550);
+    //adjustSize();
+  }
+  else {
+    myArgs->RBBoundaryNo->click();
+  }
+}
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::SetBoundaryNonCAO()
+{
+  myArgs->GBBoundaryC->setVisible(0);
+  myArgs->GBBoundaryN->setVisible(1);
+  int aH = 550;
+  if (myArgs->GBBoundaryD->isVisible()) aH += 50;
+  if (myArgs->GBBoundaryA->isVisible()) aH += 150;
+  resize(600, aH);
+  //adjustSize();
+}
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::AddBoundaryCAO(QString newBoundary)
+// ------------------------------------------------------------------------
+{
+  myArgs->CBBoundaryCAO->insertItem(0,newBoundary);
+  myArgs->CBBoundaryCAO->setCurrentIndex(0);
+}
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::PushBoundaryCAONew()
+// ------------------------------------------------------------------------
+{
+   SMESH_CreateBoundaryCAO *BoundaryDlg = new SMESH_CreateBoundaryCAO
+     (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", "");
+   BoundaryDlg->show();
+}
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::PushBoundaryCAOEdit()
+// ------------------------------------------------------------------------
+{
+  if (myArgs->CBBoundaryCAO->currentText() == QString(""))  return;
+  SMESH_EditBoundaryCAO *BoundaryDlg = new SMESH_EditBoundaryCAO
+    (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
+     "Case_1", myArgs->CBBoundaryCAO->currentText());
+  BoundaryDlg->show();
+}
+
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::PushBoundaryCAOHelp()
+{
+  SMESH::ShowHelpFile(QString("homard_create_boundary.html#cao-boundary"));
+}
+
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::SetBoundaryD()
+{
+  MESSAGE("Debut de SetBoundaryD ");
+  if (myArgs->CBBoundaryD->isChecked()) {
+    bool bOK = CheckCase(true);
+    if (bOK) {
+      myArgs->GBBoundaryD->setVisible(1);
+    }
+    else {
+      myArgs->GBBoundaryD->setVisible(0);
+      myArgs->CBBoundaryD->setChecked(0);
+      myArgs->CBBoundaryD->setCheckState(Qt::Unchecked);
+    }
+  }
+  else {
+    myArgs->GBBoundaryD->setVisible(0);
+  }
+
+  //myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
+  //myArgs->mySelectInMedFileButton->hide();
+
+  int aH = 550;
+  if (myArgs->GBBoundaryD->isVisible()) aH += 50;
+  if (myArgs->GBBoundaryA->isVisible()) aH += 150;
+  resize(600, aH);
+  //adjustSize();
+}
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::AddBoundaryDi(QString newBoundary)
+// ------------------------------------------------------------------------
+{
+  myArgs->CBBoundaryDi->insertItem(0,newBoundary);
+  myArgs->CBBoundaryDi->setCurrentIndex(0);
+}
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::PushBoundaryDiNew()
+// ------------------------------------------------------------------------
+{
+   SMESH_CreateBoundaryDi *BoundaryDlg = new SMESH_CreateBoundaryDi(this, true,
+                SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", "");
+   BoundaryDlg->show();
+}
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::PushBoundaryDiEdit()
+// ------------------------------------------------------------------------
+{
+  if (myArgs->CBBoundaryDi->currentText() == QString(""))  return;
+  SMESH_EditBoundaryDi *BoundaryDlg = new SMESH_EditBoundaryDi
+    (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
+     "Case_1", myArgs->CBBoundaryDi->currentText());
+  BoundaryDlg->show();
+}
+
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::PushBoundaryDiHelp()
+{
+  SMESH::ShowHelpFile(QString("homard_create_boundary.html#discrete-boundary"));
+}
+
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::SetBoundaryA()
+{
+  MESSAGE("Debut de SetBoundaryA ");
+  if (myArgs->CBBoundaryA->isChecked()) {
+    bool bOK = CheckCase(true);
+    if (bOK) {
+      myArgs->GBBoundaryA->setVisible(1);
+    }
+    else {
+      myArgs->GBBoundaryA->setVisible(0);
+      myArgs->CBBoundaryA->setChecked(0);
+      myArgs->CBBoundaryA->setCheckState(Qt::Unchecked);
+    }
+  }
+  else {
+    myArgs->GBBoundaryA->setVisible(0);
+  }
+
+  //myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
+  //myArgs->mySelectInMedFileButton->hide();
+
+  int aH = 550;
+  if (myArgs->GBBoundaryD->isVisible()) aH += 50;
+  if (myArgs->GBBoundaryA->isVisible()) aH += 150;
+  resize(600, aH);
+  //adjustSize();
+}
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::AddBoundaryAn(QString newBoundary)
+// ------------------------------------------------------------------------
+{
+  MESSAGE("Debut de AddBoundaryAn ");
+// Ajout d'une nouvelle colonne
+  int nbcol = myArgs->TWBoundary->columnCount();
+//   MESSAGE("nbcol " <<  nbcol);
+  nbcol += 1 ;
+  myArgs->TWBoundary->setColumnCount ( nbcol ) ;
+  QTableWidgetItem *__colItem = new QTableWidgetItem();
+  __colItem->setText(tr(newBoundary.toStdString().c_str()));
+  myArgs->TWBoundary->setHorizontalHeaderItem(nbcol-1, __colItem);
+/*  TWBoundary->horizontalHeaderItem(nbcol-1)->setFlags( Qt::ItemIsSelectable|Qt::ItemIsEnabled );*/
+// Chaque case est a cocher
+  int nbrow = myArgs->TWBoundary->rowCount();
+//   MESSAGE("nbrow " <<  nbrow);
+  for ( int i = 0; i < nbrow; i++ )
+  {
+    myArgs->TWBoundary->setItem( i, nbcol-1, new QTableWidgetItem( QString ("") ) );
+    myArgs->TWBoundary->item( i, nbcol-1 )->setFlags( 0 );
+    myArgs->TWBoundary->item( i, nbcol-1 )->setFlags( Qt::ItemIsUserCheckable|Qt::ItemIsEnabled  );
+    myArgs->TWBoundary->item( i, nbcol-1 )->setCheckState( Qt::Unchecked );
+  }
+  myArgs->TWBoundary->resizeColumnToContents(nbcol-1);
+//   TWBoundary->resizeRowsToContents();
+//   MESSAGE("Fin de AddBoundaryAn ");
+}
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::PushBoundaryAnNew()
+// ------------------------------------------------------------------------
+{
+   SMESH_CreateBoundaryAn *BoundaryDlg = new SMESH_CreateBoundaryAn
+     (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1");
+   BoundaryDlg->show();
+}
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::PushBoundaryAnEdit()
+// ------------------------------------------------------------------------
+{
+  QString nom="";
+  int nbcol = myArgs->TWBoundary->columnCount();
+  for ( int i = 1; i < nbcol; i++ ) {
+    QTableWidgetItem *__colItem = new QTableWidgetItem();
+    __colItem = myArgs->TWBoundary->horizontalHeaderItem(i);
+    nom = QString(__colItem->text()) ;
+    MESSAGE("nom "<<nom.toStdString().c_str());
+    if (nom != QString("")) {
+      SMESH_EditBoundaryAn *BoundaryDlg = new SMESH_EditBoundaryAn
+        (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", nom);
+      BoundaryDlg->show();
+    }
+  }
+}
+// ------------------------------------------------------------------------
+void SMESHGUI_HomardAdaptDlg::PushBoundaryAnHelp()
+// ------------------------------------------------------------------------
+{
+  SMESH::ShowHelpFile(QString("homard_create_boundary.html#analytical-boundary"));
+}
+
+//=================================================================================
+// function : SMESHGUI_HomardAdaptArguments()
+// purpose  :
+//=================================================================================
+SMESHGUI_HomardAdaptArguments::SMESHGUI_HomardAdaptArguments(QWidget* parent)
+  : QWidget(parent)
+{
+  setupUi();
+}
+
+SMESHGUI_HomardAdaptArguments::~SMESHGUI_HomardAdaptArguments()
+{
+}
+
+void SMESHGUI_HomardAdaptArguments::setupUi()
+{
+  // Mesh in
+  QGroupBox* aMeshIn    = new QGroupBox( tr( "MeshIn" ), this );
+  myInMedFileRadio      = new QRadioButton( tr( "MEDFile" ), aMeshIn );
+  myInBrowserRadio      = new QRadioButton( tr( "Browser" ), aMeshIn );
+  myInBrowserObject     = new QLineEdit( aMeshIn );
+  mySelectInMedFileButton   = new QPushButton("...", aMeshIn);
+  mySelectInMedFileLineEdit = new QLineEdit( aMeshIn );
+
+  QGridLayout* meshIn = new QGridLayout( aMeshIn );
+
+  meshIn->setMargin( 9 );
+  meshIn->setSpacing( 6 );
+  meshIn->addWidget( myInMedFileRadio,          0, 0, 1, 1 );
+  meshIn->addWidget( myInBrowserRadio,          0, 1, 1, 1 );
+  meshIn->addWidget( mySelectInMedFileButton,   1, 0, 1, 1 );
+  meshIn->addWidget( mySelectInMedFileLineEdit, 1, 1, 1, 2 );
+  meshIn->addWidget( myInBrowserObject,         0, 2, 1, 1 );
+
+  myInMeshGroup = new QButtonGroup( this );
+  myInMeshGroup->addButton( myInMedFileRadio, 0 );
+  myInMeshGroup->addButton( myInBrowserRadio, 1 );
+
+  // Mesh out
+  QGroupBox* aMeshOut = new QGroupBox( tr( "MeshOut" ), this );
+  QLabel* meshName = new QLabel(tr("MeshName"), aMeshOut);
+  QSpacerItem* secondHspacer = new QSpacerItem(100, 30);
+  myOutMeshNameLineEdit = new QLineEdit(aMeshOut);
+  myOutMedFileChk = new QCheckBox(tr("MEDFile"), aMeshOut);
+  mySelectOutMedFileButton = new QPushButton("...", aMeshOut);
+  mySelectOutMedFileLineEdit = new QLineEdit(aMeshOut);
+  myOutPublishChk = new QCheckBox(tr("Publish_MG_ADAPT"), aMeshOut);
+
+  QGridLayout* meshOut = new QGridLayout( aMeshOut );
+
+  meshOut->setMargin( 9 );
+  meshOut->setSpacing( 6 );
+  meshOut->addWidget( meshName,  0, 0, 1,1 );
+  meshOut->addItem( secondHspacer,  0, 1, 1, 1 );
+  meshOut->addWidget( myOutMeshNameLineEdit, 0, 2,1,1);
+  meshOut->addWidget( myOutMedFileChk,  1, 0,1,1 );
+  meshOut->addWidget( mySelectOutMedFileButton,  1, 1,1,1 );
+  meshOut->addWidget( mySelectOutMedFileLineEdit,  1, 2,1,1);
+  meshOut->addWidget( myOutPublishChk,  2, 0,1,1 );
+
+  // Conformity type
+  QGroupBox *GBTypeConf = new QGroupBox(tr("Conformity type"), this);
+  RBConforme = new QRadioButton(tr("Conformal"), GBTypeConf);
+  RBNonConforme = new QRadioButton(tr("Non conformal"), GBTypeConf);
+  RBConforme->setChecked(true);
+
+  QHBoxLayout *hboxLayout2 = new QHBoxLayout(GBTypeConf);
+  hboxLayout2->setSpacing(6);
+  hboxLayout2->setContentsMargins(9, 9, 9, 9);
+  hboxLayout2->addWidget(RBConforme);
+  hboxLayout2->addWidget(RBNonConforme);
+
+  // Boundary type
+  GBTypeBoun = new QGroupBox(tr("Boundary type"), this);
+
+  RBBoundaryNo     = new QRadioButton(tr("No boundary"), GBTypeBoun);
+  RBBoundaryCAO    = new QRadioButton(tr("CAO"), GBTypeBoun);
+  RBBoundaryNonCAO = new QRadioButton(tr("Non CAO"), GBTypeBoun);
+  RBBoundaryNo->setChecked(true);
+
+  //     CAO
+  GBBoundaryC = new QGroupBox(tr("CAO"), GBTypeBoun);
+  /*
+  QSizePolicy sizePolicy1(QSizePolicy::Fixed, QSizePolicy::Fixed);
+  sizePolicy1.setHorizontalStretch(0);
+  sizePolicy1.setVerticalStretch(0);
+  sizePolicy1.setHeightForWidth(GBBoundaryC->sizePolicy().hasHeightForWidth());
+  GBBoundaryC->setSizePolicy(sizePolicy1);
+  */
+  GBBoundaryC->setMinimumSize(QSize(450, 50));
+
+  CBBoundaryCAO = new QComboBox(GBBoundaryC);
+  CBBoundaryCAO->setSizeAdjustPolicy(QComboBox::AdjustToContents);
+
+  PBBoundaryCAONew = new QPushButton(tr("New"), GBBoundaryC);
+  PBBoundaryCAOEdit = new QPushButton(tr("Edit"), GBBoundaryC);
+  PBBoundaryCAOHelp = new QPushButton(tr("Help"), GBBoundaryC);
+
+  PBBoundaryCAONew->setAutoDefault(false);
+  PBBoundaryCAOEdit->setAutoDefault(false);
+  PBBoundaryCAOHelp->setAutoDefault(false);
+
+  QGridLayout* gridLayout2 = new QGridLayout(GBBoundaryC);
+  gridLayout2->setSpacing(6);
+  gridLayout2->setContentsMargins(9, 9, 9, 9);
+  gridLayout2->addWidget(CBBoundaryCAO, 0, 0, 1, 1);
+  QSpacerItem* spacerItem3 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum);
+  gridLayout2->addItem(spacerItem3, 0, 1, 1, 1);
+  gridLayout2->addWidget(PBBoundaryCAONew, 0, 2, 1, 1);
+  gridLayout2->addWidget(PBBoundaryCAOEdit, 0, 3, 1, 1);
+  gridLayout2->addWidget(PBBoundaryCAOHelp, 0, 4, 1, 1);
+  gridLayout2->setRowMinimumHeight(0, 80);
+
+  //     Non CAO (discrete / analytical)
+  GBBoundaryN = new QGroupBox(tr("Non CAO"), GBTypeBoun);
+  GBBoundaryN->setMinimumSize(QSize(450, 80));
+
+  CBBoundaryD = new QCheckBox(tr("Discrete boundary"), GBBoundaryN);
+  CBBoundaryA = new QCheckBox(tr("Analytical boundary"), GBBoundaryN);
+
+  //          discrete
+  GBBoundaryD = new QGroupBox(tr("Discrete boundary"), GBBoundaryN);
+  //sizePolicy1.setHeightForWidth(GBBoundaryD->sizePolicy().hasHeightForWidth());
+  //GBBoundaryD->setSizePolicy(sizePolicy1);
+  QGridLayout* gridLayoutD = new QGridLayout(GBBoundaryD);
+  gridLayoutD->setSpacing(6);
+  gridLayoutD->setContentsMargins(9, 9, 9, 9);
+  CBBoundaryDi = new QComboBox(GBBoundaryD);
+  CBBoundaryDi->setSizeAdjustPolicy(QComboBox::AdjustToContents);
+
+  gridLayoutD->addWidget(CBBoundaryDi, 0, 0, 1, 1);
+
+  QSpacerItem* spacerItem5 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum);
+  gridLayoutD->addItem(spacerItem5, 0, 1, 1, 1);
+
+  PBBoundaryDiNew  = new QPushButton(tr("New"), GBBoundaryD);
+  PBBoundaryDiEdit = new QPushButton(tr("Edit"), GBBoundaryD);
+  PBBoundaryDiHelp = new QPushButton(tr("Help"), GBBoundaryD);
+
+  PBBoundaryDiNew->setAutoDefault(false);
+  PBBoundaryDiEdit->setAutoDefault(false);
+  PBBoundaryDiHelp->setAutoDefault(false);
+
+  gridLayoutD->addWidget(PBBoundaryDiNew,  0, 2, 1, 1);
+  gridLayoutD->addWidget(PBBoundaryDiEdit, 0, 3, 1, 1);
+  gridLayoutD->addWidget(PBBoundaryDiHelp, 0, 4, 1, 1);
+
+  //          analytical
+  GBBoundaryA = new QGroupBox(tr("Analytical boundary"), GBBoundaryN);
+  GBBoundaryA->setMinimumSize(QSize(548, 200));
+  formLayout = new QFormLayout(GBBoundaryA);
+  TWBoundary = new QTableWidget(GBBoundaryA);
+  if (TWBoundary->columnCount() < 1)
+    TWBoundary->setColumnCount(1);
+  QTableWidgetItem *__qtablewidgetitem = new QTableWidgetItem();
+  TWBoundary->setHorizontalHeaderItem(0, __qtablewidgetitem);
+  TWBoundary->setEditTriggers(QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked);
+  TWBoundary->setShowGrid(true);
+  TWBoundary->setRowCount(0);
+  TWBoundary->setColumnCount(1);
+
+  formLayout->setWidget(0, QFormLayout::LabelRole, TWBoundary);
+
+  QGridLayout* gridLayout1 = new QGridLayout();
+  gridLayout1->setSpacing(6);
+  gridLayout1->setContentsMargins(0, 0, 0, 0);
+
+  PBBoundaryAnNew  = new QPushButton(tr("New"), GBBoundaryA);
+  PBBoundaryAnEdit = new QPushButton(tr("Edit"), GBBoundaryA);
+  PBBoundaryAnHelp = new QPushButton(tr("Help"), GBBoundaryA);
+
+  PBBoundaryAnNew->setAutoDefault(false);
+  PBBoundaryAnEdit->setAutoDefault(false);
+  PBBoundaryAnHelp->setAutoDefault(false);
+
+  gridLayout1->addWidget(PBBoundaryAnNew,  0, 0, 1, 1);
+  gridLayout1->addWidget(PBBoundaryAnEdit, 1, 0, 1, 1);
+  gridLayout1->addWidget(PBBoundaryAnHelp, 2, 0, 1, 1);
+
+  formLayout->setLayout(0, QFormLayout::FieldRole, gridLayout1);
+
+  // Boundary No Layout
+  QGridLayout* aBoundaryNoLayout = new QGridLayout(GBBoundaryN);
+  //aBoundaryNoLayout->addLayout(hboxLayout3, 0, 0);
+  aBoundaryNoLayout->addWidget(CBBoundaryD, 0, 0);
+  aBoundaryNoLayout->addWidget(CBBoundaryA, 0, 1);
+  aBoundaryNoLayout->addWidget(GBBoundaryD, 1, 0, 1, 2);
+  aBoundaryNoLayout->addWidget(GBBoundaryA, 2, 0, 1, 2);
+
+  // Boundary type Layout
+  QGridLayout* aBoundTypeLayout = new QGridLayout(GBTypeBoun);
+  aBoundTypeLayout->addWidget(RBBoundaryNo,     0, 0);
+  aBoundTypeLayout->addWidget(RBBoundaryCAO,    0, 1);
+  aBoundTypeLayout->addWidget(RBBoundaryNonCAO, 0, 2);
+
+  aBoundTypeLayout->addWidget(GBBoundaryC, 1, 0, 1, 3);
+  aBoundTypeLayout->addWidget(GBBoundaryN, 2, 0, 1, 3);
+
+  // Arguments layout
+  QGridLayout *argumentsLayout = new QGridLayout(this);
+  argumentsLayout->addWidget(aMeshIn,     0, 0, 1, 3);
+  argumentsLayout->addWidget(aMeshOut,    1, 0, 1, 3);
+  argumentsLayout->addWidget(GBTypeConf,  2, 0, 1, 3);
+  argumentsLayout->addWidget(GBTypeBoun,  3, 0, 1, 3);
+  argumentsLayout->setColumnStretch( 1, 5 );
+  argumentsLayout->setRowStretch( 4, 5 );
+
+  QTableWidgetItem *___qtablewidgetitem = TWBoundary->horizontalHeaderItem(0);
+  ___qtablewidgetitem->setText(tr("a_virer"));
+
+  // Initial state
+  myInMedFileRadio->setChecked( true );
+  modeInChanged( MedFile );
+  RBBoundaryNo->setChecked( true );
+  //SetBoundaryNo();
+
+  myOutMedFileChk->setChecked(true);
+  CBBoundaryCAO->setCurrentIndex(-1);
+  CBBoundaryDi->setCurrentIndex(-1);
+
+  // Connections
+  connect(myInMeshGroup,            SIGNAL(buttonClicked(int)), this, SLOT(modeInChanged(int)));
+  connect(myOutMedFileChk,          SIGNAL(stateChanged(int)),  this, SLOT(onOutMedFileChk(int)));
+  connect(myOutPublishChk,          SIGNAL(stateChanged(int)),  this, SLOT(onOutPublishChk(int)));
+  connect(mySelectOutMedFileButton, SIGNAL(pressed()), this, SLOT(onSelectOutMedFileButton()));
+  emit updateSelection();
+}
+
+void SMESHGUI_HomardAdaptArguments::modeInChanged( int theMode )
+{
+  clear();
+  if (theMode == MedFile) {
+    mySelectInMedFileLineEdit->show();
+    mySelectInMedFileButton->show();
+    myInBrowserObject->hide();
+  }
+  else {
+    mySelectInMedFileLineEdit->hide();
+    mySelectInMedFileButton->hide();
+    myInBrowserObject->show();
+    emit updateSelection();
+  }
+}
+
+void SMESHGUI_HomardAdaptArguments::onSelectOutMedFileButton()
+{
+  // Current value
+  QString fileName0 = mySelectOutMedFileLineEdit->text().trimmed();
+
+  // Ask user for the new value
+  QString filtre = QString("Med");
+  filtre += QString(" files (*.") + QString("med") + QString(");;");
+  QString fileName = QFileDialog::getSaveFileName(this, tr("SAVE_MED"), QString(""), filtre);
+
+  // Check the new value
+  if (fileName.isEmpty()) fileName = fileName0;
+
+  QFileInfo aFileInfo (fileName);
+  mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
+}
+
+void SMESHGUI_HomardAdaptArguments::clear()
+{
+  mySelectInMedFileLineEdit->clear();
+  myInBrowserObject->clear();
+
+  myOutMeshNameLineEdit->clear();
+  mySelectOutMedFileLineEdit->clear();
+}
+
+void SMESHGUI_HomardAdaptArguments::onOutMedFileChk(int state)
+{
+  if (state == Qt::Checked) {
+    mySelectOutMedFileButton->show();
+    mySelectOutMedFileLineEdit->show();
+    mySelectOutMedFileButton->setEnabled(true);
+    mySelectOutMedFileLineEdit->setEnabled(true);
+  }
+  else {
+    mySelectOutMedFileButton->setEnabled(false);
+    mySelectOutMedFileLineEdit->setEnabled(false);
+    myOutPublishChk->setChecked(true);
+  }
+}
+
+void SMESHGUI_HomardAdaptArguments::onOutPublishChk(int state)
+{
+  if (state == Qt::Unchecked) {
+    myOutMedFileChk->setChecked(true);
+  }
+}
+
+//////////////////////////////////////////
+// SMESHGUI_HomardAdaptAdvanced
+//////////////////////////////////////////
+
+SMESHGUI_HomardAdaptAdvanced::SMESHGUI_HomardAdaptAdvanced(QWidget* parent)
+  : QWidget(parent)
+{
+  setupWidget();
+  connect(workingDirectoryPushButton, SIGNAL(pressed()),
+          this, SLOT(onWorkingDirectoryPushButton()));
+}
+
+SMESHGUI_HomardAdaptAdvanced::~SMESHGUI_HomardAdaptAdvanced()
+{
+}
+
+void SMESHGUI_HomardAdaptAdvanced::setupWidget()
+{
+  //this->resize(337, 369);
+
+  // Logs and debug
+  logGroupBox = new QGroupBox(this);
+  QGridLayout* logGroupBoxLayout = new QGridLayout(this);
+  logGroupBoxLayout->setMargin( 9 );
+  logGroupBoxLayout->setSpacing( 6 );
+  logGroupBoxLayout->addWidget(logGroupBox, 0, 0, 1, 1);
+
+  QGridLayout* logsLayout = new QGridLayout(logGroupBox);
+  logsLayout->setMargin( 9 );
+  logsLayout->setSpacing( 6 );
+
+  // Working directory + Verbose level layout
+  QGridLayout* gridLayout = new QGridLayout();
+
+  // Working directory
+  workingDirectoryLabel = new QLabel(logGroupBox);
+  workingDirectoryLineEdit = new QLineEdit(logGroupBox);
+  workingDirectoryPushButton = new QPushButton(logGroupBox);
+
+  gridLayout->addWidget(workingDirectoryLabel,      0, 0, 1, 1);
+  gridLayout->addWidget(workingDirectoryLineEdit,   0, 1, 1, 1);
+  gridLayout->addWidget(workingDirectoryPushButton, 0, 2, 1, 1);
+
+  // Verbose level
+  verboseLevelLabel = new QLabel(logGroupBox);
+  verboseLevelSpin = new QSpinBox(logGroupBox);
+
+  gridLayout->addWidget(verboseLevelLabel, 1, 0, 1, 1);
+  gridLayout->addWidget(verboseLevelSpin,  1, 1, 1, 1);
+
+  logsLayout->addLayout(gridLayout, 0, 0, 1, 1);
+
+  // logInFileCheck + removeLogOnSuccessCheck
+  QHBoxLayout* horizontalLayout = new QHBoxLayout();
+
+  logInFileCheck = new QCheckBox(logGroupBox);
+  removeLogOnSuccessCheck = new QCheckBox(logGroupBox);
+
+  logInFileCheck->setChecked(true);
+  removeLogOnSuccessCheck->setChecked(true);
+
+  horizontalLayout->addWidget(logInFileCheck);
+  horizontalLayout->addWidget(removeLogOnSuccessCheck);
+
+  logsLayout->addLayout(horizontalLayout, 1, 0, 1, 1);
+
+  // Keep Working Files Check
+  keepWorkingFilesCheck = new QCheckBox(logGroupBox);
+  keepWorkingFilesCheck->setAutoExclusive(false);
+  keepWorkingFilesCheck->setChecked(false);
+
+  logsLayout->addWidget(keepWorkingFilesCheck, 2, 0, 1, 1);
+
+  //logsLayout->setColumnStretch( 1, 5 );
+  logsLayout->setRowStretch( 3, 5 );
+}
+
+void SMESHGUI_HomardAdaptAdvanced::onWorkingDirectoryPushButton()
+{
+  QString aWorkingDir = QFileDialog::getExistingDirectory();
+  if (!(aWorkingDir.isEmpty())) workingDirectoryLineEdit->setText(aWorkingDir);
+}
diff --git a/src/SMESHGUI/SMESHGUI_HomardAdaptDlg.h b/src/SMESHGUI/SMESHGUI_HomardAdaptDlg.h
new file mode 100644 (file)
index 0000000..87b6707
--- /dev/null
@@ -0,0 +1,233 @@
+// Copyright (C) 2011-2024  CEA, EDF
+//
+// 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
+//
+
+#ifndef SMESHGUI_HOMARDADAPTDLG_HXX
+#define SMESHGUI_HOMARDADAPTDLG_HXX
+
+#include "SMESH_SMESHGUI.hxx"
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(SMESH_Homard)
+#include CORBA_SERVER_HEADER(SMESH_Mesh)
+#include <SALOME_GenericObj_wrap.hxx>
+
+#include <SalomeApp_Module.h>
+
+#include <QtCore/QVariant>
+#include <QtWidgets/QApplication>
+#include <QtWidgets/QCheckBox>
+#include <QtWidgets/QComboBox>
+#include <QtWidgets/QDialog>
+#include <QtWidgets/QFormLayout>
+#include <QtWidgets/QGridLayout>
+#include <QtWidgets/QGroupBox>
+#include <QtWidgets/QHBoxLayout>
+#include <QtWidgets/QHeaderView>
+#include <QtWidgets/QLabel>
+#include <QtWidgets/QLineEdit>
+#include <QtWidgets/QPushButton>
+#include <QtWidgets/QRadioButton>
+#include <QtWidgets/QSpacerItem>
+#include <QtWidgets/QTableWidget>
+#include <QtWidgets/QWidget>
+#include <QtWidgets/QTabWidget>
+#include <QtWidgets/QSpinBox>
+
+class SMESHGUI_HomardAdaptArguments;
+class SMESHGUI_HomardAdaptAdvanced;
+
+//=================================================================================
+// class    : SMESHGUI_HomardAdaptDlg
+// purpose  :
+//=================================================================================
+class SMESHGUI_EXPORT SMESHGUI_HomardAdaptDlg : public QDialog
+{
+  Q_OBJECT
+
+ public:
+  SMESHGUI_HomardAdaptDlg(SMESHHOMARD::HOMARD_Gen_ptr theHomardGen);
+  ~SMESHGUI_HomardAdaptDlg();
+
+  void AddBoundaryCAO(QString newBoundary);
+  void AddBoundaryAn(QString newBoundary);
+  void AddBoundaryDi(QString newBoundary);
+
+ protected:
+  QString myWorkingDir;
+
+  SMESHHOMARD::HOMARD_Cas_var myCase;
+  SALOME::GenericObj_wrap< SMESHHOMARD::HOMARD_Gen > myHomardGen;
+
+  virtual void InitConnect();
+  virtual void InitBoundarys();
+
+ public slots:
+  virtual void SetFileName();
+
+  virtual void SetBoundaryNo();
+  virtual void SetBoundaryCAO();
+  virtual void SetBoundaryNonCAO();
+
+  virtual void PushBoundaryCAONew();
+  virtual void PushBoundaryCAOEdit();
+  virtual void PushBoundaryCAOHelp();
+
+  virtual void SetBoundaryD();
+  virtual void PushBoundaryDiNew();
+  virtual void PushBoundaryDiEdit();
+  virtual void PushBoundaryDiHelp();
+
+  virtual void SetBoundaryA();
+  virtual void PushBoundaryAnNew();
+  virtual void PushBoundaryAnEdit();
+  virtual void PushBoundaryAnHelp();
+
+  bool CheckCase(bool fixCase);
+
+  virtual void PushOnOK();
+  virtual bool PushOnApply();
+  virtual void PushOnHelp();
+
+  void selectionChanged();
+  void updateSelection();
+
+ private:
+  SMESHGUI_HomardAdaptArguments* myArgs;
+  SMESHGUI_HomardAdaptAdvanced* myAdvOpt;
+
+  SMESH::SMESH_Mesh_var myMesh;
+
+  QPushButton *buttonHelp;
+  QPushButton *buttonApply;
+  QPushButton *buttonOk;
+  QPushButton *buttonCancel;
+};
+
+//=================================================================================
+// class    : SMESHGUI_HomardAdaptArguments
+// purpose  :
+//=================================================================================
+class SMESHGUI_HomardAdaptArguments : public QWidget
+{
+  Q_OBJECT
+
+public:
+  enum ModeIn { MedFile, Browser };
+
+  SMESHGUI_HomardAdaptArguments (QWidget* parent);
+  ~SMESHGUI_HomardAdaptArguments();
+
+  void setupUi();
+
+public:
+  // Mesh In
+  QButtonGroup* myInMeshGroup;
+  QRadioButton* myInMedFileRadio;
+  QRadioButton* myInBrowserRadio;
+
+  QPushButton*  mySelectInMedFileButton;
+  QLineEdit*    mySelectInMedFileLineEdit; // LEFileName
+
+  QLineEdit*    myInBrowserObject;
+
+  // Mesh Out
+  QLineEdit*    myOutMeshNameLineEdit;
+  QCheckBox*    myOutMedFileChk;
+
+  QPushButton*  mySelectOutMedFileButton;
+  QLineEdit*    mySelectOutMedFileLineEdit;
+
+  QCheckBox*    myOutPublishChk;
+
+  // Conformity type
+  QRadioButton *RBConforme;
+  QRadioButton *RBNonConforme;
+
+  // Boundary type
+  QGroupBox *GBTypeBoun;
+  QRadioButton *RBBoundaryNo;
+  QRadioButton *RBBoundaryCAO;
+  QRadioButton *RBBoundaryNonCAO;
+  QHBoxLayout *hboxLayout3;
+  QCheckBox *CBBoundaryD;
+  QCheckBox *CBBoundaryA;
+
+  QGroupBox *GBBoundaryC; // CAO boundary
+  QPushButton *PBBoundaryCAOEdit;
+  QPushButton *PBBoundaryCAOHelp;
+  QComboBox *CBBoundaryCAO;
+  QPushButton *PBBoundaryCAONew;
+  QGroupBox *GBBoundaryN; // Non CAO boundary
+  QGroupBox *GBBoundaryD;
+  QComboBox *CBBoundaryDi;
+  QPushButton *PBBoundaryDiEdit;
+  QPushButton *PBBoundaryDiHelp;
+  QPushButton *PBBoundaryDiNew;
+  QGroupBox *GBBoundaryA;
+  QFormLayout *formLayout;
+  QTableWidget *TWBoundary;
+  QPushButton *PBBoundaryAnEdit;
+  QPushButton *PBBoundaryAnNew;
+  QPushButton *PBBoundaryAnHelp;
+
+signals:
+  void updateSelection();
+
+private slots:
+  void modeInChanged(int);
+  void clear();
+  void onOutMedFileChk(int);
+  void onOutPublishChk(int);
+  void onSelectOutMedFileButton();
+};
+
+//=================================================================================
+// class    : SMESHGUI_HomardAdaptAdvanced
+// purpose  :
+//=================================================================================
+class SMESHGUI_HomardAdaptAdvanced : public QWidget
+{
+  Q_OBJECT
+
+public:
+  SMESHGUI_HomardAdaptAdvanced(QWidget* = 0);
+  ~SMESHGUI_HomardAdaptAdvanced();
+
+  void setupWidget();
+
+public:
+  QGroupBox   *logGroupBox;
+
+  QLabel      *workingDirectoryLabel;
+  QLineEdit   *workingDirectoryLineEdit;
+  QPushButton *workingDirectoryPushButton;
+
+  QLabel      *verboseLevelLabel;
+  QSpinBox    *verboseLevelSpin;
+
+  QCheckBox   *logInFileCheck;
+  QCheckBox   *removeLogOnSuccessCheck;
+
+  QCheckBox   *keepWorkingFilesCheck;
+
+private slots:
+  void onWorkingDirectoryPushButton();
+};
+
+#endif // SMESHGUI_HOMARDADAPTDLG_HXX
diff --git a/src/SMESHGUI/SMESHGUI_HomardBoundaryDlg.cxx b/src/SMESHGUI/SMESHGUI_HomardBoundaryDlg.cxx
new file mode 100644 (file)
index 0000000..2c69cbe
--- /dev/null
@@ -0,0 +1,1641 @@
+// Copyright (C) 2011-2024  CEA, EDF
+//
+// 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 "SMESHGUI_HomardBoundaryDlg.h"
+
+#include "SMESHGUI_HomardAdaptDlg.h"
+#include "SMESHGUI_HomardListGroup.h"
+
+#include "SMESHGUI_Utils.h"
+
+#include <QFileDialog>
+#include <QMessageBox>
+
+#include "SalomeApp_Tools.h"
+#include "SMESHGUI_HomardUtils.h"
+#include <utilities.h>
+
+#include <SUIT_Desktop.h>
+#include <SUIT_MessageBox.h>
+#include <SUIT_ResourceMgr.h>
+#include <SUIT_Session.h>
+#include <SUIT_ViewManager.h>
+
+#include "math.h"
+#define PI 3.141592653589793
+
+using namespace std;
+
+// ----------------------------------------------------------------------------------
+SMESH_CreateBoundaryAn::SMESH_CreateBoundaryAn(SMESHGUI_HomardAdaptDlg* parent, bool modal,
+                                               SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                                               QString caseName) :
+/* Constructs a SMESH_CreateBoundaryAn
+   appele pour une vraie creation
+   initialise un cylindre et non une sphere
+*/
+    QDialog(0), SMESH_Ui_CreateBoundaryAn(),
+    _parent(parent),
+    _Name (""),
+    _Type(1),
+    _BoundaryAnXcentre(0), _BoundaryAnYcentre(0), _BoundaryAnZcentre(0), _BoundaryAnRayon(0),
+    _BoundaryAnXaxis(0), _BoundaryAnYaxis(0), _BoundaryAnZaxis(0),
+    _Xcentre(0), _Ycentre(0), _Zcentre(0), _Rayon(0),
+    _Xmin(0), _Xmax(0), _Xincr(0), _Ymin(0), _Ymax(0), _Yincr(0), _Zmin(0), _Zmax(0), _Zincr(0), _DMax(0),
+    _BoundaryAnXcone1(0), _BoundaryAnYcone1(0), _BoundaryAnZcone1(0), _BoundaryAnRayon1(0),
+    _BoundaryAnXcone2(0), _BoundaryAnYcone2(0), _BoundaryAnZcone2(0), _BoundaryAnRayon2(0),
+    _BoundaryAnXaxisCone(0), _BoundaryAnYaxisCone(0), _BoundaryAnZaxisCone(0),
+    _BoundaryAnXorigCone(0), _BoundaryAnYorigCone(0), _BoundaryAnZorigCone(0),
+    _BoundaryAngle(0),
+    _BoundaryAnToreXcentre(0), _BoundaryAnToreYcentre(0), _BoundaryAnToreZcentre(0),
+    _BoundaryAnToreXaxe(0), _BoundaryAnToreYaxe(0), _BoundaryAnToreZaxe(0),
+    _BoundaryAnToreRRev(0), _BoundaryAnToreRPri(0),
+    Chgt (false)
+    {
+      MESSAGE("Constructeur") ;
+      myHomardGen = SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen0);
+      setupUi(this);
+      setModal(modal);
+
+      // Gestion des icones
+      QPixmap pix ;
+      QIcon IS ;
+      SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+      pix = resMgr->loadPixmap( "HOMARD", "spherepoint.png" );
+      IS=QIcon(pix);
+      RBSphere->setIcon(IS);
+      pix = resMgr->loadPixmap( "HOMARD", "cylinderpointvector.png" );
+      IS=QIcon(pix);
+      RBCylindre->setIcon(IS);
+      pix = resMgr->loadPixmap( "HOMARD", "cone.png" );
+      IS=QIcon(pix);
+      RBCone->setIcon(IS);
+      pix = resMgr->loadPixmap( "HOMARD", "conepointvector.png" );
+      IS=QIcon(pix);
+      RB_Def_angle->setIcon(IS);
+      pix = resMgr->loadPixmap( "HOMARD", "conedxyz.png" );
+      IS=QIcon(pix);
+      RB_Def_radius->setIcon(IS);
+      pix = resMgr->loadPixmap( "HOMARD", "toruspointvector.png" );
+      IS=QIcon(pix);
+      RBTore->setIcon(IS);
+
+      InitConnect( );
+
+      SetNewName() ;
+      InitValBoundaryAn();          // Cherche les valeurs de la boite englobante le maillage
+      InitMinMax();                 // Initialise les bornes des boutons
+      SetCylinder();                // Propose un cylindre en premier choix
+    }
+
+// -------------------------------------------------------------------------------
+SMESH_CreateBoundaryAn::SMESH_CreateBoundaryAn(SMESHGUI_HomardAdaptDlg* parent,
+                                               SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                                               QString caseName):
+    QDialog(0), SMESH_Ui_CreateBoundaryAn(),
+    _parent(parent),
+    _Name (""),
+    _Type(1),
+    _BoundaryAnXcentre(0), _BoundaryAnYcentre(0), _BoundaryAnZcentre(0), _BoundaryAnRayon(0),
+    _BoundaryAnXaxis(0), _BoundaryAnYaxis(0), _BoundaryAnZaxis(0),
+    // Pour affichage lors de l edition d une BoundaryAn sans nom de Cas
+    _Xcentre(0), _Ycentre(0), _Zcentre(0), _Rayon(0),
+    _Xmin(1), _Xmax(1), _Xincr(1), _Ymin(1), _Ymax(1), _Yincr(1), _Zmin(1), _Zmax(1), _Zincr(1), _DMax(1),
+     Chgt (false)
+    {
+  //  MESSAGE("Debut de  SMESH_CreateBoundaryAn")
+      myHomardGen = SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen0);
+      setupUi(this);
+      SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+      QPixmap pix = resMgr->loadPixmap( "HOMARD", "spherepoint.png" );
+      QIcon IS=QIcon(pix);
+      RBSphere->setIcon(IS);
+      QPixmap pix2 = resMgr->loadPixmap( "HOMARD", "cylinderpointvector.png" );
+      QIcon IS2=QIcon(pix2);
+      RBCylindre->setIcon(IS2);
+      QPixmap pix3 = resMgr->loadPixmap( "HOMARD", "cone.png" );
+      QIcon IS3=QIcon(pix3);
+      RBCone->setIcon(IS3);
+      QPixmap pix4 = resMgr->loadPixmap( "HOMARD", "conepointvector.png" );
+      QIcon IS4=QIcon(pix4);
+      RB_Def_angle->setIcon(IS4);
+      QPixmap pix5 = resMgr->loadPixmap( "HOMARD", "conedxyz.png" );
+      QIcon IS5=QIcon(pix5);
+      RB_Def_radius->setIcon(IS5);
+      setModal(true);
+      InitConnect();
+    }
+
+// ------------------------------------------------------------------------
+SMESH_CreateBoundaryAn::~SMESH_CreateBoundaryAn()
+// ------------------------------------------------------------------------
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryAn::InitConnect()
+// ------------------------------------------------------------------------
+{
+    connect( RBCylindre,    SIGNAL(clicked()) , this, SLOT(SetCylinder()) ) ;
+    connect( RBSphere,      SIGNAL(clicked()) , this, SLOT(SetSphere()) ) ;
+    connect( RBCone,        SIGNAL(clicked()) , this, SLOT(SetCone()) ) ;
+    connect( RB_Def_radius, SIGNAL(clicked()) , this, SLOT(SetConeR()) );
+    connect( RB_Def_angle,  SIGNAL(clicked()) , this, SLOT(SetConeA()) );
+    connect( RBTore,        SIGNAL(clicked()) , this, SLOT(SetTore()) ) ;
+    connect( buttonOk,     SIGNAL( pressed() ), this, SLOT( PushOnOK() ) );
+    connect( buttonApply,  SIGNAL( pressed() ), this, SLOT( PushOnApply() ) );
+    connect( buttonCancel, SIGNAL( pressed() ), this, SLOT( close() ) );
+    connect( buttonHelp,   SIGNAL( pressed() ), this, SLOT( PushOnHelp() ) );
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryAn::InitValBoundaryAn()
+// ------------------------------------------------------------------------
+{
+  //
+  //  1. Les coordonnees extremes du maillage
+  //
+    SMESHHOMARD::HOMARD_Cas_var aCas = myHomardGen->GetCase();
+    SMESHHOMARD::extrema_var  MesExtremes = aCas->GetBoundingBox();
+    int num = MesExtremes->length() ;
+    ASSERT(num == 10);
+    _Xmin=MesExtremes[0]; _Xmax=MesExtremes[1]; _Xincr=MesExtremes[2];
+    _Ymin=MesExtremes[3]; _Ymax=MesExtremes[4]; _Yincr=MesExtremes[5];
+    _Zmin=MesExtremes[6]; _Zmax=MesExtremes[7]; _Zincr=MesExtremes[8];
+    _DMax=MesExtremes[9];
+     MESSAGE ("_Xmin : " << _Xmin << " _Xmax : " << _Xmax << " _Xincr : " << _Xincr ) ;
+     MESSAGE ("_Ymin : " << _Ymin << " _Ymax : " << _Ymax << " _Yincr : " << _Yincr ) ;
+     MESSAGE ("_Zmin : " << _Zmin << " _Zmax : " << _Zmax << " _Zincr : " << _Zincr) ;
+     MESSAGE ("_DMax : " << _DMax);
+
+//  2. Caracteristiques des frontieres
+// en X
+    _Xcentre=(_Xmin + _Xmax)/2.;
+// en Y
+    _Ycentre=(_Ymin + _Ymax)/2.;
+// en Z
+    _Zcentre=(_Zmin + _Zmax)/2.;
+// Rayon
+    _Rayon= _DMax/4.;
+}
+
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryAn::InitMinMax()
+// ------------------------------------------------------------------------
+{
+  // Cylindre
+  // . X du centre
+  SpinBox_Xcent->setValue(_Xcentre);
+  SpinBox_Xcent->setSingleStep(_Xincr);
+  // . Y du centre
+  SpinBox_Ycent->setValue(_Ycentre);
+  SpinBox_Ycent->setSingleStep(_Yincr);
+  // . Z du centre
+  SpinBox_Zcent->setValue(_Zcentre);
+  SpinBox_Zcent->setSingleStep(_Zincr);
+  // . X de l'axe
+  SpinBox_Xaxis->setValue(0.);
+  SpinBox_Xaxis->setSingleStep(0.1);
+  // . Y de l'axe
+  SpinBox_Yaxis->setValue(0.);
+  SpinBox_Yaxis->setSingleStep(0.1);
+  // . Z de l'axe
+  SpinBox_Zaxis->setValue(1.);
+  SpinBox_Zaxis->setSingleStep(0.1);
+  // . Rayon
+  SpinBox_Radius->setValue(_Rayon);
+  SpinBox_Radius->setSingleStep(_Rayon/10.);
+
+  // Sphere
+  // . X du centre
+  SpinBox_Xcentre->setValue(_Xcentre);
+  SpinBox_Xcentre->setSingleStep(_Xincr);
+  // . Y du centre
+  SpinBox_Ycentre->setValue(_Ycentre);
+  SpinBox_Ycentre->setSingleStep(_Yincr);
+  // . Z du centre
+  SpinBox_Zcentre->setValue(_Zcentre);
+  SpinBox_Zcentre->setSingleStep(_Zincr);
+  // . Rayon
+  SpinBox_Rayon->setValue(_Rayon);
+  SpinBox_Rayon->setSingleStep(_Rayon/10.);
+
+  // Cone en rayons
+  // . X des centres
+  _BoundaryAnXcone1 = _Xcentre ;
+  SpinBox_Cone_X1->setSingleStep(_Xincr);
+  _BoundaryAnXcone2 = _Xcentre ;
+  SpinBox_Cone_X2->setSingleStep(_Xincr);
+  // . Y des centres
+  _BoundaryAnYcone1 = _Ycentre ;
+  SpinBox_Cone_Y1->setSingleStep(_Yincr);
+  _BoundaryAnYcone2 = _Ycentre ;
+  SpinBox_Cone_Y2->setSingleStep(_Yincr);
+  // . Z des centres
+  _BoundaryAnZcone1 = _Zmin ;
+  SpinBox_Cone_Z1->setSingleStep(_Zincr);
+  _BoundaryAnZcone2 = _Zmax ;
+  SpinBox_Cone_Z2->setSingleStep(_Zincr);
+  // . Rayons/Angles
+  _BoundaryAnRayon1 = 0. ;
+  _BoundaryAnRayon2 = _Rayon ;
+  SpinBox_Cone_V2->setSingleStep(_Rayon/10.);
+
+  // Cone en angle
+  convertRayonAngle(1) ;
+  SpinBox_Cone_X1->setValue(_BoundaryAnXaxisCone);
+  SpinBox_Cone_Y1->setValue(_BoundaryAnYaxisCone);
+  SpinBox_Cone_Z1->setValue(_BoundaryAnZaxisCone);
+  SpinBox_Cone_V1->setValue(_BoundaryAngle);
+  SpinBox_Cone_X2->setValue(_BoundaryAnXorigCone);
+  SpinBox_Cone_Y2->setValue(_BoundaryAnYorigCone);
+  SpinBox_Cone_Z2->setValue(_BoundaryAnZorigCone);
+
+  // Tore
+  // . X du centre
+  SpinBoxToreXcent->setValue(_Xcentre);
+  SpinBoxToreXcent->setSingleStep(_Xincr);
+  // . Y du centre
+  SpinBoxToreYcent->setValue(_Ycentre);
+  SpinBoxToreYcent->setSingleStep(_Yincr);
+  // . Z du centre
+  SpinBoxToreZcent->setValue(_Zcentre);
+  SpinBoxToreZcent->setSingleStep(_Zincr);
+  // . X de l'axe
+  SpinBoxToreXaxe->setValue(0.);
+  SpinBoxToreXaxe->setSingleStep(0.1);
+  // . Y de l'axe
+  SpinBoxToreYaxe->setValue(0.);
+  SpinBoxToreYaxe->setSingleStep(0.1);
+  // . Z de l'axe
+  SpinBoxToreZaxe->setValue(1.);
+  SpinBoxToreZaxe->setSingleStep(0.1);
+  // . Rayon de revolution
+  SpinBoxToreRRev->setValue(_Rayon);
+  SpinBoxToreRRev->setSingleStep(_Rayon/10.);
+  // . Rayon primaire
+  SpinBoxToreRPri->setValue(_Rayon/3.);
+  SpinBoxToreRPri->setSingleStep(_Rayon/20.);
+}
+// ------------------------------------------------------------------------
+bool SMESH_CreateBoundaryAn::PushOnApply()
+// ------------------------------------------------------------------------
+// Appele lorsque l'un des boutons Ok ou Apply est presse
+//
+{
+  if (LEName->text().trimmed()=="")
+  {
+    QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                              QObject::tr("HOM_BOUN_NAME") );
+    return false;
+  }
+
+  switch (_Type)
+  {
+      case 1 : // il s agit d un cylindre
+      {
+        if ((_BoundaryAnXcentre != SpinBox_Xcent->value())  ||
+            (_BoundaryAnYcentre != SpinBox_Ycent->value())  ||
+            (_BoundaryAnZcentre != SpinBox_Zcent->value())  ||
+            (_BoundaryAnRayon   != SpinBox_Radius->value()) ||
+            (_BoundaryAnXaxis   != SpinBox_Xaxis->value()) ||
+            (_BoundaryAnYaxis   != SpinBox_Yaxis->value()) ||
+            (_BoundaryAnZaxis   != SpinBox_Zaxis->value()) )
+        {
+          Chgt = true;
+          _BoundaryAnXaxis= SpinBox_Xaxis->value();
+          _BoundaryAnYaxis= SpinBox_Yaxis->value();
+          _BoundaryAnZaxis= SpinBox_Zaxis->value();
+          _BoundaryAnXcentre=SpinBox_Xcent->value();
+          _BoundaryAnYcentre=SpinBox_Ycent->value();
+          _BoundaryAnZcentre=SpinBox_Zcent->value();
+          _BoundaryAnRayon=SpinBox_Radius->value();
+        }
+        break;
+      }
+
+      case 2 : // il s agit d une sphere
+      {
+        if ((_BoundaryAnXcentre != SpinBox_Xcentre->value()) ||
+            (_BoundaryAnYcentre != SpinBox_Ycentre->value()) ||
+            (_BoundaryAnZcentre != SpinBox_Zcentre->value()) ||
+            (_BoundaryAnRayon   != SpinBox_Rayon->value())  )
+        {
+           Chgt = true;
+          _BoundaryAnXcentre=SpinBox_Xcentre->value();
+          _BoundaryAnYcentre=SpinBox_Ycentre->value();
+          _BoundaryAnZcentre=SpinBox_Zcentre->value();
+          _BoundaryAnRayon=SpinBox_Rayon->value();
+        }
+        break;
+      }
+
+      case 3 : // il s agit d un cone defini par un axe et un angle
+      {
+        if ((_BoundaryAnXaxisCone != SpinBox_Cone_X1->value())  ||
+            (_BoundaryAnYaxisCone != SpinBox_Cone_Y1->value())  ||
+            (_BoundaryAnZaxisCone != SpinBox_Cone_Z1->value())  ||
+            (_BoundaryAnXorigCone != SpinBox_Cone_X2->value())  ||
+            (_BoundaryAnYorigCone != SpinBox_Cone_Y2->value())  ||
+            (_BoundaryAnZorigCone != SpinBox_Cone_Z2->value())  ||
+            (_BoundaryAngle       != SpinBox_Cone_V1->value()) )
+        {
+           Chgt = true;
+          _BoundaryAnXaxisCone = SpinBox_Cone_X1->value() ;
+          _BoundaryAnYaxisCone = SpinBox_Cone_Y1->value() ;
+          _BoundaryAnZaxisCone = SpinBox_Cone_Z1->value() ;
+          _BoundaryAnXorigCone = SpinBox_Cone_X2->value() ;
+          _BoundaryAnYorigCone = SpinBox_Cone_Y2->value() ;
+          _BoundaryAnZorigCone = SpinBox_Cone_Z2->value() ;
+          _BoundaryAngle       = SpinBox_Cone_V1->value() ;
+        }
+        break;
+      }
+
+      case 4 : // il s agit d un cone defini par les 2 rayons
+      {
+        if ((_BoundaryAnXcone1 != SpinBox_Cone_X1->value())  ||
+            (_BoundaryAnYcone1 != SpinBox_Cone_Y1->value())  ||
+            (_BoundaryAnZcone1 != SpinBox_Cone_Z1->value())  ||
+            (_BoundaryAnRayon1 != SpinBox_Cone_V1->value())  ||
+            (_BoundaryAnXcone2 != SpinBox_Cone_X2->value())  ||
+            (_BoundaryAnYcone2 != SpinBox_Cone_Y2->value())  ||
+            (_BoundaryAnZcone2 != SpinBox_Cone_Z2->value())  ||
+            (_BoundaryAnRayon2 != SpinBox_Cone_V2->value()) )
+        {
+           Chgt = true;
+          _BoundaryAnXcone1 = SpinBox_Cone_X1->value() ;
+          _BoundaryAnYcone1 = SpinBox_Cone_Y1->value() ;
+          _BoundaryAnZcone1 = SpinBox_Cone_Z1->value() ;
+          _BoundaryAnRayon1 = SpinBox_Cone_V1->value() ;
+          _BoundaryAnXcone2 = SpinBox_Cone_X2->value() ;
+          _BoundaryAnYcone2 = SpinBox_Cone_Y2->value() ;
+          _BoundaryAnZcone2 = SpinBox_Cone_Z2->value() ;
+          _BoundaryAnRayon2 = SpinBox_Cone_V2->value() ;
+        }
+        break;
+      }
+      case 5 : // il s agit d un tore
+      {
+        if ((_BoundaryAnToreXcentre != SpinBoxToreXcent->value())  ||
+            (_BoundaryAnToreYcentre != SpinBoxToreYcent->value())  ||
+            (_BoundaryAnToreZcentre != SpinBoxToreZcent->value())  ||
+            (_BoundaryAnToreRRev   != SpinBoxToreRRev->value()) ||
+            (_BoundaryAnToreRPri   != SpinBoxToreRPri->value()) ||
+            (_BoundaryAnToreXaxe   != SpinBoxToreXaxe->value()) ||
+            (_BoundaryAnToreYaxe   != SpinBoxToreYaxe->value()) ||
+            (_BoundaryAnToreZaxe   != SpinBoxToreZaxe->value()) )
+        {
+          Chgt = true;
+          _BoundaryAnToreXcentre= SpinBoxToreXcent->value();
+          _BoundaryAnToreYcentre= SpinBoxToreYcent->value();
+          _BoundaryAnToreZcentre= SpinBoxToreZcent->value();
+          _BoundaryAnToreRRev=SpinBoxToreRRev->value();
+          _BoundaryAnToreRPri=SpinBoxToreRPri->value();
+          _BoundaryAnToreXaxe=SpinBoxToreXaxe->value();
+          _BoundaryAnToreYaxe=SpinBoxToreYaxe->value();
+          _BoundaryAnToreZaxe=SpinBoxToreZaxe->value();
+        }
+        break;
+      }
+
+ }
+
+// Controles
+// L'axe pour un cylindre
+  if ( _Type == 5 )
+  {
+    double daux = _BoundaryAnXaxis*_BoundaryAnXaxis + _BoundaryAnYaxis*_BoundaryAnYaxis + _BoundaryAnZaxis*_BoundaryAnZaxis ;
+    if ( daux < 0.0000001 )
+    {
+      QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                                QObject::tr("HOM_AXE") );
+      return false;
+    }
+  }
+
+  //
+  // Création ou mise à jour de la frontière
+  //
+  bool bOK = CreateOrUpdateBoundaryAn();
+
+  //if ( bOK ) { HOMARD_UTILS::updateObjBrowser() ; }
+
+  return bOK;
+
+}
+// ---------------------------------------------------
+bool SMESH_CreateBoundaryAn::CreateOrUpdateBoundaryAn()
+//----------------------------------------------------
+//  Creation de l'objet boundary
+{
+  MESSAGE("Debut de CreateOrUpdateBoundaryAn avec _Type ="<<_Type<<", _Name ="<<_Name.toStdString().c_str()<<" et LEName ="<<LEName->text().trimmed().toStdString().c_str());
+//
+  if (_Name != LEName->text().trimmed())
+  {
+    _Name = LEName->text().trimmed() ;
+    try
+    {
+      switch (_Type)
+      {
+        case 1 : // il s agit d un cylindre
+        { aBoundaryAn = myHomardGen->CreateBoundaryCylinder(CORBA::string_dup(_Name.toStdString().c_str()), \
+            _BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnXaxis, _BoundaryAnYaxis, _BoundaryAnZaxis, _BoundaryAnRayon );
+          break;
+        }
+        case 2 : // il s agit d une sphere
+        { aBoundaryAn = myHomardGen->CreateBoundarySphere(CORBA::string_dup(_Name.toStdString().c_str()), \
+            _BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnRayon);
+          break;
+       }
+        case 3 : // il s agit d un cone defini par un axe et un angle
+        { aBoundaryAn = myHomardGen->CreateBoundaryConeA(CORBA::string_dup(_Name.toStdString().c_str()), \
+            _BoundaryAnXaxisCone, _BoundaryAnYaxisCone, _BoundaryAnZaxisCone, _BoundaryAngle, \
+            _BoundaryAnXorigCone, _BoundaryAnYorigCone, _BoundaryAnYorigCone);
+          break;
+        }
+        case 4 : // il s agit d un cone defini par les 2 rayons
+        { aBoundaryAn = myHomardGen->CreateBoundaryConeR(CORBA::string_dup(_Name.toStdString().c_str()), \
+            _BoundaryAnXcone1, _BoundaryAnYcone1, _BoundaryAnZcone1, _BoundaryAnRayon1, \
+            _BoundaryAnXcone2, _BoundaryAnYcone2, _BoundaryAnZcone2, _BoundaryAnRayon2);
+          break;
+        }
+        case 5 : // il s agit d un tore
+        { aBoundaryAn = myHomardGen->CreateBoundaryTorus(CORBA::string_dup(_Name.toStdString().c_str()), \
+            _BoundaryAnToreXcentre, _BoundaryAnToreYcentre, _BoundaryAnToreZcentre, _BoundaryAnToreXaxe, _BoundaryAnToreYaxe, _BoundaryAnToreZaxe, _BoundaryAnToreRRev, _BoundaryAnToreRPri );
+          break;
+        }
+      }
+    }
+    catch( SALOME::SALOME_Exception& S_ex )
+    {
+      QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                                QObject::tr(CORBA::string_dup(S_ex.details.text)) );
+      return false ;
+    }
+    _parent->AddBoundaryAn(_Name);
+
+    return true;
+  }
+  else {
+    QMessageBox::warning( 0, QObject::tr("HOM_WARNING"),
+                             QObject::tr("HOM_SELECT_OBJECT_4") );
+    return false ;
+  }
+  MESSAGE("Fin de CreateOrUpdateBoundaryAn");
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryAn::PushOnOK()
+// ------------------------------------------------------------------------
+{
+     if (PushOnApply()) this->close();
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryAn::PushOnHelp()
+// ------------------------------------------------------------------------
+{
+  SMESH::ShowHelpFile(QString("homard_create_boundary.html#analytical-boundary"));
+}
+
+// -----------------------------------
+void SMESH_CreateBoundaryAn::SetNewName()
+// -----------------------------------
+{
+// Recherche d'un nom par defaut qui n'existe pas encore
+
+  SMESHHOMARD::listeBoundarys_var MyObjects = myHomardGen->GetAllBoundarysName();
+  int num = 0; QString aName="";
+  while (aName=="" )
+  {
+    aName.setNum(num+1) ;
+    aName.insert(0, QString("Boun_")) ;
+    for ( int i=0; i<MyObjects->length(); i++)
+    {
+      if ( aName ==  QString(MyObjects[i]))
+      {
+        num ++ ;
+        aName = "" ;
+        break ;
+      }
+   }
+  }
+  LEName->setText(aName);
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryAn::SetCylinder()
+// ------------------------------------------------------------------------
+{
+  MESSAGE("Debut de SetCylinder");
+  gBCylindre->setVisible(1);
+  gBSphere->setVisible(0);
+  gBCone->setVisible(0);
+  gBTore->setVisible(0);
+//
+  _Type=1;
+//
+  adjustSize();
+//   MESSAGE("Fin de SetCylinder")
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryAn::SetSphere()
+// ------------------------------------------------------------------------
+{
+  MESSAGE("Debut de SetSphere");
+  gBCylindre->setVisible(0);
+  gBSphere->setVisible(1);
+  gBCone->setVisible(0);
+  gBTore->setVisible(0);
+//
+  _Type=2;
+//
+  adjustSize();
+//   MESSAGE("Fin de SetSphere")
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryAn::SetConeR()
+// ------------------------------------------------------------------------
+{
+  MESSAGE("Debut de SetConeR");
+//
+// Stockage et conversion des valeurs si elles ont change
+  if ((_BoundaryAnXaxisCone != SpinBox_Cone_X1->value())  ||
+      (_BoundaryAnYaxisCone != SpinBox_Cone_Y1->value())  ||
+      (_BoundaryAnZaxisCone != SpinBox_Cone_Z1->value())  ||
+      (_BoundaryAnXorigCone != SpinBox_Cone_X2->value())  ||
+      (_BoundaryAnYorigCone != SpinBox_Cone_Y2->value())  ||
+      (_BoundaryAnZorigCone != SpinBox_Cone_Z2->value())  ||
+      (_BoundaryAngle       != SpinBox_Cone_V1->value()) )
+  {
+    MESSAGE("Stockage et conversion");
+    _BoundaryAnXaxisCone = SpinBox_Cone_X1->value() ;
+    _BoundaryAnYaxisCone = SpinBox_Cone_Y1->value() ;
+    _BoundaryAnZaxisCone = SpinBox_Cone_Z1->value() ;
+    _BoundaryAnXorigCone = SpinBox_Cone_X2->value() ;
+    _BoundaryAnYorigCone = SpinBox_Cone_Y2->value() ;
+    _BoundaryAnZorigCone = SpinBox_Cone_Z2->value() ;
+    _BoundaryAngle       = SpinBox_Cone_V1->value() ;
+    convertRayonAngle(-1) ;
+  }
+//
+  _Type=4;
+//
+  TLCone_X1->setText(QApplication::translate("CreateBoundaryAn", "X centre 1", 0));
+  SpinBox_Cone_X1->setValue(_BoundaryAnXcone1);
+  TLCone_Y1->setText(QApplication::translate("CreateBoundaryAn", "Y centre 1", 0));
+  SpinBox_Cone_Y1->setValue(_BoundaryAnYcone1);
+  TLCone_Z1->setText(QApplication::translate("CreateBoundaryAn", "Z centre 1", 0));
+  SpinBox_Cone_Z1->setValue(_BoundaryAnZcone1);
+//
+  TLCone_V1->setText(QApplication::translate("CreateBoundaryAn", "Radius 1", 0));
+  SpinBox_Cone_V1->setSingleStep(_Rayon/10.);
+  SpinBox_Cone_V1->setMaximum(100000.*_DMax);
+  SpinBox_Cone_V1->setValue(_BoundaryAnRayon1);
+//
+  TLCone_X2->setText(QApplication::translate("CreateBoundaryAn", "X centre 2", 0));
+  SpinBox_Cone_X2->setValue(_BoundaryAnXcone2);
+  TLCone_Y2->setText(QApplication::translate("CreateBoundaryAn", "Y centre 2", 0));
+  SpinBox_Cone_Y2->setValue(_BoundaryAnYcone2);
+  TLCone_Z2->setText(QApplication::translate("CreateBoundaryAn", "Z centre 2", 0));
+  SpinBox_Cone_Z2->setValue(_BoundaryAnZcone2);
+//
+  TLCone_V2->setVisible(1);
+  SpinBox_Cone_V2->setVisible(1);
+  TLCone_V2->setText(QApplication::translate("CreateBoundaryAn", "Radius 2", 0));
+  SpinBox_Cone_V2->setValue(_BoundaryAnRayon2);
+//
+//   MESSAGE("Fin de SetConeR")
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryAn::SetConeA()
+// ------------------------------------------------------------------------
+{
+  MESSAGE("Debut de SetConeA");
+// Stockage et conversion des valeurs si elles ont change
+  if ((_BoundaryAnXcone1 != SpinBox_Cone_X1->value())  ||
+      (_BoundaryAnYcone1 != SpinBox_Cone_Y1->value())  ||
+      (_BoundaryAnZcone1 != SpinBox_Cone_Z1->value())  ||
+      (_BoundaryAnRayon1 != SpinBox_Cone_V1->value())  ||
+      (_BoundaryAnXcone2 != SpinBox_Cone_X2->value())  ||
+      (_BoundaryAnYcone2 != SpinBox_Cone_Y2->value())  ||
+      (_BoundaryAnZcone2 != SpinBox_Cone_Z2->value())  ||
+      (_BoundaryAnRayon2 != SpinBox_Cone_V2->value()) )
+  {
+    MESSAGE("Stockage et conversion");
+    _BoundaryAnXcone1 = SpinBox_Cone_X1->value() ;
+    _BoundaryAnYcone1 = SpinBox_Cone_Y1->value() ;
+    _BoundaryAnZcone1 = SpinBox_Cone_Z1->value() ;
+    _BoundaryAnRayon1 = SpinBox_Cone_V1->value() ;
+    _BoundaryAnXcone2 = SpinBox_Cone_X2->value() ;
+    _BoundaryAnYcone2 = SpinBox_Cone_Y2->value() ;
+    _BoundaryAnZcone2 = SpinBox_Cone_Z2->value() ;
+    _BoundaryAnRayon2 = SpinBox_Cone_V2->value() ;
+    convertRayonAngle(1) ;
+  }
+//
+  _Type=3;
+//
+  TLCone_X1->setText(QApplication::translate("CreateBoundaryAn", "X axis", 0));
+  SpinBox_Cone_X1->setValue(_BoundaryAnXaxisCone);
+  TLCone_Y1->setText(QApplication::translate("CreateBoundaryAn", "Y axis", 0));
+  SpinBox_Cone_Y1->setValue(_BoundaryAnYaxisCone);
+  TLCone_Z1->setText(QApplication::translate("CreateBoundaryAn", "Z axis", 0));
+  SpinBox_Cone_Z1->setValue(_BoundaryAnZaxisCone);
+//
+  TLCone_X2->setText(QApplication::translate("CreateBoundaryAn", "X centre", 0));
+  SpinBox_Cone_X2->setValue(_BoundaryAnXorigCone);
+  TLCone_Y2->setText(QApplication::translate("CreateBoundaryAn", "Y centre", 0));
+  SpinBox_Cone_Y2->setValue(_BoundaryAnYorigCone);
+  TLCone_Z2->setText(QApplication::translate("CreateBoundaryAn", "Z centre", 0));
+  SpinBox_Cone_Z2->setValue(_BoundaryAnZorigCone);
+//
+  TLCone_V1->setText(QApplication::translate("CreateBoundaryAn", "Angle", 0));
+  SpinBox_Cone_V1->setValue(_BoundaryAngle);
+  SpinBox_Cone_V1->setSingleStep(1.);
+  SpinBox_Cone_V1->setMaximum(90.);
+//
+  TLCone_V2->setVisible(0);
+  SpinBox_Cone_V2->setVisible(0);
+//   MESSAGE("Fin de SetConeA")
+}
+
+
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryAn::SetCone()
+// ------------------------------------------------------------------------
+{
+  MESSAGE("Debut de SetCone");
+  gBCylindre->setVisible(0);
+  gBSphere->setVisible(0);
+  gBCone->setVisible(1);
+  gBTore->setVisible(0);
+//
+  if ( RB_Def_radius->isChecked() )
+  {
+    SetConeR();
+  }
+  else
+  {
+    SetConeA();
+  }
+//
+  adjustSize();
+//   MESSAGE("Fin de SetCone")
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryAn::SetTore()
+// ------------------------------------------------------------------------
+{
+  MESSAGE("Debut de SetTore");
+  gBCylindre->setVisible(0);
+  gBSphere->setVisible(0);
+  gBCone->setVisible(0);
+  gBTore->setVisible(1);
+//
+  _Type=5;
+//
+  adjustSize();
+//   MESSAGE("Fin de SetTore")
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryAn::convertRayonAngle(int option)
+// ------------------------------------------------------------------------
+// Conversion entre les deux formulations du cone :
+// par deux rayons ou avec un axe et un angle.
+// Voir sfcoi1 de HOMARD
+{
+  MESSAGE("Debut de convertRayonAngle, option = "<<option);
+//
+//         o
+//         !    .
+//         !        .
+//       RA!            .
+//         !                o
+//         !              RB!   .
+//         !                !       .
+//         A----------------B----------O
+//
+//   Thales : RA/RB = AO/BO  ==> BO = AB*RB/(RA-RB)
+//   Angle  : tg(alpha) = RA/AO
+//
+  double daux ;
+// De rayon vers angle :
+  if ( option == 1 )
+  {
+    double xa, ya, za, ra ;
+    double xb, yb, zb, rb ;
+// Positionnement de A vers B, avec RA>RB
+    if ( _BoundaryAnRayon1 > _BoundaryAnRayon2 )
+    {
+      xa = _BoundaryAnXcone1 ;
+      ya = _BoundaryAnYcone1 ;
+      za = _BoundaryAnZcone1 ;
+      ra = _BoundaryAnRayon1 ;
+      xb = _BoundaryAnXcone2 ;
+      yb = _BoundaryAnYcone2 ;
+      zb = _BoundaryAnZcone2 ;
+      rb = _BoundaryAnRayon2 ;
+    }
+    else
+    {
+      xa = _BoundaryAnXcone2 ;
+      ya = _BoundaryAnYcone2 ;
+      za = _BoundaryAnZcone2 ;
+      ra = _BoundaryAnRayon2 ;
+      xb = _BoundaryAnXcone1 ;
+      yb = _BoundaryAnYcone1 ;
+      zb = _BoundaryAnZcone1 ;
+      rb = _BoundaryAnRayon1 ;
+    }
+// Axe : relie les deux centres, de A vers B.  L'axe est normalise
+    _BoundaryAnXaxisCone = xb - xa ;
+    _BoundaryAnYaxisCone = yb - ya ;
+    _BoundaryAnZaxisCone = zb - za ;
+    daux = sqrt ( _BoundaryAnXaxisCone*_BoundaryAnXaxisCone + _BoundaryAnYaxisCone*_BoundaryAnYaxisCone + _BoundaryAnZaxisCone*_BoundaryAnZaxisCone ) ;
+    _BoundaryAnXaxisCone = _BoundaryAnXaxisCone/daux ;
+    _BoundaryAnYaxisCone = _BoundaryAnYaxisCone/daux ;
+    _BoundaryAnZaxisCone = _BoundaryAnZaxisCone/daux ;
+// Origine
+    daux = daux * rb / (ra-rb) ;
+    _BoundaryAnXorigCone = xb + daux*_BoundaryAnXaxisCone ;
+    _BoundaryAnYorigCone = yb + daux*_BoundaryAnYaxisCone ;
+    _BoundaryAnZorigCone = zb + daux*_BoundaryAnZaxisCone ;
+// Angle en degre
+    daux = ra / sqrt((_BoundaryAnXorigCone-xa)*(_BoundaryAnXorigCone-xa) + (_BoundaryAnYorigCone-ya)*(_BoundaryAnYorigCone-ya) + (_BoundaryAnZorigCone-za)*(_BoundaryAnZorigCone-za) ) ;
+    _BoundaryAngle = atan(daux)*180./PI ;
+  }
+// D'angle vers rayon :
+  else
+  {
+    double xax, yax, zax ;
+// L'axe est normalise
+    daux = sqrt ( _BoundaryAnXaxisCone*_BoundaryAnXaxisCone + _BoundaryAnYaxisCone*_BoundaryAnYaxisCone + _BoundaryAnZaxisCone*_BoundaryAnZaxisCone ) ;
+    xax = _BoundaryAnXaxisCone/daux ;
+    yax = _BoundaryAnYaxisCone/daux ;
+    zax = _BoundaryAnZaxisCone/daux ;
+// Centre 1 : l'origine
+    _BoundaryAnXcone1 = _BoundaryAnXorigCone ;
+    _BoundaryAnYcone1 = _BoundaryAnYorigCone ;
+    _BoundaryAnZcone1 = _BoundaryAnZorigCone ;
+// Rayon 1 : nul
+    _BoundaryAnRayon1 = 0. ;
+// Centre 2 : l'origine decalee d'une longueur arbitraire le long de l'axe
+    _BoundaryAnXcone2 = _BoundaryAnXorigCone + _DMax*xax ;
+    _BoundaryAnYcone2 = _BoundaryAnYorigCone + _DMax*yax ;
+    _BoundaryAnZcone2 = _BoundaryAnZorigCone + _DMax*zax ;
+// Rayon 2 : a calculer
+    _BoundaryAnRayon2 = _DMax*tan(_BoundaryAngle*PI/180.) ;
+  }
+//   MESSAGE("Fin de convertRayonAngle")
+}
+
+// -------------------------------------------------------------------------------
+SMESH_CreateBoundaryCAO::SMESH_CreateBoundaryCAO(SMESHGUI_HomardAdaptDlg* parent, bool modal,
+                                                 SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                                                 QString caseName, QString aName)
+// ---------------------------------------------------------------------------------
+/* Constructs a SMESH_CreateBoundaryCAO */
+    :
+    QDialog(0), SMESH_Ui_CreateBoundaryCAO(),
+    _parent(parent), _aName(aName),
+    myHomardGen(SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen0))
+    {
+      MESSAGE("Constructeur");
+      setupUi(this);
+      setModal(modal);
+      InitConnect();
+
+     if ( _aName == QString("") ) {SetNewName();};
+    }
+
+// ------------------------------------------------------------------------
+SMESH_CreateBoundaryCAO::~SMESH_CreateBoundaryCAO()
+// ------------------------------------------------------------------------
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryCAO::InitConnect()
+// ------------------------------------------------------------------------
+{
+    connect( PushFichier,  SIGNAL(pressed()), this, SLOT(SetCAOFile()));
+    connect( buttonOk,     SIGNAL(pressed()), this, SLOT( PushOnOK()));
+    connect( buttonApply,  SIGNAL(pressed()), this, SLOT( PushOnApply()));
+    connect( buttonCancel, SIGNAL(pressed()), this, SLOT(close()));
+    connect( buttonHelp,   SIGNAL(pressed()), this, SLOT( PushOnHelp()));
+    connect( CBGroupe,     SIGNAL(stateChanged(int)), this, SLOT( SetFiltrage()));
+}
+
+// ------------------------------------------------------------------------
+bool SMESH_CreateBoundaryCAO::PushOnApply()
+// ------------------------------------------------------------------------
+// Appele lorsque l'un des boutons Ok ou Apply est presse
+//
+{
+// Verifications
+
+  QString aName=LEName->text().trimmed();
+  if (aName=="") {
+    QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                              QObject::tr("HOM_BOUN_NAME") );
+    return false;
+  }
+
+//  La CAO
+  QString aCAOFile=LEFileName->text().trimmed();
+  if (aCAOFile ==QString(""))
+  {
+    QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                              QObject::tr("HOM_BOUN_CAO") );
+    return false;
+  }
+
+// Creation de l'objet CORBA si ce n'est pas deja fait sous le meme nom
+  if ( _aName != aName )
+  {
+   try
+   {
+     _aName=aName;
+     aBoundary=myHomardGen->CreateBoundaryCAO(CORBA::string_dup(_aName.toStdString().c_str()), aCAOFile.toStdString().c_str());
+     _parent->AddBoundaryCAO(_aName);
+   }
+   catch( SALOME::SALOME_Exception& S_ex )
+   {
+      QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                                QObject::tr(CORBA::string_dup(S_ex.details.text)) );
+      return false;
+   }
+  }
+
+// Les groupes
+  AssocieLesGroupes();
+
+  //HOMARD_UTILS::updateObjBrowser();
+  return true;
+}
+
+
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryCAO::PushOnOK()
+// ------------------------------------------------------------------------
+{
+     if (PushOnApply()) this->close();
+     if ( _parent ) { _parent->raise(); _parent->activateWindow(); };
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryCAO::PushOnHelp()
+// ------------------------------------------------------------------------
+{
+  SMESH::ShowHelpFile(QString("homard_create_boundary.html#cao-boundary"));
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryCAO::AssocieLesGroupes()
+// ------------------------------------------------------------------------
+{
+  SMESHHOMARD::ListGroupType_var aSeqGroupe = new SMESHHOMARD::ListGroupType;
+  aSeqGroupe->length(_listeGroupesBoundary.size());
+  QStringList::const_iterator it;
+  int i=0;
+  for (it = _listeGroupesBoundary.constBegin(); it != _listeGroupesBoundary.constEnd(); it++)
+     aSeqGroupe[i++]=(*it).toStdString().c_str();
+  aBoundary->SetGroups(aSeqGroupe);
+
+}
+
+// -------------------------------------------------
+void SMESH_CreateBoundaryCAO::SetNewName()
+// --------------------------------------------------
+{
+
+  SMESHHOMARD::listeBoundarys_var  MyObjects = myHomardGen->GetAllBoundarysName();
+  int num = 0; QString aName="";
+  while (aName == QString("") )
+  {
+    aName.setNum(num+1) ;
+    aName.insert(0, QString("Boun_")) ;
+    for ( int i=0; i<MyObjects->length(); i++)
+    {
+      if ( aName ==  QString(MyObjects[i]))
+      {
+        num ++ ;
+        aName = "" ;
+        break ;
+      }
+   }
+  }
+  LEName->setText(aName);
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryCAO::SetCAOFile()
+// ------------------------------------------------------------------------
+{
+  QString aCAOFile = SMESH_HOMARD_QT_COMMUN::PushNomFichier( false, QString("xao") );
+  if (!(aCAOFile.isEmpty())) LEFileName->setText(aCAOFile);
+}
+
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryCAO::setGroups (QStringList listGroup)
+// ------------------------------------------------------------------------
+{
+    _listeGroupesBoundary = listGroup;
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryCAO::SetFiltrage()
+// ------------------------------------------------------------------------
+{
+  if (!CBGroupe->isChecked()) return;
+
+  SMESH_CreateListGroupCAO *aDlg = new SMESH_CreateListGroupCAO
+    (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
+     "Case_1", _listeGroupesBoundary);
+  aDlg->show();
+}
+
+// -------------------------------------------------------------------------------
+SMESH_CreateBoundaryDi::SMESH_CreateBoundaryDi(SMESHGUI_HomardAdaptDlg* parent, bool modal,
+                                               SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                                               QString caseName, QString aName)
+// ---------------------------------------------------------------------------------
+/* Constructs a SMESH_CreateBoundaryDi */
+    :
+    QDialog(0), SMESH_Ui_CreateBoundaryDi(),
+    _parent(parent), _aName(aName),
+    myHomardGen(SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen0))
+    {
+      MESSAGE("Constructeur") ;
+      setupUi(this);
+      setModal(modal);
+      InitConnect();
+
+     if ( _aName == QString("") ) {SetNewName();};
+    }
+
+// ------------------------------------------------------------------------
+SMESH_CreateBoundaryDi::~SMESH_CreateBoundaryDi()
+// ------------------------------------------------------------------------
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryDi::InitConnect()
+// ------------------------------------------------------------------------
+{
+    connect( PushFichier,  SIGNAL(pressed()), this, SLOT(SetMeshFile()));
+    connect( buttonOk,     SIGNAL(pressed()), this, SLOT( PushOnOK()));
+    connect( buttonApply,  SIGNAL(pressed()), this, SLOT( PushOnApply()));
+    connect( buttonCancel, SIGNAL(pressed()), this, SLOT(close()));
+    connect( buttonHelp,   SIGNAL(pressed()), this, SLOT( PushOnHelp()));
+    connect( CBGroupe,     SIGNAL(stateChanged(int)), this, SLOT( SetFiltrage()));
+}
+
+// ------------------------------------------------------------------------
+bool SMESH_CreateBoundaryDi::PushOnApply()
+// ------------------------------------------------------------------------
+// Appele lorsque l'un des boutons Ok ou Apply est presse
+//
+{
+// Verifications
+
+  QString aName=LEName->text().trimmed();
+  if (aName=="") {
+    QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                              QObject::tr("HOM_BOUN_NAME") );
+    return false;
+  }
+
+//  Le maillage de la frontiere discrete
+  QString aMeshFile=LEFileName->text().trimmed();
+  if (aMeshFile ==QString(""))
+  {
+    QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                              QObject::tr("HOM_BOUN_MESH") );
+    return false;
+  }
+
+  //  Le nom du maillage de la frontiere discrete
+  QString aMeshName = SMESH_HOMARD_QT_COMMUN::LireNomMaillage(aMeshFile);
+  if (aMeshName == "" )
+  {
+    QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                              QObject::tr("HOM_MED_FILE_2") );
+    return false;
+  }
+
+// Creation de l'objet CORBA si ce n'est pas deja fait sous le meme nom
+  if ( _aName != aName )
+  {
+   try
+   {
+     _aName=aName;
+     aBoundary=myHomardGen->CreateBoundaryDi(CORBA::string_dup(_aName.toStdString().c_str()), aMeshName.toStdString().c_str(), aMeshFile.toStdString().c_str());
+     _parent->AddBoundaryDi(_aName);
+   }
+   catch( SALOME::SALOME_Exception& S_ex )
+   {
+      QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                                QObject::tr(CORBA::string_dup(S_ex.details.text)) );
+      return false;
+   }
+  }
+
+// Les groupes
+  AssocieLesGroupes();
+
+  //HOMARD_UTILS::updateObjBrowser();
+  return true;
+}
+
+
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryDi::PushOnOK()
+// ------------------------------------------------------------------------
+{
+     if (PushOnApply()) this->close();
+     if ( _parent ) { _parent->raise(); _parent->activateWindow(); };
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryDi::PushOnHelp()
+// ------------------------------------------------------------------------
+{
+  SMESH::ShowHelpFile(QString("homard_create_boundary.html#discrete-boundary"));
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryDi::AssocieLesGroupes()
+// ------------------------------------------------------------------------
+{
+  SMESHHOMARD::ListGroupType_var aSeqGroupe = new SMESHHOMARD::ListGroupType;
+  aSeqGroupe->length(_listeGroupesBoundary.size());
+  QStringList::const_iterator it;
+  int i=0;
+  for (it = _listeGroupesBoundary.constBegin(); it != _listeGroupesBoundary.constEnd(); it++)
+     aSeqGroupe[i++]=(*it).toStdString().c_str();
+  aBoundary->SetGroups(aSeqGroupe);
+
+}
+
+// -------------------------------------------------
+void SMESH_CreateBoundaryDi::SetNewName()
+// --------------------------------------------------
+{
+
+  SMESHHOMARD::listeBoundarys_var  MyObjects = myHomardGen->GetAllBoundarysName();
+  int num = 0; QString aName="";
+  while (aName == QString("") )
+  {
+    aName.setNum(num+1) ;
+    aName.insert(0, QString("Boun_")) ;
+    for ( int i=0; i<MyObjects->length(); i++)
+    {
+      if ( aName ==  QString(MyObjects[i]))
+      {
+        num ++ ;
+        aName = "" ;
+        break ;
+      }
+   }
+  }
+  LEName->setText(aName);
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryDi::SetMeshFile()
+// ------------------------------------------------------------------------
+{
+  QString aMeshFile = SMESH_HOMARD_QT_COMMUN::PushNomFichier( false, QString("med") );
+  if (!(aMeshFile.isEmpty())) LEFileName->setText(aMeshFile);
+}
+
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryDi::setGroups (QStringList listGroup)
+// ------------------------------------------------------------------------
+{
+    _listeGroupesBoundary = listGroup;
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateBoundaryDi::SetFiltrage()
+// // ------------------------------------------------------------------------
+{
+  if (!CBGroupe->isChecked()) return;
+
+  SMESH_CreateListGroup *aDlg = new SMESH_CreateListGroup
+    (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
+     "Case_1", _listeGroupesBoundary);
+  aDlg->show();
+}
+
+// ------------------------------------------------------------------------
+SMESH_EditBoundaryAn::SMESH_EditBoundaryAn( SMESHGUI_HomardAdaptDlg* parent, bool modal,
+                                            SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                                            QString caseName, QString Name ):
+// ------------------------------------------------------------------------
+/* Constructs a SMESH_EditBoundaryAn
+    herite de SMESH_CreateBoundaryAn
+*/
+    SMESH_CreateBoundaryAn(parent, myHomardGen0, caseName)
+{
+    MESSAGE("Debut de SMESH_EditBoundaryAn pour " << Name.toStdString().c_str());
+    setWindowTitle(QObject::tr("HOM_BOUN_A_EDIT_WINDOW_TITLE"));
+    _Name=Name;
+    aBoundaryAn = myHomardGen->GetBoundary(_Name.toStdString().c_str());
+    InitValEdit();
+}
+// ------------------------------------------------------------------------
+SMESH_EditBoundaryAn::~SMESH_EditBoundaryAn()
+// ------------------------------------------------------------------------
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+// ------------------------------------------------------------------------
+void SMESH_EditBoundaryAn::InitValEdit()
+// ------------------------------------------------------------------------
+{
+  LEName->setText(_Name);
+  LEName->setReadOnly(true);
+  _Type = aBoundaryAn->GetType();
+  MESSAGE("_Type : "<<_Type);
+  InitValBoundaryAnLimit();
+  InitValBoundaryAn();
+  switch (_Type)
+  {
+    case 1 : // il s agit d un cylindre
+    {
+      InitValBoundaryAnCylindre();
+      SetCylinder();
+      break;
+    }
+    case 2: // il s agit d une sphere
+    {
+      InitValBoundaryAnSphere();
+      SetSphere();
+      break;
+    }
+    case 3: // il s agit d un cone defini par un axe et un angle
+    {
+      InitValBoundaryAnConeA();
+      SetConeA();
+      break;
+    }
+    case 4: // il s agit d un cone defini par les 2 rayons
+    {
+      InitValBoundaryAnConeR();
+      SetConeR();
+      break;
+    }
+    case 5: // il s agit d un tore
+    {
+      InitValBoundaryAnTore();
+      SetTore();
+      break;
+    }
+  };
+}
+// ------------------------------------------------------------------------
+void SMESH_EditBoundaryAn::InitValBoundaryAnLimit()
+// ------------------------------------------------------------------------
+{
+  SMESHHOMARD::double_array_var  mesCoordLimits = aBoundaryAn->GetLimit();
+  ASSERT(mesCoordLimits->length() == 3 );
+  _Xincr=mesCoordLimits[0];
+  _Yincr=mesCoordLimits[1];
+  _Zincr=mesCoordLimits[2];
+}
+// ------------------------------------------------------------------------
+void SMESH_EditBoundaryAn::InitValBoundaryAnCylindre()
+// ------------------------------------------------------------------------
+{
+  SMESHHOMARD::double_array_var  mesCoordBoundary = aBoundaryAn->GetCoords();
+  ASSERT(mesCoordBoundary->length() == 7 );
+  _BoundaryAnXcentre=mesCoordBoundary[0];
+  _BoundaryAnYcentre=mesCoordBoundary[1];
+  _BoundaryAnZcentre=mesCoordBoundary[2];
+  _BoundaryAnXaxis=mesCoordBoundary[3];
+  _BoundaryAnYaxis=mesCoordBoundary[4];
+  _BoundaryAnZaxis=mesCoordBoundary[5];
+  _BoundaryAnRayon=mesCoordBoundary[6];
+}
+// ------------------------------------------------------------------------
+void SMESH_EditBoundaryAn::InitValBoundaryAnSphere()
+// ------------------------------------------------------------------------
+{
+  SMESHHOMARD::double_array_var  mesCoordBoundary = aBoundaryAn->GetCoords();
+  ASSERT(mesCoordBoundary->length() == 4 );
+  _BoundaryAnXcentre=mesCoordBoundary[0];
+  _BoundaryAnYcentre=mesCoordBoundary[1];
+  _BoundaryAnZcentre=mesCoordBoundary[2];
+  _BoundaryAnRayon=mesCoordBoundary[3];
+}
+// ------------------------------------------------------------------------
+void SMESH_EditBoundaryAn::InitValBoundaryAnConeA()
+// ------------------------------------------------------------------------
+{
+  SMESHHOMARD::double_array_var  mesCoordBoundary = aBoundaryAn->GetCoords();
+  ASSERT(mesCoordBoundary->length() == 7 );
+  _BoundaryAnXaxisCone=mesCoordBoundary[0];
+  _BoundaryAnYaxisCone=mesCoordBoundary[1];
+  _BoundaryAnZaxisCone=mesCoordBoundary[2];
+  _BoundaryAngle=mesCoordBoundary[3];
+  _BoundaryAnXorigCone=mesCoordBoundary[4];
+  _BoundaryAnYorigCone=mesCoordBoundary[5];
+  _BoundaryAnZorigCone=mesCoordBoundary[6];
+  convertRayonAngle(-1) ;
+}
+// ------------------------------------------------------------------------
+void SMESH_EditBoundaryAn::InitValBoundaryAnConeR()
+// ------------------------------------------------------------------------
+{
+  SMESHHOMARD::double_array_var  mesCoordBoundary = aBoundaryAn->GetCoords();
+  ASSERT(mesCoordBoundary->length() == 8 );
+  _BoundaryAnXcone1=mesCoordBoundary[0];
+  _BoundaryAnYcone1=mesCoordBoundary[1];
+  _BoundaryAnZcone1=mesCoordBoundary[2];
+  _BoundaryAnRayon1=mesCoordBoundary[3];
+  _BoundaryAnXcone2=mesCoordBoundary[4];
+  _BoundaryAnYcone2=mesCoordBoundary[5];
+  _BoundaryAnZcone2=mesCoordBoundary[6];
+  _BoundaryAnRayon2=mesCoordBoundary[7];
+  convertRayonAngle(1) ;
+}
+// ------------------------------------------------------------------------
+void SMESH_EditBoundaryAn::InitValBoundaryAnTore()
+// ------------------------------------------------------------------------
+{
+  SMESHHOMARD::double_array_var  mesCoordBoundary = aBoundaryAn->GetCoords();
+  ASSERT(mesCoordBoundary->length() == 8 );
+  _BoundaryAnXcentre=mesCoordBoundary[0];
+  _BoundaryAnYcentre=mesCoordBoundary[1];
+  _BoundaryAnZcentre=mesCoordBoundary[2];
+  _BoundaryAnXaxis=mesCoordBoundary[3];
+  _BoundaryAnYaxis=mesCoordBoundary[4];
+  _BoundaryAnZaxis=mesCoordBoundary[5];
+  _BoundaryAnRayon1=mesCoordBoundary[6];
+  _BoundaryAnRayon2=mesCoordBoundary[7];
+}
+// ------------------------------------------------------------------------
+void SMESH_EditBoundaryAn::SetCylinder()
+// ------------------------------------------------------------------------
+{
+  gBCylindre->setVisible(1);
+  gBSphere->setVisible(0);
+  gBCone->setVisible(0);
+  gBTore->setVisible(0);
+  RBCylindre->setChecked(1);
+  _Type=1;
+  RBSphere->setDisabled(true);
+  RBCone->setDisabled(true);
+  RBTore->setDisabled(true);
+
+  SpinBox_Xcent->setValue(_BoundaryAnXcentre);
+  SpinBox_Ycent->setValue(_BoundaryAnYcentre);
+  SpinBox_Zcent->setValue(_BoundaryAnZcentre);
+
+  SpinBox_Xaxis->setValue(_BoundaryAnXaxis);
+  SpinBox_Yaxis->setValue(_BoundaryAnYaxis);
+  SpinBox_Zaxis->setValue(_BoundaryAnZaxis);
+
+
+  SpinBox_Xaxis->setSingleStep(0.1);
+  SpinBox_Xcentre->setSingleStep(_Xincr);
+  SpinBox_Yaxis->setSingleStep(0.1);
+  SpinBox_Ycentre->setSingleStep(_Yincr);
+  SpinBox_Zaxis->setSingleStep(0.1);
+  SpinBox_Zcentre->setSingleStep(_Zincr);
+// Rayon
+  SpinBox_Radius->setValue(_BoundaryAnRayon);
+  SpinBox_Radius->setSingleStep(_BoundaryAnRayon/10.);
+//
+  adjustSize();
+}
+// ------------------------------------------------------------------------
+void SMESH_EditBoundaryAn::SetSphere()
+// ------------------------------------------------------------------------
+{
+  gBCylindre->setVisible(0);
+  gBSphere->setVisible(1);
+  RBSphere->setChecked(1);
+  gBCone->setVisible(0);
+  gBTore->setVisible(0);
+  RBCylindre->setDisabled(true);
+  RBCone->setDisabled(true);
+  RBTore->setDisabled(true);
+  _Type=2 ;
+
+  SpinBox_Xcentre->setValue(_BoundaryAnXcentre);
+  if ( _Xincr > 0) { SpinBox_Xcentre->setSingleStep(_Xincr); }
+  else             { SpinBox_Xcentre->setSingleStep(1) ; }
+
+  SpinBox_Ycentre->setValue(_BoundaryAnYcentre);
+  if ( _Yincr > 0) { SpinBox_Ycentre->setSingleStep(_Yincr); }
+  else             { SpinBox_Ycentre->setSingleStep(1) ; }
+
+  SpinBox_Zcentre->setValue(_BoundaryAnZcentre);
+  if ( _Zincr > 0) { SpinBox_Zcentre->setSingleStep(_Zincr); }
+  else             { SpinBox_Zcentre->setSingleStep(1);}
+
+  SpinBox_Rayon->setValue(_BoundaryAnRayon);
+//
+  adjustSize();
+}
+// ------------------------------------------------------------------------
+void SMESH_EditBoundaryAn::SetConeA()
+// ------------------------------------------------------------------------
+{
+  gBCylindre->setVisible(0);
+  gBSphere->setVisible(0);
+  gBCone->setVisible(1);
+  RBCone->setChecked(1);
+  gBTore->setVisible(0);
+  RB_Def_angle->setChecked(1);
+  RBCylindre->setDisabled(true);
+  RBSphere->setDisabled(true);
+  RBTore->setDisabled(true);
+  _Type=3;
+//
+  TLCone_X1->setText(QApplication::translate("CreateBoundaryAn", "X axis", 0));
+  SpinBox_Cone_X1->setValue(_BoundaryAnXaxisCone);
+  TLCone_Y1->setText(QApplication::translate("CreateBoundaryAn", "Y axis", 0));
+  SpinBox_Cone_Y1->setValue(_BoundaryAnYaxisCone);
+  TLCone_Z1->setText(QApplication::translate("CreateBoundaryAn", "Z axis", 0));
+  SpinBox_Cone_Z1->setValue(_BoundaryAnZaxisCone);
+//
+  TLCone_X2->setText(QApplication::translate("CreateBoundaryAn", "X centre", 0));
+  SpinBox_Cone_X2->setValue(_BoundaryAnXorigCone);
+  TLCone_Y2->setText(QApplication::translate("CreateBoundaryAn", "Y centre", 0));
+  SpinBox_Cone_Y2->setValue(_BoundaryAnYorigCone);
+  TLCone_Z2->setText(QApplication::translate("CreateBoundaryAn", "Z centre", 0));
+  SpinBox_Cone_Z2->setValue(_BoundaryAnZorigCone);
+//
+  TLCone_V1->setText(QApplication::translate("CreateBoundaryAn", "Angle", 0));
+  SpinBox_Cone_V1->setValue(_BoundaryAngle);
+  SpinBox_Cone_V1->setSingleStep(1.);
+  SpinBox_Cone_V1->setMaximum(90.);
+//
+  TLCone_V2->setVisible(0);
+  SpinBox_Cone_V2->setVisible(0);
+//
+  adjustSize();
+}
+// ------------------------------------------------------------------------
+void SMESH_EditBoundaryAn::SetConeR()
+// ------------------------------------------------------------------------
+{
+  gBCylindre->setVisible(0);
+  gBSphere->setVisible(0);
+  gBCone->setVisible(1);
+  gBTore->setVisible(0);
+  RBCone->setChecked(1);
+  RB_Def_radius->setChecked(1);
+  RBCylindre->setDisabled(true);
+  RBSphere->setDisabled(true);
+  RBTore->setDisabled(true);
+  _Type=4;
+//
+  TLCone_X1->setText(QApplication::translate("CreateBoundaryAn", "X centre 1", 0));
+  SpinBox_Cone_X1->setValue(_BoundaryAnXcone1);
+  TLCone_Y1->setText(QApplication::translate("CreateBoundaryAn", "Y centre 1", 0));
+  SpinBox_Cone_Y1->setValue(_BoundaryAnYcone1);
+  TLCone_Z1->setText(QApplication::translate("CreateBoundaryAn", "Z centre 1", 0));
+  SpinBox_Cone_Z1->setValue(_BoundaryAnZcone1);
+//
+  TLCone_V1->setText(QApplication::translate("CreateBoundaryAn", "Radius 1", 0));
+  SpinBox_Cone_V1->setSingleStep(_Rayon/10.);
+  SpinBox_Cone_V1->setMaximum(100000.*_DMax);
+  SpinBox_Cone_V1->setValue(_BoundaryAnRayon1);
+//
+  TLCone_X2->setText(QApplication::translate("CreateBoundaryAn", "X centre 2", 0));
+  SpinBox_Cone_X2->setValue(_BoundaryAnXcone2);
+  TLCone_Y2->setText(QApplication::translate("CreateBoundaryAn", "Y centre 2", 0));
+  SpinBox_Cone_Y2->setValue(_BoundaryAnYcone2);
+  TLCone_Z2->setText(QApplication::translate("CreateBoundaryAn", "Z centre 2", 0));
+  SpinBox_Cone_Z2->setValue(_BoundaryAnZcone2);
+//
+  TLCone_V2->setVisible(1);
+  SpinBox_Cone_V2->setVisible(1);
+  TLCone_V2->setText(QApplication::translate("CreateBoundaryAn", "Radius 2", 0));
+  SpinBox_Cone_V2->setValue(_BoundaryAnRayon2);
+//
+  adjustSize();
+}
+// ------------------------------------------------------------------------
+void SMESH_EditBoundaryAn::SetTore()
+// ------------------------------------------------------------------------
+{
+  gBCylindre->setVisible(0);
+  gBSphere->setVisible(0);
+  gBCone->setVisible(0);
+  gBTore->setVisible(1);
+  RBTore->setChecked(1);
+  _Type=5;
+  RBCylindre->setDisabled(true);
+  RBSphere->setDisabled(true);
+  RBCone->setDisabled(true);
+
+  SpinBoxToreXcent->setValue(_BoundaryAnXcentre);
+  SpinBoxToreYcent->setValue(_BoundaryAnYcentre);
+  SpinBoxToreZcent->setValue(_BoundaryAnZcentre);
+
+  SpinBoxToreXaxe->setValue(_BoundaryAnXaxis);
+  SpinBoxToreYaxe->setValue(_BoundaryAnYaxis);
+  SpinBoxToreZaxe->setValue(_BoundaryAnZaxis);
+
+
+  SpinBoxToreXaxe->setSingleStep(0.1);
+  SpinBoxToreXcent->setSingleStep(_Xincr);
+  SpinBoxToreYaxe->setSingleStep(0.1);
+  SpinBoxToreYcent->setSingleStep(_Yincr);
+  SpinBoxToreZaxe->setSingleStep(0.1);
+  SpinBoxToreZcent->setSingleStep(_Zincr);
+// Rayon de revolution
+  SpinBoxToreRRev->setValue(_BoundaryAnRayon1);
+  SpinBoxToreRRev->setSingleStep(_BoundaryAnRayon1/10.);
+// Rayon primaire
+  SpinBoxToreRPri->setValue(_BoundaryAnRayon2);
+  SpinBoxToreRPri->setSingleStep(_BoundaryAnRayon2/10.);
+//
+  adjustSize();
+}
+// ---------------------------------------------------
+bool SMESH_EditBoundaryAn::CreateOrUpdateBoundaryAn()
+//----------------------------------------------------
+//  Mise a jour des attributs de la BoundaryAn
+{
+  switch (_Type)
+  {
+    case 1 : // il s agit d un cylindre
+    {
+      aBoundaryAn->SetCylinder(_BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnXaxis, _BoundaryAnYaxis, _BoundaryAnZaxis, _BoundaryAnRayon );
+      break;
+    }
+    case 2 : // il s agit d une sphere
+    {
+      aBoundaryAn->SetSphere(_BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnRayon);
+      break;
+    }
+    case 3 : // il s agit d un cone defini par un axe et un angle
+    {
+      aBoundaryAn = myHomardGen->CreateBoundaryConeA(CORBA::string_dup(_Name.toStdString().c_str()), \
+      _BoundaryAnXaxisCone, _BoundaryAnYaxisCone, _BoundaryAnZaxisCone, _BoundaryAngle, \
+      _BoundaryAnXorigCone, _BoundaryAnYorigCone, _BoundaryAnYorigCone);
+      break;
+    }
+    case 4 : // il s agit d un cone defini par les 2 rayons
+    {
+      aBoundaryAn = myHomardGen->CreateBoundaryConeR(CORBA::string_dup(_Name.toStdString().c_str()), \
+        _BoundaryAnXcone1, _BoundaryAnYcone1, _BoundaryAnZcone1, _BoundaryAnRayon1, \
+        _BoundaryAnXcone2, _BoundaryAnYcone2, _BoundaryAnZcone2, _BoundaryAnRayon2);
+      break;
+    }
+    case 5 : // il s agit d un tore
+    {
+      aBoundaryAn->SetTorus(_BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnXaxis, _BoundaryAnYaxis, _BoundaryAnZaxis, _BoundaryAnRayon1, _BoundaryAnRayon2 );
+      break;
+    }
+  }
+  if (Chgt) myHomardGen->InvalideBoundary(_Name.toStdString().c_str());
+  //HOMARD_UTILS::updateObjBrowser();
+  return true;
+}
+
+// --------------------------------------------------------------------------------------
+/* Constructs a SMESH_EditBoundaryCAO
+    herite de SMESH_CreateBoundaryCAO
+*/
+// --------------------------------------------------------------------------------------
+SMESH_EditBoundaryCAO::SMESH_EditBoundaryCAO( SMESHGUI_HomardAdaptDlg* parent, bool modal,
+                                              SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                                              QString caseName, QString Name):
+    SMESH_CreateBoundaryCAO(parent, modal, myHomardGen0, caseName, Name)
+{
+    MESSAGE("Debut de Boundary pour " << Name.toStdString().c_str());
+    setWindowTitle(QObject::tr("HOM_BOUN_C_EDIT_WINDOW_TITLE"));
+    try {
+      aBoundary = myHomardGen->GetBoundary(CORBA::string_dup(_aName.toStdString().c_str()));
+      InitValEdit();
+    }
+    catch( SALOME::SALOME_Exception& S_ex ) {
+      QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                                QObject::tr(CORBA::string_dup(S_ex.details.text)) );
+      return;
+    }
+
+    SMESHHOMARD::ListGroupType_var maListe = aBoundary->GetGroups();
+    for ( int i = 0; i < maListe->length(); i++ )
+       _listeGroupesBoundary << QString(maListe[i]);
+
+}
+// ------------------------------
+SMESH_EditBoundaryCAO::~SMESH_EditBoundaryCAO()
+// ------------------------------
+{
+}
+// ------------------------------
+void SMESH_EditBoundaryCAO::InitValEdit()
+// ------------------------------
+{
+      LEName->setText(_aName);
+      LEName->setReadOnly(true);
+
+      QString aDataFile = aBoundary->GetDataFile();
+      LEFileName->setText(aDataFile);
+      LEFileName->setReadOnly(1);
+      PushFichier->setVisible(0);
+//
+      adjustSize();
+}
+// ------------------------------
+bool SMESH_EditBoundaryCAO::PushOnApply()
+// ------------------------------
+{
+     return true;
+}
+// ------------------------------------------------------------------------
+void SMESH_EditBoundaryCAO::SetFiltrage()
+// ------------------------------------------------------------------------
+{
+  if (!CBGroupe->isChecked()) return;
+  //SMESHHOMARD::HOMARD_Cas_var monCas = myHomardGen->GetCase();
+  //SMESHHOMARD::ListGroupType_var _listeGroupesCas = monCas->GetGroups();
+
+  SMESH_EditListGroupCAO *aDlg = new SMESH_EditListGroupCAO
+    (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
+     "Case_1", _listeGroupesBoundary) ;
+  aDlg->show();
+}
+
+// ------------------------------------------------------------------------------------
+/* Constructs a SMESH_EditBoundaryDi
+    herite de SMESH_CreateBoundaryDi
+*/
+// ------------------------------------------------------------------------------------
+SMESH_EditBoundaryDi::SMESH_EditBoundaryDi( SMESHGUI_HomardAdaptDlg* parent, bool modal,
+                                            SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                                            QString caseName, QString Name):
+  SMESH_CreateBoundaryDi(parent, modal, myHomardGen0, caseName, Name)
+{
+    MESSAGE("Debut de Boundary pour " << Name.toStdString().c_str());
+    setWindowTitle(QObject::tr("HOM_BOUN_D_EDIT_WINDOW_TITLE"));
+    try {
+      aBoundary = myHomardGen->GetBoundary(CORBA::string_dup(_aName.toStdString().c_str()));
+      InitValEdit();
+    }
+    catch( SALOME::SALOME_Exception& S_ex ) {
+      QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                                QObject::tr(CORBA::string_dup(S_ex.details.text)) );
+      return;
+    }
+
+    SMESHHOMARD::ListGroupType_var maListe = aBoundary->GetGroups();
+    for ( int i = 0; i < maListe->length(); i++ )
+       _listeGroupesBoundary << QString(maListe[i]);
+
+}
+// ------------------------------
+SMESH_EditBoundaryDi::~SMESH_EditBoundaryDi()
+// ------------------------------
+{
+}
+// ------------------------------
+void SMESH_EditBoundaryDi::InitValEdit()
+// ------------------------------
+{
+      LEName->setText(_aName);
+      LEName->setReadOnly(true);
+
+      QString aDataFile = aBoundary->GetDataFile();
+      LEFileName->setText(aDataFile);
+      LEFileName->setReadOnly(1);
+      PushFichier->setVisible(0);
+//
+      adjustSize();
+}
+// ------------------------------
+bool SMESH_EditBoundaryDi::PushOnApply()
+// ------------------------------
+{
+     return true;
+}
+// ------------------------------------------------------------------------
+void SMESH_EditBoundaryDi::SetFiltrage()
+// // ------------------------------------------------------------------------
+{
+  if (!CBGroupe->isChecked()) return;
+  SMESHHOMARD::HOMARD_Cas_var monCas = myHomardGen->GetCase();
+  SMESHHOMARD::ListGroupType_var _listeGroupesCas = monCas->GetGroups();
+
+  SMESH_EditListGroup *aDlg = new SMESH_EditListGroup
+    (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
+     "Case_1", _listeGroupesBoundary);
+  aDlg->show();
+}
diff --git a/src/SMESHGUI/SMESHGUI_HomardBoundaryDlg.h b/src/SMESHGUI/SMESHGUI_HomardBoundaryDlg.h
new file mode 100644 (file)
index 0000000..cf713b1
--- /dev/null
@@ -0,0 +1,1244 @@
+// Copyright (C) 2011-2024  CEA, EDF
+//
+// 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
+//
+
+#ifndef MON_CREATEBOUNDARY_H
+#define MON_CREATEBOUNDARY_H
+
+#include "SMESH_SMESHGUI.hxx"
+
+#include <SALOMEconfig.h>
+#include <SalomeApp_Module.h>
+
+#include CORBA_CLIENT_HEADER(SMESH_Homard)
+
+#include <QDialog>
+
+#include <QtCore/QVariant>
+#include <QtGui/QIcon>
+#include <QtWidgets/QApplication>
+#include <QtWidgets/QCheckBox>
+#include <QtWidgets/QDialog>
+#include <QtWidgets/QDoubleSpinBox>
+#include <QtWidgets/QGridLayout>
+#include <QtWidgets/QGroupBox>
+#include <QtWidgets/QLabel>
+#include <QtWidgets/QLineEdit>
+#include <QtWidgets/QPushButton>
+#include <QtWidgets/QRadioButton>
+
+class SMESHGUI_HomardAdaptDlg;
+
+class SMESH_Ui_CreateBoundaryAn
+{
+public:
+    QGridLayout *gridLayout_5;
+    QLabel *Name;
+    QLineEdit *LEName;
+    QGroupBox *TypeBoundary;
+    QGridLayout *gridLayout;
+    QRadioButton *RBCylindre;
+    QRadioButton *RBSphere;
+    QRadioButton *RBCone;
+    QRadioButton *RBTore;
+    QGroupBox *gBCylindre;
+    QGridLayout *gridLayout1;
+    QDoubleSpinBox *SpinBox_Xcent;
+    QLabel *TLXcent;
+    QDoubleSpinBox *SpinBox_Radius;
+    QDoubleSpinBox *SpinBox_Zcent;
+    QLabel *TLradius;
+    QLabel *TLZcent;
+    QLabel *TLYcent;
+    QDoubleSpinBox *SpinBox_Ycent;
+    QLabel *TLXaxis;
+    QLabel *TLYaxis;
+    QLabel *TLZaxis;
+    QDoubleSpinBox *SpinBox_Zaxis;
+    QDoubleSpinBox *SpinBox_Yaxis;
+    QDoubleSpinBox *SpinBox_Xaxis;
+    QGroupBox *gBSphere;
+    QGridLayout *gridLayout2;
+    QDoubleSpinBox *SpinBox_Rayon;
+    QDoubleSpinBox *SpinBox_Zcentre;
+    QLabel *TLRayon;
+    QLabel *TLZcentre;
+    QLabel *TLYcentre;
+    QDoubleSpinBox *SpinBox_Ycentre;
+    QDoubleSpinBox *SpinBox_Xcentre;
+    QLabel *TLXcentre;
+    QGroupBox *gBCone;
+    QGridLayout *gridLayout_3;
+    QGroupBox *groupBox;
+    QGridLayout *gridLayout_2;
+    QRadioButton *RB_Def_radius;
+    QRadioButton *RB_Def_angle;
+    QLabel *TLCone_X1;
+    QDoubleSpinBox *SpinBox_Cone_X1;
+    QLabel *TLCone_X2;
+    QDoubleSpinBox *SpinBox_Cone_X2;
+    QLabel *TLCone_Y1;
+    QDoubleSpinBox *SpinBox_Cone_Y1;
+    QLabel *TLCone_Y2;
+    QDoubleSpinBox *SpinBox_Cone_Y2;
+    QLabel *TLCone_Z1;
+    QDoubleSpinBox *SpinBox_Cone_Z1;
+    QLabel *TLCone_Z2;
+    QDoubleSpinBox *SpinBox_Cone_Z2;
+    QLabel *TLCone_V1;
+    QDoubleSpinBox *SpinBox_Cone_V1;
+    QLabel *TLCone_V2;
+    QDoubleSpinBox *SpinBox_Cone_V2;
+    QGroupBox *gBTore;
+    QGridLayout *gridLayout_4;
+    QLabel *TLToreXcent;
+    QDoubleSpinBox *SpinBoxToreXcent;
+    QLabel *TLToreXaxe;
+    QDoubleSpinBox *SpinBoxToreXaxe;
+    QLabel *TLToreYcent;
+    QDoubleSpinBox *SpinBoxToreYcent;
+    QLabel *TLToreYaxe;
+    QDoubleSpinBox *SpinBoxToreYaxe;
+    QLabel *TLToreZcent;
+    QDoubleSpinBox *SpinBoxToreZcent;
+    QLabel *TLToreZaxe;
+    QDoubleSpinBox *SpinBoxToreZaxe;
+    QLabel *TLToreRayRev;
+    QDoubleSpinBox *SpinBoxToreRRev;
+    QLabel *TLToreRayPri;
+    QDoubleSpinBox *SpinBoxToreRPri;
+    QGroupBox *GBButtons;
+    QGridLayout *gridLayout3;
+    QPushButton *buttonHelp;
+    QPushButton *buttonCancel;
+    QPushButton *buttonApply;
+    QPushButton *buttonOk;
+
+    void setupUi(QDialog *CreateBoundaryAn)
+    {
+        if (CreateBoundaryAn->objectName().isEmpty())
+            CreateBoundaryAn->setObjectName(QString::fromUtf8("CreateBoundaryAn"));
+        CreateBoundaryAn->resize(522, 835);
+        CreateBoundaryAn->setAutoFillBackground(true);
+        CreateBoundaryAn->setSizeGripEnabled(true);
+        gridLayout_5 = new QGridLayout(CreateBoundaryAn);
+        gridLayout_5->setObjectName(QString::fromUtf8("gridLayout_5"));
+        Name = new QLabel(CreateBoundaryAn);
+        Name->setObjectName(QString::fromUtf8("Name"));
+
+        gridLayout_5->addWidget(Name, 0, 0, 1, 1);
+
+        LEName = new QLineEdit(CreateBoundaryAn);
+        LEName->setObjectName(QString::fromUtf8("LEName"));
+        LEName->setMaxLength(32);
+
+        gridLayout_5->addWidget(LEName, 0, 1, 1, 1);
+
+        TypeBoundary = new QGroupBox(CreateBoundaryAn);
+        TypeBoundary->setObjectName(QString::fromUtf8("TypeBoundary"));
+        QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+        sizePolicy.setHorizontalStretch(0);
+        sizePolicy.setVerticalStretch(0);
+        sizePolicy.setHeightForWidth(TypeBoundary->sizePolicy().hasHeightForWidth());
+        TypeBoundary->setSizePolicy(sizePolicy);
+        TypeBoundary->setMinimumSize(QSize(340, 0));
+        gridLayout = new QGridLayout(TypeBoundary);
+        gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
+        RBCylindre = new QRadioButton(TypeBoundary);
+        RBCylindre->setObjectName(QString::fromUtf8("RBCylindre"));
+        QIcon icon;
+        icon.addFile(QString::fromUtf8("../../resources/cylinderpointvector.png"), QSize(), QIcon::Normal, QIcon::Off);
+        RBCylindre->setIcon(icon);
+        RBCylindre->setCheckable(true);
+        RBCylindre->setChecked(true);
+
+        gridLayout->addWidget(RBCylindre, 0, 0, 1, 1);
+
+        RBSphere = new QRadioButton(TypeBoundary);
+        RBSphere->setObjectName(QString::fromUtf8("RBSphere"));
+        QIcon icon1;
+        icon1.addFile(QString::fromUtf8("../../resources/zone_spherepoint.png"), QSize(), QIcon::Normal, QIcon::Off);
+        RBSphere->setIcon(icon1);
+
+        gridLayout->addWidget(RBSphere, 0, 1, 1, 1);
+
+        RBCone = new QRadioButton(TypeBoundary);
+        RBCone->setObjectName(QString::fromUtf8("RBCone"));
+        QIcon icon2;
+        icon2.addFile(QString::fromUtf8("../../resources/cone.png"), QSize(), QIcon::Normal, QIcon::Off);
+        RBCone->setIcon(icon2);
+
+        gridLayout->addWidget(RBCone, 0, 2, 1, 1);
+
+        RBTore = new QRadioButton(TypeBoundary);
+        RBTore->setObjectName(QString::fromUtf8("RBTore"));
+        QIcon icon3;
+        icon3.addFile(QString::fromUtf8("../../resources/toruspointvector.png"), QSize(), QIcon::Normal, QIcon::Off);
+        RBTore->setIcon(icon3);
+        RBTore->setCheckable(true);
+        RBTore->setChecked(false);
+
+        gridLayout->addWidget(RBTore, 0, 3, 1, 1);
+
+
+        gridLayout_5->addWidget(TypeBoundary, 1, 0, 1, 2);
+
+        gBCylindre = new QGroupBox(CreateBoundaryAn);
+        gBCylindre->setObjectName(QString::fromUtf8("gBCylindre"));
+        sizePolicy.setHeightForWidth(gBCylindre->sizePolicy().hasHeightForWidth());
+        gBCylindre->setSizePolicy(sizePolicy);
+        gridLayout1 = new QGridLayout(gBCylindre);
+#ifndef Q_OS_MAC
+        gridLayout1->setSpacing(6);
+#endif
+#ifndef Q_OS_MAC
+        gridLayout1->setContentsMargins(9, 9, 9, 9);
+#endif
+        gridLayout1->setObjectName(QString::fromUtf8("gridLayout1"));
+        SpinBox_Xcent = new QDoubleSpinBox(gBCylindre);
+        SpinBox_Xcent->setObjectName(QString::fromUtf8("SpinBox_Xcent"));
+        SpinBox_Xcent->setDecimals(5);
+        SpinBox_Xcent->setMinimum(-999999999.000000000000000);
+        SpinBox_Xcent->setMaximum(999999999.000000000000000);
+        SpinBox_Xcent->setValue(0.000000000000000);
+
+        gridLayout1->addWidget(SpinBox_Xcent, 0, 1, 1, 1);
+
+        TLXcent = new QLabel(gBCylindre);
+        TLXcent->setObjectName(QString::fromUtf8("TLXcent"));
+        sizePolicy.setHeightForWidth(TLXcent->sizePolicy().hasHeightForWidth());
+        TLXcent->setSizePolicy(sizePolicy);
+        TLXcent->setWordWrap(false);
+
+        gridLayout1->addWidget(TLXcent, 0, 0, 1, 1);
+
+        SpinBox_Radius = new QDoubleSpinBox(gBCylindre);
+        SpinBox_Radius->setObjectName(QString::fromUtf8("SpinBox_Radius"));
+        SpinBox_Radius->setDecimals(5);
+        SpinBox_Radius->setMaximum(1000000000.000000000000000);
+
+        gridLayout1->addWidget(SpinBox_Radius, 3, 1, 1, 2);
+
+        SpinBox_Zcent = new QDoubleSpinBox(gBCylindre);
+        SpinBox_Zcent->setObjectName(QString::fromUtf8("SpinBox_Zcent"));
+        SpinBox_Zcent->setDecimals(5);
+        SpinBox_Zcent->setMinimum(-999999999.000000000000000);
+        SpinBox_Zcent->setMaximum(999999999.000000000000000);
+        SpinBox_Zcent->setValue(0.000000000000000);
+
+        gridLayout1->addWidget(SpinBox_Zcent, 2, 1, 1, 1);
+
+        TLradius = new QLabel(gBCylindre);
+        TLradius->setObjectName(QString::fromUtf8("TLradius"));
+        sizePolicy.setHeightForWidth(TLradius->sizePolicy().hasHeightForWidth());
+        TLradius->setSizePolicy(sizePolicy);
+        TLradius->setWordWrap(false);
+
+        gridLayout1->addWidget(TLradius, 3, 0, 1, 1);
+
+        TLZcent = new QLabel(gBCylindre);
+        TLZcent->setObjectName(QString::fromUtf8("TLZcent"));
+        sizePolicy.setHeightForWidth(TLZcent->sizePolicy().hasHeightForWidth());
+        TLZcent->setSizePolicy(sizePolicy);
+        TLZcent->setWordWrap(false);
+
+        gridLayout1->addWidget(TLZcent, 2, 0, 1, 1);
+
+        TLYcent = new QLabel(gBCylindre);
+        TLYcent->setObjectName(QString::fromUtf8("TLYcent"));
+        sizePolicy.setHeightForWidth(TLYcent->sizePolicy().hasHeightForWidth());
+        TLYcent->setSizePolicy(sizePolicy);
+        TLYcent->setWordWrap(false);
+
+        gridLayout1->addWidget(TLYcent, 1, 0, 1, 1);
+
+        SpinBox_Ycent = new QDoubleSpinBox(gBCylindre);
+        SpinBox_Ycent->setObjectName(QString::fromUtf8("SpinBox_Ycent"));
+        SpinBox_Ycent->setDecimals(5);
+        SpinBox_Ycent->setMinimum(-999999999.000000000000000);
+        SpinBox_Ycent->setMaximum(999999999.000000000000000);
+        SpinBox_Ycent->setValue(0.000000000000000);
+
+        gridLayout1->addWidget(SpinBox_Ycent, 1, 1, 1, 1);
+
+        TLXaxis = new QLabel(gBCylindre);
+        TLXaxis->setObjectName(QString::fromUtf8("TLXaxis"));
+        sizePolicy.setHeightForWidth(TLXaxis->sizePolicy().hasHeightForWidth());
+        TLXaxis->setSizePolicy(sizePolicy);
+        TLXaxis->setWordWrap(false);
+
+        gridLayout1->addWidget(TLXaxis, 0, 2, 1, 1);
+
+        TLYaxis = new QLabel(gBCylindre);
+        TLYaxis->setObjectName(QString::fromUtf8("TLYaxis"));
+        sizePolicy.setHeightForWidth(TLYaxis->sizePolicy().hasHeightForWidth());
+        TLYaxis->setSizePolicy(sizePolicy);
+        TLYaxis->setWordWrap(false);
+
+        gridLayout1->addWidget(TLYaxis, 1, 2, 1, 1);
+
+        TLZaxis = new QLabel(gBCylindre);
+        TLZaxis->setObjectName(QString::fromUtf8("TLZaxis"));
+        sizePolicy.setHeightForWidth(TLZaxis->sizePolicy().hasHeightForWidth());
+        TLZaxis->setSizePolicy(sizePolicy);
+        TLZaxis->setWordWrap(false);
+
+        gridLayout1->addWidget(TLZaxis, 2, 2, 1, 1);
+
+        SpinBox_Zaxis = new QDoubleSpinBox(gBCylindre);
+        SpinBox_Zaxis->setObjectName(QString::fromUtf8("SpinBox_Zaxis"));
+        SpinBox_Zaxis->setDecimals(5);
+        SpinBox_Zaxis->setMinimum(-999999999.000000000000000);
+        SpinBox_Zaxis->setMaximum(999999999.000000000000000);
+        SpinBox_Zaxis->setValue(0.000000000000000);
+
+        gridLayout1->addWidget(SpinBox_Zaxis, 2, 3, 1, 1);
+
+        SpinBox_Yaxis = new QDoubleSpinBox(gBCylindre);
+        SpinBox_Yaxis->setObjectName(QString::fromUtf8("SpinBox_Yaxis"));
+        SpinBox_Yaxis->setDecimals(5);
+        SpinBox_Yaxis->setMinimum(-999999999.000000000000000);
+        SpinBox_Yaxis->setMaximum(999999999.000000000000000);
+        SpinBox_Yaxis->setValue(0.000000000000000);
+
+        gridLayout1->addWidget(SpinBox_Yaxis, 1, 3, 1, 1);
+
+        SpinBox_Xaxis = new QDoubleSpinBox(gBCylindre);
+        SpinBox_Xaxis->setObjectName(QString::fromUtf8("SpinBox_Xaxis"));
+        SpinBox_Xaxis->setDecimals(5);
+        SpinBox_Xaxis->setMinimum(-999999999.000000000000000);
+        SpinBox_Xaxis->setMaximum(999999999.000000000000000);
+        SpinBox_Xaxis->setValue(0.000000000000000);
+
+        gridLayout1->addWidget(SpinBox_Xaxis, 0, 3, 1, 1);
+
+
+        gridLayout_5->addWidget(gBCylindre, 2, 0, 1, 2);
+
+        gBSphere = new QGroupBox(CreateBoundaryAn);
+        gBSphere->setObjectName(QString::fromUtf8("gBSphere"));
+        sizePolicy.setHeightForWidth(gBSphere->sizePolicy().hasHeightForWidth());
+        gBSphere->setSizePolicy(sizePolicy);
+        gridLayout2 = new QGridLayout(gBSphere);
+#ifndef Q_OS_MAC
+        gridLayout2->setSpacing(6);
+#endif
+#ifndef Q_OS_MAC
+        gridLayout2->setContentsMargins(9, 9, 9, 9);
+#endif
+        gridLayout2->setObjectName(QString::fromUtf8("gridLayout2"));
+        SpinBox_Rayon = new QDoubleSpinBox(gBSphere);
+        SpinBox_Rayon->setObjectName(QString::fromUtf8("SpinBox_Rayon"));
+        SpinBox_Rayon->setDecimals(5);
+        SpinBox_Rayon->setMinimum(0.000000000000000);
+        SpinBox_Rayon->setMaximum(999999999.000000000000000);
+        SpinBox_Rayon->setValue(0.000000000000000);
+
+        gridLayout2->addWidget(SpinBox_Rayon, 1, 3, 1, 1);
+
+        SpinBox_Zcentre = new QDoubleSpinBox(gBSphere);
+        SpinBox_Zcentre->setObjectName(QString::fromUtf8("SpinBox_Zcentre"));
+        SpinBox_Zcentre->setDecimals(5);
+        SpinBox_Zcentre->setMinimum(-999999999.000000000000000);
+        SpinBox_Zcentre->setMaximum(999999999.000000000000000);
+        SpinBox_Zcentre->setValue(0.000000000000000);
+
+        gridLayout2->addWidget(SpinBox_Zcentre, 2, 1, 1, 1);
+
+        TLRayon = new QLabel(gBSphere);
+        TLRayon->setObjectName(QString::fromUtf8("TLRayon"));
+        sizePolicy.setHeightForWidth(TLRayon->sizePolicy().hasHeightForWidth());
+        TLRayon->setSizePolicy(sizePolicy);
+        TLRayon->setWordWrap(false);
+
+        gridLayout2->addWidget(TLRayon, 1, 2, 1, 1);
+
+        TLZcentre = new QLabel(gBSphere);
+        TLZcentre->setObjectName(QString::fromUtf8("TLZcentre"));
+        sizePolicy.setHeightForWidth(TLZcentre->sizePolicy().hasHeightForWidth());
+        TLZcentre->setSizePolicy(sizePolicy);
+        TLZcentre->setWordWrap(false);
+
+        gridLayout2->addWidget(TLZcentre, 2, 0, 1, 1);
+
+        TLYcentre = new QLabel(gBSphere);
+        TLYcentre->setObjectName(QString::fromUtf8("TLYcentre"));
+        sizePolicy.setHeightForWidth(TLYcentre->sizePolicy().hasHeightForWidth());
+        TLYcentre->setSizePolicy(sizePolicy);
+        TLYcentre->setWordWrap(false);
+
+        gridLayout2->addWidget(TLYcentre, 1, 0, 1, 1);
+
+        SpinBox_Ycentre = new QDoubleSpinBox(gBSphere);
+        SpinBox_Ycentre->setObjectName(QString::fromUtf8("SpinBox_Ycentre"));
+        SpinBox_Ycentre->setDecimals(5);
+        SpinBox_Ycentre->setMinimum(-999999999.000000000000000);
+        SpinBox_Ycentre->setMaximum(999999999.000000000000000);
+        SpinBox_Ycentre->setValue(0.000000000000000);
+
+        gridLayout2->addWidget(SpinBox_Ycentre, 1, 1, 1, 1);
+
+        SpinBox_Xcentre = new QDoubleSpinBox(gBSphere);
+        SpinBox_Xcentre->setObjectName(QString::fromUtf8("SpinBox_Xcentre"));
+        SpinBox_Xcentre->setDecimals(5);
+        SpinBox_Xcentre->setMinimum(-999999999.000000000000000);
+        SpinBox_Xcentre->setMaximum(999999999.000000000000000);
+        SpinBox_Xcentre->setValue(0.000000000000000);
+
+        gridLayout2->addWidget(SpinBox_Xcentre, 0, 1, 1, 1);
+
+        TLXcentre = new QLabel(gBSphere);
+        TLXcentre->setObjectName(QString::fromUtf8("TLXcentre"));
+        sizePolicy.setHeightForWidth(TLXcentre->sizePolicy().hasHeightForWidth());
+        TLXcentre->setSizePolicy(sizePolicy);
+        TLXcentre->setWordWrap(false);
+
+        gridLayout2->addWidget(TLXcentre, 0, 0, 1, 1);
+
+
+        gridLayout_5->addWidget(gBSphere, 3, 0, 1, 2);
+
+        gBCone = new QGroupBox(CreateBoundaryAn);
+        gBCone->setObjectName(QString::fromUtf8("gBCone"));
+        sizePolicy.setHeightForWidth(gBCone->sizePolicy().hasHeightForWidth());
+        gBCone->setSizePolicy(sizePolicy);
+        gridLayout_3 = new QGridLayout(gBCone);
+        gridLayout_3->setObjectName(QString::fromUtf8("gridLayout_3"));
+        groupBox = new QGroupBox(gBCone);
+        groupBox->setObjectName(QString::fromUtf8("groupBox"));
+        gridLayout_2 = new QGridLayout(groupBox);
+        gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2"));
+        RB_Def_radius = new QRadioButton(groupBox);
+        RB_Def_radius->setObjectName(QString::fromUtf8("RB_Def_radius"));
+        QIcon icon4;
+        icon4.addFile(QString::fromUtf8("../../resources/conedxyz.png"), QSize(), QIcon::Normal, QIcon::Off);
+        RB_Def_radius->setIcon(icon4);
+        RB_Def_radius->setChecked(true);
+
+        gridLayout_2->addWidget(RB_Def_radius, 0, 0, 1, 1);
+
+        RB_Def_angle = new QRadioButton(groupBox);
+        RB_Def_angle->setObjectName(QString::fromUtf8("RB_Def_angle"));
+        QIcon icon5;
+        icon5.addFile(QString::fromUtf8("../../resources/conepointvector.png"), QSize(), QIcon::Normal, QIcon::Off);
+        RB_Def_angle->setIcon(icon5);
+
+        gridLayout_2->addWidget(RB_Def_angle, 0, 1, 1, 1);
+
+
+        gridLayout_3->addWidget(groupBox, 0, 0, 1, 2);
+
+        TLCone_X1 = new QLabel(gBCone);
+        TLCone_X1->setObjectName(QString::fromUtf8("TLCone_X1"));
+        sizePolicy.setHeightForWidth(TLCone_X1->sizePolicy().hasHeightForWidth());
+        TLCone_X1->setSizePolicy(sizePolicy);
+        TLCone_X1->setWordWrap(false);
+
+        gridLayout_3->addWidget(TLCone_X1, 1, 0, 1, 1);
+
+        SpinBox_Cone_X1 = new QDoubleSpinBox(gBCone);
+        SpinBox_Cone_X1->setObjectName(QString::fromUtf8("SpinBox_Cone_X1"));
+        SpinBox_Cone_X1->setDecimals(5);
+        SpinBox_Cone_X1->setMinimum(-999999999.000000000000000);
+        SpinBox_Cone_X1->setMaximum(999999999.000000000000000);
+        SpinBox_Cone_X1->setValue(0.000000000000000);
+
+        gridLayout_3->addWidget(SpinBox_Cone_X1, 1, 1, 1, 1);
+
+        TLCone_X2 = new QLabel(gBCone);
+        TLCone_X2->setObjectName(QString::fromUtf8("TLCone_X2"));
+        sizePolicy.setHeightForWidth(TLCone_X2->sizePolicy().hasHeightForWidth());
+        TLCone_X2->setSizePolicy(sizePolicy);
+        TLCone_X2->setWordWrap(false);
+
+        gridLayout_3->addWidget(TLCone_X2, 1, 2, 1, 1);
+
+        SpinBox_Cone_X2 = new QDoubleSpinBox(gBCone);
+        SpinBox_Cone_X2->setObjectName(QString::fromUtf8("SpinBox_Cone_X2"));
+        SpinBox_Cone_X2->setDecimals(5);
+        SpinBox_Cone_X2->setMinimum(-999999999.000000000000000);
+        SpinBox_Cone_X2->setMaximum(999999999.000000000000000);
+        SpinBox_Cone_X2->setValue(0.000000000000000);
+
+        gridLayout_3->addWidget(SpinBox_Cone_X2, 1, 3, 1, 1);
+
+        TLCone_Y1 = new QLabel(gBCone);
+        TLCone_Y1->setObjectName(QString::fromUtf8("TLCone_Y1"));
+        sizePolicy.setHeightForWidth(TLCone_Y1->sizePolicy().hasHeightForWidth());
+        TLCone_Y1->setSizePolicy(sizePolicy);
+        TLCone_Y1->setWordWrap(false);
+
+        gridLayout_3->addWidget(TLCone_Y1, 2, 0, 1, 1);
+
+        SpinBox_Cone_Y1 = new QDoubleSpinBox(gBCone);
+        SpinBox_Cone_Y1->setObjectName(QString::fromUtf8("SpinBox_Cone_Y1"));
+        SpinBox_Cone_Y1->setDecimals(5);
+        SpinBox_Cone_Y1->setMinimum(-999999999.000000000000000);
+        SpinBox_Cone_Y1->setMaximum(999999999.000000000000000);
+        SpinBox_Cone_Y1->setValue(0.000000000000000);
+
+        gridLayout_3->addWidget(SpinBox_Cone_Y1, 2, 1, 1, 1);
+
+        TLCone_Y2 = new QLabel(gBCone);
+        TLCone_Y2->setObjectName(QString::fromUtf8("TLCone_Y2"));
+        sizePolicy.setHeightForWidth(TLCone_Y2->sizePolicy().hasHeightForWidth());
+        TLCone_Y2->setSizePolicy(sizePolicy);
+        TLCone_Y2->setWordWrap(false);
+
+        gridLayout_3->addWidget(TLCone_Y2, 2, 2, 1, 1);
+
+        SpinBox_Cone_Y2 = new QDoubleSpinBox(gBCone);
+        SpinBox_Cone_Y2->setObjectName(QString::fromUtf8("SpinBox_Cone_Y2"));
+        SpinBox_Cone_Y2->setDecimals(5);
+        SpinBox_Cone_Y2->setMinimum(-999999999.000000000000000);
+        SpinBox_Cone_Y2->setMaximum(999999999.000000000000000);
+        SpinBox_Cone_Y2->setValue(0.000000000000000);
+
+        gridLayout_3->addWidget(SpinBox_Cone_Y2, 2, 3, 1, 1);
+
+        TLCone_Z1 = new QLabel(gBCone);
+        TLCone_Z1->setObjectName(QString::fromUtf8("TLCone_Z1"));
+        sizePolicy.setHeightForWidth(TLCone_Z1->sizePolicy().hasHeightForWidth());
+        TLCone_Z1->setSizePolicy(sizePolicy);
+        TLCone_Z1->setWordWrap(false);
+
+        gridLayout_3->addWidget(TLCone_Z1, 3, 0, 1, 1);
+
+        SpinBox_Cone_Z1 = new QDoubleSpinBox(gBCone);
+        SpinBox_Cone_Z1->setObjectName(QString::fromUtf8("SpinBox_Cone_Z1"));
+        SpinBox_Cone_Z1->setDecimals(5);
+        SpinBox_Cone_Z1->setMinimum(-999999999.000000000000000);
+        SpinBox_Cone_Z1->setMaximum(999999999.000000000000000);
+        SpinBox_Cone_Z1->setValue(0.000000000000000);
+
+        gridLayout_3->addWidget(SpinBox_Cone_Z1, 3, 1, 1, 1);
+
+        TLCone_Z2 = new QLabel(gBCone);
+        TLCone_Z2->setObjectName(QString::fromUtf8("TLCone_Z2"));
+        sizePolicy.setHeightForWidth(TLCone_Z2->sizePolicy().hasHeightForWidth());
+        TLCone_Z2->setSizePolicy(sizePolicy);
+        TLCone_Z2->setWordWrap(false);
+
+        gridLayout_3->addWidget(TLCone_Z2, 3, 2, 1, 1);
+
+        SpinBox_Cone_Z2 = new QDoubleSpinBox(gBCone);
+        SpinBox_Cone_Z2->setObjectName(QString::fromUtf8("SpinBox_Cone_Z2"));
+        SpinBox_Cone_Z2->setDecimals(5);
+        SpinBox_Cone_Z2->setMinimum(-999999999.000000000000000);
+        SpinBox_Cone_Z2->setMaximum(999999999.000000000000000);
+        SpinBox_Cone_Z2->setValue(0.000000000000000);
+
+        gridLayout_3->addWidget(SpinBox_Cone_Z2, 3, 3, 1, 1);
+
+        TLCone_V1 = new QLabel(gBCone);
+        TLCone_V1->setObjectName(QString::fromUtf8("TLCone_V1"));
+        sizePolicy.setHeightForWidth(TLCone_V1->sizePolicy().hasHeightForWidth());
+        TLCone_V1->setSizePolicy(sizePolicy);
+        TLCone_V1->setWordWrap(false);
+
+        gridLayout_3->addWidget(TLCone_V1, 4, 0, 1, 1);
+
+        SpinBox_Cone_V1 = new QDoubleSpinBox(gBCone);
+        SpinBox_Cone_V1->setObjectName(QString::fromUtf8("SpinBox_Cone_V1"));
+        SpinBox_Cone_V1->setDecimals(5);
+        SpinBox_Cone_V1->setMaximum(1000000000.000000000000000);
+
+        gridLayout_3->addWidget(SpinBox_Cone_V1, 4, 1, 1, 1);
+
+        TLCone_V2 = new QLabel(gBCone);
+        TLCone_V2->setObjectName(QString::fromUtf8("TLCone_V2"));
+        sizePolicy.setHeightForWidth(TLCone_V2->sizePolicy().hasHeightForWidth());
+        TLCone_V2->setSizePolicy(sizePolicy);
+        TLCone_V2->setWordWrap(false);
+
+        gridLayout_3->addWidget(TLCone_V2, 4, 2, 1, 1);
+
+        SpinBox_Cone_V2 = new QDoubleSpinBox(gBCone);
+        SpinBox_Cone_V2->setObjectName(QString::fromUtf8("SpinBox_Cone_V2"));
+        SpinBox_Cone_V2->setDecimals(5);
+        SpinBox_Cone_V2->setMaximum(1000000000.000000000000000);
+
+        gridLayout_3->addWidget(SpinBox_Cone_V2, 4, 3, 1, 1);
+
+
+        gridLayout_5->addWidget(gBCone, 4, 0, 1, 2);
+
+        gBTore = new QGroupBox(CreateBoundaryAn);
+        gBTore->setObjectName(QString::fromUtf8("gBTore"));
+        sizePolicy.setHeightForWidth(gBTore->sizePolicy().hasHeightForWidth());
+        gBTore->setSizePolicy(sizePolicy);
+        gridLayout_4 = new QGridLayout(gBTore);
+        gridLayout_4->setObjectName(QString::fromUtf8("gridLayout_4"));
+        TLToreXcent = new QLabel(gBTore);
+        TLToreXcent->setObjectName(QString::fromUtf8("TLToreXcent"));
+        sizePolicy.setHeightForWidth(TLToreXcent->sizePolicy().hasHeightForWidth());
+        TLToreXcent->setSizePolicy(sizePolicy);
+        TLToreXcent->setWordWrap(false);
+
+        gridLayout_4->addWidget(TLToreXcent, 0, 0, 1, 1);
+
+        SpinBoxToreXcent = new QDoubleSpinBox(gBTore);
+        SpinBoxToreXcent->setObjectName(QString::fromUtf8("SpinBoxToreXcent"));
+        SpinBoxToreXcent->setDecimals(5);
+        SpinBoxToreXcent->setMinimum(-999999999.000000000000000);
+        SpinBoxToreXcent->setMaximum(999999999.000000000000000);
+        SpinBoxToreXcent->setValue(0.000000000000000);
+
+        gridLayout_4->addWidget(SpinBoxToreXcent, 0, 1, 1, 1);
+
+        TLToreXaxe = new QLabel(gBTore);
+        TLToreXaxe->setObjectName(QString::fromUtf8("TLToreXaxe"));
+        sizePolicy.setHeightForWidth(TLToreXaxe->sizePolicy().hasHeightForWidth());
+        TLToreXaxe->setSizePolicy(sizePolicy);
+        TLToreXaxe->setWordWrap(false);
+
+        gridLayout_4->addWidget(TLToreXaxe, 0, 2, 1, 1);
+
+        SpinBoxToreXaxe = new QDoubleSpinBox(gBTore);
+        SpinBoxToreXaxe->setObjectName(QString::fromUtf8("SpinBoxToreXaxe"));
+        SpinBoxToreXaxe->setDecimals(5);
+        SpinBoxToreXaxe->setMinimum(-999999999.000000000000000);
+        SpinBoxToreXaxe->setMaximum(999999999.000000000000000);
+        SpinBoxToreXaxe->setValue(0.000000000000000);
+
+        gridLayout_4->addWidget(SpinBoxToreXaxe, 0, 3, 1, 1);
+
+        TLToreYcent = new QLabel(gBTore);
+        TLToreYcent->setObjectName(QString::fromUtf8("TLToreYcent"));
+        sizePolicy.setHeightForWidth(TLToreYcent->sizePolicy().hasHeightForWidth());
+        TLToreYcent->setSizePolicy(sizePolicy);
+        TLToreYcent->setWordWrap(false);
+
+        gridLayout_4->addWidget(TLToreYcent, 1, 0, 1, 1);
+
+        SpinBoxToreYcent = new QDoubleSpinBox(gBTore);
+        SpinBoxToreYcent->setObjectName(QString::fromUtf8("SpinBoxToreYcent"));
+        SpinBoxToreYcent->setDecimals(5);
+        SpinBoxToreYcent->setMinimum(-999999999.000000000000000);
+        SpinBoxToreYcent->setMaximum(999999999.000000000000000);
+        SpinBoxToreYcent->setValue(0.000000000000000);
+
+        gridLayout_4->addWidget(SpinBoxToreYcent, 1, 1, 1, 1);
+
+        TLToreYaxe = new QLabel(gBTore);
+        TLToreYaxe->setObjectName(QString::fromUtf8("TLToreYaxe"));
+        sizePolicy.setHeightForWidth(TLToreYaxe->sizePolicy().hasHeightForWidth());
+        TLToreYaxe->setSizePolicy(sizePolicy);
+        TLToreYaxe->setWordWrap(false);
+
+        gridLayout_4->addWidget(TLToreYaxe, 1, 2, 1, 1);
+
+        SpinBoxToreYaxe = new QDoubleSpinBox(gBTore);
+        SpinBoxToreYaxe->setObjectName(QString::fromUtf8("SpinBoxToreYaxe"));
+        SpinBoxToreYaxe->setDecimals(5);
+        SpinBoxToreYaxe->setMinimum(-999999999.000000000000000);
+        SpinBoxToreYaxe->setMaximum(999999999.000000000000000);
+        SpinBoxToreYaxe->setValue(0.000000000000000);
+
+        gridLayout_4->addWidget(SpinBoxToreYaxe, 1, 3, 1, 1);
+
+        TLToreZcent = new QLabel(gBTore);
+        TLToreZcent->setObjectName(QString::fromUtf8("TLToreZcent"));
+        sizePolicy.setHeightForWidth(TLToreZcent->sizePolicy().hasHeightForWidth());
+        TLToreZcent->setSizePolicy(sizePolicy);
+        TLToreZcent->setWordWrap(false);
+
+        gridLayout_4->addWidget(TLToreZcent, 2, 0, 1, 1);
+
+        SpinBoxToreZcent = new QDoubleSpinBox(gBTore);
+        SpinBoxToreZcent->setObjectName(QString::fromUtf8("SpinBoxToreZcent"));
+        SpinBoxToreZcent->setDecimals(5);
+        SpinBoxToreZcent->setMinimum(-999999999.000000000000000);
+        SpinBoxToreZcent->setMaximum(999999999.000000000000000);
+        SpinBoxToreZcent->setValue(0.000000000000000);
+
+        gridLayout_4->addWidget(SpinBoxToreZcent, 2, 1, 1, 1);
+
+        TLToreZaxe = new QLabel(gBTore);
+        TLToreZaxe->setObjectName(QString::fromUtf8("TLToreZaxe"));
+        sizePolicy.setHeightForWidth(TLToreZaxe->sizePolicy().hasHeightForWidth());
+        TLToreZaxe->setSizePolicy(sizePolicy);
+        TLToreZaxe->setWordWrap(false);
+
+        gridLayout_4->addWidget(TLToreZaxe, 2, 2, 1, 1);
+
+        SpinBoxToreZaxe = new QDoubleSpinBox(gBTore);
+        SpinBoxToreZaxe->setObjectName(QString::fromUtf8("SpinBoxToreZaxe"));
+        SpinBoxToreZaxe->setDecimals(5);
+        SpinBoxToreZaxe->setMinimum(-999999999.000000000000000);
+        SpinBoxToreZaxe->setMaximum(999999999.000000000000000);
+        SpinBoxToreZaxe->setValue(0.000000000000000);
+
+        gridLayout_4->addWidget(SpinBoxToreZaxe, 2, 3, 1, 1);
+
+        TLToreRayRev = new QLabel(gBTore);
+        TLToreRayRev->setObjectName(QString::fromUtf8("TLToreRayRev"));
+        sizePolicy.setHeightForWidth(TLToreRayRev->sizePolicy().hasHeightForWidth());
+        TLToreRayRev->setSizePolicy(sizePolicy);
+        TLToreRayRev->setWordWrap(false);
+
+        gridLayout_4->addWidget(TLToreRayRev, 3, 0, 1, 1);
+
+        SpinBoxToreRRev = new QDoubleSpinBox(gBTore);
+        SpinBoxToreRRev->setObjectName(QString::fromUtf8("SpinBoxToreRRev"));
+        SpinBoxToreRRev->setDecimals(5);
+        SpinBoxToreRRev->setMaximum(1000000000.000000000000000);
+
+        gridLayout_4->addWidget(SpinBoxToreRRev, 3, 1, 1, 1);
+
+        TLToreRayPri = new QLabel(gBTore);
+        TLToreRayPri->setObjectName(QString::fromUtf8("TLToreRayPri"));
+        sizePolicy.setHeightForWidth(TLToreRayPri->sizePolicy().hasHeightForWidth());
+        TLToreRayPri->setSizePolicy(sizePolicy);
+        TLToreRayPri->setWordWrap(false);
+
+        gridLayout_4->addWidget(TLToreRayPri, 3, 2, 1, 1);
+
+        SpinBoxToreRPri = new QDoubleSpinBox(gBTore);
+        SpinBoxToreRPri->setObjectName(QString::fromUtf8("SpinBoxToreRPri"));
+        SpinBoxToreRPri->setDecimals(5);
+        SpinBoxToreRPri->setMaximum(1000000000.000000000000000);
+
+        gridLayout_4->addWidget(SpinBoxToreRPri, 3, 3, 1, 1);
+
+
+        gridLayout_5->addWidget(gBTore, 5, 0, 1, 2);
+
+        GBButtons = new QGroupBox(CreateBoundaryAn);
+        GBButtons->setObjectName(QString::fromUtf8("GBButtons"));
+        sizePolicy.setHeightForWidth(GBButtons->sizePolicy().hasHeightForWidth());
+        GBButtons->setSizePolicy(sizePolicy);
+        gridLayout3 = new QGridLayout(GBButtons);
+#ifndef Q_OS_MAC
+        gridLayout3->setSpacing(6);
+#endif
+#ifndef Q_OS_MAC
+        gridLayout3->setContentsMargins(9, 9, 9, 9);
+#endif
+        gridLayout3->setObjectName(QString::fromUtf8("gridLayout3"));
+        buttonHelp = new QPushButton(GBButtons);
+        buttonHelp->setObjectName(QString::fromUtf8("buttonHelp"));
+
+        gridLayout3->addWidget(buttonHelp, 0, 3, 1, 1);
+
+        buttonCancel = new QPushButton(GBButtons);
+        buttonCancel->setObjectName(QString::fromUtf8("buttonCancel"));
+
+        gridLayout3->addWidget(buttonCancel, 0, 2, 1, 1);
+
+        buttonApply = new QPushButton(GBButtons);
+        buttonApply->setObjectName(QString::fromUtf8("buttonApply"));
+
+        gridLayout3->addWidget(buttonApply, 0, 1, 1, 1);
+
+        buttonOk = new QPushButton(GBButtons);
+        buttonOk->setObjectName(QString::fromUtf8("buttonOk"));
+
+        gridLayout3->addWidget(buttonOk, 0, 0, 1, 1);
+
+
+        gridLayout_5->addWidget(GBButtons, 6, 0, 1, 2);
+
+
+        retranslateUi(CreateBoundaryAn);
+
+        QMetaObject::connectSlotsByName(CreateBoundaryAn);
+    } // setupUi
+
+    void retranslateUi(QDialog *CreateBoundaryAn)
+    {
+        CreateBoundaryAn->setWindowTitle(QApplication::translate("CreateBoundaryAn", "Create an analytical boundary", nullptr));
+        Name->setText(QApplication::translate("CreateBoundaryAn", "Name", nullptr));
+        TypeBoundary->setTitle(QApplication::translate("CreateBoundaryAn", "Type of boundary", nullptr));
+        RBCylindre->setText(QApplication::translate("CreateBoundaryAn", "Cylinder", nullptr));
+        RBSphere->setText(QApplication::translate("CreateBoundaryAn", "Sphere", nullptr));
+        RBCone->setText(QApplication::translate("CreateBoundaryAn", "Cone", nullptr));
+        RBTore->setText(QApplication::translate("CreateBoundaryAn", "Torus", nullptr));
+        gBCylindre->setTitle(QApplication::translate("CreateBoundaryAn", "Coordinates", nullptr));
+        TLXcent->setText(QApplication::translate("CreateBoundaryAn", "X centre", nullptr));
+        TLradius->setText(QApplication::translate("CreateBoundaryAn", "Radius", nullptr));
+        TLZcent->setText(QApplication::translate("CreateBoundaryAn", "Z centre", nullptr));
+        TLYcent->setText(QApplication::translate("CreateBoundaryAn", "Y centre", nullptr));
+        TLXaxis->setText(QApplication::translate("CreateBoundaryAn", "X axis", nullptr));
+        TLYaxis->setText(QApplication::translate("CreateBoundaryAn", "Y axis", nullptr));
+        TLZaxis->setText(QApplication::translate("CreateBoundaryAn", "Z axis", nullptr));
+        gBSphere->setTitle(QApplication::translate("CreateBoundaryAn", "Coordinates", nullptr));
+        TLRayon->setText(QApplication::translate("CreateBoundaryAn", "Radius", nullptr));
+        TLZcentre->setText(QApplication::translate("CreateBoundaryAn", "Z centre", nullptr));
+        TLYcentre->setText(QApplication::translate("CreateBoundaryAn", "Y centre", nullptr));
+        TLXcentre->setText(QApplication::translate("CreateBoundaryAn", "X centre", nullptr));
+        gBCone->setTitle(QApplication::translate("CreateBoundaryAn", "Coordinates", nullptr));
+        groupBox->setTitle(QApplication::translate("CreateBoundaryAn", "Definition", nullptr));
+        RB_Def_radius->setText(QApplication::translate("CreateBoundaryAn", "Radius", nullptr));
+        RB_Def_angle->setText(QApplication::translate("CreateBoundaryAn", "Angle", nullptr));
+        TLCone_X1->setText(QApplication::translate("CreateBoundaryAn", "X 1", nullptr));
+        TLCone_X2->setText(QApplication::translate("CreateBoundaryAn", "X 2", nullptr));
+        TLCone_Y1->setText(QApplication::translate("CreateBoundaryAn", "Y 1", nullptr));
+        TLCone_Y2->setText(QApplication::translate("CreateBoundaryAn", "Y 2", nullptr));
+        TLCone_Z1->setText(QApplication::translate("CreateBoundaryAn", "Z 1", nullptr));
+        TLCone_Z2->setText(QApplication::translate("CreateBoundaryAn", "Z 2", nullptr));
+        TLCone_V1->setText(QApplication::translate("CreateBoundaryAn", "V 1", nullptr));
+        TLCone_V2->setText(QApplication::translate("CreateBoundaryAn", "V 2", nullptr));
+        gBTore->setTitle(QApplication::translate("CreateBoundaryAn", "Coordinates", nullptr));
+        TLToreXcent->setText(QApplication::translate("CreateBoundaryAn", "X centre", nullptr));
+        TLToreXaxe->setText(QApplication::translate("CreateBoundaryAn", "X axis", nullptr));
+        TLToreYcent->setText(QApplication::translate("CreateBoundaryAn", "Y centre", nullptr));
+        TLToreYaxe->setText(QApplication::translate("CreateBoundaryAn", "Y axis", nullptr));
+        TLToreZcent->setText(QApplication::translate("CreateBoundaryAn", "Z centre", nullptr));
+        TLToreZaxe->setText(QApplication::translate("CreateBoundaryAn", "Z axis", nullptr));
+        TLToreRayRev->setText(QApplication::translate("CreateBoundaryAn", "R revolution", nullptr));
+        TLToreRayPri->setText(QApplication::translate("CreateBoundaryAn", "Primary R", nullptr));
+        GBButtons->setTitle(QString());
+        buttonHelp->setText(QApplication::translate("CreateBoundaryAn", "Help", nullptr));
+        buttonCancel->setText(QApplication::translate("CreateBoundaryAn", "Cancel", nullptr));
+        buttonApply->setText(QApplication::translate("CreateBoundaryAn", "Apply", nullptr));
+        buttonOk->setText(QApplication::translate("CreateBoundaryAn", "OK", nullptr));
+    } // retranslateUi
+};
+
+class SMESH_Ui_CreateBoundaryCAO
+{
+public:
+    QGridLayout *gridLayout;
+    QGroupBox *GBButtons;
+    QGridLayout *gridLayout1;
+    QPushButton *buttonHelp;
+    QPushButton *buttonCancel;
+    QPushButton *buttonApply;
+    QPushButton *buttonOk;
+    QCheckBox *CBGroupe;
+    QLineEdit *LEFileName;
+    QPushButton *PushFichier;
+    QLabel *XAO;
+    QLineEdit *LEName;
+    QLabel *Name;
+
+    void setupUi(QDialog *CreateBoundaryCAO)
+    {
+        if (CreateBoundaryCAO->objectName().isEmpty())
+            CreateBoundaryCAO->setObjectName(QString::fromUtf8("CreateBoundaryCAO"));
+        CreateBoundaryCAO->resize(566, 195);
+        QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+        sizePolicy.setHorizontalStretch(0);
+        sizePolicy.setVerticalStretch(0);
+        sizePolicy.setHeightForWidth(CreateBoundaryCAO->sizePolicy().hasHeightForWidth());
+        CreateBoundaryCAO->setSizePolicy(sizePolicy);
+        CreateBoundaryCAO->setAutoFillBackground(true);
+        CreateBoundaryCAO->setSizeGripEnabled(true);
+        gridLayout = new QGridLayout(CreateBoundaryCAO);
+#ifndef Q_OS_MAC
+        gridLayout->setSpacing(6);
+#endif
+#ifndef Q_OS_MAC
+        gridLayout->setContentsMargins(9, 9, 9, 9);
+#endif
+        gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
+        GBButtons = new QGroupBox(CreateBoundaryCAO);
+        GBButtons->setObjectName(QString::fromUtf8("GBButtons"));
+        gridLayout1 = new QGridLayout(GBButtons);
+#ifndef Q_OS_MAC
+        gridLayout1->setSpacing(6);
+#endif
+#ifndef Q_OS_MAC
+        gridLayout1->setContentsMargins(9, 9, 9, 9);
+#endif
+        gridLayout1->setObjectName(QString::fromUtf8("gridLayout1"));
+        buttonHelp = new QPushButton(GBButtons);
+        buttonHelp->setObjectName(QString::fromUtf8("buttonHelp"));
+
+        gridLayout1->addWidget(buttonHelp, 0, 3, 1, 1);
+
+        buttonCancel = new QPushButton(GBButtons);
+        buttonCancel->setObjectName(QString::fromUtf8("buttonCancel"));
+
+        gridLayout1->addWidget(buttonCancel, 0, 2, 1, 1);
+
+        buttonApply = new QPushButton(GBButtons);
+        buttonApply->setObjectName(QString::fromUtf8("buttonApply"));
+
+        gridLayout1->addWidget(buttonApply, 0, 1, 1, 1);
+
+        buttonOk = new QPushButton(GBButtons);
+        buttonOk->setObjectName(QString::fromUtf8("buttonOk"));
+
+        gridLayout1->addWidget(buttonOk, 0, 0, 1, 1);
+
+
+        gridLayout->addWidget(GBButtons, 3, 0, 1, 3);
+
+        CBGroupe = new QCheckBox(CreateBoundaryCAO);
+        CBGroupe->setObjectName(QString::fromUtf8("CBGroupe"));
+
+        gridLayout->addWidget(CBGroupe, 2, 0, 1, 3);
+
+        LEFileName = new QLineEdit(CreateBoundaryCAO);
+        LEFileName->setObjectName(QString::fromUtf8("LEFileName"));
+        LEFileName->setMinimumSize(QSize(370, 21));
+
+        gridLayout->addWidget(LEFileName, 1, 2, 1, 1);
+
+        PushFichier = new QPushButton(CreateBoundaryCAO);
+        PushFichier->setObjectName(QString::fromUtf8("PushFichier"));
+
+        gridLayout->addWidget(PushFichier, 1, 1, 1, 1);
+
+        XAO = new QLabel(CreateBoundaryCAO);
+        XAO->setObjectName(QString::fromUtf8("XAO"));
+
+        gridLayout->addWidget(XAO, 1, 0, 1, 1);
+
+        LEName = new QLineEdit(CreateBoundaryCAO);
+        LEName->setObjectName(QString::fromUtf8("LEName"));
+        LEName->setMinimumSize(QSize(382, 21));
+        LEName->setMaxLength(32);
+
+        gridLayout->addWidget(LEName, 0, 1, 1, 2);
+
+        Name = new QLabel(CreateBoundaryCAO);
+        Name->setObjectName(QString::fromUtf8("Name"));
+
+        gridLayout->addWidget(Name, 0, 0, 1, 1);
+
+
+        retranslateUi(CreateBoundaryCAO);
+
+        QMetaObject::connectSlotsByName(CreateBoundaryCAO);
+    } // setupUi
+
+    void retranslateUi(QDialog *CreateBoundaryCAO)
+    {
+        CreateBoundaryCAO->setWindowTitle(QApplication::translate("CreateBoundaryCAO", "Get CAO", nullptr));
+        GBButtons->setTitle(QString());
+        buttonHelp->setText(QApplication::translate("CreateBoundaryCAO", "Help", nullptr));
+        buttonCancel->setText(QApplication::translate("CreateBoundaryCAO", "Cancel", nullptr));
+        buttonApply->setText(QApplication::translate("CreateBoundaryCAO", "Apply", nullptr));
+        buttonOk->setText(QApplication::translate("CreateBoundaryCAO", "OK", nullptr));
+        CBGroupe->setText(QApplication::translate("CreateBoundaryCAO", "Filtering with groups", nullptr));
+        PushFichier->setText(QString());
+        XAO->setText(QApplication::translate("CreateBoundaryCAO", "XAO", nullptr));
+        Name->setText(QApplication::translate("CreateBoundaryCAO", "Name", nullptr));
+    } // retranslateUi
+};
+
+class SMESH_Ui_CreateBoundaryDi
+{
+public:
+    QGridLayout *gridLayout;
+    QGroupBox *GBButtons;
+    QGridLayout *gridLayout1;
+    QPushButton *buttonHelp;
+    QPushButton *buttonCancel;
+    QPushButton *buttonApply;
+    QPushButton *buttonOk;
+    QCheckBox *CBGroupe;
+    QLineEdit *LEFileName;
+    QPushButton *PushFichier;
+    QLabel *Mesh;
+    QLineEdit *LEName;
+    QLabel *Name;
+
+    void setupUi(QDialog *CreateBoundaryDi)
+    {
+        if (CreateBoundaryDi->objectName().isEmpty())
+            CreateBoundaryDi->setObjectName(QString::fromUtf8("CreateBoundaryDi"));
+        CreateBoundaryDi->resize(566, 169);
+        QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+        sizePolicy.setHorizontalStretch(0);
+        sizePolicy.setVerticalStretch(0);
+        sizePolicy.setHeightForWidth(CreateBoundaryDi->sizePolicy().hasHeightForWidth());
+        CreateBoundaryDi->setSizePolicy(sizePolicy);
+        CreateBoundaryDi->setAutoFillBackground(true);
+        CreateBoundaryDi->setSizeGripEnabled(true);
+        gridLayout = new QGridLayout(CreateBoundaryDi);
+#ifndef Q_OS_MAC
+        gridLayout->setSpacing(6);
+#endif
+#ifndef Q_OS_MAC
+        gridLayout->setContentsMargins(9, 9, 9, 9);
+#endif
+        gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
+        GBButtons = new QGroupBox(CreateBoundaryDi);
+        GBButtons->setObjectName(QString::fromUtf8("GBButtons"));
+        gridLayout1 = new QGridLayout(GBButtons);
+#ifndef Q_OS_MAC
+        gridLayout1->setSpacing(6);
+#endif
+#ifndef Q_OS_MAC
+        gridLayout1->setContentsMargins(9, 9, 9, 9);
+#endif
+        gridLayout1->setObjectName(QString::fromUtf8("gridLayout1"));
+        buttonHelp = new QPushButton(GBButtons);
+        buttonHelp->setObjectName(QString::fromUtf8("buttonHelp"));
+
+        gridLayout1->addWidget(buttonHelp, 0, 3, 1, 1);
+
+        buttonCancel = new QPushButton(GBButtons);
+        buttonCancel->setObjectName(QString::fromUtf8("buttonCancel"));
+
+        gridLayout1->addWidget(buttonCancel, 0, 2, 1, 1);
+
+        buttonApply = new QPushButton(GBButtons);
+        buttonApply->setObjectName(QString::fromUtf8("buttonApply"));
+
+        gridLayout1->addWidget(buttonApply, 0, 1, 1, 1);
+
+        buttonOk = new QPushButton(GBButtons);
+        buttonOk->setObjectName(QString::fromUtf8("buttonOk"));
+
+        gridLayout1->addWidget(buttonOk, 0, 0, 1, 1);
+
+
+        gridLayout->addWidget(GBButtons, 3, 0, 1, 3);
+
+        CBGroupe = new QCheckBox(CreateBoundaryDi);
+        CBGroupe->setObjectName(QString::fromUtf8("CBGroupe"));
+
+        gridLayout->addWidget(CBGroupe, 2, 0, 1, 3);
+
+        LEFileName = new QLineEdit(CreateBoundaryDi);
+        LEFileName->setObjectName(QString::fromUtf8("LEFileName"));
+        LEFileName->setMinimumSize(QSize(370, 21));
+
+        gridLayout->addWidget(LEFileName, 1, 2, 1, 1);
+
+        PushFichier = new QPushButton(CreateBoundaryDi);
+        PushFichier->setObjectName(QString::fromUtf8("PushFichier"));
+
+        gridLayout->addWidget(PushFichier, 1, 1, 1, 1);
+
+        Mesh = new QLabel(CreateBoundaryDi);
+        Mesh->setObjectName(QString::fromUtf8("Mesh"));
+
+        gridLayout->addWidget(Mesh, 1, 0, 1, 1);
+
+        LEName = new QLineEdit(CreateBoundaryDi);
+        LEName->setObjectName(QString::fromUtf8("LEName"));
+        LEName->setMinimumSize(QSize(382, 21));
+        LEName->setMaxLength(32);
+
+        gridLayout->addWidget(LEName, 0, 1, 1, 2);
+
+        Name = new QLabel(CreateBoundaryDi);
+        Name->setObjectName(QString::fromUtf8("Name"));
+
+        gridLayout->addWidget(Name, 0, 0, 1, 1);
+
+
+        retranslateUi(CreateBoundaryDi);
+
+        QMetaObject::connectSlotsByName(CreateBoundaryDi);
+    } // setupUi
+
+    void retranslateUi(QDialog *CreateBoundaryDi)
+    {
+        CreateBoundaryDi->setWindowTitle(QApplication::translate("CreateBoundaryDi", "Create a discrete boundary", nullptr));
+        GBButtons->setTitle(QString());
+        buttonHelp->setText(QApplication::translate("CreateBoundaryDi", "Help", nullptr));
+        buttonCancel->setText(QApplication::translate("CreateBoundaryDi", "Cancel", nullptr));
+        buttonApply->setText(QApplication::translate("CreateBoundaryDi", "Apply", nullptr));
+        buttonOk->setText(QApplication::translate("CreateBoundaryDi", "OK", nullptr));
+        CBGroupe->setText(QApplication::translate("CreateBoundaryDi", "Filtering with groups", nullptr));
+        PushFichier->setText(QString());
+        Mesh->setText(QApplication::translate("CreateBoundaryDi", "Mesh", nullptr));
+        Name->setText(QApplication::translate("CreateBoundaryDi", "Name", nullptr));
+    } // retranslateUi
+};
+
+class SMESHGUI_EXPORT SMESH_CreateBoundaryAn : public QDialog, public SMESH_Ui_CreateBoundaryAn
+{
+  Q_OBJECT
+
+public:
+  SMESH_CreateBoundaryAn (SMESHGUI_HomardAdaptDlg* parent, bool modal,
+                          SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                          QString caseName);
+  virtual ~SMESH_CreateBoundaryAn();
+
+protected :
+  SMESH_CreateBoundaryAn (SMESHGUI_HomardAdaptDlg* parent,
+                          SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                          QString caseName);
+
+  SMESHGUI_HomardAdaptDlg * _parent;
+
+  QString _Name;
+
+  int _Type;
+  double _BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnRayon;
+  double _BoundaryAnXaxis, _BoundaryAnYaxis, _BoundaryAnZaxis;
+  double _Xcentre, _Ycentre, _Zcentre, _Rayon ;
+  double _Xmin, _Xmax, _Xincr, _Ymin, _Ymax, _Yincr, _Zmin, _Zmax, _Zincr, _DMax ;
+  double _BoundaryAnXcone1, _BoundaryAnYcone1, _BoundaryAnZcone1, _BoundaryAnRayon1;
+  double _BoundaryAnXcone2, _BoundaryAnYcone2, _BoundaryAnZcone2, _BoundaryAnRayon2;
+  double _BoundaryAnXaxisCone, _BoundaryAnYaxisCone, _BoundaryAnZaxisCone;
+  double _BoundaryAnXorigCone, _BoundaryAnYorigCone, _BoundaryAnZorigCone;
+  double _BoundaryAngle;
+  double _BoundaryAnToreXcentre, _BoundaryAnToreYcentre, _BoundaryAnToreZcentre;
+  double _BoundaryAnToreXaxe, _BoundaryAnToreYaxe, _BoundaryAnToreZaxe;
+  double _BoundaryAnToreRRev, _BoundaryAnToreRPri;
+
+  bool Chgt;
+
+  SMESHHOMARD::HOMARD_Boundary_var aBoundaryAn;
+  SMESHHOMARD::HOMARD_Gen_var myHomardGen;
+
+  virtual void InitConnect();
+  virtual void InitValBoundaryAn();
+  virtual void InitMinMax();
+  virtual void SetNewName();
+  virtual bool CreateOrUpdateBoundaryAn();
+  virtual void convertRayonAngle(int option);
+
+public slots:
+    virtual void SetCylinder();
+    virtual void SetSphere();
+    virtual void SetCone();
+    virtual void SetConeR();
+    virtual void SetConeA();
+    virtual void SetTore();
+    virtual void PushOnOK();
+    virtual bool PushOnApply();
+    virtual void PushOnHelp();
+};
+
+class SMESHGUI_EXPORT SMESH_EditBoundaryAn : public SMESH_CreateBoundaryAn
+{
+    Q_OBJECT
+public:
+    SMESH_EditBoundaryAn( SMESHGUI_HomardAdaptDlg* parent, bool modal,
+                          SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                          QString caseName, QString Name);
+    virtual ~SMESH_EditBoundaryAn();
+
+protected :
+    bool CreateOrUpdateBoundaryAn();
+    void InitValEdit();
+    void InitValBoundaryAnLimit();
+    void SetCylinder();
+    void SetSphere();
+    void SetConeR();
+    void SetConeA();
+    void SetTore();
+    void InitValBoundaryAnCylindre();
+    void InitValBoundaryAnSphere();
+    void InitValBoundaryAnConeR();
+    void InitValBoundaryAnConeA();
+    void InitValBoundaryAnTore();
+};
+
+class SMESHGUI_EXPORT SMESH_CreateBoundaryCAO : public QDialog, public SMESH_Ui_CreateBoundaryCAO
+{
+    Q_OBJECT
+
+public:
+    SMESH_CreateBoundaryCAO( SMESHGUI_HomardAdaptDlg* parent, bool modal,
+                             SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                             QString caseName, QString BoundaryName );
+    ~SMESH_CreateBoundaryCAO();
+    virtual void setGroups (QStringList listGroup);
+
+protected :
+
+    SMESHGUI_HomardAdaptDlg *_parent;
+
+    QString _aName;
+
+    SMESHHOMARD::HOMARD_Boundary_var aBoundary;
+    SMESHHOMARD::HOMARD_Gen_var myHomardGen;
+
+    QStringList  _listeGroupesBoundary;
+
+    virtual void AssocieLesGroupes();
+    virtual void InitConnect();
+    virtual void SetNewName();
+
+public slots:
+
+    virtual void SetCAOFile();
+    virtual void SetFiltrage();
+    virtual void PushOnOK();
+    virtual bool PushOnApply();
+    virtual void PushOnHelp();
+};
+
+class SMESHGUI_EXPORT SMESH_EditBoundaryCAO : public SMESH_CreateBoundaryCAO
+{
+    Q_OBJECT
+public:
+    SMESH_EditBoundaryCAO( SMESHGUI_HomardAdaptDlg* parent, bool modal,
+                           SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                           QString caseName, QString Name );
+    virtual ~SMESH_EditBoundaryCAO();
+
+protected :
+    virtual void InitValEdit();
+    virtual bool PushOnApply();
+    virtual void SetFiltrage();
+};
+
+class SMESHGUI_EXPORT SMESH_CreateBoundaryDi : public QDialog, public SMESH_Ui_CreateBoundaryDi
+{
+    Q_OBJECT
+
+public:
+    SMESH_CreateBoundaryDi( SMESHGUI_HomardAdaptDlg* parent, bool modal,
+                            SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                            QString caseName, QString BoundaryName );
+    ~SMESH_CreateBoundaryDi();
+    virtual void setGroups (QStringList listGroup);
+
+protected :
+
+    SMESHGUI_HomardAdaptDlg *_parent;
+
+    QString _aName;
+
+    SMESHHOMARD::HOMARD_Boundary_var aBoundary;
+    SMESHHOMARD::HOMARD_Gen_var myHomardGen;
+
+    QStringList  _listeGroupesBoundary;
+
+    virtual void AssocieLesGroupes();
+    virtual void InitConnect();
+    virtual void SetNewName();
+
+public slots:
+
+    virtual void SetMeshFile();
+    virtual void SetFiltrage();
+    virtual void PushOnOK();
+    virtual bool PushOnApply();
+    virtual void PushOnHelp();
+};
+
+class SMESHGUI_EXPORT SMESH_EditBoundaryDi : public SMESH_CreateBoundaryDi
+{
+    Q_OBJECT
+public:
+    SMESH_EditBoundaryDi( SMESHGUI_HomardAdaptDlg* parent, bool modal,
+                          SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                          QString caseName, QString Name );
+    virtual ~SMESH_EditBoundaryDi();
+
+protected :
+    virtual void InitValEdit();
+    virtual bool PushOnApply();
+    virtual void SetFiltrage();
+};
+
+#endif // MON_CREATEBOUNDARY_H
diff --git a/src/SMESHGUI/SMESHGUI_HomardListGroup.cxx b/src/SMESHGUI/SMESHGUI_HomardListGroup.cxx
new file mode 100644 (file)
index 0000000..b1f7240
--- /dev/null
@@ -0,0 +1,326 @@
+// Copyright (C) 2011-2024  CEA, EDF
+//
+// 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 "SMESHGUI_HomardListGroup.h"
+
+#include "SMESHGUI_HomardBoundaryDlg.h"
+#include "SMESHGUI_HomardUtils.h"
+#include "SMESHGUI_Utils.h"
+
+#include "SalomeApp_Tools.h"
+
+#include <SUIT_Desktop.h>
+#include <SUIT_MessageBox.h>
+#include <SUIT_ResourceMgr.h>
+#include <SUIT_Session.h>
+#include <SUIT_ViewManager.h>
+
+#include <utilities.h>
+
+#include <QFileDialog>
+
+using namespace std;
+
+// ------------------------------------------------------------------------------------
+SMESH_CreateListGroupCAO::SMESH_CreateListGroupCAO(SMESH_CreateBoundaryCAO* parentBound,
+                                                   bool modal,
+                                                   SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                                                   QString aCaseName,
+                                                   QStringList listeGroupesHypo)
+  : QDialog(0), SMESH_Ui_CreateListGroup(),
+    _aCaseName (aCaseName),
+    _listeGroupesHypo (listeGroupesHypo),
+    _parentBound(parentBound)
+{
+  MESSAGE("Debut de SMESH_CreateListGroupCAO");
+  myHomardGen = SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen0);
+  setupUi(this);
+  setModal(modal);
+  InitConnect();
+  InitGroupes();
+}
+// ------------------------------------------------------------------------------------
+SMESH_CreateListGroupCAO::SMESH_CreateListGroupCAO(SMESH_CreateBoundaryCAO* parentBound,
+                                                   SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                                                   QString aCaseName,
+                                                   QStringList listeGroupesHypo)
+  : QDialog(0), SMESH_Ui_CreateListGroup(),
+    _aCaseName (aCaseName),
+    _listeGroupesHypo (listeGroupesHypo),
+    _parentBound(parentBound)
+{
+    myHomardGen = SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen0);
+    setupUi(this);
+    InitConnect();
+}
+
+// ------------------------------------------------------------------------
+SMESH_CreateListGroupCAO::~SMESH_CreateListGroupCAO()
+// ------------------------------------------------------------------------
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateListGroupCAO::InitConnect()
+// ------------------------------------------------------------------------
+{
+    connect( buttonOk,     SIGNAL( pressed() ), this, SLOT( PushOnOK() ) );
+    connect( buttonApply,  SIGNAL( pressed() ), this, SLOT( PushOnApply() ) );
+    connect( buttonCancel, SIGNAL( pressed() ), this, SLOT( close() ) );
+    connect( buttonHelp,   SIGNAL( pressed() ), this, SLOT( PushOnHelp() ) );
+}
+// ------------------------------------------------------------------------
+bool SMESH_CreateListGroupCAO::PushOnApply()
+// ------------------------------------------------------------------------
+// Appele lorsque l'un des boutons Ok ou Apply est presse
+//
+{
+  QStringList ListeGroup ;
+  for ( int row=0; row< TWGroupe->rowCount(); row++)
+  {
+      if ( TWGroupe->item( row, 0 )->checkState() ==  Qt::Checked )
+          ListeGroup.insert(0, QString(TWGroupe->item(row, 1)->text()) );
+  }
+  if ( _parentBound ) { _parentBound->setGroups(ListeGroup);};
+  return true;
+}
+
+
+// ------------------------------------------------------------------------
+void SMESH_CreateListGroupCAO::PushOnOK()
+// ------------------------------------------------------------------------
+{
+     if (PushOnApply()) this->close();
+     if ( _parentBound ) { _parentBound->raise(); _parentBound->activateWindow(); };
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateListGroupCAO::PushOnHelp()
+// ------------------------------------------------------------------------
+{
+  SMESH::ShowHelpFile(QString("homard_create_boundary.html#filtering-by-the-groups"));
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateListGroupCAO::InitGroupes()
+// ------------------------------------------------------------------------
+{
+  MESSAGE("Debut de SMESH_CreateListGroupCAO::InitGroupes ");
+  for ( int row=0; row< TWGroupe->rowCount(); row++)
+      TWGroupe->removeRow(row);
+  TWGroupe->setRowCount(0);
+  if (_aCaseName == QString("")) { return; };
+  SMESHHOMARD::HOMARD_Cas_var monCas = myHomardGen->GetCase();
+  SMESHHOMARD::ListGroupType_var _listeGroupesCas = monCas->GetGroups();
+  for ( int i = 0; i < _listeGroupesCas->length(); i++ ) {
+    TWGroupe->insertRow(i);
+    TWGroupe->setItem( i, 0, new QTableWidgetItem( QString ("") ) );
+    TWGroupe->item( i, 0 )->setFlags( 0 );
+    TWGroupe->item( i, 0 )->setFlags( Qt::ItemIsUserCheckable|Qt::ItemIsEnabled  );
+    if (_listeGroupesHypo.contains (QString((_listeGroupesCas)[i])))
+      {TWGroupe->item( i, 0 )->setCheckState( Qt::Checked );}
+    else
+      {TWGroupe->item( i, 0 )->setCheckState( Qt::Unchecked );}
+    TWGroupe->setItem( i, 1, new QTableWidgetItem(QString((_listeGroupesCas)[i]).trimmed()));
+    TWGroupe->item( i, 1 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
+  }
+  TWGroupe->resizeColumnsToContents();
+  TWGroupe->resizeRowsToContents();
+  TWGroupe->clearSelection();
+//   MESSAGE("Fin de SMESH_CreateListGroupCAO::InitGroupes ");
+}
+
+
+// ------------------------------------------------------------------------
+SMESH_CreateListGroup::SMESH_CreateListGroup(SMESH_CreateBoundaryDi* parentBound, bool modal,
+                                             SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                                             QString aCaseName,  QStringList listeGroupesHypo)
+  : QDialog(0), SMESH_Ui_CreateListGroup(),
+    _aCaseName (aCaseName),
+    _listeGroupesHypo (listeGroupesHypo),
+    _parentBound(parentBound)
+{
+  MESSAGE("Debut de SMESH_CreateListGroup");
+  myHomardGen = SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen0);
+  setupUi(this);
+  setModal(modal);
+  InitConnect();
+  InitGroupes();
+}
+
+// ------------------------------------------------------------------------
+SMESH_CreateListGroup::SMESH_CreateListGroup(SMESH_CreateBoundaryDi* parentBound,
+                                             SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                                             QString aCaseName,  QStringList listeGroupesHypo)
+  : QDialog(0), SMESH_Ui_CreateListGroup(),
+    _aCaseName (aCaseName),
+    _listeGroupesHypo (listeGroupesHypo),
+    _parentBound(parentBound)
+{
+  myHomardGen = SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen0);
+  setupUi(this);
+  InitConnect();
+}
+
+// ------------------------------------------------------------------------
+SMESH_CreateListGroup::~SMESH_CreateListGroup()
+{
+  // no need to delete child widgets, Qt does it all for us
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateListGroup::InitConnect()
+// ------------------------------------------------------------------------
+{
+    connect( buttonOk,     SIGNAL( pressed() ), this, SLOT( PushOnOK() ) );
+    connect( buttonApply,  SIGNAL( pressed() ), this, SLOT( PushOnApply() ) );
+    connect( buttonCancel, SIGNAL( pressed() ), this, SLOT( close() ) );
+    connect( buttonHelp,   SIGNAL( pressed() ), this, SLOT( PushOnHelp() ) );
+}
+// ------------------------------------------------------------------------
+bool SMESH_CreateListGroup::PushOnApply()
+// ------------------------------------------------------------------------
+// Appele lorsque l'un des boutons Ok ou Apply est presse
+//
+{
+  QStringList ListeGroup ;
+  for ( int row=0; row< TWGroupe->rowCount(); row++)
+  {
+      if ( TWGroupe->item( row, 0 )->checkState() ==  Qt::Checked )
+          ListeGroup.insert(0, QString(TWGroupe->item(row, 1)->text()) );
+  }
+  if ( _parentBound ) { _parentBound->setGroups(ListeGroup);};
+  return true;
+}
+
+
+// ------------------------------------------------------------------------
+void SMESH_CreateListGroup::PushOnOK()
+// ------------------------------------------------------------------------
+{
+    if (PushOnApply())
+    {
+      this->close();
+      if ( _parentBound ) { _parentBound->raise(); _parentBound->activateWindow(); };
+    }
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateListGroup::PushOnHelp()
+// ------------------------------------------------------------------------
+{
+  SMESH::ShowHelpFile(QString("homard_create_boundary.html#filtering-by-the-groups"));
+}
+// ------------------------------------------------------------------------
+void SMESH_CreateListGroup::InitGroupes()
+// ------------------------------------------------------------------------
+{
+  MESSAGE("Debut de SMESH_CreateListGroup::InitGroupes ");
+  for ( int row=0; row< TWGroupe->rowCount(); row++)
+      TWGroupe->removeRow(row);
+  TWGroupe->setRowCount(0);
+  if (_aCaseName == QString("")) { return; };
+  SMESHHOMARD::HOMARD_Cas_var monCas = myHomardGen->GetCase();
+  SMESHHOMARD::ListGroupType_var _listeGroupesCas = monCas->GetGroups();
+  for ( int i = 0; i < _listeGroupesCas->length(); i++ )
+  {
+    TWGroupe->insertRow(i);
+    TWGroupe->setItem( i, 0, new QTableWidgetItem( QString ("") ) );
+    TWGroupe->item( i, 0 )->setFlags( 0 );
+    TWGroupe->item( i, 0 )->setFlags( Qt::ItemIsUserCheckable|Qt::ItemIsEnabled  );
+    if (_listeGroupesHypo.contains (QString((_listeGroupesCas)[i])))
+      {TWGroupe->item( i, 0 )->setCheckState( Qt::Checked );}
+    else
+      {TWGroupe->item( i, 0 )->setCheckState( Qt::Unchecked );}
+    TWGroupe->setItem( i, 1, new QTableWidgetItem(QString((_listeGroupesCas)[i]).trimmed()));
+    TWGroupe->item( i, 1 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
+  }
+  TWGroupe->resizeColumnsToContents();
+  TWGroupe->resizeRowsToContents();
+  TWGroupe->clearSelection();
+//   MESSAGE("Fin de SMESH_CreateListGroup::InitGroupes ");
+}
+
+//---------------------------------------------------------------------
+SMESH_EditListGroupCAO::SMESH_EditListGroupCAO( SMESH_CreateBoundaryCAO* parentBound,
+                                                bool modal,
+                                                SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                                                QString aCaseName,
+                                                QStringList listeGroupesHypo):
+//---------------------------------------------------------------------
+SMESH_CreateListGroupCAO(parentBound,myHomardGen0,aCaseName,listeGroupesHypo)
+{
+  MESSAGE("Debut de SMESH_EditListGroupCAO");
+    setWindowTitle(QObject::tr("HOM_GROU_EDIT_WINDOW_TITLE"));
+  setModal(true);
+  InitGroupes();
+}
+
+//------------------------------------
+SMESH_EditListGroupCAO:: ~SMESH_EditListGroupCAO()
+//------------------------------------
+{
+}
+// -------------------------------------
+void SMESH_EditListGroupCAO:: InitGroupes()
+// -------------------------------------
+{
+  for (int i = 0; i < _listeGroupesHypo.size(); i++ )
+  {
+     std::cerr << _listeGroupesHypo[i].toStdString().c_str() << std::endl;
+     TWGroupe->insertRow(i);
+     TWGroupe->setItem( i, 0, new QTableWidgetItem( QString ("") ) );
+     TWGroupe->item( i, 0 )->setFlags( 0 );
+     TWGroupe->item( i, 0 )->setCheckState( Qt::Checked );
+     TWGroupe->setItem( i, 1, new QTableWidgetItem(_listeGroupesHypo[i]));
+   }
+   TWGroupe->resizeRowsToContents();
+}
+
+//---------------------------------------------------------------------
+SMESH_EditListGroup::SMESH_EditListGroup( SMESH_CreateBoundaryDi* parentBound,
+                                          bool modal,
+                                          SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
+                                          QString aCaseName,
+                                          QStringList listeGroupesHypo):
+//---------------------------------------------------------------------
+SMESH_CreateListGroup(parentBound,myHomardGen0,aCaseName,listeGroupesHypo)
+{
+  MESSAGE("Debut de SMESH_EditListGroup");
+    setWindowTitle(QObject::tr("HOM_GROU_EDIT_WINDOW_TITLE"));
+  setModal(true);
+  InitGroupes();
+}
+
+//------------------------------------
+SMESH_EditListGroup::~SMESH_EditListGroup()
+//------------------------------------
+{
+}
+// -------------------------------------
+void SMESH_EditListGroup::InitGroupes()
+// -------------------------------------
+{
+  for (int i = 0; i < _listeGroupesHypo.size(); i++ )
+  {
+     std::cerr << _listeGroupesHypo[i].toStdString().c_str() << std::endl;
+     TWGroupe->insertRow(i);
+     TWGroupe->setItem( i, 0, new QTableWidgetItem( QString ("") ) );
+     TWGroupe->item( i, 0 )->setFlags( 0 );
+     TWGroupe->item( i, 0 )->setCheckState( Qt::Checked );
+     TWGroupe->setItem( i, 1, new QTableWidgetItem(_listeGroupesHypo[i]));
+   }
+   TWGroupe->resizeRowsToContents();
+}
diff --git a/src/SMESHGUI/SMESHGUI_HomardListGroup.h b/src/SMESHGUI/SMESHGUI_HomardListGroup.h
new file mode 100644 (file)
index 0000000..4963fce
--- /dev/null
@@ -0,0 +1,254 @@
+// Copyright (C) 2011-2024  CEA, EDF
+//
+// 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
+//
+
+#ifndef MON_CREATELISTGROUPCAO_H
+#define MON_CREATELISTGROUPCAO_H
+
+#include "SMESH_SMESHGUI.hxx"
+
+#include <SALOMEconfig.h>
+#include <SalomeApp_Module.h>
+
+//#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes)
+#include CORBA_CLIENT_HEADER(SMESH_Homard)
+
+#include <QDialog>
+#include <QtCore/QVariant>
+#include <QtWidgets/QApplication>
+#include <QtWidgets/QDialog>
+#include <QtWidgets/QGridLayout>
+#include <QtWidgets/QGroupBox>
+#include <QtWidgets/QHeaderView>
+#include <QtWidgets/QPushButton>
+#include <QtWidgets/QTableWidget>
+
+class SMESH_CreateBoundaryCAO;
+class SMESH_CreateBoundaryDi;
+
+
+QT_BEGIN_NAMESPACE
+
+class SMESH_Ui_CreateListGroup
+{
+public:
+    QGridLayout *gridLayout;
+    QGroupBox *GBButtons;
+    QGridLayout *gridLayout1;
+    QPushButton *buttonHelp;
+    QPushButton *buttonCancel;
+    QPushButton *buttonApply;
+    QPushButton *buttonOk;
+    QGroupBox *GBOptions;
+    QGridLayout *gridLayout2;
+    QTableWidget *TWGroupe;
+
+    void setupUi(QDialog *CreateListGroup)
+    {
+        if (CreateListGroup->objectName().isEmpty())
+            CreateListGroup->setObjectName(QString::fromUtf8("CreateListGroup"));
+        CreateListGroup->resize(717, 600);
+        QSizePolicy sizePolicy(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+        sizePolicy.setHorizontalStretch(0);
+        sizePolicy.setVerticalStretch(0);
+        sizePolicy.setHeightForWidth(CreateListGroup->sizePolicy().hasHeightForWidth());
+        CreateListGroup->setSizePolicy(sizePolicy);
+        CreateListGroup->setAutoFillBackground(true);
+        CreateListGroup->setSizeGripEnabled(true);
+        gridLayout = new QGridLayout(CreateListGroup);
+#ifndef Q_OS_MAC
+        gridLayout->setSpacing(6);
+#endif
+#ifndef Q_OS_MAC
+        gridLayout->setContentsMargins(9, 9, 9, 9);
+#endif
+        gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
+        GBButtons = new QGroupBox(CreateListGroup);
+        GBButtons->setObjectName(QString::fromUtf8("GBButtons"));
+        gridLayout1 = new QGridLayout(GBButtons);
+#ifndef Q_OS_MAC
+        gridLayout1->setSpacing(6);
+#endif
+#ifndef Q_OS_MAC
+        gridLayout1->setContentsMargins(9, 9, 9, 9);
+#endif
+        gridLayout1->setObjectName(QString::fromUtf8("gridLayout1"));
+        buttonHelp = new QPushButton(GBButtons);
+        buttonHelp->setObjectName(QString::fromUtf8("buttonHelp"));
+
+        gridLayout1->addWidget(buttonHelp, 0, 3, 1, 1);
+
+        buttonCancel = new QPushButton(GBButtons);
+        buttonCancel->setObjectName(QString::fromUtf8("buttonCancel"));
+
+        gridLayout1->addWidget(buttonCancel, 0, 2, 1, 1);
+
+        buttonApply = new QPushButton(GBButtons);
+        buttonApply->setObjectName(QString::fromUtf8("buttonApply"));
+
+        gridLayout1->addWidget(buttonApply, 0, 1, 1, 1);
+
+        buttonOk = new QPushButton(GBButtons);
+        buttonOk->setObjectName(QString::fromUtf8("buttonOk"));
+
+        gridLayout1->addWidget(buttonOk, 0, 0, 1, 1);
+
+
+        gridLayout->addWidget(GBButtons, 1, 0, 1, 1);
+
+        GBOptions = new QGroupBox(CreateListGroup);
+        GBOptions->setObjectName(QString::fromUtf8("GBOptions"));
+        gridLayout2 = new QGridLayout(GBOptions);
+#ifndef Q_OS_MAC
+        gridLayout2->setSpacing(6);
+#endif
+#ifndef Q_OS_MAC
+        gridLayout2->setContentsMargins(9, 9, 9, 9);
+#endif
+        gridLayout2->setObjectName(QString::fromUtf8("gridLayout2"));
+        TWGroupe = new QTableWidget(GBOptions);
+        if (TWGroupe->columnCount() < 2)
+            TWGroupe->setColumnCount(2);
+        QTableWidgetItem *__qtablewidgetitem = new QTableWidgetItem();
+        TWGroupe->setHorizontalHeaderItem(0, __qtablewidgetitem);
+        QTableWidgetItem *__qtablewidgetitem1 = new QTableWidgetItem();
+        TWGroupe->setHorizontalHeaderItem(1, __qtablewidgetitem1);
+        TWGroupe->setObjectName(QString::fromUtf8("TWGroupe"));
+        TWGroupe->setShowGrid(true);
+        TWGroupe->setRowCount(0);
+        TWGroupe->setColumnCount(2);
+
+        gridLayout2->addWidget(TWGroupe, 0, 0, 1, 1);
+
+
+        gridLayout->addWidget(GBOptions, 0, 0, 1, 1);
+
+
+        retranslateUi(CreateListGroup);
+
+        QMetaObject::connectSlotsByName(CreateListGroup);
+    } // setupUi
+
+    void retranslateUi(QDialog *CreateListGroup)
+    {
+        CreateListGroup->setWindowTitle(QApplication::translate("CreateListGroup", "Selection of groups", nullptr));
+        GBButtons->setTitle(QString());
+        buttonHelp->setText(QApplication::translate("CreateListGroup", "Help", nullptr));
+        buttonCancel->setText(QApplication::translate("CreateListGroup", "Cancel", nullptr));
+        buttonApply->setText(QApplication::translate("CreateListGroup", "Apply", nullptr));
+        buttonOk->setText(QApplication::translate("CreateListGroup", "OK", nullptr));
+        GBOptions->setTitle(QApplication::translate("CreateListGroup", "Selected groups", nullptr));
+        QTableWidgetItem *___qtablewidgetitem = TWGroupe->horizontalHeaderItem(0);
+        ___qtablewidgetitem->setText(QApplication::translate("CreateListGroup", "Selection", nullptr));
+        QTableWidgetItem *___qtablewidgetitem1 = TWGroupe->horizontalHeaderItem(1);
+        ___qtablewidgetitem1->setText(QApplication::translate("CreateListGroup", "Group", nullptr));
+    } // retranslateUi
+
+};
+
+namespace Ui {
+    class CreateListGroup: public SMESH_Ui_CreateListGroup {};
+} // namespace Ui
+
+QT_END_NAMESPACE
+
+class SMESHGUI_EXPORT SMESH_CreateListGroupCAO : public QDialog, public SMESH_Ui_CreateListGroup
+{
+    Q_OBJECT
+
+public:
+    SMESH_CreateListGroupCAO( SMESH_CreateBoundaryCAO* parentBound, bool modal, SMESHHOMARD::HOMARD_Gen_var myHomardGen, QString aCaseName,  QStringList listeGroupesHypo);
+    SMESH_CreateListGroupCAO( SMESH_CreateBoundaryCAO* parentBound, SMESHHOMARD::HOMARD_Gen_var myHomardGen, QString aCaseName, QStringList listeGroupesHypo);
+    virtual ~SMESH_CreateListGroupCAO();
+
+protected :
+
+    SMESHHOMARD::HOMARD_Gen_var myHomardGen;
+
+    SMESH_CreateBoundaryCAO * _parentBound;
+    QString _aCaseName;
+    QStringList _listeGroupesHypo;
+
+    virtual void InitConnect();
+    virtual void InitGroupes();
+
+public slots:
+    virtual void PushOnOK();
+    virtual bool PushOnApply();
+    virtual void PushOnHelp();
+
+};
+
+class SMESHGUI_EXPORT SMESH_CreateListGroup : public QDialog, public SMESH_Ui_CreateListGroup
+{
+    Q_OBJECT
+
+public:
+    SMESH_CreateListGroup( SMESH_CreateBoundaryDi* parentBound, bool modal, SMESHHOMARD::HOMARD_Gen_var myHomardGen, QString aCaseName,  QStringList listeGroupesHypo);
+    SMESH_CreateListGroup( SMESH_CreateBoundaryDi* parentBound, SMESHHOMARD::HOMARD_Gen_var myHomardGen, QString aCaseName, QStringList listeGroupesHypo);
+    virtual ~SMESH_CreateListGroup();
+
+protected :
+
+    SMESHHOMARD::HOMARD_Gen_var myHomardGen;
+
+    SMESH_CreateBoundaryDi * _parentBound;
+    QString _aCaseName;
+    QStringList _listeGroupesHypo;
+
+    virtual void InitConnect();
+    virtual void InitGroupes();
+
+public slots:
+    virtual void PushOnOK();
+    virtual bool PushOnApply();
+    virtual void PushOnHelp();
+
+};
+
+class SMESHGUI_EXPORT SMESH_EditListGroupCAO : public SMESH_CreateListGroupCAO
+{
+    Q_OBJECT
+
+public:
+    SMESH_EditListGroupCAO( SMESH_CreateBoundaryCAO* parentBound, bool modal, SMESHHOMARD::HOMARD_Gen_var myHomardGen, QString aCaseName,  QStringList listeGroupesHypo);
+    virtual ~SMESH_EditListGroupCAO();
+
+protected :
+
+    virtual void InitGroupes();
+
+};
+
+class SMESHGUI_EXPORT SMESH_EditListGroup : public SMESH_CreateListGroup
+{
+    Q_OBJECT
+
+public:
+    SMESH_EditListGroup( SMESH_CreateBoundaryDi* parentBound, bool modal,
+                      SMESHHOMARD::HOMARD_Gen_var myHomardGen,
+                      QString aCaseName, QStringList listeGroupesHypo);
+    virtual ~SMESH_EditListGroup();
+
+protected :
+
+    virtual void InitGroupes();
+
+};
+
+#endif // MON_CREATELISTGROUPCAO_H
diff --git a/src/SMESHGUI/SMESHGUI_HomardUtils.cxx b/src/SMESHGUI/SMESHGUI_HomardUtils.cxx
new file mode 100644 (file)
index 0000000..afbf6cc
--- /dev/null
@@ -0,0 +1,659 @@
+// Copyright (C) 2011-2024  CEA, EDF
+//
+// 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 "SMESHGUI_HomardUtils.h"
+
+#include <utilities.h>
+
+#include "OB_Browser.h"
+
+#include "SUIT_Desktop.h"
+#include "SUIT_Application.h"
+#include "SUIT_Session.h"
+
+#include "LightApp_SelectionMgr.h"
+#include "SalomeApp_Application.h"
+#include "SalomeApp_Module.h"
+#include "SalomeApp_Study.h"
+
+#include "SALOME_ListIO.hxx"
+
+#include "SALOMEconfig.h"
+#include <string>
+
+#include <qmessagebox.h>
+#include <qcombobox.h>
+#include <qfiledialog.h>
+#include <qstring.h>
+#include <stdlib.h>
+#include <qstringlist.h>
+
+#include <sys/stat.h>
+#ifndef WIN32
+#include <dirent.h>
+#include <unistd.h>
+#endif
+
+#include "SalomeApp_Tools.h"
+
+#include <med.h>
+
+SALOME_ListIO SMESH_HOMARD_UTILS::mySelected;
+
+//================================================================
+// Function : GetActiveStudy
+// Returne un pointeur sur l'etude active
+//================================================================
+SUIT_Study* SMESH_HOMARD_UTILS::GetActiveStudy()
+{
+    SUIT_Application* app = SUIT_Session::session()->activeApplication();
+    if (app)
+      return app->activeStudy();
+    else
+      return NULL;
+}
+
+//================================================================
+// Function : getStudy
+// Returne un pointeur sur l'etude active
+//================================================================
+_PTR(Study) SMESH_HOMARD_UTILS::getStudy()
+{
+  static _PTR(Study) _study;
+  if(!_study)
+    _study = SalomeApp_Application::getStudy();
+  return _study;
+}
+
+//================================================================
+// Function : updateObjBrowser
+// Purpose  : met a jour l arbre d 'etude pour Homard
+//================================================================
+void SMESH_HOMARD_UTILS::updateObjBrowser()
+{
+    SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>(SUIT_Session::session()->activeApplication());
+    if (app) {
+      //  Le nom identifiant doit etre la valeur du parametre
+      // name de la section HOMARD du fichier SalomeApp.xml
+      CAM_Module* module = app->module("Homard" );
+      SalomeApp_Module* appMod = dynamic_cast<SalomeApp_Module*>( module );
+      if ( appMod ) {
+        app->updateObjectBrowser();
+        appMod->updateObjBrowser( true );
+      }
+      else
+        MESSAGE( "---   SMESHHOMARD::updateObjBrowser: appMod = NULL");
+    }
+}
+
+//================================================================
+// Function : selectedIO
+// Return the list of selected SALOME_InteractiveObject's
+//================================================================
+const SALOME_ListIO& SMESH_HOMARD_UTILS::selectedIO()
+{
+      SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* > ( SUIT_Session::session()->activeApplication() );
+      LightApp_SelectionMgr* aSelectionMgr = app->selectionMgr();
+      if( aSelectionMgr )
+      {
+             aSelectionMgr->selectedObjects( mySelected );
+        for (SALOME_ListIteratorOfListIO it (mySelected); it.More(); it.Next())
+        SCRUTE(it.Value()->getEntry());
+      };
+      return mySelected;
+}
+
+//================================================================
+// Function : IObjectCount
+// Return the number of selected objects
+//================================================================
+int SMESH_HOMARD_UTILS::IObjectCount()
+{
+      SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+      LightApp_SelectionMgr* aSelectionMgr = app->selectionMgr();
+      if( aSelectionMgr )
+      {
+             aSelectionMgr->selectedObjects( mySelected );
+             SCRUTE(mySelected.Extent());
+        return mySelected.Extent();
+      }
+      return 0;
+}
+
+//================================================================
+// Function : firstIObject
+// Purpose  :  Return the first selected object in the selected object list
+//================================================================
+Handle(SALOME_InteractiveObject) SMESH_HOMARD_UTILS::firstIObject()
+{
+      const SALOME_ListIO& aList = selectedIO();
+      return aList.Extent() > 0 ? aList.First() : Handle(SALOME_InteractiveObject)();
+}
+
+//================================================================
+// Function : lastIObject
+// Return the last selected object in the selected object list
+//================================================================
+Handle(SALOME_InteractiveObject) SMESH_HOMARD_UTILS::lastIObject()
+{
+      const SALOME_ListIO& aList = selectedIO();
+      return aList.Extent() > 0 ? aList.Last() : Handle(SALOME_InteractiveObject)();
+}
+
+//================================================================
+// Retourne vrai si l'objet est du type voulu
+// . Dans le cas d'un cas, d'une hypothese, d'une zone, on se contente
+// d'une comparaison simple entre le type stocke et TypeObject.
+// . Pour l'iteration, le type stocke en attribut est sous la forme
+// "IterationHomard" + le nom de l'iteration precedente.
+// Il faut donc regarder si la chaine commence par TypeObject.
+// . Idem pour le fichier de messages : "Mess " + numero d'iteration
+//
+// On filtre ce genre de situation avec option :
+//  -1 : comparaison totale
+//   0 : comparaison sur le debut de la chaine
+//================================================================
+bool SMESH_HOMARD_UTILS::isObject(_PTR(SObject) MonObj, QString TypeObject, int option)
+{
+//   MESSAGE("isObject, TypeObject = "<<TypeObject.toStdString().c_str()<<", option = "<<option);
+// Existence d'un attribut ?
+  _PTR(GenericAttribute) anAttr;
+  if ( !MonObj->FindAttribute(anAttr, "AttributeComment") ) return false;
+// Quel type ?
+  _PTR(AttributeComment) aComment (anAttr);
+  QString Type = QString(aComment->Value().c_str());
+//   MESSAGE("Type = "<<Type.toStdString().c_str());
+// Est-ce le bon ?
+  bool bOK = false ;
+  if ( option == 0 )
+  {
+    int position = Type.lastIndexOf(TypeObject);
+//     MESSAGE("position = "<<position);
+    if ( position == 0 ) { bOK = true ; }
+  }
+  else
+  {
+    if ( Type == TypeObject ) { bOK = true ; }
+  }
+  return bOK ;
+}
+//================================================================
+// Retourne vrai si l'objet est une frontiere CAO
+//================================================================
+bool SMESH_HOMARD_UTILS::isBoundaryCAO(_PTR(SObject) MonObj)
+{
+   return isObject( MonObj, QString("BoundaryCAOHomard"), -1 ) ;
+}
+//================================================================
+// Retourne vrai si l'objet est une frontiere analytique
+//================================================================
+bool SMESH_HOMARD_UTILS::isBoundaryAn(_PTR(SObject) MonObj)
+{
+   return isObject( MonObj, QString("BoundaryAnHomard"), -1 ) ;
+}
+//================================================================
+// Retourne vrai si l'objet est une frontiere discrete
+//================================================================
+bool SMESH_HOMARD_UTILS::isBoundaryDi(_PTR(SObject) MonObj)
+{
+   return isObject( MonObj, QString("BoundaryDiHomard"), -1 ) ;
+}
+//================================================================
+// Retourne vrai si l'objet est un cas
+//================================================================
+bool SMESH_HOMARD_UTILS::isCase(_PTR(SObject) MonObj)
+{
+   return isObject( MonObj, QString("CasHomard"), -1 ) ;
+}
+//================================================================
+// Retourne vrai si l'objet est une Hypothese
+//================================================================
+bool SMESH_HOMARD_UTILS::isHypo(_PTR(SObject) MonObj)
+{
+   return isObject( MonObj, QString("HypoHomard"), -1 ) ;
+}
+//================================================================
+// Retourne vrai si l'objet est une iteration
+//================================================================
+bool SMESH_HOMARD_UTILS::isIter(_PTR(SObject) MonObj)
+{
+   return isObject( MonObj, QString("IterationHomard"), 0 ) ;
+}
+//================================================================
+// Retourne vrai si l'objet est un fichier de type TypeFile
+//================================================================
+bool SMESH_HOMARD_UTILS::isFileType(_PTR(SObject) MonObj, QString TypeFile)
+{
+   return isObject( MonObj, TypeFile, 0 ) ;
+}
+
+// ============================================================================
+QString SMESH_HOMARD_QT_COMMUN::SelectionArbreEtude(QString commentaire, int option )
+// ============================================================================
+// Retourne l'objet selectionne dans l'arbre d'etudes
+// commentaire :
+// . si le commentaire est une chaine vide, on ne tient pas compte du type de l'objet
+//   et on retourne le nom de cet objet
+// . sinon :
+//   . si l'objet est du type defini par commentaire, retourne le nom de cet objet
+//   . sinon on retourne une QString("")
+// option :
+// . Si option = 0, ce n'est pas grave de ne rien trouver ; aucun message n'est emis
+// . Si option = 1, ce n'est pas grave de ne rien trouver mais on emet un message
+{
+//   MESSAGE("SelectionArbreEtude : commentaire = " << commentaire.toStdString().c_str() << " et option = " << option);
+  int nbSel = SMESH_HOMARD_UTILS::IObjectCount() ;
+  if ( nbSel == 0 )
+  {
+    if ( option == 1 )
+    {
+      QMessageBox::warning( 0, QObject::tr("HOM_WARNING"),
+                               QObject::tr("HOM_SELECT_OBJECT_1") );
+    }
+    return QString("");
+  }
+  if ( nbSel > 1 )
+  {
+    QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                              QObject::tr("HOM_SELECT_OBJECT_2") );
+    return QString("");
+  }
+//
+  Handle(SALOME_InteractiveObject) aIO = SMESH_HOMARD_UTILS::firstIObject();
+  if ( aIO->hasEntry() )
+  {
+//     MESSAGE("aIO->getEntry() = " << aIO->getEntry());
+    _PTR(Study) aStudy = SMESH_HOMARD_UTILS::getStudy();
+    _PTR(SObject) aSO ( aStudy->FindObjectID( aIO->getEntry() ) );
+    _PTR(GenericAttribute) anAttr;
+    if (aSO->FindAttribute(anAttr, "AttributeComment") )
+    {
+      if ( commentaire != "" )
+      {
+        _PTR(AttributeComment) attributComment = anAttr;
+        QString aComment= QString(attributComment->Value().data());
+//         MESSAGE("... aComment = " << aComment.toStdString().c_str());
+        int iaux = aComment.lastIndexOf(commentaire);
+//         MESSAGE("... iaux = " << iaux);
+        if ( iaux !=0  )
+        {
+          QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                                    QObject::tr("HOM_SELECT_OBJECT_3").arg(commentaire) );
+          return QString("");
+        }
+      }
+      if (aSO->FindAttribute(anAttr, "AttributeName") )
+      {
+        _PTR(AttributeName) attributName = anAttr;
+        QString aName= QString(attributName->Value().data());
+        return aName;
+      }
+    }
+  }
+//
+  return QString("");
+}
+
+// =======================================================================
+QString SMESH_HOMARD_QT_COMMUN::SelectionCasEtude()
+// =======================================================================
+{
+  QString aName    = QString("");
+  int nbSel = SMESH_HOMARD_UTILS::IObjectCount() ;
+  if ( nbSel == 0 )
+  {
+    QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                              QObject::tr("HOM_SELECT_OBJECT_1") );
+    return QString("");
+  }
+  if ( nbSel > 1 )
+  {
+    QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                              QObject::tr("HOM_SELECT_OBJECT_2") );
+    return QString("");
+  }
+  Handle(SALOME_InteractiveObject) aIO = SMESH_HOMARD_UTILS::firstIObject();
+  if ( aIO->hasEntry() )
+  {
+       _PTR(Study) aStudy = SMESH_HOMARD_UTILS::getStudy();
+       _PTR(SObject) aSO ( aStudy->FindObjectID( aIO->getEntry() ) );
+        _PTR(SObject) aSObjCas = aSO->GetFather();
+       _PTR(GenericAttribute) anAttr;
+       if (aSObjCas->FindAttribute(anAttr, "AttributeName") )
+        {
+            _PTR(AttributeName) attributName = anAttr;
+            aName= QString(attributName->Value().data());
+        }
+        return aName;
+    }
+    return QString("");
+}
+
+// =======================================================================
+QString SMESH_HOMARD_QT_COMMUN::PushNomFichier(bool avertir, QString TypeFichier)
+// =======================================================================
+// Gestion les boutons qui permettent  de
+// 1) retourne le nom d'un fichier par une fenetre de dialogue si aucun
+//    objet est selectionne dans l arbre d etude
+// 2) retourne le nom du fichier asocie a l objet
+//    selectionne dans l arbre d etude
+{
+//   MESSAGE("PushNomFichier avec avertir "<<avertir<<" et TypeFichier = "<<TypeFichier.toStdString().c_str());
+  QString aFile = QString::null;
+//
+  // A. Filtre
+  QString filtre  ;
+//
+  if ( TypeFichier == "med" )     { filtre = QString("Med") ; }
+  else if ( TypeFichier == "py" ) { filtre = QString("Python") ; }
+  else                            { filtre = TypeFichier ; }
+  //
+  if ( TypeFichier != "" ) { filtre += QString(" files (*.") + TypeFichier + QString(");;") ; }
+  //
+  filtre += QString("all (*) ") ;
+  //
+  // B. Selection
+  //int nbSel = SMESH_HOMARD_UTILS::IObjectCount() ;
+  int nbSel = 0;
+  //   MESSAGE("nbSel ="<<nbSel);
+  // B.1. Rien n'est selectionne
+  if ( nbSel == 0 )
+  {
+    //aFile = QFileDialog::getOpenFileName(0, QObject::tr("HOM_SELECT_FILE_0"), QString(""), QString("Med files (*.med);;all (*) ") );
+    aFile = QFileDialog::getOpenFileName(0, QObject::tr("HOM_SELECT_FILE_0"), QString(""), filtre );
+  }
+  // B.2. Un objet est selectionne
+  else if (nbSel == 1)
+  {
+    Handle(SALOME_InteractiveObject) aIO = SMESH_HOMARD_UTILS::firstIObject();
+    if ( aIO->hasEntry() )
+    {
+      _PTR(Study) aStudy = SMESH_HOMARD_UTILS::getStudy();
+      _PTR(SObject) aSO ( aStudy->FindObjectID( aIO->getEntry() ) );
+      _PTR(GenericAttribute) anAttr;
+      _PTR(AttributeFileType) aFileType;
+      _PTR(AttributeExternalFileDef) aFileName;
+      if (aSO) {
+        if (aSO->FindAttribute(anAttr, "AttributeFileType") ) {
+          aFileType=anAttr;
+          QString fileType=QString(aFileType->Value().data());
+          if ( fileType==QString("FICHIERMED")) {
+            if (aSO->FindAttribute(anAttr,"AttributeExternalFileDef")) {
+            aFileName=anAttr;
+            aFile= QString(aFileName->Value().data()); }
+          }
+        }
+      }
+    }
+
+    if ( aFile==QString::null )
+    {
+      if ( avertir ) {
+        QMessageBox::warning( 0, QObject::tr("HOM_WARNING"),
+                                 QObject::tr("HOM_SELECT_STUDY") );
+      }
+      aFile = QFileDialog::getOpenFileName(0, QObject::tr("HOM_SELECT_FILE_0"), QString(""), filtre );
+    }
+  }
+  // B.3. Bizarre
+  else
+  {
+    QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                              QObject::tr("HOM_SELECT_FILE_2") );
+  }
+
+  return aFile;
+}
+// =======================================================================
+med_idt SMESH_HOMARD_QT_COMMUN::OuvrirFichier(QString aFile)
+// =======================================================================
+// renvoie le medId associe au fichier Med apres ouverture
+{
+  med_idt medIdt = MEDfileOpen(aFile.toStdString().c_str(),MED_ACC_RDONLY);
+  if (medIdt <0)
+  {
+    QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                              QObject::tr("HOM_MED_FILE_1") );
+  }
+  return medIdt;
+}
+
+// ======================================================
+QString SMESH_HOMARD_QT_COMMUN::LireNomMaillage(QString aFile)
+// ========================================================
+{
+  QString nomMaillage = "" ;
+  int erreur = 0 ;
+  med_idt medIdt ;
+  while ( erreur == 0 )
+  {
+    //  Ouverture du fichier
+    medIdt = SMESH_HOMARD_QT_COMMUN::OuvrirFichier(aFile);
+    if ( medIdt < 0 )
+    {
+      erreur = 1 ;
+      break ;
+    }
+    med_int numberOfMeshes = MEDnMesh(medIdt) ;
+    if (numberOfMeshes == 0 )
+    {
+      QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                                QObject::tr("HOM_MED_FILE_2") );
+      erreur = 2 ;
+      break ;
+    }
+    if (numberOfMeshes > 1 )
+    {
+      QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                                QObject::tr("HOM_MED_FILE_3") );
+      erreur = 3 ;
+      break ;
+    }
+
+    nomMaillage = SMESH_HOMARD_QT_COMMUN::LireNomMaillage2(medIdt,1);
+    break ;
+  }
+  // Fermeture du fichier
+  if ( medIdt > 0 ) MEDfileClose(medIdt);
+
+  return nomMaillage;
+}
+// =======================================================================
+QString SMESH_HOMARD_QT_COMMUN::LireNomMaillage2(med_idt medIdt ,int meshId)
+// =======================================================================
+{
+  QString NomMaillage=QString::null;
+  char meshname[MED_NAME_SIZE+1];
+  med_int spacedim,meshdim;
+  med_mesh_type meshtype;
+  char descriptionription[MED_COMMENT_SIZE+1];
+  char dtunit[MED_SNAME_SIZE+1];
+  med_sorting_type sortingtype;
+  med_int nstep;
+  med_axis_type axistype;
+  int naxis = MEDmeshnAxis(medIdt,1);
+  char *axisname=new char[naxis*MED_SNAME_SIZE+1];
+  char *axisunit=new char[naxis*MED_SNAME_SIZE+1];
+  med_err aRet = MEDmeshInfo(medIdt,
+                          meshId,
+                          meshname,
+                          &spacedim,
+                          &meshdim,
+                          &meshtype,
+                          descriptionription,
+                          dtunit,
+                          &sortingtype,
+                          &nstep,
+                          &axistype,
+                          axisname,
+                          axisunit);
+
+  if ( aRet < 0 ) { QMessageBox::critical( 0, QObject::tr("HOM_ERROR"), \
+                                              QObject::tr("HOM_MED_FILE_4") );  }
+  else            { NomMaillage=QString(meshname); }
+
+  delete[] axisname ;
+  delete[] axisunit ;
+
+  return NomMaillage;
+}
+
+
+// =======================================================================
+std::list<QString> SMESH_HOMARD_QT_COMMUN::GetListeChamps(QString aFile)
+// =======================================================================
+{
+// Il faut voir si plusieurs maillages
+
+  MESSAGE("GetListeChamps");
+  std::list<QString> ListeChamp ;
+
+  med_err erreur = 0 ;
+  med_idt medIdt ;
+
+  while ( erreur == 0 )
+  {
+    // Ouverture du fichier
+    SCRUTE(aFile.toStdString());
+    medIdt = SMESH_HOMARD_QT_COMMUN::OuvrirFichier(aFile);
+    if ( medIdt < 0 )
+    {
+      erreur = 1 ;
+      break ;
+    }
+  // Lecture du nombre de champs
+    med_int ncha = MEDnField(medIdt) ;
+    if (ncha < 1 )
+    {
+      QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                                QObject::tr("HOM_MED_FILE_5") );
+      erreur = 2 ;
+      break ;
+    }
+  // Lecture des caracteristiques des champs
+    for (int i=0; i< ncha; i++)
+    {
+//       Lecture du nombre de composantes
+      med_int ncomp = MEDfieldnComponent(medIdt,i+1);
+//       Lecture du type du champ, des noms des composantes et du nom de l'unite
+      char nomcha  [MED_NAME_SIZE+1];
+      char meshname[MED_NAME_SIZE+1];
+      char * comp = (char*) malloc(ncomp*MED_SNAME_SIZE+1);
+      char * unit = (char*) malloc(ncomp*MED_SNAME_SIZE+1);
+      char dtunit[MED_SNAME_SIZE+1];
+      med_bool local;
+      med_field_type typcha;
+      med_int nbofcstp;
+      erreur = MEDfieldInfo(medIdt,i+1,nomcha,meshname,&local,&typcha,comp,unit,dtunit,&nbofcstp) ;
+      free(comp);
+      free(unit);
+      if ( erreur < 0 )
+      {
+        QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                                  QObject::tr("HOM_MED_FILE_6") );
+        break ;
+      }
+      ListeChamp.push_back(QString(nomcha));
+    }
+    break ;
+  }
+  // Fermeture du fichier
+  if ( medIdt > 0 ) MEDfileClose(medIdt);
+
+  return ListeChamp;
+}
+
+// ======================================================================================
+std::list<QString> SMESH_HOMARD_QT_COMMUN::GetListeComposants(QString aFile, QString aChamp)
+// ======================================================================================
+{
+  MESSAGE ( "GetListeComposants pour le fichier " << aFile.toStdString().c_str());
+  MESSAGE ( "GetListeComposants pour le champ " << aChamp.toStdString().c_str());
+
+  std::list<QString> ListeComposants;
+
+  med_err erreur = 0 ;
+  med_idt medIdt ;
+
+  while ( erreur == 0 )
+  {
+    // Ouverture du fichier
+    SCRUTE(aFile.toStdString());
+    medIdt = SMESH_HOMARD_QT_COMMUN::OuvrirFichier(aFile);
+    if ( medIdt < 0 )
+    {
+      erreur = 1 ;
+      break ;
+    }
+  // Lecture du nombre de champs
+    med_int ncha = MEDnField(medIdt) ;
+    if (ncha < 1 )
+    {
+      QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                                QObject::tr("HOM_MED_FILE_5") );
+      erreur = 2 ;
+      break ;
+    }
+  // Lecture des caracteristiques des champs
+    for (int i=0; i< ncha; i++)
+    {
+//       Lecture du nombre de composantes
+      med_int ncomp = MEDfieldnComponent(medIdt,i+1);
+//       Lecture du type du champ, des noms des composantes et du nom de l'unite
+      char nomcha  [MED_NAME_SIZE+1];
+      char meshname[MED_NAME_SIZE+1];
+      char * comp = (char*) malloc(ncomp*MED_SNAME_SIZE+1);
+      char * unit = (char*) malloc(ncomp*MED_SNAME_SIZE+1);
+      char dtunit[MED_SNAME_SIZE+1];
+      med_bool local;
+      med_field_type typcha;
+      med_int nbofcstp;
+      erreur = MEDfieldInfo(medIdt,i+1,nomcha,meshname,&local,&typcha,comp,unit,dtunit,&nbofcstp) ;
+      free(unit);
+      if ( erreur < 0 )
+      {
+        free(comp);
+        QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+                                  QObject::tr("HOM_MED_FILE_6") );
+        break ;
+      }
+      // Lecture des composantes si c'est le bon champ
+      if ( QString(nomcha) == aChamp )
+      {
+        for (int j = 0; j <ncomp; j++)
+        {
+          char cible[MED_SNAME_SIZE +1];
+          strncpy(cible,comp+j*MED_SNAME_SIZE,MED_SNAME_SIZE );
+          cible[MED_SNAME_SIZE ]='\0';
+          ListeComposants.push_back(QString(cible));
+        }
+      }
+      // Menage
+      free(comp);
+      // Sortie si c'est bon
+      if ( QString(nomcha) == aChamp ) { break ; }
+    }
+    break ;
+  }
+  // Fermeture du fichier
+  if ( medIdt > 0 ) MEDfileClose(medIdt);
+
+  return ListeComposants;
+}
diff --git a/src/SMESHGUI/SMESHGUI_HomardUtils.h b/src/SMESHGUI/SMESHGUI_HomardUtils.h
new file mode 100644 (file)
index 0000000..afdc52d
--- /dev/null
@@ -0,0 +1,112 @@
+// Copyright (C) 2011-2024  CEA, EDF
+//
+// 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
+//
+
+#ifndef SMESH_HOMARD_H_UTILS
+#define SMESH_HOMARD_H_UTILS
+
+#include "SMESH_SMESHGUI.hxx"
+
+#include <SALOMEconfig.h>
+
+#include <omniORB4/CORBA.h>
+//#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes)
+#include CORBA_CLIENT_HEADER(SMESH_Homard)
+
+#include <SALOMEDSClient_definitions.hxx>
+#include <SALOME_InteractiveObject.hxx>
+#include <LightApp_DataOwner.h>
+#include <SalomeApp_Application.h>
+#include <SALOME_ListIO.hxx>
+//#include <SALOME_Selection.h>
+#include <SalomeApp_Module.h>
+
+#include <med.h>
+
+#include <qstring.h>
+#include <vector>
+#include <set>
+
+class QString;
+class QStringList;
+class QComboBox;
+
+class SUIT_ViewWindow;
+class SUIT_Desktop;
+class SUIT_Study;
+class SUIT_ResourceMgr;
+
+class CAM_Module;
+
+class SALOMEDSClient_Study;
+class SALOMEDSClient_SObject;
+
+class SalomeApp_Study;
+class SalomeApp_Module;
+class LightApp_SelectionMgr;
+
+namespace SMESH_HOMARD_UTILS {
+
+  SMESHGUI_EXPORT SUIT_Study* GetActiveStudy();
+  SMESHGUI_EXPORT _PTR(Study) getStudy();
+
+  SMESHGUI_EXPORT void updateObjBrowser();
+
+  // Function returns a list of SALOME_InteractiveObject's from
+  // selection manager in GUI
+  SMESHGUI_EXPORT const SALOME_ListIO& selectedIO();
+
+  // Function returns the number of selected objects
+  SMESHGUI_EXPORT int   IObjectCount();
+
+  // Function returns the first selected object in the list
+  // of selected objects
+  SMESHGUI_EXPORT Handle(SALOME_InteractiveObject) firstIObject() ;
+
+  // Function returns the last selected object in the list
+  // of selected objects
+  SMESHGUI_EXPORT Handle(SALOME_InteractiveObject) lastIObject() ;
+
+  SMESHGUI_EXPORT bool isBoundaryCAO(_PTR(SObject)  MonObj);
+  SMESHGUI_EXPORT bool isBoundaryAn(_PTR(SObject)  MonObj);
+  SMESHGUI_EXPORT bool isBoundaryDi(_PTR(SObject)  MonObj);
+  SMESHGUI_EXPORT bool isCase(_PTR(SObject)  MonObj);
+  SMESHGUI_EXPORT bool isHypo(_PTR(SObject)  MonObj);
+  SMESHGUI_EXPORT bool isIter(_PTR(SObject)  MonObj);
+  SMESHGUI_EXPORT bool isFileType(_PTR(SObject)  MonObj, QString TypeFile);
+  SMESHGUI_EXPORT bool isObject(_PTR(SObject)  MonObj, QString TypeObject, int option );
+
+  extern SALOME_ListIO mySelected;
+}
+
+namespace SMESH_HOMARD_QT_COMMUN
+{
+    SMESHGUI_EXPORT QString PushNomFichier(bool avertir, QString TypeFichier="");
+    SMESHGUI_EXPORT QString LireNomMaillage(QString aFile);
+    SMESHGUI_EXPORT QString LireNomMaillage2(med_idt Medidt,int MeshId);
+
+    SMESHGUI_EXPORT med_idt OuvrirFichier(QString aFile);
+
+    SMESHGUI_EXPORT std::list<QString> GetListeChamps(QString aFile);
+    SMESHGUI_EXPORT std::list<QString> GetListeComposants(QString aFile, QString aChamp);
+
+    SMESHGUI_EXPORT QString SelectionArbreEtude(QString commentaire, int grave );
+    SMESHGUI_EXPORT QString SelectionCasEtude();
+};
+
+#endif // ifndef SMESH_HOMARD_H_UTILS
diff --git a/src/SMESHGUI/SMESHGUI_Homard_msg_en.ts b/src/SMESHGUI/SMESHGUI_Homard_msg_en.ts
new file mode 100644 (file)
index 0000000..e1ebe2e
--- /dev/null
@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
+<context>
+    <name>@default</name>
+    <message>
+        <source>ADAPT_WITH_HOMARD</source>
+        <translation>Adaptation with HOMARD</translation>
+    </message>
+    <message>
+        <source>HOM_WARNING</source>
+        <translation>Warning</translation>
+    </message>
+    <message>
+        <source>HOM_ERROR</source>
+        <translation>Error</translation>
+    </message>
+    <message>
+        <source>HOM_INACTIVE_BUTTON</source>
+        <translation>Inactive button</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_OBJECT_1</source>
+        <translation>Select an object.</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_OBJECT_2</source>
+        <translation>Select only one object.</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_OBJECT_3</source>
+        <translation>Select an object with type %1.</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_OBJECT_4</source>
+        <translation>The name of the object is already selected. Modify it or cancel.</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_FILE_0</source>
+        <translation>File selection</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_FILE_1</source>
+        <translation>Select a file.</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_FILE_2</source>
+        <translation>Select only one file.</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_FILE_3</source>
+        <translation>This file cannot be opened.</translation>
+    </message>
+    <message>
+        <source>HOM_SCRIPT_FILE</source>
+        <translation>A script file must be given.</translation>
+    </message>
+    <message>
+        <source>HOM_MED_FILE_1</source>
+        <translation>This MED file cannot be read.</translation>
+    </message>
+    <message>
+        <source>HOM_MED_FILE_2</source>
+        <translation>No mesh in this MED file.</translation>
+    </message>
+    <message>
+        <source>HOM_MED_FILE_3</source>
+        <translation>More than one mesh in this MED file.</translation>
+    </message>
+    <message>
+        <source>HOM_MED_FILE_4</source>
+        <translation>The mesh in this MED file cannot be read.</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_STUDY</source>
+        <translation>Select a study object with associated MED file \n or select a MED file.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_NAME</source>
+        <translation>The case must be named.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_DIRECTORY_1</source>
+        <translation>A directory for the case must be selected.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_DIRECTORY_2</source>
+        <translation>This directory is already used by the case </translation>
+    </message>
+    <message>
+        <source>HOM_CASE_DIRECTORY_3</source>
+        <translation>A valid directory for the case must be selected.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_DIRECTORY_4</source>
+        <translation>A directory for the computation must be selected.</translation>
+    </message>
+    <message>
+        <source>HOM_START_DIRECTORY_1</source>
+        <translation>A starting directory for the pursuit must be selected.</translation>
+    </message>
+    <message>
+        <source>HOM_START_DIRECTORY_3</source>
+        <translation>A valid directory for the pursuit must be selected.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_MESH</source>
+        <translation>The file of the initial mesh must be selected.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_GROUP</source>
+        <translation>The group &quot;%1&quot; cannot be given for more than 1 boundary.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_EDIT_WINDOW_TITLE</source>
+        <translation>Edition of a case</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_EDIT_STATE_0</source>
+        <translation>Initial mesh.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_EDIT_STATE</source>
+        <translation>Pursuit of an iteration.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_PURSUE_WINDOW_TITLE</source>
+        <translation>Case: pursuit of a stored iteration</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_NAME</source>
+        <translation>The iteration must be named.</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_STARTING_POINT</source>
+        <translation>The previous iteration must be given.</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_MESH</source>
+        <translation>Give a name for the final mesh.</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_HYPO</source>
+        <translation>A hypothesis must be selected.</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_STARTING_POINT_0</source>
+        <translation>Mesh</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_STARTING_POINT_1</source>
+        <translation>First iteration of the case.</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_STARTING_POINT_2</source>
+        <translation>First iteration of the case for the pursuit.</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_EDIT_WINDOW_TITLE</source>
+        <translation>Edition of an iteration</translation>
+    </message>
+    <message>
+        <source>HOM_HYPO_NAME</source>
+        <translation>The hypothesis must be named.</translation>
+    </message>
+    <message>
+        <source>HOM_HYPO_NORM_L2</source>
+        <translation>L2 norm</translation>
+    </message>
+    <message>
+        <source>HOM_HYPO_NORM_INF</source>
+        <translation>Infinite norm</translation>
+    </message>
+    <message>
+        <source>HOM_HYPO_NORM_ABS</source>
+        <translation>Absolute</translation>
+    </message>
+    <message>
+        <source>HOM_HYPO_NORM_REL</source>
+        <translation>Relative</translation>
+    </message>
+    <message>
+        <source>HOM_HYPO_COMP</source>
+        <translation>At least, one component must be selected.</translation>
+    </message>
+    <message>
+        <source>HOM_HYPO_EDIT_WINDOW_TITLE</source>
+        <translation>Edition of a hypothesis</translation>
+    </message>
+    <message>
+        <source>HOM_BOUN_NAME</source>
+        <translation>The boundary must be named.</translation>
+    </message>
+    <message>
+        <source>HOM_BOUN_MESH</source>
+        <translation>The file for the mesh of the boundary must be selected.</translation>
+    </message>
+    <message>
+        <source>HOM_BOUN_CAO</source>
+        <translation>The file for the CAO must be selected.</translation>
+    </message>
+    <message>
+        <source>HOM_BOUN_CASE</source>
+        <translation>The meshfile of the case is unknown.</translation>
+    </message>
+    <message>
+        <source>HOM_AXE</source>
+        <translation>The axis must be a non 0 vector.</translation>
+    </message>
+    <message>
+        <source>HOM_BOUN_C_EDIT_WINDOW_TITLE</source>
+        <translation>Edition of a CAO based boundary</translation>
+    </message>
+    <message>
+        <source>HOM_BOUN_A_EDIT_WINDOW_TITLE</source>
+        <translation>Edition of an analytical boundary</translation>
+    </message>
+    <message>
+        <source>HOM_BOUN_D_EDIT_WINDOW_TITLE</source>
+        <translation>Edition of a discrete boundary</translation>
+    </message>
+    <message>
+        <source>HOM_GROU_EDIT_WINDOW_TITLE</source>
+        <translation>Selected groups</translation>
+    </message>
+    <message>
+        <source>HOM_MESH_INFO_0</source>
+        <translation>Mesh analysis</translation>
+    </message>
+    <message>
+        <source>HOM_MESH_INFO_1</source>
+        <translation>Select at least one option.</translation>
+    </message>
+    <message>
+        <source>HOM_MESH_INFO_2</source>
+        <translation>Analysis in the object browser, file </translation>
+    </message>
+    <message>
+        <source>PREF_TAB_GENERAL</source>
+        <translation>General</translation>
+    </message>
+    <message>
+        <source>PREF_PUBLICATION</source>
+        <translation>Publication</translation>
+    </message>
+    <message>
+        <source>PREF_PUBLICATION_MAILLAGE_IN</source>
+        <translation>IN meshes</translation>
+    </message>
+    <message>
+        <source>PREF_PUBLICATION_MAILLAGE_OUT</source>
+        <translation>OUT meshes</translation>
+    </message>
+</context>
+</TS>
diff --git a/src/SMESHGUI/SMESHGUI_Homard_msg_fr.ts b/src/SMESHGUI/SMESHGUI_Homard_msg_fr.ts
new file mode 100644 (file)
index 0000000..77cd8ed
--- /dev/null
@@ -0,0 +1,871 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>HOM_WARNING</source>
+        <translation>Avertissement</translation>
+    </message>
+    <message>
+        <source>HOM_ERROR</source>
+        <translation>Erreur</translation>
+    </message>
+    <message>
+        <source>HOM_INACTIVE_BUTTON</source>
+        <translation>Bouton inactif</translation>
+    </message>
+    <message>
+        <source>OK</source>
+        <translation>Appliquer et fermer</translation>
+    </message>
+    <message>
+        <source>Apply</source>
+        <translation>Appliquer</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <source>Help</source>
+        <translation>Aide</translation>
+    </message>
+    <message>
+        <source>New</source>
+        <translation>Nouveau</translation>
+    </message>
+    <message>
+        <source>Edit</source>
+        <translation>Editer</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation>Quitter</translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation>Nom</translation>
+    </message>
+    <message>
+        <source>Directory</source>
+        <translation>Répertoire</translation>
+    </message>
+    <message>
+        <source>Mesh</source>
+        <translation>Maillage</translation>
+    </message>
+    <message>
+        <source>Selection</source>
+        <translation>Sélection</translation>
+    </message>
+    <message>
+        <source>None</source>
+        <translation>Aucun</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Tout</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_OBJECT_1</source>
+        <translation>Sélectionner un objet.</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_OBJECT_2</source>
+        <translation>Sélectionner un seul objet.</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_OBJECT_3</source>
+        <translation>Sélectionner un objet de type %1.</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_OBJECT_4</source>
+        <translation>Le nom est déjà choisi. Modifiez le ou annulez la saisie.</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_FILE_0</source>
+        <translation>Choix de fichier</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_FILE_1</source>
+        <translation>Sélectionner un fichier.</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_FILE_2</source>
+        <translation>Sélectionner un seul fichier.</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_FILE_3</source>
+        <translation>Impossible d'ouvrir ce fichier.</translation>
+    </message>
+    <message>
+        <source>HOM_SCRIPT_FILE</source>
+        <translation>Il faut donner un fichier pour le script python.</translation>
+    </message>
+    <message>
+        <source>HOM_MED_FILE_1</source>
+        <translation>Ce fichier MED est illisible.</translation>
+    </message>
+    <message>
+        <source>HOM_MED_FILE_2</source>
+        <translation>Ce fichier MED ne contient aucun maillage.</translation>
+    </message>
+    <message>
+        <source>HOM_MED_FILE_3</source>
+        <translation>Ce fichier MED contient plus d'un maillage.</translation>
+    </message>
+    <message>
+        <source>HOM_MED_FILE_4</source>
+        <translation>Impossible de lire le maillage de ce fichier MED.</translation>
+    </message>
+    <message>
+        <source>HOM_SELECT_STUDY</source>
+        <translation>Sélectionner une étude avec un fichier MED associé\n ou sélectionner un fichier MED.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_DIRECTORY_3</source>
+        <translation>Un répertoire valide doit être choisi.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_DIRECTORY_4</source>
+        <translation>Il faut choisir un répertoire de travail pour le calcul.</translation>
+    </message>
+    <message>
+        <source>HOM_START_DIRECTORY_1</source>
+        <translation>Il faut choisir un répertoire contenant l'itération à poursuivre.</translation>
+    </message>
+    <message>
+        <source>HOM_START_DIRECTORY_3</source>
+        <translation>Un répertoire valide contenant l'itération à poursuivre doit être choisi.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_MESH</source>
+        <translation>Il faut choisir le maillage initial.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_GROUP</source>
+        <translation>Le groupe &quot;%1&quot; ne peut pas être attribué à plus d'une frontière.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_EDIT_WINDOW_TITLE</source>
+        <translation>Edition d'un cas</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_EDIT_STATE_0</source>
+        <translation>Maillage initial.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_EDIT_STATE</source>
+        <translation>Poursuite d'une itération.</translation>
+    </message>
+    <message>
+        <source>HOM_CASE_PURSUE_WINDOW_TITLE</source>
+        <translation>Cas de poursuite d'une itération</translation>
+    </message>
+    <message>
+        <source>The configuration file cannot be found.</source>
+        <translation>Le fichier de configuration de HOMARD est introuvable.</translation>
+    </message>
+    <message>
+        <source>The configuration file cannot be read.</source>
+        <translation>Le fichier de configuration de HOMARD est illisible.</translation>
+    </message>
+    <message>
+        <source>The HOMARD mesh file cannot be found.</source>
+        <translation>Le fichier de maillage de HOMARD est introuvable.</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_NAME</source>
+        <translation>Il faut donner un nom à l'itération.</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_STARTING_POINT</source>
+        <translation>Il faut désigner l'itération précédente.</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_MESH</source>
+        <translation>Donner le nom du maillage final.</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_HYPO</source>
+        <translation>Choisir une hypothèse.</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_STARTING_POINT_0</source>
+        <translation>Maillage</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_STARTING_POINT_1</source>
+        <translation>Itération initiale du cas.</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_STARTING_POINT_2</source>
+        <translation>Itération initiale du cas pour la poursuite.</translation>
+    </message>
+    <message>
+        <source>HOM_ITER_EDIT_WINDOW_TITLE</source>
+        <translation>Edition d'une itération</translation>
+    </message>
+    <message>
+        <source>Boundary type</source>
+        <translation>Type de frontière</translation>
+    </message>
+    <message>
+        <source>No boundary</source>
+        <translation>Pas de frontière</translation>
+    </message>
+    <message>
+        <source>Non CAO</source>
+        <translation>Autre que CAO</translation>
+    </message>
+    <message>
+        <source>Discrete boundary</source>
+        <translation>Frontière discrète</translation>
+    </message>
+    <message>
+        <source>Analytical boundary</source>
+        <translation>Frontière analytique</translation>
+    </message>
+    <message>
+        <source>Conformity type</source>
+        <translation>Type de conformité</translation>
+    </message>
+    <message>
+        <source>Conformal</source>
+        <translation>Conforme</translation>
+    </message>
+    <message>
+        <source>Non conformal</source>
+        <translation>Non conforme</translation>
+    </message>
+    <message>
+        <source>Non conformal option</source>
+        <translation>Option de non conformité</translation>
+    </message>
+    <message>
+        <source>Conformity +</source>
+        <translation>Conformité +</translation>
+    </message>
+    <message>
+        <source>Free</source>
+        <translation>Libre</translation>
+    </message>
+    <message>
+        <source>1 hanging node per mesh</source>
+        <translation>1 noeud pendant par maille</translation>
+    </message>
+    <message>
+        <source>1 node per edge</source>
+        <translation>1 noeud pendant par arête</translation>
+    </message>
+    <message>
+        <source>Advanced options</source>
+        <translation>Options avancées</translation>
+    </message>
+    <message>
+        <source>Authorized pyramids</source>
+        <translation>Pyramides autorisées</translation>
+    </message>
+    <message>
+        <source>Minimal diameter</source>
+        <translation>Diamètre minimal</translation>
+    </message>
+    <message>
+        <source>Initialization of adaptation</source>
+        <translation>Initialisation de l'adaptation</translation>
+    </message>
+    <message>
+        <source>Maximal level</source>
+        <translation>Niveau maximal</translation>
+    </message>
+    <message>
+        <source>Output of the level of refinement</source>
+        <translation>Sortie du niveau de raffinement</translation>
+    </message>
+    <message>
+        <source>Output of the qualities</source>
+        <translation>Sortie des qualités</translation>
+    </message>
+    <message>
+        <source>Output of the diameters</source>
+        <translation>Sortie des diamètres</translation>
+    </message>
+    <message>
+        <source>Output of the parents</source>
+        <translation>Sortie des parents</translation>
+    </message>
+    <message>
+        <source>Output of the neighbours</source>
+        <translation>Sortie des voisins</translation>
+    </message>
+    <message>
+        <source>Create an iteration</source>
+        <translation>Création d'une itération</translation>
+    </message>
+    <message>
+        <source>Iteration Name</source>
+        <translation>Nom de l'itération</translation>
+    </message>
+    <message>
+        <source>Previous iteration</source>
+        <translation>Itération précédente</translation>
+    </message>
+    <message>
+        <source>Invalid boundary</source>
+        <translation>Frontière non valable</translation>
+    </message>
+    <message>
+        <source>Invalid case</source>
+        <translation>Cas non valable</translation>
+    </message>
+    <message>
+        <source>Invalid case context</source>
+        <translation>Cas contextuel non valable</translation>
+    </message>
+    <message>
+        <source>Invalid hypothesis</source>
+        <translation>Hypothèse non valable</translation>
+    </message>
+    <message>
+        <source>Invalid iteration</source>
+        <translation>Itération non valable</translation>
+    </message>
+    <message>
+        <source>This boundary has already been defined.</source>
+        <translation>Cette frontière est déjà définie.</translation>
+    </message>
+    <message>
+        <source>This case has already been defined.</source>
+        <translation>Ce cas est déjà défini.</translation>
+    </message>
+    <message>
+        <source>This hypothesis has already been defined.</source>
+        <translation>Cette hypothèse est déjà définie.</translation>
+    </message>
+    <message>
+        <source>This iteration has already been defined.</source>
+        <translation>Cette itération est déjà définie.</translation>
+    </message>
+    <message>
+        <source>The parent iteration is not defined.</source>
+        <translation>L'itération parent n'est pas définie.</translation>
+    </message>
+    <message>
+        <source>Unable to create the iteration.</source>
+        <translation>Impossible de créer l'itération.</translation>
+    </message>
+    <message>
+        <source>The directory for the computation cannot be created.</source>
+        <translation>Impossible de créer le répertoire pour le calcul de l'itération.</translation>
+    </message>
+    <message>
+        <source>This iteration is the first of the case and cannot be computed.</source>
+        <translation>Cette itération définit le point de départ du cas. Elle ne peut pas être calculée.</translation>
+    </message>
+    <message>
+        <source>This iteration does not have any associated hypothesis.</source>
+        <translation>Cette itération n'est associée à aucune hypothèse.</translation>
+    </message>
+    <message>
+        <source>The mesh file does not exist.</source>
+        <translation>Le fichier du maillage n'existe pas.</translation>
+    </message>
+    <message>
+        <source>The mesh file cannot be deleted.</source>
+        <translation>Impossible de supprimer le fichier du maillage.</translation>
+    </message>
+    <message>
+        <source>Mesh n</source>
+        <translation>Maillage n</translation>
+    </message>
+    <message>
+        <source>Mesh n+1</source>
+        <translation>Maillage n+1</translation>
+    </message>
+    <message>
+        <source>Rank</source>
+        <translation>Numéro d'ordre</translation>
+    </message>
+    <message>
+        <source>Hypothesis</source>
+        <translation>Hypothèse</translation>
+    </message>
+    <message>
+        <source>Create a hypothesis</source>
+        <translation>Création d'une hypothèse</translation>
+    </message>
+    <message>
+        <source>HOM_HYPO_NAME</source>
+        <translation>Il faut donner un nom à l'hypothèse.</translation>
+    </message>
+    <message>
+        <source>HOM_HYPO_NORM_L2</source>
+        <translation>Norme L2</translation>
+    </message>
+    <message>
+        <source>HOM_HYPO_NORM_INF</source>
+        <translation>Norme infinie</translation>
+    </message>
+    <message>
+        <source>HOM_HYPO_NORM_ABS</source>
+        <translation>Absolu</translation>
+    </message>
+    <message>
+        <source>HOM_HYPO_NORM_REL</source>
+        <translation>Relatif</translation>
+    </message>
+    <message>
+        <source>HOM_HYPO_COMP</source>
+        <translation>Il faut choisir au moins une composante.</translation>
+    </message>
+    <message>
+        <source>HOM_HYPO_EDIT_WINDOW_TITLE</source>
+        <translation>Edition d'une hypothèse</translation>
+    </message>
+    <message>
+        <source>Type of adaptation</source>
+        <translation>Type d'adaptation</translation>
+    </message>
+    <message>
+        <source>Uniform</source>
+        <translation>Uniforme</translation>
+    </message>
+    <message>
+        <source>Uniform adaptation</source>
+        <translation>Adaptation uniforme</translation>
+    </message>
+    <message>
+        <source>Coarsening</source>
+        <translation>Déraffinement</translation>
+    </message>
+    <message>
+        <source>Refinement</source>
+        <translation>Raffinement</translation>
+    </message>
+    <message>
+        <source>Nothing</source>
+        <translation>Rien</translation>
+    </message>
+    <message>
+        <source>Jump between elements</source>
+        <translation>Saut entre éléments</translation>
+    </message>
+    <message>
+        <source>Component</source>
+        <translation>Composante</translation>
+    </message>
+    <message>
+        <source>Refinement threshold</source>
+        <translation>Seuil de raffinement</translation>
+    </message>
+    <message>
+        <source>Coarsening threshold</source>
+        <translation>Seuil de déraffinement</translation>
+    </message>
+    <message>
+        <source>Percentage of meshes</source>
+        <translation>Pourcentage de mailles</translation>
+    </message>
+    <message>
+        <source>Mean + n*(std deviation)</source>
+        <translation>Moyenne + n*(ecart-type)</translation>
+    </message>
+    <message>
+        <source>No refinement</source>
+        <translation>Sans raffinement</translation>
+    </message>
+    <message>
+        <source>Mean - n*(std deviation)</source>
+        <translation>Moyenne - n*(ecart-type)</translation>
+    </message>
+    <message>
+        <source>No coarsening</source>
+        <translation>Sans déraffinement</translation>
+    </message>
+    <message>
+        <source>Chosen</source>
+        <translation>Choisi</translation>
+    </message>
+    <message>
+        <source>Box</source>
+        <translation>Boîte</translation>
+    </message>
+    <message>
+        <source>Sphere</source>
+        <translation>Sphère</translation>
+    </message>
+    <message>
+        <source>Cylinder</source>
+        <translation>Cylindre</translation>
+    </message>
+    <message>
+        <source>Disk</source>
+        <translation>Disque</translation>
+    </message>
+    <message>
+        <source>Disk with hole</source>
+        <translation>Disque avec trou</translation>
+    </message>
+    <message>
+        <source>Pipe</source>
+        <translation>Tuyau</translation>
+    </message>
+    <message>
+        <source>Coordinates</source>
+        <translation>Coordonnées</translation>
+    </message>
+    <message>
+        <source>Get CAO</source>
+        <translation>Acquisition de la CAO</translation>
+    </message>
+    <message>
+        <source>Create an analytical boundary</source>
+        <translation>Création d'une frontière analytique</translation>
+    </message>
+    <message>
+        <source>Create a discrete boundary</source>
+        <translation>Création d'une frontière discrète</translation>
+    </message>
+    <message>
+        <source>Type of boundary</source>
+        <translation>Type de la frontière</translation>
+    </message>
+    <message>
+        <source>Torus</source>
+        <translation>Tore</translation>
+    </message>
+    <message>
+        <source>Radius</source>
+        <translation>Rayon</translation>
+    </message>
+    <message>
+        <source>Radius 1</source>
+        <translation>Rayon 1</translation>
+    </message>
+    <message>
+        <source>Radius 2</source>
+        <translation>Rayon 2</translation>
+    </message>
+    <message>
+        <source>External radius</source>
+        <translation>Rayon externe</translation>
+    </message>
+    <message>
+        <source>Internal radius</source>
+        <translation>Rayon interne</translation>
+    </message>
+    <message>
+        <source>Height</source>
+        <translation>Hauteur</translation>
+    </message>
+    <message>
+        <source>X axis</source>
+        <translation>X axe</translation>
+    </message>
+    <message>
+        <source>Y axis</source>
+        <translation>Y axe</translation>
+    </message>
+    <message>
+        <source>Z axis</source>
+        <translation>Z axe</translation>
+    </message>
+    <message>
+        <source>R revolution</source>
+        <translation>R révolution</translation>
+    </message>
+    <message>
+        <source>Primary R</source>
+        <translation>R primaire</translation>
+    </message>
+    <message>
+        <source>HOM_BOUN_NAME</source>
+        <translation>Il faut donner un nom à la frontière.</translation>
+    </message>
+    <message>
+        <source>HOM_BOUN_MESH</source>
+        <translation>Il faut choisir le fichier qui contient le maillage de la frontière discrète.</translation>
+    </message>
+    <message>
+        <source>HOM_BOUN_CAO</source>
+        <translation>Il faut choisir le fichier qui contient la CAO.</translation>
+    </message>
+    <message>
+        <source>HOM_BOUN_CASE</source>
+        <translation>Le fichier du maillage du cas est inconnu.</translation>
+    </message>
+    <message>
+        <source>HOM_AXE</source>
+        <translation>L'axe doit être un vecteur non nul.</translation>
+    </message>
+    <message>
+        <source>HOM_BOUN_C_EDIT_WINDOW_TITLE</source>
+        <translation>Edition d'une frontière basée sur une CAO</translation>
+    </message>
+    <message>
+        <source>HOM_BOUN_A_EDIT_WINDOW_TITLE</source>
+        <translation>Edition d'une frontière analytique</translation>
+    </message>
+    <message>
+        <source>HOM_BOUN_D_EDIT_WINDOW_TITLE</source>
+        <translation>Edition d'une frontière discrète</translation>
+    </message>
+    <message>
+        <source>HOM_GROU_EDIT_WINDOW_TITLE</source>
+        <translation>Groupes choisis</translation>
+    </message>
+    <message>
+        <source>The height must be positive.</source>
+        <translation>La hauteur doit être positive.</translation>
+    </message>
+    <message>
+        <source>The radius must be positive.</source>
+        <translation>Un rayon doit être positif.</translation>
+    </message>
+    <message>
+        <source>The axis must be a non 0 vector.</source>
+        <translation>L'axe doit être un vecteur non nul.</translation>
+    </message>
+    <message>
+        <source>The angle must be included higher than 0 degree and lower than 90 degrees.</source>
+        <translation>L'angle doit être compris entre 0 et 90 degrés.</translation>
+    </message>
+    <message>
+        <source>The radius must be different.</source>
+        <translation>Les rayons doivent être différents.</translation>
+    </message>
+    <message>
+        <source>The centers must be different.</source>
+        <translation>Les centres doivent être différents.</translation>
+    </message>
+    <message>
+        <source>The external radius must be higher than the internal radius.</source>
+        <translation>Le rayon externe doit être supérieur au rayon interne.</translation>
+    </message>
+    <message>
+        <source>The X coordinates are not coherent.</source>
+        <translation>Les coordonnées en X ne sont pas cohérentes.</translation>
+    </message>
+    <message>
+        <source>The Y coordinates are not coherent.</source>
+        <translation>Les coordonnées en Y ne sont pas cohérentes.</translation>
+    </message>
+    <message>
+        <source>The Z coordinates are not coherent.</source>
+        <translation>Les coordonnées en Z ne sont pas cohérentes.</translation>
+    </message>
+    <message>
+        <source>The first coordinates are not coherent.</source>
+        <translation>Les premières coordonnées ne sont pas cohérentes.</translation>
+    </message>
+    <message>
+        <source>The second coordinates are not coherent.</source>
+        <translation>Les secondes coordonnées ne sont pas cohérentes.</translation>
+    </message>
+    <message>
+        <source>The orientation must be 1, 2 or 3.</source>
+        <translation>L'orientation vaut 1, 2 ou 3.</translation>
+    </message>
+    <message>
+        <source>HOM_MESH_INFO_0</source>
+        <translation>Analyse de maillage</translation>
+    </message>
+    <message>
+        <source>HOM_MESH_INFO_1</source>
+        <translation>Choisir au moins une option.</translation>
+    </message>
+    <message>
+        <source>HOM_MESH_INFO_2</source>
+        <translation>Bilan de l'analyse dans l'arbre d'études, fichier </translation>
+    </message>
+    <message>
+        <source>Filtering with groups</source>
+        <translation>Filtrage par les groupes</translation>
+    </message>
+    <message>
+        <source>Selection of groups</source>
+        <translation>Choix des groupes</translation>
+    </message>
+    <message>
+        <source>Selected groups</source>
+        <translation>Groupes choisis</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Groupe</translation>
+    </message>
+    <message>
+        <source>Information on a mesh</source>
+        <translation>Analyse d'un maillage</translation>
+    </message>
+    <message>
+        <source>Group size</source>
+        <translation>Taille des domaines</translation>
+    </message>
+    <message>
+        <source>Quality</source>
+        <translation>Qualité</translation>
+    </message>
+    <message>
+        <source>Connection</source>
+        <translation>Connexité</translation>
+    </message>
+    <message>
+        <source>Diametre</source>
+        <translation>Diamètre</translation>
+    </message>
+    <message>
+        <source>Entanglement</source>
+        <translation>Interpénétration</translation>
+    </message>
+    <message>
+        <source>No change is allowed in a boundary. Ask for evolution.</source>
+        <translation>Impossible de changer une donnée dans une frontière. Demander une évolution.</translation>
+    </message>
+    <message>
+        <source>This boundary is used in a case and cannot be deleted.</source>
+        <translation>Cette frontière est utilisée dans un cas ; elle ne peut pas être détruite.</translation>
+    </message>
+    <message>
+        <source>This hypothesis is used and cannot be deleted.</source>
+        <translation>Cette hypothèse est utilisée dans une itération ; elle ne peut pas être détruite.</translation>
+    </message>
+    <message>
+        <source>This iteration cannot be deleted.</source>
+        <translation>Cette itération ne peut pas être détruite.</translation>
+    </message>
+    <message>
+        <source>The directory for the calculation cannot be cleared.</source>
+        <translation>Menage du repertoire de calcul impossible</translation>
+    </message>
+    <message>
+        <source>Starting point</source>
+        <translation>Point de départ</translation>
+    </message>
+    <message>
+        <source>From an iteration</source>
+        <translation>A partir d'une itération</translation>
+    </message>
+    <message>
+        <source>From a case</source>
+        <translation>A partir d'un cas</translation>
+    </message>
+    <message>
+        <source>Iteration into the case</source>
+        <translation>Choix d'une itération dans le cas</translation>
+    </message>
+    <message>
+        <source>Last iteration</source>
+        <translation>A partir de la dernière itération</translation>
+    </message>
+    <message>
+        <source>Iteration number</source>
+        <translation>A partir d'une itération numérotée</translation>
+    </message>
+    <message>
+        <source>The directory of the case does not exist.</source>
+        <translation>Le répertoire du cas n'existe pas.</translation>
+    </message>
+    <message>
+        <source>The directory for the case cannot be modified because some iterations are already defined.</source>
+        <translation>Impossible de changer le répertoire du cas car des itérations ont déjà été définies.</translation>
+    </message>
+    <message>
+        <source>The directory for the case cannot be reached.</source>
+        <translation>Impossible d'atteindre ce répertoire pour le cas.</translation>
+    </message>
+    <message>
+        <source>The starting point for the case cannot be copied into the working directory.</source>
+        <translation>Impossible de copier le point de départ du cas dans le répertoire de travail.</translation>
+    </message>
+    <message>
+        <source>The starting point for the case cannot be moved into the new directory.</source>
+        <translation>Impossible de déplacer le point de départ du cas dans le nouveau répertoire.</translation>
+    </message>
+    <message>
+        <source>The directory of the case for the pursuit does not exist.</source>
+        <translation>Le répertoire du cas de reprise n'existe pas.</translation>
+    </message>
+    <message>
+        <source>The directory of the iteration does not exist.</source>
+        <translation>Le répertoire de l'itération de reprise n'existe pas.</translation>
+    </message>
+    <message>
+        <source>The number of iteration must be positive.</source>
+        <translation>Le numéro de l'itération doit etre positif.</translation>
+    </message>
+    <message>
+        <source>Number of iteration</source>
+        <translation>Numéro de l'itération</translation>
+    </message>
+    <message>
+        <source>Case</source>
+        <translation>Cas</translation>
+    </message>
+    <message>
+        <source>Mesh file</source>
+        <translation>Maillage initial</translation>
+    </message>
+    <message>
+        <source>Constant</source>
+        <translation>Constant</translation>
+    </message>
+    <message>
+        <source>Variable</source>
+        <translation>Variable</translation>
+    </message>
+    <message>
+        <source>Type of schema</source>
+        <translation>Type de schema</translation>
+    </message>
+    <message>
+        <source>Maximum of ...</source>
+        <translation>Maximum de ...</translation>
+    </message>
+    <message>
+        <source>Iterations</source>
+        <translation>Itérations</translation>
+    </message>
+    <message>
+        <source>Nodes</source>
+        <translation>Noeuds</translation>
+    </message>
+    <message>
+        <source>Elements</source>
+        <translation>Eléments</translation>
+    </message>
+    <message>
+        <source>Test of convergence</source>
+        <translation>Test de convergence</translation>
+    </message>
+    <message>
+        <source>Edit a file</source>
+        <translation>Affichage d'un fichier</translation>
+    </message>
+    <message>
+        <source>Print</source>
+        <translation>Imprimer</translation>
+    </message>
+    <message>
+        <source>Invalid study context</source>
+        <translation>Etude contextuelle non valable</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_GENERAL</source>
+        <translation>Général</translation>
+    </message>
+    <message>
+        <source>PREF_PUBLICATION</source>
+        <translation>Publication</translation>
+    </message>
+    <message>
+        <source>PREF_PUBLICATION_MAILLAGE_IN</source>
+        <translation>Les maillages d'entrée</translation>
+    </message>
+    <message>
+        <source>PREF_PUBLICATION_MAILLAGE_OUT</source>
+        <translation>Les maillages de sortie</translation>
+    </message>
+</context>
+</TS>
diff --git a/src/SMESHGUI/SMESHGUI_Homard_msg_ja.ts b/src/SMESHGUI/SMESHGUI_Homard_msg_ja.ts
new file mode 100644 (file)
index 0000000..94cd094
--- /dev/null
@@ -0,0 +1,868 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ja" sourcelanguage="en">
+  <context>
+    <name>@default</name>
+    <message>
+      <source>HOM_WARNING</source>
+      <translation>警告</translation>
+    </message>
+    <message>
+      <source>HOM_ERROR</source>
+      <translation>エラー</translation>
+    </message>
+    <message>
+      <source>HOM_INACTIVE_BUTTON</source>
+      <translation>アクティブでないボタン</translation>
+    </message>
+    <message>
+      <source>OK</source>
+      <translation>Ok</translation>
+    </message>
+    <message>
+      <source>Apply</source>
+      <translation>適用</translation>
+    </message>
+    <message>
+      <source>Cancel</source>
+      <translation>キャンセル</translation>
+    </message>
+    <message>
+      <source>Help</source>
+      <translation>ヘルプ</translation>
+    </message>
+    <message>
+      <source>New</source>
+      <translation>新規</translation>
+    </message>
+    <message>
+      <source>Edit</source>
+      <translation>編集</translation>
+    </message>
+    <message>
+      <source>Quit</source>
+      <translation>終了</translation>
+    </message>
+    <message>
+      <source>Name</source>
+      <translation>名前</translation>
+    </message>
+    <message>
+      <source>Directory</source>
+      <translation>ディレクトリ</translation>
+    </message>
+    <message>
+      <source>Mesh</source>
+      <translation>メッシュ</translation>
+    </message>
+    <message>
+      <source>Selection</source>
+      <translation>選択</translation>
+    </message>
+    <message>
+      <source>None</source>
+      <translation>なし</translation>
+    </message>
+    <message>
+      <source>All</source>
+      <translation>全て</translation>
+    </message>
+    <message>
+      <source>HOM_SELECT_OBJECT_1</source>
+      <translation>オブジェクトを選択します。</translation>
+    </message>
+    <message>
+      <source>HOM_SELECT_OBJECT_2</source>
+      <translation>1 つのオブジェクトを選択します。</translation>
+    </message>
+    <message>
+      <source>HOM_SELECT_OBJECT_3</source>
+      <translation>型 %1 のオブジェクトを選択します。</translation>
+    </message>
+    <message>
+      <source>HOM_SELECT_OBJECT_4</source>
+      <translation>The name of the object is already selected. Modify it or cancel.</translation>
+    </message>
+    <message>
+      <source>HOM_SELECT_FILE_0</source>
+      <translation>ファイル選択</translation>
+    </message>
+    <message>
+      <source>HOM_SELECT_FILE_1</source>
+      <translation>ファイルを選択します。</translation>
+    </message>
+    <message>
+      <source>HOM_SELECT_FILE_2</source>
+      <translation>1 つのファイルを選択します。</translation>
+    </message>
+    <message>
+      <source>HOM_SELECT_FILE_3</source>
+      <translation>このファイルを開くことができません。</translation>
+    </message>
+    <message>
+      <source>HOM_SCRIPT_FILE</source>
+      <translation>我々 は python スクリプトにファイルを与える必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_MED_FILE_1</source>
+      <translation>この医学ファイルは読み取り不可能です。</translation>
+    </message>
+    <message>
+      <source>HOM_MED_FILE_2</source>
+      <translation>この医学のファイルには、メッシュが含まれていません。</translation>
+    </message>
+    <message>
+      <source>HOM_MED_FILE_3</source>
+      <translation>この医学のファイルにはよりも 1 つのメッシュが含まれています。</translation>
+    </message>
+    <message>
+      <source>HOM_MED_FILE_4</source>
+      <translation>音楽配信マック & ファイルのメッシュを読み取れませんでした。</translation>
+    </message>
+    <message>
+      <source>HOM_MED_FILE_5</source>
+      <translation>この医学のファイルには、フィールドが含まれていません。</translation>
+    </message>
+    <message>
+      <source>HOM_MED_FILE_6</source>
+      <translation>医学ファイル (秒) (秒) フィールドを読み取ることができません。</translation>
+    </message>
+    <message>
+      <source>HOM_SELECT_STUDY</source>
+      <translation>研究医 associe
+ のファイルを選択または医学ファイルを選択します。</translation>
+    </message>
+    <message>
+      <source>Create a case</source>
+      <translation>ケースの作成</translation>
+    </message>
+    <message>
+      <source>HOM_CASE_NAME</source>
+      <translation>場合に名前を付ける必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_CASE_DIRECTORY_1</source>
+      <translation>1 つの場合を動作するようにディレクトリを選択する必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_CASE_DIRECTORY_2</source>
+      <translation>このディレクトリは、既に使用中です。</translation>
+    </message>
+    <message>
+      <source>HOM_CASE_DIRECTORY_3</source>
+      <translation>有効なディレクトリを選択する必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_CASE_DIRECTORY_4</source>
+      <translation>計算のための作業ディレクトリを選択する必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_START_DIRECTORY_1</source>
+      <translation>追跡のため開始点を選択する必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_START_DIRECTORY_3</source>
+      <translation>追跡のため有効な方向を選択する必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_CASE_MESH</source>
+      <translation>1 つは、初期のメッシュを選択する必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_CASE_GROUP</source>
+      <translation>グループ"%1"は、以上の境界線に割り当てることはできません。</translation>
+    </message>
+    <message>
+      <source>HOM_CASE_EDIT_WINDOW_TITLE</source>
+      <translation>場合の編集</translation>
+    </message>
+    <message>
+      <source>HOM_CASE_EDIT_STATE_0</source>
+      <translation>初期メッシュ。</translation>
+    </message>
+    <message>
+      <source>HOM_CASE_EDIT_STATE</source>
+      <translation>イテレーションの継続。</translation>
+    </message>
+    <message>
+      <source>HOM_CASE_PURSUE_WINDOW_TITLE</source>
+      <translation>イテレーションの追跡</translation>
+    </message>
+    <message>
+      <source>The configuration file cannot be found.</source>
+      <translation>コンフィギュレーションファイルが見つかりません。</translation>
+    </message>
+    <message>
+      <source>The configuration file cannot be read.</source>
+      <translation>コンフィギュレーションファイルが読み込めません。</translation>
+    </message>
+    <message>
+      <source>The HOMARD mesh file cannot be found.</source>
+      <translation>HOMARDメッシュファイルが見つかりません。</translation>
+    </message>
+    <message>
+      <source>HOM_ITER_NAME</source>
+      <translation>名前を反復処理する必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_ITER_STARTING_POINT</source>
+      <translation>これは、前のイテレーションを指定する必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_ITER_MESH</source>
+      <translation>最終的なメッシュの名前。</translation>
+    </message>
+    <message>
+      <source>HOM_ITER_HYPO</source>
+      <translation>仮説を選択します。</translation>
+    </message>
+    <message>
+      <source>HOM_ITER_STARTING_POINT_0</source>
+      <translation>メッシュ</translation>
+    </message>
+    <message>
+      <source>HOM_ITER_STARTING_POINT_1</source>
+      <translation>ケースの最初のイテレーションです。</translation>
+    </message>
+    <message>
+      <source>HOM_ITER_STARTING_POINT_2</source>
+      <translation>検察側の事件の最初のイテレーションです。</translation>
+    </message>
+    <message>
+      <source>HOM_ITER_EDIT_WINDOW_TITLE</source>
+      <translation>イテレーションの編集</translation>
+    </message>
+    <message>
+      <source>Discrete boundary</source>
+      <translation>離散境界</translation>
+    </message>
+    <message>
+      <source>Analytical boundary</source>
+      <translation>解析的境界</translation>
+    </message>
+    <message>
+      <source>Conformity type</source>
+      <translation>適合タイプ</translation>
+    </message>
+    <message>
+      <source>Conformal</source>
+      <translation>等角</translation>
+    </message>
+    <message>
+      <source>Non conformal</source>
+      <translation>非共形</translation>
+    </message>
+    <message>
+      <source>Non conformal option</source>
+      <translation>非共形オプション</translation>
+    </message>
+    <message>
+      <source>Conformity +</source>
+      <translation>適合性 +</translation>
+    </message>
+    <message>
+      <source>Free</source>
+      <translation>Free</translation>
+    </message>
+    <message>
+      <source>1 hanging node per mesh</source>
+      <translation>メッシュあたりの1接続節点</translation>
+    </message>
+    <message>
+      <source>1 node per edge</source>
+      <translation>エッジ辺りの1節点</translation>
+    </message>
+    <message>
+      <source>Advanced options</source>
+      <translation>詳細オプション</translation>
+    </message>
+    <message>
+      <source>Authorized pyramids</source>
+      <translation>認定済みピラミッド</translation>
+    </message>
+    <message>
+      <source>Minimal diameter</source>
+      <translation>最小径</translation>
+    </message>
+    <message>
+      <source>Initialization of adaptation</source>
+      <translation>適応の初期化</translation>
+    </message>
+    <message>
+      <source>Maximal level</source>
+      <translation>最大レベル</translation>
+    </message>
+    <message>
+      <source>Output of the level of refinement</source>
+      <translation>リファインレベルの出力</translation>
+    </message>
+    <message>
+      <source>Output of the qualities</source>
+      <translation>品質の出力</translation>
+    </message>
+    <message>
+      <source>Output of the diameters</source>
+      <translation>直径の出力</translation>
+    </message>
+    <message>
+      <source>Output of the parents</source>
+      <translation>親直径の出力</translation>
+    </message>
+    <message>
+      <source>Output of the neighbours</source>
+      <translation>隣の直径の出力</translation>
+    </message>
+    <message>
+      <source>Create an iteration</source>
+      <translation>イテレーションの作成</translation>
+    </message>
+    <message>
+      <source>Iteration Name</source>
+      <translation>イテレーションの名前</translation>
+    </message>
+    <message>
+      <source>Previous iteration</source>
+      <translation>以前のイテレーション</translation>
+    </message>
+    <message>
+      <source>Invalid boundary</source>
+      <translation>無効な境界</translation>
+    </message>
+    <message>
+      <source>Invalid case</source>
+      <translation>無効なケース</translation>
+    </message>
+    <message>
+      <source>Invalid case context</source>
+      <translation>ケースの内容が無効です</translation>
+    </message>
+    <message>
+      <source>Invalid hypothesis</source>
+      <translation>無効なhypothesis</translation>
+    </message>
+    <message>
+      <source>Invalid iteration</source>
+      <translation>無効なイテレーション</translation>
+    </message>
+    <message>
+      <source>This boundary has already been defined.</source>
+      <translation>この境界は既に定義されています。</translation>
+    </message>
+    <message>
+      <source>This case has already been defined.</source>
+      <translation>このケースは既に定義されています。</translation>
+    </message>
+    <message>
+      <source>This hypothesis has already been defined.</source>
+      <translation>このhypothesisは既に定義されています。</translation>
+    </message>
+    <message>
+      <source>This iteration has already been defined.</source>
+      <translation>このイテレーションは既に定義されています。</translation>
+    </message>
+    <message>
+      <source>The parent iteration is not defined.</source>
+      <translation>親イテレーションは、定義されていません。</translation>
+    </message>
+    <message>
+      <source>Unable to create the iteration.</source>
+      <translation>イテレーションを作成することができません。</translation>
+    </message>
+    <message>
+      <source>The directory for the computation cannot be created.</source>
+      <translation>計算のためのディレクトリを作成できません。</translation>
+    </message>
+    <message>
+      <source>This iteration is the first of the case and cannot be computed.</source>
+      <translation>このイタレーションはケースの最初であり、計算できません。</translation>
+    </message>
+    <message>
+      <source>This iteration does not have any associated hypothesis.</source>
+      <translation>このイタレーションは関連した hypothesis がありません。</translation>
+    </message>
+    <message>
+      <source>The mesh file does not exist.</source>
+      <translation>メッシュ ファイルは存在しません。</translation>
+    </message>
+    <message>
+      <source>The mesh file cannot be deleted.</source>
+      <translation>メッシュ ファイルを削除できません。</translation>
+    </message>
+    <message>
+      <source>Mesh n</source>
+      <translation>メッシュ n</translation>
+    </message>
+    <message>
+      <source>Mesh n+1</source>
+      <translation>メッシュ n + 1</translation>
+    </message>
+    <message>
+      <source>Rank</source>
+      <translation>ランク</translation>
+    </message>
+    <message>
+      <source>Hypothesis</source>
+      <translation>Hypothesis</translation>
+    </message>
+    <message>
+      <source>Create a hypothesis</source>
+      <translation>hypothesis の作成</translation>
+    </message>
+    <message>
+      <source>HOM_HYPO_NAME</source>
+      <translation>仮説に名前を付ける必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_HYPO_NORM_L2</source>
+      <translation>標準の L2</translation>
+    </message>
+    <message>
+      <source>HOM_HYPO_NORM_INF</source>
+      <translation>無限の標準</translation>
+    </message>
+    <message>
+      <source>HOM_HYPO_NORM_ABS</source>
+      <translation>絶対値</translation>
+    </message>
+    <message>
+      <source>HOM_HYPO_NORM_REL</source>
+      <translation>関係</translation>
+    </message>
+    <message>
+      <source>HOM_HYPO_COMP</source>
+      <translation>1 つ以上のコンポーネントを選択する必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_HYPO_EDIT_WINDOW_TITLE</source>
+      <translation>仮説の編集</translation>
+    </message>
+    <message>
+      <source>Type of adaptation</source>
+      <translation>適合のタイプ</translation>
+    </message>
+    <message>
+      <source>Uniform</source>
+      <translation>均一</translation>
+    </message>
+    <message>
+      <source>Uniform adaptation</source>
+      <translation>均一な適応</translation>
+    </message>
+    <message>
+      <source>Refinement</source>
+      <translation>リファインメント</translation>
+    </message>
+    <message>
+      <source>Nothing</source>
+      <translation>なし</translation>
+    </message>
+    <message>
+      <source>Jump between elements</source>
+      <translation>要素間ジャンプ</translation>
+    </message>
+    <message>
+      <source>Component</source>
+      <translation>コンポーネント</translation>
+    </message>
+    <message>
+      <source>Refinement threshold</source>
+      <translation>リファインメント閾値</translation>
+    </message>
+    <message>
+      <source>Coarsening threshold</source>
+      <translation>粗大化閾値</translation>
+    </message>
+    <message>
+      <source>Percentage of meshes</source>
+      <translation>メッシュの割合</translation>
+    </message>
+    <message>
+      <source>Mean + n*(std deviation)</source>
+      <translation>平均 + n * (標準偏差)</translation>
+    </message>
+    <message>
+      <source>No refinement</source>
+      <translation>リファインメントなし</translation>
+    </message>
+    <message>
+      <source>Mean - n*(std deviation)</source>
+      <translation>平均 - n * (標準偏差)</translation>
+    </message>
+    <message>
+      <source>No coarsening</source>
+      <translation>粗大化なし</translation>
+    </message>
+    <message>
+      <source>Chosen</source>
+      <translation>選択済み</translation>
+    </message>
+    <message>
+      <source>Box</source>
+      <translation>Box</translation>
+    </message>
+    <message>
+      <source>Sphere</source>
+      <translation>球</translation>
+    </message>
+    <message>
+      <source>Cylinder</source>
+      <translation>円筒</translation>
+    </message>
+    <message>
+      <source>Disk</source>
+      <translation>円盤</translation>
+    </message>
+    <message>
+      <source>Disk with hole</source>
+      <translation>穴付き円盤</translation>
+    </message>
+    <message>
+      <source>Pipe</source>
+      <translation>パイプ</translation>
+    </message>
+    <message>
+      <source>Coordinates</source>
+      <translation>座標</translation>
+    </message>
+    <message>
+      <source>Create an analytical boundary</source>
+      <translation>分析境界の作成</translation>
+    </message>
+    <message>
+      <source>Create a discrete boundary</source>
+      <translation>離散境界の作成</translation>
+    </message>
+    <message>
+      <source>Type of boundary</source>
+      <translation>境界のタイプ</translation>
+    </message>
+    <message>
+      <source>Torus</source>
+      <translation>環状体</translation>
+    </message>
+    <message>
+      <source>Radius</source>
+      <translation>半径</translation>
+    </message>
+    <message>
+      <source>Radius 1</source>
+      <translation>半径1</translation>
+    </message>
+    <message>
+      <source>Radius 2</source>
+      <translation>半径2</translation>
+    </message>
+    <message>
+      <source>External radius</source>
+      <translation>外半径</translation>
+    </message>
+    <message>
+      <source>Internal radius</source>
+      <translation>内半径</translation>
+    </message>
+    <message>
+      <source>Height</source>
+      <translation>高さ</translation>
+    </message>
+    <message>
+      <source>X axis</source>
+      <translation>X 軸</translation>
+    </message>
+    <message>
+      <source>Y axis</source>
+      <translation>Y 軸</translation>
+    </message>
+    <message>
+      <source>Z axis</source>
+      <translation>Z 軸</translation>
+    </message>
+    <message>
+      <source>R revolution</source>
+      <translation>R 回転</translation>
+    </message>
+    <message>
+      <source>Primary R</source>
+      <translation>主 R</translation>
+    </message>
+    <message>
+      <source>HOM_BOUN_NAME</source>
+      <translation>名前の国境に与えする必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_BOUN_MESH</source>
+      <translation>1 つの枠を含むメッシュを選択する必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_BOUN_CASE</source>
+      <translation>場合ファイルのメッシュが知られています。</translation>
+    </message>
+    <message>
+      <source>HOM_AXE</source>
+      <translation>軸は、ゼロ以外のベクトルでなければなりません。</translation>
+    </message>
+    <message>
+      <source>HOM_BOUN_A_EDIT_WINDOW_TITLE</source>
+      <translation>分析のフロンティアの編集</translation>
+    </message>
+    <message>
+      <source>HOM_BOUN_D_EDIT_WINDOW_TITLE</source>
+      <translation>離散境界の編集</translation>
+    </message>
+    <message>
+      <source>HOM_GROU_EDIT_WINDOW_TITLE</source>
+      <translation>選択したグループ</translation>
+    </message>
+    <message>
+      <source>The height must be positive.</source>
+      <translation>高さは正でなければなりません。</translation>
+    </message>
+    <message>
+      <source>The radius must be positive.</source>
+      <translation>半径は正でなければなりません。</translation>
+    </message>
+    <message>
+      <source>The axis must be a non 0 vector.</source>
+      <translation>軸は非 0 のベクトルでなければなりません。</translation>
+    </message>
+    <message>
+      <source>The angle must be included higher than 0 degree and lower than 90 degrees.</source>
+      <translation>角度は0 °よりも大きく 90 °未満である必要があります。</translation>
+    </message>
+    <message>
+      <source>The radius must be different.</source>
+      <translation>半径が異なる必要があります。</translation>
+    </message>
+    <message>
+      <source>The centers must be different.</source>
+      <translation>中心が異なる必要があります。</translation>
+    </message>
+    <message>
+      <source>The external radius must be higher than the internal radius.</source>
+      <translation>外部の半径は内部の半径より大きい必要があります。</translation>
+    </message>
+    <message>
+      <source>The X coordinates are not coherent.</source>
+      <translation>X座標は論理上問題があります。</translation>
+    </message>
+    <message>
+      <source>The Y coordinates are not coherent.</source>
+      <translation>Y座標は論理上問題があります。</translation>
+    </message>
+    <message>
+      <source>The Z coordinates are not coherent.</source>
+      <translation>Z座標は論理上問題があります。</translation>
+    </message>
+    <message>
+      <source>The first coordinates are not coherent.</source>
+      <translation>最初の座標に論理上問題があります。</translation>
+    </message>
+    <message>
+      <source>The second coordinates are not coherent.</source>
+      <translation>2番目の座標に論理上問題があります。</translation>
+    </message>
+    <message>
+      <source>The orientation must be 1, 2 or 3.</source>
+      <translation>方向は1、2、3のどれかにする必要があります。</translation>
+    </message>
+    <message>
+      <source>HOM_MESH_INFO_0</source>
+      <translation>メッシュの解析</translation>
+    </message>
+    <message>
+      <source>HOM_MESH_INFO_1</source>
+      <translation>少なくとも 1 つのオプションを選択します。</translation>
+    </message>
+    <message>
+      <source>HOM_MESH_INFO_2</source>
+      <translation>バランス シート分析結果をスタディ ツリーで、ファイル</translation>
+    </message>
+    <message>
+      <source>Filtering with groups</source>
+      <translation>グループでフィルタリング</translation>
+    </message>
+    <message>
+      <source>Selection of groups</source>
+      <translation>グループの選択</translation>
+    </message>
+    <message>
+      <source>Selected groups</source>
+      <translation>選択されたグループ</translation>
+    </message>
+    <message>
+      <source>Group</source>
+      <translation>グループ :</translation>
+    </message>
+    <message>
+      <source>Information on a mesh</source>
+      <translation>メッシュに関する情報</translation>
+    </message>
+    <message>
+      <source>Group size</source>
+      <translation>グループのサイズ</translation>
+    </message>
+    <message>
+      <source>Quality</source>
+      <translation>品質</translation>
+    </message>
+    <message>
+      <source>Connection</source>
+      <translation>接続</translation>
+    </message>
+    <message>
+      <source>Diametre</source>
+      <translation>直径</translation>
+    </message>
+    <message>
+      <source>Entanglement</source>
+      <translation>縺れ合い</translation>
+    </message>
+    <message>
+      <source>No change is allowed in a boundary. Ask for evolution.</source>
+      <translation>境界内に許可された変更はありません。旋回について尋ねます。</translation>
+    </message>
+    <message>
+      <source>This boundary is used in a case and cannot be deleted.</source>
+      <translation>この境界はケースで使用されており、削除できません。</translation>
+    </message>
+    <message>
+      <source>This hypothesis is used and cannot be deleted.</source>
+      <translation>このhypothesisは使用されており、削除できません。</translation>
+    </message>
+    <message>
+      <source>This iteration cannot be deleted.</source>
+      <translation>このイテレーションは削除できません。</translation>
+    </message>
+    <message>
+      <source>The directory for the calculation cannot be cleared.</source>
+      <translation>計算用ディレクトリは削除できません。</translation>
+    </message>
+    <message>
+      <source>Starting point</source>
+      <translation>始点</translation>
+    </message>
+    <message>
+      <source>From an iteration</source>
+      <translation>イテレーションから</translation>
+    </message>
+    <message>
+      <source>From a case</source>
+      <translation>ケースから</translation>
+    </message>
+    <message>
+      <source>Iteration into the case</source>
+      <translation>ケースへのイテレーション</translation>
+    </message>
+    <message>
+      <source>Last iteration</source>
+      <translation>最後のイテレーション</translation>
+    </message>
+    <message>
+      <source>Iteration number</source>
+      <translation>イテレーション数</translation>
+    </message>
+    <message>
+      <source>The directory of the case does not exist.</source>
+      <translation>ケースのディレクトリは存在しません。</translation>
+    </message>
+    <message>
+      <source>The directory for the case cannot be modified because some iterations are already defined.</source>
+      <translation>いくつかのイテレーションが既に定義されているため、ケースのディレクトリを変更できません。</translation>
+    </message>
+    <message>
+      <source>The directory for the case cannot be reached.</source>
+      <translation>ケースのディレクトリに到達できません。</translation>
+    </message>
+    <message>
+      <source>The starting point for the case cannot be copied into the working directory.</source>
+      <translation>ケースの開始点は作業ディレクトリにコピーできません。</translation>
+    </message>
+    <message>
+      <source>The starting point for the case cannot be moved into the new directory.</source>
+      <translation>ケースの開始点は新しいディレクトリに移動できません。</translation>
+    </message>
+    <message>
+      <source>The directory of the case for the pursuit does not exist.</source>
+      <translation>追跡用ケースのディレクトリは存在しません。</translation>
+    </message>
+    <message>
+      <source>The directory of the iteration does not exist.</source>
+      <translation>イテレーションのディレクトリが存在しません。</translation>
+    </message>
+    <message>
+      <source>The number of iteration must be positive.</source>
+      <translation>イテレーション数は正である必要があります。</translation>
+    </message>
+    <message>
+      <source>Number of iteration</source>
+      <translation>イテレーション数</translation>
+    </message>
+    <message>
+      <source>Case</source>
+      <translation>ケース</translation>
+    </message>
+    <message>
+      <source>Mesh file</source>
+      <translation>メッシュファイル</translation>
+    </message>
+    <message>
+      <source>Constant</source>
+      <translation>定数</translation>
+    </message>
+    <message>
+      <source>Variable</source>
+      <translation>変数</translation>
+    </message>
+    <message>
+      <source>Type of schema</source>
+      <translation>スキーマタイプ</translation>
+    </message>
+    <message>
+      <source>Maximum of ...</source>
+      <translation>最大の...</translation>
+    </message>
+    <message>
+      <source>Iterations</source>
+      <translation>イテレーション</translation>
+    </message>
+    <message>
+      <source>Nodes</source>
+      <translation>節点</translation>
+    </message>
+    <message>
+      <source>Elements</source>
+      <translation>要素</translation>
+    </message>
+    <message>
+      <source>Test of convergence</source>
+      <translation>収束テスト</translation>
+    </message>
+    <message>
+      <source>Edit a file</source>
+      <translation>ファイルの編集</translation>
+    </message>
+    <message>
+      <source>Print</source>
+      <translation>印刷</translation>
+    </message>
+    <message>
+      <source>Invalid study context</source>
+      <translation>無効なスタディの内容</translation>
+    </message>
+    <message>
+      <source>PREF_TAB_GENERAL</source>
+      <translation>一般的な</translation>
+    </message>
+    <message>
+      <source>PREF_PUBLICATION</source>
+      <translation>発行</translation>
+    </message>
+    <message>
+      <source>PREF_PUBLICATION_MAILLAGE_IN</source>
+      <translation>メッシュ入力</translation>
+    </message>
+    <message>
+      <source>PREF_PUBLICATION_MAILLAGE_OUT</source>
+      <translation>メッシュ出力</translation>
+    </message>
+  </context>
+</TS>
index 0b85bd47af19151efa468da5b2c7445ce976dc8b..4e206fe07c717cd2ce46b9022a7e9e1a4b0bbb59 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 49c3025141bcd703dc9b056a2ab6127928b6670d..2cde76518a93d92777af37c52d3e54ec8012a047 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 3e5bd4122356a4165bb8d7ebea733a47d773431b..8a07c2b9b206b7bd60e86e4946c2270f445b1951 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -34,7 +34,8 @@
 #include "SMESHGUI_VTKUtils.h"
 #include "SMESHGUI_XmlHandler.h"
 
-#include "SMESH_Actor.h"
+#include <SMESH_Actor.h>
+#include <SMESH_TryCatch.hxx>
 
 // SALOME GUI includes
 #include <SUIT_Desktop.h>
  #define env_sep ":"
 #endif // WIN32
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
-
 namespace SMESH
 {
   typedef IMap<QString,HypothesisData*> THypothesisDataMap;
@@ -496,7 +491,7 @@ namespace SMESH
 
   SMESHGUI_GenericHypothesisCreator* GetHypothesisCreator(const QString& aHypType)
   {
-    if(MYDEBUG) MESSAGE("Get HypothesisCreator for " << aHypType.toLatin1().data());
+    MESSAGE("Get HypothesisCreator for " << aHypType.toLatin1().data());
 
     SMESHGUI_GenericHypothesisCreator* aCreator = 0;
 
@@ -521,7 +516,7 @@ namespace SMESH
       // 3. Load Client Plugin Library
       try {
         // load plugin library
-        if(MYDEBUG) MESSAGE("Loading client meshers plugin library ...");
+        MESSAGE("Loading client meshers plugin library ...");
 #ifdef WIN32
 #ifdef UNICODE
         LPTSTR path = new TCHAR[aClientLibName.length() + 1];
@@ -551,21 +546,21 @@ namespace SMESH
         }
         else {
           // get method, returning hypothesis creator
-          if(MYDEBUG) MESSAGE("Find GetHypothesisCreator() method ...");
+          MESSAGE("Find GetHypothesisCreator() method ...");
           typedef SMESHGUI_GenericHypothesisCreator* (*GetHypothesisCreator) \
             ( const QString& );
           GetHypothesisCreator procHandle =
             (GetHypothesisCreator)GetProc(libHandle, "GetHypothesisCreator");
           if (!procHandle) {
-            if(MYDEBUG) MESSAGE("bad hypothesis client plugin library");
+            MESSAGE("bad hypothesis client plugin library");
             UnLoadLib(libHandle);
           }
           else {
             // get hypothesis creator
-            if(MYDEBUG) MESSAGE("Get Hypothesis Creator for " << aHypType.toLatin1().data());
+            MESSAGE("Get Hypothesis Creator for " << aHypType.toLatin1().data());
             aCreator = procHandle( aHypType );
             if (!aCreator) {
-              if(MYDEBUG) MESSAGE("no such a hypothesis in this plugin");
+              MESSAGE("no such a hypothesis in this plugin");
             }
             else {
               // map hypothesis creator to a hypothesis name
@@ -594,7 +589,7 @@ namespace SMESH
                                                const QString& aHypName,
                                                const bool /*isAlgo*/)
   {
-    if(MYDEBUG) MESSAGE("Create " << aHypType.toLatin1().data() <<
+    MESSAGE("Create " << aHypType.toLatin1().data() <<
                         " with name " << aHypName.toLatin1().data());
     HypothesisData* aHypData = GetHypothesisData(aHypType);
     QString aServLib = aHypData->ServerLibName;
@@ -628,16 +623,19 @@ namespace SMESH
 
     HypothesisData* aHypData = GetHypothesisData(aHypType);
     QString aServLib = aHypData->ServerLibName;
+    SMESH_TRY;
     return SMESHGUI::GetSMESHGen()->IsApplicable( aHypType.toLatin1().data(),
                                                   aServLib.toUtf8().data(),
                                                   theGeomObject,
                                                   toCheckAll);
+    SMESH_CATCH( SMESH::printErrorInDebugMode );
+    return false;
   }
 
 
   bool AddHypothesisOnMesh (SMESH::SMESH_Mesh_ptr aMesh, SMESH::SMESH_Hypothesis_ptr aHyp)
   {
-    if(MYDEBUG) MESSAGE ("SMESHGUI::AddHypothesisOnMesh");
+    MESSAGE ("SMESHGUI::AddHypothesisOnMesh");
     int res = SMESH::HYP_UNKNOWN_FATAL;
     SUIT_OverrideCursor wc;
 
@@ -647,6 +645,7 @@ namespace SMESH
       try {
         CORBA::String_var error;
         res = aMesh->AddHypothesis(aShapeObject, aHyp, error.out());
+        UpdateViewer(aMesh);
         if (res > SMESH::HYP_OK) {
           wc.suspend();
           processHypothesisStatus(res, aHyp, true, error.in() );
@@ -665,7 +664,7 @@ namespace SMESH
 
   bool AddHypothesisOnSubMesh (SMESH::SMESH_subMesh_ptr aSubMesh, SMESH::SMESH_Hypothesis_ptr aHyp)
   {
-    if(MYDEBUG) MESSAGE("SMESHGUI::AddHypothesisOnSubMesh() ");
+    MESSAGE("SMESHGUI::AddHypothesisOnSubMesh() ");
     int res = SMESH::HYP_UNKNOWN_FATAL;
     SUIT_OverrideCursor wc;
 
@@ -678,6 +677,7 @@ namespace SMESH
         {
           CORBA::String_var error;
           res = aMesh->AddHypothesis( aShapeObject, aHyp, error.out() );
+          UpdateViewer(aMesh);
           if (res > SMESH::HYP_OK) {
             wc.suspend();
             processHypothesisStatus( res, aHyp, true, error.in() );
@@ -766,12 +766,7 @@ namespace SMESH
             processHypothesisStatus(res, anHyp, false);
             wc.resume();
           }
-          if ( _PTR(SObject) meshSO = SMESH::FindSObject(aMesh) )
-          {
-            if ( SMESH_Actor* actor = SMESH::FindActorByEntry( meshSO->GetID().c_str() ))
-              if( actor->GetVisibility() )
-                actor->Update();
-          }
+          UpdateViewer(aMesh);
         }
       } catch(const SALOME::SALOME_Exception& S_ex) {
         wc.suspend();
@@ -780,6 +775,16 @@ namespace SMESH
       }
     }
     return res < SMESH::HYP_UNKNOWN_FATAL;
+  } 
+
+  void UpdateViewer(SMESH::SMESH_Mesh_ptr theMesh)
+  {
+    if (_PTR(SObject) meshSO = SMESH::FindSObject(theMesh))
+    {
+      if (SMESH_Actor* actor = SMESH::FindActorByEntry(meshSO->GetID().c_str()))
+        if (actor->GetVisibility())
+          actor->Update();
+    }
   }
 
   SObjectList GetMeshesUsingAlgoOrHypothesis(SMESH::SMESH_Hypothesis_ptr AlgoOrHyp)
@@ -793,7 +798,7 @@ namespace SMESH
       if (SO_Hypothesis) {
         SObjectList listSO = SMESH::getStudy()->FindDependances(SO_Hypothesis);
 
-        if(MYDEBUG) MESSAGE("SMESHGUI::GetMeshesUsingAlgoOrHypothesis(): dependency number ="<<listSO.size());
+        MESSAGE("SMESHGUI::GetMeshesUsingAlgoOrHypothesis(): dependency number ="<<listSO.size());
         for (unsigned int i = 0; i < listSO.size(); i++) {
           _PTR(SObject) SO = listSO[i];
           if (SO) {
@@ -801,7 +806,7 @@ namespace SMESH
             if (aFather) {
               _PTR(SObject) SOfatherFather = aFather->GetFather();
               if (SOfatherFather) {
-                if(MYDEBUG) MESSAGE("SMESHGUI::GetMeshesUsingAlgoOrHypothesis(): dependency added to list");
+                MESSAGE("SMESHGUI::GetMeshesUsingAlgoOrHypothesis(): dependency added to list");
                 index++;
                 listSOmesh.resize(index);
                 listSOmesh[index - 1] = SOfatherFather;
@@ -811,7 +816,7 @@ namespace SMESH
         }
       }
     }
-    if (MYDEBUG) MESSAGE("SMESHGUI::GetMeshesUsingAlgoOrHypothesis(): completed");
+    MESSAGE("SMESHGUI::GetMeshesUsingAlgoOrHypothesis(): completed");
     return listSOmesh;
   }
 
index 5784024bb4b5b882b2971c46bdbe2f97a1246c53..01ca837ea21bac0b9669c8a5b04073d3fa957e80 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -115,6 +115,8 @@ namespace SMESH
   bool RemoveHypothesisOrAlgorithmOnMesh( _PTR(SObject),
                                           SMESH::SMESH_Hypothesis_ptr );
 
+  SMESHGUI_EXPORT void UpdateViewer(SMESH::SMESH_Mesh_ptr);
+
   typedef std::vector<_PTR(SObject)> SObjectList;
   SMESHGUI_EXPORT
   SObjectList GetMeshesUsingAlgoOrHypothesis( SMESH::SMESH_Hypothesis_ptr );
index fd7df6000ff346b53c00d9a243708931864a9577..308cf0d5ac2a7fe8089ff085b0a008b597758f83 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index dd87a7caf8bb3ea5e4a9ea6a8fbac0e2c8c3d292..a3a03de26a5908d74c1d57ccd28affe932ff1fe8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1d44ad24115202e7ec9d50eb9ce36437d0481391..988e4cc722e901d674b6ea5864939ee708ec2faa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/src/SMESHGUI/SMESHGUI_InteractiveOp.cxx b/src/SMESHGUI/SMESHGUI_InteractiveOp.cxx
new file mode 100644 (file)
index 0000000..e4c7bf3
--- /dev/null
@@ -0,0 +1,181 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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   : SMESHGUI_InteractiveOp.cxx
+// Author : Roman NIKOLAEV, Open CASCADE S.A.S.
+
+// SMESH includes
+//
+#include "SMESHGUI.h"
+#include "SMESHGUI_InteractiveOp.h"
+#include "SMESHGUI_VTKUtils.h"
+
+// GUI includes
+#include <SVTK_ViewWindow.h>
+#include <SVTK_RenderWindowInteractor.h>
+#include <SVTK_Event.h>
+
+// VTK includes
+#include <vtkInteractorStyle.h>
+#include <vtkCallbackCommand.h>
+#include <vtkGenericRenderWindowInteractor.h>
+#include <vtkInteractorObserver.h>
+
+
+//================================================================================
+/*!
+ * \brief Constructor
+*/
+//================================================================================
+
+SMESHGUI_InteractiveOp::SMESHGUI_InteractiveOp() :
+  SMESHGUI_SelectionOp(),
+  myInteractorStyle(0),
+  myRWInteractor(0),
+  myStyleEventCallbackCommand(vtkCallbackCommand::New()),
+  myInteractorStypePriority(0.0),
+  myInteractorEventCallbackCommand(vtkCallbackCommand::New()),
+  myInteractorPriority(1.0)
+{
+  myStyleEventCallbackCommand->Delete();
+  myStyleEventCallbackCommand->SetClientData(this);
+  myStyleEventCallbackCommand->SetCallback(SMESHGUI_InteractiveOp::ProcessStyleEvents);
+
+  myInteractorEventCallbackCommand->Delete();
+  myInteractorEventCallbackCommand->SetClientData(this);
+  myInteractorEventCallbackCommand->SetCallback(SMESHGUI_InteractiveOp::ProcessInteractorEvents);
+}
+
+//================================================================================
+/*!
+ * \brief Destructor
+*/
+//================================================================================
+SMESHGUI_InteractiveOp::~SMESHGUI_InteractiveOp() 
+{
+}
+
+//=======================================================================
+// function : addObserver()
+// purpose  : Add VTK observers to process SVTK_InteractorStyle and vtkGenericRenderWindowInteractor events
+//======================================================================
+void SMESHGUI_InteractiveOp::addObserver()
+{
+  if (myInteractorStyle && !myInteractorStyle->HasObserver(SVTK::InteractiveSelectionChanged, myStyleEventCallbackCommand.GetPointer())) {
+    myInteractorStyle->AddObserver(SVTK::InteractiveSelectionChanged, myStyleEventCallbackCommand.GetPointer(),
+      myInteractorStypePriority);
+  }
+  if (myRWInteractor && myRWInteractor->GetDevice() &&
+    !myRWInteractor->GetDevice()->HasObserver(vtkCommand::LeftButtonPressEvent, myInteractorEventCallbackCommand.GetPointer())) {
+    myRWInteractor->GetDevice()->AddObserver(vtkCommand::LeftButtonPressEvent, myInteractorEventCallbackCommand.GetPointer(),
+      myInteractorPriority);
+  }
+}
+
+//=======================================================================
+// function : removeObserver()
+// purpose  : Remove VTK observers
+//======================================================================
+void SMESHGUI_InteractiveOp::removeObserver() {
+  if (myInteractorStyle && myInteractorStyle->HasObserver(SVTK::InteractiveSelectionChanged, myStyleEventCallbackCommand.GetPointer())) {
+    myInteractorStyle->RemoveObserver(myStyleEventCallbackCommand.GetPointer());
+  }
+  if (myRWInteractor && myRWInteractor->GetDevice() &&
+    myRWInteractor->GetDevice()->HasObserver(vtkCommand::LeftButtonPressEvent, myInteractorEventCallbackCommand.GetPointer())) {
+    myRWInteractor->GetDevice()->RemoveObserver(myInteractorEventCallbackCommand.GetPointer());
+  }
+}
+
+//=======================================================================
+// function : startOperation()
+// purpose  : Init dialog fields, connect signals and slots, show dialog
+//=======================================================================
+
+void SMESHGUI_InteractiveOp::startOperation()
+{
+  SVTK_ViewWindow* svtkViewWindow = SMESH::GetViewWindow(getSMESHGUI());
+  if (svtkViewWindow) {
+    myInteractorStyle = svtkViewWindow->GetInteractorStyle();
+    myRWInteractor = svtkViewWindow->GetInteractor();
+  }
+}
+
+//================================================================================
+/*!
+ * \brief Process interactor style events
+          Static method. Used by vtkCallbackCommand->SetCallback method.
+ */
+ //===============================================================================
+void SMESHGUI_InteractiveOp::ProcessStyleEvents(vtkObject* vtkNotUsed(theObject),
+  unsigned long theEvent,
+  void* theClientData,
+  void* theCallData) {
+  SMESHGUI_InteractiveOp* self = reinterpret_cast<SMESHGUI_InteractiveOp*>(theClientData);
+  if (self)
+    self->processStyleEvents(theEvent, theCallData);
+}
+
+//================================================================================
+/*!
+ * \brief Process Generic Render Window Interactor events.
+          Static method. Used by vtkCallbackCommand->SetCallback method.
+ */
+ //===============================================================================
+void SMESHGUI_InteractiveOp::ProcessInteractorEvents(vtkObject* vtkNotUsed(theObject),
+  unsigned long theEvent,
+  void* theClientData,
+  void* theCallData) {
+  SMESHGUI_InteractiveOp* self = reinterpret_cast<SMESHGUI_InteractiveOp*>(theClientData);
+  if (self)
+    self->processInteractorEvents(theEvent, theCallData);
+}
+
+//================================================================================
+/*!
+ * \brief Process interactor style events ()
+          Virtual method. Should be overridden in inherited classes.
+ */
+ //===============================================================================
+
+void SMESHGUI_InteractiveOp::processStyleEvents(unsigned long theEvent, void* theCallData) {
+}
+
+//================================================================================
+/*!
+ * \brief Process Generic Render Window Interactor events.
+          Virtual method. Should be overridden in inherited classes.
+ */
+ //===============================================================================
+void SMESHGUI_InteractiveOp::processInteractorEvents(unsigned long theEvent, void* theCallData)
+{
+}
+
+//================================================================================
+/*!
+ * \brief Deactivate current operation in active VTK viewer
+ */
+ //===============================================================================
+void SMESHGUI_InteractiveOp::deactivateCurrentViewOperation() {
+  if (SVTK_ViewWindow* svtkViewWindow = SMESH::GetViewWindow(getSMESHGUI())) {
+    svtkViewWindow->deactivateCurrectOperation();
+  }
+}
\ No newline at end of file
diff --git a/src/SMESHGUI/SMESHGUI_InteractiveOp.h b/src/SMESHGUI/SMESHGUI_InteractiveOp.h
new file mode 100644 (file)
index 0000000..4d83ebe
--- /dev/null
@@ -0,0 +1,88 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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   : SMESHGUI_InteractiveOp.h
+// Author : Roman NIKOLAEV, Open CASCADE S.A.S.
+//
+
+#pragma once
+
+// SMESH includes
+#include "SMESH_SMESHGUI.hxx"
+#include "SMESHGUI_SelectionOp.h"
+
+// VTK includes
+#include <vtkSmartPointer.h>
+
+/*
+  Class       : SMESHGUI_InteractiveOp
+  Description : Base operation for all interactive operations in the VTK 3D Viewer
+*/
+
+class vtkInteractorStyle;
+class vtkCallbackCommand;
+class vtkObject;
+class SVTK_RenderWindowInteractor;
+
+class SMESHGUI_EXPORT SMESHGUI_InteractiveOp: public SMESHGUI_SelectionOp {
+  Q_OBJECT
+public:
+  SMESHGUI_InteractiveOp();
+  virtual ~SMESHGUI_InteractiveOp();
+
+  virtual void deactivateCurrentViewOperation();
+
+protected:
+  virtual void                   startOperation() override;
+
+  static void                    ProcessStyleEvents(vtkObject* object,
+                                                    unsigned long event,
+                                                    void* clientdata,
+                                                    void* calldata);
+  virtual void                   processStyleEvents(unsigned long event,
+                                                    void* calldata);
+
+  static void                    ProcessInteractorEvents(vtkObject* object,
+                                                         unsigned long event,
+                                                         void* clientdata,
+                                                          void* calldata);
+  virtual void                   processInteractorEvents(unsigned long event,
+                                                         void* calldata);
+
+  virtual void addObserver();
+  virtual void removeObserver();
+
+
+protected:
+  vtkInteractorStyle*           myInteractorStyle;
+  SVTK_RenderWindowInteractor*  myRWInteractor;
+
+  // Priority at which  events are processed:
+  //   Interactor Stype events
+  double myInteractorStypePriority;
+  //   Interactor events
+  double myInteractorPriority;
+
+  // Used to process events
+  vtkSmartPointer<vtkCallbackCommand> myStyleEventCallbackCommand;
+  vtkSmartPointer<vtkCallbackCommand> myInteractorEventCallbackCommand;
+};
index 627b3ded2bf8f210b1184376b6580d87770cea35..1de5fdbde8c38cd588c3d156b294feafdd46a81d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2020-2021  CEA/DEN, EDF R&D
+// Copyright (C) 2020-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ecaa1a9f4070457940d92d7b03178649cdd42214..58388dae7fc1c7dbdf2aa19ecc8b5a1bbf098ec6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2020-2021  CEA/DEN, EDF R&D
+// Copyright (C) 2020-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ae0eea4da3ef55ef160ae5fdc7a69b5805528dce..76d04e0cd86621d4e12e8636c265f89ec006560b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -73,17 +73,16 @@ SMESHGUI_Make2DFrom3DDlg::SMESHGUI_Make2DFrom3DDlg( QWidget* parent )
   setWindowTitle( tr("CAPTION") );
 
   // mode
-  QGroupBox* aModeGrp = new QGroupBox( tr( "MODE" ), mainFrame() );
-  QHBoxLayout* aModeGrpLayout = new QHBoxLayout( aModeGrp );
+  myModeGrp = new QGroupBox( tr( "MODE" ), mainFrame() );
+  QHBoxLayout* aModeGrpLayout = new QHBoxLayout( myModeGrp );
   aModeGrpLayout->setMargin( MARGIN );
   aModeGrpLayout->setSpacing( SPACING );
-  my2dFrom3dRB = new QRadioButton( tr( "2D_FROM_3D" ), aModeGrp );
-  my1dFrom2dRB = new QRadioButton( tr( "1D_FROM_2D" ), aModeGrp );
+  my2dFrom3dRB = new QRadioButton( tr( "2D_FROM_3D" ), myModeGrp );
+  my1dFrom2dRB = new QRadioButton( tr( "1D_FROM_2D" ), myModeGrp );
   //my1dFrom3dRB = new QRadioButton( tr( "1D_FROM_3D" ), aModeGrp );
   aModeGrpLayout->addWidget( my2dFrom3dRB );
   aModeGrpLayout->addWidget( my1dFrom2dRB );
   //aModeGrpLayout->addWidget( my1dFrom3dRB );
-
 //   // Groups of mesh faces
 //   setObjectPixmap( "SMESH", tr( "ICON_SELECT" ) );
 //   createObject( tr( "Groups" ), mainFrame(), Groups );
@@ -116,7 +115,7 @@ SMESHGUI_Make2DFrom3DDlg::SMESHGUI_Make2DFrom3DDlg( QWidget* parent )
   QGridLayout* aDlgLay = new QGridLayout( mainFrame() );
   aDlgLay->setMargin( 0 );
   aDlgLay->setSpacing( SPACING );
-  aDlgLay->addWidget( aModeGrp,     0, 0, 1, 3 );
+  aDlgLay->addWidget( myModeGrp,     0, 0, 1, 3 );
   aDlgLay->addWidget( objectWg( MeshOrGroups,  Label ),   1, 0 );
   aDlgLay->addWidget( objectWg( MeshOrGroups,  Control ), 1, 1 );
   aDlgLay->addWidget( aTargetGrp,   2, 0, 1, 3 );
@@ -409,6 +408,7 @@ bool SMESHGUI_Make2DFrom3DOp::compute2DMesh( QStringList& theEntryList )
   SUIT_OverrideCursor wc;
 
   bool ok = false;
+  bool toCreateAllElements = false;
   try {
     SMESH::Bnd_Dimension mode = myDlg->mode();
     QString meshName          = myDlg->needNewMesh() ? myDlg->getNewMeshName() : QString();
@@ -453,6 +453,7 @@ bool SMESHGUI_Make2DFrom3DOp::compute2DMesh( QStringList& theEntryList )
                                                                groupName.toUtf8().constData(),
                                                                meshName.toUtf8().constData(),
                                                                copyAll,
+                                                               toCreateAllElements,
                                                                groups,
                                                                newMesh.out(),
                                                                newGrp.out() );
index 2096b26af7168049d77daad4664400b8cb9894b7..414d471025bc714c2540edf4bfe715f00ab44e41 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -33,6 +33,7 @@
 #include CORBA_SERVER_HEADER(SMESH_Mesh)
 
 class QCheckBox;
+class QGroupBox;
 class QLineEdit;
 class QRadioButton;
 class SMESHGUI_Make2DFrom3DOp;
@@ -65,6 +66,9 @@ public:
 
   bool                 copySource() const;
 
+protected:
+  QGroupBox*    myModeGrp;
+
 private slots:
   void                 onTargetChanged();
   void                 onGroupChecked();
diff --git a/src/SMESHGUI/SMESHGUI_MakeFull2DFrom3DOp.cxx b/src/SMESHGUI/SMESHGUI_MakeFull2DFrom3DOp.cxx
new file mode 100644 (file)
index 0000000..211a639
--- /dev/null
@@ -0,0 +1,340 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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
+//
+// File   : SMESHGUI_MakeFull2DFrom3DOp.cxx
+// Author : Cesar Conopoima, Open CASCADE S.A.S. (cesar.conopoima@opencascade.com)
+
+#include "SMESHGUI_MakeFull2DFrom3DOp.h"
+
+#include "SMESHGUI.h"
+#include "SMESHGUI_Utils.h"
+#include "SMESHGUI_MeshUtils.h"
+#include "SMESH_TypeFilter.hxx"
+#include "SMESH_LogicalFilter.hxx"
+#include "SMESHGUI_VTKUtils.h"
+#include "SMESH_Actor.h"
+
+// SALOME GUI includes
+#include <LightApp_Application.h>
+#include <LightApp_SelectionMgr.h>
+#include <LightApp_UpdateFlags.h>
+#include <SALOME_ListIO.hxx>
+#include <SUIT_Desktop.h>
+#include <SUIT_MessageBox.h>
+#include <SUIT_OverrideCursor.h>
+#include <SUIT_Session.h>
+#include <SVTK_ViewModel.h>
+//#include <SVTK_ViewWindow.h>
+#include <SalomeApp_Study.h>
+#include <SalomeApp_Tools.h>
+
+// IDL includes
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Group)
+
+// Qt includes
+#include <QGroupBox>
+
+#include <Standard_ErrorHandler.hxx>
+
+/*!
+  \class SMESHGUI_Make2DFrom3DDlg
+  \brief Copy Mesh dialog box
+*/
+
+SMESHGUI_MakeFull2DFrom3DDlg::SMESHGUI_MakeFull2DFrom3DDlg( QWidget* parent )
+  : SMESHGUI_Make2DFrom3DDlg( parent )
+{
+  // title
+  setWindowTitle( tr("CAPTION") );
+  myModeGrp->setVisible(false);
+}
+
+SMESHGUI_MakeFull2DFrom3DDlg::~SMESHGUI_MakeFull2DFrom3DDlg()
+{
+}
+
+
+/*!
+  \class SMESHGUI_MakeFull2DFrom3DOp
+  \brief Copy Mesh operation class
+*/
+SMESHGUI_MakeFull2DFrom3DOp::SMESHGUI_MakeFull2DFrom3DOp()
+   : SMESHGUI_SelectionOp(),
+    myMeshFilter(SMESH::MESH),
+    myGroupFilter(SMESH::GROUP)
+{
+}
+
+SMESHGUI_MakeFull2DFrom3DOp::~SMESHGUI_MakeFull2DFrom3DOp()
+{
+}
+
+LightApp_Dialog* SMESHGUI_MakeFull2DFrom3DOp::dlg() const
+{
+  return myDlg;
+}
+
+void SMESHGUI_MakeFull2DFrom3DOp::startOperation()
+{
+  if( !myDlg )
+    myDlg = new SMESHGUI_MakeFull2DFrom3DDlg( desktop() );
+
+
+  myHelpFileName = "make_2dmesh_from_3d_elements.html";
+
+  SMESHGUI_SelectionOp::startOperation();
+
+  myDlg->setNewMeshName( SMESH::UniqueName( "Mesh_1" ) );
+  myDlg->setGroupName( SMESH::UniqueName( "Group" ) );
+  myDlg->show();
+
+  myDlg->activateObject( SMESHGUI_MakeFull2DFrom3DDlg::MeshOrGroups );
+  selectionDone();
+}
+
+void SMESHGUI_MakeFull2DFrom3DOp::selectionDone()
+{
+  myDlg->clearSelection( SMESHGUI_MakeFull2DFrom3DDlg::MeshOrGroups );
+  mySrcMesh = SMESH::SMESH_Mesh::_nil();
+
+  if ( !dlg() ) return;
+  if ( dlg()->isVisible() ) {
+    try {
+      QStringList names, ids;
+      LightApp_Dialog::TypesList types;
+      selected( names, types, ids );
+      for ( int i = 0; i < names.count(); ++i )
+        names[i] = names[i].trimmed();
+      myDlg->selectObject( names, types, ids );
+
+      // enable/desable "new mesh" button
+      bool isMesh = true;
+      for ( int i = 0; i < ids.count() && isMesh; ++i )
+      {
+        _PTR(SObject) sobj = SMESH::getStudy()->FindObjectID( ids[i].toUtf8().constData() );
+        mySrcMesh = SMESH::SObjectToInterface<SMESH::SMESH_Mesh>( sobj );  
+      }
+      myDlg->setNewMeshEnabled( isMesh );
+    }
+    catch ( const SALOME::SALOME_Exception& S_ex ) {
+      SalomeApp_Tools::QtCatchCorbaException( S_ex );
+    }
+    catch ( ... ) {
+    }
+  }
+}
+
+SUIT_SelectionFilter* SMESHGUI_MakeFull2DFrom3DOp::createFilter( const int /*theId*/ ) const
+{
+  SMESHGUI_MakeFull2DFrom3DOp* me = (SMESHGUI_MakeFull2DFrom3DOp*) this;
+
+  QList<SUIT_SelectionFilter*> subFilters;
+  subFilters.append( & me->myMeshFilter );
+  subFilters.append( & me->myGroupFilter );
+
+  SUIT_SelectionFilter* f = new SMESH_LogicalFilter( subFilters, SMESH_LogicalFilter::LO_OR );
+  return f;
+}
+
+bool SMESHGUI_MakeFull2DFrom3DOp::isValid( QString& msg ) const
+{
+  if ( !dlg() ) return false;
+  
+  // check if a mesh is selected
+  if ( !myDlg->hasSelection( SMESHGUI_MakeFull2DFrom3DDlg::MeshOrGroups ))
+  {
+    msg = tr( "SMESH_ERR_NO_INPUT_MESH" );
+    return false;
+  }
+
+  QStringList entries;
+  dlg()->selectedObject( SMESHGUI_MakeFull2DFrom3DDlg::MeshOrGroups, entries );
+  const bool isMeshSelected = ( !mySrcMesh->_is_nil() );
+  if ( isMeshSelected )
+  {
+    // only one mesh is allowed
+    if ( entries.size() > 1 ) {
+      msg = tr( "SMESH_TOO_MANY_MESHES" );
+      return false;
+    }
+  }
+  else
+  {
+    // check if only groups are selected
+    for ( int i = 0; i < entries.count(); ++i )
+    {
+      SMESH::SMESH_GroupBase_var grp;
+      if ( _PTR(SObject) sobj = SMESH::getStudy()->FindObjectID( entries[i].toUtf8().constData() ))
+        grp = SMESH::SObjectToInterface<SMESH::SMESH_GroupBase>( sobj );
+      if ( grp->_is_nil() ) {
+        msg = tr( "SMESH_NOT_ONLY_GROUPS" );
+        return false;
+      }
+    }
+  }
+  // check if the selected objects contains elements of required type
+  bool hasVolumes = false;
+  
+  for ( int i = 0; i < entries.count(); ++i )
+  {
+    SMESH::SMESH_IDSource_var idSource;
+    if ( _PTR(SObject) sobj = SMESH::getStudy()->FindObjectID( entries[i].toUtf8().constData() ))
+      idSource = SMESH::SObjectToInterface<SMESH::SMESH_IDSource>( sobj );
+    if ( !idSource->_is_nil() ) {
+      SMESH::array_of_ElementType_var types = idSource->GetTypes();
+      for ( int j = 0; j < (int) types->length(); ++j )
+        if ( types[j] == SMESH::VOLUME )
+          hasVolumes = true;
+    }
+  }
+  if ( !hasVolumes ) {
+    msg = tr( "SMESH_ERR_NO_3D_ELEMENTS" );
+    return false;
+  } 
+
+  // check if new mesh name is specified
+  if ( myDlg->needNewMesh() && myDlg->getNewMeshName().isEmpty() ) {
+    msg = tr( "SMESH_ERR_MESH_NAME_NOT_SPECIFIED" );
+    return false;
+  }
+
+  // check if group name is specified
+  if ( myDlg->needGroup() && myDlg->getGroupName().isEmpty() ) {
+    msg = tr( "SMESH_ERR_GRP_NAME_NOT_SPECIFIED" );
+    return false;
+  }
+
+  return true;
+}
+
+bool SMESHGUI_MakeFull2DFrom3DOp::compute2DMesh( QStringList& theEntryList )
+{
+  SUIT_OverrideCursor wc;
+
+  bool ok = false;
+  try {
+    QString meshName          = myDlg->needNewMesh() ? myDlg->getNewMeshName() : QString();
+    QString groupName         = myDlg->needGroup()   ? myDlg->getGroupName()   : QString();
+    bool copyAll              = myDlg->copySource();
+
+    QStringList entries;
+    dlg()->selectedObject( SMESHGUI_MakeFull2DFrom3DDlg::MeshOrGroups, entries );
+    SMESH::ListOfIDSources_var groups = new SMESH::ListOfIDSources;
+    QString wrongGroups = "";
+
+    if ( mySrcMesh->_is_nil() ) // get selected groups, find groups of wrong type
+    {
+      int nbGroups = 0;      
+      groups->length( entries.count() );
+      for ( int i = 0; i < entries.count(); ++i )
+      {
+        _PTR(SObject) sobj = SMESH::getStudy()->FindObjectID( entries[i].toUtf8().constData() );
+        SMESH::SMESH_IDSource_var grp = SMESH::SObjectToInterface<SMESH::SMESH_IDSource>( sobj );  
+        SMESH::array_of_ElementType_var types = grp->GetTypes();
+        if ( types->length() < 1 || types[0] != SMESH::VOLUME )
+        {
+          if ( !wrongGroups.isEmpty() )
+            wrongGroups += ", ";
+          wrongGroups += sobj->GetName().c_str();
+        }
+        else
+        {
+          groups[ nbGroups++ ] = grp;
+        }
+      }
+      groups->length( nbGroups );
+      mySrcMesh = groups[0]->GetMesh();
+    }
+
+    if ( !CORBA::is_nil( mySrcMesh ) ) {
+      SMESH::SMESH_MeshEditor_var aMeshEditor = mySrcMesh->GetMeshEditor();
+      SMESH::SMESH_Group_var newGrp;
+      SMESH::SMESH_Mesh_var newMesh;
+      CORBA::Long nbAdded = aMeshEditor->MakeBoundaryElements( SMESH::BND_2DFROM3D,
+                                                               groupName.toUtf8().constData(),
+                                                               meshName.toUtf8().constData(),
+                                                               copyAll,
+                                                               true,
+                                                               groups,
+                                                               newMesh.out(),
+                                                               newGrp.out() );
+      QString msg = tr("NB_ADDED").arg( nbAdded );
+      if ( !wrongGroups.isEmpty() )
+        msg += ".\n" + tr("WRONG_GROUPS").arg( wrongGroups );
+      SUIT_MessageBox::information( myDlg, tr("SMESH_INFORMATION"), msg);
+
+      if ( !newMesh->_is_nil() ) {
+        if( _PTR(SObject) aSObject = SMESH::ObjectToSObject( newMesh ) )
+          theEntryList.append( aSObject->GetID().c_str() );
+      }
+      ok = true;
+
+      for ( int i = 0; i < entries.count(); ++i )
+        if ( SMESH_Actor* actor = SMESH::FindActorByEntry( entries[i].toUtf8().constData() ))
+        {
+          actor->SetEntityMode( actor->GetEntityMode() | SMESH_Actor::eFaces );
+          SMESH::Update( actor->getIO(), actor->GetVisibility() );
+        }
+      SMESH::RepaintCurrentView();
+    }
+  }
+  catch ( ... ) {
+  }
+  return ok;
+}
+
+bool SMESHGUI_MakeFull2DFrom3DOp::onApply()
+{
+  if ( SMESHGUI::isStudyLocked() )
+    return false;
+
+  QString msg;
+  if ( !isValid( msg ) ) {
+    dlg()->show();
+    if ( msg != "" )
+      SUIT_MessageBox::warning( myDlg, tr( "SMESH_ERROR" ), msg );
+    return false;
+  }
+
+  QStringList anEntryList;
+  bool res = false;
+  try {
+    res = compute2DMesh( anEntryList );
+  }
+  catch ( const SALOME::SALOME_Exception& S_ex ) {
+    SalomeApp_Tools::QtCatchCorbaException( S_ex );
+  }
+  catch ( ... ) {
+  }
+
+  if ( res ) {
+    SMESHGUI::Modified();
+    update( UF_ObjBrowser | UF_Model );
+    if( LightApp_Application* anApp =
+        dynamic_cast<LightApp_Application*>( SUIT_Session::session()->activeApplication() ) )
+      anApp->browseObjects( anEntryList, isApplyAndClose() );
+    myDlg->setNewMeshName( SMESH::UniqueName( "Mesh_1" ) );
+    myDlg->setGroupName( SMESH::UniqueName( "Group" ) );
+  }
+  else {
+    SUIT_MessageBox::warning( myDlg, tr( "SMESH_ERROR" ), tr( "SMESH_OPERATION_FAILED" ) );
+  }
+
+  return res;
+}
diff --git a/src/SMESHGUI/SMESHGUI_MakeFull2DFrom3DOp.h b/src/SMESHGUI/SMESHGUI_MakeFull2DFrom3DOp.h
new file mode 100644 (file)
index 0000000..b3d6ff1
--- /dev/null
@@ -0,0 +1,77 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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
+//
+// File   : SMESHGUI_MakeFull2DFrom3DOp.h
+// Author : Cesar Conopoima, Open CASCADE S.A.S. (cesar.conopoima@opencascade.com)
+
+#ifndef SMESHGUI_MakeFull2DFrom3DOp_H
+#define SMESHGUI_MakeFull2DFrom3DOp_H
+
+// SMESH includes
+#include "SMESHGUI_Make2DFrom3DOp.h"
+
+/*!
+ * \brief Dialog for options of generating 2D mesh from 3D.
+ */
+
+class SMESHGUI_EXPORT SMESHGUI_MakeFull2DFrom3DDlg :  public SMESHGUI_Make2DFrom3DDlg
+{
+  Q_OBJECT
+
+public:
+  SMESHGUI_MakeFull2DFrom3DDlg( QWidget* );
+  virtual ~SMESHGUI_MakeFull2DFrom3DDlg();
+
+  friend class SMESHGUI_MakeFull2DFrom3DOp;
+};
+
+/*!
+ * \brief Operation to compute 2D mesh from 3D mesh
+ */
+
+class SMESHGUI_EXPORT SMESHGUI_MakeFull2DFrom3DOp : public SMESHGUI_SelectionOp
+{
+  Q_OBJECT
+
+public:
+  SMESHGUI_MakeFull2DFrom3DOp();
+  virtual ~SMESHGUI_MakeFull2DFrom3DOp();
+
+  virtual LightApp_Dialog*           dlg() const;
+
+protected:
+  virtual void                       startOperation();
+  virtual void                       selectionDone();
+  virtual SUIT_SelectionFilter*      createFilter( const int ) const;
+  bool                               isValid( QString& ) const;
+
+protected slots:
+  virtual bool                       onApply();
+
+private:
+  bool                               compute2DMesh( QStringList& );
+
+private:
+  SMESH::SMESH_Mesh_var              mySrcMesh;
+  QPointer<SMESHGUI_MakeFull2DFrom3DDlg> myDlg;
+
+  SMESH_TypeFilter                   myMeshFilter;
+  SMESH_TypeFilter                   myGroupFilter;
+};
+
+#endif // SMESHGUI_MakeFull2DFrom3DOp_H
index 6b1b7c140536d60458a4a51493944ce053323d47..49ee4b4cba6d57a138fbc5ea21a03539d102fd15 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -48,6 +48,9 @@
 #include <SUIT_Desktop.h>
 #include <SVTK_ViewModel.h>
 #include <SVTK_ViewWindow.h>
+#include <SVTK_Renderer.h>
+#include <SVTK_RenderWindowInteractor.h>
+#include <SVTK_Event.h>
 #include <SalomeApp_Tools.h>
 #include <SalomeApp_TypeFilter.h>
 #include <SUIT_ResourceMgr.h>
 #include <QButtonGroup>
 
 // VTK includes
+#include <vtkObject.h>
 #include <vtkProperty.h>
+#include <vtkGenericRenderWindowInteractor.h>
+#include <vtkInteractorObserver.h>
 
 // IDL includes
 #include <SALOMEconfig.h>
 
 namespace
 {
-  enum { MANUAL_MODE = 0, SEARCH_MODE }; // how a node to move is specified
+  enum { MANUAL_MODE = 0, SEARCH_MODE, INTERACTIVE_MODE };
 }
 
+//#define SELECTION_PRECISION 4
+
+//=======================================================================
 /*!
  * \brief Dialog to publish a sub-shape of the mesh main shape
  *        by selecting mesh elements
  */
+//=======================================================================
+
 SMESHGUI_MakeNodeAtPointDlg::SMESHGUI_MakeNodeAtPointDlg()
   : SMESHGUI_Dialog( 0, false, true )
 {
@@ -112,6 +123,7 @@ SMESHGUI_MakeNodeAtPointDlg::SMESHGUI_MakeNodeAtPointDlg()
 // function : createMainFrame()
 // purpose  : Create frame containing dialog's input fields
 //=======================================================================
+
 QWidget* SMESHGUI_MakeNodeAtPointDlg::createMainFrame (QWidget* theParent)
 {
   QWidget* aFrame = new QWidget(theParent);
@@ -119,8 +131,9 @@ QWidget* SMESHGUI_MakeNodeAtPointDlg::createMainFrame (QWidget* theParent)
   SUIT_ResourceMgr* rm = SMESH::GetResourceMgr( SMESHGUI::GetSMESHGUI() );
   QPixmap iconMoveNode        (rm->loadPixmap("SMESH", tr("ICON_DLG_MOVE_NODE")));
   QPixmap iconMoveWithoutNode (rm->loadPixmap("SMESH", tr("ICON_DLG_MOVE_WITHOUT_NODE")));
+  QPixmap iconMoveInteractive (rm->loadPixmap("SMESH", tr("ICON_DLG_MOVE_NODE_INTERACTIVE")));
   QPixmap iconSelect          (rm->loadPixmap("SMESH", tr("ICON_SELECT")));
-
+  
   // constructor
   QGroupBox* aPixGrp = new QGroupBox(tr("MOVE_NODE"), this);
   aPixGrp->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
@@ -129,16 +142,20 @@ QWidget* SMESHGUI_MakeNodeAtPointDlg::createMainFrame (QWidget* theParent)
   aPixGrpLayout->setMargin(MARGIN);
   aPixGrpLayout->setSpacing(SPACING);
 
-  myRButNodeToMove = new QRadioButton(aPixGrp);
+  myRButNodeToMove      = new QRadioButton(aPixGrp);
   myRButMoveWithoutNode = new QRadioButton(aPixGrp);
+  myRButMoveInteractive = new QRadioButton(aPixGrp);
   myRButNodeToMove->setIcon(iconMoveNode);
   myRButMoveWithoutNode->setIcon(iconMoveWithoutNode);
+  myRButMoveInteractive->setIcon(iconMoveInteractive);
   myRButNodeToMove->setChecked(true);
 
   aPixGrpLayout->addWidget(myRButNodeToMove);
   aPixGrpLayout->addWidget(myRButMoveWithoutNode);
-  myButtonGroup->addButton(myRButNodeToMove, 0);
+  aPixGrpLayout->addWidget(myRButMoveInteractive);
+  myButtonGroup->addButton(myRButNodeToMove,      0);
   myButtonGroup->addButton(myRButMoveWithoutNode, 1);
+  myButtonGroup->addButton(myRButMoveInteractive, 2);
 
   // Node to move
 
@@ -302,11 +319,15 @@ void SMESHGUI_MakeNodeAtPointDlg::ButtonToggled (bool on)
   * \param int - number of the button
  */
 //================================================================================
+
 void SMESHGUI_MakeNodeAtPointDlg::ConstructorsClicked (int constructorId)
 {
   switch (constructorId) {
-  case 0:
+  case MANUAL_MODE:
+  case INTERACTIVE_MODE:
     {
+      myUpdateBtn->setVisible( constructorId == MANUAL_MODE );
+      myDestinationGrp->setTitle( tr( constructorId == MANUAL_MODE ? "DESTINATION" : "DESTINATION_BY_MOUSE"));
       myDestDXLabel->show();
       myDestDYLabel->show();
       myDestDZLabel->show();
@@ -317,9 +338,10 @@ void SMESHGUI_MakeNodeAtPointDlg::ConstructorsClicked (int constructorId)
       myCurrentY->SetValue(0);
       myCurrentZ->SetValue(0);
       if (!myNodeToMoveGrp->isVisible()) myNodeToMoveGrp->show();
+      myIdBtn->setChecked( true );
       break;
     }
-  case 1:
+  case SEARCH_MODE:
     {
       myId->setText("");
       myCurrentX->SetValue(0);
@@ -349,8 +371,10 @@ void SMESHGUI_MakeNodeAtPointDlg::ConstructorsClicked (int constructorId)
 */
 //================================================================================
 
-SMESHGUI_MakeNodeAtPointOp::SMESHGUI_MakeNodeAtPointOp()
+SMESHGUI_MakeNodeAtPointOp::SMESHGUI_MakeNodeAtPointOp(int defaultConstructor) : 
+  SMESHGUI_InteractiveOp()
 {
+  myDefaultConstructor = defaultConstructor;
   mySimulation = 0;
   mySMESHGUI = 0;
   myDlg = new SMESHGUI_MakeNodeAtPointDlg;
@@ -370,7 +394,7 @@ SMESHGUI_MakeNodeAtPointOp::SMESHGUI_MakeNodeAtPointOp()
   connect(myDlg->myDestDZ,        SIGNAL (valueChanged(double)), this, SLOT(onDestCoordChanged()));
   connect(myDlg->myId,            SIGNAL (textChanged(const QString&)),SLOT(redisplayPreview()));
   connect(myDlg->myPreviewChkBox, SIGNAL (toggled(bool)),              SLOT(redisplayPreview()));
-  connect(myDlg->myButtonGroup,   SIGNAL (buttonClicked(int)),         SLOT(redisplayPreview()));
+  connect(myDlg->myButtonGroup,   SIGNAL (buttonClicked(int)),         SLOT(constructorChanged()));
 
   // IPAL22913: TC6.5.0: selected in "Move node" dialog box node is not highlighted
   // note: this slot seems to be lost together with removed obsolete SMESHGUI_MoveNodesDlg class
@@ -378,6 +402,12 @@ SMESHGUI_MakeNodeAtPointOp::SMESHGUI_MakeNodeAtPointOp()
   connect(myDlg->myUpdateBtn, SIGNAL (clicked()), this, SLOT(onUpdateDestination()));
 }
 
+//================================================================================
+/*!
+ * \brief SLOT. Update preview upon [Update destination] clicked
+ */
+//================================================================================
+
 void SMESHGUI_MakeNodeAtPointOp::onUpdateDestination()
 {
   myUpdateDestination = true;
@@ -385,6 +415,12 @@ void SMESHGUI_MakeNodeAtPointOp::onUpdateDestination()
   myUpdateDestination = false;
 }
 
+//================================================================================
+/*!
+ * \brief SLOT. Update preview upon Destination coordinates change
+ */
+//================================================================================
+
 void SMESHGUI_MakeNodeAtPointOp::onDestCoordChanged()
 {
   myDestCoordChanged = false;
@@ -392,10 +428,12 @@ void SMESHGUI_MakeNodeAtPointOp::onDestCoordChanged()
   myDestCoordChanged = true;
 }
 
+
 //=======================================================================
 // function : startOperation()
 // purpose  : Init dialog fields, connect signals and slots, show dialog
 //=======================================================================
+
 void SMESHGUI_MakeNodeAtPointOp::startOperation()
 {
   myNoPreview = false;
@@ -404,7 +442,8 @@ void SMESHGUI_MakeNodeAtPointOp::startOperation()
   // init simulation with a current View
   if ( mySimulation ) delete mySimulation;
   mySMESHGUI = getSMESHGUI();
-  mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI ) );
+  mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow(mySMESHGUI));
+
   connect(mySMESHGUI, SIGNAL (SignalActivatedViewManager()), this, SLOT(onOpenView()));
   connect(mySMESHGUI, SIGNAL (SignalCloseView()), this, SLOT(onCloseView()));
   vtkProperty* aProp = vtkProperty::New();
@@ -427,6 +466,7 @@ void SMESHGUI_MakeNodeAtPointOp::startOperation()
   // IPAL19360
   SMESHGUI_SelectionOp::startOperation(); // this method should be called only after filter creation
   //activateSelection(); // set filters   // called inside of previous statement
+  SMESHGUI_InteractiveOp::startOperation();
   myDlg->myId->setText("");
   myDlg->myDestinationX->SetValue(0);
   myDlg->myDestinationY->SetValue(0);
@@ -442,6 +482,10 @@ void SMESHGUI_MakeNodeAtPointOp::startOperation()
   myDlg->myDestDZ->setReadOnly(true);
   myDlg->myRButNodeToMove->setChecked(true);
 
+  if ( myDefaultConstructor == INTERACTIVE_MODE ) {
+    addObserver();
+    myDlg->myButtonGroup->button( INTERACTIVE_MODE )->setChecked(true);
+  }
   myDlg->ConstructorsClicked( GetConstructorId() );
 
   myDlg->show();
@@ -453,6 +497,7 @@ void SMESHGUI_MakeNodeAtPointOp::startOperation()
 // function : GetConstructorId()
 // purpose  :
 //=================================================================================
+
 int SMESHGUI_MakeNodeAtPointOp::GetConstructorId()
 {
   return myDlg->myButtonGroup->checkedId();
@@ -483,6 +528,7 @@ void SMESHGUI_MakeNodeAtPointOp::stopOperation()
   disconnect(mySMESHGUI, SIGNAL (SignalCloseView()),            this, SLOT(onCloseView()));
   selectionMgr()->removeFilter( myFilter );
   SMESHGUI_SelectionOp::stopOperation();
+  removeObserver();
 }
 
 //================================================================================
@@ -828,6 +874,7 @@ void SMESHGUI_MakeNodeAtPointOp::redisplayPreview()
  * \brief SLOT called when the viewer opened
  */
 //=================================================================================
+
 void SMESHGUI_MakeNodeAtPointOp::onOpenView()
 {
   if ( mySimulation ) {
@@ -839,11 +886,29 @@ void SMESHGUI_MakeNodeAtPointOp::onOpenView()
   }
 }
 
+//=================================================================================
+/*!
+ * \brief SLOT called when the creation mode is changed 
+ */
+ //=================================================================================
+
+void SMESHGUI_MakeNodeAtPointOp::constructorChanged() {
+  redisplayPreview();
+  if (GetConstructorId() == INTERACTIVE_MODE) {
+    addObserver();
+  }
+  else {
+    removeObserver();
+  }
+}
+
+
 //=================================================================================
 /*!
  * \brief SLOT called when the viewer closed
  */
 //=================================================================================
+
 void SMESHGUI_MakeNodeAtPointOp::onCloseView()
 {
   delete mySimulation;
@@ -918,3 +983,54 @@ LightApp_Dialog* SMESHGUI_MakeNodeAtPointOp::dlg() const
   return myDlg;
 }
 
+
+//================================================================================
+/*
+* \brief Process InteractiveSelectionChanged event
+*/
+//================================================================================
+
+void SMESHGUI_MakeNodeAtPointOp::processStyleEvents(unsigned long theEvent, void* theCallData) {
+  if (theEvent == SVTK::InteractiveSelectionChanged) {
+    double* aCoord = (double*)theCallData;
+    myDlg->myDestinationX->SetValue(aCoord[0]);
+    myDlg->myDestinationY->SetValue(aCoord[1]);
+    myDlg->myDestinationZ->SetValue(aCoord[2]);
+    redisplayPreview();
+  }
+}
+
+//================================================================================
+/*
+* \brief Process LeftButtonPressEvent event
+*/
+//================================================================================
+void SMESHGUI_MakeNodeAtPointOp::processInteractorEvents(unsigned long theEvent, void* theCallData) {
+  (void*)theCallData;
+  if (theEvent == vtkCommand::LeftButtonPressEvent) {
+    bool control = myRWInteractor->GetDevice()->GetControlKey();
+    bool shift = myRWInteractor->GetDevice()->GetControlKey();
+    if (GetConstructorId() == INTERACTIVE_MODE && myDlg->myDestBtn->isChecked() && !shift && !control) {
+      if (SVTK_ViewWindow* svtkViewWindow = SMESH::GetViewWindow(SMESHGUI::GetSMESHGUI())) {
+        svtkViewWindow->activateInteractiveSelection();
+      }
+    }
+  }
+   /*
+   if ( myRWInteractor && myRWInteractor->GetDevice() && myInteractorStyle ) {
+      int xClick, yClick; // Last click position
+      myRWInteractor->GetDevice()->GetEventPosition(xClick, yClick);
+      double nodeCoords[3];
+      vtkInteractorObserver::ComputeWorldToDisplay(myRWInteractor->GetRenderer()->GetDevice(),
+                                                   myDlg->myDestinationX->GetValue(),
+                                                   myDlg->myDestinationY->GetValue(),
+                                                   myDlg->myDestinationZ->GetValue(),
+                                                   nodeCoords);
+      double rad = std::sqrt(std::pow(xClick - nodeCoords[0], 2) + std::pow(yClick - nodeCoords[1], 2));
+      if (rad < SELECTION_PRECISION) {
+        if (SVTK_ViewWindow* svtkViewWindow = SMESH::GetViewWindow(mySMESHGUI)) {
+          svtkViewWindow->activateInteractiveSelection();
+        }
+      }
+  }*/
+}
index d1d0f09ba5528b4f5f92424c54418631702a8a62..0cb611c3cc79686f747519f7849abd5fcd5703a3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -30,7 +30,9 @@
 #include "SMESH_SMESHGUI.hxx"
 
 #include "SMESHGUI_Dialog.h"
-#include "SMESHGUI_SelectionOp.h"
+#include "SMESHGUI_InteractiveOp.h"
+
+#include <vtkSmartPointer.h>
 
 class QButtonGroup;
 class QCheckBox;
@@ -42,28 +44,35 @@ class SMESHGUI_SpinBox;
 class SMESHGUI_MeshEditPreview;
 class SMESHGUI_MakeNodeAtPointDlg;
 
+
 /*!
  * \brief Operation to make a mesh pass through a point
  */
-class SMESHGUI_EXPORT SMESHGUI_MakeNodeAtPointOp: public SMESHGUI_SelectionOp
+class SMESHGUI_EXPORT SMESHGUI_MakeNodeAtPointOp: public SMESHGUI_InteractiveOp
 {
   Q_OBJECT
 
 public:
-  SMESHGUI_MakeNodeAtPointOp();
+  SMESHGUI_MakeNodeAtPointOp(int defaultConstructor = 0);
   virtual ~SMESHGUI_MakeNodeAtPointOp();
 
   virtual LightApp_Dialog*       dlg() const;  
 
 protected:
 
-  virtual void                   startOperation();
-  virtual void                   stopOperation();
+  virtual void                   startOperation() override;
+  virtual void                   stopOperation() override;
 
-  virtual void                   activateSelection();
+  virtual void                   activateSelection() override;
 
   bool                           isValid( QString& );
 
+  virtual void                   processStyleEvents(unsigned long event,
+                                                    void* calldata)  override;
+
+  virtual void                   processInteractorEvents(unsigned long event,
+                                                         void* calldata) override;
+
 protected slots:
   virtual bool                   onApply();
 
@@ -75,14 +84,15 @@ private slots:
   void                           onDestCoordChanged();
   void                           onOpenView();
   void                           onCloseView();
+  void                           constructorChanged();
 
 private:
   int                           GetConstructorId();
 
+  int                           myDefaultConstructor;
   SMESHGUI_MakeNodeAtPointDlg*  myDlg;
 
   SUIT_SelectionFilter*         myFilter;
-  int                           myMeshOldDisplayMode;
   SMESHGUI*                     mySMESHGUI;
   SMESHGUI_MeshEditPreview*     mySimulation;
   SMESH_Actor*                  myMeshActor;
@@ -110,6 +120,7 @@ private:
   QButtonGroup*                 myButtonGroup;
   QRadioButton*                 myRButNodeToMove;
   QRadioButton*                 myRButMoveWithoutNode;
+  QRadioButton*                 myRButMoveInteractive;
   QPushButton*                  myDestBtn;
   QPushButton*                  myUpdateBtn;
   QGroupBox*                    myDestinationGrp;
index c20c5404a02b30a7ea70cff200cd8e3fce034cda..c74246a1bda5d15cfcdd3ba3444afef3b3880b7a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ea9f3e0d6b235bcb66b2fd28bac76b55b5c9b21c..e261be53217495e3001613415e097118983dfa9d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 3c37a0cba2afe406f750c6e7e4279f70831cdfec..48aeb4eb49e9b062aa1d9f644a4363d82fef6c9f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index bf59266389a29d5000f7107631b1c5afbe51c813..89c9275ae250ca03bb96aeeeb20ef147a5c7a6af 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index cc8b4b2e7c724b4b3b74fa051d5b32734f45382e..c9af382bfa0f8cb451d14e3ccbdd15c78c407103 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 56e96ea9b3b6429e64eb3f8efa45d87a41cf4a21..4c91302bf9fd1ebdd50b843f154eae559d691d50 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index b411a3f4d73736d9e3e6e8dc0f2587f7823e1a0d..878714827705226d5150a6da86034a21b5cbe809 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d9ebaba26a39109dca8b68cf085cc9c940cda1f1..84c97a83dff8165cc10527da9942c99b0b663b89 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 37ed558db44faee35f6497fa3ee1398385b9dc3f..24c610d783233a1976abede0dbb3a83fbff5d3af 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include <QVBoxLayout>
 
 ////////////////////////////////////////////////////////////////////////////////
-/// \class Field
-/// \brief Field widget.
+/// \class FieldInfo
+/// \brief FieldInfo widget.
 /// \internal
 ////////////////////////////////////////////////////////////////////////////////
 
-class Field : public QLabel
+class FieldInfo : public QLabel
 {
 public:
-  Field( QWidget*, const QString& = QString() );
+  FieldInfo( QWidget*, const QString& = QString() );
   bool event( QEvent* );
 };
 
 /*!
   \brief Constructor.
   \param parent Parent widget.
-  \param name Field name. Defaults to null string.
+  \param name FieldInfo name. Defaults to null string.
 */
-Field::Field( QWidget* parent, const QString& name ): QLabel( parent )
+FieldInfo::FieldInfo( QWidget* parent, const QString& name ): QLabel( parent )
 {
   setFrameStyle( QLabel::StyledPanel | QLabel::Sunken );
   setAlignment( Qt::AlignCenter );
@@ -100,7 +100,7 @@ Field::Field( QWidget* parent, const QString& name ): QLabel( parent )
 /*!
   \brief Event handler. Redefined from QLabel.
 */
-bool Field::event( QEvent* e )
+bool FieldInfo::event( QEvent* e )
 {
   if ( e->type() == QEvent::DynamicPropertyChange )
   {
@@ -332,12 +332,12 @@ namespace
   /*!
     \brief Create information field.
     \param parent Parent widget.
-    \param name Field's object. Default to null string.
-    \return New field.
+    \param name FieldInfo's object. Default to null string.
+    \return New FieldInfo.
   */
   QLabel* createField( QWidget* parent, const QString& name = QString() )
   {
-    return new Field( parent, name );
+    return new FieldInfo( parent, name );
   }
 
   /*!
@@ -1674,6 +1674,8 @@ QString SMESHGUI_ElemInfo::ctrl2str( int control )
     title = tr( "ASPECTRATIO_3D_ELEMENTS" ); break;
   case SMESH::FT_Warping:
     title = tr( "WARP_ELEMENTS" ); break;
+  case SMESH::FT_Warping3D:
+    title = tr( "WARP_3D_ELEMENTS" ); break;
   case SMESH::FT_MinimumAngle:
     title = tr( "MINIMUMANGLE_ELEMENTS" ); break;
   case SMESH::FT_Taper:
@@ -1684,6 +1686,8 @@ QString SMESHGUI_ElemInfo::ctrl2str( int control )
     title = tr( "AREA_ELEMENTS" ); break;
   case SMESH::FT_Volume3D:
     title = tr( "VOLUME_3D_ELEMENTS" ); break;
+  case SMESH::FT_ScaledJacobian:
+    title = tr( "SCALED_JACOBIAN" ); break;  
   case SMESH::FT_MaxElementLength2D:
     title = tr( "MAX_ELEMENT_LENGTH_2D" ); break;
   case SMESH::FT_MaxElementLength3D:
@@ -3549,6 +3553,7 @@ SMESHGUI_CtrlInfo::SMESHGUI_CtrlInfo( QWidget* parent ): SMESHGUI_Info( parent )
   connect( aDoubleVolumesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleVolumesInfo() ) );
   connect( aOverContVolumesBtn,SIGNAL( clicked() ), this, SLOT( computeOverConstrainedVolumesInfo() ) );
   connect( myToleranceWidget, SIGNAL( valueChanged( double ) ), this, SLOT( setTolerance( double ) ) );
+  this->setTolerance(myToleranceWidget->GetValue());
 
   l->addWidget( aNameLab,           0, 0 ); //0
   l->addWidget( aName,              0, 1 ); //1
index 84700d488a1c9069be94cb11782cfd70e43c78fd..d595c1c94dd465e2bd4c40cda76930902e1adace 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 4a2e957f81ec7c5ee688e34a9bc15aad9cebe5f9..bd0e0dbe6991c6e029706fd828e7ff3d266d4962 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3da3a89cbf5b7995053e2bf601a671e0de06deff..6aa85788fce011bd04c888447d9b6f9ce91da66f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e0c88fa1788b406a782cd7b5257525d3fa359545..50132b41eee3cc0ea8f78e9816099d0e92af0036 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -37,6 +37,7 @@
 #include "SMESH_NumberFilter.hxx"
 #include "SMESH_TypeDefs.hxx"
 #include "SMESH_TypeFilter.hxx"
+#include "SMESH_Gen_i.hxx"
 
 #include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
 
@@ -124,6 +125,57 @@ LightApp_Dialog* SMESHGUI_MeshOp::dlg() const
   return myDlg;
 }
 
+//================================================================================
+/*!
+ * \brief Log meshers info
+*/
+//================================================================================
+void SMESHGUI_MeshOp::logSmeshParams()
+{
+  QString mesherType;
+  int curMeshType = myDlg->currentMeshType();
+  switch ( curMeshType ) {
+  case MT_ANY:
+    mesherType = "Any";
+    break;
+  case MT_TRIANGULAR:
+    mesherType = "Triangular";
+    break;
+  case MT_QUADRILATERAL:
+    mesherType = "Quadrilateral";
+    break;
+  case MT_TETRAHEDRAL:
+    mesherType = "Tetrahedral";
+    break;
+  case MT_HEXAHEDRAL:
+    mesherType = "Hexahedral";
+    break;
+  default:
+    mesherType = "";
+  }
+
+  QString aMessage = QString("Mesh type is %1").arg(mesherType);
+  CAM_Application::logStructuredUserEvent( "Mesh",
+                                           "create mesh",
+                                           "",
+                                           "",
+                                           aMessage);
+
+  for ( int dim = 0; dim <= 3; ++dim )
+  {
+    HypothesisData * curAlgo = hypData( dim, Algo, currentHyp( dim, Algo ));
+    if(curAlgo)
+    {
+      aMessage = QString("%1D algorithm is %2").arg(dim).arg(curAlgo->Label);
+      CAM_Application::logStructuredUserEvent( "Mesh",
+                                           "create mesh",
+                                           "",
+                                           "",
+                                           aMessage);
+    }
+  }
+}
+
 //================================================================================
 /*!
  * \brief Creates or edits mesh
@@ -157,7 +209,7 @@ bool SMESHGUI_MeshOp::onApply()
     if (( myToCreate && !myIsMesh ) || myIsInvalidSubMesh )
       aResult = createSubMesh( aMess, anEntryList );
     else if ( !myToCreate )
-      aResult = editMeshOrSubMesh( aMess );
+      aResult = editMeshOrSubMesh( aMess, anEntryList );
     if ( aResult )
     {
       SMESHGUI::Modified();
@@ -181,6 +233,7 @@ bool SMESHGUI_MeshOp::onApply()
   {
     if ( myToCreate )
       setDefaultName();
+    //connect(aAction, SIGNAL(triggered(bool)), this, SLOT(logSmeshParams()));
   }
   else
   {
@@ -189,6 +242,7 @@ bool SMESHGUI_MeshOp::onApply()
     SUIT_MessageBox::warning( myDlg, tr( "SMESH_ERROR" ), aMess );
   }
 
+  logSmeshParams();
   myHypoSet = 0;
 
   return aResult;
@@ -355,7 +409,7 @@ bool SMESHGUI_MeshOp::isSubshapeOk() const
     GEOM::GEOM_Object_var subGeom =
       GEOM::GEOM_Object::_narrow(_CAST(SObject,pSubGeom)->GetObject());
 
-    if ( SMESH::ContainsSubShape( mainGeom, subGeom ))
+    if ( SMESH::ContainsSubShape( mainGeom, subGeom, false ))
       return true;
   }
 
@@ -1291,6 +1345,7 @@ void SMESHGUI_MeshOp::createHypothesis(const int      theDim,
       initHypCreator( aCreator );
 
       myDlg->setEnabled( false );
+      myDlg->hide();
       aCreator->create(initParamHyp, aHypName, myDlg, this, SLOT( onHypoCreated( int ) ) );
       dialog = true;
     }
@@ -1322,6 +1377,7 @@ void SMESHGUI_MeshOp::onHypoCreated( int result )
     int obj = myDlg->getActiveObject();
     onActivateObject( obj ); // Issue 0020170. Restore filters
     myDlg->setEnabled( true );
+    myDlg->show();
   }
 
   _PTR(SComponent) aFather = SMESH::getStudy()->FindComponent("SMESH");
@@ -1378,6 +1434,7 @@ void SMESHGUI_MeshOp::onEditHyp( const int theHypType, const int theIndex )
 
     removeCustomFilters(); // Issue 0020170
     myDlg->setEnabled( false );
+    myDlg->hide();
 
     aCreator->edit( aHyp.in(), aHypItem.second, dlg(), this, SLOT( onHypoEdited( int ) ) );
   }
@@ -1396,6 +1453,7 @@ void SMESHGUI_MeshOp::onHypoEdited( int /*result*/ )
   int obj = myDlg->getActiveObject();
   onActivateObject( obj ); // Issue 0020170. Restore filters
   myDlg->setEnabled( true );
+  myDlg->show();
 }
 
 //================================================================================
@@ -2038,7 +2096,10 @@ bool SMESHGUI_MeshOp::createMesh( QString& theMess, QStringList& theEntryList )
           elemType = SMESH::NODE;
 
         CORBA::String_var name = geomGroups[ iG ]->GetName();
-        meshGroup = aMesh->CreateGroupFromGEOM( elemType, name, geomGroups[ iG ]);
+
+        SALOMEDS::SObject_wrap groupSO = SMESH_Gen_i::GetSMESHGen()->ObjectToSObject( geomGroups[iG] );
+        if (!groupSO->_is_nil())
+          meshGroup = aMesh->CreateGroupFromGEOM( elemType, name, geomGroups[ iG ]);
         // if ( elemType != SMESH::NODE )
         //   meshGroup = aMesh->CreateGroupFromGEOM( SMESH::NODE, name, geomGroups[ iG ]);
       }
@@ -2573,13 +2634,14 @@ int SMESHGUI_MeshOp::find( const SMESH::SMESH_Hypothesis_var& theHyp,
 //================================================================================
 /*!
  * \brief Edits mesh or sub-mesh
-  * \param theMess - Output parameter intended for returning error message
-  * \retval bool  - TRUE if mesh is edited successfully, FALSE otherwise
+  * \param theMess      - Output parameter intended for returning error message
+ *  \param theEntryList - List of entries of published objects
+  * \retval bool        - TRUE if mesh is edited successfully, FALSE otherwise
  *
  * Assigns new name hypotheses and algorithms to the mesh or sub-mesh
  */
 //================================================================================
-bool SMESHGUI_MeshOp::editMeshOrSubMesh( QString& theMess )
+bool SMESHGUI_MeshOp::editMeshOrSubMesh( QString& theMess, QStringList& theEntryList)
 {
   theMess = "";
 
@@ -2624,6 +2686,12 @@ bool SMESHGUI_MeshOp::editMeshOrSubMesh( QString& theMess )
   if ( !isMesh && !aSubMeshVar->_is_nil() )
     aMesh = aSubMeshVar->GetFather();
 
+  _PTR(SObject) aMeshSO = SMESH::FindSObject(aMesh.in());
+  if (aMeshSO) {
+    if (aSubMeshVar->_is_nil()) SMESH::SetName(aMeshSO, myDlg->objectText(SMESHGUI_MeshDlg::Obj));
+    theEntryList.append(aMeshSO->GetID().c_str());
+  }
+
   // Assign new algorithms and hypotheses
   for ( int dim = aDim; dim <= SMESH::DIM_3D; dim++ )
   {
index 311fb8be1cca5261a104653b815ed8740835e776..de6803a4064b17fbd311d1837cde2fbe5b904544 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -120,7 +120,7 @@ private:
 
   bool                           createMesh( QString&, QStringList& );
   bool                           createSubMesh( QString&, QStringList& );
-  bool                           editMeshOrSubMesh( QString& );
+  bool                           editMeshOrSubMesh( QString&, QStringList& );
   void                           createSubMeshOnInternalEdges( SMESH::SMESH_Mesh_ptr mesh,
                                                                GEOM::GEOM_Object_ptr mainShape );
   bool                           checkSubMeshConcurrency( SMESH::SMESH_Mesh_ptr    mesh,
@@ -151,6 +151,7 @@ private:
   void                           updateHypoSets();
   void                           setFilteredAlgoData();
   QStringList                    getHypoNames();
+  void                           logSmeshParams();
 
 private:
 
index 051edc423b75d041e00f02844e6f57b5dd1c7024..1a134c329a1044933846672914ce7c1cb72715b4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d8efa504eb9048da2fe4b19489ce355d0b0ee197..f0e0363b197c3ecbdda1ec6f30ccda7d122dd610 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index cea181b47967615efafaf990236520e4e36425a2..80236be4e7307b7b2edc41f0caf6ca3a4bc81dc4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d93a6067e90ec7bee8220dcd27fa273b27d5f54a..7a71fc022836e9c02cb0475db3e195f1aeefed64 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f03e4317641f1f2f3195e0842124b35ebfd4a7b7..3b01cde7b4bd5b82de6b40f1ea7a46acdbba07eb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a60c47f0ebc0e23701291a5dfa1d2664fb59dd19..60526f2ad144a205496c4e0244beb63824115786 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 89af29b1a67fc9bcf344c62349b267c4977fe705..3fd79a72e6cb9c01fbae965239c8effaacb5c8ce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a7293c47a46eca3f30e519d839139165c81bb0e1..8293393e00eff725f9bf1fa92de59f9bda902d94 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 113d248607d1908a37645c7abdbdc6227815d8d2..72a6c71fe639c33de8f5f90de3dc6a14c6d33e78 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2020-2021  CEA/DEN, EDF R&D
+// Copyright (C) 2020-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 036f35f2570c4a191a09e8c00e9dea06f77b87fb..3efdb2f2d42860ea6406a8c1e73340d3dede16a4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2020-2021  CEA/DEN, EDF R&D
+// Copyright (C) 2020-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index fb6bb6d5b16f76d3359a29e428042b72bbf3b4b5..01cc037717ed5c20474e9f6e538ef14b74626761 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index af199e28295e6f2c35abcee06b42b592d7879cd1..ba7ae89e1dda5b8ced99b928b3ee536a1e478f23 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index c69f075c2d896898640fec29a8bd17911cbdcde2..01f86709c4b7328e80c54e884bcf1798504455b8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1b1d336d73109b21d496af67ff61429dde8d0ad0..16997e0d04ca3065d59836d4e5838365674de303 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index c8f79dea0c4d164c4828e8183432ccd0deccf034..0ca8b8b12c89356a71c66f37b903658b927e496f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -245,7 +245,7 @@ SMESHGUI_OffsetDlg::SMESHGUI_OffsetDlg( SMESHGUI* theModule ) :
   myMeshOrSubMeshOrGroupFilter =
     new SMESH_LogicalFilter(aListOfFilters, SMESH_LogicalFilter::LO_OR);
 
-  myHelpFileName = "Offset_page.html";
+  myHelpFileName = "offset_elements.html";
 
   Init();
 
index 9c748e6ca571962ed128fc25c4492aa65fef79cf..a4cd24f5da9e764045c97d88c35704df9c4e2bb7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 599f87ca1b13f2e91dbe7cd6d38bff93f4ef33e3..1e40230db616885589eaed39ac9c71c1919cb47d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 70df1f04c8188593e3961855f4a473d90be32f1e..a3813301c230bf4d18289d432948db576d84593e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e24bcd558da2e739b7505604c67fa8dcfd86cf19..bdf6e7382f98a3b7e514e4c86da706fba4f2316b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -122,6 +122,8 @@ namespace SMESHOp {
     OpBareBorderVolume       = 3303,   // MENU CONTROLS - VOLUMES WITH BARE BORDER
     OpOverConstrainedVolume  = 3304,   // MENU CONTROLS - OVERCONSTRAINED VOLUMES
     OpEqualVolume            = 3305,   // MENU CONTROLS - DOUBLE VOLUMES
+    OpScaledJacobian         = 3306,   // MENU CONTROLS - SCALED JACOBIAN
+    OpWarping3D              = 3307,   // MENU CONTROLS - Warping 3D
     OpOverallMeshQuality     = 3400,   // MENU CONTROLS - OVERALL MESH QUALITY
     // Modification -------------------//--------------------------------
     OpNode                   = 4000,   // MENU MODIFICATION - ADD - NODE
@@ -153,6 +155,7 @@ namespace SMESHOp {
     OpRemoveNodes            = 4200,   // MENU MODIFICATION - REMOVE - NODE
     OpRemoveElements         = 4201,   // MENU MODIFICATION - REMOVE - ELEMENTS
     OpRemoveOrphanNodes      = 4202,   // MENU MODIFICATION - REMOVE - ORPHAN NODES
+    OpRemoveNodeWithReconn   = 4203,   // MENU MODIFICATION - REMOVE - NODE, WITH RECONNECTION
     OpDeleteGroup            = 4210,   // MENU MODIFICATION - REMOVE - DELETE GROUPS WITH CONTENTS
     OpClearMesh              = 4220,   // MENU MODIFICATION - REMOVE - CLEAR MESH DATA
     OpRenumberingNodes       = 4300,   // MENU MODIFICATION - RENUMBERING - NODES
@@ -182,8 +185,15 @@ namespace SMESHOp {
     OpConvertMeshToQuadratic = 4513,   // MENU MODIFICATION - CONVERT TO/FROM QUADRATIC
     OpCreateBoundaryElements = 4514,   // MENU MODIFICATION - CREATE BOUNDARY ELEMENTS
     OpSplitBiQuadratic       = 4515,   // MENU MODIFICATION - SPLIT BI-QUADRATIC TO LINEAR
+    OpMoveNodeInteractive    = 4516,   // MENU MODIFICATION - MOVE NODE INTERACTIVE
+    OpSplitEdgeInteract      = 4517,   // MENU MODIFICATION - INTERACTIVE ADD NODE ON EDGE
+    OpSplitFaceInteract      = 4518,   // MENU MODIFICATION - INTERACTIVE ADD NODE ON FACE
+    OpCreateDualMesh         = 4519,   // MENU MODIFICATION - CREATE DUAL MESH
+    OpCreate2DElements       = 4520,   // MENU MODIFICATION - CREATE 2D MESH FROM 3D MESH
+
     // Adaptation ---------------------//--------------------------------
     OpMGAdapt                = 8020,   // MENU ADAPTATION - MG-ADAPT
+    OpHomardAdapt            = 8021,   // MENU ADAPTATION - HOMARD-ADAPT
     // Measurements -------------------//--------------------------------
     OpPropertiesLength       = 5000,   // MENU MEASUREMENTS - BASIC PROPERTIES - LENGTH
     OpPropertiesArea         = 5001,   // MENU MEASUREMENTS - BASIC PROPERTIES - AREA
index d60cf06471758dd96bb97b0ed78780ba27aa6d53..e2caed3755c7f07fef2582722f78b3201d090c53 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0d7151ee8c07301a4a7a71f32c98998a67a9e844..abdcc380e32c56a68833b8f956a74ee0478fb215 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index cccbde3af73feafe28ba2d9cb1cc66e70f829f23..7258a0b75bad4fb6f807b57be05cb80be0e0a85d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index db4eca9ae8a4a52a8b8a17921b5df61d0535cbcb..31939d599b47bf4896734aaaac0dc639cd09bbfa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6910bde4973ebaba28f18837d499b4b558e757f0..3eacc1f178d696b8a07461a0b4260dfdeb1313d3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5d58d6321f3f15f0543bd027844999a1695278b0..be3b411f2d5f1d1f0a6fed21de870345760179cd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6fad8191683fc5454c958e7b4032a780e2951eba..73055fb48536b20b9dc006f550f66f06ad528989 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -50,6 +50,8 @@
 
 #include <QtxColorButton.h>
 
+#include "utilities.h"
+
 // Qt includes
 #include <QButtonGroup>
 #include <QCheckBox>
@@ -146,11 +148,21 @@ SMESHGUI_Preferences_ScalarBarDlg::SMESHGUI_Preferences_ScalarBarDlg( SMESHGUI*
   myLogarithmicCheck->setText(tr("SMESH_LOGARITHMIC_SCALARBAR"));
   myLogarithmicCheck->setChecked(false);
 
+  myThresholdCheck = new QCheckBox (myRangeGrp);
+  myThresholdCheck->setText(tr("SMESH_TRESHOLD_SCALARBAR"));
+  myThresholdCheck->setChecked(false);
+
+  myWireframeOffCheck = new QCheckBox (myRangeGrp);
+  myWireframeOffCheck->setText(tr("SMESH_WIREFRAME_OFF_SCALARBAR"));
+  myWireframeOffCheck->setChecked(false);
+
   myRangeGrpLayout->addWidget( new QLabel( tr( "SMESH_RANGE_MIN" ), myRangeGrp ), 0, 0, 1, 1 );
   myRangeGrpLayout->addWidget( myMinEdit, 0, 1, 1, 1 );
   myRangeGrpLayout->addWidget( new QLabel( tr( "SMESH_RANGE_MAX" ), myRangeGrp ), 0, 2, 1, 1 );
   myRangeGrpLayout->addWidget( myMaxEdit, 0, 3, 1, 1 );
-  myRangeGrpLayout->addWidget( myLogarithmicCheck, 1, 0, 1, 4 );
+  myRangeGrpLayout->addWidget( myLogarithmicCheck, 1, 0, 1, 1 );
+  myRangeGrpLayout->addWidget( myThresholdCheck, 1, 1, 1, 1 );
+  myRangeGrpLayout->addWidget( myWireframeOffCheck, 1, 2, 1, 1 );
 
   aTopLayout->addWidget( myRangeGrp );
 
@@ -564,6 +576,9 @@ bool SMESHGUI_Preferences_ScalarBarDlg::onApply()
 
   myLookupTable->SetRange( aMin, aMax );
   myLookupTable->SetNumberOfTableValues(myColorsSpin->value());
+  applyThreshold(aMin, aMax);
+
+  applyWireframeOff();
 
   bool scaleChanged = (myLogarithmicCheck->isChecked() != (myLookupTable->GetScale() == VTK_SCALE_LOG10));
   if (scaleChanged)
@@ -656,8 +671,15 @@ void SMESHGUI_Preferences_ScalarBarDlg::onSelectionChanged()
           myLogarithmicCheck->setChecked(aLookupTable->GetScale() == VTK_SCALE_LOG10);
           //myLogarithmicCheck->setEnabled(range[0] > 1e-07 && range[1] > 1e-07);
           myLogarithmicCheck->setEnabled(range[0] != range[1]);
+
+          myThresholdCheck->setChecked(myActor->IsClipThresholdOn());
+          applyThreshold(range[0], range[1]);
+
+          myWireframeOffCheck->setChecked(myActor->IsWireframeOff());
         }
 
+        applyWireframeOff();
+
         vtkTextProperty* aTitleTextPrp = myScalarBarActor->GetTitleTextProperty();
         double aTColor[3];
         aTitleTextPrp->GetColor( aTColor );
@@ -736,11 +758,19 @@ void SMESHGUI_Preferences_ScalarBarDlg::onSelectionChanged()
 //=================================================================================================
 void SMESHGUI_Preferences_ScalarBarDlg::onMinMaxChanged()
 {
-  double aMin = myMinEdit->text().toDouble();
-  double aMax = myMaxEdit->text().toDouble();
-  bool isLogarithmicEnabled = (aMin > 1e-07 && aMax > 1e-07);
-  myLogarithmicCheck->setChecked(isLogarithmicEnabled);
+  // Check if the min-max range is valid.
+  const double aMin = myMinEdit->text().toDouble();
+  const double aMax = myMaxEdit->text().toDouble();
+  const bool isLogarithmicEnabled = aMin > 1e-07 && aMax > 1e-07; // TODO: is it right validation?
+
+  // The checkbox should be enabled only when the range is valid for it
   myLogarithmicCheck->setEnabled(isLogarithmicEnabled);
+
+  // Change checkbox only if the range is not valid. Otherwise it's on the user decision.
+  if (!isLogarithmicEnabled)
+  {
+    myLogarithmicCheck->setChecked(isLogarithmicEnabled);
+  }
 }
 
 //=================================================================================================
@@ -873,3 +903,27 @@ void SMESHGUI_Preferences_ScalarBarDlg::initScalarBarFromResources()
       DEF_VER_H = mgr->doubleValue("SMESH", name.arg( "height" ));
   }
 }
+
+//=================================================================================================
+/*!
+ *  SMESHGUI_Preferences_ScalarBarDlg::applyThreshold()
+ *
+ *  Hides and shows elements beyond the given min - max range by threshold filter inside the actor.
+ */
+//=================================================================================================
+void SMESHGUI_Preferences_ScalarBarDlg::applyThreshold(double min, double max)
+{
+  myActor->ClipThreshold(myThresholdCheck->isChecked(), min, max);
+}
+
+//=================================================================================================
+/*!
+ *  SMESHGUI_Preferences_ScalarBarDlg::applyWireframeOff()
+ *
+ *  Hides and shows edges' lines.
+ */
+//=================================================================================================
+void SMESHGUI_Preferences_ScalarBarDlg::applyWireframeOff()
+{
+  myActor->SetWireframeOff(myWireframeOffCheck->isChecked());
+}
index 309f5ee1170da9f9292cc4fa08216df5ad816a2a..33e1143aa74346915d06cb58bae0e2aaa425670d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -50,6 +50,8 @@ class SalomeApp_IntSpinBox;
 class QtxColorButton;
 class LightApp_SelectionMgr;
 
+class vtkLookupTable;
+
 class SMESHGUI_EXPORT SMESHGUI_Preferences_ScalarBarDlg : public QDialog
 { 
   Q_OBJECT
@@ -70,6 +72,10 @@ public:
                                              const double );
   void                     initScalarBarFromResources();
 
+protected:
+  void                     applyThreshold(double min, double max);
+  void                     applyWireframeOff();
+
 protected slots:
   virtual void             reject();
 
@@ -97,6 +103,8 @@ private:
   QLineEdit*               myMinEdit;
   QLineEdit*               myMaxEdit;
   QCheckBox*               myLogarithmicCheck;
+  QCheckBox*               myThresholdCheck;
+  QCheckBox*               myWireframeOffCheck;
 
   QGroupBox*               myFontGrp;
   QtxColorButton*          myTitleColorBtn;
index 3724665a55411acca4be0e0c99fabfd460063164..db2b4e99e9f5ea1bd22156db4be0d86e466ed4ff 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index cd9755cb6f8017d0c42d2be76ef938ca778543df..5133f4cadac2079480620c0a83aafffacba2210b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index dbf2e168c2849779da4b9db153b487ef986c7df4..da92ec1c11adb9de36a6d2d40456bc2e51ed4abb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 25c406fe8aeaa5193b3b2dd46a1522d7e18488a1..d24b277c32dae8d26facb33d7e1c59220a442bf8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index acdc3c8861d3638315cefc8f8eaf86163baeee0c..ac06ff65e800bac702aafed25f218445d825cb77 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 3dd65f16b11e6971ae67728b10623b7709174c66..200d3f7b4a8373dc0d44a5ad627e131fbb9029af 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/src/SMESHGUI/SMESHGUI_RemoveNodeReconnectionDlg.cxx b/src/SMESHGUI/SMESHGUI_RemoveNodeReconnectionDlg.cxx
new file mode 100644 (file)
index 0000000..5b8eb5b
--- /dev/null
@@ -0,0 +1,485 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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   : SMESHGUI_MakeNodeAtPointDlg.cxx
+// Author : Edward AGAPOV, Open CASCADE S.A.S.
+// SMESH includes
+//
+#include "SMESHGUI_RemoveNodeReconnectionDlg.h"
+
+#include "SMESHGUI.h"
+#include "SMESHGUI_IdValidator.h"
+#include "SMESHGUI_MeshUtils.h"
+#include "SMESHGUI_VTKUtils.h"
+#include "SMESHGUI_MeshEditPreview.h"
+
+#include <SMDS_Mesh.hxx>
+#include <SMESH_Actor.h>
+#include <SMESH_ActorUtils.h>
+#include <SMESH_LogicalFilter.hxx>
+
+// SALOME GUI includes
+#include <LightApp_SelectionMgr.h>
+#include <SALOME_ListIO.hxx>
+#include <SUIT_Desktop.h>
+#include <SVTK_ViewModel.h>
+#include <SVTK_ViewWindow.h>
+#include <SalomeApp_Tools.h>
+#include <SalomeApp_TypeFilter.h>
+#include <SUIT_ResourceMgr.h>
+#include <SUIT_OverrideCursor.h>
+#include <SUIT_MessageBox.h>
+
+// Qt includes
+#include <QApplication>
+#include <QGroupBox>
+#include <QGridLayout>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QLineEdit>
+#include <QPushButton>
+#include <QLabel>
+#include <QRadioButton>
+#include <QCheckBox>
+#include <QButtonGroup>
+
+// VTK includes
+#include <vtkProperty.h>
+
+// IDL includes
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Mesh)
+#include CORBA_SERVER_HEADER(SMESH_MeshEditor)
+
+#define SPACING 6
+#define MARGIN  11
+
+//=======================================================================
+/*!
+ * \brief Dialog to Remove a node with elements re-connection
+ */
+//=======================================================================
+
+SMESHGUI_RemoveNodeReconnectionDlg::SMESHGUI_RemoveNodeReconnectionDlg()
+  : SMESHGUI_Dialog( 0, false, true )
+{
+  setWindowTitle(tr("CAPTION"));
+
+  QVBoxLayout* aDlgLay = new QVBoxLayout (mainFrame());
+  aDlgLay->setMargin(0);
+  aDlgLay->setSpacing(SPACING);
+  myMainFrame = createMainFrame(mainFrame());
+
+  aDlgLay->addWidget(myMainFrame);
+
+  aDlgLay->setStretchFactor(myMainFrame, 1);
+}
+
+//=======================================================================
+// function : createMainFrame()
+// purpose  : Create frame containing dialog's input fields
+//=======================================================================
+
+QWidget* SMESHGUI_RemoveNodeReconnectionDlg::createMainFrame (QWidget* theParent)
+{
+  QWidget* aFrame = new QWidget(theParent);
+
+  // Node to remove
+
+  myNodeToMoveGrp = new QGroupBox(tr("NODE_2REMOVE"), aFrame);
+  myNodeToMoveGrp->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  QLabel* idLabel = new QLabel(tr("NODE_2REMOVE_ID"), myNodeToMoveGrp);
+  myId = new QLineEdit(myNodeToMoveGrp);
+  myId->setValidator(new SMESHGUI_IdValidator(this, 1));
+
+  QGridLayout* myNodeToMoveGrpLayout = new QGridLayout(myNodeToMoveGrp);
+  myNodeToMoveGrpLayout->setSpacing(SPACING);
+  myNodeToMoveGrpLayout->setMargin(MARGIN);
+
+  myNodeToMoveGrpLayout->addWidget( idLabel, 0, 0 );
+  myNodeToMoveGrpLayout->addWidget( myId,    0, 2 );
+
+  // Preview
+
+  myPreviewChkBox = new QCheckBox( tr("PREVIEW"), aFrame);
+
+  QVBoxLayout* aLay = new QVBoxLayout(aFrame);
+  aLay->addWidget(myNodeToMoveGrp);
+  aLay->addWidget(myPreviewChkBox);
+
+  return aFrame;
+}
+
+//================================================================================
+/*!
+ * \brief Constructor
+ */
+//================================================================================
+
+SMESHGUI_RemoveNodeReconnectionOp::SMESHGUI_RemoveNodeReconnectionOp()
+{
+  mySimulation = 0;
+  mySMESHGUI = 0;
+  myDlg = new SMESHGUI_RemoveNodeReconnectionDlg;
+  myFilter = 0;
+  myHelpFileName = "removing_nodes_and_elements.html#removing-nodes-reconnect-anchor";
+
+  myNoPreview = false;
+
+  // connect signals and slots
+  connect(myDlg->myId,            SIGNAL (textChanged(const QString&)),SLOT(redisplayPreview()));
+  connect(myDlg->myPreviewChkBox, SIGNAL (toggled(bool)),              SLOT(redisplayPreview()));
+  connect(myDlg->myId,            SIGNAL (textChanged(const QString&)),SLOT(onTextChange(const QString&)));
+}
+
+//=======================================================================
+// function : startOperation()
+// purpose  : Init dialog fields, connect signals and slots, show dialog
+//=======================================================================
+
+void SMESHGUI_RemoveNodeReconnectionOp::startOperation()
+{
+  myNoPreview = false;
+  myMeshActor = 0;
+
+  // init simulation with a current View
+  if ( mySimulation ) delete mySimulation;
+  mySMESHGUI = getSMESHGUI();
+  mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI ) );
+  connect(mySMESHGUI, SIGNAL (SignalActivatedViewManager()), this, SLOT(onOpenView()));
+  connect(mySMESHGUI, SIGNAL (SignalCloseView()), this, SLOT(onCloseView()));
+  vtkProperty* aProp = vtkProperty::New();
+  aProp->SetRepresentationToWireframe();
+  aProp->SetColor(250, 0, 250);
+  aProp->SetPointSize(5);
+  aProp->SetLineWidth( SMESH::GetFloat("SMESH:element_width",1) + 1);
+  mySimulation->GetActor()->SetProperty(aProp);
+  aProp->Delete();
+
+  // SalomeApp_TypeFilter depends on a current study
+  if ( myFilter ) delete myFilter;
+  // QList<SUIT_SelectionFilter*> filters;
+  // filters.append( new SalomeApp_TypeFilter((SalomeApp_Study*)study(), "SMESH" ));
+  // myFilter = new SMESH_LogicalFilter( filters, SMESH_LogicalFilter::LO_OR );
+
+  // IPAL19360
+  SMESHGUI_SelectionOp::startOperation(); // this method should be called only after filter creation
+  myDlg->myId->setText("");
+
+  myDlg->show();
+
+  onSelectionDone(); // init myMeshActor
+}
+
+//================================================================================
+/*!
+ * \brief Stops operation
+ */
+//================================================================================
+
+void SMESHGUI_RemoveNodeReconnectionOp::stopOperation()
+{
+  myNoPreview = true;
+  if ( mySimulation )
+  {
+    mySimulation->SetVisibility(false);
+    delete mySimulation;
+    mySimulation = 0;
+  }
+  if ( myMeshActor ) {
+    myMeshActor = 0;
+  }
+  SMESH::SetPointRepresentation( false );
+  SMESH::RepaintCurrentView();
+
+  disconnect(mySMESHGUI, SIGNAL (SignalActivatedViewManager()), this, SLOT(onOpenView()));
+  disconnect(mySMESHGUI, SIGNAL (SignalCloseView()),            this, SLOT(onCloseView()));
+  //selectionMgr()->removeFilter( myFilter );
+  SMESHGUI_SelectionOp::stopOperation();
+}
+
+//================================================================================
+/*!
+ * \brief perform it's intention action: move or create a node
+ */
+//================================================================================
+
+bool SMESHGUI_RemoveNodeReconnectionOp::onApply()
+{
+  if( SMESHGUI::isStudyLocked() )
+    return false;
+
+  if ( !myMeshActor ) {
+    SUIT_MessageBox::warning( dlg(), tr( "SMESH_WRN_WARNING" ), tr("INVALID_MESH") );
+    dlg()->show();
+    return false;
+  }
+
+  QString msg;
+  if ( !isValid( msg ) ) { // node id is invalid
+    if ( !msg.isEmpty() )
+      SUIT_MessageBox::warning( dlg(), tr( "SMESH_WRN_WARNING" ), tr("INVALID_ID") );
+    dlg()->show();
+    return false;
+  }
+
+  try {
+    SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO( myMeshActor->getIO() );
+    if ( aMesh->_is_nil() )
+    {
+      SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_ERROR"), tr("SMESHG_NO_MESH") );
+      return true;
+    }
+    SMESH::SMESH_MeshEditor_var aMeshEditor = aMesh->GetMeshEditor();
+    if ( aMeshEditor->_is_nil() )
+      return true;
+
+    bool ok;
+    int anId = myDlg->myId->text().toInt( &ok );
+    myDlg->myId->setText( "" );
+
+    aMeshEditor->RemoveNodeWithReconnection( anId );
+
+    SALOME_ListIO aList;
+    selectionMgr()->setSelectedObjects(aList,false);
+    aList.Append( myMeshActor->getIO() );
+    selectionMgr()->setSelectedObjects(aList,false);
+    SMESH::UpdateView();
+    SMESHGUI::Modified();
+
+  }
+  catch (const SALOME::SALOME_Exception& S_ex) {
+    SalomeApp_Tools::QtCatchCorbaException(S_ex);
+  }
+  catch (...) {
+  }
+
+  return true;
+}
+
+//================================================================================
+/*!
+ * \brief Check selected node id validity
+ */
+//================================================================================
+
+bool SMESHGUI_RemoveNodeReconnectionOp::isValid( QString& msg )
+{
+  bool ok = true;
+  if ( myMeshActor )
+  {
+    ok = false;
+    int id = myDlg->myId->text().toInt();
+    if ( id > 0 )
+      if ( SMDS_Mesh* aMesh = myMeshActor->GetObject()->GetMesh() )
+        ok = aMesh->FindNode( id );
+    if ( !ok )
+      msg += tr("INVALID_ID") + "\n";
+  }
+
+  return ok;
+}
+
+//================================================================================
+/*!
+ * \brief SLOT called when selection changed
+ */
+//================================================================================
+
+void SMESHGUI_RemoveNodeReconnectionOp::onSelectionDone()
+{
+  if ( !myDlg->isVisible() || !myDlg->isEnabled() )
+    return;
+
+  myDlg->myId->setText("");
+  myNoPreview = true;
+  try
+  {
+    SALOME_ListIO aList;
+    selectionMgr()->selectedObjects( aList, SVTK_Viewer::Type() );
+    if ( aList.Extent() != 1)
+      return;
+    Handle(SALOME_InteractiveObject) anIO = aList.First();
+    myMeshActor = SMESH::FindActorByEntry( anIO->getEntry() );
+
+    QString aString;
+    int nbElems = SMESH::GetNameOfSelectedElements( selector(), anIO, aString );
+    if ( nbElems == 1 )
+      myDlg->myId->setText( aString );
+
+  } catch (...) {
+  }
+
+  myNoPreview = false;
+  redisplayPreview();
+}
+
+//================================================================================
+/*!
+ * \brief update preview
+ */
+//================================================================================
+
+void SMESHGUI_RemoveNodeReconnectionOp::redisplayPreview()
+{
+  if ( myNoPreview )
+    return;
+  myNoPreview = true;
+
+  if ( !myMeshActor )
+    onSelectionDone();
+
+  SMESH::MeshPreviewStruct_var aMeshPreviewStruct;
+
+  QString msg;
+  if ( myMeshActor && isValid( msg ) && myDlg->myPreviewChkBox->isChecked() )
+    try {
+      SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO( myMeshActor->getIO() );
+      if ( !aMesh->_is_nil() )
+      {
+        SMESH::SMESH_MeshEditor_var aPreviewer = aMesh->GetMeshEditPreviewer();
+        if (!aPreviewer->_is_nil())
+        {
+          int anId = myDlg->myId->text().toInt();
+          aPreviewer->RemoveNodeWithReconnection( anId );
+          aMeshPreviewStruct = aPreviewer->GetPreviewData();
+        }
+      }
+    }
+    catch (...) {
+    }
+
+  if (!mySimulation)
+    mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI ));
+
+  // display data
+  if ( & aMeshPreviewStruct.in() )
+  {
+    mySimulation->SetData( aMeshPreviewStruct.in() );
+  }
+  else
+  {
+    mySimulation->SetVisibility( false );
+  }
+
+  myNoPreview = false;
+}
+
+//=================================================================================
+/*!
+ * \brief SLOT called when the viewer opened
+ */
+//=================================================================================
+
+void SMESHGUI_RemoveNodeReconnectionOp::onOpenView()
+{
+  if ( mySimulation )
+  {
+    mySimulation->SetVisibility( false );
+    SMESH::SetPointRepresentation( false );
+  }
+  else
+  {
+    mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI ));
+  }
+}
+
+//=================================================================================
+/*!
+ * \brief SLOT called when the viewer closed
+ */
+//=================================================================================
+
+void SMESHGUI_RemoveNodeReconnectionOp::onCloseView()
+{
+  delete mySimulation;
+  mySimulation = 0;
+}
+
+//================================================================================
+/*!
+ * \brief SLOT called when the node id is manually changed
+ */
+//================================================================================
+
+void SMESHGUI_RemoveNodeReconnectionOp::onTextChange( const QString& theText )
+{
+  if( myMeshActor )
+  {
+    if( SMDS_Mesh* aMesh = myMeshActor->GetObject()->GetMesh() )
+    {
+      Handle(SALOME_InteractiveObject) anIO = myMeshActor->getIO();
+      SALOME_ListIO aList;
+      aList.Append( anIO );
+      selectionMgr()->setSelectedObjects( aList, false );
+
+      if ( const SMDS_MeshNode* aNode = aMesh->FindNode( theText.toInt() ))
+      {
+        SVTK_TVtkIDsMap aListInd;
+        aListInd.Add( FromSmIdType<int>( aNode->GetID()) );
+        selector()->AddOrRemoveIndex( anIO, aListInd, false );
+        if( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( SMESHGUI::GetSMESHGUI() ) )
+          aViewWindow->highlight( anIO, true, true );
+      }
+    }
+  }
+}
+
+//================================================================================
+/*!
+ * \brief Activate Node selection
+ */
+//================================================================================
+
+void SMESHGUI_RemoveNodeReconnectionOp::activateSelection()
+{
+  selectionMgr()->clearFilters();
+  SMESH::SetPointRepresentation( true );
+  //selectionMgr()->installFilter( myFilter );
+  setSelectionMode( NodeSelection );
+}
+
+//================================================================================
+/*!
+ * \brief Destructor
+ */
+//================================================================================
+
+SMESHGUI_RemoveNodeReconnectionOp::~SMESHGUI_RemoveNodeReconnectionOp()
+{
+  if ( myDlg )        delete myDlg;
+  if ( mySimulation ) delete mySimulation;
+  if ( myFilter )     delete myFilter;
+}
+
+//================================================================================
+/*!
+ * \brief Gets dialog of this operation
+ * \retval LightApp_Dialog* - pointer to dialog of this operation
+ */
+//================================================================================
+
+LightApp_Dialog* SMESHGUI_RemoveNodeReconnectionOp::dlg() const
+{
+  return myDlg;
+}
+
diff --git a/src/SMESHGUI/SMESHGUI_RemoveNodeReconnectionDlg.h b/src/SMESHGUI/SMESHGUI_RemoveNodeReconnectionDlg.h
new file mode 100644 (file)
index 0000000..3b9fa4a
--- /dev/null
@@ -0,0 +1,110 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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   : SMESHGUI_RemoveNodeReconnectionDlg.h
+// Author : Edward AGAPOV, Open CASCADE S.A.S.
+//
+#ifndef __SMESHGUI_RemoveNodeReconnection_HXX__
+#define __SMESHGUI_RemoveNodeReconnection_HXX__
+
+#include "SMESHGUI_Dialog.h"
+#include "SMESHGUI_SelectionOp.h"
+
+class QButtonGroup;
+class QCheckBox;
+class QGroupBox;
+class QLineEdit;
+class QPushButton;
+class QRadioButton;
+class SMESHGUI_SpinBox;
+class SMESHGUI_MeshEditPreview;
+class SMESHGUI_RemoveNodeReconnectionDlg;
+
+/*!
+ * \brief Remove a node with elements re-connection
+ */
+class SMESHGUI_EXPORT SMESHGUI_RemoveNodeReconnectionOp: public SMESHGUI_SelectionOp
+{
+  Q_OBJECT
+
+public:
+  SMESHGUI_RemoveNodeReconnectionOp();
+  virtual ~SMESHGUI_RemoveNodeReconnectionOp();
+
+  virtual LightApp_Dialog*       dlg() const;  
+
+protected:
+
+  virtual void                   startOperation();
+  virtual void                   stopOperation();
+
+  virtual void                   activateSelection();
+
+  bool                           isValid( QString& );
+
+protected slots:
+  virtual bool                   onApply();
+
+private slots:
+  void                           onSelectionDone();
+  void                           redisplayPreview();
+  void                           onTextChange( const QString& );
+  void                           onOpenView();
+  void                           onCloseView();
+
+private:
+
+  SMESHGUI_RemoveNodeReconnectionDlg*  myDlg;
+
+  SUIT_SelectionFilter*         myFilter;
+  SMESHGUI*                     mySMESHGUI;
+  SMESHGUI_MeshEditPreview*     mySimulation;
+  SMESH_Actor*                  myMeshActor;
+  bool                          myNoPreview;
+};
+
+/*!
+ * \brief Dialog to make a mesh pass through a point
+ */
+
+class SMESHGUI_EXPORT SMESHGUI_RemoveNodeReconnectionDlg : public SMESHGUI_Dialog
+{
+  Q_OBJECT
+
+public:
+  SMESHGUI_RemoveNodeReconnectionDlg();
+
+private:
+  QWidget*                      createMainFrame( QWidget* );
+
+  QWidget*                      myMainFrame;
+  QGroupBox*                    myNodeToMoveGrp;
+  QLineEdit*                    myId;
+  QCheckBox*                    myPreviewChkBox;
+
+  QString                       myHelpFileName;
+
+  friend class SMESHGUI_RemoveNodeReconnectionOp;
+
+};
+
+#endif // SMESHGUI_RemoveNodeReconnectionDLG_H
index bae6988dce7e9b8c2a4a48974066bf9815ff0df9..5c0555d2b7e9371bc9b9c8054f5f0ef1ced1e1af 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 043b20a3ee117b6d19fba6bd06354486401ccd76..d123c5667230dcb92072a59fc37767fe44b36462 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 96c7890492ac1fc225949868117e59c83cf977a7..867edba8c06d3d8d1f5961dc2c617ff2701a5220 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 89fdb4e91f3bdf522d07609d00efffced86fd3e2..8b9ab851cd6c80db9a40bf59e5c4149f9e8698da 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e5c74545a3dff69e632a1ed3dad439d260f52873..f67d6465659a6ca133611a7b64177f0cb704353b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5b86db6ffbce2627ac482e4a3864c6fa7d3f1d38..ee56a233e44006fa933ef6ec0687fe2a4a8b639f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 768303fea2b408c5d76824b484e1d65bf7075f9e..04f1a08f0888146bcb3200f6b512572e3c301c5b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index b0eda7f18debb0844605443c3d9ee5c9e1d9423d..5951fc1d7452a2b709c57184e47d466ed0be7f58 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 85c7872d3ee9efaadb6f7b3ec44f0a9c6d093963..a261f1d9898133653d5c406546d353561b6a40ca 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index cf3bfae0f2231a152c60df5423046cb6bb257ea2..310e8af9cd960d0d72b2c53405f1681cb676ccd2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1a1b0f5d990119b9220a5c7fb3c0094e0e7d111d..fce90c2ad53b0c51a92145cb83bdac4d15f5ed7b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4c5c08b96233e4fe6157ff5bf0eb92d8ad5eed0b..988d7001d7dfbac25c20cac44fd0583f9b7a66c2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 84ba6947d3baac3c334bb86c436ea01562a6c92e..5669e9eadec03e0b298b6f7d1e487d18b00ea402 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -371,11 +371,13 @@ QString SMESHGUI_Selection::controlMode( int ind ) const
     case SMESH_Actor::eMultiConnection2D:     mode = "eMultiConnection2D";     break;
     case SMESH_Actor::eArea:                  mode = "eArea";                  break;
     case SMESH_Actor::eVolume3D:              mode = "eVolume3D";              break;
+    case SMESH_Actor::eScaledJacobian:        mode = "eScaledJacobian";        break;
     case SMESH_Actor::eMaxElementLength2D:    mode = "eMaxElementLength2D";    break;
     case SMESH_Actor::eMaxElementLength3D:    mode = "eMaxElementLength3D";    break;
     case SMESH_Actor::eTaper:                 mode = "eTaper";                 break;
     case SMESH_Actor::eAspectRatio:           mode = "eAspectRatio";           break;
     case SMESH_Actor::eAspectRatio3D:         mode = "eAspectRatio3D";         break;
+    case SMESH_Actor::eWarping3D:             mode = "eWarping3D";             break;
     case SMESH_Actor::eMinimumAngle:          mode = "eMinimumAngle";          break;
     case SMESH_Actor::eWarping:               mode = "eWarping";               break;
     case SMESH_Actor::eSkew:                  mode = "eSkew";                  break;
@@ -429,6 +431,7 @@ bool SMESHGUI_Selection::isNumFunctor( int ind ) const
     case SMESH_Actor::eMultiConnection2D:
     case SMESH_Actor::eArea:
     case SMESH_Actor::eVolume3D:
+    case SMESH_Actor::eScaledJacobian:
     case SMESH_Actor::eMaxElementLength2D:
     case SMESH_Actor::eMaxElementLength3D:
     case SMESH_Actor::eTaper:
@@ -436,6 +439,7 @@ bool SMESHGUI_Selection::isNumFunctor( int ind ) const
     case SMESH_Actor::eAspectRatio3D:
     case SMESH_Actor::eMinimumAngle:
     case SMESH_Actor::eWarping:
+    case SMESH_Actor::eWarping3D:
     case SMESH_Actor::eSkew:
       result = true;
       break;
index 6b19c8d3b17dc6c0b48b61dcdef5337653ca0ef6..4f3ea7441570ffcc168441a1617d9811d42ddb32 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index fd509d47cb43127398f39b566d48dd32dd8ab950..c5d81acaed31d32d2b7e61616955f234f19dfb61 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6b8e713f919ed96904366029c4285ee9e21646ae..640e536c307b7ba61eca56a350546f74a9e4a796 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ee15fbdc749a46a7a90b65cae575c3b9ed24ff16..6d7afa4e3cc2ca98bc384b177aa35eb236105ea1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -908,6 +908,9 @@ bool SMESH::SelectionProxy::elementControl( int id, int control, double precisio
       case SMESH::FT_Warping:
         functor.reset( new SMESH::Controls::Warping() );
         break;
+      case SMESH::FT_Warping3D:
+        functor.reset(new SMESH::Controls::Warping3D());
+        break;
       case SMESH::FT_MinimumAngle:
         functor.reset( new SMESH::Controls::MinimumAngle() );
         break;
@@ -941,6 +944,9 @@ bool SMESH::SelectionProxy::elementControl( int id, int control, double precisio
       case SMESH::FT_BallDiameter:
         functor.reset( new SMESH::Controls::BallDiameter() );
         break;
+      case SMESH::FT_ScaledJacobian:
+        functor.reset( new SMESH::Controls::ScaledJacobian() );
+        break;
       default:
         break;
       } 
@@ -976,6 +982,9 @@ bool SMESH::SelectionProxy::elementControl( int id, int control, double precisio
       case SMESH::FT_Warping:
         functor = manager->CreateWarping();
         break;
+      case SMESH::FT_Warping3D:
+        functor = manager->CreateWarping3D();
+        break;
       case SMESH::FT_MinimumAngle:
         functor = manager->CreateMinimumAngle();
         break;
@@ -1009,6 +1018,9 @@ bool SMESH::SelectionProxy::elementControl( int id, int control, double precisio
       case SMESH::FT_BallDiameter:
         functor = manager->CreateBallDiameter();
         break;
+      case SMESH::FT_ScaledJacobian:
+        functor = manager->CreateScaledJacobian();
+        break;
       default:
         break;
       }
index ac842bd3f6d63d4256d44a4c7ed653c1d72e8f58..0e70a5d63d46150d90bd93f5170bcd0fe912f53b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 01f5c58af553f08ee4ecde4ff6e3be79eb130346..c74a90ef2dae8add158777984454b4efabde15d2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 595a142c94c29c73dc5bfbe13ba625c5b336e98d..322b437afe890ba9f4adeecc86f710cfe5a0a6aa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ba0041988ed419ce13161824bc81bf079a696645..ada31938b7d66add97d8c2054cbe01863a3f549b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e4c20f055d6aecb7e742ebb2749fc556b4b86f6d..d93a96be9861258b75d0645ee9934479b79f12e7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 720709b5cc747583f03aa7b09f97fb5a35ee4d59..f4342c7f982388b89b8e1a4c1df6514e2fd366c1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index db661cfc975175345debd9a8f182700c798da31e..456481a1fbd8877cb81d172ad0dc9cde1a414ff1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 8ea32c95498753f3c1d41445db6dcbf34b67287d..6c2c420b4da4a28f94117f8e9e1e1a3f046401cd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f2524564bf88ae79120db8879a5db6424b03e70a..0f6d6fdf902654cd35e55a900888dd51f0fcebbb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6a93110ed32b3007354c168ae569cda36da6bdf1..23c9af58a3235790c7a8208f8e04ff6b49f3cca7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 4cf00b4c622f06659d7c5ffff90e6b2353d14de4..735f8e5b4755c65c5392a07c3b6a170d71f98c06 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 3868ab417ab6c0cf7ce0a7fc9f3cd86b713a3ac1..7e969d6887a250dc3c86fae86e0280e29fac0026 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index c2a44f96bf82b3cfc7bd0db1f8d296e8fd71fc7d..b32ce21014ec678a66a22ab3f2b7ce38d157a02e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 67961eb63694c43698740cd36a5759bd64489f25..f25afbac24f19b5b08c773facdc8abf2cc4c3163 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 18835a25e1e5f3ed40ac2e8f70e7acbb41a36481..78957db0eee41b1731350e1724bb6a9e4f81f295 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 49e637d41d2da31625afa2164e63ebca49e91c58..0838ae88b85adba6cc3fa2a7e7da27c0e06e98c4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5f1be428a9e7ddc164ff62a000693fd1703f5dcf..aa0f2327916103a50b3fbe0d9f4c6c53909a49c1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d95676d19b1c88a8d74c2f169eef8a31e7481e02..4863b499dec6b1bcd206b8f6a3abf1c8a5f59077 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f9534af9d566dec32a6345eb2c2bd01beb25c8b8..fbfcdc3599f62f9e82229d4ce9b5c2c15258a99a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 892590dcbb6c8bec9f115b3d8e58e200fe7456c6..d51661526afe912eaa45f16c7ade5a8f57b7f45e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9515099b78c632ef3b491934448e159e9a6df28c..40844ae3397d5091b1374b3b10dc4459ab67eb6e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e3d6adeab7f29434b546e565a93955d8a0e52dad..ece3b31ba6352e51682e5ca22bbf9f6a72c586fb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -692,6 +692,7 @@ namespace SMESH
       try {
         OCC_CATCH_SIGNALS;
         //MESSAGE("DisplayActor " << theActor);
+        theActor->SetPointRepresentation(false);
         vtkWnd->AddActor(theActor);
         vtkWnd->Repaint();
       }
index 1adcd5c5636a195b888da210d0c51069fb0238aa..90ea3e13aa6c24ffeeec0990ca6d4261041cebf8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0c59d65a4085d5cc77a07c78537064efab28b0d5..d207cf2c9df895457e1d0e550666594261479a03 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -109,7 +109,7 @@ bool SMESHGUI_XmlHandler::startElement (const QString&, const QString&,
         SUIT_ResourceMgr* resMgr = SMESHGUI::resourceMgr();
         QString lang = resMgr->stringValue( resMgr->langSection(), "language", "en" );
         resMgr->loadTranslator( "resources", QString( "%1_msg_%2.qm" ).arg( aResName, lang ) );
-        resMgr->loadTranslator( "resources", QString( "%1_images.qm" ).arg( aResName, lang ) );
+        resMgr->loadTranslator( "resources", QString( "%1_images.qm" ).arg( aResName ) );
       }
     }
   }
index b148ad6bca9efab263281851308c00cdc51c978a..4f4b0e691e888d8d57a83d23140015b66327eb02 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index c397fefd8aadf1ab21c50913b2c5bd885f58105d..ae7d2de06f1dacc67fba89ae79f7ed004747d31e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 74697d463cd92204d47edc35af07032a0bdc5984..57631362b625410a2eda42281c835d76808e92ca 100644 (file)
             <source>ICON_MG_ADAPT</source>
             <translation>adapt_mg_adapt.png</translation>
         </message>
+        <message>
+            <source>ICON_HOMARD_ADAPT</source>
+            <translation>adapt_homard.png</translation>
+        </message>
         <message>
             <source>ICON_CONV_TO_QUAD</source>
             <translation>mesh_conv_to_quad.png</translation>
         </message>
+        <message>
+            <source>ICON_CREATE_DUAL_MESH</source>
+            <translation>mesh_create_dual_mesh.png</translation>
+        </message>
         <message>
             <source>ICON_CUT</source>
             <translation>mesh_cutGroups.png</translation>
             <source>ICON_DLG_MOVE_WITHOUT_NODE</source>
             <translation>mesh_move_without_node.png</translation>
         </message>
+        <message>
+            <source>ICON_DLG_MOVE_NODE_INTERACTIVE</source>
+            <translation>mesh_move_node_interactive.png</translation>
+        </message>
+        <message>
+            <source>ICON_SPLIT_DIAG_INTERACTIVE</source>
+            <translation>mesh_split_diag_interactive.png</translation>
+        </message>
+        <message>
+            <source>ICON_SPLIT_FACE_INTERACTIVE</source>
+            <translation>mesh_split_face_interactive.png</translation>
+        </message>
         <message>
             <source>ICON_DLG_NODE</source>
             <translation>mesh_vertex.png</translation>
             <source>ICON_DLG_REM_NODE</source>
             <translation>mesh_rem_node.png</translation>
         </message>
+        <message>
+            <source>ICON_REM_NODE_RECON</source>
+            <translation>mesh_rem_node_recon.png</translation>
+        </message>
         <message>
             <source>ICON_DLG_REM_ORPHAN_NODES</source>
             <translation>mesh_rem_orphan_nodes.png</translation>
         </message>
         <message>
             <source>ICON_PATTERN_2d</source>
-            <translation>mesh_algo_mefisto.png</translation>
+            <translation>mesh_algo_tri.png</translation>
         </message>
         <message>
             <source>ICON_PATTERN_3d</source>
             <source>ICON_VOLUME_3D</source>
             <translation>mesh_volume_3d.png</translation>
         </message>
+        <message>
+            <source>ICON_SCALED_JACOBIAN</source>
+            <translation>mesh_scaled_jacobian.png</translation>
+        </message>
         <message>
             <source>ICON_BARE_BORDER_VOLUME</source>
             <translation>bare_border_volume.png</translation>
             <source>ICON_2D_FROM_3D</source>
             <translation>mesh_2d_from_3d.png</translation>
         </message>
+        <message>
+            <source>ICON_2D_FROM_3D_ELEMENTS</source>
+            <translation>mesh_2d_from_3d_elements.png</translation>
+        </message>
         <message>
             <source>ICON_SPLIT_TO_TETRA</source>
             <translation>split_into_tetra.png</translation>
index 67ca49fe593308d11be425a54e8790a2223714e5..8c6f0359b72e5b87e5881e075b76c175bddd5914 100644 (file)
         <source>BARE_BORDER_VOLUME</source>
         <translation>Volumes with bare border</translation>
     </message>
+    <message>
+        <source>SCALED_JACOBIAN</source>
+        <translation>Scaled Jacobian</translation>
+    </message>
     <message>
         <source>OVER_CONSTRAINED_VOLUME</source>
         <translation>Over-constrained volumes</translation>
         <source>ASPECTRATIO_3D_ELEMENTS</source>
         <translation>Aspect Ratio 3D</translation>
     </message>
+    <message>
+        <source>WARPING_3D_ELEMENTS</source>
+        <translation>Warping 3D</translation>
+    </message>
     <message>
         <source>ASPECTRATIO_ELEMENTS</source>
         <translation>Aspect Ratio</translation>
         <source>MEN_COPY_MESH</source>
         <translation>Copy Mesh</translation>
     </message>
+    <message>
+    <source>MEN_CREATE_DUAL_MESH</source>
+        <translation>Create Dual Mesh</translation>
+    </message>
     <message>
         <source>MEN_CLIP</source>
         <translation>Clipping</translation>
         <source>MEN_MG_ADAPT</source>
         <translation>Remesh with MG_Adapt</translation>
     </message>
+    <message>
+        <source>MEN_HOMARD_ADAPT</source>
+        <translation>Uniform refinement</translation>
+    </message>
     <message>
         <source>Args</source>
         <translation>Arguments</translation>
         <source>MEN_2D_FROM_3D</source>
         <translation>Create boundary elements</translation>
     </message>
+    <message>
+        <source>MEN_2D_FROM_3D_ELEMENTS</source>
+        <translation>Create 2D mesh from 3D elements</translation>
+    </message>
     <message>
         <source>MEN_MESH_ORDER</source>
         <translation>Change sub-mesh priority</translation>
         <source>MEN_MESH_THROU_POINT</source>
         <translation>Move Node</translation>
     </message>
+    <message>
+        <source>MEN_MOVE_NODE_INTRCT</source>
+        <translation>Move node by mouse</translation>
+    </message>
+    <message>
+        <source>MEN_SPLIT_DIAG_INTRC</source>
+        <translation>Add node on segment</translation>
+    </message>
+    <message>
+        <source>MEN_SPLIT_FACE_INTRC</source>
+        <translation>Add node to triangle</translation>
+    </message>
     <message>
         <source>MEN_MIN_ANG</source>
         <translation>Minimum Angle</translation>
         <source>MEN_REMOVE_NODES</source>
         <translation>Nodes</translation>
     </message>
+    <message>
+        <source>MEN_REMOVE_NODE_RECON</source>
+        <translation>Node with reconnection</translation>
+    </message>
     <message>
         <source>MEN_REMOVE_ORPHAN_NODES</source>
         <translation>Orphan Nodes</translation>
         <source>MEN_VOLUME_3D</source>
         <translation>Volume</translation>
     </message>
+    <message>
+        <source>MEN_SCALED_JACOBIAN</source>
+        <translation>Scaled Jacobian</translation>
+    </message>
     <message>
         <source>MEN_WARP</source>
         <translation>Warping Angle</translation>
     </message>
+    <message>
+        <source>MEN_WARP_3D</source>
+        <translation>Warping 3D</translation>
+    </message>
     <message>
         <source>MEN_WHAT_IS</source>
         <translation>Mesh Element Information</translation>
@@ -2200,6 +2244,14 @@ Check algorithm documentation for supported geometry</translation>
         <source>SMESH_LOGARITHMIC_SCALARBAR</source>
         <translation>Logarithmic</translation>
     </message>
+    <message>
+        <source>SMESH_TRESHOLD_SCALARBAR</source>
+        <translation>Threshold</translation>
+    </message>
+    <message>
+        <source>SMESH_WIREFRAME_OFF_SCALARBAR</source>
+        <translation>Wireframe Off</translation>
+    </message>
     <message>
         <source>SMESH_MAKE_GROUPS</source>
         <translation>Generate groups</translation>
@@ -3025,6 +3077,10 @@ Check algorithm documentation for supported geometry</translation>
         <source>ADAPT_PREF_NONE</source>
         <translation>None</translation>
     </message>
+    <message>
+        <source>ADAPT_WITH_HOMARD</source>
+        <translation>Adaptation with HOMARD</translation>
+    </message>
     <message>
         <source>ADAPT_PREF_MG_ADAPT</source>
         <translation>Adaptation with MG-Adapt</translation>
@@ -3216,6 +3272,10 @@ Use Display Entity menu command to show them.
         <source>SMESH_Z</source>
         <translation>Z</translation>
     </message>
+    <message>
+        <source>SMESH_Z_SCALARBAR</source>
+        <translation>Z:</translation>
+    </message>
     <message>
         <source>STATE_ALGO_MISSING</source>
         <translation>%3 %2D algorithm is missing</translation>
@@ -3272,6 +3332,10 @@ Use Display Entity menu command to show them.
         <source>STB_COPY_MESH</source>
         <translation>Copy Mesh</translation>
     </message>
+    <message>
+        <source>STB_CREATE_DUAL_MESH</source>
+        <translation>Create Dual Mesh</translation>
+    </message>
     <message>
         <source>STB_CLIP</source>
         <translation>Clipping</translation>
@@ -3284,6 +3348,10 @@ Use Display Entity menu command to show them.
         <source>STB_COMPUTE</source>
         <translation>Compute</translation>
     </message>
+    <message>
+        <source>STB_RE_COMPUTE</source>
+        <translation>Clear + Compute</translation>
+    </message>
     <message>
         <source>STB_COMPUTE_SUBMESH</source>
         <translation>Compute Sub-mesh</translation>
@@ -3312,6 +3380,10 @@ Use Display Entity menu command to show them.
         <source>STB_MG_ADAPT</source>
         <translation>Remesh with MG_Adapt</translation>
     </message>
+    <message>
+        <source>STB_HOMARD_ADAPT</source>
+        <translation>Uniform refinement</translation>
+    </message>
     <message>
         <source>STB_CONV_TO_QUAD</source>
         <translation>Convert to/from quadratic</translation>
@@ -3320,6 +3392,10 @@ Use Display Entity menu command to show them.
         <source>STB_2D_FROM_3D</source>
         <translation>Create boundary elements</translation>
     </message>
+    <message>
+        <source>STB_2D_FROM_3D_ELEMENTS</source>
+        <translation>Create 2D mesh from 3D elements</translation>
+    </message>
     <message>
         <source>STB_MESH_ORDER</source>
         <translation>Change sub-mesh priority</translation>
@@ -3592,6 +3668,18 @@ Use Display Entity menu command to show them.
         <source>STB_MESH_THROU_POINT</source>
         <translation>Move Node</translation>
     </message>
+    <message>
+        <source>STB_MOVE_NODE_INTRCT</source>
+        <translation>Move Node by mouse</translation>
+    </message>
+    <message>
+        <source>STB_SPLIT_DIAG_INTRC</source>
+        <translation>Add node on segment</translation>
+    </message>
+    <message>
+        <source>STB_SPLIT_FACE_INTRC</source>
+        <translation>Add node to triangle</translation>
+    </message>
     <message>
         <source>STB_MIN_ANG</source>
         <translation>Minimum Angle</translation>
@@ -3680,6 +3768,10 @@ Use Display Entity menu command to show them.
         <source>STB_REMOVE_NODES</source>
         <translation>Remove nodes</translation>
     </message>
+    <message>
+        <source>STB_REMOVE_NODE_RECON</source>
+        <translation>Remove node with reconnection</translation>
+    </message>
     <message>
         <source>STB_REMOVE_ORPHAN_NODES</source>
         <translation>Remove orphan nodes</translation>
@@ -3844,10 +3936,18 @@ Use Display Entity menu command to show them.
         <source>STB_VOLUME_3D</source>
         <translation>Volume</translation>
     </message>
+    <message>
+        <source>STB_SCALED_JACOBIAN</source>
+        <translation>Scaled Jacobian</translation>
+    </message>
     <message>
         <source>STB_WARP</source>
         <translation>Warping angle</translation>
     </message>
+    <message>
+        <source>STB_WARP_3D</source>
+        <translation>Warping angle</translation>
+    </message>
     <message>
         <source>STB_WHAT_IS</source>
         <translation>Show information about the mesh node or element</translation>
@@ -3876,6 +3976,10 @@ Use Display Entity menu command to show them.
         <source>TB_RENUMBER</source>
         <translation>Renumbering Toolbar</translation>
     </message>
+    <message>
+        <source>TB_INTERACT</source>
+        <translation>Interactive modifications Toolbar</translation>
+    </message>
     <message>
         <source>TB_TRANSFORM</source>
         <translation>Transformation Toolbar</translation>
@@ -3980,6 +4084,10 @@ Use Display Entity menu command to show them.
         <source>TOP_COMPUTE</source>
         <translation>Compute</translation>
     </message>
+    <message>
+        <source>TOP_RE_COMPUTE</source>
+        <translation>Clear + Compute</translation>
+    </message>
     <message>
         <source>TOP_COMPUTE_SUBMESH</source>
         <translation>Compute Sub-mesh</translation>
@@ -4008,6 +4116,10 @@ Use Display Entity menu command to show them.
         <source>TOP_MG_ADAPT</source>
         <translation>Remesh with MG_Adapt</translation>
     </message>
+    <message>
+        <source>TOP_HOMARD_ADAPT</source>
+        <translation>Uniform refinement</translation>
+    </message>
     <message>
         <source>TOP_CONV_TO_QUAD</source>
         <translation>Convert to/from quadratic</translation>
@@ -4016,6 +4128,10 @@ Use Display Entity menu command to show them.
         <source>TOP_2D_FROM_3D</source>
         <translation>Create boundary elements</translation>
     </message>
+    <message>
+        <source>TOP_2D_FROM_3D_ELEMENTS</source>
+        <translation>Create 2D mesh from 3D elements</translation>
+    </message>
     <message>
         <source>TOP_MESH_ORDER</source>
         <translation>Change sub-mesh priority</translation>
@@ -4280,6 +4396,18 @@ Use Display Entity menu command to show them.
         <source>TOP_MESH_THROU_POINT</source>
         <translation>Move Node</translation>
     </message>
+    <message>
+        <source>TOP_MOVE_NODE_INTRCT</source>
+        <translation>Move node by mouse</translation>
+    </message>
+    <message>
+        <source>TOP_SPLIT_DIAG_INTRC</source>
+        <translation>Add node on segment</translation>
+    </message>
+    <message>
+        <source>TOP_SPLIT_FACE_INTRC</source>
+        <translation>Add node to triangle</translation>
+    </message>
     <message>
         <source>TOP_MIN_ANG</source>
         <translation>Minimum Angle</translation>
@@ -4368,6 +4496,10 @@ Use Display Entity menu command to show them.
         <source>TOP_REMOVE_NODES</source>
         <translation>Remove nodes</translation>
     </message>
+    <message>
+        <source>TOP_REMOVE_NODE_RECON</source>
+        <translation>Remove node with reconnection</translation>
+    </message>
     <message>
         <source>TOP_REMOVE_ORPHAN_NODES</source>
         <translation>Remove orphan nodes</translation>
@@ -4528,10 +4660,18 @@ Use Display Entity menu command to show them.
         <source>TOP_VOLUME_3D</source>
         <translation>Volume</translation>
     </message>
+    <message>
+        <source>TOP_SCALED_JACOBIAN</source>
+        <translation>Scaled Jacobian</translation>
+    </message>
     <message>
         <source>TOP_WARP</source>
         <translation>Warping angle</translation>
     </message>
+    <message>
+        <source>TOP_WARP_3D</source>
+        <translation>Warping 3D</translation>
+    </message>
     <message>
         <source>TOP_WHAT_IS</source>
         <translation>Mesh Element Information</translation>
@@ -4556,6 +4696,10 @@ Use Display Entity menu command to show them.
         <source>WARP_ELEMENTS</source>
         <translation>Warping</translation>
     </message>
+    <message>
+        <source>WARP_3D_ELEMENTS</source>
+        <translation>Warping 3D</translation>
+    </message>
     <message>
         <source>MEN_FILE_INFO</source>
         <translation>File Information</translation>
@@ -5599,6 +5743,29 @@ Please specify it and try again</translation>
         <translation>Warning: mesh can become non-conformal</translation>
     </message>
 </context>
+<context>
+    <name>SMESHGUI_CreateDualMeshDlg</name>
+    <message>
+        <source>CAPTION</source>
+        <translation>Create Dual Mesh</translation>
+    </message>
+    <message>
+        <source>MESH</source>
+        <translation>Mesh or Sub-mesh</translation>
+    </message>
+    <message>
+        <source>NON_TETRA_MESH_WARNING</source>
+        <translation>Warning: mesh must have only Tetrahedron 3D elements</translation>
+    </message>
+    <message>
+        <source>DUAL_MESH_NAME</source>
+        <translation>Name of the dual mesh</translation>
+    </message>
+    <message>
+        <source>PROJ_SHAPE</source>
+        <translation>Project boundary elements on shape</translation>
+    </message>
+</context>
 <context>
     <name>SMESHGUI_ConvToQuadOp</name>
     <message>
@@ -6150,6 +6317,10 @@ Please check input data and try again</translation>
         <source>ASPECT_RATIO_3D</source>
         <translation>Aspect ratio 3D</translation>
     </message>
+    <message>
+        <source>WARPING_3D</source>
+        <translation>Warping 3D</translation>
+    </message>
     <message>
         <source>BAD_ORIENTED_VOLUME</source>
         <translation>Bad oriented volume</translation>
@@ -6377,6 +6548,10 @@ Please enter correct value and try again</translation>
         <source>VOLUME_3D</source>
         <translation>Volume</translation>
     </message>
+    <message>
+        <source>SCALED_JACOBIAN</source>
+        <translation>Scaled Jacobian</translation>
+    </message>
     <message>
         <source>WARPING</source>
         <translation>Warping</translation>
@@ -6685,6 +6860,10 @@ Please specify them and try again</translation>
         <source>DESTINATION</source>
         <translation>Destination</translation>
     </message>
+    <message>
+        <source>DESTINATION_BY_MOUSE</source>
+        <translation>Destination by mouse click</translation>
+    </message>
     <message>
         <source>MOVE_NODE</source>
         <translation>Move node</translation>
@@ -6713,6 +6892,120 @@ Please specify them and try again</translation>
         <translation>Mesh to modify not selected</translation>
     </message>
 </context>
+<context>
+    <name>SMESHGUI_AddNodeOnSegmentDlg</name>
+    <message>
+        <source>CAPTION</source>
+        <translation>Add node to segment</translation>
+    </message>
+    <message>
+        <source>SEGMENT_GROUP</source>
+        <translation>Edge between neighboring triangles</translation>
+    </message>
+    <message>
+        <source>SEGMENT</source>
+        <translation>Edge</translation>
+    </message>
+    <message>
+        <source>POSITION_GROUP</source>
+        <translation>Node on Edge</translation>
+    </message>
+    <message>
+        <source>POSITION</source>
+        <translation>Location by mouse click</translation>
+    </message>
+</context>
+<context>
+    <name>SMESHGUI_AddNodeOnSegmentOp</name>
+    <message>
+        <source>INVALID_EDGE</source>
+        <translation>Edge is invalid</translation>
+    </message>
+    <message>
+        <source>INVALID_MESH</source>
+        <translation>Mesh to modify not selected</translation>
+    </message>
+    <message>
+        <source>NO_ELEMENTS</source>
+        <translation>Edge belongs to none face</translation>
+    </message>
+    <message>
+        <source>VOLUME_FOUND</source>
+        <translation>Can't split an edge of a volume</translation>
+    </message>
+    <message>
+        <source>NOT_TRIANGLE_FACE_FOUND</source>
+        <translation>Operation applies to triangles only</translation>
+    </message>
+    <message>
+        <source>BAD_POSITION</source>
+        <translation>Position on edge is incorrect</translation>
+    </message>
+</context>
+<context>
+    <name>SMESHGUI_AddNodeOnFaceDlg</name>
+    <message>
+        <source>CAPTION</source>
+        <translation>Add node to triangle</translation>
+    </message>
+    <message>
+        <source>FACE_GROUP</source>
+        <translation>Triangle to split</translation>
+    </message>
+    <message>
+        <source>FACE_ID</source>
+        <translation>ID</translation>
+    </message>
+    <message>
+        <source>XYZ_GROUP</source>
+        <translation>Node location by mouse click</translation>
+    </message>
+    <message>
+        <source>XYZ_NODE_ON_FACE</source>
+        <translation>Node on face</translation>
+    </message>
+</context>
+<context>
+    <name>SMESHGUI_AddNodeOnFaceOp</name>
+    <message>
+        <source>INVALID_MESH</source>
+        <translation>Mesh to modify not selected</translation>
+    </message>
+    <message>
+        <source>NOT_FACE</source>
+        <translation>Not a face selected</translation>
+    </message>
+    <message>
+        <source>INVALID_ID</source>
+        <translation>Face ID is invalid</translation>
+    </message>
+</context>
+<context>
+    <name>SMESHGUI_RemoveNodeReconnectionDlg</name>
+    <message>
+        <source>CAPTION</source>
+        <translation>Remove Node with Reconnection</translation>
+    </message>
+    <message>
+        <source>NODE_2REMOVE_ID</source>
+        <translation>ID</translation>
+    </message>
+    <message>
+        <source>NODE_2REMOVE</source>
+        <translation>Node</translation>
+    </message>
+</context>
+<context>
+    <name>SMESHGUI_RemoveNodeReconnectionOp</name>
+    <message>
+        <source>INVALID_ID</source>
+        <translation>Node ID is invalid</translation>
+    </message>
+    <message>
+        <source>INVALID_MESH</source>
+        <translation>Mesh to modify not selected</translation>
+    </message>
+</context>
 <context>
     <name>SMESHGUI_FindElemByPointDlg</name>
     <message>
@@ -7647,6 +7940,17 @@ It is impossible to read point coordinates from file</translation>
         <translation>Generate</translation>
     </message>
 </context>
+<context>
+    <name>SMESHGUI_MakeFull2DFrom3DDlg</name>
+    <message>
+        <source>CAPTION</source>
+        <translation>Create 2D mesh from 3D elements</translation>
+    </message>
+    <message>
+        <source>2D_FROM_3D_ELEMENTS</source>
+        <translation>2D from 3D</translation>
+    </message>
+</context>    
 <context>
     <name>SMESHGUI_Make2DFrom3DDlg</name>
     <message>
@@ -7698,6 +8002,43 @@ It is impossible to read point coordinates from file</translation>
         <translation>Create group</translation>
     </message>
 </context>
+<context>
+    <name>SMESHGUI_MakeFull2DFrom3DOp</name>
+    <message>
+        <source>NB_ADDED</source>
+        <translation>%1 boundary elements have been added</translation>
+    </message>
+    <message>
+        <source>WRONG_GROUPS</source>
+        <translation>The following groups have not been processed
+as they are of improper type:
+%1</translation>
+    </message>
+    <message>
+        <source>SMESH_ERR_NO_INPUT_MESH</source>
+        <translation>Source mesh is not specified</translation>
+    </message>
+    <message>
+        <source>SMESH_TOO_MANY_MESHES</source>
+        <translation>Only one mesh can be processed at once</translation>
+    </message>
+    <message>
+        <source>SMESH_NOT_ONLY_GROUPS</source>
+        <translation>Can&apos;t process meshes and groups at once</translation>
+    </message>
+    <message>
+        <source>SMESH_ERR_NO_3D_ELEMENTS</source>
+        <translation>The source objects do not contain 3D elements</translation>
+    </message>
+    <message>
+        <source>SMESH_ERR_MESH_NAME_NOT_SPECIFIED</source>
+        <translation>New mesh name is not specified</translation>
+    </message>
+    <message>
+        <source>SMESH_ERR_GRP_NAME_NOT_SPECIFIED</source>
+        <translation>Group name is not specified</translation>
+    </message>
+</context>
 <context>
     <name>SMESHGUI_Make2DFrom3DOp</name>
     <message>
index 5ff73160634d09fc439c0299cc00e3a88a2768c4..9d00671aea312585b76d9d77c7b71165ba880031 100644 (file)
         <source>OVER_CONSTRAINED_VOLUME</source>
         <translation>Volumes sur-contraints</translation>
     </message>
+    <message>
+        <source>SCALED_JACOBIAN</source>
+        <translation>Jacobien normalisé</translation>
+    </message>
     <message>
         <source>MIN_DIAG_ELEMENTS</source>
         <translation>Diagonale minimum</translation>
         <source>MEN_COPY_MESH</source>
         <translation>Copier le maillage</translation>
     </message>
+    <message>
+    <source>MEN_CREATE_DUAL_MESH</source>
+        <translation>Création du maillage Dual</translation>
+    </message>
     <message>
         <source>MEN_CLIP</source>
         <translation>Plan de coupe</translation>
         <source>MEN_MG_ADAPT</source>
         <translation>Remaillage avec MG_Adapt</translation>
     </message>
+    <message>
+        <source>MEN_HOMARD_ADAPT</source>
+        <translation>Raffinement uniforme</translation>
+    </message>
     <message>
         <source>Args</source>
         <translation>Arguments</translation>
         <source>MEN_2D_FROM_3D</source>
         <translation>Créer les éléments de frontière</translation>
     </message>
+    <message>
+        <source>MEN_2D_FROM_3D_ELEMENTS</source>
+        <translation>Créer les faces des éléments volumiques</translation>
+    </message>
     <message>
         <source>MEN_MESH_ORDER</source>
         <translation>Changer la priorité des sous-maillages</translation>
         <source>MEN_MESH_THROU_POINT</source>
         <translation>Déplacer un nœud</translation>
     </message>
+    <message>
+        <source>MEN_MOVE_NODE_INTRCT</source>
+        <translation>Déplacer un nœud à la souris</translation>
+    </message>
+    <message>
+        <source>MEN_SPLIT_DIAG_INTRC</source>
+        <translation>Ajouter un nœud sur un segment</translation>
+    </message>
+    <message>
+        <source>MEN_SPLIT_FACE_INTRC</source>
+        <translation>Ajouter un nœud dans un triangle</translation>
+    </message>
     <message>
         <source>MEN_MIN_ANG</source>
         <translation>Angle minimal</translation>
         <source>MEN_REMOVE_NODES</source>
         <translation>Nœuds</translation>
     </message>
+    <message>
+        <source>MEN_REMOVE_NODE_RECON</source>
+        <translation>Retirer un nœud avec reconnection</translation>
+    </message>
     <message>
         <source>MEN_REMOVE_ORPHAN_NODES</source>
         <translation>Nœuds orphelins</translation>
         <source>MEN_VOLUME_3D</source>
         <translation>Volume</translation>
     </message>
+    <message>
+        <source>MEN_SCALED_JACOBIAN</source>
+        <translation>Jacobien normalisé</translation>
+    </message>
     <message>
         <source>MEN_WARP</source>
         <translation>Angle de déformation</translation>
     </message>
+    <message>
+        <source>MEN_WARP_3D</source>
+        <translation>Déformation 3D</translation>
+    </message>
     <message>
         <source>MEN_WHAT_IS</source>
         <translation>Information sur un élément de maillage</translation>
@@ -1598,6 +1638,10 @@ Merci de les corriger, puis essayez de nouveau</translation>
         <source>SMESH_AUTO_DIM</source>
         <translation>Définition automatique des dimensions spatiales</translation>
     </message>
+    <message>
+        <source>SMESH_MED_SAVE_NUMS</source>
+        <translation>Export des indices</translation>
+    </message>
     <message>
         <source>SMESH_ZTOLERANCE</source>
         <translation>Tolérance en Z</translation>
@@ -1610,6 +1654,10 @@ Merci de les corriger, puis essayez de nouveau</translation>
         <source>SMESH_AVAILABLE</source>
         <translation>Disponible</translation>
     </message>
+    <message>
+        <source>SMESH_NOT_AVAILABLE</source>
+        <translation>Indisponible</translation>
+    </message>
     <message>
         <source>SMESH_AVAILABLE_ALGORITHMS</source>
         <translation>Algorithmes disponibles</translation>
@@ -1750,7 +1798,7 @@ Merci de les corriger, puis essayez de nouveau</translation>
     </message>
     <message>
         <source>SMESH_CONTINUE_MESH_VISUALIZATION</source>
-        <translation>La système semble manquer de mémoire pour visualiser le maillage,
+        <translation>Le système semble manquer de mémoire pour visualiser le maillage,
 ce qui peut faire planter l'application. Voulez-vous continuer la visualisation ?</translation>
     </message>
     <message>
@@ -2190,6 +2238,14 @@ Référez-vous à la documentation sur l'algorithme et la géométrie supportée
         <source>SMESH_LOGARITHMIC_SCALARBAR</source>
         <translation>Logarithmique</translation>
     </message>
+    <message>
+        <source>SMESH_TRESHOLD_SCALARBAR</source>
+        <translation>Seuil</translation>
+    </message>
+    <message>
+        <source>SMESH_WIREFRAME_OFF_SCALARBAR</source>
+        <translation>Filaire désactivé</translation>
+    </message>
     <message>
         <source>SMESH_MAKE_GROUPS</source>
         <translation>Générer les groupes</translation>
@@ -2816,6 +2872,10 @@ Référez-vous à la documentation sur l'algorithme et la géométrie supportée
     </message>
     <message>
         <source>SMESH_RENUMBERING</source>
+        <translation>Renumérotation</translation>
+    </message>
+    <message>
+        <source>SMESH_RENUMBER</source>
         <translation>Renuméroter</translation>
     </message>
     <message>
@@ -2836,7 +2896,7 @@ Référez-vous à la documentation sur l'algorithme et la géométrie supportée
     </message>
     <message>
         <source>SMESH_RM_HYP_WRN</source>
-        <translation>&quot;%1&quot; n'est pas attribué, mais:
+        <translation>&quot;%1&quot; n'est pas attribué, mais :
 </translation>
     </message>
     <message>
@@ -3011,6 +3071,10 @@ Référez-vous à la documentation sur l'algorithme et la géométrie supportée
         <source>ADAPT_PREF_NONE</source>
         <translation>Sans</translation>
     </message>
+    <message>
+        <source>ADAPT_WITH_HOMARD</source>
+        <translation>Adaptation avec HOMARD</translation>
+    </message>
     <message>
         <source>ADAPT_PREF_MG_ADAPT</source>
         <translation>Adaptation avec MG-Adapt</translation>
@@ -3203,6 +3267,10 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>SMESH_Z</source>
         <translation>Z</translation>
     </message>
+    <message>
+        <source>SMESH_Z_SCALARBAR</source>
+        <translation>Z :</translation>
+    </message>
     <message>
         <source>STATE_ALGO_MISSING</source>
         <translation>Il manque l'algorithme %3 %2D</translation>
@@ -3259,6 +3327,10 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>STB_COPY_MESH</source>
         <translation>Copie le maillage</translation>
     </message>
+    <message>
+        <source>STB_CREATE_DUAL_MESH</source>
+        <translation>Création du maillage Dual</translation>
+    </message>
     <message>
         <source>STB_CLIP</source>
         <translation>Pan de coupe</translation>
@@ -3271,6 +3343,10 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>STB_COMPUTE</source>
         <translation>Calculer</translation>
     </message>
+    <message>
+        <source>STB_RE_COMPUTE</source>
+        <translation>Effacer + Calculer</translation>
+    </message>
     <message>
         <source>STB_COMPUTE_SUBMESH</source>
         <translation>Calculer le sous-maillage</translation>
@@ -3299,6 +3375,10 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>STB_MG_ADAPT</source>
         <translation>Remaillage avec MG_Adapt</translation>
     </message>
+    <message>
+        <source>STB_HOMARD_ADAPT</source>
+        <translation>Raffinement uniforme</translation>
+    </message>
     <message>
         <source>STB_CONV_TO_QUAD</source>
         <translation>Convertir vers/depuis quadratique</translation>
@@ -3307,6 +3387,10 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>STB_2D_FROM_3D</source>
         <translation>Créer les éléments de frontière</translation>
     </message>
+    <message>
+        <source>STB_2D_FROM_3D_ELEMENTS</source>
+        <translation>Créer les faces des éléments volumiques</translation>
+    </message>
     <message>
         <source>STB_MESH_ORDER</source>
         <translation>Changer la priorité des sous-maillages</translation>
@@ -3521,7 +3605,7 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
     </message>
     <message>
         <source>STB_DEFLECTION_2D</source>
-        <translation>Deflection 2D</translation>
+        <translation>Déflection 2D</translation>
     </message>
     <message>
         <source>STB_MAP</source>
@@ -3579,6 +3663,18 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>STB_MESH_THROU_POINT</source>
         <translation>Déplacer un nœud</translation>
     </message>
+    <message>
+        <source>STB_MOVE_NODE_INTRCT</source>
+        <translation>Déplacer un nœud à la souris</translation>
+    </message>
+    <message>
+        <source>STB_SPLIT_DIAG_INTRC</source>
+        <translation>Ajouter un nœud à un segment</translation>
+    </message>
+    <message>
+        <source>STB_SPLIT_FACE_INTRC</source>
+        <translation>Ajouter un nœud à un triangle</translation>
+    </message>
     <message>
         <source>STB_MIN_ANG</source>
         <translation>Angle minimal</translation>
@@ -3667,6 +3763,10 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>STB_REMOVE_NODES</source>
         <translation>Supprimer les nœuds</translation>
     </message>
+    <message>
+        <source>STB_REMOVE_NODE_RECON</source>
+        <translation>Supprimer un nœud avec reconnection</translation>
+    </message>
     <message>
         <source>STB_REMOVE_ORPHAN_NODES</source>
         <translation>Supprimer les nœuds orphelins</translation>
@@ -3831,10 +3931,18 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>STB_VOLUME_3D</source>
         <translation>Volume</translation>
     </message>
+    <message>
+        <source>STB_SCALED_JACOBIAN</source>
+        <translation>Jacobien normalisé</translation>
+    </message>
     <message>
         <source>STB_WARP</source>
         <translation>Angle de déformation</translation>
     </message>
+    <message>
+        <source>STB_WARP_3D</source>
+        <translation>Déformation 3D</translation>
+    </message>
     <message>
         <source>STB_WHAT_IS</source>
         <translation>Information sur un élément ou un nœud de maillage</translation>
@@ -3863,6 +3971,10 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>TB_RENUMBER</source>
         <translation>Barre de renumérotation</translation>
     </message>
+    <message>
+        <source>TB_INTERACT</source>
+        <translation>Barre des modifications interactives</translation>
+    </message>
     <message>
         <source>TB_TRANSFORM</source>
         <translation>Barre des transformations</translation>
@@ -3967,6 +4079,10 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>TOP_COMPUTE</source>
         <translation>Calculer</translation>
     </message>
+    <message>
+        <source>TOP_RE_COMPUTE</source>
+        <translation>Effacer + Calculer</translation>
+    </message>
     <message>
         <source>TOP_COMPUTE_SUBMESH</source>
         <translation>Calculer le sous-maillage</translation>
@@ -3995,6 +4111,10 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>TOP_MG_ADAPT</source>
         <translation>Remaillage avec MG_Adapt</translation>
     </message>
+    <message>
+        <source>TOP_HOMARD_ADAPT</source>
+        <translation>Raffinement uniforme</translation>
+    </message>
     <message>
         <source>TOP_CONV_TO_QUAD</source>
         <translation>Convertir vers/de quadratique</translation>
@@ -4003,6 +4123,10 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>TOP_2D_FROM_3D</source>
         <translation>Créer les éléments de frontière</translation>
     </message>
+    <message>
+        <source>TOP_2D_FROM_3D_ELEMENTS</source>
+        <translation>Créer les faces des éléments volumiques</translation>
+    </message>
     <message>
         <source>TOP_MESH_ORDER</source>
         <translation>Changer la priorité des sous-maillages</translation>
@@ -4267,6 +4391,18 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>TOP_MESH_THROU_POINT</source>
         <translation>Déplacer un nœud</translation>
     </message>
+    <message>
+        <source>TOP_MOVE_NODE_INTRCT</source>
+        <translation>Deplacer un nœud à la souris</translation>
+    </message>
+    <message>
+        <source>TOP_SPLIT_DIAG_INTRC</source>
+        <translation>Ajouter un nœud sur un segment</translation>
+    </message>
+    <message>
+        <source>TOP_SPLIT_FACE_INTRC</source>
+        <translation>Ajouter un nœud dans un triangle</translation>
+    </message>
     <message>
         <source>TOP_MIN_ANG</source>
         <translation>Angle minimal</translation>
@@ -4355,6 +4491,10 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>TOP_REMOVE_NODES</source>
         <translation>Supprimer les nœuds</translation>
     </message>
+    <message>
+        <source>TOP_REMOVE_NODE_RECON</source>
+        <translation>Supprimer un nœud avec reconnection</translation>
+    </message>
     <message>
         <source>TOP_REMOVE_ORPHAN_NODES</source>
         <translation>Supprimer les nœuds orphelins</translation>
@@ -4515,10 +4655,18 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>TOP_VOLUME_3D</source>
         <translation>Volume</translation>
     </message>
+    <message>
+        <source>TOP_SCALED_JACOBIAN</source>
+        <translation>Jacobien normalisé</translation>
+    </message>
     <message>
         <source>TOP_WARP</source>
         <translation>Angle de déformation</translation>
     </message>
+    <message>
+        <source>TOP_WARP_3D</source>
+        <translation>Déformation 3D</translation>
+    </message>
     <message>
         <source>TOP_WHAT_IS</source>
         <translation>Information sur l'élément de maillage</translation>
@@ -4543,6 +4691,10 @@ Utilisez le menu &quot;Visualiser une entité&quot; pour les afficher.
         <source>WARP_ELEMENTS</source>
         <translation>Déformation</translation>
     </message>
+    <message>
+        <source>WARP_3D_ELEMENTS</source>
+        <translation>Déformation 3D</translation>
+    </message>
     <message>
         <source>MEN_FILE_INFO</source>
         <translation>Information sur le fichier du maillage</translation>
@@ -5211,71 +5363,71 @@ Ouvrez une fenêtre VTK et essayez de nouveau</translation>
     </message>
     <message>
         <source>INFO_WELCOME_TO_SMESH</source>
-        <translation type="unfinished">Bienvenue dans le module Mesh</translation>
+        <translation>Bienvenue dans le module Mesh</translation>
     </message>
     <message>
         <source>INFO_GRP_CREATE_MESH</source>
-        <translation type="unfinished">Créer un maillage</translation>
+        <translation>Créer un maillage</translation>
     </message>
     <message>
         <source>INFO_DEFINE_ALGOS</source>
-        <translation type="unfinished">Choisir les algorithmes</translation>
+        <translation>Choisir les algorithmes</translation>
     </message>
     <message>
         <source>INFO_DEFINE_HYPOS</source>
-        <translation type="unfinished">Définir des hypothèses</translation>
+        <translation>Définir des hypothèses</translation>
     </message>
     <message>
         <source>INFO_COMPUTE</source>
-        <translation type="unfinished">Calculer</translation>
+        <translation>Calculer</translation>
     </message>
     <message>
         <source>INFO_REFINE</source>
-        <translation type="unfinished">Ajouter des raffinements</translation>
+        <translation>Ajouter des raffinements</translation>
     </message>
     <message>
         <source>INFO_REFINE_LOCAL_SIZE</source>
-        <translation type="unfinished">via des tailles locales dans certaines hypothèses</translation>
+        <translation>via des tailles locales dans certaines hypothèses</translation>
     </message>
     <message>
         <source>INFO_REFINE_SUBMESH</source>
-        <translation type="unfinished">via des sous-maillages</translation>
+        <translation>via des sous-maillages</translation>
     </message>
     <message>
         <source>INFO_GRP_IMPORT_MESH</source>
-        <translation type="unfinished">Importer un maillage</translation>
+        <translation>Importer un maillage</translation>
     </message>
     <message>
         <source>INFO_AVAILABLE_FORMATS</source>
-        <translation type="unfinished">Formats disponibles</translation>
+        <translation>Formats disponibles</translation>
     </message>
     <message>
         <source>INFO_GRP_CHECK_MESH</source>
-        <translation type="unfinished">Contrôler la qualité du maillage</translation>
+        <translation>Contrôler la qualité du maillage</translation>
     </message>
     <message>
         <source>INFO_DISPLAY</source>
-        <translation type="unfinished">Afficher le maillage</translation>
+        <translation>Afficher le maillage</translation>
     </message>
     <message>
         <source>INFO_QUALITY_INFO</source>
-        <translation type="unfinished">Afficher des critères de qualité</translation>
+        <translation>Afficher des critères de qualité</translation>
     </message>
     <message>
         <source>INFO_QUALITY_AREA</source>
-        <translation type="unfinished">surface</translation>
+        <translation>surface</translation>
     </message>
     <message>
         <source>INFO_QUALITY_VOLUME</source>
-        <translation type="unfinished">volume</translation>
+        <translation>volume</translation>
     </message>
     <message>
         <source>INFO_QUALITY_ASPECT_RATION</source>
-        <translation type="unfinished">Facteur de forme</translation>
+        <translation>Facteur de forme</translation>
     </message>
     <message>
         <source>INFO_CLIPPING</source>
-        <translation type="unfinished">Insérer un plan de coupe</translation>
+        <translation>Insérer un plan de coupe</translation>
     </message>
 </context>
 <context>
@@ -5593,6 +5745,29 @@ Sélectionner des éléments et essayer encore</translation>
         <translation>Attention: le maillage généré sera a priori non-conforme</translation>
     </message>
 </context>
+<context>
+    <name>SMESHGUI_CreateDualMeshDlg</name>
+    <message>
+        <source>CAPTION</source>
+        <translation>Create Dual Mesh</translation>
+    </message>
+    <message>
+        <source>MESH</source>
+        <translation>Maillage ou Sous-maillage</translation>
+    </message>
+    <message>
+        <source>NON_TETRA_MESH_WARNING</source>
+        <translation>Attention : Le maillage ne doit contenir que des tétrahédres</translation>
+    </message>
+    <message>
+        <source>DUAL_MESH_NAME</source>
+        <translation>Nom du maillage Dual</translation>
+    </message>
+    <message>
+        <source>PROJ_SHAPE</source>
+        <translation>Projection des élements de bord sur la géométrie</translation>
+    </message>
+</context>
 <context>
     <name>SMESHGUI_ConvToQuadOp</name>
     <message>
@@ -6679,6 +6854,10 @@ Indiquez-les et essayez de nouveau</translation>
         <source>DESTINATION</source>
         <translation>Destination</translation>
     </message>
+    <message>
+        <source>DESTINATION_BY_MOUSE</source>
+        <translation>Destination par clic souris</translation>
+    </message>
     <message>
         <source>MOVE_NODE</source>
         <translation>Déplacer un nœud</translation>
@@ -6707,6 +6886,120 @@ Indiquez-les et essayez de nouveau</translation>
         <translation>Le maillage à modifier n'est pas sélectionné</translation>
     </message>
 </context>
+<context>
+    <name>SMESHGUI_AddNodeOnSegmentDlg</name>
+    <message>
+        <source>CAPTION</source>
+        <translation>Ajout de nœud sur un segment</translation>
+    </message>
+    <message>
+        <source>SEGMENT_GROUP</source>
+        <translation>Segment entre triangles voisins</translation>
+    </message>
+    <message>
+        <source>SEGMENT</source>
+        <translation>Segment</translation>
+    </message>
+    <message>
+        <source>POSITION_GROUP</source>
+        <translation>Nœud sur le segment</translation>
+    </message>
+    <message>
+        <source>POSITION</source>
+        <translation>Position par clic de souris</translation>
+    </message>
+</context>
+<context>
+    <name>SMESHGUI_AddNodeOnSegmentOp</name>
+    <message>
+        <source>INVALID_EDGE</source>
+        <translation>Segment non valide</translation>
+    </message>
+    <message>
+        <source>INVALID_MESH</source>
+        <translation>Maillage à modifier non selectionner</translation>
+    </message>
+    <message>
+        <source>NO_ELEMENTS</source>
+        <translation>Le segment n'appartient à aucune face</translation>
+    </message>
+    <message>
+        <source>VOLUME_FOUND</source>
+        <translation>Ne peut pas découpé le segment d'un volume</translation>
+    </message>
+    <message>
+        <source>NOT_TRIANGLE_FACE_FOUND</source>
+        <translation>Cette opération ne fonctionne que sur des triangles</translation>
+    </message>
+    <message>
+        <source>BAD_POSITION</source>
+        <translation>La position sur le segment n'est pas valide</translation>
+    </message>
+</context>
+<context>
+    <name>SMESHGUI_AddNodeOnFaceDlg</name>
+    <message>
+        <source>CAPTION</source>
+        <translation>Ajout d'un nœud dans un triangle</translation>
+    </message>
+    <message>
+        <source>FACE_GROUP</source>
+        <translation>Triangle à découper</translation>
+    </message>
+    <message>
+        <source>FACE_ID</source>
+        <translation>ID</translation>
+    </message>
+    <message>
+        <source>XYZ_GROUP</source>
+        <translation>Position du nœud par clic de souris</translation>
+    </message>
+    <message>
+        <source>XYZ_NODE_ON_FACE</source>
+        <translation>Nœud sur la face</translation>
+    </message>
+</context>
+<context>
+    <name>SMESHGUI_AddNodeOnFaceOp</name>
+    <message>
+        <source>INVALID_MESH</source>
+        <translation>Maillage à modifier pas selectionné</translation>
+    </message>
+    <message>
+        <source>NOT_FACE</source>
+        <translation>Pas de face selectionnée</translation>
+    </message>
+    <message>
+        <source>INVALID_ID</source>
+        <translation>L'ID de la face n'est pas valide</translation>
+    </message>
+</context>
+<context>
+    <name>SMESHGUI_RemoveNodeReconnectionDlg</name>
+    <message>
+        <source>CAPTION</source>
+        <translation>Supression de nœud avec reconnection</translation>
+    </message>
+    <message>
+        <source>NODE_2REMOVE_ID</source>
+        <translation>ID</translation>
+    </message>
+    <message>
+        <source>NODE_2REMOVE</source>
+        <translation>Nœud</translation>
+    </message>
+</context>
+<context>
+    <name>SMESHGUI_RemoveNodeReconnectionOp</name>
+    <message>
+        <source>INVALID_ID</source>
+        <translation>L'ID du nœud n'est pas valide</translation>
+    </message>
+    <message>
+        <source>INVALID_MESH</source>
+        <translation>Maillage à modifier pas selectionné</translation>
+    </message>
+</context>
 <context>
     <name>SMESHGUI_FindElemByPointDlg</name>
     <message>
@@ -7665,6 +7958,17 @@ Il y a trop peu de points dans le fichier </translation>
         <translation>Génerer</translation>
     </message>
 </context>
+<context>
+    <name>SMESHGUI_MakeFull2DFrom3DDlg</name>
+    <message>
+        <source>CAPTION</source>
+        <translation>Créer les faces des éléments volumiques</translation>
+    </message>
+    <message>
+        <source>2D_FROM_3D_ELEMENTS</source>
+        <translation>Faces des éléments volumiques</translation>
+    </message>
+</context> 
 <context>
     <name>SMESHGUI_Make2DFrom3DDlg</name>
     <message>
@@ -7716,6 +8020,43 @@ Il y a trop peu de points dans le fichier </translation>
         <translation>Créer un groupe</translation>
     </message>
 </context>
+<context>
+    <name>SMESHGUI_MakeFull2DFrom3DOp</name>
+    <message>
+        <source>NB_ADDED</source>
+        <translation>%1 faces ont été ajoutés</translation>
+    </message>
+    <message>
+    <source>WRONG_GROUPS</source>
+    <translation>Les groupes suivants n'ont pas été traités
+en raison de leurs types incompatibles:
+%1</translation>
+    </message>
+    <message>
+        <source>SMESH_ERR_NO_INPUT_MESH</source>
+        <translation>Aucun maillage, sous-maillage ou groupe source n'est indiqué</translation>
+    </message>
+    <message>
+        <source>SMESH_TOO_MANY_MESHES</source>
+        <translation>Un seul maillage à la fois peut être traité</translation>
+    </message>
+    <message>
+        <source>SMESH_NOT_ONLY_GROUPS</source>
+        <translation>Impossible de traiter à la fois des maillages et des groupes</translation>
+    </message>
+    <message>
+        <source>SMESH_ERR_NO_3D_ELEMENTS</source>
+        <translation>L'objet source ne contient pas d'éléments 3D</translation>
+    </message>
+    <message>
+        <source>SMESH_ERR_MESH_NAME_NOT_SPECIFIED</source>
+        <translation>Le nom du nouveau maillage n'est pas indiqué</translation>
+    </message>
+    <message>
+        <source>SMESH_ERR_GRP_NAME_NOT_SPECIFIED</source>
+        <translation>Le nom du groupe n'est pas indiqué</translation>
+    </message>
+</context>
 <context>
     <name>SMESHGUI_Make2DFrom3DOp</name>
     <message>
index 369b86a57a802ccc203fe9a2eccd3401ee0ade85..a2704dba5e187ed04baa9b81ad972d603ea1db71 100644 (file)
       <source>NODE_CONNECTIVITY_NB</source>
       <translation>節点接続番号</translation>
     </message>
+    <message>
+      <source>SCALED_JACOBIAN</source>
+      <translation>スケーリングされたヤコビアン</translation>
+    </message>
     <message>
       <source>FREE_EDGES</source>
       <translation>フリーエッジ</translation>
       <source>MEN_VOLUME_3D</source>
       <translation>ボリューム</translation>
     </message>
+    <message>
+      <source>MEN_SCALED_JACOBIAN</source>
+      <translation>スケーリングされたヤコビアン</translation>
+    </message>
     <message>
       <source>MEN_WARP</source>
       <translation>変形の角度</translation>
     </message>
+    <message>
+      <source>MEN_WARP_3D</source>
+      <translation>3Dワープ</translation>
+    </message>
     <message>
       <source>MEN_WHAT_IS</source>
       <translation>メッシュ要素について</translation>
       <source>SMESH_LOGARITHMIC_SCALARBAR</source>
       <translation>対数</translation>
     </message>
+    <message>
+        <source>SMESH_TRESHOLD_SCALARBAR</source>
+        <translation>しきい値</translation>
+    </message>
+    <message>
+        <source>SMESH_WIREFRAME_OFF_SCALARBAR</source>
+        <translation>ワイヤーフレーム オフ</translation>
+    </message>
     <message>
       <source>SMESH_MAKE_GROUPS</source>
       <translation>グループを生成します。</translation>
       <source>STB_VOLUMES</source>
       <translation>ボリューム</translation>
     </message>
+    <message>
+      <source>STB_SCALED_JACOBIAN</source>
+      <translation>スケーリングされたヤコビアン</translation>
+    </message>
     <message>
       <source>STB_VOLUME_3D</source>
       <translation>ボリューム</translation>
       <source>STB_WARP</source>
       <translation>変形の角度</translation>
     </message>
+    <message>
+      <source>STB_WARP_3D</source>
+      <translation>3Dワープ</translation>
+    </message>
     <message>
       <source>STB_WHAT_IS</source>
       <translation>要素またはメッシュ ノードについて</translation>
       <source>TOP_VOLUMES</source>
       <translation>ボリューム</translation>
     </message>
+    <message>
+      <source>TOP_SCALED_JACOBIAN</source>
+      <translation>スケーリングされたヤコビアン</translation>
+    </message>
     <message>
       <source>TOP_VOLUME_3D</source>
       <translation>ボリューム</translation>
       <source>TOP_WARP</source>
       <translation>変形の角度</translation>
     </message>
+    <message>
+      <source>TOP_WARP_3D</source>
+      <translation>3Dワープ</translation>
+    </message>
     <message>
       <source>TOP_WHAT_IS</source>
       <translation>メッシュの要素に関する情報</translation>
       <source>WARP_ELEMENTS</source>
       <translation>変形</translation>
     </message>
+    <message>
+      <source>WARP_3D_ELEMENTS</source>
+      <translation>3D 変形</translation>
+    </message>
     <message>
       <source>MEN_FILE_INFO</source>
       <translation>MEDファイルの情報</translation>
     </message>
     <message>
       <source>VOLUME_3D</source>
-      <translation>ã\83\9cã\83ªã\83¥ã\83¼ã\83 </translation>
+      <translation>ã\82¹ã\82±ã\83¼ã\83ªã\83³ã\82°ã\81\95ã\82\8cã\81\9fã\83¤ã\82³ã\83\93ã\82¢ã\83³</translation>
     </message>
     <message>
       <source>WARPING</source>
index e35033177def456199c488122ab23361ea9a18bf..4fce54a8eadf0b46b419df767aaad3b40a923f72 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f01eeed3ed462164ea5e82094d0d94e28aada2f7..ba53155d3b3356dcf2c7664c359176e14d6d9804 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -1557,23 +1557,26 @@ int SMESH_Block::GetOrderedEdges (const TopoDS_Face&   theFace,
                           theEdges.begin(), ++theEdges.begin());
           TopExp::Vertices( theEdges.front(), vv[0], vv[1], true );
           if ( iE++ > theNbEdgesInWires.back() ) {
-#ifdef _DEBUG_
-            gp_Pnt p = BRep_Tool::Pnt( theFirstVertex );
-            MESSAGE ( " : Warning : vertex "<< theFirstVertex.TShape().operator->()
-                   << " ( " << p.X() << " " << p.Y() << " " << p.Z() << " )" 
-                   << " not found in outer wire of face "<< theFace.TShape().operator->()
-                   << " with vertices: " );
-            wExp.Init( *wlIt, theFace );
-            for ( int i = 0; wExp.More(); wExp.Next(), i++ )
+
+            if (SALOME::VerbosityActivated())
             {
-              TopoDS_Edge edge = wExp.Current();
-              edge = TopoDS::Edge( edge.Oriented( wExp.Orientation() ));
-              TopoDS_Vertex v = TopExp::FirstVertex( edge, true );
-              gp_Pnt p = BRep_Tool::Pnt( v );
-              MESSAGE_ADD ( i << " " << v.TShape().operator->() << " "
-                            << p.X() << " " << p.Y() << " " << p.Z() << " " << std::endl );
+              gp_Pnt p = BRep_Tool::Pnt( theFirstVertex );
+              MESSAGE ( " : Warning : vertex "<< theFirstVertex.TShape().operator->()
+                    << " ( " << p.X() << " " << p.Y() << " " << p.Z() << " )" 
+                    << " not found in outer wire of face "<< theFace.TShape().operator->()
+                    << " with vertices: " );
+              wExp.Init( *wlIt, theFace );
+              for ( int i = 0; wExp.More(); wExp.Next(), i++ )
+              {
+                TopoDS_Edge edge = wExp.Current();
+                edge = TopoDS::Edge( edge.Oriented( wExp.Orientation() ));
+                TopoDS_Vertex v = TopExp::FirstVertex( edge, true );
+                gp_Pnt p = BRep_Tool::Pnt( v );
+                MESSAGE_ADD ( i << " " << v.TShape().operator->() << " "
+                              << p.X() << " " << p.Y() << " " << p.Z() << " " << std::endl );
+              }
             }
-#endif
+
             break; // break infinite loop
           }
         }
index 297e21f004f8ea0c0680564ffa6482927008b9ba..84494fcbb1aee30c52d561b826fc98292b50eb54 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9e29c547997106622252e281911f5660a35388bf..3c822f6be707ae706db86d355813d1c420fe0b17 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5806ffba461feabae80a2a3ecadc4d2293ee785b..6e6a6398f779603ad78778b757cbca3ace3f1d92 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d78343bf7449754624752c37472d5ca7c784a705..671fcc8d5c78f0e928a12c3d7d6132213beae285 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c45dea5413dee80654e4f13f275d894912ae4e74..f73fe0ca9eae312267827e74227e87e0954ab2ee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 04134d3bd43cfc579b0335a8129dd3a09bbef88b..73243d02b09f087605efb1e9def7a475f8474dd5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -163,23 +163,15 @@ void SMESHUtils::createPointsSampleFromFace( const TopoDS_Face&       theFace,
   // Get the transformation associated to the face location
   gp_Trsf aTrsf = aLocation.Transformation();
 
-  // Get triangles
-  int nbTriangles = aTri->NbTriangles();
-  const Poly_Array1OfTriangle& triangles = aTri->Triangles();
-
-  // GetNodes
-  int nbNodes = aTri->NbNodes();
-  TColgp_Array1OfPnt nodes(1,nbNodes);
-  nodes = aTri->Nodes();
-
   // Iterate on triangles and subdivide them
+  int nbTriangles = aTri->NbTriangles();
   thePoints.reserve( thePoints.size() + nbTriangles );
   for ( int i = 1; i <= nbTriangles; i++ )
   {
-    const Poly_Triangle& aTriangle = triangles.Value(i);
-    gp_Pnt p1 = nodes.Value(aTriangle.Value(1));
-    gp_Pnt p2 = nodes.Value(aTriangle.Value(2));
-    gp_Pnt p3 = nodes.Value(aTriangle.Value(3));
+    const Poly_Triangle& aTriangle = aTri->Triangle(i);
+    gp_Pnt p1 = aTri->Node(aTriangle.Value(1));
+    gp_Pnt p2 = aTri->Node(aTriangle.Value(2));
+    gp_Pnt p3 = aTri->Node(aTriangle.Value(3));
 
     p1.Transform(aTrsf);
     p2.Transform(aTrsf);
index 616031ef3d4fb35de7f8bcfa41c427f384436c77..caa57295d9d08e31065213dae58c5f3c9f33df6b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a51960d8b4b90ce888bf60edfa5c1b253ef0162b..41f5191474f3ca9720f3d17bf0e648173949d208 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 610d7d09bbc2efa388e1a5a1eec21fb758560d90..14ae9faf57748f6b32c46b823ff12265ab7d0557 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -191,6 +191,11 @@ const BRepMesh_Triangle* SMESH_Delaunay::FindTriangle( const gp_XY&
 
   gp_XY uv = UV.Multiplied( _scale );
 
+  // prevent infinite loop in case of numerical instability
+  // test case NRT_GRIDS_GEOM_BUGS_15_R7
+  const BRepMesh_Triangle* tria1 = 0;
+  const BRepMesh_Triangle* tria2 = tria;
+
   while ( tria )
   {
     // check if the uv is in tria
@@ -203,7 +208,9 @@ const BRepMesh_Triangle* SMESH_Delaunay::FindTriangle( const gp_XY&
     SMESH_MeshAlgos::GetBarycentricCoords( uv,
                                            nodeUVs[0], nodeUVs[1], nodeUVs[2],
                                            bc[0], bc[1] );
-    if ( bc[0] >= 0 && bc[1] >= 0 && bc[0] + bc[1] <= 1 )
+    if ( (bc[0] >= 0 && bc[1] >= 0 && bc[0] + bc[1] <= 1) ||
+         (tria == tria1 &&
+          bc[0] >= -1e-14 && bc[1] >= -1e-14 && bc[0] + bc[1] <= 1 + 1e-14) )
     {
       if ( _triaDS->GetNode( nodeIDs[0] ).Movability() != BRepMesh_Frontier ||
            _triaDS->GetNode( nodeIDs[1] ).Movability() != BRepMesh_Frontier ||
@@ -218,6 +225,10 @@ const BRepMesh_Triangle* SMESH_Delaunay::FindTriangle( const gp_XY&
       return tria;
     }
 
+    if (tria == tria1) return 0;
+    tria1 = tria2;
+    tria2 = tria;
+
     // look for a neighbor triangle, which is adjacent to a link intersected
     // by a segment( triangle center -> uv )
 
index 96f36aaa932f5f770213a0d5dd40644db03f7843..b5f9f6fa62387f197ab1d30c67ce08704d84b2ad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1e249c43089790f7fb640714a8481b8878445da5..3048b69c4de0b149a420570d78d9af3cd45f2c4d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4a3d8010dd9142635676fb69df68fedc8c626f65..f4f4e25ad461d7042b71c64d3acfd865a4cde871 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 213226482483271bb95cc82f1b18aee8db0f983f..9ebf85af9d6eeb4be6be4def272e1aa9f4511b64 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 7fecc534f0867c3eb62a230dbbfdb3d94aee978c..ce7fb230f0c7c42d6d418dca969b9ae421e27b70 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2bf6b78b472e5b4eddb958822bd6bef9d7130fe8..5618afbb1bef592dbe70fb9d6b9ca344d5d00876 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 4ed2cb202b8ac89e29188b07a9dbd05426fa7b2c..68cdf8aeada76f050da8320a5a515cb42e773c64 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include <TopoDS_Vertex.hxx>
 #include <TopoDS_Wire.hxx>
 
-#ifdef _DEBUG_
-//#define _MYDEBUG_
 #include "SMESH_File.hxx"
 #include "SMESH_Comment.hxx"
-#endif
+#include "utilities.h"
 
 using namespace std;
 using boost::polygon::x;
@@ -155,12 +153,13 @@ namespace
   // }
 
   // -------------------------------------------------------------------------------------
-#ifdef _MYDEBUG_
+
   // writes segments into a txt file readable by voronoi_visualizer
   void inSegmentsToFile( vector< InSegment>& inSegments)
   {
-    if ( inSegments.size() > 1000 )
+    if (inSegments.size() > 1000 || !SALOME::VerbosityActivated())
       return;
+      
     const char* fileName = "/misc/dn25/salome/eap/salome/misc/Code/C++/MAdebug.txt";
     const char*     user = getenv("USER");
     if ( !user || strcmp( user, "eap" )) return;
@@ -219,11 +218,6 @@ namespace
       } while (edge != cell->incident_edge());
     }
   }
-#else
-  #define inSegmentsToFile(arg) {}
-  //void dumpEdge( const TVDEdge* edge ) {}
-  //void dumpCell( const TVDCell* cell ) {}
-#endif
 }
 // -------------------------------------------------------------------------------------
 
@@ -420,9 +414,9 @@ namespace
 
   void bndSegsToMesh( const vector< vector< BndSeg > >& bndSegsPerEdge )
   {
-    if ( bndSegsPerEdge.empty() )
+    if (bndSegsPerEdge.empty() || !SALOME::VerbosityActivated())
       return;
-#ifdef _MYDEBUG_
+
     if ( !getenv("bndSegsToMesh")) return;
     map< const TVDVertex *, int > v2Node;
     map< const TVDVertex *, int >::iterator v2n;
@@ -472,7 +466,6 @@ namespace
     text << "\n";
     file.write( text.c_str(), text.size() );
     cout << fileName << endl;
-#endif
   }
 
   //================================================================================
index 26cf688b75ce5dd4066cd66b1822f5335e5d303c..316216bbf2d03f965ab3a6a614c003fa691fb5a6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index b058e86a2d607bc6bc66d0d5734873d94b622d39..d97680956bde331b37bfda6382af6f5209ebdf46 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -60,6 +60,9 @@ namespace boofs = boost::filesystem;
 #undef SMESH_CAUGHT
 #define SMESH_CAUGHT error =
 
+constexpr char MESHGEMS_OLD_STYLE[] = "MESHGEMS_OLD_STYLE";
+constexpr char SPATIAL_LICENSE[] = "SPATIAL_LICENSE";
+
 
 namespace
 {
@@ -273,7 +276,7 @@ namespace
 
     std::string outFile = tmpDir + "libMeshGemsKeyGenerator.so";
 
-    std::string cmd = "wget " + url + " -O " + outFile;
+    std::string cmd = "smesh_wget.py " + url + " -O " + outFile;
 
 #endif
 
@@ -287,8 +290,34 @@ namespace
       }
     }
 
+#ifndef WIN32
+    //[EDF25906]
+    std::string redirect = tmpDir + "redirect.out";
+    std::ostringstream oss;
+    oss << cmd << " " << redirect;
+    cmd = oss.str();
+#endif
+
     system( cmd.c_str() ); // download
 
+#ifndef WIN32
+    {//[EDF25906]
+      std::ifstream infile(redirect);
+      infile.seekg(0, std::ios::end);
+      size_t length = infile.tellg();
+      infile.seekg(0, std::ios::beg);
+      std::unique_ptr<char []> buffer(new char[length+1]);
+      buffer[length] = '\0';
+      infile.read(const_cast<char *>( buffer.get() ),length);
+
+      MESSAGE( buffer.get() );
+    }
+    {
+      SMESH_File redirectFile( redirect, /*open=*/false );
+      redirectFile.remove();
+    }
+#endif
+
     SMESH_File resultFile( outFile, /*open=*/false );
     bool ok = ( resultFile.exists() && resultFile.size() > 0 );
 
@@ -372,7 +401,7 @@ namespace SMESHUtils_MGLicenseKeyGen // API implementation
    */
   //================================================================================
 
-  bool SignCAD( void* meshgems_cad, std::string& error )
+  bool SignCAD_After( void* meshgems_cad, std::string& error )
   {
     LibraryFile libraryFile;
     if ( !loadLibrary( error, libraryFile ))
@@ -402,6 +431,75 @@ namespace SMESHUtils_MGLicenseKeyGen // API implementation
     return ok;
   }
 
+  //================================================================================
+  /*!
+   * \brief Unlock a specific MeshGems product (for products called as a library)
+   *  \param [in] product - product of MeshGems to unlock
+   *  \param [out] error - return error description
+   *  \return bool - is a success
+   */
+  //================================================================================
+  bool UnlockProduct( const std::string& product, std::string& error )
+  {
+    MESSAGE("SMESH UnlockProduct: " << product);
+    LibraryFile libraryFile;
+    if ( !loadLibrary( error, libraryFile ))
+      return false;
+
+    bool ok = false;
+    typedef bool (*SignFun)(const std::string& );
+
+    // specific function to unlock each product
+    std::string function = "UnlockProduct";
+
+    SignFun signFun = (SignFun) GetProc( theLibraryHandle, function.c_str() );
+    if ( !signFun )
+    {
+      if ( ! getLastError( error ))
+        error = SMESH_Comment( "Can't find symbol '") << function << "' in '" << getenv( theEnvVar ) << "'";
+    }
+    else
+    {
+      SMESH_TRY;
+
+      ok = signFun( product.c_str() );
+
+      SMESH_CATCH( SMESH::returnError );
+
+      if ( !error.empty() )
+      {
+        std::cerr << "error: " << error << std::endl;
+        ok = false;
+      }
+      else if ( !ok )
+        error = "UnlockProduct() failed (located in '" + libraryFile._name + "')";
+    }
+    return ok;
+  }
+
+  //================================================================================
+  /*!
+   * \brief Sign a CAD (or don't do it if env MESHGEMS_OLD_STYLE is set)
+   *  \param [in] meshgems_cad - pointer to a MG CAD object (meshgems_cad_t)
+   *  \param [out] error - return error description
+   *  \return bool - is a success
+   */
+  //================================================================================
+  bool SignCAD( void* meshgems_cad, std::string& error )
+  {
+    const char *meshGemsOldStyleEnvVar( getenv( MESHGEMS_OLD_STYLE ) );
+    if ( !meshGemsOldStyleEnvVar || strlen(meshGemsOldStyleEnvVar) == 0 )
+    {
+      if (NeedsMGSpatialEnvLicense(error))
+        // SignCAD is only called by cadsurf. Other components call SignMesh
+        return UnlockProduct("cadsurf", error);
+      else
+        return SignCAD_After(meshgems_cad, error);
+    }
+    else
+      return true;
+  }
+
   //================================================================================
   /*!
    * \brief Sign a mesh
@@ -411,7 +509,7 @@ namespace SMESHUtils_MGLicenseKeyGen // API implementation
    */
   //================================================================================
 
-  bool SignMesh( void* meshgems_mesh, std::string& error )
+  bool SignMesh_After( void* meshgems_mesh, std::string& error )
   {
     LibraryFile libraryFile;
     if ( !loadLibrary( error, libraryFile ))
@@ -441,6 +539,32 @@ namespace SMESHUtils_MGLicenseKeyGen // API implementation
     return ok;
   }
 
+  //================================================================================
+  /*!
+   * \brief Sign a mesh (or don't do it if env MESHGEMS_OLD_STYLE is set)
+   *  \param [in] meshgems_mesh - pointer to a MG mesh (meshgems_mesh_t)
+   *  \param [in] product - product of MeshGems to unlock
+   *  \param [out] error - return error description
+   *  \return bool - is a success
+   */
+  //================================================================================
+  bool SignMesh( void* meshgems_mesh, const std::string& product, std::string& error )
+  {
+    const char *meshGemsOldStyleEnvVar( getenv( MESHGEMS_OLD_STYLE ) );
+    if ( !meshGemsOldStyleEnvVar || strlen(meshGemsOldStyleEnvVar) == 0 )
+    {
+      if (NeedsMGSpatialEnvLicense(error))
+        // unlock product (MG 2.15)
+        return UnlockProduct(product, error);
+      else
+        // sign the mesh (MG 2.13 and 2.14)
+        return SignMesh_After(meshgems_mesh, error);
+    }
+    else
+      // use DLIM8 server (nothing to do here)
+      return true;
+  }
+
   //================================================================================
   /*!
    * \brief Return a license key to pass as argument to a MG mesher executable
@@ -451,12 +575,12 @@ namespace SMESHUtils_MGLicenseKeyGen // API implementation
    */
   //================================================================================
 
-  std::string GetKey(const std::string& gmfFile,
-                     int                nbVertex,
-                     int                nbEdge,
-                     int                nbFace,
-                     int                nbVol,
-                     std::string&       error)
+  std::string GetKey_After(const std::string& gmfFile,
+                           int                nbVertex,
+                           int                nbEdge,
+                           int                nbFace,
+                           int                nbVol,
+                           std::string&       error)
   {
     std::string key;
     LibraryFile libraryFile;
@@ -480,6 +604,254 @@ namespace SMESHUtils_MGLicenseKeyGen // API implementation
     return key;
   }
 
+  //================================================================================
+  /*!
+   * \brief Return a license key to pass as argument to a MG mesher executable (>2.15)
+   *  \param [out] error - return error description
+   *  \return std::string - the key
+   */
+  //================================================================================
+
+  std::string GetKey_After(std::string&       error)
+  {
+    std::string key;
+    LibraryFile libraryFile;
+    if ( !loadLibrary( error, libraryFile ))
+      return key;
+
+    typedef std::string (*GetKeyFun)();
+    GetKeyFun keyFun = (GetKeyFun) GetProc( theLibraryHandle, "GetKey" );
+    if ( !keyFun )
+    {
+      if ( ! getLastError( error ))
+        error = SMESH_Comment( "Can't find symbol 'GetKey' in '") << getenv( theEnvVar ) << "'";
+    }
+    else
+    {
+      key = keyFun( );
+    }
+    if ( key.empty() )
+      error = "GetKey() failed (located in '" + libraryFile._name + "')";
+
+    return key;
+  }
+
+  //================================================================================
+  /*!
+   * \brief Get MeshGems version major/minor/patch from the environment variables
+   *  \param [out] error - return error description
+   *  \return int - the version
+   */
+  //================================================================================
+  int GetMGVersionFromEnv(const char* env_variable)
+  {
+    MESSAGE("Entering GetMGVersionFromEnv and calling " << env_variable);
+    int version = -1;
+    if (getenv(env_variable) == nullptr )
+    {
+      MESSAGE("Could not find " << env_variable << " from environment");
+    }
+    else
+    {
+      version = std::stoi(std::string(getenv(env_variable)));
+    }
+    return version;
+  }
+  //================================================================================
+  /*!
+   * \brief Get MeshGems version major/minor/patch from the keygen library and meshgems built-in functions
+   *  \param [out] error - return error description
+   *  \return int - the function implemented in the library
+   */
+  //================================================================================
+  int GetMGVersionFromFunction(const char* function_name)
+  {
+    MESSAGE("Entering GetMGVersionFromFunction and calling " << function_name);
+    int version = -1;
+    typedef int (*GetKeyFun)();
+    GetKeyFun keyFun = (GetKeyFun) GetProc( theLibraryHandle, function_name);
+    if ( !keyFun )
+    {
+      MESSAGE("Could not find " << function_name << " from library");
+    }
+    else
+    {
+      version = keyFun();
+    }
+    return version;
+  }
+
+  //================================================================================
+  /*!
+   * \brief Get MeshGems version from the keygen library or meshgems built-in functions
+   *  \param [out] error - return error description
+   *  \return int - the version
+   */
+  //================================================================================
+  int GetMGVersionHex(std::string&       error)
+  {
+    // load mgkeygen library
+    int v_min = -1;
+    LibraryFile libraryFile;
+    if ( !loadLibrary( error, libraryFile ))
+      return v_min;
+    MESSAGE("Extracting MeshGems version");
+
+    // get minor version
+    v_min = GetMGVersionFromFunction("meshgems_core_get_version_minor");
+    if (v_min == -1)
+      v_min = GetMGVersionFromFunction("GetVersionMinor");
+    if (v_min == -1)
+      v_min = GetMGVersionFromEnv("MESHGEMS_VERSION_MINOR");
+    if (v_min == -1)
+      error = "could not retrieve minor version (located in '" + libraryFile._name + "')";
+    MESSAGE("MeshGems minor version =  " << v_min);
+
+    // get major version
+    int v_maj = GetMGVersionFromFunction("meshgems_core_get_version_major");
+    if (v_maj == -1)
+      v_maj = GetMGVersionFromFunction("GetVersionMajor");
+    if (v_maj == -1)
+      v_maj = GetMGVersionFromEnv("MESHGEMS_VERSION_MAJOR");
+    if (v_maj == -1)
+      error = "could not retrieve major version (located in '" + libraryFile._name + "')";
+    MESSAGE("MeshGems major version = " << v_maj);
+
+    // get patch version
+    int v_patch = GetMGVersionFromFunction("meshgems_core_get_version_patch");
+    if (v_patch == -1)
+      v_patch = GetMGVersionFromFunction("GetVersionPatch");
+    if (v_patch == -1)
+      v_patch = GetMGVersionFromEnv("MESHGEMS_VERSION_PATCH");
+    if (v_patch == -1)
+      error = "could not retrieve patch version (located in '" + libraryFile._name + "')";
+    MESSAGE("MeshGems patch version = " << v_patch);
+
+    int v_hex = (v_maj << 16 | v_min << 8 | v_patch);
+    MESSAGE("v_hex: " << v_hex);
+
+    return v_hex;
+  }
+
+  //================================================================================
+  /*!
+   * \brief Guess if the Spatial license is needed (if MeshGems is > 2.15.0)
+   *  \param [out] error - return error description
+   *  \return bool - true if MeshGems is > 2.15.0
+   */
+  //================================================================================
+  bool NeedsMGSpatialEnvLicense(std::string& error)
+  {
+    // if MeshGems version is > 2.15.0, need to set SPATIAL_LICENSE
+    int v_hex = GetMGVersionHex(error);
+    bool ok = (v_hex > MESHGEMS_215);
+    if (ok)
+      MESSAGE("MeshGems version is > 2.15.0, need to set SPATIAL_LICENSE");
+    return ok;
+  }
+
+  //================================================================================
+  /*!
+   * \brief Set the SPATIAL_LICENSE environment variable
+   *  \param [out] error - return error description
+   *  \return bool - true in case of success
+   */
+  //================================================================================
+  bool SetMGSpatialEnvLicense(std::string& error)
+  {
+    int ok;
+    std::string key = GetKey(error);
+#ifndef WIN32
+    ok = setenv(SPATIAL_LICENSE, key.c_str(), 0); // 0 means do not overwrite
+#else
+    ok = Kernel_Utils::setenv(SPATIAL_LICENSE, key.c_str(), 0 );
+#endif
+    MESSAGE("Set SPATIAL_LICENSE");
+    return (ok==0);
+  }
+
+  //================================================================================
+  /*!
+   * \brief Get the license key from libMeshGemsKeyGenerator.so or $SPATIAL_LICENSE
+   * Called by plugins calling MG products as executables.
+   * If MESHGEMS_OLD_STYLE is set, return "0", to use old DLIM8 server license
+   * instead of the key.
+   *  \param [in] gmfFile - path to an input mesh file
+   *  \param [in] nb* - nb of entities in the input mesh
+   *  \param [out] error - return error description
+   *  \return std::string - the key
+   */
+  //================================================================================
+  std::string GetKey(const std::string& gmfFile,
+                     int                nbVertex,
+                     int                nbEdge,
+                     int                nbFace,
+                     int                nbVol,
+                     std::string&       error)
+  {
+    // default key if MESHGEMS_OLD_STYLE or SPATIAL_LICENSE is set
+    std::string key("0");
+    const char *meshGemsOldStyleEnvVar( getenv( MESHGEMS_OLD_STYLE ) );
+    if ( !meshGemsOldStyleEnvVar || strlen(meshGemsOldStyleEnvVar) == 0 )
+    {
+      const char *spatialLicenseEnvVar( getenv( SPATIAL_LICENSE ) );
+      if ( !spatialLicenseEnvVar || strlen(spatialLicenseEnvVar) == 0 )
+      {
+        if (NeedsMGSpatialEnvLicense(error))
+        {
+          // if MG version > 2.15, set environment license, don't return it as a key
+          // otherwise it will be printed in the command line
+          MESSAGE("SPATIAL_LICENSE not in env => we add it from MGKeygen .so");
+          SetMGSpatialEnvLicense(error);
+        }
+        else
+        {
+          // generate the key from the mesh info (MG 2.13 and 2.14)
+          MESSAGE("MG < 2.15 => get the key from MGKeygen .so and this mesh info");
+          key = GetKey_After(gmfFile,nbVertex,nbEdge,nbFace,nbVol,error);
+        }
+      }
+      else
+        MESSAGE("SPATIAL_LICENSE already in env => we use it");
+    }
+    if (! error.empty())
+      std::cerr << error;
+    return key;
+  }
+
+  //================================================================================
+  /*!
+   * \brief Get the license key from libMeshGemsKeyGenerator.so or $SPATIAL_LICENSE
+   * Called for MG 2.15 by CADSurf and MG plugins calling MG products as library,
+   * i.e. compiled as library with -DSALOME_USE_MG_LIBS=ON
+   *  \param [out] error - return error description
+   *  \return std::string - the key
+   */
+  //================================================================================
+  std::string GetKey(std::string&       error)
+  {
+    // default key if not found in .so or in SPATIAL_LICENSE
+    std::string key("0");
+    const char *meshGemsOldStyleEnvVar( getenv( MESHGEMS_OLD_STYLE ) );
+    if ( !meshGemsOldStyleEnvVar || strlen(meshGemsOldStyleEnvVar) == 0 ){
+      const char *spatialLicenseEnvVar( getenv( SPATIAL_LICENSE ) );
+      if ( !spatialLicenseEnvVar || strlen(spatialLicenseEnvVar) == 0 )
+      {
+        MESSAGE("SPATIAL_LICENSE not in env => we add it from MGKeygen .so");
+        // use new style, i.e. key in a library
+        key = GetKey_After(error);
+      }
+      else
+      {
+        MESSAGE("SPATIAL_LICENSE already in env => we use it");
+        key = std::string(spatialLicenseEnvVar);
+      }
+    }
+    if (! error.empty())
+      std::cerr << error;
+    return key;
+  }
+
   //================================================================================
   /*!
    * \brief Return false if libMeshGemsKeyGenerator.so is not functional
index 796cde4b58d2ad0c2cd5358b3280485460d71f82..04c6dd677e67016c0900f557a514b14217d077fa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 
 #include <string>
 
+#define MESHGEMS_215 (2 << 16 | 15 << 8 | 0)
+
 /*!
  * \brief Manage loading libSalomeMeshGemsKeyGenerator.[so|dll] and sing MeshGems CAD or mesh
  */
 
 namespace SMESHUtils_MGLicenseKeyGen
 {
+  // MeshGems 2.13, 2.14 (for CADSurf)
   SMESHUtils_EXPORT bool        SignCAD( void* meshgems_cad, std::string& error );
 
-  SMESHUtils_EXPORT bool        SignMesh( void* meshgems_mesh, std::string& error );
+  // MeshGems 2.15 (for products launched as library)
+  SMESHUtils_EXPORT bool        UnlockProduct( const std::string& product, std::string& error );
+
+  // MeshGems 2.13, 2.14 (for products launched as library)
+  SMESHUtils_EXPORT bool        SignMesh( void* meshgems_mesh, const std::string& product, std::string& error );
 
+  // MeshGems 2.13, 2.14 and 2.15 (for products launched as executables)
   SMESHUtils_EXPORT std::string GetKey(const std::string& gmfFile,
                                        int                nbVertex,
                                        int                nbEdge,
@@ -44,9 +52,17 @@ namespace SMESHUtils_MGLicenseKeyGen
                                        int                nbVol,
                                        std::string&       error);
 
+  // MeshGems 2.15 (for products launched as library)
+  SMESHUtils_EXPORT std::string GetKey( std::string& error );
+
   SMESHUtils_EXPORT bool        CheckKeyGenLibrary( std::string& error );
 
   SMESHUtils_EXPORT std::string GetLibraryName();
+  SMESHUtils_EXPORT int         GetMGVersionFromFunction(const char* function_name);
+  SMESHUtils_EXPORT int         GetMGVersionFromEnv(const char* env_variable);
+  SMESHUtils_EXPORT int         GetMGVersionHex(std::string& error);
+  SMESHUtils_EXPORT bool        NeedsMGSpatialEnvLicense(std::string& error);
+  SMESHUtils_EXPORT bool        SetMGSpatialEnvLicense(std::string& error);
 }
 
 #endif
index 9f0c88e20e9c849f9e1efe4dc7c1c24ea94853f7..24958cc81fd77b243c71cd3142d8caf096d5b2d7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -253,6 +253,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
       void init(const SMDS_MeshElement* elem, double tolerance);
     };
     std::vector< ElementBox* > _elements;
+    //std::string _name;
 
     typedef ObjectPool< ElementBox > TElementBoxPool;
 
@@ -286,10 +287,8 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
 
     TElementBoxPool& elBoPool = getLimitAndPool()->_elBoPool;
 
-#ifdef _DEBUG_
-    if ( theElemIt && !theElemIt->more() )
+    if (SALOME::VerbosityActivated() && theElemIt && !theElemIt->more() )
       std::cout << "WARNING: ElementBndBoxTree constructed on empty iterator!" << std::endl;
-#endif
 
     SMDS_ElemIteratorPtr elemIt = theElemIt ? theElemIt : mesh.elementsIterator( elemType );
     while ( elemIt->more() )
@@ -342,6 +341,15 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
 
       if ( child->isLeaf() && child->_elements.capacity() > child->_elements.size() )
         SMESHUtils::CompactVector( child->_elements );
+
+      // child->_name = _name + char('0' + j);
+      // if ( child->isLeaf() && child->_elements.size() )
+      // {
+      //   cout << child->_name << " ";
+      //   for ( size_t i = 0; i < child->_elements.size(); ++i )
+      //     cout << child->_elements[i]->_element->GetID() << " ";
+      //   cout << endl;
+      // }
     }
   }
 
@@ -2252,6 +2260,56 @@ std::vector< const SMDS_MeshNode*> SMESH_MeshAlgos::GetCommonNodes(const SMDS_Me
   return common;
 }
 
+//================================================================================
+/*!
+ * \brief Return true if a node is on a boundary of 2D mesh.
+ *        Optionally returns two neighboring boundary nodes (or more in non-manifold mesh)
+ */
+//================================================================================
+
+bool SMESH_MeshAlgos::IsOn2DBoundary( const SMDS_MeshNode*                 theNode,
+                                      std::vector< const SMDS_MeshNode*> * theNeibors )
+{
+  typedef NCollection_DataMap< SMESH_TLink, int, SMESH_TLink > TLinkCountMap;
+  TLinkCountMap linkCountMap( 10 );
+
+  int nbFreeLinks = 0;
+  for ( SMDS_ElemIteratorPtr fIt = theNode->GetInverseElementIterator(SMDSAbs_Face); fIt->more(); )
+  {
+    const SMDS_MeshElement* face = fIt->next();
+    const int          nbCorners = face->NbCornerNodes();
+
+    int    iN = face->GetNodeIndex( theNode );
+    int iPrev = ( iN - 1 + nbCorners ) % nbCorners;
+    int iNext = ( iN + 1 ) % nbCorners;
+
+    for ( int i : { iPrev, iNext } )
+    {
+      SMESH_TLink link( theNode, face->GetNode( i ));
+      int* count = linkCountMap.ChangeSeek( link );
+      if ( count )  ++( *count );
+      else          linkCountMap.Bind( link, 1 );
+
+      if ( !count ) ++nbFreeLinks;
+      else          --nbFreeLinks;
+    }
+  }
+
+  if ( theNeibors )
+  {
+    theNeibors->clear();
+    theNeibors->reserve( nbFreeLinks );
+    for ( TLinkCountMap::Iterator linkIt( linkCountMap ); linkIt.More(); linkIt.Next() )
+      if ( linkIt.Value() == 1 )
+      {
+        theNeibors->push_back( linkIt.Key().node1() );
+        if ( theNeibors->back() == theNode )
+          theNeibors->back() = linkIt.Key().node2();
+      }
+  }
+  return nbFreeLinks > 0;
+}
+
 //================================================================================
 /*!
  * \brief Return true if node1 encounters first in the face and node2, after
@@ -2516,3 +2574,111 @@ SMESH_ElementSearcher* SMESH_MeshAlgos::GetElementSearcher(SMDS_Mesh&
 {
   return new SMESH_ElementSearcherImpl( mesh, tolerance, elemIt );
 }
+
+
+//================================================================================
+/*!
+ * \brief Intersect a ray with a convex volume
+ *  \param [in] ray - the ray
+ *  \param [in] rayLen - ray length
+ *  \param [in] vol - the volume
+ *  \param [out] tMin - return a ray parameter where the ray enters the volume
+ *  \param [out] tMax - return a ray parameter where the ray exit the volume
+ *  \param [out] iFacetMin - facet index where the ray enters the volume
+ *  \param [out] iFacetMax - facet index  where the ray exit the volume
+ *  \return bool - true if the ray intersects the volume
+ */
+//================================================================================
+
+bool SMESH_MeshAlgos::IntersectRayVolume( const gp_Ax1& ray,
+                                          const double rayLen,
+                                          const SMDS_MeshElement* vol,
+                                          double & tMin,
+                                          double & tMax,
+                                          int & iFacetMin,
+                                          int & iFacetMax)
+{
+  /* Ray-Convex Polyhedron Intersection Test by Eric Haines, erich@eye.com
+   *
+   * This test checks the ray against each face of a polyhedron, checking whether
+   * the set of intersection points found for each ray-plane intersection
+   * overlaps the previous intersection results.  If there is no overlap (i.e.
+   * no line segment along the ray that is inside the polyhedron), then the
+   * ray misses and returns false; else true.
+   */
+  SMDS_VolumeTool vTool;
+  if ( !vTool.Set( vol ))
+    return false;
+
+  tMin = -Precision::Infinite() ;
+  tMax = rayLen ;
+
+  /* Test each plane in polyhedron */
+  for ( int iF = 0; iF < vTool.NbFaces(); ++iF )
+  {
+    const SMDS_MeshNode** fNodes = vTool.GetFaceNodes( iF );
+    gp_XYZ normal;
+    vTool.GetFaceNormal( iF,
+                         normal.ChangeCoord(1),
+                         normal.ChangeCoord(2),
+                         normal.ChangeCoord(3) );
+    double D = - ( normal * SMESH_NodeXYZ( fNodes[0] ));
+
+    /* Compute intersection point T and sidedness */
+    double vd = ray.Direction().XYZ() * normal;
+    double vn = ray.Location().XYZ() * normal + D;
+    if ( vd == 0.0 ) {
+      /* ray is parallel to plane - check if ray origin is inside plane's
+         half-space */
+      if ( vn > 0.0 )
+        /* ray origin is outside half-space */
+        return false;
+    }
+    else
+    {
+      /* ray not parallel - get distance to plane */
+      double t = -vn / vd ;
+      if ( vd < 0.0 )
+      {
+        /* front face - T is a near point */
+        if ( t > tMax ) return false;
+        if ( t > tMin ) {
+          /* hit near face */
+          tMin = t ;
+          iFacetMin = iF;
+        }
+      }
+      else
+      {
+        /* back face - T is a far point */
+        if ( t < tMin ) return false;
+        if ( t < tMax ) {
+          /* hit far face */
+          tMax = t ;
+          iFacetMax = iF;
+        }
+      }
+    }
+  }
+
+  /* survived all tests */
+  /* Note: if ray originates on polyhedron, may want to change 0.0 to some
+   * epsilon to avoid intersecting the originating face.
+   */
+  if ( tMin >= 0.0 ) {
+    /* outside, hitting front face */
+    return true;
+  }
+  else
+  {
+    if ( tMax < rayLen ) {
+      /* inside, hitting back face */
+      return true;
+    }
+    else
+    {
+      /* inside, but back face beyond tmax */
+      return false;
+    }
+  }
+}
index 5c5df659b554a609544285f3d2bb885dc7a0ac80..564ab11fe22cf5ee1fbeb05e9b7ec0a28fada2fc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -168,6 +168,13 @@ namespace SMESH_MeshAlgos
                              const gp_XY& t0, const gp_XY& t1, const gp_XY& t2,
                              double &    bc0, double &    bc1);
 
+  /*!
+   * \brief Intersect volume by a ray
+   */
+  bool IntersectRayVolume( const gp_Ax1& ray, const double rayLen,
+                           const SMDS_MeshElement* vol,
+                           double & tMin, double & tMax,
+                           int & iFacetMin, int & iFacetMax);
   /*!
    * Return a face having linked nodes n1 and n2 and which is
    * - not in avoidSet,
@@ -199,6 +206,12 @@ namespace SMESH_MeshAlgos
   SMESHUtils_EXPORT
   std::vector< const SMDS_MeshNode*> GetCommonNodes(const SMDS_MeshElement* e1,
                                                     const SMDS_MeshElement* e2);
+  /*!
+   * \brief Return true if a node is on a boundary of 2D mesh.
+   *        Optionally returns two neighboring boundary nodes (or more in non-manifold mesh)
+   */
+  SMESHUtils_EXPORT bool IsOn2DBoundary( const SMDS_MeshNode* node,
+                                         std::vector< const SMDS_MeshNode*> * neibors = nullptr );
   /*!
    * \brief Return true if node1 encounters first in the face and node2, after.
    *        The nodes are supposed to be neighbor nodes in the face.
@@ -225,6 +238,7 @@ namespace SMESH_MeshAlgos
 
   /*!
    * \brief Mark elements given by SMDS_Iterator
+   * \sa SMDS_Mesh::SetAllNodesNotMarked() and SMDS_Mesh::SetAllCellsNotMarked()
    */
   template< class ElemIter >
   void MarkElems( ElemIter it, const bool isMarked )
index a8630f3168421d8eaa24800f8d07c7ea55268a39..74c0dabc410d3619358c8ef02864b2057d093dae 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0f783899244078a76977294c6da8575baff5bc5e..a1700ec5b68f541379c98879dec9fcc1ab3f00fb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9b80c96e046c488d1c58a9cf591b711c11aa0150..2933283ff0b878523382f97810ec8243daf69dc0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 7be48a6b9ff7018c329eb19febc2c77c9964a695..3376bf572bb45134ba59ea9383cf2e22645fa1a4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6d30cf6e2b31267dfe45a21561ef3e17578c7550..754411be86c868dd7184270f1434eb566c1a7e77 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -2019,12 +2019,15 @@ namespace SMESH_MeshAlgos
         {
           if ( nodes[i] == nodes[i+1] || nodes[i] == nodes[i+2] || nodes[i+1] == nodes[i+2] )
           {
-#ifdef _DEBUG_
-            std::cerr << "BAD tria" << std::endl;
-            cf.Dump();
-#else
-            if ( i < 0 ) cf.Dump(); // avoid "CutFace::Dump() unused in release mode"
-#endif
+            if (SALOME::VerbosityActivated())
+            {
+              std::cerr << "BAD tria" << std::endl;
+              cf.Dump();
+            }
+            else
+            {
+              if ( i < 0 ) cf.Dump(); // avoid "CutFace::Dump() unused in release mode"
+            }
             continue;
           }
           if (!( tria = myMesh->FindFace( nodes[i], nodes[i+1], nodes[i+2] )))
index b19c5be55e1b1092d42bd4c46b1c4fd2f97aaba9..dd79006ba8eed9beae0535a7c428a7e0f7b96ca6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2018-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2018-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 96a7a90cab31ac9915c86ecd408f88ac91ea468e..87215a779db47516a4c223fcf21293b5b752a10a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index fc1204fb14f46055037a1e595ac543bd72770502..bff4cfaab8620c5aeabd95010bca995a3847e222 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 222cf293592aa8c4fcc6e996febeeb4cb028e13b..5f710b39e33fe3a549a7dc6e3565ea7ca720350a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2018-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2018-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a5c01cb8e975b930d6246a465f1390d4b6fea7fa..f13e8a692398bdb566d87e4ea912e3bdd0531085 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f0ad3b512685ae23961640efef8489c15e4a25f3..db0d06dc20b9c812b966ba940cbab24d542719c0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 48ebcdee27f3e443318b666c0a66183278951770..f3e7fbfc29a1fdc8172b0915ec464d52499d25c3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -41,11 +41,8 @@ const char* SMESH::returnError(const char* txt)
 
 void SMESH::printErrorInDebugMode(const char* txt)
 {
-#ifdef _DEBUG_
-  std::cerr <<  txt << " " << __FILE__ << ": " << __LINE__ << std::endl;
-#else
-  (void)txt; // unused in release mode
-#endif
+  if (SALOME::VerbosityActivated())
+    std::cerr << txt << " " << __FILE__ << ": " << __LINE__ << std::endl;
 }
 
 // ------------------------------------------------------------------
index 7c195c379b8ccaf9098bff0b7a3f34d19fd3c270..af7dec8280e92540ac4b11e82412ec9c96a24d82 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a682b894d091099d6b11f8cfed9017cee05dc43b..2e920132d4aecac0e10e544f6e3340ae1f1f101a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -202,6 +202,7 @@ struct SMESH_TNodeXYZ : public gp_XYZ
     }
     return false;
   }
+  void SetXYZ( const gp_XYZ& p ) { SetCoord( p.X(), p.Y(), p.Z() ); }
   const SMDS_MeshNode* Node() const { return _node; }
   double Distance(const SMDS_MeshNode* n)       const { return (SMESH_TNodeXYZ( n )-*this).Modulus(); }
   double SquareDistance(const SMDS_MeshNode* n) const { return (SMESH_TNodeXYZ( n )-*this).SquareModulus(); }
index ab3c7d313d5bb557766b5472b195b88e5d272632..09e6212655561364d79fbac9443893f209bce5f9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e04e4a60403bc0c091f041eb1919bd091e61ed1e..e90b62654a2ac0f40f826af6874078f4557d031a 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -67,7 +67,7 @@ SET(_link_LIBRARIES
   ${KERNEL_Registry}
   ${KERNEL_SalomeHDFPersist}
   ${KERNEL_SalomeLifeCycleCORBA}
-  ${KERNEL_TOOLSDS}  
+  ${KERNEL_TOOLSDS}
   ${KERNEL_SalomeGenericObj}
   ${KERNEL_SalomeIDLKERNEL}
   ${KERNEL_SALOMELocalTrace}
@@ -113,8 +113,10 @@ SET(SMESHEngine_HEADERS
   SMESH_PreMeshInfo.hxx
   SMESH_MeshPartDS.hxx
   SMESH.hxx
-  SMESH_Component_Generator.hxx
   MG_ADAPT_i.hxx
+  SMESH_Homard_i.hxx
+  SMESH_SequentialMesh_i.hxx
+  SMESH_ParallelMesh_i.hxx
 )
 
 # --- sources ---
@@ -142,8 +144,9 @@ SET(SMESHEngine_SOURCES
   SMESH_NoteBook.cxx
   SMESH_Measurements_i.cxx
   SMESH_PreMeshInfo.cxx
-  SMESH_Component_Generator.cxx
   MG_ADAPT_i.cxx
+  SMESH_Homard_i.cxx
+  SMESH_ParallelMesh_i.cxx
 )
 
 # --- rules ---
index 02415c69e4c405759eb56d6d91467d2d0d68ee3f..46af1d5ba979ab2f7cd976f68dd7f3fca8978a8c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2020-2021  CEA/DEN, EDF R&D
+// Copyright (C) 2020-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -19,6 +19,8 @@
 
 #include "MG_ADAPT_i.hxx"
 
+#include CORBA_SERVER_HEADER(SMESH_Homard)
+
 #include "MG_ADAPT.hxx"
 #include "SMESH_File.hxx"
 #include "SMESH_Gen_i.hxx"
@@ -114,7 +116,8 @@ SMESH::MG_ADAPT_ptr SMESH_Gen_i::CreateAdaptationHypothesis()
   return SMESH::MG_ADAPT_ptr();
 #endif
 }
-SMESH::MG_ADAPT_OBJECT_ptr SMESH_Gen_i::Adaptation( const char* adaptationType)
+//SMESH::MG_ADAPT_OBJECT_ptr SMESH_Gen_i::Adaptation( const char* adaptationType)
+SALOME::GenericObj_ptr SMESH_Gen_i::Adaptation( const char* adaptationType)
 {
 #ifndef DISABLE_MG_ADAPT
   if (!strcmp(adaptationType, "MG_Adapt"))
@@ -124,7 +127,12 @@ SMESH::MG_ADAPT_OBJECT_ptr SMESH_Gen_i::Adaptation( const char* adaptationType)
     return anObj._retn();
   }
 #endif
-  return SMESH::MG_ADAPT_OBJECT_ptr();
+#ifndef DISABLE_HOMARD_ADAPT
+  if (!strcmp(adaptationType, "Uniform")) {
+    return CreateHOMARD_ADAPT();
+  }
+#endif
+  return SALOME::GenericObj_ptr();
 }
 //=============================================================================
 /*!
index 7b9f26572fc43e0ae7808f65f34a449cd99faa26..6a4329baabd8b9593a1244cd50148993dcf993e7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2020-2021  CEA/DEN, EDF R&D
+// Copyright (C) 2020-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4dc71ffaf3d4cae388a882c6f171b48a34b37006..907ff1a7cbe9062d1b858e4595e68ab290686053 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index bf99b2b5254c6aeead5e16e973f2014b76b41c15..4a196d894b9cc1e5c9853623b644101a727ebfa7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6c01c3d5b52ee2c31da3ad1010d937d587a1554b..e9a05a3b9254c14c17b40b43f265d40a74e1e9d8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index b1da0a375dcfe3ef60d73aa5b30c9a1c77c84d31..832694665991e07a33e86d546a52ac78cb39bea5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 868881fa45506336e7d7f1e6f74d64642551e7b0..f783a64be94ecd43fc9cc6e8e7e7419b2317417a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d444f5e1b7ab1f27ca70edf9bff93999560028d3..51038311bdc7f44a0657d91b052c144218476497 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a3e60dc4b0c9d4dc0dd730c3fd25d4f91ba83e89..269617c332e31c325731c059c77897b6e71a3de0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 07b3d3399823699e3d26274f3b75a5e16b942b1b..1e73de97a1f8ebe7d98ca501f1d9bfc6b3f015d3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -301,6 +301,10 @@ namespace {
     //   - FT_Deflection2D          = 22
     // v 9.3.0: FT_Undefined == 50, new items:
     //   - FT_Length3D              = 22
+    // v 9.12.0: FT_Undefined == 51, new items:
+    //   - FT_ScaledJacobian        = 8
+    // v 9.12.0: FT_Undefined == 52, new items:
+    //   - FT_Warping3D             = 4
     //
     // It's necessary to continue recording this history and to fill
     // undef2newItems (see below) accordingly.
@@ -325,6 +329,8 @@ namespace {
       undef2newItems[ 48 ].push_back( 22 );
       undef2newItems[ 49 ].push_back( 22 );
       undef2newItems[ 50 ].push_back( 22 );
+      undef2newItems[ 51 ].push_back( 8 );
+      undef2newItems[ 52 ].push_back( 4 );
 
       ASSERT( undef2newItems.rbegin()->first == SMESH::FT_Undefined );
     }
@@ -458,7 +464,7 @@ namespace {
       initialized = true;
       filteredArgs.push_back( "SMESH.MED_V2_1" );
       filteredArgs.push_back( "SMESH.MED_V2_2" );
-    }  
+    }
     return std::find( filteredArgs.begin(), filteredArgs.end(), theArg ) != filteredArgs.end();
   }
 }
@@ -694,6 +700,7 @@ Handle(_pyCommand) _pyGen::AddCommand( const TCollection_AsciiString& theCommand
   if ( objID == this->GetID() || objID == SMESH_2smeshpy::GenName())
   {
     this->Process( aCommand );
+
     //addFilterUser( aCommand, theGen ); // protect filters from clearing
     return aCommand;
   }
@@ -762,7 +769,7 @@ Handle(_pyCommand) _pyGen::AddCommand( const TCollection_AsciiString& theCommand
       meshID = aCommand->GetResultValue();
     else if ( method == "MakeBoundaryMesh")
       meshID = aCommand->GetResultValue(1);
-    else if ( method == "MakeBoundaryElements")
+    else if ( method == "MakeBoundaryElements" || method == "MakeBoundaryOfEachElement" )
       meshID = aCommand->GetResultValue(2);
 
     if ( method.Search("MakeGroups") != -1      ||
@@ -779,7 +786,7 @@ Handle(_pyCommand) _pyGen::AddCommand( const TCollection_AsciiString& theCommand
       groups = aCommand->GetResultValue();
     else if ( method == "MakeBoundaryMesh" )
       groups = aCommand->GetResultValue(2);
-    else if ( method == "MakeBoundaryElements")
+    else if ( method == "MakeBoundaryElements" || method == "MakeBoundaryOfEachElement" )
       groups = aCommand->GetResultValue(3);
     else if ( method == "Create0DElementsOnAllNodes" &&
               aCommand->GetArg(2).Length() > 2 ) // group name != ''
@@ -932,11 +939,13 @@ Handle(_pyCommand) _pyGen::AddCommand( const TCollection_AsciiString& theCommand
           "Geom_POLYHEDRA", "Geom_BALL" };
         if ( -1 < iGeom && iGeom < nbTypes )
           Threshold = SMESH + types[ iGeom ];
-#ifdef _DEBUG_
-        // is types complete? (compilation failure means that enum GeometryType changed)
-        static_assert( sizeof(types) / sizeof(const char*) == nbTypes,
-                       "Update names of GeometryType's!!!" );
-#endif
+
+        if (SALOME::VerbosityActivated())
+        {
+          // is types complete? (compilation failure means that enum GeometryType changed)
+          static_assert( sizeof(types) / sizeof(const char*) == nbTypes,
+                        "Update names of GeometryType's!!!" );
+        }
       }
       if (Type == "SMESH.FT_EntityType")
       {
@@ -953,11 +962,13 @@ Handle(_pyCommand) _pyGen::AddCommand( const TCollection_AsciiString& theCommand
           "Entity_Polyhedra", "Entity_Quad_Polyhedra", "Entity_Ball" };
         if ( -1 < iGeom && iGeom < nbTypes )
           Threshold = SMESH + types[ iGeom ];
-#ifdef _DEBUG_
-        // is 'types' complete? (compilation failure means that enum EntityType changed)
-        static_assert( sizeof(types) / sizeof(const char*) == nbTypes,
-                       "Update names of EntityType's!!!" );
-#endif
+
+        if (SALOME::VerbosityActivated())
+        {
+          // is 'types' complete? (compilation failure means that enum EntityType changed)
+          static_assert( sizeof(types) / sizeof(const char*) == nbTypes,
+                        "Update names of EntityType's!!!" );
+        }
       }
     }
     if ( ThresholdID.Length() != 2 ) // neither '' nor ""
@@ -1005,6 +1016,7 @@ void _pyGen::Process( const Handle(_pyCommand)& theCommand )
   // Concatenate( [mesh1, ...], ... )
   // CreateHypothesis( theHypType, theLibName )
   // Compute( mesh, geom )
+  // CheckCompute( mesh )
   // Evaluate( mesh, geom )
   // mesh creation
   TCollection_AsciiString method = theCommand->GetMethod();
@@ -1013,10 +1025,16 @@ void _pyGen::Process( const Handle(_pyCommand)& theCommand )
   {
     Handle(_pyMesh) mesh = new _pyMesh( theCommand );
     AddObject( mesh );
+    // set mesh name
+    _pyID id = mesh->GetID(), comma("'");
+    if ( myObjectNames.IsBound( id ))
+      theCommand->SetArg( theCommand->GetNbArgs() + 1,
+                          comma + myObjectNames( id ) + comma);
     return;
   }
   if ( method == "CreateMeshesFromUNV" ||
        method == "CreateMeshesFromSTL" ||
+       method == "CreateDualMesh" ||
        method == "CopyMesh" ) // command result is a mesh
   {
     Handle(_pyMesh) mesh = new _pyMesh( theCommand, theCommand->GetResultValue() );
@@ -1083,6 +1101,21 @@ void _pyGen::Process( const Handle(_pyCommand)& theCommand )
     }
   }
 
+  // smeshgen.CheckCompute( mesh ) --> mesh.CheckCompute()
+  if ( method == "CheckCompute" )
+  {
+    const _pyID& meshID = theCommand->GetArg( 1 );
+    map< _pyID, Handle(_pyMesh) >::iterator id_mesh = myMeshes.find( meshID );
+    if ( id_mesh != myMeshes.end() ) {
+      theCommand->SetObject( meshID );
+      theCommand->RemoveArgs();
+      id_mesh->second->Process( theCommand );
+      id_mesh->second->AddProcessedCmd( theCommand );
+      return;
+    }
+  }
+
+
   // smeshgen.Evaluate( mesh, geom ) --> mesh.Evaluate(geom)
   if ( method == "Evaluate" )
   {
@@ -1815,14 +1848,15 @@ _pyMesh::_pyMesh(const Handle(_pyCommand) theCreationCmd, const _pyID& meshId):
   }
   else if ( theCreationCmd->GetMethod().Search("MakeMesh") != -1 ||
             theCreationCmd->GetMethod() == "MakeBoundaryMesh" ||
-            theCreationCmd->GetMethod() == "MakeBoundaryElements" )
+            theCreationCmd->GetMethod() == "MakeBoundaryElements" ||
+            theCreationCmd->GetMethod() == "MakeBoundaryOfEachElement" )
   {
     // this mesh depends on a source mesh
     // (theCreationCmd is already Process()ed by _pyMeshEditor)
     const _pyID& meshID = theCreationCmd->GetObject();
     addFatherMesh( meshID );
   }
-    
+
   // convert my creation command
   Handle(_pyCommand) creationCmd = GetCreationCmd();
   creationCmd->SetObject( SMESH_2smeshpy::SmeshpyName() );
@@ -1891,6 +1925,31 @@ void _pyMesh::Process( const Handle(_pyCommand)& theCommand )
     }
     Flush();
   }
+  // in snapshot mode, clear the previous CheckCompute()
+  else if ( method == "CheckCompute" )
+  {
+    if ( !theGen->IsToKeepAllCommands() ) // !historical
+    {
+      if ( !myLastCheckCmd.IsNull() )
+      {
+        // check if the previously computed mesh has been edited,
+        // if so then we do not clear the previous Compute()
+        bool toClear = true;
+        list< Handle(_pyMeshEditor)>::iterator e = myEditors.begin();
+        for ( ; e != myEditors.end() && toClear; ++e )
+        {
+          list< Handle(_pyCommand)>& cmds = (*e)->GetProcessedCmds();
+          list< Handle(_pyCommand) >::reverse_iterator cmd = cmds.rbegin();
+          if ( cmd != cmds.rend() &&
+               (*cmd)->GetOrderNb() > myLastCheckCmd->GetOrderNb() )
+            toClear = false;
+        }
+        if ( toClear )
+          myLastCheckCmd->Clear();
+      }
+      myLastCheckCmd = theCommand;
+    }
+  }
   // ----------------------------------------------------------------------
   else if ( method == "Clear" ) // in snapshot mode, clear all previous commands
   {
@@ -2206,7 +2265,8 @@ bool _pyMesh::NeedMeshAccess( const Handle(_pyCommand)& theCommand )
         "GetElemNode","IsMediumNode","IsMediumNodeOfAnyElem","ElemNbEdges","ElemNbFaces",
         "GetElemFaceNodes", "GetFaceNormal", "FindElementByNodes",
         "IsPoly","IsQuadratic","BaryCenter","GetHypothesisList", "SetAutoColor", "GetAutoColor",
-        "Clear", "ConvertToStandalone", "GetMeshOrder", "SetMeshOrder"
+        "Clear", "ConvertToStandalone", "GetMeshOrder", "SetMeshOrder",
+        "SetNbThreads", "CheckCompute"
         ,"" }; // <- mark of end
     sameMethods.Insert( names );
   }
@@ -2414,7 +2474,7 @@ void _pyMesh::ClearCommands()
   list< Handle(_pySubMesh) >::iterator sm = mySubmeshes.begin();
   for ( ; sm != mySubmeshes.end(); ++sm )
     (*sm)->ClearCommands();
-  
+
   list< Handle(_pyGroup) >::iterator gr = myGroups.begin();
   for ( ; gr != myGroups.end(); ++gr )
     (*gr)->ClearCommands();
@@ -2486,10 +2546,10 @@ void _pyMeshEditor::Process( const Handle(_pyCommand)& theCommand)
   static TStringSet sameMethods;
   if ( sameMethods.empty() ) {
     const char * names[] = {
-      "RemoveElements","RemoveNodes","RemoveOrphanNodes",
+      "RemoveElements","RemoveNodes","RemoveOrphanNodes","RemoveNodeWithReconnection",
       "AddNode","Add0DElement","AddEdge","AddFace","AddPolygonalFace","AddBall",
-      "AddVolume","AddPolyhedralVolume","AddPolyhedralVolumeByFaces",
-      "MoveNode", "MoveClosestNodeToPoint","InverseDiag","DeleteDiag",
+      "AddVolume","AddPolyhedralVolume","AddPolyhedralVolumeByFaces","AddNodeOnSegment",
+      "MoveNode", "MoveClosestNodeToPoint","InverseDiag","DeleteDiag","AddNodeOnFace",
       "Reorient","ReorientObject","Reorient2DBy3D","Reorient2DByNeighbours",
       "TriToQuad","TriToQuadObject", "QuadTo4Tri", "SplitQuad","SplitQuadObject",
       "BestSplit","Smooth","SmoothObject","SmoothParametric","SmoothParametricObject",
@@ -2507,7 +2567,7 @@ void _pyMeshEditor::Process( const Handle(_pyCommand)& theCommand)
       "GetLastCreatedElems", "FaceGroupsSeparatedByEdges",
       "MirrorMakeMesh","MirrorObjectMakeMesh","TranslateMakeMesh","TranslateObjectMakeMesh",
       "Scale","ScaleMakeMesh","RotateMakeMesh","RotateObjectMakeMesh","MakeBoundaryMesh",
-      "MakeBoundaryElements", "SplitVolumesIntoTetra","SplitHexahedraIntoPrisms",
+      "MakeBoundaryElements", "MakeBoundaryOfEachElement", "SplitVolumesIntoTetra","SplitHexahedraIntoPrisms",
       "DoubleElements","DoubleNodes","DoubleNode","DoubleNodeGroup","DoubleNodeGroups",
       "DoubleNodeElem","DoubleNodeElemInRegion","DoubleNodeElemGroup","AffectedElemGroupsInRegion",
       "DoubleNodeElemGroupInRegion","DoubleNodeElemGroups","DoubleNodeElemGroupsInRegion",
@@ -2574,7 +2634,7 @@ void _pyMeshEditor::Process( const Handle(_pyCommand)& theCommand)
       // 1. Remove "MakeGroups" from the Command
       TCollection_AsciiString aMethod = theCommand->GetMethod();
       int nbArgsToAdd = diffLastTwoArgsMethods.Contains(aMethod) ? 2 : 1;
-      
+
       if(is0DmethObj)
         pos = pos-2;  //Remove "0D" from the Command too
       aMethod.Trunc(pos-1);
@@ -3116,7 +3176,7 @@ void _pyHypothesis::rememberCmdOfParameter( const Handle(_pyCommand) & theComman
 
 //================================================================================
 /*!
- * \brief Return true if a setting parameter command ha been used to compute mesh
+ * \brief Return true if a setting parameter command has been used to compute mesh
  */
 //================================================================================
 
@@ -3405,7 +3465,7 @@ void _pyLayerDistributionHypo::Flush()
   list< Handle(_pyCommand) >::iterator cmd = myArgCommands.begin();
   _pyID prevNewName;
   for ( cmd = myArgCommands.begin(); cmd != myArgCommands.end(); ++cmd )
-  {    
+  {
     const _pyID& hyp1dID = (*cmd)->GetArg( 1 );
     if ( hyp1dID.IsEmpty() ) continue;
 
@@ -3429,7 +3489,7 @@ void _pyLayerDistributionHypo::Flush()
       }
       newName += "_Distribution";
       prevNewName = newName;
-    
+
       hyp1d->GetCreationCmd()->SetResultValue( newName );
     }
     list< Handle(_pyCommand) >& cmds = theGen->GetCommands();
@@ -4626,7 +4686,7 @@ _pyGroup::_pyGroup(const Handle(_pyCommand)& theCreationCmd, const _pyID & id)
 
 //================================================================================
 /*!
- * \brief Check if "[ group1, group2 ] = mesh.GetGroups()" creation command 
+ * \brief Check if "[ group1, group2 ] = mesh.GetGroups()" creation command
  *        can be cleared
  */
 //================================================================================
@@ -4797,7 +4857,7 @@ void _pyFilter::Process( const Handle(_pyCommand)& theCommand)
 
   if ( !myNewID.IsEmpty() )
     theCommand->SetObject( myNewID );
-    
+
   // Convert the following set of commands into smesh.GetFilterFromCriteria(criteria)
   // aFilter0x2aaab0487080 = aFilterManager.CreateFilter()
   // aFilter0x2aaab0487080.SetCriteria(aCriteria)
@@ -4840,7 +4900,7 @@ void _pyFilter::Process( const Handle(_pyCommand)& theCommand)
 void _pyFilter::Flush()
 {
   if ( myNewID.IsEmpty() ) return;
-  
+
   list< Handle(_pyCommand) >::iterator cmd = myArgCmds.begin();
   for ( ; cmd != myArgCmds.end(); ++cmd )
     if ( !(*cmd)->IsEmpty() )
@@ -4977,7 +5037,7 @@ _pyHypothesisReader::_pyHypothesisReader()
     //          ...
     //          dim="2">
     //   <python-wrap>
-    //     <accumulative-methods> 
+    //     <accumulative-methods>
     //       SetEnforcedVertex,
     //       SetEnforcedVertexNamed
     //     </accumulative-methods>
index 6ad620a4fad1aa4435d84bb07c8e02876601ad24..b5363cc4e7d53ec0db1d7646ea037518fc13af28 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -53,7 +53,7 @@
  * The creation reason is that smeshBuilder.py commands defining hypotheses encapsulate
  * several SMESH engine method calls. As well, the dependencies between smeshBuilder.py
  * classes differ from ones between corresponding SMESH IDL interfaces.
- * 
+ *
  * Everything here is for internal usage by SMESH_2smeshpy::ConvertScript()
  * declared in SMESH_PythonDump.hxx
  */
@@ -350,6 +350,7 @@ class _pyMesh: public _pyObject
   std::list< Handle(_pyMesh) >       myChildMeshes; // depending on me
   bool                               myGeomNotInStudy;
   Handle(_pyCommand)                 myLastComputeCmd;
+  Handle(_pyCommand)                 myLastCheckCmd;
 public:
   _pyMesh(const Handle(_pyCommand) creationCmd);
   _pyMesh(const Handle(_pyCommand) theCreationCmd, const _pyID & id);
@@ -373,7 +374,7 @@ private:
 
   DEFINE_STANDARD_RTTIEXT(_pyMesh,_pyObject)
 };
-#undef _pyMesh_ACCESS_METHOD 
+#undef _pyMesh_ACCESS_METHOD
 
 // -------------------------------------------------------------------------------------
 /*!
index ac7d9f8b6726ec85c17abb885a79a8e3d92b77de..4e262b479261ca3fad81879b922e1bb26ab03fc0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index bcf70350e9a188bad45a616f856040aa0c7fe009..84dc8d968b95c77ddd3444f41a50564c34fe24ad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6d49f9ca5a96d855f2fba0296382491a1104a763..ecf61ad5e12e813766fe90387c36b9af98eb84f0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 4f7c4cb3419032bdeace0f955bb2333466fb27dd..2a6ea5e7d0e7937fce61c4ac755e4ad5205dcd08 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/src/SMESH_I/SMESH_Component_Generator.cxx b/src/SMESH_I/SMESH_Component_Generator.cxx
deleted file mode 100644 (file)
index 0a1a1d9..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (C) 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
-//
-
-#include "SMESH_Component_Generator.hxx"
-
-#include "SMESH_Gen_No_Session_i.hxx"
-#include "SALOME_Container_i.hxx"
-#include "SALOME_KernelServices.hxx"
-
-#include "SALOME_Fake_NamingService.hxx"
-
-#include <cstring>
-
-static Engines::EngineComponent_var _unique_compo;
-
-Engines::EngineComponent_var RetrieveSMESHInstance()
-{
-  if (CORBA::is_nil(_unique_compo))
-  {
-    CORBA::ORB_var orb;
-    {
-      int argc(0);
-      orb = CORBA::ORB_init(argc, nullptr);
-    }
-    CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
-    PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);
-    PortableServer::POAManager_var pman = poa->the_POAManager();
-    CORBA::PolicyList policies;
-    policies.length(0);
-    auto *cont(KERNEL::getContainerSA());
-    PortableServer::ObjectId *conId(cont->getCORBAId());
-    //
-    pman->activate();
-    //
-    SMESH_Gen_i::SetNS(new SALOME_Fake_NamingService);
-    //
-    SMESH_Gen_No_Session_i *servant = new SMESH_Gen_No_Session_i(orb, poa, conId, "SMESH_inst_2", "SMESH");
-    PortableServer::ObjectId *zeId = servant->getId();
-    CORBA::Object_var zeRef = poa->id_to_reference(*zeId);
-    _unique_compo = Engines::EngineComponent::_narrow(zeRef);
-  }
-  return _unique_compo;
-}
-
-Engines::EngineComponent_var GetSMESHInstanceHasThis()
-{
-  return _unique_compo;
-}
diff --git a/src/SMESH_I/SMESH_Component_Generator.hxx b/src/SMESH_I/SMESH_Component_Generator.hxx
deleted file mode 100644 (file)
index db796a5..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (C) 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
-//
-
-#pragma once
-
-#include "SMESH.hxx"
-
-#include "SALOMEconfig.h"
-
-#include CORBA_SERVER_HEADER(SMESH_Gen)
-
-SMESH_I_EXPORT Engines::EngineComponent_var RetrieveSMESHInstance();
-SMESH_I_EXPORT Engines::EngineComponent_var GetSMESHInstanceHasThis();
index 954f98cd8ad5a639c68282125ad70856ab107771..5448c6699586ad36f3b6069ef7095aaaafeffca7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -399,6 +399,20 @@ namespace SMESH {
     return SMESH::FT_Warping;
   }
 
+  /*
+    Class       : Warping3D_i
+    Description : Functor for calculating warping
+  */
+  Warping3D_i::Warping3D_i()
+  {
+    myNumericalFunctorPtr.reset(new Controls::Warping3D());
+    myFunctorPtr = myNumericalFunctorPtr;
+  }
+
+  FunctorType Warping3D_i::GetFunctorType()
+  {
+    return SMESH::FT_Warping3D;
+  }
 
   /*
     Class       : Taper_i
@@ -460,6 +474,21 @@ namespace SMESH {
     return SMESH::FT_Volume3D;
   }
 
+  /*
+    Class       : ScaledJacobian_i
+    Description : Functor for calculating volume of 3D element
+  */
+  ScaledJacobian_i::ScaledJacobian_i()
+  {
+    myNumericalFunctorPtr.reset( new Controls::ScaledJacobian() );
+    myFunctorPtr = myNumericalFunctorPtr;
+  }
+
+  FunctorType ScaledJacobian_i::GetFunctorType()
+  {
+    return SMESH::FT_ScaledJacobian;
+  }
+
   /*
     Class       : MaxElementLength2D_i
     Description : Functor for calculating maximum length of 2D element
@@ -2091,6 +2120,14 @@ namespace SMESH {
   }
 
 
+  Warping3D_ptr FilterManager_i::CreateWarping3D()
+  {
+    SMESH::Warping3D_i* aServant = new SMESH::Warping3D_i();
+    SMESH::Warping3D_var anObj = aServant->_this();
+    TPythonDump() << aServant << " = " << this << ".CreateWarping3D()";
+    return anObj._retn();
+  }
+
   Taper_ptr FilterManager_i::CreateTaper()
   {
     SMESH::Taper_i* aServant = new SMESH::Taper_i();
@@ -2126,6 +2163,13 @@ namespace SMESH {
     return anObj._retn();
   }
 
+  ScaledJacobian_ptr FilterManager_i::CreateScaledJacobian()
+  {
+    SMESH::ScaledJacobian_i* aServant = new SMESH::ScaledJacobian_i();
+    SMESH::ScaledJacobian_var anObj   = aServant->_this();
+    TPythonDump()<<aServant<<" = "<<this<<".CreateScaledJacobian()";
+    return anObj._retn();
+  }
 
   MaxElementLength2D_ptr FilterManager_i::CreateMaxElementLength2D()
   {
@@ -3049,6 +3093,9 @@ namespace SMESH {
         case SMESH::FT_Warping:
           aFunctor = aFilterMgr->CreateWarping();
           break;
+        case SMESH::FT_Warping3D:
+          aFunctor = aFilterMgr->CreateWarping3D();
+          break;
         case SMESH::FT_MinimumAngle:
           aFunctor = aFilterMgr->CreateMinimumAngle();
           break;
@@ -3076,6 +3123,9 @@ namespace SMESH {
         case SMESH::FT_NodeConnectivityNumber:
           aFunctor = aFilterMgr->CreateNodeConnectivityNumber();
           break;
+        case SMESH::FT_ScaledJacobian:
+          aFunctor = aFilterMgr->CreateScaledJacobian();
+          break;
 
         // Predicates
 
@@ -3507,11 +3557,13 @@ namespace SMESH {
     {
       case FT_AspectRatio           : return "Aspect ratio";
       case FT_Warping               : return "Warping";
+      case FT_Warping3D             : return "Warping 3D";
       case FT_MinimumAngle          : return "Minimum angle";
       case FT_Taper                 : return "Taper";
       case FT_Skew                  : return "Skew";
       case FT_Area                  : return "Area";
       case FT_Volume3D              : return "Volume3D";
+      case FT_ScaledJacobian        : return "ScaledJacobian";
       case FT_MaxElementLength2D    : return "Max element length 2D";
       case FT_MaxElementLength3D    : return "Max element length 3D";
       case FT_BelongToMeshGroup     : return "Belong to Mesh Group";
@@ -3563,11 +3615,13 @@ namespace SMESH {
   {
     if      ( theStr.equals( "Aspect ratio"                 ) ) return FT_AspectRatio;
     else if ( theStr.equals( "Warping"                      ) ) return FT_Warping;
+    else if ( theStr.equals( "Warping 3D"                   ) ) return FT_Warping3D;
     else if ( theStr.equals( "Minimum angle"                ) ) return FT_MinimumAngle;
     else if ( theStr.equals( "Taper"                        ) ) return FT_Taper;
     else if ( theStr.equals( "Skew"                         ) ) return FT_Skew;
     else if ( theStr.equals( "Area"                         ) ) return FT_Area;
     else if ( theStr.equals( "Volume3D"                     ) ) return FT_Volume3D;
+    else if ( theStr.equals( "ScaledJacobian"               ) ) return FT_ScaledJacobian;
     else if ( theStr.equals( "Max element length 2D"        ) ) return FT_MaxElementLength2D;
     else if ( theStr.equals( "Max element length 3D"        ) ) return FT_MaxElementLength3D;
     else if ( theStr.equals( "Belong to Mesh Group"         ) ) return FT_BelongToMeshGroup;
@@ -4136,11 +4190,13 @@ namespace SMESH {
       "FT_AspectRatio",
       "FT_AspectRatio3D",
       "FT_Warping",
+      "FT_Warping3D",
       "FT_MinimumAngle",
       "FT_Taper",
       "FT_Skew",
       "FT_Area",
       "FT_Volume3D",
+      "FT_ScaledJacobian",
       "FT_MaxElementLength2D",
       "FT_MaxElementLength3D",
       "FT_FreeBorders",
index 29d221259f4d53b8f1f87b6f54403ecb7cb6b744..94162013477eda9d3536e1ab94c0d86e44728515 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -164,6 +164,19 @@ namespace SMESH
     Warping_i();
     FunctorType                     GetFunctorType();
   };
+
+  /*
+    Class       : Warping3D_i
+    Description : Functor for calculating 3D warping
+  */
+  class SMESH_I_EXPORT Warping3D_i : public virtual POA_SMESH::Warping3D,
+    public virtual NumericalFunctor_i
+  {
+  public:
+    Warping3D_i();
+    FunctorType                     GetFunctorType();
+  };
+
   
   
   /*
@@ -351,6 +364,18 @@ namespace SMESH
     NodeConnectivityNumber_i();
     FunctorType                     GetFunctorType();
   };
+
+  /*
+    Class       : ScaledJacobian_i
+    Description : Functor returning the scaled jacobian
+  */
+  class SMESH_I_EXPORT ScaledJacobian_i: public virtual POA_SMESH::ScaledJacobian,
+                                       public virtual NumericalFunctor_i
+  {
+  public:
+    ScaledJacobian_i();
+    FunctorType                     GetFunctorType();
+  };
   
   
   /*
@@ -1109,10 +1134,12 @@ namespace SMESH
     AspectRatio_ptr           CreateAspectRatio();
     AspectRatio3D_ptr         CreateAspectRatio3D();
     Warping_ptr               CreateWarping();
+    Warping3D_ptr             CreateWarping3D();
     Taper_ptr                 CreateTaper();
     Skew_ptr                  CreateSkew();
     Area_ptr                  CreateArea();
     Volume3D_ptr              CreateVolume3D();
+    ScaledJacobian_ptr        CreateScaledJacobian();
     MaxElementLength2D_ptr    CreateMaxElementLength2D();
     MaxElementLength3D_ptr    CreateMaxElementLength3D();
     Length_ptr                CreateLength();
index 2b4e33cc2971788d2f10b09fe97c865a9eef657e..0e0b57c4f94eba90c37d9708abbcf93fe0f7d442 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2021  CEA/DEN, EDF R&D
+// Copyright (C) 2021-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -22,6 +22,7 @@
 #include "SALOME_KernelServices.hxx"
 #include "SALOME_Fake_NamingService.hxx"
 #include "SALOME_ModuleCatalog_impl.hxx"
+#include "Utils_SINGLETON.hxx"
 
 SMESH_Gen_No_Session_i::SMESH_Gen_No_Session_i( CORBA::ORB_ptr orb,
                                                 PortableServer::POA_ptr   poa,
@@ -29,6 +30,7 @@ SMESH_Gen_No_Session_i::SMESH_Gen_No_Session_i( CORBA::ORB_ptr orb,
                                                 const char*               instanceName,
                                                 const char*               interfaceName):SMESH_Gen_i(orb,poa,contId,instanceName,interfaceName,false)
 {
+  myNS = SINGLETON_<SALOME_Fake_NamingService>::Instance();
 }
 
 GEOM::GEOM_Gen_var SMESH_Gen_No_Session_i::GetGeomEngine( bool isShaper )
index e79407dff8a7ed7869c0d3f8f9def01216e0cafc..92e11cb24eb0d160da6b473f017b5432e04fcc5b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2021  CEA/DEN, EDF R&D
+// Copyright (C) 2021-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f2577d7feb0e585cd240c0496154788837a5819e..2227efc8abfb5a9c4816f820f8d23bc3ed900da2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2021  CEA/DEN, EDF R&D
+// Copyright (C) 2021-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -49,6 +49,8 @@ SALOME_ModuleCatalog::ModuleCatalog_var SMESH_Gen_Session_i::getModuleCatalog()
   return aCat;
 }
 
+#include "SMESH_Gen_No_Session_i.hxx"
+
 extern "C"
 { SMESH_I_EXPORT
   PortableServer::ObjectId* SMESHEngine_factory( CORBA::ORB_ptr            orb,
@@ -57,7 +59,17 @@ extern "C"
                                                  const char*               instanceName,
                                                  const char*               interfaceName )
   {
-    SMESH_Gen_Session_i* aSMESHGen = new SMESH_Gen_Session_i(orb, poa, contId, instanceName, interfaceName);
-    return aSMESHGen->getId() ;
+    CORBA::Object_var o = poa->id_to_reference(*contId);
+    Engines::Container_var cont = Engines::Container::_narrow(o);
+    if(cont->is_SSL_mode())
+    {
+      SMESH_Gen_No_Session_i* aSMESHGen = new SMESH_Gen_No_Session_i(orb, poa, contId, instanceName, interfaceName);
+      return aSMESHGen->getId() ;
+    }
+    else
+    {
+      SMESH_Gen_Session_i* aSMESHGen = new SMESH_Gen_Session_i(orb, poa, contId, instanceName, interfaceName);
+      return aSMESHGen->getId() ;
+    }
   }
 }
index af69571e823f93eefb2f00a98429da7e8475b288..00f2160f0fa78207fd66aca0b209fc510c1c7b6a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2021  CEA/DEN, EDF R&D
+// Copyright (C) 2021-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9fce23337f80410db0b0cc76714487d90492dd25..265be507473ab82b1f5f1ecc164b383210631467 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include <TopoDS_Wire.hxx>
 #include <gp_Pnt.hxx>
 
+// Have to be included before std headers
+#include <Python.h>
+#include <structmember.h>
+
 #ifdef WIN32
  #include <windows.h>
  #include <process.h>
 #include "SMESH_Hypothesis.hxx"
 #include "SMESH_Hypothesis_i.hxx"
 #include "SMESH_Mesh.hxx"
+#include "SMESH_ParallelMesh.hxx"
 #include "SMESH_MeshEditor.hxx"
 #include "SMESH_Mesh_i.hxx"
+#include <SMESH_SequentialMesh_i.hxx>
+#include "SMESH_ParallelMesh_i.hxx"
 #include "SMESH_PreMeshInfo.hxx"
 #include "SMESH_PythonDump.hxx"
 #include "SMESH_ControlsDef.hxx"
 #include <SMESH_BoostTxtArchive.hxx>
+#include <SMESH_SequentialMesh_i.hxx>
+#include <SMESH_ParallelMesh_i.hxx>
 
 // to pass CORBA exception through SMESH_TRY
 #define SMY_OWN_CATCH catch( SALOME::SALOME_Exception& se ) { throw se; }
 #include <boost/archive/text_oarchive.hpp>
 #include <boost/serialization/list.hpp>
 #include <boost/serialization/string.hpp>
+#include <boost/filesystem.hpp>
+
+namespace fs = boost::filesystem;
 
 using namespace std;
 using SMESH::TPythonDump;
@@ -154,12 +166,6 @@ using SMESH::TVar;
 
 #define NUM_TMP_FILES 2
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
-
 // Static variables definition
 GEOM::GEOM_Gen_var      SMESH_Gen_i::myGeomGen;
 CORBA::ORB_var          SMESH_Gen_i::myOrb;
@@ -448,7 +454,7 @@ GenericHypothesisCreator_i* SMESH_Gen_i::getHypothesisCreator(const char* theHyp
   thePlatformLibName = aPlatformLibName;
 
   Unexpect aCatch(SALOME_SalomeException);
-  if(MYDEBUG) MESSAGE( "Create Hypothesis <" << theHypName << "> from " << aPlatformLibName);
+  MESSAGE( "Create Hypothesis <" << theHypName << "> from " << aPlatformLibName);
 
   typedef GenericHypothesisCreator_i* (*GetHypothesisCreator)(const char* );
   GenericHypothesisCreator_i* aCreator;
@@ -458,7 +464,7 @@ GenericHypothesisCreator_i* SMESH_Gen_i::getHypothesisCreator(const char* theHyp
     if (myHypCreatorMap.find(string(theHypName)) == myHypCreatorMap.end())
     {
       // load plugin library
-      if(MYDEBUG) MESSAGE("Loading server meshers plugin library ...");
+      MESSAGE("Loading server meshers plugin library ...");
 #ifdef WIN32
 #  ifdef UNICODE
       const wchar_t* path = Kernel_Utils::decode_s(aPlatformLibName);
@@ -484,7 +490,7 @@ GenericHypothesisCreator_i* SMESH_Gen_i::getHypothesisCreator(const char* theHyp
       }
 
       // get method, returning hypothesis creator
-      if(MYDEBUG) MESSAGE("Find GetHypothesisCreator() method ...");
+      MESSAGE("Find GetHypothesisCreator() method ...");
       GetHypothesisCreator procHandle =
         (GetHypothesisCreator)GetProc( libHandle, "GetHypothesisCreator" );
       if (!procHandle)
@@ -495,7 +501,7 @@ GenericHypothesisCreator_i* SMESH_Gen_i::getHypothesisCreator(const char* theHyp
       }
 
       // get hypothesis creator
-      if(MYDEBUG) MESSAGE("Get Hypothesis Creator for " << theHypName);
+      MESSAGE("Get Hypothesis Creator for " << theHypName);
       aCreator = procHandle(theHypName);
       if (!aCreator)
       {
@@ -546,8 +552,7 @@ SMESH::SMESH_Hypothesis_ptr SMESH_Gen_i::createHypothesis(const char* theHypName
     // activate the CORBA servant of hypothesis
     hypothesis_i = myHypothesis_i->_this();
     int nextId = RegisterObject( hypothesis_i );
-    if(MYDEBUG) { MESSAGE( "Add hypo to map with id = "<< nextId ); }
-    else        { (void)nextId; } // avoid "unused variable" warning in release mode
+    MESSAGE( "Add hypo to map with id = "<< nextId );
   }
   return hypothesis_i._retn();
 }
@@ -563,21 +568,24 @@ SMESH::SMESH_Hypothesis_ptr SMESH_Gen_i::createHypothesis(const char* theHypName
 SMESH::SMESH_Mesh_ptr SMESH_Gen_i::createMesh()
 {
   Unexpect aCatch(SALOME_SalomeException);
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::createMesh" );
+  MESSAGE( "SMESH_Gen_i::createMesh" );
 
   // Get or create the GEOM_Client instance
   try {
     // create a new mesh object servant, store it in a map in study context
     SMESH_Mesh_i* meshServant = new SMESH_Mesh_i( GetPOA(), this );
     // create a new mesh object
-    if(MYDEBUG) MESSAGE("myIsEmbeddedMode " << myIsEmbeddedMode);
-    meshServant->SetImpl( myGen.CreateMesh( myIsEmbeddedMode ));
+    MESSAGE("myIsEmbeddedMode " << myIsEmbeddedMode);
+    SMESH_Mesh* myImpl = dynamic_cast<SMESH_Mesh*>(myGen.CreateMesh( myIsEmbeddedMode ));
+    if(myImpl == NULL )
+      THROW_SALOME_CORBA_EXCEPTION( "Could not cast SequentialMesh as Mesh", SALOME::INTERNAL_ERROR );
+    meshServant->SetImpl(myImpl);
 
     // activate the CORBA servant of Mesh
     SMESH::SMESH_Mesh_var mesh = SMESH::SMESH_Mesh::_narrow( meshServant->_this() );
     int nextId = RegisterObject( mesh );
-    if(MYDEBUG) { MESSAGE( "Add mesh to map with id = "<< nextId); }
-    else        { (void)nextId; } // avoid "unused variable" warning in release mode
+    MESSAGE( "Add mesh to map with id = "<< nextId);
+
     return mesh._retn();
   }
   catch (SALOME_Exception& S_ex) {
@@ -586,6 +594,42 @@ SMESH::SMESH_Mesh_ptr SMESH_Gen_i::createMesh()
   return SMESH::SMESH_Mesh::_nil();
 }
 
+//=============================================================================
+/*!
+ *  SMESH_Gen_i::createParallelMesh
+ *
+ *  Create empty parallel mesh on shape
+ */
+//=============================================================================
+SMESH::SMESH_ParallelMesh_ptr SMESH_Gen_i::createParallelMesh()
+{
+  Unexpect aCatch(SALOME_SalomeException);
+  MESSAGE( "SMESH_Gen_i::createParallelMesh" );
+
+  // Get or create the GEOM_Client instance
+  try {
+    // create a new mesh object servant, store it in a map in study context
+    SMESH_ParallelMesh_i* meshServant = new SMESH_ParallelMesh_i( GetPOA(), this );
+    // create a new mesh object
+    MESSAGE("myIsEmbeddedMode " << myIsEmbeddedMode);
+    SMESH_Mesh* myImpl = dynamic_cast<SMESH_Mesh*>(myGen.CreateParallelMesh( myIsEmbeddedMode ));
+    if(myImpl == NULL )
+      THROW_SALOME_CORBA_EXCEPTION( "Could not cast ParallelMesh as Mesh", SALOME::INTERNAL_ERROR );
+    meshServant->SetImpl(myImpl);
+
+    // activate the CORBA servant of Mesh
+    SMESH::SMESH_ParallelMesh_var mesh = SMESH::SMESH_ParallelMesh::_narrow( meshServant->_this() );
+    int nextId = RegisterObject( mesh );
+    MESSAGE( "Add mesh to map with id = "<< nextId);
+
+    return mesh._retn();
+  }
+  catch (SALOME_Exception& S_ex) {
+    THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), SALOME::BAD_PARAM );
+  }
+  return SMESH::SMESH_ParallelMesh::_nil();
+}
+
 //=============================================================================
 /*!
  *  SMESH_Gen_i::GetShapeReader
@@ -634,14 +678,19 @@ void SMESH_Gen_i::SetEmbeddedMode( CORBA::Boolean theMode )
     if (!envNoCatchSignals || !atoi(envNoCatchSignals))
     {
       bool raiseFPE;
-#ifdef _DEBUG_
-      raiseFPE = true;
-      char* envDisableFPE = getenv("DISABLE_FPE");
-      if (envDisableFPE && atoi(envDisableFPE))
+
+      if (SALOME::VerbosityActivated())
+      {
+        raiseFPE = true;
+        char* envDisableFPE = getenv("DISABLE_FPE");
+        if (envDisableFPE && atoi(envDisableFPE))
+          raiseFPE = false;
+      }
+      else
+      {
         raiseFPE = false;
-#else
-      raiseFPE = false;
-#endif
+      }
+
       OSD::SetSignal( raiseFPE );
     }
     // else OSD::SetSignal() is called in GUI
@@ -1193,7 +1242,7 @@ char* SMESH_Gen_i::GetOption(const char* name)
 SMESH::SMESH_Mesh_ptr SMESH_Gen_i::CreateMesh( GEOM::GEOM_Object_ptr theShapeObject )
 {
   Unexpect aCatch(SALOME_SalomeException);
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::CreateMesh" );
+  MESSAGE( "SMESH_Gen_i::CreateMesh(GEOM_Object_ptr)" );
   // create mesh
   SMESH::SMESH_Mesh_var mesh = this->createMesh();
   // set shape
@@ -1216,6 +1265,40 @@ SMESH::SMESH_Mesh_ptr SMESH_Gen_i::CreateMesh( GEOM::GEOM_Object_ptr theShapeObj
   return mesh._retn();
 }
 
+//=============================================================================
+/*!
+ *  SMESH_Gen_i::CreateParallelMesh
+ *
+ *  Create empty parallel mesh on a shape and publish it in the study
+ */
+//=============================================================================
+
+SMESH::SMESH_ParallelMesh_ptr SMESH_Gen_i::CreateParallelMesh( GEOM::GEOM_Object_ptr theShapeObject )
+{
+  Unexpect aCatch(SALOME_SalomeException);
+  MESSAGE( "SMESH_Gen_i::CreateParallelMesh" );
+  // create mesh
+  SMESH::SMESH_ParallelMesh_var mesh = this->createParallelMesh();
+  // set shape
+  SMESH_ParallelMesh_i* meshServant = SMESH::DownCast<SMESH_ParallelMesh_i*>( mesh );
+  ASSERT( meshServant );
+  meshServant->SetShape( theShapeObject );
+
+  // publish mesh in the study
+  if ( CanPublishInStudy( mesh ) ) {
+    SALOMEDS::StudyBuilder_var aStudyBuilder = getStudyServant()->NewBuilder();
+    aStudyBuilder->NewCommand();  // There is a transaction
+    SALOMEDS::SObject_wrap aSO = PublishMesh( mesh.in() );
+    aStudyBuilder->CommitCommand();
+    if ( !aSO->_is_nil() ) {
+      // Update Python script
+      TPythonDump(this) << aSO << " = " << this << ".CreateParallelMesh(" << theShapeObject << ")";
+    }
+  }
+
+  return mesh._retn();
+}
+
 //=============================================================================
 /*!
  *  SMESH_Gen_i::CreateEmptyMesh
@@ -1227,7 +1310,7 @@ SMESH::SMESH_Mesh_ptr SMESH_Gen_i::CreateMesh( GEOM::GEOM_Object_ptr theShapeObj
 SMESH::SMESH_Mesh_ptr SMESH_Gen_i::CreateEmptyMesh()
 {
   Unexpect aCatch(SALOME_SalomeException);
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::CreateMesh" );
+  MESSAGE( "SMESH_Gen_i::CreateEmptyMesh" );
   // create mesh
   SMESH::SMESH_Mesh_var mesh = this->createMesh();
 
@@ -1579,7 +1662,7 @@ CORBA::Boolean SMESH_Gen_i::IsReadyToCompute( SMESH::SMESH_Mesh_ptr theMesh,
                                               GEOM::GEOM_Object_ptr theShapeObject )
 {
   Unexpect aCatch(SALOME_SalomeException);
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::IsReadyToCompute" );
+  MESSAGE( "SMESH_Gen_i::IsReadyToCompute" );
 
   if ( CORBA::is_nil( theShapeObject ) )
     THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference",
@@ -1653,7 +1736,7 @@ SMESH::compute_error_array* SMESH_Gen_i::GetComputeErrors( SMESH::SMESH_Mesh_ptr
                                                            GEOM::GEOM_Object_ptr theSubObject )
 {
   Unexpect aCatch(SALOME_SalomeException);
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::GetComputeErrors()" );
+  MESSAGE( "SMESH_Gen_i::GetComputeErrors()" );
 
   if ( CORBA::is_nil( theSubObject ) && theMesh->HasShapeToMesh())
     THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference", SALOME::BAD_PARAM );
@@ -1727,7 +1810,7 @@ SMESH_Gen_i::GetBadInputElements( SMESH::SMESH_Mesh_ptr theMesh,
                                   CORBA::Short          theSubShapeID )
 {
   Unexpect aCatch(SALOME_SalomeException);
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::GetBadInputElements()" );
+  MESSAGE( "SMESH_Gen_i::GetBadInputElements()" );
 
   if ( CORBA::is_nil( theMesh ) )
     THROW_SALOME_CORBA_EXCEPTION( "bad Mesh reference",SALOME::BAD_PARAM );
@@ -1848,7 +1931,7 @@ SMESH::algo_error_array* SMESH_Gen_i::GetAlgoState( SMESH::SMESH_Mesh_ptr theMes
                                                     GEOM::GEOM_Object_ptr theSubObject )
 {
   Unexpect aCatch(SALOME_SalomeException);
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::GetAlgoState()" );
+  MESSAGE( "SMESH_Gen_i::GetAlgoState()" );
 
   if ( CORBA::is_nil( theSubObject ) && theMesh->HasShapeToMesh())
     THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference", SALOME::BAD_PARAM );
@@ -1909,7 +1992,7 @@ SMESH_Gen_i::GetSubShapesId( GEOM::GEOM_Object_ptr      theMainShapeObject,
                              const SMESH::object_array& theListOfSubShapeObject )
 {
   Unexpect aCatch(SALOME_SalomeException);
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::GetSubShapesId" );
+  MESSAGE( "SMESH_Gen_i::GetSubShapesId" );
 
   SMESH::long_array_var shapesId = new SMESH::long_array;
   set<int> setId;
@@ -1936,19 +2019,19 @@ SMESH_Gen_i::GetSubShapesId( GEOM::GEOM_Object_ptr      theMainShapeObject,
       {
         const TopoDS_Face& F = TopoDS::Face(exp.Current());
         setId.insert(myIndexToShape.FindIndex(F));
-        if(MYDEBUG) SCRUTE(myIndexToShape.FindIndex(F));
+        SCRUTE(myIndexToShape.FindIndex(F));
       }
       for (TopExp_Explorer exp(locShape,TopAbs_EDGE); exp.More(); exp.Next())
       {
         const TopoDS_Edge& E = TopoDS::Edge(exp.Current());
         setId.insert(myIndexToShape.FindIndex(E));
-        if(MYDEBUG) SCRUTE(myIndexToShape.FindIndex(E));
+        SCRUTE(myIndexToShape.FindIndex(E));
       }
       for (TopExp_Explorer exp(locShape,TopAbs_VERTEX); exp.More(); exp.Next())
       {
         const TopoDS_Vertex& V = TopoDS::Vertex(exp.Current());
         setId.insert(myIndexToShape.FindIndex(V));
-        if(MYDEBUG) SCRUTE(myIndexToShape.FindIndex(V));
+        SCRUTE(myIndexToShape.FindIndex(V));
       }
     }
     shapesId->length(setId.size());
@@ -1956,9 +2039,9 @@ SMESH_Gen_i::GetSubShapesId( GEOM::GEOM_Object_ptr      theMainShapeObject,
     int i=0;
     for (iind = setId.begin(); iind != setId.end(); iind++)
     {
-      if(MYDEBUG) SCRUTE((*iind));
+      SCRUTE((*iind));
       shapesId[i] = (*iind);
-      if(MYDEBUG) SCRUTE(shapesId[i]);
+      SCRUTE(shapesId[i]);
       i++;
     }
   }
@@ -1983,7 +2066,7 @@ CORBA::Boolean SMESH_Gen_i::Compute( SMESH::SMESH_Mesh_ptr theMesh,
 {
   //MEMOSTAT;
   Unexpect aCatch(SALOME_SalomeException);
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::Compute" );
+  MESSAGE( "SMESH_Gen_i::Compute" );
 
   if ( CORBA::is_nil( theShapeObject ) && theMesh->HasShapeToMesh())
     THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference",
@@ -1995,7 +2078,9 @@ CORBA::Boolean SMESH_Gen_i::Compute( SMESH::SMESH_Mesh_ptr theMesh,
 
   // Update Python script
   TPythonDump(this) << "isDone = " << this << ".Compute( "
-                << theMesh << ", " << theShapeObject << ")";
+                    << theMesh << ", " << theShapeObject << ")";
+  TPythonDump(this) << this << ".CheckCompute( "
+                    << theMesh << ")";
 
   try {
     // get mesh servant
@@ -2078,7 +2163,7 @@ SMESH::MeshPreviewStruct* SMESH_Gen_i::Precompute( SMESH::SMESH_Mesh_ptr theMesh
                                                    SMESH::long_array&    theShapesId)
 {
   Unexpect aCatch(SALOME_SalomeException);
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::Precompute" );
+  MESSAGE( "SMESH_Gen_i::Precompute" );
 
   if ( CORBA::is_nil( theShapeObject ) && theMesh->HasShapeToMesh())
     THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference",
@@ -2264,7 +2349,7 @@ SMESH::smIdType_array* SMESH_Gen_i::Evaluate(SMESH::SMESH_Mesh_ptr theMesh,
                                              GEOM::GEOM_Object_ptr theShapeObject)
 {
   Unexpect aCatch(SALOME_SalomeException);
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::Evaluate" );
+  MESSAGE( "SMESH_Gen_i::Evaluate" );
 
   if ( CORBA::is_nil( theShapeObject ) && theMesh->HasShapeToMesh())
     THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference", SALOME::BAD_PARAM );
@@ -2613,28 +2698,31 @@ SMESH_Gen_i::ConcatenateCommon(const SMESH::ListOfIDSources& theMeshesArray,
 
     // copy elements
 
-    SMESH::array_of_ElementType_var srcElemTypes = theMeshesArray[i]->GetTypes();
-    if ( srcElemTypes->length() == 1 && srcElemTypes[0] == SMESH::NODE ) // group of nodes
-      continue;
     std::vector< const SMDS_MeshElement* > newElems( initMeshDS->NbElements() + 1, 0 );
-    elemIt = initImpl->GetElements( theMeshesArray[i], SMESH::ALL );
-    while ( elemIt->more() )
+    SMESH::array_of_ElementType_var srcElemTypes = theMeshesArray[i]->GetTypes();
+    bool hasElems = (( srcElemTypes->length() > 1 ) ||
+                     ( srcElemTypes->length() == 1 && srcElemTypes[0] != SMESH::NODE ));
+    if ( hasElems )
     {
-      const SMDS_MeshElement* elem = elemIt->next();
-      elemType.myNodes.resize( elem->NbNodes() );
-
-      SMDS_NodeIteratorPtr itNodes = elem->nodeIterator();
-      for ( int k = 0; itNodes->more(); k++)
+      elemIt = initImpl->GetElements( theMeshesArray[i], SMESH::ALL );
+      while ( elemIt->more() )
       {
-        const SMDS_MeshNode* node = itNodes->next();
-        elemType.myNodes[ k ] = static_cast< const SMDS_MeshNode*> ( newNodes[ node->GetID() ]);
-      }
+        const SMDS_MeshElement* elem = elemIt->next();
+        elemType.myNodes.resize( elem->NbNodes() );
 
-      // creates a corresponding element on existent nodes in new mesh
-      newElems[ elem->GetID() ] =
-        newEditor.AddElement( elemType.myNodes, elemType.Init( elem, /*basicOnly=*/false ));
+        SMDS_NodeIteratorPtr itNodes = elem->nodeIterator();
+        for ( int k = 0; itNodes->more(); k++)
+        {
+          const SMDS_MeshNode* node = itNodes->next();
+          elemType.myNodes[ k ] = static_cast< const SMDS_MeshNode*> ( newNodes[ node->GetID() ]);
+        }
+
+        // creates a corresponding element on existent nodes in new mesh
+        newElems[ elem->GetID() ] =
+          newEditor.AddElement( elemType.myNodes, elemType.Init( elem, /*basicOnly=*/false ));
+      }
+      newEditor.ClearLastCreated(); // forget the history
     }
-    newEditor.ClearLastCreated(); // forget the history
 
 
     // create groups of just added elements
@@ -2799,6 +2887,138 @@ SMESH_Gen_i::ConcatenateCommon(const SMESH::ListOfIDSources& theMeshesArray,
   return newMesh._retn();
 }
 
+
+//================================================================================
+/*!
+ * \brief Create a mesh by copying a part of another mesh
+ *  \param mesh - TetraHedron mesh
+ *  \param meshName Name of the created mesh
+ *  \retval SMESH::SMESH_Mesh_ptr - the new mesh
+ */
+//================================================================================
+
+SMESH::SMESH_Mesh_ptr SMESH_Gen_i::CreateDualMesh(SMESH::SMESH_IDSource_ptr mesh,
+                                                  const char*               meshName,
+                                                  CORBA::Boolean            adapt_to_shape)
+{
+  Unexpect aCatch(SALOME_SalomeException);
+
+  TPythonDump* pyDump = new TPythonDump(this); // prevent dump from CreateMesh()
+  std::unique_ptr<TPythonDump> pyDumpDeleter( pyDump );
+
+  // 1. Get source mesh
+
+  if ( CORBA::is_nil( mesh ))
+    THROW_SALOME_CORBA_EXCEPTION( "bad IDSource", SALOME::BAD_PARAM );
+
+  SMESH::SMESH_Mesh_var srcMesh = mesh->GetMesh();
+  SMESH_Mesh_i*       srcMesh_i = SMESH::DownCast<SMESH_Mesh_i*>( srcMesh );
+  if ( !srcMesh_i )
+    THROW_SALOME_CORBA_EXCEPTION( "bad mesh of IDSource", SALOME::BAD_PARAM );
+
+  CORBA::String_var mesh_var=GetORB()->object_to_string(mesh);
+  std::string mesh_ior = mesh_var.in();
+
+  //temporary folder for the generation of the med file
+  fs::path tmp_folder = fs::temp_directory_path() / fs::unique_path(fs::path("dual_mesh-%%%%"));
+  fs::create_directories(tmp_folder);
+  fs::path dual_mesh_file = tmp_folder / fs::path("tmp_dual_mesh.med");
+  std::string mesh_name(meshName);
+  MESSAGE("Working in folder" + tmp_folder.string());
+
+  // Running Python script
+  assert(Py_IsInitialized());
+  PyGILState_STATE gstate;
+  gstate = PyGILState_Ensure();
+
+
+  std::string ats;
+  if(adapt_to_shape)
+    ats = "True";
+  else
+    ats = "False";
+
+  std::string cmd="import salome.smesh.smesh_tools as smt\n";
+  cmd +="smt.smesh_create_dual_mesh(\"" + mesh_ior + "\", r\"" +
+        dual_mesh_file.string() + "\", mesh_name=\"" + mesh_name + "\", adapt_to_shape=" + ats + ")";
+  MESSAGE(cmd);
+
+  PyObject *py_main = PyImport_AddModule("__main__");
+  PyObject *py_dict = PyModule_GetDict(py_main);
+  PyObject *local_dict = PyDict_New();
+
+  PyRun_String(cmd.c_str(), Py_file_input, py_dict, local_dict);
+
+  if (PyErr_Occurred()) {
+    // Restrieving python error
+    MESSAGE("Catching error");
+    PyObject *errtype, *errvalue, *traceback;
+    PyErr_Fetch(&errtype, &errvalue, &traceback);
+    if(errvalue != NULL) {
+      MESSAGE("Error has a value");
+      PyObject *s = PyObject_Str(errvalue);
+      Py_ssize_t size;
+      std::string msg = PyUnicode_AsUTF8AndSize(s, &size);
+      msg = "Issue with the execution of create_dual_mesh:\n"+msg;
+      MESSAGE("throwing exception");
+      // We need to deactivate the GIL before throwing the exception
+      PyGILState_Release(gstate);
+      THROW_SALOME_CORBA_EXCEPTION(msg.c_str(), SALOME::INTERNAL_ERROR );
+      Py_DECREF(s);
+    }
+    Py_XDECREF(errvalue);
+    Py_XDECREF(errtype);
+    Py_XDECREF(traceback);
+  }
+
+  PyGILState_Release(gstate);
+
+  MESSAGE("Mesh created in " + dual_mesh_file.string());
+
+  // Import created MED
+  SMESH::SMESH_Mesh_var newMesh = CreateMesh(GEOM::GEOM_Object::_nil());
+  SMESH_Mesh_i*       newMesh_i = SMESH::DownCast<SMESH_Mesh_i*>( newMesh );
+  if ( !newMesh_i )
+    THROW_SALOME_CORBA_EXCEPTION( "can't create a mesh", SALOME::INTERNAL_ERROR );
+  SALOMEDS::SObject_wrap meshSO = ObjectToSObject( newMesh );
+  if ( !meshSO->_is_nil() )
+  {
+    SetName( meshSO, meshName, meshName );
+    SetPixMap( meshSO, "ICON_SMESH_TREE_MESH_IMPORTED");
+  }
+  int ret = newMesh_i->ImportMEDFile(dual_mesh_file.string().c_str(), meshName);
+  if(ret)
+    THROW_SALOME_CORBA_EXCEPTION( "Issue when importing mesh", SALOME::INTERNAL_ERROR );
+
+  /*
+  SMESH_Mesh& newMesh2 = newMesh_i->GetImpl();
+
+
+  MESSAGE("Loading file: " << dual_mesh_file.string() << " with mesh " << meshName);
+  int ret = newMesh2.MEDToMesh(dual_mesh_file.c_str(), meshName);
+    */
+
+  newMesh_i->GetImpl().GetMeshDS()->Modified();
+
+  *pyDump << newMesh << " = " << this
+          << ".CreateDualMesh("
+          << mesh << ", "
+          << "'" << mesh_name << "', "
+          << ats << ") ";
+
+  pyDumpDeleter.reset(); // allow dump in GetGroups()
+
+  if ( srcMesh_i->GetImpl().GetGroupIds().size() > 0 ) // dump created groups
+    MESSAGE("Dump of groups");
+    SMESH::ListOfGroups_var groups = newMesh->GetGroups();
+
+#ifndef _DEBUG_
+  fs::remove_all(tmp_folder);
+#endif
+
+  return newMesh._retn();
+}
+
 //================================================================================
 /*!
  * \brief Create a mesh by copying a part of another mesh
@@ -5084,7 +5304,7 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent,
 SALOMEDS::TMPFile* SMESH_Gen_i::SaveASCII( SALOMEDS::SComponent_ptr theComponent,
                                            const char*              theURL,
                                            bool                     isMultiFile ) {
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::SaveASCII" );
+  MESSAGE( "SMESH_Gen_i::SaveASCII" );
   SALOMEDS::TMPFile_var aStreamFile = Save( theComponent, theURL, isMultiFile );
   return aStreamFile._retn();
 
@@ -5224,7 +5444,7 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent,
               size = aDataset->GetSize();
               char* libname_str = new char[ size ];
               aDataset->ReadFromDisk( libname_str );
-              if(MYDEBUG) SCRUTE( libname_str );
+              SCRUTE( libname_str );
               libname = string( libname_str );
               delete [] libname_str;
               aDataset->CloseOnDisk();
@@ -5246,7 +5466,7 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent,
 
           // --> restore hypothesis from data
           if ( id > 0 && !hypname.empty()/* && !hypdata.empty()*/ ) { // VSR : persistent data can be empty
-            if(MYDEBUG) MESSAGE("VSR - load hypothesis : id = " << id <<
+            MESSAGE("VSR - load hypothesis : id = " << id <<
                                 ", name = " << hypname.c_str() << ", persistent string = " << hypdata.c_str());
             SMESH::SMESH_Hypothesis_var myHyp;
 
@@ -5266,7 +5486,7 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent,
               myStudyContext->mapOldToNew( id, newId );
             }
             else
-              if(MYDEBUG) MESSAGE( "VSR - SMESH_Gen::Load - can't get servant" );
+              MESSAGE( "VSR - SMESH_Gen::Load - can't get servant" );
           }
         }
       }
@@ -5323,7 +5543,7 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent,
               size = aDataset->GetSize();
               char* libname_str = new char[ size ];
               aDataset->ReadFromDisk( libname_str );
-              if(MYDEBUG) SCRUTE( libname_str );
+              SCRUTE( libname_str );
               libname = string( libname_str );
               delete [] libname_str;
               aDataset->CloseOnDisk();
@@ -5335,7 +5555,7 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent,
               size = aDataset->GetSize();
               char* hypdata_str = new char[ size ];
               aDataset->ReadFromDisk( hypdata_str );
-              if(MYDEBUG) SCRUTE( hypdata_str );
+              SCRUTE( hypdata_str );
               hypdata = string( hypdata_str );
               delete [] hypdata_str;
               aDataset->CloseOnDisk();
@@ -5346,7 +5566,7 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent,
 
           // --> restore algorithm from data
           if ( id > 0 && !hypname.empty()/* && !hypdata.empty()*/ ) { // VSR : persistent data can be empty
-            if(MYDEBUG) MESSAGE("VSR - load algo : id = " << id <<
+            MESSAGE("VSR - load algo : id = " << id <<
                                 ", name = " << hypname.c_str() << ", persistent string = " << hypdata.c_str());
             SMESH::SMESH_Hypothesis_var myHyp;
 
@@ -5370,7 +5590,7 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent,
               myStudyContext->mapOldToNew( id, newId );
             }
             else
-              if(MYDEBUG) MESSAGE( "VSR - SMESH_Gen::Load - can't get servant" );
+              MESSAGE( "VSR - SMESH_Gen::Load - can't get servant" );
           }
         }
       }
@@ -5399,7 +5619,7 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent,
         int aNbObjects = aTopGroup->nInternalObjects();
         if ( aNbObjects > 0 ) {
           // create mesh
-          if(MYDEBUG) MESSAGE( "VSR - load mesh : id = " << id );
+          MESSAGE( "VSR - load mesh : id = " << id );
           SMESH::SMESH_Mesh_var myNewMesh = this->createMesh();
           SMESH_Mesh_i* myNewMeshImpl = dynamic_cast<SMESH_Mesh_i*>( GetServant( myNewMesh ).in() );
           if ( !myNewMeshImpl )
@@ -5535,7 +5755,7 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent,
         aGroup->OpenOnDisk();
         // get number of applied algorithms
         int aNbSubObjects = aGroup->nInternalObjects();
-        if(MYDEBUG) MESSAGE( "VSR - number of applied algos " << aNbSubObjects );
+        MESSAGE( "VSR - number of applied algos " << aNbSubObjects );
         for ( int j = 0; j < aNbSubObjects; j++ ) {
           char name_dataset[ HDF_NAME_MAX_LEN+1 ];
           aGroup->InternalObjectIndentify( j, name_dataset );
@@ -6038,7 +6258,7 @@ bool SMESH_Gen_i::LoadASCII( SALOMEDS::SComponent_ptr theComponent,
                              const SALOMEDS::TMPFile& theStream,
                              const char*              theURL,
                              bool                     isMultiFile ) {
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::LoadASCII" );
+  MESSAGE( "SMESH_Gen_i::LoadASCII" );
   return Load( theComponent, theStream, theURL, isMultiFile );
 
   //before call main ::Load method it's need for decipher text format to
@@ -6075,7 +6295,7 @@ bool SMESH_Gen_i::LoadASCII( SALOMEDS::SComponent_ptr theComponent,
 
 void SMESH_Gen_i::Close( SALOMEDS::SComponent_ptr theComponent )
 {
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::Close" );
+  MESSAGE( "SMESH_Gen_i::Close" );
 
   // Clear study contexts data
   myStudyContext->Clear();
@@ -6099,7 +6319,7 @@ void SMESH_Gen_i::Close( SALOMEDS::SComponent_ptr theComponent )
 
 char* SMESH_Gen_i::ComponentDataType()
 {
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::ComponentDataType" );
+  MESSAGE( "SMESH_Gen_i::ComponentDataType" );
   return CORBA::string_dup( "SMESH" );
 }
 
@@ -6117,12 +6337,12 @@ char* SMESH_Gen_i::IORToLocalPersistentID( SALOMEDS::SObject_ptr /*theSObject*/,
                                            CORBA::Boolean        /*isMultiFile*/,
                                            CORBA::Boolean        /*isASCII*/ )
 {
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::IORToLocalPersistentID" );
+  MESSAGE( "SMESH_Gen_i::IORToLocalPersistentID" );
 
   if ( myStudyContext && strcmp( IORString, "" ) != 0 ) {
     int anId = myStudyContext->findId( IORString );
     if ( anId ) {
-      if(MYDEBUG) MESSAGE( "VSR " << anId )
+      MESSAGE( "VSR " << anId );
       char strId[ 20 ];
       sprintf( strId, "%d", anId );
       return  CORBA::string_dup( strId );
@@ -6144,7 +6364,7 @@ char* SMESH_Gen_i::LocalPersistentIDToIOR( SALOMEDS::SObject_ptr /*theSObject*/,
                                            CORBA::Boolean        /*isMultiFile*/,
                                            CORBA::Boolean        /*isASCII*/ )
 {
-  if(MYDEBUG) MESSAGE( "SMESH_Gen_i::LocalPersistentIDToIOR(): id = " << aLocalPersistentID );
+  MESSAGE( "SMESH_Gen_i::LocalPersistentIDToIOR(): id = " << aLocalPersistentID );
 
   if ( myStudyContext && strcmp( aLocalPersistentID, "" ) != 0 ) {
     int anId = atoi( aLocalPersistentID );
@@ -6179,7 +6399,7 @@ CORBA::Long  SMESH_Gen_i::GetObjectId(CORBA::Object_ptr theObject)
 {
   if ( myStudyContext && !CORBA::is_nil( theObject )) {
     CORBA::String_var iorString = GetORB()->object_to_string( theObject );
-    string iorStringCpp(iorString.in()); 
+    string iorStringCpp(iorString.in());
     return myStudyContext->findId( iorStringCpp );
   }
   return 0;
@@ -6254,46 +6474,6 @@ void SMESH_Gen_i::Move( const SMESH::sobject_list& what,
       useCaseBuilder->AppendTo( where, sobj );        // append to the end of list
   }
 }
-//================================================================================
-/*!
- * \brief Returns true if algorithm can be used to mesh a given geometry
- *  \param [in] theAlgoType - the algorithm type
- *  \param [in] theLibName - a name of the Plug-in library implementing the algorithm
- *  \param [in] theGeomObject - the geometry to mesh
- *  \param [in] toCheckAll - if \c True, returns \c True if all shapes are meshable,
- *         else, returns \c True if at least one shape is meshable
- *  \return CORBA::Boolean - can or can't
- */
-//================================================================================
-
-CORBA::Boolean SMESH_Gen_i::IsApplicable ( const char*           theAlgoType,
-                                           const char*           theLibName,
-                                           GEOM::GEOM_Object_ptr theGeomObject,
-                                           CORBA::Boolean        toCheckAll)
-{
-  SMESH_TRY;
-
-  std::string aPlatformLibName;
-  GenericHypothesisCreator_i* aCreator =
-    getHypothesisCreator(theAlgoType, theLibName, aPlatformLibName);
-  if (aCreator)
-  {
-    TopoDS_Shape shape = GeomObjectToShape( theGeomObject );
-    const SMESH_Algo::Features& feat = SMESH_Algo::GetFeatures( theAlgoType );
-    return shape.IsNull() || aCreator->IsApplicable( shape, toCheckAll, feat._dim );
-  }
-  else
-  {
-    return false;
-  }
-
-  SMESH_CATCH( SMESH::doNothing );
-
-#ifdef _DEBUG_
-  cout << "SMESH_Gen_i::IsApplicable(): exception in " << ( theAlgoType ? theAlgoType : "") << endl;
-#endif
-  return true;
-}
 
 //================================================================================
 /*!
@@ -6509,3 +6689,45 @@ std::vector<long> SMESH_Gen_i::_GetInside( SMESH::SMESH_IDSource_ptr meshPart,
   }
   return res;
 }
+
+//================================================================================
+/*!
+ * \brief Returns true if algorithm can be used to mesh a given geometry
+ *  \param [in] theAlgoType - the algorithm type
+ *  \param [in] theLibName - a name of the Plug-in library implementing the algorithm
+ *  \param [in] theGeomObject - the geometry to mesh
+ *  \param [in] toCheckAll - if \c True, returns \c True if all shapes are meshable,
+ *         else, returns \c True if at least one shape is meshable
+ *  \return CORBA::Boolean - can or can't
+ */
+//================================================================================
+
+#undef SMY_OWN_CATCH
+#define SMY_OWN_CATCH // prevent re-throwing SALOME::SALOME_Exception in IsApplicable()
+
+CORBA::Boolean SMESH_Gen_i::IsApplicable ( const char*           theAlgoType,
+                                           const char*           theLibName,
+                                           GEOM::GEOM_Object_ptr theGeomObject,
+                                           CORBA::Boolean        toCheckAll)
+{
+  SMESH_TRY;
+
+  std::string aPlatformLibName;
+  GenericHypothesisCreator_i* aCreator =
+    getHypothesisCreator(theAlgoType, theLibName, aPlatformLibName);
+  if (aCreator)
+  {
+    TopoDS_Shape shape = GeomObjectToShape( theGeomObject );
+    const SMESH_Algo::Features& feat = SMESH_Algo::GetFeatures( theAlgoType );
+    return shape.IsNull() || aCreator->IsApplicable( shape, toCheckAll, feat._dim );
+  }
+  else
+  {
+    return false;
+  }
+
+  SMESH_CATCH( SMESH::doNothing );
+
+  MESSAGE("SMESH_Gen_i::IsApplicable(): exception in " << ( theAlgoType ? theAlgoType : ""));
+  return true;
+}
index 9caaa543c5cc1724d1a61eea91fde778a9f30346..ce5e28973d288b90b68891e5ef38c51caab76a74 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -231,6 +231,9 @@ public:
   // Create empty mesh on a shape
   SMESH::SMESH_Mesh_ptr CreateMesh( GEOM::GEOM_Object_ptr theShapeObject );
 
+  // Create empty parallel mesh on a shape
+  SMESH::SMESH_ParallelMesh_ptr CreateParallelMesh( GEOM::GEOM_Object_ptr theShapeObject );
+
   // Create empty mesh
   SMESH::SMESH_Mesh_ptr CreateEmptyMesh();
 
@@ -253,6 +256,11 @@ public:
                                              CORBA::Boolean          theMakeRequiredGroups,
                                              SMESH::ComputeError_out theError);
 
+  // Create dual mesh of a tetrahedron mesh
+  SMESH::SMESH_Mesh_ptr CreateDualMesh(SMESH::SMESH_IDSource_ptr meshPart,
+                                       const char*               meshName,
+                                       CORBA::Boolean            adapt_to_shape);
+
   // Copy a part of mesh
   SMESH::SMESH_Mesh_ptr CopyMesh(SMESH::SMESH_IDSource_ptr meshPart,
                                  const char*               meshName,
@@ -477,8 +485,10 @@ public:
   int CountInPyDump(const TCollection_AsciiString& text);
 
   SMESH::MG_ADAPT_ptr CreateMG_ADAPT();
+  SMESHHOMARD::HOMARD_Gen_ptr CreateHOMARD_ADAPT();
   SMESH::MG_ADAPT_ptr CreateAdaptationHypothesis();
-  SMESH::MG_ADAPT_OBJECT_ptr Adaptation( const char* adaptationType);
+  //SMESH::MG_ADAPT_OBJECT_ptr Adaptation( const char* adaptationType);
+  SALOME::GenericObj_ptr Adaptation( const char* adaptationType);
 
   // *****************************************
   // Internal methods
@@ -625,6 +635,7 @@ private:
                                                 const char* theLibName);
   // Create empty mesh on shape
   SMESH::SMESH_Mesh_ptr createMesh();
+  SMESH::SMESH_ParallelMesh_ptr createParallelMesh();
 
   // Check mesh icon
   bool isGeomModifIcon( SMESH::SMESH_Mesh_ptr mesh );
index e4e3f5e8595156f0a0439f9ba70e497731fc8300..0d2ff3d6f633ffd8b348a75dfb729c566f4a6770 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 
 #include <cctype>
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
-
 using namespace std;
 
 //=============================================================================
@@ -162,7 +156,7 @@ long SMESH_Gen_i::GetBallElementsGroupsTag()
 
 bool SMESH_Gen_i::CanPublishInStudy(CORBA::Object_ptr theIOR)
 {
-  if(MYDEBUG) MESSAGE("CanPublishInStudy - "<<!CORBA::is_nil(getStudyServant()));
+  MESSAGE("CanPublishInStudy - "<<!CORBA::is_nil(getStudyServant()));
   
   if ( !myIsEnablePublish )
     return false;
@@ -183,7 +177,7 @@ bool SMESH_Gen_i::CanPublishInStudy(CORBA::Object_ptr theIOR)
   if( !aGroup->_is_nil() )
     return true;
 
-  if(MYDEBUG) MESSAGE("CanPublishInStudy--CANT");
+  MESSAGE("CanPublishInStudy--CANT");
   return false;
 }
 
@@ -282,10 +276,10 @@ GEOM::GEOM_Object_ptr SMESH_Gen_i::GetGeomObjectByEntry( const std::string& entr
 //=======================================================================
 
 SALOMEDS::SObject_ptr SMESH_Gen_i::publish(CORBA::Object_ptr     theIOR,
-                                     SALOMEDS::SObject_ptr theFatherObject,
-                                     const int             theTag,
-                                     const char*           thePixMap,
-                                     const bool            theSelectable)
+                                           SALOMEDS::SObject_ptr theFatherObject,
+                                           const int             theTag,
+                                           const char*           thePixMap,
+                                           const bool            theSelectable)
 {
   SALOMEDS::Study_var theStudy = getStudyServant();
   SALOMEDS::SObject_wrap SO = ObjectToSObject( theIOR );
@@ -501,7 +495,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishInStudy(SALOMEDS::SObject_ptr /*theSOb
     return aSO._retn();
   if ( CORBA::is_nil( theIOR ))
     return aSO._retn();
-  if(MYDEBUG) MESSAGE("PublishInStudy");
+  MESSAGE("PublishInStudy");
 
   // Publishing a mesh
   SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_narrow( theIOR );
@@ -528,7 +522,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishInStudy(SALOMEDS::SObject_ptr /*theSOb
     aMesh = aGroup->GetMesh();
     aSO = PublishGroup( aMesh, aGroup, aShapeObject, theName );
   }
-  if(MYDEBUG) MESSAGE("PublishInStudy_END");
+  MESSAGE("PublishInStudy_END");
 
   return aSO._retn();
 }
@@ -540,7 +534,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishInStudy(SALOMEDS::SObject_ptr /*theSOb
 
 SALOMEDS::SComponent_ptr SMESH_Gen_i::PublishComponent()
 {
-  if(MYDEBUG) MESSAGE("PublishComponent");
+  MESSAGE("PublishComponent");
   if ( !myIsEnablePublish )
     return SALOMEDS::SComponent::_nil();
 
@@ -602,7 +596,7 @@ SALOMEDS::SComponent_ptr SMESH_Gen_i::PublishComponent()
   // (to support tree representation customization and drag-n-drop)
   useCaseBuilder->SetRootCurrent();
   useCaseBuilder->Append( father ); // component object is added as the top level item
-  if(MYDEBUG) MESSAGE("PublishComponent--END");
+  MESSAGE("PublishComponent--END");
 
   return father._retn();
 }
@@ -619,7 +613,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishMesh (SMESH::SMESH_Mesh_ptr theMesh,
     return SALOMEDS::SObject::_nil();
   if ( CORBA::is_nil( theMesh ))
     return SALOMEDS::SObject::_nil();
-  if(MYDEBUG) MESSAGE("PublishMesh--IN");
+  MESSAGE("PublishMesh--IN");
 
   // find or publish a mesh
 
@@ -690,7 +684,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishMesh (SMESH::SMESH_Mesh_ptr theMesh,
     }
   }
 
-  if(MYDEBUG) MESSAGE("PublishMesh_END");
+  MESSAGE("PublishMesh_END");
   return aMeshSO._retn();
 }
 
@@ -900,7 +894,7 @@ SALOMEDS::SObject_ptr
 SMESH_Gen_i::PublishHypothesis (SMESH::SMESH_Hypothesis_ptr theHyp,
                                 const char*                 theName)
 {
-  if(MYDEBUG) MESSAGE("PublishHypothesis");
+  MESSAGE("PublishHypothesis");
   if ( !myIsEnablePublish )
     return SALOMEDS::SObject::_nil();
   if (theHyp->_is_nil())
@@ -935,7 +929,7 @@ SMESH_Gen_i::PublishHypothesis (SMESH::SMESH_Hypothesis_ptr theHyp,
 
   SetName( aHypSO, theName, hypType.in() );
 
-  if(MYDEBUG) MESSAGE("PublishHypothesis--END")
+  MESSAGE("PublishHypothesis--END");
   return aHypSO._retn();
 }
 
@@ -1097,7 +1091,7 @@ SALOMEDS::SObject_ptr
 SMESH_Gen_i::GetMeshOrSubmeshByShape (SMESH::SMESH_Mesh_ptr theMesh,
                                       GEOM::GEOM_Object_ptr theShape)
 {
-  if(MYDEBUG) MESSAGE("GetMeshOrSubmeshByShape")
+  MESSAGE("GetMeshOrSubmeshByShape");
   SALOMEDS::SObject_wrap aMeshOrSubMesh;
   if (theMesh->_is_nil() || ( theShape->_is_nil() && theMesh->HasShapeToMesh()))
     return aMeshOrSubMesh._retn();
@@ -1121,7 +1115,7 @@ SMESH_Gen_i::GetMeshOrSubmeshByShape (SMESH::SMESH_Mesh_ptr theMesh,
         aMeshOrSubMesh = ObjectToSObject( aSubMesh );
     }
   }
-  if(MYDEBUG) MESSAGE("GetMeshOrSubmeshByShape--END")
+  MESSAGE("GetMeshOrSubmeshByShape--END");
   return aMeshOrSubMesh._retn();
 }
 
@@ -1134,7 +1128,7 @@ bool SMESH_Gen_i::AddHypothesisToShape(SMESH::SMESH_Mesh_ptr       theMesh,
                                        GEOM::GEOM_Object_ptr       theShape,
                                        SMESH::SMESH_Hypothesis_ptr theHyp)
 {
-  if(MYDEBUG) MESSAGE("AddHypothesisToShape")
+  MESSAGE("AddHypothesisToShape");
   if (theMesh->_is_nil() ||
       theHyp->_is_nil() || (theShape->_is_nil()
                             && theMesh->HasShapeToMesh()) )
@@ -1175,7 +1169,7 @@ bool SMESH_Gen_i::AddHypothesisToShape(SMESH::SMESH_Mesh_ptr       theMesh,
 
   addReference( AHR, theHyp );
 
-  if(MYDEBUG) MESSAGE("AddHypothesisToShape--END")
+  MESSAGE("AddHypothesisToShape--END");
   return true;
 }
 
index 1ee929550486579ee213b59ce800cc189ba39b91..ddc625907d15db26e683a696a317519ef81dec4d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a0f54c3b50898eea15bcdc86a6335691531c2e38..bea575605986455f7b4e9270b49e10845e1ede96 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/src/SMESH_I/SMESH_Homard_i.cxx b/src/SMESH_I/SMESH_Homard_i.cxx
new file mode 100644 (file)
index 0000000..293507c
--- /dev/null
@@ -0,0 +1,2848 @@
+// Copyright (C) 2011-2024  CEA, EDF
+//
+// 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 "SMESH_Homard_i.hxx"
+#include "SMESH_Homard.hxx"
+
+#include "SMESH_Gen_i.hxx"
+#include "SMESH_PythonDump.hxx"
+
+#include "SMESH_File.hxx"
+
+#include "utilities.h"
+#include "Basics_Utils.hxx"
+#include "Basics_DirUtils.hxx"
+#include "Utils_SINGLETON.hxx"
+#include "Utils_CorbaException.hxx"
+#include "SALOMEDS_Tool.hxx"
+#include "SALOME_LifeCycleCORBA.hxx"
+#include "SALOMEconfig.h"
+
+// Have to be included before std headers
+#include <Python.h>
+#include <structmember.h>
+
+#include <vector>
+#include <cmath>
+#include <cstdlib>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <algorithm>
+
+#include <med.h>
+
+#ifdef WIN32
+#include <direct.h>
+#else
+#include <dirent.h>
+#endif
+
+#include <string>
+#include <cstring>
+#include <iostream>
+#include <fstream>
+#include <iomanip>
+#include <set>
+#include <vector>
+#include <stdio.h>
+
+// C'est le ASSERT de SALOMELocalTrace/utilities.h dans KERNEL
+#ifndef VERIFICATION
+#define VERIFICATION(condition) \
+        if (!(condition)){INTERRUPTION("CONDITION "<<#condition<<" NOT VERIFIED")}
+#endif /* VERIFICATION */
+
+// La gestion des repertoires
+#ifndef CHDIR
+  #ifdef WIN32
+    #define CHDIR _chdir
+  #else
+    #define CHDIR chdir
+  #endif
+#endif
+
+using namespace std;
+
+SMESHHOMARD::HOMARD_Gen_ptr SMESH_Gen_i::CreateHOMARD_ADAPT()
+{
+  if (getenv("HOMARD_ROOT_DIR") == NULL) {
+    THROW_SALOME_CORBA_EXCEPTION("HOMARD_ROOT_DIR is not defined", SALOME::INTERNAL_ERROR);
+  }
+  else {
+    std::string homard_exec = getenv("HOMARD_ROOT_DIR");
+    homard_exec += "/bin/salome/homard";
+    if (!SMESH_File(homard_exec).exists())
+      THROW_SALOME_CORBA_EXCEPTION("HOMARD module is not built", SALOME::INTERNAL_ERROR);
+  }
+  SMESHHOMARD_I::HOMARD_Gen_i* aHomardGen = new SMESHHOMARD_I::HOMARD_Gen_i();
+  SMESHHOMARD::HOMARD_Gen_var anObj = aHomardGen->_this();
+  return anObj._retn();
+}
+
+namespace SMESHHOMARD_I
+{
+
+//=============================================================================
+/*!
+ *  standard constructor
+ */
+//=============================================================================
+HOMARD_Boundary_i::HOMARD_Boundary_i()
+  : SALOME::GenericObj_i(SMESH_Gen_i::GetPOA())
+{
+  MESSAGE("Default constructor, not for use");
+  ASSERT(0);
+}
+//=============================================================================
+/*!
+ *  standard constructor
+ */
+//=============================================================================
+HOMARD_Boundary_i::HOMARD_Boundary_i(SMESHHOMARD::HOMARD_Gen_var engine)
+  : SALOME::GenericObj_i(SMESH_Gen_i::GetPOA())
+{
+  MESSAGE("HOMARD_Boundary_i");
+  _gen_i = engine;
+  myHomardBoundary = new SMESHHOMARDImpl::HOMARD_Boundary();
+  ASSERT(myHomardBoundary);
+}
+//=============================================================================
+/*!
+ *  standard destructor
+ */
+//=============================================================================
+HOMARD_Boundary_i::~HOMARD_Boundary_i()
+{
+}
+//=============================================================================
+//=============================================================================
+// Generalites
+//=============================================================================
+//=============================================================================
+void HOMARD_Boundary_i::SetName(const char* Name)
+{
+  ASSERT(myHomardBoundary);
+  myHomardBoundary->SetName(Name);
+}
+//=============================================================================
+char* HOMARD_Boundary_i::GetName()
+{
+  ASSERT(myHomardBoundary);
+  return CORBA::string_dup(myHomardBoundary->GetName().c_str());
+}
+//=============================================================================
+char* HOMARD_Boundary_i::GetDumpPython()
+{
+  ASSERT(myHomardBoundary);
+  return CORBA::string_dup(myHomardBoundary->GetDumpPython().c_str());
+}
+//=============================================================================
+//=============================================================================
+// Caracteristiques
+//=============================================================================
+//=============================================================================
+void HOMARD_Boundary_i::SetType(CORBA::Long Type)
+{
+  ASSERT(myHomardBoundary);
+  myHomardBoundary->SetType(Type);
+}
+//=============================================================================
+CORBA::Long HOMARD_Boundary_i::GetType()
+{
+  ASSERT(myHomardBoundary);
+  return  CORBA::Long(myHomardBoundary->GetType());
+}
+//=============================================================================
+void HOMARD_Boundary_i::SetMeshName(const char* MeshName)
+{
+  ASSERT(myHomardBoundary);
+  myHomardBoundary->SetMeshName(MeshName);
+}
+//=============================================================================
+char* HOMARD_Boundary_i::GetMeshName()
+{
+  ASSERT(myHomardBoundary);
+  return CORBA::string_dup(myHomardBoundary->GetMeshName().c_str());
+}
+//=============================================================================
+void HOMARD_Boundary_i::SetDataFile(const char* DataFile)
+{
+  ASSERT(myHomardBoundary);
+  myHomardBoundary->SetDataFile(DataFile);
+}
+//=============================================================================
+char* HOMARD_Boundary_i::GetDataFile()
+{
+  ASSERT(myHomardBoundary);
+  return CORBA::string_dup(myHomardBoundary->GetDataFile().c_str());
+}
+//=============================================================================
+void HOMARD_Boundary_i::SetCylinder(double X0, double X1, double X2, double X3, double X4, double X5, double X6)
+{
+  ASSERT(myHomardBoundary);
+  myHomardBoundary->SetCylinder(X0, X1, X2, X3, X4, X5, X6);
+}
+//=============================================================================
+void HOMARD_Boundary_i::SetSphere(double Xcentre, double Ycentre, double ZCentre, double rayon)
+{
+  ASSERT(myHomardBoundary);
+  myHomardBoundary->SetSphere(Xcentre, Ycentre, ZCentre, rayon);
+}
+//=============================================================================
+void HOMARD_Boundary_i::SetConeR(double Xcentre1, double Ycentre1, double Zcentre1, double Rayon1, double Xcentre2, double Ycentre2, double Zcentre2, double Rayon2)
+{
+  ASSERT(myHomardBoundary);
+  myHomardBoundary->SetConeR(Xcentre1, Ycentre1, Zcentre1, Rayon1, Xcentre2, Ycentre2, Zcentre2, Rayon2);
+}
+//=============================================================================
+void HOMARD_Boundary_i::SetConeA(double Xaxe, double Yaxe, double Zaxe, double Angle, double Xcentre, double Ycentre, double Zcentre)
+{
+  ASSERT(myHomardBoundary);
+  myHomardBoundary->SetConeA(Xaxe, Yaxe, Zaxe, Angle, Xcentre, Ycentre, Zcentre);
+}
+//=============================================================================
+void HOMARD_Boundary_i::SetTorus(double X0, double X1, double X2, double X3, double X4, double X5, double X6, double X7)
+{
+  ASSERT(myHomardBoundary);
+  myHomardBoundary->SetTorus(X0, X1, X2, X3, X4, X5, X6, X7);
+}
+//=============================================================================
+SMESHHOMARD::double_array* HOMARD_Boundary_i::GetCoords()
+{
+  ASSERT(myHomardBoundary);
+  SMESHHOMARD::double_array_var aResult = new SMESHHOMARD::double_array();
+  std::vector<double> mesCoor = myHomardBoundary->GetCoords();
+  aResult->length(mesCoor .size());
+  std::vector<double>::const_iterator it;
+  int i = 0;
+  for (it = mesCoor.begin(); it != mesCoor.end(); it++)
+    aResult[i++] = (*it);
+  return aResult._retn();
+}
+//=============================================================================
+void HOMARD_Boundary_i::SetLimit(double Xincr, double Yincr, double Zincr)
+{
+  ASSERT(myHomardBoundary);
+  myHomardBoundary->SetLimit(Xincr, Yincr, Zincr);
+}
+//=============================================================================
+SMESHHOMARD::double_array* HOMARD_Boundary_i::GetLimit()
+{
+  ASSERT(myHomardBoundary);
+  SMESHHOMARD::double_array_var aResult = new SMESHHOMARD::double_array();
+  std::vector<double> mesCoor = myHomardBoundary->GetLimit();
+  aResult->length(mesCoor .size());
+  std::vector<double>::const_iterator it;
+  int i = 0;
+  for (it = mesCoor.begin(); it != mesCoor.end(); it++)
+    aResult[i++] = (*it);
+  return aResult._retn();
+}
+//=============================================================================
+void HOMARD_Boundary_i::AddGroup(const char* Group)
+{
+  ASSERT(myHomardBoundary);
+  myHomardBoundary->AddGroup(Group);
+}
+//=============================================================================
+void HOMARD_Boundary_i::SetGroups(const SMESHHOMARD::ListGroupType& ListGroup)
+{
+  ASSERT(myHomardBoundary);
+  std::list<std::string> ListString;
+  for (unsigned int i = 0; i < ListGroup.length(); i++) {
+    ListString.push_back(std::string(ListGroup[i]));
+  }
+  myHomardBoundary->SetGroups(ListString);
+}
+//=============================================================================
+SMESHHOMARD::ListGroupType*  HOMARD_Boundary_i::GetGroups()
+{
+  ASSERT(myHomardBoundary);
+  const std::list<std::string>& ListString = myHomardBoundary->GetGroups();
+  SMESHHOMARD::ListGroupType_var aResult = new SMESHHOMARD::ListGroupType;
+  aResult->length(ListString.size());
+  std::list<std::string>::const_iterator it;
+  int i = 0;
+  for (it = ListString.begin(); it != ListString.end(); it++)
+  {
+    aResult[i++] = CORBA::string_dup((*it).c_str());
+  }
+  return aResult._retn();
+}
+
+//=============================================================================
+/*!
+ *  standard constructor
+ */
+//=============================================================================
+HOMARD_Cas_i::HOMARD_Cas_i()
+  : SALOME::GenericObj_i(SMESH_Gen_i::GetPOA())
+{
+  MESSAGE("Default constructor, not for use");
+  ASSERT(0);
+}
+
+//=============================================================================
+/*!
+ *  standard constructor
+ */
+//=============================================================================
+HOMARD_Cas_i::HOMARD_Cas_i(SMESHHOMARD::HOMARD_Gen_var engine)
+  : SALOME::GenericObj_i(SMESH_Gen_i::GetPOA())
+{
+  MESSAGE("HOMARD_Cas_i");
+  _gen_i = engine;
+  myHomardCas = new SMESHHOMARDImpl::HOMARD_Cas();
+  ASSERT(myHomardCas);
+}
+
+//=============================================================================
+/*!
+ *  standard destructor
+ */
+//=============================================================================
+HOMARD_Cas_i::~HOMARD_Cas_i()
+{
+}
+//=============================================================================
+char* HOMARD_Cas_i::GetDumpPython()
+{
+  ASSERT(myHomardCas);
+  return CORBA::string_dup(myHomardCas->GetDumpPython().c_str());
+}
+//=============================================================================
+//=============================================================================
+// Caracteristiques
+//=============================================================================
+//=============================================================================
+void HOMARD_Cas_i::SetDirName(const char* NomDir)
+{
+  ASSERT(myHomardCas);
+  int codret;
+  // A. recuperation du nom; on ne fait rien si c'est le meme
+  char* oldrep = GetDirName();
+  if (strcmp(oldrep,NomDir) == 0) return;
+  MESSAGE ("SetDirName : passage de oldrep = "<< oldrep << " a NomDir = "<<NomDir);
+  // C. Changement/creation du repertoire
+  codret = myHomardCas->SetDirName(NomDir);
+  if (codret != 0) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    std::string text;
+    if (codret == 1)
+      text = "The directory for the case cannot be modified because some iterations are already defined.";
+    else
+      text = "The directory for the case cannot be reached.";
+    es.text = CORBA::string_dup(text.c_str());
+    throw SALOME::SALOME_Exception(es);
+  }
+
+  // D. En cas de reprise, deplacement du point de depart
+  HOMARD_Gen_i* aGenImpl = SMESH::DownCast<HOMARD_Gen_i*>(_gen_i);
+  HOMARD_Iteration_i* Iter0 = aGenImpl->GetIteration(0);
+  int state = Iter0->GetNumber();
+  if (state != 0) { // GetState()
+    MESSAGE ("etat : " << state);
+    // D.1. Nom local du repertoire de l'iteration de depart dans le repertoire actuel du cas
+    char* DirNameIter = Iter0->GetDirNameLoc();
+    MESSAGE ("SetDirName : nom actuel pour le repertoire de l iteration, DirNameIter = "<< DirNameIter);
+    // D.2. Recherche d'un nom local pour l'iteration de depart dans le futur repertoire du cas
+    char* nomDirIter = aGenImpl->CreateDirNameIter(NomDir, 0);
+    MESSAGE ("SetDirName : nom futur pour le repertoire de l iteration, nomDirIter = "<< nomDirIter);
+    // D.3. Creation du futur repertoire local pour l'iteration de depart
+    std::string nomDirIterTotal;
+    nomDirIterTotal = std::string(NomDir) + "/" + std::string(nomDirIter);
+#ifndef WIN32
+    if (mkdir(nomDirIterTotal.c_str(), S_IRWXU|S_IRGRP|S_IXGRP) != 0)
+#else
+    if (_mkdir(nomDirIterTotal.c_str()) != 0)
+#endif
+    {
+      MESSAGE ("nomDirIterTotal : " << nomDirIterTotal);
+      SALOME::ExceptionStruct es;
+      es.type = SALOME::BAD_PARAM;
+      std::string text = "The directory for the starting iteration cannot be created.";
+      es.text = CORBA::string_dup(text.c_str());
+      throw SALOME::SALOME_Exception(es);
+    }
+    // D.4. Deplacement du contenu du repertoire
+    std::string oldnomDirIterTotal;
+    oldnomDirIterTotal = std::string(oldrep) + "/" + std::string(DirNameIter);
+    std::string commande = "mv " + std::string(oldnomDirIterTotal) + "/*" + " " + std::string(nomDirIterTotal);
+    codret = system(commande.c_str());
+    if (codret != 0)
+    {
+      SALOME::ExceptionStruct es;
+      es.type = SALOME::BAD_PARAM;
+      std::string text = "The starting point for the case cannot be moved into the new directory.";
+      es.text = CORBA::string_dup(text.c_str());
+      throw SALOME::SALOME_Exception(es);
+    }
+    commande = "rm -rf " + std::string(oldnomDirIterTotal);
+    codret = system(commande.c_str());
+    if (codret != 0)
+    {
+      SALOME::ExceptionStruct es;
+      es.type = SALOME::BAD_PARAM;
+      std::string text = "The starting point for the case cannot be deleted.";
+      es.text = CORBA::string_dup(text.c_str());
+      throw SALOME::SALOME_Exception(es);
+    }
+    // D.5. Memorisation du nom du repertoire de l'iteration
+    Iter0->SetDirNameLoc(nomDirIter);
+  }
+}
+//=============================================================================
+char* HOMARD_Cas_i::GetDirName()
+{
+  ASSERT(myHomardCas);
+  return CORBA::string_dup(myHomardCas->GetDirName().c_str());
+}
+//=============================================================================
+void HOMARD_Cas_i::SetBoundingBox(const SMESHHOMARD::extrema& LesExtrema)
+{
+  ASSERT(myHomardCas);
+  std::vector<double> VExtrema;
+  ASSERT(LesExtrema.length() == 10);
+  VExtrema.resize(LesExtrema.length());
+  for (int i = 0; i < (int)LesExtrema.length(); i++) {
+    VExtrema[i] = LesExtrema[i];
+  }
+  myHomardCas->SetBoundingBox(VExtrema);
+}
+//=============================================================================
+SMESHHOMARD::extrema* HOMARD_Cas_i::GetBoundingBox()
+{
+  ASSERT(myHomardCas);
+  SMESHHOMARD::extrema_var aResult = new SMESHHOMARD::extrema();
+  std::vector<double> LesExtremes = myHomardCas->GetBoundingBox();
+  ASSERT(LesExtremes.size() == 10);
+  aResult->length(10);
+  for (unsigned int i = 0; i < LesExtremes.size(); i++) {
+    aResult[i] = LesExtremes[i];
+  }
+  return aResult._retn();
+}
+
+//=============================================================================
+void HOMARD_Cas_i::AddGroup(const char* Group)
+{
+  ASSERT(myHomardCas);
+  myHomardCas->AddGroup(Group);
+}
+//=============================================================================
+void HOMARD_Cas_i::SetGroups(const SMESHHOMARD::ListGroupType& ListGroup)
+{
+  ASSERT(myHomardCas);
+  std::list<std::string> ListString;
+  for (unsigned int i = 0; i < ListGroup.length(); i++)
+  {
+    ListString.push_back(std::string(ListGroup[i]));
+  }
+  myHomardCas->SetGroups(ListString);
+}
+//=============================================================================
+SMESHHOMARD::ListGroupType* HOMARD_Cas_i::GetGroups()
+{
+  ASSERT(myHomardCas);
+  const std::list<std::string>& ListString = myHomardCas->GetGroups();
+  SMESHHOMARD::ListGroupType_var aResult = new SMESHHOMARD::ListGroupType();
+  aResult->length(ListString.size());
+  std::list<std::string>::const_iterator it;
+  int i = 0;
+  for (it = ListString.begin(); it != ListString.end(); it++) {
+    aResult[i++] = CORBA::string_dup((*it).c_str());
+  }
+  return aResult._retn();
+}
+
+//=============================================================================
+void HOMARD_Cas_i::AddBoundary(const char* BoundaryName)
+{
+  MESSAGE ("HOMARD_Cas_i::AddBoundary : BoundaryName = "<< BoundaryName);
+  const char * Group = "";
+  AddBoundaryGroup(BoundaryName, Group);
+}
+//=============================================================================
+void HOMARD_Cas_i::AddBoundaryGroup(const char* BoundaryName, const char* Group)
+{
+  MESSAGE ("HOMARD_Cas_i::AddBoundaryGroup : BoundaryName = "<< BoundaryName << ", Group = " << Group);
+  ASSERT(myHomardCas);
+  // A. Préalables
+  // A.1. Caractéristiques de la frontière à ajouter
+  SMESHHOMARD::HOMARD_Boundary_ptr myBoundary = _gen_i->GetBoundary(BoundaryName);
+  ASSERT(!CORBA::is_nil(myBoundary));
+  int BoundaryType = myBoundary->GetType();
+  MESSAGE (". BoundaryType = " << BoundaryType);
+  // A.2. La liste des frontiere+groupes
+  const std::list<std::string>& ListBoundaryGroup = myHomardCas->GetBoundaryGroup();
+  std::list<std::string>::const_iterator it;
+  // B. Controles
+  const char * boun;
+  int erreur = 0;
+  while (erreur == 0)
+  {
+    // B.1. Si on ajoute une frontière CAO, elle doit être la seule frontière
+    if (BoundaryType == -1)
+    {
+      for (it = ListBoundaryGroup.begin(); it != ListBoundaryGroup.end(); it++)
+      {
+        boun = (*it).c_str();
+        MESSAGE ("..  Frontiere enregistrée : "<< boun);
+        if (*it != BoundaryName)
+        { erreur = 1;
+          break; }
+        // On saute le nom du groupe
+        it++;
+      }
+    }
+    if (erreur != 0) { break; }
+    // B.2. Si on ajoute une frontière non CAO, il ne doit pas y avoir de frontière CAO
+    if (BoundaryType != -1)
+    {
+      for (it = ListBoundaryGroup.begin(); it != ListBoundaryGroup.end(); it++)
+      {
+        boun = (*it).c_str();
+        MESSAGE ("..  Frontiere enregistrée : "<< boun);
+        SMESHHOMARD::HOMARD_Boundary_ptr myBoundary_0 = _gen_i->GetBoundary(boun);
+        int BoundaryType_0 = myBoundary_0->GetType();
+        MESSAGE (".. BoundaryType_0 = " << BoundaryType_0);
+        if (BoundaryType_0 == -1)
+        { erreur = 2;
+          break; }
+        // On saute le nom du groupe
+        it++;
+      }
+      if (erreur != 0) { break; }
+    }
+    // B.3. Si on ajoute une frontière discrète, il ne doit pas y avoir d'autre frontière discrète
+    if (BoundaryType == 0)
+    {
+      for (it = ListBoundaryGroup.begin(); it != ListBoundaryGroup.end(); it++)
+      {
+        boun = (*it).c_str();
+        MESSAGE ("..  Frontiere enregistrée : "<< boun);
+        if (boun != BoundaryName)
+        {
+          SMESHHOMARD::HOMARD_Boundary_ptr myBoundary_0 = _gen_i->GetBoundary(boun);
+          int BoundaryType_0 = myBoundary_0->GetType();
+          MESSAGE (".. BoundaryType_0 = " << BoundaryType_0);
+          if (BoundaryType_0 == 0)
+          { erreur = 3;
+            break; }
+        }
+        // On saute le nom du groupe
+        it++;
+      }
+      if (erreur != 0) { break; }
+    }
+    // B.4. Pour une nouvelle frontiere, publication dans l'arbre d'etudes sous le cas
+    for (it = ListBoundaryGroup.begin(); it != ListBoundaryGroup.end(); it++) {
+      MESSAGE ("..  Frontiere : "<< *it);
+      // On saute le nom du groupe
+      it++;
+    }
+    // B.5. Le groupe est-il deja enregistre pour une frontiere de ce cas ?
+    for (it = ListBoundaryGroup.begin(); it != ListBoundaryGroup.end(); it++) {
+      boun = (*it).c_str();
+      it++;
+      MESSAGE ("..  Groupe enregistré : "<< *it);
+      if (*it == Group) {
+        erreur = 5;
+        break;
+      }
+    }
+    if (erreur != 0) { break; }
+    //
+    break;
+  }
+  // F. Si aucune erreur, enregistrement du couple (frontiere,groupe) dans la reference du cas
+  //    Sinon, arrêt
+  if (erreur == 0) {
+    myHomardCas->AddBoundaryGroup(BoundaryName, Group);
+  }
+  else {
+    std::stringstream ss;
+    ss << erreur;
+    std::string str = ss.str();
+    std::string texte;
+    texte = "Erreur numéro " + str + " pour la frontière à enregistrer : " + std::string(BoundaryName);
+    if (erreur == 1) { texte += "\nIl existe déjà la frontière "; }
+    else if (erreur == 2) { texte += "\nIl existe déjà la frontière CAO "; }
+    else if (erreur == 3) { texte += "\nIl existe déjà une frontière discrète : "; }
+    else if (erreur == 5) { texte += "\nLe groupe " + std::string(Group) + " est déjà enregistré pour la frontière "; }
+    texte += std::string(boun);
+    //
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    
+    if (SALOME::VerbosityActivated())
+      texte += "\nInvalid AddBoundaryGroup";
+
+    INFOS(texte);
+    es.text = CORBA::string_dup(texte.c_str());
+    throw SALOME::SALOME_Exception(es);
+  }
+}
+//=============================================================================
+SMESHHOMARD::ListBoundaryGroupType* HOMARD_Cas_i::GetBoundaryGroup()
+{
+  MESSAGE ("GetBoundaryGroup");
+  ASSERT(myHomardCas);
+  const std::list<std::string>& ListBoundaryGroup = myHomardCas->GetBoundaryGroup();
+  SMESHHOMARD::ListBoundaryGroupType_var aResult = new SMESHHOMARD::ListBoundaryGroupType();
+  aResult->length(ListBoundaryGroup.size());
+  std::list<std::string>::const_iterator it;
+  int i = 0;
+  for (it = ListBoundaryGroup.begin(); it != ListBoundaryGroup.end(); it++)
+  {
+    aResult[i++] = CORBA::string_dup((*it).c_str());
+  }
+  return aResult._retn();
+}
+//=============================================================================
+void HOMARD_Cas_i::SupprBoundaryGroup()
+{
+  MESSAGE ("SupprBoundaryGroup");
+  ASSERT(myHomardCas);
+  myHomardCas->SupprBoundaryGroup();
+}
+
+void HOMARD_Cas_i::AddIteration(const char* NomIteration)
+{
+  ASSERT(myHomardCas);
+  myHomardCas->AddIteration(NomIteration);
+}
+
+//=============================================================================
+/*!
+ *  standard constructor
+ */
+//=============================================================================
+HOMARD_Iteration_i::HOMARD_Iteration_i()
+{
+  MESSAGE("Default constructor, not for use");
+  ASSERT(0);
+}
+//=============================================================================
+/*!
+ *  standard constructor
+ */
+//=============================================================================
+HOMARD_Iteration_i::HOMARD_Iteration_i(SMESHHOMARD::HOMARD_Gen_var engine)
+{
+  MESSAGE("constructor");
+  _gen_i = engine;
+  myHomardIteration = new SMESHHOMARDImpl::HOMARD_Iteration();
+  ASSERT(myHomardIteration);
+}
+//=============================================================================
+/*!
+ *  standard destructor
+ */
+//=============================================================================
+HOMARD_Iteration_i::~HOMARD_Iteration_i()
+{
+}
+//=============================================================================
+void HOMARD_Iteration_i::SetName(const char* Name)
+{
+  ASSERT(myHomardIteration);
+  myHomardIteration->SetName(Name);
+}
+//=============================================================================
+char* HOMARD_Iteration_i::GetName()
+{
+  ASSERT(myHomardIteration);
+  return CORBA::string_dup(myHomardIteration->GetName().c_str());
+}
+//=============================================================================
+void HOMARD_Iteration_i::SetDirNameLoc(const char* NomDir)
+{
+  ASSERT(myHomardIteration);
+  myHomardIteration->SetDirNameLoc(NomDir);
+}
+//=============================================================================
+char* HOMARD_Iteration_i::GetDirNameLoc()
+{
+  ASSERT(myHomardIteration);
+  return CORBA::string_dup(myHomardIteration->GetDirNameLoc().c_str());
+}
+//=============================================================================
+char* HOMARD_Iteration_i::GetDirName()
+{
+  ASSERT(myHomardIteration);
+  SMESHHOMARD::HOMARD_Cas_ptr caseiter = _gen_i->GetCase();
+  std::string dirnamecase = caseiter->GetDirName();
+  std::string dirname = dirnamecase + "/" +  GetDirNameLoc();
+  return CORBA::string_dup(dirname.c_str());
+}
+//=============================================================================
+void HOMARD_Iteration_i::SetNumber(CORBA::Long NumIter)
+{
+  ASSERT(myHomardIteration);
+  myHomardIteration->SetNumber(NumIter);
+}
+//=============================================================================
+CORBA::Long HOMARD_Iteration_i::GetNumber()
+{
+  ASSERT(myHomardIteration);
+  return myHomardIteration->GetNumber();
+}
+//=============================================================================
+void HOMARD_Iteration_i::SetState(CORBA::Long Etat)
+{
+  ASSERT(myHomardIteration);
+  myHomardIteration->SetState(Etat);
+}
+//=============================================================================
+CORBA::Long HOMARD_Iteration_i::GetState()
+{
+  ASSERT(myHomardIteration);
+  return myHomardIteration->GetState();
+}
+//=============================================================================
+void HOMARD_Iteration_i::SetMeshName(const char* NomMesh)
+{
+  ASSERT(myHomardIteration);
+  myHomardIteration->SetMeshName(NomMesh);
+}
+//=============================================================================
+char* HOMARD_Iteration_i::GetMeshName()
+{
+  ASSERT(myHomardIteration);
+  return CORBA::string_dup(myHomardIteration->GetMeshName().c_str());
+}
+//=============================================================================
+void HOMARD_Iteration_i::SetMeshFile(const char* MeshFile)
+{
+  ASSERT(myHomardIteration);
+  myHomardIteration->SetMeshFile(MeshFile);
+}
+//=============================================================================
+char* HOMARD_Iteration_i::GetMeshFile()
+{
+  ASSERT(myHomardIteration);
+  return CORBA::string_dup(myHomardIteration->GetMeshFile().c_str());
+}
+//=============================================================================
+void HOMARD_Iteration_i::SetLogFile(const char* LogFile)
+{
+  ASSERT(myHomardIteration);
+  myHomardIteration->SetLogFile(LogFile);
+}
+//=============================================================================
+char* HOMARD_Iteration_i::GetLogFile()
+{
+  ASSERT(myHomardIteration);
+  return CORBA::string_dup(myHomardIteration->GetLogFile().c_str());
+}
+//=============================================================================
+void HOMARD_Iteration_i::SetFileInfo(const char* FileInfo)
+{
+  ASSERT(myHomardIteration);
+  myHomardIteration->SetFileInfo(FileInfo);
+}
+//=============================================================================
+char* HOMARD_Iteration_i::GetFileInfo()
+{
+  ASSERT(myHomardIteration);
+  return CORBA::string_dup(myHomardIteration->GetFileInfo().c_str());
+}
+//=============================================================================
+void HOMARD_Iteration_i::SetInfoCompute(CORBA::Long MessInfo)
+{
+  ASSERT(myHomardIteration);
+  myHomardIteration->SetInfoCompute(MessInfo);
+}
+//=============================================================================
+CORBA::Long HOMARD_Iteration_i::GetInfoCompute()
+{
+  ASSERT(myHomardIteration);
+  return myHomardIteration->GetInfoCompute();
+}
+
+//=============================================================================
+/*!
+ *  standard constructor
+ */
+//=============================================================================
+HOMARD_Gen_i::HOMARD_Gen_i() : SALOME::GenericObj_i(SMESH_Gen_i::GetPOA()),
+                               myIteration0(NULL),
+                               myIteration1(NULL),
+                               _ConfType(0),
+                               _KeepMedOUT(true),
+                               _PublishMeshOUT(false),
+                               _KeepWorkingFiles(false),
+                               _LogInFile(false),
+                               _RemoveLogOnSuccess(false),
+                               _VerboseLevel(0),
+                               _MeshNameOUT(""),
+                               _MeshFileOUT(""),
+                               _LogFile(""),
+                               _CaseOnMedFile(true),
+                               _SmeshMesh(SMESH::SMESH_Mesh::_nil()),
+                               _TmpMeshFile("")
+{
+  MESSAGE("constructor de HOMARD_Gen_i");
+  myHomard = new SMESHHOMARDImpl::HOMARD_Gen;
+}
+
+//=============================================================================
+/*!
+ *  standard destructor
+ */
+//=============================================================================
+HOMARD_Gen_i::~HOMARD_Gen_i()
+{
+  MESSAGE ("HOMARD_Gen_i::~HOMARD_Gen_i()");
+}
+
+//=============================================================================
+//=============================================================================
+// Destruction des structures identifiees par leurs noms
+//=============================================================================
+//=============================================================================
+CORBA::Long HOMARD_Gen_i::DeleteBoundary(const char* BoundaryName)
+{
+  MESSAGE ("DeleteBoundary : BoundaryName = " << BoundaryName);
+  SMESHHOMARD::HOMARD_Boundary_var myBoundary = _mesBoundarys[BoundaryName];
+  if (CORBA::is_nil(myBoundary)) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "Invalid boundary";
+    throw SALOME::SALOME_Exception(es);
+  }
+
+  // Boundaries should be deleted only after all cases deletion!!!
+
+  // comme on a un _var comme pointeur CORBA, on ne se preoccupe pas du delete
+  _mesBoundarys.erase(BoundaryName);
+
+  return 0;
+}
+
+//=============================================================================
+CORBA::Long HOMARD_Gen_i::DeleteIteration(int numIter)
+{
+  MESSAGE ("DeleteIteration : numIter = " << numIter);
+
+  if (numIter == 0) {
+    if (myIteration0 != NULL) {
+      delete myIteration0;
+      myIteration0 = NULL;
+    }
+  }
+  else {
+    if (myIteration1 != NULL) {
+      // Invalide Iteration
+      if (myIteration1->GetState() > 0) {
+        myIteration1->SetState(1);
+        if (!_KeepWorkingFiles) {
+          std::string nomDir = myIteration1->GetDirName();
+          std::string commande = "rm -rf " + nomDir;
+          if (numIter > 0 && !_KeepMedOUT) {
+            // Remove associated mesh file
+            std::string nomFichier = myIteration1->GetMeshFile();
+            commande = commande + ";rm -rf " + nomFichier;
+          }
+          MESSAGE ("commande = " << commande);
+          if ((system(commande.c_str())) != 0) {
+            SALOME::ExceptionStruct es;
+            es.type = SALOME::BAD_PARAM;
+            es.text = "The directory for the calculation cannot be cleared.";
+            throw SALOME::SALOME_Exception(es);
+          }
+        }
+      }
+
+      delete myIteration1;
+      myIteration1 = NULL;
+    }
+  }
+
+  return 0;
+}
+
+//=============================================================================
+//=============================================================================
+// Invalidation des structures identifiees par leurs noms
+//=============================================================================
+//=============================================================================
+void HOMARD_Gen_i::InvalideBoundary(const char* BoundaryName)
+{
+  MESSAGE("InvalideBoundary : BoundaryName = " << BoundaryName);
+  SMESHHOMARD::HOMARD_Boundary_var myBoundary = _mesBoundarys[BoundaryName];
+  if (CORBA::is_nil(myBoundary)) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "Invalid boundary";
+    throw SALOME::SALOME_Exception(es);
+  }
+  else {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "No change is allowed in a boundary. Ask for evolution.";
+    throw SALOME::SALOME_Exception(es);
+  }
+}
+
+//=============================================================================
+//=============================================================================
+// Association de lien entre des structures identifiees par leurs noms
+//=============================================================================
+//=============================================================================
+void HOMARD_Gen_i::AssociateCaseIter(int numIter, const char* labelIter)
+{
+  MESSAGE("AssociateCaseIter : " << numIter << ", "  << labelIter);
+
+  if (CORBA::is_nil(myCase)) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "Invalid case";
+    throw SALOME::SALOME_Exception(es);
+  }
+
+  if (numIter == 0) {
+    if (myIteration0 == NULL) {
+      SALOME::ExceptionStruct es;
+      es.type = SALOME::BAD_PARAM;
+      es.text = "Invalid iteration";
+      throw SALOME::SALOME_Exception(es);
+    }
+
+    HOMARD_Cas_i* aCaseImpl = SMESH::DownCast<HOMARD_Cas_i*>(myCase);
+    aCaseImpl->AddIteration(myIteration0->GetName());
+  }
+  else {
+    if (myIteration1 == NULL) {
+      SALOME::ExceptionStruct es;
+      es.type = SALOME::BAD_PARAM;
+      es.text = "Invalid iteration";
+      throw SALOME::SALOME_Exception(es);
+    }
+
+    HOMARD_Cas_i* aCaseImpl = SMESH::DownCast<HOMARD_Cas_i*>(myCase);
+    aCaseImpl->AddIteration(myIteration1->GetName());
+  }
+}
+
+//=============================================================================
+//=============================================================================
+// Recuperation des listes
+//=============================================================================
+//=============================================================================
+SMESHHOMARD::listeBoundarys* HOMARD_Gen_i::GetAllBoundarysName()
+{
+  MESSAGE("GetAllBoundarysName");
+
+  SMESHHOMARD::listeBoundarys_var ret = new SMESHHOMARD::listeBoundarys;
+  ret->length(_mesBoundarys.size());
+  std::map<std::string, SMESHHOMARD::HOMARD_Boundary_var>::const_iterator it;
+  int i = 0;
+  for (it = _mesBoundarys.begin();
+       it != _mesBoundarys.end(); it++) {
+    ret[i++] = CORBA::string_dup((*it).first.c_str());
+  }
+
+  return ret._retn();
+}
+
+//=============================================================================
+//=============================================================================
+// Recuperation des structures identifiees par leurs noms
+//=============================================================================
+//=============================================================================
+SMESHHOMARD::HOMARD_Boundary_ptr HOMARD_Gen_i::GetBoundary(const char* nomBoundary)
+{
+  SMESHHOMARD::HOMARD_Boundary_var myBoundary = _mesBoundarys[nomBoundary];
+  ASSERT(!CORBA::is_nil(myBoundary));
+  return SMESHHOMARD::HOMARD_Boundary::_duplicate(myBoundary);
+}
+//=============================================================================
+SMESHHOMARD::HOMARD_Cas_ptr HOMARD_Gen_i::GetCase()
+{
+  ASSERT(!CORBA::is_nil(myCase));
+  return SMESHHOMARD::HOMARD_Cas::_duplicate(myCase);
+}
+//=============================================================================
+HOMARD_Iteration_i* HOMARD_Gen_i::GetIteration(CORBA::Long numIter)
+{
+  if (numIter == 0) {
+    ASSERT(myIteration0);
+    return myIteration0;
+  }
+
+  ASSERT(myIteration1);
+  return myIteration1;
+}
+
+//=============================================================================
+//=============================================================================
+// Nouvelles structures
+//=============================================================================
+//=============================================================================
+SMESHHOMARD::HOMARD_Cas_ptr HOMARD_Gen_i::newCase()
+{
+  SMESHHOMARD::HOMARD_Gen_var engine = POA_SMESHHOMARD::HOMARD_Gen::_this();
+  HOMARD_Cas_i* aServant = new HOMARD_Cas_i(engine);
+  SMESHHOMARD::HOMARD_Cas_var aCase = SMESHHOMARD::HOMARD_Cas::_narrow(aServant->_this());
+  return aCase._retn();
+}
+//=============================================================================
+HOMARD_Iteration_i* HOMARD_Gen_i::newIteration()
+{
+  SMESHHOMARD::HOMARD_Gen_var engine = POA_SMESHHOMARD::HOMARD_Gen::_this();
+  HOMARD_Iteration_i* aServant = new HOMARD_Iteration_i(engine);
+  return aServant;
+}
+//=============================================================================
+SMESHHOMARD::HOMARD_Boundary_ptr HOMARD_Gen_i::newBoundary()
+{
+  SMESHHOMARD::HOMARD_Gen_var engine = POA_SMESHHOMARD::HOMARD_Gen::_this();
+  HOMARD_Boundary_i* aServant = new HOMARD_Boundary_i(engine);
+  SMESHHOMARD::HOMARD_Boundary_var aBoundary =
+    SMESHHOMARD::HOMARD_Boundary::_narrow(aServant->_this());
+  return aBoundary._retn();
+}
+
+//=============================================================================
+// Creation of a case
+// MeshName : name of the mesh
+// smeshMesh : correspondent mesh
+// theWorkingDir : path to working directory
+//=============================================================================
+SMESHHOMARD::HOMARD_Cas_ptr HOMARD_Gen_i::CreateCaseOnMesh (const char* MeshName,
+                                                            SMESH::SMESH_Mesh_ptr smeshMesh,
+                                                            const char* theWorkingDir)
+{
+  INFOS("CreateCaseOnMesh");
+
+  // A. Controles
+  // A.1. Controle du nom :
+  if (!myCase->_is_nil()) {
+    DeleteCase();
+  }
+
+  // A.2. Controle du objet maillage
+  if (CORBA::is_nil(smeshMesh)) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "The mesh object is null.";
+    throw SALOME::SALOME_Exception(es);
+  }
+  MESSAGE("CreateCaseOnMesh : smeshMesh is not nil");
+
+  // A.3. Write mesh object in a temporary file in the working directory
+  std::string aTmpMeshFile = theWorkingDir;
+  aTmpMeshFile = theWorkingDir;
+  aTmpMeshFile += std::string("/") + std::string(MeshName) + "_saved_from_SMESH";
+  _TmpMeshFile = aTmpMeshFile + ".med";
+  SMESH_File aFile (_TmpMeshFile, false);
+  for (int ii = 1; aFile.exists(); ii++) {
+    _TmpMeshFile = aTmpMeshFile + std::string("_") + std::to_string(ii) + ".med";
+    aFile = SMESH_File(_TmpMeshFile, false);
+  }
+  const char* MeshFile = _TmpMeshFile.c_str();
+  bool toOverwrite = true;
+  bool toFindOutDim = true;
+
+  // Prevent dump of ExportMED
+  {
+    SMESH::TPythonDump pDump; // do not delete this line of code
+    smeshMesh->ExportMED(MeshFile, false, -1, toOverwrite, toFindOutDim);
+  }
+
+  // A.4. Controle du fichier du maillage
+  med_idt medIdt = MEDfileOpen(MeshFile, MED_ACC_RDONLY);
+  bool existeMeshFile = medIdt >= 0;
+  if (existeMeshFile) MEDfileClose(medIdt);
+  MESSAGE("CreateCaseOnMesh : existeMeshFile = " << existeMeshFile);
+  if (!existeMeshFile) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "The mesh file does not exist.";
+    throw SALOME::SALOME_Exception(es);
+  }
+
+  // B. Creation de l'objet cas
+  myCase = newCase();
+  _CaseOnMedFile = false;
+  _SmeshMesh = SMESH::SMESH_Mesh::_duplicate(smeshMesh);
+
+  // C. Caracteristiques du maillage
+  if (existeMeshFile) {
+    // Les valeurs extremes des coordonnées
+    //MESSAGE ("CreateCaseOnMesh : Les valeurs extremes des coordonnées");
+    std::vector<double> LesExtremes = GetBoundingBoxInMedFile(MeshFile);
+    SMESHHOMARD::extrema_var aSeq = new SMESHHOMARD::extrema();
+    if (LesExtremes.size() != 10) { return 0; }
+    aSeq->length(10);
+    for (unsigned int i = 0; i < LesExtremes.size(); i++)
+      aSeq[i] = LesExtremes[i];
+    myCase->SetBoundingBox(aSeq);
+    // Les groupes
+    //MESSAGE ("CreateCaseOnMesh : Les groupes");
+    std::set<std::string> LesGroupes = GetListeGroupesInMedFile(MeshFile);
+    SMESHHOMARD::ListGroupType_var aSeqGroupe = new SMESHHOMARD::ListGroupType;
+    aSeqGroupe->length(LesGroupes.size());
+    std::set<std::string>::const_iterator it;
+    int i = 0;
+    for (it = LesGroupes.begin(); it != LesGroupes.end(); it++)
+      aSeqGroupe[i++] = (*it).c_str();
+    myCase->SetGroups(aSeqGroupe);
+  }
+
+  // D. L'iteration initiale du cas
+  MESSAGE ("CreateCaseOnMesh : iteration initiale du cas");
+  // D.1. Recherche d'un nom : par defaut, on prend le nom du maillage correspondant.
+  // Si ce nom d'iteration existe deja, on incremente avec 0, 1, 2, etc.
+  MESSAGE("CreateCaseOnMesh : ==> NomIteration = " << MeshName);
+
+  // D.2. Creation de l'iteration 0
+  myIteration0 = newIteration();
+  myIteration0->SetName(MeshName);
+  AssociateCaseIter(0, "IterationHomard");
+
+  // D.4. Maillage correspondant
+  if (existeMeshFile) {
+    myIteration0->SetMeshFile(MeshFile);
+  }
+  myIteration0->SetMeshName(MeshName);
+  myIteration0->SetNumber(0);
+  myIteration0->SetState(0);
+
+  // Only after full initialization of Iteration0
+  myCase->SetDirName(theWorkingDir);
+
+  return SMESHHOMARD::HOMARD_Cas::_duplicate(myCase);
+}
+
+//=============================================================================
+// Creation of a case
+// MeshName : name of the mesh
+// MeshFile : med file
+// theWorkingDir : path to working directory
+//=============================================================================
+SMESHHOMARD::HOMARD_Cas_ptr HOMARD_Gen_i::CreateCase(const char* MeshName,
+                                                     const char* MeshFile,
+                                                     const char* theWorkingDir)
+{
+  INFOS("CreateCase : MeshName = " << MeshName << ", MeshFile = " << MeshFile);
+
+  // A. Controles
+  // A.1. Controle du nom :
+  if (!myCase->_is_nil()) {
+    DeleteCase();
+  }
+
+  // A.3. Controle du fichier du maillage
+  med_idt medIdt = MEDfileOpen(MeshFile, MED_ACC_RDONLY);
+  bool existeMeshFile = medIdt >= 0;
+  if (existeMeshFile) MEDfileClose(medIdt);
+  MESSAGE("CreateCase : existeMeshFile = " << existeMeshFile);
+  if (!existeMeshFile) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "The mesh file does not exist.";
+    throw SALOME::SALOME_Exception(es);
+  }
+
+  // B. Creation de l'objet cas
+  myCase = newCase();
+  _CaseOnMedFile = true;
+
+  // C. Caracteristiques du maillage
+  if (existeMeshFile) {
+    // Les valeurs extremes des coordonnées
+    //MESSAGE ("CreateCase : Les valeurs extremes des coordonnées");
+    std::vector<double> LesExtremes = GetBoundingBoxInMedFile(MeshFile);
+    SMESHHOMARD::extrema_var aSeq = new SMESHHOMARD::extrema();
+    if (LesExtremes.size() != 10) { return 0; }
+    aSeq->length(10);
+    for (unsigned int i = 0; i < LesExtremes.size(); i++)
+      aSeq[i] = LesExtremes[i];
+    myCase->SetBoundingBox(aSeq);
+    // Les groupes
+    //MESSAGE ("CreateCase : Les groupes");
+    std::set<std::string> LesGroupes = GetListeGroupesInMedFile(MeshFile);
+    SMESHHOMARD::ListGroupType_var aSeqGroupe = new SMESHHOMARD::ListGroupType;
+    aSeqGroupe->length(LesGroupes.size());
+    std::set<std::string>::const_iterator it;
+    int i = 0;
+    for (it = LesGroupes.begin(); it != LesGroupes.end(); it++)
+      aSeqGroupe[i++] = (*it).c_str();
+    myCase->SetGroups(aSeqGroupe);
+  }
+
+  // D. L'iteration initiale du cas
+  MESSAGE ("CreateCase : iteration initiale du cas");
+  // D.1. Recherche d'un nom : par defaut, on prend le nom du maillage correspondant.
+  // Si ce nom d'iteration existe deja, on incremente avec 0, 1, 2, etc.
+  MESSAGE("CreateCas : ==> NomIteration = " << MeshName);
+
+  // D.2. Creation de l'iteration
+  myIteration0 = newIteration();
+  myIteration0->SetName(MeshName);
+  AssociateCaseIter(0, "IterationHomard");
+
+  // D.4. Maillage correspondant
+  if (existeMeshFile) {
+    myIteration0->SetMeshFile(MeshFile);
+  }
+  myIteration0->SetMeshName(MeshName);
+  myIteration0->SetNumber(0);
+  myIteration0->SetState(0);
+
+  // Only after full initialization of Iteration0
+  myCase->SetDirName(theWorkingDir);
+
+  return SMESHHOMARD::HOMARD_Cas::_duplicate(myCase);
+}
+
+//=============================================================================
+// Create Iteration1
+//=============================================================================
+HOMARD_Iteration_i* HOMARD_Gen_i::CreateIteration()
+{
+  if (myIteration0 == NULL) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "The parent iteration is not defined.";
+    throw SALOME::SALOME_Exception(es);
+  }
+
+  if (CORBA::is_nil(myCase)) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "Invalid case context";
+    throw SALOME::SALOME_Exception(es);
+  }
+  const char* nomDirCase = myCase->GetDirName();
+
+  if (myIteration1 != NULL) {
+    DeleteIteration(1);
+  }
+
+  myIteration1 = newIteration();
+  if (myIteration1 == NULL) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "Unable to create the iteration 1";
+    throw SALOME::SALOME_Exception(es);
+  }
+
+  // Nom de l'iteration et du maillage
+  myIteration1->SetName("Iter_1");
+  myIteration1->SetMeshName("Iter_1");
+  myIteration1->SetState(1);
+  myIteration1->SetNumber(1);
+
+  int nbitercase = 1;
+  char* nomDirIter = CreateDirNameIter(nomDirCase, nbitercase);
+  myIteration1->SetDirNameLoc(nomDirIter);
+
+  // Le nom du fichier du maillage MED est indice par le nombre d'iterations du cas.
+  // Si on a une chaine unique depuis le depart, ce nombre est le meme que le
+  // numero d'iteration dans la sucession : maill.01.med, maill.02.med, etc... C'est la
+  // situation la plus frequente.
+  // Si on a plusieurs branches, donc des iterations du meme niveau d'adaptation, utiliser
+  // le nombre d'iterations du cas permet d'eviter les collisions.
+  int jaux;
+  if      (nbitercase <    100) { jaux = 2; }
+  else if (nbitercase <   1000) { jaux = 3; }
+  else if (nbitercase <  10000) { jaux = 4; }
+  else if (nbitercase < 100000) { jaux = 5; }
+  else                          { jaux = 9; }
+  std::ostringstream iaux;
+  iaux << std::setw(jaux) << std::setfill('0') << nbitercase;
+  std::stringstream MeshFile;
+  MeshFile << nomDirCase << "/maill." << iaux.str() << ".med";
+  myIteration1->SetMeshFile(MeshFile.str().c_str());
+
+  // Association avec le cas
+  std::string nomIterParent = myIteration0->GetName();
+  std::string label = "IterationHomard_" + nomIterParent;
+  AssociateCaseIter(1, label.c_str());
+
+  return myIteration1;
+}
+//=============================================================================
+SMESHHOMARD::HOMARD_Boundary_ptr HOMARD_Gen_i::CreateBoundary(const char* BoundaryName,
+                                                              CORBA::Long BoundaryType)
+{
+  MESSAGE ("CreateBoundary : BoundaryName  = " << BoundaryName <<
+           ", BoundaryType = " << BoundaryType);
+
+  // Controle du nom :
+  if ((_mesBoundarys).find(BoundaryName) != (_mesBoundarys).end()) {
+    MESSAGE ("CreateBoundary : la frontiere " << BoundaryName << " existe deja");
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "This boundary has already been defined";
+    throw SALOME::SALOME_Exception(es);
+  }
+
+  SMESHHOMARD::HOMARD_Boundary_var myBoundary = newBoundary();
+  myBoundary->SetName(BoundaryName);
+  myBoundary->SetType(BoundaryType);
+
+  _mesBoundarys[BoundaryName] = myBoundary;
+
+  return SMESHHOMARD::HOMARD_Boundary::_duplicate(myBoundary);
+}
+//=============================================================================
+SMESHHOMARD::HOMARD_Boundary_ptr HOMARD_Gen_i::CreateBoundaryCAO(const char* BoundaryName, const char* CAOFile)
+{
+  MESSAGE ("CreateBoundaryCAO : BoundaryName  = " << BoundaryName << ", CAOFile = " << CAOFile);
+  SMESHHOMARD::HOMARD_Boundary_var myBoundary = CreateBoundary(BoundaryName, -1);
+  myBoundary->SetDataFile(CAOFile);
+
+  return SMESHHOMARD::HOMARD_Boundary::_duplicate(myBoundary);
+}
+//=============================================================================
+SMESHHOMARD::HOMARD_Boundary_ptr HOMARD_Gen_i::CreateBoundaryDi(const char* BoundaryName, const char* MeshName, const char* MeshFile)
+{
+  MESSAGE ("CreateBoundaryDi : BoundaryName  = " << BoundaryName << ", MeshName = " << MeshName << ", MeshFile = " << MeshFile);
+  SMESHHOMARD::HOMARD_Boundary_var myBoundary = CreateBoundary(BoundaryName, 0);
+  myBoundary->SetDataFile(MeshFile);
+  myBoundary->SetMeshName(MeshName);
+
+  return SMESHHOMARD::HOMARD_Boundary::_duplicate(myBoundary);
+}
+//=============================================================================
+SMESHHOMARD::HOMARD_Boundary_ptr HOMARD_Gen_i::CreateBoundaryCylinder(const char* BoundaryName,
+                                      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
+                                      CORBA::Double Xaxe, CORBA::Double Yaxe, CORBA::Double Zaxe,
+                                      CORBA::Double Rayon)
+{
+  MESSAGE ("CreateBoundaryCylinder : BoundaryName  = " << BoundaryName);
+//
+  SALOME::ExceptionStruct es;
+  int error = 0;
+  if (Rayon <= 0.0)
+  { es.text = "The radius must be positive.";
+    error = 1; }
+  double daux = fabs(Xaxe) + fabs(Yaxe) + fabs(Zaxe);
+  if (daux < 0.0000001)
+  { es.text = "The axis must be a non 0 vector.";
+    error = 2; }
+  if (error != 0)
+  {
+    es.type = SALOME::BAD_PARAM;
+    throw SALOME::SALOME_Exception(es);
+    return 0;
+  };
+//
+  SMESHHOMARD::HOMARD_Boundary_var myBoundary = CreateBoundary(BoundaryName, 1);
+  myBoundary->SetCylinder(Xcentre, Ycentre, Zcentre, Xaxe, Yaxe, Zaxe, Rayon);
+
+  return SMESHHOMARD::HOMARD_Boundary::_duplicate(myBoundary);
+}
+//=============================================================================
+SMESHHOMARD::HOMARD_Boundary_ptr HOMARD_Gen_i::CreateBoundarySphere(const char* BoundaryName,
+                                      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
+                                      CORBA::Double Rayon)
+{
+  MESSAGE ("CreateBoundarySphere : BoundaryName  = " << BoundaryName);
+//
+  SALOME::ExceptionStruct es;
+  int error = 0;
+  if (Rayon <= 0.0)
+  { es.text = "The radius must be positive.";
+    error = 1; }
+  if (error != 0)
+  {
+    es.type = SALOME::BAD_PARAM;
+    throw SALOME::SALOME_Exception(es);
+    return 0;
+  };
+//
+  SMESHHOMARD::HOMARD_Boundary_var myBoundary = CreateBoundary(BoundaryName, 2);
+  myBoundary->SetSphere(Xcentre, Ycentre, Zcentre, Rayon);
+
+  return SMESHHOMARD::HOMARD_Boundary::_duplicate(myBoundary);
+}
+//=============================================================================
+SMESHHOMARD::HOMARD_Boundary_ptr HOMARD_Gen_i::CreateBoundaryConeA(const char* BoundaryName,
+                                      CORBA::Double Xaxe, CORBA::Double Yaxe, CORBA::Double Zaxe, CORBA::Double Angle,
+                                      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre)
+{
+  MESSAGE ("CreateBoundaryConeA : BoundaryName  = " << BoundaryName);
+//
+  SALOME::ExceptionStruct es;
+  int error = 0;
+  if (Angle <= 0.0 || Angle >= 90.0)
+  { es.text = "The angle must be included higher than 0 degree and lower than 90 degrees.";
+    error = 1; }
+  double daux = fabs(Xaxe) + fabs(Yaxe) + fabs(Zaxe);
+  if (daux < 0.0000001)
+  { es.text = "The axis must be a non 0 vector.";
+    error = 2; }
+  if (error != 0)
+  {
+    es.type = SALOME::BAD_PARAM;
+    throw SALOME::SALOME_Exception(es);
+    return 0;
+  };
+//
+  SMESHHOMARD::HOMARD_Boundary_var myBoundary = CreateBoundary(BoundaryName, 3);
+  myBoundary->SetConeA(Xaxe, Yaxe, Zaxe, Angle, Xcentre, Ycentre, Zcentre);
+
+  return SMESHHOMARD::HOMARD_Boundary::_duplicate(myBoundary);
+}
+//=============================================================================
+SMESHHOMARD::HOMARD_Boundary_ptr HOMARD_Gen_i::CreateBoundaryConeR(const char* BoundaryName,
+                                      CORBA::Double Xcentre1, CORBA::Double Ycentre1, CORBA::Double Zcentre1, CORBA::Double Rayon1,
+                                      CORBA::Double Xcentre2, CORBA::Double Ycentre2, CORBA::Double Zcentre2, CORBA::Double Rayon2)
+{
+  MESSAGE ("CreateBoundaryConeR : BoundaryName  = " << BoundaryName);
+//
+  SALOME::ExceptionStruct es;
+  int error = 0;
+  if (Rayon1 < 0.0 || Rayon2 < 0.0)
+  { es.text = "The radius must be positive.";
+    error = 1; }
+  double daux = fabs(Rayon2-Rayon1);
+  if (daux < 0.0000001)
+  { es.text = "The radius must be different.";
+    error = 2; }
+  daux = fabs(Xcentre2-Xcentre1) + fabs(Ycentre2-Ycentre1) + fabs(Zcentre2-Zcentre1);
+  if (daux < 0.0000001)
+  { es.text = "The centers must be different.";
+    error = 3; }
+  if (error != 0)
+  {
+    es.type = SALOME::BAD_PARAM;
+    throw SALOME::SALOME_Exception(es);
+    return 0;
+  };
+//
+  SMESHHOMARD::HOMARD_Boundary_var myBoundary = CreateBoundary(BoundaryName, 4);
+  myBoundary->SetConeR(Xcentre1, Ycentre1, Zcentre1, Rayon1, Xcentre2, Ycentre2, Zcentre2, Rayon2);
+
+  return SMESHHOMARD::HOMARD_Boundary::_duplicate(myBoundary);
+}
+//=============================================================================
+SMESHHOMARD::HOMARD_Boundary_ptr HOMARD_Gen_i::CreateBoundaryTorus(const char* BoundaryName,
+                                      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
+                                      CORBA::Double Xaxe, CORBA::Double Yaxe, CORBA::Double Zaxe,
+                                      CORBA::Double RayonRev, CORBA::Double RayonPri)
+{
+  MESSAGE ("CreateBoundaryTorus : BoundaryName  = " << BoundaryName);
+//
+  SALOME::ExceptionStruct es;
+  int error = 0;
+  if ((RayonRev <= 0.0) || (RayonPri <= 0.0))
+  { es.text = "The radius must be positive.";
+    error = 1; }
+  double daux = fabs(Xaxe) + fabs(Yaxe) + fabs(Zaxe);
+  if (daux < 0.0000001)
+  { es.text = "The axis must be a non 0 vector.";
+    error = 2; }
+  if (error != 0)
+  {
+    es.type = SALOME::BAD_PARAM;
+    throw SALOME::SALOME_Exception(es);
+    return 0;
+  };
+//
+  SMESHHOMARD::HOMARD_Boundary_var myBoundary = CreateBoundary(BoundaryName, 5);
+  myBoundary->SetTorus(Xcentre, Ycentre, Zcentre, Xaxe, Yaxe, Zaxe, RayonRev, RayonPri);
+
+  return SMESHHOMARD::HOMARD_Boundary::_duplicate(myBoundary);
+}
+
+//=============================================================================
+//=============================================================================
+CORBA::Long HOMARD_Gen_i::Compute()
+{
+  INFOS ("Compute");
+  // A. Prealable
+  int codret = 0;
+
+  // A.0. Create Iteration 1
+  CreateIteration();
+  myIteration1->SetInfoCompute(_VerboseLevel);
+  myIteration1->SetMeshName(_MeshNameOUT.c_str());
+  myIteration1->SetMeshFile(_MeshFileOUT.c_str());
+  if (_LogInFile) myIteration1->SetLogFile(_LogFile.c_str());
+
+  // A.1. L'objet iteration
+  ASSERT(myIteration1);
+
+  // A.2. Controle de la possibilite d'agir
+  // A.2.1. Etat de l'iteration
+  int etat = myIteration1->GetState();
+  MESSAGE ("etat = " << etat);
+  // A.2.2. On ne calcule pas l'iteration initiale, ni une iteration deja calculee
+  if (etat == 2) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "This iteration is already computed.";
+    throw SALOME::SALOME_Exception(es);
+  }
+
+  // A.3. Numero de l'iteration
+  //     siterp1 : numero de l'iteration a traiter
+  //     Si adaptation :
+  //        siter: numero de l'iteration parent, ou 0 si deja au debut mais cela ne servira pas !
+  //     Ou si information :
+  //        siter = siterp1
+  int NumeIter = myIteration1->GetNumber();
+  std::string siterp1;
+  std::stringstream saux1;
+  saux1 << NumeIter;
+  siterp1 = saux1.str();
+  if (NumeIter < 10) { siterp1 = "0" + siterp1; }
+
+  std::string siter;
+  std::stringstream saux0;
+  int iaux = max(0, NumeIter-1);
+  saux0 << iaux;
+  siter = saux0.str();
+  if (NumeIter < 11) { siter = "0" + siter; }
+
+  // A.4. Le cas
+  ASSERT(!CORBA::is_nil(myCase));
+
+  // B. Les répertoires
+  // B.1. Le répertoire courant
+  std::string nomDirWork = getenv("PWD");
+  // B.2. Le sous-répertoire de l'iteration a traiter
+  char* DirCompute = ComputeDirManagement();
+  MESSAGE(". DirCompute = " << DirCompute);
+
+  // C. Le fichier des messages
+  // C.1. Le deroulement de l'execution de HOMARD
+  std::string LogFile = myIteration1->GetLogFile();
+  if (LogFile.empty()) {
+    LogFile = DirCompute;
+    LogFile += "/Liste." + siter + ".vers." + siterp1 + ".log";
+    myIteration1->SetLogFile(LogFile.c_str());
+  }
+  MESSAGE (". LogFile = " << LogFile);
+  // C.2. Le bilan de l'analyse du maillage
+  std::string FileInfo = DirCompute;
+  FileInfo += "/apad." + siterp1 + ".bilan";
+  myIteration1->SetFileInfo(FileInfo.c_str());
+
+   // D. On passe dans le répertoire de l'iteration a calculer
+  MESSAGE (". On passe dans DirCompute = " << DirCompute);
+  CHDIR(DirCompute);
+
+  // E. Les données de l'exécution HOMARD
+  // E.1. L'objet du texte du fichier de configuration
+  SMESHHOMARDImpl::HomardDriver* myDriver = new SMESHHOMARDImpl::HomardDriver(siter, siterp1);
+  myDriver->TexteInit(DirCompute, LogFile, "English");
+
+  // E.2. Le maillage associe a l'iteration
+  const char* NomMesh = myIteration1->GetMeshName();
+  MESSAGE (". NomMesh = " << NomMesh);
+  const char* MeshFile = myIteration1->GetMeshFile();
+  MESSAGE (". MeshFile = " << MeshFile);
+
+  // E.3. Les données du traitement HOMARD
+  iaux = 1;
+  myDriver->TexteMaillageHOMARD(DirCompute, siterp1, iaux);
+  myDriver->TexteMaillage(NomMesh, MeshFile, 1);
+  codret = ComputeAdap(myDriver);
+
+  // E.4. Ajout des informations liees a l'eventuel suivi de frontiere
+  int BoundaryOption = DriverTexteBoundary(myDriver);
+
+  // E.5. Ecriture du texte dans le fichier
+  MESSAGE (". Ecriture du texte dans le fichier de configuration; codret = "<<codret);
+  if (codret == 0)
+  { myDriver->CreeFichier(); }
+
+  // G. Execution
+  //
+  int codretexec = 1789;
+  if (codret == 0) {
+    codretexec = myDriver->ExecuteHomard();
+    //
+    MESSAGE ("Erreur en executant HOMARD : " << codretexec);
+    // En mode adaptation, on ajuste l'etat de l'iteration
+    if (codretexec == 0) { myIteration1->SetState(2); }
+    else                 { myIteration1->SetState(1); }
+  }
+
+  // H. Gestion des resultats
+  if (codret == 0) {
+    std::string Commentaire;
+    // H.1. Le fichier des messages, dans tous les cas
+    Commentaire = "log";
+    Commentaire += " " + siterp1;
+
+    // H.2. Si tout s'est bien passe :
+    if (codretexec == 0) {
+      // H.2.1. Le fichier de bilan
+      Commentaire = "Summary";
+      Commentaire += " " + siterp1;
+      // H.2.2. Le fichier de  maillage obtenu
+      std::stringstream saux0;
+      Commentaire = "Mesh";
+      Commentaire += " " + siterp1;
+      if (_PublishMeshOUT) PublishResultInSmesh(MeshFile);
+    }
+    // H.3 Message d'erreur
+    if (codretexec != 0) {
+      std::string text = "";
+      // Message d'erreur en cas de probleme en adaptation
+      text = "Error during the adaptation.\n";
+      bool stopvu = false;
+      std::ifstream fichier(LogFile.c_str());
+      if (fichier) { // ce test échoue si le fichier n'est pas ouvert
+        std::string ligne; // variable contenant chaque ligne lue
+        while (std::getline(fichier, ligne)) {
+          //INFOS(ligne);
+          if (stopvu) { text += ligne+ "\n"; }
+          else {
+            int position = ligne.find("===== HOMARD ===== STOP =====");
+            if (position > 0) { stopvu = true; }
+          }
+        }
+      }
+      text += "\n\nSee the file " + LogFile + "\n";
+      INFOS (text);
+      SALOME::ExceptionStruct es;
+      es.type = SALOME::BAD_PARAM;
+      es.text = CORBA::string_dup(text.c_str());
+      throw SALOME::SALOME_Exception(es);
+    }
+  }
+
+  // I. Menage et retour dans le répertoire du cas
+  if (codret == 0) {
+    delete myDriver;
+    MESSAGE (". On retourne dans nomDirWork = " << nomDirWork);
+    CHDIR(nomDirWork.c_str());
+  }
+
+  // J. Suivi de la frontière CAO
+  if (codret == 0) {
+    if ((BoundaryOption % 5 == 0) && (codretexec == 0)) {
+      MESSAGE ("Suivi de frontière CAO");
+      codret = ComputeCAO();
+    }
+  }
+
+  if (codretexec == 0) {
+    // Python Dump
+    PythonDump();
+
+    // Delete log file, if required
+    if (myIteration1 != NULL) {
+      MESSAGE("myIteration1->GetLogFile() = " << myIteration1->GetLogFile());
+      if (_LogInFile && _RemoveLogOnSuccess) {
+        // Remove log file on success
+        SMESH_File(myIteration1->GetLogFile(), false).remove();
+      }
+    }
+
+    // Clean all data
+    DeleteCase();
+  }
+
+  return codretexec;
+}
+
+void HOMARD_Gen_i::DeleteCase()
+{
+  MESSAGE ("DeleteCase");
+  if (myCase->_is_nil()) return;
+
+  // Delete all boundaries
+  _mesBoundarys.clear();
+
+  // Delete iterations
+  DeleteIteration(1);
+  DeleteIteration(0);
+
+  // Delete case
+  myCase = SMESHHOMARD::HOMARD_Cas::_nil();
+
+  // Delete tmp mesh file
+  if (!_CaseOnMedFile && !_TmpMeshFile.empty()) {
+    SMESH_File aFile (_TmpMeshFile, false);
+    if (aFile.exists()) aFile.remove();
+    _TmpMeshFile = "";
+  }
+  _SmeshMesh = SMESH::SMESH_Mesh::_nil();
+}
+
+//=============================================================================
+// Calcul d'une iteration : partie spécifique à l'adaptation
+//=============================================================================
+CORBA::Long HOMARD_Gen_i::ComputeAdap(SMESHHOMARDImpl::HomardDriver* myDriver)
+{
+  MESSAGE ("ComputeAdap");
+
+  // A. Prealable
+  // A.1. Bases
+  int codret = 0;
+  // Numero de l'iteration
+  int NumeIter = 1;
+  std::stringstream saux0;
+  saux0 << NumeIter-1;
+  std::string siter = saux0.str();
+  if (NumeIter < 11) { siter = "0" + siter; }
+
+  // B. L'iteration parent
+  ASSERT(myIteration0);
+
+  // C. Le sous-répertoire de l'iteration precedente
+  char* DirComputePa = ComputeDirPaManagement();
+  MESSAGE(". DirComputePa = " << DirComputePa);
+
+  // D. Les données de l'adaptation HOMARD
+  // D.1. Le type de conformite
+  MESSAGE (". ConfType = " << _ConfType);
+
+  // D.3. Le maillage de depart
+  const char* NomMeshParent = myIteration0->GetMeshName();
+  MESSAGE (". NomMeshParent = " << NomMeshParent);
+  const char* MeshFileParent = myIteration0->GetMeshFile();
+  MESSAGE (". MeshFileParent = " << MeshFileParent);
+
+  // D.4. Le maillage associe a l'iteration
+  const char* MeshFile = myIteration1->GetMeshFile();
+  MESSAGE (". MeshFile = " << MeshFile);
+  FILE *file = fopen(MeshFile,"r");
+  if (file != NULL) {
+    fclose(file);
+    // CleanOption = 0 : report an error if output mesh file exists
+    // CleanOption = 1 : destruction du répertoire d'execution
+    int CleanOption = 1;
+    if (CleanOption == 0) {
+      SALOME::ExceptionStruct es;
+      es.type = SALOME::BAD_PARAM;
+      std::string text = "MeshFile : " + std::string(MeshFile) + " already exists ";
+      es.text = CORBA::string_dup(text.c_str());
+      throw SALOME::SALOME_Exception(es);
+    }
+    else {
+      std::string commande = "rm -f " + std::string(MeshFile);
+      codret = system(commande.c_str());
+      if (codret != 0) {
+        SALOME::ExceptionStruct es;
+        es.type = SALOME::BAD_PARAM;
+        es.text = "The mesh file cannot be deleted.";
+        throw SALOME::SALOME_Exception(es);
+      }
+    }
+  }
+
+  // E. Texte du fichier de configuration
+  // E.1. Incontournables du texte
+  myDriver->TexteAdap();
+  int iaux = 0;
+  myDriver->TexteMaillageHOMARD(DirComputePa, siter, iaux);
+  myDriver->TexteMaillage(NomMeshParent, MeshFileParent, 0);
+  myDriver->TexteConfRaffDera(_ConfType);
+
+  // E.6. Ajout des options avancees
+  //myDriver->TexteAdvanced(NivMax, DiamMin, AdapInit, ExtraOutput);
+  myDriver->TexteAdvanced(-1, -1.0, 0, 1);
+
+  // E.7. Ajout des informations sur le deroulement de l'execution
+  int MessInfo = myIteration1->GetInfoCompute();
+  MESSAGE (". MessInfo = " << MessInfo);
+  myDriver->TexteInfoCompute(MessInfo);
+
+  return codret;
+}
+//=============================================================================
+// Calcul d'une iteration : partie spécifique au suivi de frontière CAO
+//=============================================================================
+CORBA::Long HOMARD_Gen_i::ComputeCAO()
+{
+  MESSAGE ("ComputeCAO");
+
+  // A. Prealable
+  // A.1. Bases
+  int codret = 0;
+#ifndef DISABLE_HOMARD_ADAPT
+  // A.2. Le sous-répertoire de l'iteration en cours de traitement
+  char* DirCompute = myIteration1->GetDirName();
+  // A.3. Le maillage résultat de l'iteration en cours de traitement
+  char* MeshFile = myIteration1->GetMeshFile();
+
+  // B. Les données pour FrontTrack
+  // B.1. Le maillage à modifier
+  const std::string theInputMedFile = MeshFile;
+  MESSAGE (". theInputMedFile  = " << theInputMedFile);
+
+  // B.2. Le maillage après modification : fichier identique
+  const std::string theOutputMedFile = MeshFile;
+  MESSAGE (". theOutputMedFile = " << theInputMedFile);
+
+  // B.3. La liste des fichiers contenant les numéros des noeuds à bouger
+  std::vector< std::string > theInputNodeFiles;
+  MESSAGE (". DirCompute = " << DirCompute);
+  std::basic_string<char>::size_type bilan;
+  int icpt = 0;
+#ifndef WIN32
+  DIR *dp;
+  struct dirent *dirp;
+  dp  = opendir(DirCompute);
+  while ((dirp = readdir(dp)) != NULL)
+  {
+    std::string file_name(dirp->d_name);
+    bilan = file_name.find("fr");
+    if (bilan != string::npos)
+    {
+      std::stringstream filename_total;
+      filename_total << DirCompute << "/" << file_name;
+      theInputNodeFiles.push_back(filename_total.str());
+      icpt += 1;
+    }
+  }
+#else
+  HANDLE hFind = INVALID_HANDLE_VALUE;
+  WIN32_FIND_DATA ffd;
+  hFind = FindFirstFile(DirNameStart, &ffd);
+  if (INVALID_HANDLE_VALUE != hFind) {
+    while (FindNextFile(hFind, &ffd) != 0) {
+      std::string file_name(ffd.cFileName);
+      bilan = file_name.find("fr");
+      if (bilan != string::npos)
+      {
+        std::stringstream filename_total;
+        filename_total << DirCompute << "/" << file_name;
+        theInputNodeFiles.push_back(filename_total.str());
+        icpt += 1;
+      }
+    }
+    FindClose(hFind);
+  }
+#endif
+  for (int i = 0; i < icpt; i++)
+  { MESSAGE (". theInputNodeFiles["<< i << "] = " << theInputNodeFiles[i]); }
+
+  // B.4. Le fichier de la CAO
+  SMESHHOMARD::ListBoundaryGroupType* ListBoundaryGroupType = myCase->GetBoundaryGroup();
+  std::string BoundaryName = std::string((*ListBoundaryGroupType)[0]);
+  MESSAGE (". BoundaryName = " << BoundaryName);
+  SMESHHOMARD::HOMARD_Boundary_var myBoundary = _mesBoundarys[BoundaryName];
+  const std::string theXaoFileName = myBoundary->GetDataFile();
+  MESSAGE (". theXaoFileName = " << theXaoFileName);
+
+  // C. Lancement des projections
+  MESSAGE (". Lancement des projections");
+
+  assert(Py_IsInitialized());
+  PyGILState_STATE gstate;
+  gstate = PyGILState_Ensure();
+  PyRun_SimpleString("from FrontTrack import FrontTrack");
+  // FrontTrack().track( fic_med_brut, fic_med_new, l_fr, xao_file )
+  std::string pyCommand ("FrontTrack().track( \"");
+  pyCommand += theInputMedFile + "\", \"" + theOutputMedFile + "\", [";
+  for (int i = 0; i < icpt; i++) {
+    if (i > 0) pyCommand += ", ";
+    pyCommand += "\"";
+    pyCommand += theInputNodeFiles[i];
+    pyCommand += "\"";
+  }
+  pyCommand += "], \"" + theXaoFileName + "\", False )";
+  MESSAGE (". Lancement des projections: pyCommand = " << pyCommand);
+  PyRun_SimpleString(pyCommand.c_str());
+  PyGILState_Release(gstate);
+
+  // D. Transfert des coordonnées modifiées dans le fichier historique de HOMARD
+  //    On lance une exécution spéciale de HOMARD en attendant
+  //    de savoir le faire avec MEDCoupling
+  MESSAGE (". Transfert des coordonnées");
+  codret = ComputeCAObis();
+#endif
+  return codret;
+}
+//=============================================================================
+//=============================================================================
+// Transfert des coordonnées en suivi de frontière CAO
+//=============================================================================
+CORBA::Long HOMARD_Gen_i::ComputeCAObis()
+{
+  MESSAGE ("ComputeCAObis");
+
+  // A. Prealable
+  int codret = 0;
+
+  // A.1. Controle de la possibilite d'agir
+  // A.1.1. Etat de l'iteration
+  int etat = myIteration1->GetState();
+  MESSAGE ("etat = " << etat);
+  // A.1.2. L'iteration doit être calculee
+  if (etat == 1) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "This iteration is not computed.";
+    throw SALOME::SALOME_Exception(es);
+    return 1;
+  }
+  // A.2. Numero de l'iteration
+  //     siterp1 : numero de l'iteration a traiter
+  int NumeIter = myIteration1->GetNumber();
+  std::string siterp1;
+  std::stringstream saux1;
+  saux1 << NumeIter;
+  siterp1 = saux1.str();
+  if (NumeIter < 10) { siterp1 = "0" + siterp1; }
+  MESSAGE ("siterp1 = "<<siterp1);
+
+  // A.3. Le cas
+  ASSERT(!CORBA::is_nil(myCase));
+
+  // A.4. Le sous-répertoire de l'iteration a traiter
+  char* DirCompute = myIteration1->GetDirName();
+  MESSAGE(". DirCompute = " << DirCompute);
+
+  // C. Le fichier des messages
+  std::string LogFile = DirCompute;
+  LogFile += "/Liste." + siterp1 + ".maj_coords.log";
+  MESSAGE (". LogFile = " << LogFile);
+  myIteration1->SetFileInfo(LogFile.c_str());
+
+  // D. On passe dans le répertoire de l'iteration a calculer
+  MESSAGE (". On passe dans DirCompute = " << DirCompute);
+  CHDIR(DirCompute);
+
+  // E. Les données de l'exécution HOMARD
+  // E.1. L'objet du texte du fichier de configuration
+  SMESHHOMARDImpl::HomardDriver* myDriver = new SMESHHOMARDImpl::HomardDriver("", siterp1);
+  myDriver->TexteInit(DirCompute, LogFile, "English");
+
+  // E.2. Le maillage associe a l'iteration
+  const char* NomMesh = myIteration1->GetMeshName();
+  MESSAGE (". NomMesh = " << NomMesh);
+  const char* MeshFile = myIteration1->GetMeshFile();
+  MESSAGE (". MeshFile = " << MeshFile);
+
+  // E.3. Les données du traitement HOMARD
+  myDriver->TexteMajCoords(NumeIter);
+  int iaux = 0;
+  myDriver->TexteMaillageHOMARD(DirCompute, siterp1, iaux);
+  myDriver->TexteMaillage(NomMesh, MeshFile, 0);
+  //
+  // E.4. Ecriture du texte dans le fichier
+  MESSAGE (". Ecriture du texte dans le fichier de configuration; codret = "<<codret);
+  if (codret == 0) myDriver->CreeFichier();
+
+  // F. Execution
+  //
+  int codretexec = 1789;
+  if (codret == 0) {
+    codretexec = myDriver->ExecuteHomard();
+    MESSAGE ("Erreur en executant HOMARD : " << codretexec);
+  }
+
+  // G. Gestion des resultats
+  if (codret == 0) {
+    // G.1. Le fichier des messages, dans tous les cas
+    std::string Commentaire = "logmaj_coords";
+    // G.2 Message d'erreur
+    if (codretexec != 0) {
+      std::string text = "\n\nSee the file " + LogFile + "\n";
+      INFOS (text);
+      SALOME::ExceptionStruct es;
+      es.type = SALOME::BAD_PARAM;
+      es.text = CORBA::string_dup(text.c_str());
+      throw SALOME::SALOME_Exception(es);
+
+      // On force le succes pour pouvoir consulter le fichier log
+      codretexec = 0;
+    }
+  }
+
+  // H. Menage et retour dans le répertoire du cas
+  if (codret == 0) { delete myDriver; }
+
+  return codret;
+}
+//=============================================================================
+// Creation d'un nom de sous-répertoire pour l'iteration au sein d'un répertoire parent
+//  nomrep : nom du répertoire parent
+//  num : le nom du sous-répertoire est sous la forme 'In', n est >= num
+//=============================================================================
+char* HOMARD_Gen_i::CreateDirNameIter(const char* nomrep, CORBA::Long num)
+{
+#ifndef DISABLE_HOMARD_ADAPT 
+  MESSAGE ("CreateDirNameIter : nomrep ="<< nomrep << ", num = "<<num);
+  // On verifie que le répertoire parent existe
+  int codret = CHDIR(nomrep);
+  if (codret != 0) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "The directory of the case does not exist.";
+    throw SALOME::SALOME_Exception(es);
+  }
+  std::string nomDirActuel = getenv("PWD");
+  std::string DirName;
+  // On boucle sur tous les noms possibles jusqu'a trouver un nom correspondant a un répertoire inconnu
+  bool a_chercher = true;
+  while (a_chercher) {
+    // On passe dans le répertoire parent
+
+    CHDIR(nomrep);
+    // On recherche un nom sous la forme Iabc, avec abc representant le numero
+    int jaux;
+    if      (num <    100) { jaux = 2; }
+    else if (num <   1000) { jaux = 3; }
+    else if (num <  10000) { jaux = 4; }
+    else if (num < 100000) { jaux = 5; }
+    else                     { jaux = 9; }
+    std::ostringstream iaux;
+    iaux << std::setw(jaux) << std::setfill('0') << num;
+    std::ostringstream DirNameA;
+    DirNameA << "I" << iaux.str();
+    // Si on ne pas peut entrer dans le répertoire, on doit verifier
+    // que c'est bien un probleme d'absence
+    if (CHDIR(DirNameA.str().c_str()) != 0)
+    {
+      bool existe = false;
+#ifndef WIN32
+      DIR *dp;
+      struct dirent *dirp;
+      dp  = opendir(nomrep);
+      while ((dirp = readdir(dp)) != NULL)
+      {
+        std::string file_name(dirp->d_name);
+#else
+      HANDLE hFind = INVALID_HANDLE_VALUE;
+      WIN32_FIND_DATA ffd;
+      hFind = FindFirstFile(nomrep, &ffd);
+      if (INVALID_HANDLE_VALUE != hFind) {
+        while (FindNextFile(hFind, &ffd) != 0) {
+         if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) continue; //skip directories
+         std::string file_name(ffd.cFileName);
+#endif
+        if (file_name == DirNameA.str()) { existe = true; }
+      }
+#ifndef WIN32
+      closedir(dp);
+#else
+      FindClose(hFind);
+#endif
+      if (!existe)
+      {
+        DirName = DirNameA.str();
+        a_chercher = false;
+        break;
+      }
+    }
+    num += 1;
+  }
+
+  MESSAGE ("==> DirName = " << DirName);
+  MESSAGE (". On retourne dans nomDirActuel = " << nomDirActuel);
+  CHDIR(nomDirActuel.c_str());
+  return CORBA::string_dup(DirName.c_str());
+#else
+       return "";
+#endif
+}
+//=============================================================================
+// Calcul d'une iteration : gestion du répertoire de calcul
+//=============================================================================
+char* HOMARD_Gen_i::ComputeDirManagement()
+{
+#ifndef DISABLE_HOMARD_ADAPT
+  MESSAGE ("ComputeDirManagement : répertoires pour le calcul");
+
+  //Si le sous-répertoire existe :
+  //  CleanOption =  0 : on sort en erreur si le répertoire n'est pas vide
+  //  CleanOption =  1 : on fait le menage du répertoire
+  //  CleanOption = -1 : on ne fait rien
+  int CleanOption = 0;
+
+  // B.2. Le répertoire du cas
+  const char* nomDirCase = myCase->GetDirName();
+  MESSAGE (". nomDirCase = " << nomDirCase);
+
+  // B.3. Le sous-répertoire de l'iteration a calculer, puis le répertoire complet a creer
+  // B.3.1. Le nom du sous-répertoire
+  const char* nomDirIt = myIteration1->GetDirNameLoc();
+
+  // B.3.2. Le nom complet du sous-répertoire
+  std::stringstream DirCompute;
+  DirCompute << nomDirCase << "/" << nomDirIt;
+  MESSAGE (". DirCompute = " << DirCompute.str());
+
+  // B.3.3. Si le sous-répertoire n'existe pas, on le cree
+  if (CHDIR(DirCompute.str().c_str()) != 0)
+  {
+#ifndef WIN32
+    if (mkdir(DirCompute.str().c_str(), S_IRWXU|S_IRGRP|S_IXGRP) != 0)
+#else
+    if (_mkdir(DirCompute.str().c_str()) != 0)
+#endif
+    {
+       // GERALD -- QMESSAGE BOX
+       std::cerr << "Pb Creation du répertoire DirCompute = " << DirCompute.str() << std::endl;
+       VERIFICATION("Pb a la creation du répertoire" == 0);
+    }
+  }
+  else
+  {
+    //  Le répertoire existe
+    //  On demande de faire le menage de son contenu :
+    if (CleanOption == 1) {
+      MESSAGE (". Menage du répertoire DirCompute = " << DirCompute.str());
+      std::string commande = "rm -rf " + DirCompute.str()+"/*";
+      int codret = system(commande.c_str());
+      if (codret != 0)
+      {
+        // GERALD -- QMESSAGE BOX
+        std::cerr << ". Menage du répertoire de calcul" << DirCompute.str() << std::endl;
+        VERIFICATION("Pb au menage du répertoire de calcul" == 0);
+      }
+    }
+    //  On n'a pas demande de faire le menage de son contenu : on sort en erreur :
+    else {
+      if (CleanOption == 0) {
+#ifndef WIN32
+        DIR *dp;
+        struct dirent *dirp;
+        dp  = opendir(DirCompute.str().c_str());
+        bool result = true;
+        while ((dirp = readdir(dp)) != NULL && result)
+        {
+          std::string file_name(dirp->d_name);
+          result = file_name.empty() || file_name == "." || file_name == ".."; //if any file - break and return false
+        }
+        closedir(dp);
+#else
+       HANDLE hFind = INVALID_HANDLE_VALUE;
+       WIN32_FIND_DATA ffd;
+       hFind = FindFirstFile(DirCompute.str().c_str(), &ffd);
+       bool result = true;
+       if (INVALID_HANDLE_VALUE != hFind) {
+         while (FindNextFile(hFind, &ffd) != 0) {
+          if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) continue; //skip directories
+          std::string file_name(ffd.cFileName);
+          result = file_name.empty() || file_name == "." || file_name == ".."; //if any file - break and return false
+         }
+       }
+       FindClose(hFind);
+#endif
+        if (result == false)
+        {
+          SALOME::ExceptionStruct es;
+          es.type = SALOME::BAD_PARAM;
+          std::string text = "Directory : " + DirCompute.str() + " is not empty";
+          es.text = CORBA::string_dup(text.c_str());
+          throw SALOME::SALOME_Exception(es);
+          VERIFICATION("Directory is not empty" == 0);
+        }
+      }
+    }
+  }
+
+  return CORBA::string_dup(DirCompute.str().c_str());
+#else
+       return "";
+#endif
+}
+//=============================================================================
+// Calcul d'une iteration : gestion du répertoire de calcul de l'iteration parent
+//=============================================================================
+char* HOMARD_Gen_i::ComputeDirPaManagement()
+{
+  MESSAGE ("ComputeDirPaManagement : répertoires pour le calcul");
+  // Le répertoire du cas
+  const char* nomDirCase = myCase->GetDirName();
+  MESSAGE (". nomDirCase = " << nomDirCase);
+
+  // Le sous-répertoire de l'iteration precedente
+
+  const char* nomDirItPa = myIteration0->GetDirNameLoc();
+  std::stringstream DirComputePa;
+  DirComputePa << nomDirCase << "/" << nomDirItPa;
+  MESSAGE(". nomDirItPa = " << nomDirItPa);
+  MESSAGE(". DirComputePa = " << DirComputePa.str());
+
+  return CORBA::string_dup(DirComputePa.str().c_str());
+}
+
+//=============================================================================
+// Calcul d'une iteration : ecriture des frontieres dans le fichier de configuration
+// On ecrit dans l'ordre :
+//    1. la definition des frontieres
+//    2. les liens avec les groupes
+//    3. un entier resumant le type de comportement pour les frontieres
+//=============================================================================
+int HOMARD_Gen_i::DriverTexteBoundary(SMESHHOMARDImpl::HomardDriver* myDriver)
+{
+  MESSAGE ("... DriverTexteBoundary");
+  // 1. Recuperation des frontieres
+  std::list<std::string>  ListeBoundaryTraitees;
+  SMESHHOMARD::ListBoundaryGroupType* ListBoundaryGroupType = myCase->GetBoundaryGroup();
+  int numberOfitems = ListBoundaryGroupType->length();
+  MESSAGE ("... number of string for Boundary+Group = " << numberOfitems);
+  int BoundaryOption = 1;
+  // 2. Parcours des frontieres pour ecrire leur description
+  int NumBoundaryAnalytical = 0;
+  for (int NumBoundary = 0; NumBoundary< numberOfitems; NumBoundary=NumBoundary+2)
+  {
+    std::string BoundaryName = std::string((*ListBoundaryGroupType)[NumBoundary]);
+    MESSAGE ("... BoundaryName = " << BoundaryName);
+    // 2.1. La frontiere a-t-elle deja ete ecrite ?
+    //      Cela arrive quand elle est liee a plusieurs groupes. Il ne faut l'ecrire que la premiere fois
+    int A_faire = 1;
+    std::list<std::string>::const_iterator it = ListeBoundaryTraitees.begin();
+    while (it != ListeBoundaryTraitees.end())
+    {
+      MESSAGE ("..... BoundaryNameTraitee = " << *it);
+      if (BoundaryName == *it) { A_faire = 0; }
+      it++;
+    }
+    // 2.2. Ecriture de la frontiere
+    if (A_faire == 1)
+    {
+      // 2.2.1. Caracteristiques de la frontiere
+      SMESHHOMARD::HOMARD_Boundary_var myBoundary = _mesBoundarys[BoundaryName];
+      ASSERT(!CORBA::is_nil(myBoundary));
+      int BoundaryType = myBoundary->GetType();
+      MESSAGE ("... BoundaryType = " << BoundaryType);
+      // 2.2.2. Ecriture selon le type
+      // 2.2.2.1. Cas d une frontiere CAO
+      if (BoundaryType == -1)
+      {
+//         const char* CAOFile = myBoundary->GetDataFile();
+//         MESSAGE (". CAOFile = " << CAOFile);
+        if (BoundaryOption % 5 != 0) { BoundaryOption = BoundaryOption*5; }
+      }
+      // 2.2.2.2. Cas d une frontiere discrete
+      else if (BoundaryType == 0)
+      {
+        const char* MeshName = myBoundary->GetMeshName();
+        MESSAGE (". MeshName = " << MeshName);
+        const char* MeshFile = myBoundary->GetDataFile();
+        MESSAGE (". MeshFile = " << MeshFile);
+        myDriver->TexteBoundaryDi(MeshName, MeshFile);
+        if (BoundaryOption % 2 != 0) { BoundaryOption = BoundaryOption*2; }
+      }
+      // 2.2.2.3. Cas d une frontiere analytique
+      else
+      {
+        NumBoundaryAnalytical++;
+        SMESHHOMARD::double_array* coor = myBoundary->GetCoords();
+        if (BoundaryType == 1) // Cas d un cylindre
+        {
+          myDriver->TexteBoundaryAn(BoundaryName, NumBoundaryAnalytical, BoundaryType, (*coor)[0], (*coor)[1], (*coor)[2], (*coor)[3], (*coor)[4], (*coor)[5], (*coor)[6], 0.);
+          if (BoundaryOption % 3 != 0) { BoundaryOption = BoundaryOption*3; }
+        }
+        else if (BoundaryType == 2) // Cas d une sphere
+        {
+          myDriver->TexteBoundaryAn(BoundaryName, NumBoundaryAnalytical, BoundaryType, (*coor)[0], (*coor)[1], (*coor)[2], (*coor)[3], 0., 0., 0., 0.);
+          if (BoundaryOption % 3 != 0) { BoundaryOption = BoundaryOption*3; }
+        }
+        else if (BoundaryType == 3) // Cas d un cone defini par un axe et un angle
+        {
+          myDriver->TexteBoundaryAn(BoundaryName, NumBoundaryAnalytical, BoundaryType, (*coor)[0], (*coor)[1], (*coor)[2], (*coor)[3], (*coor)[4], (*coor)[5], (*coor)[6], 0.);
+          if (BoundaryOption % 3 != 0) { BoundaryOption = BoundaryOption*3; }
+        }
+        else if (BoundaryType == 4) // Cas d un cone defini par les 2 rayons
+        {
+          myDriver->TexteBoundaryAn(BoundaryName, NumBoundaryAnalytical, BoundaryType, (*coor)[0], (*coor)[1], (*coor)[2], (*coor)[3], (*coor)[4], (*coor)[5], (*coor)[6], (*coor)[7]);
+          if (BoundaryOption % 3 != 0) { BoundaryOption = BoundaryOption*3; }
+        }
+        else if (BoundaryType == 5) // Cas d un tore
+        {
+          myDriver->TexteBoundaryAn(BoundaryName, NumBoundaryAnalytical, BoundaryType, (*coor)[0], (*coor)[1], (*coor)[2], (*coor)[3], (*coor)[4], (*coor)[5], (*coor)[6], (*coor)[7]);
+          if (BoundaryOption % 3 != 0) { BoundaryOption = BoundaryOption*3; }
+        }
+      }
+      // 2.2.3. Memorisation du traitement
+      ListeBoundaryTraitees.push_back(BoundaryName);
+    }
+  }
+  // 3. Parcours des frontieres pour ecrire les liens avec les groupes
+  NumBoundaryAnalytical = 0;
+  for (int NumBoundary = 0; NumBoundary< numberOfitems; NumBoundary=NumBoundary+2)
+  {
+    std::string BoundaryName = std::string((*ListBoundaryGroupType)[NumBoundary]);
+    MESSAGE ("... BoundaryName = " << BoundaryName);
+    SMESHHOMARD::HOMARD_Boundary_var myBoundary = _mesBoundarys[BoundaryName];
+    ASSERT(!CORBA::is_nil(myBoundary));
+    int BoundaryType = myBoundary->GetType();
+    MESSAGE ("... BoundaryType = " << BoundaryType);
+    // 3.1. Recuperation du nom du groupe
+    std::string GroupName = std::string((*ListBoundaryGroupType)[NumBoundary+1]);
+    MESSAGE ("... GroupName = " << GroupName);
+    // 3.2. Cas d une frontiere CAO
+    if (BoundaryType == -1)
+    {
+      if (GroupName.size() > 0) { myDriver->TexteBoundaryCAOGr (GroupName); }
+    }
+    // 3.3. Cas d une frontiere discrete
+    else if (BoundaryType == 0)
+    {
+      if (GroupName.size() > 0) { myDriver->TexteBoundaryDiGr (GroupName); }
+    }
+    // 3.4. Cas d une frontiere analytique
+    else
+    {
+      NumBoundaryAnalytical++;
+      myDriver->TexteBoundaryAnGr (BoundaryName, NumBoundaryAnalytical, GroupName);
+    }
+  }
+  // 4. Ecriture de l'option finale
+  myDriver->TexteBoundaryOption(BoundaryOption);
+//
+  return BoundaryOption;
+}
+//===========================================================================
+//===========================================================================
+
+//===========================================================================
+// Publication
+//===========================================================================
+void HOMARD_Gen_i::PublishResultInSmesh(const char* NomFich)
+{
+  // Prevent dump of CreateMeshesFromMED
+  SMESH::TPythonDump pDump; // do not delete this line of code
+
+  MESSAGE("PublishResultInSmesh " << NomFich);
+  if (CORBA::is_nil(SMESH_Gen_i::GetSMESHGen()->getStudyServant())) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "Invalid study context";
+    throw SALOME::SALOME_Exception(es);
+  }
+
+  // Le module SMESH est-il actif ?
+  SALOMEDS::SObject_var aSmeshSO =
+    SMESH_Gen_i::GetSMESHGen()->getStudyServant()->FindComponent("SMESH");
+  //
+  // TODO?
+  // Temporary suppressed depublication of mesh with the same name of file
+  /*
+  if (!CORBA::is_nil(aSmeshSO)) {
+    // On verifie que le fichier n est pas deja publie
+    SALOMEDS::ChildIterator_var aIter =
+      SMESH_Gen_i::GetSMESHGen()->getStudyServant()->NewChildIterator(aSmeshSO);
+    for (; aIter->More(); aIter->Next()) {
+      SALOMEDS::SObject_var aSO = aIter->Value();
+      SALOMEDS::GenericAttribute_var aGAttr;
+      if (aSO->FindAttribute(aGAttr, "AttributeExternalFileDef")) {
+        SALOMEDS::AttributeExternalFileDef_var anAttr =
+          SALOMEDS::AttributeExternalFileDef::_narrow(aGAttr);
+        CORBA::String_var value = anAttr->Value();
+        if (strcmp((const char*)value, NomFich) == 0) {
+          MESSAGE ("PublishResultInSmesh : le fichier " << NomFich << " est deja publie.");
+          // Pour un fichier importe, on ne republie pas
+          // Option = 0 : fichier issu d'une importation
+          // Option = 1 : fichier issu d'une execution HOMARD
+          if (Option == 0) { return; }
+          // Pour un fichier calcule, on commence par faire la depublication
+          else {
+            MESSAGE("PublishResultInSmesh : depublication");
+            if (aSO->FindAttribute(aGAttr, "AttributeName")) {
+              SALOMEDS::AttributeName_var anAttr2 = SALOMEDS::AttributeName::_narrow(aGAttr);
+              CORBA::String_var value2 = anAttr2->Value();
+              std::string MeshName = string(value2);
+              MESSAGE("PublishResultInSmesh : depublication de " << MeshName);
+              DeleteResultInSmesh(NomFich, MeshName);
+            }
+          }
+        }
+      }
+    }
+  }
+  */
+
+  // On enregistre le fichier
+  MESSAGE("Enregistrement du fichier");
+  //
+  //SMESH::SMESH_Gen_var aSmeshEngine = this->retrieveSMESHInst();
+  SMESH_Gen_i* aSmeshEngine = SMESH_Gen_i::GetSMESHGen();
+  //
+  //ASSERT(!CORBA::is_nil(aSmeshEngine));
+  aSmeshEngine->UpdateStudy();
+  SMESH::DriverMED_ReadStatus theStatus;
+
+  // On met a jour les attributs AttributeExternalFileDef et AttributePixMap
+  SMESH::mesh_array* mesMaillages = aSmeshEngine->CreateMeshesFromMED(NomFich, theStatus);
+  if (CORBA::is_nil(aSmeshSO)) {
+    aSmeshSO = SMESH_Gen_i::GetSMESHGen()->getStudyServant()->FindComponent("SMESH");
+    if (CORBA::is_nil(aSmeshSO)) return;
+  }
+
+  for (int i = 0; i < (int)mesMaillages->length(); i++) {
+    MESSAGE(". Mise a jour des attributs du maillage");
+    SMESH::SMESH_Mesh_var monMaillage = (*mesMaillages)[i];
+    SALOMEDS::SObject_var aSO = SALOMEDS::SObject::_narrow
+      (SMESH_Gen_i::GetSMESHGen()->getStudyServant()->FindObjectIOR
+       (SMESH_Gen_i::GetORB()->object_to_string(monMaillage)));
+    SALOMEDS::StudyBuilder_var aStudyBuilder =
+      SMESH_Gen_i::GetSMESHGen()->getStudyServant()->NewBuilder();
+    SALOMEDS::GenericAttribute_var aGAttr =
+      aStudyBuilder->FindOrCreateAttribute(aSO, "AttributeExternalFileDef");
+    SALOMEDS::AttributeExternalFileDef_var anAttr =
+      SALOMEDS::AttributeExternalFileDef::_narrow(aGAttr);
+    anAttr->SetValue(NomFich);
+    SALOMEDS::GenericAttribute_var aPixMap =
+      aStudyBuilder->FindOrCreateAttribute(aSO, "AttributePixMap");
+    SALOMEDS::AttributePixMap_var anAttr2 = SALOMEDS::AttributePixMap::_narrow(aPixMap);
+    anAttr2->SetPixMap("mesh_tree_mesh.png");
+  }
+}
+
+//=============================================================================
+void HOMARD_Gen_i::DeleteResultInSmesh(std::string NomFich, std::string MeshName)
+{
+  MESSAGE ("DeleteResultInSmesh pour le maillage " << MeshName << " dans le fichier " << NomFich);
+  if (CORBA::is_nil(SMESH_Gen_i::GetSMESHGen()->getStudyServant())) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    es.text = "Invalid study context";
+    throw SALOME::SALOME_Exception(es);
+  }
+
+  // Le module SMESH est-il actif ?
+  SALOMEDS::SObject_var aSmeshSO =
+    SMESH_Gen_i::GetSMESHGen()->getStudyServant()->FindComponent("SMESH");
+  //
+  if (CORBA::is_nil(aSmeshSO)) return;
+  // On verifie que le fichier est deja publie
+  SALOMEDS::StudyBuilder_var myBuilder =
+    SMESH_Gen_i::GetSMESHGen()->getStudyServant()->NewBuilder();
+  SALOMEDS::ChildIterator_var aIter =
+    SMESH_Gen_i::GetSMESHGen()->getStudyServant()->NewChildIterator(aSmeshSO);
+  for (; aIter->More(); aIter->Next()) {
+    SALOMEDS::SObject_var  aSO = aIter->Value();
+    SALOMEDS::GenericAttribute_var aGAttr;
+    if (aSO->FindAttribute(aGAttr, "AttributeExternalFileDef")) {
+      SALOMEDS::AttributeExternalFileDef_var anAttr =
+        SALOMEDS::AttributeExternalFileDef::_narrow(aGAttr);
+      CORBA::String_var value = anAttr->Value();
+      if (strcmp((const char*)value, NomFich.c_str()) == 0) {
+        if (aSO->FindAttribute(aGAttr, "AttributeName")) {
+          SALOMEDS::AttributeName_var anAttr2 = SALOMEDS::AttributeName::_narrow(aGAttr);
+          CORBA::String_var value2 = anAttr2->Value();
+          if (strcmp((const char*)value2, MeshName.c_str()) == 0) {
+            myBuilder->RemoveObjectWithChildren(aSO);
+          }
+        }
+      }
+    }
+  }
+}
+
+void HOMARD_Gen_i::PythonDump()
+{
+  MESSAGE ("Begin PythonDump");
+  SMESH::TPythonDump pd;
+
+  // SMESH_Homard
+  pd << "import SMESHHOMARD\n";
+  //pd << "smeshhomard = " << SMESH_Gen_i::GetSMESHGen() << ".CreateHOMARD_ADAPT()\n";
+  pd << "smeshhomard = " << SMESH_Gen_i::GetSMESHGen() << ".Adaptation(\"Uniform\")\n";
+
+  // Boundaries
+  if (_mesBoundarys.size() > 0) MESSAGE(". Creation of the boundaries");
+  std::map<std::string, SMESHHOMARD::HOMARD_Boundary_var>::const_iterator it_boundary;
+  for (it_boundary  = _mesBoundarys.begin();
+       it_boundary != _mesBoundarys.end(); ++it_boundary) {
+    SMESHHOMARD::HOMARD_Boundary_var maBoundary = (*it_boundary).second;
+    //MESSAGE ("PythonDump  of boundary " << (*it_boundary).first <<
+    //         " : " << maBoundary->GetDumpPython());
+    pd << maBoundary->GetDumpPython();
+  }
+
+  // Case
+  ASSERT(!myCase->_is_nil());
+  MESSAGE (". Creation of the case");
+
+  if (_CaseOnMedFile) {
+    pd << "smeshhomard.CreateCase(\"" << myIteration0->GetMeshName();
+    pd << "\", \"" << myIteration0->GetMeshFile();
+    pd << "\", \"" << myCase->GetDirName() << "\")\n";
+  }
+  else {
+    pd << "smeshhomard.CreateCaseOnMesh(\"" << myIteration0->GetMeshName();
+    pd << "\", " << _SmeshMesh;
+    pd << ".GetMesh(), \"" << myCase->GetDirName() << "\")\n";
+  }
+
+  pd << myCase->GetDumpPython();
+
+  // Preferences
+  pd << "smeshhomard.SetConfType(" << _ConfType << ")\n";
+  pd << "smeshhomard.SetKeepMedOUT(" << (_KeepMedOUT ? "True" : "False") << ")\n";
+  pd << "smeshhomard.SetPublishMeshOUT(" << (_PublishMeshOUT ? "True" : "False") << ")\n";
+  pd << "smeshhomard.SetMeshNameOUT(\"" << _MeshNameOUT << "\")\n";
+  pd << "smeshhomard.SetMeshFileOUT(\"" << _MeshFileOUT << "\")\n";
+
+  pd << "smeshhomard.SetKeepWorkingFiles(" << (_KeepWorkingFiles ? "True" : "False") << ")\n";
+  pd << "smeshhomard.SetLogInFile(" << (_LogInFile ? "True" : "False") << ")\n";
+  if (_LogInFile) pd << "smeshhomard.SetLogFile(\"" << _LogFile << "\")\n";
+  pd << "smeshhomard.SetRemoveLogOnSuccess(" << (_RemoveLogOnSuccess ? "True" : "False") << ")\n";
+  pd << "smeshhomard.SetVerboseLevel(" << _VerboseLevel << ")\n";
+
+  // Compute
+  pd << "smeshhomard.Compute()\n";
+  MESSAGE ("End PythonDump");
+}
+
+void HOMARD_Gen_i::AddBoundary(const char* BoundaryName)
+{
+  MESSAGE("HOMARD_Gen_i::AddBoundary : BoundaryName = " << BoundaryName);
+  if (myCase->_is_nil()) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    std::string text = "The input mesh must be defined before boundary addition";
+    es.text = CORBA::string_dup(text.c_str());
+    throw SALOME::SALOME_Exception(es);
+  }
+  myCase->AddBoundary(BoundaryName);
+}
+
+void HOMARD_Gen_i::AddBoundaryGroup(const char* BoundaryName, const char* Group)
+{
+  MESSAGE("HOMARD_Gen_i::AddBoundaryGroup : BoundaryName = " <<
+          BoundaryName << ", Group = " << Group);
+  if (myCase->_is_nil()) {
+    SALOME::ExceptionStruct es;
+    es.type = SALOME::BAD_PARAM;
+    std::string text = "The input mesh must be defined before boundary group addition";
+    es.text = CORBA::string_dup(text.c_str());
+    throw SALOME::SALOME_Exception(es);
+  }
+  myCase->AddBoundaryGroup(BoundaryName, Group);
+}
+
+//===============================================================================
+// Preferences
+//===============================================================================
+void HOMARD_Gen_i::SetConfType(CORBA::Long theConfType)
+{
+  _ConfType = theConfType;
+}
+void HOMARD_Gen_i::SetKeepMedOUT(bool theKeepMedOUT)
+{
+  _KeepMedOUT = theKeepMedOUT;
+}
+void HOMARD_Gen_i::SetPublishMeshOUT(bool thePublishMeshOUT)
+{
+  _PublishMeshOUT = thePublishMeshOUT;
+}
+void HOMARD_Gen_i::SetKeepWorkingFiles(bool theKeepWorkingFiles)
+{
+  _KeepWorkingFiles = theKeepWorkingFiles;
+}
+void HOMARD_Gen_i::SetLogInFile(bool theLogInFile)
+{
+  _LogInFile = theLogInFile;
+}
+void HOMARD_Gen_i::SetRemoveLogOnSuccess(bool theRemoveLogOnSuccess)
+{
+  _RemoveLogOnSuccess = theRemoveLogOnSuccess;
+}
+void HOMARD_Gen_i::SetVerboseLevel(CORBA::Long theVerboseLevel)
+{
+  _VerboseLevel = theVerboseLevel;
+}
+void HOMARD_Gen_i::SetMeshNameOUT(const char* theMeshNameOUT)
+{
+  _MeshNameOUT = theMeshNameOUT;
+}
+void HOMARD_Gen_i::SetMeshFileOUT(const char* theMeshFileOUT)
+{
+  _MeshFileOUT = theMeshFileOUT;
+}
+void HOMARD_Gen_i::SetLogFile(const char* theLogFile)
+{
+  _LogFile = theLogFile;
+}
+
+// =======================================================================
+std::set<std::string> GetListeGroupesInMedFile(const char * aFile)
+{
+  std::set<std::string> ListeGroupes;
+  med_err erreur = 0;
+  med_idt medIdt;
+  while (erreur == 0) {
+    //  Ouverture du fichier
+    medIdt = MEDfileOpen(aFile,MED_ACC_RDONLY);
+    if (medIdt < 0) {
+      erreur = 1;
+      break;
+    }
+    // Caracteristiques du maillage
+    char meshname[MED_NAME_SIZE+1];
+    med_int spacedim,meshdim;
+    med_mesh_type meshtype;
+    char descriptionription[MED_COMMENT_SIZE+1];
+    char dtunit[MED_SNAME_SIZE+1];
+    med_sorting_type sortingtype;
+    med_int nstep;
+    med_axis_type axistype;
+    int naxis = MEDmeshnAxis(medIdt,1);
+    char *axisname=new char[naxis*MED_SNAME_SIZE+1];
+    char *axisunit=new char[naxis*MED_SNAME_SIZE+1];
+    erreur = MEDmeshInfo(medIdt,
+                            1,
+                            meshname,
+                            &spacedim,
+                            &meshdim,
+                            &meshtype,
+                            descriptionription,
+                            dtunit,
+                            &sortingtype,
+                            &nstep,
+                            &axistype,
+                            axisname,
+                            axisunit);
+    delete[] axisname;
+    delete[] axisunit;
+    if (erreur < 0) { break; }
+    // Nombre de familles
+    med_int nfam;
+    nfam = MEDnFamily(medIdt,meshname);
+    if (nfam < 0) {
+      erreur = 2;
+      break;
+    }
+    // Lecture des caracteristiques des familles
+    for (int i=0;i<nfam;i++) {
+      // Lecture du nombre de groupes
+      med_int ngro = MEDnFamilyGroup(medIdt,meshname,i+1);
+      if (ngro < 0) {
+        erreur = 3;
+        break;
+      }
+      // Lecture de la famille
+      else if (ngro > 0) {
+        char familyname[MED_NAME_SIZE+1];
+        med_int numfam;
+        char* gro = (char*) malloc(MED_LNAME_SIZE*ngro+1);
+        erreur = MEDfamilyInfo(medIdt,
+                               meshname,
+                               i+1,
+                               familyname,
+                               &numfam,
+                               gro);
+        if (erreur < 0) {
+          free(gro);
+          break;
+        }
+        // Lecture des groupes pour une famille de mailles
+        if (numfam < 0) {
+          for (int j=0;j<ngro;j++) {
+            char str2[MED_LNAME_SIZE+1];
+            strncpy(str2,gro+j*MED_LNAME_SIZE,MED_LNAME_SIZE);
+            str2[MED_LNAME_SIZE] = '\0';
+            ListeGroupes.insert(std::string(str2));
+          }
+        }
+        free(gro);
+      }
+    }
+    break;
+  }
+  // Fermeture du fichier
+  if (medIdt > 0) MEDfileClose(medIdt);
+
+  return ListeGroupes;
+}
+
+// =======================================================================
+// Le vecteur en retour contiendra les informations suivantes :
+// en position 0 et 1 Xmin, Xmax et en position 2 Dx si < 0  2D
+// en position 3 et 4 Ymin, Ymax et en position 5 Dy si < 0  2D
+// en position 6 et 7 Zmin, Zmax et en position 8 Dz si < 0  2D
+//  9 distance max dans le maillage
+// =======================================================================
+std::vector<double> GetBoundingBoxInMedFile(const char * aFile)
+{
+  std::vector<double> LesExtremes;
+  med_err erreur = 0;
+  med_idt medIdt;
+  while (erreur == 0) {
+    //  Ouverture du fichier
+    medIdt = MEDfileOpen(aFile,MED_ACC_RDONLY);
+    if (medIdt < 0) {
+      erreur = 1;
+      break;
+    }
+    //Nombre de maillage : on ne peut en lire qu'un seul
+    med_int numberOfMeshes = MEDnMesh(medIdt);
+    if (numberOfMeshes != 1) {
+      erreur = 2;
+      break;
+    }
+    // Caracteristiques du maillage
+    char meshname[MED_NAME_SIZE+1];
+    med_int spacedim,meshdim;
+    med_mesh_type meshtype;
+    char descriptionription[MED_COMMENT_SIZE+1];
+    char dtunit[MED_SNAME_SIZE+1];
+    med_sorting_type sortingtype;
+    med_int nstep;
+    med_axis_type axistype;
+    int naxis = MEDmeshnAxis(medIdt,1);
+    char *axisname=new char[naxis*MED_SNAME_SIZE+1];
+    char *axisunit=new char[naxis*MED_SNAME_SIZE+1];
+    erreur = MEDmeshInfo(medIdt,
+                            1,
+                            meshname,
+                            &spacedim,
+                            &meshdim,
+                            &meshtype,
+                            descriptionription,
+                            dtunit,
+                            &sortingtype,
+                            &nstep,
+                            &axistype,
+                            axisname,
+                            axisunit);
+    delete[] axisname;
+    delete[] axisunit;
+    if (erreur < 0) { break; }
+
+    // Nombre de noeuds
+    med_bool chgt,trsf;
+    med_int nnoe  = MEDmeshnEntity(medIdt,
+                              meshname,
+                              MED_NO_DT,
+                              MED_NO_IT,
+                              MED_NODE,
+                              MED_NO_GEOTYPE,
+                              MED_COORDINATE,
+                              MED_NO_CMODE,
+                              &chgt,
+                              &trsf);
+    if (nnoe < 0) {
+      erreur =  4;
+      break;
+    }
+
+    // Les coordonnees
+    med_float* coo = (med_float*) malloc(sizeof(med_float)*nnoe*spacedim);
+
+    erreur = MEDmeshNodeCoordinateRd(medIdt,
+                                      meshname,
+                                      MED_NO_DT,
+                                      MED_NO_IT,
+                                      MED_NO_INTERLACE,
+                                      coo);
+    if (erreur < 0) {
+      free(coo);
+      break;
+    }
+
+    // Calcul des extremes
+    med_float xmin,xmax,ymin,ymax,zmin,zmax;
+
+    xmin = coo[0];
+    xmax = coo[0];
+    for (int i = 1; i < nnoe; i++) {
+      xmin = std::min(xmin, coo[i]);
+      xmax = std::max(xmax, coo[i]);
+    }
+    //
+    if (spacedim > 1) {
+      ymin = coo[nnoe];
+      ymax = coo[nnoe];
+      for (int i = nnoe + 1; i < 2*nnoe; i++) {
+        ymin = std::min(ymin,coo[i]);
+        ymax = std::max(ymax,coo[i]);
+      }
+    }
+    else {
+      ymin = 0;
+      ymax = 0;
+      zmin = 0;
+      zmax = 0;
+    }
+    //
+    if (spacedim > 2) {
+      zmin = coo[2*nnoe];
+      zmax = coo[2*nnoe];
+      for (int i = 2*nnoe + 1; i < 3*nnoe; i++) {
+        zmin = std::min(zmin,coo[i]);
+        zmax = std::max(zmax,coo[i]);
+      }
+    }
+    else {
+      zmin = 0;
+      zmax = 0;
+    }
+
+    MESSAGE("_______________________________________");
+    MESSAGE("xmin : " << xmin << " xmax : " << xmax);
+    MESSAGE("ymin : " << ymin << " ymax : " << ymax);
+    MESSAGE("zmin : " << zmin << " zmax : " << zmax);
+    MESSAGE("_______________________________________");
+    double epsilon = 1.e-6;
+    LesExtremes.push_back(xmin);
+    LesExtremes.push_back(xmax);
+    LesExtremes.push_back(0);
+    LesExtremes.push_back(ymin);
+    LesExtremes.push_back(ymax);
+    LesExtremes.push_back(0);
+    LesExtremes.push_back(zmin);
+    LesExtremes.push_back(zmax);
+    LesExtremes.push_back(0);
+
+    double max1 = std::max (LesExtremes[1] - LesExtremes[0], LesExtremes[4] - LesExtremes[3]);
+    double max2 = std::max (max1 , LesExtremes[7] - LesExtremes[6]);
+    LesExtremes.push_back(max2);
+
+    // LesExtremes[0] = Xmini du maillage
+    // LesExtremes[1] = Xmaxi du maillage
+    // LesExtremes[2] = increment de progression en X
+    // LesExtremes[3,4,5] : idem pour Y
+    // LesExtremes[6,7,8] : idem pour Z
+    // LesExtremes[9] = ecart maximal entre coordonnees
+    // On fait un traitement pour dans le cas d'une coordonnee constante
+    // inhiber ce cas en mettant un increment negatif
+    //
+    double diff = LesExtremes[1] - LesExtremes[0];
+    if (fabs(diff) > epsilon*max2) { LesExtremes[2] = diff/100.; }
+    else                           { LesExtremes[2] = -1.; }
+
+    diff = LesExtremes[4] - LesExtremes[3];
+    if (fabs(diff) > epsilon*max2) { LesExtremes[5]=diff/100.; }
+    else                           { LesExtremes[5] = -1.; }
+
+    diff = LesExtremes[7] - LesExtremes[6];
+    if (fabs(diff) > epsilon*max2) { LesExtremes[8]=diff/100.; }
+    else                           { LesExtremes[8] = -1.;  }
+
+    MESSAGE ("_______________________________________");
+    MESSAGE ("xmin : " << LesExtremes[0] << " xmax : " << LesExtremes[1] << " xincr : " << LesExtremes[2]);
+    MESSAGE ("ymin : " << LesExtremes[3] << " ymax : " << LesExtremes[4] << " yincr : " << LesExtremes[5]);
+    MESSAGE ("zmin : " << LesExtremes[6] << " zmax : " << LesExtremes[7] << " zincr : " << LesExtremes[8]);
+    MESSAGE ("dmax : " << LesExtremes[9]);
+    MESSAGE ("_______________________________________");
+
+    free(coo);
+    break;
+  }
+  // Fermeture du fichier
+  if (medIdt > 0) MEDfileClose(medIdt);
+
+  return  LesExtremes;
+}
+
+}; // namespace SMESHHOMARD_I
diff --git a/src/SMESH_I/SMESH_Homard_i.hxx b/src/SMESH_I/SMESH_Homard_i.hxx
new file mode 100644 (file)
index 0000000..3e85a26
--- /dev/null
@@ -0,0 +1,310 @@
+// Copyright (C) 2011-2024  CEA, EDF
+//
+// 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
+//
+
+#ifndef _SMESH_HOMARD_I_HXX_
+#define _SMESH_HOMARD_I_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Homard)
+#include CORBA_CLIENT_HEADER(SALOMEDS)
+#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes)
+#include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog)
+#include CORBA_CLIENT_HEADER(SMESH_Gen)
+#include CORBA_CLIENT_HEADER(SMESH_Mesh)
+
+#include "SMESH.hxx"
+#include "SMESH_Homard.hxx"
+//#include "FrontTrack.hxx"
+#include "SALOME_Component_i.hxx"
+#include "SALOME_NamingService.hxx"
+#include "Utils_CorbaException.hxx"
+
+#include <map>
+#include <set>
+#include <string>
+#include <vector>
+
+namespace SMESHHOMARD_I
+{
+
+class SMESH_I_EXPORT HOMARD_Boundary_i : public virtual SALOME::GenericObj_i,
+                                         public virtual POA_SMESHHOMARD::HOMARD_Boundary
+{
+public:
+  HOMARD_Boundary_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
+  HOMARD_Boundary_i();
+
+  virtual ~HOMARD_Boundary_i();
+
+  // Generalites
+  void                   SetName(const char* Name);
+  char*                  GetName();
+
+  char*                  GetDumpPython();
+
+  // Caracteristiques
+  void                   SetType(CORBA::Long Type);
+  CORBA::Long            GetType();
+
+  void                   SetMeshName(const char* MeshName);
+  char*                  GetMeshName();
+
+  void                   SetDataFile(const char* DataFile);
+  char*                  GetDataFile();
+
+  void                   SetCylinder(double Xcentre, double Ycentre, double ZCentre,
+                                      double Xaxe, double Yaxe, double Zaxe,
+                                      double rayon);
+  void                   SetSphere(double Xcentre, double Ycentre, double ZCentre,
+                                    double rayon);
+  void                   SetConeR(double Xcentre1, double Ycentre1, double Zcentre1, double Rayon1,
+                                   double Xcentre2, double Ycentre2, double Zcentre2, double Rayon2);
+  void                   SetConeA(double Xaxe, double Yaxe, double Zaxe, double Angle,
+                                   double Xcentre, double Ycentre, double ZCentre);
+  void                   SetTorus(double Xcentre, double Ycentre, double ZCentre,
+                                      double Xaxe, double Yaxe, double Zaxe,
+                                      double rayonRev, double rayonPri);
+
+  SMESHHOMARD::double_array*  GetCoords();
+
+  void                   SetLimit(double Xincr, double Yincr, double Zincr);
+  SMESHHOMARD::double_array*  GetLimit();
+
+  void                   AddGroup(const char* Group);
+  void                   SetGroups(const SMESHHOMARD::ListGroupType& ListGroup);
+  SMESHHOMARD::ListGroupType* GetGroups();
+
+private:
+  SMESHHOMARDImpl::HOMARD_Boundary* myHomardBoundary;
+  SMESHHOMARD::HOMARD_Gen_var _gen_i;
+};
+
+class SMESH_I_EXPORT HOMARD_Cas_i : public virtual SALOME::GenericObj_i,
+                                    public virtual POA_SMESHHOMARD::HOMARD_Cas
+{
+public:
+  HOMARD_Cas_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
+  HOMARD_Cas_i();
+
+  virtual ~HOMARD_Cas_i();
+
+  char* GetDumpPython();
+
+  // Caracteristiques
+  void  SetDirName(const char* NomDir);
+  char* GetDirName();
+
+  void                  SetBoundingBox(const SMESHHOMARD::extrema& LesExtremes);
+  SMESHHOMARD::extrema* GetBoundingBox();
+
+  void AddGroup(const char* Group);
+  void SetGroups(const SMESHHOMARD::ListGroupType& ListGroup);
+  SMESHHOMARD::ListGroupType* GetGroups();
+
+  void AddBoundary(const char* Boundary);
+  void AddBoundaryGroup(const char* Boundary, const char* Group);
+  SMESHHOMARD::ListBoundaryGroupType* GetBoundaryGroup();
+  void SupprBoundaryGroup();
+
+  void AddIteration(const char* NomIteration);
+
+private:
+  SMESHHOMARDImpl::HOMARD_Cas* myHomardCas;
+  SMESHHOMARD::HOMARD_Gen_var _gen_i;
+};
+
+class SMESH_I_EXPORT HOMARD_Iteration_i
+{
+public:
+  HOMARD_Iteration_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
+  HOMARD_Iteration_i();
+
+  virtual ~HOMARD_Iteration_i();
+
+  // Generalites
+  void                   SetName(const char* Name);
+  char*                  GetName();
+
+  // Caracteristiques
+  void                   SetDirNameLoc(const char* NomDir);
+  char*                  GetDirNameLoc();
+
+  char*                  GetDirName();
+
+  void                   SetNumber(CORBA::Long NumIter);
+  CORBA::Long            GetNumber();
+
+  void                   SetState(CORBA::Long etat);
+  CORBA::Long            GetState();
+
+  void                   SetMeshName(const char* NomMesh);
+  char*                  GetMeshName();
+
+  void                   SetMeshFile(const char* MeshFile);
+  char*                  GetMeshFile();
+
+  void                   SetLogFile(const char* LogFile);
+  char*                  GetLogFile();
+
+  void                   SetFileInfo(const char* FileInfo);
+  char*                  GetFileInfo();
+
+  // Liens avec les autres structures
+  void                   SetCaseName(const char* NomCas);
+  char*                  GetCaseName();
+
+  // Drivers
+  void                   SetInfoCompute(CORBA::Long MessInfo);
+  CORBA::Long            GetInfoCompute();
+
+private:
+  SMESHHOMARDImpl::HOMARD_Iteration* myHomardIteration;
+  SMESHHOMARD::HOMARD_Gen_var _gen_i;
+};
+
+class SMESH_I_EXPORT HOMARD_Gen_i : public virtual SALOME::GenericObj_i,
+                                    public virtual POA_SMESHHOMARD::HOMARD_Gen
+{
+public:
+  HOMARD_Gen_i();
+  virtual ~HOMARD_Gen_i();
+
+  // Les creations
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundary (const char* nomBoundary,
+                                                   CORBA::Long typeBoundary);
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryCAO (const char* nomBoundary,
+                                                      const char* DataFile);
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryDi (const char* nomBoundary,
+                                                     const char* MeshName, const char* DataFile);
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryCylinder
+    (const char* nomBoundary,
+     CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
+     CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
+     CORBA::Double Rayon);
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundarySphere
+    (const char* nomBoundary,
+     CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
+     CORBA::Double Rayon);
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryConeR
+    (const char* nomBoundary,
+     CORBA::Double Xcentre1, CORBA::Double Ycentre1, CORBA::Double Zcentre1,
+     CORBA::Double Rayon1,
+     CORBA::Double Xcentre2, CORBA::Double Ycentre2, CORBA::Double Zcentre2,
+     CORBA::Double Rayon2);
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryConeA
+    (const char* nomBoundary,
+     CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
+     CORBA::Double Angle,
+     CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre);
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryTorus
+    (const char* nomBoundary,
+     CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
+     CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
+     CORBA::Double RayonRev, CORBA::Double RayonPri);
+
+  SMESHHOMARD::HOMARD_Cas_ptr CreateCaseOnMesh (const char* MeshName,
+                                                SMESH::SMESH_Mesh_ptr smeshMesh,
+                                                const char* theWorkingDir);
+  SMESHHOMARD::HOMARD_Cas_ptr CreateCase (const char* MeshName,
+                                          const char* FileName,
+                                          const char* theWorkingDir);
+
+  HOMARD_Iteration_i* CreateIteration();
+
+  // Les informations
+  SMESHHOMARD::HOMARD_Boundary_ptr  GetBoundary  (const char* nomBoundary);
+  SMESHHOMARD::HOMARD_Cas_ptr       GetCase      ();
+  HOMARD_Iteration_i* GetIteration (CORBA::Long numIter);
+
+  SMESHHOMARD::listeBoundarys* GetAllBoundarysName();
+
+  void InvalideBoundary(const char* nomBoundary);
+
+  CORBA::Long DeleteBoundary(const char* nomBoundary);
+  void        DeleteCase();
+  CORBA::Long DeleteIteration(int numIter);
+
+  void AddBoundary(const char* Boundary);
+  void AddBoundaryGroup(const char* Boundary, const char* Group);
+
+  void AssociateCaseIter(int numIter, const char* labelIter);
+  char* CreateDirNameIter(const char* nomrep, CORBA::Long num);
+
+  CORBA::Long Compute();
+  CORBA::Long ComputeAdap(SMESHHOMARDImpl::HomardDriver* myDriver);
+  CORBA::Long ComputeCAO();
+  CORBA::Long ComputeCAObis();
+  char* ComputeDirManagement();
+  char* ComputeDirPaManagement();
+  int   DriverTexteBoundary(SMESHHOMARDImpl::HomardDriver* myDriver);
+
+  void PublishResultInSmesh(const char* NomFich);
+  void DeleteResultInSmesh(std::string NomFich, std::string MeshName);
+
+  void PythonDump();
+
+  // Preferences
+  void SetConfType (CORBA::Long theConfType);
+  void SetKeepMedOUT (bool theKeepMedOUT);
+  void SetPublishMeshOUT (bool thePublishMeshOUT);
+  void SetMeshNameOUT (const char* theMeshNameOUT);
+  void SetMeshFileOUT (const char* theMeshFileOUT);
+
+  void SetVerboseLevel (CORBA::Long theVerboseLevel);
+  void SetKeepWorkingFiles(bool theKeepWorkingFiles);
+  void SetLogInFile(bool theLogInFile);
+  void SetLogFile (const char* theLogFile);
+  void SetRemoveLogOnSuccess(bool theRemoveLogOnSuccess);
+
+private:
+  SMESHHOMARD::HOMARD_Boundary_ptr newBoundary();
+  SMESHHOMARD::HOMARD_Cas_ptr      newCase();
+  HOMARD_Iteration_i*              newIteration();
+
+private:
+  SMESHHOMARDImpl::HOMARD_Gen* myHomard;
+  HOMARD_Iteration_i*          myIteration0;
+  HOMARD_Iteration_i*          myIteration1;
+  SMESHHOMARD::HOMARD_Cas_var  myCase;
+  std::map<std::string, SMESHHOMARD::HOMARD_Boundary_var> _mesBoundarys;
+
+  // Preferences
+  int  _ConfType; // Le type de conformite ou non conformite
+  bool _KeepMedOUT;
+  bool _PublishMeshOUT;
+  bool _KeepWorkingFiles;
+  bool _LogInFile;
+  bool _RemoveLogOnSuccess;
+  int         _VerboseLevel;
+  std::string _MeshNameOUT;
+  std::string _MeshFileOUT;
+  std::string _LogFile;
+
+  // Input data type
+  bool _CaseOnMedFile;
+  SMESH::SMESH_Mesh_var _SmeshMesh;
+  std::string _TmpMeshFile;
+};
+
+SMESH_I_EXPORT std::vector<double>   GetBoundingBoxInMedFile(const char * aFile);
+SMESH_I_EXPORT std::set<std::string> GetListeGroupesInMedFile(const char * aFile);
+
+}; // namespace SMESHHOMARD_I
+
+#endif
index 00b60b226d75d341afb3cfbb4bd458545fa3f16a..7dca0ac18e0ab42aeca671c09b3319c2dac7e4ca 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2b58ebdad168560e870ab815893592b522747c29..1c778582838c72ff3873a684117b7f7b567e5d0f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ce71af650a3a13297a0f9eaa3990ef839a5441a4..3ff5343d6e12790a942956de82753405b6e433f1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ed3c1d2a8f5deb673aa4b1367899e9b3f4e38220..50af085d123c4f289a3e02286d9604ce9742b192 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 323a6603adf24d1994d9f0635c9964bc8c757539..eea74a45445027150db035bc5a46929aeaf6b6ac 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -834,7 +834,7 @@ CORBA::Boolean SMESH_MeshEditor_i::RemoveNodes(const SMESH::smIdType_array & IDs
 
 //=============================================================================
 /*!
- *
+ * Remove orphan nodes
  */
 //=============================================================================
 
@@ -865,6 +865,58 @@ SMESH::smIdType SMESH_MeshEditor_i::RemoveOrphanNodes()
   return 0;
 }
 
+//=============================================================================
+/*!
+ * Remove a node and fill a hole appeared by changing surrounding faces
+ */
+//=============================================================================
+
+void SMESH_MeshEditor_i::RemoveNodeWithReconnection( SMESH::smIdType nodeID )
+{
+  SMESH_TRY;
+  initData();
+
+  const SMDS_MeshNode * node = getMeshDS()->FindNode( nodeID );
+  if ( ! node )
+    THROW_SALOME_CORBA_EXCEPTION( SMESH_Comment( "Invalid node ID ") << nodeID,
+                                  SALOME::BAD_PARAM);
+  if ( node->NbInverseElements( SMDSAbs_Volume ) > 0 )
+    THROW_SALOME_CORBA_EXCEPTION( "RemoveNodeWithReconnection() applies to 2D mesh only",
+                                  SALOME::BAD_PARAM);
+
+  if ( myIsPreviewMode ) // make preview data
+  {
+    // in a preview mesh, make edges linked to a node
+    TPreviewMesh& tmpMesh = *getPreviewMesh( SMDSAbs_Edge );
+    TIDSortedElemSet linkedNodes;
+    ::SMESH_MeshEditor::GetLinkedNodes( node, linkedNodes );
+    SMDS_MeshNode *nodeCpy1 = tmpMesh.Copy( node );
+    for ( const SMDS_MeshElement* n : linkedNodes )
+    {
+      SMDS_MeshNode *nodeCpy2 = tmpMesh.Copy ( cast2Node( n ));
+      tmpMesh.GetMeshDS()->AddEdge( nodeCpy1, nodeCpy2 );
+    }
+    // copy surrounding faces
+    for ( SMDS_ElemIteratorPtr fIt = node->GetInverseElementIterator( SMDSAbs_Face ); fIt->more(); )
+      tmpMesh.Copy ( fIt->next() );
+    
+    // remove copied node
+    if ( nodeCpy1 )
+      getEditor().RemoveNodeWithReconnection( nodeCpy1 );
+  }
+  else
+  {
+    getEditor().RemoveNodeWithReconnection( node );
+
+    // Update Python script
+    TPythonDump() << this << ".RemoveNodeWithReconnection( " << nodeID << " )";
+
+    declareMeshModified( /*isReComputeSafe=*/ true );
+  }
+
+  SMESH_CATCH( SMESH::throwCorbaException );
+}
+
 //=============================================================================
 /*!
  * Add a new node.
@@ -1567,6 +1619,121 @@ CORBA::Boolean SMESH_MeshEditor_i::DeleteDiag(SMESH::smIdType NodeID1,
   return 0;
 }
 
+//=============================================================================
+/*!
+ * \brief Split a diagonal of a quadrangle formed by two adjacent triangles
+ *        so that four new triangles appear in place of the two triangles
+ */
+//=============================================================================
+
+void SMESH_MeshEditor_i::AddNodeOnSegment(SMESH::smIdType nodeID1,
+                                          SMESH::smIdType nodeID2,
+                                          CORBA::Double   position)
+{
+  SMESH_TRY;
+  initData();
+
+  const SMDS_MeshNode * n1 = getMeshDS()->FindNode( nodeID1 );
+  const SMDS_MeshNode * n2 = getMeshDS()->FindNode( nodeID2 );
+  if ( !n1 )
+    THROW_SALOME_CORBA_EXCEPTION( SMESH_Comment( "Invalid node ID: ") << nodeID1,
+                                  SALOME::BAD_PARAM);
+  if ( !n2 )
+    THROW_SALOME_CORBA_EXCEPTION( SMESH_Comment( "Invalid node ID: ") << nodeID2,
+                                  SALOME::BAD_PARAM);
+
+  if ( myIsPreviewMode ) // make preview data
+  {
+    TPreviewMesh* tmpMesh = getPreviewMesh();
+    TIDSortedElemSet elemSet, avoidSet;
+    TopoDS_Shape shape;
+    while ( const SMDS_MeshElement* face = SMESH_MeshAlgos::FindFaceInSet( n1, n2,
+                                                                           elemSet, avoidSet ))
+    {
+      if ( avoidSet.empty() )
+      {
+        shape = getMeshDS()->IndexToShape( face->GetShapeID() );
+        if ( !shape.IsNull() )
+        {
+          tmpMesh->ShapeToMesh( TopoDS_Shape() );
+          tmpMesh->ShapeToMesh( shape );
+        }
+      }
+      SMDS_MeshElement* faceCopy = tmpMesh->Copy ( face );
+      avoidSet.insert( face );
+
+      if ( !shape.IsNull() )
+        tmpMesh->GetMeshDS()->SetMeshElementOnShape( faceCopy, shape );
+    }
+    n1 = tmpMesh->GetMeshDS()->FindNode( nodeID1 );
+    n2 = tmpMesh->GetMeshDS()->FindNode( nodeID2 );
+
+    if ( !shape.IsNull() )
+    {
+      tmpMesh->GetMeshDS()->SetMeshElementOnShape( n1, shape );
+      tmpMesh->GetMeshDS()->SetMeshElementOnShape( n2, shape );
+    }
+  }
+
+  getEditor().SplitEdge( n1, n2, position );
+
+  if ( !myIsPreviewMode )
+  {
+    // Update Python script
+    TPythonDump() << this << ".AddNodeOnSegment( "
+                  << nodeID1 << ", " << nodeID2 << ", " << position << " )";
+
+    declareMeshModified( /*isReComputeSafe=*/true );
+  }
+
+  SMESH_CATCH( SMESH::throwCorbaException );
+}
+
+//=============================================================================
+/*!
+ * \brief Split a face into triangles by adding a new node onto the face
+ *        and connecting the new node with face nodes
+ */
+//=============================================================================
+
+void  SMESH_MeshEditor_i::AddNodeOnFace(SMESH::smIdType theFaceID,
+                                        CORBA::Double   theX,
+                                        CORBA::Double   theY,
+                                        CORBA::Double   theZ)
+{
+  SMESH_TRY;
+  initData();
+
+  const SMDS_MeshElement * face = getMeshDS()->FindElement( theFaceID );
+  if ( !face )
+    THROW_SALOME_CORBA_EXCEPTION( SMESH_Comment( "Invalid face ID: ") << theFaceID,
+                                  SALOME::BAD_PARAM);
+  if ( face->GetType() != SMDSAbs_Face )
+    THROW_SALOME_CORBA_EXCEPTION( "The element is not a face ", SALOME::BAD_PARAM );
+
+  if ( myIsPreviewMode ) // make preview data
+  {
+    TPreviewMesh* tmpMesh = getPreviewMesh();
+    face = tmpMesh->Copy ( face );
+  }
+
+  getEditor().SplitFace( face, theX, theY, theZ );
+
+  if ( !myIsPreviewMode )
+  {
+    // Update Python script
+    TPythonDump() << this << ".AddNodeOnFace( "
+                  << theFaceID << ", "
+                  << theX << ", "
+                  << theY << ", "
+                  << theZ << " )";
+
+    declareMeshModified( /*isReComputeSafe=*/true );
+  }
+
+  SMESH_CATCH( SMESH::throwCorbaException );
+}
+
 //=============================================================================
 /*!
  *
@@ -2065,8 +2232,8 @@ CORBA::Boolean SMESH_MeshEditor_i::SplitQuadObject (SMESH::SMESH_IDSource_ptr th
  */
 //=============================================================================
 
-CORBA::Long SMESH_MeshEditor_i::BestSplit (CORBA::Long                 IDOfQuad,
-                                           SMESH::NumericalFunctor_ptr Criterion)
+CORBA::Short SMESH_MeshEditor_i::BestSplit (SMESH::smIdType             IDOfQuad,
+                                            SMESH::NumericalFunctor_ptr Criterion)
 {
   SMESH_TRY;
   initData();
@@ -3497,7 +3664,7 @@ SMESH_MeshEditor_i::TranslateMakeGroups(const SMESH::smIdType_array& theIDsOfEle
                 << theIDsOfElements << ", "
                 << theVector        << " )";
   }
-  return aGroups;
+  return aGroups ? aGroups : new SMESH::ListOfGroups();
 }
 
 //=======================================================================
@@ -3522,7 +3689,7 @@ SMESH_MeshEditor_i::TranslateObjectMakeGroups(SMESH::SMESH_IDSource_ptr theObjec
                 << theObject << ", "
                 << theVector << " )";
   }
-  return aGroups;
+  return aGroups ? aGroups : new SMESH::ListOfGroups();
 }
 
 //=======================================================================
@@ -3747,7 +3914,7 @@ SMESH_MeshEditor_i::RotateMakeGroups(const SMESH::smIdType_array& theIDsOfElemen
                 << theAxis          << ", "
                 << TVar( theAngle ) << " )";
   }
-  return aGroups;
+  return aGroups ? aGroups : new SMESH::ListOfGroups();
 }
 
 //=======================================================================
@@ -3774,7 +3941,7 @@ SMESH_MeshEditor_i::RotateObjectMakeGroups(SMESH::SMESH_IDSource_ptr theObject,
                 << theAxis          << ", "
                 << TVar( theAngle ) << " )";
   }
-  return aGroups;
+  return aGroups ? aGroups : new SMESH::ListOfGroups();
 }
 
 //=======================================================================
@@ -4489,7 +4656,6 @@ CORBA::Boolean SMESH_MeshEditor_i::MoveNode(SMESH::smIdType NodeID,
     // move copied node
     if ( nodeCpy1 )
       tmpMesh.GetMeshDS()->MoveNode(nodeCpy1, x, y, z);
-    // fill preview data
   }
   else if ( theNodeSearcher ) // move node and update theNodeSearcher data accordingly
     theNodeSearcher->MoveNode(node, gp_Pnt( x,y,z ));
@@ -7140,6 +7306,7 @@ SMESH_MeshEditor_i::MakeBoundaryMesh(SMESH::SMESH_IDSource_ptr idSource,
  *    mesh + created boundary elements; "" means not to create the new mesh
  *  \param toCopyAll - if true, the whole initial mesh will be copied into
  *    the new mesh else only boundary elements will be copied into the new mesh
+ *  \param toCreateAllElements - if true all the dim element are created from the mesh
  *  \param groups - optional groups of elements to make boundary around
  *  \param mesh - returns the mesh where elements were added to
  *  \param group - returns the created group, if any
@@ -7151,6 +7318,7 @@ CORBA::Long SMESH_MeshEditor_i::MakeBoundaryElements(SMESH::Bnd_Dimension dim,
                                                      const char* groupName,
                                                      const char* meshName,
                                                      CORBA::Boolean toCopyAll,
+                                                     CORBA::Boolean toCreateAllElements,
                                                      const SMESH::ListOfIDSources& groups,
                                                      SMESH::SMESH_Mesh_out mesh,
                                                      SMESH::SMESH_Group_out group)
@@ -7188,7 +7356,7 @@ CORBA::Long SMESH_MeshEditor_i::MakeBoundaryElements(SMESH::Bnd_Dimension dim,
     // process groups belonging to another mesh
     SMESH::SMESH_Mesh_var    otherMesh = groupsOfOtherMesh[0]->GetMesh();
     SMESH::SMESH_MeshEditor_var editor = otherMesh->GetMeshEditor();
-    nbAdded += editor->MakeBoundaryElements( dim, groupName, meshName, toCopyAll,
+    nbAdded += editor->MakeBoundaryElements( dim, groupName, meshName, toCopyAll, toCreateAllElements,
                                              groupsOfOtherMesh, mesh, group );
   }
 
@@ -7215,6 +7383,7 @@ CORBA::Long SMESH_MeshEditor_i::MakeBoundaryElements(SMESH::Bnd_Dimension dim,
   SMESH_Mesh*     srcMesh = ( toCopyMesh && !toCopyAll ) ? myMesh : tgtMesh;
   SMESHDS_Mesh* srcMeshDS = srcMesh->GetMeshDS();
 
+
   // group of boundary elements
   SMESH_Group* smesh_group = 0;
   SMDSAbs_ElementType elemType = (dim == SMESH::BND_2DFROM3D) ? SMDSAbs_Volume : SMDSAbs_Face;
@@ -7227,7 +7396,6 @@ CORBA::Long SMESH_MeshEditor_i::MakeBoundaryElements(SMESH::Bnd_Dimension dim,
   }
 
   TIDSortedElemSet elements;
-
   if ( groups.length() > 0 )
   {
     for ( int i = 0; i < nbGroups; ++i )
@@ -7244,7 +7412,8 @@ CORBA::Long SMESH_MeshEditor_i::MakeBoundaryElements(SMESH::Bnd_Dimension dim,
                                                  /*toCopyElements=*/false,
                                                  /*toCopyExistingBondary=*/srcMesh != tgtMesh,
                                                  /*toAddExistingBondary=*/true,
-                                                 /*aroundElements=*/true);
+                                                 /*aroundElements=*/true,
+                                                 /*toCreateAllElements=*/toCreateAllElements);
       }
     }
   }
@@ -7256,7 +7425,8 @@ CORBA::Long SMESH_MeshEditor_i::MakeBoundaryElements(SMESH::Bnd_Dimension dim,
                                              tgtMesh,
                                              /*toCopyElements=*/false,
                                              /*toCopyExistingBondary=*/srcMesh != tgtMesh,
-                                             /*toAddExistingBondary=*/true);
+                                             /*toAddExistingBondary=*/true,
+                                             /*aroundElements=*/toCreateAllElements);
   }
   tgtMesh->GetMeshDS()->Modified();
 
@@ -7271,13 +7441,21 @@ CORBA::Long SMESH_MeshEditor_i::MakeBoundaryElements(SMESH::Bnd_Dimension dim,
   if ( group_var->_is_nil() )
     pyDump << "_NoneGroup = "; // assignment to None is forbidden
   else
+
     pyDump << group_var << " = ";
-  pyDump << this << ".MakeBoundaryElements( "
-         << "SMESH." << dimName[int(dim)] << ", "
-         << "'" << groupName << "', "
-         << "'" << meshName<< "', "
-         << toCopyAll << ", "
-         << groups << ")";
+  
+  if ( toCreateAllElements )
+    pyDump << this << ".MakeBoundaryOfEachElement( ";
+  else
+  {
+    pyDump << this << ".MakeBoundaryElements( "
+           << "SMESH." << dimName[int(dim)] << ", ";
+  }
+
+  pyDump<< "'" << groupName << "', "
+        << "'" << meshName<< "', "
+        << toCopyAll << ", "
+        << groups << ")";
 
   mesh  = mesh_var._retn();
   group = group_var._retn();
index 3d7072ed42a88e79c478f628dd958863266b3729..4280181c20d6c80731be7a2f64eaa69202473f1d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -100,9 +100,10 @@ public:
    */
   std::string GenerateGroupName(const std::string& thePrefix);
 
-  CORBA::Boolean RemoveElements(const SMESH::smIdType_array & IDsOfElements);
-  CORBA::Boolean RemoveNodes   (const SMESH::smIdType_array & IDsOfNodes);
-  SMESH::smIdType    RemoveOrphanNodes();
+  CORBA::Boolean  RemoveElements(const SMESH::smIdType_array & IDsOfElements);
+  CORBA::Boolean  RemoveNodes   (const SMESH::smIdType_array & IDsOfNodes);
+  SMESH::smIdType RemoveOrphanNodes();
+  void            RemoveNodeWithReconnection(SMESH::smIdType nodeID);
 
   /*!
    * Methods for creation new elements.
@@ -170,15 +171,42 @@ public:
    */
   void SetMeshElementOnShape(SMESH::smIdType ElementID, CORBA::Long ShapeID);
 
-
+  /*!
+   * \brief Change node location
+   */
   CORBA::Boolean MoveNode(SMESH::smIdType NodeID,
                           CORBA::Double x, CORBA::Double y, CORBA::Double z);
 
+  /*!
+   * \brief Swap a diagonal of a quadrangle formed by two adjacent triangles
+   */
   CORBA::Boolean InverseDiag(SMESH::smIdType NodeID1, SMESH::smIdType NodeID2);
+  /*!
+   * \brief Delete a diagonal of a quadrangle formed by two adjacent triangles
+   *        so that a new quadrangle appears in place of the triangles
+   */
   CORBA::Boolean DeleteDiag(SMESH::smIdType NodeID1, SMESH::smIdType NodeID2);
+  /*!
+   * \brief Split a diagonal of a quadrangle formed by two adjacent triangles
+   *        so that four new triangles appear in place of the two triangles
+   */
+  void AddNodeOnSegment(SMESH::smIdType segmentNode1, SMESH::smIdType segmentNode2,
+                        CORBA::Double   position);
+  /*!
+   * \brief Split a face into triangles by adding a new node onto the face
+   *        and connecting the new node with face nodes
+   */
+  void AddNodeOnFace(SMESH::smIdType triangle,
+                     CORBA::Double x, CORBA::Double y, CORBA::Double z);
+
+  /*!
+   * \brief Change orientation of cells
+   */
   CORBA::Boolean Reorient(const SMESH::smIdType_array & IDsOfElements);
+  /*!
+   * \brief Change orientation of cells
+   */
   CORBA::Boolean ReorientObject(SMESH::SMESH_IDSource_ptr theObject);
-
   /*!
    * \brief Reorient faces contained in \a the2Dgroup.
    * \param the2Dgroup - the mesh or its part to reorient
@@ -231,7 +259,7 @@ public:
                                   CORBA::Boolean                Diag13);
   CORBA::Boolean SplitQuadObject (SMESH::SMESH_IDSource_ptr     theObject,
                                   CORBA::Boolean                Diag13);
-  CORBA::Long    BestSplit       (CORBA::Long                   IDOfQuad,
+  CORBA::Short   BestSplit       (SMESH::smIdType               IDOfQuad,
                                   SMESH::NumericalFunctor_ptr   Criterion);
   void           SplitVolumesIntoTetra(SMESH::SMESH_IDSource_ptr elems,
                                        CORBA::Short             methodFlags);
@@ -809,6 +837,7 @@ public:
                                    const char* groupName,
                                    const char* meshName,
                                    CORBA::Boolean toCopyAll,
+                                   CORBA::Boolean toCreateAllElements,
                                    const SMESH::ListOfIDSources& groups,
                                    SMESH::SMESH_Mesh_out mesh,
                                    SMESH::SMESH_Group_out group);
index 6dc4fe803ecf83f03064756477c3e9bac157de2f..3fac69b3e36ce782a77d4cf9110382e3186b1166 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 99e45c66eec7ad7036eafd8818750c32cf5d043e..13c602d92236e2149961b4aad33e877a31a5106c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 
 #include "SMESH_TryCatch.hxx" // include after OCCT headers!
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
-
 using namespace std;
 using SMESH::TPythonDump;
 using SMESH::TVar;
@@ -664,7 +658,7 @@ SMESH_Mesh_i::AddHypothesis(GEOM::GEOM_Object_ptr       aSubShape,
     if ( prevNbMeshEnt > 0 /*newNbMeshEnt != prevNbMeshEnt*/ )
       _gen_i->UpdateIcons( mesh );
   }
-  if(MYDEBUG) MESSAGE( " AddHypothesis(): status = " << status );
+  MESSAGE( " AddHypothesis(): status = " << status );
 
   // Update Python script
   TPythonDump() << "status = " << mesh << ".AddHypothesis( "
@@ -684,7 +678,7 @@ SMESH_Mesh_i::addHypothesis(GEOM::GEOM_Object_ptr       aSubShape,
                             SMESH::SMESH_Hypothesis_ptr anHyp,
                             std::string*                anErrorText)
 {
-  if(MYDEBUG) MESSAGE("addHypothesis");
+  MESSAGE("addHypothesis");
 
   if (CORBA::is_nil( aSubShape ) && HasShapeToMesh())
     THROW_SALOME_CORBA_EXCEPTION("bad Sub-shape reference",SALOME::BAD_PARAM);
@@ -770,7 +764,7 @@ SMESH_Hypothesis::Hypothesis_Status
 SMESH_Mesh_i::removeHypothesis(GEOM::GEOM_Object_ptr       aSubShape,
                                SMESH::SMESH_Hypothesis_ptr anHyp)
 {
-  if(MYDEBUG) MESSAGE("removeHypothesis()");
+  MESSAGE("removeHypothesis()");
 
   if (CORBA::is_nil( aSubShape ) && HasShapeToMesh())
     THROW_SALOME_CORBA_EXCEPTION("bad Sub-shape reference", SALOME::BAD_PARAM);
@@ -816,7 +810,7 @@ SMESH::ListOfHypothesis *
 SMESH_Mesh_i::GetHypothesisList(GEOM::GEOM_Object_ptr aSubShape)
 {
   Unexpect aCatch(SALOME_SalomeException);
-  if (MYDEBUG) MESSAGE("GetHypothesisList");
+  MESSAGE("GetHypothesisList");
   if (_impl->HasShapeToMesh() && CORBA::is_nil(aSubShape))
     THROW_SALOME_CORBA_EXCEPTION("bad Sub-shape reference", SALOME::BAD_PARAM);
 
@@ -856,7 +850,7 @@ SMESH_Mesh_i::GetHypothesisList(GEOM::GEOM_Object_ptr aSubShape)
 SMESH::submesh_array* SMESH_Mesh_i::GetSubMeshes()
 {
   Unexpect aCatch(SALOME_SalomeException);
-  if (MYDEBUG) MESSAGE("GetSubMeshes");
+  MESSAGE("GetSubMeshes");
 
   SMESH::submesh_array_var aList = new SMESH::submesh_array();
 
@@ -1220,7 +1214,7 @@ void SMESH_Mesh_i::RemoveGroupWithContents( SMESH::SMESH_GroupBase_ptr theGroup
 SMESH::ListOfGroups * SMESH_Mesh_i::GetGroups()
 {
   Unexpect aCatch(SALOME_SalomeException);
-  if (MYDEBUG) MESSAGE("GetGroups");
+  MESSAGE("GetGroups");
 
   SMESH::ListOfGroups_var aList = new SMESH::ListOfGroups();
 
@@ -2415,9 +2409,11 @@ void SMESH_Mesh_i::CheckGeomModif( bool theIsBreakLink )
     {
       smIdType nb = NbNodes() + NbElements();
       CheckGeomGroupModif();
-      if ( nb != NbNodes() + NbElements() ) // something removed due to hypotheses change
+      bool updated = ( nb != NbNodes() + NbElements() );
+      if ( updated ) // something removed due to hypotheses change
         _gen_i->UpdateIcons( me );
-      return;
+      if ( updated == geomChanged || nb == 0 )
+        return;
     }
 
   // Update after shape modification or breakLink w/o geometry change
@@ -2504,7 +2500,7 @@ void SMESH_Mesh_i::CheckGeomModif( bool theIsBreakLink )
         }
         old2newShapeMap.Bind( group->GetShape(), groupsData.back()._shape );
       }
-      
+
     }
   }
   // store assigned hypotheses
@@ -3120,7 +3116,7 @@ SMESH::SMESH_Group_ptr SMESH_Mesh_i::ConvertToStandalone( SMESH::SMESH_GroupBase
 
 SMESH::SMESH_subMesh_ptr SMESH_Mesh_i::createSubMesh( GEOM::GEOM_Object_ptr theSubShapeObject )
 {
-  if(MYDEBUG) MESSAGE( "createSubMesh" );
+  MESSAGE( "createSubMesh" );
   TopoDS_Shape  myLocSubShape = _gen_i->GeomObjectToShape(theSubShapeObject);
   ::SMESH_subMesh * mySubMesh = _impl->GetSubMesh(myLocSubShape);
   int               subMeshId = 0;
@@ -3152,8 +3148,7 @@ SMESH::SMESH_subMesh_ptr SMESH_Mesh_i::createSubMesh( GEOM::GEOM_Object_ptr theS
 
   // register CORBA object for persistence
   int nextId = _gen_i->RegisterObject( subMesh );
-  if(MYDEBUG) { MESSAGE( "Add submesh to map with id = "<< nextId); }
-  else        { (void)nextId; } // avoid "unused variable" warning
+  MESSAGE( "Add submesh to map with id = "<< nextId);
 
   // to track changes of GEOM groups
   if ( subMeshId > 0 )
@@ -3289,8 +3284,7 @@ SMESH::SMESH_GroupBase_ptr SMESH_Mesh_i::createGroup (SMESH::ElementType
 
     // register CORBA object for persistence
     int nextId = _gen_i->RegisterObject( aGroup );
-    if(MYDEBUG) { MESSAGE( "Add group to map with id = "<< nextId); }
-    else        { nextId = ( nextId > 0 ); } // avoid "unused variable" warning in release mode
+    MESSAGE( "Add group to map with id = "<< nextId);
 
     // to track changes of GEOM groups
     if ( !theShape.IsNull() ) {
@@ -3311,7 +3305,7 @@ SMESH::SMESH_GroupBase_ptr SMESH_Mesh_i::createGroup (SMESH::ElementType
 
 void SMESH_Mesh_i::removeGroup( const int theId )
 {
-  if(MYDEBUG) MESSAGE("SMESH_Mesh_i::removeGroup()" );
+  MESSAGE("SMESH_Mesh_i::removeGroup()");
   if ( _mapGroups.find( theId ) != _mapGroups.end() ) {
     SMESH::SMESH_GroupBase_var group = _mapGroups[theId];
     _mapGroups.erase( theId );
@@ -3478,7 +3472,7 @@ void SMESH_Mesh_i::onHypothesisModified(int theHypID, bool theUpdateIcons)
 
 void SMESH_Mesh_i::SetImpl(::SMESH_Mesh * impl)
 {
-  if(MYDEBUG) MESSAGE("SMESH_Mesh_i::SetImpl");
+  MESSAGE("SMESH_Mesh_i::SetImpl");
   _impl = impl;
   if ( _impl )
     _impl->SetCallUp( new TCallUp_i(this));
@@ -3492,7 +3486,7 @@ void SMESH_Mesh_i::SetImpl(::SMESH_Mesh * impl)
 
 ::SMESH_Mesh & SMESH_Mesh_i::GetImpl()
 {
-  if(MYDEBUG) MESSAGE("SMESH_Mesh_i::GetImpl()");
+  MESSAGE("SMESH_Mesh_i::GetImpl()");
   return *_impl;
 }
 
@@ -3838,7 +3832,7 @@ void SMESH_Mesh_i::ExportUNV (const char *file, CORBA::Boolean renumber)
   checkGroupNames();
   // Update Python script
   TPythonDump() << SMESH::SMESH_Mesh_var(_this())
-                << ".ExportUNV( r'" << file << "' " << renumber << "' )";
+                << ".ExportUNV( r'" << file << "', " << renumber << " )";
 
   // Perform Export
   PrepareForWriting( file );
@@ -5187,7 +5181,7 @@ CORBA::LongLong SMESH_Mesh_i::GetMeshPtr()
     _preMeshInfo->FullLoadFromFile();
 
   CORBA::LongLong pointeur = CORBA::LongLong(_impl);
-  if ( MYDEBUG ) MESSAGE("CORBA::LongLong SMESH_Mesh_i::GetMeshPtr() "<<pointeur);
+  MESSAGE("CORBA::LongLong SMESH_Mesh_i::GetMeshPtr() "<<pointeur);
   return pointeur;
 }
 
@@ -5929,8 +5923,7 @@ void SMESH_Mesh_i::CreateGroupServants()
 
     // register CORBA object for persistence
     int nextId = _gen_i->RegisterObject( groupVar );
-    if(MYDEBUG) { MESSAGE( "Add group to map with id = "<< nextId); }
-    else        { (void)nextId; } // avoid "unused variable" warning in release mode
+    MESSAGE( "Add group to map with id = "<< nextId);
 
     // publishing the groups in the study
     GEOM::GEOM_Object_var shapeVar = _gen_i->ShapeToGeomObject( shape );
@@ -5961,7 +5954,7 @@ void SMESH_Mesh_i::CreateGroupServants()
  */
 //=============================================================================
 
-bool SMESH_Mesh_i::IsComputedOK()
+CORBA::Boolean SMESH_Mesh_i::IsComputedOK()
 {
   return _impl->IsComputedOK();
 }
@@ -6168,8 +6161,8 @@ SMESH::SMESH_Mesh_ptr SMESH_Mesh_i::GetMesh()
 /*!
  * \brief Return false if GetMeshInfo() return incorrect information that may
  *        happen if mesh data is not yet fully loaded from the file of study.
- * 
- * 
+ *
+ *
  */
 //================================================================================
 
@@ -7035,6 +7028,7 @@ TListOfListOfInt SMESH_Mesh_i::findConcurrentSubMeshes()
   return res;
 }
 
+
 //=============================================================================
 /*!
  * \brief Convert submesh ids into submesh interfaces
@@ -7227,7 +7221,7 @@ smIdType SMESH_MeshPartDS::MinNodeID() const
 {
   if ( _meshDS ) return _meshDS->MinNodeID();
   return NbNodes() == 0 ? 0 : (*_elements[ SMDSAbs_Node ].begin())->GetID();
-}  
+}
 // -------------------------------------------------------------------------------------
 smIdType SMESH_MeshPartDS::MaxElementID() const
 {
index 36e18d1becaefa90e6a2202385833c227616fbb8..d56f4e28aabd9643f47f7893dbb3c1c2248bf276 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -226,7 +226,7 @@ public:
                  const char*               file,
                  CORBA::Boolean            withRequiredGroups);
 
-    
+
   template<class SPECLS>
     void ExportPartToMEDCommon(SPECLS&                   speCls,
                                SMESH::SMESH_IDSource_ptr meshPart,
@@ -424,15 +424,15 @@ public:
    */
   void CreateGroupServants();
 
-  /*!
-   * \brief Return true if all sub-meshes are computed OK - to update an icon
-   */
-  bool IsComputedOK();
 
 
   // ====================================
   // SMESH_Mesh interface (continuation)
   // ====================================
+  /*!
+   * \brief Return true if all sub-meshes are computed OK - to update an icon
+   */
+  CORBA::Boolean IsComputedOK();
 
   /*!
    * \brief Return groups cantained in _mapGroups by their IDs
@@ -571,7 +571,7 @@ public:
    * Persistence of geometry tick
    */
   int& MainShapeTick() { return _mainShapeTick; }
-  
+
 
   /*!
    * Sets list of notebook variables used for Mesh operations separated by ":" symbol
@@ -678,10 +678,11 @@ private:
    */
   TListOfListOfInt findConcurrentSubMeshes();
 
+ protected:
+  ::SMESH_Mesh* _impl;        // :: force no namespace here
  private:
 
   static int    _idGenerator;
-  ::SMESH_Mesh* _impl;        // :: force no namespace here
   SMESH_Gen_i*  _gen_i;
   int           _id;          // id given by creator (unique within the creator instance)
   int           _nbInvalidHypos;
index 7dd862d2c564a742e481b05c5021318a3a97a333..6576b5d5e545aa4d39fd2b6cf56d3f9a2c683ad3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 #include <vector>
 #include <string>
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
-
 using namespace std;
 
 
@@ -242,7 +236,7 @@ void SMESH_NoteBook::ReplaceVariables()
     TCollection_AsciiString aMethod      = aCmd->GetMethod();
     TCollection_AsciiString aObject      = aCmd->GetObject();
     TCollection_AsciiString aResultValue = aCmd->GetResultValue();
-    if(MYDEBUG) {
+    if(SALOME::VerbosityActivated()) {
       cout<<"Command before : "<< aCmd->GetString()<<endl;
       cout<<"Method : "<< aMethod<<endl;
       cout<<"Object : "<< aObject<<endl;
@@ -329,7 +323,7 @@ void SMESH_NoteBook::ReplaceVariables()
     }
 
     if(it != _objectMap.end()) {
-      if(MYDEBUG)
+      if(SALOME::VerbosityActivated())
         cout << "Found object : " << (*it).first << endl;
       SMESH_ObjectStates *aStates = (*it).second;
       // Case for LocalLength hypothesis
@@ -384,7 +378,7 @@ void SMESH_NoteBook::ReplaceVariables()
         if(aMethod == "SetLayerDistribution"){
           LayerDistributionStates* aLDStates = (LayerDistributionStates*)(aStates);
           aLDStates->AddDistribution(aCmd->GetArg(1));
-          if(MYDEBUG)
+          if(SALOME::VerbosityActivated())
             cout<<"Add Distribution :"<<aCmd->GetArg(1)<<endl;
         }
       }
@@ -723,10 +717,10 @@ void SMESH_NoteBook::ReplaceVariables()
       }
     }
     else {
-      if(MYDEBUG)
+      if(SALOME::VerbosityActivated())
         cout << "Object not found" << endl;
     }
-    if(MYDEBUG) {
+    if(SALOME::VerbosityActivated()) {
       cout<<"Command after: "<< aCmd->GetString()<<endl;
     }
   }
@@ -766,7 +760,7 @@ void SMESH_NoteBook::InitObjectMap()
       std::vector< std::string >     allVars = aGen->GetAllParameters( anID.in() );
       SALOMEDS::ListOfListOfStrings_var aSections = aStudy->ParseVariables(aParameters.in());
       _entry2VarsMap[ TCollection_AsciiString( anID.in() )] = allVars;
-      if(MYDEBUG) {
+      if(SALOME::VerbosityActivated()) {
         cout<<"Entry : "<< anID<<endl;
         cout<<"aParameters : "<<aParameters<<endl;
       }
@@ -781,7 +775,7 @@ void SMESH_NoteBook::InitObjectMap()
       else if (!aMesh->_is_nil() ) {
         anObjType = "Mesh";
       }
-      if(MYDEBUG)
+      if(SALOME::VerbosityActivated())
         cout<<"The object Type : "<<anObjType<<endl;
       SMESH_ObjectStates *aState = NULL;
       if(anObjType == "LayerDistribution")
@@ -800,7 +794,7 @@ void SMESH_NoteBook::InitObjectMap()
             aVar.InsertAfter(aVar.Length(), SMESH::TVar::Quote() );
           }
           aVars.push_back(aVar);
-          if(MYDEBUG) {
+          if(SALOME::VerbosityActivated()) {
             cout<<"Variable: '"<<aVar<<"'"<<endl;
           }
         }
@@ -826,7 +820,7 @@ void SMESH_NoteBook::InitObjectMap()
 //================================================================================
 void SMESH_NoteBook::AddCommand(const TCollection_AsciiString& theString)
 {
-  if(MYDEBUG)
+  if(SALOME::VerbosityActivated())
     cout<<theString<<endl;
   Handle(_pyCommand) aCommand = new _pyCommand( theString, -1);
   _commands.push_back(aCommand);
index 808c945dba6ea78b8bed94a80a4a92e0cff554ae..fe0040c97bf8fcc94ab2841841b52ab36d6a32c4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
diff --git a/src/SMESH_I/SMESH_ParallelMesh_i.cxx b/src/SMESH_I/SMESH_ParallelMesh_i.cxx
new file mode 100644 (file)
index 0000000..882aeae
--- /dev/null
@@ -0,0 +1,227 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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_ParallelMesh_i.cxx
+//  Author : Yoann AUDOUIN, EDF
+//  Module : SMESH
+
+#include "SMESH_ParallelMesh_i.hxx"
+#include "SMESH_Mesh_i.hxx"
+
+#include "SMESH_Gen_i.hxx"
+
+
+//=============================================================================
+namespace
+{
+  //!< implementation of struct used to call methods of SMESH_Mesh_i from SMESH_Mesh
+  // issue 0020918: groups removal is caused by hyp modification
+  // issue 0021208: to forget not loaded mesh data at hyp modification
+  struct TCallUp_i : public SMESH_ParallelMesh::TCallUp
+  {
+    SMESH_ParallelMesh_i* _mesh;
+    TCallUp_i(SMESH_ParallelMesh_i* mesh):_mesh(mesh) {}
+    void RemoveGroup (const int theGroupID) override { _mesh->removeGroup( theGroupID ); }
+    void HypothesisModified( int hypID,
+                             bool updIcons) override { _mesh->onHypothesisModified( hypID,
+                                                                                    updIcons ); }
+    void Load ()                            override { _mesh->Load(); }
+    bool IsLoaded()                         override { return _mesh->IsLoaded(); }
+    TopoDS_Shape GetShapeByEntry(const std::string& entry) override
+    {
+      GEOM::GEOM_Object_var go = SMESH_Gen_i::GetGeomObjectByEntry( entry );
+      return SMESH_Gen_i::GeomObjectToShape( go );
+    }
+  };
+}
+
+::SMESH_ParallelMesh* SMESH_ParallelMesh_i::DownCast()
+{
+  ::SMESH_ParallelMesh* myImpl = dynamic_cast<::SMESH_ParallelMesh*>(_impl);
+  if (myImpl == NULL)
+    THROW_SALOME_CORBA_EXCEPTION("Could not cast as ParallelMesh", SALOME::INTERNAL_ERROR);
+
+  return myImpl;
+}
+
+//=============================================================================
+/*!
+ * \brief Get the parallellism method
+ */
+//=============================================================================
+
+CORBA::Long SMESH_ParallelMesh_i::GetParallelismMethod(){
+  return DownCast()->GetParallelismMethod();
+}
+
+//=============================================================================
+/*!
+ * \brief Set the parallellism method
+ */
+//=============================================================================
+void SMESH_ParallelMesh_i::SetParallelismMethod(CORBA::Long aMethod){
+  DownCast()->SetParallelismMethod(aMethod);
+}
+
+//=============================================================================
+/*!
+ * \brief Get the parallell dimension
+ */
+//=============================================================================
+
+CORBA::Long SMESH_ParallelMesh_i::GetParallelismDimension(){
+  return DownCast()->GetParallelismDimension();
+}
+
+//=============================================================================
+/*!
+ * \brief Set the parallell dimension
+ */
+//=============================================================================
+void SMESH_ParallelMesh_i::SetParallelismDimension(CORBA::Long aDim){
+  DownCast()->SetParallelismDimension(aDim);
+}
+
+//=============================================================================
+/*!
+ * \brief Get the number of threads for a parallel computation
+ */
+//=============================================================================
+CORBA::Long SMESH_ParallelMesh_i::GetNbThreads(){
+  return DownCast()->GetNbThreads();
+}
+
+//=============================================================================
+/*!
+ * \brief Set the number of threads for a parallel computation
+ */
+//=============================================================================
+void SMESH_ParallelMesh_i::SetNbThreads(CORBA::Long nbThreads){
+  DownCast()->SetNbThreads(nbThreads);
+}
+
+//=============================================================================
+/*!
+ * \brief Get the ressource to connect to
+ */
+//=============================================================================
+char* SMESH_ParallelMesh_i::GetResource(){
+  return CORBA::string_dup(DownCast()->GetResource().c_str());
+}
+
+//=============================================================================
+/*!
+ * \brief Set the ressource to connect to
+ */
+//=============================================================================
+void SMESH_ParallelMesh_i::SetResource(const char* aResource){
+  DownCast()->SetResource(std::string(aResource));
+}
+
+//=============================================================================
+/*!
+ * \brief Get the number of processor to use on ressource
+ */
+//=============================================================================
+CORBA::Long SMESH_ParallelMesh_i::GetNbProc(){
+  return DownCast()->GetNbProc();
+}
+
+//=============================================================================
+/*!
+ * \brief Set the number of processor to use on ressource
+ */
+//=============================================================================
+void SMESH_ParallelMesh_i::SetNbProc(CORBA::Long nbProcs){
+  DownCast()->SetNbProc(nbProcs);
+}
+
+//=============================================================================
+/*!
+ * \brief Get the number of processor per node to use on ressource
+ */
+//=============================================================================
+CORBA::Long SMESH_ParallelMesh_i::GetNbProcPerNode(){
+  return DownCast()->GetNbProcPerNode();
+}
+
+//=============================================================================
+/*!
+ * \brief Set the number of processor per node to use on ressource
+ */
+//=============================================================================
+void SMESH_ParallelMesh_i::SetNbProcPerNode(CORBA::Long nbProcPerNodes){
+  DownCast()->SetNbProcPerNode(nbProcPerNodes);
+}
+
+//=============================================================================
+/*!
+ * \brief Get the number of node to use on ressource
+ */
+//=============================================================================
+CORBA::Long SMESH_ParallelMesh_i::GetNbNode(){
+  return DownCast()->GetNbNode();
+}
+
+//=============================================================================
+/*!
+ * \brief Set the number of node to use on ressource
+ */
+//=============================================================================
+void SMESH_ParallelMesh_i::SetNbNode(CORBA::Long nbNodes){
+  DownCast()->SetNbNode(nbNodes);
+}
+
+//=============================================================================
+/*!
+ * \brief Get the wckey to use on ressource
+ */
+//=============================================================================
+char* SMESH_ParallelMesh_i::GetWcKey(){
+  return CORBA::string_dup(DownCast()->GetWcKey().c_str());
+}
+
+//=============================================================================
+/*!
+ * \brief Set the wckey to use on ressource
+ */
+//=============================================================================
+void SMESH_ParallelMesh_i::SetWcKey(const char* wcKey){
+  DownCast()->SetWcKey(std::string(wcKey));
+}
+
+//=============================================================================
+/*!
+ * \brief Get the walltime to use on ressource
+ */
+//=============================================================================
+char* SMESH_ParallelMesh_i::GetWalltime(){
+  return CORBA::string_dup(DownCast()->GetWalltime().c_str());
+}
+
+//=============================================================================
+/*!
+ * \brief Set the walltime to use on ressource
+ */
+//=============================================================================
+void SMESH_ParallelMesh_i::SetWalltime(const char* walltime){
+  DownCast()->SetWalltime(std::string(walltime));
+}
diff --git a/src/SMESH_I/SMESH_ParallelMesh_i.hxx b/src/SMESH_I/SMESH_ParallelMesh_i.hxx
new file mode 100644 (file)
index 0000000..6613d6b
--- /dev/null
@@ -0,0 +1,84 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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_ParallelMesh_i.hxx
+//  Author : Yoann AUDOUIN, EDF
+//  Module : SMESH
+
+#ifndef _SMESH_PARALLELMESH_I_HXX_
+#define _SMESH_PARALLELMESH_I_HXX_
+
+#include "SMESH.hxx"
+
+#include "SMESH_Hypothesis.hxx"
+#include "SMESH_Mesh_i.hxx"
+#include "SMESH_ParallelMesh.hxx"
+
+#include <SALOME_GenericObj_i.hh>
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Mesh)
+
+#include <map>
+
+class SMESH_I_EXPORT SMESH_ParallelMesh_i:
+  public virtual POA_SMESH::SMESH_ParallelMesh,
+  public virtual SMESH_Mesh_i
+{
+  SMESH_ParallelMesh_i();
+  SMESH_ParallelMesh_i(const SMESH_ParallelMesh_i&);
+  public:
+  SMESH_ParallelMesh_i( PortableServer::POA_ptr thePOA,
+                        SMESH_Gen_i*            myGen_i ):SMESH_Mesh_i(thePOA, myGen_i){};
+
+  virtual ~SMESH_ParallelMesh_i(){};
+
+  CORBA::Long GetParallelismMethod();
+  void SetParallelismMethod(CORBA::Long aMethod);
+
+  CORBA::Long GetParallelismDimension();
+  void SetParallelismDimension(CORBA::Long aDim);
+
+  CORBA::Long GetNbThreads();
+  void SetNbThreads(CORBA::Long nbThreads);
+
+  char* GetResource();
+  void SetResource(const char* aResource);
+
+  CORBA::Long GetNbProc();
+  void SetNbProc(CORBA::Long nbProcs);
+
+  CORBA::Long GetNbProcPerNode();
+  void SetNbProcPerNode(CORBA::Long nbProcPerNodes);
+
+  CORBA::Long GetNbNode();
+  void SetNbNode(CORBA::Long nbNodes);
+
+  char* GetWcKey();
+  void SetWcKey(const char* wcKey);
+
+  char* GetWalltime();
+  void SetWalltime(const char* walltime);
+
+  private:
+  ::SMESH_ParallelMesh* DownCast();
+};
+
+#endif
index ab08c61b8a83b313b3a52671825229f3d71361c6..dcdf81fa0fb0bc8f1c56b9c93801118ea8302de0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5a5689367cb6ad937143bebc99d1a57f08dd9985..21b27d1bbe2c12310dfc3e582b004927e16e0a96 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index cb9cdb5d4dd7c40d2629dd1659c218031cd768aa..2089462109aec6a2a3cf9a3d5a4c2b344d2c711e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -926,9 +926,9 @@ void SMESH_PreMeshInfo::readSubMeshes(DriverMED_R_SMESHDS_Mesh* reader) const
           // -- Most probably a bad study was saved when there were
           // not fixed bugs in SMDS_MeshInfo
           if ( elemSet.size() < nbElems ) {
-#ifdef _DEBUG_
-            cout << "SMESH_Gen_i::Load(), warning: Node position data is invalid" << endl;
-#endif
+            if (SALOME::VerbosityActivated())
+              cout << "SMESH_Gen_i::Load(), warning: Node position data is invalid" << endl;
+
             nbElems = elemSet.size();
           }
           // add elements to sub-meshes
index 55b2607c550c9e081ecb52a8dc1012f4e2214c77..61fb3735112e86039f02a20f3ed3691a59807f71 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5a92bde8242a3d3acbf740d8ca4a4f065d29c2c3..a07d95377541553de0a6f8d8a0ab397c24008872 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 
 #include <cstring>
 
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
-
 #include "SMESH_TryCatch.hxx"
 
 namespace SMESH
@@ -92,7 +86,7 @@ namespace SMESH
         if ( !objEntry.empty() )
           aCollection += (TVar::ObjPrefix() + objEntry ).c_str();
         aSMESHGen->AddToPythonScript(aCollection);
-        if(MYDEBUG) MESSAGE(aString);
+        MESSAGE(aString);
         // prevent misuse of already treated variables
         aSMESHGen->UpdateParameters(CORBA::Object_var().in(),"");
       }
@@ -415,11 +409,13 @@ namespace SMESH
       case FT_AspectRatio:           myStream<< "aAspectRatio";           break;
       case FT_AspectRatio3D:         myStream<< "aAspectRatio3D";         break;
       case FT_Warping:               myStream<< "aWarping";               break;
+      case FT_Warping3D:             myStream<< "aWarping3D";             break;
       case FT_MinimumAngle:          myStream<< "aMinimumAngle";          break;
       case FT_Taper:                 myStream<< "aTaper";                 break;
       case FT_Skew:                  myStream<< "aSkew";                  break;
       case FT_Area:                  myStream<< "aArea";                  break;
       case FT_Volume3D:              myStream<< "aVolume3D";              break;
+      case FT_ScaledJacobian:        myStream<< "aScaledJacobian";        break;
       case FT_MaxElementLength2D:    myStream<< "aMaxElementLength2D";    break;
       case FT_MaxElementLength3D:    myStream<< "aMaxElementLength3D";    break;
       case FT_FreeBorders:           myStream<< "aFreeBorders";           break;
@@ -693,11 +689,8 @@ namespace SMESH
 
   void printException( const char* text )
   {
-#ifdef _DEBUG_
-    std::cout << "Exception in SMESH_Gen_i::DumpPython(): " << text << std::endl;
-#else
-    (void)text; // unused in release mode
-#endif
+    if (SALOME::VerbosityActivated())
+      std::cout << "Exception in SMESH_Gen_i::DumpPython(): " << text << std::endl;
   }
 
 //=======================================================================
index 189876f7b64d9e9eed2ae0a0ab944b3d14a5f0f6..803c15052eb6579eb0820091b1788aff25316bbc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/src/SMESH_I/SMESH_SequentialMesh_i.hxx b/src/SMESH_I/SMESH_SequentialMesh_i.hxx
new file mode 100644 (file)
index 0000000..a4a6569
--- /dev/null
@@ -0,0 +1,50 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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_SequentialMesh_i.hxx
+//  Author : Yoann AUDOUIN, EDF
+//  Module : SMESH
+
+#ifndef _SMESH_SEQUENTIALMESH_I_HXX_
+#define _SMESH_SEQUENTIALMESH_I_HXX_
+
+#include "SMESH.hxx"
+
+#include "SMESH_SequentialMesh.hxx"
+#include "SMESH_Mesh_i.hxx"
+#include "SMESH_Gen_i.hxx"
+
+#include <SALOME_GenericObj_i.hh>
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Mesh)
+
+class SMESH_I_EXPORT SMESH_SequentialMesh_i:
+  public virtual POA_SMESH::SMESH_SequentialMesh,
+  public virtual SMESH_Mesh_i
+{
+  SMESH_SequentialMesh_i( PortableServer::POA_ptr thePOA,
+                          SMESH_Gen_i*            myGen_i ):SMESH_Mesh_i(thePOA, myGen_i){};
+
+  virtual ~SMESH_SequentialMesh_i(){};
+
+};
+
+#endif
index 7b19b6b8ccbf2376fc76181ecc51be0d00b5c461..f5a74eb67469dfb4d4c8e890a35e6739e4772069 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 3cb96e8788aedbd42488792d5203c2c99a11b896..1db9a2fabdb861eece70e9637427ec0581b02eeb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2150a6363a99ab37d0e700bab54cfddfbca1240e..b86ea9073380efb3818ae5d0ae073253d392b5dd 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 0d138181a28452d177ddea97e869c8015e1e68bc..13238df418da9810c43e63fbcf3c6a5e82746a3e 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: iso-8859-1 -*-
-# Copyright (C) 2010-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2010-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index dc5ce1c066952a768bdfef1a167b727bebd7d1f5..53b58b4c2bea3761e514c94275ef98ff67b5ee28 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -203,6 +203,8 @@ def TEST_createBoxMesh():
     Hexa_3D = smesh.CreateHypothesis('Hexa_3D')
     status = boxmesh.AddHypothesis(Hexa_3D)
     isDone = boxmesh.Compute()
+    if not isDone:
+      raise Exception("Error when computing Mesh")
 
     smesh.SetName(boxmesh.GetMesh(), 'boxmesh')
     if salome.sg.hasDesktop():
index bd3a578d4c49517b490a2a57c8aaa9c7c73251fb..05c253a042b960797795500c2185707b2e52fdee 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -32,79 +32,17 @@ 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
+  smesh_tools.py
+)
+
+SET(smesh_exe_SCRIPTS
+  mesher_launcher.py
+  send_files.py
 )
 
 SET(StdMeshers_SCRIPTS
@@ -120,7 +58,7 @@ SET_SOURCE_FILES_PROPERTIES(SMeshHelper.i PROPERTIES CPLUSPLUS ON)
 SET_SOURCE_FILES_PROPERTIES(SMeshHelper.i PROPERTIES SWIG_FLAGS "-py3")
 SET_SOURCE_FILES_PROPERTIES(SMeshHelper_wrap.cpp PROPERTIES COMPILE_FLAGS "-DHAVE_CONFIG_H")
 SET(_swig_SCRIPTS ${CMAKE_CURRENT_BINARY_DIR}/SMeshHelper.py )
-IF(${CMAKE_VERSION} VERSION_LESS "3.8.0") 
+IF(${CMAKE_VERSION} VERSION_LESS "3.8.0")
   SWIG_ADD_MODULE(SMeshHelper python ${SMeshHelper_SOURCES})
 ELSE()
   SWIG_ADD_LIBRARY(SMeshHelper LANGUAGE python SOURCES ${SMeshHelper_SOURCES})
@@ -133,9 +71,8 @@ ENDIF(WIN32)
 install(TARGETS _SMeshHelper DESTINATION ${SALOME_INSTALL_LIBS})
 install(FILES ${SMeshHelper_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
 SALOME_INSTALL_SCRIPTS("${_swig_SCRIPTS}"  ${SALOME_INSTALL_BINS} EXTRA_DPYS "${SWIG_MODULE_SMeshHelper_REAL_NAME}")
+SALOME_INSTALL_SCRIPTS("${smesh_exe_SCRIPTS}"  ${SALOME_INSTALL_BINS})
 
 # --- 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/PAL_MESH_041_mesh.py b/src/SMESH_SWIG/PAL_MESH_041_mesh.py
deleted file mode 100644 (file)
index f0ec9bc..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-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----------------------------------------
-
-#----------Vertexes------------
-p1 = geompy.MakeVertex(20.0,30.0,40.0)
-p2 = geompy.MakeVertex(90.0,80.0,0.0)
-p3 = geompy.MakeVertex(30.0,80.0,200.0)
-
-#----------Edges---------------
-e1 = geompy.MakeEdge(p1,p2)
-e2 = geompy.MakeEdge(p2,p3)
-e3 = geompy.MakeEdge(p3,p1)
-
-#----------Wire----------------
-ListOfEdges = []
-ListOfEdges.append(e3)
-ListOfEdges.append(e2)
-ListOfEdges.append(e1)
-wire1 = geompy.MakeWire(ListOfEdges)
-
-
-#----------Face----------------
-WantPlanarFace = 1
-face1 = geompy.MakeFace(wire1,WantPlanarFace)
-
-Id_face1 = geompy.addToStudy(face1,"Face1")
-
-
-
-#-----------------------------SMESH-------------------------------------------
-
-# -- Init mesh --
-plane_mesh = salome.IDToObject( Id_face1)
-
-mesh = smesh.Mesh(plane_mesh, "Mesh_1")
-
-print("---------------------Hypothesis and Algorithms")
-
-#---------------- NumberOfSegments
-
-numberOfSegment = 9
-
-algoWireDes = mesh.Segment()
-listHyp = algoWireDes.GetCompatibleHypothesis()
-print(algoWireDes.GetName())
-algoWireDes.SetName("Ware descritisation")
-
-hypNbSeg = algoWireDes.NumberOfSegments(numberOfSegment)
-print(hypNbSeg.GetName())
-print(hypNbSeg.GetNumberOfSegments())
-smesh.SetName(hypNbSeg, "Nb. Segments")
-
-
-#--------------------------Max. Element Area
-maxElementArea = 200
-
-algoMef = mesh.Triangle()
-listHyp = algoMef.GetCompatibleHypothesis()
-print(algoMef.GetName())
-algoMef.SetName("Triangle (Mefisto)")
-
-hypArea200 = algoMef.MaxElementArea(maxElementArea)
-print(hypArea200.GetName())
-print(hypArea200.GetMaxElementArea())
-smesh.SetName(hypArea200, "Max. Element Area")
-
-
-print("---------------------Compute the mesh")
-
-ret = mesh.Compute()
-print(ret)
-
-salome.sg.updateObjBrowser()
-
diff --git a/src/SMESH_SWIG/PAL_MESH_043_2D.py b/src/SMESH_SWIG/PAL_MESH_043_2D.py
deleted file mode 100644 (file)
index bc558ff..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_testExtrusion2D.py
-#  Module      : SMESH
-#  Description : Create meshes to test extrusion of mesh elements along path
-#
-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
-
-# create points
-p1 = geompy.MakeVertex(100, 0, 0)
-p2 = geompy.MakeVertex(100, 0, 100)
-p3 = geompy.MakeVertex(0, 0, 0)
-p4 = geompy.MakeVertex(0, 100, 0)
-
-
-# create two vectors
-vector1 = geompy.MakeVector(p1,p2)
-vector2 = geompy.MakeVector(p3,p4)
-
-# make two ellipses
-ellipse1 = geompy.MakeEllipse(p1,vector1,50,25)
-ellipse2 = geompy.MakeEllipse(p3,vector2,300,50)
-
-# publish circular face and second circle
-id_ellipse1 = geompy.addToStudy(ellipse1, "Ellips 1")
-id_ellipse2 = geompy.addToStudy(ellipse2, "Ellips 2")
-
-
-#---------------------------------SMESH
-
-# create the path mesh
-mesh1 = smesh.Mesh(ellipse1, "Path Mesh")
-
-algoReg1 = mesh1.Segment()
-algoReg1.SetName("Regular_1D")
-hypNbSeg1 = algoReg1.NumberOfSegments(18)
-smesh.SetName(hypNbSeg1, "NumberOfSegments 1")
-
-# create the tool mesh
-mesh2 = smesh.Mesh(ellipse2, "Tool Mesh")
-algoReg2 = mesh2.Segment()
-algoReg2.SetName("Regular_1D")
-hypNbSeg2 = algoReg2.NumberOfSegments(34)
-smesh.SetName(hypNbSeg2, "NumberOfSegments 2")
-
-# compute meshes
-mesh1.Compute()
-mesh2.Compute()
-
-
-# ---- udate object browser
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/PAL_MESH_043_3D.py b/src/SMESH_SWIG/PAL_MESH_043_3D.py
deleted file mode 100644 (file)
index 21a7eeb..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_testExtrusion3D.py
-#  Module      : SMESH
-#  Description : Create meshes to test extrusion of mesh elements along path
-#
-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()
-
-
-# create points to build two circles
-p1 = geompy.MakeVertex(0,  100,  0)
-p2 = geompy.MakeVertex(100,  0,  0)
-p3 = geompy.MakeVertex(0, -100,  0)
-p4 = geompy.MakeVertex(0,   70,  0)
-p5 = geompy.MakeVertex(0,  100, 30)
-p6 = geompy.MakeVertex(0,  130,  0)
-
-# create two circles
-circle = geompy.MakeCircleThreePnt(p1, p2, p3)
-cf     = geompy.MakeCircleThreePnt(p4, p5, p6)
-
-# make circular face
-wire = geompy.MakeWire([cf])
-face = geompy.MakeFace(wire, 1)
-
-# publish circular face and second circle
-idcircle = geompy.addToStudy(circle, "Circle")
-idface   = geompy.addToStudy(face,   "Circular face")
-
-
-# init a Mesh with the circular face
-mesh1 = smesh.Mesh(face, "Mesh on circular face")
-
-# set hypotheses and algos to the first mesh
-numberOfSegments1 = 12
-algoReg1 = mesh1.Segment()
-algoReg1.SetName("Regular_1D")
-hypNbSeg1 = algoReg1.NumberOfSegments(numberOfSegments1)
-smesh.SetName(hypNbSeg1, "NumberOfSegments_" + str(numberOfSegments1))
-
-maxElementArea = 30
-
-algoMef = mesh1.Triangle()
-algoMef.SetName("MEFISTO_2D")
-hypArea = algoMef.MaxElementArea(maxElementArea)
-smesh.SetName(hypArea, "MaxElementArea_" + str(maxElementArea))
-
-
-# init a Mesh with the second circle
-mesh2 = smesh.Mesh(circle, "Mesh on circular edge")
-
-numberOfSegments2 = 12
-algoReg2 = mesh2.Segment()
-algoReg2.SetName("Regular_1D")
-hypNbSeg2 = algoReg2.NumberOfSegments(numberOfSegments2)
-smesh.SetName(hypNbSeg2, "NumberOfSegments_" + str(numberOfSegments2))
-
-
-# compute meshes
-mesh1.Compute()
-mesh2.Compute()
-
-# ---- update object browser
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_AdvancedEditor.py b/src/SMESH_SWIG/SMESH_AdvancedEditor.py
deleted file mode 100644 (file)
index 77fd88b..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2021  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
-#
-
-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 math
-
-def GetNewNodes(mesh,Elems,OldNodes):
-    """
-    Auxiliary function, which return list of nodes from
-    given Elems avoided nodes from OldNodes
-    """
-    newnodes = []
-    for i in Elems:
-        nbn = mesh.GetElemNbNodes(i)
-        for j in range(0,nbn):
-            nn = mesh.GetElemNode(i,j)
-            isold = 0
-            for k in range(0,len(newnodes)):
-                if nn==newnodes[k]:
-                    isold = 1
-                    break
-                pass
-            if isold: continue
-            for k in range(0,len(OldNodes)):
-                if nn==OldNodes[k]:
-                    isold = 1
-                    break
-                pass
-            if isold: continue
-            newnodes.append(nn)
-            pass
-        pass
-    return newnodes
-            
-
-# create empty mesh
-mesh = smesh.Mesh()
-
-tol = 0.001
-
-# create a cross from quadrangle faces
-# 1. create first edge and make extrusion along 0x
-n1 = mesh.AddNode(55,-5,0)
-n2 = mesh.AddNode(55,5,0)
-e1 = mesh.AddEdge([n1,n2])
-dir1 = SMESH.DirStruct(SMESH.PointStruct(-10,0,0))
-mesh.ExtrusionSweep([e1],dir1,11)
-# 2. create second edge and make extrusion along 0y
-n3 = mesh.AddNode(-5,-55,0)
-n4 = mesh.AddNode(5,-55,0)
-e2 = mesh.AddEdge([n3,n4])
-dir2 = SMESH.DirStruct(SMESH.PointStruct(0,10,0))
-mesh.ExtrusionSweep([e2],dir2,11)
-
-# since result has coincident nodes and faces
-# we have to make merge
-nodes = mesh.FindCoincidentNodes(0.001)
-mesh.MergeNodes(nodes)
-mesh.MergeEqualElements()
-
-# make extrusion faces along 0z
-faces = mesh.GetElementsByType(SMESH.FACE)
-nbf = len(faces)
-maxang = 2.0
-zstep = 5
-nbzsteps = 50
-dir3 = SMESH.DirStruct(SMESH.PointStruct(0,0,zstep))
-newfaces = [] # list for keeping created top faces
-              # during extrusion
-
-for i in range(0,nbzsteps):
-    mesh.ExtrusionSweep(faces,dir3,1)
-    # find top faces after each extrusion and keep them
-    res = mesh.GetLastCreatedElems()
-    nbr = len(res)
-    nfaces = []
-    for j in res:
-        nbn = mesh.GetElemNbNodes(j)
-        if nbn!=4: continue
-        nn1 = mesh.GetElemNode(j,0)
-        xyz1 = mesh.GetNodeXYZ(nn1)
-        nn2 = mesh.GetElemNode(j,1)
-        xyz2 = mesh.GetNodeXYZ(nn2)
-        nn3 = mesh.GetElemNode(j,2)
-        xyz3 = mesh.GetNodeXYZ(nn3)
-        if abs(xyz1[2]-xyz2[2])<tol and abs(xyz1[2]-xyz3[2])<tol :
-            # this face is a top face
-            nfaces.append(j)
-            pass
-        pass
-    if len(nfaces)!=nbf:
-        print("len(nfaces)!=nbf")
-        break
-    newfaces.append(nfaces)
-    # update faces for before next step of extrusion
-    faces = nfaces
-    pass
-    
-# rotate faces from newfaces
-axisr1 = SMESH.AxisStruct(0,0,0,0,0,1)
-for i in range(0,nbzsteps):
-    ang = maxang*(1-math.cos((i+1)*math.pi/nbzsteps))
-    mesh.Rotate(newfaces[i],axisr1,ang,0)
-
-
-# create circles
-# create two edges and rotate them for creation
-# full circle
-n5 = mesh.AddNode(65,0,0)
-n6 = mesh.AddNode(67.5,0,0)
-n7 = mesh.AddNode(70,0,0)
-e56 = mesh.AddEdge([n5,n6])
-e67 = mesh.AddEdge([n6,n7])
-axisr2 = SMESH.AxisStruct(65,0,0,0,1,0)
-mesh.RotationSweep([e56,e67],axisr2, math.pi/6, 12, tol)
-res = mesh.GetLastCreatedElems()
-faces1 = []
-for i in res:
-    nbn = mesh.GetElemNbNodes(i)
-    if nbn>2: faces1.append(i)
-    pass
-nbf1 = len(faces1)
-
-# create other two edges and rotate them for creation
-# other full circle
-n8 = mesh.AddNode(-65,0,0)
-n9 = mesh.AddNode(-67.5,0,0)
-n10 = mesh.AddNode(-70,0,0)
-e8 = mesh.AddEdge([n8,n9])
-e9 = mesh.AddEdge([n9,n10])
-axisr3 = SMESH.AxisStruct(-65,0,0,0,-1,0)
-mesh.RotationSweep([e8,e9],axisr3, math.pi/6, 12, tol)
-res = mesh.GetLastCreatedElems()
-faces2 = []
-for i in res:
-    nbn = mesh.GetElemNbNodes(i)
-    if nbn>2: faces2.append(i)
-    pass
-nbf2 = len(faces2)
-
-# there are coincident nodes after rotation
-# therefore we have to merge nodes
-nodes = mesh.FindCoincidentNodes(0.001)
-mesh.MergeNodes(nodes)
-
-nbcircs = 2
-nbrsteps = 24
-nbrs = nbcircs*nbrsteps
-dz = nbzsteps*zstep/nbrs
-
-# create first spiral
-oldnodes = []
-newnodes = GetNewNodes(mesh,faces1,oldnodes)
-oldnodes = newnodes
-
-nodes = []
-mesh.RotationSweep(faces1,axisr1, math.pi*2/nbrsteps, nbrs, tol)
-res = mesh.GetLastCreatedElems()
-
-for i in range(0,nbrs):
-    volumes = []
-    for j in range(0,nbf1): volumes.append(res[i+j*nbrs])
-    newnodes = GetNewNodes(mesh,volumes,oldnodes)
-    for j in newnodes:
-        xyz = mesh.GetNodeXYZ(j)
-        mesh.MoveNode(j,xyz[0],xyz[1],xyz[2]+dz*(i+1))
-        pass
-    oldnodes = newnodes
-    pass
-
-# create second spiral
-oldnodes = []
-newnodes = GetNewNodes(mesh,faces2,oldnodes)
-oldnodes = newnodes
-
-nodes = []
-mesh.RotationSweep(faces2,axisr1, math.pi*2/nbrsteps, nbrs, tol)
-res = mesh.GetLastCreatedElems()
-
-for i in range(0,nbrs):
-    volumes = []
-    for j in range(0,nbf2): volumes.append(res[i+j*nbrs])
-    newnodes = GetNewNodes(mesh,volumes,oldnodes)
-    for j in newnodes:
-        xyz = mesh.GetNodeXYZ(j)
-        mesh.MoveNode(j,xyz[0],xyz[1],xyz[2]+dz*(i+1))
-        pass
-    oldnodes = newnodes
-    pass
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_BelongToGeom.py b/src/SMESH_SWIG/SMESH_BelongToGeom.py
deleted file mode 100644 (file)
index 5aee14d..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-from SMESH_test1 import *
-
-## Old style
-def CheckBelongToGeomFilterOld(theMeshGen, theMesh, theShape, theSubShape, theElemType):
-    if theShape != theSubShape:
-        aName = str(theSubShape)
-        geompy.addToStudyInFather(theShape,theSubShape,aName)
-
-    theMeshGen.Compute(theMesh,theShape)
-
-    aFilterMgr = theMeshGen.CreateFilterManager()
-    aFilter = aFilterMgr.CreateFilter()
-   
-    aBelongToGeom = aFilterMgr.CreateBelongToGeom()
-    aBelongToGeom.SetGeom(theSubShape)
-    aBelongToGeom.SetElementType(theElemType)
-    
-    aFilter.SetPredicate(aBelongToGeom)
-    aFilterMgr.UnRegister()
-    return aFilter.GetElementsId(theMesh)
-
-## Current style
-def CheckBelongToGeomFilter(theMesh, theShape, theSubShape, theElemType):
-    if theShape != theSubShape:
-        aName = str(theSubShape)
-        geompy.addToStudyInFather(theShape,theSubShape,aName)
-
-    theMesh.Compute()
-    aFilter = smesh.GetFilter(theElemType, SMESH.FT_BelongToGeom, theSubShape)
-    return aFilter.GetElementsId(theMesh.GetMesh())
-    
-
-anElemType = SMESH.FACE;
-print("anElemType =", anElemType)
-#anIds = CheckBelongToGeomFilter(mesh,box,subShapeList[1],anElemType)
-anIds = CheckBelongToGeomFilter(mesh,box,box,anElemType)
-print("Number of ids = ", len(anIds))
-print("anIds = ", anIds)
-## Check old version
-#anIds = CheckBelongToGeomFilterOld(smesh,mesh.GetMesh(),box,box,anElemType)
-#print "anIds = ", anIds
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_BuildCompound.py b/src/SMESH_SWIG/SMESH_BuildCompound.py
deleted file mode 100644 (file)
index fcd721e..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-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
-#
-
-#  File   : SMESH_BuildCompound.py
-#  Author : Alexander KOVALEV
-#  Module : SMESH
-#  $Header$
-# ! Please, if you edit this example file, update also
-# ! SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.doc
-# ! as some sequences of symbols from this example are used during
-# ! documentation generation to identify certain places of this file
-#
-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()
-
-## 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")
-
-
-## 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 groups with the same names and
-# merging of elements with the given tolerance
-Compound1 = smesh.Concatenate([Mesh_inf.GetMesh(), Mesh_sup.GetMesh()], 0, 1, 1e-05)
-smesh.SetName(Compound1, 'Compound_with_RenamedGrps_and_MergeElems')
-# create a compound of two meshes with uniting groups with the same names and
-# creating groups of all elements
-Compound2 = smesh.Concatenate([Mesh_inf.GetMesh(), Mesh_sup.GetMesh()], 1, 0, 1e-05, True)
-smesh.SetName(Compound2, 'Compound_with_UniteGrps_and_GrpsOfAllElems')
-#end
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_GroupFromGeom.py b/src/SMESH_SWIG/SMESH_GroupFromGeom.py
deleted file mode 100644 (file)
index c73cb7e..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_GroupFromGeom.py
-#  Module : SMESH
-#
-from SMESH_test1 import *
-
-# Compute the mesh created in SMESH_test1
-
-mesh.Compute()
-
-# Create geometry groups on plane:
-aGeomGroup1 = geompy.CreateGroup(face , geompy.ShapeType["FACE"])
-geompy.AddObject(aGeomGroup1, 1)
-
-aGeomGroup2 = geompy.CreateGroup(face , geompy.ShapeType["EDGE"])
-
-geompy.AddObject(aGeomGroup2, 3)
-geompy.AddObject(aGeomGroup2, 6)
-geompy.AddObject(aGeomGroup2, 8)
-geompy.AddObject(aGeomGroup2, 10)
-
-geompy.addToStudy(aGeomGroup1, "Group on Faces")
-geompy.addToStudy(aGeomGroup2, "Group on Edges")
-
-aSmeshGroup1 = mesh.GroupOnGeom(aGeomGroup1, "SMESHGroup1", SMESH.FACE)
-aSmeshGroup2 = mesh.GroupOnGeom(aGeomGroup2, "SMESHGroup2", SMESH.EDGE)
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_GroupFromGeom2.py b/src/SMESH_SWIG/SMESH_GroupFromGeom2.py
deleted file mode 100644 (file)
index 2911d07..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-#==============================================================================
-#  Info.
-#  Bug (from script, bug)   : SMESH_GroupFromGeom.py, PAL6945
-#  Modified                 : 25/11/2004
-#  Author                   : Kovaltchuk Alexey
-#  Project                  : PAL/SALOME
-#============================================================================== 
-#
-from SMESH_test1 import *
-
-
-# Compute the mesh created in SMESH_test1
-
-mesh.Compute()
-
-# Create geometry groups on plane:
-aGeomGroup1 = geompy.CreateGroup(face , geompy.ShapeType["FACE"])
-geompy.AddObject(aGeomGroup1, 1)
-
-aGeomGroup2 = geompy.CreateGroup(face , geompy.ShapeType["EDGE"])
-
-geompy.AddObject(aGeomGroup2, 3)
-geompy.AddObject(aGeomGroup2, 6)
-geompy.AddObject(aGeomGroup2, 8)
-geompy.AddObject(aGeomGroup2, 10)
-
-geompy.addToStudy(aGeomGroup1, "Group on Faces")
-geompy.addToStudy(aGeomGroup2, "Group on Edges")
-
-aSmeshGroup1 = mesh.GroupOnGeom(aGeomGroup1, "SMESHGroup1", SMESH.FACE)
-aSmeshGroup2 = mesh.GroupOnGeom(aGeomGroup2, "SMESHGroup2", SMESH.EDGE)
-
-print("Create aGroupOnShell - a group linked to a shell")
-aGroupOnShell = mesh.GroupOnGeom(shell, "GroupOnShell", SMESH.EDGE)
-print("aGroupOnShell type =", aGroupOnShell.GetType())
-print("aGroupOnShell size =", aGroupOnShell.Size())
-print("aGroupOnShell ids :", aGroupOnShell.GetListOfID())
-
-print(" ")
-
-print("Modify <LocalLength> hypothesis: 100 -> 50")
-hypLen1.SetLength(50)
-print("Contents of aGroupOnShell changes:")
-print("aGroupOnShell size =", aGroupOnShell.Size())
-print("aGroupOnShell ids :", aGroupOnShell.GetListOfID())
-
-print(" ")
-
-print("Re-compute mesh, contents of aGroupOnShell changes again:")
-mesh.Compute()
-print("aGroupOnShell size =", aGroupOnShell.Size())
-print("aGroupOnShell ids :", aGroupOnShell.GetListOfID())
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py b/src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py
deleted file mode 100644 (file)
index 67a060c..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-def BuildGroupLyingOn(theMesh, theElemType, theName, theShape):
-    aFilterMgr = smesh.CreateFilterManager()
-    aFilter = aFilterMgr.CreateFilter()
-   
-    aLyingOnGeom = aFilterMgr.CreateLyingOnGeom()
-    aLyingOnGeom.SetGeom(theShape)
-    aLyingOnGeom.SetElementType(theElemType)
-    
-    aFilter.SetPredicate(aLyingOnGeom)
-    anIds = aFilter.GetElementsId(theMesh)
-    aFilterMgr.UnRegister()
-
-    aGroup = theMesh.CreateGroup(theElemType, theName)
-    aGroup.Add(anIds)
-
-#Example
-from SMESH_test1 import *
-
-mesh.Compute()
-
-# First way
-BuildGroupLyingOn(mesh.GetMesh(), SMESH.FACE, "Group of faces lying on edge #1", edge )
-
-# Second way
-mesh.MakeGroup("Group of faces lying on edge #2", SMESH.FACE, SMESH.FT_LyingOnGeom, edge)
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_Nut.py b/src/SMESH_SWIG/SMESH_Nut.py
deleted file mode 100644 (file)
index 1f45f16..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-#####################################################################
-#Created                :17/02/2005
-#Author                 :MASLOV Eugeny, KOVALTCHUK Alexey 
-#####################################################################
-#
-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
-import math
-
-#Sketcher_1 creation
-print("Sketcher creation...")
-Sketcher_1 = geompy.MakeSketcher("Sketcher:F 100 -57.7:TT 100 57.7:TT 0 115.47:TT -100 57.7:TT -100 -57.7:TT 0 -115.47:WW") 
-geompy.addToStudy(Sketcher_1, "Sketcher_1")
-Face_1 = geompy.MakeFace(Sketcher_1, 1)
-geompy.addToStudy(Face_1, "Face_1")
-
-#Line creation
-print("Line  creation...")
-Line_1 = geompy.MakeLineTwoPnt(geompy.MakeVertex(0,0,0), geompy.MakeVertex(0,0,100))
-geompy.addToStudy(Line_1, "Line_1")
-
-#Prism creation
-print("Prism creation...")
-Prism_1 = geompy.MakePrismVecH(Face_1, Line_1, 100)
-geompy.addToStudy(Prism_1, "Prism_1")
-
-#Sketcher_2 creation
-print("Sketcher creation...")
-Sketcher_2 = geompy.MakeSketcher("Sketcher:F 50 0:TT 80 0:TT 112 13:TT 112 48:TT 80 63:TT 80 90:TT 50 90:WW", [0,0,0, 1,0,0, 0,1,0]) 
-geompy.addToStudy(Sketcher_2, "Sketcher_2")
-Face_2 = geompy.MakeFace(Sketcher_2, 1)
-geompy.addToStudy(Face_2, "Face_2")
-
-#Revolution creation
-print("Revolution creation...")
-Revolution_1 = geompy.MakeRevolution(Face_2, Line_1, 2*math.pi)
-geompy.addToStudy(Revolution_1, "Revolution_1")
-
-#Common applying
-print("Common of Revolution and Prism...")
-Common_1 = geompy.MakeBoolean(Revolution_1, Prism_1, 1)
-geompy.addToStudy(Common_1, "Common_1")
-
-#Explode Common_1 on edges
-CommonExplodedListEdges = geompy.SubShapeAll(Common_1, geompy.ShapeType["EDGE"])
-for i in range(0, len(CommonExplodedListEdges)):
-    name = "Edge_"+str(i+1)
-    geompy.addToStudyInFather(Common_1, CommonExplodedListEdges[i], name)
-
-#Fillet applying
-print("Fillet creation...")
-Fillet_1 = geompy.MakeFillet(Common_1, 10, geompy.ShapeType["EDGE"], [5])
-geompy.addToStudy(Fillet_1, "Fillet_1")
-
-#Chamfer applying
-print("Chamfer creation...")
-cyl_face = geompy.GetFaceNearPoint( Fillet_1, geompy.MakeVertex( 50, 0, 45 ), theName='cyl_face')
-cyl_face_id = geompy.GetSubShapeID( Fillet_1, cyl_face )
-top_face = geompy.GetFaceNearPoint( Fillet_1, geompy.MakeVertex( 60, 0, 90 ), theName='top_face')
-top_face_id = geompy.GetSubShapeID( Fillet_1, top_face )
-Chamfer_1 = geompy.MakeChamferEdge(Fillet_1, 10, 10, cyl_face_id, top_face_id, theName='Chamfer_1' )
-
-cyl_face = geompy.GetFaceNearPoint( Chamfer_1, geompy.MakeVertex( 80, 0, 85 ), theName='cyl_face')
-cyl_face_id = geompy.GetSubShapeID( Chamfer_1, cyl_face )
-top_face = geompy.GetFaceNearPoint( Chamfer_1, geompy.MakeVertex( 65, 0, 90 ), theName='top_face')
-top_face_id = geompy.GetSubShapeID( Chamfer_1, top_face )
-Chamfer_2 = geompy.MakeChamferEdge(Chamfer_1, 10, 10, cyl_face_id, top_face_id, theName='Chamfer_2' )
-
-#Import of the shape from "slots.brep"
-print("Import multi-rotation from the DATA_DIR/Shapes/Brep/slots.brep")
-thePath = os.getenv("DATA_DIR")
-theFileName = os.path.join( thePath,"Shapes","Brep","slots.brep")
-theShapeForCut = geompy.ImportBREP(theFileName)
-geompy.addToStudy(theShapeForCut, "slot.brep_1")
-
-#Cut applying
-print("Cut...")
-Cut_1 = geompy.MakeBoolean(Chamfer_2, theShapeForCut, 2)
-Cut_1_ID = geompy.addToStudy(Cut_1, "Cut_1")
-
-#Mesh creation
-
-# -- Init --
-shape_mesh = salome.IDToObject( Cut_1_ID )
-
-mesh = smesh.Mesh(shape_mesh, "Nut")
-
-#HYPOTHESIS CREATION
-print("-------------------------- Average length")
-theAverageLength = 5
-algoReg1D = mesh.Segment()
-hAvLength = algoReg1D.LocalLength(theAverageLength)
-print(hAvLength.GetName())
-print(hAvLength.GetId())
-print(hAvLength.GetLength())
-smesh.SetName(hAvLength, "AverageLength_"+str(theAverageLength))
-
-print("-------------------------- MaxElementArea")
-theMaxElementArea = 20
-algoMef = mesh.Triangle(smeshBuilder.MEFISTO)
-hArea = algoMef.MaxElementArea( theMaxElementArea )
-print(hArea.GetName())
-print(hArea.GetId())
-print(hArea.GetMaxElementArea())
-smesh.SetName(hArea, "MaxElementArea_"+str(theMaxElementArea))
-
-print("-------------------------- MaxElementVolume")
-theMaxElementVolume = 150
-algoNg = mesh.Tetrahedron(smeshBuilder.NETGEN)
-hVolume = algoNg.MaxElementVolume( theMaxElementVolume )
-print(hVolume.GetName())
-print(hVolume.GetId())
-print(hVolume.GetMaxElementVolume())
-smesh.SetName(hVolume, "MaxElementVolume_"+str(theMaxElementVolume))
-
-
-print("-------------------------- compute the mesh of the mechanic piece")
-mesh.Compute()
-
-print("Information about the Nut:")
-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 quadrangles : ", mesh.NbQuadrangles())
-print("Number of volumes     : ", mesh.NbVolumes())
-print("Number of tetrahedrons: ", mesh.NbTetras())
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_Partition1_tetra.py b/src/SMESH_SWIG/SMESH_Partition1_tetra.py
deleted file mode 100644 (file)
index 26ad2f7..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# Tetrahedrization of the geometry generated by the Python script GEOM_Partition1.py
-# Hypothesis and algorithms for the mesh generation are global
-# -- Rayon de la bariere
-#
-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()
-
-from math import sqrt
-
-
-#---------------------------------------------------------------
-
-barier_height = 7.0
-barier_radius = 5.6 / 2 # Rayon de la bariere
-colis_radius = 1.0 / 2  # Rayon du colis
-colis_step = 2.0        # Distance s�parant deux colis
-cc_width = 0.11         # Epaisseur du complement de colisage
-
-# --
-
-cc_radius = colis_radius + cc_width
-colis_center = sqrt(2.0)*colis_step/2
-
-# --
-
-boolean_common  = 1
-boolean_cut     = 2
-boolean_fuse    = 3
-boolean_section = 4
-
-# --
-
-p0 = geompy.MakeVertex(0.,0.,0.)
-vz = geompy.MakeVectorDXDYDZ(0.,0.,1.)
-
-# --
-
-barier = geompy.MakeCylinder(p0, vz, barier_radius, barier_height)
-
-# --
-
-colis = geompy.MakeCylinder(p0, vz, colis_radius, barier_height)
-cc    = geompy.MakeCylinder(p0, vz,    cc_radius, barier_height)
-
-colis_cc = geompy.MakeCompound([colis, cc])
-colis_cc = geompy.MakeTranslation(colis_cc, colis_center, 0.0, 0.0)
-
-colis_cc_multi = geompy.MultiRotate1D(colis_cc, vz, 4)
-
-# --
-
-Compound1 = geompy.MakeCompound([colis_cc_multi, barier])
-SubShape_theShape = geompy.SubShapeAll(Compound1,geompy.ShapeType["SOLID"])
-alveole = geompy.MakePartition(SubShape_theShape)
-
-print("Analysis of the geometry to mesh (right after the Partition) :")
-
-subShellList = geompy.SubShapeAll(alveole, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(alveole, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(alveole, geompy.ShapeType["EDGE"])
-
-print("number of Shells in alveole : ", len(subShellList))
-print("number of Faces  in alveole : ", len(subFaceList))
-print("number of Edges  in alveole : ", len(subEdgeList))
-
-subshapes = geompy.SubShapeAll(alveole, geompy.ShapeType["SHAPE"])
-
-## there are 9 sub-shapes
-
-comp1 = geompy.MakeCompound( [ subshapes[0], subshapes[1] ] )
-comp2 = geompy.MakeCompound( [ subshapes[2], subshapes[3] ] )
-comp3 = geompy.MakeCompound( [ subshapes[4], subshapes[5] ] )
-comp4 = geompy.MakeCompound( [ subshapes[6], subshapes[7] ] )
-
-compGOs = []
-compGOs.append( comp1 )
-compGOs.append( comp2 )
-compGOs.append( comp3 )
-compGOs.append( comp4 )
-comp = geompy.MakeCompound( compGOs )
-
-alveole = geompy.MakeCompound( [ comp, subshapes[8] ])
-
-idalveole = geompy.addToStudy(alveole, "alveole")
-
-print("Analysis of the geometry to mesh (right after the MakeCompound) :")
-
-subShellList = geompy.SubShapeAll(alveole, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(alveole, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(alveole, geompy.ShapeType["EDGE"])
-
-print("number of Shells in alveole : ", len(subShellList))
-print("number of Faces  in alveole : ", len(subFaceList))
-print("number of Edges  in alveole : ", len(subEdgeList))
-
-status = geompy.CheckShape(alveole)
-print(" check status ", status)
-
-
-# ---- init a Mesh with the alveole
-shape_mesh = salome.IDToObject( idalveole )
-
-mesh = smesh.Mesh(shape_mesh, "MeshAlveole")
-
-print("-------------------------- create Hypothesis (In this case global hypothesis are used)")
-
-print("-------------------------- NumberOfSegments")
-
-numberOfSegments = 10
-
-regular1D = mesh.Segment()
-hypNbSeg = regular1D.NumberOfSegments(numberOfSegments)
-print(hypNbSeg.GetName())
-print(hypNbSeg.GetId())
-print(hypNbSeg.GetNumberOfSegments())
-smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegments))
-
-print("-------------------------- MaxElementArea")
-
-maxElementArea = 0.1
-
-mefisto2D = mesh.Triangle()
-hypArea = mefisto2D.MaxElementArea(maxElementArea)
-print(hypArea.GetName())
-print(hypArea.GetId())
-print(hypArea.GetMaxElementArea())
-smesh.SetName(hypArea, "MaxElementArea_" + str(maxElementArea))
-
-print("-------------------------- MaxElementVolume")
-
-maxElementVolume = 0.5
-
-netgen3D = mesh.Tetrahedron(smeshBuilder.NETGEN)
-hypVolume = netgen3D.MaxElementVolume(maxElementVolume)
-print(hypVolume.GetName())
-print(hypVolume.GetId())
-print(hypVolume.GetMaxElementVolume())
-smesh.SetName(hypVolume, "MaxElementVolume_" + str(maxElementVolume))
-
-print("-------------------------- compute the mesh of alveole ")
-ret = mesh.Compute()
-
-if ret != 0:
-    log=mesh.GetLog(0) # no erase trace
-    # for linelog in log:
-    #     print(linelog)
-    print("Information about the Mesh_mechanic:")
-    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())
-    print("Number of tetrahedrons: ", mesh.NbTetras())
-else:
-    print("problem when computing the mesh")
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_Sphere.py b/src/SMESH_SWIG/SMESH_Sphere.py
deleted file mode 100644 (file)
index fdcb723..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-#  GEOM GEOM_SWIG : binding of C++ implementation with Python
-#  File   : GEOM_Sphere.py
-#  Author : Damien COQUERET, Open CASCADE
-#  Module : GEOM
-#  $Header: 
-#
-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 math
-
-# It is an example of creating a hexahedrical mesh on a sphere.
-#
-# Used approach allows to avoid problems with degenerated and
-# seam edges without special processing of geometrical shapes
-
-#-----------------------------------------------------------------------
-#Variables
-Radius  = 100.
-Dist    = Radius / 2.
-Factor  = 2.5
-Angle90 = math.pi / 2.
-NbSeg   = 10
-
-PointsList = []
-ShapesList = []
-
-#Basic Elements
-P0 = geompy.MakeVertex(0., 0., 0.)
-P1 = geompy.MakeVertex(-Dist, -Dist, -Dist)
-P2 = geompy.MakeVertex(-Dist, -Dist, Dist)
-P3 = geompy.MakeVertex(-Dist, Dist, Dist)
-P4 = geompy.MakeVertex(-Dist, Dist, -Dist)
-
-VZ = geompy.MakeVectorDXDYDZ(0., 0., 1.)
-
-#Construction Elements
-PointsList.append(P1)
-PointsList.append(P2)
-PointsList.append(P3)
-PointsList.append(P4)
-PointsList.append(P1)
-
-PolyLine = geompy.MakePolyline(PointsList)
-
-Face1 = geompy.MakeFace(PolyLine, 1)
-Face2 = geompy.MakeScaleTransform(Face1, P0, Factor)
-Face3 = geompy.MakeScaleTransform(Face1, P0, -1.)
-
-#Models
-Sphere = geompy.MakeSphereR(Radius)
-
-Block = geompy.MakeHexa2Faces(Face1, Face2)
-Cube  = geompy.MakeHexa2Faces(Face1, Face3)
-
-Common1 = geompy.MakeBoolean(Sphere, Block, 1)
-Common2 = geompy.MakeRotation(Common1, VZ, Angle90)
-
-MultiBlock1 = geompy.MakeMultiTransformation1D(Common1, 20, -1, 3)
-MultiBlock2 = geompy.MakeMultiTransformation1D(Common2, 30, -1, 3)
-
-#Reconstruct sphere from several blocks
-ShapesList.append(Cube)
-ShapesList.append(MultiBlock1)
-ShapesList.append(MultiBlock2)
-Compound = geompy.MakeCompound(ShapesList)
-
-Result = geompy.MakeGlueFaces(Compound, 0.1)
-
-#addToStudy
-Id_Sphere      = geompy.addToStudy(Sphere, "Sphere")
-Id_Cube        = geompy.addToStudy(Cube, "Cube")
-
-Id_Common1     = geompy.addToStudy(Common1, "Common1")
-Id_Common2     = geompy.addToStudy(Common2, "Common2")
-
-Id_MultiBlock1 = geompy.addToStudy(MultiBlock1, "MultiBlock1")
-Id_MultiBlock2 = geompy.addToStudy(MultiBlock2, "MultiBlock2")
-
-Id_Result      = geompy.addToStudy(Result, "Result")
-
-#-----------------------------------------------------------------------
-#Meshing
-my_hexa = smesh.Mesh(Result, "Sphere_Mesh")
-algo = my_hexa.Segment()
-algo.NumberOfSegments(NbSeg)
-my_hexa.Quadrangle()
-my_hexa.Hexahedron()
-my_hexa.Compute()
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_blocks.py b/src/SMESH_SWIG/SMESH_blocks.py
deleted file mode 100644 (file)
index 9d1c47b..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-#  SMESH SMESH_SWIG : binding of C++ implementation with Python
-#  File   : SMESH_blocks.py
-#  Author : Julia DOROVSKIKH
-#  Module : SMESH
-#  $Header$
-#
-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 math
-
-import GEOM_Spanner
-
-isBlocksTest = 0 # False
-isMeshTest   = 1 # True
-
-GEOM_Spanner.MakeSpanner(geompy, math, isBlocksTest, isMeshTest, smesh)
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_box.py b/src/SMESH_SWIG/SMESH_box.py
deleted file mode 100644 (file)
index 7d2e291..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-#==============================================================================
-#  Info.
-#  Bug (from script, bug)   : box.py, PAL5223
-#  Modified                 : 25/11/2004
-#  Author                   : Kovaltchuk Alexey
-#  Project                  : PAL/SALOME
-#==============================================================================
-# Salome geometry and meshing for a box
-#
-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()
-
-from salome import sg
-
-# Plate
-
-box    = geompy.MakeBox(0.,0.,0.,1.,1.,1.)
-boxId  = geompy.addToStudy(box,"box")
-
-# ---- SMESH
-
-# ---- init a Mesh
-
-box_mesh=smesh.Mesh(box, "box_mesh")
-
-# set Hypothesis and Algorithm
-
-alg1D = box_mesh.Segment()
-alg1D.SetName("algo1D")
-hypL1 = alg1D.LocalLength(0.25)
-smesh.SetName(hypL1, "LocalLength")
-    
-alg2D = box_mesh.Quadrangle()
-alg2D.SetName("algo2D")
-
-alg3D = box_mesh.Hexahedron()
-alg3D.SetName("algo3D")
-
-# compute mesh
-
-box_mesh.Compute()
-
-sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_box2_tetra.py b/src/SMESH_SWIG/SMESH_box2_tetra.py
deleted file mode 100644 (file)
index 3cf795c..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# Tetrahedrization of the geometry union of 2 boxes having a face in common
-# Hypothesis and algorithms for the mesh generation are global
-#
-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()
-
-
-# ---- define 2 boxes box1 and box2
-
-box1 = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-
-idbox1 = geompy.addToStudy(box1, "box1")
-
-print("Analysis of the geometry box1 :")
-subShellList = geompy.SubShapeAll(box1, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(box1, geompy.ShapeType["EDGE"])
-
-print("number of Shells in box1 : ", len(subShellList))
-print("number of Faces  in box1 : ", len(subFaceList))
-print("number of Edges  in box1 : ", len(subEdgeList))
-
-box2 = geompy.MakeBox(100., 0., 0., 200., 200., 300.)
-
-idbox2 = geompy.addToStudy(box2, "box2")
-
-print("Analysis of the geometry box2 :")
-subShellList = geompy.SubShapeAll(box2, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(box2, geompy.ShapeType["EDGE"])
-
-print("number of Shells in box2 : ", len(subShellList))
-print("number of Faces  in box2 : ", len(subFaceList))
-print("number of Edges  in box2 : ", len(subEdgeList))
-
-# append the tow boxes to make ine shel, referrencing only once
-# the internal interface
-
-shell = geompy.MakePartition([box1, box2])
-idshell = geompy.addToStudy(shell, "shell")
-
-print("Analysis of the geometry shell (union of box1 and box2) :")
-subShellList = geompy.SubShapeAll(shell, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(shell, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(shell, geompy.ShapeType["EDGE"])
-
-print("number of Shells in shell : ", len(subShellList))
-print("number of Faces  in shell : ", len(subFaceList))
-print("number of Edges  in shell : ", len(subEdgeList))
-
-
-### ---------------------------- SMESH --------------------------------------
-
-# ---- init a Mesh with the shell
-
-mesh = smesh.Mesh(shell, "MeshBox2")
-
-
-# ---- set Hypothesis and Algorithm
-
-print("-------------------------- NumberOfSegments")
-
-numberOfSegments = 10
-
-regular1D = mesh.Segment()
-hypNbSeg = regular1D.NumberOfSegments(numberOfSegments)
-print(hypNbSeg.GetName())
-print(hypNbSeg.GetId())
-print(hypNbSeg.GetNumberOfSegments())
-smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegments))
-
-print("-------------------------- MaxElementArea")
-
-maxElementArea = 500
-
-mefisto2D = mesh.Triangle()
-hypArea = mefisto2D.MaxElementArea(maxElementArea)
-print(hypArea.GetName())
-print(hypArea.GetId())
-print(hypArea.GetMaxElementArea())
-smesh.SetName(hypArea, "MaxElementArea_" + str(maxElementArea))
-
-print("-------------------------- MaxElementVolume")
-
-maxElementVolume = 500
-
-netgen3D = mesh.Tetrahedron(smeshBuilder.NETGEN)
-hypVolume = netgen3D.MaxElementVolume(maxElementVolume)
-print(hypVolume.GetName())
-print(hypVolume.GetId())
-print(hypVolume.GetMaxElementVolume())
-smesh.SetName(hypVolume, "MaxElementVolume_" + str(maxElementVolume))
-
-print("-------------------------- compute shell")
-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 MeshBox2:")
-    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())
-    print("Number of tetrahedrons: ", mesh.NbTetras())
-else:
-    print("probleme when computing the mesh")
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_box3_tetra.py b/src/SMESH_SWIG/SMESH_box3_tetra.py
deleted file mode 100644 (file)
index 38610c3..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# Tetrahedrization of the geometry union of 3 boxes aligned where the middle
-# one has a race in common with the two others.
-# Hypothesis and algorithms for the mesh generation are global
-#
-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()
-
-# ---- define 3 boxes box1, box2 and box3
-
-box1 = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-
-idbox1 = geompy.addToStudy(box1, "box1")
-
-print("Analysis of the geometry box1 :")
-subShellList = geompy.SubShapeAll(box1, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(box1, geompy.ShapeType["EDGE"])
-
-print("number of Shells in box1 : ", len(subShellList))
-print("number of Faces  in box1 : ", len(subFaceList))
-print("number of Edges  in box1 : ", len(subEdgeList))
-
-box2 = geompy.MakeBox(100., 0., 0., 200., 200., 300.)
-
-idbox2 = geompy.addToStudy(box2, "box2")
-
-print("Analysis of the geometry box2 :")
-subShellList = geompy.SubShapeAll(box2, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(box2, geompy.ShapeType["EDGE"])
-
-print("number of Shells in box2 : ", len(subShellList))
-print("number of Faces  in box2 : ", len(subFaceList))
-print("number of Edges  in box2 : ", len(subEdgeList))
-
-box3 = geompy.MakeBox(0., 0., 300., 200., 200., 500.)
-
-idbox3 = geompy.addToStudy(box3, "box3")
-
-print("Analysis of the geometry box3 :")
-subShellList = geompy.SubShapeAll(box3, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(box3, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(box3, geompy.ShapeType["EDGE"])
-
-print("number of Shells in box3 : ", len(subShellList))
-print("number of Faces  in box3 : ", len(subFaceList))
-print("number of Edges  in box3 : ", len(subEdgeList))
-
-shell = geompy.MakePartition([box1, box2, box3])
-idshell = geompy.addToStudy(shell,"shell")
-
-print("Analysis of the geometry shell (union of box1, box2 and box3) :")
-subShellList = geompy.SubShapeAll(shell, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(shell, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(shell, geompy.ShapeType["EDGE"])
-
-print("number of Shells in shell : ", len(subShellList))
-print("number of Faces  in shell : ", len(subFaceList))
-print("number of Edges  in shell : ", len(subEdgeList))
-
-
-### ---------------------------- SMESH --------------------------------------
-
-# ---- init a Mesh with the shell
-
-mesh = smesh.Mesh(shell, "MeshBox3")
-
-
-# ---- set Hypothesis and Algorithm
-
-print("-------------------------- NumberOfSegments")
-
-numberOfSegments = 10
-
-regular1D = mesh.Segment()
-hypNbSeg = regular1D.NumberOfSegments(numberOfSegments)
-print(hypNbSeg.GetName())
-print(hypNbSeg.GetId())
-print(hypNbSeg.GetNumberOfSegments())
-smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegments))
-
-print("-------------------------- MaxElementArea")
-
-maxElementArea = 500
-
-mefisto2D = mesh.Triangle()
-hypArea = mefisto2D.MaxElementArea(maxElementArea)
-print(hypArea.GetName())
-print(hypArea.GetId())
-print(hypArea.GetMaxElementArea())
-smesh.SetName(hypArea, "MaxElementArea_" + str(maxElementArea))
-
-print("-------------------------- MaxElementVolume")
-
-maxElementVolume = 500
-
-netgen3D = mesh.Tetrahedron(smeshBuilder.NETGEN)
-hypVolume = netgen3D.MaxElementVolume(maxElementVolume)
-print(hypVolume.GetName())
-print(hypVolume.GetId())
-print(hypVolume.GetMaxElementVolume())
-smesh.SetName(hypVolume, "MaxElementVolume_" + str(maxElementVolume))
-
-print("-------------------------- compute shell")
-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 MeshBox3:")
-    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())
-    print("Number of tetrahedrons: ", mesh.NbTetras())
-else:
-    print("probleme when computing the mesh")
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_box_tetra.py b/src/SMESH_SWIG/SMESH_box_tetra.py
deleted file mode 100644 (file)
index 52618ad..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# Tetrahedrization of a simple box. Hypothesis and algorithms for
-# the mesh generation are global
-#
-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()
-
-# ---- define a box
-
-box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-
-idbox = geompy.addToStudy(box, "box")
-
-print("Analysis of the geometry box :")
-subShellList = geompy.SubShapeAll(box, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(box, geompy.ShapeType["EDGE"])
-
-print("number of Shells in box : ", len(subShellList))
-print("number of Faces  in box : ", len(subFaceList))
-print("number of Edges  in box : ", len(subEdgeList))
-
-
-### ---------------------------- SMESH --------------------------------------
-
-# ---- init a Mesh with the box
-
-mesh = smesh.Mesh(box, "MeshBox")
-
-# ---- set Hypothesis and Algorithm
-
-print("-------------------------- NumberOfSegments")
-numberOfSegments = 10
-
-regular1D = mesh.Segment()
-hypNbSeg = regular1D.NumberOfSegments(numberOfSegments)
-print(hypNbSeg.GetName())
-print(hypNbSeg.GetId())
-print(hypNbSeg.GetNumberOfSegments())
-smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegments))
-
-print("-------------------------- MaxElementArea")
-
-maxElementArea = 500
-
-mefisto2D = mesh.Triangle()
-hypArea = mefisto2D.MaxElementArea(maxElementArea)
-print(hypArea.GetName())
-print(hypArea.GetId())
-print(hypArea.GetMaxElementArea())
-smesh.SetName(hypArea, "MaxElementArea_" + str(maxElementArea))
-
-print("-------------------------- MaxElementVolume")
-
-maxElementVolume = 500
-
-netgen3D = mesh.Tetrahedron(smeshBuilder.NETGEN)
-hypVolume = netgen3D.MaxElementVolume(maxElementVolume)
-print(hypVolume.GetName())
-print(hypVolume.GetId())
-print(hypVolume.GetMaxElementVolume())
-smesh.SetName(hypVolume, "MaxElementVolume_" + str(maxElementVolume))
-
-print("-------------------------- compute the mesh of the box")
-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 MeshBox:")
-    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())
-    print("Number of tetrahedrons: ", mesh.NbTetras())
-else:
-    print("probleme when computing the mesh")
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_controls.py b/src/SMESH_SWIG/SMESH_controls.py
deleted file mode 100644 (file)
index d081611..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_control.py
-#  Author : Sergey LITONIN
-#  Module : SMESH
-#
-import salome
-import SMESH_mechanic
-
-import SMESH, SALOMEDS
-from salome.smesh import smeshBuilder
-smesh =  smeshBuilder.New()
-mesh = SMESH_mechanic.mesh
-
-# ---- Criterion : AREA > 100
-
-# create group
-aGroup = mesh.MakeGroup("Area > 100", SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 100)
-
-# print result
-anIds = aGroup.GetIDs()
-print("Criterion: Area > 100 Nb = ", len( anIds ))
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-
-# ----  Criterion : Taper > 3e-15
-
-# create group
-aGroup = mesh.MakeGroup("Taper > 3e-15", SMESH.FACE, SMESH.FT_Taper, SMESH.FT_MoreThan, 3e-15)
-
-# print result
-anIds = aGroup.GetIDs()
-print("Criterion: Taper > 3e-15 Nb = ", len( anIds ))
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-
-# ----  Criterion : ASPECT RATIO > 1.3
-
-# create group
-aGroup = mesh.MakeGroup("Aspect Ratio > 1.3", SMESH.FACE, SMESH.FT_AspectRatio, SMESH.FT_MoreThan, 1.3)
-
-# print result
-anIds = aGroup.GetIDs()
-print("Criterion: Aspect Ratio > 1.3 Nb = ", len( anIds ))
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-
-# ----  Criterion : MINIMUM ANGLE < 30
-
-# create group
-aGroup = mesh.MakeGroup("Minimum Angle < 30", SMESH.FACE, SMESH.FT_MinimumAngle, SMESH.FT_LessThan, 30)
-
-# print result
-anIds = aGroup.GetIDs()
-print("Criterion: Minimum Angle < 30 Nb = ", len( anIds ))
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-
-# ---- Criterion : Warp > 2e-13
-
-# create group
-aGroup = mesh.MakeGroup("Warp > 2e-13", SMESH.FACE, SMESH.FT_Warping, SMESH.FT_MoreThan, 2e-13 )
-
-# print result
-anIds = aGroup.GetIDs()
-print("Criterion: Warp > 2e-13 Nb = ", len( anIds ))
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-
-# ---- Criterion : Skew > 18
-
-# create group
-aGroup = mesh.MakeGroup("Skew > 18", SMESH.FACE, SMESH.FT_Skew, SMESH.FT_MoreThan, 18 )
-
-# print result
-anIds = aGroup.GetIDs()
-print("Criterion: Skew > 18 Nb = ", len( anIds ))
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-
-# Criterion : Length > 10
-
-# create group
-aGroup = mesh.MakeGroup("Length > 10", SMESH.FACE, SMESH.FT_Length, SMESH.FT_MoreThan, 10 )
-
-# print result
-anIds = aGroup.GetIDs()
-print("Criterion: Length > 10 Nb = ", len( anIds ))
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-
-# Criterion : Borders at multi-connections = 2
-
-# create group
-aGroup = mesh.MakeGroup("Borders at multi-connections = 2", SMESH.EDGE, SMESH.FT_MultiConnection, SMESH.FT_EqualTo, 2)
-
-# print result
-anIds = aGroup.GetIDs()
-print("Criterion: Borders at multi-connections = 2 Nb = ", len( anIds ))
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-
-# Criterion : Element Diameter 2D > 10
-
-# create group
-aGroup = mesh.MakeGroup("Element Diameter 2D > 10", SMESH.FACE, SMESH.FT_MaxElementLength2D, SMESH.FT_MoreThan, 10 )
-
-# print result
-anIds = aGroup.GetIDs()
-print("Criterion: Element Diameter 2D > 10 Nb = ", len( anIds ))
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_demo_hexa2_upd.py b/src/SMESH_SWIG/SMESH_demo_hexa2_upd.py
deleted file mode 100644 (file)
index d6c3c43..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-#==============================================================================
-#  Info.
-#  Bug (from script, bug)   : SMESH_demo_hexa2_upd.py, PAL6781
-#  Modified                 : 25/11/2004
-#  Author                   : Kovaltchuk Alexey
-#  Project                  : PAL/SALOME
-#==============================================================================
-# Tetrahedrization of a geometry (box minus a inner cylinder).
-# Hypothesis and algorithms for the mesh generation are not global:
-# the mesh of some edges is thinner
-#
-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 math
-
-
-# -----------------------------------------------------------------------------
-
-ShapeTypeShell     = 3
-ShapeTypeFace      = 4
-ShapeTypeEdge      = 6
-
-a = math.sqrt(2.)/4.
-ma = - a
-zero = 0.
-un = 1.
-mun= - un
-demi = 1./2.
-
-Orig = geompy.MakeVertex(zero,zero,zero)
-P0 = geompy.MakeVertex(a,a,zero)
-P1 = geompy.MakeVertex(zero,demi,zero)
-P2 = geompy.MakeVertex(ma,a,zero)
-P3 = geompy.MakeVertex(mun,un,zero)
-P4 = geompy.MakeVertex(un,un,zero)
-P5 = geompy.MakeVertex(zero,zero,un)
-
-arc = geompy.MakeArc(P0,P1,P2)
-e1 = geompy.MakeEdge(P2,P3)
-e2 = geompy.MakeEdge(P3,P4)
-e3 = geompy.MakeEdge(P4,P0)
-
-list = []
-list.append(arc)
-list.append(e1)
-list.append(e2)
-list.append(e3)
-
-wire = geompy.MakeWire(list)
-face = geompy.MakeFace(wire,1)
-
-dir = geompy.MakeVector(Orig,P5)
-vol1 = geompy.MakePipe(face,dir)
-
-angle = math.pi/2.
-#dir = geom.MakeVector(Orig,P5)
-vol2 = geompy.MakeRotation(vol1,dir,angle)
-
-vol3 = geompy.MakeRotation(vol2,dir,angle)
-
-vol4 = geompy.MakeRotation(vol3,dir,angle)
-
-list = []
-list.append(vol1)
-list.append(vol2)
-list.append(vol3)
-list.append(vol4)
-
-volComp = geompy.MakeCompound(list)
-
-tol3d = 1.e-3
-vol = geompy.MakeGlueFaces(volComp,tol3d)
-idVol = geompy.addToStudy(vol,"volume")
-
-print("Analysis of the final volume:")
-subShellList = geompy.SubShapeAllSorted(vol,ShapeTypeShell)
-subFaceList = geompy.SubShapeAllSorted(vol,ShapeTypeFace)
-subEdgeList = geompy.SubShapeAllSorted(vol,ShapeTypeEdge)
-
-print("number of Shells in the volume : ",len(subShellList))
-print("number of Faces in the volume : ",len(subFaceList))
-print("number of Edges in the volume : ",len(subEdgeList))
-
-idSubEdge = []
-for k in range(len(subEdgeList)):
-    idSubEdge.append(geompy.addToStudyInFather(vol,subEdgeList[k],"SubEdge"+str(k)))
-
-edgeZ = []
-edgeZ.append(subEdgeList[0])
-edgeZ.append(subEdgeList[3])
-edgeZ.append(subEdgeList[10])
-edgeZ.append(subEdgeList[11])
-edgeZ.append(subEdgeList[20])
-edgeZ.append(subEdgeList[21])
-edgeZ.append(subEdgeList[28])
-edgeZ.append(subEdgeList[31])
-
-idEdgeZ = []
-for i in range(8):
-    idEdgeZ.append(geompy.addToStudyInFather(vol,edgeZ[i],"EdgeZ"+str(i+1)))
-
-### ---------------------------- SMESH --------------------------------------
-smesh.UpdateStudy()
-
-# ---- init a Mesh with the volume
-
-mesh = smesh.Mesh(vol, "meshVolume")
-
-# ---- set Hypothesis and Algorithm to main shape
-
-print("-------------------------- NumberOfSegments the global one")
-
-numberOfSegments = 10
-
-regular1D = mesh.Segment()
-regular1D.SetName("Wire Discretisation")
-hypNbSeg = regular1D.NumberOfSegments(numberOfSegments)
-print(hypNbSeg.GetName())
-print(hypNbSeg.GetId())
-print(hypNbSeg.GetNumberOfSegments())
-smesh.SetName(hypNbSeg, "NumberOfSegments")
-
-
-print("-------------------------- Quadrangle_2D")
-
-quad2D=mesh.Quadrangle()
-quad2D.SetName("Quadrangle_2D")
-
-print("-------------------------- Hexa_3D")
-
-hexa3D=mesh.Hexahedron()
-hexa3D.SetName("Hexa_3D")
-
-
-print("-------------------------- NumberOfSegments in the Z direction")
-
-numberOfSegmentsZ = 40
-
-for i in range(8):
-    print("-------------------------- add hypothesis to edge in the Z directions", (i+1))
-
-    algo = mesh.Segment(edgeZ[i])
-    hyp = algo.NumberOfSegments(numberOfSegmentsZ)
-    smesh.SetName(hyp, "NumberOfSegmentsZ")
-    smesh.SetName(algo.GetSubMesh(), "SubMeshEdgeZ_"+str(i+1))
-  
-
-salome.sg.updateObjBrowser()
-
-print("-------------------------- compute the mesh of the volume")
-
-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 MeshBox :")
-    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())
-    print("Number of tetrahedrons: ", mesh.NbTetras())
-else:
-    print("problem when Computing the mesh")
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_fixation.py b/src/SMESH_SWIG/SMESH_fixation.py
deleted file mode 100644 (file)
index 87cec63..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_fix_volute.py
-#  Author : Paul RASCLE, EDF
-#  Module : SMESH
-#  $Header$
-#
-import salome
-salome.salome_init()
-import GEOM
-from salome.geom import geomBuilder
-geompy = geomBuilder.New()
-
-import math
-
-# -----------------------------------------------------------------------------
-
-def MakeFace(lstEdges) :
-    """
-    Create a planar face from 4 edges
-    """
-    wire = geompy.MakeWire(lstEdges)
-    face = geompy.MakeFace(wire, 1)
-    return face
-
-# -----------------------------------------------------------------------------
-
-# ---- dimensions
-
-##longueurPlq  = 0.686
-##largeurPlq   = 0.573
-##epaisseurPlq = 0.150
-
-##hauteurFlanc   = 0.380
-##epaisseurFlanc = 0.112
-##rayonConge   = 0.150 - epaisseurFlanc
-
-##epaisseurFond = 0.162
-##rayonTrou = 0.075
-##posAxeTrou = hauteurFlanc -(0.180 + rayonTrou)
-##marge = 0.01
-##tol3d = 1.e-5
-
-longueurPlq  = 686
-largeurPlq   = 573
-epaisseurPlq = 150
-
-hauteurFlanc   = 380
-epaisseurFlanc = 112
-rayonConge   = 150 - epaisseurFlanc
-
-epaisseurFond = 162
-rayonTrou = 75
-posAxeTrou = hauteurFlanc - (180 + rayonTrou)
-marge = 10
-tol3d = 1.e-3
-
-# ---- points, directions de base
-
-p0 = geompy.MakeVertex(0., 0., 0.)
-
-vx = geompy.MakeVectorDXDYDZ(100., 0., 0.)
-vy = geompy.MakeVectorDXDYDZ(0., 100., 0.)
-vz = geompy.MakeVectorDXDYDZ(0., 0., 100.)
-
-# ---- ellipse du flanc
-
-he = hauteurFlanc - 2*rayonConge
-re = 0.5*(largeurPlq - epaisseurFond) - rayonConge
-sine = re/he
-cose = math.sqrt(1. - sine*sine)
-
-ve = geompy.MakeVectorDXDYDZ(sine, 0., cose)
-cyl0 = geompy.MakeCylinder(p0, ve, re, 2*he)
-cyl1 = geompy.MakeRotation(cyl0, ve, 0.5)
-cyle = geompy.MakeTranslation(cyl1, -marge*sine, 0., -marge*cose)
-
-pbe = geompy.MakeVertex(3*he, -2*re, 3*he)
-boxe = geompy.MakeBoxTwoPnt(p0, pbe)
-
-cylcoup = geompy.MakeBoolean(cyle, boxe, 2)
-
-aretes = []
-aretes = geompy.SubShapeAllSorted(cylcoup, geompy.ShapeType["EDGE"])
-
-shape = geompy.MakeCopy(aretes[0])
-aShape = geompy.MakeTranslation(shape, 0., rayonConge + re, epaisseurPlq + 2*rayonConge)
-
-
-# -----------------------------------------------------------------------------
-# ---- decoupage de la piece en volumes a 6 faces de 4 cotes
-# -----------------------------------------------------------------------------
-
-# ---- cotes x
-
-x0  = 0.
-x0h = rayonConge
-x1  = rayonConge + epaisseurFlanc
-xc  = longueurPlq/2
-x2  = longueurPlq - rayonConge - epaisseurFlanc
-x3h = longueurPlq - rayonConge
-x3  = longueurPlq
-
-# ---- cotes y
-
-y0  = 0.
-y0h = rayonConge
-y1  = largeurPlq - epaisseurFond
-y1m = y1 - marge
-y2  = largeurPlq
-y2p = largeurPlq + marge
-
-# ---- cotes z
-
-z0  = 0.
-z1m = epaisseurPlq - marge
-z1  = epaisseurPlq
-z2  = epaisseurPlq + rayonConge
-z3  = epaisseurPlq + 2*rayonConge
-z4  = epaisseurPlq + hauteurFlanc
-z4p = epaisseurPlq + hauteurFlanc + marge
-
-zc  = epaisseurPlq + posAxeTrou
-zc2 = epaisseurPlq + (posAxeTrou - rayonTrou)/3
-zc3 = epaisseurPlq + 2*(posAxeTrou - rayonTrou)/3
-
-# ---- decoupe du fond
-
-p11 = geompy.MakeVertex(x1, y1m, z1)
-p12 = geompy.MakeVertex(x1, y1m, z2)
-p13 = geompy.MakeVertex(x1, y1m, z3)
-p14 = geompy.MakeVertex(x1, y1m, z4)
-pc1 = geompy.MakeVertex(xc, y1m, z1)
-pc2 = geompy.MakeVertex(xc, y1m, zc2)
-pc3 = geompy.MakeVertex(xc, y1m, zc3)
-pcc = geompy.MakeVertex(xc, y1m, zc)
-pc4 = geompy.MakeVertex(xc, y1m, z4)
-p21 = geompy.MakeVertex(x2, y1m, z1)
-p22 = geompy.MakeVertex(x2, y1m, z2)
-p23 = geompy.MakeVertex(x2, y1m, z3)
-p24 = geompy.MakeVertex(x2, y1m, z4)
-pcf = geompy.MakeVertex(xc, y2p, zc)
-
-arc2 = geompy.MakeArc(p12,pc2,p22)
-arc3 = geompy.MakeArc(p13,pc3,p23)
-
-segz1  = geompy.MakeVector(p11,p21)
-segz41 = geompy.MakeVector(p14,pc4)
-segz42 = geompy.MakeVector(pc4,p24)
-segx11 = geompy.MakeVector(p11,p12)
-segx12 = geompy.MakeVector(p12,p13)
-segx13 = geompy.MakeVector(p13,p14)
-segxc2 = geompy.MakeVector(pc1,pc2)
-segxc3 = geompy.MakeVector(pc2,pc3)
-segxc4 = geompy.MakeVector(pcc,pc4)
-segx21 = geompy.MakeVector(p21,p22)
-segx22 = geompy.MakeVector(p22,p23)
-segx23 = geompy.MakeVector(p23,p24)
-segx1c1 = geompy.MakeVector(p13,pcc)
-segx1c2 = geompy.MakeVector(p14,pcc)
-segx2c1 = geompy.MakeVector(p23,pcc)
-segx2c2 = geompy.MakeVector(p24,pcc)
-
-facef = []
-facef.append(MakeFace([segx13,segx1c2,segx1c1]))
-facef.append(MakeFace([segx23,segx2c2,segx2c1]))
-facef.append(MakeFace([segx2c2,segxc4,segz42]))
-facef.append(MakeFace([segx1c2,segz41,segxc4]))
-facef.append(MakeFace([segx1c1,arc3,segx2c1]))
-facef.append(MakeFace([segx12,arc2,segx22,arc3]))
-facef.append(MakeFace([segx11,segz1,segx21,arc2]))
-
-vcccf = geompy.MakeVector(pcc, pcf)
-hcccf = y2p - y1m
-decf = []
-for face in facef:
-    decf.append(geompy.MakePrismVecH(face,vcccf,hcccf))
-
-pc  = geompy.MakeVertex(xc, 0., zc)
-py2 = geompy.MakeVertex(xc, y2, zc)
-axeCyl = geompy.MakeVector(pc, py2)
-
-cylFond = geompy.MakeCylinder(pc, vy, rayonTrou, 1.1*largeurPlq)
-cylFond2 = geompy.MakeRotation(cylFond, axeCyl, math.pi)
-
-fondec = []
-for id in (0,1,2,3):
-    fondec.append(geompy.MakeBoolean(decf[id], cylFond2, 2))
-fondec.append(geompy.MakeBoolean(decf[4], cylFond, 2))
-for id in (5,6):
-    fondec.append(decf[id])
-
-p_xcy2pz4p = geompy.MakeVertex(xc,y2p,z4p)
-p_x3y2pz4p = geompy.MakeVertex(x3,y2p,z4p)
-pxc = geompy.MakeVertex(xc,y0,z0)
-bcut1 = geompy.MakeBoxTwoPnt(p0, p_xcy2pz4p)
-bcut2 = geompy.MakeBoxTwoPnt(pxc, p_x3y2pz4p)
-
-fondec2 = []
-for id in (0,1,2,3):
-    fondec2.append(fondec[id])
-for id in (4,5,6):
-    fondec2.append(geompy.MakeBoolean(fondec[id], bcut1, 1))
-    fondec2.append(geompy.MakeBoolean(fondec[id], bcut2, 1))
-
-# ----- autres blocs de decoupe
-
-bcong1 = geompy.MakeBox(x0,y0,z1, x1,y1,z2)
-bcong2 = geompy.MakeBox(x0,y1,z1, x1,y2,z2)
-bcong3 = geompy.MakeBox(x2,y0,z1, x3,y1,z2)
-bcong4 = geompy.MakeBox(x2,y1,z1, x3,y2,z2)
-
-pcylx0 = geompy.MakeVertex(0., -marge, z2)
-pcylx3 = geompy.MakeVertex(longueurPlq, -marge, z2)
-pcyly0 = geompy.MakeVertex(-marge, 0., z2)
-
-cylcongx0 = geompy.MakeCylinder(pcylx0, vy, rayonConge, largeurPlq + 2*marge)
-cylcongx3 = geompy.MakeCylinder(pcylx3, vy, rayonConge, largeurPlq + 2*marge)
-cylcongy0 = geompy.MakeCylinder(pcyly0, vx, rayonConge, longueurPlq + 2*marge)
-
-bcong1 = geompy.MakeBoolean(bcong1,cylcongx0,2)
-bcong2 = geompy.MakeBoolean(bcong2,cylcongx0,2)
-bcong1 = geompy.MakeBoolean(bcong1,cylcongy0,2)
-#NRI : inverse order of BOP
-bcong3 = geompy.MakeBoolean(bcong3,cylcongy0,2)
-bcong3 = geompy.MakeBoolean(bcong3,cylcongx3,2)
-bcong4 = geompy.MakeBoolean(bcong4,cylcongx3,2)
-
-pf1 = geompy.MakeVertex(0., y0h, z3)
-pf2 = geompy.MakeVertex(0., y1, z3)
-pf3 = geompy.MakeVertex(0., y1, z4)
-pf4 = geompy.MakeVertex(0., 0.5*(largeurPlq - epaisseurFond) , z4)
-
-vf1 = geompy.MakeEdge(pf1, pf2)
-vf2 = geompy.MakeEdge(pf2, pf3)
-vf3 = geompy.MakeEdge(pf3, pf4)
-
-faceFlanc = MakeFace([vf1,vf2,vf3,aShape])
-
-flanc1 = geompy.MakePrismVecH(faceFlanc, vx, epaisseurFlanc)
-flanc2 = geompy.MakeCopy(flanc1)
-flanc1 = geompy.MakeTranslation(flanc1, rayonConge, 0., 0.)
-flanc2 = geompy.MakeTranslation(flanc2, longueurPlq - rayonConge - epaisseurFlanc, 0., 0.)
-
-# ---- constitution et decoupe des blocs
-boxfond2 = geompy.MakeBox(x0, y1, z0, x3, y2, z4p)
-
-blocs = []
-for dec in fondec2:
-    blocs.append(geompy.MakeBoolean(boxfond2, dec, 1))
-
-blocs.append(geompy.MakeBox(x0,y1,z0, x1,y2,z1))
-blocs.append(geompy.MakeBox(x1,y1,z0, xc,y2,z1))
-blocs.append(geompy.MakeBox(xc,y1,z0, x2,y2,z1))
-blocs.append(geompy.MakeBox(x2,y1,z0, x3,y2,z1))
-blocs.append(geompy.MakeBox(x0,y0,z0, x1,y1,z1))
-blocs.append(geompy.MakeBox(x1,y0,z0, xc,y1,z1))
-blocs.append(geompy.MakeBox(xc,y0,z0, x2,y1,z1))
-blocs.append(geompy.MakeBox(x2,y0,z0, x3,y1,z1))
-blocs.append(bcong2)
-blocs.append(bcong4)
-blocs.append(bcong1)
-blocs.append(bcong3)
-blocs.append(geompy.MakeBox(x0h,y1, z2, x1, y2, z3))
-blocs.append(geompy.MakeBox(x2, y1, z2, x3h,y2, z3))
-blocs.append(geompy.MakeBox(x0h,y0h,z2, x1, y1, z3))
-blocs.append(geompy.MakeBox(x2, y0h,z2, x3h,y1, z3))
-blocs.append(geompy.MakeBox(x0h,y1, z3, x1, y2, z4))
-blocs.append(geompy.MakeBox(x2, y1, z3, x3h,y2, z4))
-blocs.append(flanc1)
-blocs.append(flanc2)
-
-compbloc = geompy.MakeCompound(blocs)
-idcomp = geompy.addToStudy(compbloc, "compbloc")
-
-# ---- eliminer les faces en double, solid-->shell
-
-compshell = geompy.MakeGlueFaces(compbloc,tol3d)
-idcomp = geompy.addToStudy(compshell, "compshell")
diff --git a/src/SMESH_SWIG/SMESH_fixation_hexa.py b/src/SMESH_SWIG/SMESH_fixation_hexa.py
deleted file mode 100644 (file)
index b937239..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# Hexahedrization of the geometry generated by the Python script
-# SMESH_fixation.py
-# Hypothesis and algorithms for the mesh generation are global
-#
-import salome
-import SMESH_fixation
-
-import SMESH, SALOMEDS
-from salome.smesh import smeshBuilder
-smesh =  smeshBuilder.New()
-
-compshell = SMESH_fixation.compshell
-idcomp = SMESH_fixation.idcomp
-geompy = SMESH_fixation.geompy
-salome = SMESH_fixation.salome
-
-print("Analysis of the geometry to be meshed :")
-subShellList = geompy.SubShapeAll(compshell, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(compshell, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(compshell, geompy.ShapeType["EDGE"])
-
-print("number of Shells in compshell : ", len(subShellList))
-print("number of Faces  in compshell : ", len(subFaceList))
-print("number of Edges  in compshell : ", len(subEdgeList))
-
-status = geompy.CheckShape(compshell)
-print(" check status ", status)
-
-### ---------------------------- SMESH --------------------------------------
-smesh.UpdateStudy()
-
-# ---- init a Mesh with the compshell
-shape_mesh = salome.IDToObject( idcomp  )
-
-mesh = smesh.Mesh(shape_mesh, "MeshCompShell")
-
-
-# ---- set Hypothesis and Algorithm
-
-print("-------------------------- NumberOfSegments")
-
-numberOfSegments = 5
-
-regular1D = mesh.Segment()
-regular1D.SetName("Wire Discretisation")
-hypNbSeg = regular1D.NumberOfSegments(numberOfSegments)
-print(hypNbSeg.GetName())
-print(hypNbSeg.GetId())
-print(hypNbSeg.GetNumberOfSegments())
-smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegments))
-
-print("-------------------------- Quadrangle_2D")
-
-quad2D = mesh.Quadrangle()
-quad2D.SetName("Quadrangle_2D")
-
-print("-------------------------- Hexa_3D")
-
-hexa3D = mesh.Hexahedron()
-hexa3D.SetName("Hexa_3D")
-
-print("-------------------------- compute compshell")
-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 MeshcompShel:")
-    print("Number of nodes       : ", mesh.NbNodes())
-    print("Number of edges       : ", mesh.NbEdges())
-    print("Number of faces       : ", mesh.NbFaces())
-    print("Number of quadrangles : ", mesh.NbQuadrangles())
-    print("Number of volumes     : ", mesh.NbVolumes())
-    print("Number of hexahedrons : ", mesh.NbHexas())
-else:
-    print("problem when Computing the mesh")
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_fixation_netgen.py b/src/SMESH_SWIG/SMESH_fixation_netgen.py
deleted file mode 100644 (file)
index ea850a9..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# Tetrahedrization of the geometry generated by the Python script
-# SMESH_fixation.py
-# The new Netgen algorithm is used that discretizes baoundaries itself
-#
-import salome
-import SMESH_fixation
-
-import SMESH, SALOMEDS
-from salome.smesh import smeshBuilder
-smesh =  smeshBuilder.New()
-
-compshell = SMESH_fixation.compshell
-idcomp = SMESH_fixation.idcomp
-geompy = SMESH_fixation.geompy
-salome = SMESH_fixation.salome
-
-print("Analysis of the geometry to be meshed :")
-subShellList = geompy.SubShapeAll(compshell, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(compshell, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(compshell, geompy.ShapeType["EDGE"])
-
-print("number of Shells in compshell : ", len(subShellList))
-print("number of Faces  in compshell : ", len(subFaceList))
-print("number of Edges  in compshell : ", len(subEdgeList))
-
-status = geompy.CheckShape(compshell)
-print(" check status ", status)
-
-### ---------------------------- SMESH --------------------------------------
-smesh.UpdateStudy()
-
-print("-------------------------- create Mesh, algorithm, hypothesis")
-
-mesh = smesh.Mesh(compshell, "MeshcompShel");
-netgen = mesh.Tetrahedron(smeshBuilder.FULL_NETGEN)
-netgen.SetMaxSize( 50 )
-#netgen.SetSecondOrder( 0 )
-netgen.SetFineness( smeshBuilder.Fine )
-#netgen.SetOptimize( 1 )
-
-print("-------------------------- compute mesh")
-ret = mesh.Compute()
-print(ret)
-if ret != 0:
-    print("Information about the MeshcompShel:")
-    print("Number of nodes        : ", mesh.GetMesh().NbNodes())
-    print("Number of edges        : ", mesh.GetMesh().NbEdges())
-    print("Number of faces        : ", mesh.GetMesh().NbFaces())
-    print("Number of triangles    : ", mesh.GetMesh().NbTriangles())
-    print("Number of volumes      : ", mesh.GetMesh().NbVolumes())
-    print("Number of tetrahedrons : ", mesh.GetMesh().NbTetras())
-    
-else:
-    print("problem when computing the mesh")
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_fixation_tetra.py b/src/SMESH_SWIG/SMESH_fixation_tetra.py
deleted file mode 100644 (file)
index 32f8143..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# Tetrahedrization of the geometry generated by the Python script
-# SMESH_fixation.py
-# Hypothesis and algorithms for the mesh generation are global
-#
-import salome
-import SMESH_fixation
-
-import SMESH, SALOMEDS
-from salome.smesh import smeshBuilder
-smesh =  smeshBuilder.New()
-
-compshell = SMESH_fixation.compshell
-idcomp = SMESH_fixation.idcomp
-geompy = SMESH_fixation.geompy
-salome = SMESH_fixation.salome
-
-print("Analysis of the geometry to be meshed :")
-subShellList = geompy.SubShapeAll(compshell, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(compshell, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(compshell, geompy.ShapeType["EDGE"])
-
-print("number of Shells in compshell : ", len(subShellList))
-print("number of Faces  in compshell : ", len(subFaceList))
-print("number of Edges  in compshell : ", len(subEdgeList))
-
-status = geompy.CheckShape(compshell)
-print(" check status ", status)
-
-### ---------------------------- SMESH --------------------------------------
-smesh.UpdateStudy()
-
-# ---- init a Mesh with the compshell
-
-mesh = smesh.Mesh(compshell, "MeshcompShell")
-
-
-# ---- set Hypothesis and Algorithm
-
-print("-------------------------- NumberOfSegments")
-
-numberOfSegments = 5
-
-regular1D = mesh.Segment()
-regular1D.SetName("Wire Discretisation")
-hypNbSeg = regular1D.NumberOfSegments(numberOfSegments)
-print(hypNbSeg.GetName())
-print(hypNbSeg.GetId())
-print(hypNbSeg.GetNumberOfSegments())
-smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegments))
-
-## print "-------------------------- MaxElementArea"
-
-## maxElementArea = 80
-
-## mefisto2D = mesh.Triangle()
-## mefisto2D.SetName("MEFISTO_2D")
-## hypArea = mefisto2D.MaxElementArea(maxElementArea)
-## print hypArea.GetName()
-## print hypArea.GetId()
-## print hypArea.GetMaxElementArea()
-## smesh.SetName(hypArea, "MaxElementArea_" + str(maxElementArea))
-
-print("-------------------------- LengthFromEdges")
-
-mefisto2D = mesh.Triangle()
-mefisto2D.SetName("MEFISTO_2D")
-hypLengthFromEdges = mefisto2D.LengthFromEdges()
-print(hypLengthFromEdges.GetName())
-print(hypLengthFromEdges.GetId())
-smesh.SetName(hypLengthFromEdges, "LengthFromEdges")
-
-
-print("-------------------------- MaxElementVolume")
-
-maxElementVolume = 1000
-
-netgen3D = mesh.Tetrahedron(smeshBuilder.NETGEN)
-netgen3D.SetName("NETGEN_3D")
-hypVolume = netgen3D.MaxElementVolume(maxElementVolume)
-print(hypVolume.GetName())
-print(hypVolume.GetId())
-print(hypVolume.GetMaxElementVolume())
-smesh.SetName(hypVolume, "MaxElementVolume_" + str(maxElementVolume))
-
-print("-------------------------- compute compshell")
-ret = mesh.Compute(mesh)
-print(ret)
-if ret != 0:
-    log = mesh.GetLog(0) # no erase trace
-    # for linelog in log:
-    #     print(linelog)
-    print("Information about the MeshcompShel:")
-    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())
-    print("Number of tetrahedrons : ", mesh.NbTetras())
-    
-else:
-    print("problem when computing the mesh")
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_flight_skin.py b/src/SMESH_SWIG/SMESH_flight_skin.py
deleted file mode 100644 (file)
index bfbd5d3..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_freebord.py b/src/SMESH_SWIG/SMESH_freebord.py
deleted file mode 100644 (file)
index 24a19df..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-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()
-
-
-# Create box without one plane
-
-box = geompy.MakeBox(0., 0., 0., 10., 20., 30.)
-subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
-
-FaceList  = []
-for i in range( 5 ):
-  FaceList.append( subShapeList[ i ] )
-
-aComp = geompy.MakeCompound( FaceList )
-aBox = geompy.Sew( aComp, 1. )
-idbox = geompy.addToStudy( aBox, "box" )
-
-aBox  = salome.IDToObject( idbox )
-
-# Create mesh
-smesh.UpdateStudy()
-
-mesh = smesh.Mesh(aBox, "Mesh_freebord")
-
-algoReg = mesh.Segment()
-hypNbSeg = algoReg.NumberOfSegments(5)
-
-algoMef = mesh.Triangle()
-hypArea = algoMef.MaxElementArea(20)
-
-
-mesh.Compute()
-
-
-# Criterion : Free edges. Create group.
-
-aCriterion = smesh.GetCriterion(SMESH.EDGE, SMESH.FT_FreeEdges)
-
-aGroup = mesh.MakeGroupByCriterion("Free edges", aCriterion)
-
-anIds = aGroup.GetIDs()
-
-# print result
-print("Criterion: Free edges Nb = ", len( anIds ))
-for i in range( len( anIds ) ):
-  print(anIds[ i ])
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_hexaedre.py b/src/SMESH_SWIG/SMESH_hexaedre.py
deleted file mode 100644 (file)
index 1eecb94..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-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()
-
-# -----------------------------------------------------------------------------
-
-p0 = geompy.MakeVertex(0., 0., 0.)
-px = geompy.MakeVertex(100., 0., 0.)
-py = geompy.MakeVertex(0., 100., 0.)
-pz = geompy.MakeVertex(0., 0., 100.)
-vx = geompy.MakeVector(p0, px)
-vy = geompy.MakeVector(p0, py)
-vz = geompy.MakeVector(p0, pz)
-
-sphereExt = geompy.MakeSphere(    0.,  0.,  0., 400.)
-sphereInt = geompy.MakeSphere(    0.,-50.,  0., 350.)
-sphereA   = geompy.MakeSphere( -400., 50., 50., 400.)
-sphereB   = geompy.MakeSphere(  350.,-50.,-50., 350.)
-ptcyle    = geompy.MakeVertex(0., -300., -450.)
-cylindre  = geompy.MakeCylinder(ptcyle,vz,500.,900.)
-
-vol1=geompy.MakeCut(sphereExt,sphereA)
-vol2=geompy.MakeCut(vol1,sphereB)
-vol3=geompy.MakeCut(vol2,cylindre)
-blob=geompy.MakeCut(vol3,sphereInt)
-blob=geompy.RemoveExtraEdges(blob)
-
-idblob = geompy.addToStudy(blob,"blob")
-
-edgeGroups = geompy.Propagate( blob )
-assert len( edgeGroups ) == 3
-
-salome.sg.updateObjBrowser()
-
-# -----------------------------------------------------------------------------
-
-print("-------------------------- mesh")
-smesh.UpdateStudy()
-
-# ---- define a mesh on the geom shape 'blob'
-mesh=smesh.Mesh(blob, "MeshBlob")
-
-# ---- assign global hypothesis and algorithms to mesh
-print("-------------------------- add hypothesis to mesh")
-algo1 = mesh.Segment()
-algo2 = mesh.Quadrangle()
-algo3 = mesh.Hexahedron()
-
-# ---- assign local hypothesis and algorithms to mesh
-for edges in edgeGroups: # loop on groups of logically parallel edges
-    length = geompy.BasicProperties( edges )[0]
-    if   length < 500:  nbSeg = 4
-    elif length < 2000: nbSeg = 10
-    else:               nbSeg = 15
-    algo = mesh.Segment( edges )
-    algo.NumberOfSegments( nbSeg )
-    pass
-
-# ---- compute mesh
-print("-------------------------- compute mesh")
-ok = mesh.Compute()
-if ok:
-    print("Information about the Mesh:")
-    print("Number of nodes       : ", mesh.NbNodes())
-    print("Number of edges       : ", mesh.NbEdges())
-    print("Number of faces       : ", mesh.NbFaces())
-    print("Number of quadrangles : ", mesh.NbQuadrangles())
-    print("Number of volumes     : ", mesh.NbVolumes())
-    print("Number of hexahedrons : ", mesh.NbHexas())
-else:
-    print("problem when Computing the mesh")
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_mechanic.py b/src/SMESH_SWIG/SMESH_mechanic.py
deleted file mode 100644 (file)
index 0b29742..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_withHole.py
-#  Author : Lucien PIGNOLONI
-#  Module : SMESH
-#  $Header$
-#-------------------------------------------------------------------------
-#
-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
-
-# ---------------------------- GEOM --------------------------------------
-
-# ---- define contiguous arcs and segment to define a closed wire
-p1   = geompy.MakeVertex( 100.0,   0.0,  0.0 )
-p2   = geompy.MakeVertex(  50.0,  50.0,  0.0 )
-p3   = geompy.MakeVertex( 100.0, 100.0,  0.0 )
-arc1 = geompy.MakeArc( p1, p2, p3 )
-
-p4   = geompy.MakeVertex( 170.0, 100.0, 0.0 )
-seg1 = geompy.MakeVector( p3, p4 )
-
-p5   = geompy.MakeVertex( 200.0, 70.0, 0.0 )
-p6   = geompy.MakeVertex( 170.0, 40.0, 0.0 )
-arc2 = geompy.MakeArc( p4, p5, p6 )
-
-p7   = geompy.MakeVertex( 120.0, 30.0, 0.0 )
-arc3 = geompy.MakeArc( p6, p7, p1 )
-
-# ---- define a closed wire with arcs and segment
-List1 = []
-List1.append( arc1 )
-List1.append( seg1 )
-List1.append( arc2 )
-List1.append( arc3 )
-
-wire1 = geompy.MakeWire( List1 )
-Id_wire1 = geompy.addToStudy( wire1, "wire1" )
-
-# ---- define a planar face with wire
-WantPlanarFace = 1 #True
-face1 = geompy.MakeFace( wire1, WantPlanarFace )
-Id_face1 = geompy.addToStudy( face1, "face1" )
-
-# ---- create a shape by extrusion
-pO = geompy.MakeVertex( 0.0, 0.0,   0.0 )
-pz = geompy.MakeVertex( 0.0, 0.0, 100.0 )
-vz = geompy.MakeVector( pO, pz )
-
-prism1 = geompy.MakePrismVecH( face1, vz, 100.0 )
-Id_prism1 = geompy.addToStudy( prism1, "prism1" )
-
-# ---- create two cylinders
-pc1 = geompy.MakeVertex(  90.0, 50.0, -40.0 )
-pc2 = geompy.MakeVertex( 170.0, 70.0, -40.0 )
-
-radius = 20.0
-height = 180.0
-cyl1 = geompy.MakeCylinder( pc1, vz, radius, height )
-cyl2 = geompy.MakeCylinder( pc2, vz, radius, height )
-
-Id_Cyl1 = geompy.addToStudy( cyl1, "cyl1" )
-Id_Cyl2 = geompy.addToStudy( cyl2, "cyl2" )
-
-# ---- cut with cyl1
-shape = geompy.MakeBoolean( prism1, cyl1, 2 )
-
-# ---- fuse with cyl2 to obtain the final mechanic piece :)
-mechanic = geompy.MakeBoolean( shape, cyl2, 3 )
-Id_mechanic = geompy.addToStudy( mechanic, "mechanic" )
-
-# ---- explode on faces
-SubFaceL = geompy.SubShapeAllSorted(mechanic, geompy.ShapeType["FACE"])
-
-# ---- add a face sub-shape in study to be meshed different
-sub_face1 = SubFaceL[0]
-name      = geompy.SubShapeName( sub_face1, mechanic )
-
-Id_SubFace1 = geompy.addToStudyInFather( mechanic, sub_face1, name )
-
-# ---- add a face sub-shape in study to be meshed different
-sub_face2 = SubFaceL[4]
-name      = geompy.SubShapeName( sub_face2, mechanic )
-
-Id_SubFace2 = geompy.addToStudyInFather( mechanic, sub_face2, name )
-
-# ---- add a face sub-shape in study to be meshed different
-sub_face3 = SubFaceL[5]
-name      = geompy.SubShapeName( sub_face3, mechanic )
-
-Id_SubFace3 = geompy.addToStudyInFather( mechanic, sub_face3, name )
-
-# ---- add a face sub-shape in study to be meshed different
-sub_face4 = SubFaceL[10]
-name      = geompy.SubShapeName( sub_face4, mechanic )
-
-Id_SubFace4 = geompy.addToStudyInFather( mechanic, sub_face4, name )
-
-# ---------------------------- SMESH --------------------------------------
-smesh.UpdateStudy()
-
-# -- Init --
-shape_mesh = salome.IDToObject( Id_mechanic )
-
-mesh = smesh.Mesh(shape_mesh, "Mesh_mechanic")
-
-print("-------------------------- NumberOfSegments")
-
-numberOfSegment = 10
-
-algo = mesh.Segment()
-hypNbSeg = algo.NumberOfSegments(numberOfSegment)
-print(hypNbSeg.GetName())
-print(hypNbSeg.GetId())
-print(hypNbSeg.GetNumberOfSegments())
-smesh.SetName(hypNbSeg, "NumberOfSegments_10")
-
-print("-------------------------- MaxElementArea")
-
-maxElementArea = 25
-
-algo = mesh.Triangle()
-hypArea25 = algo.MaxElementArea(maxElementArea)
-print(hypArea25.GetName())
-print(hypArea25.GetId())
-print(hypArea25.GetMaxElementArea())
-smesh.SetName(hypArea25, "MaxElementArea_25")
-
-# Create submesh on sub_face1 - sub_face4
-# ---------------------------------------
-
-# Set 2D algorithm to submesh on sub_face1
-algo = mesh.Quadrangle(sub_face1)
-smesh.SetName(algo.GetSubMesh(), "SubMeshFace1")
-
-# Set 2D algorithm to submesh on sub_face2
-algo = mesh.Quadrangle(sub_face2)
-smesh.SetName(algo.GetSubMesh(), "SubMeshFace2")
-
-# Set 2D algorithm to submesh on sub_face3
-algo = mesh.Quadrangle(sub_face3)
-smesh.SetName(algo.GetSubMesh(), "SubMeshFace3")
-
-# Set 2D algorithm to submesh on sub_face4
-algo = mesh.Quadrangle(sub_face4)
-smesh.SetName(algo.GetSubMesh(), "SubMeshFace4")
-
-print("-------------------------- compute the mesh of the mechanic piece")
-
-mesh.Compute()
-
-print("Information about the Mesh_mechanic:")
-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 quadrangles : ", mesh.NbQuadrangles())
-print("Number of volumes     : ", mesh.NbVolumes())
-print("Number of tetrahedrons: ", mesh.NbTetras())
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_mechanic_editor.py b/src/SMESH_SWIG/SMESH_mechanic_editor.py
deleted file mode 100644 (file)
index 5b20b16..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2021  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_withHole.py
-#  Author : Lucien PIGNOLONI
-#  Module : SMESH
-#  $Header$
-#-------------------------------------------------------------------------
-#
-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 --------------------------------------
-
-# ---- define contiguous arcs and segment to define a closed wire
-p1   = geompy.MakeVertex( 100.0,   0.0,  0.0 )
-p2   = geompy.MakeVertex(  50.0,  50.0,  0.0 )
-p3   = geompy.MakeVertex( 100.0, 100.0,  0.0 )
-arc1 = geompy.MakeArc( p1, p2, p3 )
-
-p4   = geompy.MakeVertex( 170.0, 100.0, 0.0 )
-seg1 = geompy.MakeVector( p3, p4 )
-
-p5   = geompy.MakeVertex( 200.0, 70.0, 0.0 )
-p6   = geompy.MakeVertex( 170.0, 40.0, 0.0 )
-arc2 = geompy.MakeArc( p4, p5, p6 )
-
-p7   = geompy.MakeVertex( 120.0, 30.0, 0.0 )
-arc3 = geompy.MakeArc( p6, p7, p1 )
-
-# ---- define a closed wire with arcs and segment
-List1 = []
-List1.append( arc1 )
-List1.append( seg1 )
-List1.append( arc2 )
-List1.append( arc3 )
-
-wire1 = geompy.MakeWire( List1 )
-Id_wire1 = geompy.addToStudy( wire1, "wire1" )
-
-# ---- define a planar face with wire
-WantPlanarFace = 1 #True
-face1 = geompy.MakeFace( wire1, WantPlanarFace )
-Id_face1 = geompy.addToStudy( face1, "face1" )
-
-# ---- create a shape by extrusion
-pO = geompy.MakeVertex( 0.0, 0.0,   0.0 )
-pz = geompy.MakeVertex( 0.0, 0.0, 100.0 )
-vz = geompy.MakeVector( pO, pz )
-
-prism1 = geompy.MakePrismVecH( face1, vz, 100.0 )
-Id_prism1 = geompy.addToStudy( prism1, "prism1" )
-
-# ---- create two cylinders
-pc1 = geompy.MakeVertex(  90.0, 50.0, -40.0 )
-pc2 = geompy.MakeVertex( 170.0, 70.0, -40.0 )
-
-radius = 20.0
-height = 180.0
-cyl1 = geompy.MakeCylinder( pc1, vz, radius, height )
-cyl2 = geompy.MakeCylinder( pc2, vz, radius, height )
-
-Id_Cyl1 = geompy.addToStudy( cyl1, "cyl1" )
-Id_Cyl2 = geompy.addToStudy( cyl2, "cyl2" )
-
-# ---- cut with cyl1
-shape = geompy.MakeBoolean( prism1, cyl1, 2 )
-
-# ---- fuse with cyl2 to obtain the final mechanic piece :)
-mechanic = geompy.MakeBoolean( shape, cyl2, 3 )
-Id_mechanic = geompy.addToStudy( mechanic, "mechanic" )
-
-# ---- explode on faces
-SubFaceL = geompy.SubShapeAllSorted(mechanic, geompy.ShapeType["FACE"])
-
-# ---- add a face sub-shape in study to be meshed different
-sub_face1 = SubFaceL[0]
-name      = geompy.SubShapeName( sub_face1, mechanic )
-
-Id_SubFace1 = geompy.addToStudyInFather( mechanic, sub_face1, name )
-
-# ---- add a face sub-shape in study to be meshed different
-sub_face2 = SubFaceL[4]
-name      = geompy.SubShapeName( sub_face2, mechanic )
-
-Id_SubFace2 = geompy.addToStudyInFather( mechanic, sub_face2, name )
-
-# ---- add a face sub-shape in study to be meshed different
-sub_face3 = SubFaceL[5]
-name      = geompy.SubShapeName( sub_face3, mechanic )
-
-Id_SubFace3 = geompy.addToStudyInFather( mechanic, sub_face3, name )
-
-# ---- add a face sub-shape in study to be meshed different
-sub_face4 = SubFaceL[10]
-name      = geompy.SubShapeName( sub_face4, mechanic )
-
-Id_SubFace4 = geompy.addToStudyInFather( mechanic, sub_face4, name )
-
-# ---------------------------- SMESH --------------------------------------
-
-# -- Init --
-shape_mesh = salome.IDToObject( Id_mechanic )
-
-mesh = smesh.Mesh(shape_mesh, "Mesh_mechanic")
-
-print("-------------------------- NumberOfSegments")
-
-numberOfSegment = 10
-
-algo = mesh.Segment()
-hypNbSeg = algo.NumberOfSegments(numberOfSegment)
-print(hypNbSeg.GetName())
-print(hypNbSeg.GetId())
-print(hypNbSeg.GetNumberOfSegments())
-smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegment))
-
-
-print("-------------------------- MaxElementArea")
-
-maxElementArea = 25
-
-algo = mesh.Triangle()
-hypArea25 = algo.MaxElementArea(maxElementArea)
-print(hypArea25.GetName())
-print(hypArea25.GetId())
-print(hypArea25.GetMaxElementArea())
-smesh.SetName(hypArea25, "MaxElementArea_" + str(maxElementArea))
-
-
-# Create submesh on sub_face1 - sub_face4
-# ---------------------------------------
-
-# Set 2D algorithm to submesh on sub_face1
-algo = mesh.Quadrangle(sub_face1)
-smesh.SetName(algo.GetSubMesh(), "SubMeshFace1")
-submesh1 = algo.GetSubMesh()
-
-# Set 2D algorithm to submesh on sub_face2
-algo = mesh.Quadrangle(sub_face2)
-smesh.SetName(algo.GetSubMesh(), "SubMeshFace2")
-submesh2 = algo.GetSubMesh()
-
-# Set 2D algorithm to submesh on sub_face3
-algo = mesh.Quadrangle(sub_face3)
-smesh.SetName(algo.GetSubMesh(), "SubMeshFace3")
-submesh3 = algo.GetSubMesh()
-
-# Set 2D algorithm to submesh on sub_face4
-algo = mesh.Quadrangle(sub_face4)
-smesh.SetName(algo.GetSubMesh(), "SubMeshFace4")
-submesh4 = algo.GetSubMesh()
-
-
-print("-------------------------- compute the mesh of the mechanic piece")
-
-mesh.Compute()
-
-print("Information about the Mesh_mechanic:")
-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 quadrangles : ", mesh.NbQuadrangles())
-print("Number of volumes     : ", mesh.NbVolumes())
-print("Number of tetrahedrons: ", mesh.NbTetras())
-
-
-#1 cutting of quadrangles of the 'SubMeshFace2' submesh
-mesh.SplitQuadObject(submesh2, 1)
-
-#2 cutting of triangles of the group
-FacesTriToQuad = [ 2391, 2824, 2825, 2826, 2827, 2828, 2832, 2833, 2834, 2835, 2836, 2837, 2838, 2839, 2841, 2844, 2845, 2847, 2854, 2861, 2863, 2922, 2923, 2924, 2925, 2926, 2927, 2928, 2929, 2930, 2931, 2932, 2933, 2934, 2935, 2936, 2937, 2938, 2940, 2941, 2946, 2951, 2970, 2971, 2972, 2973, 2974, 2975, 2976, 2977, 2978, 2979, 2980, 2981, 2982, 2983, 2984, 2985 ]
-GroupTriToQuad = mesh.MakeGroupByIds("Group of faces (quad)", SMESH.FACE, FacesTriToQuad)
-mesh.TriToQuadObject(GroupTriToQuad, SMESH.FT_AspectRatio , 1.57)
-
-#3 extrusion of the group
-point = SMESH.PointStruct(0, 0, 5)
-vector = SMESH.DirStruct(point)
-mesh.ExtrusionSweepObject(GroupTriToQuad, vector, 5)
-
-#4 mirror object
-mesh.Mirror([], SMESH.AxisStruct(0, 0, 0, 0, 0, 0), smesh.POINT, 0)
-
-#5 mesh translation
-point = SMESH.PointStruct(10, 10, 10)
-vector = SMESH.DirStruct(point)
-mesh.Translate([], vector, 0)
-
-#6 mesh rotation
-axisXYZ = SMESH.AxisStruct(0, 0, 0, 10, 10, 10)
-angle180 =  180*3.141/180
-mesh.Rotate([], axisXYZ, angle180, 0)
-
-#7 group smoothing
-FacesSmooth = [864, 933, 941, 950, 1005, 1013]
-GroupSmooth = mesh.MakeGroupByIds("Group of faces (smooth)", SMESH.FACE, FacesSmooth)
-mesh.SmoothObject(GroupSmooth, [], 20, 2, smesh.CENTROIDAL_SMOOTH)
-
-#8 rotation sweep object
-FacesRotate = [492, 493, 502, 503]
-GroupRotate = mesh.MakeGroupByIds("Group of faces (rotate)", SMESH.FACE, FacesRotate)
-angle45 =  45*3.141/180
-axisXYZ = SMESH.AxisStruct(-38.3128, -73.3658, -133.321, -13.3402, -13.3265, 6.66632)
-mesh.RotationSweepObject(GroupRotate, axisXYZ, angle45, 4, 1e-5)
-
-#9 reorientation of the submesh1
-mesh.ReorientObject(submesh1)
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_mechanic_netgen.py b/src/SMESH_SWIG/SMESH_mechanic_netgen.py
deleted file mode 100644 (file)
index 786eec4..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# Quadrangulation of the geometry generated by the Python script
-# SMESH_mechanic.py
-# The new Netgen algorithm is used that discretizes baoundaries itself
-#
-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 --------------------------------------
-
-# ---- define contiguous arcs and segment to define a closed wire
-p1   = geompy.MakeVertex( 100.0,   0.0,  0.0 )
-p2   = geompy.MakeVertex(  50.0,  50.0,  0.0 )
-p3   = geompy.MakeVertex( 100.0, 100.0,  0.0 )
-arc1 = geompy.MakeArc( p1, p2, p3 )
-
-p4   = geompy.MakeVertex( 170.0, 100.0, 0.0 )
-seg1 = geompy.MakeVector( p3, p4 )
-
-p5   = geompy.MakeVertex( 200.0, 70.0, 0.0 )
-p6   = geompy.MakeVertex( 170.0, 40.0, 0.0 )
-arc2 = geompy.MakeArc( p4, p5, p6 )
-
-p7   = geompy.MakeVertex( 120.0, 30.0, 0.0 )
-arc3 = geompy.MakeArc( p6, p7, p1 )
-
-# ---- define a closed wire with arcs and segment
-List1 = []
-List1.append( arc1 )
-List1.append( seg1 )
-List1.append( arc2 )
-List1.append( arc3 )
-
-wire1 = geompy.MakeWire( List1 )
-Id_wire1 = geompy.addToStudy( wire1, "wire1" )
-
-# ---- define a planar face with wire
-WantPlanarFace = 1 #True
-face1 = geompy.MakeFace( wire1, WantPlanarFace )
-Id_face1 = geompy.addToStudy( face1, "face1" )
-
-# ---- create a shape by extrusion
-pO = geompy.MakeVertex( 0.0, 0.0,   0.0 )
-pz = geompy.MakeVertex( 0.0, 0.0, 100.0 )
-vz = geompy.MakeVector( pO, pz )
-
-prism1 = geompy.MakePrismVecH( face1, vz, 100.0 )
-Id_prism1 = geompy.addToStudy( prism1, "prism1")
-
-# ---- create two cylinders
-
-pc1 = geompy.MakeVertex(  90.0, 50.0, -40.0 )
-pc2 = geompy.MakeVertex( 170.0, 70.0, -40.0 )
-radius = 20.0
-height = 180.0
-cyl1  = geompy.MakeCylinder( pc1, vz, radius, height )
-cyl2  = geompy.MakeCylinder( pc2, vz, radius, height )
-
-Id_Cyl1 = geompy.addToStudy( cyl1, "cyl1" )
-Id_Cyl2 = geompy.addToStudy( cyl2, "cyl2" )
-
-# ---- cut with cyl1
-shape  = geompy.MakeBoolean( prism1, cyl1, 2 )
-
-# ---- fuse with cyl2 to obtain the final mechanic piece :)
-mechanic =  geompy.MakeBoolean( shape, cyl2, 3 )
-Id_mechanic = geompy.addToStudy( mechanic, "mechanic" )
-
-# ---- Analysis of the geometry
-
-print("Analysis of the geometry mechanic :")
-
-subShellList = geompy.SubShapeAll(mechanic,geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(mechanic,geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(mechanic,geompy.ShapeType["EDGE"])
-
-print("number of Shells in mechanic : ",len(subShellList))
-print("number of Faces in mechanic : ",len(subFaceList))
-print("number of Edges in mechanic : ",len(subEdgeList))
-
-### ---------------------------- SMESH --------------------------------------
-
-print("-------------------------- create Mesh, algorithm, hypothesis")
-
-mesh = smesh.Mesh(mechanic, "Mesh_mechanic");
-netgen = mesh.Triangle(smeshBuilder.NETGEN)
-netgen.SetMaxSize( 50 )
-#netgen.SetSecondOrder( 0 )
-netgen.SetFineness( smeshBuilder.Fine )
-netgen.SetQuadAllowed( 1 )
-#netgen.SetOptimize( 1 )
-
-print("-------------------------- compute mesh")
-ret = mesh.Compute()
-print(ret)
-if ret != 0:
-    print("Information about the MeshcompShel:")
-    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 quadrangles  : ", mesh.NbQuadrangles())
-    print("Number of volumes      : ", mesh.NbVolumes())
-    print("Number of tetrahedrons : ", mesh.NbTetras())
-    
-else:
-    print("problem when computing the mesh")
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_mechanic_tetra.py b/src/SMESH_SWIG/SMESH_mechanic_tetra.py
deleted file mode 100644 (file)
index 1e424cb..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_withHole.py
-#  Author : Lucien PIGNOLONI
-#  Module : SMESH
-#  $Header$
-#
-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 --------------------------------------
-
-# ---- define contiguous arcs and segment to define a closed wire
-p1   = geompy.MakeVertex( 100.0,   0.0,  0.0 )
-p2   = geompy.MakeVertex(  50.0,  50.0,  0.0 )
-p3   = geompy.MakeVertex( 100.0, 100.0,  0.0 )
-arc1 = geompy.MakeArc( p1, p2, p3 )
-
-p4   = geompy.MakeVertex( 170.0, 100.0, 0.0 )
-seg1 = geompy.MakeVector( p3, p4 )
-
-p5   = geompy.MakeVertex( 200.0, 70.0, 0.0 )
-p6   = geompy.MakeVertex( 170.0, 40.0, 0.0 )
-arc2 = geompy.MakeArc( p4, p5, p6 )
-
-p7   = geompy.MakeVertex( 120.0, 30.0, 0.0 )
-arc3 = geompy.MakeArc( p6, p7, p1 )
-
-# ---- define a closed wire with arcs and segment
-List1 = []
-List1.append( arc1 )
-List1.append( seg1 )
-List1.append( arc2 )
-List1.append( arc3 )
-
-wire1 = geompy.MakeWire( List1 )
-Id_wire1 = geompy.addToStudy( wire1, "wire1" )
-
-# ---- define a planar face with wire
-WantPlanarFace = 1 #True
-face1 = geompy.MakeFace( wire1, WantPlanarFace )
-Id_face1 = geompy.addToStudy( face1, "face1" )
-
-# ---- create a shape by extrusion
-pO = geompy.MakeVertex( 0.0, 0.0,   0.0 )
-pz = geompy.MakeVertex( 0.0, 0.0, 100.0 )
-vz = geompy.MakeVector( pO, pz )
-
-prism1 = geompy.MakePrismVecH( face1, vz, 100.0 )
-Id_prism1 = geompy.addToStudy( prism1, "prism1")
-
-# ---- create two cylinders
-
-pc1 = geompy.MakeVertex(  90.0, 50.0, -40.0 )
-pc2 = geompy.MakeVertex( 170.0, 70.0, -40.0 )
-radius = 20.0
-height = 180.0
-cyl1  = geompy.MakeCylinder( pc1, vz, radius, height )
-cyl2  = geompy.MakeCylinder( pc2, vz, radius, height )
-
-Id_Cyl1 = geompy.addToStudy( cyl1, "cyl1" )
-Id_Cyl2 = geompy.addToStudy( cyl2, "cyl2" )
-
-# ---- cut with cyl1
-shape  = geompy.MakeBoolean( prism1, cyl1, 2 )
-
-# ---- fuse with cyl2 to obtain the final mechanic piece :)
-mechanic =  geompy.MakeBoolean( shape, cyl2, 3 )
-Id_mechanic = geompy.addToStudy( mechanic, "mechanic" )
-
-# ---- Analysis of the geometry
-
-print("Analysis of the geometry mechanic :")
-
-subShellList = geompy.SubShapeAll(mechanic,geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(mechanic,geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(mechanic,geompy.ShapeType["EDGE"])
-
-print("number of Shells in mechanic : ",len(subShellList))
-print("number of Faces in mechanic : ",len(subFaceList))
-print("number of Edges in mechanic : ",len(subEdgeList))
-
-### ---------------------------- SMESH --------------------------------------
-
-shape_mesh = salome.IDToObject( Id_mechanic  )
-
-mesh = smesh.Mesh(shape_mesh, "Mesh_mechanic_tetra")
-
-print("-------------------------- add hypothesis to main mechanic")
-
-numberOfSegment = 10
-
-algo1 = mesh.Segment()
-hypNbSeg = algo1.NumberOfSegments(numberOfSegment)
-print(hypNbSeg.GetName())
-print(hypNbSeg.GetId())
-print(hypNbSeg.GetNumberOfSegments())
-smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegment))
-
-
-maxElementArea = 20
-
-algo2 = mesh.Triangle(smeshBuilder.MEFISTO)
-hypArea = algo2.MaxElementArea(maxElementArea)
-print(hypArea.GetName())
-print(hypArea.GetId())
-print(hypArea.GetMaxElementArea())
-smesh.SetName(hypArea, "MaxElementArea_" + str(maxElementArea))
-
-
-maxElementVolume = 20
-
-algo3 = mesh.Tetrahedron(smeshBuilder.NETGEN)
-hypVolume = algo3.MaxElementVolume(maxElementVolume)
-print(hypVolume.GetName())
-print(hypVolume.GetId())
-print(hypVolume.GetMaxElementVolume())
-smesh.SetName(hypVolume, "maxElementVolume_" + str(maxElementVolume))
-
-
-print("-------------------------- compute the mesh of the mechanic piece")
-mesh.Compute()
-
-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 quadrangles: ", mesh.NbQuadrangles())
-print("Number of volumes     : ", mesh.NbVolumes())
-print("Number of tetrahedrons: ", mesh.NbTetras())
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_reg.py b/src/SMESH_SWIG/SMESH_reg.py
deleted file mode 100644 (file)
index b1981f4..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_reg.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()
-
-from salome.StdMeshers import StdMeshersBuilder
-
-
-# ---- define a box
-print("Define box")
-box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idbox = geompy.addToStudy(box, "box")
-
-# ---- add faces of box to study
-print("Add faces to study")
-idface = []
-subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
-for f in subShapeList:
-  name = geompy.SubShapeName(f, box)
-  print(name)
-  idface.append( geompy.addToStudyInFather(box, f, name) )
-
-# ---- add edges of box to study
-print("Add edges to study")
-idedge = []
-subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["EDGE"])
-for f in subShapeList:
-  name = geompy.SubShapeName(f, box)
-  print(name)
-  idedge.append( geompy.addToStudyInFather(box, f, name) )
-
-salome.sg.updateObjBrowser()
-
-# ---- launch SMESH
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init()
-smesh.UpdateStudy()
-
-# ---- Creating meshes
-
-box = salome.IDToObject(idbox)
-names = [ "MeshBoxReg", "MeshBoxScale", "MeshBoxTable", "MeshBoxExpr" ]
-
-
-print("-------------------------- Create ", names[0], " mesh")
-mesh = smesh.Mesh(box, names[0])
-algo = mesh.Segment()
-hyp = algo.NumberOfSegments(7)
-hyp.SetDistrType(0)
-smesh.SetName(hyp, "NumberOfSegmentsReg")
-algo = mesh.Triangle()
-algo.MaxElementArea(2500)
-
-print("-------------------------- Create ", names[1], " mesh")
-mesh = smesh.Mesh(box, names[1])
-algo = mesh.Segment()
-hyp = algo.NumberOfSegments(7)
-hyp.SetDistrType(1)
-hyp.SetScaleFactor(2)
-smesh.SetName(hyp, "NumberOfSegmentsScale")
-algo = mesh.Triangle()
-algo.MaxElementArea(2500)
-
-print("-------------------------- Create ", names[2], " mesh")
-mesh = smesh.Mesh(box,names[2])
-algo = mesh.Segment()
-hyp = algo.NumberOfSegments(7)
-hyp.SetDistrType(2)
-hyp.SetTableFunction( [0, 0.1, 0.5, 1.0, 1.0, 0.1] )
-hyp.SetConversionMode(0)
-smesh.SetName(hyp, "NumberOfSegmentsTable")
-algo = mesh.Triangle()
-algo.MaxElementArea(2500)
-
-print("-------------------------- Create ", names[3], " mesh")
-mesh = smesh.Mesh(box, names[3])
-algo = mesh.Segment()
-hyp = algo.NumberOfSegments(10)
-hyp.SetDistrType(3)
-hyp.SetExpressionFunction("sin(3*t)")
-hyp.SetConversionMode(1)
-smesh.SetName(hyp, "NumberOfSegmentsExpr")
-algo = mesh.Triangle()
-algo.MaxElementArea(2500)
-
-
-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 (file)
index c1f3cea..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_test.py b/src/SMESH_SWIG/SMESH_test.py
deleted file mode 100644 (file)
index c6504e3..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-#  SMESH SMESH_I : idl implementation based on 'SMESH' unit's classes
-#  File   : SMESH_test.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()
-
-# ---- define a box
-
-box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idb = geompy.addToStudy(box, "box")
-
-# ---- add first face of box in study
-
-subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
-face = subShapeList[0]
-name = geompy.SubShapeName(face, box)
-idf = geompy.addToStudyInFather(box, face, name)
-
-# ---- add shell from box  in study
-
-subShellList = geompy.SubShapeAll(box, geompy.ShapeType["SHELL"])
-shell = subShellList[0]
-name = geompy.SubShapeName(shell, box)
-ids = geompy.addToStudyInFather(box, shell, name)
-
-# ---- add first edge of face in study
-
-edgeList = geompy.SubShapeAll(face, geompy.ShapeType["EDGE"])
-edge = edgeList[0];
-name = geompy.SubShapeName(edge, face)
-ide = geompy.addToStudyInFather(face, edge, name)
-
-# ---- SMESH
-
-smesh.UpdateStudy()
-box = salome.IDToObject(idb)
-mesh = smesh.Mesh(box, "Meshbox")
-
-print("-------------------------- add hypothesis to box")
-
-algo_1 = mesh.Segment(box)
-hyp = algo_1.LocalLength(100)
-print(hyp.GetName())
-print(hyp.GetId())
-print(hyp.GetLength())
-
-algo_2 = mesh.Triangle(smeshBuilder.MEFISTO, box)
-hyp = algo_2.MaxElementArea(5000)
-print(hyp.GetName())
-print(hyp.GetId())
-print(hyp.GetMaxElementArea())
-
-smesh.SetName(algo_2.GetSubMesh(), "SubMeshBox")
-
-
-print("-------------------------- add hypothesis to edge")
-
-edge = salome.IDToObject(ide)
-
-algo_3 = mesh.Segment(edge)
-hyp = algo_3.LocalLength(100)
-print(hyp.GetName())
-print(hyp.GetId())
-print(hyp.GetLength())
-
-smesh.SetName(algo_3.GetSubMesh(), "SubMeshEdge")
-
-
-print("-------------------------- compute face")
-
-face = salome.IDToObject(idf)
-
-ret = mesh.Compute(face)
-print(ret)
-log = [] #mesh.GetLog(0) # 0 - GetLog without ClearLog after, else if 1 - ClearLog after
-for a in log:
-    print("-------")
-    ii = 0
-    ir = 0
-    comType = a.commandType
-    if comType == 0:
-        for i in range(a.number):
-            ind = a.indexes[ii]
-            ii = ii+1
-            r1 = a.coords[ir]
-            ir = ir+1
-            r2 = a.coords[ir]
-            ir = ir+1
-            r3 = a.coords[ir]
-            ir = ir+1
-            print("AddNode %i - %g %g %g" % (ind, r1, r2, r3))
-    elif comType == 1:
-        for i in range(a.number):
-            ind = a.indexes[ii]
-            ii = ii+1
-            i1 = a.indexes[ii]
-            ii = ii+1
-            i2 = a.indexes[ii]
-            ii = ii+1
-            print("AddEdge %i - %i %i" % (ind, i1, i2))
-    elif comType == 2:
-        for i in range(a.number):
-            ind = a.indexes[ii]
-            print(ind)
-            ii = ii+1
-            print(ii)
-            i1 = a.indexes[ii]
-            ii = ii+1
-            i2 = a.indexes[ii]
-            print(i2)
-            ii = ii+1
-            print("ii", ii)
-            i3 = a.indexes[ii]
-            print(i3)
-            #ii = ii+1
-            ii = ii+1
-            print("AddTriangle %i - %i %i %i" % (ind, i1, i2, i3))
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_test0.py b/src/SMESH_SWIG/SMESH_test0.py
deleted file mode 100644 (file)
index 60b0530..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_test0.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()
-
-# ---- define a box
-
-box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idbox = geompy.addToStudy(box, "box")
-
-# ---- add first face of box in study
-
-subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
-face = subShapeList[0]
-name = geompy.SubShapeName(face, box)
-print(name)
-idface = geompy.addToStudyInFather(box, face, name)
-
-# ---- add shell from box  in study
-
-subShellList = geompy.SubShapeAll(box, geompy.ShapeType["SHELL"])
-shell = subShellList[0]
-name = geompy.SubShapeName(shell, box)
-print(name)
-idshell = geompy.addToStudyInFather(box, shell, name)
-
-# ---- add first edge of face in study
-
-edgeList = geompy.SubShapeAll(face, geompy.ShapeType["EDGE"])
-edge = edgeList[0]
-name = geompy.SubShapeName(edge, face)
-print(name)
-idedge = geompy.addToStudyInFather(face, edge, name)
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_test1.py b/src/SMESH_SWIG/SMESH_test1.py
deleted file mode 100644 (file)
index 1f158a6..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_test1.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()
-
-# ---- define a box
-
-box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idbox = geompy.addToStudy(box, "box")
-
-# ---- add first face of box in study
-
-subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
-face = subShapeList[0]
-name = geompy.SubShapeName(face, box)
-print(name)
-idface = geompy.addToStudyInFather(box, face, name)
-
-# ---- add shell from box  in study
-
-subShellList = geompy.SubShapeAll(box, geompy.ShapeType["SHELL"])
-shell = subShellList[0]
-name = geompy.SubShapeName(shell, box)
-print(name)
-idshell = geompy.addToStudyInFather(box, shell, name)
-
-# ---- add first edge of face in study
-
-edgeList = geompy.SubShapeAll(face, geompy.ShapeType["EDGE"])
-edge = edgeList[0]
-name = geompy.SubShapeName(edge, face)
-print(name)
-idedge = geompy.addToStudyInFather(face, edge, name)
-
-
-# ---- SMESH
-
-# ---- Init a Mesh with the box
-
-mesh = smesh.Mesh(box, "Meshbox")
-
-print("-------------------------- add hypothesis to box")
-algoReg1 = mesh.Segment()
-hypNbSeg1 = algoReg1.NumberOfSegments(7)
-print(hypNbSeg1.GetName())
-print(hypNbSeg1.GetId())
-print(hypNbSeg1.GetNumberOfSegments())
-smesh.SetName(hypNbSeg1, "NumberOfSegments_7")
-
-algoMef1 = mesh.Triangle()
-hypArea1 = algoMef1.MaxElementArea(2500)
-print(hypArea1.GetName())
-print(hypArea1.GetId())
-print(hypArea1.GetMaxElementArea())
-smesh.SetName(hypArea1, "MaxElementArea_2500")
-
-# ---- add hypothesis to edge
-print("-------------------------- add hypothesis to edge")
-edge = salome.IDToObject(idedge)
-
-algoReg2 = mesh.Segment(edge)
-hypLen1 = algoReg2.LocalLength(100)
-smesh.SetName(algoReg2.GetSubMesh(), "SubMeshEdge")
-print(hypLen1.GetName())
-print(hypLen1.GetId())
-print(hypLen1.GetLength())
-smesh.SetName(hypLen1, "Local_Length_100")
-
-# ---- add hypothesis to face
-print("-------------------------- add hypothesis to face")
-face = salome.IDToObject(idface)
-
-algoMef2 = mesh.Triangle(face)
-hypArea2 = algoMef2.MaxElementArea(500)
-smesh.SetName(algoMef2.GetSubMesh(), "SubMeshFace")
-print(hypArea2.GetName())
-print(hypArea2.GetId())
-print(hypArea2.GetMaxElementArea())
-smesh.SetName(hypArea2, "MaxElementArea_500")
-
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_test1_AndDisplay.py b/src/SMESH_SWIG/SMESH_test1_AndDisplay.py
deleted file mode 100644 (file)
index 6c53c0a..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_test1.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()
-
-# ---- define a box
-
-box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idbox = geompy.addToStudy(box, "box")
-
-# ---- add first face of box in study
-
-subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
-face = subShapeList[0]
-name = geompy.SubShapeName(face, box)
-print(name)
-idface = geompy.addToStudyInFather(box, face, name)
-
-# ---- add shell from box  in study
-
-subShellList = geompy.SubShapeAll(box, geompy.ShapeType["SHELL"])
-shell = subShellList[0]
-name = geompy.SubShapeName(shell, box)
-print(name)
-idshell = geompy.addToStudyInFather(box, shell, name)
-
-# ---- add first edge of face in study
-
-edgeList = geompy.SubShapeAll(face, geompy.ShapeType["EDGE"])
-edge = edgeList[0]
-name = geompy.SubShapeName(edge, face)
-print(name)
-idedge = geompy.addToStudyInFather(face, edge, name)
-
-
-# ---- SMESH
-
-# ---- Init a Mesh with the box
-
-mesh = smesh.Mesh(box, "Meshbox")
-
-print("-------------------------- add hypothesis to box")
-algoReg1 = mesh.Segment()
-hypNbSeg1 = algoReg1.NumberOfSegments(7)
-print(hypNbSeg1.GetName())
-print(hypNbSeg1.GetId())
-print(hypNbSeg1.GetNumberOfSegments())
-smesh.SetName(hypNbSeg1, "NumberOfSegments_7")
-
-algoMef1 = mesh.Triangle()
-hypArea1 = algoMef1.MaxElementArea(2500)
-print(hypArea1.GetName())
-print(hypArea1.GetId())
-print(hypArea1.GetMaxElementArea())
-smesh.SetName(hypArea1, "MaxElementArea_2500")
-
-# ---- add hypothesis to edge
-print("-------------------------- add hypothesis to edge")
-edge = salome.IDToObject(idedge)
-
-algoReg2 = mesh.Segment(edge)
-hypLen1 = algoReg2.LocalLength(100)
-smesh.SetName(algoReg2.GetSubMesh(), "SubMeshEdge")
-print(hypLen1.GetName())
-print(hypLen1.GetId())
-print(hypLen1.GetLength())
-smesh.SetName(hypLen1, "Local_Length_100")
-
-# ---- add hypothesis to face
-print("-------------------------- add hypothesis to face")
-face = salome.IDToObject(idface)
-
-algoMef2 = mesh.Triangle(face)
-hypArea2 = algoMef2.MaxElementArea(500)
-smesh.SetName(algoMef2.GetSubMesh(), "SubMeshFace")
-print(hypArea2.GetName())
-print(hypArea2.GetId())
-print(hypArea2.GetMaxElementArea())
-smesh.SetName(hypArea2, "MaxElementArea_500")
-
-mesh.Compute()
-
-salome.sg.updateObjBrowser()
-
-sg = salome.ImportComponentGUI('SMESH')
-if not isinstance(sg, type(salome.salome_ComponentGUI)):
-    sg.CreateAndDisplayActor('0:1:2:3')
diff --git a/src/SMESH_SWIG/SMESH_test2.py b/src/SMESH_SWIG/SMESH_test2.py
deleted file mode 100644 (file)
index 562519c..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_test2.py
-#  Module : SMESH
-#
-from SMESH_test1 import *
-
-# ---- compute box
-
-print("-------------------------- compute box")
-ret = mesh.Compute()
-print(ret)
-log = mesh.GetLog(0); # no erase trace
-# for linelog in log:
-#     print(linelog)
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_test3.py b/src/SMESH_SWIG/SMESH_test3.py
deleted file mode 100644 (file)
index edfbe6e..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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_test3.py
-#  Module : SMESH
-#import salome
-#
-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 math
-
-pi = math.pi
-
-# ---------------------------------------------
-xa = math.sin(pi/12)
-ya = 0
-za = math.cos(pi/12)
-
-xb = 0
-yb = math.sin(pi/18)
-zb = math.cos(pi/18)
-
-xc = math.cos(-pi/18)
-yc = 0
-zc = math.sin(-pi/18)
-
-rc1 = 150
-rc2 = 150
-rc3 = 150
-rc4 = 300
-
-hc1 = 300
-hc2 = 2*hc1
-hc3 = 2*hc1
-hc4 = 2*hc1
-
-# ---------------------------------------------
-point_0 = geompy.MakeVertex(0, 0, 0)
-point_z = geompy.MakeVertex(0, 0, 1)
-
-point_a = geompy.MakeVertex(xa, ya, za)
-point_b = geompy.MakeVertex(xb, yb, zb)
-point_c = geompy.MakeVertex(xc, yc, zc)
-
-dir_z = geompy.MakeVector(point_0, point_z)
-dir_a = geompy.MakeVector(point_0, point_a)
-dir_b = geompy.MakeVector(point_0, point_b)
-dir_c = geompy.MakeVector(point_0, point_c)
-
-axe_z = dir_z
-axe_a = dir_a
-axe_b = dir_b
-axe_c = dir_c
-
-cyl_1 = geompy.MakeCylinder(point_0, dir_z, rc1, hc1)
-
-cyl_t = geompy.MakeCylinder(point_0, dir_a, rc2, hc2)
-cyl_a = geompy.MakeTranslation(cyl_t, 1.2*rc1, 0.1*rc1, -0.5*hc1)
-
-cyl_t = geompy.MakeCylinder(point_0, dir_b, rc3, hc3)
-cyl_b = geompy.MakeTranslation(cyl_t, -1.2*rc1, -0.1*rc1, -0.5*hc1)
-
-cyl_t = geompy.MakeCylinder(point_0, dir_c, rc4, hc4)
-cyl_t = geompy.MakeRotation(cyl_t, axe_c, pi/2)
-cyl_c = geompy.MakeTranslation(cyl_t, -hc1, 0, 0)
-cyl_d = geompy.MakeTranslation(cyl_t, -hc1, 0, 1.3*rc4)
-
-inter_t = geompy.MakeBoolean(cyl_c,cyl_d, 1) # common
-
-blob_t = geompy.MakeBoolean(cyl_1, cyl_a, 2) # cut
-blob_t = geompy.MakeBoolean(blob_t, cyl_b, 2)
-
-blob = geompy.MakeBoolean(blob_t, inter_t, 1) # common
-
-idblob = geompy.addToStudy(blob,"blob")
-#idc = geompy.addToStudy(cyl_c,"cyl_c")
-#idd = geompy.addToStudy(cyl_d,"cyl_d")
diff --git a/src/SMESH_SWIG/SMESH_test4.py b/src/SMESH_SWIG/SMESH_test4.py
deleted file mode 100644 (file)
index 1fd2773..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-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
-
-box   = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idbox = geompy.addToStudy(box, "box")
-
-subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
-face   = subShapeList[0]
-name   = geompy.SubShapeName(face, box)
-idface = geompy.addToStudyInFather(box, face, name)
-
-box  = salome.IDToObject(idbox)
-face = salome.IDToObject(idface)
-
-# ---- SMESH
-
-smesh.UpdateStudy()
-mesh = smesh.Mesh(box, "Meshbox")
-
-# Set 1D algorithm/hypotheses to mesh
-algo1 = mesh.Segment()
-algo1.NumberOfSegments(10)
-
-# Set 2D algorithm/hypotheses to mesh
-algo2 = mesh.Triangle(smeshBuilder.MEFISTO)
-algo2.MaxElementArea(10)
-
-# Create submesh on face
-algo3 = mesh.Segment(face)
-algo3.NumberOfSegments(10)
-algo4 = mesh.Triangle(smeshBuilder.MEFISTO, face)
-algo4.MaxElementArea(100)
-submesh = algo4.GetSubMesh()
-smesh.SetName(submesh, "SubMeshFace")
-
-
-mesh.Compute()
-
-faces = submesh.GetElementsByType(SMESH.FACE)
-if len(faces) > 1:
-    print(len(faces), len(faces)/2)
-    group1 = mesh.CreateEmptyGroup(SMESH.FACE,"Group of faces")
-    group2 = mesh.CreateEmptyGroup(SMESH.FACE,"Another group of faces")
-    group1.Add(faces[:int(len(faces)/2)])
-    group2.Add(faces[int(len(faces)/2):])
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/SMESH_test5.py b/src/SMESH_SWIG/SMESH_test5.py
deleted file mode 100644 (file)
index ca49d2c..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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()
index 92991e20c66b8a6ebc61bfa07ac5069b124f79f6..eba4007299a1498c08fda586198524bf0f263461 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2021-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 
 #include "SALOME_KernelServices.hxx"
 
-#include "SMESH_Component_Generator.hxx"
-
 #include <cstring>
 
 #include <DriverGMF_Read.hxx>
 #include <SMESH_MGLicenseKeyGen.hxx>
 
-
-std::string BuildSMESHInstanceInternal()
-{
-  Engines::EngineComponent_var zeRef = RetrieveSMESHInstance();
-  CORBA::String_var ior = KERNEL::getORB()->object_to_string(zeRef);
-  return std::string(ior.in());
-}
-
 std::string GetMGLicenseKeyImpl(const char* gmfFile)
 {
   smIdType nbVertex, nbEdge, nbFace, nbVol;
index 9c912869ebadc71da439a40f3f350791ee975a4c..efef9e4cf86765f4a68a22595e8a47c9d0e8b5d8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2021-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -21,6 +21,4 @@
 
 #include <string>
 
-std::string BuildSMESHInstanceInternal();
-
 std::string GetMGLicenseKeyImpl(const char* gmfFile);
index d1220cb9021e06fbafbae93c6cd32ba575468d60..d5dafd358716e9c6fcad750ae22ef0fbacd159c1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2021-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 
 %inline
 {
-  std::string BuildSMESHInstance()
-  {
-    return BuildSMESHInstanceInternal();
-  }
-
   std::string GetMGLicenseKey(const char* gmfFile)
   {
     return GetMGLicenseKeyImpl( gmfFile );
index 71e1a50d6e268796a0d0e65aaf6fb82446596472..280ae889ff0b620034c9a0e05a3fb09a423abcdd 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -25,6 +25,7 @@ LIBRARY = "libStdMeshersEngine.so"
 
 from salome.smesh.smesh_algorithm import Mesh_Algorithm
 import StdMeshers
+from salome.geom import geomBuilder
 
 #----------------------------
 # Mesh algo type identifiers
@@ -42,13 +43,8 @@ Algorithm type: Python 1D algorithm, see :class:`~StdMeshersBuilder.StdMeshersBu
 
 COMPOSITE   = "CompositeSegment_1D"
 """
-
 Algorithm type: Composite segment 1D algorithm, see :class:`~StdMeshersBuilder.StdMeshersBuilder_CompositeSegment`
 """
-MEFISTO     = "MEFISTO_2D"
-"""
-Algorithm type: Triangle MEFISTO 2D algorithm, see :class:`~StdMeshersBuilder.StdMeshersBuilder_Triangle_MEFISTO`
-"""
 
 Hexa        = "Hexa_3D"
 """
@@ -623,72 +619,6 @@ class StdMeshersBuilder_Segment_Python(Mesh_Algorithm):
 
     pass # end of StdMeshersBuilder_Segment_Python class
 
-class StdMeshersBuilder_Triangle_MEFISTO(Mesh_Algorithm):
-    """
-    Triangle MEFISTO 2D algorithm.
-    It is created by calling smeshBuilder.Mesh.Triangle(smeshBuilder.MEFISTO,geom=0)
-    """
-    
-
-    meshMethod = "Triangle"
-    """
-    name of the dynamic method in smeshBuilder.Mesh class
-    """
-    algoType   = MEFISTO
-    """
-    type of algorithm used with helper function in smeshBuilder.Mesh class
-    """
-    isDefault  = True
-    """
-    flag pointing whether this algorithm should be used by default in dynamic method
-        of smeshBuilder.Mesh class
-    """
-    docHelper  = "Create triangle 2D algorithm for faces"
-    """
-    doc string of the method
-    """
-
-    def __init__(self, mesh, geom=0):
-        """
-        Private constructor.
-
-        Parameters:
-            mesh: parent mesh object algorithm is assigned to
-            geom: geometry (shape/sub-shape) algorithm is assigned to;
-                if it is :code:`0` (default), the algorithm is assigned to the main shape
-        """
-        Mesh_Algorithm.__init__(self)
-        self.Create(mesh, geom, self.algoType)
-        pass
-
-    def MaxElementArea(self, area, UseExisting=0):
-        """
-        Defines "MaxElementArea" hypothesis basing on the definition of the maximum area of each triangle
-
-        Parameters:
-            area: for the maximum area of each triangle
-            UseExisting: if ==true - searches for an  existing hypothesis created with the
-                same parameters, else (default) - Create a new one
-        """
-        
-        from salome.smesh.smeshBuilder import IsEqual
-        comparator = lambda hyp, args: IsEqual(hyp.GetMaxElementArea(), args[0])
-        hyp = self.Hypothesis("MaxElementArea", [area], UseExisting=UseExisting,
-                              CompareMethod=comparator)
-        hyp.SetMaxElementArea(area)
-        return hyp
-
-    def LengthFromEdges(self):
-        """
-        Defines "LengthFromEdges" hypothesis to build triangles
-            based on the length of the edges taken from the wire
-        """
-        
-        hyp = self.Hypothesis("LengthFromEdges", UseExisting=1, CompareMethod=self.CompareEqualHyp)
-        return hyp
-
-    pass # end of StdMeshersBuilder_Triangle_MEFISTO class
-
 class StdMeshersBuilder_Quadrangle(Mesh_Algorithm):
     """
     Defines a quadrangle 2D algorithm.
@@ -809,9 +739,11 @@ class StdMeshersBuilder_Quadrangle(Mesh_Algorithm):
         if corners and isinstance( corners[0], GEOM._objref_GEOM_Object ):
             corners = [ self.mesh.geompyD.GetSubShapeID( self.mesh.geom, v ) for v in corners ]
 
-        if self.params.GetQuadType() != quadType:
+        #If quadType is None - will used default parameter ( StdMeshers.QUAD_STANDARD )
+        if quadType and self.params.GetQuadType() != quadType:
             self.params.SetQuadType(quadType)
-        if vertexID > 0:
+        #If triangleVertex is None - will used default parameter ( -1 ):
+        if triangleVertex and vertexID > 0:
             self.params.SetTriaVertex( vertexID )
         from salome.smesh.smeshBuilder import AssureGeomPublished
         for v in enfVertices:
@@ -2084,3 +2016,106 @@ class StdMeshersBuilder_UseExisting_2D(Mesh_Algorithm):
         pass
 
     pass # end of StdMeshersBuilder_UseExisting_2D class
+    
+class StdMeshersBuilder_ViscousLayer(Mesh_Algorithm):
+    """ Defines the prismatic layer builder.
+
+    It is created by calling smeshBuilder.Mesh.ViscousLayerBuilder(geom=TheGeometry)
+    """
+    
+    meshMethod = "ViscousLayerBuilder"
+    """
+    name of the dynamic method in smeshBuilder.Mesh class
+    """
+    algoType   = "ViscousLayerBuilder"
+    """
+    type of algorithm used with helper function in smeshBuilder.Mesh class
+    """
+    docHelper  = "Viscous layer builder for 2D and 3D geometries"
+    """
+    doc string of the method
+    """
+    
+    # On create method it will call create method from mesh python class
+    # 
+    def __init__(self, mesh, geom = 0 ):
+        """
+        Private constructor.
+
+        Parameters:
+            mesh: parent mesh object algorithm is assigned to
+            geom: geometry (shape/sub-shape) algorithm is assigned to;
+                if it is :code:`0` (default), the algorithm is assigned to the main shape
+        """        
+        self.thickness          = None
+        self.numberOfLayers     = None
+        self.stretchFactor      = None
+        self.elementsId         = []
+        self.isElementToIgnore  = True
+        self.extrMethod         = StdMeshers.SURF_OFFSET_SMOOTH
+        self.groupName          = ""
+        self.shrinkGeometry     = None
+        self.algo               = self.Create(mesh, geom, self.algoType)     
+        pass
+
+    def setBuilderParameters( self, thickness, numberOfLayers, stretchFactor, elementsId=[], 
+                                    isElementToIgnore=True, extrMethod=StdMeshers.SURF_OFFSET_SMOOTH, groupName="" ):            
+        self.thickness          = thickness
+        self.numberOfLayers     = numberOfLayers
+        self.stretchFactor      = stretchFactor
+        self.elementsId         = elementsId        # can be faces or edges
+        self.isElementToIgnore  = isElementToIgnore
+        self.extrMethod         = extrMethod
+        self.groupName          = groupName
+
+        self.algo.SetTotalThickness( thickness )
+        self.algo.SetNumberLayers( numberOfLayers )
+        self.algo.SetStretchFactor( stretchFactor )
+        
+        #Faces are set based on int ids so if a collection of face geom objects is recived cast it to int 
+        if elementsId and isinstance( elementsId, geomBuilder.GEOM._objref_GEOM_Object ):
+            elementsId = [ elementsId ]
+        if elementsId and isinstance( elementsId[0], geomBuilder.GEOM._objref_GEOM_Object ):
+            elementsIDs = []
+            for shape in elementsId:
+                try:
+                  ff = self.mesh.geompyD.SubShapeAll( shape, self.mesh.geompyD.ShapeType["FACE"] )
+                  if ( len( ff ) == 0 ):
+                    #try to get edges
+                    ff = self.mesh.geompyD.SubShapeAll( shape, self.mesh.geompyD.ShapeType["EDGE"] )
+
+                  for f in ff:
+                    elementsIDs.append( self.mesh.geompyD.GetSubShapeID(self.mesh.geom, f))
+                except:
+                  # try to get the SHAPERSTUDY engine directly, because GetGen does not work because of
+                  # simplification of access in geomBuilder: omniORB.registerObjref
+                  from SHAPERSTUDY_utils import getEngine
+                  gen = getEngine()
+                  if gen:
+                    aShapeOp = gen.GetIShapesOperations()
+                    ff = aShapeOp.ExtractSubShapes( shape, self.mesh.geompyD.ShapeType["FACE"], False)
+                    if (len(ff)==0):
+                        #try to get edges
+                        ff = aShapeOp.ExtractSubShapes( shape, self.mesh.geompyD.ShapeType["EDGE"], False)
+                    for f in ff:
+                      elementsIDs.append( aShapeOp.GetSubShapeIndex( self.mesh.geom, f ))
+            elementsId = elementsIDs
+
+        self.algo.SetFaces( elementsId, isElementToIgnore )    
+        self.algo.SetGroupName( groupName )   
+        self.algo.SetMethod( extrMethod )        
+        
+    def GetShrinkGeometry( self ):
+        if isinstance(self.geom, geomBuilder.GEOM._objref_GEOM_Object):
+            self.shrinkGeometry = self.algo.GetShrinkGeometry( self.mesh.GetMesh(), self.geom )
+        
+        return self.shrinkGeometry
+
+    def AddLayers( self, shrinkMesh ):
+        success = self.algo.AddLayers( shrinkMesh.GetMesh(), self.mesh.GetMesh(), self.geom )
+        if ( success ):
+            return self.mesh  #Return the original mesh of the builder
+        else:
+            return shrinkMesh
+
+    pass # end of StdMeshersBuilder_ViscousLayer class
\ No newline at end of file
diff --git a/src/SMESH_SWIG/YACS_geomesh0.py b/src/SMESH_SWIG/YACS_geomesh0.py
deleted file mode 100644 (file)
index 05a235a..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-#!/usr/bin/env python3
-# Copyright (C) 2018-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
-#
-
-# 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
index 11b3980f6e6645f37d458213a57bdd1e6b38af5c..e7ad6f4d6258222c3a70cc17208839eb2ac02b7b 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 #
 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/src/SMESH_SWIG/ex00_all.py b/src/SMESH_SWIG/ex00_all.py
deleted file mode 100644 (file)
index ccbdf2d..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# ==================================
-# Load all examples
-# -----------------
-#
-import ex01_cube2build
-import ex02_cube2primitive
-import ex03_cube2partition
-import ex04_cube5tetraHexa
-import ex05_hole1build
-import ex06_hole1boolean
-import ex07_hole1partition
-import ex08_hole2build
-import ex09_grid4build
-import ex10_grid4geometry
-import ex11_grid3partition
-import ex12_grid17partition
-import ex13_hole1partial
-import ex14_cyl1holed
-import ex15_cyl2geometry
-import ex16_cyl2complementary
-import ex17_dome1
-import ex18_dome2
-import ex19_sphereINcube
diff --git a/src/SMESH_SWIG/ex01_cube2build.py b/src/SMESH_SWIG/ex01_cube2build.py
deleted file mode 100644 (file)
index ba1098e..0000000
+++ /dev/null
@@ -1,326 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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()
-
-# Geometry
-# ========
-
-# A small cube centered and put on a great cube build by points, edges, faces and solids
-
-# Points
-# ------
-
-greatPoint111 = geompy.MakeVertex( 0,  0,  0)
-greatPoint211 = geompy.MakeVertex(10,  0,  0)
-greatPoint311 = geompy.MakeVertex(20,  0,  0)
-greatPoint411 = geompy.MakeVertex(30,  0,  0)
-
-greatPoint121 = geompy.MakeVertex( 0, 10,  0)
-greatPoint221 = geompy.MakeVertex(10, 10,  0)
-greatPoint321 = geompy.MakeVertex(20, 10,  0)
-greatPoint421 = geompy.MakeVertex(30, 10,  0)
-
-greatPoint112 = geompy.MakeVertex( 0,  0, 10)
-greatPoint212 = geompy.MakeVertex(10,  0, 10)
-greatPoint312 = geompy.MakeVertex(20,  0, 10)
-greatPoint412 = geompy.MakeVertex(30,  0, 10)
-
-greatPoint122 = geompy.MakeVertex( 0, 10, 10)
-greatPoint222 = geompy.MakeVertex(10, 10, 10)
-greatPoint322 = geompy.MakeVertex(20, 10, 10)
-greatPoint422 = geompy.MakeVertex(30, 10, 10)
-
-greatPoint113 = geompy.MakeVertex( 0,  0, 20)
-greatPoint213 = geompy.MakeVertex(10,  0, 20)
-greatPoint313 = geompy.MakeVertex(20,  0, 20)
-greatPoint413 = geompy.MakeVertex(30,  0, 20)
-
-greatPoint123 = geompy.MakeVertex( 0, 10, 20)
-greatPoint223 = geompy.MakeVertex(10, 10, 20)
-greatPoint323 = geompy.MakeVertex(20, 10, 20)
-greatPoint423 = geompy.MakeVertex(30, 10, 20)
-
-greatPoint114 = geompy.MakeVertex( 0,  0, 30)
-greatPoint214 = geompy.MakeVertex(10,  0, 30)
-greatPoint314 = geompy.MakeVertex(20,  0, 30)
-greatPoint414 = geompy.MakeVertex(30,  0, 30)
-
-greatPoint124 = geompy.MakeVertex( 0, 10, 30)
-greatPoint224 = geompy.MakeVertex(10, 10, 30)
-greatPoint324 = geompy.MakeVertex(20, 10, 30)
-greatPoint424 = geompy.MakeVertex(30, 10, 30)
-
-
-smallPoint111 = greatPoint222
-smallPoint211 = greatPoint322
-smallPoint121 = geompy.MakeVertex(10, 20, 10)
-smallPoint221 = geompy.MakeVertex(20, 20, 10)
-
-smallPoint112 = greatPoint223
-smallPoint212 = greatPoint323
-smallPoint122 = geompy.MakeVertex(10, 20, 20)
-smallPoint222 = geompy.MakeVertex(20, 20, 20)
-
-# Edges
-# -----
-
-smallEdgeX11 = geompy.MakeEdge(smallPoint111, smallPoint211)
-smallEdgeX21 = geompy.MakeEdge(smallPoint121, smallPoint221)
-smallEdgeX12 = geompy.MakeEdge(smallPoint112, smallPoint212)
-smallEdgeX22 = geompy.MakeEdge(smallPoint122, smallPoint222)
-
-smallEdgeY11 = geompy.MakeEdge(smallPoint111, smallPoint121)
-smallEdgeY21 = geompy.MakeEdge(smallPoint211, smallPoint221)
-smallEdgeY12 = geompy.MakeEdge(smallPoint112, smallPoint122)
-smallEdgeY22 = geompy.MakeEdge(smallPoint212, smallPoint222)
-
-smallEdgeZ11 = geompy.MakeEdge(smallPoint111, smallPoint112)
-smallEdgeZ21 = geompy.MakeEdge(smallPoint211, smallPoint212)
-smallEdgeZ12 = geompy.MakeEdge(smallPoint121, smallPoint122)
-smallEdgeZ22 = geompy.MakeEdge(smallPoint221, smallPoint222)
-
-
-greatEdgeX111 = geompy.MakeEdge(greatPoint111, greatPoint211)
-greatEdgeX211 = geompy.MakeEdge(greatPoint211, greatPoint311)
-greatEdgeX311 = geompy.MakeEdge(greatPoint311, greatPoint411)
-greatEdgeX121 = geompy.MakeEdge(greatPoint121, greatPoint221)
-greatEdgeX221 = geompy.MakeEdge(greatPoint221, greatPoint321)
-greatEdgeX321 = geompy.MakeEdge(greatPoint321, greatPoint421)
-
-greatEdgeX112 = geompy.MakeEdge(greatPoint112, greatPoint212)
-greatEdgeX212 = geompy.MakeEdge(greatPoint212, greatPoint312)
-greatEdgeX312 = geompy.MakeEdge(greatPoint312, greatPoint412)
-greatEdgeX122 = geompy.MakeEdge(greatPoint122, greatPoint222)
-greatEdgeX222 = smallEdgeX11
-greatEdgeX322 = geompy.MakeEdge(greatPoint322, greatPoint422)
-
-greatEdgeX113 = geompy.MakeEdge(greatPoint113, greatPoint213)
-greatEdgeX213 = geompy.MakeEdge(greatPoint213, greatPoint313)
-greatEdgeX313 = geompy.MakeEdge(greatPoint313, greatPoint413)
-greatEdgeX123 = geompy.MakeEdge(greatPoint123, greatPoint223)
-greatEdgeX223 = smallEdgeX12
-greatEdgeX323 = geompy.MakeEdge(greatPoint323, greatPoint423)
-
-greatEdgeX114 = geompy.MakeEdge(greatPoint114, greatPoint214)
-greatEdgeX214 = geompy.MakeEdge(greatPoint214, greatPoint314)
-greatEdgeX314 = geompy.MakeEdge(greatPoint314, greatPoint414)
-greatEdgeX124 = geompy.MakeEdge(greatPoint124, greatPoint224)
-greatEdgeX224 = geompy.MakeEdge(greatPoint224, greatPoint324)
-greatEdgeX324 = geompy.MakeEdge(greatPoint324, greatPoint424)
-
-greatEdgeY11 = geompy.MakeEdge(greatPoint111, greatPoint121)
-greatEdgeY21 = geompy.MakeEdge(greatPoint211, greatPoint221)
-greatEdgeY31 = geompy.MakeEdge(greatPoint311, greatPoint321)
-greatEdgeY41 = geompy.MakeEdge(greatPoint411, greatPoint421)
-
-greatEdgeY12 = geompy.MakeEdge(greatPoint112, greatPoint122)
-greatEdgeY22 = geompy.MakeEdge(greatPoint212, greatPoint222)
-greatEdgeY32 = geompy.MakeEdge(greatPoint312, greatPoint322)
-greatEdgeY42 = geompy.MakeEdge(greatPoint412, greatPoint422)
-
-greatEdgeY13 = geompy.MakeEdge(greatPoint113, greatPoint123)
-greatEdgeY23 = geompy.MakeEdge(greatPoint213, greatPoint223)
-greatEdgeY33 = geompy.MakeEdge(greatPoint313, greatPoint323)
-greatEdgeY43 = geompy.MakeEdge(greatPoint413, greatPoint423)
-
-greatEdgeY14 = geompy.MakeEdge(greatPoint114, greatPoint124)
-greatEdgeY24 = geompy.MakeEdge(greatPoint214, greatPoint224)
-greatEdgeY34 = geompy.MakeEdge(greatPoint314, greatPoint324)
-greatEdgeY44 = geompy.MakeEdge(greatPoint414, greatPoint424)
-
-greatEdgeZ111 = geompy.MakeEdge(greatPoint111, greatPoint112)
-greatEdgeZ211 = geompy.MakeEdge(greatPoint211, greatPoint212)
-greatEdgeZ311 = geompy.MakeEdge(greatPoint311, greatPoint312)
-greatEdgeZ411 = geompy.MakeEdge(greatPoint411, greatPoint412)
-
-greatEdgeZ121 = geompy.MakeEdge(greatPoint121, greatPoint122)
-greatEdgeZ221 = geompy.MakeEdge(greatPoint221, greatPoint222)
-greatEdgeZ321 = geompy.MakeEdge(greatPoint321, greatPoint322)
-greatEdgeZ421 = geompy.MakeEdge(greatPoint421, greatPoint422)
-
-greatEdgeZ112 = geompy.MakeEdge(greatPoint112, greatPoint113)
-greatEdgeZ212 = geompy.MakeEdge(greatPoint212, greatPoint213)
-greatEdgeZ312 = geompy.MakeEdge(greatPoint312, greatPoint313)
-greatEdgeZ412 = geompy.MakeEdge(greatPoint412, greatPoint413)
-
-greatEdgeZ122 = geompy.MakeEdge(greatPoint122, greatPoint123)
-greatEdgeZ222 = smallEdgeZ11
-greatEdgeZ322 = smallEdgeZ21
-greatEdgeZ422 = geompy.MakeEdge(greatPoint422, greatPoint423)
-
-greatEdgeZ113 = geompy.MakeEdge(greatPoint113, greatPoint114)
-greatEdgeZ213 = geompy.MakeEdge(greatPoint213, greatPoint214)
-greatEdgeZ313 = geompy.MakeEdge(greatPoint313, greatPoint314)
-greatEdgeZ413 = geompy.MakeEdge(greatPoint413, greatPoint414)
-
-greatEdgeZ123 = geompy.MakeEdge(greatPoint123, greatPoint124)
-greatEdgeZ223 = geompy.MakeEdge(greatPoint223, greatPoint224)
-greatEdgeZ323 = geompy.MakeEdge(greatPoint323, greatPoint324)
-greatEdgeZ423 = geompy.MakeEdge(greatPoint423, greatPoint424)
-
-# Faces
-# -----
-
-smallFaceX1 = geompy.MakeQuad(smallEdgeY11, smallEdgeZ11, smallEdgeY12, smallEdgeZ12)
-smallFaceX2 = geompy.MakeQuad(smallEdgeY21, smallEdgeZ21, smallEdgeY22, smallEdgeZ22)
-smallFaceY1 = geompy.MakeQuad(smallEdgeX11, smallEdgeZ11, smallEdgeX12, smallEdgeZ21)
-smallFaceY2 = geompy.MakeQuad(smallEdgeX21, smallEdgeZ12, smallEdgeX22, smallEdgeZ22)
-smallFaceZ1 = geompy.MakeQuad(smallEdgeX11, smallEdgeY11, smallEdgeX21, smallEdgeY21)
-smallFaceZ2 = geompy.MakeQuad(smallEdgeX12, smallEdgeY12, smallEdgeX22, smallEdgeY22)
-
-
-greatFaceX11 = geompy.MakeQuad(greatEdgeY11, greatEdgeZ111, greatEdgeY12, greatEdgeZ121)
-greatFaceX21 = geompy.MakeQuad(greatEdgeY21, greatEdgeZ211, greatEdgeY22, greatEdgeZ221)
-greatFaceX31 = geompy.MakeQuad(greatEdgeY31, greatEdgeZ311, greatEdgeY32, greatEdgeZ321)
-greatFaceX41 = geompy.MakeQuad(greatEdgeY41, greatEdgeZ411, greatEdgeY42, greatEdgeZ421)
-
-greatFaceX12 = geompy.MakeQuad(greatEdgeY12, greatEdgeZ112, greatEdgeY13, greatEdgeZ122)
-greatFaceX22 = geompy.MakeQuad(greatEdgeY22, greatEdgeZ212, greatEdgeY23, greatEdgeZ222)
-greatFaceX32 = geompy.MakeQuad(greatEdgeY32, greatEdgeZ312, greatEdgeY33, greatEdgeZ322)
-greatFaceX42 = geompy.MakeQuad(greatEdgeY42, greatEdgeZ412, greatEdgeY43, greatEdgeZ422)
-
-greatFaceX13 = geompy.MakeQuad(greatEdgeY13, greatEdgeZ113, greatEdgeY14, greatEdgeZ123)
-greatFaceX23 = geompy.MakeQuad(greatEdgeY23, greatEdgeZ213, greatEdgeY24, greatEdgeZ223)
-greatFaceX33 = geompy.MakeQuad(greatEdgeY33, greatEdgeZ313, greatEdgeY34, greatEdgeZ323)
-greatFaceX43 = geompy.MakeQuad(greatEdgeY43, greatEdgeZ413, greatEdgeY44, greatEdgeZ423)
-
-greatFaceY111 = geompy.MakeQuad(greatEdgeX111, greatEdgeZ111, greatEdgeX112, greatEdgeZ211)
-greatFaceY211 = geompy.MakeQuad(greatEdgeX211, greatEdgeZ211, greatEdgeX212, greatEdgeZ311)
-greatFaceY311 = geompy.MakeQuad(greatEdgeX311, greatEdgeZ311, greatEdgeX312, greatEdgeZ411)
-greatFaceY121 = geompy.MakeQuad(greatEdgeX121, greatEdgeZ121, greatEdgeX122, greatEdgeZ221)
-greatFaceY221 = geompy.MakeQuad(greatEdgeX221, greatEdgeZ221, greatEdgeX222, greatEdgeZ321)
-greatFaceY321 = geompy.MakeQuad(greatEdgeX321, greatEdgeZ321, greatEdgeX322, greatEdgeZ421)
-
-greatFaceY112 = geompy.MakeQuad(greatEdgeX112, greatEdgeZ112, greatEdgeX113, greatEdgeZ212)
-greatFaceY212 = geompy.MakeQuad(greatEdgeX212, greatEdgeZ212, greatEdgeX213, greatEdgeZ312)
-greatFaceY312 = geompy.MakeQuad(greatEdgeX312, greatEdgeZ312, greatEdgeX313, greatEdgeZ412)
-greatFaceY122 = geompy.MakeQuad(greatEdgeX122, greatEdgeZ122, greatEdgeX123, greatEdgeZ222)
-greatFaceY222 = smallFaceY1
-greatFaceY322 = geompy.MakeQuad(greatEdgeX322, greatEdgeZ322, greatEdgeX323, greatEdgeZ422)
-
-greatFaceY113 = geompy.MakeQuad(greatEdgeX113, greatEdgeZ113, greatEdgeX114, greatEdgeZ213)
-greatFaceY213 = geompy.MakeQuad(greatEdgeX213, greatEdgeZ213, greatEdgeX214, greatEdgeZ313)
-greatFaceY313 = geompy.MakeQuad(greatEdgeX313, greatEdgeZ313, greatEdgeX314, greatEdgeZ413)
-greatFaceY123 = geompy.MakeQuad(greatEdgeX123, greatEdgeZ123, greatEdgeX124, greatEdgeZ223)
-greatFaceY223 = geompy.MakeQuad(greatEdgeX223, greatEdgeZ223, greatEdgeX224, greatEdgeZ323)
-greatFaceY323 = geompy.MakeQuad(greatEdgeX323, greatEdgeZ323, greatEdgeX324, greatEdgeZ423)
-
-greatFaceZ11 = geompy.MakeQuad(greatEdgeX111, greatEdgeY11, greatEdgeX121, greatEdgeY21)
-greatFaceZ21 = geompy.MakeQuad(greatEdgeX211, greatEdgeY21, greatEdgeX221, greatEdgeY31)
-greatFaceZ31 = geompy.MakeQuad(greatEdgeX311, greatEdgeY31, greatEdgeX321, greatEdgeY41)
-
-greatFaceZ12 = geompy.MakeQuad(greatEdgeX112, greatEdgeY12, greatEdgeX122, greatEdgeY22)
-greatFaceZ22 = geompy.MakeQuad(greatEdgeX212, greatEdgeY22, greatEdgeX222, greatEdgeY32)
-greatFaceZ32 = geompy.MakeQuad(greatEdgeX312, greatEdgeY32, greatEdgeX322, greatEdgeY42)
-
-greatFaceZ13 = geompy.MakeQuad(greatEdgeX113, greatEdgeY13, greatEdgeX123, greatEdgeY23)
-greatFaceZ23 = geompy.MakeQuad(greatEdgeX213, greatEdgeY23, greatEdgeX223, greatEdgeY33)
-greatFaceZ33 = geompy.MakeQuad(greatEdgeX313, greatEdgeY33, greatEdgeX323, greatEdgeY43)
-
-greatFaceZ14 = geompy.MakeQuad(greatEdgeX114, greatEdgeY14, greatEdgeX124, greatEdgeY24)
-greatFaceZ24 = geompy.MakeQuad(greatEdgeX214, greatEdgeY24, greatEdgeX224, greatEdgeY34)
-greatFaceZ34 = geompy.MakeQuad(greatEdgeX314, greatEdgeY34, greatEdgeX324, greatEdgeY44)
-
-# Solids
-# ------
-
-smallBlock   = geompy.MakeHexa(smallFaceX1, smallFaceX2, smallFaceY1, smallFaceY2, smallFaceZ1, smallFaceZ2)
-
-greatBlock11 = geompy.MakeHexa(greatFaceX11, greatFaceX21, greatFaceY111, greatFaceY121, greatFaceZ11, greatFaceZ12)
-greatBlock21 = geompy.MakeHexa(greatFaceX21, greatFaceX31, greatFaceY211, greatFaceY221, greatFaceZ21, greatFaceZ22)
-greatBlock31 = geompy.MakeHexa(greatFaceX31, greatFaceX41, greatFaceY311, greatFaceY321, greatFaceZ31, greatFaceZ32)
-
-greatBlock12 = geompy.MakeHexa(greatFaceX12, greatFaceX22, greatFaceY112, greatFaceY122, greatFaceZ12, greatFaceZ13)
-greatBlock22 = geompy.MakeHexa(greatFaceX22, greatFaceX32, greatFaceY212, greatFaceY222, greatFaceZ22, greatFaceZ23)
-greatBlock32 = geompy.MakeHexa(greatFaceX32, greatFaceX42, greatFaceY312, greatFaceY322, greatFaceZ32, greatFaceZ33)
-
-greatBlock13 = geompy.MakeHexa(greatFaceX13, greatFaceX23, greatFaceY113, greatFaceY123, greatFaceZ13, greatFaceZ14)
-greatBlock23 = geompy.MakeHexa(greatFaceX23, greatFaceX33, greatFaceY213, greatFaceY223, greatFaceZ23, greatFaceZ24)
-greatBlock33 = geompy.MakeHexa(greatFaceX33, greatFaceX43, greatFaceY313, greatFaceY323, greatFaceZ33, greatFaceZ34)
-
-# Compound
-# --------
-
-c_l = []
-c_l.append(smallBlock)
-c_l.append(greatBlock11)
-c_l.append(greatBlock21)
-c_l.append(greatBlock31)
-c_l.append(greatBlock12)
-c_l.append(greatBlock22)
-c_l.append(greatBlock32)
-c_l.append(greatBlock13)
-c_l.append(greatBlock23)
-c_l.append(greatBlock33)
-
-piece = geompy.MakeCompound(c_l)
-
-# Add in study
-# ------------
-
-piece_id = geompy.addToStudy(piece, "ex01_cube2build")
-
-# Meshing
-# =======
-
-# Create hexahedrical mesh on piece
-# ---------------------------------
-
-hexa = smesh.Mesh(piece, "ex01_cube2build:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(4)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Create local hypothesis
-# -----------------------
-
-algo = hexa.Segment(greatEdgeX111)
-
-algo.Arithmetic1D(1, 4)
-
-algo.Propagation()
-
-# Compute the mesh
-# ----------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex02_cube2primitive.py b/src/SMESH_SWIG/ex02_cube2primitive.py
deleted file mode 100644 (file)
index 627c10c..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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()
-
-# Geometry
-# ========
-
-# A small cube centered and put on a great cube build by primitive geometric functionalities
-
-# Values
-# ------
-
-ox = 0
-oy = 0
-oz = 0
-
-arete = 10
-
-# Points
-# ------
-
-blockPoint111 = geompy.MakeVertex(ox      , oy, oz)
-blockPoint211 = geompy.MakeVertex(ox+arete, oy, oz)
-blockPoint112 = geompy.MakeVertex(ox      , oy, oz+arete)
-blockPoint212 = geompy.MakeVertex(ox+arete, oy, oz+arete)
-
-# Face and solid
-# --------------
-
-blockFace1 = geompy.MakeQuad4Vertices(blockPoint111, blockPoint211, blockPoint212, blockPoint112)
-
-blockSolid11  = geompy.MakePrismVecH(blockFace1, geompy.MakeVectorDXDYDZ(0, 1, 0), arete)
-
-# Translations
-# ------------
-
-blockSolid21  = geompy.MakeTranslation(blockSolid11, arete, 0, 0)
-blockSolid31  = geompy.MakeTranslation(blockSolid21, arete, 0, 0)
-
-blockSolid12  = geompy.MakeTranslation(blockSolid11, 0, 0, arete)
-blockSolid22  = geompy.MakeTranslation(blockSolid12, arete, 0, 0)
-blockSolid32  = geompy.MakeTranslation(blockSolid22, arete, 0, 0)
-
-blockSolid13  = geompy.MakeTranslation(blockSolid12, 0, 0, arete)
-blockSolid23  = geompy.MakeTranslation(blockSolid13, arete, 0, 0)
-blockSolid33  = geompy.MakeTranslation(blockSolid23, arete, 0, 0)
-
-blockSolid111 = geompy.MakeTranslation(blockSolid22, 0, arete, 0)
-
-# Compound and glue
-# -----------------
-
-c_l = []
-c_l.append(blockSolid11)
-c_l.append(blockSolid21)
-c_l.append(blockSolid31)
-c_l.append(blockSolid12)
-c_l.append(blockSolid22)
-c_l.append(blockSolid32)
-c_l.append(blockSolid13)
-c_l.append(blockSolid23)
-c_l.append(blockSolid33)
-c_l.append(blockSolid111)
-
-c_cpd = geompy.MakeCompound(c_l)
-
-piece = geompy.MakeGlueFaces(c_cpd, 1.e-5)
-
-# Add in study
-# ------------
-
-piece_id = geompy.addToStudy(piece, "ex02_cube2primitive")
-
-# Meshing
-# =======
-
-# Create hexahedrical mesh on piece
-# ---------------------------------
-
-hexa = smesh.Mesh(piece, "ex02_cube2primitive:hexa")
-
-algo = hexa.Segment()
-algo.LocalLength(1)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Compute the mesh
-# ----------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex03_cube2partition.py b/src/SMESH_SWIG/ex03_cube2partition.py
deleted file mode 100644 (file)
index 8f63639..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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()
-
-# Geometry
-# ========
-
-# A small cube centered and put on a great cube build with partition
-
-# Values
-# ------
-
-g_ox = 0
-g_oy = 0
-g_oz = 0
-
-g_arete = 10
-
-g_trim = 1000
-
-# Points
-# ------
-
-v_arete2 = g_arete*2
-v_arete3 = g_arete*3
-
-v_1 = geompy.MakeVertex(g_ox         , g_oy         , g_oz         )
-v_2 = geompy.MakeVertex(g_ox+v_arete3, g_oy+g_arete , g_oz+v_arete3)
-
-v_3 = geompy.MakeVertex(g_ox+g_arete , g_oy+g_arete , g_oz+g_arete )
-v_4 = geompy.MakeVertex(g_ox+v_arete2, g_oy+v_arete2, g_oz+v_arete2)
-
-# Solids
-# ------
-
-s_base = geompy.MakeBoxTwoPnt(v_1, v_2)
-s_haut = geompy.MakeBoxTwoPnt(v_3, v_4)
-
-# Partition
-# ---------
-
-p_dir1 = geompy.MakeVectorDXDYDZ(1, 0, 0)
-p_dir2 = geompy.MakeVectorDXDYDZ(0, 0, 1)
-p_dir3 = geompy.MakeVectorDXDYDZ(0, 1, 0)
-
-p_tools = []
-
-p_tools.append(geompy.MakePlane(v_3, p_dir1, g_trim))
-p_tools.append(geompy.MakePlane(v_4, p_dir1, g_trim))
-p_tools.append(geompy.MakePlane(v_3, p_dir2, g_trim))
-p_tools.append(geompy.MakePlane(v_4, p_dir2, g_trim))
-p_tools.append(geompy.MakePlane(v_3, p_dir3, g_trim))
-
-piece = geompy.MakePartition([s_base, s_haut], p_tools, [], [], geompy.ShapeType["SOLID"])
-
-# Study
-# -----
-
-piece_id = geompy.addToStudy(piece, "ex03_cube2partition")
-
-# Meshing
-# =======
-
-# Create hexahedrical mesh on piece
-# ---------------------------------
-
-hexa = smesh.Mesh(piece, "ex03_cube2partition:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(5)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Compute the mesh
-# ----------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex04_cube5tetraHexa.py b/src/SMESH_SWIG/ex04_cube5tetraHexa.py
deleted file mode 100644 (file)
index 83229a5..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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()
-
-# Geometry
-# ========
-
-# 5 box with a hexahedral mesh and with 2 box in tetrahedral mesh
-
-# Values
-# ------
-
-arete = 100
-
-arete0 = 0
-arete1 = arete
-arete2 = arete*2
-arete3 = arete*3
-
-# Solids
-# ------
-
-box_tetra1 = geompy.MakeBox(arete0, arete0, 0,  arete1, arete1, arete)
-
-box_ijk1   = geompy.MakeBox(arete1, arete0, 0,  arete2, arete1, arete)
-
-box_hexa   = geompy.MakeBox(arete1, arete1, 0,  arete2, arete2, arete)
-
-box_ijk2   = geompy.MakeBox(arete2, arete1, 0,  arete3, arete2, arete)
-
-box_tetra2 = geompy.MakeBox(arete2, arete2, 0,  arete3 ,arete3, arete)
-
-# Piece
-# -----
-
-piece_cpd = geompy.MakeCompound([box_tetra1, box_ijk1, box_hexa, box_ijk2, box_tetra2])
-
-piece = geompy.MakeGlueFaces(piece_cpd, 1e-4)
-
-piece_id = geompy.addToStudy(piece, "ex04_cube5tetraHexa")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-mixed = smesh.Mesh(piece, "ex04_cube5tetraHexa:mixed")
-
-algo = mixed.Segment()
-
-algo.StartEndLength(3, 25)
-
-mixed.Quadrangle()
-
-mixed.Hexahedron()
-
-# Tetrahedral local mesh
-# ----------------------
-
-def localMesh(b, hyp):
-    box   = geompy.GetInPlace(piece, b)
-    faces = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
-
-    i = 0
-    n = len(faces)
-    while i<n:
-        algo = mixed.Triangle(faces[i])
-        if hyp:
-            algo.MaxElementArea(80)
-        else:
-            algo.LengthFromEdges()
-        i = i + 1
-
-    algo = mixed.Tetrahedron(smeshBuilder.NETGEN, box)
-    algo.MaxElementVolume(400)
-
-localMesh(box_tetra1, 1)
-localMesh(box_tetra2, 0)
-
-# Mesh calculus
-# -------------
-
-mixed.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex05_hole1build.py b/src/SMESH_SWIG/ex05_hole1build.py
deleted file mode 100644 (file)
index a043f51..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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 math
-
-# Geometry
-# ========
-
-# A centered holed cube build by  build by points, edges, faces and solids
-
-# Values
-# ------
-
-ox = 0
-oy = 0
-oz = 0
-
-longueur = 100
-largeur  =  80
-hauteur  =  50
-
-rayon = 10
-
-# Points
-# ------
-
-basePoint111 = geompy.MakeVertex(ox         ,  oy, oz)
-basePoint211 = geompy.MakeVertex(ox+longueur,  oy, oz)
-basePoint112 = geompy.MakeVertex(ox         ,  oy, oz+largeur)
-basePoint212 = geompy.MakeVertex(ox+longueur,  oy, oz+largeur)
-
-cx = ox+longueur/2
-cy = oy
-cz = oz+largeur/2
-
-ll = longueur/largeur
-ll = ll*ll
-dx = rayon/math.sqrt(1+ll)
-dz = rayon/math.sqrt(1+1/ll)
-
-circlePoint1 = geompy.MakeVertex(cx-dx, cy, cz-dz)
-circlePoint2 = geompy.MakeVertex(cx+dx, cy, cz-dz)
-circlePoint3 = geompy.MakeVertex(cx+dx, cy, cz+dz)
-circlePoint4 = geompy.MakeVertex(cx-dx, cy, cz+dz)
-
-# Edges
-# -----
-
-squareEdge1 = geompy.MakeEdge(basePoint111, basePoint211)
-squareEdge2 = geompy.MakeEdge(basePoint211, basePoint212)
-squareEdge3 = geompy.MakeEdge(basePoint212, basePoint112)
-squareEdge4 = geompy.MakeEdge(basePoint112, basePoint111)
-
-diagEdge1   = geompy.MakeEdge(basePoint111, circlePoint1)
-diagEdge2   = geompy.MakeEdge(basePoint211, circlePoint2)
-diagEdge3   = geompy.MakeEdge(basePoint212, circlePoint3)
-diagEdge4   = geompy.MakeEdge(basePoint112, circlePoint4)
-
-arcEdge1    = geompy.MakeArc(circlePoint1, geompy.MakeVertex(cx      , cy, cz-rayon), circlePoint2)
-arcEdge2    = geompy.MakeArc(circlePoint2, geompy.MakeVertex(cx+rayon, cy, cz      ), circlePoint3)
-arcEdge3    = geompy.MakeArc(circlePoint3, geompy.MakeVertex(cx      , cy, cz+rayon), circlePoint4)
-arcEdge4    = geompy.MakeArc(circlePoint4, geompy.MakeVertex(cx-rayon, cy, cz      ), circlePoint1)
-
-# Faces
-# -----
-
-baseFace1 = geompy.MakeQuad(squareEdge1, diagEdge2, arcEdge1, diagEdge1)
-baseFace2 = geompy.MakeQuad(squareEdge2, diagEdge3, arcEdge2, diagEdge2)
-baseFace3 = geompy.MakeQuad(squareEdge3, diagEdge4, arcEdge3, diagEdge3)
-baseFace4 = geompy.MakeQuad(squareEdge4, diagEdge1, arcEdge4, diagEdge4)
-
-# Solids
-# ------
-
-baseVector = geompy.MakeVectorDXDYDZ(0, 1, 0)
-
-baseSolid1 = geompy.MakePrismVecH(baseFace1, baseVector, hauteur)
-baseSolid2 = geompy.MakePrismVecH(baseFace2, baseVector, hauteur)
-baseSolid3 = geompy.MakePrismVecH(baseFace3, baseVector, hauteur)
-baseSolid4 = geompy.MakePrismVecH(baseFace4, baseVector, hauteur)
-
-# Compound
-# --------
-
-c_l = []
-c_l.append(baseSolid1)
-c_l.append(baseSolid2)
-c_l.append(baseSolid3)
-c_l.append(baseSolid4)
-
-c_cpd = geompy.MakeCompound(c_l)
-piece = geompy.MakeGlueFaces(c_cpd, 1.e-5)
-
-# Add in study
-# ------------
-
-piece_id = geompy.addToStudy(piece, "ex05_hole1build")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex05_hole1build:hexa")
-
-algo = hexa.Segment()
-
-algo.NumberOfSegments(6, 3)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex06_hole1boolean.py b/src/SMESH_SWIG/ex06_hole1boolean.py
deleted file mode 100644 (file)
index f0701a4..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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()
-
-# Geometry
-# ========
-
-# A not centered holed cube build by boolean geometric operations
-
-# Values
-# ------
-
-ox = 0
-oy = 0
-oz = 0
-
-longueur1 = 30
-longueur2 = 70
-
-largeur1  = 30
-largeur2  = 50
-
-hauteur   = 50
-
-rayon = 10
-
-# Triangular face
-# ---------------
-
-def triangle(p1, p2, p3):
-    l = []
-    l.append(geompy.MakeEdge(p1, p2))
-    l.append(geompy.MakeEdge(p2, p3))
-    l.append(geompy.MakeEdge(p3, p1))
-    w = geompy.MakeWire(l)
-    return geompy.MakeFace(w, 1)
-
-# Points
-# ------
-
-basePoint111 = geompy.MakeVertex(ox-longueur1,  oy, oz-largeur1)
-basePoint211 = geompy.MakeVertex(ox+longueur2,  oy, oz-largeur1)
-basePoint112 = geompy.MakeVertex(ox-longueur1,  oy, oz+largeur2)
-basePoint212 = geompy.MakeVertex(ox+longueur2,  oy, oz+largeur2)
-
-holePoint    = geompy.MakeVertex(ox, oy, oz)
-
-# Faces
-# -----
-
-baseFace1 = triangle(basePoint111, basePoint211, holePoint)
-baseFace2 = triangle(basePoint211, basePoint212, holePoint)
-baseFace3 = triangle(basePoint212, basePoint112, holePoint)
-baseFace4 = triangle(basePoint112, basePoint111, holePoint)
-
-# Solids
-# ------
-
-baseVector = geompy.MakeVectorDXDYDZ(0, 1, 0)
-
-baseSolid1 = geompy.MakePrismVecH(baseFace1, baseVector, hauteur)
-baseSolid2 = geompy.MakePrismVecH(baseFace2, baseVector, hauteur)
-baseSolid3 = geompy.MakePrismVecH(baseFace3, baseVector, hauteur)
-baseSolid4 = geompy.MakePrismVecH(baseFace4, baseVector, hauteur)
-
-holeSolid = geompy.MakeCylinder(holePoint, baseVector, rayon, hauteur)
-
-# Boolean operations
-# ------------------
-
-baseHexa1 = geompy.MakeCut(baseSolid1, holeSolid)
-baseHexa2 = geompy.MakeCut(baseSolid2, holeSolid)
-baseHexa3 = geompy.MakeCut(baseSolid3, holeSolid)
-baseHexa4 = geompy.MakeCut(baseSolid4, holeSolid)
-
-# Compound, glue and repair
-# -------------------------
-
-c_l = []
-c_l.append(baseHexa1)
-c_l.append(baseHexa2)
-c_l.append(baseHexa3)
-c_l.append(baseHexa4)
-
-c_cpd = geompy.MakeCompound(c_l)
-c_glu = geompy.MakeGlueFaces(c_cpd, 1.e-5)
-piece = geompy.RemoveExtraEdges(c_glu, doUnionFaces=True)
-
-# Add in study
-# ------------
-
-piece_id = geompy.addToStudy(piece, "ex06_hole1boolean")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex06_hole1boolean:hexa")
-
-algo = hexa.Segment()
-
-algo.NumberOfSegments(11)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Create local hypothesis
-# -----------------------
-
-edge1 = geompy.GetEdgeNearPoint(piece, geompy.MakeVertex(ox, oy, oz-largeur1))
-algo1 = hexa.Segment(edge1)
-algo1.NumberOfSegments(3)
-algo1.Propagation()
-
-edge2 = geompy.GetEdgeNearPoint(piece, geompy.MakeVertex(ox-longueur1, oy, oz))
-algo2 = hexa.Segment(edge2)
-algo2.NumberOfSegments(5)
-algo2.Propagation()
-
-edge3 = geompy.GetEdgeNearPoint(piece, geompy.MakeVertex(ox, oy, oz+largeur2))
-algo3 = hexa.Segment(edge3)
-algo3.NumberOfSegments(7)
-algo3.Propagation()
-
-edge4 = geompy.GetEdgeNearPoint(piece, geompy.MakeVertex(ox+longueur2, oy, oz))
-algo4 = hexa.Segment(edge4)
-algo4.NumberOfSegments(9)
-algo4.Propagation()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex07_hole1partition.py b/src/SMESH_SWIG/ex07_hole1partition.py
deleted file mode 100644 (file)
index d48a40d..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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()
-
-# Geometry
-# ========
-
-# A holed cube build by partitioning geometric operations
-
-# Values
-# ------
-
-g_x = 0
-g_y = 0
-g_z = 0
-
-g_longueur = 50.0
-g_largeur  = 40.0
-g_hauteur  = 25.0
-
-g_rayon = 10
-
-g_trim = 1000
-
-# Box
-# ---
-
-b_boite = geompy.MakeBox(g_x-g_longueur, g_y-g_hauteur, g_z-g_largeur,  g_x+g_longueur, g_y+g_hauteur, g_z+g_largeur)
-
-# Cylinder
-# --------
-
-c_axe = geompy.MakeVectorDXDYDZ(0, 1, 0)
-
-c_cyl = geompy.MakeCylinder(geompy.MakeVertex(g_x, g_y-g_hauteur, g_z), c_axe, g_rayon, g_hauteur*2)
-
-c_piece = geompy.MakeCut(b_boite, c_cyl)
-
-# Partition and reperation
-# ------------------------
-
-p_centre = geompy.MakeVertex(g_x, g_y, g_z)
-
-p_tools = []
-p_tools.append(geompy.MakePlane(p_centre, geompy.MakeVectorDXDYDZ( g_largeur, 0, g_longueur), g_trim))
-p_tools.append(geompy.MakePlane(p_centre, geompy.MakeVectorDXDYDZ(-g_largeur, 0, g_longueur), g_trim))
-
-p_part = geompy.MakePartition([c_piece], p_tools, [], [], geompy.ShapeType["SOLID"])
-
-p_blocs = geompy.RemoveExtraEdges(p_part, doUnionFaces=True)
-piece   = geompy.MakeGlueFaces(p_blocs, 1.e-5)
-
-# Add in study
-# ------------
-
-piece_id = geompy.addToStudy(piece, "ex07_hole1partition")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex07_hole1partition:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(20)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex08_hole2build.py b/src/SMESH_SWIG/ex08_hole2build.py
deleted file mode 100644 (file)
index 175b9c9..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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()
-
-# Geometry
-# ========
-
-# A twice holed cube build by points, edges, faces and solids
-
-# Values
-# ------
-
-ox = 0
-oy = 0
-oz = 0
-
-longueur = 200
-largeur  = 100
-hauteur  =  80
-
-cylindre = 50
-
-rayon = 20
-
-# Points
-# ------
-
-piecePoint1 = geompy.MakeVertex(ox         , oy, oz)
-piecePoint2 = geompy.MakeVertex(ox+longueur, oy, oz)
-piecePoint3 = geompy.MakeVertex(ox+longueur, oy, oz+largeur)
-piecePoint4 = geompy.MakeVertex(ox         , oy, oz+largeur)
-
-cz = oz+largeur/2
-
-cylPoint1    = geompy.MakeVertex(ox+cylindre         , oy, cz-rayon)
-cylPoint2    = geompy.MakeVertex(ox+longueur-cylindre, oy, cz-rayon)
-cylPoint3    = geompy.MakeVertex(ox+longueur-cylindre, oy, cz+rayon)
-cylPoint4    = geompy.MakeVertex(ox+cylindre         , oy, cz+rayon)
-
-# Edges
-# -----
-
-pieceEdge1 = geompy.MakeEdge(piecePoint1, piecePoint4)
-pieceEdge2 = geompy.MakeEdge(piecePoint1, cylPoint1)
-pieceEdge3 = geompy.MakeEdge(piecePoint4, cylPoint4)
-
-pieceEdge4 = geompy.MakeEdge(piecePoint2, piecePoint3)
-pieceEdge5 = geompy.MakeEdge(piecePoint2, cylPoint2)
-pieceEdge6 = geompy.MakeEdge(piecePoint3, cylPoint3)
-
-pieceEdge7 = geompy.MakeEdge(cylPoint1, cylPoint2)
-pieceEdge8 = geompy.MakeEdge(cylPoint3, cylPoint4)
-
-cylEdge1 = geompy.MakeArc(cylPoint1, geompy.MakeVertex(ox+cylindre-rayon         , oy, cz), cylPoint4)
-cylEdge2 = geompy.MakeArc(cylPoint1, geompy.MakeVertex(ox+cylindre+rayon         , oy, cz), cylPoint4)
-cylEdge3 = geompy.MakeArc(cylPoint2, geompy.MakeVertex(ox+longueur-cylindre-rayon, oy, cz), cylPoint3)
-cylEdge4 = geompy.MakeArc(cylPoint2, geompy.MakeVertex(ox+longueur-cylindre+rayon, oy, cz), cylPoint3)
-
-# Faces
-# -----
-
-pieceFace1 = geompy.MakeQuad4Vertices(piecePoint1, piecePoint2, cylPoint2 , cylPoint1 )
-pieceFace2 = geompy.MakeQuad         (pieceEdge1 , pieceEdge2 , cylEdge1  , pieceEdge3)
-pieceFace3 = geompy.MakeQuad4Vertices(piecePoint3, piecePoint4, cylPoint4 , cylPoint3 )
-pieceFace4 = geompy.MakeQuad         (pieceEdge4 , pieceEdge5 , cylEdge4  , pieceEdge6)
-pieceFace5 = geompy.MakeQuad         (pieceEdge7 , cylEdge3   , pieceEdge8, cylEdge2  )
-
-# Solids
-# ------
-
-pieceVector = geompy.MakeVectorDXDYDZ(0, 1, 0)
-
-pieceSolid1 = geompy.MakePrismVecH(pieceFace1, pieceVector, hauteur)
-pieceSolid2 = geompy.MakePrismVecH(pieceFace2, pieceVector, hauteur)
-pieceSolid3 = geompy.MakePrismVecH(pieceFace3, pieceVector, hauteur)
-pieceSolid4 = geompy.MakePrismVecH(pieceFace4, pieceVector, hauteur)
-pieceSolid5 = geompy.MakePrismVecH(pieceFace5, pieceVector, hauteur)
-
-# Compound and glue
-# -----------------
-
-c_cpd = geompy.MakeCompound([pieceSolid1, pieceSolid2, pieceSolid3, pieceSolid4, pieceSolid5])
-
-piece = geompy.MakeGlueFaces(c_cpd, 1.e-5)
-
-# Add in study
-# ------------
-
-piece_id = geompy.addToStudy(piece, "ex08_hole2build")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex08_hole2build:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(7)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex09_grid4build.py b/src/SMESH_SWIG/ex09_grid4build.py
deleted file mode 100644 (file)
index e452046..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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 math
-
-# Geometry
-# ========
-
-# Element of a grid compound by a square with a cylinder on each vertex build by points, edges, faces and solids
-
-# Values
-# ------
-
-ox = 0
-oy = 0
-oz = 0
-
-arete   =  50
-hauteur = 100
-
-rayon = 10
-
-demi = rayon/2
-r3   = demi*math.sqrt(3)
-
-# Points
-# ------
-
-piecePoint111 = geompy.MakeVertex(ox+rayon      , oy, oz)
-piecePoint211 = geompy.MakeVertex(ox+arete-rayon, oy, oz)
-piecePoint112 = geompy.MakeVertex(ox            , oy, oz+rayon)
-piecePoint212 = geompy.MakeVertex(ox+arete      , oy, oz+rayon)
-piecePoint113 = geompy.MakeVertex(ox            , oy, oz+arete-rayon)
-piecePoint213 = geompy.MakeVertex(ox+arete      , oy, oz+arete-rayon)
-piecePoint114 = geompy.MakeVertex(ox+rayon      , oy, oz+arete)
-piecePoint214 = geompy.MakeVertex(ox+arete-rayon, oy, oz+arete)
-
-pieceCenter1  = geompy.MakeVertex(ox            , oy, oz)
-pieceCenter2  = geompy.MakeVertex(ox+arete      , oy, oz)
-pieceCenter3  = geompy.MakeVertex(ox            , oy, oz+arete)
-pieceCenter4  = geompy.MakeVertex(ox+arete      , oy, oz+arete)
-
-piecePass1    = geompy.MakeVertex(ox+demi       , oy, oz+r3)
-piecePass2    = geompy.MakeVertex(ox+arete-demi , oy, oz+r3)
-piecePass3    = geompy.MakeVertex(ox+arete-demi , oy, oz+arete-r3)
-piecePass4    = geompy.MakeVertex(ox+demi       , oy, oz+arete-r3)
-
-# Edges
-# -----
-
-pieceEdgeSquare1   = geompy.MakeEdge(piecePoint111, piecePoint211)
-pieceEdgeSquare2   = geompy.MakeEdge(piecePoint114, piecePoint214)
-pieceEdgeSquare3   = geompy.MakeEdge(piecePoint112, piecePoint113)
-pieceEdgeSquare4   = geompy.MakeEdge(piecePoint212, piecePoint213)
-
-pieceEdgeDiagonal1 = geompy.MakeEdge(piecePoint111, piecePoint213)
-pieceEdgeDiagonal2 = geompy.MakeEdge(piecePoint112, piecePoint214)
-
-pieceEdgeArc1 = geompy.MakeArc(piecePoint111, piecePass1, piecePoint112)
-pieceEdgeArc2 = geompy.MakeArc(piecePoint211, piecePass2, piecePoint212)
-pieceEdgeArc3 = geompy.MakeArc(piecePoint213, piecePass3, piecePoint214)
-pieceEdgeArc4 = geompy.MakeArc(piecePoint113, piecePass4, piecePoint114)
-
-# Faces
-# -----
-
-pieceFace1 = geompy.MakeQuad(pieceEdgeSquare1, pieceEdgeArc2, pieceEdgeSquare4, pieceEdgeDiagonal1)
-pieceFace2 = geompy.MakeQuad(pieceEdgeSquare2, pieceEdgeArc4, pieceEdgeSquare3, pieceEdgeDiagonal2)
-
-pieceFace3 = geompy.MakeQuad(pieceEdgeArc1, pieceEdgeDiagonal1, pieceEdgeArc3, pieceEdgeDiagonal2)
-
-# Solids
-# ------
-
-pieceVector = geompy.MakeVectorDXDYDZ(0, 1, 0)
-
-pieceSolid1 = geompy.MakePrismVecH(pieceFace1, pieceVector, hauteur)
-pieceSolid2 = geompy.MakePrismVecH(pieceFace2, pieceVector, hauteur)
-pieceSolid3 = geompy.MakePrismVecH(pieceFace3, pieceVector, hauteur)
-
-# Compound and glue
-# -----------------
-
-c_cpd = geompy.MakeCompound([pieceSolid1, pieceSolid2, pieceSolid3])
-
-piece = geompy.MakeGlueFaces(c_cpd, 1.e-5)
-
-# Add in study
-# ------------
-
-piece_id = geompy.addToStudy(piece, "ex09_grid4build")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex09_grid4build:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(6)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex10_grid4geometry.py b/src/SMESH_SWIG/ex10_grid4geometry.py
deleted file mode 100644 (file)
index 3fdfa6f..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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()
-
-# Geometry
-# ========
-
-# Element of a grid compound by a square with a cylinder on each vertex build by using partition
-
-# Values
-# ------
-
-ox = 0
-oy = 0
-oz = 0
-
-arete   =  50
-hauteur = 100
-rayon   =  10
-
-g_trim = 1000
-
-# Box
-# ---
-
-piecePoint = geompy.MakeVertex(ox, oy, oz)
-
-pieceBox = geompy.MakeBoxTwoPnt(piecePoint, geompy.MakeVertex(ox+arete, oy+hauteur, oz+arete))
-
-# Cut by cylinders
-# ----------------
-
-dirUp = geompy.MakeVectorDXDYDZ(0, 1, 0)
-
-pieceCut1 = geompy.MakeCut(pieceBox , geompy.MakeCylinder(piecePoint                        , dirUp, rayon, hauteur))
-pieceCut2 = geompy.MakeCut(pieceCut1, geompy.MakeCylinder(geompy.MakeVertex(ox+arete, oy, oz      ), dirUp, rayon, hauteur))
-pieceCut3 = geompy.MakeCut(pieceCut2, geompy.MakeCylinder(geompy.MakeVertex(ox      , oy, oz+arete), dirUp, rayon, hauteur))
-pieceCut4 = geompy.MakeCut(pieceCut3, geompy.MakeCylinder(geompy.MakeVertex(ox+arete, oy, oz+arete), dirUp, rayon, hauteur))
-
-# Compound by make a partition of a solid
-# ---------------------------------------
-
-dir = geompy.MakeVectorDXDYDZ(-1, 0, 1)
-
-tools = []
-tools.append(geompy.MakePlane(geompy.MakeVertex(ox+rayon, oy, oz      ), dir, g_trim))
-tools.append(geompy.MakePlane(geompy.MakeVertex(ox      , oy, oz+rayon), dir, g_trim))
-
-piece = geompy.MakePartition([pieceCut4], tools, [], [], geompy.ShapeType["SOLID"])
-
-# Add in study
-# ------------
-
-piece_id = geompy.addToStudy(piece, "ex10_grid4geometry")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex10_grid4geometry:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(10)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex11_grid3partition.py b/src/SMESH_SWIG/ex11_grid3partition.py
deleted file mode 100644 (file)
index 57fe2f0..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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()
-
-# Geometry
-# ========
-
-# grid compound of 3 x 3 elements
-# an element is compound of 3 cylinders concentriques
-# an element is centered in a square of the grid
-# the smaller cylinder is a hole
-
-# prism the grid, and mesh it in hexahedral way
-
-# Values
-# ------
-
-g_x = 0
-g_y = 0
-g_z = 0
-
-g_arete   = 50
-g_hauteur = 30
-
-g_rayon1 = 20
-g_rayon2 = 30
-g_rayon3 = 40
-
-g_grid = 3
-
-g_trim = 1000
-
-# Element
-# -------
-
-e_boite = geompy.MakeBox(g_x-g_arete, g_y-g_hauteur, g_z-g_arete,  g_x+g_arete, g_y+g_hauteur, g_z+g_arete)
-
-e_hauteur = 2*g_hauteur
-e_centre  = geompy.MakeVertex(g_x, g_y-g_hauteur, g_z)
-e_dir     = geompy.MakeVectorDXDYDZ(0, 1, 0)
-
-e_cyl1 = geompy.MakeCylinder(e_centre, e_dir, g_rayon3, e_hauteur)
-
-e_blo1 = geompy.MakeCut(e_boite, e_cyl1)
-
-e_cyl2 = geompy.MakeCylinder(e_centre, e_dir, g_rayon2, e_hauteur)
-
-e_blo2 = geompy.MakeCut(e_cyl1, e_cyl2)
-
-e_cyl3 = geompy.MakeCylinder(e_centre, e_dir, g_rayon1, e_hauteur)
-
-e_blo3 = geompy.MakeCut(e_cyl2, e_cyl3)
-
-# Partition and repair
-# --------------------
-
-p_tools = []
-p_tools.append(geompy.MakePlane(e_centre, geompy.MakeVectorDXDYDZ( 1, 0, 1), g_trim))
-p_tools.append(geompy.MakePlane(e_centre, geompy.MakeVectorDXDYDZ(-1, 0, 1), g_trim))
-
-p_part = geompy.MakePartition([e_blo1, e_blo2, e_blo3], p_tools, [], [], geompy.ShapeType["SOLID"])
-
-p_element = geompy.RemoveExtraEdges(p_part, doUnionFaces=True)
-
-# Grid and glue
-# -------------
-
-grid = geompy.MakeMultiTranslation2D(p_element, geompy.MakeVectorDXDYDZ(1, 0, 0), 2*g_arete, g_grid, geompy.MakeVectorDXDYDZ(0, 0, 1), 2*g_arete, g_grid)
-
-piece = geompy.MakeGlueFaces(grid, 1e-5)
-
-# Add in study
-# ------------
-
-piece_id = geompy.addToStudy(piece, "ex11_grid3partition")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex11_grid3partition:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(3)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex12_grid17partition.py b/src/SMESH_SWIG/ex12_grid17partition.py
deleted file mode 100644 (file)
index 149626a..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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 time
-t1= time.time()
-
-# Geometry
-# ========
-
-# grid compound of 3 x 3 elements
-# an element is compound of 3 concentric cylinders
-# an element is centered in a square of the grid
-
-# prism the grid, and mesh it in hexahedral way
-
-# Values
-# ------
-
-g_x = 0
-g_y = 0
-g_z = 0
-
-g_arete   = 50
-g_hauteur = 30
-
-g_rayon1 = 20
-g_rayon2 = 30
-g_rayon3 = 40
-
-g_grid = 3
-
-g_trim = 1000
-
-# Solids and rotation to prevent repair
-# -------------------------------------
-
-s_boite = geompy.MakeBox(g_x-g_arete, g_y-g_hauteur, g_z-g_arete,  g_x+g_arete, g_y+g_hauteur, g_z+g_arete)
-
-s_pi4     = 3.141592653/4
-s_hauteur = 2*g_hauteur
-s_centre  = geompy.MakeVertex(g_x, g_y-g_hauteur, g_z)
-s_dir     = geompy.MakeVectorDXDYDZ(0, 1, 0)
-
-s_cyl0 = geompy.MakeCylinder(s_centre, s_dir, g_rayon3, s_hauteur)
-s_cyl1 = geompy.MakeRotation(s_cyl0, s_dir, s_pi4)
-
-s_blo1 = geompy.MakeCut(s_boite, s_cyl1)
-
-s_cyl0 = geompy.MakeCylinder(s_centre, s_dir, g_rayon2, s_hauteur)
-s_cyl2 = geompy.MakeRotation(s_cyl0, s_dir, s_pi4)
-
-s_blo2 = geompy.MakeCut(s_cyl1, s_cyl2)
-
-s_cyl0 = geompy.MakeCylinder(s_centre, s_dir, g_rayon1, s_hauteur)
-s_cyl3 = geompy.MakeRotation(s_cyl0, s_dir, s_pi4)
-
-s_blo3 = geompy.MakeCut(s_cyl2, s_cyl3)
-
-s_arete = g_rayon1/2
-
-s_blo4 = geompy.MakeBox(g_x-s_arete, g_y-g_hauteur, g_z-s_arete,  g_x+s_arete, g_y+g_hauteur, g_z+s_arete)
-
-s_blo5 = geompy.MakeCut(s_cyl3, s_blo4)
-
-# Partition
-# ---------
-
-p_tools = []
-p_tools.append(geompy.MakePlane(s_centre, geompy.MakeVectorDXDYDZ( 1, 0, 1), g_trim))
-p_tools.append(geompy.MakePlane(s_centre, geompy.MakeVectorDXDYDZ(-1, 0, 1), g_trim))
-
-p_partie = geompy.MakePartition([s_blo1, s_blo2, s_blo3, s_blo5], p_tools, [], [], geompy.ShapeType["SOLID"])
-
-# Compound and glue
-# -----------------
-
-c_blocs = geompy.SubShapeAll(p_partie, geompy.ShapeType["SOLID"])
-c_blocs.append(s_blo4)
-
-c_cpd = geompy.MakeCompound(c_blocs)
-
-c_element = geompy.MakeGlueFaces(c_cpd, 1e-4)
-
-# Grid
-# ----
-
-piece = geompy.MakeMultiTranslation2D(c_element, geompy.MakeVectorDXDYDZ(1, 0, 0), 2*g_arete, g_grid, geompy.MakeVectorDXDYDZ(0, 0, 1), 2*g_arete, g_grid)
-
-# Add in study
-# ------------
-
-piece_id = geompy.addToStudy(piece, "ex12_grid17partition")
-
-t2= time.time()
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex12_grid17partition:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(2)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
-
-t3= time.time()
-
-print ("time geom",t2-t1)
-print ("time mesh",t3-t2 )
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex13_hole1partial.py b/src/SMESH_SWIG/ex13_hole1partial.py
deleted file mode 100644 (file)
index 6232524..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# ==================================
-#
-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()
-
-# Geometry
-# ========
-
-# With hexahedral, build a box partially holed by a not centered cylinder with a thickness
-
-# Values
-# ------
-
-box_dx = 1000
-box_dy =  900
-box_dz =  800
-
-cyl_x      = 500
-cyl_y      = 300
-cyl_dz     = 600
-cyl_radius = 150
-cyl_thick  =  30
-
-# Triangular face
-# ---------------
-
-def triangle(p1, p2, p3):
-    l = []
-    l.append(geompy.MakeEdge(p1, p2))
-    l.append(geompy.MakeEdge(p2, p3))
-    l.append(geompy.MakeEdge(p3, p1))
-    w = geompy.MakeWire(l)
-    return geompy.MakeFace(w, 1)
-
-# The holed part
-# ==============
-
-# Vertex of the holed part
-# ------------------------
-
-hole_point_11 = geompy.MakeVertex(0     , 0     , 0)
-hole_point_21 = geompy.MakeVertex(box_dx, 0     , 0)
-hole_point_12 = geompy.MakeVertex(0     , box_dy, 0)
-hole_point_22 = geompy.MakeVertex(box_dx, box_dy, 0)
-
-hole_center   = geompy.MakeVertex(cyl_x, cyl_y, 0)
-
-# Faces of the holed part
-# -----------------------
-
-hole_face_1 = triangle(hole_point_11, hole_point_21, hole_center)
-hole_face_2 = triangle(hole_point_21, hole_point_22, hole_center)
-hole_face_3 = triangle(hole_point_12, hole_point_22, hole_center)
-hole_face_4 = triangle(hole_point_11, hole_point_12, hole_center)
-
-# Solids of the holed part
-# ------------------------
-
-cyl_dir = geompy.MakeVectorDXDYDZ(0, 0, 1)
-
-hole_solid_1 = geompy.MakePrismVecH(hole_face_1, cyl_dir, cyl_dz)
-hole_solid_2 = geompy.MakePrismVecH(hole_face_2, cyl_dir, cyl_dz)
-hole_solid_3 = geompy.MakePrismVecH(hole_face_3, cyl_dir, cyl_dz)
-hole_solid_4 = geompy.MakePrismVecH(hole_face_4, cyl_dir, cyl_dz)
-
-hole_internal = geompy.MakeCylinder(hole_center, cyl_dir, cyl_radius          , cyl_dz)
-hole_external = geompy.MakeCylinder(hole_center, cyl_dir, cyl_radius+cyl_thick, cyl_dz)
-hole_median   = geompy.MakeCut(hole_external, hole_internal)
-
-# Boolean operations
-# ------------------
-
-blocks = []
-
-blocks.append(   geompy.MakeCut(hole_solid_1, hole_external))
-blocks.append(geompy.MakeCommon(hole_solid_1, hole_median  ))
-
-blocks.append(   geompy.MakeCut(hole_solid_2, hole_external))
-blocks.append(geompy.MakeCommon(hole_solid_2, hole_median  ))
-
-blocks.append(   geompy.MakeCut(hole_solid_3, hole_external))
-blocks.append(geompy.MakeCommon(hole_solid_3, hole_median  ))
-
-blocks.append(   geompy.MakeCut(hole_solid_4, hole_external))
-blocks.append(geompy.MakeCommon(hole_solid_4, hole_median  ))
-
-# The full part
-# =============
-
-# Vertex of the full part
-# -----------------------
-
-full_point_11 = geompy.MakeVertex(0     , 0     , cyl_dz)
-full_point_21 = geompy.MakeVertex(box_dx, 0     , cyl_dz)
-full_point_12 = geompy.MakeVertex(0     , box_dy, cyl_dz)
-full_point_22 = geompy.MakeVertex(box_dx, box_dy, cyl_dz)
-
-full_center = geompy.MakeVertex(cyl_x, cyl_y, cyl_dz)
-
-# Faces of the full part
-# ----------------------
-
-full_face_1 = triangle(full_point_11, full_point_21, full_center)
-full_face_2 = triangle(full_point_21, full_point_22, full_center)
-full_face_3 = triangle(full_point_12, full_point_22, full_center)
-full_face_4 = triangle(full_point_11, full_point_12, full_center)
-
-# Solids of the full part
-# ------------------------
-
-full_dz = box_dz - cyl_dz
-
-full_solid_1 = geompy.MakePrismVecH(full_face_1, cyl_dir, full_dz)
-full_solid_2 = geompy.MakePrismVecH(full_face_2, cyl_dir, full_dz)
-full_solid_3 = geompy.MakePrismVecH(full_face_3, cyl_dir, full_dz)
-full_solid_4 = geompy.MakePrismVecH(full_face_4, cyl_dir, full_dz)
-
-full_internal = geompy.MakeCylinder(full_center, cyl_dir, cyl_radius          , full_dz)
-full_external = geompy.MakeCylinder(full_center, cyl_dir, cyl_radius+cyl_thick, full_dz)
-full_median   = geompy.MakeCut(full_external, full_internal)
-
-# Boolean operations
-# ------------------
-
-full = []
-
-full.append(   geompy.MakeCut(full_solid_1, full_external))
-full.append(geompy.MakeCommon(full_solid_1, full_median))
-
-full.append(   geompy.MakeCut(full_solid_2, full_external))
-full.append(geompy.MakeCommon(full_solid_2, full_median ))
-
-full.append(   geompy.MakeCut(full_solid_3, full_external))
-full.append(geompy.MakeCommon(full_solid_3, full_median))
-
-full.append(   geompy.MakeCut(full_solid_4, full_external))
-full.append(geompy.MakeCommon(full_solid_4, full_median))
-
-# Filling the hole
-# ----------------
-
-box_d = cyl_radius/3
-
-x = cyl_x-box_d
-y = x * cyl_y / cyl_x
-box_point_11 = geompy.MakeVertex(x, y, cyl_dz)
-
-x = cyl_x+box_d
-y = (box_dx - x) * cyl_y / (box_dx - cyl_x)
-box_point_12 = geompy.MakeVertex(x, y, cyl_dz)
-
-x = cyl_x-box_d
-y = box_dy - x * (box_dy - cyl_y) / cyl_x
-box_point_21 = geompy.MakeVertex(x, y, cyl_dz)
-
-x = cyl_x+box_d
-y = box_dy - (box_dx - x) * (box_dy - cyl_y) / (box_dx - cyl_x)
-box_point_22 = geompy.MakeVertex(x, y, cyl_dz)
-
-box_face = geompy.MakeQuad4Vertices(box_point_11, box_point_12, box_point_21, box_point_22)
-
-box = geompy.MakePrismVecH(box_face, cyl_dir, full_dz)
-
-full.append(box)
-
-full.append(geompy.MakeCut(geompy.MakeCommon(full_solid_1, full_internal), box))
-full.append(geompy.MakeCut(geompy.MakeCommon(full_solid_2, full_internal), box))
-full.append(geompy.MakeCut(geompy.MakeCommon(full_solid_3, full_internal), box))
-full.append(geompy.MakeCut(geompy.MakeCommon(full_solid_4, full_internal), box))
-
-# Cut the cylinder thickness
-# -------------------------
-
-full_plan = geompy.MakePlane(geompy.MakeVertex(0, 0, cyl_dz+cyl_thick), cyl_dir, 5000)
-
-full_parts = geompy.MakePartition(full, [full_plan], [], [], geompy.ShapeType["SOLID"])
-
-# Geometry result
-# ---------------
-
-blocks.append(full_parts)
-
-piece_cpd = geompy.MakeCompound(blocks)
-
-piece_ok = geompy.RemoveExtraEdges(piece_cpd, doUnionFaces=True)
-
-piece = geompy.MakeGlueFaces(piece_ok, 1.e-3)
-
-piece_id = geompy.addToStudy(piece, "ex13_hole1partial")
-
-# Meshing
-# =======
-
-# Create a mesh
-# -------------
-
-hexa = smesh.Mesh(piece, "ex13_hole1partial:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(2)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Local hypothesis
-# ----------------
-
-def local(x, y, z, d):
-    edge = geompy.GetEdgeNearPoint(piece, geompy.MakeVertex(x, y, z))
-    algo = hexa.Segment(edge)
-    algo.NumberOfSegments(d)
-    algo.Propagation()
-
-local(0, 0, 100, 40)
-local(0, 0, 700, 15)
-
-local(100, 0, 0, 20)
-local(0, 100, 0, 20)
-
-local(100, 100, 0, 25)
-
-d = cyl_radius-3*cyl_thick
-local(cyl_x+d, cyl_y+d, box_dz, 10)
-
-# Compute the mesh
-# ----------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex14_cyl1holed.py b/src/SMESH_SWIG/ex14_cyl1holed.py
deleted file mode 100644 (file)
index 68aacab..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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()
-
-# Geometrie
-# =========
-
-# Creer un cylindre avec un trou cylindrique excentre, decoupage en hexahedre et mailler.
-
-# Donnees
-# -------
-
-# unite: millimetre
-
-g_ox = 0
-g_oy = 0
-g_oz = 0
-
-g_cyl_rayon       = 1000
-g_cyl_demiHauteur = 3000
-
-g_trou_rayon       =   5
-g_trou_centre      = 300
-
-g_trim = 15000
-
-# Construire le cylindre
-# ----------------------
-
-c_point    = geompy.MakeVertex(g_ox, g_oy, g_oz-g_cyl_demiHauteur)
-c_dir      = geompy.MakeVectorDXDYDZ(0, 0, 1)
-c_hauteur  = 2*g_cyl_demiHauteur
-c_cylindre = geompy.MakeCylinder(c_point, c_dir, g_cyl_rayon, c_hauteur)
-
-# Trouer le cylindre par un minuscule cylindre excentre
-# -----------------------------------------------------
-
-t_hauteur = g_cyl_demiHauteur
-t_point   = geompy.MakeVertex(g_ox-g_trou_centre, g_oy, g_oz-t_hauteur)
-t_trou    = geompy.MakeCylinder(t_point, c_dir, g_trou_rayon, 2*t_hauteur)
-
-t_piece   = geompy.MakeCut(c_cylindre, t_trou)
-
-# Geometrie hexahedrique
-# ======================
-
-# Decouper
-# --------
-
-h_outils = []
-h_outils.append(geompy.MakePlane(t_point, geompy.MakeVectorDXDYDZ(1, 0, 0), g_trim))
-h_outils.append(geompy.MakePlane(t_point, geompy.MakeVectorDXDYDZ(0, 1, 0), g_trim))
-
-h_piece = geompy.MakePartition([t_piece], h_outils, [], [], geompy.ShapeType["SOLID"])
-
-# Decouper pour les conditions locales
-# ------------------------------------
-
-l_outils = []
-l_i = 1
-l_n = 12
-l_hauteur = c_hauteur/l_n
-
-while l_i<l_n:
-    l_outils.append(geompy.MakePlane(geompy.MakeVertex(g_ox, g_oy, g_oz-g_cyl_demiHauteur+l_i*l_hauteur), c_dir, g_trim))
-    l_i = l_i+1
-
-piece = geompy.MakePartition([h_piece], l_outils, [], [], geompy.ShapeType["SOLID"])
-
-# Ajouter la piece dans l'etude
-# -----------------------------
-
-piece_id = geompy.addToStudy(piece, "ex14_cyl1holed")
-
-# Maillage
-# ========
-
-# Creer un maillage hexahedrique
-# ------------------------------
-
-hexa = smesh.Mesh(piece, "ex14_cyl1holed:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(4)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Poser les hypotheses locales
-# ----------------------------
-
-m_i = 0
-m_n = 12
-m_h = c_hauteur/m_n
-m_d = [4, 6, 8, 10, 10, 9, 8, 7, 6, 5, 4, 3]
-
-m_x = g_ox+g_cyl_rayon
-m_y = g_oy
-m_z = g_oz-g_cyl_demiHauteur+m_h/2
-
-while m_i<m_n:
-    m_p = geompy.MakeVertex(m_x, m_y, m_z + m_i*m_h)
-    m_e = geompy.GetEdgeNearPoint(piece, m_p)
-    m_a = hexa.Segment(m_e)
-    m_a.NumberOfSegments(m_d[m_i])
-    m_a.Propagation()
-    m_i = m_i + 1
-
-# Calculer le maillage
-# --------------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex15_cyl2geometry.py b/src/SMESH_SWIG/ex15_cyl2geometry.py
deleted file mode 100644 (file)
index 54baf97..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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()
-
-# Geometrie
-# =========
-
-# Construire avec des hexahedres une piece faite de 2 cylindres de diametre different
-# et dont les axes se coupent orthogonalement, puis mailler.
-
-# Valeurs
-# -------
-
-cx = 0
-cy = 0
-cz = 0
-
-g_rayon   = 100.0
-g_hauteur = 500
-
-p_rayon   =  50.0
-p_hauteur = 500
-
-g_trim = 1000
-
-# Gros cylindre
-# -------------
-
-cpd = []
-
-g_base = geompy.MakeVertex(cx, cy, cz)
-g_dir  = geompy.MakeVectorDXDYDZ(0, 0, 1)
-t_hauteur = p_rayon+10.0
-
-g_cyl = geompy.MakeCylinder(g_base, g_dir, g_rayon, g_hauteur)
-
-g_coupe   = geompy.MakeVectorDXDYDZ(1, 0, 0)
-
-g_tools = []
-g_tools.append(geompy.MakePlane(geompy.MakeVertex(cx+t_hauteur, cy, cz), g_coupe, g_trim))
-g_tools.append(geompy.MakePlane(geompy.MakeVertex(cx-t_hauteur, cy, cz), g_coupe, g_trim))
-
-g_partie = geompy.MakePartition([g_cyl], g_tools, [], [], geompy.ShapeType["SOLID"])
-g_bas, g_centre, g_haut = geompy.SubShapeAllSorted(g_partie, geompy.ShapeType["SOLID"])
-
-# Partie basse du gros cylindre
-# -----------------------------
-
-b_hauteur = 10
-b_base    = 20
-
-b_boite = geompy.MakeBox(cx-t_hauteur, cy-b_base, cz,  cx-t_hauteur-b_hauteur, cy+b_base, cz+g_hauteur)
-cpd.append(b_boite)
-
-b_cyl = geompy.MakeCut(g_bas, b_boite)
-
-b_tools = []
-b_tools.append(geompy.MakePlane(geompy.MakeVertex(cx-t_hauteur-b_hauteur, cy+b_base, cz), geompy.MakeVectorDXDYDZ( 1, 1, 0), g_trim))
-b_tools.append(geompy.MakePlane(geompy.MakeVertex(cx-t_hauteur-b_hauteur, cy-b_base, cz), geompy.MakeVectorDXDYDZ(-1, 1, 0), g_trim))
-
-b_partie = geompy.MakePartition([b_cyl], b_tools, [], [], geompy.ShapeType["SOLID"])
-b_element = geompy.SubShapeAll(b_partie, geompy.ShapeType["SOLID"])
-cpd = cpd + b_element
-
-# Partie haute du gros cylindre
-# -----------------------------
-
-h_plan = geompy.MakePlane(g_base, g_coupe, g_trim)
-
-cpd.append(geompy.MakeMirrorByPlane(b_boite, h_plan))
-
-for h in b_element:
-    h_symetrie = geompy.MakeMirrorByPlane(h, h_plan)
-    cpd.append(h_symetrie)
-
-# Petit cylindre
-# --------------
-
-z_arete = p_rayon/2
-x_arete = z_arete*t_hauteur*2/g_hauteur
-
-px = cx-x_arete
-py = cy-1.5*g_rayon
-pz = cz+g_hauteur/2
-
-p_base = geompy.MakeVertex(cx, py, pz)
-p_dir  = geompy.MakeVectorDXDYDZ(0, 1, 0)
-p_cyl  = geompy.MakeCylinder(p_base, p_dir, p_rayon, p_hauteur)
-
-p_boite = geompy.MakeBox(px, py, pz-z_arete,  cx+x_arete, py+p_hauteur, pz+z_arete)
-
-# Partie interieure du petit cylindre
-# -----------------------------------
-
-i_cyl   = geompy.MakeCommon(p_cyl, g_cyl)
-i_tuyau = geompy.MakeCut(i_cyl, p_boite)
-i_boite = geompy.MakeCommon(p_boite, g_cyl)
-
-# Partie exterieure du petit cylindre
-# -----------------------------------
-
-e_cyl0 = geompy.MakeCut(p_cyl, g_cyl)
-e_cyl  = geompy.SubShapeAllSorted(e_cyl0, geompy.ShapeType["SOLID"])
-
-e_tuyau = geompy.MakeCut(e_cyl[1], p_boite)
-
-e_boite0 = geompy.MakeCut(p_boite, g_cyl)
-e_boite  = geompy.SubShapeAllSorted(e_boite0, geompy.ShapeType["SOLID"])
-
-cpd.append(e_boite[1])
-
-# Partie centrale du gros cylindre
-# --------------------------------
-
-c_cyl = geompy.MakeCut(g_centre, p_cyl)
-
-# Partitionner
-# ------------
-
-p_tools = []
-p_tools.append(geompy.MakePlane(geompy.MakeVertex(px, py, pz-z_arete), geompy.MakeVectorDXDYDZ(-z_arete, 0, x_arete), g_trim))
-p_tools.append(geompy.MakePlane(geompy.MakeVertex(px, py, pz+z_arete), geompy.MakeVectorDXDYDZ( z_arete, 0, x_arete), g_trim))
-
-p_partie = geompy.MakePartition([e_tuyau], p_tools, [], [], geompy.ShapeType["SOLID"])
-p_element = geompy.SubShapeAll(p_partie, geompy.ShapeType["SOLID"])
-cpd = cpd + p_element
-
-q_partie = geompy.MakePartition([i_tuyau, c_cyl], p_tools, [], [], geompy.ShapeType["SOLID"])
-q_element = geompy.SubShapeAll(q_partie, geompy.ShapeType["SOLID"])
-
-q_element = q_element + [i_boite]
-
-q_tools = []
-q_tools.append(geompy.MakePlane(geompy.MakeVertex(cx, cy-b_base, cz), geompy.MakeVectorDXDYDZ(0, 1, 0), g_trim))
-q_tools.append(geompy.MakePlane(geompy.MakeVertex(cx, cy+b_base, cz), geompy.MakeVectorDXDYDZ(0, 1, 0), g_trim))
-
-r_element = []
-for e in q_element:
-    r_partie = geompy.MakePartition([e], q_tools, [], [], geompy.ShapeType["SOLID"])
-    r_element = r_element + geompy.SubShapeAll(r_partie, geompy.ShapeType["SOLID"])
-
-cpd = cpd + r_element
-
-# Compound
-# --------
-
-piece = geompy.RemoveExtraEdges(geompy.MakeCompound(cpd), True)
-
-# Ajouter la piece dans l'etude
-# -----------------------------
-
-piece_id = geompy.addToStudy(piece, "ex15_cyl2geometry")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex15_cyl2geometry:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(12)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex16_cyl2complementary.py b/src/SMESH_SWIG/ex16_cyl2complementary.py
deleted file mode 100644 (file)
index 38f569d..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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()
-
-# Geometry
-# ========
-
-# Create the hexahedrical block geometry of a holed parallelepipede.
-# The hole has a T form composed by 2 cylinders with different radius, and their axis are normal.
-# This piece is meshed in hexahedrical.
-
-# Values
-# ------
-
-gx = 0
-gy = 0
-gz = 0
-
-g_dx = 250
-g_dy = 200
-g_dz = 150
-
-g_rayonGrand = 70
-g_rayonPetit = 50
-
-g_trim = 1000
-
-# The parallelepipede
-# -------------------
-
-p_boite = geompy.MakeBox(gx-g_dx, gy-g_dy, gz-g_dz,  gx+g_dx, gy+g_dy, gz+g_dz)
-
-# The great cylinder
-# ------------------
-
-g_base = geompy.MakeVertex(gx-g_dx, gy, gz)
-g_dir  = geompy.MakeVectorDXDYDZ(1, 0, 0)
-g_cyl  = geompy.MakeCylinder(g_base, g_dir, g_rayonGrand, g_dx*2)
-
-# The first hole
-# --------------
-
-b_boite = geompy.MakeCut(p_boite , g_cyl)
-
-# Partitioning
-# ------------
-
-p_base = geompy.MakeVertex(gx, gy, gz)
-
-p_tools = []
-
-p_tools.append(geompy.MakePlane(p_base, geompy.MakeVectorDXDYDZ(0,  1   , 0   ), g_trim))
-p_tools.append(geompy.MakePlane(p_base, geompy.MakeVectorDXDYDZ(0,  g_dz, g_dy), g_trim))
-p_tools.append(geompy.MakePlane(p_base, geompy.MakeVectorDXDYDZ(0, -g_dz, g_dy), g_trim))
-
-p_tools.append(geompy.MakePlane(geompy.MakeVertex(gx-g_rayonPetit, gy, gz), g_dir, g_trim))
-p_tools.append(geompy.MakePlane(geompy.MakeVertex(gx+g_rayonPetit, gy, gz), g_dir, g_trim))
-
-p_piece = geompy.MakePartition([b_boite], p_tools, [], [], geompy.ShapeType["SOLID"])
-
-# The small cylinder
-# ------------------
-
-c_cyl = geompy.MakeCylinder(p_base, geompy.MakeVectorDXDYDZ(0, 0, 1), g_rayonPetit, g_dz)
-
-# The second hole
-# ---------------
-
-d_element = geompy.SubShapeAllSorted(p_piece, geompy.ShapeType["SOLID"])
-
-d_element[ 8] = geompy.MakeCut(d_element[ 8], c_cyl)
-d_element[10] = geompy.MakeCut(d_element[10], c_cyl)
-
-# Compound
-# --------
-
-piece = geompy.RemoveExtraEdges(geompy.MakeCompound(d_element))
-piece = geompy.MakeGlueFaces(piece, 1e-07)
-
-# Add piece in study
-# ------------------
-
-piece_id = geompy.addToStudy(piece, "ex16_cyl2complementary")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex16_cyl2complementary:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(12)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Define local hypothesis
-# -----------------------
-
-def local(x, y, z, d):
-    edge = geompy.GetEdgeNearPoint(piece, geompy.MakeVertex(x, y, z))
-    algo = hexa.Segment(edge)
-    algo.NumberOfSegments(d)
-    algo.Propagation()
-
-local(gx     , gy+g_dy, gz+g_dz, 7)
-local(gx+g_dx, gy+g_dy, gz     , 21)
-local(gx+g_dx, gy-g_dy, gz     , 21)
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex17_dome1.py b/src/SMESH_SWIG/ex17_dome1.py
deleted file mode 100644 (file)
index ab3f15a..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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()
-
-# Geometrie
-# =========
-
-# Creer un cylindre surplombe d'une demi-sphere le tout troue par un petit cylindre.
-# Decouper en hexahedre et mailler.
-
-# Donnees
-# -------
-
-cylindre_rayon   = 100
-cylindre_hauteur = 400
-
-trou_rayon = 20
-trou_z     = cylindre_rayon/2
-
-plan_trim = 2000
-
-# Cylindre
-# --------
-
-cylindre_base = geompy.MakeVertex(0, 0, 0)
-cylindre_dir  = geompy.MakeVectorDXDYDZ(1, 0, 0)
-cylindre      = geompy.MakeCylinder(cylindre_base, cylindre_dir, cylindre_rayon, cylindre_hauteur)
-
-# Dome
-# ----
-
-dome_sphere = geompy.MakeSpherePntR(cylindre_base, cylindre_rayon)
-dome        = geompy.MakeFuse(dome_sphere, cylindre)
-
-# Cheminee
-# --------
-
-cheminee_base = geompy.MakeVertex(-cylindre_hauteur/2, 0, trou_z)
-cheminee_trou = geompy.MakeCylinder(cheminee_base, cylindre_dir, trou_rayon, 2*cylindre_hauteur)
-cheminee      = geompy.MakeCut(dome, cheminee_trou)
-
-# Decoupage et reparation
-# -----------------------
-
-blocs_plan1 = geompy.MakePlane(cheminee_base, geompy.MakeVectorDXDYDZ(0, 1, 0), plan_trim)
-blocs_plan2 = geompy.MakePlane(cheminee_base, geompy.MakeVectorDXDYDZ(0, 0, 1), plan_trim)
-
-blocs_part = geompy.MakePartition([cheminee], [blocs_plan1, blocs_plan2], [], [], geompy.ShapeType["SOLID"])
-
-piece = geompy.RemoveExtraEdges(blocs_part)
-
-# Etude
-# -----
-
-piece_id = geompy.addToStudy(piece, "ex17_dome1")
-
-# Maillage
-# ========
-
-# Maillage hexahedrique
-# ---------------------
-
-hexa = smesh.Mesh(piece, "ex17_dome1:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(20)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Calcul du maillage
-# ------------------
-
-hexa.Compute()
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex18_dome2.py b/src/SMESH_SWIG/ex18_dome2.py
deleted file mode 100644 (file)
index 69c5263..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# =======================================
-#
-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 math
-
-# Geometrie
-# =========
-
-# Creer un cylindre ayant a chaque bout un morceau de sphere et le tout troue par un petit cylindrique excentre.
-# Decouper en hexahedre et mailler.
-
-# Donnees
-# -------
-
-# unite: millimetre
-
-g_ox = 0
-g_oy = 0
-g_oz = 0
-
-g_cyl_rayon       = 1000
-g_cyl_demiHauteur = 3000
-
-g_trou_rayon       =   5
-g_trou_centre      = 300
-
-g_sphere_rayon = 3500
-
-g_trim = 15000
-
-# Cylindre
-# --------
-
-c_point    = geompy.MakeVertex(g_ox, g_oy, g_oz-g_cyl_demiHauteur)
-c_dir      = geompy.MakeVectorDXDYDZ(0, 0, 1)
-c_hauteur  = 2*g_cyl_demiHauteur
-
-c_cylindre = geompy.MakeCylinder(c_point, c_dir, g_cyl_rayon, c_hauteur)
-
-# Sphere
-# ------
-
-s_hauteur = math.sqrt(g_sphere_rayon*g_sphere_rayon - g_cyl_rayon*g_cyl_rayon) - g_cyl_demiHauteur
-
-s_sphere  = geompy.MakeSphere(g_ox, g_oy, g_oz-s_hauteur, g_sphere_rayon)
-
-# Calottes
-# --------
-
-c_outils = []
-c_outils.append(geompy.MakePlane(geompy.MakeVertex(g_ox, g_oy, g_oz+g_cyl_demiHauteur), geompy.MakeVectorDXDYDZ(0, 0, 1), g_trim))
-
-c_cpd = geompy.MakePartition([s_sphere], c_outils, [], [], geompy.ShapeType["SOLID"])
-c_calotte_haut, c_reste = geompy.SubShapeAllSorted(c_cpd, geompy.ShapeType["SOLID"])
-
-c_plan = geompy.MakePlane(geompy.MakeVertex(g_ox, g_oy, g_oz), geompy.MakeVectorDXDYDZ(0, 0, 1), g_trim)
-c_calotte_bas = geompy.MakeMirrorByPlane(c_calotte_haut, c_plan)
-
-# Fusionner
-# ---------
-
-f_piece1 = geompy.MakeFuse(c_cylindre, c_calotte_haut)
-f_piece  = geompy.MakeFuse(f_piece1, c_calotte_bas)
-
-# Trouer
-# ------
-
-t_hauteur = g_sphere_rayon
-t_point   = geompy.MakeVertex(g_ox-g_trou_centre, g_oy, g_oz-t_hauteur)
-t_trou    = geompy.MakeCylinder(t_point, c_dir, g_trou_rayon, 2*t_hauteur)
-
-t_piece   = geompy.MakeCut(f_piece, t_trou)
-
-# Decouper
-# --------
-
-h_outils = []
-h_outils.append(geompy.MakePlane(t_point, geompy.MakeVectorDXDYDZ(1, 0, 0), g_trim))
-h_outils.append(geompy.MakePlane(t_point, geompy.MakeVectorDXDYDZ(0, 1, 0), g_trim))
-
-h_piece = geompy.MakePartition([t_piece], h_outils, [], [], geompy.ShapeType["SOLID"])
-
-# Reparer
-# -------
-
-piece = geompy.RemoveExtraEdges(h_piece)
-
-# Ajouter la piece dans l'etude
-# -----------------------------
-
-piece_id = geompy.addToStudy(piece, "ex18_dome2")
-
-# Maillage
-# ========
-
-# Maillage hexahedrique
-# ---------------------
-
-hexa = smesh.Mesh(piece, "ex18_dome2:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(2)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Calcul du maillage
-# ------------------
-
-hexa.Compute()
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex19_sphereINcube.py b/src/SMESH_SWIG/ex19_sphereINcube.py
deleted file mode 100644 (file)
index 94e4600..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# ==================================
-#
-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()
-
-# Geometrie
-# =========
-
-# Mailler en hexahedre une sphere dans un cube.
-
-# Donnees
-# -------
-
-sphere_rayon = 100
-
-cube_cote = 200
-
-plan_trim = 1000
-
-# Sphere
-# ------
-
-sphere_centre = geompy.MakeVertex(0, 0, 0)
-
-sphere_pleine = geompy.MakeSpherePntR(sphere_centre, sphere_rayon)
-
-# Cube interieur
-# --------------
-
-boite_cote = sphere_rayon / 2
-
-boite = geompy.MakeBox(-boite_cote, -boite_cote, -boite_cote,  +boite_cote, +boite_cote, +boite_cote)
-
-blocs = [boite]
-
-# Decoupage sphere
-# ----------------
-
-sphere_troue = geompy.MakeCut(sphere_pleine, boite)
-
-#sphere_outils = []
-#sphere_outils.append(MakePlane(sphere_centre, MakeVectorDXDYDZ( 1, 0,  1), plan_trim))
-#sphere_outils.append(MakePlane(sphere_centre, MakeVectorDXDYDZ( 1, 0, -1), plan_trim))
-#sphere_outils.append(MakePlane(sphere_centre, MakeVectorDXDYDZ( 1, 1,  0), plan_trim))
-#sphere_outils.append(MakePlane(sphere_centre, MakeVectorDXDYDZ(-1, 1,  0), plan_trim))
-
-f1 = geompy.MakePlane(sphere_centre, geompy.MakeVectorDXDYDZ( 1, 0,  1), plan_trim)
-f2 = geompy.MakePlane(sphere_centre, geompy.MakeVectorDXDYDZ(-1, 1,  0), plan_trim)
-f3 = geompy.MakePlane(sphere_centre, geompy.MakeVectorDXDYDZ( 1, 1,  0), plan_trim)
-f4 = geompy.MakePlane(sphere_centre, geompy.MakeVectorDXDYDZ( 1, 0, -1), plan_trim)
-
-
-#sphere_decoupee = MakePartition(solids, sphere_outils, [], [], ShapeType["SOLID"])
-
-sphere_decoupee = geompy.MakePartition([sphere_troue],    [f1], [], [], geompy.ShapeType["SOLID"])
-sphere_decoupee = geompy.MakePartition([sphere_decoupee], [f2], [], [], geompy.ShapeType["SOLID"])
-sphere_decoupee = geompy.MakePartition([sphere_decoupee], [f3], [], [], geompy.ShapeType["SOLID"])
-sphere_decoupee = geompy.MakePartition([sphere_decoupee], [f4], [], [], geompy.ShapeType["SOLID"])
-
-sphere_partie = geompy.MakeCompound([sphere_decoupee])
-
-sphere_partie   = geompy.GetBlockNearPoint(sphere_decoupee, geompy.MakeVertex(-sphere_rayon, 0, 0))
-sphere_bloc     = geompy.RemoveExtraEdges(sphere_partie)
-
-blocs.append(sphere_bloc)
-
-pi2 = 3.141592653/2
-
-sphere_dir1 = geompy.MakeVectorDXDYDZ(0, 1,  0)
-sphere_dir2 = geompy.MakeVectorDXDYDZ(0, 0,  1)
-
-blocs.append(geompy.MakeRotation(sphere_bloc, sphere_dir1, +pi2))
-blocs.append(geompy.MakeRotation(sphere_bloc, sphere_dir1, -pi2))
-
-blocs.append(geompy.MakeRotation(sphere_bloc, sphere_dir2, +pi2))
-blocs.append(geompy.MakeRotation(sphere_bloc, sphere_dir2, -pi2))
-
-blocs.append(geompy.MakeMirrorByPoint(sphere_bloc, sphere_centre))
-
-# Cube exterieur
-# --------------
-
-cube_plein   = geompy.MakeBox(-cube_cote, -cube_cote, -cube_cote,  +cube_cote, +cube_cote, +cube_cote)
-cube_trou    = geompy.MakeCut(cube_plein, sphere_pleine)
-#cube_decoupe = MakePartition([cube_trou], sphere_outils, [], [], ShapeType["SOLID"])
-
-cube_decoupe = geompy.MakePartition([cube_trou],    [f1], [], [], geompy.ShapeType["SOLID"])
-cube_decoupe = geompy.MakePartition([cube_decoupe], [f2], [], [], geompy.ShapeType["SOLID"])
-cube_decoupe = geompy.MakePartition([cube_decoupe], [f3], [], [], geompy.ShapeType["SOLID"])
-cube_decoupe = geompy.MakePartition([cube_decoupe], [f4], [], [], geompy.ShapeType["SOLID"])
-
-cube_decoupe = geompy.MakeCompound([cube_decoupe])
-
-
-cube_partie  = geompy.GetBlockNearPoint(cube_decoupe, geompy.MakeVertex(-cube_cote, 0, 0))
-cube_bloc    = geompy.RemoveExtraEdges(cube_partie)
-
-blocs.append(cube_bloc)
-
-blocs.append(geompy.MakeRotation(cube_bloc, sphere_dir1, +pi2))
-blocs.append(geompy.MakeRotation(cube_bloc, sphere_dir1, -pi2))
-
-blocs.append(geompy.MakeRotation(cube_bloc, sphere_dir2, +pi2))
-blocs.append(geompy.MakeRotation(cube_bloc, sphere_dir2, -pi2))
-
-blocs.append(geompy.MakeMirrorByPoint(cube_bloc, sphere_centre))
-
-# Piece
-# -----
-
-piece_cpd = geompy.MakeCompound(blocs)
-piece = geompy.MakeGlueFaces(piece_cpd, 1.e-3)
-
-piece_id = geompy.addToStudy(piece, "ex19_sphereINcube")
-
-# Groupe geometrique
-# ==================
-
-# Definition du groupe
-# --------------------
-
-groupe = geompy.CreateGroup(piece, geompy.ShapeType["SOLID"])
-
-groupe_nom = "ex19_sphereINcube_interieur"
-geompy.addToStudy(groupe, groupe_nom)
-groupe.SetName(groupe_nom)
-
-# Contenu du groupe
-# -----------------
-
-groupe_sphere = geompy.GetShapesOnSphere(piece, geompy.ShapeType["SOLID"], sphere_centre, sphere_rayon, GEOM.ST_ONIN)
-
-geompy.UnionList(groupe, groupe_sphere)
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex19_sphereINcube:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(10)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
-
-# Le groupe de mailles
-# --------------------
-
-hexa_groupe = hexa.Group(groupe)
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex21_lamp.py b/src/SMESH_SWIG/ex21_lamp.py
deleted file mode 100644 (file)
index 319d57d..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2021  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
-#
-
-# ==================================
-#
-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()
-
-# Geometry
-# ========
-
-# an assembly of a box, a cylinder and a truncated cone meshed with tetrahedral.
-
-# 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 in study
-# ------------
-
-geompy.addToStudy(piece, name)
-
-# Create a group of faces
-# -----------------------
-
-group = geompy.CreateGroup(piece, geompy.ShapeType["FACE"])
-
-group_name = name + "_grp"
-geompy.addToStudy(group, group_name)
-group.SetName(group_name)
-
-# Add faces in the group
-# ----------------------
-
-faces = geompy.SubShapeAllIDs(piece, geompy.ShapeType["FACE"])
-
-geompy.UnionIDs(group, faces)
-
-# Create a mesh
-# =============
-
-# Define a mesh on a geometry
-# ---------------------------
-
-tetra = smesh.Mesh(piece, name)
-
-# Define 1D hypothesis
-# --------------------
-
-algo1d = tetra.Segment()
-algo1d.LocalLength(10)
-
-# Define 2D hypothesis
-# --------------------
-
-algo2d = tetra.Triangle()
-algo2d.LengthFromEdges()
-
-# Define 3D hypothesis
-# --------------------
-
-algo3d = tetra.Tetrahedron(smeshBuilder.NETGEN)
-algo3d.MaxElementVolume(100)
-
-# Compute the mesh
-# ----------------
-
-tetra.Compute()
-
-# Create a groupe of faces
-# ------------------------
-
-tetra.Group(group)
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
\ No newline at end of file
diff --git a/src/SMESH_SWIG/ex24_cylinder.py b/src/SMESH_SWIG/ex24_cylinder.py
deleted file mode 100644 (file)
index e6cf487..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-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
-#
-
-# ==================================
-#
-import math
-
-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()
-
-geo = geompy
-
-# 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
-# ----------------------
-
-def group(name, shape, type, base=None, direction=None):
-    t = geompy.ShapeType[type]
-    g = geompy.CreateGroup(shape, t)
-
-    geompy.addToStudy(g, name)
-    g.SetName(name)
-
-    if base!=None:
-        l = geompy.GetShapesOnPlaneWithLocationIDs(shape, t, direction, base, GEOM.ST_ON)
-        geompy.UnionIDs(g, l)
-
-    return g
-
-group_a = group("baseA", blocks, "FACE", base, direction)
-
-base_b  = geompy.MakeVertex(0, 0, height)
-group_b = group("baseB", blocks, "FACE", base_b, direction)
-
-group_1 = group("limit", blocks, "SOLID")
-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()
-
-def discretize(x, y, z,  n, s=blocks):
-    p = geompy.MakeVertex(x, y, z)
-    e = geompy.GetEdgeNearPoint(s, p)
-    a = hexa.Segment(e)
-    a.NumberOfSegments(n)
-    a.Propagation()
-
-hexa = smesh.Mesh(blocks)
-
-hexa_1d = hexa.Segment()
-hexa_1d.NumberOfSegments(1)
-
-discretize(+radius        , +radius,        0,   5)
-discretize(-radius        , +radius,        0,   8)
-discretize((radius+size)/2,       0,        0,  10)
-discretize(        +radius,       0, height/2,  20)
-
-hexa.Quadrangle()
-hexa.Hexahedron()
-
-hexa.Compute()
-
-hexa.Group(group_a)
-hexa.Group(group_b)
-hexa.Group(group_1)
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex29_refine.py b/src/SMESH_SWIG/ex29_refine.py
deleted file mode 100644 (file)
index b693f30..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-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
-#
-
-# =======================================
-# 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/SMESH_SWIG/ex30_groupsOp.py b/src/SMESH_SWIG/ex30_groupsOp.py
deleted file mode 100644 (file)
index a6f2b6e..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-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
-#
-
-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 math
-
-global Face_1
-Face_1 = geompy.MakeFaceHW(100, 100, 1)
-geompy.addToStudy( Face_1, "Face_1" )
-
-smesh.UpdateStudy()
-from salome.StdMeshers import StdMeshersBuilder
-pattern = smesh.GetPattern()
-Mesh_1 = smesh.Mesh(Face_1)
-Regular_1D = Mesh_1.Segment()
-Nb_Segments_1 = Regular_1D.NumberOfSegments(10)
-Nb_Segments_1.SetDistrType( 0 )
-Quadrangle_2D = Mesh_1.Quadrangle()
-isDone = Mesh_1.Compute()
-
-# groups creation
-
-aListOfElems = [ 52, 53, 54, 55, 56, 57,
-                 62, 63, 64, 65, 66, 67,
-                 72, 73, 74, 75, 76, 77,
-                 82, 83, 84, 85, 86, 87 ]
-                 
-aRedGroup = Mesh_1.GetMesh().CreateGroup( SMESH.FACE, "Red" )
-aRedGroup.Add( aListOfElems );
-aRedGroup.SetColor( SALOMEDS.Color( 1, 0, 0 ) )
-
-aListOfElems = [ 55, 56, 57, 58, 59,
-                 65, 66, 67, 68, 69,
-                 75, 76, 77, 78, 79,
-                 85, 86, 87, 88, 89,
-                 95, 96, 97, 98, 99,
-                 105, 106, 107, 108, 109,
-                 115, 116, 117, 118, 119,
-                 125, 126, 127, 128, 129 ]
-                 
-aGreenGroup = Mesh_1.GetMesh().CreateGroup( SMESH.FACE, "Green" )
-aGreenGroup.Add( aListOfElems );
-aGreenGroup.SetColor( SALOMEDS.Color( 0, 1, 0 ) )
-
-aListOfElems = [ 63, 64, 65, 66, 67, 68, 
-                 73, 74, 75, 76, 77, 78,
-                 83, 84, 85, 86, 87, 88, 
-                 93, 94, 95, 96, 97, 98, 
-                 103, 104, 105, 106, 107, 108, 
-                 113, 114, 115, 116, 117, 118 ]
-                 
-aBlueGroup = Mesh_1.GetMesh().CreateGroup( SMESH.FACE, "Blue" )
-aBlueGroup.Add( aListOfElems );
-aBlueGroup.SetColor( SALOMEDS.Color( 0, 0, 1 ) )
-
-# UnionListOfGroups()
-aUnGrp = Mesh_1.UnionListOfGroups([aRedGroup, aGreenGroup, aBlueGroup], "UnionGrp" )
-
-# IntersectListOfGroups()
-aIntGrp=Mesh_1.IntersectListOfGroups([aRedGroup, aGreenGroup, aBlueGroup], "IntGrp" )
-
-# CutListOfGroups()
-aCutGrp=Mesh_1.CutListOfGroups([aRedGroup],[aGreenGroup,aBlueGroup],"CutGrp")
-
-salome.sg.updateObjBrowser()
-
diff --git a/src/SMESH_SWIG/ex30_tepal.py b/src/SMESH_SWIG/ex30_tepal.py
deleted file mode 100644 (file)
index fa4af06..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-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
-#
-
-# ====================================================================
-#
-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()
-
-# Parameters
-# ----------
-
-results = "/tmp/ZZ"
-
-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")
-
-# Define a mesh on a geometry
-# ---------------------------
-
-smesh.UpdateStudy()
-
-m = smesh.Mesh(cylinder)
-
-# 2D mesh with BLSURF
-# -------------------
-
-algo2d = m.Triangle(smeshBuilder.BLSURF)
-
-algo2d.SetPhysicalMesh(1)
-algo2d.SetPhySize(5)
-
-algo2d.SetGeometricMesh(0)
-
-# 3D mesh with tepal
-# ------------------
-
-algo3d = m.Tetrahedron(smeshBuilder.GHS3DPRL)
-
-algo3d.SetMEDName(results)
-algo3d.SetNbPart(4)
-algo3d.SetBackground(False)
-algo3d.SetKeepFiles(False)
-
-# Launch meshers
-# --------------
-
-status = m.Compute()
-
-# Test if ok
-# ----------
-
-if os.access(results+".xml", os.F_OK):
-    print("Ok: tepal")
-else:
-    print("KO: tepal")
-
-# Update object browser
-# ---------------------
-
-salome.sg.updateObjBrowser()
diff --git a/src/SMESH_SWIG/ex31_dimGroup.py b/src/SMESH_SWIG/ex31_dimGroup.py
deleted file mode 100644 (file)
index 1de4647..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-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
-#
-
-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 math
-
-global Box_1
-Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200)
-geompy.addToStudy( Box_1, "Box_1" )
-
-smesh.UpdateStudy()
-from salome.StdMeshers import StdMeshersBuilder
-Mesh_1 = smesh.Mesh(Box_1)
-Regular_1D = Mesh_1.Segment()
-Nb_Segments_1 = Regular_1D.NumberOfSegments(10)
-Nb_Segments_1.SetDistrType( 0 )
-Quadrangle_2D = Mesh_1.Quadrangle()
-Hexa_3D = Mesh_1.Hexahedron()
-isDone = Mesh_1.Compute()
-
-### CreateDimGroup()
-
-aListOf3d_1=list(range(721,821))
-
-aGrp3D_1=Mesh_1.GetMesh().CreateGroup( SMESH.VOLUME, "Src 3D 1" )
-aGrp3D_1.Add( aListOf3d_1 )
-
-aListOf3d_2=list(range(821, 921))
-aGrp3D_2=Mesh_1.GetMesh().CreateGroup( SMESH.VOLUME, "Src 3D 2" )
-aGrp3D_2.Add( aListOf3d_2 )
-
-aGrp2D = Mesh_1.CreateDimGroup( [aGrp3D_1, aGrp3D_2], SMESH.FACE, "Faces" )
-
-aGrp1D = Mesh_1.CreateDimGroup( [aGrp3D_1, aGrp3D_2], SMESH.EDGE, "Edges" )
-
-aGrp0D = Mesh_1.CreateDimGroup( [aGrp3D_1, aGrp3D_2], SMESH.NODE, "Nodes" )
-
-salome.sg.updateObjBrowser()
-
diff --git a/src/SMESH_SWIG/mesher_launcher.py b/src/SMESH_SWIG/mesher_launcher.py
new file mode 100644 (file)
index 0000000..b92a4b5
--- /dev/null
@@ -0,0 +1,325 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+## Copyright (C) 2021-2024  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
+##
+"""
+File to run mesher from command line
+"""
+from os import environ, path
+import sys
+import subprocess as sp
+
+from argparse import ArgumentParser
+import pydefx
+import pylauncher
+
+MESHER_HANDLED = ["NETGEN3D","NETGEN2D","NETGEN1D","NETGEN1D2D","NETGEN1D2D","GMSH3D"]
+
+CMD_TEMPLATE = \
+"""{runner} {mesher} {mesh_file} {shape_file} {param_file} {elem_orientation_file} {new_element_file} {output_mesh_file} > {log_file} 2>&1"""
+
+PYTHON_CODE = \
+"""
+import subprocess as sp
+def _exec(cmd):
+    error_code = -1
+    try:
+        output = sp.check_output(cmd, shell=True)
+        error_code = 0
+    except sp.CalledProcessError as e:
+        print('Code crash')
+        print(e.output)
+        error_code = e.returncode
+        raise e
+    return error_code
+"""
+
+def create_launcher():
+    """ Initialise pylauncher
+    """
+    launcher = pylauncher.Launcher_cpp()
+    launcher.SetResourcesManager(create_resources_manager())
+    return launcher
+
+def create_resources_manager():
+    """ Look for the catalog file and create a ressource manager with it """
+    # localhost is defined anyway, even if the catalog file does not exist.
+    catalog_path = environ.get("USER_CATALOG_RESOURCES_FILE", "")
+    if not path.isfile(catalog_path):
+        salome_path = environ.get("ROOT_SALOME_INSTALL", "")
+        catalog_path = path.join(salome_path, "CatalogResources.xml")
+    if not path.isfile(catalog_path):
+        catalog_path = ""
+
+    return pylauncher.ResourcesManager_cpp(catalog_path)
+
+def create_job_parameters():
+    """ Initialsie JobParameters """
+    jparam = pylauncher.JobParameters_cpp()
+    jparam.resource_required = create_resource_parameters()
+    return jparam
+
+def create_resource_parameters():
+    """ Init resourceParams """
+    return pylauncher.resourceParams()
+
+def get_runner(mesher):
+    """
+    Get path to exe for mesher
+
+    Arguments:
+    mesher: Name of the mesher (NETGEN2D/NETGEN3D...)
+
+    retuns (string) Path to the exe
+    """
+    if sys.platform.startswith('win'):
+        ext = ".exe"
+    else:
+        ext = ""
+
+    if mesher in ['NETGEN3D','NETGEN2D','NETGEN1D','NETGEN1D2D','NETGEN1D2D']:
+        exe_path = path.join("${NETGENPLUGIN_ROOT_DIR}",
+                             "bin",
+                             "salome",
+                             "NETGENPlugin_Runner"+ext)
+    elif mesher in ['GMSH3D']:
+        exe_path = path.join("${GMSHPLUGIN_ROOT_DIR}",
+                             "bin",
+                             "salome",
+                             "GMSHPlugin_Runner"+ext)
+    else:
+        raise Exception("Mesher {mesher} is not handled".format(mesher=mesher))
+
+    return exe_path
+
+def run_local(args):
+    """ Simple Local run """
+    cmd = CMD_TEMPLATE.format(\
+        runner=get_runner(args.mesher),
+        mesher=args.mesher,
+        mesh_file=args.input_mesh_file,
+        shape_file=args.shape_file,
+        param_file=args.hypo_file,
+        elem_orientation_file=args.elem_orient_file,
+        new_element_file=args.new_element_file,
+        log_file=path.join(path.dirname(args.shape_file), "run.log"),
+        output_mesh_file=args.output_mesh_file)
+    sp.check_output(cmd, shell=True, cwd=path.dirname(args.shape_file))
+
+def run_pylauncher(args):
+    """ Run exe throuhg pylauncher """
+    import time
+    print("Cluster run")
+
+    cmd = CMD_TEMPLATE.format(\
+        runner=get_runner(args.mesher),
+        mesher=args.mesher,
+        mesh_file="../"+path.basename(args.input_mesh_file),
+        shape_file=path.basename(args.shape_file),
+        param_file=path.basename(args.hypo_file),
+        elem_orientation_file=path.basename(args.elem_orient_file),
+        new_element_file=path.basename(args.new_element_file),
+        log_file="run.log",
+        output_mesh_file=path.basename(args.output_mesh_file))
+
+    print("Cmd: ", cmd)
+
+    # salome launcher
+    launcher = create_launcher()
+
+    # See SALOME_Launcher documentation for parameters
+    job_params = create_job_parameters()
+    # different type are:
+    # command Shell out of salome session
+    # command_salome Shell in salome shell
+    # python_salome Python script
+    # yacs_file
+    job_params.job_type = "command_salome" # creates CatalogResources.xml
+
+    job_params.wckey = args.wc_key
+    job_params.resource_required.nb_proc = args.nb_proc
+    job_params.resource_required.nb_proc_per_node = args.nb_proc_per_node
+    job_params.resource_required.nb_node = args.nb_node
+    job_params.maximum_duration = args.walltime
+
+    # job_params.pre_command = pre_command # command to run on frontal
+    # script to run in batch mode
+    run_script = path.join(path.dirname(args.shape_file), "run.sh")
+    with open(run_script, "w") as f:
+        f.write("#!/bin/bash\n")
+        f.write(cmd)
+    job_params.job_file = run_script
+
+    local_dir = path.dirname(args.shape_file)
+
+    # files to copy to remote working dir
+    # Directories are copied recursively.
+    # job_file script is automaticaly copied.
+    job_params.in_files = [args.shape_file,
+                           args.hypo_file,
+                           args.elem_orient_file]
+
+    print("in_files", job_params.in_files)
+    # local path for in_files
+    job_params.local_directory = local_dir
+    # result files you want to bring back with getJobResults
+    # TODO: replace run.log by argument ? by path
+    out_files = ["run.log"]
+    if args.new_element_file != "NONE":
+        out_files.append(path.relpath(args.new_element_file, local_dir))
+    if args.output_mesh_file != "NONE":
+        out_files.append(path.relpath(args.output_mesh_file, local_dir))
+    job_params.out_files = out_files
+    print("out_files", job_params.out_files)
+    # local path where to copy out_files
+    job_params.result_directory = local_dir
+
+    job_params.job_name = "SMESH_parallel"
+    job_params.resource_required.name = args.resource
+
+    # Extra parameters
+    # String that is directly added to the job submission file
+    # job_params.extra_params = "#SBATCH --nodes=2"
+
+    # remote job directory
+    # Retrieve working dir from catalog
+    res_manager = create_resources_manager()
+    res_params = res_manager.GetResourceDefinition(args.resource)
+    job_params.work_directory = path.join(\
+            res_params.working_directory,
+            path.basename(path.dirname(path.dirname(args.shape_file))),
+            path.basename(path.dirname(args.shape_file)))
+    print("work directory", job_params.work_directory)
+
+    job_id = launcher.createJob(job_params) #SALOME id of the job
+    launcher.launchJob(job_id) # copy files, run pre_command, submit job
+
+    # wait for the end of the job
+    job_state = launcher.getJobState(job_id)
+    print("Job %d state: %s" % (job_id, job_state))
+    while job_state not in ["FINISHED", "FAILED"]:
+        time.sleep(3)
+        job_state = launcher.getJobState(job_id)
+
+    if job_state == "FAILED":
+        raise Exception("Job failed")
+    else:
+        # verify the return code of the execution
+        if(launcher.getJobWorkFile(job_id,
+                                   "logs/exit_code.log",
+                                   job_params.result_directory)):
+            exit_code_file = path.join(job_params.result_directory,
+                                       "exit_code.log")
+            exit_code = ""
+            if path.isfile(exit_code_file):
+                with open(exit_code_file) as myfile:
+                    exit_code = myfile.read()
+                    exit_code = exit_code.strip()
+            if exit_code != "0":
+                raise Exception(\
+                    "An error occured during the execution of the job.")
+        else:
+            raise Exception("Failed to get the exit code of the job.")
+
+    # Retrieve result files
+    launcher.getJobResults(job_id, "")
+
+    # Delete remote working dir
+    del_tmp_folder = True
+    try:
+       val = int(environ.get("SMESH_KEEP_TMP", "0"))
+       del_tmp_folder = val < 0
+    except Exception as e:
+        del_tmp_folder = True
+
+    if del_tmp_folder:
+        launcher.clearJobWorkingDir(job_id)
+
+def def_arg():
+    """ Define and parse arguments for the script """
+    parser = ArgumentParser()
+    parser.add_argument("mesher",
+                        choices=MESHER_HANDLED,
+                        help="mesher to use from ("+",".join(MESHER_HANDLED)+")")
+    parser.add_argument("input_mesh_file",\
+        help="MED File containing lower-dimension-elements already meshed")
+    parser.add_argument("shape_file",
+                        help="STEP file containing the shape to mesh")
+    parser.add_argument("hypo_file",
+                        help="Ascii file containint the list of parameters")
+    parser.add_argument("--elem-orient-file",\
+        help="binary file containing the list of elements from "\
+             "INPUT_MESH_FILE associated to the shape and their orientation")
+    # Output file parameters
+    output = parser.add_argument_group("Output files", "Possible output files")
+    output.add_argument("--new-element-file",
+                        default="NONE",
+                        help="contains elements and nodes added by the meshing")
+    output.add_argument(\
+        "--output-mesh-file",
+        default="NONE",
+        help="MED File containing the mesh after the run of the mesher")
+
+    # Run parameters
+    run_param = parser.add_argument_group(\
+            "Run parameters",
+            "Parameters for the run of the mesher")
+    run_param.add_argument("--method",
+                           default="local",
+                           choices=["local", "cluster"],
+                           help="Running method (default: local)")
+
+    run_param.add_argument("--resource",
+                           help="resource from SALOME Catalog")
+    run_param.add_argument("--nb-proc",
+                           default=1,
+                           type=int,
+                           help="Number of processors")
+    run_param.add_argument("--nb-proc-per-node",
+                           default=1,
+                           type=int,
+                           help="Number of processeor per node")
+    run_param.add_argument("--nb-node",
+                           default=1,
+                           type=int,
+                           help="Number of node")
+    run_param.add_argument("--walltime",
+                           default="01:00:00",
+                           help="walltime for job submission HH:MM:SS (default 01:00:00)")
+    run_param.add_argument("--wc-key",
+                           default="P11N0:SALOME",
+                           help="wc-key for job submission (default P11N0:SALOME)")
+
+    args = parser.parse_args()
+
+    return args
+
+def main():
+    """ Main function """
+    args = def_arg()
+    if args.method == "local":
+        run_local(args)
+    elif args.method == "cluster":
+        run_pylauncher(args)
+    else:
+        raise Exception("Unknown method {}".format(args.method))
+
+if __name__ == "__main__":
+    main()
diff --git a/src/SMESH_SWIG/send_files.py b/src/SMESH_SWIG/send_files.py
new file mode 100644 (file)
index 0000000..7a4a1be
--- /dev/null
@@ -0,0 +1,125 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+## Copyright (C) 2021-2024  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
+##
+"""
+File to send files on remote ressource
+"""
+from os import environ, path
+
+from argparse import ArgumentParser
+import pydefx
+import pylauncher
+
+def create_launcher():
+    """ Initialise pylauncher
+    """
+    launcher = pylauncher.Launcher_cpp()
+    launcher.SetResourcesManager(create_resources_manager())
+    return launcher
+
+def create_resources_manager():
+    """ Look for the catalog file and create a ressource manager with it """
+    # localhost is defined anyway, even if the catalog file does not exist.
+    catalog_path = environ.get("USER_CATALOG_RESOURCES_FILE", "")
+    if not path.isfile(catalog_path):
+        salome_path = environ.get("ROOT_SALOME_INSTALL", "")
+        catalog_path = path.join(salome_path, "CatalogResources.xml")
+    if not path.isfile(catalog_path):
+        catalog_path = ""
+
+    return pylauncher.ResourcesManager_cpp(catalog_path)
+
+def create_job_parameters():
+    """ Initialsie JobParameters """
+    jparam = pylauncher.JobParameters_cpp()
+    jparam.resource_required = create_resource_parameters()
+    return jparam
+
+def create_resource_parameters():
+    """ Init resourceParams """
+    return pylauncher.resourceParams()
+
+def send_file(args):
+    """ job to send a file to the cluster """
+    # salome launcher
+    launcher = create_launcher()
+
+    # See SALOME_Launcher documentation for parameters
+    job_params = create_job_parameters()
+    job_params.job_type = "command_salome" # creates CatalogResources.xml
+
+    local_dir = path.dirname(args.input_file)
+
+    # job_params.pre_command = pre_command # command to run on frontal
+    # script to run in batch mode
+    run_script = path.join(path.dirname(args.input_file), "run.sh")
+    with open(run_script, "w") as f:
+        f.write("#!/bin/bash\n")
+    job_params.job_file = run_script
+    job_params.resource_required.nb_proc = 1
+
+    # files to copy to remote working dir
+    # Directories are copied recursively.
+    # job_file script is automaticaly copied.
+    job_params.in_files = [args.input_file]
+    print("in_files", job_params.in_files)
+    # local path where to copy out_files
+    job_params.result_directory = local_dir
+
+    job_params.job_name = "SMESH_transfer"
+    job_params.resource_required.name = args.resource
+
+    # remote job directory
+    # Retrieve working dir from catalog
+    res_manager = create_resources_manager()
+    res_params = res_manager.GetResourceDefinition(args.resource)
+    job_params.work_directory = path.join(\
+            res_params.working_directory,
+            path.basename(path.dirname(args.input_file)))
+
+    print("work_directory", job_params.work_directory)
+
+    job_id = launcher.createJob(job_params) #SALOME id of the job
+    launcher.exportInputFiles(job_id)
+
+
+def def_arg():
+    """ Define and parse arguments for the script """
+    parser = ArgumentParser()
+    parser.add_argument("input_file",\
+        help="file to copy")
+
+    # Run parameters
+
+    parser.add_argument("--resource",
+                        help="resource from SALOME Catalog")
+
+    args = parser.parse_args()
+
+    return args
+
+def main():
+    """ Main function """
+    args = def_arg()
+    send_file(args)
+
+if __name__ == "__main__":
+    main()
index 1d5269c19c3d0df8f324f56a9ff8c948725260c0..2401ed74cfcc7be98c4e92706c120e297250a1c7 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -216,7 +216,7 @@ NO_NAME = "NoName"
 def GetName(obj):
     """
     Return a name of an object
-    
+
     Returns:
         object name
     """
@@ -429,26 +429,26 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
     def init_smesh(self,geompyD = None):
         """
         Set Geometry component
-        """    
+        """
         #print("init_smesh")
         self.UpdateStudy(geompyD)
         notebook.myStudy = salome.myStudy
 
     def Mesh(self, obj=0, name=0):
         """
-        Create a mesh. This mesh can be either 
+        Create a mesh. This mesh can be either
 
         * an empty mesh not bound to geometry, if *obj* == 0
         * an empty mesh bound to geometry, if *obj* is GEOM.GEOM_Object
         * a mesh wrapping a :class:`CORBA mesh <SMESH.SMESH_Mesh>` given as *obj* parameter.
 
         Parameters:
-            obj: either 
+            obj: either
 
                    1. a :class:`CORBA mesh <SMESH.SMESH_Mesh>` got by calling e.g.
                       ::
 
-                        salome.myStudy.FindObjectID("0:1:2:3").GetObject() 
+                        salome.myStudy.FindObjectID("0:1:2:3").GetObject()
 
                    2. a geometrical object for meshing
                    3. none.
@@ -462,6 +462,22 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
             obj,name = name,obj
         return Mesh(self, self.geompyD, obj, name)
 
+    def ParallelMesh(self, obj, name=0, split_geom=True):
+        """
+        Create a parallel mesh.
+
+        Parameters:
+            obj: geometrical object for meshing
+            name: the name for the new mesh.
+            split_geom: If True split the geometry and create the assoicated
+            sub meshes
+
+        Returns:
+            an instance of class :class:`ParallelMesh`.
+        """
+        return ParallelMesh(self, self.geompyD, obj,
+                            split_geom=split_geom, name=name)
+
     def RemoveMesh( self, mesh ):
         """
         Delete a mesh
@@ -648,7 +664,7 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
         if sc:
             sb.LoadWith(sc, self)
         pass
-    
+
     def SetEnablePublish( self, theIsEnablePublish ):
         """
         Set enable publishing in the study. Calling SetEnablePublish( False ) allows to
@@ -677,7 +693,7 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
         Create a Mesh object(s) importing data from the given MED file
 
         Returns:
-                a tuple ( list of class :class:`Mesh` instances, 
+                a tuple ( list of class :class:`Mesh` instances,
                 :class:`SMESH.DriverMED_ReadStatus` )
         """
 
@@ -744,7 +760,7 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
         Returns:
                 an instance of class :class:`Mesh`
 
-        See also: 
+        See also:
                 :meth:`Mesh.Append`
         """
 
@@ -773,12 +789,32 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
         aMesh = Mesh( self, self.geompyD, aSmeshMesh, name=name )
         return aMesh
 
+    def CreateDualMesh( self, mesh, meshName, adaptToShape):
+        """
+        Create a dual of a mesh.
+
+        Parameters:
+                mesh: Tetrahedron mesh
+                        :class:`mesh, <SMESH.SMESH_IDSource>`.
+
+                meshName: a name of the new mesh
+                adpatToShape: if true project boundary points on shape
+
+        Returns:
+                an instance of class :class:`Mesh`
+        """
+        if isinstance( mesh, Mesh ):
+            mesh = mesh.GetMesh()
+        dualMesh = SMESH._objref_SMESH_Gen.CreateDualMesh(self, mesh, meshName, adaptToShape)
+        return Mesh(self, self.geompyD, dualMesh)
+
+
     def CopyMesh( self, meshPart, meshName, toCopyGroups=False, toKeepIDs=False):
         """
         Create a mesh by copying a part of another mesh.
 
         Parameters:
-                meshPart: a part of mesh to copy, either 
+                meshPart: a part of mesh to copy, either
                         :class:`mesh, sub-mesh, group or filter <SMESH.SMESH_IDSource>`.
                         To copy nodes or elements not forming any mesh object,
                         pass result of :meth:`Mesh.GetIDSource` as *meshPart*
@@ -810,7 +846,7 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
                 meshName: an optional name of the new mesh. If omitted, the mesh name is kept.
                 toCopyGroups: to create groups in the new mesh.
                 toReuseHypotheses: to reuse hypotheses of the *sourceMesh*.
-                toCopyElements: to copy mesh elements present on non-modified sub-shapes of 
+                toCopyElements: to copy mesh elements present on non-modified sub-shapes of
                                 *sourceMesh*.
         Returns:
                 tuple ( ok, newMesh, newGroups, newSubMeshes, newHypotheses, invalidEntries )
@@ -1167,6 +1203,8 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
             functor = aFilterMgr.CreateAspectRatio3D()
         elif theCriterion == FT_Warping:
             functor = aFilterMgr.CreateWarping()
+        elif theCriterion == FT_Warping3D:
+            functor = aFilterMgr.CreateWarping3D()
         elif theCriterion == FT_MinimumAngle:
             functor = aFilterMgr.CreateMinimumAngle()
         elif theCriterion == FT_Taper:
@@ -1197,6 +1235,8 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
             functor = aFilterMgr.CreateNodeConnectivityNumber()
         elif theCriterion == FT_BallDiameter:
             functor = aFilterMgr.CreateBallDiameter()
+        elif theCriterion == FT_ScaledJacobian:
+            functor = aFilterMgr.CreateScaledJacobian()
         else:
             print("Error: given parameter is not numerical functor type.")
         aFilterMgr.UnRegister()
@@ -1285,7 +1325,7 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
         Returns:
                 minimum distance value
 
-        See also: 
+        See also:
                 :meth:`GetMinDistance`
         """
 
@@ -1313,7 +1353,7 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
 
         Returns:
                 :class:`SMESH.Measure` structure or None if input data is invalid
-        See also: 
+        See also:
                 :meth:`MinDistance`
         """
 
@@ -1360,7 +1400,7 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
         Returns:
                 tuple of six values (minX, minY, minZ, maxX, maxY, maxZ)
 
-        See also: 
+        See also:
                :meth:`GetBoundingBox`
         """
 
@@ -1381,7 +1421,7 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
         Returns:
                 :class:`SMESH.Measure` structure
 
-        See also: 
+        See also:
                 :meth:`BoundingBox`
         """
 
@@ -1460,14 +1500,14 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
     def GetGravityCenter(self, obj):
         """
         Get gravity center of all nodes of a mesh object.
-        
-        Parameters:            
+
+        Parameters:
                 obj: :class:`mesh, sub-mesh, group or filter <SMESH.SMESH_IDSource>`
 
-        Returns:        
+        Returns:
                 Three components of the gravity center (x,y,z)
 
-        See also: 
+        See also:
                 :meth:`Mesh.BaryCenter`
         """
         if isinstance(obj, Mesh): obj = obj.mesh
@@ -1481,11 +1521,11 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
         """
         Computes a radian measure of an angle defined by 3 points: <(p1,p2,p3)
 
-        Parameters:            
-                p1,p2,p3: coordinates of 3 points defined by either SMESH.PointStruct 
+        Parameters:
+                p1,p2,p3: coordinates of 3 points defined by either SMESH.PointStruct
                           or list [x,y,z]
 
-        Returns:        
+        Returns:
             Angle in radians
         """
         if isinstance( p1, list ): p1 = PointStruct(*p1)
@@ -1551,13 +1591,13 @@ class Mesh(metaclass = MeshMeta):
     It also has methods to define groups of mesh elements, to modify a mesh (by addition of
     new nodes and elements and by changing the existing entities), to get information
     about a mesh and to export a mesh in different formats.
-    """    
+    """
 
     geom = 0
     mesh = 0
     editor = 0
 
-    def __init__(self, smeshpyD, geompyD, obj=0, name=0):
+    def __init__(self, smeshpyD, geompyD, obj=0, name=0, parallel=False):
 
         """
         Constructor
@@ -1590,7 +1630,12 @@ class Mesh(metaclass = MeshMeta):
                     else:
                         geo_name = "%s_%s to mesh"%(self.geom.GetShapeType(), id(self.geom)%100)
                     geompyD.addToStudy( self.geom, geo_name )
-                self.SetMesh( self.smeshpyD.CreateMesh(self.geom) )
+                if parallel and isinstance(self, ParallelMesh):
+                    mymesh = self.smeshpyD.CreateParallelMesh(self.geom)
+                    mymesh2 = mymesh._narrow(SMESH._objref_SMESH_Mesh)
+                    self.SetMesh( mymesh )
+                else:
+                    self.SetMesh( self.smeshpyD.CreateMesh(self.geom) )
 
             elif isinstance(obj, SMESH._objref_SMESH_Mesh):
                 self.SetMesh(obj)
@@ -1842,7 +1887,6 @@ class Mesh(metaclass = MeshMeta):
                 geom = self.geom
         return self.smeshpyD.Evaluate(self.mesh, geom)
 
-
     def Compute(self, geom=0, discardModifs=False, refresh=False):
         """
         Compute the mesh and return the status of the computation
@@ -1957,6 +2001,13 @@ class Mesh(metaclass = MeshMeta):
 
         return ok
 
+    def CheckCompute(self):
+        """
+        Check if the mesh was properly compute
+        """
+        if not self.mesh.IsComputedOK():
+            raise Exception("Could not compute {}".format(self.GetName()))
+
     def GetComputeErrors(self, shape=0 ):
         """
         Return a list of error messages (:class:`SMESH.ComputeError`) of the last :meth:`Compute`
@@ -2081,12 +2132,12 @@ class Mesh(metaclass = MeshMeta):
     def SetMeshOrder(self, submeshes):
         """
         Set priority of sub-meshes. It works in two ways:
-        
+
         * For sub-meshes with assigned algorithms of same dimension generating mesh of
           *several dimensions*, it sets the order in which the sub-meshes are computed.
         * For the rest sub-meshes, it sets the order in which the sub-meshes are checked
-          when looking for meshing parameters to apply to a sub-shape. To impose the 
-          order in which sub-meshes with uni-dimensional algorithms are computed, 
+          when looking for meshing parameters to apply to a sub-shape. To impose the
+          order in which sub-meshes with uni-dimensional algorithms are computed,
           call **submesh.Compute()** in a desired order.
 
         Parameters:
@@ -2125,7 +2176,7 @@ class Mesh(metaclass = MeshMeta):
 
     def AutomaticTetrahedralization(self, fineness=0):
         """
-        Compute a tetrahedral mesh using AutomaticLength + MEFISTO + Tetrahedron
+        Compute a tetrahedral mesh using AutomaticLength + Triangle + Tetrahedron
 
         Parameters:
                 fineness: [0.0,1.0] defines mesh fineness
@@ -2300,23 +2351,23 @@ class Mesh(metaclass = MeshMeta):
             meshPart: a part of mesh (:class:`sub-mesh, group or filter <SMESH.SMESH_IDSource>`)
                     to export instead of the mesh
             autoDimension: if *True* (default), a space dimension of a MED mesh can be either
-    
+
                     - 1D if all mesh nodes lie on OX coordinate axis, or
                     - 2D if all mesh nodes lie on XOY coordinate plane, or
                     - 3D in the rest cases.
-    
+
                     If *autoDimension* is *False*, the space dimension is always 3.
             fields: list of GEOM fields defined on the shape to mesh.
-            geomAssocFields: each character of this string means a need to export a 
-                    corresponding field; correspondence between fields and characters 
+            geomAssocFields: each character of this string means a need to export a
+                    corresponding field; correspondence between fields and characters
                     is following:
-    
+
                     - 'v' stands for "_vertices_" field;
                     - 'e' stands for "_edges_" field;
                     - 'f' stands for "_faces_" field;
                     - 's' stands for "_solids_" field.
-    
-            zTolerance (float): tolerance in Z direction. If Z coordinate of a node is 
+
+            zTolerance (float): tolerance in Z direction. If Z coordinate of a node is
                             close to zero within a given tolerance, the coordinate is set to zero.
                             If *ZTolerance* is negative (default), the node coordinates are kept as is.
             saveNumbers(boolean) : enable saving numbers of nodes and cells.
@@ -2371,8 +2422,8 @@ class Mesh(metaclass = MeshMeta):
                         the typical use is auto_groups=False.
                 version (int): define the version (xy, where version is x.y.z) of MED file format.
                         For instance med 3.2.1 is coded 3*10+2 = 32, med 4.0.0 is coded 4*10+0 = 40.
-                        The rules of compatibility to write a mesh in an older version than 
-                        the current version depend on the current version. For instance, 
+                        The rules of compatibility to write a mesh in an older version than
+                        the current version depend on the current version. For instance,
                         with med 4.0 it is possible to write/append med files in 4.0.0 (default)
                         or 3.2.1 or 3.3.1 formats.
                         If the version is equal to -1, the version is not changed (default).
@@ -2387,8 +2438,8 @@ class Mesh(metaclass = MeshMeta):
 
                         If *autoDimension* is *False*, the space dimension is always 3.
                 fields: list of GEOM fields defined on the shape to mesh.
-                geomAssocFields: each character of this string means a need to export a 
-                        corresponding field; correspondence between fields and characters 
+                geomAssocFields: each character of this string means a need to export a
+                        corresponding field; correspondence between fields and characters
                         is following:
 
                         - 'v' stands for "_vertices_" field;
@@ -2396,7 +2447,7 @@ class Mesh(metaclass = MeshMeta):
                         - 'f' stands for "_faces_" field;
                         - 's' stands for "_solids_" field.
 
-                zTolerance (float): tolerance in Z direction. If Z coordinate of a node is 
+                zTolerance (float): tolerance in Z direction. If Z coordinate of a node is
                              close to zero within a given tolerance, the coordinate is set to zero.
                              If *ZTolerance* is negative (default), the node coordinates are kept as is.
                 saveNumbers (boolean) : enable saving numbers of nodes and cells.
@@ -2564,7 +2615,7 @@ class Mesh(metaclass = MeshMeta):
 
                         If **autoDimension** is *False*, the space dimension is always 3.
         """
-    
+
         print("WARNING: ExportToMED() is deprecated, use ExportMED() instead")
         # process positional arguments
         #args = [i for i in args if i not in [SMESH.MED_V2_1, SMESH.MED_V2_2]] # backward compatibility
@@ -2641,7 +2692,7 @@ class Mesh(metaclass = MeshMeta):
         Create an empty standalone mesh group
 
         Parameters:
-                elementType: the :class:`type <SMESH.ElementType>` of elements in the group; 
+                elementType: the :class:`type <SMESH.ElementType>` of elements in the group;
                         either of (SMESH.NODE, SMESH.EDGE, SMESH.FACE, SMESH.VOLUME)
                 name: the name of the mesh group
 
@@ -2881,7 +2932,7 @@ class Mesh(metaclass = MeshMeta):
 
     def GetGroups(self, elemType = SMESH.ALL):
         """
-        Get the list of groups existing in the mesh in the order of creation 
+        Get the list of groups existing in the mesh in the order of creation
         (starting from the oldest one)
 
         Parameters:
@@ -3592,7 +3643,7 @@ class Mesh(metaclass = MeshMeta):
         Return the type of mesh element or node
 
         Returns:
-            the value from :class:`SMESH.ElementType` enumeration. 
+            the value from :class:`SMESH.ElementType` enumeration.
             Return SMESH.ALL if element or node with the given ID does not exist
         """
 
@@ -3886,7 +3937,7 @@ class Mesh(metaclass = MeshMeta):
         Returns:
             a list of three double values
 
-        See also: 
+        See also:
                 :meth:`smeshBuilder.GetGravityCenter`
         """
 
@@ -4004,7 +4055,7 @@ class Mesh(metaclass = MeshMeta):
         Returns:
             tuple of six values (minX, minY, minZ, maxX, maxY, maxZ)
 
-        See Also: 
+        See Also:
             :meth:`GetBoundingBox()`
         """
 
@@ -4027,7 +4078,7 @@ class Mesh(metaclass = MeshMeta):
         Returns:
             :class:`SMESH.Measure` structure
 
-        See Also: 
+        See Also:
             :meth:`BoundingBox()`
         """
 
@@ -4098,6 +4149,16 @@ class Mesh(metaclass = MeshMeta):
 
         return self.editor.RemoveNodes(IDsOfNodes)
 
+    def RemoveNodeWithReconnection(self, nodeID ):
+        """
+        Remove a node along with changing surrounding faces to cover a hole.
+
+        Parameters:
+                nodeID: ID of node to remove
+        """
+
+        return self.editor.RemoveNodeWithReconnection( nodeID )
+
     def RemoveOrphanNodes(self):
         """
         Remove all orphan (free) nodes from mesh
@@ -4153,7 +4214,7 @@ class Mesh(metaclass = MeshMeta):
         Returns:
             an object (a new group or a temporary :class:`SMESH.SMESH_IDSource`) holding
             IDs of new and/or found 0D elements. IDs of 0D elements
-            can be retrieved from the returned object by 
+            can be retrieved from the returned object by
             calling :meth:`GetIDs() <SMESH.SMESH_IDSource.GetIDs>`
         """
 
@@ -4527,7 +4588,7 @@ class Mesh(metaclass = MeshMeta):
             edges = self.GetIDSource( edges, SMESH.EDGE )
             unRegister.set( edges )
         return self.editor.Get1DBranches( edges, startNode )
-    
+
     def FindSharpEdges( self, angle, addExisting=False ):
         """
         Return sharp edges of faces and non-manifold ones.
@@ -4591,6 +4652,30 @@ class Mesh(metaclass = MeshMeta):
 
         return self.editor.DeleteDiag(NodeID1, NodeID2)
 
+    def AddNodeOnSegment(self, Node1, Node2, position = 0.5):
+        """
+        Replace each triangle bound by Node1-Node2 segment with
+        two triangles by connecting a node made on the link with a node
+        opposite to the link.
+
+        Parameters:
+                Node1: ID of the first node
+                Node2: ID of the second node
+                position: location [0,1] of the new node on the segment
+        """
+        return self.editor.AddNodeOnSegment(Node1, Node2, position)
+
+    def AddNodeOnFace(self, face, x, y, z):
+        """
+        Split a face into triangles by adding a new node onto the face
+        and connecting the new node with face nodes
+
+        Parameters:
+                face: ID of the face
+                x,y,z: coordinates of the new node
+        """
+        return self.editor.AddNodeOnFace(face, x, y, z)
+
     def Reorient(self, IDsOfElements=None):
         """
         Reorient elements by ids
@@ -4840,7 +4925,7 @@ class Mesh(metaclass = MeshMeta):
         a quadrangle.
 
         Parameters:
-                theElements: the faces to be splitted. This can be either 
+                theElements: the faces to be splitted. This can be either
                         :class:`mesh, sub-mesh, group, filter <SMESH.SMESH_IDSource>`
                         or a list of face IDs. By default all quadrangles are split
 
@@ -4909,8 +4994,8 @@ class Mesh(metaclass = MeshMeta):
                         to numerical functors.
 
         Returns:
-            * 1 if 1-3 diagonal is better, 
-            * 2 if 2-4 diagonal is better, 
+            * 1 if 1-3 diagonal is better,
+            * 2 if 2-4 diagonal is better,
             * 0 if error occurs.
 
         Note:
@@ -5062,7 +5147,7 @@ class Mesh(metaclass = MeshMeta):
         This operation uses :doc:`pattern_mapping` functionality for splitting.
 
         Parameters:
-                theObject: the object from which the list of hexahedrons is taken; 
+                theObject: the object from which the list of hexahedrons is taken;
                         this is :class:`mesh, sub-mesh, group or filter <SMESH.SMESH_IDSource>`
                 theNode000,theNode001: within the range [0,7]; gives the orientation of the
                         pattern relatively each hexahedron: the (0,0,0) key-point of the pattern
@@ -5391,6 +5476,32 @@ class Mesh(metaclass = MeshMeta):
         if mesh: mesh = self.smeshpyD.Mesh(mesh)
         return mesh, group
 
+    def MakeBoundaryOfEachElement(self, groupName="", meshName="", toCopyAll=False, groups=[] ):
+        """
+        Create boundary elements around the whole mesh or groups of elements
+
+        Parameters:
+                groupName: a name of group to store all boundary elements in,
+                        "" means not to create the group
+                meshName: a name of a new mesh, which is a copy of the initial
+                        mesh + created boundary elements; "" means not to create the new mesh
+                toCopyAll: if True, the whole initial mesh will be copied into
+                        the new mesh else only boundary elements will be copied into the new mesh
+                groups: list of :class:`sub-meshes, groups or filters <SMESH.SMESH_IDSource>` of elements to make boundary around
+
+        Returns:
+                tuple( long, mesh, group )
+                       - long - number of added boundary elements
+                       - mesh - the :class:`Mesh` where elements were added to
+                       - group - the :class:`group <SMESH.SMESH_Group>` of boundary elements or None
+        """
+        dimension=SMESH.BND_2DFROM3D
+        toCreateAllElements = True # create all boundary elements in the mesh
+        nb, mesh, group = self.editor.MakeBoundaryElements( dimension,groupName,meshName,
+                                                           toCopyAll,toCreateAllElements,groups)
+        if mesh: mesh = self.smeshpyD.Mesh(mesh)
+        return nb, mesh, group
+
     def MakeBoundaryElements(self, dimension=SMESH.BND_2DFROM3D, groupName="", meshName="",
                              toCopyAll=False, groups=[]):
         """
@@ -5414,9 +5525,9 @@ class Mesh(metaclass = MeshMeta):
                        - mesh - the :class:`Mesh` where elements were added to
                        - group - the :class:`group <SMESH.SMESH_Group>` of boundary elements or None
         """
-
+        toCreateAllElements = False # create only elements in the boundary of the solid
         nb, mesh, group = self.editor.MakeBoundaryElements(dimension,groupName,meshName,
-                                                           toCopyAll,groups)
+                                                           toCopyAll,toCreateAllElements,groups)
         if mesh: mesh = self.smeshpyD.Mesh(mesh)
         return nb, mesh, group
 
@@ -5554,7 +5665,7 @@ class Mesh(metaclass = MeshMeta):
                 of all steps, else - size of each step
 
         Returns:
-            the list of created :class:`groups <SMESH.SMESH_GroupBase>` if *MakeGroups* == True, 
+            the list of created :class:`groups <SMESH.SMESH_GroupBase>` if *MakeGroups* == True,
             empty list otherwise
         """
 
@@ -5610,7 +5721,7 @@ class Mesh(metaclass = MeshMeta):
                         - a list of tree components of the point or
                         - a node ID or
                         - a GEOM point
-            angles: list of angles in radians. Nodes at each extrusion step are rotated 
+            angles: list of angles in radians. Nodes at each extrusion step are rotated
                 around *basePoint*, additionally to previous steps.
             anglesVariation: forces the computation of rotation angles as linear
                 variation of the given *angles* along path steps
@@ -5828,13 +5939,13 @@ class Mesh(metaclass = MeshMeta):
             PathShape: optional shape (edge or wire) which defines the sub-mesh of the mesh defined by *PathObject* if the mesh contains not only path segments, else it can be None
             NodeStart: the first or the last node on the path. Defines the direction of extrusion
             HasAngles: not used obsolete
-            Angles: list of angles in radians. Nodes at each extrusion step are rotated 
+            Angles: list of angles in radians. Nodes at each extrusion step are rotated
                 around *basePoint*, additionally to previous steps.
             LinearVariation: forces the computation of rotation angles as linear
                 variation of the given Angles along path steps
             HasRefPoint: allows using the reference point
             RefPoint: optional scaling and rotation center (mass center of the extruded
-                elements by default). The User can specify any point as the Reference Point. 
+                elements by default). The User can specify any point as the Reference Point.
                 *RefPoint* can be either GEOM Vertex, [x,y,z] or :class:`SMESH.PointStruct`
             MakeGroups: forces the generation of new groups from existing ones
             ScaleFactors: optional scale factors to apply during extrusion
@@ -5842,7 +5953,7 @@ class Mesh(metaclass = MeshMeta):
                 else *scaleFactors* [i] is applied to nodes at the i-th extrusion step
 
         Returns:
-            list of created :class:`groups <SMESH.SMESH_GroupBase>` and 
+            list of created :class:`groups <SMESH.SMESH_GroupBase>` and
             :class:`error code <SMESH.SMESH_MeshEditor.Extrusion_Error>`
         Example: :ref:`tui_extrusion_along_path`
         """
@@ -5862,7 +5973,7 @@ class Mesh(metaclass = MeshMeta):
         Angles,AnglesParameters,hasVars = ParseAngles(Angles)
         ScaleFactors,ScalesParameters,hasVars = ParseParameters(ScaleFactors)
         Parameters = AnglesParameters + var_separator + \
-                     RefPoint.parameters + var_separator + ScalesParameters 
+                     RefPoint.parameters + var_separator + ScalesParameters
         self.mesh.SetParameters(Parameters)
         return self.editor.ExtrusionAlongPathObjects(Nodes, Edges, Faces,
                                                      PathObject, PathShape, NodeStart,
@@ -5883,7 +5994,7 @@ class Mesh(metaclass = MeshMeta):
             Path: 1D mesh or 1D sub-mesh, along which proceeds the extrusion
             NodeStart: the start node from Path. Defines the direction of extrusion
             HasAngles: not used obsolete
-            Angles: list of angles in radians. Nodes at each extrusion step are rotated 
+            Angles: list of angles in radians. Nodes at each extrusion step are rotated
                 around *basePoint*, additionally to previous steps.
             LinearVariation: forces the computation of rotation angles as linear
                 variation of the given Angles along path steps
@@ -5926,7 +6037,7 @@ class Mesh(metaclass = MeshMeta):
             PathShape: shape (edge) defines the sub-mesh for the path
             NodeStart: the first or the last node on the edge. Defines the direction of extrusion
             HasAngles: not used obsolete
-            Angles: list of angles in radians. Nodes at each extrusion step are rotated 
+            Angles: list of angles in radians. Nodes at each extrusion step are rotated
                 around *basePoint*, additionally to previous steps.
             HasRefPoint: allows using the reference point
             RefPoint: the reference point around which the shape is rotated (the mass center of the shape by default).
@@ -5967,7 +6078,7 @@ class Mesh(metaclass = MeshMeta):
             PathShape: shape (edge) defines the sub-mesh for the path
             NodeStart: the first or the last node on the edge. Defines the direction of extrusion
             HasAngles: not used obsolete
-            Angles: list of angles in radians. Nodes at each extrusion step are rotated 
+            Angles: list of angles in radians. Nodes at each extrusion step are rotated
                 around *basePoint*, additionally to previous steps.
             HasRefPoint: allows using the reference point
             RefPoint: the reference point around which the shape is rotated (the mass center of the shape by default).
@@ -5978,7 +6089,7 @@ class Mesh(metaclass = MeshMeta):
                 variation of the given Angles along path steps
 
         Returns:
-            list of created :class:`groups <SMESH.SMESH_GroupBase>` and 
+            list of created :class:`groups <SMESH.SMESH_GroupBase>` and
             :class:`error code <SMESH.SMESH_MeshEditor.Extrusion_Error>` if *MakeGroups* == True,
             only :class:`error code <SMESH.SMESH_MeshEditor.Extrusion_Error>` otherwise
         Example: :ref:`tui_extrusion_along_path`
@@ -6005,7 +6116,7 @@ class Mesh(metaclass = MeshMeta):
             PathShape: shape (edge) defines the sub-mesh for the path
             NodeStart: the first or the last node on the edge. Defines the direction of extrusion
             HasAngles: not used obsolete
-            Angles: list of angles in radians. Nodes at each extrusion step are rotated 
+            Angles: list of angles in radians. Nodes at each extrusion step are rotated
                 around *basePoint*, additionally to previous steps.
             HasRefPoint: allows using the reference point
             RefPoint:  the reference point around which the shape is rotated (the mass center of the shape by default).
@@ -6016,7 +6127,7 @@ class Mesh(metaclass = MeshMeta):
                 variation of the given Angles along path steps
 
         Returns:
-            list of created :class:`groups <SMESH.SMESH_GroupBase>` and 
+            list of created :class:`groups <SMESH.SMESH_GroupBase>` and
             :class:`error code <SMESH.SMESH_MeshEditor.Extrusion_Error>` if *MakeGroups* == True,
             only :class:`error code <SMESH.SMESH_MeshEditor.Extrusion_Error>` otherwise
         Example: :ref:`tui_extrusion_along_path`
@@ -6043,7 +6154,7 @@ class Mesh(metaclass = MeshMeta):
             PathShape: shape (edge) defines the sub-mesh for the path
             NodeStart: the first or the last node on the edge. Defines the direction of extrusion
             HasAngles: not used obsolete
-            Angles: list of angles in radians. Nodes at each extrusion step are rotated 
+            Angles: list of angles in radians. Nodes at each extrusion step are rotated
                 around *basePoint*, additionally to previous steps.
             HasRefPoint: allows using the reference point
             RefPoint: the reference point around which the shape is rotated (the mass center of the shape by default).
@@ -6054,7 +6165,7 @@ class Mesh(metaclass = MeshMeta):
                 variation of the given Angles along path steps
 
         Returns:
-            list of created :class:`groups <SMESH.SMESH_GroupBase>` and 
+            list of created :class:`groups <SMESH.SMESH_GroupBase>` and
             :class:`error code <SMESH.SMESH_MeshEditor.Extrusion_Error>` if *MakeGroups* == True,
             only :class:`error code <SMESH.SMESH_MeshEditor.Extrusion_Error>` otherwise
         Example: :ref:`tui_extrusion_along_path`
@@ -6464,7 +6575,7 @@ class Mesh(metaclass = MeshMeta):
             theObject (SMESH.SMESH_IDSource): the source object (mesh, sub-mesh, group or filter)
             theValue (float): signed offset size
             MakeGroups (boolean): forces the generation of new groups from existing ones
-            CopyElements (boolean): if *NewMeshName* is empty, True means to keep original elements, 
+            CopyElements (boolean): if *NewMeshName* is empty, True means to keep original elements,
                           False means to remove original elements.
             NewMeshName (string): the name of a mesh to create. If empty, offset elements are added to this mesh
 
@@ -6845,7 +6956,7 @@ class Mesh(metaclass = MeshMeta):
 
         Parameters:
             theElements: container of elements to duplicate. It can be a
-                :class:`mesh, sub-mesh, group, filter <SMESH.SMESH_IDSource>` 
+                :class:`mesh, sub-mesh, group, filter <SMESH.SMESH_IDSource>`
                 or a list of element IDs. If *theElements* is
                 a :class:`Mesh`, elements of highest dimension are duplicated
             theGroupName: a name of group to contain the generated elements.
@@ -6855,7 +6966,7 @@ class Mesh(metaclass = MeshMeta):
                 in any group.
 
         Returns:
-                a :class:`group <SMESH.SMESH_Group>` where the new elements are added. 
+                a :class:`group <SMESH.SMESH_Group>` where the new elements are added.
                 None if *theGroupName* == "".
         """
 
@@ -7124,7 +7235,7 @@ class Mesh(metaclass = MeshMeta):
         return self.editor.CreateHoleSkin( radius, theShape, groupName, theNodesCoords )
 
     def MakePolyLine(self, segments, groupName='', isPreview=False ):
-        """    
+        """
         Create a polyline consisting of 1D mesh elements each lying on a 2D element of
         the initial triangle mesh. Positions of new nodes are found by cutting the mesh by the
         plane passing through pairs of points specified by each :class:`SMESH.PolySegment` structure.
@@ -7142,7 +7253,7 @@ class Mesh(metaclass = MeshMeta):
             segments: list of :class:`SMESH.PolySegment` defining positions of cutting planes.
             groupName: optional name of a group where created mesh segments will be added.
 
-        """    
+        """
         editor = self.editor
         if isPreview:
             editor = self.mesh.GetMeshEditPreviewer()
@@ -7297,10 +7408,10 @@ class Mesh(metaclass = MeshMeta):
         """
         Computes a radian measure of an angle defined by 3 nodes: <(node1,node2,node3)
 
-        Parameters:            
+        Parameters:
                 node1,node2,node3: IDs of the three nodes
 
-        Returns:        
+        Returns:
             Angle in radians [0,PI]. -1 if failure case.
         """
         p1 = self.GetNodeXYZ( node1 )
@@ -7358,6 +7469,19 @@ class Mesh(metaclass = MeshMeta):
 
         return self.FunctorValue(SMESH.FT_Warping, elemId)
 
+    def GetWarping3D(self, elemId):
+        """
+        Get warping angle of faces element of 3D elements.
+
+        Parameters:
+            elemId: mesh element ID
+
+        Returns:
+            element's warping angle value
+        """
+
+        return self.FunctorValue(SMESH.FT_Warping3D, elemId)
+
     def GetMinimumAngle(self, elemId):
         """
         Get minimum angle of 2D element.
@@ -7397,6 +7521,19 @@ class Mesh(metaclass = MeshMeta):
 
         return self.FunctorValue(SMESH.FT_Skew, elemId)
 
+    def GetScaledJacobian(self, elemId):
+        """
+        Get the scaled jacobian of 3D element id
+
+        Parameters:
+            elemId: mesh element ID
+
+        Returns:
+            the scaled jacobian
+        """
+
+        return self.FunctorValue(SMESH.FT_ScaledJacobian, elemId)
+
     def GetMinMax(self, funType, meshPart=None):
         """
         Return minimal and maximal value of a given functor.
@@ -7431,6 +7568,447 @@ class Mesh(metaclass = MeshMeta):
 
     pass # end of Mesh class
 
+def _copy_gmsh_param(dim, local_param, global_param):
+    if dim==3:
+        local_param.SetMaxSize(global_param.GetMaxSize())
+        local_param.SetMinSize(global_param.GetMinSize())
+        local_param.Set3DAlgo(global_param.Get3DAlgo())
+        local_param.SetRecombineAll(global_param.GetRecombineAll())
+        local_param.SetSubdivAlgo(global_param.GetSubdivAlgo())
+        local_param.SetRemeshAlgo(global_param.GetRemeshAlgo())
+        local_param.SetRemeshPara(global_param.GetRemeshPara())
+        local_param.SetSmouthSteps(global_param.GetSmouthSteps())
+        local_param.SetSizeFactor(global_param.GetSizeFactor())
+        local_param.SetUseIncomplElem(global_param.GetUseIncomplElem())
+        local_param.SetMeshCurvatureSize(global_param.GetMeshCurvatureSize())
+        local_param.SetSecondOrder(global_param.GetSecondOrder())
+        local_param.SetIs2d(global_param.GetIs2d())
+    elif dim==2:
+        local_param.SetMaxSize(global_param.GetMaxSize())
+        local_param.SetMinSize(global_param.GetMinSize())
+        local_param.Set2DAlgo(global_param.Get2DAlgo())
+        local_param.SetRecomb2DAlgo(global_param.GetRecomb2DAlgo())
+        local_param.SetRecombineAll(global_param.GetRecombineAll())
+        local_param.SetSubdivAlgo(global_param.GetSubdivAlgo())
+        local_param.SetRemeshAlgo(global_param.GetRemeshAlgo())
+        local_param.SetRemeshPara(global_param.GetRemeshPara())
+        local_param.SetSmouthSteps(global_param.GetSmouthSteps())
+        local_param.SetSizeFactor(global_param.GetSizeFactor())
+        local_param.SetUseIncomplElem(global_param.GetUseIncomplElem())
+        local_param.SetMeshCurvatureSize(global_param.GetMeshCurvatureSize())
+        local_param.SetSecondOrder(global_param.GetSecondOrder())
+        local_param.SetIs2d(global_param.GetIs2d())
+
+def _copy_netgen_param(dim, local_param, global_param):
+    """
+    Create 1D/2D/3D netgen parameters from a NETGEN 1D2D3D parameter
+    """
+    if dim==1:
+        #TODO: More global conversion ? or let user define it
+        local_param.NumberOfSegments(int(global_param.GetMaxSize()))
+    elif dim==2:
+        local_param.SetMaxSize(global_param.GetMaxSize())
+        local_param.SetMinSize(global_param.GetMinSize())
+        local_param.SetOptimize(global_param.GetOptimize())
+        local_param.SetFineness(global_param.GetFineness())
+        local_param.SetNbSegPerEdge(global_param.GetNbSegPerEdge())
+        local_param.SetNbSegPerRadius(global_param.GetNbSegPerRadius())
+        #TODO: Why the 0.9 to have same results
+        local_param.SetGrowthRate(global_param.GetGrowthRate()*0.9)
+        local_param.SetChordalError(global_param.GetChordalError())
+        local_param.SetChordalErrorEnabled(global_param.GetChordalErrorEnabled())
+        local_param.SetUseSurfaceCurvature(global_param.GetUseSurfaceCurvature())
+        local_param.SetUseDelauney(global_param.GetUseDelauney())
+        local_param.SetQuadAllowed(global_param.GetQuadAllowed())
+        local_param.SetWorstElemMeasure(global_param.GetWorstElemMeasure())
+        local_param.SetCheckChartBoundary(global_param.GetCheckChartBoundary())
+        local_param.SetNbThreads(global_param.GetNbThreads())
+    else:
+        local_param.SetMaxSize(global_param.GetMaxSize())
+        local_param.SetMinSize(global_param.GetMinSize())
+        local_param.SetOptimize(global_param.GetOptimize())
+        local_param.SetCheckOverlapping(global_param.GetCheckOverlapping())
+        local_param.SetCheckChartBoundary(global_param.GetCheckChartBoundary())
+        local_param.SetFineness(global_param.GetFineness())
+        local_param.SetNbSegPerEdge(global_param.GetNbSegPerEdge())
+        local_param.SetNbSegPerRadius(global_param.GetNbSegPerRadius())
+        local_param.SetGrowthRate(global_param.GetGrowthRate())
+        local_param.SetNbThreads(global_param.GetNbThreads())
+
+
+def _shaperstudy2geom(geompyD, shaper_obj):
+    """
+    Convertion of shaper object to geom object
+
+    Parameters:
+        geompyD: geomBuilder instance
+        shaper_obj: Shaper study object
+
+    Returns:
+        geom object
+
+    """
+    import tempfile
+    #Writing shaperstudy object into a brep file
+    fid, tmp_file = tempfile.mkstemp(suffix='.brep')
+    with open(fid, 'wb') as f:
+        f.write(shaper_obj.GetShapeStream())
+    # Reimporting brep file into geom
+    real_geom = geompyD.ImportBREP(tmp_file)
+    os.remove(tmp_file)
+
+    return real_geom
+
+
+def _split_geom(geompyD, geom):
+    """
+    Splitting geometry into n solids and a 2D/1D compound
+
+    Parameters:
+        geompyD: geomBuilder instance
+        geom: geometrical object for meshing
+
+    Returns:
+        compound containing all the 1D,2D elements
+        list of solids
+    """
+
+    # Splitting geometry into 3D elements and all the 2D/1D into one compound
+    object_solids = geompyD.ExtractShapes(geom, geompyD.ShapeType["SOLID"],
+                                          True)
+
+    solids = []
+    isolid = 0
+    for solid in object_solids:
+        isolid += 1
+        geompyD.addToStudyInFather( geom, solid, 'Solid_{}'.format(isolid) )
+        solids.append(solid)
+    # If geom is a solid ExtractShapes will return nothin in that case geom is the solids
+    if isolid == 0:
+       solids = [geom]
+
+    faces = []
+    iface = 0
+    solid_faces = geompyD.ExtractShapes(geom, geompyD.ShapeType["FACE"],
+                                        True)
+    for face in solid_faces:
+        faces.append(face)
+        iface += 1
+        geompyD.addToStudyInFather(geom, face,
+                                   'Face_{}'.format(iface))
+
+    return faces, solids
+
+
+MULTITHREAD, MULTINODE = range(2)
+class ParallelismSettings:
+    """
+    Defines the parameters for the parallelism of ParallelMesh
+    """
+    def __init__(self, mesh):
+        """
+        Construsctor
+
+        Parameters:
+        mesh: Instance of ParallelMesh
+        """
+        if not(isinstance(mesh, ParallelMesh)):
+            raise ValueError("mesh should be a ParallelMesh")
+
+        self._mesh = mesh
+
+
+class MTParallelismSettings(ParallelismSettings):
+    """
+    Defines the parameters for the parallelism of ParallelMesh using MultiThreading
+    """
+    def __init__(self, mesh):
+        ParallelismSettings.__init__(self, mesh)
+
+    # Multithreading methods
+    def SetNbThreads(self, nbThreads):
+        """ Set the number of threads for multithread """
+        if nbThreads < 1:
+            raise ValueError("Number of threads must be stricly greater than 1")
+
+        self._mesh.mesh.SetNbThreads(nbThreads)
+
+    def GetNbThreads(self):
+        """ Get Number of threads """
+        return self._mesh.mesh.GetNbThreads()
+
+    def __str__(self):
+        """ str conversion """
+        string = "\nParameter for MultiThreading parallelism:\n"
+        string += "NbThreads: {}\n".format(self.GetNbThreads())
+
+        return string
+
+
+class MNParallelismSettings(ParallelismSettings):
+    """
+    Defines the parameters for the parallelism of ParallelMesh using MultiNodal
+    """
+    def __init__(self, mesh):
+        ParallelismSettings.__init__(self, mesh)
+
+    def GetResource(self):
+        """ Get the resource on which to run """
+        return self._mesh.mesh.GetResource()
+
+    def SetResource(self, resource):
+        """ Set the resource on which to run """
+        self._mesh.mesh.SetResource(resource)
+
+    def SetNbProc(self, nbProc):
+        """ Set the number of Processor for multinode """
+        if nbProc < 1:
+            raise ValueError("Number of Proc must be stricly greater than 1")
+        self._mesh.mesh.SetNbProc(nbProc)
+
+    def GetNbProc(self):
+        """ Get Number of Processor """
+        return self._mesh.mesh.GetNbProc()
+
+    def SetNbProcPerNode(self, nbProcPerNode):
+        """ Set the number of Processor Per Node for multinode """
+        if nbProcPerNode < 1:
+            raise ValueError("Number of Processor Per Node must be stricly greater than 1")
+
+        self._mesh.mesh.SetNbProcPerNode(nbProcPerNode)
+
+    def GetNbProcPerNode(self):
+        """ Get Number of Processor Per Node """
+        return self._mesh.mesh.GetNbProcPerNode()
+
+    def SetNbNode(self, nbNode):
+        """ Set the number of Node for multinode """
+        if nbNode < 1:
+            raise ValueError("Number of Node must be stricly greater than 1")
+        self._mesh.mesh.SetNbNode(nbNode)
+
+    def GetNbNode(self):
+        """ Get Number of Node """
+        return self._mesh.mesh.GetNbNode()
+
+    def SetWcKey(self, wcKey):
+        """ Set the number of Node for multinode """
+        self._mesh.mesh.SetWcKey(wcKey)
+
+    def GetWcKey(self):
+        """ Get Number of Node """
+        return self._mesh.mesh.GetWcKey()
+
+    def SetWalltime(self, walltime):
+        """ Set the number of Node for multinode """
+        self._mesh.mesh.SetWalltime(walltime)
+
+    def GetWalltime(self):
+        """ Get Number of Node """
+        return self._mesh.mesh.GetWalltime()
+
+    def __str__(self):
+        """ str conversion """
+        string = "\nParameter for MultiNode parallelism:\n"
+        string += "Reource: {}\n".format(self.GetResource())
+        string += "NbProc: {}\n".format(self.GetNbProc())
+        string += "NbProcPerNode: {}\n".format(self.GetNbProcPerNode())
+        string += "NbNode: {}\n".format(self.GetNbNode())
+        string += "WcKey: {}\n".format(self.GetWcKey())
+        string += "Walltime: {}\n".format(self.GetWalltime())
+
+        return string
+
+
+class ParallelMesh(Mesh):
+    """
+    Surcharge on Mesh for parallel computation of a mesh
+    """
+    def __init__(self, smeshpyD, geompyD, geom, split_geom=True, name=0):
+        """
+        Create a parallel mesh.
+
+        Parameters:
+            smeshpyD: instance of smeshBuilder
+            geompyD: instance of geomBuilder
+            geom: geometrical object for meshing
+            split_geom: If true will divide geometry on solids and 1D/2D
+            coumpound and create the associated submeshes
+            name: the name for the new mesh.
+
+        Returns:
+            an instance of class :class:`ParallelMesh`.
+        """
+
+        if not isinstance(geom, geomBuilder.GEOM._objref_GEOM_Object):
+            raise ValueError("geom argument must be a geometry")
+
+        try:
+            import SHAPERSTUDY
+            shaper_object = SHAPERSTUDY.SHAPERSTUDY_ORB._objref_SHAPER_Object
+            has_shaper = True
+        except ImportError:
+            shaper_object = int
+            has_shaper = False
+
+        # If we have a shaper object converting it into geom (temporary solution)
+        if isinstance(geom, shaper_object):
+            self._geom_obj = _shaperstudy2geom(geompyD, geom)
+        elif isinstance(geom, geomBuilder.GEOM._objref_GEOM_Object):
+            self._geom_obj = geom
+        else:
+            msg= ""
+            if not has_shaper:
+                msg = "\nShaper was not compiled"
+            raise Exception("Could not handle geom format {}.{} ".format(type(geom), msg))
+
+        # Splitting geometry into one geom containing 1D and 2D elements and a
+        # list of 3D elements
+        super(ParallelMesh, self).__init__(smeshpyD, geompyD, self._geom_obj, name, parallel=True)
+
+        if split_geom:
+            self._faces, self._solids = _split_geom(geompyD, self._geom_obj)
+
+        self._param = None
+
+    def _build_submeshes(self, mesher2D, mesher3D):
+        """
+        Contruct the submeshes for a parallel use of smesh
+
+        Parameters:
+            mesher2D: name of 2D mesher for 2D parallel compute (NETGEN)
+            mesher3D: name of 3D mesher for 3D parallel compute (NETGEN or
+            GMSH)
+        """
+
+        # Building global 2D mesher
+        if mesher3D:
+            if mesher3D == "NETGEN":
+                algo2D = "NETGEN_2D"
+            elif mesher3D == "GMSH":
+                algo2D = "GMSH_2D"
+            else:
+                raise ValueError("mesher3D should be either NETGEN or GMSH")
+
+            self._algo2d = self.Triangle(geom=self._geom_obj, algo=algo2D)
+
+        # Parallel 2D
+        if mesher2D:
+            #Means that we want to mesh face of solids in parallel and not
+            #the volume
+            self._algo2d = []
+            #For the moment use AutomaticLength based on finesse
+            # TODO: replace by input hypothesis
+            self._algo1d = self.Segment(geom=self._geom_obj)
+
+            for face_id, face in enumerate(self._faces):
+                name = "face_{}".format(face_id)
+                algo2d = self.Triangle(geom=face, algo="NETGEN_2D_Remote")
+                self._algo2d.append(algo2d)
+
+        if mesher3D:
+            self._algo3d = []
+            for solid_id, solid in enumerate(self._solids):
+                name = "Solid_{}".format(solid_id)
+                if ( mesher3D == "NETGEN" ):
+                    algo3d = self.Tetrahedron(geom=solid, algo="NETGEN_3D_Remote")
+                    self._algo3d.append(algo3d)
+                elif ( mesher3D == "GMSH" ):
+                    algo3d = self.Tetrahedron(geom=solid, algo="GMSH_3D_Remote")
+                    self._algo3d.append(algo3d)
+
+    def GetNbSolids(self):
+        """
+        Return the number of 3D solids
+        """
+        return len(self._solids)
+
+    def GetNbFaces(self):
+        """
+        Return the number of 2D faces
+        """
+        return len(self._faces)
+
+    def GetParallelismMethod(self):
+        """ Get the parallelims method """
+        return self.mesh.GetParallelismMethod()
+
+    def SetParallelismMethod(self, method):
+        """ Set the parallelims method """
+        if method not in [MULTITHREAD , MULTINODE]:
+            raise ValueError("Parallelism method can only be 0:MultiThread or 1:MultiNode")
+
+        self.mesh.SetParallelismMethod(method)
+
+        if method == MULTITHREAD:
+            self._param = MTParallelismSettings(self)
+        else:
+            self._param = MNParallelismSettings(self)
+
+    def GetParallelismSettings(self):
+        """
+        Return class to set parameters for the parallelism
+        """
+        if self._param is None:
+            raise Exception("You need to set Parallelism method first (SetParallelismMethod)")
+        return self._param
+
+    def AddGlobalHypothesis(self, hyp):
+        """
+        Split hypothesis to apply it to all the submeshes:
+        - the 1D+2D
+        - each of the 3D solids
+
+        Parameters:
+                hyp: a hypothesis to assign
+
+        """
+        if isinstance(hyp, NETGENPlugin._objref_NETGENPlugin_Hypothesis):
+            copy_param = _copy_netgen_param
+            mesher3D = "NETGEN"
+        elif isinstance(hyp, GMSHPlugin._objref_GMSHPlugin_Hypothesis):
+            copy_param = _copy_gmsh_param
+            mesher3D = "GMSH"
+        else:
+            raise ValueError("param must come from NETGENPlugin or GMSHPlugin")
+
+        self.mesh.SetParallelismDimension(3)
+        self._build_submeshes(None, mesher3D)
+
+        param2d = self._algo2d.Parameters()
+        copy_param(2, param2d, hyp)
+
+        for algo3d in self._algo3d:
+            param3d = algo3d.Parameters()
+            copy_param(3, param3d, hyp)
+
+    def Add2DGlobalHypothesis(self, hyp):
+        """
+        Split hypothesis to apply it to all the submeshes:
+        - the 1D
+        - each of the 2D faces
+
+        Parameters:
+                hyp: a hypothesis to assign
+
+        """
+        if isinstance(hyp, NETGENPlugin._objref_NETGENPlugin_Hypothesis):
+            copy_param = _copy_netgen_param
+            mesher2D = "NETGEN"
+        else:
+            raise ValueError("param must come from NETGENPlugin")
+
+        self.mesh.SetParallelismDimension(2)
+        self._build_submeshes(mesher2D, None)
+
+        param1d = self._algo1d
+        copy_param(1, param1d, hyp)
+
+        for algo2d in self._algo2d:
+            param2d = algo2d.Parameters()
+            copy_param(2, param2d, hyp)
+
+    pass # End of ParallelMesh
 
 class meshProxy(SMESH._objref_SMESH_Mesh):
     """
@@ -7474,10 +8052,20 @@ class meshProxy(SMESH._objref_SMESH_Mesh):
         if len( args ) == 1:
             args += True,
         return SMESH._objref_SMESH_Mesh.ExportDAT(self, *args)
-    pass
+
 omniORB.registerObjref(SMESH._objref_SMESH_Mesh._NP_RepositoryId, meshProxy)
 
 
+class parallelMeshProxy(SMESH._objref_SMESH_ParallelMesh):
+    def __init__(self,*args):
+        SMESH._objref_SMESH_ParallelMesh.__init__(self,*args)
+    def __deepcopy__(self, memo=None):
+        new = self.__class__(self)
+        return new
+omniORB.registerObjref(SMESH._objref_SMESH_ParallelMesh._NP_RepositoryId, parallelMeshProxy)
+
+
+
 class submeshProxy(SMESH._objref_SMESH_subMesh):
 
     """
index ecc237be4d4f2854ee9a645df4e86ca10b17ea42..934b1235cbdb3813cc495dbe9e1bba226d9d0a57 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -372,7 +372,7 @@ class Mesh_Algorithm:
         """
         Defines "ViscousLayers2D" hypothesis to give parameters of layers of quadrilateral
         elements to build near mesh boundary. This hypothesis can be used by several 2D algorithms:
-        NETGEN 2D, NETGEN 1D-2D, Quadrangle (mapping), MEFISTO, MG-CADSurf
+        NETGEN 2D, NETGEN 1D-2D, Quadrangle (mapping), MG-CADSurf
 
         Parameters:
                 thickness: total thickness of layers of quadrilaterals
index cc37c2938ee654b243b8c86c1b6818d8565023e7..e97581f3672d634a7e04031cf5fc1a8ebd911753 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2015-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
diff --git a/src/SMESH_SWIG/smesh_tools.py b/src/SMESH_SWIG/smesh_tools.py
new file mode 100644 (file)
index 0000000..b964f55
--- /dev/null
@@ -0,0 +1,254 @@
+#!/usr/bin/env python3
+
+import salome
+import medcoupling as mc
+
+import GEOM
+from salome.geom import geomBuilder
+
+geompy = geomBuilder.New()
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+
+from salome.kernel.logger import Logger
+logger = Logger("salome.smesh.smesh_tools")
+logger.setLevel("WARNING")
+
+# prefix for groups with internal usage
+# i.e. used to transfer the faces and edges sub-shapes ids to the mesh
+__prefix = "____"
+
+def __getIdsGrpDualFromOrig(mc_mesh_file, grp_name, mesh2d, grp_level):
+    """ Identify the polygonal cells ids matching the original group on the
+        original mesh (before dual mesh)
+
+    Args:
+        mc_mesh_file (MEDFileMesh): mesh on which to read the group
+        grp_name (string): name of the group to read
+        mesh2d (MEDCouplingUMesh): mesh at lower level (-1 or -2) containing
+                                   faces or segments cells
+        grp_level (int): level on which to load the group (-1 or -2)
+
+    Returns:
+        id_grp_poly (DataArrayInt64): ids of cells mathcing the group. None if
+                                      the group has not been found.
+        nodes_added (DataArrayInt64): new nodes added on the dual mesh
+    """
+    try:
+        grp_tria = mc_mesh_file.getGroup(grp_level, grp_name)
+    except:
+        logger.debug("""No group found for %s at level %i.
+                     It is normal behaviour for degenerated geom edge."""\
+                     %(grp_name, grp_level))
+        return None, None
+    # Retrieve the nodes in group
+    orig_grp_nodes = grp_tria.computeFetchedNodeIds()
+    # Find all the cells lying on one of the nodes
+    id_grp_poly = mesh2d.getCellIdsLyingOnNodes(orig_grp_nodes, False)
+
+    grp_poly = mesh2d[id_grp_poly]
+    if grp_poly.getNumberOfCells() == 0:
+        logger.debug("""No poly cell found for %s at level %i."""\
+                     %(grp_name, grp_level))
+        return None, None
+
+    # find the extra face cells, on the border of the group (lying on nodes,
+    # but outside the group)
+    id_poly_border = grp_poly.findCellIdsOnBoundary()
+
+    # ids of the cells in grp_poly
+    id_poly = mc.DataArrayInt64.New(grp_poly.getNumberOfCells(), 1)
+    id_poly.iota()
+
+    # cells that are really in the group
+    id_to_keep = id_poly.buildSubstraction(id_poly_border)
+
+    id_grp_poly = id_grp_poly[id_to_keep]
+
+    id_grp_poly.setName(grp_name.strip())
+
+    # get nodes added on this group
+    grp_poly = mesh2d[id_grp_poly]
+    grp_nodes_poly = grp_poly.computeFetchedNodeIds()
+    nodes_added = grp_nodes_poly.buildSubstraction(orig_grp_nodes)
+
+    return id_grp_poly, nodes_added
+
+def __projectNodeOnSubshape(nodes, subshape, coords):
+    """ Project nodes on a sub-shape (face or edge) and update the mesh
+        coordinates
+
+    Args:
+        nodes (DataArrayInt): nodes ids to project
+        subshape (GEOM object): face or edge on which to project the nodes
+        coords (DataArrayDouble): coordinates of the mesh to update. These
+                                  coordinates are modified inside this function.
+    """
+    for i in nodes:
+        x, y, z = coords[i].getValues()
+        vertex = geompy.MakeVertex(x, y, z)
+        try:
+            prj = geompy.MakeProjection(vertex, subshape)
+        except:
+            logger.warning("Projection failed for %.5f %.5f %.5f but we continue with next node"%(x, y, z))
+            continue
+        new_coor = geompy.PointCoordinates(prj)
+        # update its coordinates in the mesh
+        coords[i] = new_coor
+    pass
+
+def __deleteObj(theObj):
+    """ Delete object from a Study
+
+    Args:
+        theObj (GEOM or SMESH object): object to remove from the study
+    """
+    aStudy = salome.myStudy
+    aStudyBuilder = aStudy.NewBuilder()
+    SO = aStudy.FindObjectIOR(aStudy.ConvertObjectToIOR(theObj))
+    if SO is not None:
+        aStudyBuilder.RemoveObjectWithChildren(SO)
+    pass
+
+def smesh_create_dual_mesh(mesh_ior, output_file, adapt_to_shape=True,
+                           mesh_name="MESH"):
+    """ Create a dual of the mesh in input_file into output_file
+
+    Args:
+        mesh_ior (string): corba Id of the Tetrahedron mesh
+        output_file (string): dual mesh file
+        adapt_to_shape (bool): If True will project boundary points on shape
+        mesh_name (string): Name of the dual Mesh
+    """
+    # Import mesh from file
+    mesh = salome.orb.string_to_object(mesh_ior)
+    if not mesh:
+        raise Exception("Could not find mesh using id: ", mesh_ior)
+
+    shape = mesh.GetShapeToMesh()
+
+    if adapt_to_shape:
+        faces = geompy.SubShapeAll(shape, geompy.ShapeType["FACE"])
+        faces_ids = geompy.GetSubShapesIDs(shape, faces)
+
+        # Create group with each face
+        # so that we don't need GetFaceNearPoint to get the face to project the
+        # point to
+        id2face = {}
+        id2face_edges_ids = {}
+        mesh_groups = []
+        for face, face_id in zip(faces, faces_ids):
+            gr_mesh = mesh.CreateGroupFromGEOM(SMESH.FACE,
+                                               '%sface_%i'%(__prefix, face_id),
+                                               face)
+            id2face[face_id] = face
+            mesh_groups.append(gr_mesh)
+            # get the edges bounding this face
+            # so that we can project the nodes on edges before nodes on faces
+            face_edges = geompy.SubShapeAll(face, geompy.ShapeType["EDGE"])
+            face_edges_ids = geompy.GetSubShapesIDs(shape, face_edges)
+            id2face_edges_ids[face_id] = face_edges_ids
+
+        edges = geompy.SubShapeAll(shape, geompy.ShapeType["EDGE"])
+        edges_ids = geompy.GetSubShapesIDs(shape, edges)
+
+        id2edge = {}
+        for edge, edge_id in zip(edges, edges_ids):
+            gr_mesh = mesh.CreateGroupFromGEOM(SMESH.EDGE,
+                                               '%sedge_%i'%(__prefix, edge_id),
+                                               edge)
+            id2edge[edge_id] = edge
+            mesh_groups.append(gr_mesh)
+
+    # We got a meshProxy so we need to convert pointer to MEDCoupling
+    int_ptr = mesh.ExportMEDCoupling(True, True)
+    dab = mc.FromPyIntPtrToDataArrayByte(int_ptr)
+    mc_mesh_file = mc.MEDFileMesh.New(dab)
+    tetras = mc_mesh_file[0]
+    # End of SMESH -> MEDCoupling part for dualmesh
+
+    tetras = mc.MEDCoupling1SGTUMesh(tetras)
+
+    # Create the polyhedra from the tetrahedra (main goal of this function)
+    polyh = tetras.computeDualMesh()
+
+    ## Adding skin + transfering groups on faces from tetras mesh
+    mesh2d = polyh.buildUnstructured().computeSkin()
+    mesh2d.setName(mesh_name)
+
+    polyh_coords = polyh.getCoords()
+
+    treated_edges = []
+
+    mc_groups = []
+    for grp_name in mc_mesh_file.getGroupsOnSpecifiedLev(-1):
+        # This group is created by the export
+        if grp_name == "Group_Of_All_Faces":
+            logger.debug("Skipping group: "+ grp_name)
+            continue
+        logger.debug("Transferring group: "+ grp_name)
+
+        # get the polygons ids on the dual mesh from the triangles group
+        id_grp_poly, nodes_added_on_tri = \
+            __getIdsGrpDualFromOrig(mc_mesh_file, grp_name, mesh2d, -1)
+
+        if id_grp_poly is not None and grp_name[:4] == __prefix and adapt_to_shape:
+            # This group is on a specific geom face
+            face_id = grp_name.split("_")[-1]
+            face_id = int(face_id)
+            face = id2face[face_id]
+
+            # for each face, get the edges bounding it
+            grp_poly = mesh2d[id_grp_poly]
+            mesh1d = grp_poly.computeSkin()
+
+            face_edges_id = id2face_edges_ids[face_id]
+            for edge_id in face_edges_id:
+                grp_seg_name = "%sedge_%i"%(__prefix, edge_id)
+
+                # get the segs on the dual mesh from the segs group
+                id_grp_seg, nodes_added_on_segs = __getIdsGrpDualFromOrig(\
+                                mc_mesh_file, grp_seg_name, mesh1d, -2)
+
+                # project new nodes on its geom edge
+                # (if the group exists on this edge and it has not already been
+                # treated)
+                if id_grp_seg is not None:
+                    if edge_id not in treated_edges:
+                        edge = id2edge[edge_id]
+                        __projectNodeOnSubshape(nodes_added_on_segs,
+                                                edge, polyh_coords)
+                    else:
+                        treated_edges.append(edge_id)
+
+                    # remove these nodes from the nodes to project on face
+                    nodes_added_on_tri = \
+                       nodes_added_on_tri.buildSubstraction(nodes_added_on_segs)
+
+            # project new nodes on its geom face
+            __projectNodeOnSubshape(nodes_added_on_tri, face, polyh_coords)
+        else:
+            # add the group to write it
+            mc_groups.append(id_grp_poly)
+
+    # Creating output file
+    logger.debug("Creating file with mesh: "+mesh_name)
+    myfile = mc.MEDFileUMesh()
+    myfile.setName(mesh_name)
+    polyh.setName(mesh_name)
+    myfile.setMeshAtLevel(0, polyh)
+    myfile.setMeshAtLevel(-1, mesh2d)
+
+    for group in mc_groups:
+        myfile.addGroup(-1, group)
+
+    logger.debug("Writing dual mesh in: "+output_file)
+    myfile.write(output_file, 2)
+
+    if adapt_to_shape:
+        # delete temporary groups
+        for grp in mesh_groups:
+            __deleteObj(grp)
index 0f0faf47d50e1a12bd6df8ffc3bc9a458daace00..5527e26609421a143acbab818431d2afb5233307 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index cae25ae0e5ddb538acd529d895b300653c6961db..0e89bf85daae245f3895a874a55b7d5f8a235348 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f55cb1ee9e906699b61368b43a44b37c89220782..e76bcda07dad15980c29df14fd05ebef3dab1ea0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b2f0aef5bfd5fb975a047a04f16b2bd243d48f88..0c1e7315b30ac0d98c8fafa5def6671d6a69ee1e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
diff --git a/src/SalomeSessionless/CMakeLists.txt b/src/SalomeSessionless/CMakeLists.txt
deleted file mode 100644 (file)
index b21eaa2..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (C) 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
-#
-
-SET(_bin_SCRIPTS
-  SMESH_SalomeSessionless.py
-)
-
-SALOME_INSTALL_SCRIPTS("${_bin_SCRIPTS}" ${SALOME_INSTALL_PYTHON} DEF_PERMS)
diff --git a/src/SalomeSessionless/SMESH_SalomeSessionless.py b/src/SalomeSessionless/SMESH_SalomeSessionless.py
deleted file mode 100644 (file)
index d4676de..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#  -*- coding: iso-8859-1 -*-
-# Copyright (C) 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
-#
-
-def buildInstance(orb):
-    import SMeshHelper
-    smesh_ior = SMeshHelper.BuildSMESHInstance()
-    import SMESH
-    import CORBA
-    orb=CORBA.ORB_init([''])
-    smeshInst = orb.string_to_object(smesh_ior)
-    return smeshInst, orb
index ec44a6aafd4b1cb0171062b2218172ff4237a635..7d8b58a6d4d979dd419f5dbf8cf16d1dae8f81df 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -38,12 +38,6 @@ INCLUDE_DIRECTORIES(
   ${TBB_INCLUDES}
 )
 
-IF(SALOME_SMESH_ENABLE_MEFISTO)
-  INCLUDE_DIRECTORIES(
-    ${PROJECT_SOURCE_DIR}/src/MEFISTO2
-  )
-ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
-
 # additional preprocessor / compiler flags
 ADD_DEFINITIONS(
   ${OpenCASCADE_DEFINITIONS}
@@ -68,10 +62,6 @@ SET(_link_LIBRARIES
   ${Boost_LIBRARIES}
 )
 
-IF(SALOME_SMESH_ENABLE_MEFISTO)
-  SET(_link_LIBRARIES ${_link_LIBRARIES} MEFISTO2D)
-ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
-
 # --- headers ---
 
 # header files / no moc processing
@@ -130,15 +120,14 @@ SET(StdMeshers_HEADERS
   StdMeshers_Projection_1D2D.hxx
   StdMeshers_CartesianParameters3D.hxx
   StdMeshers_Cartesian_3D.hxx
+  StdMeshers_Cartesian_VL.hxx
   StdMeshers_QuadFromMedialAxis_1D2D.hxx
   StdMeshers_PolygonPerFace_2D.hxx
   StdMeshers_PolyhedronPerSolid_3D.hxx
   StdMeshers_BlockRenumber.hxx
+  StdMeshers_ViscousLayerBuilder.hxx
 )
 
-IF(SALOME_SMESH_ENABLE_MEFISTO)
-  SET(StdMeshers_HEADERS ${StdMeshers_HEADERS} StdMeshers_MEFISTO_2D.hxx)
-ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
 # --- sources ---
 
 # sources / static
@@ -196,17 +185,15 @@ SET(StdMeshers_SOURCES
   StdMeshers_Projection_1D2D.cxx
   StdMeshers_CartesianParameters3D.cxx
   StdMeshers_Cartesian_3D.cxx
+  StdMeshers_Cartesian_VL.cxx
   StdMeshers_Adaptive1D.cxx
   StdMeshers_QuadFromMedialAxis_1D2D.cxx
   StdMeshers_PolygonPerFace_2D.cxx
   StdMeshers_PolyhedronPerSolid_3D.cxx
   StdMeshers_BlockRenumber.cxx
+  StdMeshers_ViscousLayerBuilder.cxx
 )
 
-IF(SALOME_SMESH_ENABLE_MEFISTO)
-  SET(StdMeshers_SOURCES ${StdMeshers_SOURCES} StdMeshers_MEFISTO_2D.cxx)
-ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
-
 # --- rules ---
 
 ADD_LIBRARY(StdMeshers ${StdMeshers_SOURCES})
index 63bcdd2fdc7843c0700c9b446f50fa5a5c8f2006..4015d5fe77520af81c12407900f44546f4e3a3c1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6b30e8fa4b8bbce2a7b941d67b9fa4f7105dfe3b..fe539a1bd9367c10952f170f8203475e3dafc93c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -241,15 +241,14 @@ namespace // internal utils
     BBox                         myBBox;
     BRepAdaptor_Surface          mySurface;
     ElementBndBoxTree*           myTree;
-    const Poly_Array1OfTriangle* myPolyTrias;
-    const TColgp_Array1OfPnt*    myNodes;
-    bool                         myOwnNodes;
+    TColgp_Array1OfPnt           myNodes;
 
     typedef vector<int> IntVec;
     IntVec                       myFoundTriaIDs;
 
     TriaTreeData( const TopoDS_Face& face, ElementBndBoxTree* triaTree );
-    ~TriaTreeData() { if ( myOwnNodes ) delete myNodes; myNodes = NULL; }
+    ~TriaTreeData() {
+    }
     virtual const Bnd_B3d* GetBox(int elemID) const { return &myTrias[elemID].myBox; }
     void PrepareToTriaSearch();
     void SetSizeByTrias( SegSizeTree& sizeTree, double deflection ) const;
@@ -311,7 +310,7 @@ namespace // internal utils
 
   TriaTreeData::TriaTreeData( const TopoDS_Face& face, ElementBndBoxTree* triaTree )
     : myTriasDeflection(0), mySurface( face ),
-      myTree(NULL), myPolyTrias(NULL), myNodes(NULL), myOwnNodes(false)
+      myTree(NULL)
   {
     TopLoc_Location loc;
     Handle(Poly_Triangulation) tr = BRep_Tool::Triangulation( face, loc );
@@ -319,21 +318,19 @@ namespace // internal utils
     {
       myFaceTol         = SMESH_MesherHelper::MaxTolerance( face );
       myTree            = triaTree;
-      myNodes           = & tr->Nodes();
-      myPolyTrias       = & tr->Triangles();
+      myNodes           = TColgp_Array1OfPnt( 1, tr->NbNodes() );
+      for (int ii = 1; ii <= tr->NbNodes(); ++ii) {
+        myNodes(ii) = tr->Node(ii);
+      }
       myTriasDeflection = tr->Deflection();
       if ( !loc.IsIdentity() ) // transform nodes if necessary
       {
-        TColgp_Array1OfPnt* trsfNodes = new TColgp_Array1OfPnt( myNodes->Lower(), myNodes->Upper() );
-        trsfNodes->Assign( *myNodes );
-        myNodes    = trsfNodes;
-        myOwnNodes = true;
         const gp_Trsf& trsf = loc;
-        for ( int i = trsfNodes->Lower(); i <= trsfNodes->Upper(); ++i )
-          trsfNodes->ChangeValue(i).Transform( trsf );
+        for ( int i = myNodes.Lower(); i <= myNodes.Upper(); ++i )
+          myNodes(i).Transform( trsf );
       }
-      for ( int i = myNodes->Lower(); i <= myNodes->Upper(); ++i )
-        myBBox.Add( myNodes->Value(i).XYZ() );
+      for ( int i = myNodes.Lower(); i <= myNodes.Upper(); ++i )
+        myBBox.Add( myNodes.Value(i).XYZ() );
     }
   }
   //================================================================================
@@ -345,14 +342,16 @@ namespace // internal utils
   void TriaTreeData::PrepareToTriaSearch()
   {
     if ( !myTrias.empty() ) return; // already done
-    if ( !myPolyTrias ) return;
+
+    TopLoc_Location loc;
+    Handle(Poly_Triangulation) tr = BRep_Tool::Triangulation( mySurface.Face(), loc );
+
+    if ( tr.IsNull() || !tr->NbTriangles() ) return;
 
     // get all boundary links and nodes on VERTEXes
     map< NLink, Segment* > linkToSegMap;
     map< NLink, Segment* >::iterator l2s;
     set< int > vertexNodes;
-    TopLoc_Location loc;
-    Handle(Poly_Triangulation) tr = BRep_Tool::Triangulation( mySurface.Face(), loc );
     if ( !tr.IsNull() )
     {
       TopTools_IndexedMapOfShape edgeMap;
@@ -377,21 +376,21 @@ namespace // internal utils
       {
         const NLink& link = (*l2s).first;
         (*l2s).second = & mySegments[ iS ];
-        mySegments[ iS ].Init( myNodes->Value( link.N1() ),
-                               myNodes->Value( link.N2() ));
+        mySegments[ iS ].Init( myNodes( link.N1() ),
+                               myNodes( link.N2() ));
       }
     }
 
     // initialize myTrias
-    myTrias.resize( myPolyTrias->Length() );
+    myTrias.resize( tr->NbTriangles() );
     Standard_Integer n1,n2,n3;
-    for ( int i = 1; i <= myPolyTrias->Upper(); ++i )
+    for ( int i = 1; i <= tr->NbTriangles(); ++i )
     {
       Triangle & t = myTrias[ i-1 ];
-      myPolyTrias->Value( i ).Get( n1,n2,n3 );
-      t.Init( myNodes->Value( n1 ),
-              myNodes->Value( n2 ),
-              myNodes->Value( n3 ));
+      tr->Triangle( i ).Get( n1,n2,n3 );
+      t.Init( myNodes.Value( n1 ),
+              myNodes.Value( n2 ),
+              myNodes.Value( n3 ));
       int nbSeg = 0;
       if (( l2s = linkToSegMap.find( NLink( n1, n2 ))) != linkToSegMap.end())
         t.mySegments[ nbSeg++ ] = l2s->second;
@@ -445,15 +444,16 @@ namespace // internal utils
     double size = -1., maxLinkLen;
     int    jLongest = 0;
 
-    //int nbLinks = 0;
-    for ( int i = 1; i <= myPolyTrias->Upper(); ++i )
+    TopLoc_Location loc;
+    Handle(Poly_Triangulation) tr = BRep_Tool::Triangulation( mySurface.Face(), loc );
+    for ( int i = 1; i <= tr->NbTriangles(); ++i )
     {
       // get corners of a triangle
-      myPolyTrias->Value( i ).Get( n[0],n[1],n[2] );
+      tr->Triangle( i ).Get( n[0],n[1],n[2] );
       n[3] = n[0];
-      p[0] = myNodes->Value( n[0] );
-      p[1] = myNodes->Value( n[1] );
-      p[2] = myNodes->Value( n[2] );
+      p[0] = myNodes.Value( n[0] );
+      p[1] = myNodes.Value( n[1] );
+      p[2] = myNodes.Value( n[2] );
       p[3] = p[0];
       // get length of links and find the longest one
       maxLinkLen = 0;
@@ -493,7 +493,7 @@ namespace // internal utils
       }
       //cout << "SetSizeByTrias, i="<< i << " " << sz * factor << endl;
     }
-    // cout << "SetSizeByTrias, nn tria="<< myPolyTrias->Upper()
+    // cout << "SetSizeByTrias, nn tria="<< tr->NbTriangles()
     //      << " nb links" << nbLinks << " isConstSize="<<isConstSize
     //      << " " << size * factor << endl;
   }
@@ -520,6 +520,9 @@ namespace // internal utils
     if ( myFoundTriaIDs.empty() )
       return minDist2;
 
+    TopLoc_Location loc;
+    Handle(Poly_Triangulation) tr = BRep_Tool::Triangulation( mySurface.Face(), loc );
+
     Standard_Integer n[ 3 ];
     for ( size_t i = 0; i < myFoundTriaIDs.size(); ++i )
     {
@@ -529,13 +532,13 @@ namespace // internal utils
       t.myIsChecked = true;
 
       double d, minD2 = minDist2;
-      myPolyTrias->Value( myFoundTriaIDs[i]+1 ).Get( n[0],n[1],n[2] );
+      tr->Triangle( myFoundTriaIDs[i]+1 ).Get( n[0],n[1],n[2] );
       if ( avoidPnt && t.myHasNodeOnVertex )
       {
         bool avoidTria = false;
         for ( int i = 0; i < 3; ++i )
         {
-          const gp_Pnt& pn = myNodes->Value(n[i]);
+          const gp_Pnt& pn = myNodes.Value(n[i]);
           if (( avoidTria = ( pn.SquareDistance( *avoidPnt ) <= tol2 )))
             break;
           if ( !projectedOnly )
@@ -556,7 +559,7 @@ namespace // internal utils
       else
       {
         for ( int i = 0; i < 3; ++i )
-          minD2 = Min( minD2, p.SquareDistance( myNodes->Value(n[i]) ));
+          minD2 = Min( minD2, p.SquareDistance( myNodes.Value(n[i]) ));
         if ( minD2 < t.myMaxSize2  && ( t.DistToProjection( p, d ) || t.DistToSegment( p, d )))
           minD2 = Min( minD2, d*d );
         minDist2 = Min( minDist2, minD2 );
@@ -1317,9 +1320,9 @@ bool AdaptiveAlgo::Compute(SMESH_Mesh &         theMesh,
 
           if ( iLoop > 20 )
           {
-#ifdef _DEBUG_
-            cout << "Infinite loop in AdaptiveAlgo::Compute()" << endl;
-#endif
+            if(SALOME::VerbosityActivated())
+              cout << "Infinite loop in AdaptiveAlgo::Compute()" << endl;
+
             sizeDecreased = false;
             break;
           }
index baad145f9ebea5b1dd3aa22d1d8e4a261a59a9e9..3abfb60253260c0ab5ef3b54d387af1369b6acdf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index fd38ddd320303fb4ceea4b19718fcbb0bac9aba0..fb8769936135c3c8bbbf4da448dd5ee454807efb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index bb64abc4d16ef6a9ab638fae18c6ab7beea05b0c..6a021fc3d2cdf1944c7f43c945a3feae09a37815 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a1f3ff0573e83526db78b1bae4b3110658ae1e33..cbfced1faa68b9d81778c1855d7c8636c61daac2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index fc3c6e1c42894c3bbc8fdfacb7abdb3a815770fc..3d72ee7a9a09ea27d3a527d7b99548bf60277270 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index df74a1665b240257f95d6d9c9ec9d4ce9a2621ca..727a3e2d5bab01b2acf6fa63429386dfda488f01 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6ae866b87caeeb2a0d089aa3fa7724afe1776103..7173780c5fe28682d7ca616d5702f77469491b21 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e57b331b4ad55098c6ae71575f976bc2ebdbc868..66256788b7cc1727776f2bccf32f8f2e3c92d129 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -67,7 +67,9 @@ StdMeshers_CartesianParameters3D::StdMeshers_CartesianParameters3D(int         h
     _toAddEdges( false ),
     _toConsiderInternalFaces( false ),
     _toUseThresholdForInternalFaces( false ),
-    _toCreateFaces( false )
+    _toCreateFaces( false ),
+    _toUseQuanta(false),
+    _quanta(0.01)
 {
   _name = "CartesianParameters3D"; // used by "Cartesian_3D"
   _param_algo_dim = 3; // 3D
@@ -774,6 +776,37 @@ void StdMeshers_CartesianParameters3D::SetToCreateFaces(bool toCreate)
   }
 }
 
+//=======================================================================
+//function : SetToUseQuanta
+//purpose  : Enables use of quanta
+//=======================================================================
+
+void StdMeshers_CartesianParameters3D::SetToUseQuanta(bool toUseQuanta)
+{
+  if ( _toUseQuanta != toUseQuanta )
+  {
+    _toUseQuanta = toUseQuanta;
+    NotifySubMeshesHypothesisModification();
+  }
+}
+
+//=======================================================================
+//function : SetQuanta
+//purpose  : Set size quanta value
+//=======================================================================
+
+void StdMeshers_CartesianParameters3D::SetQuanta(const double quanta)
+{
+  if ( quanta < 1e-6 || quanta > 1.0 )
+    throw SALOME_Exception(LOCALIZED("Quanta must be in the range [0.01,1] "));
+
+  bool changed = (_quanta != quanta); 
+  _quanta = quanta;
+  
+  if ( changed )
+    NotifySubMeshesHypothesisModification();
+}
+
 //=======================================================================
 //function : IsDefined
 //purpose  : Return true if parameters are well defined
@@ -823,7 +856,9 @@ std::ostream & StdMeshers_CartesianParameters3D::SaveTo(std::ostream & save)
 
   save << " " << _toConsiderInternalFaces
        << " " << _toUseThresholdForInternalFaces
-       << " " << _toCreateFaces;
+       << " " << _toCreateFaces
+       << " " << _toUseQuanta
+       << " " << _quanta;
 
   return save;
 }
@@ -889,6 +924,9 @@ std::istream & StdMeshers_CartesianParameters3D::LoadFrom(std::istream & load)
     load >> _toCreateFaces;
   }
 
+  if ( load >> _toUseQuanta )
+    load >> _quanta;
+
   return load;
 }
 
index 4ba593c305fd062bef6fda93ff61e81a7358c0ee..a913e830cd4e8c1712a8c2533ced5e21ac9c3cf5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -157,6 +157,19 @@ public:
   void SetToCreateFaces(bool toCreate);
   bool GetToCreateFaces() const { return _toCreateFaces; }
 
+  /*!
+   * \brief Enables use of quanta for hexahedrons at the solid external boundary
+   */
+  void SetToUseQuanta(bool toUseQuanta);
+  bool GetToUseQuanta() const { return _toUseQuanta; }
+
+  /*!
+   * \brief Value of the quanta (volPolyhedron/volHexahedron) to use
+   * \remark value [0.1, 1.0]
+   */
+  void SetQuanta(const double quanta );
+  double GetQuanta() const { return _quanta; }
+
 
   /*!
    * \brief Return true if parameters are well defined
@@ -193,6 +206,8 @@ public:
   bool   _toConsiderInternalFaces;
   bool   _toUseThresholdForInternalFaces;
   bool   _toCreateFaces;
+  bool   _toUseQuanta;
+  double _quanta;
 };
 
 #endif
index c847d9efb3a7fbc880b18337c5b1ae257221064d..afd8d1866941b37db9fb61ada70824daec634315 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
 #include "StdMeshers_Cartesian_3D.hxx"
 #include "StdMeshers_CartesianParameters3D.hxx"
-
-#include "ObjectPool.hxx"
-#include "SMDS_MeshNode.hxx"
-#include "SMDS_VolumeTool.hxx"
-#include "SMESHDS_Mesh.hxx"
-#include "SMESH_Block.hxx"
-#include "SMESH_Comment.hxx"
-#include "SMESH_ControlsDef.hxx"
-#include "SMESH_Mesh.hxx"
-#include "SMESH_MeshAlgos.hxx"
-#include "SMESH_MeshEditor.hxx"
-#include "SMESH_MesherHelper.hxx"
-#include "SMESH_subMesh.hxx"
-#include "SMESH_subMeshEventListener.hxx"
+#include "StdMeshers_Cartesian_VL.hxx"
 #include "StdMeshers_FaceSide.hxx"
+#include "StdMeshers_ViscousLayers.hxx"
+
+#include <ObjectPool.hxx>
+#include <SMDS_LinearEdge.hxx>
+#include <SMDS_MeshNode.hxx>
+#include <SMDS_VolumeOfNodes.hxx>
+#include <SMDS_VolumeTool.hxx>
+#include <SMESHDS_Mesh.hxx>
+#include <SMESH_Block.hxx>
+#include <SMESH_Comment.hxx>
+#include <SMESH_ControlsDef.hxx>
+#include <SMESH_Mesh.hxx>
+#include <SMESH_MeshAlgos.hxx>
+#include <SMESH_MeshEditor.hxx>
+#include <SMESH_MesherHelper.hxx>
+#include <SMESH_subMesh.hxx>
+#include <SMESH_subMeshEventListener.hxx>
 
 #include <utilities.h>
 #include <Utils_ExceptHandlers.hxx>
@@ -130,7 +134,8 @@ StdMeshers_Cartesian_3D::StdMeshers_Cartesian_3D(int hypId, SMESH_Gen * gen)
 {
   _name = "Cartesian_3D";
   _shapeType = (1 << TopAbs_SOLID);       // 1 bit /shape type
-  _compatibleHypothesis.push_back("CartesianParameters3D");
+  _compatibleHypothesis.push_back( "CartesianParameters3D" );
+  _compatibleHypothesis.push_back( StdMeshers_ViscousLayers::GetHypType() );
 
   _onlyUnaryInput = false;          // to mesh all SOLIDs at once
   _requireDiscreteBoundary = false; // 2D mesh not needed
@@ -149,19 +154,26 @@ bool StdMeshers_Cartesian_3D::CheckHypothesis (SMESH_Mesh&          aMesh,
 {
   aStatus = SMESH_Hypothesis::HYP_MISSING;
 
-  const list<const SMESHDS_Hypothesis*>& hyps = GetUsedHypothesis(aMesh, aShape);
+  const list<const SMESHDS_Hypothesis*>& hyps = GetUsedHypothesis(aMesh, aShape, /*skipAux=*/false);
   list <const SMESHDS_Hypothesis* >::const_iterator h = hyps.begin();
   if ( h == hyps.end())
   {
     return false;
   }
 
+  _hyp = nullptr;
+  _hypViscousLayers = nullptr;
+  _isComputeOffset = false;
+
   for ( ; h != hyps.end(); ++h )
   {
-    if (( _hyp = dynamic_cast<const StdMeshers_CartesianParameters3D*>( *h )))
+    if ( !_hyp && ( _hyp = dynamic_cast<const StdMeshers_CartesianParameters3D*>( *h )))
     {
       aStatus = _hyp->IsDefined() ? HYP_OK : HYP_BAD_PARAMETER;
-      break;
+    }
+    else
+    {
+      _hypViscousLayers = dynamic_cast<const StdMeshers_ViscousLayers*>( *h );
     }
   }
 
@@ -170,7 +182,20 @@ bool StdMeshers_Cartesian_3D::CheckHypothesis (SMESH_Mesh&          aMesh,
 
 namespace
 {
-  typedef int TGeomID; // IDs of sub-shapes
+  /*!
+   * \brief Temporary mesh to hold 
+   */
+  struct TmpMesh: public SMESH_Mesh
+  {
+    TmpMesh() {
+      _isShapeToMesh = (_id = 0);
+      _meshDS  = new SMESHDS_Mesh( _id, true );
+    }
+  };
+
+  typedef int                     TGeomID; // IDs of sub-shapes
+  typedef TopTools_ShapeMapHasher TShapeHasher; // non-oriented shape hasher
+  typedef std::array< int, 3 >    TIJK;
 
   const TGeomID theUndefID = 1e+9;
 
@@ -408,6 +433,11 @@ namespace
     {
       _curInd[0] = i; _curInd[1] = j; _curInd[2] = k;
     }
+    void SetLineIndex(size_t i)
+    {
+      _curInd[_iVar2] = i / _size[_iVar1];
+      _curInd[_iVar1] = i % _size[_iVar1];
+    }
     void operator++()
     {
       if ( ++_curInd[_iVar1] == _size[_iVar1] )
@@ -419,8 +449,10 @@ namespace
     size_t LineIndex01 () const { return _curInd[_iVar1] + (_curInd[_iVar2] + 1 )* _size[_iVar1]; }
     size_t LineIndex11 () const { return (_curInd[_iVar1] + 1 ) + (_curInd[_iVar2] + 1 )* _size[_iVar1]; }
     void SetIndexOnLine (size_t i)  { _curInd[ _iConst ] = i; }
+    bool IsValidIndexOnLine (size_t i) const { return  i < _size[ _iConst ]; }
     size_t NbLines() const { return _size[_iVar1] * _size[_iVar2]; }
   };
+  struct FaceGridIntersector;
   // --------------------------------------------------------------------------
   /*!
    * \brief Container of GridLine's
@@ -437,7 +469,9 @@ namespace
     // index shift within _nodes of nodes of a cell from the 1st node
     int                _nodeShift[8];
 
-    vector< const SMDS_MeshNode* >    _nodes; // mesh nodes at grid nodes
+    vector< const SMDS_MeshNode* >    _nodes;          // mesh nodes at grid nodes
+    vector< const SMDS_MeshNode* >    _allBorderNodes; // mesh nodes between the bounding box and the geometry boundary
+
     vector< const F_IntersectPoint* > _gridIntP; // grid node intersection with geometry
     ObjectPool< E_IntersectPoint >    _edgeIntPool; // intersections with EDGEs
     ObjectPool< F_IntersectPoint >    _extIntPool; // intersections with extended INTERNAL FACEs
@@ -449,6 +483,8 @@ namespace
     bool                              _toConsiderInternalFaces;
     bool                              _toUseThresholdForInternalFaces;
     double                            _sizeThreshold;
+    bool                              _toUseQuanta;
+    double                            _quanta;
 
     SMESH_MesherHelper*               _helper;
 
@@ -460,11 +496,16 @@ namespace
     {
       return i + j*_coords[0].size() + k*_coords[0].size()*_coords[1].size();
     }
+    size_t NodeIndex( const TIJK& ijk ) const
+    {
+      return NodeIndex( ijk[0], ijk[1], ijk[2] );
+    }
     size_t NodeIndexDX() const { return 1; }
     size_t NodeIndexDY() const { return _coords[0].size(); }
     size_t NodeIndexDZ() const { return _coords[0].size() * _coords[1].size(); }
 
     LineIndexer GetLineIndexer(size_t iDir) const;
+    size_t GetLineDir( const GridLine* line, size_t & index ) const;
 
     E_IntersectPoint* Add( const E_IntersectPoint& ip )
     {
@@ -654,7 +695,8 @@ namespace
     // --------------------------------------------------------------------------------
     struct _Node //!< node either at a hexahedron corner or at intersection
     {
-      const SMDS_MeshNode*    _node; // mesh node at hexahedron corner
+      const SMDS_MeshNode*    _node;        // mesh node at hexahedron corner
+      const SMDS_MeshNode*    _boundaryCornerNode; // missing mesh node due to hex truncation on the boundary
       const B_IntersectPoint* _intPoint;
       const _Face*            _usedInFace;
       char                    _isInternalFlags;
@@ -663,6 +705,8 @@ namespace
         :_node(n), _intPoint(ip), _usedInFace(0), _isInternalFlags(0) {} 
       const SMDS_MeshNode*    Node() const
       { return ( _intPoint && _intPoint->_node ) ? _intPoint->_node : _node; }
+      const SMDS_MeshNode*    BoundaryNode() const
+      { return _node ? _node : _boundaryCornerNode; }
       const E_IntersectPoint* EdgeIntPnt() const
       { return static_cast< const E_IntersectPoint* >( _intPoint ); }
       const F_IntersectPoint* FaceIntPnt() const
@@ -901,6 +945,7 @@ namespace
       TGeomID                 _solidID;
       double                  _size;
       const SMDS_MeshElement* _volume; // new volume
+      std::vector<const SMDS_MeshElement*> _brotherVolume; // produced due to poly split 
 
       vector< SMESH_Block::TShapeID > _names; // name of side a polygon originates from
 
@@ -977,10 +1022,7 @@ namespace
     int         _origNodeInd; // index of _hexNodes[0] node within the _grid
     size_t      _i,_j,_k;
     bool        _hasTooSmall;
-
-#ifdef _DEBUG_
     int         _cellID;
-#endif
 
   public:
     Hexahedron(Grid* grid);
@@ -1035,6 +1077,10 @@ namespace
     bool isInHole() const;
     bool hasStrangeEdge() const;
     bool checkPolyhedronSize( bool isCutByInternalFace, double & volSize ) const;
+    int checkPolyhedronValidity( _volumeDef* volDef, std::vector<std::vector<int>>& splitQuantities, 
+                                  std::vector<std::vector<const SMDS_MeshNode*>>& splitNodes );
+    const SMDS_MeshElement* addPolyhedronToMesh( _volumeDef* volDef,  SMESH_MesherHelper& helper, const std::vector<const SMDS_MeshNode*>& nodes, 
+                                                const std::vector<int>& quantities );
     bool addHexa ();
     bool addTetra();
     bool addPenta();
@@ -1243,7 +1289,7 @@ namespace
       if ( solids.size() == 2 )
       {
         if ( solids == solidsBef )
-          return theUndefID; //solids.contain( prevID ) ? solids.otherThan( prevID ) : theUndefID;
+          return solids.contain( prevID ) ? solids.otherThan( prevID ) : theUndefID; // bos #29212
       }
       return solids.oneCommon( solidsBef );
     }
@@ -1358,6 +1404,20 @@ namespace
                     s[indices[iDir*3]], s[indices[iDir*3+1]], s[indices[iDir*3+2]]);
     return li;
   }
+  //================================================================================
+  /*
+   * Return direction [0,1,2] of a GridLine
+   */
+  size_t Grid::GetLineDir( const GridLine* line, size_t & index ) const
+  {
+    for ( size_t iDir = 0; iDir < 3; ++iDir )
+      if ( &_lines[ iDir ][0] <= line && line <= &_lines[ iDir ].back() )
+      {
+        index = line - &_lines[ iDir ][0];
+        return iDir;
+      }
+    return -1;
+  }
   //=============================================================================
   /*
    * Creates GridLine's of the grid
@@ -1829,6 +1889,7 @@ namespace
     const size_t nbGridNodes = _coords[0].size() * _coords[1].size() * _coords[2].size();
     vector< TGeomID > shapeIDVec( nbGridNodes, theUndefID );
     _nodes.resize( nbGridNodes, 0 );
+    _allBorderNodes.resize( nbGridNodes, 0 );
     _gridIntP.resize( nbGridNodes, NULL );
 
     SMESHDS_Mesh* mesh = helper.GetMeshDS();
@@ -1879,10 +1940,11 @@ namespace
               if ( ++nodeCoord <  coordEnd )
                 nodeParam = *nodeCoord - *coord0;
               else
-                break;
+                break;                
             }
             if ( nodeCoord == coordEnd ) break;
           }
+          
           // create a mesh node on a GridLine at ip if it does not coincide with a grid node
           if ( nodeParam > ip->_paramOnLine + _tol )
           {
@@ -1943,6 +2005,14 @@ namespace
             SetOnShape( _nodes[ nodeIndex ], *_gridIntP[ nodeIndex ], & v );
             UpdateFacesOfVertex( *_gridIntP[ nodeIndex ], v );
           }
+          else if ( _toUseQuanta && !_allBorderNodes[ nodeIndex ] /*add all nodes outside the body. Used to reconstruct the hexahedrals when polys are not desired!*/)
+          {
+            gp_XYZ xyz = ( _coords[0][x] * _axes[0] +
+                           _coords[1][y] * _axes[1] +
+                           _coords[2][z] * _axes[2] );
+            _allBorderNodes[ nodeIndex ] = mesh->AddNode( xyz.X(), xyz.Y(), xyz.Z() );
+            mesh->SetNodeInVolume( _allBorderNodes[ nodeIndex ], shapeIDVec[ nodeIndex ]);
+          }
         }
 
 #ifdef _MY_DEBUG_
@@ -1959,11 +2029,11 @@ namespace
         {
           if ( intPnts.begin()->_transition != Trans_TANGENT &&
                intPnts.begin()->_transition != Trans_APEX )
-          throw SMESH_ComputeError (COMPERR_ALGO_FAILED,
-                                    SMESH_Comment("Wrong SOLE transition of GridLine (")
-                                    << li._curInd[li._iVar1] << ", " << li._curInd[li._iVar2]
-                                    << ") along " << li._nameConst
-                                    << ": " << trName[ intPnts.begin()->_transition] );
+            throw SMESH_ComputeError (COMPERR_ALGO_FAILED,
+                                      SMESH_Comment("Wrong SOLE transition of GridLine (")
+                                      << li._curInd[li._iVar1] << ", " << li._curInd[li._iVar2]
+                                      << ") along " << li._nameConst
+                                      << ": " << trName[ intPnts.begin()->_transition] );
         }
         else
         {
@@ -1978,11 +2048,13 @@ namespace
                                       SMESH_Comment("Wrong END transition of GridLine (")
                                       << li._curInd[li._iVar1] << ", " << li._curInd[li._iVar2]
                                       << ") along " << li._nameConst
-                                    << ": " << trName[ intPnts.rbegin()->_transition ]);
+                                      << ": " << trName[ intPnts.rbegin()->_transition ]);
         }
       }
     }
 #endif
+
+    return;
   }
 
   //=============================================================================
@@ -2429,11 +2501,9 @@ namespace
         tgtLink._link    = _hexLinks + ( srcLink._link - other._hexLinks );
       }
     }
-#ifdef _DEBUG_
-    _cellID = cellID;
-#else
-    (void)cellID; // unused in release mode
-#endif
+    
+    if (SALOME::VerbosityActivated())
+      _cellID = cellID;
   }
 
   //================================================================================
@@ -2615,11 +2685,16 @@ namespace
     {
       _hexNodes[iN]._isInternalFlags = 0;
 
+      // Grid  node 
       _hexNodes[iN]._node     = _grid->_nodes   [ _origNodeInd + _grid->_nodeShift[iN] ];
       _hexNodes[iN]._intPoint = _grid->_gridIntP[ _origNodeInd + _grid->_nodeShift[iN] ];
 
+      if ( _grid->_allBorderNodes[ _origNodeInd + _grid->_nodeShift[iN] ] ) 
+        _hexNodes[iN]._boundaryCornerNode = _grid->_allBorderNodes [ _origNodeInd + _grid->_nodeShift[iN] ];
+      
       if ( _hexNodes[iN]._node && !solid->Contains( _hexNodes[iN]._node->GetShapeID() ))
         _hexNodes[iN]._node = 0;
+
       if ( _hexNodes[iN]._intPoint && !solid->ContainsAny( _hexNodes[iN]._intPoint->_faceIDs ))
         _hexNodes[iN]._intPoint = 0;
 
@@ -2639,7 +2714,7 @@ namespace
     if ( _nbFaceIntNodes + _eIntPoints.size()                  > 0 &&
          _nbFaceIntNodes + _eIntPoints.size() + _nbCornerNodes > 3)
     {
-      _intNodes.reserve( 3 * _nbBndNodes + _nbFaceIntNodes + _eIntPoints.size() );
+      _intNodes.reserve( 3 * ( _nbBndNodes + _nbFaceIntNodes + _eIntPoints.size() ));
 
       // this method can be called in parallel, so use own helper
       SMESH_MesherHelper helper( *_grid->_helper->GetMesh() );
@@ -2711,7 +2786,7 @@ namespace
       // 1) add this->_eIntPoints to _Face::_eIntNodes
       // 2) fill _intNodes and _vIntNodes
       //
-      const double tol2 = _grid->_tol * _grid->_tol;
+      const double tol2 = _grid->_tol * _grid->_tol * 4;
       int facets[3], nbFacets, subEntity;
 
       for ( int iF = 0; iF < 6; ++iF )
@@ -2847,7 +2922,7 @@ namespace
       solid = _grid->GetSolid();
       if ( !_grid->_geometry.IsOneSolid() )
       {
-        TGeomID solidIDs[20];
+        TGeomID solidIDs[20] = { 0 };
         size_t nbSolids = getSolids( solidIDs );
         if ( nbSolids > 1 )
         {
@@ -3508,7 +3583,6 @@ namespace
     _volumeDefs._nodes.clear();
     _volumeDefs._quantities.clear();
     _volumeDefs._names.clear();
-
     // create a classic cell if possible
 
     int nbPolygons = 0;
@@ -4249,11 +4323,10 @@ namespace
         h->_eIntPoints.reserve(2);
         h->_eIntPoints.push_back( ip );
         added = true;
-#ifdef _DEBUG_
+
         // check if ip is really inside the hex
-        if ( h->isOutParam( ip->_uvw ))
+        if (SALOME::VerbosityActivated() && h->isOutParam( ip->_uvw ))
           throw SALOME_Exception("ip outside a hex");
-#endif
       }
     }
     return added;
@@ -4458,7 +4531,7 @@ namespace
 
     // connect pn2 (probably new, at _eIntNodes) with a split
 
-    int i, iConn;
+    int i, iConn = 0;
     size_t nbCommon;
     TGeomID commonFaces[20];
     _Node* nPrev = nullptr;
@@ -4757,6 +4830,7 @@ namespace
   {
     F_IntersectPoint noIntPnt;
     const bool toCheckNodePos = _grid->IsToCheckNodePos();
+    const bool useQuanta      = _grid->_toUseQuanta;
 
     int nbAdded = 0;
     // add elements resulted from hexahedron intersection
@@ -4803,26 +4877,41 @@ namespace
         }
       } // loop to get nodes
 
-      const SMDS_MeshElement* v = 0;
+      const SMDS_MeshElement* v = 0;      
       if ( !volDef->_quantities.empty() )
-      {
-        v = helper.AddPolyhedralVolume( nodes, volDef->_quantities );
-        volDef->_size = SMDS_VolumeTool( v ).GetSize();
-        if ( volDef->_size < 0 ) // invalid polyhedron
+      {                      
+        if ( !useQuanta )
         {
-          if ( ! SMESH_MeshEditor( helper.GetMesh() ).Reorient( v ) || // try to fix
-               SMDS_VolumeTool( v ).GetSize() < 0 )
+          // split polyhedrons of with disjoint volumes
+          std::vector<std::vector<int>> splitQuantities;
+          std::vector<std::vector< const SMDS_MeshNode* > > splitNodes;
+          if ( checkPolyhedronValidity( volDef, splitQuantities, splitNodes ) == 1 )
+            v = addPolyhedronToMesh( volDef, helper, nodes, volDef->_quantities );
+          else
           {
-            helper.GetMeshDS()->RemoveFreeElement( v, /*sm=*/nullptr, /*fromGroups=*/false );
-            v = nullptr;
-            //_hasTooSmall = true;
-#ifdef _DEBUG_
-            std::cout << "Remove INVALID polyhedron, _cellID = " << _cellID
-                      << " ijk = ( " << _i << " " << _j << " " << _k << " ) "
-                      << " solid " << volDef->_solidID << std::endl;
-#endif
+            int counter = -1;
+            for (size_t id = 0; id < splitQuantities.size(); id++)
+            {
+              v = addPolyhedronToMesh( volDef, helper, splitNodes[ id ], splitQuantities[ id ] );
+              if ( id < splitQuantities.size()-1 )
+                volDef->_brotherVolume.push_back( v );
+              counter++;
+            }
+            nbAdded += counter;
           }
         }
+        else
+        {
+          const double quanta = _grid->_quanta;
+          double polyVol      = volDef->_size;
+          double hexaVolume   = _sideLength[0] * _sideLength[1] * _sideLength[2];          
+          if ( hexaVolume > 0.0 && polyVol/hexaVolume >= quanta /*set the volume if the relation is satisfied*/)
+            v = helper.AddVolume( _hexNodes[0].BoundaryNode(), _hexNodes[2].BoundaryNode(),
+                                  _hexNodes[3].BoundaryNode(), _hexNodes[1].BoundaryNode(),
+                                  _hexNodes[4].BoundaryNode(), _hexNodes[6].BoundaryNode(),
+                                  _hexNodes[7].BoundaryNode(), _hexNodes[5].BoundaryNode() );
+          
+        }
       }
       else
       {
@@ -4879,6 +4968,10 @@ namespace
       if ( volDef->_volume )
       {
         helper.GetMeshDS()->SetMeshElementOnShape( volDef->_volume, volDef->_solidID );
+        for (auto broVol : volDef->_brotherVolume )
+        {
+          helper.GetMeshDS()->SetMeshElementOnShape( broVol, volDef->_solidID );
+        }
       }
     }
 
@@ -4887,6 +4980,8 @@ namespace
   //================================================================================
   /*!
    * \brief Return true if the element is in a hole
+   * \remark consider a cell to be in a hole if all links in any direction
+   *          comes OUT of geometry
    */
   bool Hexahedron::isInHole() const
   {
@@ -5028,6 +5123,159 @@ namespace
 
     return volume > initVolume / _grid->_sizeThreshold;
   }
+
+  //================================================================================
+  /*!
+   * \brief Check that all faces in polyhedron are connected so a unique volume is defined.
+   *        We test that it is possible to go from any node to all nodes in the polyhedron.
+   *        The set of nodes that can be visit within then defines a unique element.
+   *        In case more than one polyhedron is detected. The function return the set of quantities and nodes defining separates elements.
+   *        Reference to issue #bos[38521][EDF] Generate polyhedron with separate volume.
+   */
+  int Hexahedron::checkPolyhedronValidity( _volumeDef* volDef, std::vector<std::vector<int>>& splitQuantities, 
+                                           std::vector<std::vector<const SMDS_MeshNode*>>& splitNodes )
+  {  
+    int mySet = 1;
+    std::map<int,int> numberOfSets; // define set id with the number of faces associated!
+    if ( !volDef->_quantities.empty() )
+    {
+      auto connectivity = volDef->_quantities;
+      int accum = 0;
+      std::vector<bool> allFaces( connectivity.size(), false );
+      std::set<int> elementSet;
+      allFaces[ 0 ] = true; // the first node below to the first face
+      size_t connectedFaces = 1;
+      // Start filling the set with the nodes of the first face
+      splitQuantities.push_back( { connectivity[ 0 ] } );
+      splitNodes.push_back( { volDef->_nodes[ 0 ].Node() } );
+      elementSet.insert( volDef->_nodes[ 0 ].Node()->GetID() );
+      for (int n = 1; n < connectivity[ 0 ]; n++)
+      {
+        elementSet.insert( volDef->_nodes[ n ].Node()->GetID() );
+        splitNodes.back().push_back( volDef->_nodes[ n ].Node() );
+      }
+      
+      numberOfSets.insert( std::pair<int,int>(mySet,1) );
+      while ( connectedFaces != allFaces.size() )
+      {
+        for (size_t innerId = 1; innerId < connectivity.size(); innerId++)
+        {
+          if ( innerId == 1 )
+            accum = connectivity[ 0 ];
+
+          if ( !allFaces[ innerId ] )
+          {
+            int faceCounter = 0;
+            for (int n = 0; n < connectivity[ innerId ]; n++)
+            {
+              int nodeId = volDef->_nodes[ accum + n ].Node()->GetID();
+              if ( elementSet.count( nodeId ) != 0 ) 
+                faceCounter++;
+            }
+            if ( faceCounter >= 2 ) // found coincidences nodes
+            {
+              for (int n = 0; n < connectivity[ innerId ]; n++)
+              {
+                int nodeId = volDef->_nodes[ accum + n ].Node()->GetID();
+                // insert new nodes so other faces can be identified as belowing to the element
+                splitNodes.back().push_back( volDef->_nodes[ accum + n ].Node() );
+                elementSet.insert( nodeId );
+              }
+              allFaces[ innerId ] = true;
+              splitQuantities.back().push_back( connectivity[ innerId ] );
+              numberOfSets[ mySet ]++;
+              connectedFaces++;
+              innerId = 0; // to restart searching!
+            }
+          }
+          accum += connectivity[ innerId ];
+        }
+
+        if ( connectedFaces != allFaces.size() )
+        {
+          // empty the set, and fill it with nodes of a unvisited face!
+          elementSet.clear();
+          accum = connectivity[ 0 ];
+          for (size_t faceId = 1; faceId < connectivity.size(); faceId++)
+          {
+            if ( !allFaces[ faceId ] )
+            {
+              splitNodes.push_back( { volDef->_nodes[ accum ].Node() } );
+              elementSet.insert( volDef->_nodes[ accum ].Node()->GetID() );
+              for (int n = 1; n < connectivity[ faceId ]; n++)
+              {
+                elementSet.insert( volDef->_nodes[ accum + n ].Node()->GetID() );
+                splitNodes.back().push_back( volDef->_nodes[ accum + n ].Node() );
+              }
+
+              splitQuantities.push_back( { connectivity[ faceId ] } );
+              allFaces[ faceId ] = true;
+              connectedFaces++;
+              break;
+            }
+            accum += connectivity[ faceId ];
+          }
+          mySet++;
+          numberOfSets.insert( std::pair<int,int>(mySet,1) );
+        }
+      }
+
+      if ( numberOfSets.size() > 1 )
+      {
+        bool allMoreThan2Faces = true;
+        for( auto k : numberOfSets )
+        {
+          if ( k.second <= 2 )
+            allMoreThan2Faces &= false;
+        }
+        
+        if ( allMoreThan2Faces )
+        {        
+          // The separate objects are suspect to be closed
+          return numberOfSets.size();        
+        }
+        else
+        {
+          // Have to index the last face nodes to the final set
+          // contrary case return as it were a valid polyhedron for backward compatibility
+          return 1;  
+        }
+      }
+    }
+    return numberOfSets.size();
+  }
+
+  
+  //================================================================================
+  /*!
+   * \brief add original or separated polyhedrons to the mesh
+   */
+  const SMDS_MeshElement* Hexahedron::addPolyhedronToMesh( _volumeDef* volDef,  SMESH_MesherHelper& helper, const std::vector<const SMDS_MeshNode*>& nodes, 
+                                                            const std::vector<int>& quantities )
+  {
+    const SMDS_MeshElement* v = helper.AddPolyhedralVolume( nodes, quantities );
+
+    volDef->_size = SMDS_VolumeTool( v ).GetSize();
+    if ( volDef->_size < 0 ) // invalid polyhedron
+    {
+      if ( ! SMESH_MeshEditor( helper.GetMesh() ).Reorient( v ) || // try to fix
+          SMDS_VolumeTool( v ).GetSize() < 0 )
+      {
+        helper.GetMeshDS()->RemoveFreeElement( v, /*sm=*/nullptr, /*fromGroups=*/false );
+        v = nullptr;
+        //_hasTooSmall = true;
+
+        if (SALOME::VerbosityActivated())
+        {
+          std::cout << "Remove INVALID polyhedron, _cellID = " << _cellID
+                    << " ijk = ( " << _i << " " << _j << " " << _k << " ) "
+                    << " solid " << volDef->_solidID << std::endl;
+        }
+      }
+    }
+    return v;
+  }
+
   //================================================================================
   /*!
    * \brief Tries to create a hexahedron
@@ -5253,14 +5501,14 @@ namespace
    */
   bool Hexahedron::debugDumpLink( Hexahedron::_Link* link )
   {
-#ifdef _DEBUG_
-    gp_Pnt p1 = link->_nodes[0]->Point(), p2 = link->_nodes[1]->Point();
-    cout << "BUG: not shared link. IKJ = ( "<< _i << " " << _j << " " << _k << " )" << endl
-         << "n1 (" << p1.X() << ", "<< p1.Y() << ", "<< p1.Z() << " )" << endl
-         << "n2 (" << p2.X() << ", "<< p2.Y() << ", "<< p2.Z() << " )" << endl;
-#else
-    (void)link; // unused in release mode
-#endif
+    if (SALOME::VerbosityActivated())
+    {
+      gp_Pnt p1 = link->_nodes[0]->Point(), p2 = link->_nodes[1]->Point();
+      cout << "BUG: not shared link. IKJ = ( "<< _i << " " << _j << " " << _k << " )" << endl
+          << "n1 (" << p1.X() << ", "<< p1.Y() << ", "<< p1.Z() << " )" << endl
+          << "n2 (" << p2.X() << ", "<< p2.Y() << ", "<< p2.Z() << " )" << endl;
+    }
+
     return false;
   }
   //================================================================================
@@ -5484,25 +5732,24 @@ namespace
     SMESH_MeshEditor::ElemFeatures face( SMDSAbs_Face );
     SMESHDS_Mesh* meshDS = helper.GetMeshDS();
 
+    bool isQuantaSet =  _grid->_toUseQuanta;    
     // check if there are internal or shared FACEs
     bool hasInternal = ( !_grid->_geometry.IsOneSolid() ||
-                         _grid->_geometry._soleSolid.HasInternalFaces() );
+                         _grid->_geometry._soleSolid.HasInternalFaces() );   
 
     for ( size_t iV = 0; iV < boundaryVolumes.size(); ++iV )
     {
       if ( !vTool.Set( boundaryVolumes[ iV ]))
         continue;
-
       TGeomID solidID = vTool.Element()->GetShapeID();
       Solid *   solid = _grid->GetOneOfSolids( solidID );
 
       // find boundary facets
-
       bndFacets.clear();
       for ( int iF = 0, n = vTool.NbFaces(); iF < n; iF++ )
       {
         const SMDS_MeshElement* otherVol;
-        bool isBoundary = vTool.IsFreeFace( iF, &otherVol );
+        bool isBoundary = isQuantaSet ? vTool.IsFreeFaceCheckAllNodes( iF, &otherVol ) : vTool.IsFreeFace( iF, &otherVol );
         if ( isBoundary )
         {
           bndFacets.push_back( iF );
@@ -5524,7 +5771,6 @@ namespace
         continue;
 
       // create faces
-
       if ( !vTool.IsPoly() )
         vTool.SetExternalNormal();
       for ( size_t i = 0; i < bndFacets.size(); ++i ) // loop on boundary facets
@@ -5552,7 +5798,7 @@ namespace
             if ( nn[ iN ]->GetPosition()->GetDim() == 2 )
               faceID = nn[ iN ]->GetShapeID();
           }
-          if ( faceID == 0 )
+          if ( faceID == 0 && !isQuantaSet /*if quanta is set boundary nodes at boundary does not coincide with any geometrical face */ )
             faceID = findCommonFace( face.myNodes, helper.GetMesh() );
 
           bool toCheckFace = faceID && (( !isBoundary ) ||
@@ -5569,7 +5815,7 @@ namespace
             // if ( !faceID && !isBoundary )
             //   continue;
           }
-          if ( !faceID && !isBoundary )
+          if ( !faceID && !isBoundary && !isQuantaSet )
             continue;
         }
 
@@ -5768,6 +6014,14 @@ namespace
           for ( size_t iN = 0; iN < volDef->_nodes.size(); ++iN )
             volDef->_nodes[iN].Node()->setIsMarked( false );
       }
+      if ( volDef->_brotherVolume.size() > 0 )
+      {
+        for (auto _bro : volDef->_brotherVolume )
+        {
+          _bro->setIsMarked( true );
+          boundaryElems.push_back( _bro );
+        }        
+      }
     }
   }
 
@@ -6356,6 +6610,29 @@ namespace
 bool StdMeshers_Cartesian_3D::Compute(SMESH_Mesh &         theMesh,
                                       const TopoDS_Shape & theShape)
 {
+  if ( _hypViscousLayers )
+  {
+    const StdMeshers_ViscousLayers* hypViscousLayers = _hypViscousLayers;
+    _hypViscousLayers = nullptr;
+
+    StdMeshers_Cartesian_VL::ViscousBuilder builder( hypViscousLayers, theMesh, theShape );
+
+    std::string error;
+    TopoDS_Shape offsetShape = builder.MakeOffsetShape( theShape, theMesh, error );
+    if ( offsetShape.IsNull() )
+      throw SALOME_Exception( error );
+
+    SMESH_Mesh* offsetMesh = new TmpMesh(); 
+    offsetMesh->ShapeToMesh( offsetShape );
+    offsetMesh->GetSubMesh( offsetShape )->DependsOn();
+
+    this->_isComputeOffset = true;
+    if ( ! this->Compute( *offsetMesh, offsetShape ))
+      return false;
+
+    return builder.MakeViscousLayers( *offsetMesh, theMesh, theShape );
+  }
+
   // The algorithm generates the mesh in following steps:
 
   // 1) Intersection of grid lines with the geometry boundary.
@@ -6383,6 +6660,13 @@ bool StdMeshers_Cartesian_3D::Compute(SMESH_Mesh &         theMesh,
     grid._toConsiderInternalFaces        = _hyp->GetToConsiderInternalFaces();
     grid._toUseThresholdForInternalFaces = _hyp->GetToUseThresholdForInternalFaces();
     grid._sizeThreshold                  = _hyp->GetSizeThreshold();
+    grid._toUseQuanta                    = _hyp->GetToUseQuanta();
+    grid._quanta                         = _hyp->GetQuanta();
+    if ( _isComputeOffset )
+    {
+      grid._toAddEdges = true;
+      grid._toCreateFaces = true;
+    }
     grid.InitGeometry( theShape );
 
     vector< TopoDS_Shape > faceVec;
@@ -6516,6 +6800,15 @@ bool StdMeshers_Cartesian_3D::Compute(SMESH_Mesh &         theMesh,
           grid._nodes[i]->setIsMarked( true );
         }
 
+      for ( size_t i = 0; i < grid._allBorderNodes.size(); ++i )
+        if ( grid._allBorderNodes[i] &&
+             !grid._allBorderNodes[i]->IsNull() &&
+             grid._allBorderNodes[i]->NbInverseElements() == 0 )
+        {
+          nodesToRemove.push_back( grid._allBorderNodes[i] );
+          grid._allBorderNodes[i]->setIsMarked( true );
+        }
+
       // do remove
       for ( size_t i = 0; i < nodesToRemove.size(); ++i )
         meshDS->RemoveFreeNode( nodesToRemove[i], /*smD=*/0, /*fromGroups=*/false );
index e28ab489e4d419626d7794a730db673d4b67258a..7110b2c05e7fd51097b5398c82cc601523910a4f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
  * Issue 0021336
  * Issue #16523: Treatment of internal faces
  * Issue #17237: Body fitting on sub-mesh
+ * Issue #17015: Body fitting with Viscous Layers
  */
 class StdMeshers_CartesianParameters3D;
+class StdMeshers_ViscousLayers;
 
 class STDMESHERS_EXPORT StdMeshers_Cartesian_3D : public SMESH_3D_Algo
 {
@@ -61,6 +63,8 @@ public:
   void setSubmeshesComputed(SMESH_Mesh& aMesh, const TopoDS_Shape& theShape );
 
   const StdMeshers_CartesianParameters3D* _hyp;
+  const StdMeshers_ViscousLayers*         _hypViscousLayers;
+  bool                                    _isComputeOffset;
 };
 
 #endif
diff --git a/src/StdMeshers/StdMeshers_Cartesian_VL.cxx b/src/StdMeshers/StdMeshers_Cartesian_VL.cxx
new file mode 100644 (file)
index 0000000..bd02b9d
--- /dev/null
@@ -0,0 +1,1313 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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      : StdMeshers_Cartesian_VL.cxx
+// Created   : Tue May 24 13:03:09 2022
+// Author    : Edward AGAPOV (eap)
+
+#include "StdMeshers_Cartesian_VL.hxx"
+#include "StdMeshers_ViscousLayers.hxx"
+
+#include <SMDS_MeshGroup.hxx>
+#include <SMESHDS_Mesh.hxx>
+#include <SMESHDS_SubMesh.hxx>
+#include <SMESH_Algo.hxx>
+#include <SMESH_MeshAlgos.hxx>
+#include <SMESH_Mesh.hxx>
+#include <SMESH_MeshEditor.hxx>
+#include <SMESH_MesherHelper.hxx>
+#include <SMESH_TypeDefs.hxx>
+#include <SMESH_subMesh.hxx>
+
+#include <BRepAdaptor_Curve.hxx>
+#include <BRep_Builder.hxx>
+#include <BRepBuilderAPI_MakeFace.hxx>
+#include <BRepGProp.hxx>
+#include <BRepTopAdaptor_FClass2d.hxx>
+#include <BRep_Tool.hxx>
+#include <GProp_GProps.hxx>
+#include <ShapeAnalysis_Curve.hxx>
+#include <ShapeAnalysis_Surface.hxx>
+#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
+#include <TopoDS.hxx>
+
+using namespace StdMeshers_Cartesian_VL;
+
+namespace
+{
+  typedef int                     TGeomID; // IDs of sub-shapes
+
+  /*!
+   * \brief Temporary mesh
+   */
+  struct TmpMesh: public SMESH_Mesh
+  {
+    TmpMesh() {
+      _isShapeToMesh = (_id = 0);
+      _meshDS  = new SMESHDS_Mesh( _id, true );
+    }
+  };
+  // --------------------------------------------------------------------------
+  /*!
+   * \brief Edge of viscous layers; goes from a grid node by normal to boundary
+   */
+  struct VLEdge
+  {
+    std::vector< SMESH_NodeXYZ > _nodes;
+    double                       _uv[2]; // position of TgtNode() on geometry
+    double                       _length; 
+
+    const SMDS_MeshNode* TgtNode() const { return _nodes.back().Node(); }
+  };
+  typedef NCollection_DataMap< const SMDS_MeshNode*, VLEdge* > TNode2VLEdge;
+  // --------------------------------------------------------------------------
+  /*!
+   * \brief VLEdge's of one shape
+   */
+  struct VLEdgesOnShape
+  {
+    std::vector< VLEdge > _edges;
+    TopoDS_Shape          _initShape;
+    TopoDS_Shape          _offsetShape;
+    int                   _initShapeID;
+    bool                  _hasVL;
+    bool                  _toCheckCoinc; // to check if nodes on shape boundary coincide
+  };
+
+  //================================================================================
+  /*!
+   * \brief Project a point on offset FACE to EDGEs of an initial FACE
+   *  \param [in] offP - point to project
+   *  \param [in] initFace - FACE to project on
+   *  \return gp_Pnt - projection point
+   */
+  //================================================================================
+
+  gp_Pnt projectToWire( const gp_Pnt&      offP,
+                        const TopoDS_Face& initFace,
+                        gp_Pnt2d &         uv )
+  {
+    double   minDist = Precision::Infinite();
+    const double tol = Precision::Confusion();
+    gp_Pnt              proj, projction;
+    Standard_Real       param;
+    ShapeAnalysis_Curve projector;
+
+    for ( TopExp_Explorer eExp( initFace, TopAbs_EDGE ); eExp.More(); eExp.Next() )
+    {
+      BRepAdaptor_Curve initCurve( TopoDS::Edge( eExp.Current() ));
+      //const double f = initCurve.FirstParameter(), l = initCurve.LastParameter();
+      double dist = projector.Project( initCurve, offP, tol, proj, param, /*adjustToEnds=*/false );
+      if ( dist < minDist )
+      {
+        projction = proj;
+        minDist = dist;
+      }
+    }
+    uv.SetCoord(0.,0.); // !!!!!!!
+    return projction;
+  }
+
+  //================================================================================
+  /*!
+   * \brief Project nodes from offset FACE to initial FACE
+   *  \param [inout] theEOS - VL edges on a geom FACE
+   *  \param [inout] theOffsetMDS - offset mesh to fill in
+   */
+  //================================================================================
+
+  void projectToFace( VLEdgesOnShape & theEOS,
+                      SMESHDS_Mesh*    theOffsetMDS,
+                      TNode2VLEdge &   theN2E )
+  {
+    SMESHDS_SubMesh* sm = theOffsetMDS->MeshElements( theEOS._offsetShape );
+    if ( !sm || sm->NbElements() == 0 || sm->NbNodes() == 0 )
+      return;
+
+    theEOS._edges.resize( sm->NbNodes() );
+
+    const TopoDS_Face& initFace = TopoDS::Face( theEOS._initShape );
+    ShapeAnalysis_Surface projector( BRep_Tool::Surface( initFace ));
+    const double clsfTol = 1e2 * BRep_Tool::MaxTolerance( initFace, TopAbs_VERTEX );
+    BRepTopAdaptor_FClass2d classifier( initFace, clsfTol );
+
+    const double        tol = Precision::Confusion();
+    //const double f = initCurve.FirstParameter(), l = initCurve.LastParameter();
+    gp_Pnt              proj;
+
+    int iN = 0;
+    for ( SMDS_NodeIteratorPtr nIt = sm->GetNodes(); nIt->more(); ++iN )
+    {
+      SMESH_NodeXYZ offP = nIt->next();
+      gp_Pnt2d uv = projector.ValueOfUV( offP, tol );
+      TopAbs_State st = classifier.Perform( uv );
+      if ( st == TopAbs_IN || st == TopAbs_ON )
+      {
+        proj = projector.Value( uv );
+      }
+      else
+      {
+        proj = projectToWire( offP, initFace, uv );
+      }
+      if ( st == TopAbs_ON || st == TopAbs_OUT )
+        theEOS._toCheckCoinc = true;
+
+      VLEdge & vlEdge = theEOS._edges[ iN ];
+      vlEdge._nodes.push_back( offP.Node() );
+      vlEdge._nodes.push_back( theOffsetMDS->AddNode( proj.X(), proj.Y(), proj.Z() ));
+      vlEdge._uv[0] = uv.X();
+      vlEdge._uv[1] = uv.Y();
+      //vlEdge._length = proj.Distance( offP );
+
+      theN2E.Bind( offP.Node(), &vlEdge );
+    }
+    return;
+    
+  }
+
+  //================================================================================
+  /*!
+   * \brief Project nodes from offset EDGE to initial EDGE
+   *  \param [inout] theEOS - VL edges on a geom EDGE
+   *  \param [inout] theOffsetMDS - offset mesh to add new nodes to
+   */
+  //================================================================================
+
+  void projectToEdge( VLEdgesOnShape & theEOS,
+                      SMESHDS_Mesh*    theOffsetMDS,
+                      TNode2VLEdge &   theN2E,
+                      bool createVertex )
+  {
+    SMESHDS_SubMesh* sm = theOffsetMDS->MeshElements( theEOS._offsetShape );
+    if ( !sm || sm->NbElements() == 0 )
+      return;
+
+    int addVertexNode = createVertex ? 1 : 0;
+    theEOS._edges.resize( sm->NbNodes() + addVertexNode ); // +1 to set the vertex 
+    
+    ShapeAnalysis_Curve projector;
+    BRepAdaptor_Curve   initCurve( TopoDS::Edge( theEOS._initShape ));
+    const double        tol = Precision::Confusion();
+    const double f = initCurve.FirstParameter(), l = initCurve.LastParameter();
+    gp_Pnt              proj;
+    Standard_Real       param;
+
+    int iN = 0;
+    for ( SMDS_NodeIteratorPtr nIt = sm->GetNodes(); nIt->more(); ++iN )
+    {
+      SMESH_NodeXYZ offP = nIt->next();
+      double dist = projector.Project( initCurve, offP, tol, proj, param, /*adjustToEnds=*/false );
+      bool paramOK = ( f < param && param < l );
+      if ( !paramOK )
+      {
+        if ( param < f )
+          param = f;
+        else if ( param > l )
+          param = l;
+        theEOS._toCheckCoinc = true;
+      }
+      proj = initCurve.Value( param );
+
+      VLEdge & vlEdge = theEOS._edges[ iN ];
+      vlEdge._nodes.push_back( offP.Node() );
+      vlEdge._nodes.push_back( theOffsetMDS->AddNode( proj.X(), proj.Y(), proj.Z() ));
+      vlEdge._uv[0] = param;
+      vlEdge._length = paramOK ? dist : proj.Distance( offP );
+
+      theN2E.Bind( offP.Node(), &vlEdge );
+    }
+
+    if ( createVertex )
+    {
+      // It is possible to define the vertex projections from the existing edges
+      // EOS._offsetShape the edge generated from the original edge
+      // Get the first vertex of both edges to define the connecting edges
+      auto offsetEdge = TopoDS::Edge( theEOS._offsetShape );
+      auto initEdge   = TopoDS::Edge( theEOS._initShape );
+      TopoDS_Vertex offsetVertex;
+      TopoDS_Vertex initVertex;
+      
+      if ( offsetEdge.Orientation() == TopAbs_FORWARD )
+      {
+        offsetVertex  = TopExp::FirstVertex ( offsetEdge );
+        initVertex    = TopExp::FirstVertex ( initEdge ); 
+      }
+      else
+      {
+        offsetVertex  = TopExp::LastVertex ( offsetEdge );
+        initVertex    = TopExp::LastVertex ( initEdge ); 
+      }
+
+      VLEdge & vlEdge = theEOS._edges[ iN ];
+      vlEdge._nodes.resize( 2 );
+      vlEdge._nodes[0] = SMESH_Algo::VertexNode( offsetVertex, theOffsetMDS );
+      
+      gp_Pnt offP = BRep_Tool::Pnt( initVertex );
+      
+      vlEdge._nodes[1] = theOffsetMDS->AddNode( offP.X(), offP.Y(), offP.Z() );
+      theN2E.Bind( vlEdge._nodes[0].Node(), &vlEdge );
+    }
+    return;
+  }  
+
+  //================================================================================
+  /*!
+   * \brief Compute heights of viscous layers and finds FACEs with VL
+   *  \param [in] hyp - viscous layers hypothesis
+   *  \param [in] mesh - the main mesh
+   *  \param [in] shape - the main shape
+   *  \param [out] vlH - heights of viscous layers to compute
+   *  \param [out] shapesWVL - IDs of shapes with VL
+   *  \return bool - isOK
+   */
+  //================================================================================
+
+  void computeVLHeight( const StdMeshers_ViscousLayers* hyp,
+                        std::vector< double > &         vlH )
+  {
+    const double  T = hyp->GetTotalThickness();
+    const double  f = hyp->GetStretchFactor();
+    const int     N = hyp->GetNumberLayers();
+    const double h0 = hyp->Get1stLayerThickness( T, f, N );
+
+    vlH.reserve( hyp->GetNumberLayers() );
+    vlH.push_back( h0 );
+    for ( double h = h0 * f; (int)vlH.size() < N-1; h *= f )
+      vlH.push_back( h + vlH.back() );
+    vlH.push_back( T );
+  }
+
+  //================================================================================
+  /*!
+   * \brief Create intermediate nodes on VLEdge
+   *  \param [inout] vlEdge - VLEdge to divide
+   *  \param [in] vlH - thicknesses of layers
+   *  \param [inout] mesh - the mesh no fill in
+   */
+  //================================================================================
+
+  void divideVLEdge( VLEdge*                      vlEdge,
+                     const std::vector< double >& vlH,
+                     SMESHDS_Mesh*                mesh )
+  {
+    SMESH_NodeXYZ lastNode = vlEdge->_nodes.back();
+    SMESH_NodeXYZ frstNode = vlEdge->_nodes[0];
+    gp_XYZ dir = frstNode - lastNode;
+
+    vlEdge->_nodes.resize( vlH.size() + 1 );
+
+    for ( size_t i = 1; i < vlH.size(); ++i )
+    {
+      double r = vlH[ i-1 ] / vlH.back();
+      gp_XYZ p = lastNode + dir * r;
+      vlEdge->_nodes[ vlH.size() - i ] = mesh->AddNode( p.X(), p.Y(), p.Z() );
+    }
+    vlEdge->_nodes.back() = lastNode;
+  }
+
+  //================================================================================
+  /*!
+   * \brief Create a polyhedron from nodes of VLEdge's
+   *  \param [in] edgesVec - the VLEdge's
+   *  \param [in] vNodes - node buffer
+   *  \param [in] editor - editor of offset mesh
+   */
+  //================================================================================
+
+  bool makePolyhedron( const std::vector< VLEdge*> &         edgesVec,
+                       std::vector< const SMDS_MeshNode* > & vNodes,
+                       SMESH_MeshEditor&                     editor,
+                       SMESH_MeshEditor::ElemFeatures        elemType)
+  {
+    elemType.SetPoly( true );
+    elemType.myPolyhedQuantities.clear();
+    elemType.myNodes.clear();
+
+    // add facets of walls
+    size_t nbBaseNodes = edgesVec.size();
+    for ( size_t iN = 0; iN < nbBaseNodes; ++iN )
+    {
+      VLEdge* e0 = edgesVec[ iN ];
+      VLEdge* e1 = edgesVec[( iN + 1 ) % nbBaseNodes ];
+      size_t nbN0 = e0->_nodes.size();
+      size_t nbN1 = e1->_nodes.size();
+      if ( nbN0 == nbN1 )
+      {
+        for ( size_t i = 1; i < nbN0; ++i )
+        {
+          elemType.myNodes.push_back( e1->_nodes[ i - 1 ].Node());
+          elemType.myNodes.push_back( e1->_nodes[ i     ].Node());
+          elemType.myNodes.push_back( e0->_nodes[ i     ].Node());
+          elemType.myNodes.push_back( e0->_nodes[ i - 1 ].Node());
+          elemType.myPolyhedQuantities.push_back( 4 );
+        }
+      }
+      else
+      {
+        for ( size_t i = 0; i < nbN1; ++i )
+          elemType.myNodes.push_back( e1->_nodes[ i ].Node() );
+        for ( size_t i = 0; i < nbN0; ++i )
+          elemType.myNodes.push_back( e0->_nodes[ nbN0 - 1 - i ].Node() );
+        elemType.myPolyhedQuantities.push_back( nbN0 + nbN1 );
+      }
+    }
+
+    // add facets of top
+    vNodes.clear();
+    for ( size_t iN = 0; iN < nbBaseNodes; ++iN )
+    {
+      VLEdge* e0 = edgesVec[ iN ];
+      elemType.myNodes.push_back( e0->_nodes.back().Node() );
+      vNodes.push_back( e0->_nodes[ 0 ].Node());
+    }
+    elemType.myPolyhedQuantities.push_back( nbBaseNodes );
+
+    // add facets of bottom
+    elemType.myNodes.insert( elemType.myNodes.end(), vNodes.rbegin(), vNodes.rend() );
+    elemType.myPolyhedQuantities.push_back( nbBaseNodes );
+
+    const SMDS_MeshElement* vol = editor.AddElement( elemType.myNodes, elemType );
+    vol->setIsMarked( true ); // to add to group
+
+    return vol;
+  }
+
+  //================================================================================
+  /*!
+   * \brief Transform prism nodal connectivity to that of polyhedron
+   *  \param [inout] nodes - nodes of prism, return nodes of polyhedron
+   *  \param [inout] elemType - return quantities of polyhedron,
+   */
+  //================================================================================
+
+  void prism2polyhedron( std::vector< const SMDS_MeshNode* > & nodes,
+                         SMESH_MeshEditor::ElemFeatures &      elemType )
+  {
+    elemType.myPolyhedQuantities.clear();
+    elemType.myNodes.clear();
+
+    // walls
+    size_t nbBaseNodes = nodes.size() / 2;
+    for ( size_t i = 0; i < nbBaseNodes; ++i )
+    {
+      int iNext = ( i + 1 ) % nbBaseNodes;
+      elemType.myNodes.push_back( nodes[ iNext ]);
+      elemType.myNodes.push_back( nodes[ i ]);
+      elemType.myNodes.push_back( nodes[ i + nbBaseNodes ]);
+      elemType.myNodes.push_back( nodes[ iNext + nbBaseNodes ]);
+      elemType.myPolyhedQuantities.push_back( 4 );
+    }
+
+    // base
+    elemType.myNodes.insert( elemType.myNodes.end(), nodes.begin(), nodes.begin() + nbBaseNodes );
+    elemType.myPolyhedQuantities.push_back( nbBaseNodes );
+
+    // top
+    elemType.myNodes.insert( elemType.myNodes.end(), nodes.rbegin(), nodes.rbegin() + nbBaseNodes );
+    elemType.myPolyhedQuantities.push_back( nbBaseNodes );
+
+    nodes.swap( elemType.myNodes );
+  }
+
+  //================================================================================
+  /*!
+   * \brief Create prisms from faces
+   *  \param [in] theEOS - shape to treat
+   *  \param [inout] theMesh - offset mesh to fill in
+   */
+  //================================================================================
+
+  bool makePrisms( VLEdgesOnShape & theEOS,
+                   SMESH_Mesh*      theMesh,
+                   TNode2VLEdge   & theN2E )
+  {
+    SMESHDS_SubMesh* sm = theMesh->GetMeshDS()->MeshElements( theEOS._offsetShape );
+    if ( !sm || sm->NbElements() == 0 )
+      return true;
+
+    SMESH_MeshEditor editor( theMesh );
+    SMESH_MeshEditor::ElemFeatures volumElem( SMDSAbs_Volume );
+
+    std::vector< const SMDS_MeshNode* > vNodes;
+    std::vector< VLEdge*> edgesVec;
+    for ( SMDS_ElemIteratorPtr eIt = sm->GetElements(); eIt->more(); )
+    {
+      const SMDS_MeshElement* face = eIt->next();
+      if ( face->GetType() != SMDSAbs_Face )
+        continue;
+
+      const int nbNodes = face->NbCornerNodes();
+      edgesVec.resize( nbNodes );
+      vNodes.resize( nbNodes * 2 );
+      int maxNbLayer = 0, minNbLayer = IntegerLast();
+      for ( int i = 0; i < nbNodes; ++i )
+      {
+        const SMDS_MeshNode* n = face->GetNode( i );
+        if ( !theN2E.IsBound( n ))
+          return false;
+        edgesVec[ i ] = theN2E( n );
+        maxNbLayer = Max( maxNbLayer, edgesVec[i]->_nodes.size() - 1 );
+        minNbLayer = Min( minNbLayer, edgesVec[i]->_nodes.size() - 1 );
+      }
+      if ( maxNbLayer == minNbLayer )
+      {
+        size_t nbPrism = edgesVec[0]->_nodes.size() - 1;
+        for ( size_t iP = 0; iP < nbPrism; ++iP )
+        {
+          vNodes.resize( nbNodes * 2 );
+          for ( int i = 0; i < nbNodes; ++i )
+          {
+            vNodes[ i           ] = edgesVec[ i ]->_nodes[ iP + 1 ].Node();
+            vNodes[ i + nbNodes ] = edgesVec[ i ]->_nodes[ iP ].Node();
+          }
+          volumElem.SetPoly( nbNodes > 4 );
+          if ( volumElem.myIsPoly )
+            prism2polyhedron( vNodes, volumElem );
+
+          if ( const SMDS_MeshElement* vol = editor.AddElement( vNodes, volumElem ))
+            vol->setIsMarked( true ); // to add to group          
+        }
+      }
+      else // at inlet/outlet
+        makePolyhedron( edgesVec, vNodes, editor, volumElem );
+
+      editor.ClearLastCreated();
+
+      // move the face to the top of prisms, on mesh boundary
+      //theMesh->GetMeshDS()->ChangeElementNodes( face, fNodes.data(), nbNodes );
+    }
+    return true;
+  }
+
+  //================================================================================
+  /*!
+   * \brief Create faces from edges
+   *  \param [inout] theEOS - shape to treat
+   *  \param [inout] theMesh - offset mesh to fill in
+   *  \param [inout] theN2E - map of node to VLEdge
+   *  \param [inout] theFaceID - ID of WOVL FACE for new faces to set on
+   *  \param [in]    isMainShape2D - used to identify the geometry where the new elements are included
+   *  \return bool - ok
+   */
+  //================================================================================
+
+  bool makeFaces( VLEdgesOnShape & theEOS,
+                  SMESH_Mesh*      theMesh,
+                  TNode2VLEdge   & theN2E,
+                  const TGeomID    theFaceID,
+                  bool isMainShape2D = false )
+  {
+    SMESHDS_SubMesh* sm = theMesh->GetMeshDS()->MeshElements( theEOS._offsetShape );
+    if ( !sm || sm->NbElements() == 0 )
+      return true;
+
+    SMESH_MeshEditor editor( theMesh );
+    SMESH_MeshEditor::ElemFeatures elem2D( SMDSAbs_Face );
+
+    std::vector< const SMDS_MeshNode* > fNodes( 4 );
+    std::vector<const SMDS_MeshElement *> foundVolum;
+    std::vector< VLEdge*> edgesVec;
+    TIDSortedElemSet  refSetFace;
+    
+    // Check orientation of face and re
+    gp_XYZ refNormalVector(0.0,0.0,0.0);
+    if ( isMainShape2D )
+    {
+      SMESHDS_Mesh* offsetMDS = theMesh->GetMeshDS();
+      for ( SMDS_ElemIteratorPtr eIt = offsetMDS->elementsIterator(); eIt->more(); )
+      {
+        const SMDS_MeshElement* refFace = eIt->next(); // define the ref
+        if ( refFace->GetType() == SMDSAbs_Face )
+        {
+          SMESH_MeshAlgos::FaceNormal( refFace, refNormalVector, /*normalized=*/true );
+          break;
+        }
+      }
+      if ( refNormalVector.X() == 0.0 && refNormalVector.Y() == 0.0 && refNormalVector.Z() == 0.0 )
+        throw SALOME_Exception("No 2D element found in the mesh!\n");
+
+    }
+    
+    for ( SMDS_ElemIteratorPtr eIt = sm->GetElements(); eIt->more(); )
+    {
+      const SMDS_MeshElement* edge = eIt->next();
+      if ( edge->GetType() != SMDSAbs_Edge )
+        continue;
+
+      const int nbNodes = 2; //edge->NbCornerNodes();
+      edgesVec.resize( nbNodes );
+      fNodes.resize( nbNodes * 2 );
+      for ( int i = 0; i < nbNodes; ++i )
+      {
+        const SMDS_MeshNode* n = edge->GetNode( i );
+        if ( !theN2E.IsBound( n ))
+          return false;
+        edgesVec[ i ] = theN2E( n );
+      }
+      size_t nbFaces = edgesVec[0]->_nodes.size() - 1;
+
+      for ( size_t iF = 0; iF < nbFaces; ++iF )
+      {
+        fNodes[ 0 ] = edgesVec[ 0 ]->_nodes[ iF ].Node();
+        fNodes[ 1 ] = edgesVec[ 1 ]->_nodes[ iF ].Node();
+        fNodes[ 2 ] = edgesVec[ 1 ]->_nodes[ iF + 1 ].Node();
+        fNodes[ 3 ] = edgesVec[ 0 ]->_nodes[ iF + 1 ].Node();
+
+        if ( const SMDS_MeshElement* face = editor.AddElement( fNodes, elem2D ))
+        {
+          theMesh->GetMeshDS()->SetMeshElementOnShape( face, theFaceID );
+
+          if ( SMDS_Mesh::GetElementsByNodes( fNodes, foundVolum, SMDSAbs_Volume ))
+          {
+            TIDSortedElemSet faces = { face }, volumes = { foundVolum[0] };
+            editor.Reorient2DBy3D( faces, volumes, /*outside=*/true );
+          }
+          else if ( isMainShape2D )
+          {
+            gp_XYZ elementNormal;
+            SMESH_MeshAlgos::FaceNormal( face, elementNormal, /*normalized=*/true );
+            if ( elementNormal * refNormalVector < 0.0 /* diff orientation from the ref element */)
+              editor.Reorient( face );
+          }
+        }
+      }
+      editor.ClearLastCreated();
+
+      // move the face to the top of prisms, on mesh boundary
+      //theMesh->GetMeshDS()->ChangeElementNodes( face, fNodes.data(), nbNodes );
+    }    
+    return true;
+  }
+
+  //================================================================================
+  /*!
+   * \brief Append the offset mesh to the initial one
+   */
+  //================================================================================
+
+  void copyMesh( SMESH_Mesh* theFromMesh,
+                 SMESH_Mesh* theToMesh,
+                 int         theSolidID)
+  {
+    SMESHDS_Mesh* offsetMDS = theFromMesh->GetMeshDS();
+    SMESHDS_Mesh*   initMDS = theToMesh->GetMeshDS();
+
+    const smIdType nShift = initMDS->NbNodes();
+
+    for ( SMDS_NodeIteratorPtr nIt = offsetMDS->nodesIterator(); nIt->more(); )
+    {
+      SMESH_NodeXYZ pOff = nIt->next();
+      const SMDS_MeshNode* n = initMDS->AddNodeWithID( pOff.X(), pOff.Y(), pOff.Z(),
+                                                       nShift + pOff.Node()->GetID() );
+      initMDS->SetNodeInVolume( n, theSolidID );
+    }
+
+    SMESH_MeshEditor editor( theToMesh );
+    SMESH_MeshEditor::ElemFeatures elemType;
+    std::vector<smIdType> nIniIDs;
+
+    for ( SMDS_ElemIteratorPtr eIt = offsetMDS->elementsIterator(); eIt->more(); )
+    {
+      const SMDS_MeshElement* offElem = eIt->next();
+      const int nbNodes = offElem->NbNodes();
+      nIniIDs.resize( nbNodes );
+      for ( int i = 0; i < nbNodes; ++i )
+      {
+        const SMDS_MeshNode* offNode = offElem->GetNode( i );
+        nIniIDs[ i ] = offNode->GetID() + nShift;
+      }
+      elemType.Init( offElem, /*basicOnly=*/false );
+      const SMDS_MeshElement* iniElem = editor.AddElement( nIniIDs, elemType );
+      initMDS->SetMeshElementOnShape( iniElem, theSolidID );
+      iniElem->setIsMarked( offElem->isMarked() );
+      editor.ClearLastCreated();
+    }
+    return;
+  }
+
+  //================================================================================
+  /*!
+   * \brief set elements of layers boundary to sub-meshes
+   *  \param [in] theEOS - vlEdges of a sub-shape
+   *  \param [inout] theMesh - the mesh
+   *  \param [in] theN2E - map of node to vlEdge
+   *  \param [in] theNShift - nb of nodes in the mesh before adding the offset mesh
+   */
+  //================================================================================
+
+  void setBnd2Sub( VLEdgesOnShape &     theEOS,
+                   SMESH_Mesh*          theInitMesh,
+                   SMESH_Mesh*          theOffsMesh,
+                   const TNode2VLEdge & theN2E,
+                   const smIdType       theNShift,
+                   TIDSortedNodeSet&    theNodesToCheckCoinc )
+  {
+    SMESHDS_Mesh* offsetMDS = theOffsMesh->GetMeshDS();
+    SMESHDS_Mesh*   initMDS = theInitMesh->GetMeshDS();
+
+    SMESHDS_SubMesh* sm = offsetMDS->MeshElements( theEOS._offsetShape );
+    if ( !sm || ( sm->NbElements() + sm->NbNodes() == 0 ))
+      return;
+
+    for ( SMDS_NodeIteratorPtr nIt = sm->GetNodes(); nIt->more(); )
+    {
+      const SMDS_MeshNode* offNode = nIt->next();
+      VLEdge* vlEd = theN2E( offNode );
+      const SMDS_MeshNode* nOffBnd = vlEd->_nodes.back().Node();
+      const SMDS_MeshNode* nIniBnd = initMDS->FindNode( nOffBnd->GetID() + theNShift );
+      initMDS->UnSetNodeOnShape( nIniBnd );
+
+      switch( theEOS._initShape.ShapeType() ) {
+      case TopAbs_FACE:   initMDS->SetNodeOnFace( nIniBnd, TopoDS::Face( theEOS._initShape ),
+                                                  vlEd->_uv[0], vlEd->_uv[1] );
+        break;
+      case TopAbs_EDGE:   initMDS->SetNodeOnEdge( nIniBnd, TopoDS::Edge( theEOS._initShape ),
+                                                  vlEd->_uv[0]);
+        break;
+      case TopAbs_VERTEX: initMDS->SetNodeOnVertex( nIniBnd, TopoDS::Vertex( theEOS._initShape ));
+        break;
+      default:;
+      }
+    }
+
+    std::vector< const SMDS_MeshNode* > iniNodes, iniNodesBnd;
+    std::vector< VLEdge*> edgesVec;
+    for ( SMDS_ElemIteratorPtr eIt = sm->GetElements(); eIt->more(); )
+    {
+      const SMDS_MeshElement* offElem = eIt->next();
+      if ( offElem->GetType() != SMDSAbs_Face &&
+           offElem->GetType() != SMDSAbs_Edge )
+        continue;
+
+      const int nbNodes = offElem->NbCornerNodes();
+      iniNodes.resize( nbNodes );
+      iniNodesBnd.resize( nbNodes );
+      for ( int i = 0; i < nbNodes; ++i )
+      {
+        const SMDS_MeshNode* nOff = offElem->GetNode( i );
+        const SMDS_MeshNode* nIni = initMDS->FindNode( nOff->GetID() + theNShift );
+        iniNodes[ i ] = nIni;
+        if ( !theN2E.IsBound( nOff ))
+          break;
+        VLEdge* vlEd = theN2E( nOff );
+        const SMDS_MeshNode* nOffBnd = vlEd->_nodes.back().Node();
+        const SMDS_MeshNode* nIniBnd = initMDS->FindNode( nOffBnd->GetID() + theNShift );
+        iniNodesBnd[ i ] = nIniBnd;
+      }
+      if ( const SMDS_MeshElement* iniElem = initMDS->FindElement( iniNodes ))
+      {
+        initMDS->UnSetElementOnShape( iniElem );
+        initMDS->SetMeshElementOnShape( iniElem, theEOS._initShape );
+
+        // move the face to the top of prisms, on init mesh boundary
+        initMDS->ChangeElementNodes( iniElem, iniNodesBnd.data(), nbNodes );
+
+        if ( theEOS._toCheckCoinc )
+          theNodesToCheckCoinc.insert( iniNodesBnd.begin(), iniNodesBnd.end() );
+      }
+    }
+    return;
+  }
+
+  //================================================================================
+  /*!
+   * \brief set elements of WOVL face to sub-meshes
+   *  \param [in] theEOS - vlEdges of a sub-shape
+   *  \param [inout] theMesh - the mesh
+   *  \param [in] theN2E - map of node to vlEdge
+   *  \param [in] theNShift - nb of nodes in the mesh before adding the offset mesh
+   */
+  //================================================================================
+
+  void setBnd2FVWL( VLEdgesOnShape &     theEOS,
+                    SMESH_Mesh*          theInitMesh,
+                    SMESH_Mesh*          theOffsMesh,
+                    //const TNode2VLEdge & theN2E,
+                    const smIdType       theNShift )
+  {
+    SMESHDS_Mesh* offsetMDS = theOffsMesh->GetMeshDS();
+    SMESHDS_Mesh*   initMDS = theInitMesh->GetMeshDS();
+
+    SMESHDS_SubMesh* sm = offsetMDS->MeshElements( theEOS._offsetShape );
+    if ( !sm || ( sm->NbElements() + sm->NbNodes() == 0 ))
+      return;
+
+    for ( SMDS_NodeIteratorPtr nIt = sm->GetNodes(); nIt->more(); )
+    {
+      const SMDS_MeshNode* offNode = nIt->next();
+      const SMDS_MeshNode* iniNode = initMDS->FindNode( offNode->GetID() + theNShift );
+      initMDS->UnSetNodeOnShape( iniNode );
+
+      switch( theEOS._initShape.ShapeType() ) {
+      case TopAbs_FACE:   initMDS->SetNodeOnFace( iniNode, TopoDS::Face( theEOS._initShape ));
+        break;
+      case TopAbs_EDGE:   initMDS->SetNodeOnEdge( iniNode, TopoDS::Edge( theEOS._initShape ));
+        break;
+      case TopAbs_VERTEX: initMDS->SetNodeOnVertex( iniNode, TopoDS::Vertex( theEOS._initShape ));
+        break;
+      default:;
+      }
+    }
+
+    std::vector< const SMDS_MeshNode* > iniNodes;
+    for ( SMDS_ElemIteratorPtr eIt = sm->GetElements(); eIt->more(); )
+    {
+      const SMDS_MeshElement* offElem = eIt->next();
+      // if ( offElem->GetType() != SMDSAbs_Face )
+      //   continue;
+
+      int nbNodes = offElem->NbCornerNodes();
+      iniNodes.resize( nbNodes );
+      for ( int i = 0; i < nbNodes; ++i )
+      {
+        const SMDS_MeshNode* nOff = offElem->GetNode( i );
+        const SMDS_MeshNode* nIni = initMDS->FindNode( nOff->GetID() + theNShift );
+        iniNodes[ i ] = nIni;
+      }
+      if ( const SMDS_MeshElement* iniElem = initMDS->FindElement( iniNodes ))
+      {
+        initMDS->UnSetElementOnShape( iniElem );
+        initMDS->SetMeshElementOnShape( iniElem, theEOS._initShapeID );
+
+        for ( const SMDS_MeshNode* n : iniNodes )
+          if ( n->GetPosition()->GetDim() == 3 )
+          {
+            initMDS->UnSetNodeOnShape( n );
+            if ( theEOS._initShape.ShapeType() == TopAbs_FACE )
+              initMDS->SetNodeOnFace( n, theEOS._initShapeID );
+            else
+              initMDS->SetNodeOnEdge( n, theEOS._initShapeID );
+          }
+      }
+    }
+    return;
+  }
+} // namespace
+
+
+//================================================================================
+/*!
+ * \brief Create a temporary mesh used to hold elements of the offset shape
+ */
+//================================================================================
+
+SMESH_Mesh* StdMeshers_Cartesian_VL::ViscousBuilder::MakeOffsetMesh()
+{
+  return _offsetMesh;
+}
+
+//================================================================================
+/*!
+ * \brief Constructor
+ */
+//================================================================================
+
+StdMeshers_Cartesian_VL::ViscousBuilder::ViscousBuilder( const StdMeshers_ViscousLayers* hyp,
+                                                         const SMESH_Mesh &              mainMesh,
+                                                         const TopoDS_Shape &            mainShape)
+  : _hyp( hyp ), _offsetMesh( new TmpMesh )
+{
+  // find shapes with viscous layers
+  TopTools_IndexedMapOfShape faces;
+  TopExp::MapShapes( mainShape, TopAbs_FACE, faces );
+  const SMESHDS_Mesh* iniMDS = mainMesh.GetMeshDS();
+
+  if ( hyp->IsToIgnoreShapes() )
+  {
+    for ( int i = 1; i <= faces.Size(); ++i )
+      _shapesWVL.insert( iniMDS->ShapeToIndex( faces( i )));
+
+    for ( TGeomID& sID : hyp->GetBndShapes() )
+      _shapesWVL.erase( sID );
+  }
+  else
+  {
+    for ( TGeomID& sID : hyp->GetBndShapes() )
+      _shapesWVL.insert( sID );
+  }
+
+  for ( TGeomID fID : _shapesWVL )
+  {
+    const TopoDS_Shape & face = iniMDS->IndexToShape( fID );
+    for ( TopExp_Explorer exp( face, TopAbs_EDGE ); exp.More(); exp.Next() )
+      _shapesWVL.insert( iniMDS->ShapeToIndex( exp.Current() ));
+    for ( TopExp_Explorer exp( face, TopAbs_VERTEX ); exp.More(); exp.Next() )
+      _shapesWVL.insert( iniMDS->ShapeToIndex( exp.Current() ));
+  }
+
+  // find EDGE and adjacent FACEs w/o VL
+  for ( int i = 1; i <= faces.Size(); ++i )
+  {
+    const TopoDS_Shape& face = faces( i );
+    TGeomID fID = iniMDS->ShapeToIndex( face );
+    bool isMainShape2D = (mainShape.ShapeType() == TopAbs_FACE) ? true : false;
+
+    if ( _shapesWVL.count( fID ) && !isMainShape2D )
+      continue;
+
+    for ( TopExp_Explorer exp( face, TopAbs_EDGE ); exp.More(); exp.Next() )
+      _edge2facesWOVL[ iniMDS->ShapeToIndex( exp.Current() )].push_back( fID );
+  }
+  
+  // When 2D meshing Need to add edges where segments need to be added due to geometry shrink
+  return;
+}
+
+//================================================================================
+/*!
+ * \brief Destructor
+ */
+//================================================================================
+
+StdMeshers_Cartesian_VL::ViscousBuilder::~ViscousBuilder()
+{
+  delete _offsetMesh; //_offsetMesh = 0;
+}
+
+//================================================================================
+/*!
+ * \brief Create an offset solid from a given one
+ *  \param [in] theShape - input shape can be a solid, solidcompound or a compound with solids
+ *  \param [in] theMesh - main mesh
+ *  \param [out] theError - error description
+ *  \return TopoDS_Shape - result offset shape of the same type as the received shape
+ */
+//================================================================================
+
+TopoDS_Shape StdMeshers_Cartesian_VL::ViscousBuilder::MakeOffsetSolid(const TopoDS_Shape & theShape,
+                                                                        SMESH_Mesh &         theMesh,
+                                                                        std::string &        theError )
+{
+  double offset = -_hyp->GetTotalThickness();
+  double    tol = Precision::Confusion();
+  TopAbs_ShapeEnum typeOfShape = theShape.ShapeType();
+
+  TopTools_IndexedMapOfShape shapeList;
+  TopExp::MapShapes( theShape, TopAbs_SOLID, shapeList );
+  std::vector<TopoDS_Shape> shrinkBodies;
+
+  for ( int i = 1; i <= shapeList.Size(); ++i )
+  {
+    auto solid = shapeList( i );
+      // If Shape is solid call direct 
+    BRepOffset_MakeOffset * makeOffset = new BRepOffset_MakeOffset();
+    makeOffset->Initialize( solid, offset, tol, BRepOffset_Skin, /*Intersection=*/false,
+                          /*selfInter=*/false, GeomAbs_Intersection);
+
+    // exclude inlet FACEs
+    SMESHDS_Mesh* meshDS = theMesh.GetMeshDS();
+    for ( TopExp_Explorer fEx( theShape, TopAbs_FACE ); fEx.More(); fEx.Next() )
+    {
+      TGeomID fID = meshDS->ShapeToIndex( fEx.Current() );
+      if ( !_shapesWVL.count( fID ))
+        makeOffset->SetOffsetOnFace( TopoDS::Face( fEx.Current()), 0 );
+    }
+
+    makeOffset->MakeOffsetShape();
+    if ( makeOffset->IsDone() )
+    {
+      shrinkBodies.push_back( makeOffset->Shape() );
+      _makeOffsetCollection.push_back( makeOffset );
+    }
+    else
+    {
+      switch ( makeOffset->Error() )
+      {
+      case BRepOffset_NoError:
+        theError = "OK. Offset performed successfully.";break;
+      case BRepOffset_BadNormalsOnGeometry:
+        theError = "Degenerated normal on input data.";break;
+      case BRepOffset_C0Geometry:
+        theError = "C0 continuity of input data.";break;
+      case BRepOffset_NullOffset:
+        theError = "Null offset of all faces.";break;
+      case BRepOffset_NotConnectedShell:
+        theError = "Incorrect set of faces to remove, the remaining shell is not connected.";break;
+      case BRepOffset_CannotTrimEdges:
+        theError = "Can not trim edges.";break;
+      case BRepOffset_CannotFuseVertices:
+        theError = "Can not fuse vertices.";break;
+      case BRepOffset_CannotExtentEdge:
+        theError = "Can not extent edge.";break;
+      default:
+        theError = "operation not done.";
+      }
+      theError = "BRepOffset_MakeOffset error: " + theError;
+
+      return TopoDS_Shape();
+    }    
+  }
+  
+  if ( typeOfShape == TopAbs_COMPOUND || typeOfShape == TopAbs_COMPSOLID )
+  {
+    _solidCompound.SetGlue( BOPAlgo_GlueFull );
+    _solidCompound.SetToFillHistory( true );
+    for ( auto solid : shrinkBodies )
+      _solidCompound.AddArgument( solid );
+
+    _solidCompound.Perform();
+    return _solidCompound.Shape();
+  }
+  else
+    return shrinkBodies[ 0 ]; // return one solid
+
+}
+
+//================================================================================
+/*!
+ * \brief Create an offset shape from a given one
+ *  \param [in] theShape - input shape
+ *  \param [in] theMesh - main mesh
+ *  \param [out] theError - error description
+ *  \return TopoDS_Shape - result offset shape
+ */
+//================================================================================
+
+TopoDS_Shape
+StdMeshers_Cartesian_VL::ViscousBuilder::MakeOffsetShape(const TopoDS_Shape & theShape,
+                                                         SMESH_Mesh &         theMesh,
+                                                         std::string &        theError )
+{
+  double offset                 = -_hyp->GetTotalThickness();
+  double    tol                 = Precision::Confusion();
+  TopAbs_ShapeEnum typeOfShape  = theShape.ShapeType();
+
+  // Switch here for the treatment of faces
+  if ( typeOfShape == TopAbs_FACE )
+  {
+    TopoDS_Face face = TopoDS::Face( theShape );
+    GProp_GProps gprops;
+    BRepGProp::SurfaceProperties(face, gprops); // Stores results in gprops
+    double faceArea = gprops.Mass();
+
+    _makeFaceOffset = BRepOffsetAPI_MakeOffset( face, GeomAbs_Intersection );
+    _makeFaceOffset.Perform( offset );
+    TopoDS_Wire wireFrame   = TopoDS::Wire( _makeFaceOffset.Shape() );
+    TopoDS_Face shrinkFace  = TopoDS::Face( BRepBuilderAPI_MakeFace( wireFrame, false ) );
+    BRepGProp::SurfaceProperties(shrinkFace, gprops); // Stores results in gprops
+    double sArea = gprops.Mass();
+
+    if ( sArea > faceArea /*recompute the shrink face because offset was done in the contrary direction as expected*/)
+    {
+      _makeFaceOffset.Perform( -offset );
+      wireFrame  = TopoDS::Wire( _makeFaceOffset.Shape() );
+      shrinkFace = TopoDS::Face( BRepBuilderAPI_MakeFace( wireFrame, false ) );
+    }
+    _offsetShape = shrinkFace;
+    return _offsetShape;
+  }
+  else
+  {
+    _offsetShape = MakeOffsetSolid( theShape, theMesh, theError );
+    return _offsetShape;
+  }  
+}
+
+//================================================================================
+/*!
+ * \brief Return the list of sub-shape of the same type of the offset shape generated from a given initial sub-shape
+ */
+//================================================================================
+
+void StdMeshers_Cartesian_VL::ViscousBuilder::getOffsetSubShape( const TopoDS_Shape& S, std::vector<TopoDS_Shape>& subShapeList )
+{  
+  for( auto offset : _makeOffsetCollection )
+  {
+    const TopTools_ListOfShape& newShapes = offset->Generated( S );
+    if ( newShapes.Size() == 0 )
+      continue; // keep searching
+
+    for ( const TopoDS_Shape& ns : newShapes )
+    {
+      if ( ns.ShapeType() == S.ShapeType() )
+      {
+        if  ( _solidCompound.Arguments().Size() == 0 /* only one solid shrank*/ )
+        {
+          subShapeList.push_back( ns );
+        }
+        else
+        {
+          // In boolean operations the shapes are modified or deleted
+          const TopTools_ListOfShape& newGlueShapes = _solidCompound.Modified( ns );
+          for ( TopoDS_Shape& ngs : newGlueShapes )
+            if ( ngs.ShapeType() == ns.ShapeType() /*&& !ngs.Checked()*/  )
+              subShapeList.push_back( ngs );
+          
+          if ( newGlueShapes.Size() == 0 && !_solidCompound.IsDeleted( ns ) )
+            subShapeList.push_back( ns );
+        }
+      }            
+    }      
+  }     
+
+  // check for _makeFaceOffset in face shrink
+  if ( _makeOffsetCollection.size()  == 0 )
+  {
+    const TopTools_ListOfShape& newShapes = _makeFaceOffset.Generated( S );
+    for ( const TopoDS_Shape& ns : newShapes )
+    {
+      if ( ns.ShapeType() == S.ShapeType() )
+        return subShapeList.push_back( ns );
+    }
+  }
+}
+
+bool StdMeshers_Cartesian_VL::ViscousBuilder::CheckGeometryMaps( SMESH_Mesh &        offsetMesh,
+                                                                  const TopoDS_Shape & theShape  )
+{
+  SMESHDS_Mesh* offsetMDS       = offsetMesh.GetMeshDS();
+  TopoDS_Shape shrinkGeomToMesh = offsetMDS->ShapeToMesh();  
+
+  TopTools_IndexedMapOfShape shrinkGeomMap;
+  TopExp::MapShapes( shrinkGeomToMesh, shrinkGeomMap );
+  TopTools_IndexedMapOfShape offsetGeomMap;
+  TopExp::MapShapes( _offsetShape, offsetGeomMap );
+
+  // loop on sub-shapes to project nodes from offset boundary to initial boundary
+  TopAbs_ShapeEnum types[3] = { TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE };
+  for ( TopAbs_ShapeEnum shType : types )
+  {
+    TopTools_IndexedMapOfShape shapes;
+    TopExp::MapShapes( theShape, shType, shapes );
+    for ( int i = 1; i <= shapes.Size(); ++i )
+    {
+      // For each type of geometry check the existence of one or more equivalents
+      std::vector<TopoDS_Shape> listOfShapes;
+      getOffsetSubShape( shapes(i), listOfShapes );
+      if ( listOfShapes.size() == 0 ) return false;
+    }
+  }
+  return true;
+}
+
+//================================================================================
+/*!
+ * \brief Create prismatic mesh between _offsetShape and theShape
+ *  \remark Build the viscous layer from the iteration of shrink geometry
+ *  \param [out] theMesh - mesh to fill in
+ *  \param [in] theShape - initial shape
+ *  \return bool - is Ok
+ */
+//================================================================================
+
+bool StdMeshers_Cartesian_VL::ViscousBuilder::MakeViscousLayers( SMESH_Mesh &        offsetMesh,
+                                                                 SMESH_Mesh &         theMesh,
+                                                                 const TopoDS_Shape & theShape )
+{
+  SMESHDS_Mesh* offsetMDS       = offsetMesh.GetMeshDS();
+  SMESHDS_Mesh*   initMDS       = theMesh.GetMeshDS();
+  TopoDS_Shape shrinkGeomToMesh = offsetMDS->ShapeToMesh();  
+  bool isMainShape2D = (theShape.ShapeType() == TopAbs_FACE) ? true : false;
+
+  // Validate map of shrink+joint geometry elements
+  if ( !CheckGeometryMaps(offsetMesh, theShape ) && !isMainShape2D )
+    throw SALOME_Exception("The shrink geometry does not match or respect the original topology.The viscous layer can't be build");
+
+  
+  initMDS->ClearMesh(); // avoid mesh superposition on multiple calls of addLayers
+  offsetMDS->SetAllCellsNotMarked();
+
+  TopTools_IndexedMapOfShape shrinkGeomMap;
+  TopExp::MapShapes( shrinkGeomToMesh, shrinkGeomMap );
+
+  TopTools_IndexedMapOfShape offsetGeomMap;
+  TopExp::MapShapes( _offsetShape, offsetGeomMap );
+
+  // Compute heights of viscous layers
+  std::vector< double > vlH;
+  computeVLHeight( _hyp, vlH );
+  
+  std::vector< VLEdgesOnShape > edgesOnShape;
+  edgesOnShape.reserve( offsetMDS->MaxShapeIndex() + 1 );
+  TNode2VLEdge n2e;
+
+  // loop on sub-shapes to project nodes from offset boundary to initial boundary
+  TopAbs_ShapeEnum types[3] = { TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE };
+  for ( TopAbs_ShapeEnum shType : types )
+  {
+    TopTools_IndexedMapOfShape shapes;
+    TopExp::MapShapes( theShape, shType, shapes );
+    for ( int i = 1; i <= shapes.Size(); ++i )
+    {
+      edgesOnShape.resize( edgesOnShape.size() + 1 );
+      VLEdgesOnShape& EOS = edgesOnShape.back();
+      std::vector<TopoDS_Shape> listOfShapes;
+      EOS._initShape    = shapes( i );
+      
+      // Get a list of subShapes of the same type generated from the same face
+      // It is the case with split objects.
+      getOffsetSubShape( EOS._initShape, listOfShapes );
+      for ( TopoDS_Shape& shrinkShape : listOfShapes )
+      {
+        int shapeId       = offsetGeomMap.FindIndex( shrinkShape );        
+        EOS._offsetShape  = shrinkGeomMap.FindKey( shapeId );     
+        EOS._initShapeID  = initMDS->ShapeToIndex( EOS._initShape );
+        EOS._hasVL        = _shapesWVL.count( EOS._initShapeID );
+
+        EOS._toCheckCoinc = false;
+        if ( !EOS._hasVL )
+          continue;
+
+        // project boundary nodes of offset mesh to boundary of init mesh
+        // (new nodes are created in the offset mesh)
+        switch( EOS._offsetShape.ShapeType() ) {
+        case TopAbs_VERTEX:
+        {
+          EOS._edges.resize( 1 );
+          EOS._edges[0]._nodes.resize( 2 );
+          EOS._edges[0]._nodes[0] = SMESH_Algo::VertexNode( TopoDS::Vertex( EOS._offsetShape ),
+                                                            offsetMDS );
+          gp_Pnt offP = BRep_Tool::Pnt( TopoDS::Vertex( EOS._initShape ));
+          EOS._edges[0]._nodes[1] = offsetMDS->AddNode( offP.X(), offP.Y(), offP.Z() );
+          //EOS._edges[0]._length   = offP.Distance( EOS._edges[0]._nodes[0] );
+          n2e.Bind( EOS._edges[0]._nodes[0].Node(), & EOS._edges[0] );
+          break;
+        }
+        case TopAbs_EDGE:
+        {
+          projectToEdge( EOS, offsetMDS, n2e, isMainShape2D /* add vertex from edges*/ );
+          break;
+        }
+        case TopAbs_FACE:
+        {
+          projectToFace( EOS, offsetMDS, n2e );
+          break;
+        }
+        default:;
+        }
+
+        // create nodes of layers
+        if ( _hyp->GetNumberLayers() > 1 )
+        {
+          //if ( _shapesWVL.count( EOS._initShapeID ))
+          for ( size_t i = 0; i < EOS._edges.size(); ++i )
+          {
+            divideVLEdge( &EOS._edges[ i ], vlH, offsetMDS );
+          }
+        }
+      } // loop on generated shrink shape
+    }//loop on original shape
+  } // loop on shape types
+  
+  // create prisms
+  bool prismsOk = true;
+  for ( size_t i = 0; i < edgesOnShape.size(); ++i )
+  {
+    VLEdgesOnShape& EOS = edgesOnShape[ i ];
+    if ( EOS._initShape.ShapeType() == TopAbs_FACE && EOS._hasVL )
+    {
+      if ( !makePrisms( EOS, &offsetMesh, n2e ))
+        prismsOk = false;
+    }
+  }
+
+  if ( prismsOk )
+  {
+    // create faces on FACEs WOVL
+    for ( size_t i = 0; i < edgesOnShape.size(); ++i )
+    {
+      VLEdgesOnShape& EOS = edgesOnShape[ i ];
+      if ( EOS._initShape.ShapeType() == TopAbs_EDGE && EOS._hasVL )
+      {
+        auto e2f = _edge2facesWOVL.find( EOS._initShapeID );
+        if ( e2f != _edge2facesWOVL.end() && !e2f->second.empty() )
+        {
+          TopoDS_Shape  f = initMDS->IndexToShape( e2f->second[0] );
+          std::vector<TopoDS_Shape> listOfShapes;
+          getOffsetSubShape( f, listOfShapes );
+          for( TopoDS_Shape& subShape : listOfShapes )
+          {
+            int shapeId   = offsetGeomMap.FindIndex( subShape );
+            TopoDS_Shape f2 = shrinkGeomMap.FindKey( shapeId );     
+            makeFaces( EOS, & offsetMesh, n2e, offsetMDS->ShapeToIndex( f2 ) );
+          }        
+        }
+      }
+    }
+  }
+
+  if ( isMainShape2D )
+  {
+     // create faces on FACEs of the inflate viscous layer in 2D faces
+    for ( size_t i = 0; i < edgesOnShape.size(); ++i )
+    {
+      VLEdgesOnShape& EOS = edgesOnShape[ i ];
+      if ( EOS._initShape.ShapeType() == TopAbs_EDGE && EOS._hasVL /* iterate in market edges with viscous layer*/)
+      {
+        int shapeId = offsetMDS->ShapeToIndex( shrinkGeomToMesh );
+        makeFaces( EOS, & offsetMesh, n2e, shapeId, isMainShape2D ); // pass face Id of shrink geometry
+      }
+    }
+  }
+
+   // copy offset mesh to the main one
+  initMDS->Modified();
+  initMDS->CompactMesh();
+  smIdType nShift = initMDS->NbNodes();
+  TGeomID solidID = initMDS->ShapeToIndex( theShape );
+  copyMesh( & offsetMesh, & theMesh, solidID );
+
+  if ( !prismsOk )
+  {
+    if ( SMESH_subMesh * sm = theMesh.GetSubMesh( theShape ))
+    {
+      sm->GetComputeError() =
+        SMESH_ComputeError::New( COMPERR_ALGO_FAILED,
+                                 "Viscous layers construction error: bad mesh on offset geometry" );
+    }
+    return prismsOk;
+  }
+
+  // set elements of layers boundary to sub-meshes
+  TIDSortedNodeSet nodesToCheckCoinc;
+  for ( size_t i = 0; i < edgesOnShape.size(); ++i )
+  {
+    VLEdgesOnShape& EOS = edgesOnShape[ i ];
+    if ( EOS._hasVL )
+      setBnd2Sub( EOS, &theMesh, &offsetMesh, n2e, nShift, nodesToCheckCoinc );
+    else
+      setBnd2FVWL( EOS, &theMesh, &offsetMesh, nShift );
+  }
+
+  // merge coincident nodes
+  SMESH_MeshEditor editor( &theMesh );
+  SMESH_MeshEditor::TListOfListOfNodes nodesToMerge;
+  editor.FindCoincidentNodes( nodesToCheckCoinc, vlH[0]/50., nodesToMerge, false );
+  editor.MergeNodes( nodesToMerge );
+
+  // create a group
+  if ( !_hyp->GetGroupName().empty() )
+  {
+    SMDS_MeshGroup* group = _hyp->CreateGroup( _hyp->GetGroupName(), theMesh, SMDSAbs_Volume );
+
+    for ( SMDS_ElemIteratorPtr it = initMDS->elementsIterator(); it->more(); )
+    {
+      const SMDS_MeshElement* el = it->next();
+      if ( el->isMarked() )
+        group->Add( el );
+    }
+  }
+
+
+  return prismsOk;
+}
\ No newline at end of file
diff --git a/src/StdMeshers/StdMeshers_Cartesian_VL.hxx b/src/StdMeshers/StdMeshers_Cartesian_VL.hxx
new file mode 100644 (file)
index 0000000..9f7298e
--- /dev/null
@@ -0,0 +1,85 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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      : StdMeshers_Cartesian_VL.hxx
+// Created   : Tue May 24 12:32:01 2022
+// Author    : Edward AGAPOV (eap)
+
+#ifndef __StdMeshers_Cartesian_VL_HXX__
+#define __StdMeshers_Cartesian_VL_HXX__
+
+#include <BOPAlgo_Builder.hxx>
+#include <BRepOffset_MakeOffset.hxx>
+#include <BRepOffsetAPI_MakeOffset.hxx>
+
+#include <set>
+#include <map>
+#include <vector>
+
+class TopoDS_Face;
+class StdMeshers_ViscousLayers;
+class SMESH_Mesh;
+
+namespace StdMeshers_Cartesian_VL
+{
+  class ViscousBuilder
+  {
+  public:
+
+    ViscousBuilder( const StdMeshers_ViscousLayers* hypViscousLayers,
+                    const SMESH_Mesh &              theMesh,
+                    const TopoDS_Shape &            theShape);
+    ~ViscousBuilder();
+
+    TopoDS_Shape MakeOffsetShape(const TopoDS_Shape & theShape,
+                                 SMESH_Mesh &         theMesh,
+                                 std::string &        theError );                              
+
+    SMESH_Mesh*  MakeOffsetMesh();
+
+    bool         MakeViscousLayers( SMESH_Mesh &         offsetMesh,
+                                    SMESH_Mesh &         theMesh,
+                                    const TopoDS_Shape & theShape );                 
+    
+  private:
+    
+    TopoDS_Shape MakeOffsetSolid(const TopoDS_Shape & theShape,
+                                 SMESH_Mesh &         theMesh,
+                                 std::string &        theError );   
+
+    bool         CheckGeometryMaps( SMESH_Mesh &         offsetMesh,
+                                    const TopoDS_Shape & theShape );             
+
+    void getOffsetSubShape( const TopoDS_Shape& S, std::vector<TopoDS_Shape>& listOfShapes );
+
+    const StdMeshers_ViscousLayers* _hyp;
+    BRepOffset_MakeOffset           _makeOffset;
+    std::vector<BRepOffset_MakeOffset*> _makeOffsetCollection;  // collection to  
+    BRepOffsetAPI_MakeOffset        _makeFaceOffset;            // to define shrink of planar faces. The face is shrink in all 
+    BOPAlgo_Builder                 _solidCompound;             // to glue solids with common faces after shrinking then with BRepOffset_MakeOffset
+    SMESH_Mesh*                     _offsetMesh;
+    TopoDS_Shape                    _offsetShape;
+    std::set< int >                 _shapesWVL;                 // shapes with viscous layers
+    std::map< int, std::vector< int > > _edge2facesWOVL;        // EDGE 2 FACEs w/o VL
+  };
+}
+
+#endif
index d43ceadafcb83267eb9d65d47cac66703c7b34b8..e50d288dd1b52c75ad50d4be9e47dd0dfd74db92 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -1242,12 +1242,13 @@ bool _QuadFaceGrid::Init(const TopoDS_Face& f, SMESH_ProxyMesh& mesh)
   if (mySides.size() != 4)
     return false;
 
-#ifdef _DEBUG_
+if (SALOME::VerbosityActivated())
+{
   mySides.GetSide( Q_BOTTOM )->SetID( Q_BOTTOM );
   mySides.GetSide( Q_RIGHT  )->SetID( Q_RIGHT );
   mySides.GetSide( Q_TOP    )->SetID( Q_TOP );
   mySides.GetSide( Q_LEFT   )->SetID( Q_LEFT );
-#endif
+}
 
   return true;
 }
index a5e86f7eaa1541737d0816d8364011267c77121c..327456f7b06537409fccc4b1c385819b8370870d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e7ad0156a5f5e221238028fc7577636d34faa5cf..9e470c6f0f3d2456ab5cdd02f18509548a26e84b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2e1b1a1381f92205f9b8e3118e4ba16e313b7e76..8cd35a9ceca09de9b88500ec2a4904e32dee17e8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 73b91c35e6536edb22100820511f6200ea5b6a4d..0ed983507f66a7cca00c594162a1ff2911bd7228 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index fc9af8ea3c8c3a2e2bc4e497f8367770665bc10d..a775817424c6accd67fa652f0bb64ef65e5b22a3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 90174fce1058bfc151dfff2cd4300f57f1d33046..1b8fbc1713f0b4618a7202366f988ecbf6da0267 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f7844320909a76acbb9e85bb8f7152a166aabcc8..40a384924c12e033646362ea444089cfd95cec18 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9a3ba489342b069252b3b4a63d99ef0cb7881b93..51a09cc99a9fa4fb34f35a01104bd13d370aef5f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -1148,7 +1148,9 @@ void StdMeshers_FaceSide::reverseProxySubmesh( const TopoDS_Edge& E )
 
 void StdMeshers_FaceSide::dump(const char* msg) const
 {
-#ifdef _DEBUG_
+  if (!SALOME::VerbosityActivated())
+    return;
+
   if (msg) MESSAGE ( std::endl << msg );
   MESSAGE_BEGIN ("NB EDGES: "<< myEdge.size() );
   MESSAGE_ADD ( "nbPoints: "<<myNbPonits<<" vecSize: " << myPoints.size()<<" "<<myFalsePoints.size() );
@@ -1176,9 +1178,6 @@ void StdMeshers_FaceSide::dump(const char* msg) const
     MESSAGE_ADD ( "\tF: "<<myFirst[i]<< " L: "<< myLast[i] );
     MESSAGE_END ( "\tnormPar: "<<myNormPar[i]<<endl );
   }
-#else
-  (void)msg; // unused in release mode
-#endif
 }
 
 //================================================================================
index 72e7b99b834fb76c416087897ec47a345c17f27d..50cbff2dfd1533b2cd47299ad38b8e57f2ddfcf0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 71c23b2b581442f0f8fe421db06fb951eb9daf4b..f75bceac366c7d91b3a9b3b11de11e5f5128942e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5ea003b3569756668ff07869105aefc0652cbf1e..0dc5ef57166fea4c747cf4da37b2e24645548fff 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ac2411ff38f0086587bfb92c7e64acc7de9a2d3d..ec6c36241ae2258281d4a47088cee3cb8252cb6e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6c292b8857d4630556efc689bb71662f9f0ba865..5ab5c2f3f3b9d739c7ca582b273eb0a021194e98 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 64d98eec56ef0f8a72d76ee10c73b5fab27442e6..d1617f3003d3f8cdaf7d5217950a536c01aca019 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 
 using namespace std;
 
-// Define error message and _MYDEBUG_ if needed
-#ifdef _DEBUG_
+// Define error message
 #define BAD_MESH_ERR \
   error(SMESH_Comment("Can't detect block-wise structure of the input 2D mesh.\n" \
                       __FILE__ ":" )<<__LINE__)
-//#define _MYDEBUG_
-#else
-#define BAD_MESH_ERR \
-  error(SMESH_Comment("Can't detect block-wise structure of the input 2D mesh"))
-#endif
-
 
 // Debug output
-#ifdef _MYDEBUG_
 #define _DUMP_(msg) cout << msg << endl
-#else
-#define _DUMP_(msg)
-#endif
-
 
 namespace
 {
@@ -68,12 +56,12 @@ namespace
     {
       B_BOTTOM=0, B_RIGHT, B_TOP, B_LEFT, B_FRONT, B_BACK, NB_BLOCK_SIDES
     };
-#ifdef _MYDEBUG_
+
   const char* SBoxSides[] = //!< names of block sides -- needed for DEBUG only
     {
       "BOTTOM", "RIGHT", "TOP", "LEFT", "FRONT", "BACK", "UNDEFINED"
     };
-#endif
+
   enum EQuadEdge //!< edges of quadrangle side
     {
       Q_BOTTOM = 0, Q_RIGHT, Q_TOP, Q_LEFT, NB_QUAD_SIDES
index 0922099417d630bbedbe2817876ccd0c82d75d58..b80f5ecce990038eb0221e096841e3481bdd0eba 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a912dd8bee191886cc9f9c0bf0c04459f0d74396..f7e43837fee49291a3d4f4181f3df7282cdd4491 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d3e703dfe494d91bca7726cf9bd386e295119e01..e7df853dfed53b9963a2eac69c46f6d90bc43fb1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ad86ca0442230aa7641ca26302ba79f7e31f199e..4d34b5cd85c86a1e45d3ad39334d9f33f9028c60 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f82fd1a370cbb710b9fec7184ba4ec2faf40b3ad..19860b82c2369e14750231faff59988ddaeb2536 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 7beb1e77c03137011c1829b2e3129ee5e8d7b034..f27e74dca17ce9b863ff66d61e493962ad0b918f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -948,20 +948,20 @@ bool StdMeshers_Import_1D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape & th
   const double        edgeTol = helper.MaxTolerance( geomEdge );
   const int           shapeID = tgtMesh->ShapeToIndex( geomEdge );
 
-
   double geomTol = Precision::Confusion();
+  double minGeomTol = std::numeric_limits<double>::max();
+
   for ( size_t iG = 0; iG < srcGroups.size(); ++iG )
   {
     const SMESHDS_GroupBase* srcGroup = srcGroups[iG]->GetGroupDS();
     for ( SMDS_ElemIteratorPtr srcElems = srcGroup->GetElements(); srcElems->more(); )
     {
       const SMDS_MeshElement* edge = srcElems->next();
-      geomTol = Sqrt( 0.5 * ( getMinEdgeLength2( edge->GetNode(0) ) +
-                              getMinEdgeLength2( edge->GetNode(1) ))) / 25;
-      iG = srcGroups.size();
-      break;
+      minGeomTol = std::min( Sqrt( getMinEdgeLength2( edge->GetNode(0) )) / 25, minGeomTol );
+      geomTol = minGeomTol;
     }
   }
+
   CurveProjector curveProjector( geomEdge, geomTol );
 
   // get nodes on vertices
index b6b9bfde1a4076a2db4612d9d23e2fb22e600478..1f1cc71999f8a02cf4b9e76eb172018c8ef9011b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f4586c979cd0537c0b45474a5dd8b558b9110c5a..c39526b4502d2978e2a03606ea30ba61ec6f37b7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -201,8 +201,12 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
   gp_Pnt p; gp_Vec du, dv;
 
   // BRepClass_FaceClassifier is most time consuming, so minimize its usage
-  const double clsfTol = 10 * BRep_Tool::Tolerance( geomFace );
+  const double clsfTol = 1e2 * BRep_Tool::MaxTolerance( geomFace, TopAbs_VERTEX );
   BRepTopAdaptor_FClass2d classifier( geomFace, clsfTol ); //Brimless_FaceClassifier classifier;
+
+  const double clsfTolEdge = BRep_Tool::MaxTolerance( geomFace, TopAbs_EDGE );
+  BRepTopAdaptor_FClass2d classifierEdge( geomFace, clsfTolEdge ); //Define specific classifier for edges based on TopAbs_EDGE. Solve issue bos #36783
+
   Bnd_B2d bndBox2d;
   Bnd_Box bndBox3d;
   {
@@ -274,7 +278,6 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
   double minGroupTol = Precision::Infinite();
 
   SMESH::Controls::ElementsOnShape onEdgeClassifier;
-  if ( helper.HasSeam() )
   {
     TopoDS_Compound edgesCompound;
     BRep_Builder    builder;
@@ -316,8 +319,9 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
     // another idea: try to use max tol of all edges
     //const double clsfTol = 10 * BRep_Tool::Tolerance( geomFace ); // 0.1 * groupTol;
 
-    if ( helper.HasSeam() )
-      onEdgeClassifier.SetMesh( srcMesh->GetMeshDS() );
+    onEdgeClassifier.SetMesh( srcMesh->GetMeshDS() );
+    onEdgeClassifier.SetTolerance( groupTol / 10 );
+
 
     SMDS_ElemIteratorPtr srcElems = srcGroup->GetElements();
     while ( srcElems->more() ) // loop on group contents
@@ -373,15 +377,18 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
         {
           // find out if node lies on the surface of theShape
           gp_XY uv( Precision::Infinite(), 0 );
-          isOut = ( !helper.CheckNodeUV( geomFace, node, uv, groupTol, /*force=*/true ) ||
-                    bndBox2d.IsOut( uv ));
+          bool isOutBox = true;
+          isOut = (! helper.CheckNodeUV( geomFace, node, uv, groupTol, /*force=*/true ) ||
+                   ( isOutBox = bndBox2d.IsOut( uv )));
           //int iCoo;
           if ( !isOut && !isIn ) // classify
           {
             nodeState[i] = classifier.Perform( uv ); //classifier.Perform( geomFace, uv, clsfTol );
             //nodeState[i] = classifier.State();
             isOut = ( nodeState[i] == TopAbs_OUT );
-            if ( isOut && helper.IsOnSeam( uv ) && onEdgeClassifier.IsSatisfy( node->GetID() ))
+            if (( isOut ) &&
+                ( !isOutBox || helper.IsOnSeam( uv )) &&
+                onEdgeClassifier.IsSatisfy( node ))
             {
               // uv.SetCoord( iCoo, helper.GetOtherParam( uv.Coord( iCoo )));
               // classifier.Perform( geomFace, uv, clsfTol );
@@ -396,7 +403,7 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
             newNode = tgtMesh->AddNode( nXYZ.X(), nXYZ.Y(), nXYZ.Z());
             tgtMesh->SetNodeOnFace( newNode, shapeID, uv.X(), uv.Y() );
             nbCreatedNodes++;
-            if ( newNode->GetID() >= (int) isNodeIn.size() )
+            if ( newNode->GetID() >= (smIdType) isNodeIn.size() )
             {
               isNodeIn.push_back( false ); // allow allocate more than newNode->GetID()
               isNodeIn.resize( newNode->GetID() + 1, false );
@@ -422,7 +429,7 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
         {
           if ( nodeState[i] != TopAbs_UNKNOWN ) continue;
           gp_XY uv = helper.GetNodeUV( geomFace, newNodes[i] );
-          nodeState[i] = classifier.Perform( uv ); //geomFace, uv, clsfTol );
+          nodeState[i] = classifierEdge.Perform( uv ); //geomFace, uv, clsfTolEdge );
           //nodeState[i] = classifier.State();
           isIn = ( nodeState[i] == TopAbs_IN );
         }
@@ -444,8 +451,8 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
           Standard_Real U,V;
           proj.LowerDistanceParameters(U,V);
           gp_XY uv( U,V );
-          //classifier.Perform( geomFace, uv, clsfTol );
-          TopAbs_State state = classifier.Perform( uv );
+          //classifier.Perform( geomFace, uv, clsfTolEdge );
+          TopAbs_State state = classifierEdge.Perform( uv );
           if ( state != TopAbs_IN )
             continue;
         }
@@ -565,7 +572,6 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
     // the imported mesh is valid if all external links (encountered once)
     // lie on geom edges
     subShapeIDs.erase( shapeID ); // to contain edges and vertices only
-    double u, f, l;
     for ( link2Nb = linkCount.begin(); link2Nb != linkCount.end(); ++link2Nb)
     {
       const TLink& link = (*link2Nb).first;
@@ -580,17 +586,14 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
           const SMDS_MeshNode* n = is1stN ? link.node1() : link.node2();
           if ( !subShapeIDs.count( n->getshapeId() )) // n is assigned to FACE
           {
-            for ( size_t iE = 0; iE < edges.size(); ++iE )
-              if ( helper.CheckNodeU( edges[iE], n, u=0, projTol, /*force=*/true ))
-              {
-                BRep_Tool::Range(edges[iE],f,l);
-                if ( Abs(u-f) < 2 * faceTol || Abs(u-l) < 2 * faceTol )
-                  // duplicated node on vertex
-                  return error("Source elements overlap one another");
-                tgtFaceSM->RemoveNode( n );
-                tgtMesh->SetNodeOnEdge( n, edges[iE], u );
-                break;
-              }
+            TopoDS_Shape edge;
+            if ( onEdgeClassifier.IsSatisfy( n, &edge ))
+            {
+              tgtFaceSM->RemoveNode( n );
+              double u, v;
+              onEdgeClassifier.GetParams( u, v );
+              tgtMesh->SetNodeOnEdge( n, TopoDS::Edge(edge), u );
+            }
             nodesOnBoundary = subShapeIDs.count( n->getshapeId());
           }
           if ( nodesOnBoundary )
@@ -638,6 +641,7 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
         {
           edge = tgtMesh->AddEdge( newNodes[0], newNodes[1], link._medium );
 
+          double u;
           TopoDS_Edge geomEdge = TopoDS::Edge(bndShapes.back());
           helper.CheckNodeU( geomEdge, link._medium, u, projTol, /*force=*/true );
           tgtFaceSM->RemoveNode( link._medium );
@@ -710,6 +714,7 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
       TUNodeList nodesOnSeam;
       double u = helper.GetNodeU( seamEdge, vertNode );
       nodesOnSeam.push_back( make_pair( u, vertNode ));
+      size_t nbNodesOnSeam = 1;
       TUNodeList::iterator u2nIt = nodesOnSeam.begin();
       for ( ; u2nIt != nodesOnSeam.end(); ++u2nIt )
       {
@@ -723,8 +728,9 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
           {
             const SMDS_MeshNode* n = face->GetNode( i );
             if ( n == startNode || !checkedNodes.insert( n ).second ) continue;
-            if ( helper.CheckNodeU( seamEdge, n, u=0, projTol, /*force=*/true ))
-              nodesOnSeam.push_back( make_pair( u, n ));
+            helper.CheckNodeU( seamEdge, n, u=0, projTol, /*force=*/true );
+            nodesOnSeam.push_back( make_pair( u, n ));
+            ++nbNodesOnSeam;
           }
         }
       }
@@ -733,6 +739,15 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
       map< double, const SMDS_MeshNode* > u2nodeMap;
       for ( u2nIt = nodesOnSeam.begin(); u2nIt != nodesOnSeam.end(); ++u2nIt )
         u2nodeMap.insert( u2nodeMap.end(), *u2nIt );
+      if ( u2nodeMap.size() != nbNodesOnSeam ) // problem with parameters on EDGE
+      {
+        // sort nodes by distance from seamVertex
+        gp_Pnt vertPnt = SMESH_NodeXYZ( vertNode );
+        u2nodeMap.clear();
+        for ( u2nIt = nodesOnSeam.begin(); u2nIt != nodesOnSeam.end(); ++u2nIt )
+          u2nodeMap.insert
+            ({ vertPnt.SquareDistance( SMESH_NodeXYZ( u2nIt->second )), u2nIt->second });
+      }
 
       // create edges
       {
index c26272b6d8e987ea8af93a9c3007fb3f9cdad9fc..b43750cabe8ebb9fbddf2a6019e9e2479bdcbe1a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0b4f905a5aee9547c3882345ca8e3cfed192f5ba..057a5299effe9ef30411d0c9dc111d4e71a4ca8e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 222757c0c784b9b19f4c22eb1a27624fc1f3114d..0cd88daaf45862d2b650fe7190b7c64320c15d34 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 25bdcd57e85fa59cf7cfec15660acda2a79b3296..636defcbca1af38348974fd4882cf230707a384e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d2a6baca5434aef95178e5e9efe0464e8a22cc6b..b06756bcc84570e1a135272fb862add8c7f62f01 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index eb1043480e188eb016b5873ed2efef2fcffa36fa..6de2c0e4b635f47ccb9682fed4b6dee542f28cb1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -43,7 +43,7 @@ StdMeshers_LengthFromEdges::StdMeshers_LengthFromEdges(int hypId, SMESH_Gen* gen
 {
   _mode =1;
   _name = "LengthFromEdges";
-  _param_algo_dim = 2; // is used by SMESH_MEFISTO_2D
+  _param_algo_dim = 2;
 }
 
 //=============================================================================
index 0573b4833223ab6115534344d70ed886b3c37219..13a99b975b2de7458e8ff404b0d3f07234aba977 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ae4896fc18a4e12751605211d0c5dc09c00da633..1f3fabe8132b3878cea003068fa56f7442954335 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 3a2f0b33cf106130ce00c984ba9fefa9b47a6d17..933efa4c3a45e7e835c07daaff8f6cd2fb88ad5e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/src/StdMeshers/StdMeshers_MEFISTO_2D.cxx b/src/StdMeshers/StdMeshers_MEFISTO_2D.cxx
deleted file mode 100644 (file)
index 48b0719..0000000
+++ /dev/null
@@ -1,856 +0,0 @@
-// Copyright (C) 2007-2021  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
-//
-
-//  SMESH SMESH : implementation of SMESH idl descriptions
-//  File   : StdMeshers_MEFISTO_2D.cxx
-//           Moved here from SMESH_MEFISTO_2D.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//
-#include "StdMeshers_MEFISTO_2D.hxx"
-
-#include "SMDS_EdgePosition.hxx"
-#include "SMDS_MeshElement.hxx"
-#include "SMDS_MeshNode.hxx"
-#include "SMESHDS_Mesh.hxx"
-#include "SMESH_Comment.hxx"
-#include "SMESH_Gen.hxx"
-#include "SMESH_Mesh.hxx"
-#include "SMESH_MesherHelper.hxx"
-#include "SMESH_subMesh.hxx"
-#include "StdMeshers_FaceSide.hxx"
-#include "StdMeshers_LengthFromEdges.hxx"
-#include "StdMeshers_MaxElementArea.hxx"
-#include "StdMeshers_ViscousLayers2D.hxx"
-
-#include "utilities.h"
-
-#include "Rn.h"
-#include "aptrte.h"
-
-#include <BRepGProp.hxx>
-#include <BRepTools.hxx>
-#include <BRep_Tool.hxx>
-#include <GProp_GProps.hxx>
-#include <Geom2d_Curve.hxx>
-#include <Geom_Curve.hxx>
-#include <Geom_Surface.hxx>
-#include <Precision.hxx>
-#include <TopExp.hxx>
-#include <TopExp_Explorer.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
-#include <TopTools_MapOfShape.hxx>
-#include <TopoDS.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Iterator.hxx>
-#include <TopoDS_Wire.hxx>
-#include <gp_Pnt2d.hxx>
-
-using namespace std;
-
-#ifdef _DEBUG_
-//#define DUMP_POINTS // to print coordinates of MEFISTO input
-#endif
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_MEFISTO_2D::StdMeshers_MEFISTO_2D(int hypId, SMESH_Gen * gen):
-  SMESH_2D_Algo(hypId, gen)
-{
-  _name = "MEFISTO_2D";
-  _shapeType = (1 << TopAbs_FACE);
-  _compatibleHypothesis.push_back("MaxElementArea");
-  _compatibleHypothesis.push_back("LengthFromEdges");
-  _compatibleHypothesis.push_back("ViscousLayers2D");
-
-  _edgeLength = 0;
-  _maxElementArea = 0;
-  _hypMaxElementArea = NULL;
-  _hypLengthFromEdges = NULL;
-  _helper = 0;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_MEFISTO_2D::~StdMeshers_MEFISTO_2D()
-{
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-bool StdMeshers_MEFISTO_2D::CheckHypothesis
-                         (SMESH_Mesh&                          aMesh,
-                          const TopoDS_Shape&                  aShape,
-                          SMESH_Hypothesis::Hypothesis_Status& aStatus)
-{
-  _hypMaxElementArea = NULL;
-  _hypLengthFromEdges = NULL;
-  _edgeLength = 0;
-  _maxElementArea = 0;
-
-  if ( !error( StdMeshers_ViscousLayers2D::CheckHypothesis( aMesh, aShape, aStatus )))
-    return false;
-
-  list <const SMESHDS_Hypothesis * >::const_iterator itl;
-  const SMESHDS_Hypothesis *theHyp;
-
-  const list <const SMESHDS_Hypothesis * >&hyps = GetUsedHypothesis(aMesh, aShape);
-  int nbHyp = hyps.size();
-  if (!nbHyp)
-  {
-    aStatus = SMESH_Hypothesis::HYP_OK; //SMESH_Hypothesis::HYP_MISSING;
-    return true;  // (PAL13464) can work with no hypothesis, LengthFromEdges is default one
-  }
-
-  itl = hyps.begin();
-  theHyp = (*itl); // use only the first hypothesis
-
-  string hypName = theHyp->GetName();
-
-  bool isOk = false;
-
-  if (hypName == "MaxElementArea")
-  {
-    _hypMaxElementArea = static_cast<const StdMeshers_MaxElementArea *>(theHyp);
-    ASSERT(_hypMaxElementArea);
-    _maxElementArea = _hypMaxElementArea->GetMaxArea();
-    isOk = true;
-    aStatus = SMESH_Hypothesis::HYP_OK;
-  }
-
-  else if (hypName == "LengthFromEdges")
-  {
-    _hypLengthFromEdges = static_cast<const StdMeshers_LengthFromEdges *>(theHyp);
-    ASSERT(_hypLengthFromEdges);
-    isOk = true;
-    aStatus = SMESH_Hypothesis::HYP_OK;
-  }
-  else
-    aStatus = SMESH_Hypothesis::HYP_INCOMPATIBLE;
-
-  if (isOk)
-  {
-    isOk = false;
-    if (_maxElementArea > 0)
-    {
-      //_edgeLength = 2 * sqrt(_maxElementArea);        // triangles : minorant
-      _edgeLength = sqrt(2. * _maxElementArea/sqrt(3.0));
-      isOk = true;
-    }
-    else
-      isOk = (_hypLengthFromEdges != NULL);     // **** check mode
-    if (!isOk)
-      aStatus = SMESH_Hypothesis::HYP_BAD_PARAMETER;
-  }
-
-  return isOk;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-bool StdMeshers_MEFISTO_2D::Compute(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape)
-{
-  TopoDS_Face F = TopoDS::Face(aShape.Oriented(TopAbs_FORWARD));
-
-  // helper builds quadratic mesh if necessary
-  SMESH_MesherHelper helper(aMesh);
-  _helper = &helper;
-  _quadraticMesh = _helper->IsQuadraticSubMesh(aShape);
-  const bool skipMediumNodes = _quadraticMesh;
-
-  // build viscous layers if required
-  SMESH_ProxyMesh::Ptr proxyMesh = StdMeshers_ViscousLayers2D::Compute( aMesh, F );
-  if ( !proxyMesh )
-    return false;
-
-  // get all edges of a face
-  TError problem;
-  TWireVector wires =
-    StdMeshers_FaceSide::GetFaceWires( F, aMesh, skipMediumNodes, problem, _helper, proxyMesh );
-  int nbWires = wires.size();
-  if ( problem && !problem->IsOK() ) return error( problem );
-  if ( nbWires == 0 ) return error( "Problem in StdMeshers_FaceSide::GetFaceWires()");
-  if ( wires[0]->NbSegments() < 3 ) // ex: a circle with 2 segments
-    return error(COMPERR_BAD_INPUT_MESH,
-                 SMESH_Comment("Too few segments: ")<<wires[0]->NbSegments());
-
-  // compute average edge length
-  if (!_hypMaxElementArea)
-  {
-    _edgeLength = 0;
-    int nbSegments = 0;
-    for ( int iW = 0; iW < nbWires; ++iW )
-    {
-      StdMeshers_FaceSidePtr wire = wires[ iW ];
-      _edgeLength += wire->Length();
-      nbSegments  += wire->NbSegments();
-    }
-    if ( nbSegments )
-      _edgeLength /= nbSegments;
-  }
-
-  if (/*_hypLengthFromEdges &&*/ _edgeLength < DBL_MIN )
-    _edgeLength = 100;
-
-  Z nblf;                 //nombre de lignes fermees (enveloppe en tete)
-  Z *nudslf = NULL;       //numero du dernier sommet de chaque ligne fermee
-  R2 *uvslf = NULL;       
-  Z nbpti = 0;            //nombre points internes futurs sommets de la triangulation
-  R2 *uvpti = NULL;
-  
-  Z nbst;
-  R2 *uvst = NULL;
-  Z nbt;
-  Z *nust = NULL;
-  Z ierr = 0;
-
-  Z nutysu = 1;           // 1: il existe un fonction areteideale_()
-  // Z  nutysu=0;         // 0: on utilise aretmx
-  R aretmx = _edgeLength; // longueur max aretes future triangulation
-  if ( _hypMaxElementArea )
-    aretmx *= 1.5;
-  
-  nblf = nbWires;
-  
-  nudslf = new Z[1 + nblf];
-  nudslf[0] = 0;
-  int iw = 1;
-  int nbpnt = 0;
-
-  // count nb of input points
-  for ( int iW = 0; iW < nbWires; ++iW )
-  {
-    nbpnt += wires[iW]->NbPoints() - 1;
-    nudslf[iw++] = nbpnt;
-  }
-
-  uvslf = new R2[nudslf[nblf]];
-
-  double scalex, scaley;
-  ComputeScaleOnFace(aMesh, F, scalex, scaley);
-
-  // correspondence mefisto index --> Nodes
-  vector< const SMDS_MeshNode*> mefistoToDS(nbpnt, (const SMDS_MeshNode*)0);
-
-  bool isOk = false;
-
-  // fill input points UV
-  if ( LoadPoints(wires, uvslf, mefistoToDS, scalex, scaley) )
-  {
-    // Compute
-    aptrte(nutysu, aretmx,
-           nblf, nudslf, uvslf, nbpti, uvpti, nbst, uvst, nbt, nust, ierr);
-
-    if (ierr == 0)
-    {
-      StoreResult(nbst, uvst, nbt, nust, mefistoToDS, scalex, scaley);
-      isOk = true;
-    }
-    else
-    {
-      error(ierr,"Error in Triangulation (aptrte())");
-    }
-  }
-  if (nudslf != NULL) delete[]nudslf;
-  if (uvslf != NULL)  delete[]uvslf;
-  if (uvst != NULL)   delete[]uvst;
-  if (nust != NULL)   delete[]nust;
-
-  return isOk;
-}
-
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-bool StdMeshers_MEFISTO_2D::Evaluate(SMESH_Mesh & aMesh,
-                                     const TopoDS_Shape & aShape,
-                                     MapShapeNbElems& aResMap)
-{
-  TopoDS_Face F = TopoDS::Face(aShape.Oriented(TopAbs_FORWARD));
-
-  double aLen = 0.0;
-  int NbSeg = 0;
-  bool IsQuadratic = false;
-  bool IsFirst = true;
-  TopExp_Explorer exp(F,TopAbs_EDGE);
-  for(; exp.More(); exp.Next()) {
-    TopoDS_Edge E = TopoDS::Edge(exp.Current());
-    MapShapeNbElemsItr anIt = aResMap.find( aMesh.GetSubMesh(E) );
-    if( anIt == aResMap.end() ) continue;
-    std::vector<smIdType> aVec = (*anIt).second;
-    int nbe = Max(aVec[SMDSEntity_Edge],aVec[SMDSEntity_Quad_Edge]);
-    NbSeg += nbe;
-    if(IsFirst) {
-      IsQuadratic = ( aVec[SMDSEntity_Quad_Edge] > aVec[SMDSEntity_Edge] );
-      IsFirst = false;
-    }
-    double a,b;
-    TopLoc_Location L;
-    Handle(Geom_Curve) C = BRep_Tool::Curve(E,L,a,b);
-    gp_Pnt P1;
-    C->D0(a,P1);
-    double dp = (b-a)/nbe;
-    for(int i=1; i<=nbe; i++) {
-      gp_Pnt P2;
-      C->D0(a+i*dp,P2);
-      aLen += P1.Distance(P2);
-      P1 = P2;
-    }
-  }
-  if(NbSeg<1) {
-    std::vector<smIdType> aResVec(SMDSEntity_Last);
-    for(int i=SMDSEntity_Node; i<SMDSEntity_Last; i++) aResVec[i] = 0;
-    SMESH_subMesh * sm = aMesh.GetSubMesh(aShape);
-    aResMap.insert(std::make_pair(sm,aResVec));
-    SMESH_ComputeErrorPtr& smError = sm->GetComputeError();
-    smError.reset( new SMESH_ComputeError(COMPERR_ALGO_FAILED,
-                                          "Submesh can not be evaluated",this));
-    return false;
-  }
-  aLen = aLen/NbSeg; // middle length
-
-  _edgeLength = Precision::Infinite();
-  double tmpLength = Min( _edgeLength, aLen );
-
-  GProp_GProps G;
-  BRepGProp::SurfaceProperties(aShape,G);
-  double anArea = G.Mass();
-
-  int nbFaces = Precision::IsInfinite( tmpLength ) ? 0 :
-    (int)( anArea/(tmpLength*tmpLength*sqrt(3.)/4) );
-  int nbNodes = (int) ( nbFaces*3 - (NbSeg-1)*2 ) / 6;
-
-  std::vector<smIdType> aVec(SMDSEntity_Last);
-  for(int i=SMDSEntity_Node; i<SMDSEntity_Last; i++) aVec[i] = 0;
-  if(IsQuadratic) {
-    aVec[SMDSEntity_Quad_Triangle] = nbFaces;
-    aVec[SMDSEntity_Node] = (int)( nbNodes + nbFaces*3 - (NbSeg-1) );
-  }
-  else {
-    aVec[SMDSEntity_Node] = nbNodes;
-    aVec[SMDSEntity_Triangle] = nbFaces;
-  }
-  SMESH_subMesh * sm = aMesh.GetSubMesh(aShape);
-  aResMap.insert(std::make_pair(sm,aVec));
-
-  return true;
-}
-
-
-//=======================================================================
-//function : fixOverlappedLinkUV
-//purpose  : prevent failure due to overlapped adjacent links
-//=======================================================================
-
-static bool fixOverlappedLinkUV( R2& uv0, const R2& uv1, const R2& uv2 )
-{
-  gp_XY v1( uv0.x - uv1.x, uv0.y - uv1.y );
-  gp_XY v2( uv2.x - uv1.x, uv2.y - uv1.y );
-
-  double tol2 = DBL_MIN * DBL_MIN;
-  double sqMod1 = v1.SquareModulus();
-  if ( sqMod1 <= tol2 ) return false;
-  double sqMod2 = v2.SquareModulus();
-  if ( sqMod2 <= tol2 ) return false;
-
-  double dot = v1*v2;
-
-  // check sinus >= 1.e-3
-  const double minSin = 1.e-3;
-  if ( dot > 0 && 1 - dot * dot / ( sqMod1 * sqMod2 ) < minSin * minSin ) {
-    MESSAGE(" ___ FIX UV ____" << uv0.x << " " << uv0.y);
-    v1.SetCoord( -v1.Y(), v1.X() );
-    double delta = sqrt( sqMod1 ) * minSin;
-    if ( v1.X() < 0 )
-      uv0.x -= delta;
-    else
-      uv0.x += delta;
-    if ( v1.Y() < 0 )
-      uv0.y -= delta;
-    else
-      uv0.y += delta;
-// #ifdef _DEBUG_
-//     MESSAGE(" -> " << uv0.x << " " << uv0.y << " ");
-//     MESSAGE("v1( " << v1.X() << " " << v1.Y() << " ) " <<
-//       "v2( " << v2.X() << " " << v2.Y() << " ) ");
-//    MESSAGE("SIN: " << sqrt(1 - dot * dot / (sqMod1 * sqMod2)));
-//     v1.SetCoord( uv0.x - uv1.x, uv0.y - uv1.y );
-//     v2.SetCoord( uv2.x - uv1.x, uv2.y - uv1.y );
-//     gp_XY v3( uv2.x - uv0.x, uv2.y - uv0.y );
-//     sqMod1 = v1.SquareModulus();
-//     sqMod2 = v2.SquareModulus();
-//     dot = v1*v2;
-//     double sin = sqrt(1 - dot * dot / (sqMod1 * sqMod2));
-//     MESSAGE("NEW SIN: " << sin);
-// #endif
-    return true;
-  }
-  return false;
-}
-
-//=======================================================================
-//function : fixCommonVertexUV
-//purpose  : 
-//=======================================================================
-
-static bool fixCommonVertexUV (R2 &                 theUV,
-                               const TopoDS_Vertex& theV,
-                               const TopoDS_Face&   theF,
-                               const TopTools_IndexedDataMapOfShapeListOfShape & theVWMap,
-                               SMESH_Mesh &         theMesh,
-                               const double         theScaleX,
-                               const double         theScaleY,
-                               const bool           theCreateQuadratic)
-{
-  if( !theVWMap.Contains( theV )) return false;
-
-  // check if there is another wire sharing theV
-  const TopTools_ListOfShape& WList = theVWMap.FindFromKey( theV );
-  TopTools_ListIteratorOfListOfShape aWIt;
-  TopTools_MapOfShape aWires;
-  for ( aWIt.Initialize( WList ); aWIt.More(); aWIt.Next() )
-    aWires.Add( aWIt.Value() );
-  if ( aWires.Extent() < 2 ) return false;
-
-  TopoDS_Shape anOuterWire = BRepTools::OuterWire(theF);
-  TopoDS_Shape anInnerWire;
-  for ( aWIt.Initialize( WList ); aWIt.More() && anInnerWire.IsNull(); aWIt.Next() )
-    if ( !anOuterWire.IsSame( aWIt.Value() ))
-      anInnerWire = aWIt.Value();
-
-  TopTools_ListOfShape EList;
-  list< double >       UList;
-
-  // find edges of theW sharing theV
-  // and find 2d normal to them at theV
-  gp_Vec2d N(0.,0.);
-  TopoDS_Iterator itE( anInnerWire );
-  for (  ; itE.More(); itE.Next() )
-  {
-    const TopoDS_Edge& E = TopoDS::Edge( itE.Value() );
-    TopoDS_Iterator itV( E );
-    for ( ; itV.More(); itV.Next() )
-    {
-      const TopoDS_Vertex & V = TopoDS::Vertex( itV.Value() );
-      if ( !V.IsSame( theV ))
-        continue;
-      EList.Append( E );
-      Standard_Real u = BRep_Tool::Parameter( V, E );
-      UList.push_back( u );
-      double f, l;
-      Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface(E, theF, f, l);
-      gp_Vec2d d1;
-      gp_Pnt2d p;
-      C2d->D1( u, p, d1 );
-      gp_Vec2d n( d1.Y() * theScaleX, -d1.X() * theScaleY);
-      if ( E.Orientation() == TopAbs_REVERSED )
-        n.Reverse();
-      N += n.Normalized();
-    }
-  }
-
-  // define step size by which to move theUV
-
-  gp_Pnt2d nextUV; // uv of next node on edge, most distant of the four
-  gp_Pnt2d thisUV( theUV.x, theUV.y );
-  double maxDist = -DBL_MAX;
-  TopTools_ListIteratorOfListOfShape aEIt (EList);
-  list< double >::iterator aUIt = UList.begin();
-  for ( ; aEIt.More(); aEIt.Next(), aUIt++ )
-  {
-    const TopoDS_Edge& E = TopoDS::Edge( aEIt.Value() );
-    double f, l;
-    Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface(E, theF, f, l);
-
-    double umin = DBL_MAX, umax = -DBL_MAX;
-    SMDS_NodeIteratorPtr nIt = theMesh.GetSubMesh(E)->GetSubMeshDS()->GetNodes();
-    if ( !nIt->more() ) // no nodes on edge, only on vertices
-    {
-      umin = l;
-      umax = f;
-    }
-    else {
-      while ( nIt->more() ) {
-        const SMDS_MeshNode* node = nIt->next();
-        // check if node is medium
-        if ( theCreateQuadratic && SMESH_MesherHelper::IsMedium( node, SMDSAbs_Edge ))
-          continue;
-        SMDS_EdgePositionPtr epos = node->GetPosition();
-        double u = epos->GetUParameter();
-        if ( u < umin )
-          umin = u;
-        if ( u > umax )
-          umax = u;
-      }
-    }
-    bool isFirstCommon = ( *aUIt == f );
-    gp_Pnt2d uv = C2d->Value( isFirstCommon ? umin : umax );
-    double dist = thisUV.SquareDistance( uv );
-    if ( dist > maxDist ) {
-      maxDist = dist;
-      nextUV  = uv;
-    }
-  }
-  R2 uv0, uv1, uv2;
-  uv0.x = thisUV.X();   uv0.y = thisUV.Y();
-  uv1.x = nextUV.X();   uv1.y = nextUV.Y();
-  uv2.x = thisUV.X();   uv2.y = thisUV.Y();
-
-  uv1.x *= theScaleX;   uv1.y *= theScaleY;
-
-  if ( fixOverlappedLinkUV( uv0, uv1, uv2 ))
-  {
-    double step = thisUV.Distance( gp_Pnt2d( uv0.x, uv0.y ));
-
-    // move theUV along the normal by the step
-
-    N *= step;
-
-    MESSAGE("--fixCommonVertexUV move(" << theUV.x << " " << theUV.x
-            << ") by (" << N.X() << " " << N.Y() << ")" 
-            << endl << "--- MAX DIST " << maxDist);
-
-    theUV.x += N.X();
-    theUV.y += N.Y();
-
-    return true;
-  }
-  return false;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-bool StdMeshers_MEFISTO_2D::LoadPoints(TWireVector &                 wires,
-                                       R2 *                          uvslf,
-                                       vector<const SMDS_MeshNode*>& mefistoToDS,
-                                       double                        scalex,
-                                       double                        scaley)
-{
-  // to avoid passing same uv points for a vertex common to 2 wires
-  TopoDS_Face F;
-  TopTools_IndexedDataMapOfShapeListOfShape VWMap;
-  if ( wires.size() > 1 )
-  {
-    F = TopoDS::Face( _helper->GetSubShape() );
-    TopExp::MapShapesAndAncestors( F, TopAbs_VERTEX, TopAbs_WIRE, VWMap );
-    int nbVertices = 0;
-    for ( size_t iW = 0; iW < wires.size(); ++iW )
-      nbVertices += wires[ iW ]->NbEdges();
-    if ( nbVertices == VWMap.Extent() )
-      VWMap.Clear(); // wires have no common vertices
-  }
-
-  int m = 0;
-
-  for ( size_t iW = 0; iW < wires.size(); ++iW )
-  {
-    const vector<UVPtStruct>& uvPtVec = wires[ iW ]->GetUVPtStruct();
-    if ((int) uvPtVec.size() != wires[ iW ]->NbPoints() ) {
-      return error(COMPERR_BAD_INPUT_MESH,SMESH_Comment("Unexpected nb of points on wire ")
-                   << iW << ": " << uvPtVec.size()<<" != "<<wires[ iW ]->NbPoints()
-                   << ", probably because of invalid node parameters on geom edges");
-    }
-    if ( m + uvPtVec.size()-1 > mefistoToDS.size() ) {
-      MESSAGE("Wrong mefistoToDS.size: "<<mefistoToDS.size()<<" < "<<m + uvPtVec.size()-1);
-      return error("Internal error");
-    }
-
-    list< int > mOnVertex;
-    vector<UVPtStruct>::const_iterator uvPt = uvPtVec.begin();
-    for ( ++uvPt; uvPt != uvPtVec.end(); ++uvPt )
-    {
-      // bind mefisto ID to node
-      mefistoToDS[m] = uvPt->node;
-      // set UV
-      uvslf[m].x = uvPt->u * scalex;
-      uvslf[m].y = uvPt->v * scaley;
-      switch ( uvPt->node->GetPosition()->GetTypeOfPosition())
-      {
-      case SMDS_TOP_VERTEX:
-        mOnVertex.push_back( m );
-        break;
-      case SMDS_TOP_EDGE:
-        // In order to detect degenerated faces easily, we replace
-        // nodes on a degenerated edge by node on the vertex of that edge
-        if ( _helper->IsDegenShape( uvPt->node->getshapeId() ))
-        {
-          int edgeID = uvPt->node->getshapeId();
-          SMESH_subMesh* edgeSM = _helper->GetMesh()->GetSubMeshContaining( edgeID );
-          SMESH_subMeshIteratorPtr smIt = edgeSM->getDependsOnIterator( /*includeSelf=*/0,
-                                                                        /*complexShapeFirst=*/0);
-          if ( smIt->more() )
-          {
-            SMESH_subMesh* vertexSM = smIt->next();
-            SMDS_NodeIteratorPtr nIt = vertexSM->GetSubMeshDS()->GetNodes();
-            if ( nIt->more() )
-              mefistoToDS[m] = nIt->next();
-          }
-        }
-        break;
-      default:;
-      }
-      m++;
-    }
-
-    int mFirst = mOnVertex.front(), mLast = m - 1;
-    list< int >::iterator mIt = mOnVertex.begin();
-    for ( ; mIt != mOnVertex.end(); ++mIt)
-    {
-      int m = *mIt;
-      if ( iW && !VWMap.IsEmpty()) { // except outer wire
-        // avoid passing same uv point for a vertex common to 2 wires
-        int vID = mefistoToDS[m]->getshapeId();
-        TopoDS_Vertex V = TopoDS::Vertex( _helper->GetMeshDS()->IndexToShape( vID ));
-        if ( fixCommonVertexUV( uvslf[m], V, F, VWMap, *_helper->GetMesh(),
-                                scalex, scaley, _quadraticMesh )) {
-          myNodesOnCommonV.push_back( mefistoToDS[m] );
-          continue;
-        }
-      }
-      // prevent failure on overlapped adjacent links,
-      // check only links ending in vertex nodes
-      int mB = m - 1, mA = m + 1; // indices Before and After
-      if ( mB < mFirst ) mB = mLast;
-      if ( mA > mLast )  mA = mFirst;
-      fixOverlappedLinkUV (uvslf[ mB ], uvslf[ m ], uvslf[ mA ]);
-    }
-  }
-
-#ifdef DUMP_POINTS
-  cout << "MEFISTO INPUT************" << endl;
-  for ( int i =0; i < m; ++i )
-    cout << i << ": \t" << uvslf[i].x << ", " << uvslf[i].y
-         << " Node " << mefistoToDS[i]->GetID()<< endl;
-#endif
-
-  return true;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-void StdMeshers_MEFISTO_2D::ComputeScaleOnFace(SMESH_Mesh &        /*aMesh*/,
-                                               const TopoDS_Face & aFace,
-                                               double &            scalex,
-                                               double &            scaley)
-{
-  TopoDS_Wire W = BRepTools::OuterWire(aFace);
-
-  double xmin = 1.e300;         // min & max of face 2D parametric coord.
-  double xmax = -1.e300;
-  double ymin = 1.e300;
-  double ymax = -1.e300;
-  const int nbp = 23;
-  scalex = 1;
-  scaley = 1;
-
-  TopExp_Explorer wexp(W, TopAbs_EDGE);
-  for ( ; wexp.More(); wexp.Next())
-  {
-    const TopoDS_Edge & E = TopoDS::Edge( wexp.Current() );
-    double f, l;
-    Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface(E, aFace, f, l);
-    if ( C2d.IsNull() ) continue;
-    double du = (l - f) / double (nbp);
-    for (int i = 0; i <= nbp; i++)
-    {
-      double param = f + double (i) * du;
-      gp_Pnt2d p = C2d->Value(param);
-      if (p.X() < xmin)
-        xmin = p.X();
-      if (p.X() > xmax)
-        xmax = p.X();
-      if (p.Y() < ymin)
-        ymin = p.Y();
-      if (p.Y() > ymax)
-        ymax = p.Y();
-    }
-  }
-  double xmoy = (xmax + xmin) / 2.;
-  double ymoy = (ymax + ymin) / 2.;
-  double xsize = xmax - xmin;
-  double ysize = ymax - ymin;
-
-  TopLoc_Location L;
-  Handle(Geom_Surface) S = BRep_Tool::Surface(aFace,L);       // 3D surface
-
-  double length_x = 0;
-  double length_y = 0;
-  gp_Pnt PX0 = S->Value(xmin, ymoy);
-  gp_Pnt PY0 = S->Value(xmoy, ymin);
-  double dx = xsize / double (nbp);
-  double dy = ysize / double (nbp);
-  for (int i = 1; i <= nbp; i++)
-  {
-    double x = xmin + double (i) * dx;
-    gp_Pnt PX = S->Value(x, ymoy);
-    double y = ymin + double (i) * dy;
-    gp_Pnt PY = S->Value(xmoy, y);
-    length_x += PX.Distance(PX0);
-    length_y += PY.Distance(PY0);
-    PX0 = PX;
-    PY0 = PY;
-  }
-  scalex = length_x / xsize;
-  scaley = length_y / ysize;
-  double xyratio = xsize*scalex/(ysize*scaley);
-  const double maxratio = 1.e2;
-  if (xyratio > maxratio) {
-    scaley *= xyratio / maxratio;
-  }
-  else if (xyratio < 1./maxratio) {
-    scalex *= 1 / xyratio / maxratio;
-  }
-}
-
-// namespace
-// {
-//   bool isDegenTria( const SMDS_MeshNode * nn[3] )
-//   {
-//     SMESH_TNodeXYZ p1( nn[0] );
-//     SMESH_TNodeXYZ p2( nn[1] );
-//     SMESH_TNodeXYZ p3( nn[2] );
-//     gp_XYZ vec1 = p2 - p1;
-//     gp_XYZ vec2 = p3 - p1;
-//     gp_XYZ cross = vec1 ^ vec2;
-//     const double eps = 1e-100;
-//     return ( fabs( cross.X() ) < eps &&
-//              fabs( cross.Y() ) < eps &&
-//              fabs( cross.Z() ) < eps );
-//   }
-// }
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-void StdMeshers_MEFISTO_2D::StoreResult(Z nbst, R2 * uvst, Z nbt, Z * nust,
-                                        vector< const SMDS_MeshNode*>&mefistoToDS,
-                                        double scalex, double scaley)
-{
-  _helper->SetElementsOnShape( true );
-
-  TopoDS_Face F = TopoDS::Face( _helper->GetSubShape() );
-  Handle(Geom_Surface) S = BRep_Tool::Surface( F );
-
-  //const size_t nbInputNodes = mefistoToDS.size();
-
-  Z n = mefistoToDS.size(); // nb input points
-  mefistoToDS.resize( nbst );
-  for ( ; n < nbst; n++)
-  {
-    if (!mefistoToDS[n])
-    {
-      double u = uvst[n][0] / scalex;
-      double v = uvst[n][1] / scaley;
-      gp_Pnt P = S->Value(u, v);
-
-      mefistoToDS[n] = _helper->AddNode( P.X(), P.Y(), P.Z(), 0, u, v );
-    }
-  }
-
-  Z m = 0;
-
-  // triangle points must be in trigonometric order if face is Forward
-  // else they must be put clockwise
-
-  int i1 = 1, i2 = 2;
-  if ( F.Orientation() != TopAbs_FORWARD )
-    std::swap( i1, i2 );
-
-  const SMDS_MeshNode * nn[3];
-  for (n = 1; n <= nbt; n++)
-  {
-    // const bool allNodesAreOld = ( nust[m + 0] <= nbInputNodes &&
-    //                               nust[m + 1] <= nbInputNodes &&
-    //                               nust[m + 2] <= nbInputNodes );
-    nn[ 0 ] = mefistoToDS[ nust[m++] - 1 ];
-    nn[ 1 ] = mefistoToDS[ nust[m++] - 1 ];
-    nn[ 2 ] = mefistoToDS[ nust[m++] - 1 ];
-    m++;
-
-    // avoid creating degenetrated faces
-    bool isDegen = ( _helper->HasDegeneratedEdges() &&
-                     ( nn[0] == nn[1] || nn[1] == nn[2] || nn[2] == nn[0] ));
-
-    // It was an attempt to fix a problem of a zero area face whose all nodes
-    // are on one staight EDGE. But omitting this face makes a hole in the mesh :(
-    // if ( !isDegen && allNodesAreOld )
-    //   isDegen = isDegenTria( nn );
-
-    if ( !isDegen )
-      _helper->AddFace( nn[0], nn[i1], nn[i2] );
-  }
-
-  // remove bad elements built on vertices shared by wires
-
-  list<const SMDS_MeshNode*>::iterator itN = myNodesOnCommonV.begin();
-  for ( ; itN != myNodesOnCommonV.end(); itN++ )
-  {
-    const SMDS_MeshNode* node = *itN;
-    SMDS_ElemIteratorPtr invElemIt = node->GetInverseElementIterator();
-    while ( invElemIt->more() )
-    {
-      const SMDS_MeshElement* elem = invElemIt->next();
-      SMDS_ElemIteratorPtr itN = elem->nodesIterator();
-      int nbSame = 0;
-      while ( itN->more() )
-        if ( itN->next() == node)
-          nbSame++;
-      if (nbSame > 1) {
-        MESSAGE( "RM bad element " << elem->GetID());
-        _helper->GetMeshDS()->RemoveElement( elem );
-      }
-    }
-  }
-}
diff --git a/src/StdMeshers/StdMeshers_MEFISTO_2D.hxx b/src/StdMeshers/StdMeshers_MEFISTO_2D.hxx
deleted file mode 100644 (file)
index 0940356..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright (C) 2007-2021  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
-//
-
-//  SMESH SMESH : implementation of SMESH idl descriptions
-//  File   : StdMeshers_MEFISTO_2D.hxx
-//           Moved here from SMESH_MEFISTO_2D.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//
-#ifndef _StdMeshers_MEFISTO_2D_HXX_
-#define _StdMeshers_MEFISTO_2D_HXX_
-
-#include "SMESH_StdMeshers.hxx"
-
-#include "SMESH_Algo.hxx"
-
-class TopoDS_Face;
-class StdMeshers_MaxElementArea;
-class StdMeshers_LengthFromEdges;
-class SMDS_MeshNode;
-class SMESH_MesherHelper;
-class StdMeshers_FaceSide;
-
-#include <vector>
-#include <list>
-#include "Rn.h"
-
-class STDMESHERS_EXPORT StdMeshers_MEFISTO_2D: public SMESH_2D_Algo
-{
-public:
-  StdMeshers_MEFISTO_2D(int hypId, SMESH_Gen* gen);
-  virtual ~StdMeshers_MEFISTO_2D();
-
-  virtual bool CheckHypothesis(SMESH_Mesh& aMesh,
-                               const TopoDS_Shape& aShape,
-                               SMESH_Hypothesis::Hypothesis_Status& aStatus);
-
-  virtual bool Compute(SMESH_Mesh& aMesh,
-                       const TopoDS_Shape& aShape);
-
-  virtual bool Evaluate(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape,
-                        MapShapeNbElems& aResMap);
-
-  typedef boost::shared_ptr< StdMeshers_FaceSide> StdMeshers_FaceSidePtr;
-  typedef std::vector< StdMeshers_FaceSidePtr > TWireVector;
-
-  bool LoadPoints(TWireVector &                       wires,
-                  R2*                                 uvslf, 
-                  std::vector< const SMDS_MeshNode*>& mefistoToDS,
-                  double scalex, double               scaley);
-
-  void ComputeScaleOnFace(SMESH_Mesh& aMesh,
-                          const TopoDS_Face& aFace,
-                          double& scalex,
-                          double& scaley);
-
-  void StoreResult (Z nbst, R2* uvst, Z nbt, Z* nust, 
-                    std::vector< const SMDS_MeshNode*>& mefistoToDS,
-                    double scalex, double scaley);
-                                          
-protected:
-  double                            _edgeLength;
-  double                            _maxElementArea;
-  const StdMeshers_MaxElementArea*  _hypMaxElementArea;
-  const StdMeshers_LengthFromEdges* _hypLengthFromEdges;
-
-  std::list<const SMDS_MeshNode*> myNodesOnCommonV;
-
-  SMESH_MesherHelper* _helper; // tool for working with quadratic elements
-};
-
-#endif
index c8a21daa7debf65487c877b16eb0a431018f4b03..d0d178201bb9d15f2beb90e7f58b65b6ac388f5d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 7e3eee33fda0bb533ebc748b3eecce970fc34d8e..06bdcc2c2250bba68982ebd39b91fbc5e0161d6a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index aa75d840a4c5376bd3edf7c76764f081244e3e73..586b8aa72052393cc16fd9fde1ddd9fcb7663ace 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d1f275954168e10df3f89dde52cd7c2c834e0eff..6f41a7263de5205995e80e3e8f30943bc2f18612 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 034d1eb41381a9605f8e9ccb2ac20b8b8a53a937..03c611ec475fc171af5661e00a54e1db6848b161 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 453d4e0b764b281489c2129bf1a0ae490c5b95c6..ccc99286505768c7c4c6a7d4f1ad0665942a864f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f6a8fc517ff7ce20b0164f609a26fc1dafc3e7be..e1616b7614f3d1ca366593924420a6defdab5973 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 85b29a369227a8ba795806702de80715a0bc7b6b..d1e8bc2fb983bfa9ced7b25a7c47215c035fde3c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e5bc9b11128a8163ca0400a64ec5f9a480651706..baad46e11bebbe715b5a70bf83195c1885311afd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 12593f5958229c849de2beb4bf365afcbe2f6484..ae5dcdddf20c91272e977266fbb6e5cea9a94022 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ff087427917ffa5d4623f220ed5165f2da45715b..beaa5aae1989f79d8eb3c3ca45b42954dece124e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5ab05f7b57c7a7b8058777f843ab1d593b94cb75..5857418abdf26a7f9e0083c5b51959cb66bf8a21 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index eb125cae23c5b35223a604f6c9c6b7a94f7b5569..c2a89b38c7960a699b53551721b323c020882847 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index dea18fac80a115aeb9971388a3d1e22b33345b79..4e637ba44122b4bcab6fd618e748abe9a325a7b9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 987050455fdc41df0e1fc17a757e333c31a57444..5216451aff99cbfbb625422f301461c4f92f2d54 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a51c55085275a488bf3924e446b50f34367fe204..c8e8b2bf297ae9390e427b7d292457d714160f28 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f6a304aafea6aac498747a1d3e8c42f7df558bd0..3e59c3b28342b1c27cb83e299a0bc3090dc1bbd0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 38fe2c12cccf51e1caf1ec1af4ff58d0028e0937..0213e8232209ff81229f21cbe6d0a9d57c16193b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 3f128010c254d2c6ce3c8f35876380f4d0e92b8c..ea8889e33e1f7f398e8b60a7e4f3cdbd8c64622d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d665b7745c3861225887bce21f9f0484face02f3..885964f50cb93de8b7e301c31975b2bb892cfd10 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2a8baf1ec8e0f0ffa180ff4ccf7e5c3db46c3d9f..db0bca48782d57e85541ab388cf617c0ebeae3af 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -95,7 +95,7 @@ namespace
   /*!
    * \brief Auxiliary mesh
    */
-  struct TmpMesh: public SMESH_Mesh
+  struct TmpMesh: public SMESH_SequentialMesh
   {
     TmpMesh() {
       _isShapeToMesh = (_id = 0);
@@ -712,15 +712,14 @@ namespace
 
   void pointsToPython(const std::vector<gp_XYZ>& p)
   {
-#ifdef _DEBUG_
-    for ( size_t i = SMESH_Block::ID_V000; i < p.size(); ++i )
+    if (SALOME::VerbosityActivated())
     {
-      cout << "mesh.AddNode( " << p[i].X() << ", "<< p[i].Y() << ", "<< p[i].Z() << ") # " << i <<" " ;
-      SMESH_Block::DumpShapeID( i, cout ) << endl;
+      for ( size_t i = SMESH_Block::ID_V000; i < p.size(); ++i )
+      {
+        cout << "mesh.AddNode( " << p[i].X() << ", "<< p[i].Y() << ", "<< p[i].Z() << ") # " << i <<" " ;
+        SMESH_Block::DumpShapeID( i, cout ) << endl;
+      }
     }
-#else
-    (void)p; // unused in release mode
-#endif
   }
 
 } // namespace
@@ -3283,10 +3282,12 @@ bool StdMeshers_Prism_3D::IsApplicable(const TopoDS_Shape & shape, bool toCheckA
         continue;
       }
     }
-#ifdef _DEBUG_
-    TopTools_IndexedMapOfShape allShapes; // usage: allShapes.FindIndex( s )
-    TopExp::MapShapes( shape, allShapes );
-#endif
+
+    if (SALOME::VerbosityActivated())
+    {
+      TopTools_IndexedMapOfShape allShapes; // usage: allShapes.FindIndex( s )
+      TopExp::MapShapes( shape, allShapes );
+    }
 
     TopTools_IndexedDataMapOfShapeListOfShape facesOfEdge;
     TopTools_ListIteratorOfListOfShape faceIt;
@@ -3475,9 +3476,11 @@ bool StdMeshers_Prism_3D::IsApplicable(const TopoDS_Shape & shape, bool toCheckA
         if ( iLoop > allFaces.Extent() * 10 )
         {
           isOK = false;
-#ifdef _DEBUG_
-          cerr << "BUG: infinite loop in StdMeshers_Prism_3D::IsApplicable()" << endl;
-#endif
+
+          if(SALOME::VerbosityActivated())
+          {
+            cerr << "BUG: infinite loop in StdMeshers_Prism_3D::IsApplicable()" << endl;
+          }
         }
       } // while hasAdvanced
 
@@ -4342,7 +4345,9 @@ bool StdMeshers_PrismAsBlock::IsForwardEdge(SMESHDS_Mesh*           meshDS,
 void StdMeshers_PrismAsBlock::faceGridToPythonDump(const SMESH_Block::TShapeID face,
                                                    const int                   nb)
 {
-#ifdef _DEBUG_
+  if(!SALOME::VerbosityActivated())
+    return;
+
   gp_XYZ pOnF[6] = { gp_XYZ(0,0,0), gp_XYZ(0,0,1),
                      gp_XYZ(0,0,0), gp_XYZ(0,1,0),
                      gp_XYZ(0,0,0), gp_XYZ(1,0,0) };
@@ -4378,10 +4383,6 @@ void StdMeshers_PrismAsBlock::faceGridToPythonDump(const SMESH_Block::TShapeID f
            << n << ", " << n+1 << ", "
            << n+nb+2 << ", " << n+nb+1 << "]) " << endl;
     }
-#else
-  (void)face; // unused in release mode
-  (void)nb;   // unused in release mode
-#endif
 }
 
 //================================================================================
@@ -4989,7 +4990,9 @@ int StdMeshers_PrismAsBlock::TSideFace::InsertSubShapes(TBlockShapes& shapeMap)
 
 void StdMeshers_PrismAsBlock::TSideFace::dumpNodes(int nbNodes) const
 {
-#ifdef _DEBUG_
+  if (!SALOME::VerbosityActivated())
+    return;
+
   cout << endl << "NODES OF FACE "; SMESH_Block::DumpShapeID( myID, cout ) << endl;
   THorizontalEdgeAdaptor* hSize0 = (THorizontalEdgeAdaptor*) HorizCurve(0);
   cout << "Horiz side 0: "; hSize0->dumpNodes(nbNodes); cout << endl;
@@ -5000,9 +5003,6 @@ void StdMeshers_PrismAsBlock::TSideFace::dumpNodes(int nbNodes) const
   TVerticalEdgeAdaptor* vSide1 = (TVerticalEdgeAdaptor*) VertiCurve(1);
   cout << "Verti side 1: "; vSide1->dumpNodes(nbNodes); cout << endl;
   delete hSize0; delete hSize1; delete vSide0; delete vSide1;
-#else
-  (void)nbNodes; // unused in release mode
-#endif
 }
 
 //================================================================================
@@ -5043,14 +5043,13 @@ gp_Pnt StdMeshers_PrismAsBlock::TVerticalEdgeAdaptor::Value(const Standard_Real
 
 void StdMeshers_PrismAsBlock::TVerticalEdgeAdaptor::dumpNodes(int nbNodes) const
 {
-#ifdef _DEBUG_
+  if (!SALOME::VerbosityActivated())
+    return;
+
   for ( int i = 0; i < nbNodes && i < (int)myNodeColumn->size(); ++i )
     cout << (*myNodeColumn)[i]->GetID() << " ";
   if ( nbNodes < (int) myNodeColumn->size() )
     cout << myNodeColumn->back()->GetID();
-#else
-  (void)nbNodes; // unused in release mode
-#endif
 }
 
 //================================================================================
@@ -5074,7 +5073,9 @@ gp_Pnt StdMeshers_PrismAsBlock::THorizontalEdgeAdaptor::Value(const Standard_Rea
 
 void StdMeshers_PrismAsBlock::THorizontalEdgeAdaptor::dumpNodes(int nbNodes) const
 {
-#ifdef _DEBUG_
+  if (!SALOME::VerbosityActivated())
+    return;
+
   // Not bedugged code. Last node is sometimes incorrect
   const TSideFace* side = mySide;
   double u = 0;
@@ -5108,9 +5109,6 @@ void StdMeshers_PrismAsBlock::THorizontalEdgeAdaptor::dumpNodes(int nbNodes) con
   side->GetColumns( u , col, col2 );
   if ( n != col->second[ i ] )
     cout << col->second[ i ]->GetID();
-#else
-  (void)nbNodes; // unused in release mode
-#endif
 }
 
 //================================================================================
index 9e288f5aad0c518c17ccfd96bc524f9471c81de1..57a23407cab97bc990e965d11c5f44a903ccfeb7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -33,6 +33,7 @@
 #include "SMESH_Block.hxx"
 #include "SMESH_Comment.hxx"
 #include "SMESH_Mesh.hxx"
+#include "SMESH_SequentialMesh.hxx"
 #include "SMESH_MesherHelper.hxx"
 #include "SMESH_TypeDefs.hxx"
 #include "SMESH_subMesh.hxx"
@@ -117,7 +118,7 @@ namespace Prism_3D
 
 // ===============================================================
 /*!
- * \brief Tool analyzing and giving access to a prism geometry 
+ * \brief Tool analyzing and giving access to a prism geometry
  *  treating it like a block, i.e. the four side faces are
  *  emulated by division/uniting of missing/excess faces.
  *  It also manage associations between block sub-shapes and a mesh.
@@ -200,7 +201,7 @@ class STDMESHERS_EXPORT StdMeshers_PrismAsBlock: public SMESH_Block
    */
   bool GetLayersTransformation(std::vector<gp_Trsf> &      trsf,
                                const Prism_3D::TPrismTopo& prism) const;
-  
+
   /*!
    * \brief Return pointer to mesh
     * \retval SMESH_Mesh - mesh
@@ -389,7 +390,7 @@ private:
   SMESH_ComputeErrorPtr myError;
 
   // container of 4 side faces
-  TSideFace*            mySide; 
+  TSideFace*            mySide;
   // node columns for each base edge
   std::vector< TParam2ColumnMap >                       myParam2ColumnMaps;
   // to find a column for a node by edge SMESHDS Index
index dddcc5b7baefce70daf27aead4d5d9499fd6bbfd..5b04588926e2380a03afd1620a49bcfc83e22136 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index dd7a2996a615f136608b35eaf17b327dba9b12d4..b1a10b3d78c4b932f4e1d3839713bab0746462ef 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 351f20fbd9c8e615cb39dabfbaa861711c44e5a3..2e9de0d42b3c0ff9d9417eefd9fa526d7304a123 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 98cdf7d8d15934f63cf7b74725677b601e2aee7c..1dc507cf34e3e1de6117ddf92de98dcac3f9492e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 11be5242505555b015c16288f8f833dd3c4b6f0d..fb0a5df7b987a7dfb285dd354637f986d216328b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index baf06d4f6b78f74a6f24c2d5bfba27f37f0c49dc..bdc6cca97f892d62e24f565c0d804190addab22e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index fedf95845222705584f396fa44d650fe2a50f753..9284c91adad61a57fdf3a6567d6a44c2dc6ce0c4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -124,14 +124,19 @@ namespace {
   bool storeShapeForDebug(const TopoDS_Shape& shape)
   {
     bool toShow;
-#ifdef _DEBUG_
-    const char* type[] ={"COMPOUND","COMPSOLID","SOLID","SHELL","FACE","WIRE","EDGE","VERTEX"};
-    BRepTools::Write( shape, SMESH_Comment("/tmp/") << type[shape.ShapeType()] << "_"
-                      << shape.TShape().operator->() << ".brep");
-    toShow = !theMeshDS[0]; // no show
-#else
-    toShow = theMeshDS[0]; // no show
-#endif
+
+    if (SALOME::VerbosityActivated())
+    {
+      const char* type[] ={"COMPOUND","COMPSOLID","SOLID","SHELL","FACE","WIRE","EDGE","VERTEX"};
+      BRepTools::Write( shape, SMESH_Comment("/tmp/") << type[shape.ShapeType()] << "_"
+                        << shape.TShape().operator->() << ".brep");
+      toShow = !theMeshDS[0]; // no show
+    }
+    else
+    {
+      toShow = theMeshDS[0]; // no show
+    }
+
     if ( toShow ) {
       show_shape( shape, "avoid warning: show_shape() defined but not used");
       show_list( "avoid warning: show_list() defined but not used", list< TopoDS_Edge >() );
@@ -542,10 +547,11 @@ bool StdMeshers_ProjectionUtils::FindSubShapeAssociation(const TopoDS_Shape& the
   //       b) find association of a couple of vertices and recall self.
   //
 
-#ifdef _DEBUG_
-  theMeshDS[0] = theMesh1->GetMeshDS(); // debug
-  theMeshDS[1] = theMesh2->GetMeshDS();
-#endif
+  if (SALOME::VerbosityActivated())
+  {
+    theMeshDS[0] = theMesh1->GetMeshDS(); // debug
+    theMeshDS[1] = theMesh2->GetMeshDS();
+  }
 
   // =================================================================================
   // 1) Is it the case of associating a group member -> another group? (PAL16202, 16203)
@@ -2803,10 +2809,10 @@ namespace StdMeshers_ProjectionUtils
       const double D = M.Determinant();
       if ( D < 1e-3 * ( newSrcOrig - _srcOrig ).Modulus() )
       {
-#ifdef _DEBUG_
-        cerr << "TrsfFinder3D::Invert()"
+        if (SALOME::VerbosityActivated())
+          cerr << "TrsfFinder3D::Invert()"
              << "D " << M.Determinant() << " IsSingular " << M.IsSingular() << endl;
-#endif
+
         return false;
       }
       gp_Mat Minv = M.Inverted();
index 3fc3d2d05f998a1fdd0f557bb140a4427eda7b93..e4078dc4ec265b6196a8dadf0b5c9d6042e72347 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -326,9 +326,9 @@ namespace StdMeshers_ProjectionUtils
    * \param srcShape - source shape
    * \param srcMesh - source mesh
    */
-  void SetEventListener(SMESH_subMesh* subMesh,
-                        TopoDS_Shape   srcShape,
-                        SMESH_Mesh*    srcMesh);
+  STDMESHERS_EXPORT void SetEventListener(SMESH_subMesh* subMesh,
+                                          TopoDS_Shape   srcShape,
+                                          SMESH_Mesh*    srcMesh);
 
   /*!
    * \brief Return a boundary EDGE (or all boundary EDGEs) of edgeContainer
index fbeb5946647618a4734e9090c7b7884e25f35d56..cf181f9e6bdeb87a105428e7383c57f59341f0c7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5b5d6a1677c4f45296b8a5b64feb3a7d851bb3eb..98a155574491af336cc5bd46a3b6e164c09d9335 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a2d40bf3c43a64cc0f93f7566a2d83a878853cc1..10fac944cb6e75937c141854974aa230df52d900 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index fbfd2cd76350b63338dd3fd177bd6a79858fb4dc..4945e4ffcc0edf6b3a4512a64395a13d8943525e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index bbc874cf9da73bf50d8dbb7a52403027ba958744..b73b3a0fe54d44ddd80eb78a98058443f5cef85b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
 #include "StdMeshers_Projection_2D.hxx"
 
+#include "StdMeshers_FaceSide.hxx"
+#include "StdMeshers_NumberOfSegments.hxx"
 #include "StdMeshers_ProjectionSource2D.hxx"
 #include "StdMeshers_ProjectionUtils.hxx"
-#include "StdMeshers_FaceSide.hxx"
-
-#include "SMDS_EdgePosition.hxx"
-#include "SMDS_FacePosition.hxx"
-#include "SMESHDS_Hypothesis.hxx"
-#include "SMESHDS_Mesh.hxx"
-#include "SMESHDS_SubMesh.hxx"
-#include "SMESH_Block.hxx"
-#include "SMESH_Comment.hxx"
-#include "SMESH_Gen.hxx"
-#include "SMESH_Mesh.hxx"
-#include "SMESH_MeshAlgos.hxx"
-#include "SMESH_MeshEditor.hxx"
-#include "SMESH_MesherHelper.hxx"
-#include "SMESH_Pattern.hxx"
-#include "SMESH_subMesh.hxx"
-#include "SMESH_subMeshEventListener.hxx"
+#include "StdMeshers_Quadrangle_2D.hxx"
+#include "StdMeshers_Regular_1D.hxx"
+
+#include <ObjectPool.hxx>
+#include <SMDS_EdgePosition.hxx>
+#include <SMDS_FacePosition.hxx>
+#include <SMESHDS_Hypothesis.hxx>
+#include <SMESHDS_Mesh.hxx>
+#include <SMESHDS_SubMesh.hxx>
+#include <SMESH_Block.hxx>
+#include <SMESH_Comment.hxx>
+#include <SMESH_Gen.hxx>
+#include <SMESH_Mesh.hxx>
+#include <SMESH_SequentialMesh.hxx>
+#include <SMESH_MeshAlgos.hxx>
+#include <SMESH_MeshEditor.hxx>
+#include <SMESH_MesherHelper.hxx>
+#include <SMESH_Pattern.hxx>
+#include <SMESH_subMesh.hxx>
+#include <SMESH_subMeshEventListener.hxx>
 
 #include <utilities.h>
 
 #include <GeomAPI_ExtremaCurveCurve.hxx>
 #include <GeomAPI_ProjectPointOnSurf.hxx>
 #include <GeomAdaptor_Curve.hxx>
+#include <GeomAdaptor_Surface.hxx>
+
+#include <Basics_OCCTVersion.hxx>
+
+#if OCC_VERSION_LARGE < 0x07070000
 #include <GeomAdaptor_HCurve.hxx>
 #include <GeomAdaptor_HSurface.hxx>
-#include <GeomAdaptor_Surface.hxx>
+#endif
+
 #include <GeomLib_IsPlanarSurface.hxx>
 #include <Geom_Line.hxx>
 #include <IntCurveSurface_HInter.hxx>
@@ -314,7 +325,7 @@ namespace {
       break;
     }
     case TopAbs_EDGE: {
-      
+
       // Get submeshes of sub-vertices
       const map< int, SMESH_subMesh * >& subSM = sm->DependsOn();
       if ( subSM.size() != 2 )
@@ -701,7 +712,7 @@ namespace {
     while ( elemIt->more() ) // loop on all mesh faces on srcFace
     {
       const SMDS_MeshElement* elem = elemIt->next();
-      const int nbN = elem->NbCornerNodes(); 
+      const int nbN = elem->NbCornerNodes();
       tgtNodes.resize( nbN );
       helper->SetElementsOnShape( false );
       for ( int i = 0; i < nbN; ++i ) // loop on nodes of the source element
@@ -775,7 +786,7 @@ namespace {
 
     // check node positions
 
-    if ( !tgtFace.IsPartner( srcFace ) )
+    // if ( !tgtFace.IsPartner( srcFace ) ) for NETGEN 6 which sets wrong UV
     {
       helper->ToFixNodeParameters( true );
 
@@ -980,29 +991,382 @@ namespace {
     }  // loop on all mesh faces on srcFace
 
     return true;
+
+  } // projectBy2DSimilarity()
+
+  //================================================================================
+  /*!
+   * \brief Quadrangle algorithm computing structured triangle mesh
+   */
+  //================================================================================
+
+  struct QuadAlgo : public StdMeshers_Quadrangle_2D
+  {
+    QuadAlgo( int hypId, SMESH_Gen* gen ): StdMeshers_Quadrangle_2D( hypId, gen ) {}
+
+    bool Compute( SMESH_MesherHelper & theHelper, const StdMeshers_FaceSidePtr& theWire )
+    {
+      SMESH_Mesh& theMesh = *theHelper.GetMesh();
+
+      // set sides of a quad FACE
+      FaceQuadStruct::Ptr quad( new FaceQuadStruct );
+      quad->side.reserve( 4 );
+      quad->face = theWire->Face();
+      for ( int i = 0; i < 4; ++i )
+        quad->side.push_back
+          ( StdMeshers_FaceSide::New( quad->face, theWire->Edge(i), &theMesh, i < QUAD_TOP_SIDE,
+                                      /*skipMedium=*/true, theWire->FaceHelper() ));
+      if ( !setNormalizedGrid( quad ))
+        return false;
+
+      // make internal nodes
+      SMESHDS_Mesh *  meshDS = theMesh.GetMeshDS();
+      int         geomFaceID = meshDS->ShapeToIndex( quad->face );
+      Handle(Geom_Surface) S = BRep_Tool::Surface( quad->face );
+      for (   int i = 1; i < quad->iSize - 1; i++)
+        for ( int j = 1; j < quad->jSize - 1; j++)
+        {
+          UVPtStruct& uvPnt = quad->UVPt( i, j );
+          gp_Pnt P          = S->Value( uvPnt.u, uvPnt.v );
+          uvPnt.node        = meshDS->AddNode(P.X(), P.Y(), P.Z());
+          meshDS->SetNodeOnFace( uvPnt.node, geomFaceID, uvPnt.u, uvPnt.v );
+        }
+
+      // make triangles
+      for (   int i = 0; i < quad->iSize-1; i++) {
+        for ( int j = 0; j < quad->jSize-1; j++)
+        {
+          const SMDS_MeshNode* a = quad->uv_grid[ j      * quad->iSize + i    ].node;
+          const SMDS_MeshNode* b = quad->uv_grid[ j      * quad->iSize + i + 1].node;
+          const SMDS_MeshNode* c = quad->uv_grid[(j + 1) * quad->iSize + i + 1].node;
+          const SMDS_MeshNode* d = quad->uv_grid[(j + 1) * quad->iSize + i    ].node;
+          theHelper.AddFace(a, b, c);
+          theHelper.AddFace(a, c, d);
+        }
+      }
+      return true;
+    }
+  };
+
+  //================================================================================
+  /*!
+   * \brief Local coordinate system of a triangle. Return barycentric coordinates of a point
+   */
+  //================================================================================
+
+  struct TriaCoordSys
+  {
+    gp_Pnt myO;   //!< origin
+    gp_Vec myX;   //!< X axis
+    gp_Vec myY;   //!< Y axis
+    gp_XY  myUV1; //!< UV of 2nd node in this CS
+    gp_XY  myUV2; //!< UV of 3d  node in this CS
+
+    void Init( const gp_Pnt p1, const gp_Pnt p2, const gp_Pnt p3 )
+    {
+      myO = p1;
+
+      myX = gp_Vec( p1, p2 );
+      myUV1.SetCoord( myX.Magnitude(), 0 );
+      myX /= myUV1.X();
+
+      gp_Vec v13( p1, p3 );
+      myY = myX.CrossCrossed( myX, v13 );
+      myY.Normalize();
+      myUV2.SetCoord( v13 * myX, v13 * myY );
+
+      return;
+    }
+
+    void GetBaryCoords( const gp_Pnt p, double& bc1, double& bc2, double& bc3 ) const
+    {
+      gp_Vec op( myO, p );
+      gp_XY uv( op * myX, op * myY );
+
+      SMESH_MeshAlgos::GetBarycentricCoords( uv,
+                                             gp::Origin2d().XY(), myUV1, myUV2,
+                                             bc1, bc2 );
+      bc3 = 1 - bc1 - bc2;
+    }
+  };
+
+
+  //================================================================================
+  /*!
+   * \brief Structured 2D mesh of a quadrilateral FACE; is used in projectQuads()
+   */
+  //================================================================================
+
+  struct QuadMesh : public SMESH_SequentialMesh
+  {
+    ObjectPool< TriaCoordSys > _traiLCSPool;
+    SMESH_ElementSearcher*     _elemSearcher;
+    SMESH_Gen                  _sgen;
+    SMESH_MesherHelper         _helper;
+
+    QuadMesh(const TopoDS_Face& face):
+      _elemSearcher( nullptr ), _helper( *this )
+    {
+      _meshDS = new SMESHDS_Mesh( 0, true );
+      _gen = &_sgen;
+      ShapeToMesh( face );
+    }
+    ~QuadMesh() { delete _elemSearcher; }
+
+    // --------------------------------------------------------------------------------
+    /*!
+     * \brief Compute quadrangle mesh and prepare for face search
+     */
+    bool Compute( const TSideVector& wires, int nbSeg1, int nbSeg2, bool isSourceMesh )
+    {
+      if ( wires.size() > 1 || wires[0]->NbEdges() != 4 )
+        return false;
+
+      // compute quadrangle mesh
+
+      SMESH_Hypothesis* algo1D = new StdMeshers_Regular_1D( _sgen.GetANewId(), &_sgen );
+      AddHypothesis( GetShapeToMesh(), algo1D->GetID() );
+
+      StdMeshers_NumberOfSegments * nbHyp1, *nbHyp2;
+      nbHyp1 = new StdMeshers_NumberOfSegments( _sgen.GetANewId(), &_sgen );
+      nbHyp1->SetNumberOfSegments( nbSeg1 );
+      AddHypothesis( wires[0]->Edge(0), nbHyp1->GetID() );
+      AddHypothesis( wires[0]->Edge(2), nbHyp1->GetID() );
+
+      nbHyp2 = new StdMeshers_NumberOfSegments( _sgen.GetANewId(), &_sgen );
+      nbHyp2->SetNumberOfSegments( nbSeg2 );
+      AddHypothesis( wires[0]->Edge(1), nbHyp2->GetID() );
+      AddHypothesis( wires[0]->Edge(3), nbHyp2->GetID() );
+
+      if ( !_sgen.Compute( *this, GetShapeToMesh(), SMESH_Gen::SHAPE_ONLY_UPWARD ))
+        return false;
+
+      QuadAlgo algo2D( _sgen.GetANewId(), &_sgen );
+      if ( !algo2D.Compute( _helper, wires[0] ))
+        return false;
+
+      // remove edges
+      // for ( SMDS_ElemIteratorPtr eIt = _meshDS->elementsIterator( SMDSAbs_Edge ); eIt->more(); )
+      //   _meshDS->RemoveFreeElement( eIt->next(), /*sm=*/0, /*groups=*/false );
+
+      // _meshDS->Modified(); // setMyModified();
+      // _meshDS->CompactMesh();
+
+      // create TriaCoordSys for every triangle
+      if ( isSourceMesh )
+      {
+        for ( SMDS_ElemIteratorPtr fIt = _meshDS->elementsIterator( SMDSAbs_Face ); fIt->more(); )
+        {
+          const SMDS_MeshElement* tria = fIt->next();
+          TriaCoordSys* triaLCS = _traiLCSPool.getNew();
+          triaLCS->Init( SMESH_NodeXYZ( tria->GetNode( 0 )),
+                         SMESH_NodeXYZ( tria->GetNode( 1 )),
+                         SMESH_NodeXYZ( tria->GetNode( 2 )));
+          // int i= tria->GetID() - NbEdges() - 1;
+          // cout << "ID from TRIA " << i << " - poolSize " << _traiLCSPool.nbElements() <<
+          //   ( _traiLCSPool[i]!= triaLCS ? " KO" : "" )  << endl;
+        }
+        _elemSearcher = SMESH_MeshAlgos::GetElementSearcher( *_meshDS );
+      }
+      return true;
+    }
+    // --------------------------------------------------------------------------------
+    /*!
+     * \brief Find a source triangle including a point and return its barycentric coordinates
+     */
+    const SMDS_MeshElement* FindFaceByPoint( const gp_Pnt p,
+                                             double & bc1, double & bc2, double & bc3 )
+    {
+      const SMDS_MeshElement* tria = nullptr;
+      gp_XYZ projPnt = _elemSearcher->Project( p, SMDSAbs_Face, &tria );
+
+      int lcsID = tria->GetID() - NbEdges() - 1;
+      const TriaCoordSys* triaLCS = _traiLCSPool[ lcsID ];
+      triaLCS->GetBaryCoords( projPnt, bc1, bc2, bc3 );
+
+      return tria;
+    }
+    // --------------------------------------------------------------------------------
+    /*!
+     * \brief Return a point lying on a corresponding target triangle
+     */
+    gp_Pnt GetPoint( const SMDS_MeshElement* srcTria, double & bc1, double & bc2, double & bc3 )
+    {
+      const SMDS_MeshElement* tgtTria = _meshDS->FindElement( srcTria->GetID() );
+      gp_Pnt p = ( bc1 * SMESH_NodeXYZ( tgtTria->GetNode(0) ) +
+                   bc2 * SMESH_NodeXYZ( tgtTria->GetNode(1) ) +
+                   bc3 * SMESH_NodeXYZ( tgtTria->GetNode(2) ) );
+      return p;
+    }
+    // --------------------------------------------------------------------------------
+    /*!
+     * \brief Return an UV of point lying on a corresponding target triangle
+     */
+    gp_XY GetUV( const SMDS_MeshElement* srcTria,
+                 double & bc1, double & bc2, double & bc3 )
+    {
+      const SMDS_MeshElement* tgtTria = _meshDS->FindElement( srcTria->GetID() );
+      TopoDS_Shape tgtShape = GetShapeToMesh();
+      const TopoDS_Face& face = TopoDS::Face( tgtShape );
+
+      gp_XY p = ( bc1 * _helper.GetNodeUV( face, tgtTria->GetNode(0) ) +
+                  bc2 * _helper.GetNodeUV( face, tgtTria->GetNode(1) ) +
+                  bc3 * _helper.GetNodeUV( face, tgtTria->GetNode(2) ) );
+      return p;
+    }
+  };
+
+  //================================================================================
+  /*!
+   * \brief Calculate average size of faces
+   *         Actually calculate average of min and max face size
+   */
+  //================================================================================
+
+  double calcAverageFaceSize( SMESHDS_SubMesh* sm )
+  {
+    double minLen = Precision::Infinite(), maxLen = 0;
+    for ( SMDS_ElemIteratorPtr fIt = sm->GetElements(); fIt->more(); )
+    {
+      const SMDS_MeshElement* face = fIt->next();
+      int nbNodes = face->NbCornerNodes();
+      gp_XYZ pPrev = SMESH_NodeXYZ( face->GetNode( nbNodes - 1 ));
+      for ( int i = 0; i < nbNodes; ++i )
+      {
+        SMESH_NodeXYZ p( face->GetNode( i ));
+        double len = ( p - pPrev ).SquareModulus();
+        minLen = Min( len, minLen );
+        maxLen = Max( len, maxLen );
+        pPrev = p;
+      }
+    }
+    return 0.5 * ( Sqrt( minLen ) + Sqrt( maxLen ));
   }
 
   //================================================================================
   /*!
-   * \brief Perform projection in case of quadrilateral faces
+   * \brief Perform projection from a quadrilateral FACE to another quadrilateral one
    */
   //================================================================================
 
-  bool projectQuads(const TopoDS_Face&                 /*tgtFace*/,
-                    const TopoDS_Face&                 /*srcFace*/,
-                    const TSideVector&                 /*tgtWires*/,
-                    const TSideVector&                 /*srcWires*/,
-                    const TAssocTool::TShapeShapeMap&  /*shape2ShapeMap*/,
-                    TAssocTool::TNodeNodeMap&          /*src2tgtNodes*/,
-                    const bool                         /*is1DComputed*/)
+  bool projectQuads(const TopoDS_Face&                 tgtFace,
+                    const TopoDS_Face&                 srcFace,
+                    const TSideVector&                 tgtWires,
+                    const TSideVector&                 srcWires,
+                    const TAssocTool::TShapeShapeMap&  shape2ShapeMap,
+                    TAssocTool::TNodeNodeMap&          src2tgtNodes,
+                    const bool                         is1DComputed)
   {
-    // SMESH_Mesh * tgtMesh = tgtWires[0]->GetMesh();
-    // SMESH_Mesh * srcMesh = srcWires[0]->GetMesh();
-    // //SMESHDS_Mesh * tgtMeshDS = tgtMesh->GetMeshDS();
-    // SMESHDS_Mesh * srcMeshDS = srcMesh->GetMeshDS();
+    SMESH_Mesh * tgtMesh = tgtWires[0]->GetMesh();
+    SMESH_Mesh * srcMesh = srcWires[0]->GetMesh();
+    SMESHDS_Mesh * tgtMeshDS = tgtMesh->GetMeshDS();
+    SMESHDS_Mesh * srcMeshDS = srcMesh->GetMeshDS();
+
+    if ( srcWires.size() != 1 || // requirements below can be weaken
+         SMESH_MesherHelper::Count( tgtFace, TopAbs_EDGE, /*ignoreSame=*/true) != 4 ||
+         SMESH_MesherHelper::Count( srcFace, TopAbs_EDGE, /*ignoreSame=*/true) != 4 )
+      return false;
+
+    // make auxiliary structured meshes that will be used to get corresponding
+    // points on the target FACE
+    QuadMesh srcQuadMesh( srcFace ), tgtQuadMesh( tgtFace );
+    double avgSize = calcAverageFaceSize( srcMeshDS->MeshElements( srcFace ));
+    int nbSeg1 = (int) Max( 2., Max( srcWires[0]->EdgeLength(0),
+                                     srcWires[0]->EdgeLength(2)) / avgSize );
+    int nbSeg2 = (int) Max( 2., Max( srcWires[0]->EdgeLength(1),
+                                     srcWires[0]->EdgeLength(3)) / avgSize );
+    if ( !srcQuadMesh.Compute( srcWires, nbSeg1, nbSeg2, /*isSrc=*/true ) ||
+         !tgtQuadMesh.Compute( tgtWires, nbSeg1, nbSeg2, /*isSrc=*/false ))
+      return false;
+
+    // Make new faces
+
+    // prepare the helper to adding quadratic elements if necessary
+    SMESH_MesherHelper* helper = tgtWires[0]->FaceHelper();
+    helper->IsQuadraticSubMesh( tgtFace );
+
+    SMESHDS_SubMesh* srcSubDS = srcMeshDS->MeshElements( srcFace );
+    if ( !is1DComputed && srcSubDS->NbElements() )
+      helper->SetIsQuadratic( srcSubDS->GetElements()->next()->IsQuadratic() );
+
+    SMESH_MesherHelper* srcHelper = srcWires[0]->FaceHelper();
+    SMESH_MesherHelper  edgeHelper( *tgtMesh );
+    edgeHelper.ToFixNodeParameters( true );
+
+    const SMDS_MeshNode* nullNode = 0;
+    TAssocTool::TNodeNodeMap::iterator srcN_tgtN;
+
+    SMDS_ElemIteratorPtr elemIt = srcSubDS->GetElements();
+    vector< const SMDS_MeshNode* > tgtNodes;
+    while ( elemIt->more() ) // loop on all mesh faces on srcFace
+    {
+      const SMDS_MeshElement* elem = elemIt->next();
+      const int nbN = elem->NbCornerNodes();
+      tgtNodes.resize( nbN );
+      helper->SetElementsOnShape( false );
+      for ( int i = 0; i < nbN; ++i ) // loop on nodes of the source element
+      {
+        const SMDS_MeshNode* srcNode = elem->GetNode(i);
+        srcN_tgtN = src2tgtNodes.insert( make_pair( srcNode, nullNode )).first;
+        if ( srcN_tgtN->second == nullNode )
+        {
+          // create a new node
+          gp_Pnt srcP = SMESH_TNodeXYZ( srcNode );
+          double bc[3];
+          const SMDS_MeshElement* auxF = srcQuadMesh.FindFaceByPoint( srcP, bc[0], bc[1], bc[2] );
+          gp_Pnt                  tgtP = tgtQuadMesh.GetPoint( auxF, bc[0], bc[1], bc[2] );
+          SMDS_MeshNode* n = helper->AddNode( tgtP.X(), tgtP.Y(), tgtP.Z() );
+          srcN_tgtN->second = n;
+          switch ( srcNode->GetPosition()->GetTypeOfPosition() )
+          {
+          case SMDS_TOP_FACE:
+          {
+            gp_XY tgtUV = tgtQuadMesh.GetUV( auxF, bc[0], bc[1], bc[2] );
+            tgtMeshDS->SetNodeOnFace( n, helper->GetSubShapeID(), tgtUV.X(), tgtUV.Y() );
+            break;
+          }
+          case SMDS_TOP_EDGE:
+          {
+            const TopoDS_Edge& srcE = TopoDS::Edge( srcMeshDS->IndexToShape( srcNode->GetShapeID()));
+            const TopoDS_Edge& tgtE = TopoDS::Edge( shape2ShapeMap( srcE, /*isSrc=*/true ));
+            double srcU = srcHelper->GetNodeU( srcE, srcNode );
+            tgtMeshDS->SetNodeOnEdge( n, tgtE, srcU );
+            edgeHelper.SetSubShape( tgtE );
+            double tol = BRep_Tool::MaxTolerance( tgtE, TopAbs_VERTEX ), distXYZ[4];
+            /*isOk = */edgeHelper.CheckNodeU( tgtE, n, srcU, 2 * tol, /*force=*/true, distXYZ );
+            //if ( isOk )
+            tgtMeshDS->MoveNode( n, distXYZ[1], distXYZ[2], distXYZ[3] );
+            SMDS_EdgePositionPtr( n->GetPosition() )->SetUParameter( srcU );
+            break;
+          }
+          case SMDS_TOP_VERTEX:
+          {
+            const TopoDS_Shape & srcV = srcMeshDS->IndexToShape( srcNode->getshapeId() );
+            const TopoDS_Shape & tgtV = shape2ShapeMap( srcV, /*isSrc=*/true );
+            tgtP = BRep_Tool::Pnt( TopoDS::Vertex( tgtV ));
+            tgtMeshDS->MoveNode( n, tgtP.X(), tgtP.Y(), tgtP.Z() );
+            tgtMeshDS->SetNodeOnVertex( n, TopoDS::Vertex( tgtV ));
+            break;
+          }
+          default:;
+          }
+        }
+        tgtNodes[i] = srcN_tgtN->second;
+      }
+      // create a new face
+      helper->SetElementsOnShape( true );
+      switch ( nbN )
+      {
+      case 3: helper->AddFace(tgtNodes[0], tgtNodes[1], tgtNodes[2]); break;
+      case 4: helper->AddFace(tgtNodes[0], tgtNodes[1], tgtNodes[2], tgtNodes[3]); break;
+      default: helper->AddPolygonalFace( tgtNodes );
+      }
+    } //  // loop on all mesh faces on srcFace
+
+    return true;
+
+    // below is projection of a structured source mesh
 
-    // if ( srcWires[0]->NbEdges() != 4 )
-    //   return false;
     // if ( !is1DComputed )
     //   return false;
     // for ( int iE = 0; iE < 4; ++iE )
@@ -1065,7 +1429,7 @@ namespace {
     //   const SMDS_MeshElement* elem = elemIt->next();
     //   TFaceConn& tgtNodes = newFacesVec[ iFaceSrc++ ];
 
-    //   const int nbN = elem->NbCornerNodes(); 
+    //   const int nbN = elem->NbCornerNodes();
     //   tgtNodes.resize( nbN );
     //   for ( int i = 0; i < nbN; ++i ) // loop on nodes of the source element
     //   {
@@ -1079,7 +1443,7 @@ namespace {
     //       {
     //         tgtNodeOrXY.first = srcN_tgtN->second; // tgt node exists
     //       }
-    //       else 
+    //       else
     //       {
     //         // find XY of src node within the quadrilateral srcFace
     //         if ( !block.ComputeParameters( SMESH_TNodeXYZ( srcNode ),
@@ -1526,8 +1890,13 @@ namespace {
     SMESHDS_Mesh* tgtMeshDS = tgtMesh->GetMeshDS();
 
     Handle(Geom_Surface)             tgtSurface = BRep_Tool::Surface( theTgtFace );
+#if OCC_VERSION_LARGE < 0x07070000
     Handle(GeomAdaptor_HSurface) tgtSurfAdaptor = new GeomAdaptor_HSurface( tgtSurface );
     Handle(GeomAdaptor_HCurve)    piercingCurve = new GeomAdaptor_HCurve( thePiercingLine );
+#else
+    Handle(GeomAdaptor_Surface) tgtSurfAdaptor = new GeomAdaptor_Surface( tgtSurface );
+    Handle(GeomAdaptor_Curve)    piercingCurve = new GeomAdaptor_Curve( thePiercingLine );
+#endif
     IntCurveSurface_HInter intersect;
 
     SMESH_MesherHelper* srcHelper = theSrcWires[0]->FaceHelper();
@@ -1766,7 +2135,6 @@ bool StdMeshers_Projection_2D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape&
   if ( !projDone )
   {
     // projection in case of quadrilateral faces
-    // NOT IMPLEMENTED, returns false
     projDone = projectQuads( tgtFace, srcFace, tgtWires, srcWires,
                              shape2ShapeMap, _src2tgtNodes, is1DComputed);
   }
@@ -2151,8 +2519,10 @@ bool StdMeshers_Projection_2D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape&
       TAssocTool::Morph morph( srcWires );
       morph.Perform( helper, tgtWires, helper.GetSurface( tgtFace ),
                      _src2tgtNodes, /*moveAll=*/true );
+      if(SALOME::VerbosityActivated())
+        cout << "StdMeshers_Projection_2D: Projection mesh IsDistorted2D() ==> do morph" << endl;
 
-      if ( !fixDistortedFaces( helper, tgtWires ))
+      if ( !fixDistortedFaces( helper, tgtWires )) // smooth and check
         return error("Invalid mesh generated");
     }
   // ---------------------------
index ab5579a9166ef1012e0626aed76c8d7a6fa3c5d9..a73f64ae16e46150d6c56aac73dde6c9de03cdfc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d9b744effbe1045ed2e9b72a50951c6d0f1fa3ae..5c6e5d01492c890e9b36f7cee05962cdea51c2f6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 476fa22cd7381edb37946ca6ac75ebec450fc139..b1c6a422eee7f066f6e416b7ec048a997cc858c5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e970dc72c5d66c30d1d49d4141297a8596a40365..d8fc7522cfbed7a655c08ea49c66ace651168447 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0a09d5db3f1fc36e439d667a2bef51689799be55..1d9c2632be2e47b166b5b9f9be259580deb33672 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 3f6730bf9a0ea0f6c0b9b93a0136437b479e9a90..88f79d159bac305c7872ba678f7b5f6a4d3e547c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -30,6 +30,7 @@
 #include "SMESH_Gen.hxx"
 #include "SMESH_MAT2d.hxx"
 #include "SMESH_Mesh.hxx"
+#include "SMESH_SequentialMesh.hxx"
 #include "SMESH_MeshEditor.hxx"
 #include "SMESH_MesherHelper.hxx"
 #include "SMESH_ProxyMesh.hxx"
@@ -144,7 +145,7 @@ public:
     return true;
   }
 };
+
 //================================================================================
 /*!
  * \brief Constructor sets algo features
@@ -203,7 +204,7 @@ bool StdMeshers_QuadFromMedialAxis_1D2D::CheckHypothesis(SMESH_Mesh&         aMe
 namespace
 {
   typedef map< const SMDS_MeshNode*, list< const SMDS_MeshNode* > > TMergeMap;
-  
+
   //================================================================================
   /*!
    * \brief Sinuous face
@@ -236,7 +237,7 @@ namespace
   /*!
    * \brief Temporary mesh
    */
-  struct TmpMesh : public SMESH_Mesh
+  struct TmpMesh : public SMESH_SequentialMesh
   {
     TmpMesh()
     {
@@ -506,7 +507,7 @@ namespace
     theSinuEdges[1].clear();
     theShortEdges[0].clear();
     theShortEdges[1].clear();
-   
+
     vector<TopoDS_Edge> & allEdges = theSinuFace._edges;
     const size_t nbEdges = allEdges.size();
     if ( nbEdges < 4 && theSinuFace._nbWires == 1 )
@@ -841,7 +842,7 @@ namespace
 
 
     // Find 1D algo to mesh branchEdge
-  
+
     // look for a most local 1D hyp assigned to the FACE
     int mostSimpleShape = -1, maxShape = TopAbs_EDGE;
     TopoDS_Edge edge;
@@ -1185,6 +1186,8 @@ namespace
         if ( !npCloseV._node || npCloseV._node == npVert._node )
         {
           npProj = npCloseN;
+          if ( i+1 < projToMerge.size() && u2NPClose == projToMerge[ i+1 ])
+            ++i;
           thePointsOnE.erase( u2NPClose );
           continue;
         }
@@ -1448,7 +1451,7 @@ namespace
       nIn = nodeParams.rbegin()->second;
     else
       nIn = u2n->second;
-    
+
     // find position of distant nodes in uvsOut and uvsIn
     size_t iDistOut, iDistIn;
     for ( iDistOut = 0; iDistOut < uvsOut.size(); ++iDistOut )
@@ -2149,6 +2152,7 @@ bool StdMeshers_QuadFromMedialAxis_1D2D::computeQuads( SMESH_MesherHelper& theHe
 bool StdMeshers_QuadFromMedialAxis_1D2D::Compute(SMESH_Mesh&         theMesh,
                                                  const TopoDS_Shape& theShape)
 {
+  std::cout << "helper_quad " << theMesh.IsParallel() << std::endl;
   SMESH_MesherHelper helper( theMesh );
   helper.SetSubShape( theShape );
 
index 26ae139436ca04fbaa3afef42d487996fa3ba55c..6141a186f5798776f8dd4dde8f444a514294f4e9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 029d9472883b637a337694588f9c6f9ca0746ab4..dd9db00fb92acac885cb3ae43701c23b208257e3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -26,6 +26,7 @@
 
 #include "SMDS_IteratorOnIterators.hxx"
 #include "SMDS_SetIterator.hxx"
+#include "SMDS_VolumeTool.hxx"
 #include "SMESHDS_GroupBase.hxx"
 #include "SMESHDS_Mesh.hxx"
 #include "SMESH_Algo.hxx"
@@ -59,6 +60,23 @@ enum EQuadNature { NOT_QUAD, QUAD, DEGEN_QUAD, PYRAM_APEX = 4, TRIA_APEX = 0 };
 // std-like iterator used to get coordinates of nodes of mesh element
 typedef SMDS_StdIterator< SMESH_TNodeXYZ, SMDS_ElemIteratorPtr > TXyzIterator;
 
+//================================================================================
+/*!
+ * \brief Return ID of pyramid base face, for debug
+ */
+//================================================================================
+
+int getFaceID(const SMDS_MeshElement* pyram)
+{
+  if ( pyram )
+    if ( const SMDS_MeshElement* f = SMDS_Mesh::FindFace( pyram->GetNode(0),
+                                                          pyram->GetNode(1),
+                                                          pyram->GetNode(2),
+                                                          pyram->GetNode(3)))
+      return f->GetID();
+  return -1;
+}
+
 namespace
 {
   //================================================================================
@@ -350,8 +368,6 @@ void StdMeshers_QuadToTriaAdaptor::MergePiramids( const SMDS_MeshElement*     Pr
                                                   const SMDS_MeshElement*     PrmJ,
                                                   set<const SMDS_MeshNode*> & nodesToMove)
 {
-  // cout << endl << "Merge " << PrmI->GetID() << " " << PrmJ->GetID() << " "
-  //      << PrmI->GetNode(4)->GetID() << " " << PrmJ->GetNode(4)->GetID() << endl;
   const SMDS_MeshNode* Nrem = PrmJ->GetNode(4); // node to remove
   //int nbJ = Nrem->NbInverseElements( SMDSAbs_Volume );
   SMESH_TNodeXYZ Pj( Nrem );
@@ -361,12 +377,51 @@ void StdMeshers_QuadToTriaAdaptor::MergePiramids( const SMDS_MeshElement*     Pr
   if ( CommonNode == Nrem ) return; // already merged
   //int nbI = CommonNode->NbInverseElements( SMDSAbs_Volume );
   SMESH_TNodeXYZ Pi( CommonNode );
-  gp_XYZ Pnew = /*( nbI*Pi + nbJ*Pj ) / (nbI+nbJ);*/ 0.5 * ( Pi + Pj );
+  // gp_XYZ Pnew = /*( nbI*Pi + nbJ*Pj ) / (nbI+nbJ);*/ 0.5 * ( Pi + Pj );
+  
+  SMDS_VolumeTool volumeTool;
+  double pyrad1Vol = 0.0; 
+  double pyrad2Vol = 0.0;
+  // To get the pyramids vols
+  if ( volumeTool.Set( PrmI ) )
+    pyrad1Vol = volumeTool.GetSize();
+  if ( volumeTool.Set( PrmJ ) )
+    pyrad2Vol = volumeTool.GetSize();
+
+  typedef SMDS_StdIterator< const SMDS_MeshElement*, SMDS_ElemIteratorPtr > elemIterator;
+  elemIterator iteratorsEnd;
+
+  vector< const SMDS_MeshElement* > associatedElementsI ( elemIterator( CommonNode->GetInverseElementIterator(SMDSAbs_Volume)), iteratorsEnd);
+  if ( associatedElementsI.size() > 1 )
+    for ( size_t i = 0; i < associatedElementsI.size(); ++i )
+    {
+      const SMDS_MeshElement* element = associatedElementsI[i];
+      if ( element != PrmI && volumeTool.Set( element ) )
+        pyrad1Vol += volumeTool.GetSize();    
+    }  
+  vector< const SMDS_MeshElement* > associatedElementsJ ( elemIterator( Nrem->GetInverseElementIterator(SMDSAbs_Volume)), iteratorsEnd);
+  if ( associatedElementsJ.size() > 1 )
+    for ( size_t i = 0; i < associatedElementsJ.size(); ++i )
+    {
+      const SMDS_MeshElement* element = associatedElementsJ[i];
+      if ( element != PrmJ && volumeTool.Set( element )  )
+        pyrad2Vol += volumeTool.GetSize(); //associatedVolPyramid->GetSize();        
+   }
+
+  double totalVol = pyrad1Vol + pyrad2Vol;
+  // The new Apex can't be computed based in an arithmetic median, 
+  // Geometric mediam is considered to be better
+  // gp_XYZ Pnew = /*( nbI*Pi + nbJ*Pj ) / (nbI+nbJ);*/ 0.5 * ( Pi + Pj );
+  ASSERT( totalVol > 0. );
+  gp_XYZ Pnew = Pi * pyrad1Vol/totalVol + Pj * pyrad2Vol/totalVol;
+
   CommonNode->setXYZ( Pnew.X(), Pnew.Y(), Pnew.Z() );
 
   nodesToMove.insert( CommonNode );
   nodesToMove.erase ( Nrem );
 
+  //cout << "MergePiramids F" << getFaceID( PrmI ) << " - F" << getFaceID( PrmJ ) << endl;
+
   typedef SMDS_StdIterator< const SMDS_MeshElement*, SMDS_ElemIteratorPtr > TStdElemIterator;
   TStdElemIterator itEnd;
 
@@ -472,6 +527,61 @@ void StdMeshers_QuadToTriaAdaptor::MergeAdjacent(const SMDS_MeshElement*    PrmI
   return;
 }
 
+//================================================================================
+/*!
+ * \brief Decrease height of a given or adjacent pyramids if height difference
+ *        is too large
+ *  \param [in] pyram - a pyramid to treat
+ *  \param [inout] h2 - pyramid's square height
+ *  \return bool - true if the height changes
+ */
+//================================================================================
+
+bool StdMeshers_QuadToTriaAdaptor::DecreaseHeightDifference( const SMDS_MeshElement* thePyram,
+                                                             const double            theH2 )
+{
+  const double allowedFactor2 = 2. * 2.;
+
+  bool modif = false;
+  myNodes[0] = thePyram->GetNode( 3 );
+  for ( int i = 0; i < 4; ++i )
+  {
+    myNodes[1] = thePyram->GetNode( i );
+    SMDS_Mesh::GetElementsByNodes( myNodes, myAdjPyrams, SMDSAbs_Volume );
+    myNodes[0] = myNodes[1];
+
+    for ( const SMDS_MeshElement* pyramAdj : myAdjPyrams )
+    {
+      if ( pyramAdj == thePyram )
+        continue;
+      if ( !myPyramHeight2.IsBound( pyramAdj ))
+        continue;
+      double h2Adj = Abs( myPyramHeight2( pyramAdj ));
+      double h2    = Abs( theH2 );
+      if ( h2Adj > h2 )
+      {
+        if ( h2 * allowedFactor2 < h2Adj )
+        {
+          // bind negative value to allow finding pyramids whose height must change
+          myPyramHeight2.Bind( pyramAdj, - h2 * allowedFactor2 );
+          modif = true;
+        }
+      }
+      else
+      {
+        if ( h2Adj * allowedFactor2 < h2 )
+        {
+          // bind negative value to allow finding pyramids whose height must change
+          myPyramHeight2.Bind( thePyram, - h2Adj * allowedFactor2 );
+          modif = true;
+        }
+      }
+    }
+  }
+  return modif;
+}
+
+
 //================================================================================
 /*!
  * \brief Constructor
@@ -504,9 +614,11 @@ StdMeshers_QuadToTriaAdaptor::~StdMeshers_QuadToTriaAdaptor()
 //=======================================================================
 
 static gp_Pnt FindBestPoint(const gp_Pnt& P1, const gp_Pnt& P2,
-                            const gp_Pnt& PC, const gp_Vec& V)
+                            const gp_Pnt& PC, const gp_Vec& V,
+                            double & shift)
 {
   gp_Pnt Pbest = PC;
+  shift = 0;
   const double a2 = P1.SquareDistance(P2);
   const double b2 = P1.SquareDistance(PC);
   const double c2 = P2.SquareDistance(PC);
@@ -517,7 +629,7 @@ static gp_Pnt FindBestPoint(const gp_Pnt& P1, const gp_Pnt& P2,
     const double Vsize = V.Magnitude();
     if ( fabs( Vsize ) > std::numeric_limits<double>::min() )
     {
-      const double shift = sqrt( a2 + (b2-c2)*(b2-c2)/16/a2 - (b2+c2)/2 );
+      shift = sqrt( a2 + (b2-c2)*(b2-c2)/16/a2 - (b2+c2)/2 );
       Pbest.ChangeCoord() += shift * V.XYZ() / Vsize;
     }
   }
@@ -603,7 +715,7 @@ static bool HasIntersection3(const gp_Pnt& P,  const gp_Pnt& PC, gp_Pnt&       P
 
 //=======================================================================
 //function : HasIntersection
-//purpose  : Auxilare for CheckIntersection()
+//purpose  : Auxiliary for CheckIntersection()
 //=======================================================================
 
 static bool HasIntersection(const gp_Pnt& P, const gp_Pnt& PC, gp_Pnt& Pint,
@@ -991,19 +1103,23 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh&         aMesh,
         case QUAD:
           {
             if(!isRev) VNorm.Reverse();
-            double xc = 0., yc = 0., zc = 0.;
+            //double xc = 0., yc = 0., zc = 0.;
+            double h, hMin = Precision::Infinite();
+            gp_Pnt PCbest = PC;
             int i = 1;
             for(; i<=4; i++) {
               gp_Pnt Pbest;
               if(!isRev)
-                Pbest = FindBestPoint(PN(i), PN(i+1), PC, VN(i).Reversed());
+                Pbest = FindBestPoint(PN(i), PN(i+1), PC, VN(i).Reversed(), h);
               else
-                Pbest = FindBestPoint(PN(i), PN(i+1), PC, VN(i));
-              xc += Pbest.X();
-              yc += Pbest.Y();
-              zc += Pbest.Z();
+                Pbest = FindBestPoint(PN(i), PN(i+1), PC, VN(i), h);
+              if ( 0 < h && h < hMin )
+              {
+                PCbest = Pbest;
+                hMin = h;
+              }
             }
-            gp_Pnt PCbest(xc/4., yc/4., zc/4.);
+            //gp_Pnt PCbest(xc/4., yc/4., zc/4.);
 
             // check PCbest
             double height = PCbest.Distance(PC);
@@ -1027,6 +1143,9 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh&         aMesh,
             else
               aPyram = helper->AddVolume( FNodes[0], FNodes[1], FNodes[2], FNodes[3], NewNode );
             myPyramids.push_back(aPyram);
+            //cout << "F" << face->GetID() << " - V" << aPyram->GetID() << endl;
+
+            myPyramHeight2.Bind( aPyram, PCbest.SquareDistance( PC ));
 
             // add triangles to result map
             helper->SetElementsOnShape( false );
@@ -1236,13 +1355,19 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh)
 
     // Find pyramid peak
 
-    gp_XYZ PCbest(0., 0., 0.); // pyramid peak
+    gp_XYZ PCbest = PC.XYZ();//(0., 0., 0.); // pyramid peak
+    double h, hMin = Precision::Infinite();
     int i = 1;
     for ( ; i <= 4; i++ ) {
-      gp_Pnt Pbest = FindBestPoint(PN(i), PN(i+1), PC, VN(i));
-      PCbest += Pbest.XYZ();
+      gp_Pnt Pbest = FindBestPoint(PN(i), PN(i+1), PC, VN(i), h);
+      if ( 0 < h && h < hMin )
+      {
+        PCbest = Pbest.XYZ();
+        h = hMin;
+      }
+      //PCbest += Pbest.XYZ();
     }
-    PCbest /= 4;
+    //PCbest /= 4;
 
     double height = PC.Distance(PCbest); // pyramid height to precise
     if ( height < 1.e-6 ) {
@@ -1354,6 +1479,8 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh)
         aPyram = helper.AddVolume( FNodes[0], FNodes[3], FNodes[2], FNodes[1], NewNode );
       myPyramids.push_back(aPyram);
 
+      //myPyramHeight2.Bind( aPyram, Papex.SquareDistance( PC ));
+
       // add triangles to result map
       helper.SetElementsOnShape( false );
       for ( i = 0; i < 4; i++) {
@@ -1398,10 +1525,37 @@ bool StdMeshers_QuadToTriaAdaptor::Compute2ndPart(SMESH_Mesh&
 
   // check adjacent pyramids
 
-  for ( i = 0; i <  myPyramids.size(); ++i )
+  // for ( i = 0; i <  myPyramids.size(); ++i )
+  // {
+  //   const SMDS_MeshElement* PrmI = myPyramids[i];
+  //   MergeAdjacent( PrmI, nodesToMove );
+  // }
+
+  // Fix adjacent pyramids whose heights differ too much
+
+  myNodes.resize(2);
+  bool modifHeight = true;
+  typedef NCollection_DataMap< const SMDS_MeshElement*, double >::Iterator TPyramToH2Iter;
+  while ( modifHeight )
   {
-    const SMDS_MeshElement* PrmI = myPyramids[i];
-    MergeAdjacent( PrmI, nodesToMove );
+    modifHeight = false;
+    for ( TPyramToH2Iter pyramToH2( myPyramHeight2 ); pyramToH2.More(); pyramToH2.Next() )
+      modifHeight |= DecreaseHeightDifference( pyramToH2.Key(), pyramToH2.Value() );
+  }
+  for ( TPyramToH2Iter pyramToH2( myPyramHeight2 ); pyramToH2.More(); pyramToH2.Next() )
+  {
+    if ( pyramToH2.Value() > 0 )
+      continue; // not changed
+    const double                h = Sqrt( - pyramToH2.Value() );
+    const SMDS_MeshElement* pyram = pyramToH2.Key();
+    SMESH_NodeXYZ Papex = pyram->GetNode( PYRAM_APEX );
+    gp_XYZ PC( 0,0,0 );
+    for ( int i = 0; i < 4; ++i )
+      PC += SMESH_NodeXYZ( pyram->GetNode( i ));
+    PC /= 4;
+    gp_Vec V( PC, Papex );
+    gp_Pnt newApex = gp_Pnt( PC ).Translated( h * V.Normalized() );
+    meshDS->MoveNode( Papex.Node(), newApex.X(), newApex.Y(), newApex.Z() );
   }
 
   // iterate on all new pyramids
@@ -1464,10 +1618,10 @@ bool StdMeshers_QuadToTriaAdaptor::Compute2ndPart(SMESH_Mesh&
           gp_Vec Vtmp( PsI[k], PsI[ PYRAM_APEX ]);
           gp_Pnt Pshift = PsI[k].XYZ() + Vtmp.XYZ() * 0.01; // base node moved a bit to apex
           hasInt =
-          ( HasIntersection3( Pshift, PsI[4], Pint, PsJ[0], PsJ[1], PsJ[PYRAM_APEX]) ||
-            HasIntersection3( Pshift, PsI[4], Pint, PsJ[1], PsJ[2], PsJ[PYRAM_APEX]) ||
-            HasIntersection3( Pshift, PsI[4], Pint, PsJ[2], PsJ[3], PsJ[PYRAM_APEX]) ||
-            HasIntersection3( Pshift, PsI[4], Pint, PsJ[3], PsJ[0], PsJ[PYRAM_APEX]) );
+            ( HasIntersection3( Pshift, PsI[4], Pint, PsJ[0], PsJ[1], PsJ[PYRAM_APEX]) ||
+              HasIntersection3( Pshift, PsI[4], Pint, PsJ[1], PsJ[2], PsJ[PYRAM_APEX]) ||
+              HasIntersection3( Pshift, PsI[4], Pint, PsJ[2], PsJ[3], PsJ[PYRAM_APEX]) ||
+              HasIntersection3( Pshift, PsI[4], Pint, PsJ[3], PsJ[0], PsJ[PYRAM_APEX]) );
         }
         for ( k = 0; k < 4  &&  !hasInt; k++ )
         {
@@ -1490,7 +1644,7 @@ bool StdMeshers_QuadToTriaAdaptor::Compute2ndPart(SMESH_Mesh&
           if ( nbc == 4 )
             continue; // pyrams have a common base face
 
-          if ( nbc > 0 )
+          if ( nbc > 1 )
           {
             // Merge the two pyramids and others already merged with them
             MergePiramids( PrmI, PrmJ, nodesToMove );
@@ -1512,9 +1666,9 @@ bool StdMeshers_QuadToTriaAdaptor::Compute2ndPart(SMESH_Mesh&
             double ang2 = fabs(VN2.Angle(VI2));
             double coef1 = 0.5 - (( ang1 < M_PI/3. ) ? cos(ang1)*0.25 : 0 );
             double coef2 = 0.5 - (( ang2 < M_PI/3. ) ? cos(ang2)*0.25 : 0 ); // cos(ang2) ?
-//             double coef2 = 0.5;
-//             if(ang2<PI/3)
-//               coef2 -= cos(ang1)*0.25;
+            //             double coef2 = 0.5;
+            //             if(ang2<PI/3)
+            //               coef2 -= cos(ang1)*0.25;
 
             VN1.Scale(coef1);
             VN2.Scale(coef2);
@@ -1524,17 +1678,27 @@ bool StdMeshers_QuadToTriaAdaptor::Compute2ndPart(SMESH_Mesh&
             aNode2->setXYZ( PCj.X()+VN2.X(), PCj.Y()+VN2.Y(), PCj.Z()+VN2.Z() );
             nodesToMove.insert( aNode1 );
             nodesToMove.insert( aNode2 );
+            //cout << "Limit H  F" << getFaceID( PrmI ) << " - F" << getFaceID( PrmJ ) << endl;
           }
           // fix intersections that can appear after apex movement
-          MergeAdjacent( PrmI, nodesToMove );
-          MergeAdjacent( PrmJ, nodesToMove );
+          //MergeAdjacent( PrmI, nodesToMove );
+          //MergeAdjacent( PrmJ, nodesToMove );
+
+          apexI = PrmI->GetNode( PYRAM_APEX ); // apexI can be removed by merge
 
         } // end if(hasInt)
-      } // loop on suspectPyrams
-    }  // loop on 4 base nodes of PrmI
+      } // loop on 4 base nodes of PrmI
+    }  // loop on suspectPyrams
 
   } // loop on all pyramids
 
+  //smIdType nbNodes = aMesh.NbNodes();
+  for ( i = 0; i <  myPyramids.size(); ++i )
+  {
+    const SMDS_MeshElement* PrmI = myPyramids[i];
+    MergeAdjacent( PrmI, nodesToMove );
+  }
+
   if( !nodesToMove.empty() && !meshDS->IsEmbeddedMode() )
   {
     set<const SMDS_MeshNode*>::iterator n = nodesToMove.begin();
index 3e33fd4da7e975ba0354fc38c99858e2b08c788a..9c194355198a7508719bef50c3cbb1aa78361cad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -44,6 +44,7 @@ class gp_Vec;
 #include <vector>
 
 #include <TopoDS_Shape.hxx>
+#include <NCollection_DataMap.hxx>
 
 /*!
  * \brief "Transforms" quadrilateral faces into triangular ones by creation of pyramids
@@ -93,11 +94,19 @@ protected:
                      std::set<const SMDS_MeshNode*>& nodesToMove,
                      const bool                      isRecursion = false);
 
+  bool DecreaseHeightDifference( const SMDS_MeshElement* pyram,
+                                 const double            h2 );
 
   TopoDS_Shape                      myShape;
   std::set<const SMDS_MeshElement*> myRemovedTrias;
   std::list< const SMDS_MeshNode* > myDegNodes;
   const SMESH_ElementSearcher*      myElemSearcher;
+
+  NCollection_DataMap< const SMDS_MeshElement*, double > myPyramHeight2;
+
+  // work buffers of DecreaseHeightDifference()
+  std::vector< const SMDS_MeshElement* > myAdjPyrams;
+  std::vector<const SMDS_MeshNode *>     myNodes;
 };
 
 #endif
index c2e76ca0482bf7294e5e359c3048a70c9c714c72..888b370836d6303b0b588664dba1bfdc34bc7daa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f2d8e84c1ec0ac33b004abba0a243d062a2510c9..fe6d61f96f96afcc81681cccf67e2e7a781f86f6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ce93a70c3ace6c53020647be0a8e99f22d5e4a79..8c815d370b3be4f3078a071a95602bacdf14b21e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index dfe615b4af2be1aeee5874c1a9e138e6e7824852..7bdc2dc804eb0079678187ed2625460cb644c4a4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 914eebff3837e353de40c316cdce4ecd0c76acdb..e05279c3598008534aabff0fae37bece57051c9f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -1194,10 +1194,8 @@ namespace
 
       theVariants.insert( *this );
 
-#ifndef _DEBUG_
-      if ( theVariants.size() > 1 ) // erase a worse variant
+      if (SALOME::VerbosityActivated() && theVariants.size() > 1 ) // erase a worse variant
         theVariants.erase( ++theVariants.begin() );
-#endif
     };
 
     // first criterion - equality of nbSeg of opposite sides
index eb43083cb0c4f5f7506c7485dac0532b77e5facb..07c33882fe99d5f274bf876095269280d2ea1da7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 182ad20fdac423e4670a3596b618a71b2518e8a7..64e5debdc3c0913aae9b628c922ed214f641ed40 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2b41f83a728ec9237e98a8ea008161dab9b4421b..4113d4c9701a32a8528d33201dcd24abfa9fc141 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 709f3fa7aed83e190be3d953f20c7b40f0e76d56..2898427010b561c4288c8a1ed633e7bea92c84f8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6b612552e8d1eadcd49de9456258266ca7b4caa6..fb413b77c230aa70adb7ac19bd588a86ddf0f205 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2125142cc0c86797d8ff1946fd1f5765834ce8cf..7fc877861db6986d36fb67b41c0cb6b94a89b257 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -70,7 +70,7 @@ using namespace std;
 
 //=======================================================================
 //function : StdMeshers_RadialQuadrangle_1D2D
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 StdMeshers_RadialQuadrangle_1D2D::StdMeshers_RadialQuadrangle_1D2D(int        hypId,
@@ -103,7 +103,7 @@ StdMeshers_RadialQuadrangle_1D2D::~StdMeshers_RadialQuadrangle_1D2D()
 
 //=======================================================================
 //function : CheckHypothesis
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 bool StdMeshers_RadialQuadrangle_1D2D::CheckHypothesis
@@ -111,7 +111,7 @@ bool StdMeshers_RadialQuadrangle_1D2D::CheckHypothesis
                             const TopoDS_Shape&                  aShape,
                             SMESH_Hypothesis::Hypothesis_Status& aStatus)
 {
-  // check aShape 
+  // check aShape
   myNbLayerHypo = 0;
   myDistributionHypo = 0;
 
@@ -271,7 +271,7 @@ namespace
         sideEdges.splice( sideEdges.end(), edges, edges.begin() );
 
       StdMeshers_FaceSidePtr side;
-      if ( aMesh ) 
+      if ( aMesh )
         side = StdMeshers_FaceSide::New( face, sideEdges, aMesh,
                                          /*isFwd=*/true, /*skipMedium=*/ true, helper );
       sides.push_back( side );
@@ -355,7 +355,7 @@ namespace
         }
     }
 
-    int iCirc = deviation2sideInd.rbegin()->second; 
+    int iCirc = deviation2sideInd.rbegin()->second;
     aCircSide = sides[ iCirc ];
     aLinSide1 = sides[( iCirc + 1 ) % sides.size() ];
     if ( sides.size() > 2 )
@@ -958,7 +958,7 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh&         aMesh,
     centerUV   = nodes.back().UV();
   }
   // ------------------------------------------------------------------------------------------
-  else // nbSides == 3 
+  else // nbSides == 3
   {
     // one curve must be a part of ellipse and 2 other curves must be segments of line
 
@@ -1082,7 +1082,7 @@ int StdMeshers_RadialQuadrangle_1D2D::computeLayerPositions(StdMeshers_FaceSideP
     if ( !TNodeDistributor::GetDistributor(*mesh)->Compute( positions, linSide->Edge(0),
                                                             *curve, f, l, *mesh, hyp1D ))
     {
-      if ( myDistributionHypo ) { // bad hyp assigned 
+      if ( myDistributionHypo ) { // bad hyp assigned
         return error( TNodeDistributor::GetDistributor(*mesh)->GetComputeError() );
       }
       else {
@@ -1090,7 +1090,7 @@ int StdMeshers_RadialQuadrangle_1D2D::computeLayerPositions(StdMeshers_FaceSideP
       }
     }
   }
-  
+
   if ( positions.empty() ) // try to use nb of layers
   {
     if ( !nbLayers )
@@ -1132,7 +1132,7 @@ int StdMeshers_RadialQuadrangle_1D2D::computeLayerPositions(StdMeshers_FaceSideP
 
 //=======================================================================
 //function : Evaluate
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 bool StdMeshers_RadialQuadrangle_1D2D::Evaluate(SMESH_Mesh&         aMesh,
@@ -1193,7 +1193,7 @@ bool StdMeshers_RadialQuadrangle_1D2D::Evaluate(SMESH_Mesh&         aMesh,
       return false;
   }
   // ------------------------------------------------------------------------------------------
-  else // nbSides == 3 
+  else // nbSides == 3
   {
     if ( !computeLayerPositions(( linSide1->Length() > linSide2->Length() ) ? linSide1 : linSide2,
                                  layerPositions ))
@@ -1217,7 +1217,7 @@ bool StdMeshers_RadialQuadrangle_1D2D::Evaluate(SMESH_Mesh&         aMesh,
     if ( SMDSEntity_Quad_Edge < (int) nbElems.size() )
       nbCircSegments += ( nbElems[ SMDSEntity_Edge ] + nbElems[ SMDSEntity_Quad_Edge ]);
   }
-  
+
   smIdType nbQuads = nbCircSegments * ( layerPositions.size() - 1 );
   smIdType nbTria  = nbCircSegments;
   smIdType nbNodes = ( nbCircSegments - 1 ) * ( layerPositions.size() - 2 );
index 812aec9079aab43ebadd7f3c24932be16e873161..9aca7e70b73b495cc62b7d8b7241a00c039180cd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 296480964ca6bbc678ab2f018121e7b89b9c9098..44c7c1a7541851ee354de44b0322faf6ef7f0ce1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -716,7 +716,7 @@ void StdMeshers_Regular_1D::redistributeNearVertices (SMESH_Mesh &          theM
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 bool StdMeshers_Regular_1D::computeInternalParameters(SMESH_Mesh &     theMesh,
@@ -1164,7 +1164,7 @@ bool StdMeshers_Regular_1D::computeInternalParameters(SMESH_Mesh &     theMesh,
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 
@@ -1338,7 +1338,7 @@ bool StdMeshers_Regular_1D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape & t
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 
index c520fa07b556222184187e7d569ef7cd93bef318..b19e81ec507b1c8c1163f0ee97542789e467dbcb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9f8fc41c79c43f0d86a60f9476e93079f702422b..d057ad6ff9886d080c8f327744280a1e12f3219d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2a82fd3f41c4e13aaa334e091a924692b81daff5..fc4ddd96f949a49bc403fcaa7c5b30ebafcf7034 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d41a8423ec11dbabd6916bdcae212440a31f1ae0..bde74c60747e90ab4d2b99da6db3b78f71fd83d4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 4eeda8c969de47837e78321e6520b63deca723ac..d76c8edbd25fe5dcd3091aa89d5a1292b3cc1b71 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 701c574846942aed65fdebbbf3b8d29db995777e..0ef91faa4e809f352bc01b8e2b17abff713ff19d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index bce84fa6d3ec5ec074e65193c0cfe635b827e436..6fb9a32a4e7b10a04c830eba9cbd8d7988644bf4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 90ec7b3fa7a2b11261654333e085bf618edf610e..ab07c6fca70c02322c130ba502dddfcc6a9fa894 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 699e4431fa0933ee9fa3b63d46597bfc9b13cea8..3e6ffd086284698581f7e2f36a68676bd5f24882 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0ee6d9fb6e04c15ed7a3d235c98a41b4aa30b878..d6a8e1f375614a8bc97cbd65d20127625370e8aa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ad51df155255ea9f5b47015b0394d188ad342654..157e9f60c80c05968d32007bc82e2fd94a38f380 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
diff --git a/src/StdMeshers/StdMeshers_ViscousLayerBuilder.cxx b/src/StdMeshers/StdMeshers_ViscousLayerBuilder.cxx
new file mode 100644 (file)
index 0000000..4404cf5
--- /dev/null
@@ -0,0 +1,134 @@
+// Copyright (C) 2007-2024  CEA, EDF, 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
+//
+
+// File      : StdMeshers_ViscousLayerBuilder.cxx
+// Module    : SMESH
+// Author    : Cesar Conopoima (cce)
+//
+
+#include "SMESHDS_Mesh.hxx"
+#include "SMESH_ControlsDef.hxx"
+#include "SMESH_Gen.hxx"
+#include "SMESH_Mesh.hxx"
+#include "SMESH_MeshAlgos.hxx"
+#include "SMESH_MeshEditor.hxx"
+#include "SMESH_MesherHelper.hxx"
+#include "StdMeshers_ViscousLayerBuilder.hxx"
+
+#include <TopoDS.hxx>
+
+#include <vector>
+
+//=======================================================================
+//function : StdMeshers_ViscousLayerBuilder
+//purpose  : Implements 
+//=======================================================================
+
+StdMeshers_ViscousLayerBuilder::StdMeshers_ViscousLayerBuilder(int        hypId,
+                                                                SMESH_Gen* gen)
+  : SMESH_2D_Algo(hypId, gen)
+{
+  _name = "StdMeshers_ViscousLayerBuilder";
+  _hyp    = new StdMeshers_ViscousLayers2D( hypId, gen );  
+}
+
+bool StdMeshers_ViscousLayerBuilder::CheckHypothesis(SMESH_Mesh&                          aMesh,
+                                                      const TopoDS_Shape&                  aShape,
+                                                      SMESH_Hypothesis::Hypothesis_Status& aStatus)
+{
+  (void) aMesh;
+  (void) aShape;
+  (void) aStatus;
+  return true;
+}
+
+bool StdMeshers_ViscousLayerBuilder::Compute(SMESH_Mesh& /*aMesh*/, const TopoDS_Shape& /*aShape*/)
+{
+  return true;
+}
+
+bool StdMeshers_ViscousLayerBuilder::Evaluate(SMESH_Mesh & /*aMesh*/, const TopoDS_Shape & /*aShape*/,
+                                                MapShapeNbElems& /*aResMap*/ )
+{
+  return true;
+}
+
+bool StdMeshers_ViscousLayerBuilder::IsApplicable( const TopoDS_Shape &S, bool /*toCheckAll*/, int algoDim )
+{
+  if ( S.ShapeType() > TopAbs_FACE )
+    return false;
+
+  return ( std::abs( algoDim ) == 3 || std::abs( algoDim ) == 2 ) ? true : false;
+}
+
+void StdMeshers_ViscousLayerBuilder::SetBndShapes(const std::vector<int>& faceIds, bool toIgnore)
+{
+  _hyp->SetBndShapes( faceIds, toIgnore );  
+} // --------------------------------------------------------------------------------
+void StdMeshers_ViscousLayerBuilder::SetTotalThickness(double thickness)
+{
+  _hyp->SetTotalThickness( thickness );
+} // --------------------------------------------------------------------------------
+void StdMeshers_ViscousLayerBuilder::SetNumberLayers(int nb)
+{
+  _hyp->SetNumberLayers( nb );
+} // --------------------------------------------------------------------------------
+void StdMeshers_ViscousLayerBuilder::SetStretchFactor(double factor)
+{
+  _hyp->SetStretchFactor( factor );
+} // --------------------------------------------------------------------------------
+void StdMeshers_ViscousLayerBuilder::SetMethod( StdMeshers_ViscousLayers::ExtrusionMethod method )
+{
+  _hyp->SetMethod( method );
+} // --------------------------------------------------------------------------------
+void StdMeshers_ViscousLayerBuilder::SetGroupName(const std::string& name)
+{
+  _hyp->SetGroupName( name );
+} 
+
+//=======================================================================
+//function : ~StdMeshers_ViscousLayerBuilder
+//purpose  :
+//=======================================================================
+
+StdMeshers_ViscousLayerBuilder::~StdMeshers_ViscousLayerBuilder()
+{
+}
+
+TopoDS_Shape StdMeshers_ViscousLayerBuilder::GetShrinkGeometry( SMESH_Mesh & theMesh, const TopoDS_Shape& theShape )
+{
+  _vlBuilder  = new StdMeshers_Cartesian_VL::ViscousBuilder( _hyp, theMesh, theShape );
+
+  std::string error = "";
+  _offsetShape = _vlBuilder->MakeOffsetShape( theShape, theMesh, error );
+  if ( error != "" )
+    throw SALOME_Exception( error );
+  
+  return _offsetShape;
+}
+
+bool StdMeshers_ViscousLayerBuilder::AddLayers( SMESH_Mesh & shrinkMesh, SMESH_Mesh & theMesh, const TopoDS_Shape& theShape )
+{
+  bool success = _vlBuilder->MakeViscousLayers( shrinkMesh, theMesh, theShape );
+  
+  if ( !success )
+    throw SALOME_Exception( "Error building viscous layer from shrink geometry." );
+
+  return success;
+}
diff --git a/src/StdMeshers/StdMeshers_ViscousLayerBuilder.hxx b/src/StdMeshers/StdMeshers_ViscousLayerBuilder.hxx
new file mode 100644 (file)
index 0000000..dc3aaba
--- /dev/null
@@ -0,0 +1,107 @@
+// Copyright (C) 2007-2024  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
+//
+
+//  File   : StdMeshers_ViscousLayersBuilder.hxx
+//  Module : SMESH
+//
+#ifndef _SMESH_ViscourLayerBuilder_HXX_
+#define _SMESH_ViscourLayerBuilder_HXX_
+
+#include <BRepOffset_MakeOffset.hxx>
+#include <BRepOffset_Offset.hxx>
+
+#include "SMESH_StdMeshers.hxx"
+#include "SMESH_Hypothesis.hxx"
+#include "StdMeshers_Cartesian_VL.hxx"
+#include "StdMeshers_ViscousLayers.hxx"
+#include "StdMeshers_ViscousLayers2D.hxx"
+
+
+class STDMESHERS_EXPORT StdMeshers_ViscousLayerBuilder: public SMESH_2D_Algo
+{
+ public:
+  StdMeshers_ViscousLayerBuilder(int hypId, SMESH_Gen* gen);
+  ~StdMeshers_ViscousLayerBuilder();
+
+  virtual bool CheckHypothesis(SMESH_Mesh&                          aMesh,
+                               const TopoDS_Shape&                  aShape,
+                               SMESH_Hypothesis::Hypothesis_Status& aStatus);
+
+  virtual bool Compute(SMESH_Mesh& /*aMesh*/, const TopoDS_Shape& /*aShape*/ );
+
+  virtual bool Evaluate(SMESH_Mesh & /*aMesh*/, const TopoDS_Shape & /*aShape*/,
+                        MapShapeNbElems& /*aResMap*/ );
+
+  /*!
+   * \brief Check if the algo is applicable to the geometry and dimension
+  */
+  virtual bool IsApplicable( const TopoDS_Shape &S, bool /*toCheckAll*/, int algoDim );  
+
+  void   SetBndShapes(const std::vector<int>& shapeIds, bool toIgnore);
+  // std::vector<int> GetBndShapes() const { return _shapeIds; }
+  // bool   IsToIgnoreShapes() const { return _isToIgnoreShapes; }
+
+  void   SetTotalThickness(double thickness);
+  // double GetTotalThickness() const { return _thickness; }
+
+  void   SetNumberLayers(int nb);
+  // int    GetNumberLayers() const { return _nbLayers; }
+
+  void   SetStretchFactor(double factor);
+  // double GetStretchFactor() const { return _stretchFactor; }
+
+  void   SetMethod( StdMeshers_ViscousLayers::ExtrusionMethod how );
+  // StdMeshers_ViscousLayers::ExtrusionMethod GetMethod() const { return _method; }
+
+  // name of a group to create
+  void SetGroupName(const std::string& name);
+  // const std::string& GetGroupName() const { return _groupName; }
+
+   /*!
+   * \brief Compute a shrink version of the geometry. 
+   *        Use the BRepOffset_MakeOffset to perfom the operations for Solids. 
+   *        Use BRepBuilderAPI_MakeFace to perform the operation for planar faces.
+   * \remark For possitive offsets, planar faces are shrink in all directions BRepBuilderAPI_MakeFace does not support coarse grained edge selection.
+    * \param theMesh - the built mesh
+    * \param theShape - the geometry to be shrink
+    * \retval TopoDS_Shape - a new shape of the shrink geometry
+   */
+  TopoDS_Shape GetShrinkGeometry( SMESH_Mesh & theMesh, const TopoDS_Shape & theShape );
+
+    /*!
+   * \brief Build the elements of the viscous layer based on the shrinkMesh and copied to theMesh 
+    * \param shrinkMesh - the mesh defined on the shrink geometry
+    * \param theMesh - the final mesh with the combination of the shrink mesh and the viscous layer
+    * \param theShape - the original geometry
+    * \retval bool - Ok if success in the operation
+   */
+  bool AddLayers( SMESH_Mesh & shrinkMesh, SMESH_Mesh & theMesh, const TopoDS_Shape & theShape );
+
+  private:
+    
+    
+    StdMeshers_ViscousLayers2D*                     _hyp;
+    StdMeshers_Cartesian_VL::ViscousBuilder*  _vlBuilder;
+
+    BRepOffset_MakeOffset                     _makeOffset;
+    BRepOffset_Offset                     _makeFaceOffset;
+    TopoDS_Shape                             _offsetShape;
+};
+
+#endif
index 552995128d3977846adb1a1b7fcbdb31d2eecdb3..c3f22bc5f32bad198fecd779ca3db3351e584814 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 #include "StdMeshers_Quadrangle_2D.hxx"
 #include "StdMeshers_ViscousLayers2D.hxx"
 
+#include <Basics_OCCTVersion.hxx>
+
+#if OCC_VERSION_LARGE < 0x07070000
 #include <Adaptor3d_HSurface.hxx>
+#else
+#include <Adaptor3d_Surface.hxx>
+#endif
+
 #include <BRepAdaptor_Curve.hxx>
 #include <BRepAdaptor_Curve2d.hxx>
 #include <BRepAdaptor_Surface.hxx>
@@ -635,13 +642,7 @@ namespace VISCOUS_3D
       const double T = ( realThickness > 0 ) ? realThickness : GetTotalThickness();
       const double f = GetStretchFactor();
       const int    N = GetNumberLayers();
-      const double fPowN = pow( f, N );
-      double h0;
-      if ( fPowN - 1 <= numeric_limits<double>::min() )
-        h0 = T / N;
-      else
-        h0 = T * ( f - 1 )/( fPowN - 1 );
-      return h0;
+      return StdMeshers_ViscousLayers::Get1stLayerThickness( T, f, N );
     }
 
     bool   UseSurfaceNormal()  const
@@ -1445,7 +1446,17 @@ bool StdMeshers_ViscousLayers::IsShapeWithLayers(int shapeIndex) const
     ( std::find( _shapeIds.begin(), _shapeIds.end(), shapeIndex ) != _shapeIds.end() );
   return IsToIgnoreShapes() ? !isIn : isIn;
 }
-
+// --------------------------------------------------------------------------------
+double StdMeshers_ViscousLayers::Get1stLayerThickness( double T, double f, int N )
+{
+  const double fPowN = pow( f, N );
+  double h0;
+  if ( fPowN - 1 <= numeric_limits<double>::min() )
+    h0 = T / N;
+  else
+    h0 = T * ( f - 1 )/( fPowN - 1 );
+  return h0;
+}
 // --------------------------------------------------------------------------------
 SMDS_MeshGroup* StdMeshers_ViscousLayers::CreateGroup( const std::string&  theName,
                                                        SMESH_Mesh&         theMesh,
@@ -1818,8 +1829,13 @@ namespace VISCOUS_3D
     //case GeomAbs_SurfaceOfExtrusion:
     case GeomAbs_OffsetSurface:
     {
+#if OCC_VERSION_LARGE < 0x07070000
       Handle(Adaptor3d_HSurface) base = surface.BasisSurface();
       return getRovolutionAxis( base->Surface(), axis );
+#else
+      Handle(Adaptor3d_Surface) base = surface.BasisSurface();
+      return getRovolutionAxis( *base, axis );
+#endif
     }
     default: return false;
     }
@@ -2431,7 +2447,14 @@ bool _ViscousBuilder::findFacesWithLayers(const bool onlyWith)
         break;
       }
       default:
-        return error("Not yet supported case", _sdVec[i]._index);
+        std::ostringstream msg;
+        msg << "Not yet supported case: vertex bounded by ";
+        msg << facesWOL.size();
+        msg << " faces without layer at coordinates (";
+        TopoDS_Vertex v = TopoDS::Vertex(vertex);
+        gp_Pnt p = BRep_Tool::Pnt(v);
+        msg << p.X() << ", " << p.Y() << ", " << p.Z() << ")";
+        return error(msg.str().c_str(), _sdVec[i]._index);
       }
     }
   }
@@ -4644,7 +4667,9 @@ void _Simplex::SortSimplices(vector<_Simplex>& simplices)
 
 void _ViscousBuilder::makeGroupOfLE()
 {
-#ifdef _DEBUG_
+  if (!SALOME::VerbosityActivated())
+    return;
+
   for ( size_t i = 0 ; i < _sdVec.size(); ++i )
   {
     if ( _sdVec[i]._n2eMap.empty() ) continue;
@@ -4700,7 +4725,6 @@ void _ViscousBuilder::makeGroupOfLE()
              << "'%s-%s' % (faceId1+1, faceId2))");
     dumpFunctionEnd();
   }
-#endif
 }
 
 //================================================================================
@@ -5835,27 +5859,26 @@ void _ViscousBuilder::putOnOffsetSurface( _EdgesOnShape&            eos,
     }
   }
 
-
-
-#ifdef _DEBUG_
-  // dumpMove() for debug
-  size_t i = 0;
-  for ( ; i < eos._edges.size(); ++i )
-    if ( eos._edges[i]->Is( _LayerEdge::MARKED ))
-      break;
-  if ( i < eos._edges.size() )
+  if (SALOME::VerbosityActivated())
   {
-    dumpFunction(SMESH_Comment("putOnOffsetSurface_") << eos.ShapeTypeLetter() << eos._shapeID
-                 << "_InfStep" << infStep << "_" << Abs( smooStep ));
+    // dumpMove() for debug
+    size_t i = 0;
     for ( ; i < eos._edges.size(); ++i )
+      if ( eos._edges[i]->Is( _LayerEdge::MARKED ))
+        break;
+    if ( i < eos._edges.size() )
     {
-      if ( eos._edges[i]->Is( _LayerEdge::MARKED )) {
-        dumpMove( eos._edges[i]->_nodes.back() );
+      dumpFunction(SMESH_Comment("putOnOffsetSurface_") << eos.ShapeTypeLetter() << eos._shapeID
+                  << "_InfStep" << infStep << "_" << Abs( smooStep ));
+      for ( ; i < eos._edges.size(); ++i )
+      {
+        if ( eos._edges[i]->Is( _LayerEdge::MARKED )) {
+          dumpMove( eos._edges[i]->_nodes.back() );
+        }
       }
+      dumpFunctionEnd();
     }
-    dumpFunctionEnd();
   }
-#endif
 
   _ConvexFace* cnvFace;
   if ( moveAll != _LayerEdge::UPD_NORMAL_CONV &&
index 62df7a8898a9f55a4f23107a89bae476aa74f4b8..d673bde471b1dde23771d6adabd99f7982b5211c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -94,6 +94,11 @@ public:
                     const TopoDS_Shape&                  aShape,
                     SMESH_Hypothesis::Hypothesis_Status& aStatus);
 
+  // Compute thickness of the 1st layer
+  static double Get1stLayerThickness( double thickTotal,
+                                      double factor,
+                                      int    nbLayers );
+
   // Checks if viscous layers should be constructed on a shape
   bool IsShapeWithLayers(int shapeIndex) const;
 
index f422b91cb6e9b63a87ba56e0b8b27d28fce2bf07..b89a42c2d2cb385ce1264b424a71d5c2b1cec7fe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -240,9 +240,7 @@ namespace VISCOUS_2D
 
     bool SetNewLength( const double length );
 
-#ifdef _DEBUG_
-    int           _ID;
-#endif
+    int           _ID; // debug
   };
   //--------------------------------------------------------------------------------
   /*!
@@ -674,9 +672,10 @@ bool _ViscousBuilder2D::error(const string& text )
       _error->myAlgo = smError->myAlgo;
     smError = _error;
   }
-#ifdef _DEBUG_
-  cout << "_ViscousBuilder2D::error " << text << endl;
-#endif
+
+  if (SALOME::VerbosityActivated())
+    cout << "_ViscousBuilder2D::error " << text << endl;
+
   return false;
 }
 
@@ -1339,9 +1338,9 @@ void _ViscousBuilder2D::setLayerEdgeData( _LayerEdge&                 lEdge,
   lEdge._ray.SetDirection( lEdge._normal2D );
   lEdge._isBlocked = false;
   lEdge._length2D  = 0;
-#ifdef _DEBUG_
-  lEdge._ID        = _nbLE++;
-#endif
+
+  if (SALOME::VerbosityActivated())
+    lEdge._ID        = _nbLE++;
 }
 
 //================================================================================
index f1b50ebd5b1bad0c8919cf8752a451702bc1b7c2..9394483fb0932b9c86a45d199b75438a962decbd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 15150fd2e19e5a1099ffc2e694de2d8d911656e9..150f4e38fa1a0dbc163ce6e47b1eb9215de23a01 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 7481150ea89feb93d72bb476ce4efe063cc5cc21..6042b076693b4ab3806fc66ecc225c23e9070138 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2af49c2538a99215e0397e890771df723ec18474..d3b93162ab3597419ba3f5d076d97521fbe785c7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f4d0a08aa66cb98748f4f166232d3a86d6c8174e..524e5e0745017bf12582ab17a02d548f07a212cc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index da04f177c2104154594b62e0217459bad4e8a95f..9db64a9b22ca5cbc1cc47a42452ce223bffaeeb1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2aa6c49f1a7e5c13b82c7d5e8373c0676619721f..675f377cc33731d1b1272bb541ef1794ce8ffa4f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -830,6 +830,17 @@ QFrame* StdMeshersGUI_CartesianParamCreator::buildFrame()
   myUseThresholdForInternalFaces = new QCheckBox( tr("USE_THRESHOLD_FOR_INTERNAL_FACES"), GroupC1 );
   argGroupLayout->addWidget( myUseThresholdForInternalFaces, row, 0, 1, 2 );
   row++;
+  mySetQuanta = new QCheckBox( tr("SET_QUANTA"), GroupC1 );
+  argGroupLayout->addWidget( mySetQuanta, row, 0, 1, 2 );
+  row++;
+
+  argGroupLayout->addWidget( new QLabel( tr("QUANTA_VALUE"), GroupC1 ), row, 0 );
+  myQuanta = new SMESHGUI_SpinBox( GroupC1 );
+  myQuanta->setAcceptNames( false );
+  myQuanta->RangeStepAndValidator( 1e-6, 1, 0.05, "length_precision" );
+  myQuanta->setEnabled(false);
+  argGroupLayout->addWidget( myQuanta, row, 1 );  
+  row++;
 
   // 3)  Grid definition
   QTabWidget* tabWdg = new QTabWidget( fr );
@@ -935,6 +946,7 @@ QFrame* StdMeshersGUI_CartesianParamCreator::buildFrame()
   connect( resetBtn,        SIGNAL( clicked(bool)),             SLOT( onResetAxes(bool)));
   connect( myConsiderInternalFaces,      SIGNAL( toggled(bool)),
            myUseThresholdForInternalFaces, SLOT( setEnabled(bool)));
+  connect( mySetQuanta,     SIGNAL( clicked(bool)), SLOT( onSetQuanta(bool)) );
   for ( int i = 0; i < 3; ++i )
   {
     connect( myXDirSpin[i], SIGNAL(valueChanged   (const QString&)),
@@ -1011,6 +1023,10 @@ void StdMeshersGUI_CartesianParamCreator::retrieveParams() const
   myCreateFaces->setChecked( h->GetToCreateFaces() );
   myConsiderInternalFaces->setChecked( h->GetToConsiderInternalFaces() );
   myUseThresholdForInternalFaces->setChecked( h->GetToUseThresholdForInternalFaces() );
+  mySetQuanta->setChecked( h->GetToUseQuanta() );
+  myQuanta->setValue( h->GetQuanta() );
+  if (h->GetToUseQuanta())
+    myQuanta->setEnabled(true);
 
   // grid definition
   for ( int ax = 0; ax < 3; ++ax )
@@ -1101,6 +1117,8 @@ QString StdMeshersGUI_CartesianParamCreator::storeParams() const
     h->SetToCreateFaces( myCreateFaces->isChecked() );
     h->SetToConsiderInternalFaces( myConsiderInternalFaces->isChecked() );
     h->SetToUseThresholdForInternalFaces( myUseThresholdForInternalFaces->isChecked() );
+    h->SetToUseQuanta( mySetQuanta->isChecked() );
+    h->SetQuanta( myQuanta->text().toDouble() );
 
     // grid
     for ( int ax = 0; ax < 3; ++ax )
@@ -1453,3 +1471,19 @@ void StdMeshersGUI_CartesianParamCreator::onGridModeChanged(int)
 
   myFixedPointGrp->setEnabled( haveSpacing );
 }
+
+//================================================================================
+/*!
+ * \brief Enable and disable quanta value combo box 
+ */
+//================================================================================
+
+void StdMeshersGUI_CartesianParamCreator::onSetQuanta(bool)
+{
+  StdMeshers::StdMeshers_CartesianParameters3D_var h =
+    StdMeshers::StdMeshers_CartesianParameters3D::_narrow( hypothesis() );
+  if ( h->_is_nil() )
+    return;
+
+  myQuanta->setEnabled( mySetQuanta->isChecked() );
+}
index abd55bdcf00c64016029114a6a085cbfa8c10538..ae2d934764ae985aeceb247b4d1110ddaa49a119 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -147,6 +147,7 @@ private slots:
   void             onOptimalAxes(bool);
   void             onResetAxes(bool);
   void             onGridModeChanged(int);
+  void             onSetQuanta(bool);
 
 private:
   QLineEdit*                  myName;
@@ -155,6 +156,8 @@ private:
   QCheckBox*                  myCreateFaces;
   QCheckBox*                  myConsiderInternalFaces;
   QCheckBox*                  myUseThresholdForInternalFaces;
+  QCheckBox*                  mySetQuanta;
+  SMESHGUI_SpinBox*           myQuanta;
 
   StdMeshersGUI::GridAxisTab* myAxisTabs[3];
   QGroupBox*                  myFixedPointGrp;
index b2a4be767840dad93c5e64ade4d0c42349d23f09..79e9d929a80e4e7441cd12237110df5dba6c2c2f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d6d00a2d96df472cbfa3fa3e13ca7b8097228b69..05b87aef5ba62c08dbeee0a9bd371ae04c970bee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 293e7ec893baf8b842ae2e69bbdca634dce2b589..1380b981c2bba0e9d25c4c8cb6b45694bd13fdce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e2f0d1200546e1e77591b4037caea38743d1b168..e1a89704025187e27c9abb0d69b82db2938f1cf2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index b931bfe60fe498487a718505b06df874509acf3e..4ca59f9711f6fa8a06bb083aa27aa41e87c2b046 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 01e22e193c7edef26be8a1e7e7e82bcf4d30fee3..93b7e79264cf3c839313aab7c54ee60591ee010a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9dd180327ceb89ff3d78dbdf6bfe64d0ec8deaa0..5973928a76efe48328ff53b53a5ba938e9d50456 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0de7d9c80f88d02e9ed61856dde42f235d3cc3ee..6c1c8e75e5953efd6311664706c473e1bee778ce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a0ccaa5ccb1577e13c7e9cc16a01f1917ffbbf94..0724898f1b50de336425b335cd0b4ea3b90aab79 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 539afae6d1fc15e8f336822d6e3357f742adb4a1..be60066b5ee6702cab69d88b1c8ad57428f7448a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 51369a80d63dc7e4bce895134b7c1a179cb43596..116df94bcd65268c0549f7b3ab262495fb58944a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 548be1bc8717ab25004d74623bd26783f9aa6c9c..d873fdae13fe9d015a8be89f34c71586c745d99f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index af809e147d1984ad92077505e5a44ea4fdfe586c..e07aa7e3009254511190fc4938c5584beff68244 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2e5d3792cc482254d589ee06ce7378c50646a2b1..192ad51d350b0960f0f7e46a26adb27276a33dcb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2dee775c2c159c0a6a1159649dc6b9fcf3a8f4e9..37832e25754977ea28eae8de07cc4b1677c225a0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index cacb04c23af34bb515339bae742bdd25ebe3a5aa..accbd6c4760f6113fad3db7d6df012d85f2ebd39 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c8d236eece2749e5ebcd89163041d4fa0d38850a..fc5dffeaf578ceb3a2eeba7c2cf38ec1aa9cf2d1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 167ad09114b6e8501400cee851eb15f0af9ef7cf..44afe5faee7002d04a0f17da2493556173abd1ab 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d8becd4e02a1dd0bb7080a15626b1d3b86f5a26d..e0fb405dbbb9e02af57cd664d2a39545bc33d953 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 29bfdec66537907e9aef7973cb033117202e29a4..1e230923b000c31f72126302dfe369e666c693c4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 63f3e95fe9203e65cc1a9f1919c346ee828e5b69..cc20acacade46f59d609d2d0c31e3278ebd67504 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f84cc789aece9bd01a36ef954258cd01ae19d53a..f1e0f84d22070653cb96654c7c58419e63b36527 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d58a631c61efa44eb8e43c6e1356732cf74e94b8..5033645c556ca4512e82ee7fb9e048e3f629dc37 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f487c411ca0e98d8256c24671837bbbb8b7034f7..504649641e5abb6c564fa67ceb36371490ad9593 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3b41151ac3e9007a479c355a8dcb94709d02f92a..19e60b261dca74e9a0a85a4663aa772d023196c2 100644 (file)
             <source>ICON_SMESH_TREE_ALGO_Hexa_3D</source>
             <translation>mesh_tree_algo_hexa.png</translation>
         </message>
-        <message>
-            <source>ICON_SMESH_TREE_ALGO_MEFISTO_2D</source>
-            <translation>mesh_tree_algo_mefisto.png</translation>
-        </message>
         <message>
             <source>ICON_SMESH_TREE_ALGO_PolygonPerFace_2D</source>
             <translation>mesh_tree_algo_polygon.png</translation>
         </message>
         <message>
             <source>ICON_SMESH_TREE_HYPO_TrianglePreference</source>
-            <translation>mesh_tree_algo_mefisto.png</translation>
+            <translation>mesh_tree_algo_tri.png</translation>
         </message>
         <message>
             <source>ICON_SMESH_TREE_HYPO_QuadraticMesh</source>
index 1bc267a678baf755a93ddda786c4664398237706..85a684bc6ea978614d8fe4e35aded752610a456b 100644 (file)
@@ -586,6 +586,14 @@ Consider creating another hypothesis instead of using this one for this mesh/sub
         <source>USE_THRESHOLD_FOR_INTERNAL_FACES</source>
         <translation>Apply Threshold to Shared / Internal Faces</translation>
     </message>
+    <message>
+        <source>SET_QUANTA</source>
+        <translation>Set Quanta</translation>
+    </message>
+    <message>
+        <source>QUANTA_VALUE</source>
+        <translation>Quanta Value</translation>
+    </message>
     <message>
         <source>AXIS_X</source>
         <translation>Axis X</translation>
index 7f958397d7b596bc5af37845146472b20fc5287d..1558c5476399904b9b793279d976c09afc98a556 100644 (file)
@@ -562,6 +562,14 @@ Veuillez plutôt créer une autre hypothèse à la place de celle-ci pour ce mai
         <source>USE_THRESHOLD_FOR_INTERNAL_FACES</source>
         <translation>Appliquer le seuil aux faces partagées/internes</translation>
     </message>
+    <message>
+        <source>SET_QUANTA</source>
+        <translation>Utiliser Quanta</translation>
+    </message>
+    <message>
+        <source>QUANTA_VALUE</source>
+        <translation>Valeur Quanta</translation>
+    </message>
     <message>
         <source>AXIS_X</source>
         <translation>Axe X</translation>
index c6262c72df6d945e0e83aa5be50fe3041fc901cf..3f0b1a1ba09324e8a5277cc9289d224d681b6574 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2024  CEA, EDF, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -39,12 +39,6 @@ INCLUDE_DIRECTORIES(
   ${PROJECT_BINARY_DIR}/idl
 )
 
-IF(SALOME_SMESH_ENABLE_MEFISTO)
-  INCLUDE_DIRECTORIES(
-      ${PROJECT_SOURCE_DIR}/src/MEFISTO2
-  )
-ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
-
 # additional preprocessor / compiler flags
 ADD_DEFINITIONS(
   ${OpenCASCADE_DEFINITIONS}
@@ -121,10 +115,8 @@ SET(StdMeshersEngine_HEADERS
   StdMeshers_PolygonPerFace_2D_i.hxx
   StdMeshers_PolyhedronPerSolid_3D_i.hxx
   StdMeshers_BlockRenumber_i.hxx
+  StdMeshers_ViscousLayerBuilder_i.hxx
 )
-IF(SALOME_SMESH_ENABLE_MEFISTO)
-  SET(StdMeshersEngine_HEADERS ${StdMeshersEngine_HEADERS} StdMeshers_MEFISTO_2D_i.hxx)
-ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
 # --- sources ---
 
 # sources / static
@@ -178,12 +170,9 @@ SET(StdMeshersEngine_SOURCES
   StdMeshers_PolygonPerFace_2D_i.cxx
   StdMeshers_PolyhedronPerSolid_3D_i.cxx
   StdMeshers_BlockRenumber_i.cxx
+  StdMeshers_ViscousLayerBuilder_i.cxx
 )
 
-IF(SALOME_SMESH_ENABLE_MEFISTO)
-  SET(StdMeshersEngine_SOURCES ${StdMeshersEngine_SOURCES} StdMeshers_MEFISTO_2D_i.cxx)
-ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
-
 # --- rules ---
 
 ADD_LIBRARY(StdMeshersEngine ${StdMeshersEngine_SOURCES})
index 5f1e425dfa0daafb5b9394e885dab9b50503b959..8513b49a853972b6005ca18baa6df7452af1d412 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 8d04271c6d973bf66d2b0a1cd3021dafb6229180..882090a5b69341dd638d00d097c28257004f3177 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2247503416179833427b4be264258563a31ec3d1..788c1116457503e504d9cec22da42182fa7610bd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0f0d988871e65b4201fcbd3a08df9afee1d19647..3c868860cf7cb929231d5a69b234e597870468e0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ad4919fdb236f1b71ba6f4ab3f96064cfeaba624..b8677dcf076b9b53169e686f6e4371c67ecbe34a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index caa9959cc414fda86efda627ad8c724a050d980b..f7a298212140c9ba3e85082c21ff625ad5be028e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d4d35ca3c1b1d67f6f871397cd0afd4c6a352188..02f506a46948860770a893c2e4b9f78d2b42e452 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 4f8d0021440ae96448c5b9fd1f9bc94f5a547ca4..5ebbac57ee8e5656ba6c7f8c8e2dfc0db6586ec3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6d83e2853dff2c35b1ec816cfa89f251b4553489..eea682f30c898139cb5d02e9e3d08eea61c04c6a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e8259c6822548d2ab5211d6a3096e660e35309ad..040b39d88e26205680682c7dc06e5ee441e66844 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -418,6 +418,63 @@ CORBA::Boolean StdMeshers_CartesianParameters3D_i::GetToCreateFaces()
   return GetImpl()->GetToCreateFaces();
 }
 
+
+//=======================================================================
+//function : SetToUseQuanta
+//purpose  : Enables use of quanta value.
+//=======================================================================
+
+void  StdMeshers_CartesianParameters3D_i::SetToUseQuanta(CORBA::Boolean toUseQuanta)
+{
+  if ( GetToUseQuanta() == toUseQuanta )
+    return;
+  GetImpl()->SetToUseQuanta( toUseQuanta );
+  SMESH::TPythonDump() << _this() << ".SetToUseQuanta( " << toUseQuanta << " )";
+}
+
+//=======================================================================
+//function : GetToUseQuanta
+//purpose  : Check the value of toUseQuanta option
+//=======================================================================
+
+CORBA::Boolean StdMeshers_CartesianParameters3D_i::GetToUseQuanta()
+{
+  return GetImpl()->GetToUseQuanta();
+}
+
+//=============================================================================
+/*!
+ *  SetQuanta
+ */
+//=============================================================================
+
+void StdMeshers_CartesianParameters3D_i::SetQuanta(CORBA::Double quanta)
+  
+{
+  ASSERT( myBaseImpl );
+  try {
+    this->GetImpl()->SetQuanta(quanta);
+  }
+  catch ( SALOME_Exception& S_ex ) {
+    THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), SALOME::BAD_PARAM );
+  }
+
+  if ( GetToUseQuanta() )
+    // Update Python script
+    SMESH::TPythonDump() << _this() << ".SetQuanta( " << SMESH::TVar(quanta) << " )";
+}
+
+//=============================================================================
+/*!
+ *  GetQuanta
+ */
+//=============================================================================
+
+CORBA::Double StdMeshers_CartesianParameters3D_i::GetQuanta()
+{
+  return this->GetImpl()->GetQuanta();
+}
+
 //=======================================================================
 //function : IsGridBySpacing
 //purpose  : Return true if the grid is defined by spacing functions and
index e089f8d33acd9755d984110494e05d43a28b46c3..7d439d537c31c2b4cb91539daabd2cf00484bfea 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -125,6 +125,17 @@ class STDMESHERS_I_EXPORT StdMeshers_CartesianParameters3D_i:
   void SetToCreateFaces(CORBA::Boolean toCreate);
   CORBA::Boolean GetToCreateFaces();
 
+  /*!
+   * Set quanta option to allow replace polyhedrons by hexahedrons
+   */
+  void SetToUseQuanta(CORBA::Boolean toUseQuanta);
+  CORBA::Boolean GetToUseQuanta();
+
+  /*!
+   * Define the quanta value
+   */
+  void SetQuanta(CORBA::Double quanta);
+  CORBA::Double GetQuanta();
 
   /*!
    * \brief Return true if the grid is defined by spacing functions and
index 95ccf869d2eddc771ddbd1b9c24df9e5e8d57961..2a8cb69840e4a34e216463f58bc65da82394127a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 834c2cf96e5521d809027482431872594225a66d..336d8eb8bda8c01b9dacf1a8d55f3efcb738a80c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 21944782aa822d01e6b9128eab5b0ff485f467a7..0f20b23b91f59c886da5a8d93b05a0c9210f088f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index b863de29e25f77c2a310d24fea20e6664cf75a78..7d252fb639ada758f9518d293ba97ea5894c8de6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 4af8030c4a0ed71a5f09cec1335a9ded00438769..c7c58691a61d7c9d914bcd08f011aabfc63419b1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index bcac55e188e4bddb0c63c372cdd413bc1d0a5c51..8e6ff93e098c99cc74a9fd777495861a025c95cb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ad954cb9b6675257b580aecf0baf38431e4ca6a1..efbf0b714248befd4d3622b6909b742854ba3aad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2be55f68f351e640b54dcff647314321c2d664f7..da6b8a441d3638842523a31663949d697b399734 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 88676d253c83e47b0351955af4d3aa5236d26aa5..d2bfb8b7f47a303e54ca1c0989547787d3fe0a4a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0774281df84c8d4646b2cca996353f7fa7cbbcdb..ba6958917a4ac9b592411ac99595688973fd042e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 4f504dd221da2cad5f489ba45f7cc4c2ed0cca3e..74a378dd14489d7eb7cc8c9d7dea46e3b789f18b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d0d8fbad04baa142daa89e6c38de55bffef83852..73866ff4152ab9fb8391fc06017d5ee8c4982ccd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 29a4cfa3b6bdab225a70a792c75d0c0cc692d360..cc5d699aa82fcfda4f892aa2343112921e663cc2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index dc58228e8d402c829f94426bca2590a129117b0e..34ea9547939e4741d05a358fb72314cd26f2ea94 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 19d27e8990c92c5de406a5440b417a720b855feb..932a85906da1623f0158492ca7bff3daeb2a1e50 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f7ae43cd941bb74487ea9ccd41a15e7ca22c9ccb..0ffa2b15a9bad1b79c30ad3bda929fc08eec685f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5fa82555c97cd2fd6db3fdb43206dec0efa948b6..3637b5b7988c10afb6f42de19c3a06421740e450 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f99d0cb56c8ef4addbfc6b058f73b65a9d56c5a8..b7782e9d7659ff4492a0dc2179e0b06f7582e98e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 349ded28b572a9629fb5a6387227a6af554372f3..4c254658c5f080be6b3cf3c413e378e81e3c64d2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6967818955eb90f7dbce68585ee2948bdf8cb089..420f8986115b662113dc37aaa3b21f5fc816fe2e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 6424ce900b88a4ddd472e012dc830a6d3e2123e1..509ee37f03e5cd88b2610d314a33f7b6efeac3e1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 012e17e36057b1d6eea012b05c3d5820c4db27d0..06e33d43933f2b3117139ebbbba19511798921fd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 05fb2f526d2e30f3d7616da457131654adbdf46f..74571da5cfa44840850edba43cb34f61dc12670e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f631fbfd498f87c0200c61b770932a7cfaa1826f..e2d3bc37f989fce9388a246295f01d2553651b12 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 761b7f1aae5b56aa73985aac122d59f59735e239..7108aa40cd2e8be62fb5c093b87499f4ec73ca33 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f03bcf30cb926546327afcf05559b5f10634ba20..60079e34aca7db121412b8a9e743885707da70fe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f6761c789a2bc3a640e6d649e8f64067af99fca6..7bbe80da5303cfd439c3f492bbe6fcee33d30c03 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d1b62f8fdbef01b0fafaa27ba4491256d5fa9ff7..c4bb326d5e22e3332b603bb4b891077bc9a42f31 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
diff --git a/src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.cxx b/src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.cxx
deleted file mode 100644 (file)
index 78f1869..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (C) 2007-2021  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
-//
-
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's classes
-//  File   : StdMeshers_MEFISTO_2D_i.cxx
-//           Moved here from SMESH_MEFISTO_2D_i.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-//
-#include "StdMeshers_MEFISTO_2D_i.hxx"
-#include "SMESH_Gen.hxx"
-
-#include "Utils_CorbaException.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-//=============================================================================
-/*!
- *  StdMeshers_MEFISTO_2D_i::StdMeshers_MEFISTO_2D_i
- *
- *  Constructor
- */
-//=============================================================================
-
-StdMeshers_MEFISTO_2D_i::StdMeshers_MEFISTO_2D_i( PortableServer::POA_ptr thePOA,
-                                                  ::SMESH_Gen*            theGenImpl )
-     : SALOME::GenericObj_i( thePOA ), 
-       SMESH_Hypothesis_i( thePOA ), 
-       SMESH_Algo_i( thePOA ),
-       SMESH_2D_Algo_i( thePOA )
-{
-  myBaseImpl = new ::StdMeshers_MEFISTO_2D( theGenImpl->GetANewId(),
-                                            theGenImpl );
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_MEFISTO_2D_i::~StdMeshers_MEFISTO_2D_i
- *
- *  Destructor
- */
-//=============================================================================
-
-StdMeshers_MEFISTO_2D_i::~StdMeshers_MEFISTO_2D_i()
-{
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_MEFISTO_2D_i::GetImpl
- *
- *  Get implementation
- */
-//=============================================================================
-
-::StdMeshers_MEFISTO_2D* StdMeshers_MEFISTO_2D_i::GetImpl()
-{
-  return ( ::StdMeshers_MEFISTO_2D* )myBaseImpl;
-}
-
diff --git a/src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.hxx b/src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.hxx
deleted file mode 100644 (file)
index 213ce6f..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (C) 2007-2021  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
-//
-
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's classes
-//  File   : StdMeshers_MEFISTO_2D_i.hxx
-//           Moved here from SMESH_MEFISTO_2D_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-//
-#ifndef _StdMeshers_MEFISTO_2D_I_HXX_
-#define _StdMeshers_MEFISTO_2D_I_HXX_
-
-#include "SMESH_StdMeshers_I.hxx"
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
-
-#include "SMESH_2D_Algo_i.hxx"
-#include "StdMeshers_MEFISTO_2D.hxx"
-
-class SMESH_Gen;
-
-// ======================================================
-// Triangle (MEFISTO) 2d algorithm
-// ======================================================
-class STDMESHERS_I_EXPORT StdMeshers_MEFISTO_2D_i:
-  public virtual POA_StdMeshers::StdMeshers_MEFISTO_2D,
-  public virtual SMESH_2D_Algo_i
-{
-public:
-  // Constructor
-  StdMeshers_MEFISTO_2D_i( PortableServer::POA_ptr thePOA,
-                           ::SMESH_Gen*            theGenImpl );
-
-  // Destructor
-  virtual ~StdMeshers_MEFISTO_2D_i();
-
-  // Get implementation
-  ::StdMeshers_MEFISTO_2D* GetImpl();
-};
-
-#endif
index 2770e31cef9bb3c926751709b982f31c17cc9bc1..d9379c95fd9752e8b34b09bb3448c68c0fc44949 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1fb8d6c7ad2e7e47c9d55a0c62b0b24d23125493..d8238d314f56bf90ec2a63f9bf5564d6e1ea6b56 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a456e293571d5876d29befe9a4d358eb0444bbe3..b4d26e66b7a08e7868a559354233ba345daf90d2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index aea802b0b55b913241d12854c7bcbc156e9525c6..deb3b0c3612a75a95c43a1110b7d44d758bdbfe3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e808d9ef7368f6d325f6217dc4f25b799adf1e8b..6220bd97672f7602ef6094bfe44cad5c888a9524 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 961578bdd31d5c21058e8c166b7b5c4237bb64cc..3499fa03a5aa1ed1d904ce5a0b880725e6e7507b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 192829e014f73c94573e3eb98b0beca81493f0d5..c1753451978c1cf0259e43d216c0856c500a7fc0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index dd826511e69e6c0a2e62a5cbe7e2c4d4ed98fe19..a36c3980f1329806f0c93bd5e039729b2aa9c0c8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 7585bbed26ab33b764ff3fbc132c8e2d19495474..e1a951d52594323681a5c62e5f53b0c72045a572 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 77e1aa0776b4ea8386c07a77146832809cccbed7..5d57549e804a514a5fd66f67e12db05660a05120 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c88f855e6f09b8808be85a5ba9f8c7ce0d1e6af9..19884176006d9c803507eba5ab0fa854b77a9c8e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 58fb535e42234f0d3fcdcbfccf55b63497a9b63e..b1b88de5ef3c53f9fe1d75ba5cd00b6ab17ba9ba 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 57342432bce8585aadc1a7e034da31123900ddbc..5a3a0af40feaf950bf7c27a738a43454adfc4a99 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ba44fa9906315a57e9f54b93fb33f6dda2fffa3a..28e94d0e6ff23471df0e784b6098a952d3c1c454 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 7f30f128bcc6db7e3a3bcebb3cb7221ed67b685d..2a0c4bed9ad47203ebcbb2c395ad0a6d8d861b51 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d03ff314b30b0c028b617b92bfe7e566bcd84fb6..1f2c0ac578623665154aae7ec7fbf1d62a1c33fc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a3d94b574701e3c6c82fe4318975cedabeabc6f0..42b55da7868d81572a03c634b1833ed5b69bb41a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ad68f8df0218eec4db2d1df20ab1de5c0583fac0..5097fcdea1ccc30d07a890d0445ee5bda3c8e401 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index c2e2a028d2d2e01713dfd39acd0b55ff5ab1876e..39c7144f714915e17103d85960cb72e731d0baee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d02b6f3ff58cdf2f63fc17a2314d66abdf2570dc..65fd843d13e3f4f2594e1011b776a16c4cb4b447 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a8de96b7b0ecdb548a6122ef35489fa35e3b2aa2..bbeaa32cb4167cff0ac7d99ecbd96686181e4144 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 5415aef191ad1906eae31f9f4fac7d0b6ccb5bf0..c3290c45ee85809544ea252270d610e282b2caeb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 78c9c56b98bb1c8cbf64a19b823b7895907ba9af..8abfe06deb8fd608616094b5fbca742343455339 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 2cae0d04567750e4f3546525f9ebb8fe570ecc52..ea0dbe56dde9d621c091b1918c7fa473abfdd166 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 465da7c1f94c86afd1b1fc9de9d902d0cb519ca8..28f2c31d43561a23c598603075a335a1b08672d1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e726b1e2f98d0c1308b78c7cb97a78eacff4da8b..05225ae76e331b574c2a81602f00f8faee04df11 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f7f245c2618ca8b60c31b83d6d77e02b5d637fe6..d7648ac99df030b50fa624aea69646b456a0ac8f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index c74dea249f1061940c5ce906783e2b5092a0359a..826cebf5b85808afabd38834a078e0d10f80c72b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index a5f8eeb0e4c1fd3b72a9c7733bb53eb7b1a51401..6da05f056b7341085e18a2cab819b279937d6254 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 53873395e2884724c9b96c73fcbf605f70d91d48..1af5422ba25870d287d6e226b2a5a39068290906 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 8e558ab565ef6031bf3919ab0deafd253eefedf4..632a4831e20764094f906eaa07f0b8292ffeb55b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 0f15c299b2103b3254d95aec85b7f36575bd9460..1513864264dce0a3705f6753a0c9e4d807527d9e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 8313a607080275d7923bc710d7c05aa749bb04cb..2946d20d404a18bd8ad64863f64d3fa424e78d1a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5a5d26b6033fc763e32f98a229b146e1e514c19c..b7009583dcb35f99c8e20cee1d93ce49cc7203fc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index acb4ab1b28176bd0abdcc74b383b3a24f6419085..e972d757ab7693cef901dacfae86d45db29a0c2a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index fd2d56bf97e030069733125b2515f326578c7213..fd7e01c6e630191b3e440352adc5c1b941c24e78 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 8679cce4098d30b7057e7ca405730ed2f9ff129d..ae37b5491b0ad1496f32a501fbcc02adf3f41721 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 075d741da46fa9496efac862bdebf98194b49b59..b676b62fb5b277e12a4ed8793055454f7345e615 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d22b679927a29fbe6abdff07dae17d6410548677..c6ff2e190d7f9a90dfcf3ea4da2adab2283ef0aa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index b8064a58c26dceed3aebb82d9c4c4fd9a4ef8da7..4d183730e0a9fac8047b3f9c37e31e2902e06382 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 17b9ccc46228be677e20229a24268eae0253dfba..41480c288c44a0abac835f39086f2079a43acf35 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 622269cd910240f07c1d997295446683b08ea92a..8d9cbc23f1bcd9602b4188977fed4e66cc1d5e22 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index dabc40f3209fc107c2a6617a425793c95e318a72..4da7267db0549ac92fa63d7377d0844fc55c79bc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index e0888d5eda19e13ef6d9a647dcdd34df2becbeb8..56da8fefb9c329580e88140462ce5361e9b4e92f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 8f229db82719ff9db17445e20c485004b04bd5db..4045fe7dd80427100f14f02cf4bf23f73bdd1c35 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 77ea03db69ee674094c1bcfded396c8a0205dc58..5544dc6f24771ccddcc0ad9a1f1bf94b352a2d49 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 301f160a6c26e4f586e65ef5b889924da3cc5eb2..5fd63883a96483db9631789121eb9b3e5bdaeebb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9b3861b3e8d22df739cd7f01eedc2889dec879ba..247a6690184ab7b3b12e53d287a0c1cd6a851a82 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index aa2341ecda234006eaa42558eb63588222048101..d60257a2a9ac12503790400de70e306bc4ba5f63 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 74da174c5e106724c7ab3a6add8aa7c0d2bcc824..f53618d9eb47537e6319fe3d5faabe734671a9ed 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index dbdd46037fed0781d50607aeb82532c54f81da84..89a9e8c018f8fd1d69dff6493affa7a4ba8c1fd5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index d135f211320e3b3e79de2eec4aca50f1a6b6f670..0736ee2c467d8e9bfcb817899efcaa326c2067e2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 79f56184802ecec1cb6ab5bfec475b36a3bbda8e..02601f70abf88e20fa8362147e731388dcda7ea4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f612745e00c6ab18dcd9a93bd1d7fdeb496e5089..69b8d28b2d980dcff0b3a0b26fa64a37c3474de9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
diff --git a/src/StdMeshers_I/StdMeshers_ViscousLayerBuilder_i.cxx b/src/StdMeshers_I/StdMeshers_ViscousLayerBuilder_i.cxx
new file mode 100644 (file)
index 0000000..61328ba
--- /dev/null
@@ -0,0 +1,213 @@
+// Copyright (C) 2007-2024  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
+//
+
+//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's classes
+//  File   : StdMeshers_ViscousLayers_i.cxx
+//  Module : SMESH
+//
+#include "StdMeshers_ViscousLayerBuilder_i.hxx"
+
+#include "SMESH_Gen.hxx"
+#include "SMESH_Gen_i.hxx"
+#include "SMESH_Group.hxx"
+#include "SMESH_Group_i.hxx"
+#include "SMESH_PythonDump.hxx"
+
+#include "BRepTools.hxx"
+#include "Utils_CorbaException.hxx"
+#include "utilities.h"
+
+#include <TCollection_AsciiString.hxx>
+
+#include CORBA_SERVER_HEADER(SMESH_Group)
+
+using namespace std;
+
+//=============================================================================
+/*!
+ *  StdMeshers_ViscousLayerBuilder_i::StdMeshers_ViscousLayerBuilder_i
+ *
+ *  Constructor
+ */
+//=============================================================================
+
+StdMeshers_ViscousLayerBuilder_i::StdMeshers_ViscousLayerBuilder_i( PortableServer::POA_ptr thePOA,
+                                                                      ::SMESH_Gen*            theGenImpl )
+  : SALOME::GenericObj_i( thePOA ), 
+      SMESH_Hypothesis_i( thePOA ),
+      SMESH_Algo_i( thePOA ),
+      SMESH_2D_Algo_i( thePOA )
+{
+  myBaseImpl = new ::StdMeshers_ViscousLayerBuilder( theGenImpl->GetANewId(),
+                                                      theGenImpl );
+}
+
+::StdMeshers_ViscousLayerBuilder* StdMeshers_ViscousLayerBuilder_i::GetImpl()
+{
+  return ( ::StdMeshers_ViscousLayerBuilder* )myBaseImpl;
+}
+
+//================================================================================
+/*!
+ * \brief Verify whether hypothesis supports given entity type 
+  * \param type - dimension (see SMESH::Dimension enumeration)
+  * \retval CORBA::Boolean - TRUE if dimension is supported, FALSE otherwise
+ * 
+ * Verify whether hypothesis supports given entity type (see SMESH::Dimension enumeration)
+ */
+//================================================================================  
+CORBA::Boolean StdMeshers_ViscousLayerBuilder_i::IsDimSupported( SMESH::Dimension type )
+{
+  return type == SMESH::DIM_3D || type == SMESH::DIM_2D;
+}
+
+void StdMeshers_ViscousLayerBuilder_i::SetFaces(const ::SMESH::long_array& faceIDs,
+                                                  CORBA::Boolean             toIgnore)
+{
+  vector<int> ids( faceIDs.length() );
+  for ( unsigned i = 0; i < ids.size(); ++i )
+    if (( ids[i] = faceIDs[i] ) < 1 )
+      THROW_SALOME_CORBA_EXCEPTION( "Invalid face id", SALOME::BAD_PARAM );
+
+  GetImpl()->SetBndShapes( ids, toIgnore );
+
+  SMESH::TPythonDump() << _this() << ".SetFaces( " << faceIDs << ", " << toIgnore << " )";
+}
+
+
+void StdMeshers_ViscousLayerBuilder_i::SetIgnoreFaces(const ::SMESH::long_array& faceIDs)
+{
+  vector<int> ids( faceIDs.length() );
+  for ( unsigned i = 0; i < ids.size(); ++i )
+    if (( ids[i] = faceIDs[i] ) < 1 )
+      THROW_SALOME_CORBA_EXCEPTION( "Invalid face id", SALOME::BAD_PARAM );
+  GetImpl()->SetBndShapes( ids, /*toIgnore=*/true );
+  SMESH::TPythonDump() << _this() << ".SetIgnoreFaces( " << faceIDs << " )";
+}
+
+void StdMeshers_ViscousLayerBuilder_i::SetTotalThickness(::CORBA::Double thickness)
+{
+  if ( thickness < 1e-100 )
+    THROW_SALOME_CORBA_EXCEPTION( "Invalid thickness", SALOME::BAD_PARAM );
+  GetImpl()->SetTotalThickness(thickness);
+  SMESH::TPythonDump() << _this() << ".SetTotalThickness( " << SMESH::TVar(thickness) << " )";
+}
+
+void StdMeshers_ViscousLayerBuilder_i::SetNumberLayers(::CORBA::Short nb)
+{
+  if ( nb < 1 )
+    THROW_SALOME_CORBA_EXCEPTION( "Invalid number of layers", SALOME::BAD_PARAM );
+  GetImpl()->SetNumberLayers( nb );
+  SMESH::TPythonDump() << _this() << ".SetNumberLayers( " << SMESH::TVar(nb) << " )";
+}
+
+void StdMeshers_ViscousLayerBuilder_i::SetStretchFactor(::CORBA::Double factor)
+{
+  if ( factor < 1 )
+    THROW_SALOME_CORBA_EXCEPTION( "Invalid stretch factor, it must be >= 1.0", SALOME::BAD_PARAM );
+  GetImpl()->SetStretchFactor(factor);
+  SMESH::TPythonDump() << _this() << ".SetStretchFactor( " << SMESH::TVar(factor) << " )";
+}
+
+void StdMeshers_ViscousLayerBuilder_i::SetMethod( ::StdMeshers::VLExtrusionMethod how )
+{
+  GetImpl()->SetMethod( ::StdMeshers_ViscousLayers::ExtrusionMethod( how ));
+  const char* methNames[3] = { "SURF_OFFSET_SMOOTH",
+                               "FACE_OFFSET",
+                               "NODE_OFFSET" };
+  if ( how >= 0 && how < 3 )
+    SMESH::TPythonDump() << _this() << ".SetMethod( StdMeshers." << methNames[ how ]<< " )";
+}
+
+void StdMeshers_ViscousLayerBuilder_i::SetGroupName(const char* name)
+{
+  GetImpl()->SetGroupName( name );
+  SMESH::TPythonDump() << _this() << ".SetGroupName( '" << name << "' )";
+}
+
+GEOM::GEOM_Object_ptr StdMeshers_ViscousLayerBuilder_i::GetShrinkGeometry( SMESH::SMESH_Mesh_ptr finalMesh, GEOM::GEOM_Object_ptr theShapeObject )
+{
+  
+  GEOM::GEOM_Object_var aShapeObj;
+  TopoDS_Shape theShape        = StdMeshers_ObjRefUlils::GeomObjectToShape( theShapeObject );
+  SMESH_Mesh_i* theFinalMesh_i = SMESH::DownCast< SMESH_Mesh_i* >( finalMesh );
+  TopoDS_Shape shrinkGeometry;
+  
+  try 
+  {
+    shrinkGeometry = GetImpl()->GetShrinkGeometry( theFinalMesh_i->GetImpl(), theShape );
+  }
+  catch ( std::exception& exc )
+  {
+    std::cout << exc.what() << "\n";
+    THROW_SALOME_CORBA_EXCEPTION( exc.what(), SALOME::INTERNAL_ERROR  );
+    return aShapeObj; // Maybe better to return a init and empty object(?)
+  }
+
+  if ( !shrinkGeometry.IsNull() )
+  {     
+    std::ostringstream streamShape;
+    //Write TopoDS_Shape in ASCII format to the stream
+    BRepTools::Write(shrinkGeometry, streamShape);
+    //Returns the number of bytes that have been stored in the stream's buffer.
+    int size = streamShape.str().size();
+    //Allocate octect buffer of required size
+    CORBA::Octet* OctetBuf = SALOMEDS::TMPFile::allocbuf(size);
+    //Copy ostrstream content to the octect buffer
+    memcpy(OctetBuf, streamShape.str().c_str(), size);
+    //Create and return TMPFile
+    SALOMEDS::TMPFile_var SeqFile = new SALOMEDS::TMPFile(size,size,OctetBuf,1);
+    // Get the geom engine
+    GEOM::GEOM_Gen_var geomEngine = theShapeObject->GetGen();
+    auto iOp                      = geomEngine->GetIInsertOperations();
+    aShapeObj                     = iOp->RestoreShape( SeqFile );
+    geomEngine->AddInStudy( aShapeObj, "Shrink", GEOM::GEOM_Object::_nil());        
+  }
+
+  return aShapeObj;
+}
+
+CORBA::Boolean StdMeshers_ViscousLayerBuilder_i::AddLayers( SMESH::SMESH_Mesh_ptr shrinkMesh, SMESH::SMESH_Mesh_ptr finalMesh, GEOM::GEOM_Object_ptr theShapeObject )
+{
+  TopoDS_Shape theShape         = StdMeshers_ObjRefUlils::GeomObjectToShape( theShapeObject );
+  SMESH_Mesh_i* shrinkMesh_i    = SMESH::DownCast< SMESH_Mesh_i* >( shrinkMesh );
+  SMESH_Mesh_i* theFinalMesh_i  = SMESH::DownCast< SMESH_Mesh_i* >( finalMesh );
+  bool success = false;
+
+  try 
+  {
+    success = GetImpl()->AddLayers( shrinkMesh_i->GetImpl(), theFinalMesh_i->GetImpl(), theShape );  
+  }
+  catch ( std::exception& exc )
+  {
+    THROW_SALOME_CORBA_EXCEPTION( exc.what(), SALOME::INTERNAL_ERROR  );
+  }
+  
+  return success;
+}
+//=============================================================================
+/*!
+ *  StdMeshers_ViscousLayerBuilder_i::~StdMeshers_ViscousLayerBuilder_i
+ *
+ *  Destructor
+ */
+//=============================================================================
+StdMeshers_ViscousLayerBuilder_i::~StdMeshers_ViscousLayerBuilder_i()
+{
+}
\ No newline at end of file
diff --git a/src/StdMeshers_I/StdMeshers_ViscousLayerBuilder_i.hxx b/src/StdMeshers_I/StdMeshers_ViscousLayerBuilder_i.hxx
new file mode 100644 (file)
index 0000000..94c8d2b
--- /dev/null
@@ -0,0 +1,73 @@
+// Copyright (C) 2007-2024  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
+//
+
+//  File   : StdMeshers_ViscousLayerBuilder_i.hxx
+//  Module : SMESH
+//
+#ifndef _SMESH_ViscousLayersBuilder_I_HXX_
+#define _SMESH_ViscousLayersBuilder_I_HXX_
+
+#include "SMESH_StdMeshers_I.hxx"
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
+
+#include "SMESH_2D_Algo_i.hxx"
+#include "SMESH_Hypothesis_i.hxx"
+#include "SMESH_Mesh_i.hxx"
+#include "StdMeshers_ViscousLayerBuilder.hxx"
+#include "StdMeshers_ObjRefUlils.hxx"
+
+class SMESH_Gen;
+
+class STDMESHERS_I_EXPORT StdMeshers_ViscousLayerBuilder_i: 
+  public virtual POA_StdMeshers::StdMeshers_ViscousLayerBuilder,
+  public virtual SMESH_2D_Algo_i
+{
+ public:
+  // Constructor
+  StdMeshers_ViscousLayerBuilder_i( PortableServer::POA_ptr thePOA,
+                                      ::SMESH_Gen*            theGenImpl );
+  // Destructor
+  virtual ~StdMeshers_ViscousLayerBuilder_i();
+
+  // Verify whether algorithm supports given entity type 
+  CORBA::Boolean IsDimSupported( SMESH::Dimension type );
+
+  // Get implementation
+  ::StdMeshers_ViscousLayerBuilder* GetImpl();  
+
+  void SetIgnoreFaces(const ::SMESH::long_array& faceIDs);
+  void SetFaces(const SMESH::long_array& faceIDs,
+                CORBA::Boolean           toIgnore);
+  void SetTotalThickness(::CORBA::Double thickness);
+  void SetNumberLayers(::CORBA::Short nb);
+  void SetStretchFactor(::CORBA::Double factor);
+  void SetMethod( ::StdMeshers::VLExtrusionMethod how );
+  void SetGroupName(const char* name);
+
+  // Compute and return the shrink geometry 
+  GEOM::GEOM_Object_ptr GetShrinkGeometry( SMESH::SMESH_Mesh_ptr finalMesh, GEOM::GEOM_Object_ptr theShapeObject );
+
+  // Build the viscous layer on the specified faces/edges available in the sourceMesh and consolidate the result in the finalMesh
+  CORBA::Boolean AddLayers( SMESH::SMESH_Mesh_ptr sourceMesh, SMESH::SMESH_Mesh_ptr finalMesh, GEOM::GEOM_Object_ptr theShapeObject );
+  
+};
+
+#endif
index e5a36875cabc02f95e699bf0aab8d17a9df9aa56..eec5588f16e2b0f9eb00cd38221c1d178d7828a9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index ac99e15ed8787a3665efc0772c37a65bfb899017..1ed9b78d0cb8289d9918bab0dcf27be134ed9fce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 97f08580d15c0b16dafa31e38dc459a25242fec1..671eb03fd9e6924c322baef34e975c53e7776ee1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 4c848008631837855421299deca3b1dc31bf3fbc..e453d60f52c3c9b957ea580bd44335ae6b59983f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9c62d7dd0e8795f4451bab1947250816e2965f0b..f0c973cdf46d8ab0690549b84117d170dd0a545f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -77,9 +77,7 @@
 #include "StdMeshers_UseExisting_1D2D_i.hxx"
 #include "StdMeshers_ViscousLayers2D_i.hxx"
 #include "StdMeshers_ViscousLayers_i.hxx"
-#ifdef ENABLE_MEFISTO
- #include "StdMeshers_MEFISTO_2D_i.hxx"
-#endif
+#include "StdMeshers_ViscousLayerBuilder_i.hxx"
 
 namespace SMESH {
   class ApplicableToAny
@@ -209,15 +207,11 @@ STDMESHERS_I_EXPORT
     else if (strcmp(aHypName, "CartesianParameters3D") == 0)
       aCreator = new StdHypothesisCreator_i<StdMeshers_CartesianParameters3D_i>;
     else if (strcmp(aHypName, "BlockRenumber") == 0)
-      aCreator = new StdHypothesisCreator_i<StdMeshers_BlockRenumber_i>;
+      aCreator = new StdHypothesisCreator_i<StdMeshers_BlockRenumber_i>;    
 
     // Algorithms
     else if (strcmp(aHypName, "Regular_1D") == 0)
       aCreator = new StdHypothesisCreator_i<StdMeshers_Regular_1D_i>;
-#ifdef ENABLE_MEFISTO
-    else if (strcmp(aHypName, "MEFISTO_2D") == 0)
-      aCreator = new StdHypothesisCreator_i<StdMeshers_MEFISTO_2D_i>;
-#endif
     else if (strcmp(aHypName, "Quadrangle_2D") == 0)
       aCreator = new StdHypothesisCreator_i<StdMeshers_Quadrangle_2D_i, StdMeshers_Quadrangle_2D_i>;
     else if (strcmp(aHypName, "QuadFromMedialAxis_1D2D") == 0)
@@ -255,7 +249,9 @@ STDMESHERS_I_EXPORT
     else if (strcmp(aHypName, "PolygonPerFace_2D") == 0)
       aCreator = new StdHypothesisCreator_i<StdMeshers_PolygonPerFace_2D_i>;
     else if (strcmp(aHypName, "PolyhedronPerSolid_3D") == 0)
-      aCreator = new StdHypothesisCreator_i<StdMeshers_PolyhedronPerSolid_3D_i>;
+      aCreator = new StdHypothesisCreator_i<StdMeshers_PolyhedronPerSolid_3D_i>;    
+    else if (strcmp(aHypName, "ViscousLayerBuilder") == 0)
+      aCreator = new StdHypothesisCreator_i<StdMeshers_ViscousLayerBuilder_i>;
 
     return aCreator;
   }
index 2c8c207816fc8e3fc8513fdcf1b33464382231a6..b5f70d310d6959caf88acde2816c5d7cd026fb13 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -26,6 +26,7 @@ ADD_SUBDIRECTORY(MacMesh)
 IF(SALOME_BUILD_GUI)
   ADD_SUBDIRECTORY(MGCleanerPlug)
   ADD_SUBDIRECTORY(YamsPlug)
+  ADD_SUBDIRECTORY(TopIIVolMeshPlug)
 #  ADD_SUBDIRECTORY(ZCracksPlug)
 ENDIF(SALOME_BUILD_GUI)
 
index 50780aa4586721d7661b33419e55bd938566ed16..37ac7b030c249502010113a57227ef7b8040433c 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f5c226b8781f81474288e2492de0e51fd296eb69..2a6db8594d7179a569da22ac672dccdcd663c67a 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -568,9 +568,10 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget):
 
     import SMeshHelper
     key = SMeshHelper.GetMGLicenseKey( self.fichierIn )
-    self.commande+=' --key ' + key
+    if key != "0":
+      self.commande+=' --key ' + key
 
-    if verbose: print(("INFO: MGCCleaner command:\n  %s" % self.commande))
+    if verbose: print("INFO: MG-Cleaner command:\n  %s" % self.commande)
     return True
 
   def clean(self):
index a117ed2e9c75f488b8011ecee4b6c80ec57c5f7d..16471834c4dcf605d3485044c8e2c2126ecf6b87 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 7bc19e021a544d180c7695788c34eecff2ab7548..88b24e61d05998ce1f1dd850f05d446aa4c2526e 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 45bf0f670c642091010f8905df517b3905bd6fa7..cb2802a59a14725507da134527258d142d9a89a9 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 57e074355a212cc6fda6f685774bd0986815d5ca..fbd2801a21252ed078e33c5429324f262e9cea7f 100644 (file)
@@ -43,7 +43,7 @@ master_doc = 'index'
 
 # General substitutions.
 project = 'MGCleaner Plug-in'
-copyright = '2013-2021, EDF R&D'
+copyright = '2013-2024, EDF'
 
 # The default replacements for |version| and |release|, also used in various
 # other places throughout the built documents.
index ee9570563951a47fea1bf560470bb090fea93abf..2efbb3d963e153f5d9def787f872e66a14a9e00f 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -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()
index 560c1c3c8eab75176ce01c40b8e32e22b864a5f8..b7a11ab78e7c1fd0b36acebefc3848fbfb5c4cbe 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 69af01e19db20498cacb36bcb4701724dcbfcc10..8f64de530e950f166d32fcd8ed9edc8cc46edce8 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d856d466ee8da3d3798a317722ed8fa12345481e..82379077aee016d0ee8964f44046aa11e139e837 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index cd498720184c0fd3f35b994484b64a3a3a10b137..449823556bc3721fc93a9d1fc44b5f9fcb786925 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index bee666b4e99e90b26e194f7974cdefb315f5cf81..997a9573e568e8997736df253537f288402970fb 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 984855de113fdbefcf8581291b1953ccb5d577e4..78bee1d7af7922e8c127d278a305c6e155946c98 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index a78be8ed86e20ac01e1f1a6d8655ea42ddc96218..3d41b61d1f6bd5ff0ee4a543bed703b59dbddd1d 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 97d90781d3cbf04fcd1275a8f76695dd9b02dd91..ce817af0db69ab228444608232f6c1331f291e97 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index c8067ab37b3e70bff5747021ea8e8f187684f1c8..61ee45e8685d36d7990a91eadab822b091098015 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 451bfe80baf400b11ad2b34b260c595d36f8188f..ef0c88a6cc9fc8ba0e10fe5e4832b43fde143032 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index a9f6263fc549b386d3afca68b23531d26f3e229e..6f64866b6125e31fa36dc886f29d387e243ec109 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f21cfea3bf6c12ca485ebca6eb7f03e02f60cd37..adb373ff00eaf0de26ecad81c5996b33dbd4c4d0 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 434bf16598b03e4c228c2cd39bc6e5d2f31a32e2..b30de18d4c64eebf7889eeee9ced4202203c4216 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index feae386a9f0c80354f181ad42e30f76f93855aab..d728cd8bca198ffcb8f70852090db38cacc59bc2 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 8fed97bca456ae45033d3ad304eeebea12401190..9d11cec0e66bcae3e9135caeec1b18ae2322c5da 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7c4b3cac87dc391a282c2e45b0d40dfe01922b11..7debbbe0f4c972b1c4467aeae79110de9ac845ec 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index fbe427ba3e82311e6f90f71f82149a6f45d6c924..d04be5378ca24dd8d420154c3b7ad273eca4aeed 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 805ecd84568d93c186e9308e205cd54786de4739..7ac0b2b4982fa314473117d15b3a5124d377f71d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 81173eb0f30ea70886b55ca2132fa435e0ec019f..bb9620a3985bace1d0446ef1e4852eede8c8f8eb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6a576572001915bf525791c17e1b191f316bcc0e..1a8d4cdd4f2170926cbcb1a5812d8f413318db09 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a0e15fc2d23d5b0221cd9a50e55461ca878fa44c..89f912fbae02bb23842a6fb57a11e7da06215a3b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7b1f9724e834ab646c70636da25f583b3031bd72..4f765641cd3464d766755c63bba5899cf3755157 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 78d90d16c14903e15231b00ac0edb74f6cbdd41e..cef8c363fcc542dfb76c2c2065aff0aad2e54aa9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 701a4b7b03f9a6110718575a17bae03529594a01..fabf253ccbd18ba3246a9354fb638a7bc0daf485 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ffbf20b075391616a4e57f02946fca63e809be35..9c3200e668ef1d0a568647f304a6072533993b75 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 52f2d23c3a8f498b37f73d02b025f8d9a61129d3..4187a1a728243756c70cae193f8d479f9a3f3dbc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 99c5909198f762750d32135c9fb8c62990f0a3e8..e04ea5f61ebc9b99eabd6c9fc4fc2537d102549d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ecfaa437ccbb3ea7daea6fdf25e1373524e4a0ec..3ab3292e1c5373d4eaf06da1dec1703e3e839af2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2021  EDF R&D
+// Copyright (C) 2006-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 018c6bf8a2bd85cf59e1ee2dd046bb92800dc578..5bb7476e769def35c44871030332c81d47f1e891 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2021  EDF R&D
+# Copyright (C) 2006-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
diff --git a/src/Tools/TopIIVolMeshPlug/CMakeLists.txt b/src/Tools/TopIIVolMeshPlug/CMakeLists.txt
new file mode 100644 (file)
index 0000000..ba22220
--- /dev/null
@@ -0,0 +1,59 @@
+# Copyright (C) 2013-2024  EDF
+#
+# 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
+#
+
+IF(SALOME_BUILD_DOC)
+  ADD_SUBDIRECTORY(doc)
+ENDIF(SALOME_BUILD_DOC)
+
+IF(SALOME_BUILD_GUI)
+  INCLUDE(UsePyQt)
+ENDIF(SALOME_BUILD_GUI)
+
+# --- scripts ---
+
+# scripts / static
+SET(_plugin_SCRIPTS
+  TopIIVolMeshPluginDialog.py
+  TopIIVolMeshPlugin.py
+  TopIIVolMeshPlugin_plugin.py
+  TopIIVolMeshMonitor.py
+  README
+)
+
+IF(SALOME_BUILD_GUI)
+  # uic files / to be processed by pyuic
+  SET(_pyuic_FILES
+    TopIIVolMeshPluginDialog.ui
+    TopIIVolMeshMonitor.ui
+  )
+  # scripts / pyuic wrappings
+  PYQT_WRAP_UIC(_pyuic_SCRIPTS ${_pyuic_FILES} TARGET_NAME _target_name_pyuic)
+ENDIF(SALOME_BUILD_GUI)
+
+# --- rules ---
+
+SALOME_INSTALL_SCRIPTS("${_plugin_SCRIPTS}" ${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
+  # to avoid races problems when compiling in parallel
+  ADD_DEPENDENCIES(${_target_name_pyuic_py} ${_target_name_pyuic})
+  # Install the CMake configuration files:
+  INSTALL(FILES "${PROJECT_SOURCE_DIR}/README" DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}")
+ENDIF(SALOME_BUILD_GUI)
diff --git a/src/Tools/TopIIVolMeshPlug/README b/src/Tools/TopIIVolMeshPlug/README
new file mode 100644 (file)
index 0000000..c4d66d4
--- /dev/null
@@ -0,0 +1,33 @@
+******************************
+About SALOME TopIIVolMesh plug-in
+******************************
+
+SALOME TopIIVolMesh plug-in implements an interface to the topIIvol meshing tool.
+
+SALOME TopIIVolMesh plug-in is integrated into SALOME platform via the SALOME Mesh
+module.
+
+For more information please visit the SALOME platform web site:
+
+  <https://www.salome-platform.org/>
+
+=======
+License
+=======
+
+SALOME platform is distributed under the GNU Lesser General Public License.
+See COPYING file for more details.
+
+============
+Installation
+============
+
+=============
+Documentation
+=============
+
+===============
+Troubleshooting
+===============
+
+Please, send a mail to webmaster.salome@opencascade.com.
diff --git a/src/Tools/TopIIVolMeshPlug/TopIIVolMeshMonitor.py b/src/Tools/TopIIVolMeshPlug/TopIIVolMeshMonitor.py
new file mode 100644 (file)
index 0000000..d0f2664
--- /dev/null
@@ -0,0 +1,97 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2013-2024 CEA/DES, EDF
+#
+# 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
+#
+
+import os
+import sys
+import string
+import types
+import tempfile
+import traceback
+import pprint as PP #pretty print
+
+from qtsalome import *
+
+# Import des panels
+
+from TopIIVolMeshMonitor_ui import Ui_qdLogger
+
+verbose = True
+
+class TopIIVolMeshMonitor(Ui_qdLogger, QDialog):
+  def __init__(self, parent, txt):
+    QDialog.__init__(self,parent)
+    self.setupUi(self)
+    self.resize( QSize(1000,600).expandedTo(self.minimumSizeHint()) )
+    self.qpbOK.clicked.connect( self.OnQpbOKClicked )
+    # Button OK is disabled until computation is finished
+    self.qpbOK.setEnabled(False)
+    self.qpbSave.clicked.connect( self.OnQpbSaveClicked )
+    self.qpbSave.setToolTip("Save trace in log file")
+    self.qpbOK.setToolTip("Close view")
+    self.myExecutable=QProcess(self)
+    self.myExecutable.readyReadStandardOutput.connect( self.readFromStdOut )
+    self.myExecutable.readyReadStandardError.connect( self.readFromStdErr )
+    self.myExecutable.finished.connect( self.computationFinished )
+    self.myExecutable.errorOccurred.connect( self.computationOnError )
+    if os.path.exists(self.parent().outputMesh):
+       os.remove(self.parent().outputMesh)
+    self.myExecutable.start(txt)
+    self.myExecutable.closeWriteChannel()
+    self.show()
+
+  def OnQpbOKClicked(self):
+    self.close()
+
+  def OnQpbSaveClicked(self):
+    outputDirectory=os.path.expanduser("~")
+    fn, mask = QFileDialog.getSaveFileName(None,"Save File",outputDirectory)
+    if not fn:
+      return
+    ulfile = os.path.abspath(str(fn))
+    try:
+      f = open(fn, 'wb')
+      f.write(self.qtbLogWindow.toPlainText().encode("utf-8"))
+      f.close()
+    except IOError as why:
+      QMessageBox.critical(self, 'Save File',
+                                 'The file <b>%s</b> could not be saved.<br>Reason: %s'%(str(fn), str(why)))
+
+  def readFromStdErr(self):
+    a=self.myExecutable.readAllStandardError()
+    aa=a.data().decode(errors='ignore')
+    self.qtbLogWindow.append(aa)
+
+  def readFromStdOut(self) :
+    a=self.myExecutable.readAllStandardOutput()
+    aa=a.data().decode(errors='ignore')
+    self.qtbLogWindow.append(aa)
+
+  def computationFinished(self):
+    self.qpbOK.setEnabled(True)
+    if self.myExecutable.exitCode() == 0:
+      self.parent().saveOutputMesh()
+    else:
+      QMessageBox.critical(self, 'Computation failed',
+                                 'The computation has failed.<br>Please, check the log message.')
+
+  def computationOnError(self):
+    self.qpbOK.setEnabled(True)
+    QMessageBox.critical(self, 'Computation failed',
+                               'The computation has failed.<br>Please, check the log message.')
diff --git a/src/Tools/TopIIVolMeshPlug/TopIIVolMeshMonitor.ui b/src/Tools/TopIIVolMeshPlug/TopIIVolMeshMonitor.ui
new file mode 100644 (file)
index 0000000..5bded34
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>qdLogger</class>
+ <widget class="QDialog" name="qdLogger">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>469</width>
+    <height>489</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Run TopIIVolMesh</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="1" column="1">
+    <widget class="QPushButton" name="qpbSave">
+     <property name="text">
+      <string>Save log</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0" colspan="2">
+    <widget class="QTextBrowser" name="qtbLogWindow"/>
+   </item>
+   <item row="1" column="0">
+    <widget class="QPushButton" name="qpbOK">
+     <property name="text">
+      <string>Ok</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPlugin.py b/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPlugin.py
new file mode 100644 (file)
index 0000000..6a66a93
--- /dev/null
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2013-2024  EDF
+#
+# 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
+#
+
+# if you already have plugins defined in a salome_plugins.py file, add this file at the end.
+# if not, copy this file as ${HOME}/Plugins/smesh_plugins.py or ${APPLI}/Plugins/smesh_plugins.py
+
+def TopIIVolMeshLct(context):
+  # get context study, salomeGui
+  study = context.study
+  sg = context.sg
+
+  import os
+  import subprocess
+  import tempfile
+  from qtsalome import QFileDialog, QMessageBox
+
+  import TopIIVolMeshPluginDialog
+  window = TopIIVolMeshPluginDialog.getInstance()
+  window.show()
diff --git a/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.py b/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.py
new file mode 100644 (file)
index 0000000..031df17
--- /dev/null
@@ -0,0 +1,171 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2013-2024 CEA/DES, EDF
+#
+# 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
+#
+
+
+import os, subprocess
+import random
+import getpass
+import time
+import pathlib
+
+# set seed
+from datetime import datetime
+random.seed(datetime.now())
+
+import platform
+import tempfile
+from TopIIVolMeshPluginDialog_ui import Ui_TopIIVolMeshMainFrame
+from TopIIVolMeshMonitor import TopIIVolMeshMonitor
+from qtsalome import *
+
+verbose = True
+
+class TopIIVolMeshPluginDialog(Ui_TopIIVolMeshMainFrame,QWidget):
+  """
+  """
+  def __init__(self):
+    QWidget.__init__(self)
+    self.setupUi(self)
+    self.qpbHelp.clicked.connect(self.OnQpbHelpClicked)
+    self.qpbCompute.clicked.connect(self.OnQpbComputeClicked)
+    self.qpbMeshFile.clicked.connect(self.OnQpbMeshFileClicked)
+    self.qpbMeshFile.setToolTip("Select input DEM file")
+    self.qpbClose.clicked.connect(self.OnQpbCloseClicked)
+    self.qrbDist.clicked.connect(self.OnqrbDistClicked)
+    self.qrbPar.clicked.connect(self.OnqrbParClicked)
+    self.qrbSeq.clicked.connect(self.OnqrbSeqClicked)
+    self.SALOME_TMP_DIR = None
+    try:
+      self.qleTmpDir.setText(os.path.join('/tmp',getpass.getuser(),'top-ii-vol'))
+    except:
+      self.qleTmpDir.setText('/tmp')
+    self.outputMesh = ''
+
+  def OnQpbHelpClicked(self):
+    import SalomePyQt
+    sgPyQt = SalomePyQt.SalomePyQt()
+    try:
+      mydir=os.environ["SMESH_ROOT_DIR"]
+    except Exception:
+      QMessageBox.warning(self, "Help", "Help unavailable $SMESH_ROOT_DIR not found")
+      return
+
+    myDoc=mydir + "/share/doc/salome/gui/SMESH/TopIIVolMesh/index.html"
+    sgPyQt.helpContext(myDoc,"")
+
+  def OnQpbMeshFileClicked(self):
+    fd = QFileDialog(self, "select an existing Mesh file", self.qleMeshFile.text(), "Mesh-Files (*.xyz);;All Files (*)")
+    if fd.exec_():
+      infile = fd.selectedFiles()[0]
+      self.qleMeshFile.setText(infile)
+
+  def OnQpbComputeClicked(self):
+    if self.qleMeshFile.text() == '':
+      QMessageBox.critical(self, "Mesh", "select an input mesh")
+      return
+    inputMesh = self.qleMeshFile.text()
+    # retrieve x,y,z and depth parameters
+    xPoints = self.qsbXPoints.value()
+    yPoints = self.qsbYPoints.value()
+    zPoints = self.qsbZPoints.value()
+    depth   = self.qsbDepth.value()
+    nProcs  = self.qsbNBprocs.value()
+    if not self.qrbDist.isChecked():
+      if nProcs == 1:
+        shellCmd = "topIIvol_Mesher"
+      else:
+        shellCmd = "mpirun -np {} topIIvol_ParMesher".format(nProcs)
+      shellCmd+= " --xpoints " + str(xPoints)
+      shellCmd+= " --ypoints " + str(yPoints)
+      shellCmd+= " --zpoints " + str(zPoints)
+      shellCmd+= " --depth   " + str(depth)
+      shellCmd+= " --in " + inputMesh
+    else:
+      xParts = self.qsbXParts.value()
+      yParts = self.qsbYParts.value()
+      zParts = self.qsbZParts.value()
+      shellCmd = "mpirun -np {} topIIvol_DistMesher".format(nProcs)
+      shellCmd+= " --xpoints " + str(xPoints)
+      shellCmd+= " --ypoints " + str(yPoints)
+      shellCmd+= " --zpoints " + str(zPoints)
+      shellCmd+= " --depth   " + str(depth)
+      shellCmd+= " --partition_x " + str(xParts)
+      shellCmd+= " --partition_y " + str(yParts)
+      shellCmd+= " --partition_z " + str(zParts)
+      shellCmd+= " --in " + inputMesh
+    if platform.system()=="Windows" :
+      self.SALOME_TMP_DIR = os.getenv("SALOME_TMP_DIR")
+    else:
+      self.SALOME_TMP_DIR = os.path.join(self.qleTmpDir.text(), time.strftime("%Y-%m-%d-%H-%M-%S"))
+      pathlib.Path(self.SALOME_TMP_DIR).mkdir(parents=True, exist_ok=True)
+    self.outputMesh= os.path.join(self.SALOME_TMP_DIR, inputMesh.split('/').pop().replace('.xyz','.mesh'))
+    shellCmd+= " --out " + self.outputMesh
+    os.chdir(self.SALOME_TMP_DIR)
+    print("INFO: ", shellCmd)
+    myMonitorView=TopIIVolMeshMonitor(self, shellCmd)
+
+  def OnqrbDistClicked(self):
+    state = self.qrbDist.isChecked()
+    self.qgbDist.setEnabled(state)
+    self.qsbNBprocs.setEnabled(state)
+    self.qlbNBprocs.setEnabled(state)
+
+  def OnqrbParClicked(self):
+    state = self.qrbPar.isChecked()
+    self.qgbDist.setEnabled(not state)
+    self.qsbNBprocs.setEnabled(state)
+    self.qlbNBprocs.setEnabled(state)
+
+  def OnqrbSeqClicked(self):
+    state = self.qrbSeq.isChecked()
+    if state:
+      self.qsbNBprocs.setValue(1)
+    self.qgbDist.setEnabled(not state)
+    self.qsbNBprocs.setEnabled(not state)
+    self.qlbNBprocs.setEnabled(not state)
+    
+  def OnQpbCloseClicked(self):
+    self.close()
+
+  def saveOutputMesh(self):
+    if not self.qcbDisplayMesh.isChecked():
+      return True
+    import salome
+    import  SMESH, SALOMEDS
+    from salome.smesh import smeshBuilder
+    smesh = smeshBuilder.New()
+    self.outputMesh.split('/')
+    for mesh in pathlib.Path(self.SALOME_TMP_DIR).glob('*.mesh'):
+      (outputMesh, status) = smesh.CreateMeshesFromGMF(os.path.join(self.SALOME_TMP_DIR, mesh))
+    if salome.sg.hasDesktop():
+        salome.sg.updateObjBrowser()
+    return True
+
+__instance = None
+
+def getInstance():
+  """
+  This function returns a singleton instance of the plugin dialog.
+  It is mandatory in order to call show without a parent ...
+  """
+  global __instance
+  if __instance is None:
+    __instance = TopIIVolMeshPluginDialog()
+  return __instance
diff --git a/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.ui b/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.ui
new file mode 100644 (file)
index 0000000..4a449f0
--- /dev/null
@@ -0,0 +1,455 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>TopIIVolMeshMainFrame</class>
+ <widget class="QWidget" name="TopIIVolMeshMainFrame">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>758</width>
+    <height>400</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Tetrahedral mesh generator for DEM point-clouds</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="1" column="0">
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="0" column="0">
+    <widget class="QGroupBox" name="groupBox">
+     <property name="font">
+      <font>
+       <pointsize>10</pointsize>
+      </font>
+     </property>
+     <property name="title">
+      <string>Input Mesh</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_2">
+      <item row="0" column="1">
+       <widget class="QLineEdit" name="qleMeshFile">
+        <property name="font">
+         <font>
+          <pointsize>10</pointsize>
+         </font>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0">
+       <widget class="QPushButton" name="qpbMeshFile">
+        <property name="font">
+         <font>
+          <pointsize>10</pointsize>
+         </font>
+        </property>
+        <property name="text">
+         <string>DEM input file</string>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>18</width>
+          <height>18</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="3" column="0">
+    <spacer name="verticalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="4" column="0">
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QPushButton" name="qpbCompute">
+       <property name="text">
+        <string>Compute</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="qpbClose">
+       <property name="text">
+        <string>Close</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="qpbHelp">
+       <property name="font">
+        <font>
+         <pointsize>10</pointsize>
+        </font>
+       </property>
+       <property name="text">
+        <string>Help</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="2" column="0">
+    <widget class="QGroupBox" name="gbOptions">
+     <property name="title">
+      <string>Options</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_6">
+      <item row="0" column="0" rowspan="2" colspan="2">
+       <widget class="QGroupBox" name="qgbNBpoints">
+        <property name="title">
+         <string>Number of points</string>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_4">
+         <item row="0" column="0">
+          <widget class="QSpinBox" name="qsbXPoints">
+           <property name="minimum">
+            <number>0</number>
+           </property>
+           <property name="maximum">
+            <number>999999999</number>
+           </property>
+           <property name="value">
+            <number>10</number>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="QLabel" name="qlXpoints">
+           <property name="text">
+            <string>X direction</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QSpinBox" name="qsbYPoints">
+           <property name="minimum">
+            <number>0</number>
+           </property>
+           <property name="maximum">
+            <number>999999999</number>
+           </property>
+           <property name="value">
+            <number>10</number>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="QLabel" name="qlYpoints">
+           <property name="text">
+            <string>Y direction</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="0">
+          <widget class="QSpinBox" name="qsbZPoints">
+           <property name="minimum">
+            <number>0</number>
+           </property>
+           <property name="maximum">
+            <number>999999999</number>
+           </property>
+           <property name="value">
+            <number>10</number>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="1">
+          <widget class="QLabel" name="qlZpoints">
+           <property name="text">
+            <string>Z direction</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item row="0" column="2">
+       <spacer name="horizontalSpacer_3">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>0</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="0" column="3" rowspan="2" colspan="3">
+       <widget class="QGroupBox" name="groupBox_2">
+        <property name="title">
+         <string>Meshing</string>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_5">
+         <item row="0" column="0">
+          <widget class="QRadioButton" name="qrbSeq">
+           <property name="text">
+            <string>Sequential</string>
+           </property>
+           <property name="checked">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QRadioButton" name="qrbPar">
+           <property name="text">
+            <string>Parallel</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="0">
+          <widget class="QRadioButton" name="qrbDist">
+           <property name="text">
+            <string>Parallel distributed</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item row="0" column="6">
+       <spacer name="horizontalSpacer_5">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>0</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="0" column="7">
+       <widget class="QSpinBox" name="qsbNBprocs">
+        <property name="enabled">
+         <bool>false</bool>
+        </property>
+        <property name="minimum">
+         <number>0</number>
+        </property>
+        <property name="maximum">
+         <number>999999999</number>
+        </property>
+        <property name="value">
+         <number>1</number>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="8">
+       <widget class="QLabel" name="qlbNBprocs">
+        <property name="enabled">
+         <bool>false</bool>
+        </property>
+        <property name="text">
+         <string>Number of  processors</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="7" rowspan="3" colspan="2">
+       <widget class="QGroupBox" name="qgbDist">
+        <property name="enabled">
+         <bool>false</bool>
+        </property>
+        <property name="title">
+         <string>Number of partitions</string>
+        </property>
+        <property name="checkable">
+         <bool>false</bool>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_3">
+         <item row="1" column="0" colspan="2">
+          <widget class="QSpinBox" name="qsbYParts">
+           <property name="minimum">
+            <number>0</number>
+           </property>
+           <property name="maximum">
+            <number>999999999</number>
+           </property>
+           <property name="value">
+            <number>1</number>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="2" colspan="2">
+          <widget class="QLabel" name="qlbYParts">
+           <property name="text">
+            <string>Y direction</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="2" colspan="2">
+          <widget class="QLabel" name="qlbXParts">
+           <property name="text">
+            <string>X direction</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="2">
+          <widget class="QLabel" name="qlbZParts">
+           <property name="text">
+            <string>Z direction</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="0" colspan="2">
+          <widget class="QSpinBox" name="qsbZParts">
+           <property name="minimum">
+            <number>0</number>
+           </property>
+           <property name="maximum">
+            <number>999999999</number>
+           </property>
+           <property name="value">
+            <number>1</number>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="0" colspan="2">
+          <widget class="QSpinBox" name="qsbXParts">
+           <property name="minimum">
+            <number>0</number>
+           </property>
+           <property name="maximum">
+            <number>999999999</number>
+           </property>
+           <property name="value">
+            <number>1</number>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item row="2" column="0">
+       <widget class="QSpinBox" name="qsbDepth">
+        <property name="minimum">
+         <number>-999999999</number>
+        </property>
+        <property name="maximum">
+         <number>999999999</number>
+        </property>
+        <property name="value">
+         <number>0</number>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1">
+       <widget class="QLabel" name="qlDepth">
+        <property name="text">
+         <string>Depth in Z direction</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="3">
+       <widget class="QCheckBox" name="qcbDisplayMesh">
+        <property name="text">
+         <string/>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="4">
+       <widget class="QLabel" name="qlDisplayMesh">
+        <property name="text">
+         <string>Display mesh</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="5">
+       <spacer name="horizontalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>60</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="3" column="0">
+       <widget class="QLabel" name="qlTmpDir">
+        <property name="text">
+         <string>Workspace</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0" colspan="9">
+       <widget class="QLineEdit" name="qleTmpDir">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>qpbMeshFile</tabstop>
+  <tabstop>qleMeshFile</tabstop>
+  <tabstop>qsbXPoints</tabstop>
+  <tabstop>qsbYPoints</tabstop>
+  <tabstop>qsbZPoints</tabstop>
+  <tabstop>qsbDepth</tabstop>
+  <tabstop>qsbNBprocs</tabstop>
+  <tabstop>qsbXParts</tabstop>
+  <tabstop>qsbYParts</tabstop>
+  <tabstop>qsbZParts</tabstop>
+  <tabstop>qleTmpDir</tabstop>
+  <tabstop>qpbCompute</tabstop>
+  <tabstop>qpbClose</tabstop>
+  <tabstop>qpbHelp</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPlugin_plugin.py b/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPlugin_plugin.py
new file mode 100644 (file)
index 0000000..f4ea898
--- /dev/null
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2013-2024 CEA/DES, EDF
+#
+# 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
+#
+
+# if you already have plugins defined in a salome_plugins.py file, add this file at the end.
+# if not, copy this file as ${HOME}/Plugins/smesh_plugins.py or ${APPLI}/Plugins/smesh_plugins.py
+
+def TopIIVolMeshLct(context):
+  # get context study, salomeGui
+  study = context.study
+  sg = context.sg
+
+  import os
+  import subprocess
+  import tempfile
+  from qtsalome import QFileDialog, QMessageBox
+
+  import TopIIVolMeshPluginDialog
+  window = TopIIVolMeshPluginDialog.getDialog()
+  window.show()
diff --git a/src/Tools/TopIIVolMeshPlug/doc/CMakeLists.txt b/src/Tools/TopIIVolMeshPlug/doc/CMakeLists.txt
new file mode 100644 (file)
index 0000000..d6d7f17
--- /dev/null
@@ -0,0 +1,30 @@
+# Copyright (C) 2012-2024  EDF
+#
+# 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
+#
+
+SALOME_CONFIGURE_FILE(conf.py.in conf.py)
+
+SET(_cmd_options -c ${CMAKE_CURRENT_BINARY_DIR} -b html -d doctrees ${CMAKE_CURRENT_SOURCE_DIR} docutils)
+SALOME_GENERATE_ENVIRONMENT_SCRIPT(_cmd env_script "${SPHINX_EXECUTABLE}" "${_cmd_options}" CONTEXT TopIIVolMeshPlug_DOC)
+ADD_CUSTOM_TARGET(html_docs_TopIIVolMeshPlug COMMAND ${_cmd})
+
+INSTALL(CODE "EXECUTE_PROCESS(COMMAND \"${CMAKE_COMMAND}\" --build ${PROJECT_BINARY_DIR} --target html_docs_TopIIVolMeshPlug)")
+INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docutils/ DESTINATION ${SALOME_INSTALL_DOC}/gui/SMESH/TopIIVolMesh)
+
+SET(make_clean_files docutils doctrees)
+SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${make_clean_files}")
diff --git a/src/Tools/TopIIVolMeshPlug/doc/TopIIVolMesh.rst b/src/Tools/TopIIVolMeshPlug/doc/TopIIVolMesh.rst
new file mode 100644 (file)
index 0000000..b9d871d
--- /dev/null
@@ -0,0 +1,68 @@
+Introduction
+============
+
+**topIIvol** meshing tool provides sequential and parallel tools for creating volumetric tetrahedral meshes from a given terrain topology via digital elevation model (DEM point-cloud `*.xyz`). Via this plugin one could produce distributed meshes suitable for domain-decomposition based solvers or simply non distributed meshes (single mesh) suitable for a sequential/parallel solver.
+
+Running topIIvol Plug-in
+========================
+
+**topIIVolMesh** plug-in can be invoked via SMESH Plugin item in Mesh menu bar 
+
+.. image:: images/callTopIIVolMesh.png
+   :align: center
+
+
+**topIIVolMesh** Options
+========================
+
+Users have option of performing meshing via:
+
+- *Sequential* mode: mesh computation in sequential and outputs a single mesh.
+- *Parallel* mode: mesh computation in parallel and outputs a single mesh. 
+- *Parallel distributed* mode: mesh computation in parallel and outputs partitioned meshes.
+
+Sequential mode
+---------------
+By default sequential meshing mode is activated. **topIIvol_Mesher** sequential tool is called for creating volumetric tetrahedral mesh for the given DEM point-cloud. The volumetric mesh can be displayed in SALOME by ticking the "Display mesh" check-box.
+
+The list of input parameters are:
+
+- DEM input file: input point cloud file in .xyz format;
+- Number of X points present in the input point cloud;
+- Number of Y points present in the input point cloud;
+- Number of Z points intended in the Z direction;
+- Depth of the mesh needed;
+- temporary directory for calculation.
+
+Parallel mode
+---------------
+For larger meshes the parallel meshing mode can be activated via the check-box **Parallel**. Additionally, this requires the user to provide the number of processors to be used for parallel meshing. Then, **topIIvol_ParMesher** parallel computing tool is called for creating volumetric tetrahedral mesh for the given DEM point-cloud. The volumetric mesh can be displayed in SALOME by ticking the "Display mesh" check-box.
+
+The list of input parameters are:
+
+- DEM input file: input point cloud file in .xyz format;
+- Number of X points present in the input point cloud;
+- Number of Y points present in the input point cloud;
+- Number of Z points intended in the Z direction;
+- Depth of the mesh needed;
+- Number of MPI ranks
+- temporary directory for calculation.
+
+
+Parallel distributed mode
+-----------------
+For larger meshes suitable for distributed-memory solvers (domain-decomposition) the distributed parallel meshing mode can be activated via the check-box **Parallel distributed**. This requires the user to provide the number of processors to be used for parallel meshing and how to partition the mesh in each direction (X, Y, Z). Then,  **topIIvol_DistMesher** computing tool is called for creating embarassingly parallel distributed meshes for the given DEM point-cloud. These volumetric mesh partitions can be displayed in SALOME by ticking the "Display mesh" check-box.
+
+The list of input parameters are:
+
+- DEM input file: input point cloud file in .xyz format;
+- Number of X points present in the input point cloud;
+- Number of Y points present in the input point cloud;
+- Number of Z points intended in the Z direction;
+- Depth of the mesh needed;
+- Number of partitions in X direction;
+- Number of partitions in Y direction;
+- Number of partitions in Z direction;
+- Number of MPI ranks
+- temporary directory for calculation.
+
diff --git a/src/Tools/TopIIVolMeshPlug/doc/conf.py.in b/src/Tools/TopIIVolMeshPlug/doc/conf.py.in
new file mode 100644 (file)
index 0000000..ea0464b
--- /dev/null
@@ -0,0 +1,187 @@
+# -*- coding: utf-8 -*-
+#
+# TopIIVolMesh PlugIn documentation build configuration file
+#
+
+import sys, os
+import sphinx
+
+# If your extensions are in another directory, add it here. If the directory
+# is relative to the documentation root, use os.path.abspath to make it
+# absolute, like shown here.
+#sys.path.append(os.path.abspath('some/directory'))
+
+# General configuration
+# ---------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc']
+try:
+  import sphinx_rtd_theme
+  extensions += ['sphinx_rtd_theme']
+  use_rtd_theme = True
+except:
+  use_rtd_theme = False
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['.templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General substitutions.
+project = 'topIIvol Plug-in'
+copyright = '2007-2024 CEA'
+
+# The default replacements for |version| and |release|, also used in various
+# other places throughout the built documents.
+#
+# The short X.Y version.
+version = '@SALOMESMESH_VERSION@'
+# The full version, including alpha/beta/rc tags.
+release = '@SALOMESMESH_VERSION@'
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directories, that shouldn't be searched
+# for source files.
+#exclude_dirs = []
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# Options for HTML output
+# -----------------------
+
+# The theme to use for HTML and HTML Help pages.  Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+if use_rtd_theme:
+  html_theme = 'sphinx_rtd_theme'
+else:
+  html_theme = 'default' if sphinx.version_info[:2] < (1,3) else 'classic'
+
+themes_options = {}
+themes_options['classic'] = {
+  'body_max_width':'none',
+  'body_min_width':0,
+}
+html_theme_options = themes_options.get(html_theme, {})
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (within the static path) to place at the top of
+# the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+#html_static_path = ['.static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_use_modindex = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, the reST sources are included in the HTML build as _sources/<name>.
+#html_copy_source = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'TopIIVolMeshPlug-in doc'
+
+
+# Options for LaTeX output
+# ------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, document class [howto/manual]).
+latex_documents = [
+  ('index', 'TopIIVolMeshPlugIn.tex', 'TopIIVolMesh PlugIn Documentation',
+   'CEA', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True
diff --git a/src/Tools/TopIIVolMeshPlug/doc/images/callTopIIVolMesh.png b/src/Tools/TopIIVolMeshPlug/doc/images/callTopIIVolMesh.png
new file mode 100644 (file)
index 0000000..867b73a
Binary files /dev/null and b/src/Tools/TopIIVolMeshPlug/doc/images/callTopIIVolMesh.png differ
diff --git a/src/Tools/TopIIVolMeshPlug/doc/index.rst b/src/Tools/TopIIVolMeshPlug/doc/index.rst
new file mode 100644 (file)
index 0000000..a54ffdb
--- /dev/null
@@ -0,0 +1,22 @@
+.. TopIIVolMesh documentation master file, created by sphinx-quickstart.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+topIIvol plugin documentation
+=====================================
+
+This documentation covers the usage of **top-ii-vol** as plug-in in SALOME that can be used within the SALOME
+Mesh module.
+
+TopIIVolMesh plug-in uses CEA **top-ii-Vol** meshing tool, which provides sequential and parallel tools for creating volumetric tetrahedral meshes for a given terrain topology.
+This plug-in offers only the most common functionalities of the tool.
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+
+   TopIIVolMesh.rst
+
+
+
index ff428e4e5b1748b99cdcbcedd4513abbaffa06d7..524bf453b924bdbcc6b0a0031bad4cbc8701d7c0 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 8b2aa03da922ecf7458e459915275d3802ef0d15..350b317ae172616c44bbb69ec722b2da74d4931d 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2007-2021  EDF R&D
+# Copyright (C) 2007-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 550b6a6d9977954b67494369eb749f3d0029f950..0545a894783188a87473d85ed135747d989e4e65 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index dcda08faa93b65e5884b109ce513104fa7b1ccb5..8e784534835f1be06db200b9d0456e6362e3eaea 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 34cc3b1a0b3517ad92dc8e9038860bf9c9ac0277..6b586b462c5284d139028751743f40adad279739 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 23e31a33136f75ed4aa7a2a2f9617e4c5325e465..305469eb7d6c54acfd1db17f6e0297ecbdb67ecf 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index db8ad1bb023a591f81ab8efe4cb0ac00b1fa9a51..00a3be6c75f19a9d76e758e1f11b205f7207ba25 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 7283f738b5b4a9d409d6c6d96df6e1987abcb4b9..44d7856a8c1eb8dce1256e0297173956f65631c6 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index cd3d0aa228f54957ccf6322b2be1cbb5d4bfff59..26d0b62761cb343fb9a401f6982a73e1e8484f76 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index dc4e41fd3ca51fac4e415e576f62a087676d3ac3..15cc59917a4352d2b1396b851fa0a10eb3d54e3a 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 85b301f403c612be5c843fb37aa7a31e22c6ab63..62a98e1c3f05888ca3a21b3436b64e60fc55ab58 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 2c124cebdee920b73ed7fd890d1011ae220c52d8..9981271f87cd0938bb68e30c8483be9fd1dfaa6d 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 9bb257fcf21ec085ba2e34c4717d7ca5791f440f..58fbe0d90c5c5dba48b801533aad41dbf1283a4a 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 15d8f1f22deeec274b51f37714023fe14d10b284..1b1f02a53b8d601ff883bc37102aff704d197f33 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 23cadca35c2c87f44c026a94fb99d58465153e58..9fa9fe5e9ce1d4ef78d86c64900c1af22ac26779 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index fe73353e31f075082791326d63462af076e9030c..8ac4dcc4a60c21a11ca75664466aa276a6707a77 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 77709a0eff5c53ad4a05a659349162d6ff79f8eb..445af45685b09e6d5d4676d064269036a6006370 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index b4e05d4954e43eea4192ff667542bc094be621e8..171db2e17092f065563192c68855f1b5aa73c957 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f184432645e9fca7c044d5c731a2a2c098e05a21..001f6e574423474bcc0199e9abe1f88175c03538 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 66dc5fd0bd710c177916eac105e7a21b6af89a4d..d370e7dfea0a0c496ce83dec1005803040bd1460 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 01adacb92d4e034c51d901e5574f4b489200696d..c890c0ff7cbfdffa915e31dc31ff3cd48481af57 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index dde54d31d554544f4279dafbc416bf0988af5a36..151224383ad2b896ec44fc10160261ad23a89421 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2007-2021  EDF R&D
+# Copyright (C) 2007-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f0da68f1cc683798493392fbdeb09508222295f0..b5740f5b4f1ba003e575daf249810e939b2467f4 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 0abbc41b3c6eeb03c6b42558199ea2594834f2a6..69a44302cffb7cc55e0dac0251b88511d91126a0 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index bdab27dba841e9ad4f9863ee0c66d5889a1c44bf..ea702744ab3e490938dfed349cfc45c5b829fce0 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f2412d313fe990b023997dd2273bee1d94782d4e..3a18b057b5a3a717ed5eab031d5a6b3d689278b8 100644 (file)
@@ -43,7 +43,7 @@ master_doc = 'index'
 
 # General substitutions.
 project = 'Verima Plug-in'
-copyright = '2007-2021 EDF R&D'
+copyright = '2007-2024 EDF'
 
 # The default replacements for |version| and |release|, also used in various
 # other places throughout the built documents.
index 117763c0e44ccfcbbc52ced86bb8416a904c043e..93206aa72423a9a664f537a8e3a2e57996c49d42 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2021  EDF R&D
+# Copyright (C) 2011-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d71fea3898024d19db211ed686a0f72e531e8a7f..7748def30dc69584eb8e7939c73ff46826bb137d 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 1b998e45b6274399bf7e2ff64a58397e21825b7b..be036b6fd9270367df1a364f0f4caa6af858272a 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2007-2021  EDF R&D
+# Copyright (C) 2007-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 57f1555df3ac3d71111bf6690988456e51ee647a..a579886b22b9a0b16493f3b639f91e3ef2e3382d 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 37c1e21196509415281004fa3b7f9f82f6fe9c55..ea49d9c4ce0e80615be5b8473786b1ebbb3efa55 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index a10c77262be4a991798c6f186e3b20a90b33aa71..e83c76022ef1806c6fb120f1a8e34ba9c8ecfc1d 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 896f8afa2378d69828ce83d5fad9e01cf74fc663..923f9bc0c1636e41aa90924e2e3300840d7bfc83 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d880c3de8a55ca2f2d0dffbbb93d5d4a30cd5326..376e2833fcf9055d476677502260d60984f43aa4 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 145b00f320846459d8011607e0626acb13d1fafb..6b32da496f0e70ce634c06d2ed27c6da38e518d5 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 321b87c5d2015bf8e6ea588ee66d23c04b04d0e2..2a026626ea9ba0574f6bf92cfd656714917a1bc9 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 878697c9fe51ac83489732ebebd0e5f249a1d8fd..663e2f0a2e86f5f1cca4af018dc9d0f931a937ea 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 1b09ac4304a47ee625d08712dc287397a21e06cd..5c66176bd2f90a04b09412f81510fff508dd3c68 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 2051550d24c52ed6c6555275dee35a86a07424c5..c3d75d45d3ad1ffa5d8d2f2db68c1fb299276333 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index dde54d31d554544f4279dafbc416bf0988af5a36..151224383ad2b896ec44fc10160261ad23a89421 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2007-2021  EDF R&D
+# Copyright (C) 2007-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 32363863d1097c121128a2a6fb28c958a810ce54..fa02ac4e52f1ababcb541495d68f7f49940f2acf 100644 (file)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index ac410c0c75c6f4ba298bd7ff80317bba45c6fa4d..f41ae272c52f4c5814073bda8667c42f19588881 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 0df4612fd597ad9365abb553382750e5f85989f2..c454a605f1e357dffc7ec4adceff46caf7ac41dd 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 5017087b06fe7fb4de55e21258a3e52b6be2bf58..b268dd493ed1e3b3e29a84093da8e65a22dad2f6 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 13cc3b87b40b3ca0862b55250a4dc1ae2a592fc1..ac253ab53cbf839655e222a9309898d4f91472e5 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f660e9da9a2974115ef896111760db7be076f79e..3fd7a1675ae79c1747de2f0a4efe1cbaddc1ddc3 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2007-2021  EDF R&D
+# Copyright (C) 2007-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 90fbca24953b4e39d23537815262ff5450050381..be4216ff64696e4f6c3ddad64ff20305ed15167e 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 846f58953684350c1bdacc80ce0c6f797e7d463e..2593c4aa2d4b19fc5ee8ca526d75b76c029650d0 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 # -*- coding: utf-8 -*-
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 785d6e54368d1ce779be389d1904017b8b5a1eed..60b694b4420f4cdf4000cb460e1b1fc0cb2bd7b6 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index b2a1364c93ec77c4edee7584e33aed1cfb488756..fcf5154e47b12f971a348ff58757fe6576844b51 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 2ac22ff1851622006fc08db40f2e88f8b3bb78fb..c545560cea4d4108bbe291fea5a5585644a4a11c 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index b12d1e7f3cf756acc36dbc4a9f8b5b73dcaa191d..0a3780e765750cb5e1484480ca77367bd7ae1155 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# Copyright (C) 2013-2021  EDF R&D
+# Copyright (C) 2013-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 50d5f5c2bbc4b0cc17cc0cf3c18511cae5ce7490..26efe0a0536f313c72dcfc3d341faddcebf7acbd 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 205af472e6803d9da6c20995d0d682618bc64eab..52c518373bad76f1aa853558cbe7513421bf6dfe 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 1d125732d871e1b3d667aaab4a678770ab0b70f8..0d8844bffe110eca474969be6f98f699d4f9c40e 100644 (file)
@@ -43,7 +43,7 @@ master_doc = 'index'
 
 # General substitutions.
 project = 'MeshGems-SurfOpt Plug-in'
-copyright = '2007-2021 EDF R&D'
+copyright = '2007-2024 EDF'
 
 # The default replacements for |version| and |release|, also used in various
 # other places throughout the built documents.
index 082c9fa01366c364467205265c77aa7869b8842a..73d53aebd0ed9e1d749279f6148b13590afb70a2 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2007-2021  EDF R&D
+# Copyright (C) 2007-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 477a2b4e4fbd5345bc03a41040663b6e418115e0..5186c0e80d6b63bad1d3cf0f315987ae58eed4d7 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2007-2021  EDF R&D
+# Copyright (C) 2007-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -548,9 +548,10 @@ class MonYamsPlugDialog(Ui_YamsPlugDialog,QWidget):
 
     import SMeshHelper
     key = SMeshHelper.GetMGLicenseKey( self.fichierIn )
-    self.commande+=' --key ' + key
-    
-    print(self.commande)
+    if key != "0":
+      self.commande+=' --key ' + key
+
+    if verbose: print("INFO: MG-SurfOpt command:\n  %s" % self.commande)
     return True
 
   def clean(self):
index 4a0b005fb5bbf85567570f45b663065ec48fb945..40a5efa4350670b5ec4c12d8c6819acdf5e4b828 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2006-2021  EDF R&D
+# Copyright (C) 2006-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 53264e924a8a0f8e98d1cd9cdce32f97e128bf23..cf465962e908d3ad2236ebb955e3d83eab7b72f7 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 428a178da3ef8eaa49e632b65aa1280167e99e51..d0f569bc113cda8343a5a06a74456221d054ff43 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 8d4d0d085b4dc5161751db3407734250076d21ab..8d43baad1625e1b355c35d07f00a7ae3cd451e86 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index dc88ddcd67e357c05de50c36470efe81b7803a7a..13723b33ca105098a923527695310e797e389867 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index c3499a97f2b26257a6d5ef6d3a7bd9f65a1a5d2e..4398da98da5ca99b175101d220021ac0391b376b 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 7b22d35f93e8983d9d56ced98d2a6a30a8c48b1a..2b53967c743a8fee5930b0153d51051a441d88ed 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index e68b546d7d51e772072a2c31f2f28627d403d57e..f710cab9c01b75b18e723709ca28a6c2ca2bc281 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 03f6b91aace4c5c3d3c89037ae3e941cca64dc0e..23316d3a46400d0f34ee774a345cbacc8a057844 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f725eeb0fb8e04a956198631c2ed8d6901c68300..afee4c8f1cb0f40f4c736d75cb74d4fe55bbbefb 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index df2f138192c2901ae7b77b7605b5b4ffba402f00..1bd0b458048c4be8e2b58f69563586defd0f1cba 100644 (file)
@@ -43,7 +43,7 @@ master_doc = 'index'
 
 # General substitutions.
 project = 'ZCracks Plug-in'
-copyright = '2007-2021 EDF R&D'
+copyright = '2007-2024 EDF'
 
 # The default replacements for |version| and |release|, also used in various
 # other places throughout the built documents.
index a30db3e8e3ffddbe5f946b895f1f44b61f10e120..b1c8f0d1a73b7c28d8f9c4e58bdfafa2c2f9216a 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index cf308cbbb3560567a33bbea535439a2618af4327..5d352de58767190a913e8d9e4347fe8110429785 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index b6dc2d6a1795d2f7019e1b9fccea7ecf5010de02..9fb40199c69da9a84bb210b96f3f1f7cc45dea58 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index e36f2db722b0c72cb7981f73f64ab6e61aa1ead4..a1c206b836190c85e2e9c9e85ac9416b9e3b9c38 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 98573438db8d5b945f79124012e9307d65e4f8c8..f3cbfde27b3d4c3f359b22bf7be684974e40f4a6 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 89c00806537f13ea9b6c8613bfc38c4c4f66e3f6..84387cbb16156966788b0f0f71d42686244a48cb 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 2c62247728b64be41ebf55b9dc5ac9aa62912899..07f8d5278d1850c6ff877078f0966e5824e5020a 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index c639378c338dc21a7c3bb648637fb4b447514dc8..c72f20269507518e016502a2b5fb759d5692a99d 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 271425272911cd2d984c98c7ce260af2e8effbf2..4f9846fc6095c00a186ccaf1c7387d6da78e8289 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 31a2bf23a1e6f75517e6b78fa3ccf72a22cbc111..933f9e8a62bb60eaf9361637823c72080acb044f 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2006-2021  EDF R&D
+# Copyright (C) 2006-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 03822c61269cfb0b2f7ac79aa1280481dfaa99af..cd97e0ba59d4f9ef532f9036f1af9dd64d47f41e 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 8fd028a2680d62384a9bde70818101478e80e158..f6de9b2586fbe5137aa2af31cee0819f237e30c9 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f42f80065f20e1cc6d2029f8f30e93a196343493..cacc7655d8f8a102a93fd1ff0278d815315912c6 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 2aec25d1e0529e1b7592291c2a2d967c020ebe0c..57ea5bcee78422105b915900658321b4921d8bac 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f221349c6bd15987c31584ee996ecb4dd80bc104..c3f5ac159573c2f186fcdf2abbe5ec96c8d5c6de 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 8c2d51f4581f87389fe0cf9582e189c8048dc090..28f0f5767289d7a13004dae0e5f90e3ac0c7993d 100755 (executable)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 1a34beb3d14c5116c5313e5c3fba4d715dfbce78..693fdd331e2ab820ff285b50436d880ea854706b 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 24f2d01e15ff545a4b6fd6bf9f4ce0c00358d93e..d12c5e37ff142f057d834d9ef580226af69f3c1c 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -55,10 +55,10 @@ class cubeAngle_2(cubeAngle):
     self.referencesMaillageFissure = dict( \
                                           Entity_Quad_Quadrangle = 2350, \
                                           Entity_Quad_Hexa = 5315, \
-                                          Entity_Node = 38196, \
+                                          Entity_Node = 36418, \
                                           Entity_Quad_Edge = 345, \
                                           Entity_Quad_Triangle = 1214, \
-                                          Entity_Quad_Tetra = 7772, \
+                                          Entity_Quad_Tetra = 6430, \
                                           Entity_Quad_Pyramid = 620, \
                                           Entity_Quad_Penta = 512 \
                                          )
index f068a96eff8830e09fa8b5af0a43ca531d2031fc..d724912443c30f5fa929829f84a555b60c370a1b 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -39,12 +39,12 @@ dicoParams = dict(nomCas            = "cubeCoin",
   # ---------------------------------------------------------------------------
 
 referencesMaillageFissure = dict( \
-                                Entity_Quad_Quadrangle = 2740, \
-                                Entity_Quad_Hexa = 7420, \
-                                Entity_Node = 46394, \
-                                Entity_Quad_Edge = 323, \
-                                Entity_Quad_Triangle = 486, \
-                                Entity_Quad_Tetra = 8512, \
-                                Entity_Quad_Pyramid = 460, \
-                                Entity_Quad_Penta = 80 \
+                                          Entity_Quad_Quadrangle = 2740, \
+                                          Entity_Quad_Hexa = 7420, \
+                                          Entity_Node = 45191, \
+                                          Entity_Quad_Edge = 323, \
+                                          Entity_Quad_Triangle = 486, \
+                                          Entity_Quad_Tetra = 7601, \
+                                          Entity_Quad_Pyramid = 460, \
+                                          Entity_Quad_Penta = 80 \
                                 )
index 3366b210fdea94bdb058c138d76ce9f8d2c928b4..8b3849fc6eac1863a3d2f010e53529440a94580b 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -41,10 +41,10 @@ dicoParams = dict(nomCas            = "cubeMilieu",
 referencesMaillageFissure = dict( \
                                 Entity_Quad_Quadrangle = 3140, \
                                 Entity_Quad_Hexa = 7120, \
-                                Entity_Node = 61414, \
+                                Entity_Node = 60127, \
                                 Entity_Quad_Edge = 346, \
                                 Entity_Quad_Triangle = 818, \
-                                Entity_Quad_Tetra = 19117, \
+                                Entity_Quad_Tetra = 18141, \
                                 Entity_Quad_Pyramid = 990, \
                                 Entity_Quad_Penta = 230 \
                                 )
index 161805e8121497cf9b80372585143c7138795920..53a7db9ae2c5db7f72bda88f3b8ed65129c51385 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -41,10 +41,10 @@ dicoParams = dict(nomCas            = "cubeTransverse",
 referencesMaillageFissure = dict( \
                                           Entity_Quad_Quadrangle = 2900, \
                                           Entity_Quad_Hexa = 7000, \
-                                          Entity_Node = 58430, \
+                                          Entity_Node = 61612, \
                                           Entity_Quad_Edge = 390, \
                                           Entity_Quad_Triangle = 1228, \
-                                          Entity_Quad_Tetra = 17567, \
+                                          Entity_Quad_Tetra = 19925, \
                                           Entity_Quad_Pyramid = 780, \
                                           Entity_Quad_Penta = 200 \
                                 )
index 8960188d734f52b026f089cfe7fb6d973da278af..baf6246a501dc21a9343281bd157d5d40daa71f0 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -114,10 +114,10 @@ class cylindre(fissureGenerique):
     self.referencesMaillageFissure = dict( \
                                           Entity_Quad_Quadrangle = 6920, \
                                           Entity_Quad_Hexa = 18174, \
-                                          Entity_Node = 104349, \
+                                          Entity_Node = 100923, \
                                           Entity_Quad_Edge = 718, \
                                           Entity_Quad_Triangle = 952, \
-                                          Entity_Quad_Tetra = 16691, \
+                                          Entity_Quad_Tetra = 14111, \
                                           Entity_Quad_Pyramid = 1110, \
                                           Entity_Quad_Penta = 336 \
                                          )
index 4d0a93d4f4f623f2534734564ed1be982b36fa55..88aaf40891478d2c4d0f2da8b8727f54aa394d47 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -59,10 +59,10 @@ class cylindre_2(cylindre):
     self.referencesMaillageFissure = dict( \
                                           Entity_Quad_Quadrangle = 7028, \
                                           Entity_Quad_Hexa = 18366, \
-                                          Entity_Node = 105035, \
+                                          Entity_Node = 102327, \
                                           Entity_Quad_Edge = 735, \
                                           Entity_Quad_Triangle = 1056, \
-                                          Entity_Quad_Tetra = 16305, \
+                                          Entity_Quad_Tetra = 14255, \
                                           Entity_Quad_Pyramid = 1158, \
                                           Entity_Quad_Penta = 384 \
                                           )
index 8412b52d11fd1083bb5a5e136d4460de7b10ccb7..4a2a0d69ded0b12e3c768bbfb5368159b491d224 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -39,12 +39,12 @@ dicoParams = dict(nomCas            = 'disquePerce',
   # ---------------------------------------------------------------------------
 
 referencesMaillageFissure = dict ( \
-                                  Entity_Quad_Edge = 376, \
                                   Entity_Quad_Quadrangle = 2748, \
                                   Entity_Quad_Hexa = 6232, \
-                                  Entity_Node = 43479, \
-                                  Entity_Quad_Triangle = 1340, \
-                                  Entity_Quad_Tetra = 8821, \
+                                  Entity_Node = 41251, \
+                                  Entity_Quad_Edge = 376, \
+                                  Entity_Quad_Triangle = 1354, \
+                                  Entity_Quad_Tetra = 7146, \
                                   Entity_Quad_Pyramid = 466, \
                                   Entity_Quad_Penta = 448 \
                                  )
index d29eddc25d95ef141a4f9bb3ae54b3e9ff53aba7..dce4308a5ccfa67a23d3c8414d612dd551c83545 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -128,10 +128,10 @@ class ellipse_1(fissureGenerique):
     self.referencesMaillageFissure = dict( \
                                           Entity_Quad_Quadrangle = 1748, \
                                           Entity_Quad_Hexa = 3795, \
-                                          Entity_Node = 21939, \
+                                          Entity_Node = 21531, \
                                           Entity_Quad_Edge = 256, \
                                           Entity_Quad_Triangle = 360, \
-                                          Entity_Quad_Tetra = 2425, \
+                                          Entity_Quad_Tetra = 2121, \
                                           Entity_Quad_Pyramid = 199, \
                                           Entity_Quad_Penta = 120 \
                                          )
index 2180003f0e81c7bcbc06c02e790706a537bfbdbb..8ee43740621b497eb3f70b90e8cc56ebcef87769 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -63,10 +63,10 @@ class ellipse_2(ellipse_1):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 1748, \
                                              Entity_Quad_Hexa = 3795, \
-                                             Entity_Node = 22219, \
+                                             Entity_Node = 21772, \
                                              Entity_Quad_Edge = 258, \
                                              Entity_Quad_Triangle = 434, \
-                                             Entity_Quad_Tetra = 2574, \
+                                             Entity_Quad_Tetra = 2239, \
                                              Entity_Quad_Pyramid = 199, \
                                              Entity_Quad_Penta = 120 \
       )
@@ -74,10 +74,10 @@ class ellipse_2(ellipse_1):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 1748, \
                                              Entity_Quad_Hexa = 3795, \
-                                             Entity_Node = 22022, \
+                                             Entity_Node = 21579, \
                                              Entity_Quad_Edge = 258, \
                                              Entity_Quad_Triangle = 412, \
-                                             Entity_Quad_Tetra = 2442, \
+                                             Entity_Quad_Tetra = 2113, \
                                              Entity_Quad_Pyramid = 199, \
                                              Entity_Quad_Penta = 120 \
       )
index d214d6c0ee85bcc8eb885c121d1d657b3d31f932..e9d35af0e6fd3b216a3b76a114fea7a2e6212783 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -122,10 +122,10 @@ class eprouvetteCourbe(fissureGenerique):
     self.referencesMaillageFissure = dict( \
                                           Entity_Quad_Quadrangle = 5318, \
                                           Entity_Quad_Hexa = 18182, \
-                                          Entity_Node = 94472, \
+                                          Entity_Node = 92417, \
                                           Entity_Quad_Edge = 539, \
                                           Entity_Quad_Triangle = 828, \
-                                          Entity_Quad_Tetra = 9024, \
+                                          Entity_Quad_Tetra = 7471, \
                                           Entity_Quad_Pyramid = 578, \
                                           Entity_Quad_Penta = 128 \
                                          )
index b990ba7f065264f9e664633078663487ab857dcb..bd6de84845beb1cc5c1deed8774dc9c72cfae288 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index bfcbb176a947c02ce608bd98b86f2c010d2a654a..9e53c3f6fc0928e37b2043c6155b4bff051b7818 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d1bf2f6448e2b2657e4dc5e13abc79c1e721b408..2a9e799eabc9c00c141180f758f26313e06deae7 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -116,12 +116,12 @@ class faceGauche(fissureGenerique):
     from salome.smesh import smeshBuilder
     if smeshBuilder.NETGEN_VERSION_MAJOR < 6:
       self.referencesMaillageFissure = dict( \
-                                             Entity_Quad_Edge = 750, \
                                              Entity_Quad_Quadrangle = 4177, \
                                              Entity_Quad_Hexa = 6224, \
-                                             Entity_Node = 81588, \
-                                             Entity_Quad_Triangle = 2298, \
-                                             Entity_Quad_Tetra = 33764, \
+                                             Entity_Node = 74848, \
+                                             Entity_Quad_Edge = 749, \
+                                             Entity_Quad_Triangle = 2338, \
+                                             Entity_Quad_Tetra = 28628, \
                                              Entity_Quad_Pyramid = 1236, \
                                              Entity_Quad_Penta = 936 \
       )
@@ -129,10 +129,10 @@ class faceGauche(fissureGenerique):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 4177, \
                                              Entity_Quad_Hexa = 6224, \
-                                             Entity_Node = 83887, \
+                                             Entity_Node = 76374, \
                                              Entity_Quad_Edge = 750, \
                                              Entity_Quad_Triangle = 2434, \
-                                             Entity_Quad_Tetra = 35375, \
+                                             Entity_Quad_Tetra = 29698, \
                                              Entity_Quad_Pyramid = 1236, \
                                              Entity_Quad_Penta = 936 \
       )
index 9c0f33d0391ad591c139462a79e383fc05cc83f9..18e7f217b664808c11b9406641e122c97c5e01d7 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 225f7a88b1ed0ed11d1a6d477fb19888c8006acf..ea8a6cbab030bc58f04bcf9b99a55c5e47c0becc 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -105,13 +105,26 @@ class fissureCoude_1(fissureCoude):
 
   # ---------------------------------------------------------------------------
   def setReferencesMaillageFissure(self):
-    self.referencesMaillageFissure = dict( \
+    from salome.smesh import smeshBuilder
+    if smeshBuilder.NETGEN_VERSION_MAJOR < 6:
+      self.referencesMaillageFissure = dict( \
+                                             Entity_Quad_Quadrangle = 6042, \
+                                             Entity_Quad_Hexa = 7794, \
+                                             Entity_Node = 63900, \
+                                             Entity_Quad_Edge = 874, \
+                                             Entity_Quad_Triangle = 2058, \
+                                             Entity_Quad_Tetra = 14900, \
+                                             Entity_Quad_Pyramid = 738, \
+                                             Entity_Quad_Penta = 672 \
+      )
+    else:
+      self.referencesMaillageFissure = dict( \
                                           Entity_Quad_Quadrangle = 6042, \
                                           Entity_Quad_Hexa = 7794, \
-                                          Entity_Node = 65337, \
+                                          Entity_Node = 65091, \
                                           Entity_Quad_Edge = 874, \
-                                          Entity_Quad_Triangle = 2058, \
-                                          Entity_Quad_Tetra = 16037, \
+                                          Entity_Quad_Triangle = 2116, \
+                                          Entity_Quad_Tetra = 15734, \
                                           Entity_Quad_Pyramid = 738, \
                                           Entity_Quad_Penta = 672 \
-                                         )
+      )
index 51160ffffe386e0549c1366032479072c07576ad..6e9007f3342c59c5dc77adda47c361caea3b7c8e 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -112,10 +112,10 @@ class fissureCoude_10(fissureCoude):
       self.referencesMaillageFissure = dict ( \
                                               Entity_Quad_Quadrangle = 6160, \
                                               Entity_Quad_Hexa = 5864, \
-                                              Entity_Node = 78012, \
+                                              Entity_Node = 73615, \
                                               Entity_Quad_Edge = 1346, \
                                               Entity_Quad_Triangle = 9022, \
-                                              Entity_Quad_Tetra = 24341, \
+                                              Entity_Quad_Tetra = 20920, \
                                               Entity_Quad_Pyramid = 1232, \
                                               Entity_Quad_Penta = 1136 \
       )
@@ -123,10 +123,10 @@ class fissureCoude_10(fissureCoude):
       self.referencesMaillageFissure = dict ( \
                                               Entity_Quad_Quadrangle = 6160, \
                                               Entity_Quad_Hexa = 5864, \
-                                              Entity_Node = 80605, \
+                                              Entity_Node = 75969, \
                                               Entity_Quad_Edge = 1345, \
                                               Entity_Quad_Triangle = 9726, \
-                                              Entity_Quad_Tetra = 25690, \
+                                              Entity_Quad_Tetra = 22110, \
                                               Entity_Quad_Pyramid = 1232, \
                                               Entity_Quad_Penta = 1136 \
       )
index 24bd03b2e52e8c2d44a49bb1fca61b1a9ed8e752..4cc25dddbfa0f00210a6cf4b56bb77706f7815d9 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -121,10 +121,10 @@ class fissureCoude_2(fissureCoude):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 7828, \
                                              Entity_Quad_Hexa = 10437, \
-                                             Entity_Node = 106391, \
+                                             Entity_Node = 109737, \
                                              Entity_Quad_Edge = 1199, \
                                              Entity_Quad_Triangle = 4702, \
-                                             Entity_Quad_Tetra = 33175, \
+                                             Entity_Quad_Tetra = 35559, \
                                              Entity_Quad_Pyramid = 1428, \
                                              Entity_Quad_Penta = 1344 \
       )
index b9f5b44b1b4caab493b9d18b1460472ed4ea8f4b..4c61677c3cb84dcea6bff698339051bf3b58f3cc 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -108,10 +108,10 @@ class fissureCoude_3(fissureCoude):
     self.referencesMaillageFissure = dict( \
                                           Entity_Quad_Quadrangle = 10604, \
                                           Entity_Quad_Hexa = 13764, \
-                                          Entity_Node = 89087, \
+                                          Entity_Node = 91208, \
                                           Entity_Quad_Edge = 1065, \
                                           Entity_Quad_Triangle = 1326, \
-                                          Entity_Quad_Tetra = 12185, \
+                                          Entity_Quad_Tetra = 13764, \
                                           Entity_Quad_Pyramid = 602, \
                                           Entity_Quad_Penta = 438 \
                                          )
index 57496ebf9d01bfa018cde4963861f9ad2a965ccb..d0254e4fd8fe941459d6c3dfe726c69d2caa90ca 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -108,10 +108,10 @@ class fissureCoude_4(fissureCoude):
     self.referencesMaillageFissure = dict( \
                                           Entity_Quad_Quadrangle = 11428, \
                                           Entity_Quad_Hexa = 21716, \
-                                          Entity_Node = 124663, \
+                                          Entity_Node = 120899, \
                                           Entity_Quad_Edge = 1073, \
                                           Entity_Quad_Triangle = 1330, \
-                                          Entity_Quad_Tetra = 14665, \
+                                          Entity_Quad_Tetra = 11799, \
                                           Entity_Quad_Pyramid = 642, \
                                           Entity_Quad_Penta = 426 \
                                          )
index 5d53ee6e924b4067cf1de403d8875621f90201e0..6346a8cbdcbdbda65e062e0794e0c76179eb6b37 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -110,10 +110,10 @@ class fissureCoude_5(fissureCoude):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 5366, \
                                              Entity_Quad_Hexa = 7120, \
-                                             Entity_Node = 54832, \
+                                             Entity_Node = 53544, \
                                              Entity_Quad_Edge = 722, \
                                              Entity_Quad_Triangle = 1570, \
-                                             Entity_Quad_Tetra = 11747, \
+                                             Entity_Quad_Tetra = 10782, \
                                              Entity_Quad_Pyramid = 532, \
                                              Entity_Quad_Penta = 496 \
       )
@@ -121,10 +121,10 @@ class fissureCoude_5(fissureCoude):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 5366, \
                                              Entity_Quad_Hexa = 7120, \
-                                             Entity_Node = 54175, \
+                                             Entity_Node = 53105, \
                                              Entity_Quad_Edge = 721, \
                                              Entity_Quad_Triangle = 1482, \
-                                             Entity_Quad_Tetra = 11324, \
+                                             Entity_Quad_Tetra = 10526, \
                                              Entity_Quad_Pyramid = 532, \
                                              Entity_Quad_Penta = 496 \
       )
index 646e647c0727fb8fb22cccf6462a65ce7504c510..c1dacebe1cb0aa54ef6c532d243373e9dcb01e9d 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -111,10 +111,10 @@ class fissureCoude_6(fissureCoude):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 7392, \
                                              Entity_Quad_Hexa = 9888, \
-                                             Entity_Node = 62571, \
+                                             Entity_Node = 61217, \
                                              Entity_Quad_Edge = 833, \
-                                             Entity_Quad_Triangle = 1048, \
-                                             Entity_Quad_Tetra = 7723, \
+                                             Entity_Quad_Triangle = 1024, \
+                                             Entity_Quad_Tetra = 6725, \
                                              Entity_Quad_Pyramid = 452, \
                                              Entity_Quad_Penta = 408 \
                                            )
@@ -122,10 +122,10 @@ class fissureCoude_6(fissureCoude):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 7392, \
                                              Entity_Quad_Hexa = 9888, \
-                                             Entity_Node = 62361, \
+                                             Entity_Node = 61307, \
                                              Entity_Quad_Edge = 833, \
-                                             Entity_Quad_Triangle = 983, \
-                                             Entity_Quad_Tetra = 7642, \
+                                             Entity_Quad_Triangle = 1014, \
+                                             Entity_Quad_Tetra = 6800, \
                                              Entity_Quad_Pyramid = 452, \
                                              Entity_Quad_Penta = 408 \
-                                           )
+      )
index 5601392a04101d18dc1764768be7d414f6f3b442..b2ebf33c7ca6f7378525d027004165a48a206d62 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -112,10 +112,10 @@ class fissureCoude_7(fissureCoude):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 7758, \
                                              Entity_Quad_Hexa = 10696, \
-                                             Entity_Node = 71535, \
+                                             Entity_Node = 69782, \
                                              Entity_Quad_Edge = 882, \
                                              Entity_Quad_Triangle = 1378, \
-                                             Entity_Quad_Tetra = 10847, \
+                                             Entity_Quad_Tetra = 9518, \
                                              Entity_Quad_Pyramid = 668, \
                                              Entity_Quad_Penta = 612 \
       )
@@ -123,10 +123,10 @@ class fissureCoude_7(fissureCoude):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 7758, \
                                              Entity_Quad_Hexa = 10696, \
-                                             Entity_Node = 70936, \
+                                             Entity_Node = 69423, \
                                              Entity_Quad_Edge = 881, \
-                                             Entity_Quad_Triangle = 1300, \
-                                             Entity_Quad_Tetra = 10449, \
+                                             Entity_Quad_Triangle = 1350, \
+                                             Entity_Quad_Tetra = 9271, \
                                              Entity_Quad_Pyramid = 668, \
                                              Entity_Quad_Penta = 612 \
-                                           )
+      )
index 502b3b0b7099024e33c5d2fe3d079af7448e5971..d0375e48b54eb871c5cff0919428aa1021a50b3d 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -112,10 +112,10 @@ class fissureCoude_8(fissureCoude):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 4572, \
                                              Entity_Quad_Hexa = 5128, \
-                                             Entity_Node = 45641, \
+                                             Entity_Node = 43015, \
                                              Entity_Quad_Edge = 648, \
                                              Entity_Quad_Triangle = 1282, \
-                                             Entity_Quad_Tetra = 11122, \
+                                             Entity_Quad_Tetra = 9146, \
                                              Entity_Quad_Pyramid = 768, \
                                              Entity_Quad_Penta = 752 \
                                            )
@@ -123,10 +123,10 @@ class fissureCoude_8(fissureCoude):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 4572, \
                                              Entity_Quad_Hexa = 5128, \
-                                             Entity_Node = 46393, \
+                                             Entity_Node = 43443, \
                                              Entity_Quad_Edge = 648, \
-                                             Entity_Quad_Triangle = 1286, \
-                                             Entity_Quad_Tetra = 11686, \
+                                             Entity_Quad_Triangle = 1332, \
+                                             Entity_Quad_Tetra = 9431, \
                                              Entity_Quad_Pyramid = 768, \
                                              Entity_Quad_Penta = 752 \
                                            )
index cfd205ecee801bad43c596ebcadfe564e0125e60..f315b2d769aefb848c83eabefe9a0980291c2fa5 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -110,10 +110,10 @@ class fissureCoude_9(fissureCoude):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 14864, \
                                              Entity_Quad_Hexa = 26772, \
-                                             Entity_Node = 156163, \
+                                             Entity_Node = 152136, \
                                              Entity_Quad_Edge = 1237, \
                                              Entity_Quad_Triangle = 3178, \
-                                             Entity_Quad_Tetra = 16952, \
+                                             Entity_Quad_Tetra = 13915, \
                                              Entity_Quad_Pyramid = 916, \
                                              Entity_Quad_Penta = 780 \
       )
@@ -121,10 +121,10 @@ class fissureCoude_9(fissureCoude):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 14864, \
                                              Entity_Quad_Hexa = 26772, \
-                                             Entity_Node = 157045, \
+                                             Entity_Node = 153298, \
                                              Entity_Quad_Edge = 1237, \
                                              Entity_Quad_Triangle = 3338, \
-                                             Entity_Quad_Tetra = 17484, \
+                                             Entity_Quad_Tetra = 14643, \
                                              Entity_Quad_Pyramid = 916, \
                                              Entity_Quad_Penta = 780 \
       )
index afd31061d7ffc62f16718baf15c481377e3cdbfc..4aaaaa02d1fd970247b8f2ac69c0e82d94b93fbe 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -522,10 +522,10 @@ class fissure_Coude(fissureGenerique):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 6710, \
                                              Entity_Quad_Hexa = 8656, \
-                                             Entity_Node = 76807, \
+                                             Entity_Node = 70896, \
                                              Entity_Quad_Edge = 1006, \
                                              Entity_Quad_Triangle = 2342, \
-                                             Entity_Quad_Tetra = 20392, \
+                                             Entity_Quad_Tetra = 15963, \
                                              Entity_Quad_Pyramid = 1232, \
                                              Entity_Quad_Penta = 1176 \
       )
@@ -533,10 +533,10 @@ class fissure_Coude(fissureGenerique):
       self.referencesMaillageFissure = dict( \
                                              Entity_Quad_Quadrangle = 6710, \
                                              Entity_Quad_Hexa = 8656, \
-                                             Entity_Node = 77391, \
+                                             Entity_Node = 71784, \
                                              Entity_Quad_Edge = 1006, \
                                              Entity_Quad_Triangle = 2496, \
-                                             Entity_Quad_Tetra = 20711, \
+                                             Entity_Quad_Tetra = 16504, \
                                              Entity_Quad_Pyramid = 1232, \
                                              Entity_Quad_Penta = 1176 \
       )
index 89817efe3280bca2f626df122f4cd040dc32bead..e2d1a78bb65bd503084b9fdeb532cc0d405b43c0 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -89,13 +89,26 @@ class fissure_Coude_4(fissure_Coude):
 
   # ---------------------------------------------------------------------------
   def setReferencesMaillageFissure(self):
-    self.referencesMaillageFissure = dict( \
-                                          Entity_Quad_Quadrangle = 11852, \
-                                          Entity_Quad_Hexa       = 22208, \
-                                          Entity_Node            = 133418, \
-                                          Entity_Quad_Edge       = 1192, \
-                                          Entity_Quad_Triangle   = 1562, \
-                                          Entity_Quad_Tetra      = 18759, \
-                                          Entity_Quad_Pyramid    = 948, \
-                                          Entity_Quad_Penta      = 732, \
-                                         )
+    from salome.smesh import smeshBuilder
+    if smeshBuilder.NETGEN_VERSION_MAJOR < 6:
+      self.referencesMaillageFissure = dict( \
+                                             Entity_Quad_Quadrangle = 11852, \
+                                             Entity_Quad_Hexa = 22208, \
+                                             Entity_Node = 124711, \
+                                             Entity_Quad_Edge = 1192, \
+                                             Entity_Quad_Triangle = 1534, \
+                                             Entity_Quad_Tetra = 12204, \
+                                             Entity_Quad_Pyramid = 948, \
+                                             Entity_Quad_Penta = 732 \
+      )
+    else:
+      self.referencesMaillageFissure = dict( \
+                                             Entity_Quad_Quadrangle = 11852, \
+                                             Entity_Quad_Hexa = 22208, \
+                                             Entity_Node = 124493, \
+                                             Entity_Quad_Edge = 1192, \
+                                             Entity_Quad_Triangle = 1616, \
+                                             Entity_Quad_Tetra = 11977, \
+                                             Entity_Quad_Pyramid = 948, \
+                                             Entity_Quad_Penta = 732 \
+      )
index 3b2e724d189ec6ef27d90a77c704708f56d6ccdd..bb3801796b450f83d397d47235ba8086629c4023 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2020  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 58c59e2e397a6e6d17618e3718965c0cd147bc1b..2b8b9d08b5ad162ab1de95dcaac6a220fa8c226e 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f221349c6bd15987c31584ee996ecb4dd80bc104..c3f5ac159573c2f186fcdf2abbe5ec96c8d5c6de 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 406d27b8f66288ecd855ce0f623086c2c74f82cf..62dc76f30d50fe3c946a309fbe9685cbab3dff8c 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index b72f48cc03246e39871f6ef47428ad635e44d65a..27adb1be70db033f7abe6523d7255d011125ea26 100644 (file)
@@ -43,7 +43,7 @@ master_doc = 'index'
 
 # General substitutions.
 project = 'Plug-in blocFissure'
-copyright = '2010-2021 EDF'
+copyright = '2010-2024 EDF'
 
 # The default replacements for |version| and |release|, also used in various
 # other places throughout the built documents.
index ed4e6a88437ae2f23528935d7dd1957687a453fd..aed307b60966fcba483b23be0027d64dd6085caf 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index ed3b153d05d7d9cd739403ed6ecb5ecd2dc22421..ee1434223711ea83c415429fc9987460a00e0501 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: iso-8859-1 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index aee082a995ad0bbc97b8900322f96f6c78afc8e8..3690b93789736ceb5752cd1048b15938b8ef2584 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index dfd9fc2470faa2b66d772635711db32b558ef171..057fb28047d30f821b04491e19d76ab72f5801e8 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 69bfe8200aa276c7ea1d046e5f630fe1e61cbcd1..748d5e6839b7fd1edb35722b131ab18ef2d2b018 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index a26c470e17b685b571524914c84acd1e3eee263c..bc9cdf52ddb3177d78fdecf115b1d5cd9b656cc1 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 9161d89f003861aa9fc065d20eee493f50dc1937..dcb48d1dbee590c44f17ba86525eb4a68ec8a0f7 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 5fdc48fb1302f12f72af086be39415a2907b62b6..4a84d375a74bc763ebe972cf9a01c695c286cc50 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 35b32a973a860c2844806889c91c54caa99cb16c..192be3791b7861ced8066696dafa9575711a619d 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 3aa8c08eff900096878bf029c66ebb0e6a7de854..be0cf96f5d94945f47e1eceb2acc0a38eea3e98d 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 182898999a1625619cc4007de3dcbc99ade5bab7..408800ffbe0efb0053d75e453e19873c51b2b6d9 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index bc2ab6d715cf68af20b132ef4d02f6f18583b948..5a4f15886f0c21cc2f1dcfa7d82aa8a7e9ff507b 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 4eecc5fd6436bac6cd3365110bfdeaaf08226637..49fd91066c60f5e104cde806b619f7298a916ad3 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index c0102fa39c5da6372365cc668a92fd201a32c457..ac0784dac13e381b64f8726c9ec1443bdaf6dc12 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 5c866915c012e74bae7933d83f16d7496ef3be96..5ab95e27cbff664935d3211b1c4c7ab15147698a 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index eaa260e8da2453aefc2c443ba13791d322266db0..ee8f68177d64227a644f6feb2da940f9078a59cc 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 71bd18c425d42ececffcd60a08a02cbd15318024..30390d8feaabe1595b7e559340d094612d5f61a7 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 3d35e934dd363b5e2c7b29ebe416b7f99b21efd6..8d3aa6499d0b9bb274161d13fe15b7c86ad20f25 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6a43770790a418c6c5e13464573ceab08240025a..b6f906758cf59dfb73a01d3f0676052b94705712 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 90e0f60f7484659b7b4bc5ee6e18721cd54d6f00..f8afdec9594a652cc581f7cf3c1934b0da64274d 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 3f725e67ebd20893377cd916695a703ed6f81afd..05c3f0f719ea277fe70ac3b0c7d77a4ddbd6542b 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2020  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index b96ce6386360376ba1ecacd69aa8a4fe5faf90cb..c296057fe33b260a63b9cd7d6a9346696d307c74 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2020  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index af3fa001d7a1a9ebe68793f68e7bb238862ef84b..af74e23b9a6441f74416d9e148c6cdf2ed61b139 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2020  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 77403b4e1e9138d64620d90ca59bc4e62de53d8f..ca150ca1b62f74e5a212b9987bc327639f8480e7 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 087f882cf66ccca7da858e73795a64d93aaa0cbb..269909e8e142a4a39dcffff3ad6dd54915d549d4 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 76f1d5216d89e33d7e32360e249031c15fd68006..63af87578d9b1a071dedcf928f0d45eec146d960 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 342fbfd7983d17a1fdde2983de40cb9248fa1301..1b0e1822b1eb7bd42ad33c20b31ba2da3f45c26f 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 5fbd170f16d930b2cdc3bf71f1e5cf26ee4a9ff6..67111ae99d9933027ecf6cd192d0c6e2eeca724b 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 31a3b079f4f1a82f3756be82ed3be38ed56606ba..ede0ea77792dc60e47bb0fe0da44da9065072aa5 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 39ad5dbedabc7bc3df992ce61065f247db2103f3..9788982bb6c52f9433ed5ac9fe453e4be9daae3a 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 24bfeff6cd199d3745b9cc69e532212564235a86..4c6c1911518170ffce3fe03e46f6c3c927055304 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index b925b95fca7838200bdc9b917abeaa4e80fec0e8..d69f98ebdad9cb046e48f96d2fe14b61847e229f 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 3232beb1597a0513263c417d2c09c537b79c8a7f..c480db5d2343fe649abb34e6796cddb7c194ad47 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index fcef6543283fe59b0aa3238cfb87d39b5daf44fb..25949542ee7800f097387e39fd1352da2cdfa9f5 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 22da3526d76730566ec1bbb6549ad5dfb8f2a0e2..e374519ac4b3d8d259612be47a6fcba1e8382f02 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 86c56b3a2f038443b2c036d2015e164b021320f0..83a7410f1ed24e386eb92eb2016977e58f48b2db 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 36927198062b3e7fd3cdc9db8e32faa47578a6a2..83b24150d8393e4b27a39e1654738e0ca53284ac 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 8e2788dde6bd514703f72a29b7d09128df5d4adf..1f5e36f3f1e60ddb427d7c6dda0d29cdbe0c8389 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 77d7c0e755854b7d38216148774c2a72a8bc9df2..f9349ec31582c22407f5e73cd8b4aaf725e44535 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 5b0bf17bba633179f153851fe78934b408bcc709..5cf709195bb9fe55362fe3671abd85bf747c74b3 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 2c8dd308bece7a76eb3e2d279f65ff95f23fbb5d..eb58629a1b0442a25c19c4c2ae4f426f669d3da7 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 725c2219dbf34bf85f702b8a23756b95fd0a9fec..e48aff785965b4ec878f20371437830b9b75cf9a 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 88636eb1173595527704c6b0daa83cedcb38fc00..bef2dae6e25613bf9564d467e06bf5e39ccf676c 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 159641c9d24dfcf63baff163f1fe9411de73a3ab..23551e8bd8312504711d48ed5cf8e8c5108d5f39 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 456ce5762d6824b7886f85d2facec54c69535ca8..66d605fc4f6e826b671ed4b8db1185a9125ce2ec 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 8e85e933e17fb3f361762385dbb8b5861bba3554..a17880dfbcf29efadf7dd8a88687be1303cf36b8 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index e469f43b9d2be65bbe70b516a2a3591c28422da3..5ef2b82bec850e1288ed60871839db89d7acf246 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 1245e2345edc212b7a691abd8b1ec8b477be4748..c1c20535a62a5435850be65f2a4a2cdc0bb3ee8c 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 17dc7d20fb9760bb3cc18c72c859d9f393c56c81..ad5da7e9e32b4882169d00e1a33c216760e9dc34 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index a8d6d493f98ece17e6193dac37b1d2ed8900f3f5..9ef507a3b4c8d70cedf1e69e5ae706a259d0816d 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2016-2021  EDF R&D
+# Copyright (C) 2016-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 929f60c7f77a520ed1e1c231cdb20776d1a1b233..f8ce927f03ec780398840ae7eadd854fcc5470da 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 0092b64621258a0db1856583ae23f8b7c25d6401..bf9f53c20e0c5fb674b9e10b791692c5522a84b1 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 76147ee31f2e7db67b4a5a6d701b8133058eedfd..ddcccec0f287bd6c228efc9e84d334daf1b1a817 100644 (file)
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
-# modify it under the terms of th79e GNU Lesser General Public
+# 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.
 #
index f4aaa8afecf316e6c008bc0dcfe79dd0c394b6be..02ba4e81bcca5fdaf3279321e3cfa1113fc2c61b 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d211b38e75b08a1c21f1b22eea2cc95032f238b2..1691e88de75a6df998801ab348e0da14d46c775d 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 41994125d296d1aea4cdc8e46d79ff373f9e3890..1327a87f51f65c3a9af1cffa58f480daeaff2187 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 709343082cce284eff42816b84464986f1e82aaa..0125206582dd0ab15497848c751bb7b41ae0f916 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 3943e374d598934e05d4b017111659a408554426..0234d3e0cd6922ca99f4e4533ff0b5268f3dda65 100755 (executable)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f2408b8cc36500434bb735d3d7916177e201149c..2c9bf6108476dbc63902648e6bc23403556456bb 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f782d8d7c6a39acfe9619bb556dcac415e1abb10..d0eaeb439dc64197da26d5e96d40a8d798df9166 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 869b178949204115865779d1675211824072d8b0..aef94d022cc8e8dffca16e3be6bcdaef7c9ac61b 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index bdde0322ba8b8dfcacbbf58536489466e4229433..298702109fcca45ab63a605498a9f8ddb2662584 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 233e3c9a86cfe7fc92ee375ed72f04d4f5e88112..6caa1912d1fcf778caa46558089cfd9591e39dd8 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d32b10efec506a0c42f9a2cf8d14b63fc4455ec6..aa1745894309a7dbaf7e97b89f9e4f058c5ba0a6 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 732e3391685c85fbfb0a3cb44c8798b629637397..f82a1287a07b937f352a2b925f276c18c952d2d1 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 68acc38477ec513465e18f30860bc7eab7da3562..6be0ace9ebca163fd604d9ef96d0168d5c04f103 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index bcddd449c024276496ce0cd757d5526a396dedee..de9a26792d608856b86aaea797b85390529ab197 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 3a5245f1684d00bbebf6a334ae5ad0167ab245ab..0426d6b67ecbda70dce8f5634ee4633e1ea327f0 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 557c2298d157812dd98d826451406c7892dab954..06966ff868242df1fcf22b2a59a5b50256600b6d 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 3e32edb8c943ee7b1308929c5ab97d13c4558667..da03b08222ad91dc1d1ae1357f01760a59f2f26b 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6e1d47bec4a85a39d6ee84bdd380819fba41d7b6..547dc3cfbe24642dbfb4045b9acbdddfc8542a11 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 1558f9f818951ebad9e0f81212624ce8be02eb6d..e32d737994ec785a214dd7f64c82a0bae152b799 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f97fe16ce9920c3621a80402eb1f6e0002919246..2a62e716d6fadd4c5fc52ba1fca856eb1c27ff09 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index c665e5c75642c70002cd284cdec47c920764ac2c..f6987031c236b7dd63097eea4db0d2f567c304b8 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index bf7bef0d246f237b26498797eca4d7359bfa6ced..8ec19886a3a6b19d981122afff2e33b4f78eb788 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index acb3f8de25356cb5e4b544fe5424c37ff2471f75..a078f1bef188196fa386643ac0ea359dd7cf1647 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6cff91ff619522a82d04d2f0e8f3f40e1903c755..09152f465c3114ae95bd9468f9cb11c5299f140b 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 2cad3c0533615cb76cb88e3af99daa4e76d56042..22698e05471c658a19665de464e4c6c25e2b9a5c 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 49d94acf50f0584bb42bfbabb70fc85ca061922f..a96317756647b66d164eff20881a07ca32cd2f72 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2020  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 0a68df1067e795f4b2aad6611f61ce124d35aa79..0f28309f6532ffe1dc041603e17183b6a10402d1 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2020  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6fa5fe8ca41df2fa56daa57c41d6942d147232f6..8caf5979828dea33d509a16ee5cde47dc44a97a2 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2020  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index cc57705cbdbfc755815b61bfc2e267b7bdf86f53..e4773b77ecd20c28cc10b7159d30bb174933e0a9 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2020  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 17847c0d28439ba60d0ffdb9412522f998da60da..c05e1e601d73e491baa6f2070d1884fef46df279 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index a862f796e00dd0a01172030851220f7c904b7cec..88c94bd5d503158fb04959e1342a4d87caf26671 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 36d53fb14e56545ced027a9ad69b01cd55513e2f..c797d099a310e44c37cbd2cc1d91679dcaa7ff02 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 4563862357a3eb939580a7b76a9a0489d0d18439..0f545e6f556d61f896c72e60ced1b15445b14fd5 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f53859b711a8bc7ccfb026579b515d1ab4ff5a4a..79505c77776a2c7703d45ec4cac68034b9578492 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index a2d051ef32b0bd18aeaec2cf9f1d4e97fec103df..f2863d5e4be869b31b3055496045897b7fe80cbd 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 112cb2f03347bd43358423d92b11fc5573cc8811..b06b66d85c92f0f3aba226d9c7df8ebf5ee113c2 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6c59c713ab2ae3cef85fb84e6948676d36fbdc12..2b0134baea8359f36f0a101f4155d5f2b1ae3457 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 3d713249c5a95cdfabcaba000cfe6544c92d8546..f36f753f91a541c7aef21bd3d7de21d879e8399a 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index c3279b0a39643992f256361682e0f2639b66d858..16c38db972c451b6992ef34efa52b7dca03f854a 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 953241e1af17b53288d8f7c2fa5277a649cf8eb2..defb410012e48989a84638b6b37ef971f0429339 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 502b8d2ecd35f1a1af1b6fda9f7a5303ce3671b4..d000246e89996e4283a36147a934423786da1e68 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 0701e6c5ae3ec87d0320366610d13ae98acc8cec..2fa99fe9c4ad03104c2bb61881cb510c99cff71f 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 3b57fb0292b31855dbda9f7b2fc4623d394a7364..557e8eb34b95e62e38fae1ba51106572c02ec881 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 04cceb9ab998901150e964cc36d833c490314313..09fa85d7c6f89bef8396a150bbdab30c77b85e15 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index c6630d177ad44f5f377f9a93300d7885cea6582c..8c335f6312f654e8cabe8d2bee951939f21aaad1 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 4aa08be336f9ac42816c5bd01c62887e9fa81859..ad5890ac0ccc904c1275bdfa30ea5a158089b865 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 38aa7b01d35cd685ab9f6381a6164f958096dc01..121875af3c48a70ddc376d8600a6ad8b7ff0e35d 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index bd45e7c258397a07fe91275485d25893fc834df9..03ddc13e4e06fa36b6e8ee4153272656f976c1a3 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index fa7536e6343ec54dee802e1bfdfc52f14400bf72..9559670c26365088989b7a566cb0cd212b0dca08 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6ba8d038f657e0a26d04bf964a11e32b232c1e86..8f462efd385ee56f5af666c1638277d2449a410c 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d220f436b8fa2ea68bead48678de45269e211bc9..c051dfb3f18b6db5ab8ba73f74c7c0bc2ba01b72 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 4ee11b88e49eb517143a5ba3ee1d85899bf587c1..daa3f45eb8581dd19606a6d45225fa1de4f69e30 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index a591810749db7f94acf5ab49f0e775cf22cb36b0..52b265e55c55c11c1d9a44a977b3e57ec29589f1 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index db5fd702cb2ee9844b6f7572d43f48863aa9c478..5d4bda3608473d60665d87af86960664fd5a9eca 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 212cfef3fffa3289e978dbd16ad10e6067b493fe..7651a7d182a684804b420520f3bcb821672484f8 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 0338f3a3757e9c7da45716bcbc2d523c423ced5c..4ecbd4f15ef7c6f4e3dddd893a70be48c508a96e 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f96929a6a7c3089660293859140a4ce63fad7080..6564291746ac44f2db40dcff677ab269fbbfa764 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d892dab5bac9d3ed8767c57194ce473a3341da57..1ba25aee2546d0ba143e1bc616fc338e10f041a7 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 9f867ebf9ec9363a27b677b3bfd1fae8e33d58fa..71df5ad60afe5f297fedb478a603146c7703e766 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 383ccb05d877e6363c668c0e2e00f11ab487ae49..e258517ebb95039d430407356a46daf5847c7647 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index bae2fc181b0395082456592b5698f0eedb6d89c0..b387586f36ada9d0d626de079f7144267dff469e 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 1fbfd5fd7d95304ec35a920ff4439262bdc3dc8b..fcf6c9b78a8ad3a03aef9f1f6f96a8b6b0de1862 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index c88a9097d03f6c13660f3064087e88ca89877022..e17ad331f2a5da4e018dcb63c0860c3bd037d6fa 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 74cb172182de373c5b686b305f7679312c5aa788..804dee7240e2de424dd1ac642b58791163d9cb58 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index eb67c51c8c01135a8e0fff5ba827dbe2dafe855d..6b4d42f62cf1184932ae41516497434ae44d2bca 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index b317cdb239e961579a30cec4c95f1e0e5c09560b..f1d30763f41781e9fac2a254500503556ec5a327 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f221349c6bd15987c31584ee996ecb4dd80bc104..c3f5ac159573c2f186fcdf2abbe5ec96c8d5c6de 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 8c3905cb483603d6e3914499fa78cea649122ccd..61a318e483ce83b369a0247d9b63e08f6a6cdbd5 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 1553b95ca984e7ae5f6e8bd5562f6a052097ddcf..9734be32deacefac089adb1602a986439b775728 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (C) 2006-2021  EDF R&D
+# Copyright (C) 2006-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 3eefae078be303f337181c7b6952ed11fb2cc242..e2791befbbdb0125b5ef0ca3083c037a5e486104 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (C) 2006-2021  EDF R&D
+# Copyright (C) 2006-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 266f00797ac2d5472190b2623d0ff29f27e39680..14616e8c6e82c2ceb13fcbc602a0054c998616ef 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: iso-8859-1 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 234e0d6ce3a62e9850793d8114e8e60dd7a9b9e0..82eae3de20db7e23614d0452c98fdaaee0e4da1c 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: iso-8859-1 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index c01b44a0d18fbb90fa486a50c217bedadcb69ced..fe0b936802d08f262ef6ded9f87ce2d7d2a05aa3 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: iso-8859-1 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index af61ca4b1d6f6c4d6d32da674d75bbb8ec05d409..9df86812f3e77fde1a4d91b4179d36a0ef64a55d 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f221349c6bd15987c31584ee996ecb4dd80bc104..c3f5ac159573c2f186fcdf2abbe5ec96c8d5c6de 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index fe9332e1e9345f3fd73be6b7d7e324a953d70636..73feaf6e3d87d9c2694333b5713d1efefbceb87d 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 398da350a1e18b12106e84e41309d3640570a005..815d6e5ac688a52ac8c19b2abe4b017e064d6ede 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d9f0b4d04ab435864a6bfd61a92532fda78ea610..c81d91c4d9f18bcffd2205e3f32f14c7882e6e8e 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index c56b9ec9c64994c608ac1e607474c2c230ac839d..5d9cb84014c736f1c6419d0ff2a1f8363f20e0b4 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: iso-8859-1 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index dd327275812f9a3d9716a8708f8cb522856b4682..4eebdec82b9e878d4a7643b4fac27e4f8687b793 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index dd3b5d8d57666385fe2875804d368d12646898a5..d3e59a020dc17811f5bb464e91701652b1e412aa 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 096f805aaea51be912b7bd1d88bd50afa716c383..f7c3fd44c83534b77ca31e2362a385879afb2699 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 75baca75403971082d7329b47bdaf2046aa069cd..8975b8c91df087785ba1d1334fac13d2e3ac6131 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 562bd4895e1cb461c4629a0e37e45397d3bee598..7a746dd73f9acc1de67fa640a7f27b8805947810 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index de715940eefb8c5ed293208c573aead10fa6a4f9..1146c3ab88be9f2af4b64cb53ac24676742eef3f 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 2ea914c72423d05e327fc77b14a9907e823b7b12..1cc7f46fcadb468840c137b1672e1b092e4ecb97 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 7ef23abb6906035fc4ac833b30eaa781a8ae3070..4337d16d3256949b260546c75f95969deb4d0f2b 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 0fa59b616e6d0df8567f9cbe7ec68b1215cc000b..7bc45a3fc305da51d353411ddba45ec718c3b00e 100755 (executable)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2020  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 8d7aae2424093dc2d815bce082587416692859a3..e71c99b92ce8abc3c797cc5a6c9f8a52af705bf1 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index efe27e50e38c9da8700b82e30965a60cf1ec7929..d7be02c405d1a7bcd082c4303c98925ae1863d65 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index aef7febe4dce0051d47b15a5ffb6dbfc41973588..491ec642411098eb00b7bc91d59b3e542bc01f34 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2021  EDF R&D
+# Copyright (C) 2007-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f159d5969eb7ea5eb14709155fc7fde33d09e524..8b4b97e87a21ee32451d8ddedea6e3f3b6e6b17e 100644 (file)
@@ -4,7 +4,7 @@
   <ul>
     $navpath
     <li class="footer">
-      Copyright &copy; 2012-2021  EDF R&amp;D<br>
+      Copyright &copy; 2012-2024  EDF<br>
     </li>
   </ul>
 </div>
index c08362fd5d6c5f31c874933b704be22548a8f88a..ad6e0ff758ca005db26b6efd34923208126894dc 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 91cd0436397ae546ef18fef8469bfe15caccaf01..f2975edb3ebe07ea767155e22e41f585758ae4e2 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 0cf7cfef4e8dbc30c450c4b145409584da92c2b4..efd48d6e82c824ac0c3f25b5fa37970cf2c16420 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2011-2021  EDF R&D
+// Copyright (C) 2011-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index dc128d7e924acd9e1a718904ccd4be334991a95e..ba92261329d54655ef1722637b6eaf8731cd4ded 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2011-2021  EDF R&D
+// Copyright (C) 2011-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index dedd03cb5a31734c8f422e254e1801ad81b86e4f..1a1a414060f9195dd033c19fb4da5376a406fed0 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
+include(${SWIG_USE_FILE})
+
 # --- options ---
-# additional include directories
 INCLUDE_DIRECTORIES(
+  ${CMAKE_CURRENT_SOURCE_DIR}
   ${KERNEL_INCLUDE_DIRS}
   ${GEOM_INCLUDE_DIRS}
   ${OpenCASCADE_INCLUDE_DIR}
@@ -86,6 +88,28 @@ SET(SPADDERPluginTesterEngine_SOURCES
   SPADDERPluginTester_i.cxx
 )
 
+# - swiggy pop
+
+SET(SMeshPadderHelper_HEADERS SMeshPadderHelper.h SMeshPadderHelper.i)
+SET(SMeshPadderHelper_SOURCES SMeshPadderHelper.cxx ${SMeshPadderHelper_HEADERS})
+SET_SOURCE_FILES_PROPERTIES(SMeshPadderHelper.i PROPERTIES CPLUSPLUS ON)
+SET_SOURCE_FILES_PROPERTIES(SMeshPadderHelper.i PROPERTIES SWIG_FLAGS "-py3")
+SET_SOURCE_FILES_PROPERTIES(SMeshPadderHelper_wrap.cpp PROPERTIES COMPILE_FLAGS "-DHAVE_CONFIG_H")
+SET(_swig_SCRIPTS ${CMAKE_CURRENT_BINARY_DIR}/SMeshPadderHelper.py )
+IF(${CMAKE_VERSION} VERSION_LESS "3.8.0") 
+  SWIG_ADD_MODULE(SMeshPadderHelper python ${SMeshPadderHelper_SOURCES})
+ELSE()
+  SWIG_ADD_LIBRARY(SMeshPadderHelper LANGUAGE python SOURCES ${SMeshPadderHelper_SOURCES})
+ENDIF()
+SWIG_LINK_LIBRARIES(SMeshPadderHelper ${PYTHON_LIBRARIES} ${PLATFORM_LIBS} MeshJobManagerEngine )
+SWIG_CHECK_GENERATION(SMeshPadderHelper)
+IF(WIN32)
+  SET_TARGET_PROPERTIES(_SMeshPadderHelper PROPERTIES DEBUG_OUTPUT_NAME _SMeshPadderHelper_d)
+ENDIF(WIN32)
+install(TARGETS _SMeshPadderHelper DESTINATION ${SALOME_INSTALL_LIBS})
+install(FILES ${SMeshPadderHelper_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
+SALOME_INSTALL_SCRIPTS("${_swig_SCRIPTS}"  ${SALOME_INSTALL_BINS} EXTRA_DPYS "${SWIG_MODULE_SMeshPadderHelper_REAL_NAME}")
+
 # --- rules ---
 
 ADD_LIBRARY(MeshJobManagerEngine ${MeshJobManagerEngine_SOURCES})
index a8b0295a826386d957c25cdfb79ece1e48064cd6..6fdf92764727a70b801540d9bd41150e39465d83 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2011-2021  EDF R&D
+// Copyright (C) 2011-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -83,6 +83,10 @@ static bool fexists(const char *filename)
   return false;
 }
 
+//Engines::EngineComponent_var RetrievePadderMeshJobManagerInstance()
+//{
+//}
+
 //
 // ====================================================================
 // Constructor/Destructor
@@ -92,8 +96,9 @@ MeshJobManager_i::MeshJobManager_i(CORBA::ORB_ptr orb,
                                    PortableServer::POA_ptr poa,
                                    PortableServer::ObjectId * contId,
                                    const char *instanceName,
-                                   const char *interfaceName)
-  : Engines_Component_i(orb, poa, contId, instanceName, interfaceName)
+                                   const char *interfaceName,
+                                   bool checkNS, bool regist)
+  : Engines_Component_i(orb, poa, contId, instanceName, interfaceName, checkNS, regist)
 {
   LOG("Activating MESHJOB::MeshJobManager object");
   _thisObj = this ;
@@ -710,7 +715,13 @@ extern "C"
                                                            const char *interfaceName)
   {
     LOG("PortableServer::ObjectId * MeshJobManagerEngine_factory()");
-    MeshJobManager_i * myEngine = new MeshJobManager_i(orb, poa, contId, instanceName, interfaceName);
+    MeshJobManager_i * myEngine = nullptr;
+    CORBA::Object_var o = poa->id_to_reference(*contId);
+    Engines::Container_var cont = Engines::Container::_narrow(o);
+    if(cont->is_SSL_mode())
+      myEngine = new MeshJobManager_i(orb, poa, contId, instanceName, interfaceName, false, false);
+    else
+      myEngine = new MeshJobManager_i(orb, poa, contId, instanceName, interfaceName, true, true);
     return myEngine->getId() ;
   }
 }
index e731371ff8a8a770b4ebdc9be1351598e5fbc48b..081afacfce2a7af1ffdb8e608c2488a711ed2d9c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2011-2021  EDF R&D
+// Copyright (C) 2011-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -43,6 +43,7 @@
  #define MESHJOBMANAGERENGINE_EXPORT
 #endif
 
+//Engines::EngineComponent_var RetrievePadderMeshJobManagerInstance();
 
 class MESHJOBMANAGERENGINE_EXPORT MeshJobManager_i: public virtual POA_MESHJOB::MeshJobManager,
                                                     public Engines_Component_i
@@ -50,7 +51,7 @@ class MESHJOBMANAGERENGINE_EXPORT MeshJobManager_i: public virtual POA_MESHJOB::
 public:
   MeshJobManager_i(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa,
                    PortableServer::ObjectId * contId,
-                   const char *instanceName, const char *interfaceName);
+                   const char *instanceName, const char *interfaceName, bool checkNS = true, bool regist = true);
   ~MeshJobManager_i();
 
   bool           configure  (const char *configId,
diff --git a/src/Tools/padder/meshjob/impl/SMeshPadderHelper.cxx b/src/Tools/padder/meshjob/impl/SMeshPadderHelper.cxx
new file mode 100644 (file)
index 0000000..21d32a8
--- /dev/null
@@ -0,0 +1,62 @@
+// Copyright (C) 2021-2024  EDF
+//
+// 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 "SMeshPadderHelper.h"
+
+#include "MeshJobManager_i.hxx"
+#include "SALOME_Container_i.hxx"
+#include "SALOME_KernelServices.hxx"
+
+#include "SALOME_Fake_NamingService.hxx"
+
+static Engines::EngineComponent_var _unique_compo;
+
+Engines::EngineComponent_var GetPadderMeshJobManagerInstance()
+{
+  if (CORBA::is_nil(_unique_compo))
+  {
+    CORBA::ORB_var orb;
+    {
+      int argc(0);
+      orb = CORBA::ORB_init(argc, nullptr);
+    }
+    CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
+    PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);
+    PortableServer::POAManager_var pman = poa->the_POAManager();
+    CORBA::PolicyList policies;
+    policies.length(0);
+    auto *cont(KERNEL::getContainerSA());
+    PortableServer::ObjectId *conId(cont->getCORBAId());
+    //
+    pman->activate();
+    //
+    MeshJobManager_i *servant = new MeshJobManager_i(orb, poa, conId, "MeshJobManager_inst_3", "MeshJobManager", false, false);
+    PortableServer::ObjectId *zeId = servant->getId();
+    CORBA::Object_var zeRef = poa->id_to_reference(*zeId);
+    _unique_compo = Engines::EngineComponent::_narrow(zeRef);
+  }
+  return _unique_compo;
+}
+
+std::string BuildPadderMeshJobManagerInstanceInternal()
+{
+  Engines::EngineComponent_var zeRef = GetPadderMeshJobManagerInstance();
+  CORBA::String_var ior = KERNEL::getORB()->object_to_string(zeRef);
+  return std::string(ior.in());
+}
diff --git a/src/Tools/padder/meshjob/impl/SMeshPadderHelper.h b/src/Tools/padder/meshjob/impl/SMeshPadderHelper.h
new file mode 100644 (file)
index 0000000..d5f44f7
--- /dev/null
@@ -0,0 +1,25 @@
+// Copyright (C) 2021-2024  EDF
+//
+// 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
+//
+
+#pragma once
+
+#include <string>
+
+std::string BuildPadderMeshJobManagerInstanceInternal();
+
diff --git a/src/Tools/padder/meshjob/impl/SMeshPadderHelper.i b/src/Tools/padder/meshjob/impl/SMeshPadderHelper.i
new file mode 100644 (file)
index 0000000..efd5a68
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright (C) 2021-2024  EDF
+//
+// 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
+//
+
+%module SMeshPadderHelper
+
+%include "std_string.i"
+
+%{
+#include "SMeshPadderHelper.h"
+%}
+
+%inline
+{
+  std::string BuildPadderMeshJobManagerInstance()
+  {
+    return BuildPadderMeshJobManagerInstanceInternal();
+  }
+}
index 352f250cc1a873c30238f3924bdcacddadb81fa5..86e8bbe23ba542c85cd6b482f541e3c3b1afb465 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2011-2021  EDF R&D
+// Copyright (C) 2011-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 40b25cc2fd33f71f0f733311e2ea6e150fb6d1ff..56670078f38f96c13b058fcd9f67f2a1e7adaf07 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2011-2021  EDF R&D
+// Copyright (C) 2011-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 914e2d441e6d4f9a9dd1e4c4d171733bb0cbfa71..6e33c11c5f06a7160ace0b7aee2abb52e6350115 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2011-2021  EDF R&D
+// Copyright (C) 2011-2024  EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 651535d5707e190263061e9d5d0b2e5c8c6bf58b..5eee4642e6a366c54c12a5abf883df06fe4f1c2d 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2021  EDF R&D
+# Copyright (C) 2007-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index e3fbfc4a69e27a53a61d1bfa698886f96afae0da..49f46951902e02e17f1baefc5462bef0ec3def28 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# Copyright (C) 2011-2021  EDF R&D
+# Copyright (C) 2011-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index ac24bd8584c2b508b56291161683ca80d634736c..2f758eeda2e417b7b4bb9722620cb57fa5f8349f 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 8a1128e9b79d795f363936c0ec73d91fc50fcd29..92c6ca1807251c36888f89ce93dfe77bdbac1ea1 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2021  EDF R&D
+# Copyright (C) 2011-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -94,7 +94,7 @@ def getSpadderCatalogFilename():
 def loadSpadderCatalog():
     import salome
     salome.salome_init()
-    obj = salome.naming_service.Resolve('Kernel/ModulCatalog')
+    obj = salome.naming_service.Resolve('/Kernel/ModulCatalog')
     import SALOME_ModuleCatalog
     catalog = obj._narrow(SALOME_ModuleCatalog.ModuleCatalog)
     if not catalog:
index 35b28a4a59a738d24b144193b75b8e0843e72796..bdfa5e76af3aecfca16e13c71a5567f15e9b17b2 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: iso-8859-1 -*-
-# Copyright (C) 2011-2021  EDF R&D
+# Copyright (C) 2011-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6406c7edcdc57fda23926a72e7c277e8863b01ee..0c3b5eb2fd0f063b861cff91daada378e9551045 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d319f6678449a88530501ad1950b9ab9babf138c..cbb6344f2c319571229f4391924155426c3f032a 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2021  EDF R&D
+# Copyright (C) 2011-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 7e5e820fcb9a412ee9b66c343012812059992519..0e5fe0a763a70f7efaee8137d0ae25cc031bc430 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: iso-8859-1 -*-
-# Copyright (C) 2011-2021  EDF R&D
+# Copyright (C) 2011-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 2ec33369030a54e7cecdf250c3a8ec6f627adde1..ffac9375ac783b3b1c2eaffcd761f4189cd1ac7a 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: iso-8859-1 -*-
-# Copyright (C) 2011-2021  EDF R&D
+# Copyright (C) 2011-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 363d565fd69024727281960de951992e9e01d881..84852ade319734a560552a6f611093d77b259fcb 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: iso-8859-1 -*-
-# Copyright (C) 2011-2021  EDF R&D
+# Copyright (C) 2011-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 2c55a92f243ff7195a3d7956868a490d279e2b37..6d6367bd880e24c23bebf7392ec7ceace36debcb 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 72b69f87a43145b72941c989cb9632594cf92b82..6a67d00eae90e1456a615e3710f594e6009f5a3e 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2021  EDF R&D
+# Copyright (C) 2011-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index e3f23bcca52f8dbe2a21db4eeb4ec481c6452c94..fb917cc72e43492cac5301fc242d49c9f45c3914 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: iso-8859-1 -*-
-# Copyright (C) 2011-2021  EDF R&D
+# Copyright (C) 2011-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index a041bcdcdd9f9bfe493bb12fae57e45ceeb72bc6..e9b6460bdab3ec619361cf9de5078948fe5220b0 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021  EDF R&D
+# Copyright (C) 2012-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f3a76412258a266f1b4c55c5c559923791283d83..79c02a6a364faf0d4f4e473fa8800545116b4efc 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2021  EDF R&D
+# Copyright (C) 2011-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 5663bf389c984f9f6ac20a4877b2638301315ab6..3120d1d065566488d3e94a3064381a8d651bc16f 100644 (file)
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (C) 2010-2021  EDF R&D
+# Copyright (C) 2010-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 8acb00b6f4140be1139aee67243fbd24b698aecb..6f0e81dce745ef80426b608945f5a848f82ce635 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: iso-8859-1 -*-
-# Copyright (C) 2011-2021  EDF R&D
+# Copyright (C) 2011-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6ded729548ed319eaf10bad9420072479ab70c2e..973d8cdcf05d34da6757ba8b103cb80857003e32 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: iso-8859-1 -*-
-# Copyright (C) 2011-2021  EDF R&D
+# Copyright (C) 2011-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 7c726820ad47b7570b1576c234c8314b39644657..126c0c96eac33cc665ff85bb4aa9ca65aa0405c2 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2011-2021  EDF R&D
+# Copyright (C) 2011-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -91,3 +91,14 @@ except Exception as e:
   #print 'probleme zcracks'
   salome_pluginsmanager.logger.info('ERROR: Zcrack plug-in is unavailable: {}'.format(e))
   pass
+
+# Topological to volumic mesh plugin
+try:
+  from TopIIVolMeshPlugin import TopIIVolMeshLct
+  salome_pluginsmanager.AddFunction('Run Topological Volumic mesher',
+                                    'run topological volumic mesher',
+                                    TopIIVolMeshLct)
+except Exception as e:
+  #print 'probleme zcracks'
+  salome_pluginsmanager.logger.info('ERROR: TopIIVolMesh plug-in is unavailable: {}'.format(e))
+  pass
diff --git a/test/0README b/test/0README
new file mode 100644 (file)
index 0000000..3cb1751
--- /dev/null
@@ -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!
index 4c40868028a3042bf00cc7fe4dc3f60e346d85d2..70a9e0e575f54a399c792375692520633ed81b53 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 #
 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-SALOME_GENERATE_TESTS_ENVIRONMENT(_test_env)
-SET(_test_helper ${CMAKE_SOURCE_DIR}/doc/salome/examples/testme.py)
+INCLUDE(tests.set)
+
+SET(TEST_INSTALL_DIRECTORY ${SMESH_TEST_DIR}/other)
 
-# Tests from RESTRICTED repository -----------------------------------
+# Install 'salome test' staff
+# ---------------------------
 
-SET(RESTRICTED_ROOT_DIR $ENV{RESTRICTED_ROOT_DIR} CACHE PATH "Path to the restricted repository")
+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})
 
-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}")
-  ENDFOREACH()
-ELSE()
-  MESSAGE(WARNING "Tests from RESTRICTED repository aren't available")
-ENDIF()
+# Add tests for 'make test'
+# -------------------------
+
+SALOME_GENERATE_TESTS_ENVIRONMENT(_test_env)
 
-# --------------------------------------------------------------------
+FOREACH(_test ${GOOD_TESTS})
+  GET_FILENAME_COMPONENT(testname ${_test} NAME_WE)
+  SET(testname "TESTS_${testname}")
+  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()
diff --git a/test/CTestTestfileInstall.cmake b/test/CTestTestfileInstall.cmake
new file mode 100644 (file)
index 0000000..4961f25
--- /dev/null
@@ -0,0 +1,36 @@
+# Copyright (C) 2015-2024  CEA, EDF, 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(_all_tests ${GOOD_TESTS} ${BAD_TESTS})
+LIST(SORT _all_tests)
+FOREACH(tfile ${_all_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/test/PAL_MESH_041_mesh.py b/test/PAL_MESH_041_mesh.py
new file mode 100644 (file)
index 0000000..e5029b1
--- /dev/null
@@ -0,0 +1,110 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+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----------------------------------------
+
+#----------Vertexes------------
+p1 = geompy.MakeVertex(20.0,30.0,40.0)
+p2 = geompy.MakeVertex(90.0,80.0,0.0)
+p3 = geompy.MakeVertex(30.0,80.0,200.0)
+
+#----------Edges---------------
+e1 = geompy.MakeEdge(p1,p2)
+e2 = geompy.MakeEdge(p2,p3)
+e3 = geompy.MakeEdge(p3,p1)
+
+#----------Wire----------------
+ListOfEdges = []
+ListOfEdges.append(e3)
+ListOfEdges.append(e2)
+ListOfEdges.append(e1)
+wire1 = geompy.MakeWire(ListOfEdges)
+
+
+#----------Face----------------
+WantPlanarFace = 1
+face1 = geompy.MakeFace(wire1,WantPlanarFace)
+
+Id_face1 = geompy.addToStudy(face1,"Face1")
+
+
+
+#-----------------------------SMESH-------------------------------------------
+
+# -- Init mesh --
+plane_mesh = salome.IDToObject( Id_face1)
+
+mesh = smesh.Mesh(plane_mesh, "Mesh_1")
+
+print("---------------------Hypothesis and Algorithms")
+
+#---------------- NumberOfSegments
+
+numberOfSegment = 9
+
+algoWireDes = mesh.Segment()
+listHyp = algoWireDes.GetCompatibleHypothesis()
+print(algoWireDes.GetName())
+algoWireDes.SetName("Ware descritisation")
+
+hypNbSeg = algoWireDes.NumberOfSegments(numberOfSegment)
+print(hypNbSeg.GetName())
+print(hypNbSeg.GetNumberOfSegments())
+smesh.SetName(hypNbSeg, "Nb. Segments")
+
+
+#--------------------------Max. Element Area
+maxElementArea = 200
+
+algoTri = mesh.Triangle()
+listHyp = algoTri.GetCompatibleHypothesis()
+print(algoTri.GetName())
+algoTri.SetName("Triangle")
+
+hypArea200 = algoTri.MaxElementArea(maxElementArea)
+print(hypArea200.GetName())
+print(hypArea200.GetMaxElementArea())
+smesh.SetName(hypArea200, "Max. Element Area")
+
+
+print("---------------------Compute the mesh")
+
+isDone = mesh.Compute()
+print(isDone)
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+
+salome.sg.updateObjBrowser()
+
diff --git a/test/PAL_MESH_043_2D.py b/test/PAL_MESH_043_2D.py
new file mode 100644 (file)
index 0000000..89a0759
--- /dev/null
@@ -0,0 +1,89 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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_testExtrusion2D.py
+#  Module      : SMESH
+#  Description : Create meshes to test extrusion of mesh elements along path
+#
+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
+
+# create points
+p1 = geompy.MakeVertex(100, 0, 0)
+p2 = geompy.MakeVertex(100, 0, 100)
+p3 = geompy.MakeVertex(0, 0, 0)
+p4 = geompy.MakeVertex(0, 100, 0)
+
+
+# create two vectors
+vector1 = geompy.MakeVector(p1,p2)
+vector2 = geompy.MakeVector(p3,p4)
+
+# make two ellipses
+ellipse1 = geompy.MakeEllipse(p1,vector1,50,25)
+ellipse2 = geompy.MakeEllipse(p3,vector2,300,50)
+
+# publish circular face and second circle
+id_ellipse1 = geompy.addToStudy(ellipse1, "Ellips 1")
+id_ellipse2 = geompy.addToStudy(ellipse2, "Ellips 2")
+
+
+#---------------------------------SMESH
+
+# create the path mesh
+mesh1 = smesh.Mesh(ellipse1, "Path Mesh")
+
+algoReg1 = mesh1.Segment()
+algoReg1.SetName("Regular_1D")
+hypNbSeg1 = algoReg1.NumberOfSegments(18)
+smesh.SetName(hypNbSeg1, "NumberOfSegments 1")
+
+# create the tool mesh
+mesh2 = smesh.Mesh(ellipse2, "Tool Mesh")
+algoReg2 = mesh2.Segment()
+algoReg2.SetName("Regular_1D")
+hypNbSeg2 = algoReg2.NumberOfSegments(34)
+smesh.SetName(hypNbSeg2, "NumberOfSegments 2")
+
+# compute meshes
+isDone = mesh1.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+isDone = mesh2.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+
+# ---- udate object browser
+salome.sg.updateObjBrowser()
diff --git a/test/PAL_MESH_043_3D.py b/test/PAL_MESH_043_3D.py
new file mode 100644 (file)
index 0000000..24a70cb
--- /dev/null
@@ -0,0 +1,98 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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_testExtrusion3D.py
+#  Module      : SMESH
+#  Description : Create meshes to test extrusion of mesh elements along path
+#
+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()
+
+
+# create points to build two circles
+p1 = geompy.MakeVertex(0,  100,  0)
+p2 = geompy.MakeVertex(100,  0,  0)
+p3 = geompy.MakeVertex(0, -100,  0)
+p4 = geompy.MakeVertex(0,   70,  0)
+p5 = geompy.MakeVertex(0,  100, 30)
+p6 = geompy.MakeVertex(0,  130,  0)
+
+# create two circles
+circle = geompy.MakeCircleThreePnt(p1, p2, p3)
+cf     = geompy.MakeCircleThreePnt(p4, p5, p6)
+
+# make circular face
+wire = geompy.MakeWire([cf])
+face = geompy.MakeFace(wire, 1)
+
+# publish circular face and second circle
+idcircle = geompy.addToStudy(circle, "Circle")
+idface   = geompy.addToStudy(face,   "Circular face")
+
+
+# init a Mesh with the circular face
+mesh1 = smesh.Mesh(face, "Mesh on circular face")
+
+# set hypotheses and algos to the first mesh
+numberOfSegments1 = 12
+algoReg1 = mesh1.Segment()
+algoReg1.SetName("Regular_1D")
+hypNbSeg1 = algoReg1.NumberOfSegments(numberOfSegments1)
+smesh.SetName(hypNbSeg1, "NumberOfSegments_" + str(numberOfSegments1))
+
+maxElementArea = 30
+
+algoTri = mesh1.Triangle()
+algoTri.SetName("Triangle")
+hypArea = algoTri.MaxElementArea(maxElementArea)
+smesh.SetName(hypArea, "MaxElementArea_" + str(maxElementArea))
+
+
+# init a Mesh with the second circle
+mesh2 = smesh.Mesh(circle, "Mesh on circular edge")
+
+numberOfSegments2 = 12
+algoReg2 = mesh2.Segment()
+algoReg2.SetName("Regular_1D")
+hypNbSeg2 = algoReg2.NumberOfSegments(numberOfSegments2)
+smesh.SetName(hypNbSeg2, "NumberOfSegments_" + str(numberOfSegments2))
+
+
+# compute meshes
+isDone = mesh1.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+isDone = mesh2.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# ---- update object browser
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_AdvancedEditor.py b/test/SMESH_AdvancedEditor.py
new file mode 100644 (file)
index 0000000..e0a2d7b
--- /dev/null
@@ -0,0 +1,220 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+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 math
+
+def GetNewNodes(mesh,Elems,OldNodes):
+    """
+    Auxiliary function, which return list of nodes from
+    given Elems avoided nodes from OldNodes
+    """
+    newnodes = []
+    for i in Elems:
+        nbn = mesh.GetElemNbNodes(i)
+        for j in range(0,nbn):
+            nn = mesh.GetElemNode(i,j)
+            isold = 0
+            for k in range(0,len(newnodes)):
+                if nn==newnodes[k]:
+                    isold = 1
+                    break
+                pass
+            if isold: continue
+            for k in range(0,len(OldNodes)):
+                if nn==OldNodes[k]:
+                    isold = 1
+                    break
+                pass
+            if isold: continue
+            newnodes.append(nn)
+            pass
+        pass
+    return newnodes
+            
+
+# create empty mesh
+mesh = smesh.Mesh()
+
+tol = 0.001
+
+# create a cross from quadrangle faces
+# 1. create first edge and make extrusion along 0x
+n1 = mesh.AddNode(55,-5,0)
+n2 = mesh.AddNode(55,5,0)
+e1 = mesh.AddEdge([n1,n2])
+dir1 = SMESH.DirStruct(SMESH.PointStruct(-10,0,0))
+mesh.ExtrusionSweep([e1],dir1,11)
+# 2. create second edge and make extrusion along 0y
+n3 = mesh.AddNode(-5,-55,0)
+n4 = mesh.AddNode(5,-55,0)
+e2 = mesh.AddEdge([n3,n4])
+dir2 = SMESH.DirStruct(SMESH.PointStruct(0,10,0))
+mesh.ExtrusionSweep([e2],dir2,11)
+
+# since result has coincident nodes and faces
+# we have to make merge
+nodes = mesh.FindCoincidentNodes(0.001)
+mesh.MergeNodes(nodes)
+mesh.MergeEqualElements()
+
+# make extrusion faces along 0z
+faces = mesh.GetElementsByType(SMESH.FACE)
+nbf = len(faces)
+maxang = 2.0
+zstep = 5
+nbzsteps = 50
+dir3 = SMESH.DirStruct(SMESH.PointStruct(0,0,zstep))
+newfaces = [] # list for keeping created top faces
+              # during extrusion
+
+for i in range(0,nbzsteps):
+    mesh.ExtrusionSweep(faces,dir3,1)
+    # find top faces after each extrusion and keep them
+    res = mesh.GetLastCreatedElems()
+    nbr = len(res)
+    nfaces = []
+    for j in res:
+        nbn = mesh.GetElemNbNodes(j)
+        if nbn!=4: continue
+        nn1 = mesh.GetElemNode(j,0)
+        xyz1 = mesh.GetNodeXYZ(nn1)
+        nn2 = mesh.GetElemNode(j,1)
+        xyz2 = mesh.GetNodeXYZ(nn2)
+        nn3 = mesh.GetElemNode(j,2)
+        xyz3 = mesh.GetNodeXYZ(nn3)
+        if abs(xyz1[2]-xyz2[2])<tol and abs(xyz1[2]-xyz3[2])<tol :
+            # this face is a top face
+            nfaces.append(j)
+            pass
+        pass
+    if len(nfaces)!=nbf:
+        print("len(nfaces)!=nbf")
+        break
+    newfaces.append(nfaces)
+    # update faces for before next step of extrusion
+    faces = nfaces
+    pass
+    
+# rotate faces from newfaces
+axisr1 = SMESH.AxisStruct(0,0,0,0,0,1)
+for i in range(0,nbzsteps):
+    ang = maxang*(1-math.cos((i+1)*math.pi/nbzsteps))
+    mesh.Rotate(newfaces[i],axisr1,ang,0)
+
+
+# create circles
+# create two edges and rotate them for creation
+# full circle
+n5 = mesh.AddNode(65,0,0)
+n6 = mesh.AddNode(67.5,0,0)
+n7 = mesh.AddNode(70,0,0)
+e56 = mesh.AddEdge([n5,n6])
+e67 = mesh.AddEdge([n6,n7])
+axisr2 = SMESH.AxisStruct(65,0,0,0,1,0)
+mesh.RotationSweep([e56,e67],axisr2, math.pi/6, 12, tol)
+res = mesh.GetLastCreatedElems()
+faces1 = []
+for i in res:
+    nbn = mesh.GetElemNbNodes(i)
+    if nbn>2: faces1.append(i)
+    pass
+nbf1 = len(faces1)
+
+# create other two edges and rotate them for creation
+# other full circle
+n8 = mesh.AddNode(-65,0,0)
+n9 = mesh.AddNode(-67.5,0,0)
+n10 = mesh.AddNode(-70,0,0)
+e8 = mesh.AddEdge([n8,n9])
+e9 = mesh.AddEdge([n9,n10])
+axisr3 = SMESH.AxisStruct(-65,0,0,0,-1,0)
+mesh.RotationSweep([e8,e9],axisr3, math.pi/6, 12, tol)
+res = mesh.GetLastCreatedElems()
+faces2 = []
+for i in res:
+    nbn = mesh.GetElemNbNodes(i)
+    if nbn>2: faces2.append(i)
+    pass
+nbf2 = len(faces2)
+
+# there are coincident nodes after rotation
+# therefore we have to merge nodes
+nodes = mesh.FindCoincidentNodes(0.001)
+mesh.MergeNodes(nodes)
+
+nbcircs = 2
+nbrsteps = 24
+nbrs = nbcircs*nbrsteps
+dz = nbzsteps*zstep/nbrs
+
+# create first spiral
+oldnodes = []
+newnodes = GetNewNodes(mesh,faces1,oldnodes)
+oldnodes = newnodes
+
+nodes = []
+mesh.RotationSweep(faces1,axisr1, math.pi*2/nbrsteps, nbrs, tol)
+res = mesh.GetLastCreatedElems()
+
+for i in range(0,nbrs):
+    volumes = []
+    for j in range(0,nbf1): volumes.append(res[i+j*nbrs])
+    newnodes = GetNewNodes(mesh,volumes,oldnodes)
+    for j in newnodes:
+        xyz = mesh.GetNodeXYZ(j)
+        mesh.MoveNode(j,xyz[0],xyz[1],xyz[2]+dz*(i+1))
+        pass
+    oldnodes = newnodes
+    pass
+
+# create second spiral
+oldnodes = []
+newnodes = GetNewNodes(mesh,faces2,oldnodes)
+oldnodes = newnodes
+
+nodes = []
+mesh.RotationSweep(faces2,axisr1, math.pi*2/nbrsteps, nbrs, tol)
+res = mesh.GetLastCreatedElems()
+
+for i in range(0,nbrs):
+    volumes = []
+    for j in range(0,nbf2): volumes.append(res[i+j*nbrs])
+    newnodes = GetNewNodes(mesh,volumes,oldnodes)
+    for j in newnodes:
+        xyz = mesh.GetNodeXYZ(j)
+        mesh.MoveNode(j,xyz[0],xyz[1],xyz[2]+dz*(i+1))
+        pass
+    oldnodes = newnodes
+    pass
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_BelongToGeom.py b/test/SMESH_BelongToGeom.py
new file mode 100644 (file)
index 0000000..ea73068
--- /dev/null
@@ -0,0 +1,69 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+from SMESH_test1 import *
+
+## Old style
+def CheckBelongToGeomFilterOld(theMeshGen, theMesh, theShape, theSubShape, theElemType):
+    if theShape != theSubShape:
+        aName = str(theSubShape)
+        geompy.addToStudyInFather(theShape,theSubShape,aName)
+
+    if not theMeshGen.Compute(theMesh,theShape):
+        raise Exception("Error when computing Mesh")
+
+    aFilterMgr = theMeshGen.CreateFilterManager()
+    aFilter = aFilterMgr.CreateFilter()
+   
+    aBelongToGeom = aFilterMgr.CreateBelongToGeom()
+    aBelongToGeom.SetGeom(theSubShape)
+    aBelongToGeom.SetElementType(theElemType)
+    
+    aFilter.SetPredicate(aBelongToGeom)
+    aFilterMgr.UnRegister()
+    return aFilter.GetElementsId(theMesh)
+
+## Current style
+def CheckBelongToGeomFilter(theMesh, theShape, theSubShape, theElemType):
+    if theShape != theSubShape:
+        aName = str(theSubShape)
+        geompy.addToStudyInFather(theShape,theSubShape,aName)
+
+    if not theMesh.Compute():
+        raise Exception("Error when computing Mesh")
+
+    aFilter = smesh.GetFilter(theElemType, SMESH.FT_BelongToGeom, theSubShape)
+    return aFilter.GetElementsId(theMesh.GetMesh())
+    
+
+anElemType = SMESH.FACE;
+print("anElemType =", anElemType)
+#anIds = CheckBelongToGeomFilter(mesh,box,subShapeList[1],anElemType)
+anIds = CheckBelongToGeomFilter(mesh,box,box,anElemType)
+print("Number of ids = ", len(anIds))
+print("anIds = ", anIds)
+## Check old version
+#anIds = CheckBelongToGeomFilterOld(smesh,mesh.GetMesh(),box,box,anElemType)
+#print "anIds = ", anIds
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_BuildCompound.py b/test/SMESH_BuildCompound.py
new file mode 100644 (file)
index 0000000..3c36b78
--- /dev/null
@@ -0,0 +1,111 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+#  File   : SMESH_BuildCompound.py
+#  Author : Alexander KOVALEV
+#  Module : SMESH
+#  $Header$
+# ! Please, if you edit this example file, update also
+# ! SMESH_SRC/doc/salome/gui/SMESH/input/tui_creating_meshes.doc
+# ! as some sequences of symbols from this example are used during
+# ! documentation generation to identify certain places of this file
+#
+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()
+
+## 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")
+
+
+## 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()
+isDone = Mesh_inf.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# 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()
+isDone = Mesh_sup.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# 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 groups with the same names and
+# merging of elements with the given tolerance
+Compound1 = smesh.Concatenate([Mesh_inf.GetMesh(), Mesh_sup.GetMesh()], 0, 1, 1e-05)
+smesh.SetName(Compound1, 'Compound_with_RenamedGrps_and_MergeElems')
+# create a compound of two meshes with uniting groups with the same names and
+# creating groups of all elements
+Compound2 = smesh.Concatenate([Mesh_inf.GetMesh(), Mesh_sup.GetMesh()], 1, 0, 1e-05, True)
+smesh.SetName(Compound2, 'Compound_with_UniteGrps_and_GrpsOfAllElems')
+#end
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_GroupFromGeom.py b/test/SMESH_GroupFromGeom.py
new file mode 100644 (file)
index 0000000..7d09aeb
--- /dev/null
@@ -0,0 +1,52 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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_GroupFromGeom.py
+#  Module : SMESH
+#
+from SMESH_test1 import *
+
+# Compute the mesh created in SMESH_test1
+
+isDone = mesh.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Create geometry groups on plane:
+aGeomGroup1 = geompy.CreateGroup(face , geompy.ShapeType["FACE"])
+geompy.AddObject(aGeomGroup1, 1)
+
+aGeomGroup2 = geompy.CreateGroup(face , geompy.ShapeType["EDGE"])
+
+geompy.AddObject(aGeomGroup2, 3)
+geompy.AddObject(aGeomGroup2, 6)
+geompy.AddObject(aGeomGroup2, 8)
+geompy.AddObject(aGeomGroup2, 10)
+
+geompy.addToStudy(aGeomGroup1, "Group on Faces")
+geompy.addToStudy(aGeomGroup2, "Group on Edges")
+
+aSmeshGroup1 = mesh.GroupOnGeom(aGeomGroup1, "SMESHGroup1", SMESH.FACE)
+aSmeshGroup2 = mesh.GroupOnGeom(aGeomGroup2, "SMESHGroup2", SMESH.EDGE)
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_GroupFromGeom2.py b/test/SMESH_GroupFromGeom2.py
new file mode 100644 (file)
index 0000000..61c5153
--- /dev/null
@@ -0,0 +1,82 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+#==============================================================================
+#  Info.
+#  Bug (from script, bug)   : SMESH_GroupFromGeom.py, PAL6945
+#  Modified                 : 25/11/2004
+#  Author                   : Kovaltchuk Alexey
+#  Project                  : PAL/SALOME
+#============================================================================== 
+#
+from SMESH_test1 import *
+
+
+# Compute the mesh created in SMESH_test1
+
+isDone = mesh.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Create geometry groups on plane:
+aGeomGroup1 = geompy.CreateGroup(face , geompy.ShapeType["FACE"])
+geompy.AddObject(aGeomGroup1, 1)
+
+aGeomGroup2 = geompy.CreateGroup(face , geompy.ShapeType["EDGE"])
+
+geompy.AddObject(aGeomGroup2, 3)
+geompy.AddObject(aGeomGroup2, 6)
+geompy.AddObject(aGeomGroup2, 8)
+geompy.AddObject(aGeomGroup2, 10)
+
+geompy.addToStudy(aGeomGroup1, "Group on Faces")
+geompy.addToStudy(aGeomGroup2, "Group on Edges")
+
+aSmeshGroup1 = mesh.GroupOnGeom(aGeomGroup1, "SMESHGroup1", SMESH.FACE)
+aSmeshGroup2 = mesh.GroupOnGeom(aGeomGroup2, "SMESHGroup2", SMESH.EDGE)
+
+print("Create aGroupOnShell - a group linked to a shell")
+aGroupOnShell = mesh.GroupOnGeom(shell, "GroupOnShell", SMESH.EDGE)
+print("aGroupOnShell type =", aGroupOnShell.GetType())
+print("aGroupOnShell size =", aGroupOnShell.Size())
+print("aGroupOnShell ids :", aGroupOnShell.GetListOfID())
+
+print(" ")
+
+print("Modify <LocalLength> hypothesis: 100 -> 50")
+hypLen1.SetLength(50)
+print("Contents of aGroupOnShell changes:")
+print("aGroupOnShell size =", aGroupOnShell.Size())
+print("aGroupOnShell ids :", aGroupOnShell.GetListOfID())
+
+print(" ")
+
+print("Re-compute mesh, contents of aGroupOnShell changes again:")
+isDone = mesh.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+print("aGroupOnShell size =", aGroupOnShell.Size())
+print("aGroupOnShell ids :", aGroupOnShell.GetListOfID())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_GroupLyingOnGeom.py b/test/SMESH_GroupLyingOnGeom.py
new file mode 100644 (file)
index 0000000..af339aa
--- /dev/null
@@ -0,0 +1,52 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+def BuildGroupLyingOn(theMesh, theElemType, theName, theShape):
+    aFilterMgr = smesh.CreateFilterManager()
+    aFilter = aFilterMgr.CreateFilter()
+   
+    aLyingOnGeom = aFilterMgr.CreateLyingOnGeom()
+    aLyingOnGeom.SetGeom(theShape)
+    aLyingOnGeom.SetElementType(theElemType)
+    
+    aFilter.SetPredicate(aLyingOnGeom)
+    anIds = aFilter.GetElementsId(theMesh)
+    aFilterMgr.UnRegister()
+
+    aGroup = theMesh.CreateGroup(theElemType, theName)
+    aGroup.Add(anIds)
+
+#Example
+from SMESH_test1 import *
+
+isDone = mesh.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# First way
+BuildGroupLyingOn(mesh.GetMesh(), SMESH.FACE, "Group of faces lying on edge #1", edge )
+
+# Second way
+mesh.MakeGroup("Group of faces lying on edge #2", SMESH.FACE, SMESH.FT_LyingOnGeom, edge)
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_Nut.py b/test/SMESH_Nut.py
new file mode 100644 (file)
index 0000000..aacfcad
--- /dev/null
@@ -0,0 +1,163 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+#####################################################################
+#Created                :17/02/2005
+#Author                 :MASLOV Eugeny, KOVALTCHUK Alexey 
+#####################################################################
+#
+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
+import math
+
+#Sketcher_1 creation
+print("Sketcher creation...")
+Sketcher_1 = geompy.MakeSketcher("Sketcher:F 100 -57.7:TT 100 57.7:TT 0 115.47:TT -100 57.7:TT -100 -57.7:TT 0 -115.47:WW") 
+geompy.addToStudy(Sketcher_1, "Sketcher_1")
+Face_1 = geompy.MakeFace(Sketcher_1, 1)
+geompy.addToStudy(Face_1, "Face_1")
+
+#Line creation
+print("Line  creation...")
+Line_1 = geompy.MakeLineTwoPnt(geompy.MakeVertex(0,0,0), geompy.MakeVertex(0,0,100))
+geompy.addToStudy(Line_1, "Line_1")
+
+#Prism creation
+print("Prism creation...")
+Prism_1 = geompy.MakePrismVecH(Face_1, Line_1, 100)
+geompy.addToStudy(Prism_1, "Prism_1")
+
+#Sketcher_2 creation
+print("Sketcher creation...")
+Sketcher_2 = geompy.MakeSketcher("Sketcher:F 50 0:TT 80 0:TT 112 13:TT 112 48:TT 80 63:TT 80 90:TT 50 90:WW", [0,0,0, 1,0,0, 0,1,0]) 
+geompy.addToStudy(Sketcher_2, "Sketcher_2")
+Face_2 = geompy.MakeFace(Sketcher_2, 1)
+geompy.addToStudy(Face_2, "Face_2")
+
+#Revolution creation
+print("Revolution creation...")
+Revolution_1 = geompy.MakeRevolution(Face_2, Line_1, 2*math.pi)
+geompy.addToStudy(Revolution_1, "Revolution_1")
+
+#Common applying
+print("Common of Revolution and Prism...")
+Common_1 = geompy.MakeBoolean(Revolution_1, Prism_1, 1)
+geompy.addToStudy(Common_1, "Common_1")
+
+#Explode Common_1 on edges
+CommonExplodedListEdges = geompy.SubShapeAll(Common_1, geompy.ShapeType["EDGE"])
+for i in range(0, len(CommonExplodedListEdges)):
+    name = "Edge_"+str(i+1)
+    geompy.addToStudyInFather(Common_1, CommonExplodedListEdges[i], name)
+
+#Fillet applying
+print("Fillet creation...")
+Fillet_1 = geompy.MakeFillet(Common_1, 10, geompy.ShapeType["EDGE"], [5])
+geompy.addToStudy(Fillet_1, "Fillet_1")
+
+#Chamfer applying
+print("Chamfer creation...")
+cyl_face = geompy.GetFaceNearPoint( Fillet_1, geompy.MakeVertex( 50, 0, 45 ), theName='cyl_face')
+cyl_face_id = geompy.GetSubShapeID( Fillet_1, cyl_face )
+top_face = geompy.GetFaceNearPoint( Fillet_1, geompy.MakeVertex( 60, 0, 90 ), theName='top_face')
+top_face_id = geompy.GetSubShapeID( Fillet_1, top_face )
+Chamfer_1 = geompy.MakeChamferEdge(Fillet_1, 10, 10, cyl_face_id, top_face_id, theName='Chamfer_1' )
+
+cyl_face = geompy.GetFaceNearPoint( Chamfer_1, geompy.MakeVertex( 80, 0, 85 ), theName='cyl_face')
+cyl_face_id = geompy.GetSubShapeID( Chamfer_1, cyl_face )
+top_face = geompy.GetFaceNearPoint( Chamfer_1, geompy.MakeVertex( 65, 0, 90 ), theName='top_face')
+top_face_id = geompy.GetSubShapeID( Chamfer_1, top_face )
+Chamfer_2 = geompy.MakeChamferEdge(Chamfer_1, 10, 10, cyl_face_id, top_face_id, theName='Chamfer_2' )
+
+#Import of the shape from "slots.brep"
+print("Import multi-rotation from the DATA_DIR/Shapes/Brep/slots.brep")
+thePath = os.getenv("DATA_DIR")
+theFileName = os.path.join( thePath,"Shapes","Brep","slots.brep")
+theShapeForCut = geompy.ImportBREP(theFileName)
+geompy.addToStudy(theShapeForCut, "slot.brep_1")
+
+#Cut applying
+print("Cut...")
+Cut_1 = geompy.MakeBoolean(Chamfer_2, theShapeForCut, 2)
+Cut_1_ID = geompy.addToStudy(Cut_1, "Cut_1")
+
+#Mesh creation
+
+# -- Init --
+shape_mesh = salome.IDToObject( Cut_1_ID )
+
+mesh = smesh.Mesh(shape_mesh, "Nut")
+
+#HYPOTHESIS CREATION
+print("-------------------------- Average length")
+theAverageLength = 5
+algoReg1D = mesh.Segment()
+hAvLength = algoReg1D.LocalLength(theAverageLength)
+print(hAvLength.GetName())
+print(hAvLength.GetId())
+print(hAvLength.GetLength())
+smesh.SetName(hAvLength, "AverageLength_"+str(theAverageLength))
+
+print("-------------------------- MaxElementArea")
+theMaxElementArea = 20
+algoTri = mesh.Triangle()
+hArea = algoTri.MaxElementArea( theMaxElementArea )
+print(hArea.GetName())
+print(hArea.GetId())
+print(hArea.GetMaxElementArea())
+smesh.SetName(hArea, "MaxElementArea_"+str(theMaxElementArea))
+
+print("-------------------------- MaxElementVolume")
+theMaxElementVolume = 150
+algoNg = mesh.Tetrahedron(smeshBuilder.NETGEN)
+hVolume = algoNg.MaxElementVolume( theMaxElementVolume )
+print(hVolume.GetName())
+print(hVolume.GetId())
+print(hVolume.GetMaxElementVolume())
+smesh.SetName(hVolume, "MaxElementVolume_"+str(theMaxElementVolume))
+
+
+print("-------------------------- compute the mesh of the mechanic piece")
+isDone = mesh.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+print("Information about the Nut:")
+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 quadrangles : ", mesh.NbQuadrangles())
+print("Number of volumes     : ", mesh.NbVolumes())
+print("Number of tetrahedrons: ", mesh.NbTetras())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_Partition1_tetra.py b/test/SMESH_Partition1_tetra.py
new file mode 100644 (file)
index 0000000..b928d27
--- /dev/null
@@ -0,0 +1,186 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# Tetrahedrization of the geometry generated by the Python script GEOM_Partition1.py
+# Hypothesis and algorithms for the mesh generation are global
+# -- Rayon de la bariere
+#
+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()
+
+from math import sqrt
+
+
+#---------------------------------------------------------------
+
+barier_height = 7.0
+barier_radius = 5.6 / 2 # Rayon de la bariere
+colis_radius = 1.0 / 2  # Rayon du colis
+colis_step = 2.0        # Distance s�parant deux colis
+cc_width = 0.11         # Epaisseur du complement de colisage
+
+# --
+
+cc_radius = colis_radius + cc_width
+colis_center = sqrt(2.0)*colis_step/2
+
+# --
+
+boolean_common  = 1
+boolean_cut     = 2
+boolean_fuse    = 3
+boolean_section = 4
+
+# --
+
+p0 = geompy.MakeVertex(0.,0.,0.)
+vz = geompy.MakeVectorDXDYDZ(0.,0.,1.)
+
+# --
+
+barier = geompy.MakeCylinder(p0, vz, barier_radius, barier_height)
+
+# --
+
+colis = geompy.MakeCylinder(p0, vz, colis_radius, barier_height)
+cc    = geompy.MakeCylinder(p0, vz,    cc_radius, barier_height)
+
+colis_cc = geompy.MakeCompound([colis, cc])
+colis_cc = geompy.MakeTranslation(colis_cc, colis_center, 0.0, 0.0)
+
+colis_cc_multi = geompy.MultiRotate1D(colis_cc, vz, 4)
+
+# --
+
+Compound1 = geompy.MakeCompound([colis_cc_multi, barier])
+SubShape_theShape = geompy.SubShapeAll(Compound1,geompy.ShapeType["SOLID"])
+alveole = geompy.MakePartition(SubShape_theShape)
+
+print("Analysis of the geometry to mesh (right after the Partition) :")
+
+subShellList = geompy.SubShapeAll(alveole, geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(alveole, geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(alveole, geompy.ShapeType["EDGE"])
+
+print("number of Shells in alveole : ", len(subShellList))
+print("number of Faces  in alveole : ", len(subFaceList))
+print("number of Edges  in alveole : ", len(subEdgeList))
+
+subshapes = geompy.SubShapeAll(alveole, geompy.ShapeType["SHAPE"])
+
+## there are 9 sub-shapes
+
+comp1 = geompy.MakeCompound( [ subshapes[0], subshapes[1] ] )
+comp2 = geompy.MakeCompound( [ subshapes[2], subshapes[3] ] )
+comp3 = geompy.MakeCompound( [ subshapes[4], subshapes[5] ] )
+comp4 = geompy.MakeCompound( [ subshapes[6], subshapes[7] ] )
+
+compGOs = []
+compGOs.append( comp1 )
+compGOs.append( comp2 )
+compGOs.append( comp3 )
+compGOs.append( comp4 )
+comp = geompy.MakeCompound( compGOs )
+
+alveole = geompy.MakeCompound( [ comp, subshapes[8] ])
+
+idalveole = geompy.addToStudy(alveole, "alveole")
+
+print("Analysis of the geometry to mesh (right after the MakeCompound) :")
+
+subShellList = geompy.SubShapeAll(alveole, geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(alveole, geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(alveole, geompy.ShapeType["EDGE"])
+
+print("number of Shells in alveole : ", len(subShellList))
+print("number of Faces  in alveole : ", len(subFaceList))
+print("number of Edges  in alveole : ", len(subEdgeList))
+
+status = geompy.CheckShape(alveole)
+print(" check status ", status)
+
+
+# ---- init a Mesh with the alveole
+shape_mesh = salome.IDToObject( idalveole )
+
+mesh = smesh.Mesh(shape_mesh, "MeshAlveole")
+
+print("-------------------------- create Hypothesis (In this case global hypothesis are used)")
+
+print("-------------------------- NumberOfSegments")
+
+numberOfSegments = 10
+
+regular1D = mesh.Segment()
+hypNbSeg = regular1D.NumberOfSegments(numberOfSegments)
+print(hypNbSeg.GetName())
+print(hypNbSeg.GetId())
+print(hypNbSeg.GetNumberOfSegments())
+smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegments))
+
+print("-------------------------- MaxElementArea")
+
+maxElementArea = 0.1
+
+triangle = mesh.Triangle()
+hypArea = triangle.MaxElementArea(maxElementArea)
+print(hypArea.GetName())
+print(hypArea.GetId())
+print(hypArea.GetMaxElementArea())
+smesh.SetName(hypArea, "MaxElementArea_" + str(maxElementArea))
+
+print("-------------------------- MaxElementVolume")
+
+maxElementVolume = 0.5
+
+netgen3D = mesh.Tetrahedron(smeshBuilder.NETGEN)
+hypVolume = netgen3D.MaxElementVolume(maxElementVolume)
+print(hypVolume.GetName())
+print(hypVolume.GetId())
+print(hypVolume.GetMaxElementVolume())
+smesh.SetName(hypVolume, "MaxElementVolume_" + str(maxElementVolume))
+
+print("-------------------------- compute the mesh of alveole ")
+ret = mesh.Compute()
+if not ret:
+    raise Exception("Error when computing Mesh")
+
+log = mesh.GetLog(0) # no erase trace
+# for linelog in log:
+#     print(linelog)
+print("Information about the Mesh_mechanic:")
+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())
+print("Number of tetrahedrons: ", mesh.NbTetras())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_Sphere.py b/test/SMESH_Sphere.py
new file mode 100644 (file)
index 0000000..9fdc328
--- /dev/null
@@ -0,0 +1,123 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+#  GEOM GEOM_SWIG : binding of C++ implementation with Python
+#  File   : GEOM_Sphere.py
+#  Author : Damien COQUERET, Open CASCADE
+#  Module : GEOM
+#  $Header: 
+#
+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 math
+
+# It is an example of creating a hexahedrical mesh on a sphere.
+#
+# Used approach allows to avoid problems with degenerated and
+# seam edges without special processing of geometrical shapes
+
+#-----------------------------------------------------------------------
+#Variables
+Radius  = 100.
+Dist    = Radius / 2.
+Factor  = 2.5
+Angle90 = math.pi / 2.
+NbSeg   = 10
+
+PointsList = []
+ShapesList = []
+
+#Basic Elements
+P0 = geompy.MakeVertex(0., 0., 0.)
+P1 = geompy.MakeVertex(-Dist, -Dist, -Dist)
+P2 = geompy.MakeVertex(-Dist, -Dist, Dist)
+P3 = geompy.MakeVertex(-Dist, Dist, Dist)
+P4 = geompy.MakeVertex(-Dist, Dist, -Dist)
+
+VZ = geompy.MakeVectorDXDYDZ(0., 0., 1.)
+
+#Construction Elements
+PointsList.append(P1)
+PointsList.append(P2)
+PointsList.append(P3)
+PointsList.append(P4)
+PointsList.append(P1)
+
+PolyLine = geompy.MakePolyline(PointsList)
+
+Face1 = geompy.MakeFace(PolyLine, 1)
+Face2 = geompy.MakeScaleTransform(Face1, P0, Factor)
+Face3 = geompy.MakeScaleTransform(Face1, P0, -1.)
+
+#Models
+Sphere = geompy.MakeSphereR(Radius)
+
+Block = geompy.MakeHexa2Faces(Face1, Face2)
+Cube  = geompy.MakeHexa2Faces(Face1, Face3)
+
+Common1 = geompy.MakeBoolean(Sphere, Block, 1)
+Common2 = geompy.MakeRotation(Common1, VZ, Angle90)
+
+MultiBlock1 = geompy.MakeMultiTransformation1D(Common1, 20, -1, 3)
+MultiBlock2 = geompy.MakeMultiTransformation1D(Common2, 30, -1, 3)
+
+#Reconstruct sphere from several blocks
+ShapesList.append(Cube)
+ShapesList.append(MultiBlock1)
+ShapesList.append(MultiBlock2)
+Compound = geompy.MakeCompound(ShapesList)
+
+Result = geompy.MakeGlueFaces(Compound, 0.1)
+
+#addToStudy
+Id_Sphere      = geompy.addToStudy(Sphere, "Sphere")
+Id_Cube        = geompy.addToStudy(Cube, "Cube")
+
+Id_Common1     = geompy.addToStudy(Common1, "Common1")
+Id_Common2     = geompy.addToStudy(Common2, "Common2")
+
+Id_MultiBlock1 = geompy.addToStudy(MultiBlock1, "MultiBlock1")
+Id_MultiBlock2 = geompy.addToStudy(MultiBlock2, "MultiBlock2")
+
+Id_Result      = geompy.addToStudy(Result, "Result")
+
+#-----------------------------------------------------------------------
+#Meshing
+my_hexa = smesh.Mesh(Result, "Sphere_Mesh")
+algo = my_hexa.Segment()
+algo.NumberOfSegments(NbSeg)
+my_hexa.Quadrangle()
+my_hexa.Hexahedron()
+isDone = my_hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_blocks.py b/test/SMESH_blocks.py
new file mode 100644 (file)
index 0000000..94638a0
--- /dev/null
@@ -0,0 +1,49 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+#  SMESH SMESH_SWIG : binding of C++ implementation with Python
+#  File   : SMESH_blocks.py
+#  Author : Julia DOROVSKIKH
+#  Module : SMESH
+#  $Header$
+#
+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 math
+
+import GEOM_Spanner
+
+isBlocksTest = 0 # False
+isMeshTest   = 1 # True
+
+GEOM_Spanner.MakeSpanner(geompy, math, isBlocksTest, isMeshTest, smesh)
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_box.py b/test/SMESH_box.py
new file mode 100644 (file)
index 0000000..c4651b1
--- /dev/null
@@ -0,0 +1,75 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+#==============================================================================
+#  Info.
+#  Bug (from script, bug)   : box.py, PAL5223
+#  Modified                 : 25/11/2004
+#  Author                   : Kovaltchuk Alexey
+#  Project                  : PAL/SALOME
+#==============================================================================
+# Salome geometry and meshing for a box
+#
+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()
+
+from salome import sg
+
+# Plate
+
+box    = geompy.MakeBox(0.,0.,0.,1.,1.,1.)
+boxId  = geompy.addToStudy(box,"box")
+
+# ---- SMESH
+
+# ---- init a Mesh
+
+box_mesh=smesh.Mesh(box, "box_mesh")
+
+# set Hypothesis and Algorithm
+
+alg1D = box_mesh.Segment()
+alg1D.SetName("algo1D")
+hypL1 = alg1D.LocalLength(0.25)
+smesh.SetName(hypL1, "LocalLength")
+    
+alg2D = box_mesh.Quadrangle()
+alg2D.SetName("algo2D")
+
+alg3D = box_mesh.Hexahedron()
+alg3D.SetName("algo3D")
+
+# compute mesh
+
+isDone = box_mesh.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+sg.updateObjBrowser()
diff --git a/test/SMESH_box2_tetra.py b/test/SMESH_box2_tetra.py
new file mode 100644 (file)
index 0000000..5defa59
--- /dev/null
@@ -0,0 +1,141 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# Tetrahedrization of the geometry union of 2 boxes having a face in common
+# Hypothesis and algorithms for the mesh generation are global
+#
+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()
+
+
+# ---- define 2 boxes box1 and box2
+
+box1 = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
+
+idbox1 = geompy.addToStudy(box1, "box1")
+
+print("Analysis of the geometry box1 :")
+subShellList = geompy.SubShapeAll(box1, geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(box1, geompy.ShapeType["EDGE"])
+
+print("number of Shells in box1 : ", len(subShellList))
+print("number of Faces  in box1 : ", len(subFaceList))
+print("number of Edges  in box1 : ", len(subEdgeList))
+
+box2 = geompy.MakeBox(100., 0., 0., 200., 200., 300.)
+
+idbox2 = geompy.addToStudy(box2, "box2")
+
+print("Analysis of the geometry box2 :")
+subShellList = geompy.SubShapeAll(box2, geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(box2, geompy.ShapeType["EDGE"])
+
+print("number of Shells in box2 : ", len(subShellList))
+print("number of Faces  in box2 : ", len(subFaceList))
+print("number of Edges  in box2 : ", len(subEdgeList))
+
+# append the tow boxes to make ine shel, referrencing only once
+# the internal interface
+
+shell = geompy.MakePartition([box1, box2])
+idshell = geompy.addToStudy(shell, "shell")
+
+print("Analysis of the geometry shell (union of box1 and box2) :")
+subShellList = geompy.SubShapeAll(shell, geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(shell, geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(shell, geompy.ShapeType["EDGE"])
+
+print("number of Shells in shell : ", len(subShellList))
+print("number of Faces  in shell : ", len(subFaceList))
+print("number of Edges  in shell : ", len(subEdgeList))
+
+
+### ---------------------------- SMESH --------------------------------------
+
+# ---- init a Mesh with the shell
+
+mesh = smesh.Mesh(shell, "MeshBox2")
+
+
+# ---- set Hypothesis and Algorithm
+
+print("-------------------------- NumberOfSegments")
+
+numberOfSegments = 10
+
+regular1D = mesh.Segment()
+hypNbSeg = regular1D.NumberOfSegments(numberOfSegments)
+print(hypNbSeg.GetName())
+print(hypNbSeg.GetId())
+print(hypNbSeg.GetNumberOfSegments())
+smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegments))
+
+print("-------------------------- MaxElementArea")
+
+maxElementArea = 500
+
+triangle = mesh.Triangle()
+hypArea = triangle.MaxElementArea(maxElementArea)
+print(hypArea.GetName())
+print(hypArea.GetId())
+print(hypArea.GetMaxElementArea())
+smesh.SetName(hypArea, "MaxElementArea_" + str(maxElementArea))
+
+print("-------------------------- MaxElementVolume")
+
+maxElementVolume = 500
+
+netgen3D = mesh.Tetrahedron(smeshBuilder.NETGEN)
+hypVolume = netgen3D.MaxElementVolume(maxElementVolume)
+print(hypVolume.GetName())
+print(hypVolume.GetId())
+print(hypVolume.GetMaxElementVolume())
+smesh.SetName(hypVolume, "MaxElementVolume_" + str(maxElementVolume))
+
+print("-------------------------- compute shell")
+ret = mesh.Compute()
+print(ret)
+if not ret:
+    raise Exception("Error when computing Mesh")
+
+log = mesh.GetLog(0) # no erase trace
+# for linelog in log:
+#     print(linelog)
+print("Information about the MeshBox2:")
+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())
+print("Number of tetrahedrons: ", mesh.NbTetras())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_box3_tetra.py b/test/SMESH_box3_tetra.py
new file mode 100644 (file)
index 0000000..b03ce3c
--- /dev/null
@@ -0,0 +1,151 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# Tetrahedrization of the geometry union of 3 boxes aligned where the middle
+# one has a race in common with the two others.
+# Hypothesis and algorithms for the mesh generation are global
+#
+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()
+
+# ---- define 3 boxes box1, box2 and box3
+
+box1 = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
+
+idbox1 = geompy.addToStudy(box1, "box1")
+
+print("Analysis of the geometry box1 :")
+subShellList = geompy.SubShapeAll(box1, geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(box1, geompy.ShapeType["EDGE"])
+
+print("number of Shells in box1 : ", len(subShellList))
+print("number of Faces  in box1 : ", len(subFaceList))
+print("number of Edges  in box1 : ", len(subEdgeList))
+
+box2 = geompy.MakeBox(100., 0., 0., 200., 200., 300.)
+
+idbox2 = geompy.addToStudy(box2, "box2")
+
+print("Analysis of the geometry box2 :")
+subShellList = geompy.SubShapeAll(box2, geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(box2, geompy.ShapeType["EDGE"])
+
+print("number of Shells in box2 : ", len(subShellList))
+print("number of Faces  in box2 : ", len(subFaceList))
+print("number of Edges  in box2 : ", len(subEdgeList))
+
+box3 = geompy.MakeBox(0., 0., 300., 200., 200., 500.)
+
+idbox3 = geompy.addToStudy(box3, "box3")
+
+print("Analysis of the geometry box3 :")
+subShellList = geompy.SubShapeAll(box3, geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(box3, geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(box3, geompy.ShapeType["EDGE"])
+
+print("number of Shells in box3 : ", len(subShellList))
+print("number of Faces  in box3 : ", len(subFaceList))
+print("number of Edges  in box3 : ", len(subEdgeList))
+
+shell = geompy.MakePartition([box1, box2, box3])
+idshell = geompy.addToStudy(shell,"shell")
+
+print("Analysis of the geometry shell (union of box1, box2 and box3) :")
+subShellList = geompy.SubShapeAll(shell, geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(shell, geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(shell, geompy.ShapeType["EDGE"])
+
+print("number of Shells in shell : ", len(subShellList))
+print("number of Faces  in shell : ", len(subFaceList))
+print("number of Edges  in shell : ", len(subEdgeList))
+
+
+### ---------------------------- SMESH --------------------------------------
+
+# ---- init a Mesh with the shell
+
+mesh = smesh.Mesh(shell, "MeshBox3")
+
+
+# ---- set Hypothesis and Algorithm
+
+print("-------------------------- NumberOfSegments")
+
+numberOfSegments = 10
+
+regular1D = mesh.Segment()
+hypNbSeg = regular1D.NumberOfSegments(numberOfSegments)
+print(hypNbSeg.GetName())
+print(hypNbSeg.GetId())
+print(hypNbSeg.GetNumberOfSegments())
+smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegments))
+
+print("-------------------------- MaxElementArea")
+
+maxElementArea = 500
+
+triangle = mesh.Triangle()
+hypArea = triangle.MaxElementArea(maxElementArea)
+print(hypArea.GetName())
+print(hypArea.GetId())
+print(hypArea.GetMaxElementArea())
+smesh.SetName(hypArea, "MaxElementArea_" + str(maxElementArea))
+
+print("-------------------------- MaxElementVolume")
+
+maxElementVolume = 500
+
+netgen3D = mesh.Tetrahedron(smeshBuilder.NETGEN)
+hypVolume = netgen3D.MaxElementVolume(maxElementVolume)
+print(hypVolume.GetName())
+print(hypVolume.GetId())
+print(hypVolume.GetMaxElementVolume())
+smesh.SetName(hypVolume, "MaxElementVolume_" + str(maxElementVolume))
+
+print("-------------------------- compute shell")
+ret = mesh.Compute()
+print(ret)
+if not ret:
+    raise Exception("Error when computing Mesh")
+
+log = mesh.GetLog(0) # no erase trace
+# for linelog in log:
+#     print(linelog)
+print("Information about the MeshBox3:")
+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())
+print("Number of tetrahedrons: ", mesh.NbTetras())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_box_tetra.py b/test/SMESH_box_tetra.py
new file mode 100644 (file)
index 0000000..f8289cd
--- /dev/null
@@ -0,0 +1,110 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# Tetrahedrization of a simple box. Hypothesis and algorithms for
+# the mesh generation are global
+#
+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()
+
+# ---- define a box
+
+box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
+
+idbox = geompy.addToStudy(box, "box")
+
+print("Analysis of the geometry box :")
+subShellList = geompy.SubShapeAll(box, geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(box, geompy.ShapeType["EDGE"])
+
+print("number of Shells in box : ", len(subShellList))
+print("number of Faces  in box : ", len(subFaceList))
+print("number of Edges  in box : ", len(subEdgeList))
+
+
+### ---------------------------- SMESH --------------------------------------
+
+# ---- init a Mesh with the box
+
+mesh = smesh.Mesh(box, "MeshBox")
+
+# ---- set Hypothesis and Algorithm
+
+print("-------------------------- NumberOfSegments")
+numberOfSegments = 10
+
+regular1D = mesh.Segment()
+hypNbSeg = regular1D.NumberOfSegments(numberOfSegments)
+print(hypNbSeg.GetName())
+print(hypNbSeg.GetId())
+print(hypNbSeg.GetNumberOfSegments())
+smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegments))
+
+print("-------------------------- MaxElementArea")
+
+maxElementArea = 500
+
+triangle = mesh.Triangle()
+hypArea = triangle.MaxElementArea(maxElementArea)
+print(hypArea.GetName())
+print(hypArea.GetId())
+print(hypArea.GetMaxElementArea())
+smesh.SetName(hypArea, "MaxElementArea_" + str(maxElementArea))
+
+print("-------------------------- MaxElementVolume")
+
+maxElementVolume = 500
+
+netgen3D = mesh.Tetrahedron(smeshBuilder.NETGEN)
+hypVolume = netgen3D.MaxElementVolume(maxElementVolume)
+print(hypVolume.GetName())
+print(hypVolume.GetId())
+print(hypVolume.GetMaxElementVolume())
+smesh.SetName(hypVolume, "MaxElementVolume_" + str(maxElementVolume))
+
+print("-------------------------- compute the mesh of the box")
+ret = mesh.Compute()
+print(ret)
+if not ret:
+    raise Exception("Error when computing Mesh")
+
+log = mesh.GetLog(0) # no erase trace
+# for linelog in log:
+#     print(linelog)
+print("Information about the MeshBox:")
+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())
+print("Number of tetrahedrons: ", mesh.NbTetras())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_controls.py b/test/SMESH_controls.py
new file mode 100644 (file)
index 0000000..a9a4f2b
--- /dev/null
@@ -0,0 +1,144 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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_control.py
+#  Author : Sergey LITONIN
+#  Module : SMESH
+#
+import salome
+import SMESH_mechanic
+
+import SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+smesh =  smeshBuilder.New()
+mesh = SMESH_mechanic.mesh
+
+# ---- Criterion : AREA > 100
+
+# create group
+aGroup = mesh.MakeGroup("Area > 100", SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 100)
+
+# print result
+anIds = aGroup.GetIDs()
+print("Criterion: Area > 100 Nb = ", len( anIds ))
+#for i in range( len( anIds ) ):
+  #print anIds[ i ]
+
+
+# ----  Criterion : Taper > 3e-15
+
+# create group
+aGroup = mesh.MakeGroup("Taper > 3e-15", SMESH.FACE, SMESH.FT_Taper, SMESH.FT_MoreThan, 3e-15)
+
+# print result
+anIds = aGroup.GetIDs()
+print("Criterion: Taper > 3e-15 Nb = ", len( anIds ))
+#for i in range( len( anIds ) ):
+  #print anIds[ i ]
+
+
+# ----  Criterion : ASPECT RATIO > 1.3
+
+# create group
+aGroup = mesh.MakeGroup("Aspect Ratio > 1.3", SMESH.FACE, SMESH.FT_AspectRatio, SMESH.FT_MoreThan, 1.3)
+
+# print result
+anIds = aGroup.GetIDs()
+print("Criterion: Aspect Ratio > 1.3 Nb = ", len( anIds ))
+#for i in range( len( anIds ) ):
+  #print anIds[ i ]
+
+
+# ----  Criterion : MINIMUM ANGLE < 30
+
+# create group
+aGroup = mesh.MakeGroup("Minimum Angle < 30", SMESH.FACE, SMESH.FT_MinimumAngle, SMESH.FT_LessThan, 30)
+
+# print result
+anIds = aGroup.GetIDs()
+print("Criterion: Minimum Angle < 30 Nb = ", len( anIds ))
+#for i in range( len( anIds ) ):
+  #print anIds[ i ]
+
+
+# ---- Criterion : Warp > 2e-13
+
+# create group
+aGroup = mesh.MakeGroup("Warp > 2e-13", SMESH.FACE, SMESH.FT_Warping, SMESH.FT_MoreThan, 2e-13 )
+
+# print result
+anIds = aGroup.GetIDs()
+print("Criterion: Warp > 2e-13 Nb = ", len( anIds ))
+#for i in range( len( anIds ) ):
+  #print anIds[ i ]
+
+
+# ---- Criterion : Skew > 18
+
+# create group
+aGroup = mesh.MakeGroup("Skew > 18", SMESH.FACE, SMESH.FT_Skew, SMESH.FT_MoreThan, 18 )
+
+# print result
+anIds = aGroup.GetIDs()
+print("Criterion: Skew > 18 Nb = ", len( anIds ))
+#for i in range( len( anIds ) ):
+  #print anIds[ i ]
+
+
+# Criterion : Length > 10
+
+# create group
+aGroup = mesh.MakeGroup("Length > 10", SMESH.FACE, SMESH.FT_Length, SMESH.FT_MoreThan, 10 )
+
+# print result
+anIds = aGroup.GetIDs()
+print("Criterion: Length > 10 Nb = ", len( anIds ))
+#for i in range( len( anIds ) ):
+  #print anIds[ i ]
+
+
+# Criterion : Borders at multi-connections = 2
+
+# create group
+aGroup = mesh.MakeGroup("Borders at multi-connections = 2", SMESH.EDGE, SMESH.FT_MultiConnection, SMESH.FT_EqualTo, 2)
+
+# print result
+anIds = aGroup.GetIDs()
+print("Criterion: Borders at multi-connections = 2 Nb = ", len( anIds ))
+#for i in range( len( anIds ) ):
+  #print anIds[ i ]
+
+
+# Criterion : Element Diameter 2D > 10
+
+# create group
+aGroup = mesh.MakeGroup("Element Diameter 2D > 10", SMESH.FACE, SMESH.FT_MaxElementLength2D, SMESH.FT_MoreThan, 10 )
+
+# print result
+anIds = aGroup.GetIDs()
+print("Criterion: Element Diameter 2D > 10 Nb = ", len( anIds ))
+#for i in range( len( anIds ) ):
+  #print anIds[ i ]
+
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_controls_3D_warping.py b/test/SMESH_controls_3D_warping.py
new file mode 100644 (file)
index 0000000..ce792d4
--- /dev/null
@@ -0,0 +1,177 @@
+#!/usr/bin/env python
+
+import os
+import sys
+import salome
+import tempfile
+
+salome.salome_init()
+
+
+def getTmpFileName(ext):
+  """
+  get a tmp file name
+  """
+  tempdir = tempfile.gettempdir()
+  tmp_file = tempfile.NamedTemporaryFile(suffix=".%s"%ext , dir=tempdir, delete=False)
+  tmp_filename = tmp_file.name
+  return tmp_filename
+
+###
+### SHAPER component
+###
+
+from salome.shaper import model
+
+model.begin()
+partSet = model.moduleDocument()
+Part_1 = model.addPart(partSet)
+Part_1_doc = Part_1.document()
+Cylinder_1 = model.addCylinder(Part_1_doc, model.selection("VERTEX", "PartSet/Origin"), model.selection("EDGE", "PartSet/OZ"), 1, 7)
+Point_2 = model.addPoint(Part_1_doc, 1, 0, 1.5)
+Point_3 = model.addPoint(Part_1_doc, 0.5, 0, 3.5)
+Sphere_1 = model.addSphere(Part_1_doc, model.selection("VERTEX", "Point_1"), 0.75)
+Cylinder_2 = model.addCylinder(Part_1_doc, model.selection("VERTEX", "Point_2"), model.selection("EDGE", "PartSet/OX"), 0.6, 3)
+Fuse_1_objects_1 = [model.selection("SOLID", "Cylinder_2_1"),
+                    model.selection("SOLID", "Cylinder_1_1"),
+                    model.selection("SOLID", "Sphere_1_1")]
+Fuse_1 = model.addFuse(Part_1_doc, Fuse_1_objects_1, keepSubResults = True)
+model.end()
+
+expected_volume = 25.881416712512
+model.testResultsVolumes(Fuse_1, [expected_volume])
+
+###
+### SHAPERSTUDY component
+###
+
+model.publishToShaperStudy()
+import SHAPERSTUDY
+Fuse_1_1, = SHAPERSTUDY.shape(model.featureStringId(Fuse_1))
+
+###
+### SMESH component
+###
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+# Surface Mesh
+# ============
+
+Mesh_1 = smesh.Mesh(Fuse_1_1, "Mesh_1")
+NETGEN_1D_2D = Mesh_1.Triangle(algo=smeshBuilder.NETGEN_1D2D)
+NETGEN_2D_Parameters_1 = NETGEN_1D_2D.Parameters()
+NETGEN_2D_Parameters_1.SetMaxSize( 0.75 )
+NETGEN_2D_Parameters_1.SetMinSize( 0 )
+NETGEN_2D_Parameters_1.SetSecondOrder( 0 )
+NETGEN_2D_Parameters_1.SetOptimize( 1 )
+NETGEN_2D_Parameters_1.SetFineness( 5 )
+NETGEN_2D_Parameters_1.SetGrowthRate( 0.1 )
+NETGEN_2D_Parameters_1.SetNbSegPerEdge( 2 )
+NETGEN_2D_Parameters_1.SetNbSegPerRadius( 4 )
+
+isDone = Mesh_1.Compute()
+
+if not isDone:
+  raise Exception("Error when computing the surface mesh")
+
+# MG-Hexa mesh
+# ============
+
+MG_Hexa = Mesh_1.Hexahedron(algo=smeshBuilder.MG_Hexa)
+isDone = Mesh_1.Compute()
+
+if not isDone:
+  raise Exception("Error when computing volumes with MG-Hexa")
+
+volume = smesh.GetVolume(Mesh_1)
+#print("volume: ", volume)
+assert abs(volume-expected_volume)/expected_volume < 0.03
+
+assert Mesh_1.NbTriangles() == 0
+
+nb_hexa = Mesh_1.NbHexas()
+assert Mesh_1.NbVolumes() == nb_hexa
+
+# MG-Hexa mesh with layers
+# ========================
+
+MG_Hexa_Parameters = MG_Hexa.Parameters()
+MG_Hexa_Parameters.SetNbLayers( 3 )
+MG_Hexa_Parameters.SetFirstLayerSize( 0.01 )
+MG_Hexa_Parameters.SetGrowth( 1.1 )
+MG_Hexa_Parameters.SetFacesWithLayers( [ 10, 3 ] )
+MG_Hexa_Parameters.SetImprintedFaces( [ 18, 20, 22 ] )
+
+isDone = Mesh_1.Compute()
+
+if not isDone:
+  raise Exception("Error when computing volumes with MG-Hexa and layers")
+
+nb_hexa_with_layers = Mesh_1.NbHexas()
+assert Mesh_1.NbVolumes() == nb_hexa_with_layers
+assert nb_hexa < nb_hexa_with_layers
+
+volume_with_layers = smesh.GetVolume(Mesh_1)
+#print("volume_with_layers: ", volume_with_layers)
+assert abs(volume_with_layers-expected_volume)/expected_volume < 0.05
+
+gr_small_volume = Mesh_1.MakeGroup("small_volumes_layers",
+                            SMESH.VOLUME,
+                            CritType=SMESH.FT_Volume3D,
+                            Compare=SMESH.FT_LessThan,
+                            Threshold=8e-5,
+                            Tolerance=1e-07)
+
+layers_volume = smesh.GetVolume(gr_small_volume)
+#print("layers_volume: ", layers_volume)
+assert layers_volume < 0.9
+
+# check max Warp3D
+max_warp3D = Mesh_1.GetMinMax(SMESH.FT_Warping3D)[1]
+print("max_warp3D: ", max_warp3D)
+# Check that some elements are warped
+assert max_warp3D > 1
+
+gr_warp3D = Mesh_1.MakeGroup("warp3D",
+                            SMESH.VOLUME,
+                            CritType=SMESH.FT_Warping3D,
+                            Compare=SMESH.FT_MoreThan,
+                            Threshold=1,
+                            Tolerance=1e-07)
+
+# Check the group has some elements
+assert gr_warp3D.Size() > 0
+
+# create a mesh with the faces of the hexaedra thanks to medcoupling
+umesh_3D = Mesh_1.ExportMEDCoupling()[0]
+# create faces
+umesh_2D,d0,d1,d2,d3=umesh_3D.buildDescendingConnectivity()
+
+# export the 2D mesh in a tmp file
+tmp_filename = getTmpFileName("med")
+umesh_2D.write(tmp_filename)
+
+# import it in SMESH
+([Mesh_faces], status) = smesh.CreateMeshesFromMED( tmp_filename )
+
+gr_warp2D = Mesh_faces.MakeGroup("warp2D",
+                            SMESH.FACE,
+                            CritType=SMESH.FT_Warping,
+                            Compare=SMESH.FT_MoreThan,
+                            Threshold=1,
+                            Tolerance=1e-07)
+
+# check max Warp3D
+max_warp2D = Mesh_faces.GetMinMax(SMESH.FT_Warping)[1]
+print("max_warp2D: ", max_warp2D)
+assert max_warp2D > 1
+
+assert abs(max_warp2D-max_warp3D)/max_warp2D < 1e-5
+
+os.remove(tmp_filename)
+
+if salome.sg.hasDesktop():
+  salome.sg.updateObjBrowser()
diff --git a/test/SMESH_controls_scaled_jacobian.py b/test/SMESH_controls_scaled_jacobian.py
new file mode 100644 (file)
index 0000000..d81cd38
--- /dev/null
@@ -0,0 +1,182 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2016-2024  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, 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_controls_scaled_jacobian.py
+#  Author : Cesar Conopoima
+#  Module : SMESH
+#
+import salome
+import math
+salome.salome_init_without_session()
+
+import GEOM
+import  SMESH
+from salome.geom import geomBuilder
+from salome.smesh import smeshBuilder
+
+def assertWithDelta( refval, testvals, delta ):
+  return ( refval <= testvals+delta and refval >= testvals-delta ) 
+
+geompy = geomBuilder.New()
+smesh_builder = smeshBuilder.New()
+
+Box_1 = geompy.MakeBoxDXDYDZ(10, 10, 10)
+geompy.addToStudy( Box_1, 'Box_1' )
+
+smesh = smeshBuilder.New()
+
+Mesh_1 = smesh.Mesh(Box_1,'Mesh_1')
+NETGEN_1D_2D_3D = Mesh_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)
+Done = Mesh_1.Compute()
+
+if not Done:
+  raise Exception("Error when computing NETGEN_1D2D3D Mesh for quality control test")
+
+#For tetra elements
+perfect   = 1.0
+externals = math.sqrt( 2.0 )/2.0
+notPerfectElements  = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_ScaledJacobian, SMESH.FT_LessThan, perfect - 1e-12 )
+perfectElements     = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_ScaledJacobian, SMESH.FT_EqualTo, perfect )
+externalElements    = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_ScaledJacobian, SMESH.FT_EqualTo, externals )
+
+notPerfectIds = Mesh_1.GetIdsFromFilter(notPerfectElements)
+perfectIds    = Mesh_1.GetIdsFromFilter(perfectElements)
+externalsIds  = Mesh_1.GetIdsFromFilter(externalElements)
+
+assert( len(notPerfectIds)  == 4 )
+assert( len(perfectIds)     == 1 )
+assert( len(externalsIds)   == 4 )
+
+# Test GetScaledJacobian by elementId
+for id in range(len(perfectIds)):
+  assert( assertWithDelta( perfect, Mesh_1.GetScaledJacobian( perfectIds[ id ] ), 1e-12) )
+
+for id in range(len(externalsIds)):
+  assert( assertWithDelta( externals, Mesh_1.GetScaledJacobian( externalsIds[ id ] ), 1e-12) )
+
+#For hexa elements
+Mesh_2 = smesh.Mesh(Box_1,'Mesh_2')
+Cartesian_3D = Mesh_2.BodyFitted()
+Body_Fitting_Parameters_1 = Cartesian_3D.SetGrid([ [ '5.0' ], [ 0, 1 ]],[ [ '5.0' ], [ 0, 1 ]],[ [ '5.0' ], [ 0, 1 ]],4,0)
+Done = Mesh_2.Compute()
+
+if not Done:
+  raise Exception("Error when computing BodyFitted Mesh for quality control test")
+
+notPerfectIds = Mesh_2.GetIdsFromFilter(notPerfectElements)
+perfectIds    = Mesh_2.GetIdsFromFilter(perfectElements)
+
+assert( len(notPerfectIds)  == 0 )
+assert( len(perfectIds)     == 8 )
+
+# Test GetScaledJacobian by elementId
+for id in range(len(perfectIds)):
+  assert( assertWithDelta( perfect, Mesh_2.GetScaledJacobian( perfectIds[ id ] ), 1e-12) )
+
+#For hexa elements with poor quality
+Mesh_3 = smesh.Mesh(Box_1,'Mesh_3')
+Cartesian_3D = Mesh_3.BodyFitted()
+Body_Fitting_Parameters_1 = Cartesian_3D.SetGrid([ [ '5.0' ], [ 0, 1 ]],[ [ '5.0' ], [ 0, 1 ]],[ [ '5.0' ], [ 0, 1 ]],4,0)
+Body_Fitting_Parameters_1.SetAxesDirs( SMESH.DirStruct( SMESH.PointStruct ( 1, 0, 1 )), SMESH.DirStruct( SMESH.PointStruct ( 0, 1, 0 )), SMESH.DirStruct( SMESH.PointStruct ( 0, 0, 1 )) )
+Done = Mesh_3.Compute()
+
+if not Done:
+  raise Exception("Error when computing BodyFitted Distorted Mesh for quality control test")
+
+#Polyhedrons return zero scaled jacobian because of lack for a decomposition into simpler forms
+Polys   = 0.0
+#Hexahedrons that are distorted by an angle of 45 
+# Scaled Jacobian which is a measure of elements distortion 
+# will return cos(45) = math.sqrt( 2.0 )/2.0 
+distorted = math.sqrt( 2.0 )/2.0 
+polysElements     = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_ScaledJacobian, SMESH.FT_EqualTo, Polys )
+distortedElements = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_ScaledJacobian, SMESH.FT_EqualTo, distorted )
+
+polysIds        = Mesh_3.GetIdsFromFilter(polysElements)
+distortedIds    = Mesh_3.GetIdsFromFilter(distortedElements)
+
+assert( len(polysIds)     == 4 )
+assert( len(distortedIds) == 8 )
+
+# Test GetScaledJacobian by elementId
+for id in range(len(distortedIds)):
+  assert( assertWithDelta( distorted, Mesh_3.GetScaledJacobian( distortedIds[ id ] ), 1e-12 ) )
+
+#Test the pentahedron
+Mesh_4 = smesh.Mesh(Box_1,'Mesh_4')
+Cartesian_3D = Mesh_4.BodyFitted()
+Body_Fitting_Parameters_1 = Cartesian_3D.SetGrid([ [ '4' ], [ 0, 1 ]],[ [ '4' ], [ 0, 1 ]],[ [ '4' ], [ 0, 1 ]],4,0)
+Body_Fitting_Parameters_1.SetAxesDirs( SMESH.DirStruct( SMESH.PointStruct ( 1, 0, 1 )), SMESH.DirStruct( SMESH.PointStruct ( 0, 1, 0 )), SMESH.DirStruct( SMESH.PointStruct ( 0, 0, 1 )) )
+Body_Fitting_Parameters_1.SetSizeThreshold( 4 )
+Body_Fitting_Parameters_1.SetToAddEdges( 0 )
+Body_Fitting_Parameters_1.SetGridSpacing( [ '2' ], [ 0, 1 ], 0 )
+Body_Fitting_Parameters_1.SetGridSpacing( [ '2' ], [ 0, 1 ], 1 )
+Body_Fitting_Parameters_1.SetGridSpacing( [ '2' ], [ 0, 1 ], 2 )
+Done = Mesh_4.Compute()
+
+if not Done:
+  raise Exception("Error when computing BodyFitted Distorted Mesh for quality control test")
+
+pentahedrons = 0.6
+pentasAndPolys     = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_ScaledJacobian, SMESH.FT_LessThan, pentahedrons )
+
+polysIds          = Mesh_4.GetIdsFromFilter(polysElements)
+pentasAndPolysIds = Mesh_4.GetIdsFromFilter(pentasAndPolys)
+
+assert( len(pentasAndPolysIds) - len(polysIds) == 10 )
+
+#Test distorded hexahedrons scaled jacobian values
+Mesh_5 = smesh.Mesh(Box_1,'Mesh_5')
+Regular_1D = Mesh_5.Segment()
+Number_of_Segments_1 = Regular_1D.NumberOfSegments(2)
+Quadrangle_2D = Mesh_5.Quadrangle(algo=smeshBuilder.QUADRANGLE)
+Hexa_3D = Mesh_5.Hexahedron(algo=smeshBuilder.Hexa)
+isDone = Mesh_5.Compute()
+
+if not Done:
+  raise Exception("Error when computing hexaedrons Mesh for quality control test")
+
+#move some nodes to make scaled jacobian lesser than 1
+node_id_1 = Mesh_5.FindNodeClosestTo(0, 0, 10)
+node_id_5 = Mesh_5.FindNodeClosestTo(10, 0, 10)
+node_id_14 = Mesh_5.FindNodeClosestTo(10, 5, 10)
+node_id_13 = Mesh_5.FindNodeClosestTo(10, 0, 5)
+node_id_6 = Mesh_5.FindNodeClosestTo(10, 0, 0)
+Mesh_5.MoveNode( node_id_1, 1, 1, 9 )
+Mesh_5.MoveNode( node_id_5, 9, 1, 9 )
+Mesh_5.MoveNode( node_id_14, 10, 5, 9 )
+Mesh_5.MoveNode( node_id_13, 9, 0, 5 )
+Mesh_5.MoveNode( node_id_6, 8, 0, 0 )
+
+yellow_element = Mesh_5.FindElementsByPoint(7.5, 2.5, 2.5)[0]
+green_element = Mesh_5.FindElementsByPoint(7.5, 2.5, 7.5)[0]
+blue_element = Mesh_5.FindElementsByPoint(2.5, 2.5, 7.5)[0]
+
+yellow_SJ = Mesh_5.GetScaledJacobian(yellow_element)
+green_SJ = Mesh_5.GetScaledJacobian(green_element)
+blue_SJ = Mesh_5.GetScaledJacobian(blue_element)
+
+yellow_SJ_ref = 0.910446300912
+green_SJ_ref = 0.818025491961
+blue_SJ_ref = 0.654728501099
+
+assert assertWithDelta( yellow_SJ_ref, yellow_SJ, 1e-10 )
+assert assertWithDelta( green_SJ_ref, green_SJ, 1e-10 )
+assert assertWithDelta( blue_SJ_ref, blue_SJ, 1e-10 )
diff --git a/test/SMESH_create_dual_mesh_adapt.py b/test/SMESH_create_dual_mesh_adapt.py
new file mode 100644 (file)
index 0000000..9b82dec
--- /dev/null
@@ -0,0 +1,99 @@
+#!/usr/bin/env python
+
+###
+### This file is generated automatically by SALOME v9.9.0 with dump python functionality
+###
+
+import sys
+import salome
+
+salome.salome_init()
+import salome_notebook
+notebook = salome_notebook.NoteBook()
+sys.path.insert(0, r'/home/B61570/work_in_progress/dual_mesh')
+
+###
+### GEOM component
+###
+
+import GEOM
+from salome.geom import geomBuilder
+import math
+import SALOMEDS
+
+
+geompy = geomBuilder.New()
+
+O = geompy.MakeVertex(0, 0, 0)
+OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
+OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
+OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
+Cylinder_1 = geompy.MakeCylinderRH(100, 400)
+Sphere_1 = geompy.MakeSpherePntR(O, 100)
+Fuse_1 = geompy.MakeFuseList([Cylinder_1, Sphere_1], True, True)
+
+[geomObj_1,geomObj_2,geomObj_3] = geompy.ExtractShapes(Fuse_1, geompy.ShapeType["FACE"], True)
+
+top = geompy.CreateGroup(Fuse_1, geompy.ShapeType["FACE"])
+geompy.UnionIDs(top, geomObj_1.GetSubShapeIndices())
+
+middle = geompy.CreateGroup(Fuse_1, geompy.ShapeType["FACE"])
+geompy.UnionIDs(middle, geomObj_2.GetSubShapeIndices())
+
+bottom = geompy.CreateGroup(Fuse_1, geompy.ShapeType["FACE"])
+geompy.UnionIDs(bottom, geomObj_3.GetSubShapeIndices())
+
+#[top, middle, bottom] = geompy.GetExistingSubObjects(Fuse_1, False)
+
+geompy.addToStudy( O, 'O' )
+geompy.addToStudy( OX, 'OX' )
+geompy.addToStudy( OY, 'OY' )
+geompy.addToStudy( OZ, 'OZ' )
+geompy.addToStudy( Cylinder_1, 'Cylinder_1' )
+geompy.addToStudy( Sphere_1, 'Sphere_1' )
+geompy.addToStudy( Fuse_1, 'Fuse_1' )
+geompy.addToStudyInFather( Fuse_1, top, 'top' )
+geompy.addToStudyInFather( Fuse_1, middle, 'middle' )
+geompy.addToStudyInFather( Fuse_1, bottom, 'bottom' )
+
+###
+### SMESH component
+###
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+
+NETGEN_3D_Parameters_1 = smesh.CreateHypothesisByAverageLength( 'NETGEN_Parameters', 'NETGENEngine', 50, 0 )
+Mesh_1 = smesh.Mesh(Fuse_1,'Mesh_1')
+status = Mesh_1.AddHypothesis( Fuse_1, NETGEN_3D_Parameters_1 )
+NETGEN_1D_2D_3D = Mesh_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)
+top_1 = Mesh_1.GroupOnGeom(top,'top',SMESH.FACE)
+middle_1 = Mesh_1.GroupOnGeom(middle,'middle',SMESH.FACE)
+bottom_1 = Mesh_1.GroupOnGeom(bottom,'bottom',SMESH.FACE)
+isDone = Mesh_1.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+[ top_1, middle_1, bottom_1 ] = Mesh_1.GetGroups()
+
+
+dual_Mesh_raw_1 = smesh.CreateDualMesh(Mesh_1, 'dual_Mesh_raw_1', False)
+dual_Mesh_1 = smesh.CreateDualMesh(Mesh_1, 'dual_Mesh_1', True)
+
+[ top_2, middle_2, bottom_2 ] = dual_Mesh_1.GetGroups()
+
+#Comparing volumes
+dual_volume = dual_Mesh_1.GetVolume()
+dual_raw_volume = dual_Mesh_raw_1.GetVolume()
+tetra_volume = Mesh_1.GetVolume()
+print("tetra_volume: ", tetra_volume)
+print("dual_volume: ", dual_volume)
+print("dual_raw_volume: ", dual_raw_volume)
+
+assert (dual_volume >= dual_raw_volume)
+assert abs( tetra_volume - dual_raw_volume )/tetra_volume < 1e-12
+
+if salome.sg.hasDesktop():
+  salome.sg.updateObjBrowser()
diff --git a/test/SMESH_create_dual_mesh_tpipe.py b/test/SMESH_create_dual_mesh_tpipe.py
new file mode 100644 (file)
index 0000000..c1aa3c5
--- /dev/null
@@ -0,0 +1,160 @@
+#!/usr/bin/env python3
+
+import sys
+import salome
+import math
+
+salome.salome_init()
+
+import GEOM
+from salome.geom import geomBuilder
+
+geompy = geomBuilder.New()
+
+# first cylinder
+r1 = 0.5
+h1 = 5
+
+# second cylinder
+r2 = 0.3
+h2 = 3
+
+length_piquage = 1.5
+
+O = geompy.MakeVertex(0, 0, 0)
+OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
+OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
+OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
+geompy.addToStudy( O, 'O' )
+geompy.addToStudy( OX, 'OX' )
+geompy.addToStudy( OY, 'OY' )
+geompy.addToStudy( OZ, 'OZ' )
+
+Cylinder_1 = geompy.MakeCylinderRH(r1, h1)
+Cylinder_2 = geompy.MakeCylinderRH(r2, h2)
+Rotation_1 = geompy.MakeRotation(Cylinder_2, OY, -90*math.pi/180.0)
+Translation_1 = geompy.MakeTranslation(Rotation_1, 0, 0, length_piquage)
+
+tpipe = geompy.MakeFuseList([Cylinder_1, Translation_1], True, True)
+geompy.addToStudy( tpipe, 'tpipe' )
+
+Inlet_z = geompy.GetFaceNearPoint(tpipe, O)
+geompy.addToStudyInFather( tpipe, Inlet_z, 'Inlet_z' )
+
+p_inlet_x = geompy.MakeVertex(-h2, 0, length_piquage)
+Inlet_x = geompy.GetFaceNearPoint(tpipe, p_inlet_x)
+geompy.addToStudyInFather( tpipe, Inlet_x, 'Inlet_x' )
+
+p_outlet = geompy.MakeVertex(0, 0, h1)
+Outlet = geompy.GetFaceNearPoint(tpipe, p_outlet)
+geompy.addToStudyInFather( tpipe, Outlet, 'Outlet' )
+
+Wall = geompy.CreateGroup(tpipe, geompy.ShapeType["FACE"])
+faces = geompy.SubShapeAll(tpipe, geompy.ShapeType["FACE"])
+geompy.UnionList(Wall, faces)
+geompy.DifferenceList(Wall, [Inlet_x, Inlet_z, Outlet])
+geompy.addToStudyInFather( tpipe, Wall, 'Wall' )
+
+p_corner = geompy.MakeVertex(-r2, 0, length_piquage+r2)
+corner = geompy.GetVertexNearPoint(tpipe, p_corner)
+geompy.addToStudyInFather( tpipe, corner, 'corner' )
+
+geom_groups = [Inlet_x, Inlet_z, Outlet, Wall]
+
+volumeGEOM = geompy.BasicProperties(tpipe)[2]
+
+###
+### SMESH component
+###
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+from salome.StdMeshers import StdMeshersBuilder
+
+smesh = smeshBuilder.New()
+
+# Coarse mesh with default hypothesis
+Mesh_1 = smesh.Mesh(tpipe, "Mesh_coarse")
+
+Mesh_1.Triangle(algo=smeshBuilder.NETGEN_1D2D)
+
+algo3d = Mesh_1.Tetrahedron(algo=smeshBuilder.NETGEN_3D)
+algo3d.MaxElementVolume(0.0002)
+
+isDone = Mesh_1.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Create groups
+d_geom_groups = {}
+d_mesh_groups = {}
+for geom_group in geom_groups:
+  gr = Mesh_1.Group(geom_group)
+  gr_name = gr.GetName()
+  d_mesh_groups[gr_name] = gr
+  d_geom_groups[gr_name] = geom_group
+
+# Check tetra mesh volume
+tetra_volume = smesh.GetVolume(Mesh_1)
+shape_volume = geompy.BasicProperties(tpipe)[2]
+assert abs(tetra_volume-shape_volume)/shape_volume < 0.05
+
+dual_Mesh_raw_1 = smesh.CreateDualMesh(Mesh_1, 'dual_Mesh_raw_1', False)
+
+# check polyhedrons
+assert dual_Mesh_raw_1.NbPolyhedrons() > 0
+assert dual_Mesh_raw_1.NbPolyhedrons() == dual_Mesh_raw_1.NbVolumes()
+
+# Check dual mesh volume
+dual_raw_volume = dual_Mesh_raw_1.GetVolume()
+assert abs(dual_raw_volume-shape_volume)/shape_volume < 0.14
+
+# Check groups
+dual_Mesh_raw_groups = dual_Mesh_raw_1.GetGroups()
+dual_Mesh_raw_group_names = dual_Mesh_raw_1.GetGroupNames()
+
+assert len(dual_Mesh_raw_groups) == 4
+
+## Create dual mesh with projection on faces
+dual_Mesh_1 = smesh.CreateDualMesh(Mesh_1, 'dual_Mesh_1', True)
+
+# Check dual mesh volume
+dual_volume = dual_Mesh_1.GetVolume()
+print("shape_volume: ", shape_volume)
+print("tetra_volume: ", tetra_volume)
+print("dual_volume: ", dual_volume)
+print("dual_raw_volume: ", dual_raw_volume)
+assert (dual_volume >= dual_raw_volume)
+
+assert abs(dual_volume-shape_volume)/shape_volume < 0.14
+assert abs(dual_raw_volume-tetra_volume)/tetra_volume < 1e-12
+
+# Check groups
+dual_Mesh_groups = dual_Mesh_1.GetGroups()
+dual_Mesh_group_names = dual_Mesh_1.GetGroupNames()
+d_mesh_dual_groups = {}
+for gr_name, gr in zip(dual_Mesh_group_names, dual_Mesh_groups):
+    gr_name = gr_name.strip()
+    d_mesh_dual_groups[gr_name] = gr
+
+for gr_dual_raw, gr_name in zip(dual_Mesh_raw_groups, dual_Mesh_raw_group_names):
+  gr_name = gr_name.strip()
+  gr_tri = d_mesh_groups[gr_name]
+  gr_dual = d_mesh_dual_groups[gr_name]
+  gr_geom = d_geom_groups[gr_name]
+  area_gr_geom = geompy.BasicProperties(gr_geom)[1]
+  area_gr_tri = smesh.GetArea(gr_tri)
+  area_gr_dual_raw = smesh.GetArea(gr_dual_raw)
+  area_gr_dual = smesh.GetArea(gr_dual)
+  print(gr_name)
+  print("Area geom: ", area_gr_geom)
+  print("Area tri: ", area_gr_tri)
+  print("Area dual raw:", area_gr_dual_raw)
+  print("Area dual:", area_gr_dual)
+  assert abs(area_gr_geom-area_gr_dual)/area_gr_geom < 0.015
+  assert abs(area_gr_tri-area_gr_dual_raw)/area_gr_tri < 1e-3
+
+
+if salome.sg.hasDesktop():
+  salome.sg.updateObjBrowser()
diff --git a/test/SMESH_demo_hexa2_upd.py b/test/SMESH_demo_hexa2_upd.py
new file mode 100644 (file)
index 0000000..599ad5f
--- /dev/null
@@ -0,0 +1,199 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+#==============================================================================
+#  Info.
+#  Bug (from script, bug)   : SMESH_demo_hexa2_upd.py, PAL6781
+#  Modified                 : 25/11/2004
+#  Author                   : Kovaltchuk Alexey
+#  Project                  : PAL/SALOME
+#==============================================================================
+# Tetrahedrization of a geometry (box minus a inner cylinder).
+# Hypothesis and algorithms for the mesh generation are not global:
+# the mesh of some edges is thinner
+#
+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 math
+
+
+# -----------------------------------------------------------------------------
+
+ShapeTypeShell     = 3
+ShapeTypeFace      = 4
+ShapeTypeEdge      = 6
+
+a = math.sqrt(2.)/4.
+ma = - a
+zero = 0.
+un = 1.
+mun= - un
+demi = 1./2.
+
+Orig = geompy.MakeVertex(zero,zero,zero)
+P0 = geompy.MakeVertex(a,a,zero)
+P1 = geompy.MakeVertex(zero,demi,zero)
+P2 = geompy.MakeVertex(ma,a,zero)
+P3 = geompy.MakeVertex(mun,un,zero)
+P4 = geompy.MakeVertex(un,un,zero)
+P5 = geompy.MakeVertex(zero,zero,un)
+
+arc = geompy.MakeArc(P0,P1,P2)
+e1 = geompy.MakeEdge(P2,P3)
+e2 = geompy.MakeEdge(P3,P4)
+e3 = geompy.MakeEdge(P4,P0)
+
+list = []
+list.append(arc)
+list.append(e1)
+list.append(e2)
+list.append(e3)
+
+wire = geompy.MakeWire(list)
+face = geompy.MakeFace(wire,1)
+
+dir = geompy.MakeVector(Orig,P5)
+vol1 = geompy.MakePipe(face,dir)
+
+angle = math.pi/2.
+#dir = geom.MakeVector(Orig,P5)
+vol2 = geompy.MakeRotation(vol1,dir,angle)
+
+vol3 = geompy.MakeRotation(vol2,dir,angle)
+
+vol4 = geompy.MakeRotation(vol3,dir,angle)
+
+list = []
+list.append(vol1)
+list.append(vol2)
+list.append(vol3)
+list.append(vol4)
+
+volComp = geompy.MakeCompound(list)
+
+tol3d = 1.e-3
+vol = geompy.MakeGlueFaces(volComp,tol3d)
+idVol = geompy.addToStudy(vol,"volume")
+
+print("Analysis of the final volume:")
+subShellList = geompy.SubShapeAllSorted(vol,ShapeTypeShell)
+subFaceList = geompy.SubShapeAllSorted(vol,ShapeTypeFace)
+subEdgeList = geompy.SubShapeAllSorted(vol,ShapeTypeEdge)
+
+print("number of Shells in the volume : ",len(subShellList))
+print("number of Faces in the volume : ",len(subFaceList))
+print("number of Edges in the volume : ",len(subEdgeList))
+
+idSubEdge = []
+for k in range(len(subEdgeList)):
+    idSubEdge.append(geompy.addToStudyInFather(vol,subEdgeList[k],"SubEdge"+str(k)))
+
+edgeZ = []
+edgeZ.append(subEdgeList[0])
+edgeZ.append(subEdgeList[3])
+edgeZ.append(subEdgeList[10])
+edgeZ.append(subEdgeList[11])
+edgeZ.append(subEdgeList[20])
+edgeZ.append(subEdgeList[21])
+edgeZ.append(subEdgeList[28])
+edgeZ.append(subEdgeList[31])
+
+idEdgeZ = []
+for i in range(8):
+    idEdgeZ.append(geompy.addToStudyInFather(vol,edgeZ[i],"EdgeZ"+str(i+1)))
+
+### ---------------------------- SMESH --------------------------------------
+smesh.UpdateStudy()
+
+# ---- init a Mesh with the volume
+
+mesh = smesh.Mesh(vol, "meshVolume")
+
+# ---- set Hypothesis and Algorithm to main shape
+
+print("-------------------------- NumberOfSegments the global one")
+
+numberOfSegments = 10
+
+regular1D = mesh.Segment()
+regular1D.SetName("Wire Discretisation")
+hypNbSeg = regular1D.NumberOfSegments(numberOfSegments)
+print(hypNbSeg.GetName())
+print(hypNbSeg.GetId())
+print(hypNbSeg.GetNumberOfSegments())
+smesh.SetName(hypNbSeg, "NumberOfSegments")
+
+
+print("-------------------------- Quadrangle_2D")
+
+quad2D=mesh.Quadrangle()
+quad2D.SetName("Quadrangle_2D")
+
+print("-------------------------- Hexa_3D")
+
+hexa3D=mesh.Hexahedron()
+hexa3D.SetName("Hexa_3D")
+
+
+print("-------------------------- NumberOfSegments in the Z direction")
+
+numberOfSegmentsZ = 40
+
+for i in range(8):
+    print("-------------------------- add hypothesis to edge in the Z directions", (i+1))
+
+    algo = mesh.Segment(edgeZ[i])
+    hyp = algo.NumberOfSegments(numberOfSegmentsZ)
+    smesh.SetName(hyp, "NumberOfSegmentsZ")
+    smesh.SetName(algo.GetSubMesh(), "SubMeshEdgeZ_"+str(i+1))
+  
+
+salome.sg.updateObjBrowser()
+
+print("-------------------------- compute the mesh of the volume")
+
+ret = mesh.Compute()
+print(ret)
+if not ret:
+    raise Exception("Error when computing Mesh")
+
+##log=mesh.GetLog(0) # no erase trace
+##for linelog in log:
+##    print linelog
+print("Information about the MeshBox :")
+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())
+print("Number of tetrahedrons: ", mesh.NbTetras())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_fixation.py b/test/SMESH_fixation.py
new file mode 100644 (file)
index 0000000..99b9874
--- /dev/null
@@ -0,0 +1,300 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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_fix_volute.py
+#  Author : Paul RASCLE, EDF
+#  Module : SMESH
+#  $Header$
+#
+import salome
+salome.salome_init()
+import GEOM
+from salome.geom import geomBuilder
+geompy = geomBuilder.New()
+
+import math
+
+# -----------------------------------------------------------------------------
+
+def MakeFace(lstEdges) :
+    """
+    Create a planar face from 4 edges
+    """
+    wire = geompy.MakeWire(lstEdges)
+    face = geompy.MakeFace(wire, 1)
+    return face
+
+# -----------------------------------------------------------------------------
+
+# ---- dimensions
+
+##longueurPlq  = 0.686
+##largeurPlq   = 0.573
+##epaisseurPlq = 0.150
+
+##hauteurFlanc   = 0.380
+##epaisseurFlanc = 0.112
+##rayonConge   = 0.150 - epaisseurFlanc
+
+##epaisseurFond = 0.162
+##rayonTrou = 0.075
+##posAxeTrou = hauteurFlanc -(0.180 + rayonTrou)
+##marge = 0.01
+##tol3d = 1.e-5
+
+longueurPlq  = 686
+largeurPlq   = 573
+epaisseurPlq = 150
+
+hauteurFlanc   = 380
+epaisseurFlanc = 112
+rayonConge   = 150 - epaisseurFlanc
+
+epaisseurFond = 162
+rayonTrou = 75
+posAxeTrou = hauteurFlanc - (180 + rayonTrou)
+marge = 10
+tol3d = 1.e-3
+
+# ---- points, directions de base
+
+p0 = geompy.MakeVertex(0., 0., 0.)
+
+vx = geompy.MakeVectorDXDYDZ(100., 0., 0.)
+vy = geompy.MakeVectorDXDYDZ(0., 100., 0.)
+vz = geompy.MakeVectorDXDYDZ(0., 0., 100.)
+
+# ---- ellipse du flanc
+
+he = hauteurFlanc - 2*rayonConge
+re = 0.5*(largeurPlq - epaisseurFond) - rayonConge
+sine = re/he
+cose = math.sqrt(1. - sine*sine)
+
+ve = geompy.MakeVectorDXDYDZ(sine, 0., cose)
+cyl0 = geompy.MakeCylinder(p0, ve, re, 2*he)
+cyl1 = geompy.MakeRotation(cyl0, ve, 0.5)
+cyle = geompy.MakeTranslation(cyl1, -marge*sine, 0., -marge*cose)
+
+pbe = geompy.MakeVertex(3*he, -2*re, 3*he)
+boxe = geompy.MakeBoxTwoPnt(p0, pbe)
+
+cylcoup = geompy.MakeBoolean(cyle, boxe, 2)
+
+aretes = []
+aretes = geompy.SubShapeAllSorted(cylcoup, geompy.ShapeType["EDGE"])
+
+shape = geompy.MakeCopy(aretes[0])
+aShape = geompy.MakeTranslation(shape, 0., rayonConge + re, epaisseurPlq + 2*rayonConge)
+
+
+# -----------------------------------------------------------------------------
+# ---- decoupage de la piece en volumes a 6 faces de 4 cotes
+# -----------------------------------------------------------------------------
+
+# ---- cotes x
+
+x0  = 0.
+x0h = rayonConge
+x1  = rayonConge + epaisseurFlanc
+xc  = longueurPlq/2
+x2  = longueurPlq - rayonConge - epaisseurFlanc
+x3h = longueurPlq - rayonConge
+x3  = longueurPlq
+
+# ---- cotes y
+
+y0  = 0.
+y0h = rayonConge
+y1  = largeurPlq - epaisseurFond
+y1m = y1 - marge
+y2  = largeurPlq
+y2p = largeurPlq + marge
+
+# ---- cotes z
+
+z0  = 0.
+z1m = epaisseurPlq - marge
+z1  = epaisseurPlq
+z2  = epaisseurPlq + rayonConge
+z3  = epaisseurPlq + 2*rayonConge
+z4  = epaisseurPlq + hauteurFlanc
+z4p = epaisseurPlq + hauteurFlanc + marge
+
+zc  = epaisseurPlq + posAxeTrou
+zc2 = epaisseurPlq + (posAxeTrou - rayonTrou)/3
+zc3 = epaisseurPlq + 2*(posAxeTrou - rayonTrou)/3
+
+# ---- decoupe du fond
+
+p11 = geompy.MakeVertex(x1, y1m, z1)
+p12 = geompy.MakeVertex(x1, y1m, z2)
+p13 = geompy.MakeVertex(x1, y1m, z3)
+p14 = geompy.MakeVertex(x1, y1m, z4)
+pc1 = geompy.MakeVertex(xc, y1m, z1)
+pc2 = geompy.MakeVertex(xc, y1m, zc2)
+pc3 = geompy.MakeVertex(xc, y1m, zc3)
+pcc = geompy.MakeVertex(xc, y1m, zc)
+pc4 = geompy.MakeVertex(xc, y1m, z4)
+p21 = geompy.MakeVertex(x2, y1m, z1)
+p22 = geompy.MakeVertex(x2, y1m, z2)
+p23 = geompy.MakeVertex(x2, y1m, z3)
+p24 = geompy.MakeVertex(x2, y1m, z4)
+pcf = geompy.MakeVertex(xc, y2p, zc)
+
+arc2 = geompy.MakeArc(p12,pc2,p22)
+arc3 = geompy.MakeArc(p13,pc3,p23)
+
+segz1  = geompy.MakeVector(p11,p21)
+segz41 = geompy.MakeVector(p14,pc4)
+segz42 = geompy.MakeVector(pc4,p24)
+segx11 = geompy.MakeVector(p11,p12)
+segx12 = geompy.MakeVector(p12,p13)
+segx13 = geompy.MakeVector(p13,p14)
+segxc2 = geompy.MakeVector(pc1,pc2)
+segxc3 = geompy.MakeVector(pc2,pc3)
+segxc4 = geompy.MakeVector(pcc,pc4)
+segx21 = geompy.MakeVector(p21,p22)
+segx22 = geompy.MakeVector(p22,p23)
+segx23 = geompy.MakeVector(p23,p24)
+segx1c1 = geompy.MakeVector(p13,pcc)
+segx1c2 = geompy.MakeVector(p14,pcc)
+segx2c1 = geompy.MakeVector(p23,pcc)
+segx2c2 = geompy.MakeVector(p24,pcc)
+
+facef = []
+facef.append(MakeFace([segx13,segx1c2,segx1c1]))
+facef.append(MakeFace([segx23,segx2c2,segx2c1]))
+facef.append(MakeFace([segx2c2,segxc4,segz42]))
+facef.append(MakeFace([segx1c2,segz41,segxc4]))
+facef.append(MakeFace([segx1c1,arc3,segx2c1]))
+facef.append(MakeFace([segx12,arc2,segx22,arc3]))
+facef.append(MakeFace([segx11,segz1,segx21,arc2]))
+
+vcccf = geompy.MakeVector(pcc, pcf)
+hcccf = y2p - y1m
+decf = []
+for face in facef:
+    decf.append(geompy.MakePrismVecH(face,vcccf,hcccf))
+
+pc  = geompy.MakeVertex(xc, 0., zc)
+py2 = geompy.MakeVertex(xc, y2, zc)
+axeCyl = geompy.MakeVector(pc, py2)
+
+cylFond = geompy.MakeCylinder(pc, vy, rayonTrou, 1.1*largeurPlq)
+cylFond2 = geompy.MakeRotation(cylFond, axeCyl, math.pi)
+
+fondec = []
+for id in (0,1,2,3):
+    fondec.append(geompy.MakeBoolean(decf[id], cylFond2, 2))
+fondec.append(geompy.MakeBoolean(decf[4], cylFond, 2))
+for id in (5,6):
+    fondec.append(decf[id])
+
+p_xcy2pz4p = geompy.MakeVertex(xc,y2p,z4p)
+p_x3y2pz4p = geompy.MakeVertex(x3,y2p,z4p)
+pxc = geompy.MakeVertex(xc,y0,z0)
+bcut1 = geompy.MakeBoxTwoPnt(p0, p_xcy2pz4p)
+bcut2 = geompy.MakeBoxTwoPnt(pxc, p_x3y2pz4p)
+
+fondec2 = []
+for id in (0,1,2,3):
+    fondec2.append(fondec[id])
+for id in (4,5,6):
+    fondec2.append(geompy.MakeBoolean(fondec[id], bcut1, 1))
+    fondec2.append(geompy.MakeBoolean(fondec[id], bcut2, 1))
+
+# ----- autres blocs de decoupe
+
+bcong1 = geompy.MakeBox(x0,y0,z1, x1,y1,z2)
+bcong2 = geompy.MakeBox(x0,y1,z1, x1,y2,z2)
+bcong3 = geompy.MakeBox(x2,y0,z1, x3,y1,z2)
+bcong4 = geompy.MakeBox(x2,y1,z1, x3,y2,z2)
+
+pcylx0 = geompy.MakeVertex(0., -marge, z2)
+pcylx3 = geompy.MakeVertex(longueurPlq, -marge, z2)
+pcyly0 = geompy.MakeVertex(-marge, 0., z2)
+
+cylcongx0 = geompy.MakeCylinder(pcylx0, vy, rayonConge, largeurPlq + 2*marge)
+cylcongx3 = geompy.MakeCylinder(pcylx3, vy, rayonConge, largeurPlq + 2*marge)
+cylcongy0 = geompy.MakeCylinder(pcyly0, vx, rayonConge, longueurPlq + 2*marge)
+
+bcong1 = geompy.MakeBoolean(bcong1,cylcongx0,2)
+bcong2 = geompy.MakeBoolean(bcong2,cylcongx0,2)
+bcong1 = geompy.MakeBoolean(bcong1,cylcongy0,2)
+#NRI : inverse order of BOP
+bcong3 = geompy.MakeBoolean(bcong3,cylcongy0,2)
+bcong3 = geompy.MakeBoolean(bcong3,cylcongx3,2)
+bcong4 = geompy.MakeBoolean(bcong4,cylcongx3,2)
+
+pf1 = geompy.MakeVertex(0., y0h, z3)
+pf2 = geompy.MakeVertex(0., y1, z3)
+pf3 = geompy.MakeVertex(0., y1, z4)
+pf4 = geompy.MakeVertex(0., 0.5*(largeurPlq - epaisseurFond) , z4)
+
+vf1 = geompy.MakeEdge(pf1, pf2)
+vf2 = geompy.MakeEdge(pf2, pf3)
+vf3 = geompy.MakeEdge(pf3, pf4)
+
+faceFlanc = MakeFace([vf1,vf2,vf3,aShape])
+
+flanc1 = geompy.MakePrismVecH(faceFlanc, vx, epaisseurFlanc)
+flanc2 = geompy.MakeCopy(flanc1)
+flanc1 = geompy.MakeTranslation(flanc1, rayonConge, 0., 0.)
+flanc2 = geompy.MakeTranslation(flanc2, longueurPlq - rayonConge - epaisseurFlanc, 0., 0.)
+
+# ---- constitution et decoupe des blocs
+boxfond2 = geompy.MakeBox(x0, y1, z0, x3, y2, z4p)
+
+blocs = []
+for dec in fondec2:
+    blocs.append(geompy.MakeBoolean(boxfond2, dec, 1))
+
+blocs.append(geompy.MakeBox(x0,y1,z0, x1,y2,z1))
+blocs.append(geompy.MakeBox(x1,y1,z0, xc,y2,z1))
+blocs.append(geompy.MakeBox(xc,y1,z0, x2,y2,z1))
+blocs.append(geompy.MakeBox(x2,y1,z0, x3,y2,z1))
+blocs.append(geompy.MakeBox(x0,y0,z0, x1,y1,z1))
+blocs.append(geompy.MakeBox(x1,y0,z0, xc,y1,z1))
+blocs.append(geompy.MakeBox(xc,y0,z0, x2,y1,z1))
+blocs.append(geompy.MakeBox(x2,y0,z0, x3,y1,z1))
+blocs.append(bcong2)
+blocs.append(bcong4)
+blocs.append(bcong1)
+blocs.append(bcong3)
+blocs.append(geompy.MakeBox(x0h,y1, z2, x1, y2, z3))
+blocs.append(geompy.MakeBox(x2, y1, z2, x3h,y2, z3))
+blocs.append(geompy.MakeBox(x0h,y0h,z2, x1, y1, z3))
+blocs.append(geompy.MakeBox(x2, y0h,z2, x3h,y1, z3))
+blocs.append(geompy.MakeBox(x0h,y1, z3, x1, y2, z4))
+blocs.append(geompy.MakeBox(x2, y1, z3, x3h,y2, z4))
+blocs.append(flanc1)
+blocs.append(flanc2)
+
+compbloc = geompy.MakeCompound(blocs)
+idcomp = geompy.addToStudy(compbloc, "compbloc")
+
+# ---- eliminer les faces en double, solid-->shell
+
+compshell = geompy.MakeGlueFaces(compbloc,tol3d)
+idcomp = geompy.addToStudy(compshell, "compshell")
diff --git a/test/SMESH_fixation_hexa.py b/test/SMESH_fixation_hexa.py
new file mode 100644 (file)
index 0000000..eb15cd9
--- /dev/null
@@ -0,0 +1,102 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# Hexahedrization of the geometry generated by the Python script
+# SMESH_fixation.py
+# Hypothesis and algorithms for the mesh generation are global
+#
+import salome
+import SMESH_fixation
+
+import SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+smesh =  smeshBuilder.New()
+
+compshell = SMESH_fixation.compshell
+idcomp = SMESH_fixation.idcomp
+geompy = SMESH_fixation.geompy
+salome = SMESH_fixation.salome
+
+print("Analysis of the geometry to be meshed :")
+subShellList = geompy.SubShapeAll(compshell, geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(compshell, geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(compshell, geompy.ShapeType["EDGE"])
+
+print("number of Shells in compshell : ", len(subShellList))
+print("number of Faces  in compshell : ", len(subFaceList))
+print("number of Edges  in compshell : ", len(subEdgeList))
+
+status = geompy.CheckShape(compshell)
+print(" check status ", status)
+
+### ---------------------------- SMESH --------------------------------------
+smesh.UpdateStudy()
+
+# ---- init a Mesh with the compshell
+shape_mesh = salome.IDToObject( idcomp  )
+
+mesh = smesh.Mesh(shape_mesh, "MeshCompShell")
+
+
+# ---- set Hypothesis and Algorithm
+
+print("-------------------------- NumberOfSegments")
+
+numberOfSegments = 5
+
+regular1D = mesh.Segment()
+regular1D.SetName("Wire Discretisation")
+hypNbSeg = regular1D.NumberOfSegments(numberOfSegments)
+print(hypNbSeg.GetName())
+print(hypNbSeg.GetId())
+print(hypNbSeg.GetNumberOfSegments())
+smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegments))
+
+print("-------------------------- Quadrangle_2D")
+
+quad2D = mesh.Quadrangle()
+quad2D.SetName("Quadrangle_2D")
+
+print("-------------------------- Hexa_3D")
+
+hexa3D = mesh.Hexahedron()
+hexa3D.SetName("Hexa_3D")
+
+print("-------------------------- compute compshell")
+ret = mesh.Compute()
+print(ret)
+if not ret:
+    raise Exception("Error when computing Mesh")
+
+log = mesh.GetLog(0) # no erase trace
+# for linelog in log:
+#     print(linelog)
+print("Information about the MeshcompShel:")
+print("Number of nodes       : ", mesh.NbNodes())
+print("Number of edges       : ", mesh.NbEdges())
+print("Number of faces       : ", mesh.NbFaces())
+print("Number of quadrangles : ", mesh.NbQuadrangles())
+print("Number of volumes     : ", mesh.NbVolumes())
+print("Number of hexahedrons : ", mesh.NbHexas())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_fixation_netgen.py b/test/SMESH_fixation_netgen.py
new file mode 100644 (file)
index 0000000..4b628ef
--- /dev/null
@@ -0,0 +1,78 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# Tetrahedrization of the geometry generated by the Python script
+# SMESH_fixation.py
+# The new Netgen algorithm is used that discretizes baoundaries itself
+#
+import salome
+import SMESH_fixation
+
+import SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+smesh =  smeshBuilder.New()
+
+compshell = SMESH_fixation.compshell
+idcomp = SMESH_fixation.idcomp
+geompy = SMESH_fixation.geompy
+salome = SMESH_fixation.salome
+
+print("Analysis of the geometry to be meshed :")
+subShellList = geompy.SubShapeAll(compshell, geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(compshell, geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(compshell, geompy.ShapeType["EDGE"])
+
+print("number of Shells in compshell : ", len(subShellList))
+print("number of Faces  in compshell : ", len(subFaceList))
+print("number of Edges  in compshell : ", len(subEdgeList))
+
+status = geompy.CheckShape(compshell)
+print(" check status ", status)
+
+### ---------------------------- SMESH --------------------------------------
+smesh.UpdateStudy()
+
+print("-------------------------- create Mesh, algorithm, hypothesis")
+
+mesh = smesh.Mesh(compshell, "MeshcompShel");
+netgen = mesh.Tetrahedron(smeshBuilder.FULL_NETGEN)
+netgen.SetMaxSize( 50 )
+#netgen.SetSecondOrder( 0 )
+netgen.SetFineness( smeshBuilder.Fine )
+#netgen.SetOptimize( 1 )
+
+print("-------------------------- compute mesh")
+ret = mesh.Compute()
+print(ret)
+if not ret:
+    raise Exception("Error when computing Mesh")
+
+print("Information about the MeshcompShel:")
+print("Number of nodes        : ", mesh.GetMesh().NbNodes())
+print("Number of edges        : ", mesh.GetMesh().NbEdges())
+print("Number of faces        : ", mesh.GetMesh().NbFaces())
+print("Number of triangles    : ", mesh.GetMesh().NbTriangles())
+print("Number of volumes      : ", mesh.GetMesh().NbVolumes())
+print("Number of tetrahedrons : ", mesh.GetMesh().NbTetras())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_fixation_tetra.py b/test/SMESH_fixation_tetra.py
new file mode 100644 (file)
index 0000000..859d046
--- /dev/null
@@ -0,0 +1,113 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# Tetrahedrization of the geometry generated by the Python script
+# SMESH_fixation.py
+# Hypothesis and algorithms for the mesh generation are global
+#
+import salome
+import SMESH_fixation
+
+import SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+smesh =  smeshBuilder.New()
+
+compshell = SMESH_fixation.compshell
+idcomp = SMESH_fixation.idcomp
+geompy = SMESH_fixation.geompy
+salome = SMESH_fixation.salome
+
+print("Analysis of the geometry to be meshed :")
+subShellList = geompy.SubShapeAll(compshell, geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(compshell, geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(compshell, geompy.ShapeType["EDGE"])
+
+print("number of Shells in compshell : ", len(subShellList))
+print("number of Faces  in compshell : ", len(subFaceList))
+print("number of Edges  in compshell : ", len(subEdgeList))
+
+status = geompy.CheckShape(compshell)
+print(" check status ", status)
+
+### ---------------------------- SMESH --------------------------------------
+smesh.UpdateStudy()
+
+# ---- init a Mesh with the compshell
+
+mesh = smesh.Mesh(compshell, "MeshcompShell")
+
+
+# ---- set Hypothesis and Algorithm
+
+print("-------------------------- NumberOfSegments")
+
+numberOfSegments = 5
+
+regular1D = mesh.Segment()
+regular1D.SetName("Wire Discretisation")
+hypNbSeg = regular1D.NumberOfSegments(numberOfSegments)
+print(hypNbSeg.GetName())
+print(hypNbSeg.GetId())
+print(hypNbSeg.GetNumberOfSegments())
+smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegments))
+
+print("-------------------------- LengthFromEdges")
+
+triangle = mesh.Triangle()
+triangle.SetName("Triangle")
+hypLengthFromEdges = triangle.LengthFromEdges()
+print(hypLengthFromEdges.GetName())
+print(hypLengthFromEdges.GetId())
+smesh.SetName(hypLengthFromEdges, "LengthFromEdges")
+
+
+print("-------------------------- MaxElementVolume")
+
+maxElementVolume = 1000
+
+netgen3D = mesh.Tetrahedron(smeshBuilder.NETGEN)
+netgen3D.SetName("NETGEN_3D")
+hypVolume = netgen3D.MaxElementVolume(maxElementVolume)
+print(hypVolume.GetName())
+print(hypVolume.GetId())
+print(hypVolume.GetMaxElementVolume())
+smesh.SetName(hypVolume, "MaxElementVolume_" + str(maxElementVolume))
+
+print("-------------------------- compute compshell")
+ret = mesh.Compute(mesh)
+print(ret)
+if not ret:
+    raise Exception("Error when computing Mesh")
+
+log = mesh.GetLog(0) # no erase trace
+# for linelog in log:
+#     print(linelog)
+print("Information about the MeshcompShel:")
+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())
+print("Number of tetrahedrons : ", mesh.NbTetras())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_flight_skin.py b/test/SMESH_flight_skin.py
new file mode 100644 (file)
index 0000000..f7de480
--- /dev/null
@@ -0,0 +1,110 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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")
+
+triangle = mesh.Triangle()
+hypLengthFromEdge = triangle.LengthFromEdges()
+print(hypLengthFromEdge.GetName())
+print(hypLengthFromEdge.GetId())
+smesh.SetName(hypLengthFromEdge,"LengthFromEdge")
+
+print("-------------------------- compute the skin flight")
+ret = mesh.Compute()
+print(ret)
+if not ret:
+    raise Exception("Error when computing Mesh")
+
+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())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_freebord.py b/test/SMESH_freebord.py
new file mode 100644 (file)
index 0000000..835a50d
--- /dev/null
@@ -0,0 +1,79 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+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()
+
+
+# Create box without one plane
+
+box = geompy.MakeBox(0., 0., 0., 10., 20., 30.)
+subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
+
+FaceList  = []
+for i in range( 5 ):
+  FaceList.append( subShapeList[ i ] )
+
+aComp = geompy.MakeCompound( FaceList )
+aBox = geompy.Sew( aComp, 1. )
+idbox = geompy.addToStudy( aBox, "box" )
+
+aBox  = salome.IDToObject( idbox )
+
+# Create mesh
+smesh.UpdateStudy()
+
+mesh = smesh.Mesh(aBox, "Mesh_freebord")
+
+algoReg = mesh.Segment()
+hypNbSeg = algoReg.NumberOfSegments(5)
+
+algoMef = mesh.Triangle()
+hypArea = algoMef.MaxElementArea(20)
+
+
+isDone = mesh.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Criterion : Free edges. Create group.
+
+aCriterion = smesh.GetCriterion(SMESH.EDGE, SMESH.FT_FreeEdges)
+
+aGroup = mesh.MakeGroupByCriterion("Free edges", aCriterion)
+
+anIds = aGroup.GetIDs()
+
+# print result
+print("Criterion: Free edges Nb = ", len( anIds ))
+for i in range( len( anIds ) ):
+  print(anIds[ i ])
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_hexaedre.py b/test/SMESH_hexaedre.py
new file mode 100644 (file)
index 0000000..af1361a
--- /dev/null
@@ -0,0 +1,101 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+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()
+
+# -----------------------------------------------------------------------------
+
+p0 = geompy.MakeVertex(0., 0., 0.)
+px = geompy.MakeVertex(100., 0., 0.)
+py = geompy.MakeVertex(0., 100., 0.)
+pz = geompy.MakeVertex(0., 0., 100.)
+vx = geompy.MakeVector(p0, px)
+vy = geompy.MakeVector(p0, py)
+vz = geompy.MakeVector(p0, pz)
+
+sphereExt = geompy.MakeSphere(    0.,  0.,  0., 400.)
+sphereInt = geompy.MakeSphere(    0.,-50.,  0., 350.)
+sphereA   = geompy.MakeSphere( -400., 50., 50., 400.)
+sphereB   = geompy.MakeSphere(  350.,-50.,-50., 350.)
+ptcyle    = geompy.MakeVertex(0., -300., -450.)
+cylindre  = geompy.MakeCylinder(ptcyle,vz,500.,900.)
+
+vol1=geompy.MakeCut(sphereExt,sphereA)
+vol2=geompy.MakeCut(vol1,sphereB)
+vol3=geompy.MakeCut(vol2,cylindre)
+blob=geompy.MakeCut(vol3,sphereInt)
+blob=geompy.RemoveExtraEdges(blob)
+
+idblob = geompy.addToStudy(blob,"blob")
+
+edgeGroups = geompy.Propagate( blob )
+assert len( edgeGroups ) == 3
+
+salome.sg.updateObjBrowser()
+
+# -----------------------------------------------------------------------------
+
+print("-------------------------- mesh")
+smesh.UpdateStudy()
+
+# ---- define a mesh on the geom shape 'blob'
+mesh=smesh.Mesh(blob, "MeshBlob")
+
+# ---- assign global hypothesis and algorithms to mesh
+print("-------------------------- add hypothesis to mesh")
+algo1 = mesh.Segment()
+algo2 = mesh.Quadrangle()
+algo3 = mesh.Hexahedron()
+
+# ---- assign local hypothesis and algorithms to mesh
+for edges in edgeGroups: # loop on groups of logically parallel edges
+    length = geompy.BasicProperties( edges )[0]
+    if   length < 500:  nbSeg = 4
+    elif length < 2000: nbSeg = 10
+    else:               nbSeg = 15
+    algo = mesh.Segment( edges )
+    algo.NumberOfSegments( nbSeg )
+    pass
+
+# ---- compute mesh
+print("-------------------------- compute mesh")
+ok = mesh.Compute()
+if not ok:
+    raise Exception("Error when computing Mesh")
+
+print("Information about the Mesh:")
+print("Number of nodes       : ", mesh.NbNodes())
+print("Number of edges       : ", mesh.NbEdges())
+print("Number of faces       : ", mesh.NbFaces())
+print("Number of quadrangles : ", mesh.NbQuadrangles())
+print("Number of volumes     : ", mesh.NbVolumes())
+print("Number of hexahedrons : ", mesh.NbHexas())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_mechanic.py b/test/SMESH_mechanic.py
new file mode 100644 (file)
index 0000000..7cebfc0
--- /dev/null
@@ -0,0 +1,193 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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_withHole.py
+#  Author : Lucien PIGNOLONI
+#  Module : SMESH
+#  $Header$
+#-------------------------------------------------------------------------
+#
+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
+
+# ---------------------------- GEOM --------------------------------------
+
+# ---- define contiguous arcs and segment to define a closed wire
+p1   = geompy.MakeVertex( 100.0,   0.0,  0.0 )
+p2   = geompy.MakeVertex(  50.0,  50.0,  0.0 )
+p3   = geompy.MakeVertex( 100.0, 100.0,  0.0 )
+arc1 = geompy.MakeArc( p1, p2, p3 )
+
+p4   = geompy.MakeVertex( 170.0, 100.0, 0.0 )
+seg1 = geompy.MakeVector( p3, p4 )
+
+p5   = geompy.MakeVertex( 200.0, 70.0, 0.0 )
+p6   = geompy.MakeVertex( 170.0, 40.0, 0.0 )
+arc2 = geompy.MakeArc( p4, p5, p6 )
+
+p7   = geompy.MakeVertex( 120.0, 30.0, 0.0 )
+arc3 = geompy.MakeArc( p6, p7, p1 )
+
+# ---- define a closed wire with arcs and segment
+List1 = []
+List1.append( arc1 )
+List1.append( seg1 )
+List1.append( arc2 )
+List1.append( arc3 )
+
+wire1 = geompy.MakeWire( List1 )
+Id_wire1 = geompy.addToStudy( wire1, "wire1" )
+
+# ---- define a planar face with wire
+WantPlanarFace = 1 #True
+face1 = geompy.MakeFace( wire1, WantPlanarFace )
+Id_face1 = geompy.addToStudy( face1, "face1" )
+
+# ---- create a shape by extrusion
+pO = geompy.MakeVertex( 0.0, 0.0,   0.0 )
+pz = geompy.MakeVertex( 0.0, 0.0, 100.0 )
+vz = geompy.MakeVector( pO, pz )
+
+prism1 = geompy.MakePrismVecH( face1, vz, 100.0 )
+Id_prism1 = geompy.addToStudy( prism1, "prism1" )
+
+# ---- create two cylinders
+pc1 = geompy.MakeVertex(  90.0, 50.0, -40.0 )
+pc2 = geompy.MakeVertex( 170.0, 70.0, -40.0 )
+
+radius = 20.0
+height = 180.0
+cyl1 = geompy.MakeCylinder( pc1, vz, radius, height )
+cyl2 = geompy.MakeCylinder( pc2, vz, radius, height )
+
+Id_Cyl1 = geompy.addToStudy( cyl1, "cyl1" )
+Id_Cyl2 = geompy.addToStudy( cyl2, "cyl2" )
+
+# ---- cut with cyl1
+shape = geompy.MakeBoolean( prism1, cyl1, 2 )
+
+# ---- fuse with cyl2 to obtain the final mechanic piece :)
+mechanic = geompy.MakeBoolean( shape, cyl2, 3 )
+Id_mechanic = geompy.addToStudy( mechanic, "mechanic" )
+
+# ---- explode on faces
+SubFaceL = geompy.SubShapeAllSorted(mechanic, geompy.ShapeType["FACE"])
+
+# ---- add a face sub-shape in study to be meshed different
+sub_face1 = SubFaceL[0]
+name      = geompy.SubShapeName( sub_face1, mechanic )
+
+Id_SubFace1 = geompy.addToStudyInFather( mechanic, sub_face1, name )
+
+# ---- add a face sub-shape in study to be meshed different
+sub_face2 = SubFaceL[4]
+name      = geompy.SubShapeName( sub_face2, mechanic )
+
+Id_SubFace2 = geompy.addToStudyInFather( mechanic, sub_face2, name )
+
+# ---- add a face sub-shape in study to be meshed different
+sub_face3 = SubFaceL[5]
+name      = geompy.SubShapeName( sub_face3, mechanic )
+
+Id_SubFace3 = geompy.addToStudyInFather( mechanic, sub_face3, name )
+
+# ---- add a face sub-shape in study to be meshed different
+sub_face4 = SubFaceL[10]
+name      = geompy.SubShapeName( sub_face4, mechanic )
+
+Id_SubFace4 = geompy.addToStudyInFather( mechanic, sub_face4, name )
+
+# ---------------------------- SMESH --------------------------------------
+smesh.UpdateStudy()
+
+# -- Init --
+shape_mesh = salome.IDToObject( Id_mechanic )
+
+mesh = smesh.Mesh(shape_mesh, "Mesh_mechanic")
+
+print("-------------------------- NumberOfSegments")
+
+numberOfSegment = 10
+
+algo = mesh.Segment()
+hypNbSeg = algo.NumberOfSegments(numberOfSegment)
+print(hypNbSeg.GetName())
+print(hypNbSeg.GetId())
+print(hypNbSeg.GetNumberOfSegments())
+smesh.SetName(hypNbSeg, "NumberOfSegments_10")
+
+print("-------------------------- MaxElementArea")
+
+maxElementArea = 25
+
+algo = mesh.Triangle()
+hypArea25 = algo.MaxElementArea(maxElementArea)
+print(hypArea25.GetName())
+print(hypArea25.GetId())
+print(hypArea25.GetMaxElementArea())
+smesh.SetName(hypArea25, "MaxElementArea_25")
+
+# Create submesh on sub_face1 - sub_face4
+# ---------------------------------------
+
+# Set 2D algorithm to submesh on sub_face1
+algo = mesh.Quadrangle(sub_face1)
+smesh.SetName(algo.GetSubMesh(), "SubMeshFace1")
+
+# Set 2D algorithm to submesh on sub_face2
+algo = mesh.Quadrangle(sub_face2)
+smesh.SetName(algo.GetSubMesh(), "SubMeshFace2")
+
+# Set 2D algorithm to submesh on sub_face3
+algo = mesh.Quadrangle(sub_face3)
+smesh.SetName(algo.GetSubMesh(), "SubMeshFace3")
+
+# Set 2D algorithm to submesh on sub_face4
+algo = mesh.Quadrangle(sub_face4)
+smesh.SetName(algo.GetSubMesh(), "SubMeshFace4")
+
+print("-------------------------- compute the mesh of the mechanic piece")
+
+isDone = mesh.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+print("Information about the Mesh_mechanic:")
+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 quadrangles : ", mesh.NbQuadrangles())
+print("Number of volumes     : ", mesh.NbVolumes())
+print("Number of tetrahedrons: ", mesh.NbTetras())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_mechanic_editor.py b/test/SMESH_mechanic_editor.py
new file mode 100644 (file)
index 0000000..f4f1521
--- /dev/null
@@ -0,0 +1,239 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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_withHole.py
+#  Author : Lucien PIGNOLONI
+#  Module : SMESH
+#  $Header$
+#-------------------------------------------------------------------------
+#
+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 --------------------------------------
+
+# ---- define contiguous arcs and segment to define a closed wire
+p1   = geompy.MakeVertex( 100.0,   0.0,  0.0 )
+p2   = geompy.MakeVertex(  50.0,  50.0,  0.0 )
+p3   = geompy.MakeVertex( 100.0, 100.0,  0.0 )
+arc1 = geompy.MakeArc( p1, p2, p3 )
+
+p4   = geompy.MakeVertex( 170.0, 100.0, 0.0 )
+seg1 = geompy.MakeVector( p3, p4 )
+
+p5   = geompy.MakeVertex( 200.0, 70.0, 0.0 )
+p6   = geompy.MakeVertex( 170.0, 40.0, 0.0 )
+arc2 = geompy.MakeArc( p4, p5, p6 )
+
+p7   = geompy.MakeVertex( 120.0, 30.0, 0.0 )
+arc3 = geompy.MakeArc( p6, p7, p1 )
+
+# ---- define a closed wire with arcs and segment
+List1 = []
+List1.append( arc1 )
+List1.append( seg1 )
+List1.append( arc2 )
+List1.append( arc3 )
+
+wire1 = geompy.MakeWire( List1 )
+Id_wire1 = geompy.addToStudy( wire1, "wire1" )
+
+# ---- define a planar face with wire
+WantPlanarFace = 1 #True
+face1 = geompy.MakeFace( wire1, WantPlanarFace )
+Id_face1 = geompy.addToStudy( face1, "face1" )
+
+# ---- create a shape by extrusion
+pO = geompy.MakeVertex( 0.0, 0.0,   0.0 )
+pz = geompy.MakeVertex( 0.0, 0.0, 100.0 )
+vz = geompy.MakeVector( pO, pz )
+
+prism1 = geompy.MakePrismVecH( face1, vz, 100.0 )
+Id_prism1 = geompy.addToStudy( prism1, "prism1" )
+
+# ---- create two cylinders
+pc1 = geompy.MakeVertex(  90.0, 50.0, -40.0 )
+pc2 = geompy.MakeVertex( 170.0, 70.0, -40.0 )
+
+radius = 20.0
+height = 180.0
+cyl1 = geompy.MakeCylinder( pc1, vz, radius, height )
+cyl2 = geompy.MakeCylinder( pc2, vz, radius, height )
+
+Id_Cyl1 = geompy.addToStudy( cyl1, "cyl1" )
+Id_Cyl2 = geompy.addToStudy( cyl2, "cyl2" )
+
+# ---- cut with cyl1
+shape = geompy.MakeBoolean( prism1, cyl1, 2 )
+
+# ---- fuse with cyl2 to obtain the final mechanic piece :)
+mechanic = geompy.MakeBoolean( shape, cyl2, 3 )
+Id_mechanic = geompy.addToStudy( mechanic, "mechanic" )
+
+# ---- explode on faces
+SubFaceL = geompy.SubShapeAllSorted(mechanic, geompy.ShapeType["FACE"])
+
+# ---- add a face sub-shape in study to be meshed different
+sub_face1 = SubFaceL[0]
+name      = geompy.SubShapeName( sub_face1, mechanic )
+
+Id_SubFace1 = geompy.addToStudyInFather( mechanic, sub_face1, name )
+
+# ---- add a face sub-shape in study to be meshed different
+sub_face2 = SubFaceL[4]
+name      = geompy.SubShapeName( sub_face2, mechanic )
+
+Id_SubFace2 = geompy.addToStudyInFather( mechanic, sub_face2, name )
+
+# ---- add a face sub-shape in study to be meshed different
+sub_face3 = SubFaceL[5]
+name      = geompy.SubShapeName( sub_face3, mechanic )
+
+Id_SubFace3 = geompy.addToStudyInFather( mechanic, sub_face3, name )
+
+# ---- add a face sub-shape in study to be meshed different
+sub_face4 = SubFaceL[10]
+name      = geompy.SubShapeName( sub_face4, mechanic )
+
+Id_SubFace4 = geompy.addToStudyInFather( mechanic, sub_face4, name )
+
+# ---------------------------- SMESH --------------------------------------
+
+# -- Init --
+shape_mesh = salome.IDToObject( Id_mechanic )
+
+mesh = smesh.Mesh(shape_mesh, "Mesh_mechanic")
+
+print("-------------------------- NumberOfSegments")
+
+numberOfSegment = 10
+
+algo = mesh.Segment()
+hypNbSeg = algo.NumberOfSegments(numberOfSegment)
+print(hypNbSeg.GetName())
+print(hypNbSeg.GetId())
+print(hypNbSeg.GetNumberOfSegments())
+smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegment))
+
+
+print("-------------------------- MaxElementArea")
+
+maxElementArea = 25
+
+algo = mesh.Triangle()
+hypArea25 = algo.MaxElementArea(maxElementArea)
+print(hypArea25.GetName())
+print(hypArea25.GetId())
+print(hypArea25.GetMaxElementArea())
+smesh.SetName(hypArea25, "MaxElementArea_" + str(maxElementArea))
+
+
+# Create submesh on sub_face1 - sub_face4
+# ---------------------------------------
+
+# Set 2D algorithm to submesh on sub_face1
+algo = mesh.Quadrangle(sub_face1)
+smesh.SetName(algo.GetSubMesh(), "SubMeshFace1")
+submesh1 = algo.GetSubMesh()
+
+# Set 2D algorithm to submesh on sub_face2
+algo = mesh.Quadrangle(sub_face2)
+smesh.SetName(algo.GetSubMesh(), "SubMeshFace2")
+submesh2 = algo.GetSubMesh()
+
+# Set 2D algorithm to submesh on sub_face3
+algo = mesh.Quadrangle(sub_face3)
+smesh.SetName(algo.GetSubMesh(), "SubMeshFace3")
+submesh3 = algo.GetSubMesh()
+
+# Set 2D algorithm to submesh on sub_face4
+algo = mesh.Quadrangle(sub_face4)
+smesh.SetName(algo.GetSubMesh(), "SubMeshFace4")
+submesh4 = algo.GetSubMesh()
+
+
+print("-------------------------- compute the mesh of the mechanic piece")
+
+isDone = mesh.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+print("Information about the Mesh_mechanic:")
+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 quadrangles : ", mesh.NbQuadrangles())
+print("Number of volumes     : ", mesh.NbVolumes())
+print("Number of tetrahedrons: ", mesh.NbTetras())
+
+
+#1 cutting of quadrangles of the 'SubMeshFace2' submesh
+mesh.SplitQuadObject(submesh2, 1)
+
+#2 cutting of triangles of the group
+FacesTriToQuad = [ 2391, 2824, 2825, 2826, 2827, 2828, 2832, 2833, 2834, 2835, 2836, 2837, 2838, 2839, 2841, 2844, 2845, 2847, 2854, 2861, 2863, 2922, 2923, 2924, 2925, 2926, 2927, 2928, 2929, 2930, 2931, 2932, 2933, 2934, 2935, 2936, 2937, 2938, 2940, 2941, 2946, 2951, 2970, 2971, 2972, 2973, 2974, 2975, 2976, 2977, 2978, 2979, 2980, 2981, 2982, 2983, 2984, 2985 ]
+GroupTriToQuad = mesh.MakeGroupByIds("Group of faces (quad)", SMESH.FACE, FacesTriToQuad)
+mesh.TriToQuadObject(GroupTriToQuad, SMESH.FT_AspectRatio , 1.57)
+
+#3 extrusion of the group
+point = SMESH.PointStruct(0, 0, 5)
+vector = SMESH.DirStruct(point)
+mesh.ExtrusionSweepObject(GroupTriToQuad, vector, 5)
+
+#4 mirror object
+mesh.Mirror([], SMESH.AxisStruct(0, 0, 0, 0, 0, 0), smesh.POINT, 0)
+
+#5 mesh translation
+point = SMESH.PointStruct(10, 10, 10)
+vector = SMESH.DirStruct(point)
+mesh.Translate([], vector, 0)
+
+#6 mesh rotation
+axisXYZ = SMESH.AxisStruct(0, 0, 0, 10, 10, 10)
+angle180 =  180*3.141/180
+mesh.Rotate([], axisXYZ, angle180, 0)
+
+#7 group smoothing
+FacesSmooth = [864, 933, 941, 950, 1005, 1013]
+GroupSmooth = mesh.MakeGroupByIds("Group of faces (smooth)", SMESH.FACE, FacesSmooth)
+mesh.SmoothObject(GroupSmooth, [], 20, 2, smesh.CENTROIDAL_SMOOTH)
+
+#8 rotation sweep object
+FacesRotate = [492, 493, 502, 503]
+GroupRotate = mesh.MakeGroupByIds("Group of faces (rotate)", SMESH.FACE, FacesRotate)
+angle45 =  45*3.141/180
+axisXYZ = SMESH.AxisStruct(-38.3128, -73.3658, -133.321, -13.3402, -13.3265, 6.66632)
+mesh.RotationSweepObject(GroupRotate, axisXYZ, angle45, 4, 1e-5)
+
+#9 reorientation of the submesh1
+mesh.ReorientObject(submesh1)
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_mechanic_netgen.py b/test/SMESH_mechanic_netgen.py
new file mode 100644 (file)
index 0000000..58b32d8
--- /dev/null
@@ -0,0 +1,137 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# Quadrangulation of the geometry generated by the Python script
+# SMESH_mechanic.py
+# The new Netgen algorithm is used that discretizes baoundaries itself
+#
+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 --------------------------------------
+
+# ---- define contiguous arcs and segment to define a closed wire
+p1   = geompy.MakeVertex( 100.0,   0.0,  0.0 )
+p2   = geompy.MakeVertex(  50.0,  50.0,  0.0 )
+p3   = geompy.MakeVertex( 100.0, 100.0,  0.0 )
+arc1 = geompy.MakeArc( p1, p2, p3 )
+
+p4   = geompy.MakeVertex( 170.0, 100.0, 0.0 )
+seg1 = geompy.MakeVector( p3, p4 )
+
+p5   = geompy.MakeVertex( 200.0, 70.0, 0.0 )
+p6   = geompy.MakeVertex( 170.0, 40.0, 0.0 )
+arc2 = geompy.MakeArc( p4, p5, p6 )
+
+p7   = geompy.MakeVertex( 120.0, 30.0, 0.0 )
+arc3 = geompy.MakeArc( p6, p7, p1 )
+
+# ---- define a closed wire with arcs and segment
+List1 = []
+List1.append( arc1 )
+List1.append( seg1 )
+List1.append( arc2 )
+List1.append( arc3 )
+
+wire1 = geompy.MakeWire( List1 )
+Id_wire1 = geompy.addToStudy( wire1, "wire1" )
+
+# ---- define a planar face with wire
+WantPlanarFace = 1 #True
+face1 = geompy.MakeFace( wire1, WantPlanarFace )
+Id_face1 = geompy.addToStudy( face1, "face1" )
+
+# ---- create a shape by extrusion
+pO = geompy.MakeVertex( 0.0, 0.0,   0.0 )
+pz = geompy.MakeVertex( 0.0, 0.0, 100.0 )
+vz = geompy.MakeVector( pO, pz )
+
+prism1 = geompy.MakePrismVecH( face1, vz, 100.0 )
+Id_prism1 = geompy.addToStudy( prism1, "prism1")
+
+# ---- create two cylinders
+
+pc1 = geompy.MakeVertex(  90.0, 50.0, -40.0 )
+pc2 = geompy.MakeVertex( 170.0, 70.0, -40.0 )
+radius = 20.0
+height = 180.0
+cyl1  = geompy.MakeCylinder( pc1, vz, radius, height )
+cyl2  = geompy.MakeCylinder( pc2, vz, radius, height )
+
+Id_Cyl1 = geompy.addToStudy( cyl1, "cyl1" )
+Id_Cyl2 = geompy.addToStudy( cyl2, "cyl2" )
+
+# ---- cut with cyl1
+shape  = geompy.MakeBoolean( prism1, cyl1, 2 )
+
+# ---- fuse with cyl2 to obtain the final mechanic piece :)
+mechanic =  geompy.MakeBoolean( shape, cyl2, 3 )
+Id_mechanic = geompy.addToStudy( mechanic, "mechanic" )
+
+# ---- Analysis of the geometry
+
+print("Analysis of the geometry mechanic :")
+
+subShellList = geompy.SubShapeAll(mechanic,geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(mechanic,geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(mechanic,geompy.ShapeType["EDGE"])
+
+print("number of Shells in mechanic : ",len(subShellList))
+print("number of Faces in mechanic : ",len(subFaceList))
+print("number of Edges in mechanic : ",len(subEdgeList))
+
+### ---------------------------- SMESH --------------------------------------
+
+print("-------------------------- create Mesh, algorithm, hypothesis")
+
+mesh = smesh.Mesh(mechanic, "Mesh_mechanic");
+netgen = mesh.Triangle(smeshBuilder.NETGEN)
+netgen.SetMaxSize( 50 )
+#netgen.SetSecondOrder( 0 )
+netgen.SetFineness( smeshBuilder.Fine )
+netgen.SetQuadAllowed( 1 )
+#netgen.SetOptimize( 1 )
+
+print("-------------------------- compute mesh")
+ret = mesh.Compute()
+print(ret)
+if not ret:
+    raise Exception("Error when computing Mesh")
+
+print("Information about the MeshcompShel:")
+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 quadrangles  : ", mesh.NbQuadrangles())
+print("Number of volumes      : ", mesh.NbVolumes())
+print("Number of tetrahedrons : ", mesh.NbTetras())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_mechanic_tetra.py b/test/SMESH_mechanic_tetra.py
new file mode 100644 (file)
index 0000000..4086b60
--- /dev/null
@@ -0,0 +1,163 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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_withHole.py
+#  Author : Lucien PIGNOLONI
+#  Module : SMESH
+#  $Header$
+#
+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 --------------------------------------
+
+# ---- define contiguous arcs and segment to define a closed wire
+p1   = geompy.MakeVertex( 100.0,   0.0,  0.0 )
+p2   = geompy.MakeVertex(  50.0,  50.0,  0.0 )
+p3   = geompy.MakeVertex( 100.0, 100.0,  0.0 )
+arc1 = geompy.MakeArc( p1, p2, p3 )
+
+p4   = geompy.MakeVertex( 170.0, 100.0, 0.0 )
+seg1 = geompy.MakeVector( p3, p4 )
+
+p5   = geompy.MakeVertex( 200.0, 70.0, 0.0 )
+p6   = geompy.MakeVertex( 170.0, 40.0, 0.0 )
+arc2 = geompy.MakeArc( p4, p5, p6 )
+
+p7   = geompy.MakeVertex( 120.0, 30.0, 0.0 )
+arc3 = geompy.MakeArc( p6, p7, p1 )
+
+# ---- define a closed wire with arcs and segment
+List1 = []
+List1.append( arc1 )
+List1.append( seg1 )
+List1.append( arc2 )
+List1.append( arc3 )
+
+wire1 = geompy.MakeWire( List1 )
+Id_wire1 = geompy.addToStudy( wire1, "wire1" )
+
+# ---- define a planar face with wire
+WantPlanarFace = 1 #True
+face1 = geompy.MakeFace( wire1, WantPlanarFace )
+Id_face1 = geompy.addToStudy( face1, "face1" )
+
+# ---- create a shape by extrusion
+pO = geompy.MakeVertex( 0.0, 0.0,   0.0 )
+pz = geompy.MakeVertex( 0.0, 0.0, 100.0 )
+vz = geompy.MakeVector( pO, pz )
+
+prism1 = geompy.MakePrismVecH( face1, vz, 100.0 )
+Id_prism1 = geompy.addToStudy( prism1, "prism1")
+
+# ---- create two cylinders
+
+pc1 = geompy.MakeVertex(  90.0, 50.0, -40.0 )
+pc2 = geompy.MakeVertex( 170.0, 70.0, -40.0 )
+radius = 20.0
+height = 180.0
+cyl1  = geompy.MakeCylinder( pc1, vz, radius, height )
+cyl2  = geompy.MakeCylinder( pc2, vz, radius, height )
+
+Id_Cyl1 = geompy.addToStudy( cyl1, "cyl1" )
+Id_Cyl2 = geompy.addToStudy( cyl2, "cyl2" )
+
+# ---- cut with cyl1
+shape  = geompy.MakeBoolean( prism1, cyl1, 2 )
+
+# ---- fuse with cyl2 to obtain the final mechanic piece :)
+mechanic =  geompy.MakeBoolean( shape, cyl2, 3 )
+Id_mechanic = geompy.addToStudy( mechanic, "mechanic" )
+
+# ---- Analysis of the geometry
+
+print("Analysis of the geometry mechanic :")
+
+subShellList = geompy.SubShapeAll(mechanic,geompy.ShapeType["SHELL"])
+subFaceList  = geompy.SubShapeAll(mechanic,geompy.ShapeType["FACE"])
+subEdgeList  = geompy.SubShapeAll(mechanic,geompy.ShapeType["EDGE"])
+
+print("number of Shells in mechanic : ",len(subShellList))
+print("number of Faces in mechanic : ",len(subFaceList))
+print("number of Edges in mechanic : ",len(subEdgeList))
+
+### ---------------------------- SMESH --------------------------------------
+
+shape_mesh = salome.IDToObject( Id_mechanic  )
+
+mesh = smesh.Mesh(shape_mesh, "Mesh_mechanic_tetra")
+
+print("-------------------------- add hypothesis to main mechanic")
+
+numberOfSegment = 10
+
+algo1 = mesh.Segment()
+hypNbSeg = algo1.NumberOfSegments(numberOfSegment)
+print(hypNbSeg.GetName())
+print(hypNbSeg.GetId())
+print(hypNbSeg.GetNumberOfSegments())
+smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegment))
+
+
+maxElementArea = 20
+
+algo2 = mesh.Triangle()
+hypArea = algo2.MaxElementArea(maxElementArea)
+print(hypArea.GetName())
+print(hypArea.GetId())
+print(hypArea.GetMaxElementArea())
+smesh.SetName(hypArea, "MaxElementArea_" + str(maxElementArea))
+
+
+maxElementVolume = 20
+
+algo3 = mesh.Tetrahedron(smeshBuilder.NETGEN)
+hypVolume = algo3.MaxElementVolume(maxElementVolume)
+print(hypVolume.GetName())
+print(hypVolume.GetId())
+print(hypVolume.GetMaxElementVolume())
+smesh.SetName(hypVolume, "maxElementVolume_" + str(maxElementVolume))
+
+
+print("-------------------------- compute the mesh of the mechanic piece")
+isDone = mesh.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+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 quadrangles: ", mesh.NbQuadrangles())
+print("Number of volumes     : ", mesh.NbVolumes())
+print("Number of tetrahedrons: ", mesh.NbTetras())
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_reg.py b/test/SMESH_reg.py
new file mode 100644 (file)
index 0000000..df568d8
--- /dev/null
@@ -0,0 +1,119 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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_reg.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()
+
+from salome.StdMeshers import StdMeshersBuilder
+
+
+# ---- define a box
+print("Define box")
+box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
+idbox = geompy.addToStudy(box, "box")
+
+# ---- add faces of box to study
+print("Add faces to study")
+idface = []
+subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
+for f in subShapeList:
+  name = geompy.SubShapeName(f, box)
+  print(name)
+  idface.append( geompy.addToStudyInFather(box, f, name) )
+
+# ---- add edges of box to study
+print("Add edges to study")
+idedge = []
+subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["EDGE"])
+for f in subShapeList:
+  name = geompy.SubShapeName(f, box)
+  print(name)
+  idedge.append( geompy.addToStudyInFather(box, f, name) )
+
+salome.sg.updateObjBrowser()
+
+# ---- launch SMESH
+smeshgui = salome.ImportComponentGUI("SMESH")
+smeshgui.Init()
+smesh.UpdateStudy()
+
+# ---- Creating meshes
+
+box = salome.IDToObject(idbox)
+names = [ "MeshBoxReg", "MeshBoxScale", "MeshBoxTable", "MeshBoxExpr" ]
+
+
+print("-------------------------- Create ", names[0], " mesh")
+mesh = smesh.Mesh(box, names[0])
+algo = mesh.Segment()
+hyp = algo.NumberOfSegments(7)
+hyp.SetDistrType(0)
+smesh.SetName(hyp, "NumberOfSegmentsReg")
+algo = mesh.Triangle()
+algo.MaxElementArea(2500)
+
+print("-------------------------- Create ", names[1], " mesh")
+mesh = smesh.Mesh(box, names[1])
+algo = mesh.Segment()
+hyp = algo.NumberOfSegments(7)
+hyp.SetDistrType(1)
+hyp.SetScaleFactor(2)
+smesh.SetName(hyp, "NumberOfSegmentsScale")
+algo = mesh.Triangle()
+algo.MaxElementArea(2500)
+
+print("-------------------------- Create ", names[2], " mesh")
+mesh = smesh.Mesh(box,names[2])
+algo = mesh.Segment()
+hyp = algo.NumberOfSegments(7)
+hyp.SetDistrType(2)
+hyp.SetTableFunction( [0, 0.1, 0.5, 1.0, 1.0, 0.1] )
+hyp.SetConversionMode(0)
+smesh.SetName(hyp, "NumberOfSegmentsTable")
+algo = mesh.Triangle()
+algo.MaxElementArea(2500)
+
+print("-------------------------- Create ", names[3], " mesh")
+mesh = smesh.Mesh(box, names[3])
+algo = mesh.Segment()
+hyp = algo.NumberOfSegments(10)
+hyp.SetDistrType(3)
+hyp.SetExpressionFunction("sin(3*t)")
+hyp.SetConversionMode(1)
+smesh.SetName(hyp, "NumberOfSegmentsExpr")
+algo = mesh.Triangle()
+algo.MaxElementArea(2500)
+
+
+salome.sg.updateObjBrowser()
+
diff --git a/test/SMESH_test.py b/test/SMESH_test.py
new file mode 100644 (file)
index 0000000..fbb842c
--- /dev/null
@@ -0,0 +1,144 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+#  SMESH SMESH_I : idl implementation based on 'SMESH' unit's classes
+#  File   : SMESH_test.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()
+
+# ---- define a box
+
+box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
+idb = geompy.addToStudy(box, "box")
+
+# ---- add first face of box in study
+
+subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
+face = subShapeList[0]
+name = geompy.SubShapeName(face, box)
+idf = geompy.addToStudyInFather(box, face, name)
+
+# ---- add shell from box  in study
+
+subShellList = geompy.SubShapeAll(box, geompy.ShapeType["SHELL"])
+shell = subShellList[0]
+name = geompy.SubShapeName(shell, box)
+ids = geompy.addToStudyInFather(box, shell, name)
+
+# ---- add first edge of face in study
+
+edgeList = geompy.SubShapeAll(face, geompy.ShapeType["EDGE"])
+edge = edgeList[0];
+name = geompy.SubShapeName(edge, face)
+ide = geompy.addToStudyInFather(face, edge, name)
+
+# ---- SMESH
+
+smesh.UpdateStudy()
+box = salome.IDToObject(idb)
+mesh = smesh.Mesh(box, "Meshbox")
+
+print("-------------------------- add hypothesis to box")
+
+hyp = mesh.Segment(box).LocalLength(100)
+print(hyp.GetName())
+print(hyp.GetId())
+print(hyp.GetLength())
+
+hyp = mesh.Triangle().MaxElementArea(5000)
+print(hyp.GetName())
+print(hyp.GetId())
+print(hyp.GetMaxElementArea())
+
+print("-------------------------- add hypothesis to edge")
+
+edge = salome.IDToObject(ide)
+
+hyp = mesh.Segment(edge).LocalLength(100)
+print(hyp.GetName())
+print(hyp.GetId())
+print(hyp.GetLength())
+
+print("-------------------------- compute face")
+
+face = salome.IDToObject(idf)
+
+ret = mesh.Compute(face)
+print(ret)
+if not ret:
+    raise Exception("Error when computing Mesh")
+
+log = [] #mesh.GetLog(0) # 0 - GetLog without ClearLog after, else if 1 - ClearLog after
+for a in log:
+    print("-------")
+    ii = 0
+    ir = 0
+    comType = a.commandType
+    if comType == 0:
+        for i in range(a.number):
+            ind = a.indexes[ii]
+            ii = ii+1
+            r1 = a.coords[ir]
+            ir = ir+1
+            r2 = a.coords[ir]
+            ir = ir+1
+            r3 = a.coords[ir]
+            ir = ir+1
+            print("AddNode %i - %g %g %g" % (ind, r1, r2, r3))
+    elif comType == 1:
+        for i in range(a.number):
+            ind = a.indexes[ii]
+            ii = ii+1
+            i1 = a.indexes[ii]
+            ii = ii+1
+            i2 = a.indexes[ii]
+            ii = ii+1
+            print("AddEdge %i - %i %i" % (ind, i1, i2))
+    elif comType == 2:
+        for i in range(a.number):
+            ind = a.indexes[ii]
+            print(ind)
+            ii = ii+1
+            print(ii)
+            i1 = a.indexes[ii]
+            ii = ii+1
+            i2 = a.indexes[ii]
+            print(i2)
+            ii = ii+1
+            print("ii", ii)
+            i3 = a.indexes[ii]
+            print(i3)
+            #ii = ii+1
+            ii = ii+1
+            print("AddTriangle %i - %i %i %i" % (ind, i1, i2, i3))
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_test0.py b/test/SMESH_test0.py
new file mode 100644 (file)
index 0000000..34557b4
--- /dev/null
@@ -0,0 +1,66 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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_test0.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()
+
+# ---- define a box
+
+box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
+idbox = geompy.addToStudy(box, "box")
+
+# ---- add first face of box in study
+
+subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
+face = subShapeList[0]
+name = geompy.SubShapeName(face, box)
+print(name)
+idface = geompy.addToStudyInFather(box, face, name)
+
+# ---- add shell from box  in study
+
+subShellList = geompy.SubShapeAll(box, geompy.ShapeType["SHELL"])
+shell = subShellList[0]
+name = geompy.SubShapeName(shell, box)
+print(name)
+idshell = geompy.addToStudyInFather(box, shell, name)
+
+# ---- add first edge of face in study
+
+edgeList = geompy.SubShapeAll(face, geompy.ShapeType["EDGE"])
+edge = edgeList[0]
+name = geompy.SubShapeName(edge, face)
+print(name)
+idedge = geompy.addToStudyInFather(face, edge, name)
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_test1.py b/test/SMESH_test1.py
new file mode 100644 (file)
index 0000000..ba1fa3c
--- /dev/null
@@ -0,0 +1,113 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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_test1.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()
+
+# ---- define a box
+
+box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
+idbox = geompy.addToStudy(box, "box")
+
+# ---- add first face of box in study
+
+subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
+face = subShapeList[0]
+name = geompy.SubShapeName(face, box)
+print(name)
+idface = geompy.addToStudyInFather(box, face, name)
+
+# ---- add shell from box  in study
+
+subShellList = geompy.SubShapeAll(box, geompy.ShapeType["SHELL"])
+shell = subShellList[0]
+name = geompy.SubShapeName(shell, box)
+print(name)
+idshell = geompy.addToStudyInFather(box, shell, name)
+
+# ---- add first edge of face in study
+
+edgeList = geompy.SubShapeAll(face, geompy.ShapeType["EDGE"])
+edge = edgeList[0]
+name = geompy.SubShapeName(edge, face)
+print(name)
+idedge = geompy.addToStudyInFather(face, edge, name)
+
+
+# ---- SMESH
+
+# ---- Init a Mesh with the box
+
+mesh = smesh.Mesh(box, "Meshbox")
+
+print("-------------------------- add hypothesis to box")
+algoReg1 = mesh.Segment()
+hypNbSeg1 = algoReg1.NumberOfSegments(7)
+print(hypNbSeg1.GetName())
+print(hypNbSeg1.GetId())
+print(hypNbSeg1.GetNumberOfSegments())
+smesh.SetName(hypNbSeg1, "NumberOfSegments_7")
+
+algoMef1 = mesh.Triangle()
+hypArea1 = algoMef1.MaxElementArea(2500)
+print(hypArea1.GetName())
+print(hypArea1.GetId())
+print(hypArea1.GetMaxElementArea())
+smesh.SetName(hypArea1, "MaxElementArea_2500")
+
+# ---- add hypothesis to edge
+print("-------------------------- add hypothesis to edge")
+edge = salome.IDToObject(idedge)
+
+algoReg2 = mesh.Segment(edge)
+hypLen1 = algoReg2.LocalLength(100)
+smesh.SetName(algoReg2.GetSubMesh(), "SubMeshEdge")
+print(hypLen1.GetName())
+print(hypLen1.GetId())
+print(hypLen1.GetLength())
+smesh.SetName(hypLen1, "Local_Length_100")
+
+# ---- add hypothesis to face
+print("-------------------------- add hypothesis to face")
+face = salome.IDToObject(idface)
+
+algoMef2 = mesh.Triangle(face)
+hypArea2 = algoMef2.MaxElementArea(500)
+smesh.SetName(algoMef2.GetSubMesh(), "SubMeshFace")
+print(hypArea2.GetName())
+print(hypArea2.GetId())
+print(hypArea2.GetMaxElementArea())
+smesh.SetName(hypArea2, "MaxElementArea_500")
+
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_test1_AndDisplay.py b/test/SMESH_test1_AndDisplay.py
new file mode 100644 (file)
index 0000000..7e766af
--- /dev/null
@@ -0,0 +1,120 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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_test1.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()
+
+# ---- define a box
+
+box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
+idbox = geompy.addToStudy(box, "box")
+
+# ---- add first face of box in study
+
+subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
+face = subShapeList[0]
+name = geompy.SubShapeName(face, box)
+print(name)
+idface = geompy.addToStudyInFather(box, face, name)
+
+# ---- add shell from box  in study
+
+subShellList = geompy.SubShapeAll(box, geompy.ShapeType["SHELL"])
+shell = subShellList[0]
+name = geompy.SubShapeName(shell, box)
+print(name)
+idshell = geompy.addToStudyInFather(box, shell, name)
+
+# ---- add first edge of face in study
+
+edgeList = geompy.SubShapeAll(face, geompy.ShapeType["EDGE"])
+edge = edgeList[0]
+name = geompy.SubShapeName(edge, face)
+print(name)
+idedge = geompy.addToStudyInFather(face, edge, name)
+
+
+# ---- SMESH
+
+# ---- Init a Mesh with the box
+
+mesh = smesh.Mesh(box, "Meshbox")
+
+print("-------------------------- add hypothesis to box")
+algoReg1 = mesh.Segment()
+hypNbSeg1 = algoReg1.NumberOfSegments(7)
+print(hypNbSeg1.GetName())
+print(hypNbSeg1.GetId())
+print(hypNbSeg1.GetNumberOfSegments())
+smesh.SetName(hypNbSeg1, "NumberOfSegments_7")
+
+algoMef1 = mesh.Triangle()
+hypArea1 = algoMef1.MaxElementArea(2500)
+print(hypArea1.GetName())
+print(hypArea1.GetId())
+print(hypArea1.GetMaxElementArea())
+smesh.SetName(hypArea1, "MaxElementArea_2500")
+
+# ---- add hypothesis to edge
+print("-------------------------- add hypothesis to edge")
+edge = salome.IDToObject(idedge)
+
+algoReg2 = mesh.Segment(edge)
+hypLen1 = algoReg2.LocalLength(100)
+smesh.SetName(algoReg2.GetSubMesh(), "SubMeshEdge")
+print(hypLen1.GetName())
+print(hypLen1.GetId())
+print(hypLen1.GetLength())
+smesh.SetName(hypLen1, "Local_Length_100")
+
+# ---- add hypothesis to face
+print("-------------------------- add hypothesis to face")
+face = salome.IDToObject(idface)
+
+algoMef2 = mesh.Triangle(face)
+hypArea2 = algoMef2.MaxElementArea(500)
+smesh.SetName(algoMef2.GetSubMesh(), "SubMeshFace")
+print(hypArea2.GetName())
+print(hypArea2.GetId())
+print(hypArea2.GetMaxElementArea())
+smesh.SetName(hypArea2, "MaxElementArea_500")
+
+isDone = mesh.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+salome.sg.updateObjBrowser()
+
+sg = salome.ImportComponentGUI('SMESH')
+if not isinstance(sg, type(salome.salome_ComponentGUI)):
+    sg.CreateAndDisplayActor('0:1:2:3')
diff --git a/test/SMESH_test2.py b/test/SMESH_test2.py
new file mode 100644 (file)
index 0000000..9b24bd9
--- /dev/null
@@ -0,0 +1,41 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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_test2.py
+#  Module : SMESH
+#
+from SMESH_test1 import *
+
+# ---- compute box
+
+print("-------------------------- compute box")
+ret = mesh.Compute()
+print(ret)
+if not ret:
+    raise Exception("Error when computing Mesh")
+
+log = mesh.GetLog(0); # no erase trace
+# for linelog in log:
+#     print(linelog)
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_test3.py b/test/SMESH_test3.py
new file mode 100644 (file)
index 0000000..b575701
--- /dev/null
@@ -0,0 +1,104 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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_test3.py
+#  Module : SMESH
+#import salome
+#
+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 math
+
+pi = math.pi
+
+# ---------------------------------------------
+xa = math.sin(pi/12)
+ya = 0
+za = math.cos(pi/12)
+
+xb = 0
+yb = math.sin(pi/18)
+zb = math.cos(pi/18)
+
+xc = math.cos(-pi/18)
+yc = 0
+zc = math.sin(-pi/18)
+
+rc1 = 150
+rc2 = 150
+rc3 = 150
+rc4 = 300
+
+hc1 = 300
+hc2 = 2*hc1
+hc3 = 2*hc1
+hc4 = 2*hc1
+
+# ---------------------------------------------
+point_0 = geompy.MakeVertex(0, 0, 0)
+point_z = geompy.MakeVertex(0, 0, 1)
+
+point_a = geompy.MakeVertex(xa, ya, za)
+point_b = geompy.MakeVertex(xb, yb, zb)
+point_c = geompy.MakeVertex(xc, yc, zc)
+
+dir_z = geompy.MakeVector(point_0, point_z)
+dir_a = geompy.MakeVector(point_0, point_a)
+dir_b = geompy.MakeVector(point_0, point_b)
+dir_c = geompy.MakeVector(point_0, point_c)
+
+axe_z = dir_z
+axe_a = dir_a
+axe_b = dir_b
+axe_c = dir_c
+
+cyl_1 = geompy.MakeCylinder(point_0, dir_z, rc1, hc1)
+
+cyl_t = geompy.MakeCylinder(point_0, dir_a, rc2, hc2)
+cyl_a = geompy.MakeTranslation(cyl_t, 1.2*rc1, 0.1*rc1, -0.5*hc1)
+
+cyl_t = geompy.MakeCylinder(point_0, dir_b, rc3, hc3)
+cyl_b = geompy.MakeTranslation(cyl_t, -1.2*rc1, -0.1*rc1, -0.5*hc1)
+
+cyl_t = geompy.MakeCylinder(point_0, dir_c, rc4, hc4)
+cyl_t = geompy.MakeRotation(cyl_t, axe_c, pi/2)
+cyl_c = geompy.MakeTranslation(cyl_t, -hc1, 0, 0)
+cyl_d = geompy.MakeTranslation(cyl_t, -hc1, 0, 1.3*rc4)
+
+inter_t = geompy.MakeBoolean(cyl_c,cyl_d, 1) # common
+
+blob_t = geompy.MakeBoolean(cyl_1, cyl_a, 2) # cut
+blob_t = geompy.MakeBoolean(blob_t, cyl_b, 2)
+
+blob = geompy.MakeBoolean(blob_t, inter_t, 1) # common
+
+idblob = geompy.addToStudy(blob,"blob")
+#idc = geompy.addToStudy(cyl_c,"cyl_c")
+#idd = geompy.addToStudy(cyl_d,"cyl_d")
diff --git a/test/SMESH_test4.py b/test/SMESH_test4.py
new file mode 100644 (file)
index 0000000..7b9f1dc
--- /dev/null
@@ -0,0 +1,81 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+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
+
+box   = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
+idbox = geompy.addToStudy(box, "box")
+
+subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
+face   = subShapeList[0]
+name   = geompy.SubShapeName(face, box)
+idface = geompy.addToStudyInFather(box, face, name)
+
+box  = salome.IDToObject(idbox)
+face = salome.IDToObject(idface)
+
+# ---- SMESH
+
+smesh.UpdateStudy()
+mesh = smesh.Mesh(box, "Meshbox")
+
+# Set 1D algorithm/hypotheses to mesh
+algo1 = mesh.Segment()
+algo1.NumberOfSegments(10)
+
+# Set 2D algorithm/hypotheses to mesh
+algo2 = mesh.Triangle()
+algo2.MaxElementArea(10)
+
+# Create submesh on face
+algo3 = mesh.Segment(face)
+algo3.NumberOfSegments(10)
+algo4 = mesh.Triangle(face)
+algo4.MaxElementArea(100)
+submesh = algo4.GetSubMesh()
+smesh.SetName(submesh, "SubMeshFace")
+
+isDone = mesh.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+faces = submesh.GetElementsByType(SMESH.FACE)
+if len(faces) > 1:
+    print(len(faces), len(faces)/2)
+    group1 = mesh.CreateEmptyGroup(SMESH.FACE,"Group of faces")
+    group2 = mesh.CreateEmptyGroup(SMESH.FACE,"Another group of faces")
+    group1.Add(faces[:int(len(faces)/2)])
+    group2.Add(faces[int(len(faces)/2):])
+
+salome.sg.updateObjBrowser()
diff --git a/test/SMESH_test5.py b/test/SMESH_test5.py
new file mode 100644 (file)
index 0000000..38f390a
--- /dev/null
@@ -0,0 +1,79 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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/test/basic_geom_smesh_without_session.py b/test/basic_geom_smesh_without_session.py
new file mode 100644 (file)
index 0000000..c9084f8
--- /dev/null
@@ -0,0 +1,63 @@
+
+"""
+Most basic test of GEOM/SMESH usecase, but it can be tested without any session launched.
+"""
+
+import sys
+import salome
+
+import os
+salome.standalone() # <- key point of test is here
+salome.salome_init()
+import salome_notebook
+notebook = salome_notebook.NoteBook()
+
+###
+### GEOM component
+###
+
+import GEOM
+from salome.geom import geomBuilder
+import math
+import SALOMEDS
+
+geompy = geomBuilder.New()
+O = geompy.MakeVertex(0, 0, 0)
+OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
+OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
+OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
+Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200)
+geompy.addToStudy( O, 'O' )
+geompy.addToStudy( OX, 'OX' )
+geompy.addToStudy( OY, 'OY' )
+geompy.addToStudy( OZ, 'OZ' )
+geompy.addToStudy( Box_1, 'Box_1' )
+###
+### SMESH component
+###
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+smesh.SetEnablePublish( True ) # Set to False to avoid publish in study if not needed or in some particular situations:
+                                 # multiples meshes built in parallel, complex and numerous mesh edition (performance)
+Mesh_1 = smesh.Mesh(Box_1)
+NETGEN_1D_2D_3D = Mesh_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)
+isDone = Mesh_1.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+## Set names of Mesh objects
+smesh.SetName(NETGEN_1D_2D_3D.GetAlgorithm(), 'NETGEN 1D-2D-3D')
+smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1')
+
+nbOfTetraExp = 5
+
+assert(Mesh_1.GetMesh().NbTetras()>=nbOfTetraExp)
+
+#Mesh_1.ExportMED("toto.med")
+
+import medcoupling as mc
+
+mv_mm = Mesh_1.ExportMEDCoupling()
+assert(mc.MEDCoupling1SGTUMesh(mv_mm[0]).getNumberOfCells()>=nbOfTetraExp)
diff --git a/test/basic_shaper_smesh_without_session.py b/test/basic_shaper_smesh_without_session.py
new file mode 100644 (file)
index 0000000..16a7a67
--- /dev/null
@@ -0,0 +1,75 @@
+
+"""
+Most basic test of SHAPE/SMESH usecase, but it can be tested without any session launched.
+"""
+
+import sys
+import salome
+salome.standalone() # <- key point of test is here
+salome.salome_init()
+
+#from salome.shaper import initConfig
+
+import os
+print(os.getpid())
+#input("AAA")
+###
+### SHAPER component
+###
+
+from salome.shaper import model
+model.begin()
+partSet = model.moduleDocument()
+
+### Create Part
+Part_1 = model.addPart(partSet)
+Part_1_doc = Part_1.document()
+
+### Create Box
+Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
+
+model.end()
+
+###
+### SHAPERSTUDY component
+###
+#import pdb; pdb.set_trace()
+model.publishToShaperStudy()
+import SHAPERSTUDY
+#import pdb; pdb.set_trace()
+Box_1_1, = SHAPERSTUDY.shape(model.featureStringId(Box_1))
+###
+### SMESH component
+###
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+#smesh.SetEnablePublish( False ) # Set to False to avoid publish in study if not needed or in some particular situations:
+                                 # multiples meshes built in parallel, complex and numerous mesh edition (performance)
+
+Mesh_1 = smesh.Mesh(Box_1_1)
+NETGEN_1D_2D_3D = Mesh_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)
+NETGEN_3D_Parameters_1 = NETGEN_1D_2D_3D.Parameters()
+NETGEN_3D_Parameters_1.SetMaxSize( 5 )
+NETGEN_3D_Parameters_1.SetMinSize( 1 )
+NETGEN_3D_Parameters_1.SetSecondOrder( 0 )
+NETGEN_3D_Parameters_1.SetOptimize( 1 )
+NETGEN_3D_Parameters_1.SetFineness( 2 )
+NETGEN_3D_Parameters_1.SetChordalError( -1 )
+NETGEN_3D_Parameters_1.SetChordalErrorEnabled( 0 )
+NETGEN_3D_Parameters_1.SetUseSurfaceCurvature( 1 )
+NETGEN_3D_Parameters_1.SetFuseEdges( 1 )
+NETGEN_3D_Parameters_1.SetQuadAllowed( 0 )
+NETGEN_3D_Parameters_1.SetCheckChartBoundary( 152 )
+isDone = Mesh_1.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+## Set names of Mesh objects
+smesh.SetName(NETGEN_1D_2D_3D.GetAlgorithm(), 'NETGEN 1D-2D-3D')
+smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1')
+smesh.SetName(NETGEN_3D_Parameters_1, 'NETGEN 3D Parameters_1')
+
+assert(Mesh_1.GetMesh().NbTetras()>=5)
diff --git a/test/basic_smesh_output_with_mc_field.py b/test/basic_smesh_output_with_mc_field.py
new file mode 100644 (file)
index 0000000..8b2727d
--- /dev/null
@@ -0,0 +1,179 @@
+#!/usr/bin/env python
+
+import sys
+import salome
+
+import unittest
+
+class SMESHExportOfFieldsInMemory(unittest.TestCase):
+
+  def testMEDCouplingFieldOnCells(self):
+    """
+    Test focuses on ExportMEDCoupling method in the context of MED_CELL field output.
+    """
+    salome.standalone()
+    salome.salome_init()
+    ###
+    ### SHAPER component
+    ###
+
+    from salome.shaper import model
+
+    model.begin()
+    partSet = model.moduleDocument()
+
+    ### Create Part
+    Part_1 = model.addPart(partSet)
+    Part_1_doc = Part_1.document()
+
+    ### Create Box
+    Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
+
+    ### Create Plane
+    Plane_4 = model.addPlane(Part_1_doc, model.selection("FACE", "PartSet/XOY"), 5, False)
+
+    ### Create Plane
+    Plane_5 = model.addPlane(Part_1_doc, model.selection("FACE", "PartSet/YOZ"), 5, False)
+
+    ### Create Partition
+    Partition_1_objects = [model.selection("FACE", "Plane_1"),
+                          model.selection("FACE", "Plane_2"),
+                          model.selection("SOLID", "Box_1_1")]
+    Partition_1 = model.addPartition(Part_1_doc, Partition_1_objects, keepSubResults = True)
+
+    ### Create Field
+    Field_1_objects = [model.selection("SOLID", "Partition_1_1_2"),
+                      model.selection("SOLID", "Partition_1_1_4"),
+                      model.selection("SOLID", "Partition_1_1_1"),
+                      model.selection("SOLID", "Partition_1_1_3")]
+    Field_1 = model.addField(Part_1_doc, 1, "DOUBLE", 1, ["Comp 1"], Field_1_objects)
+    Field_1.addStep(0, 0, [[0], [1], [2], [3], [4]])
+
+
+    model.end()
+
+    ###
+    ### SHAPERSTUDY component
+    ###
+
+    model.publishToShaperStudy()
+    import SHAPERSTUDY
+    Partition_1_1, Field_1_1 = SHAPERSTUDY.shape(model.featureStringId(Partition_1))
+    ###
+    ### SMESH component
+    ###
+
+    import  SMESH, SALOMEDS
+    from salome.smesh import smeshBuilder
+
+    smesh = smeshBuilder.New()
+    #smesh.SetEnablePublish( False ) # Set to False to avoid publish in study if not needed or in some particular situations:
+                                    # multiples meshes built in parallel, complex and numerous mesh edition (performance)
+
+    Mesh_1 = smesh.Mesh(Partition_1_1)
+    Regular_1D = Mesh_1.Segment()
+    Local_Length_1 = Regular_1D.LocalLength(5,None,1e-07)
+    Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
+    Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa)
+    isDone = Mesh_1.Compute()
+    if not isDone:
+      raise Exception("Error when computing Mesh")
+    smesh.SetName(Mesh_1, 'Mesh_1')
+
+    #### Mesh_1.ExportMED( r'Mesh_with_one_field_on_cells.med', 0, 41, 1, Mesh_1.GetMesh(), 1, [ Field_1_1 ], '',-1 )
+    mfd = Mesh_1.ExportMEDCoupling(0, Mesh_1.GetMesh(), 1, [ Field_1_1 ], '',-1 )#### <- important line of test is here !
+
+    self.assertEqual(len(mfd.getMeshes()),1)
+    self.assertEqual(len(mfd.getFields()),1)
+    f = mfd.getFields()[0][0].field(mfd.getMeshes()[0])
+    f.checkConsistencyLight()
+    import medcoupling
+    self.assertEqual(f.getDiscretization().getEnum(),medcoupling.ON_CELLS)
+    self.assertTrue(f.getMesh().getNumberOfCells()>1)
+    pass
+
+
+  def testMEDCouplingFieldOnNodes(self):
+    """
+    Test focuses on ExportMEDCoupling method in the context of MED_NODES field output.
+    """
+    salome.standalone()
+    salome.salome_init()
+
+    ###
+    ### SHAPER component
+    ###
+
+    from salome.shaper import model
+
+    model.begin()
+    partSet = model.moduleDocument()
+
+    ### Create Part
+    Part_1 = model.addPart(partSet)
+    Part_1_doc = Part_1.document()
+
+    ### Create Box
+    Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
+
+    ### Create Plane
+    Plane_4 = model.addPlane(Part_1_doc, model.selection("FACE", "PartSet/XOY"), 5, False)
+
+    ### Create Plane
+    Plane_5 = model.addPlane(Part_1_doc, model.selection("FACE", "PartSet/YOZ"), 5, False)
+
+    ### Create Partition
+    Partition_1_objects = [model.selection("FACE", "Plane_1"),
+                          model.selection("FACE", "Plane_2"),
+                          model.selection("SOLID", "Box_1_1")]
+    Partition_1 = model.addPartition(Part_1_doc, Partition_1_objects, keepSubResults = True)
+
+    ### Create Field
+    Field_2_objects = [model.selection("VERTEX", "[Partition_1_1_2/Modified_Face&Box_1_1/Back][Partition_1_1_2/Modified_Face&Box_1_1/Left][Partition_1_1_2/Modified_Face&Box_1_1/Top]"),
+                      model.selection("VERTEX", "Partition_1_1_2/Generated_Vertex&Plane_2/Plane_2&new_weak_name_1"),
+                      model.selection("VERTEX", "[Partition_1_1_4/Modified_Face&Box_1_1/Front][Partition_1_1_4/Modified_Face&Box_1_1/Left][Partition_1_1_4/Modified_Face&Box_1_1/Top]"),
+                      model.selection("VERTEX", "Partition_1_1_1/Generated_Vertex&Plane_1/Plane_1&new_weak_name_1"),
+                      model.selection("VERTEX", "[Partition_1_1_1/Modified_Face&Box_1_1/Left][Partition_1_1_1/Modified_Face&Plane_1/Plane_1][Partition_1_1_1/Modified_Face&Plane_2/Plane_2]"),
+                      model.selection("VERTEX", "Partition_1_1_3/Generated_Vertex&Plane_1/Plane_1&new_weak_name_1"),
+                      model.selection("VERTEX", "[Partition_1_1_1/Modified_Face&Box_1_1/Back][Partition_1_1_1/Modified_Face&Box_1_1/Left][Partition_1_1_1/Modified_Face&Box_1_1/Bottom]"),
+                      model.selection("VERTEX", "Partition_1_1_1/Generated_Vertex&Plane_2/Plane_2&new_weak_name_1"),
+                      model.selection("VERTEX", "[Partition_1_1_3/Modified_Face&Box_1_1/Left][Partition_1_1_3/Modified_Face&Box_1_1/Bottom][Partition_1_1_3/Modified_Face&Box_1_1/Front]")]
+    Field_2 = model.addField(Part_1_doc, 1, "DOUBLE", 1, ["Comp 1"], Field_2_objects)
+    Field_2.addStep(0, 0, [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]])
+
+    model.end()
+
+    ###
+    ### SHAPERSTUDY component
+    ###
+
+    model.publishToShaperStudy()
+    import SHAPERSTUDY
+    Partition_1_1, Field_2_1 = SHAPERSTUDY.shape(model.featureStringId(Partition_1))
+    ###
+    ### SMESH component
+    ###
+
+    import  SMESH, SALOMEDS
+    from salome.smesh import smeshBuilder
+
+    smesh = smeshBuilder.New()
+    #smesh.SetEnablePublish( False ) # Set to False to avoid publish in study if not needed or in some particular situations:
+                                    # multiples meshes built in parallel, complex and numerous mesh edition (performance)
+
+    Mesh_1 = smesh.Mesh(Partition_1_1)
+    Regular_1D = Mesh_1.Segment()
+    Local_Length_1 = Regular_1D.LocalLength(5,None,1e-07)
+    Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
+    Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa)
+    isDone = Mesh_1.Compute()
+    if not isDone:
+      raise Exception("Error when computing Mesh")
+    smesh.SetName(Mesh_1, 'Mesh_1')
+
+    # 23th of june 2021 : Bug both in ExportMED and in ExportMEDCoupling
+    #Mesh_1.ExportMED( r'/tmp/Mesh_with_one_field_on_nodes.med', 0, 41, 1, Mesh_1.GetMesh(), 1, [ Field_2_1 ], '',-1 )
+    #mfd = Mesh_1.ExportMEDCoupling(0,Mesh_1.GetMesh(), 1, [ Field_2_1 ], '',-1)
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/test/blocFissure_01_without_session.py b/test/blocFissure_01_without_session.py
new file mode 100644 (file)
index 0000000..14c186f
--- /dev/null
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests de blocFissure ; en standalone
+
+Cas tests basés sur les matériels :
+. cubeAngle
+. cubeFin
+
+Copyright 2021 EDF
+Gérald NICOLAS
++33.1.78.19.43.52
+"""
+
+__revision__ = "V02.04"
+
+import os
+import sys
+
+# Lancement des cas-tests
+import salome
+salome.standalone()
+salome.salome_init_without_session()
+
+from blocFissure.CasTests.blocFissureTest import blocFissureTest
+BLOCFISSURE_TEST = blocFissureTest(["cubeAngle", "cubeAngle_2","cubeCoin", "cubeMilieu", "cubeTransverse"])
+MESSAGE_ERREUR = BLOCFISSURE_TEST.lancement()
+#sys.stdout.write(MESSAGE_ERREUR)
+del BLOCFISSURE_TEST
+
+# Diagnostic
+if MESSAGE_ERREUR:
+  if ( "NOOK" in MESSAGE_ERREUR ):
+    LAUX = MESSAGE_ERREUR.split()
+    ERREUR = int(LAUX[LAUX.index("NOOK")+2])
+  else:
+    ERREUR = 0
+else:
+  MESSAGE_ERREUR = "Impossible de trouver le diagnostic de la procédure de tests."
+  ERREUR = -1
+
+if ERREUR:
+  sys.stderr.write(MESSAGE_ERREUR)
+  #raise Exception(MESSAGE_ERREUR)
+  assert(False)
+
diff --git a/test/blocFissure_02_without_session.py b/test/blocFissure_02_without_session.py
new file mode 100644 (file)
index 0000000..49e0e83
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests de blocFissure ; en standalone
+
+Cas tests basés sur les matériels :
+. decoupeCylindre
+. disque_perce
+. fissureGauche
+. fissureGauche_2
++ ellipse, ellipse_disque, ellipse_probleme
+
+Copyright 2021 EDF
+Gérald NICOLAS
++33.1.78.19.43.52
+"""
+
+__revision__ = "V02.04"
+
+import os
+import sys
+
+# Lancement des cas-tests
+import salome
+salome.standalone()
+salome.salome_init_without_session()
+
+from blocFissure.CasTests.blocFissureTest import blocFissureTest
+BLOCFISSURE_TEST = blocFissureTest(["cylindre", "cylindre_2", "disquePerce", "faceGauche","ellipse_1", "ellipse_2"])
+#BLOCFISSURE_TEST = blocFissureTest(["cylindre", "cylindre_2", "disquePerce", "faceGauche","ellipse_1", "ellipse_2", "faceGauche_2"])
+MESSAGE_ERREUR = BLOCFISSURE_TEST.lancement()
+#sys.stdout.write(MESSAGE_ERREUR)
+del BLOCFISSURE_TEST
+
+# Diagnostic
+if MESSAGE_ERREUR:
+  if ( "NOOK" in MESSAGE_ERREUR ):
+    LAUX = MESSAGE_ERREUR.split()
+    ERREUR = int(LAUX[LAUX.index("NOOK")+2])
+  else:
+    ERREUR = 0
+else:
+  MESSAGE_ERREUR = "Impossible de trouver le diagnostic de la procédure de tests."
+  ERREUR = -1
+
+if ERREUR:
+  sys.stderr.write(MESSAGE_ERREUR)
+  #raise Exception(MESSAGE_ERREUR)
+  assert(False)
+
diff --git a/test/blocFissure_03_without_session.py b/test/blocFissure_03_without_session.py
new file mode 100644 (file)
index 0000000..2b2f8ad
--- /dev/null
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests de blocFissure ; en standalone
+
+Cas tests basés sur les matériels :
+. eprouvetteCourbe
+. eprouvetteDroite
+
+Copyright 2021 EDF
+Gérald NICOLAS
++33.1.78.19.43.52
+"""
+
+__revision__ = "V02.03"
+
+import os
+import sys
+
+# Lancement des cas-tests
+import salome
+salome.standalone()
+salome.salome_init_without_session()
+
+from blocFissure.CasTests.blocFissureTest import blocFissureTest
+BLOCFISSURE_TEST = blocFissureTest(["eprouvetteCourbe", "eprouvetteDroite", "eprouvetteDroite_2"])
+MESSAGE_ERREUR = BLOCFISSURE_TEST.lancement()
+#sys.stdout.write(MESSAGE_ERREUR)
+del BLOCFISSURE_TEST
+
+# Diagnostic
+if MESSAGE_ERREUR:
+  if ( "NOOK" in MESSAGE_ERREUR ):
+    LAUX = MESSAGE_ERREUR.split()
+    ERREUR = int(LAUX[LAUX.index("NOOK")+2])
+  else:
+    ERREUR = 0
+else:
+  MESSAGE_ERREUR = "Impossible de trouver le diagnostic de la procédure de tests."
+  ERREUR = -1
+
+if ERREUR:
+  sys.stderr.write(MESSAGE_ERREUR)
+  #raise Exception(MESSAGE_ERREUR)
+  assert(False)
+
diff --git a/test/blocFissure_04_without_session.py b/test/blocFissure_04_without_session.py
new file mode 100644 (file)
index 0000000..0474743
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests de blocFissure ; en standalone
+
+Cas tests basés sans matériels (1/3)
+
+Copyright 2021 EDF
+Gérald NICOLAS
++33.1.78.19.43.52
+"""
+
+__revision__ = "V02.03"
+
+import os
+import sys
+
+# Lancement des cas-tests
+import salome
+salome.standalone()
+salome.salome_init_without_session()
+
+from blocFissure.CasTests.blocFissureTest import blocFissureTest
+BLOCFISSURE_TEST = blocFissureTest(["fissureCoude_1", "fissureCoude_2", "fissureCoude_3", "fissureCoude_4", "fissureCoude_5"])
+MESSAGE_ERREUR = BLOCFISSURE_TEST.lancement()
+#sys.stdout.write(MESSAGE_ERREUR)
+del BLOCFISSURE_TEST
+
+# Diagnostic
+if MESSAGE_ERREUR:
+  if ( "NOOK" in MESSAGE_ERREUR ):
+    LAUX = MESSAGE_ERREUR.split()
+    ERREUR = int(LAUX[LAUX.index("NOOK")+2])
+  else:
+    ERREUR = 0
+else:
+  MESSAGE_ERREUR = "Impossible de trouver le diagnostic de la procédure de tests."
+  ERREUR = -1
+
+if ERREUR:
+  sys.stderr.write(MESSAGE_ERREUR)
+  #raise Exception(MESSAGE_ERREUR)
+  assert(False)
+
diff --git a/test/blocFissure_05_without_session.py b/test/blocFissure_05_without_session.py
new file mode 100644 (file)
index 0000000..b86a2ee
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests de blocFissure ; en standalone
+
+Cas tests basés sans matériels (1/3)
+
+Copyright 2021 EDF
+Gérald NICOLAS
++33.1.78.19.43.52
+"""
+
+__revision__ = "V02.03"
+
+import os
+import sys
+
+# Lancement des cas-tests
+import salome
+salome.standalone()
+salome.salome_init_without_session()
+
+from blocFissure.CasTests.blocFissureTest import blocFissureTest
+BLOCFISSURE_TEST = blocFissureTest(["fissureCoude_6", "fissureCoude_7", "fissureCoude_8", "fissureCoude_9", "fissureCoude_10"])
+MESSAGE_ERREUR = BLOCFISSURE_TEST.lancement()
+#sys.stdout.write(MESSAGE_ERREUR)
+del BLOCFISSURE_TEST
+
+# Diagnostic
+if MESSAGE_ERREUR:
+  if ( "NOOK" in MESSAGE_ERREUR ):
+    LAUX = MESSAGE_ERREUR.split()
+    ERREUR = int(LAUX[LAUX.index("NOOK")+2])
+  else:
+    ERREUR = 0
+else:
+  MESSAGE_ERREUR = "Impossible de trouver le diagnostic de la procédure de tests."
+  ERREUR = -1
+
+if ERREUR:
+  sys.stderr.write(MESSAGE_ERREUR)
+  #raise Exception(MESSAGE_ERREUR)
+  assert(False)
+
diff --git a/test/blocFissure_06_without_session.py b/test/blocFissure_06_without_session.py
new file mode 100644 (file)
index 0000000..fd2ef82
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests de blocFissure ; en standalone
+
+Cas tests basés sans matériels (1/3)
+
+Copyright 2021 EDF
+Gérald NICOLAS
++33.1.78.19.43.52
+"""
+
+__revision__ = "V02.03"
+
+import os
+import sys
+
+# Lancement des cas-tests
+import salome
+salome.standalone()
+salome.salome_init_without_session()
+
+from blocFissure.CasTests.blocFissureTest import blocFissureTest
+BLOCFISSURE_TEST = blocFissureTest(["fissure_Coude", "fissure_Coude_4"])
+MESSAGE_ERREUR = BLOCFISSURE_TEST.lancement()
+#sys.stdout.write(MESSAGE_ERREUR)
+del BLOCFISSURE_TEST
+
+# Diagnostic
+if MESSAGE_ERREUR:
+  if ( "NOOK" in MESSAGE_ERREUR ):
+    LAUX = MESSAGE_ERREUR.split()
+    ERREUR = int(LAUX[LAUX.index("NOOK")+2])
+  else:
+    ERREUR = 0
+else:
+  MESSAGE_ERREUR = "Impossible de trouver le diagnostic de la procédure de tests."
+  ERREUR = -1
+
+if ERREUR:
+  sys.stderr.write(MESSAGE_ERREUR)
+  #raise Exception(MESSAGE_ERREUR)
+  assert(False)
+
diff --git a/test/blocFissure_07_without_session.py b/test/blocFissure_07_without_session.py
new file mode 100644 (file)
index 0000000..d4d3836
--- /dev/null
@@ -0,0 +1,46 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests de blocFissure ; en standalone
+
+Cas tests basés sur les matériels :
+. vis
+. tube
+
+Copyright 2021 EDF
+Gérald NICOLAS
++33.1.78.19.43.52
+"""
+
+__revision__ = "V02.04"
+
+import os
+import sys
+
+# Lancement des cas-tests
+import salome
+salome.standalone()
+salome.salome_init_without_session()
+
+from blocFissure.CasTests.blocFissureTest import blocFissureTest
+BLOCFISSURE_TEST = blocFissureTest(["vis_1"])
+#BLOCFISSURE_TEST = blocFissureTest(["vis_1", "tube"])
+MESSAGE_ERREUR = BLOCFISSURE_TEST.lancement()
+#sys.stdout.write(MESSAGE_ERREUR)
+del BLOCFISSURE_TEST
+
+# Diagnostic
+if MESSAGE_ERREUR:
+  if ( "NOOK" in MESSAGE_ERREUR ):
+    LAUX = MESSAGE_ERREUR.split()
+    ERREUR = int(LAUX[LAUX.index("NOOK")+2])
+  else:
+    ERREUR = 0
+else:
+  MESSAGE_ERREUR = "Impossible de trouver le diagnostic de la procédure de tests."
+  ERREUR = -1
+
+if ERREUR:
+  sys.stderr.write(MESSAGE_ERREUR)
+  #raise Exception(MESSAGE_ERREUR)
+  assert(False)
+
diff --git a/test/body_fitting_quanta_sphere.py b/test/body_fitting_quanta_sphere.py
new file mode 100644 (file)
index 0000000..553d6f7
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+
+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()
+
+O = geompy.MakeVertex(0, 0, 0)
+OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
+OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
+OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
+Sphere_1 = geompy.MakeSphereR(100)
+geompy.addToStudy( O, 'O' )
+geompy.addToStudy( OX, 'OX' )
+geompy.addToStudy( OY, 'OY' )
+geompy.addToStudy( OZ, 'OZ' )
+geompy.addToStudy( Sphere_1, 'Sphere_1' )
+
+Mesh_1 = smesh.Mesh(Sphere_1,'Mesh_1')
+Cartesian_3D = Mesh_1.BodyFitted()
+Body_Fitting_Parameters_1 = Cartesian_3D.SetGrid([ [ '34.641' ], [ 0, 1 ]],[ [ '34.641' ], [ 0, 1 ]],[ [ '34.641' ], [ 0, 1 ]],4,0)
+Body_Fitting_Parameters_1.SetToUseQuanta( 1 )
+Body_Fitting_Parameters_1.SetQuanta( 0.8 )
+isDone = Mesh_1.Compute()
+
+Polys   = Mesh_1.NbPolyhedrons()
+Hexas1  = Mesh_1.NbHexas()
+
+#No polyhedrons in the mesh
+assert(Polys==0)
+
+Body_Fitting_Parameters_1.SetQuanta( 0.2 )
+isDone = Mesh_1.Compute()
+
+Polys   = Mesh_1.NbPolyhedrons()
+Hexas2  = Mesh_1.NbHexas()
+
+#Still no polyhedrons in the mesh
+assert(Polys==0)
+
+#Numher of hexahedrons is bigger for hexas2 becuase quanta value is smaller
+assert( Hexas1 < Hexas2 )
+
+if salome.sg.hasDesktop():
+  salome.sg.updateObjBrowser()
diff --git a/test/body_fitting_viscous_layer_cylinder.py b/test/body_fitting_viscous_layer_cylinder.py
new file mode 100644 (file)
index 0000000..e50568a
--- /dev/null
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+
+import math
+import sys
+import salome
+
+# Parameters
+
+r = 6
+h = 20
+
+###
+### SHAPER component
+###
+
+from salome.shaper import model
+
+model.begin()
+partSet = model.moduleDocument()
+
+### Create Part
+Part_1 = model.addPart(partSet)
+Part_1_doc = Part_1.document()
+
+### Create Cylinder
+Cylinder_1 = model.addCylinder(Part_1_doc, model.selection("VERTEX", "PartSet/Origin"), model.selection("EDGE", "PartSet/OZ"), r, h)
+
+### Create Group
+Group_1 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Cylinder_1_1/Face_3")])
+Group_1.setName("Inlet")
+Group_1.result().setName("Inlet")
+
+### Create Group
+Group_2 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Cylinder_1_1/Face_2")])
+Group_2.setName("Outlet")
+Group_2.result().setName("Outlet")
+
+### Create Group
+Group_3 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Cylinder_1_1/Face_1")])
+Group_3.setName("Wall")
+Group_3.result().setName("Wall")
+
+model.end()
+
+###
+### SHAPERSTUDY component
+###
+
+model.publishToShaperStudy()
+import SHAPERSTUDY
+Cylinder_1_1, Inlet, Outlet, Wall, = SHAPERSTUDY.shape(model.featureStringId(Cylinder_1))
+###
+### SMESH component
+###
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+
+Mesh_1 = smesh.Mesh(Cylinder_1_1,'Mesh_1')
+Cartesian_3D = Mesh_1.BodyFitted()
+Body_Fitting_Parameters_1 = Cartesian_3D.SetGrid([ [ '1' ], [ 0, 1 ]],[ [ '1' ], [ 0, 1 ]],[ [ '1' ], [ 0, 1 ]],10000,1)
+Body_Fitting_Parameters_1.SetToCreateFaces( 1 )
+
+width_layer = 1
+Viscous_Layers_1 = Cartesian_3D.ViscousLayers(width_layer,3,1.2,[ Inlet, Outlet ],1,smeshBuilder.SURF_OFFSET_SMOOTH,'Viscous_Layers')
+
+isDone = Mesh_1.Compute()
+
+if not isDone:
+  raise Exception("Mesh_1 not computed")
+
+# Check volume of mesh
+volume_mesh = Mesh_1.GetVolume()
+volume_geom = math.pi*r**2*h
+
+assert abs(volume_mesh-volume_geom)/volume_geom < 1e-2
+
+# Check volume of Viscous layer
+gr_Viscous_Layers = Mesh_1.GetGroupByName("Viscous_Layers")[0]
+
+volume_mesh_VL = smesh.GetVolume(gr_Viscous_Layers)
+volume_geom_VL = volume_geom - math.pi*(r-width_layer)**2*h
+
+assert abs(volume_mesh_VL-volume_geom_VL)/volume_geom_VL < 1e-2
+
+
+if salome.sg.hasDesktop():
+  salome.sg.updateObjBrowser()
diff --git a/test/body_fitting_viscous_layer_tpipe.py b/test/body_fitting_viscous_layer_tpipe.py
new file mode 100644 (file)
index 0000000..ec2f52a
--- /dev/null
@@ -0,0 +1,110 @@
+#!/usr/bin/env python
+
+import sys
+import salome
+
+salome.salome_init()
+
+###
+### SHAPER component
+###
+
+from salome.shaper import model
+
+model.begin()
+partSet = model.moduleDocument()
+
+### Create Part
+Part_1 = model.addPart(partSet)
+Part_1_doc = Part_1.document()
+
+### Create Cylinder
+Cylinder_1 = model.addCylinder(Part_1_doc, model.selection("VERTEX", "PartSet/Origin"), model.selection("EDGE", "PartSet/OZ"), 0.5, 5)
+
+### Create Point
+Point_2 = model.addPoint(Part_1_doc, -3, 0, 1.5)
+
+### Create Cylinder
+Cylinder_2 = model.addCylinder(Part_1_doc, model.selection("VERTEX", "Point_1"), model.selection("EDGE", "PartSet/OX"), 0.3, 3)
+
+### Create Fuse
+Fuse_1 = model.addFuse(Part_1_doc, [model.selection("SOLID", "Cylinder_1_1"), model.selection("SOLID", "Cylinder_2_1")], keepSubResults = True)
+
+### Create Group
+Group_1 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Cylinder_2_1/Face_3")])
+Group_1.setName("Inlet_x")
+Group_1.result().setName("Inlet_x")
+Group_1.result().setColor(0, 85, 255)
+
+### Create Group
+Group_2 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Cylinder_1_1/Face_3")])
+Group_2.setName("Inlet_z")
+Group_2.result().setName("Inlet_z")
+Group_2.result().setColor(170, 0, 0)
+
+### Create Group
+Group_3 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Cylinder_1_1/Face_2")])
+Group_3.setName("Outlet")
+Group_3.result().setName("Outlet")
+Group_3.result().setColor(255, 170, 0)
+
+### Create Group
+Group_4 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Fuse_1_1/Modified_Face&Cylinder_1_1/Face_1"), model.selection("FACE", "Fuse_1_1/Modified_Face&Cylinder_2_1/Face_1")])
+Group_4.setName("Wall")
+Group_4.result().setName("Wall")
+Group_4.result().setColor(85, 255, 0)
+
+### Create Group
+Group_5 = model.addGroup(Part_1_doc, "Vertices", [model.selection("VERTEX", "Fuse_1_1/Generated_Vertex&Cylinder_1_1/Face_1")])
+Group_5.setName("corner")
+Group_5.result().setName("corner")
+
+model.end()
+
+###
+### SHAPERSTUDY component
+###
+
+model.publishToShaperStudy()
+import SHAPERSTUDY
+Fuse_1_1, Inlet_x, Inlet_z, Outlet, Wall, corner, = SHAPERSTUDY.shape(model.featureStringId(Fuse_1))
+
+###
+### SMESH component
+###
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+
+Mesh_1 = smesh.Mesh(Fuse_1_1,'Mesh_1')
+Cartesian_3D_1 = Mesh_1.BodyFitted()
+CartesianParameters3D = Cartesian_3D_1.SetGrid([ [ '0.05' ], [ 0, 1 ]],[ [ '0.05' ], [ 0, 1 ]],[ [ '0.05' ], [ 0, 1 ]],5e+07,1)
+CartesianParameters3D.SetToCreateFaces( 1 )
+ViscousLayers_0_05_3 = Cartesian_3D_1.ViscousLayers(0.05,3,1.1,[ Inlet_x, Inlet_z, Outlet ],1,smeshBuilder.SURF_OFFSET_SMOOTH,'Viscous_Layers')
+
+isDone = Mesh_1.Compute()
+
+if not isDone:
+  raise Exception("Mesh_1 not computed")
+
+# Check volume of mesh
+volume_mesh = Mesh_1.GetVolume()
+volume_geom = 4.640535669879
+
+assert abs(volume_mesh-volume_geom)/volume_geom < 0.005
+
+# Check volume of Viscous layer
+gr_Viscous_Layers = Mesh_1.GetGroupByName("Viscous_Layers")[0]
+
+volume_mesh_VL = smesh.GetVolume(gr_Viscous_Layers)
+volume_geom_reduced = 3.685108989376
+volume_geom_VL = volume_geom - volume_geom_reduced
+
+assert abs(volume_mesh_VL-volume_geom_VL)/volume_geom_VL < 0.005
+
+
+
+if salome.sg.hasDesktop():
+  salome.sg.updateObjBrowser()
diff --git a/test/create_penta_biquad.py b/test/create_penta_biquad.py
new file mode 100644 (file)
index 0000000..c13f25c
--- /dev/null
@@ -0,0 +1,42 @@
+# -*- coding: utf-8 -*-
+
+import sys
+import salome
+
+salome.salome_init_without_session()
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+unPentaBiQuad = smesh.Mesh()
+nodeID = unPentaBiQuad.AddNode( 0, 0, 0 )
+nodeID = unPentaBiQuad.AddNode( 10, 0, 0 )
+nodeID = unPentaBiQuad.AddNode( 0, 10, 0 )
+nodeID = unPentaBiQuad.AddNode( 0, 0, 10 )
+nodeID = unPentaBiQuad.AddNode( 10, 0, 10 )
+nodeID = unPentaBiQuad.AddNode( 0, 10, 10 )
+nodeID = unPentaBiQuad.AddNode( 5, 0, 0 )
+nodeID = unPentaBiQuad.AddNode( 7, 7, 0 )
+nodeID = unPentaBiQuad.AddNode( 0, 5, 0 )
+nodeID = unPentaBiQuad.AddNode( 5, 0, 10 )
+nodeID = unPentaBiQuad.AddNode( 7, 7, 10 )
+nodeID = unPentaBiQuad.AddNode( 0, 5, 10 )
+nodeID = unPentaBiQuad.AddNode( 0, 0, 5 )
+nodeID = unPentaBiQuad.AddNode( 10, 0, 5 )
+nodeID = unPentaBiQuad.AddNode( 0, 10, 5 )
+nodeID = unPentaBiQuad.AddNode( 5, -1, 5 )
+nodeID = unPentaBiQuad.AddNode( 8, 8, 5 )
+nodeID = unPentaBiQuad.AddNode( -1, 5, 5 )
+volID = unPentaBiQuad.AddVolume( [ 4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9, 13, 14, 15, 16, 17, 18 ] )
+
+infos = unPentaBiQuad.GetMeshInfo()
+print("Number of biquadratic pentahedrons:", infos[SMESH.Entity_BiQuad_Penta])
+if (infos[SMESH.Entity_BiQuad_Penta] != 1):
+  raise RuntimeError("Bad number of biquadratic pentahedrons: should be 1")
+
+## Set names of Mesh objects
+smesh.SetName(unPentaBiQuad.GetMesh(), 'unPentaBiQuad')
+
+if salome.sg.hasDesktop():
+  salome.sg.updateObjBrowser()
diff --git a/test/data/Mesh_tri.med b/test/data/Mesh_tri.med
new file mode 100644 (file)
index 0000000..e5a1984
Binary files /dev/null and b/test/data/Mesh_tri.med differ
diff --git a/test/doublenodes_polyhedra.py b/test/doublenodes_polyhedra.py
new file mode 100644 (file)
index 0000000..ae85b61
--- /dev/null
@@ -0,0 +1,233 @@
+#!/usr/bin/env python
+
+import sys
+import salome
+
+salome.standalone()
+salome.salome_init()
+
+###
+### SHAPER component
+###
+
+from salome.shaper import model
+
+model.begin()
+partSet = model.moduleDocument()
+
+### Create Part
+Part_1 = model.addPart(partSet)
+Part_1_doc = Part_1.document()
+
+### Create Sketch
+Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOZ"))
+
+### Create SketchLine
+SketchLine_1 = Sketch_1.addLine(100, 0, 0, 0)
+
+### Create SketchProjection
+SketchProjection_1 = Sketch_1.addProjection(model.selection("VERTEX", "PartSet/Origin"), False)
+SketchPoint_1 = SketchProjection_1.createdFeature()
+Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchPoint_1.result())
+
+### Create SketchLine
+SketchLine_2 = Sketch_1.addLine(0, 0, 0, 100)
+
+### Create SketchLine
+SketchLine_3 = Sketch_1.addLine(0, 100, 100, 100)
+
+### Create SketchLine
+SketchLine_4 = Sketch_1.addLine(100, 100, 100, 0)
+Sketch_1.setCoincident(SketchLine_4.endPoint(), SketchLine_1.startPoint())
+Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_2.startPoint())
+Sketch_1.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint())
+Sketch_1.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint())
+Sketch_1.setHorizontal(SketchLine_1.result())
+Sketch_1.setVertical(SketchLine_2.result())
+Sketch_1.setHorizontal(SketchLine_3.result())
+Sketch_1.setVertical(SketchLine_4.result())
+Sketch_1.setEqual(SketchLine_3.result(), SketchLine_4.result())
+Sketch_1.setLength(SketchLine_1.result(), 100)
+
+### Create SketchLine
+SketchLine_5 = Sketch_1.addLine(0, 50, 100, 50)
+Sketch_1.setCoincident(SketchLine_5.startPoint(), SketchLine_2.result())
+Sketch_1.setCoincident(SketchLine_5.endPoint(), SketchLine_4.result())
+Sketch_1.setHorizontal(SketchLine_5.result())
+
+### Create SketchLine
+SketchLine_6 = Sketch_1.addLine(50, 50.00000000000001, 50, 0)
+Sketch_1.setCoincident(SketchLine_6.endPoint(), SketchLine_1.result())
+Sketch_1.setVertical(SketchLine_6.result())
+Sketch_1.setCoincident(SketchLine_6.startPoint(), SketchLine_5.result())
+Sketch_1.setMiddlePoint(SketchLine_6.startPoint(), SketchLine_5.result())
+Sketch_1.setMiddlePoint(SketchLine_5.startPoint(), SketchLine_2.result())
+model.do()
+
+### Create Extrusion
+Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("COMPOUND", "Sketch_1")], model.selection(), 100, 0, "Faces|Wires")
+
+### Create Group
+Group_1 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Extrusion_1_1_1/Generated_Face&Sketch_1/SketchLine_5"), model.selection("FACE", "(Extrusion_1_1_3/Generated_Face&Sketch_1/SketchLine_4)(Extrusion_1_1_3/From_Face)(Extrusion_1_1_3/To_Face)(Extrusion_1_1_3/Generated_Face&Sketch_1/SketchLine_3)2(Extrusion_1_1_3/Generated_Face&Sketch_1/SketchLine_2)2")])
+Group_1.setName("crack_1")
+Group_1.result().setName("crack_1")
+
+### Create Group
+Group_2 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Extrusion_1_1_1/Generated_Face&Sketch_1/SketchLine_6")])
+Group_2.setName("crack_2")
+Group_2.result().setName("crack_2")
+
+### Create Group
+Group_3 = model.addGroup(Part_1_doc, "Faces", [model.selection("COMPSOLID", "Extrusion_1_1")])
+Group_3.setName("all_faces")
+Group_3.result().setName("all_faces")
+
+### Create GroupSubstraction
+GroupSubstraction_1 = model.addGroupSubstraction(Part_1_doc, [model.selection("COMPOUND", "all_faces")], [model.selection("COMPOUND", "crack_1"), model.selection("COMPOUND", "crack_2")])
+GroupSubstraction_1.result().setName("sides")
+
+### Create Group
+Group_4 = model.addGroup(Part_1_doc, "Edges", [model.selection("EDGE", "[Extrusion_1_1_3/Generated_Face&Sketch_1/SketchLine_3][Extrusion_1_1_3/To_Face]")])
+Group_4.setName("top_edge")
+Group_4.result().setName("top_edge")
+
+### Create Group
+Group_5 = model.addGroup(Part_1_doc, "Solids", [model.selection("SOLID", "Extrusion_1_1_3")])
+Group_5.setName("Solid_1")
+Group_5.result().setName("Solid_1")
+
+### Create Group
+Group_6 = model.addGroup(Part_1_doc, "Solids", [model.selection("SOLID", "Extrusion_1_1_1")])
+Group_6.setName("Solid_2")
+Group_6.result().setName("Solid_2")
+
+### Create Group
+Group_7 = model.addGroup(Part_1_doc, "Solids", [model.selection("SOLID", "Extrusion_1_1_2")])
+Group_7.setName("Solid_3")
+Group_7.result().setName("Solid_3")
+
+model.end()
+
+###
+### SHAPERSTUDY component
+###
+
+model.publishToShaperStudy()
+import SHAPERSTUDY
+shapes = SHAPERSTUDY.shape(model.featureStringId(Extrusion_1))
+
+Extrusion_1_1 = shapes[0]
+groups = shapes[1:]
+
+# dict of groups by their name
+d_groups = {}
+for gr in groups:
+  name = gr.GetName()
+  d_groups[name] = gr
+
+###
+### SMESH component
+###
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+
+# Create an hexahedral mesh or polyhedral mesh
+# @param algo: "hexahedra", "polyhedra" or "polygons"
+def createMesh(algo):
+  
+  nb_segs = 5
+  Mesh_1 = smesh.Mesh(Extrusion_1_1)
+  mesh_name = "Mesh_%s"%algo
+  Mesh_1.SetName(mesh_name)
+
+  algo_1d = Mesh_1.Segment()
+  algo_1d.NumberOfSegments(nb_segs)
+
+  if algo == "hexahedra":
+    Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
+    Mesh_1.Hexahedron(algo=smeshBuilder.Hexa)
+  elif algo == "polyhedra":
+    Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
+    Mesh_1.Polyhedron()
+  elif algo == "polygons":
+    Mesh_1.Polygon()
+    Mesh_1.Polyhedron()
+  else:
+    raise Exception("not expected algo: ", algo)
+
+  d_mesh_groups = {}
+  # Create group of faces
+  for name, gr in d_groups.items():
+    if name.startswith("crack") or name.startswith("Solid_"):
+      gr_mesh = Mesh_1.Group(gr)
+      d_mesh_groups[name] = gr_mesh
+
+  # Group on nodes
+  gr_sides_1 = Mesh_1.GroupOnGeom(d_groups["sides"],'sides',SMESH.NODE)
+
+  # sub-mesh on top edge
+  algo_1d_sub = Mesh_1.Segment(geom=d_groups["top_edge"])
+  algo_1d_sub.NumberOfSegments(2*nb_segs)
+  algo_1d_sub.Propagation()
+
+  isDone = Mesh_1.Compute()
+  if not isDone:
+    raise Exception("Error when computing Mesh")
+
+  nb_nodes = Mesh_1.NbNodes()
+  # Create 2 cracks by two calls of DoubleNodeElemGroups
+
+  # FIRST CRACK
+  # get affected elements on crack_1
+  [ affectedVolumes_1, affectedFaces_1, affectedEdges_1 ] = Mesh_1.AffectedElemGroupsInRegion( [ d_mesh_groups["crack_1" ] ], [ gr_sides_1 ], None )
+  # affectedVolumes_1 is d_mesh_groups["Solid_1"] => use one or the other
+  # double nodes on crack_1
+  [ crack_1_double_faces, crack_1_double_nodes ] = Mesh_1.DoubleNodeElemGroups( [ d_mesh_groups["crack_1" ] ], [ gr_sides_1 ], [ affectedVolumes_1, affectedFaces_1, affectedEdges_1 ], 1, 1 )
+
+  # check new nodes were added
+  new_nb_nodes_1 = Mesh_1.NbNodes()
+  assert new_nb_nodes_1 > nb_nodes
+  
+  # check number of new nodes
+  if algo != "polygons":
+    assert new_nb_nodes_1-nb_nodes == (nb_segs*2-1)*(nb_segs-1)
+  else:
+    assert new_nb_nodes_1-nb_nodes == nb_segs-1
+
+  # check new nodes where affected to volume elements
+  affectedVolumes_1_nodes = affectedVolumes_1.GetNodeIDs()
+  for n in range(nb_nodes +1, new_nb_nodes_1):
+    assert n in affectedVolumes_1_nodes, "New node not affected to affectedVolumes_1 in %s"%mesh_name
+
+  # SECOND CRACK
+  # get affected elements on crack_2
+  [ affectedVolumes_2, affectedFaces_2, affectedEdges_2 ] = Mesh_1.AffectedElemGroupsInRegion( [ d_mesh_groups["crack_2" ] ], [ gr_sides_1 ], None )
+  # double nodes on crack_2
+  # affectedVolumes_2 is d_mesh_groups["Solid_3"] => use one or the other
+  [ crack_2_double_faces, crack_2_double_nodes ] = Mesh_1.DoubleNodeElemGroups( [ d_mesh_groups["crack_2" ] ], [ gr_sides_1 ], [ affectedVolumes_2, affectedFaces_2, affectedEdges_2 ], 1, 1 )
+
+  # check new nodes were added
+  new_nb_nodes_2 = Mesh_1.NbNodes()
+  assert new_nb_nodes_2 > new_nb_nodes_1
+  
+  # check number of new nodes
+  if algo != "polygons":
+    assert new_nb_nodes_2-new_nb_nodes_1 == (nb_segs-1)*nb_segs
+  else:
+    assert new_nb_nodes_2-new_nb_nodes_1 == nb_segs-1
+
+  # check new nodes where affected to volume elements
+  affectedVolumes_2_nodes = affectedVolumes_2.GetNodeIDs()
+  for n in range(new_nb_nodes_1 +1, new_nb_nodes_2):
+    assert n in affectedVolumes_2_nodes, "New node not affected to affectedVolumes_2 in %s"%mesh_name
+
+createMesh("hexahedra")
+createMesh("polyhedra")
+createMesh("polygons")
+
+
+if salome.sg.hasDesktop():
+  salome.sg.updateObjBrowser()
diff --git a/test/ex00_all.py b/test/ex00_all.py
new file mode 100644 (file)
index 0000000..89bc9fb
--- /dev/null
@@ -0,0 +1,46 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# ==================================
+# Load all examples
+# -----------------
+#
+import ex01_cube2build
+import ex02_cube2primitive
+import ex03_cube2partition
+import ex04_cube5tetraHexa
+import ex05_hole1build
+import ex06_hole1boolean
+import ex07_hole1partition
+import ex08_hole2build
+import ex09_grid4build
+import ex10_grid4geometry
+import ex11_grid3partition
+import ex12_grid17partition
+import ex13_hole1partial
+import ex14_cyl1holed
+import ex15_cyl2geometry
+import ex16_cyl2complementary
+import ex17_dome1
+import ex18_dome2
+import ex19_sphereINcube
diff --git a/test/ex01_cube2build.py b/test/ex01_cube2build.py
new file mode 100644 (file)
index 0000000..8ecafd1
--- /dev/null
@@ -0,0 +1,328 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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()
+
+# Geometry
+# ========
+
+# A small cube centered and put on a great cube build by points, edges, faces and solids
+
+# Points
+# ------
+
+greatPoint111 = geompy.MakeVertex( 0,  0,  0)
+greatPoint211 = geompy.MakeVertex(10,  0,  0)
+greatPoint311 = geompy.MakeVertex(20,  0,  0)
+greatPoint411 = geompy.MakeVertex(30,  0,  0)
+
+greatPoint121 = geompy.MakeVertex( 0, 10,  0)
+greatPoint221 = geompy.MakeVertex(10, 10,  0)
+greatPoint321 = geompy.MakeVertex(20, 10,  0)
+greatPoint421 = geompy.MakeVertex(30, 10,  0)
+
+greatPoint112 = geompy.MakeVertex( 0,  0, 10)
+greatPoint212 = geompy.MakeVertex(10,  0, 10)
+greatPoint312 = geompy.MakeVertex(20,  0, 10)
+greatPoint412 = geompy.MakeVertex(30,  0, 10)
+
+greatPoint122 = geompy.MakeVertex( 0, 10, 10)
+greatPoint222 = geompy.MakeVertex(10, 10, 10)
+greatPoint322 = geompy.MakeVertex(20, 10, 10)
+greatPoint422 = geompy.MakeVertex(30, 10, 10)
+
+greatPoint113 = geompy.MakeVertex( 0,  0, 20)
+greatPoint213 = geompy.MakeVertex(10,  0, 20)
+greatPoint313 = geompy.MakeVertex(20,  0, 20)
+greatPoint413 = geompy.MakeVertex(30,  0, 20)
+
+greatPoint123 = geompy.MakeVertex( 0, 10, 20)
+greatPoint223 = geompy.MakeVertex(10, 10, 20)
+greatPoint323 = geompy.MakeVertex(20, 10, 20)
+greatPoint423 = geompy.MakeVertex(30, 10, 20)
+
+greatPoint114 = geompy.MakeVertex( 0,  0, 30)
+greatPoint214 = geompy.MakeVertex(10,  0, 30)
+greatPoint314 = geompy.MakeVertex(20,  0, 30)
+greatPoint414 = geompy.MakeVertex(30,  0, 30)
+
+greatPoint124 = geompy.MakeVertex( 0, 10, 30)
+greatPoint224 = geompy.MakeVertex(10, 10, 30)
+greatPoint324 = geompy.MakeVertex(20, 10, 30)
+greatPoint424 = geompy.MakeVertex(30, 10, 30)
+
+
+smallPoint111 = greatPoint222
+smallPoint211 = greatPoint322
+smallPoint121 = geompy.MakeVertex(10, 20, 10)
+smallPoint221 = geompy.MakeVertex(20, 20, 10)
+
+smallPoint112 = greatPoint223
+smallPoint212 = greatPoint323
+smallPoint122 = geompy.MakeVertex(10, 20, 20)
+smallPoint222 = geompy.MakeVertex(20, 20, 20)
+
+# Edges
+# -----
+
+smallEdgeX11 = geompy.MakeEdge(smallPoint111, smallPoint211)
+smallEdgeX21 = geompy.MakeEdge(smallPoint121, smallPoint221)
+smallEdgeX12 = geompy.MakeEdge(smallPoint112, smallPoint212)
+smallEdgeX22 = geompy.MakeEdge(smallPoint122, smallPoint222)
+
+smallEdgeY11 = geompy.MakeEdge(smallPoint111, smallPoint121)
+smallEdgeY21 = geompy.MakeEdge(smallPoint211, smallPoint221)
+smallEdgeY12 = geompy.MakeEdge(smallPoint112, smallPoint122)
+smallEdgeY22 = geompy.MakeEdge(smallPoint212, smallPoint222)
+
+smallEdgeZ11 = geompy.MakeEdge(smallPoint111, smallPoint112)
+smallEdgeZ21 = geompy.MakeEdge(smallPoint211, smallPoint212)
+smallEdgeZ12 = geompy.MakeEdge(smallPoint121, smallPoint122)
+smallEdgeZ22 = geompy.MakeEdge(smallPoint221, smallPoint222)
+
+
+greatEdgeX111 = geompy.MakeEdge(greatPoint111, greatPoint211)
+greatEdgeX211 = geompy.MakeEdge(greatPoint211, greatPoint311)
+greatEdgeX311 = geompy.MakeEdge(greatPoint311, greatPoint411)
+greatEdgeX121 = geompy.MakeEdge(greatPoint121, greatPoint221)
+greatEdgeX221 = geompy.MakeEdge(greatPoint221, greatPoint321)
+greatEdgeX321 = geompy.MakeEdge(greatPoint321, greatPoint421)
+
+greatEdgeX112 = geompy.MakeEdge(greatPoint112, greatPoint212)
+greatEdgeX212 = geompy.MakeEdge(greatPoint212, greatPoint312)
+greatEdgeX312 = geompy.MakeEdge(greatPoint312, greatPoint412)
+greatEdgeX122 = geompy.MakeEdge(greatPoint122, greatPoint222)
+greatEdgeX222 = smallEdgeX11
+greatEdgeX322 = geompy.MakeEdge(greatPoint322, greatPoint422)
+
+greatEdgeX113 = geompy.MakeEdge(greatPoint113, greatPoint213)
+greatEdgeX213 = geompy.MakeEdge(greatPoint213, greatPoint313)
+greatEdgeX313 = geompy.MakeEdge(greatPoint313, greatPoint413)
+greatEdgeX123 = geompy.MakeEdge(greatPoint123, greatPoint223)
+greatEdgeX223 = smallEdgeX12
+greatEdgeX323 = geompy.MakeEdge(greatPoint323, greatPoint423)
+
+greatEdgeX114 = geompy.MakeEdge(greatPoint114, greatPoint214)
+greatEdgeX214 = geompy.MakeEdge(greatPoint214, greatPoint314)
+greatEdgeX314 = geompy.MakeEdge(greatPoint314, greatPoint414)
+greatEdgeX124 = geompy.MakeEdge(greatPoint124, greatPoint224)
+greatEdgeX224 = geompy.MakeEdge(greatPoint224, greatPoint324)
+greatEdgeX324 = geompy.MakeEdge(greatPoint324, greatPoint424)
+
+greatEdgeY11 = geompy.MakeEdge(greatPoint111, greatPoint121)
+greatEdgeY21 = geompy.MakeEdge(greatPoint211, greatPoint221)
+greatEdgeY31 = geompy.MakeEdge(greatPoint311, greatPoint321)
+greatEdgeY41 = geompy.MakeEdge(greatPoint411, greatPoint421)
+
+greatEdgeY12 = geompy.MakeEdge(greatPoint112, greatPoint122)
+greatEdgeY22 = geompy.MakeEdge(greatPoint212, greatPoint222)
+greatEdgeY32 = geompy.MakeEdge(greatPoint312, greatPoint322)
+greatEdgeY42 = geompy.MakeEdge(greatPoint412, greatPoint422)
+
+greatEdgeY13 = geompy.MakeEdge(greatPoint113, greatPoint123)
+greatEdgeY23 = geompy.MakeEdge(greatPoint213, greatPoint223)
+greatEdgeY33 = geompy.MakeEdge(greatPoint313, greatPoint323)
+greatEdgeY43 = geompy.MakeEdge(greatPoint413, greatPoint423)
+
+greatEdgeY14 = geompy.MakeEdge(greatPoint114, greatPoint124)
+greatEdgeY24 = geompy.MakeEdge(greatPoint214, greatPoint224)
+greatEdgeY34 = geompy.MakeEdge(greatPoint314, greatPoint324)
+greatEdgeY44 = geompy.MakeEdge(greatPoint414, greatPoint424)
+
+greatEdgeZ111 = geompy.MakeEdge(greatPoint111, greatPoint112)
+greatEdgeZ211 = geompy.MakeEdge(greatPoint211, greatPoint212)
+greatEdgeZ311 = geompy.MakeEdge(greatPoint311, greatPoint312)
+greatEdgeZ411 = geompy.MakeEdge(greatPoint411, greatPoint412)
+
+greatEdgeZ121 = geompy.MakeEdge(greatPoint121, greatPoint122)
+greatEdgeZ221 = geompy.MakeEdge(greatPoint221, greatPoint222)
+greatEdgeZ321 = geompy.MakeEdge(greatPoint321, greatPoint322)
+greatEdgeZ421 = geompy.MakeEdge(greatPoint421, greatPoint422)
+
+greatEdgeZ112 = geompy.MakeEdge(greatPoint112, greatPoint113)
+greatEdgeZ212 = geompy.MakeEdge(greatPoint212, greatPoint213)
+greatEdgeZ312 = geompy.MakeEdge(greatPoint312, greatPoint313)
+greatEdgeZ412 = geompy.MakeEdge(greatPoint412, greatPoint413)
+
+greatEdgeZ122 = geompy.MakeEdge(greatPoint122, greatPoint123)
+greatEdgeZ222 = smallEdgeZ11
+greatEdgeZ322 = smallEdgeZ21
+greatEdgeZ422 = geompy.MakeEdge(greatPoint422, greatPoint423)
+
+greatEdgeZ113 = geompy.MakeEdge(greatPoint113, greatPoint114)
+greatEdgeZ213 = geompy.MakeEdge(greatPoint213, greatPoint214)
+greatEdgeZ313 = geompy.MakeEdge(greatPoint313, greatPoint314)
+greatEdgeZ413 = geompy.MakeEdge(greatPoint413, greatPoint414)
+
+greatEdgeZ123 = geompy.MakeEdge(greatPoint123, greatPoint124)
+greatEdgeZ223 = geompy.MakeEdge(greatPoint223, greatPoint224)
+greatEdgeZ323 = geompy.MakeEdge(greatPoint323, greatPoint324)
+greatEdgeZ423 = geompy.MakeEdge(greatPoint423, greatPoint424)
+
+# Faces
+# -----
+
+smallFaceX1 = geompy.MakeQuad(smallEdgeY11, smallEdgeZ11, smallEdgeY12, smallEdgeZ12)
+smallFaceX2 = geompy.MakeQuad(smallEdgeY21, smallEdgeZ21, smallEdgeY22, smallEdgeZ22)
+smallFaceY1 = geompy.MakeQuad(smallEdgeX11, smallEdgeZ11, smallEdgeX12, smallEdgeZ21)
+smallFaceY2 = geompy.MakeQuad(smallEdgeX21, smallEdgeZ12, smallEdgeX22, smallEdgeZ22)
+smallFaceZ1 = geompy.MakeQuad(smallEdgeX11, smallEdgeY11, smallEdgeX21, smallEdgeY21)
+smallFaceZ2 = geompy.MakeQuad(smallEdgeX12, smallEdgeY12, smallEdgeX22, smallEdgeY22)
+
+
+greatFaceX11 = geompy.MakeQuad(greatEdgeY11, greatEdgeZ111, greatEdgeY12, greatEdgeZ121)
+greatFaceX21 = geompy.MakeQuad(greatEdgeY21, greatEdgeZ211, greatEdgeY22, greatEdgeZ221)
+greatFaceX31 = geompy.MakeQuad(greatEdgeY31, greatEdgeZ311, greatEdgeY32, greatEdgeZ321)
+greatFaceX41 = geompy.MakeQuad(greatEdgeY41, greatEdgeZ411, greatEdgeY42, greatEdgeZ421)
+
+greatFaceX12 = geompy.MakeQuad(greatEdgeY12, greatEdgeZ112, greatEdgeY13, greatEdgeZ122)
+greatFaceX22 = geompy.MakeQuad(greatEdgeY22, greatEdgeZ212, greatEdgeY23, greatEdgeZ222)
+greatFaceX32 = geompy.MakeQuad(greatEdgeY32, greatEdgeZ312, greatEdgeY33, greatEdgeZ322)
+greatFaceX42 = geompy.MakeQuad(greatEdgeY42, greatEdgeZ412, greatEdgeY43, greatEdgeZ422)
+
+greatFaceX13 = geompy.MakeQuad(greatEdgeY13, greatEdgeZ113, greatEdgeY14, greatEdgeZ123)
+greatFaceX23 = geompy.MakeQuad(greatEdgeY23, greatEdgeZ213, greatEdgeY24, greatEdgeZ223)
+greatFaceX33 = geompy.MakeQuad(greatEdgeY33, greatEdgeZ313, greatEdgeY34, greatEdgeZ323)
+greatFaceX43 = geompy.MakeQuad(greatEdgeY43, greatEdgeZ413, greatEdgeY44, greatEdgeZ423)
+
+greatFaceY111 = geompy.MakeQuad(greatEdgeX111, greatEdgeZ111, greatEdgeX112, greatEdgeZ211)
+greatFaceY211 = geompy.MakeQuad(greatEdgeX211, greatEdgeZ211, greatEdgeX212, greatEdgeZ311)
+greatFaceY311 = geompy.MakeQuad(greatEdgeX311, greatEdgeZ311, greatEdgeX312, greatEdgeZ411)
+greatFaceY121 = geompy.MakeQuad(greatEdgeX121, greatEdgeZ121, greatEdgeX122, greatEdgeZ221)
+greatFaceY221 = geompy.MakeQuad(greatEdgeX221, greatEdgeZ221, greatEdgeX222, greatEdgeZ321)
+greatFaceY321 = geompy.MakeQuad(greatEdgeX321, greatEdgeZ321, greatEdgeX322, greatEdgeZ421)
+
+greatFaceY112 = geompy.MakeQuad(greatEdgeX112, greatEdgeZ112, greatEdgeX113, greatEdgeZ212)
+greatFaceY212 = geompy.MakeQuad(greatEdgeX212, greatEdgeZ212, greatEdgeX213, greatEdgeZ312)
+greatFaceY312 = geompy.MakeQuad(greatEdgeX312, greatEdgeZ312, greatEdgeX313, greatEdgeZ412)
+greatFaceY122 = geompy.MakeQuad(greatEdgeX122, greatEdgeZ122, greatEdgeX123, greatEdgeZ222)
+greatFaceY222 = smallFaceY1
+greatFaceY322 = geompy.MakeQuad(greatEdgeX322, greatEdgeZ322, greatEdgeX323, greatEdgeZ422)
+
+greatFaceY113 = geompy.MakeQuad(greatEdgeX113, greatEdgeZ113, greatEdgeX114, greatEdgeZ213)
+greatFaceY213 = geompy.MakeQuad(greatEdgeX213, greatEdgeZ213, greatEdgeX214, greatEdgeZ313)
+greatFaceY313 = geompy.MakeQuad(greatEdgeX313, greatEdgeZ313, greatEdgeX314, greatEdgeZ413)
+greatFaceY123 = geompy.MakeQuad(greatEdgeX123, greatEdgeZ123, greatEdgeX124, greatEdgeZ223)
+greatFaceY223 = geompy.MakeQuad(greatEdgeX223, greatEdgeZ223, greatEdgeX224, greatEdgeZ323)
+greatFaceY323 = geompy.MakeQuad(greatEdgeX323, greatEdgeZ323, greatEdgeX324, greatEdgeZ423)
+
+greatFaceZ11 = geompy.MakeQuad(greatEdgeX111, greatEdgeY11, greatEdgeX121, greatEdgeY21)
+greatFaceZ21 = geompy.MakeQuad(greatEdgeX211, greatEdgeY21, greatEdgeX221, greatEdgeY31)
+greatFaceZ31 = geompy.MakeQuad(greatEdgeX311, greatEdgeY31, greatEdgeX321, greatEdgeY41)
+
+greatFaceZ12 = geompy.MakeQuad(greatEdgeX112, greatEdgeY12, greatEdgeX122, greatEdgeY22)
+greatFaceZ22 = geompy.MakeQuad(greatEdgeX212, greatEdgeY22, greatEdgeX222, greatEdgeY32)
+greatFaceZ32 = geompy.MakeQuad(greatEdgeX312, greatEdgeY32, greatEdgeX322, greatEdgeY42)
+
+greatFaceZ13 = geompy.MakeQuad(greatEdgeX113, greatEdgeY13, greatEdgeX123, greatEdgeY23)
+greatFaceZ23 = geompy.MakeQuad(greatEdgeX213, greatEdgeY23, greatEdgeX223, greatEdgeY33)
+greatFaceZ33 = geompy.MakeQuad(greatEdgeX313, greatEdgeY33, greatEdgeX323, greatEdgeY43)
+
+greatFaceZ14 = geompy.MakeQuad(greatEdgeX114, greatEdgeY14, greatEdgeX124, greatEdgeY24)
+greatFaceZ24 = geompy.MakeQuad(greatEdgeX214, greatEdgeY24, greatEdgeX224, greatEdgeY34)
+greatFaceZ34 = geompy.MakeQuad(greatEdgeX314, greatEdgeY34, greatEdgeX324, greatEdgeY44)
+
+# Solids
+# ------
+
+smallBlock   = geompy.MakeHexa(smallFaceX1, smallFaceX2, smallFaceY1, smallFaceY2, smallFaceZ1, smallFaceZ2)
+
+greatBlock11 = geompy.MakeHexa(greatFaceX11, greatFaceX21, greatFaceY111, greatFaceY121, greatFaceZ11, greatFaceZ12)
+greatBlock21 = geompy.MakeHexa(greatFaceX21, greatFaceX31, greatFaceY211, greatFaceY221, greatFaceZ21, greatFaceZ22)
+greatBlock31 = geompy.MakeHexa(greatFaceX31, greatFaceX41, greatFaceY311, greatFaceY321, greatFaceZ31, greatFaceZ32)
+
+greatBlock12 = geompy.MakeHexa(greatFaceX12, greatFaceX22, greatFaceY112, greatFaceY122, greatFaceZ12, greatFaceZ13)
+greatBlock22 = geompy.MakeHexa(greatFaceX22, greatFaceX32, greatFaceY212, greatFaceY222, greatFaceZ22, greatFaceZ23)
+greatBlock32 = geompy.MakeHexa(greatFaceX32, greatFaceX42, greatFaceY312, greatFaceY322, greatFaceZ32, greatFaceZ33)
+
+greatBlock13 = geompy.MakeHexa(greatFaceX13, greatFaceX23, greatFaceY113, greatFaceY123, greatFaceZ13, greatFaceZ14)
+greatBlock23 = geompy.MakeHexa(greatFaceX23, greatFaceX33, greatFaceY213, greatFaceY223, greatFaceZ23, greatFaceZ24)
+greatBlock33 = geompy.MakeHexa(greatFaceX33, greatFaceX43, greatFaceY313, greatFaceY323, greatFaceZ33, greatFaceZ34)
+
+# Compound
+# --------
+
+c_l = []
+c_l.append(smallBlock)
+c_l.append(greatBlock11)
+c_l.append(greatBlock21)
+c_l.append(greatBlock31)
+c_l.append(greatBlock12)
+c_l.append(greatBlock22)
+c_l.append(greatBlock32)
+c_l.append(greatBlock13)
+c_l.append(greatBlock23)
+c_l.append(greatBlock33)
+
+piece = geompy.MakeCompound(c_l)
+
+# Add in study
+# ------------
+
+piece_id = geompy.addToStudy(piece, "ex01_cube2build")
+
+# Meshing
+# =======
+
+# Create hexahedrical mesh on piece
+# ---------------------------------
+
+hexa = smesh.Mesh(piece, "ex01_cube2build:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(4)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Create local hypothesis
+# -----------------------
+
+algo = hexa.Segment(greatEdgeX111)
+
+algo.Arithmetic1D(1, 4)
+
+algo.Propagation()
+
+# Compute the mesh
+# ----------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex02_cube2primitive.py b/test/ex02_cube2primitive.py
new file mode 100644 (file)
index 0000000..1c65617
--- /dev/null
@@ -0,0 +1,130 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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()
+
+# Geometry
+# ========
+
+# A small cube centered and put on a great cube build by primitive geometric functionalities
+
+# Values
+# ------
+
+ox = 0
+oy = 0
+oz = 0
+
+arete = 10
+
+# Points
+# ------
+
+blockPoint111 = geompy.MakeVertex(ox      , oy, oz)
+blockPoint211 = geompy.MakeVertex(ox+arete, oy, oz)
+blockPoint112 = geompy.MakeVertex(ox      , oy, oz+arete)
+blockPoint212 = geompy.MakeVertex(ox+arete, oy, oz+arete)
+
+# Face and solid
+# --------------
+
+blockFace1 = geompy.MakeQuad4Vertices(blockPoint111, blockPoint211, blockPoint212, blockPoint112)
+
+blockSolid11  = geompy.MakePrismVecH(blockFace1, geompy.MakeVectorDXDYDZ(0, 1, 0), arete)
+
+# Translations
+# ------------
+
+blockSolid21  = geompy.MakeTranslation(blockSolid11, arete, 0, 0)
+blockSolid31  = geompy.MakeTranslation(blockSolid21, arete, 0, 0)
+
+blockSolid12  = geompy.MakeTranslation(blockSolid11, 0, 0, arete)
+blockSolid22  = geompy.MakeTranslation(blockSolid12, arete, 0, 0)
+blockSolid32  = geompy.MakeTranslation(blockSolid22, arete, 0, 0)
+
+blockSolid13  = geompy.MakeTranslation(blockSolid12, 0, 0, arete)
+blockSolid23  = geompy.MakeTranslation(blockSolid13, arete, 0, 0)
+blockSolid33  = geompy.MakeTranslation(blockSolid23, arete, 0, 0)
+
+blockSolid111 = geompy.MakeTranslation(blockSolid22, 0, arete, 0)
+
+# Compound and glue
+# -----------------
+
+c_l = []
+c_l.append(blockSolid11)
+c_l.append(blockSolid21)
+c_l.append(blockSolid31)
+c_l.append(blockSolid12)
+c_l.append(blockSolid22)
+c_l.append(blockSolid32)
+c_l.append(blockSolid13)
+c_l.append(blockSolid23)
+c_l.append(blockSolid33)
+c_l.append(blockSolid111)
+
+c_cpd = geompy.MakeCompound(c_l)
+
+piece = geompy.MakeGlueFaces(c_cpd, 1.e-5)
+
+# Add in study
+# ------------
+
+piece_id = geompy.addToStudy(piece, "ex02_cube2primitive")
+
+# Meshing
+# =======
+
+# Create hexahedrical mesh on piece
+# ---------------------------------
+
+hexa = smesh.Mesh(piece, "ex02_cube2primitive:hexa")
+
+algo = hexa.Segment()
+algo.LocalLength(1)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Compute the mesh
+# ----------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex03_cube2partition.py b/test/ex03_cube2partition.py
new file mode 100644 (file)
index 0000000..1327afc
--- /dev/null
@@ -0,0 +1,117 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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()
+
+# Geometry
+# ========
+
+# A small cube centered and put on a great cube build with partition
+
+# Values
+# ------
+
+g_ox = 0
+g_oy = 0
+g_oz = 0
+
+g_arete = 10
+
+g_trim = 1000
+
+# Points
+# ------
+
+v_arete2 = g_arete*2
+v_arete3 = g_arete*3
+
+v_1 = geompy.MakeVertex(g_ox         , g_oy         , g_oz         )
+v_2 = geompy.MakeVertex(g_ox+v_arete3, g_oy+g_arete , g_oz+v_arete3)
+
+v_3 = geompy.MakeVertex(g_ox+g_arete , g_oy+g_arete , g_oz+g_arete )
+v_4 = geompy.MakeVertex(g_ox+v_arete2, g_oy+v_arete2, g_oz+v_arete2)
+
+# Solids
+# ------
+
+s_base = geompy.MakeBoxTwoPnt(v_1, v_2)
+s_haut = geompy.MakeBoxTwoPnt(v_3, v_4)
+
+# Partition
+# ---------
+
+p_dir1 = geompy.MakeVectorDXDYDZ(1, 0, 0)
+p_dir2 = geompy.MakeVectorDXDYDZ(0, 0, 1)
+p_dir3 = geompy.MakeVectorDXDYDZ(0, 1, 0)
+
+p_tools = []
+
+p_tools.append(geompy.MakePlane(v_3, p_dir1, g_trim))
+p_tools.append(geompy.MakePlane(v_4, p_dir1, g_trim))
+p_tools.append(geompy.MakePlane(v_3, p_dir2, g_trim))
+p_tools.append(geompy.MakePlane(v_4, p_dir2, g_trim))
+p_tools.append(geompy.MakePlane(v_3, p_dir3, g_trim))
+
+piece = geompy.MakePartition([s_base, s_haut], p_tools, [], [], geompy.ShapeType["SOLID"])
+
+# Study
+# -----
+
+piece_id = geompy.addToStudy(piece, "ex03_cube2partition")
+
+# Meshing
+# =======
+
+# Create hexahedrical mesh on piece
+# ---------------------------------
+
+hexa = smesh.Mesh(piece, "ex03_cube2partition:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(5)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Compute the mesh
+# ----------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex04_cube5tetraHexa.py b/test/ex04_cube5tetraHexa.py
new file mode 100644 (file)
index 0000000..337b381
--- /dev/null
@@ -0,0 +1,122 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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()
+
+# Geometry
+# ========
+
+# 5 box with a hexahedral mesh and with 2 box in tetrahedral mesh
+
+# Values
+# ------
+
+arete = 100
+
+arete0 = 0
+arete1 = arete
+arete2 = arete*2
+arete3 = arete*3
+
+# Solids
+# ------
+
+box_tetra1 = geompy.MakeBox(arete0, arete0, 0,  arete1, arete1, arete)
+
+box_ijk1   = geompy.MakeBox(arete1, arete0, 0,  arete2, arete1, arete)
+
+box_hexa   = geompy.MakeBox(arete1, arete1, 0,  arete2, arete2, arete)
+
+box_ijk2   = geompy.MakeBox(arete2, arete1, 0,  arete3, arete2, arete)
+
+box_tetra2 = geompy.MakeBox(arete2, arete2, 0,  arete3 ,arete3, arete)
+
+# Piece
+# -----
+
+piece_cpd = geompy.MakeCompound([box_tetra1, box_ijk1, box_hexa, box_ijk2, box_tetra2])
+
+piece = geompy.MakeGlueFaces(piece_cpd, 1e-4)
+
+piece_id = geompy.addToStudy(piece, "ex04_cube5tetraHexa")
+
+# Meshing
+# =======
+
+# Create a hexahedral mesh
+# ------------------------
+
+mixed = smesh.Mesh(piece, "ex04_cube5tetraHexa:mixed")
+
+algo = mixed.Segment()
+
+algo.StartEndLength(3, 25)
+
+mixed.Quadrangle()
+
+mixed.Hexahedron()
+
+# Tetrahedral local mesh
+# ----------------------
+
+def localMesh(b, hyp):
+    box   = geompy.GetInPlace(piece, b)
+    faces = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
+
+    i = 0
+    n = len(faces)
+    while i<n:
+        algo = mixed.Triangle(faces[i])
+        if hyp:
+            algo.MaxElementArea(80)
+        else:
+            algo.LengthFromEdges()
+        i = i + 1
+
+    algo = mixed.Tetrahedron(smeshBuilder.NETGEN, box)
+    algo.MaxElementVolume(400)
+
+localMesh(box_tetra1, 1)
+localMesh(box_tetra2, 0)
+
+# Mesh calculus
+# -------------
+
+isDone = mixed.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex05_hole1build.py b/test/ex05_hole1build.py
new file mode 100644 (file)
index 0000000..148e5b4
--- /dev/null
@@ -0,0 +1,157 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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 math
+
+# Geometry
+# ========
+
+# A centered holed cube build by  build by points, edges, faces and solids
+
+# Values
+# ------
+
+ox = 0
+oy = 0
+oz = 0
+
+longueur = 100
+largeur  =  80
+hauteur  =  50
+
+rayon = 10
+
+# Points
+# ------
+
+basePoint111 = geompy.MakeVertex(ox         ,  oy, oz)
+basePoint211 = geompy.MakeVertex(ox+longueur,  oy, oz)
+basePoint112 = geompy.MakeVertex(ox         ,  oy, oz+largeur)
+basePoint212 = geompy.MakeVertex(ox+longueur,  oy, oz+largeur)
+
+cx = ox+longueur/2
+cy = oy
+cz = oz+largeur/2
+
+ll = longueur/largeur
+ll = ll*ll
+dx = rayon/math.sqrt(1+ll)
+dz = rayon/math.sqrt(1+1/ll)
+
+circlePoint1 = geompy.MakeVertex(cx-dx, cy, cz-dz)
+circlePoint2 = geompy.MakeVertex(cx+dx, cy, cz-dz)
+circlePoint3 = geompy.MakeVertex(cx+dx, cy, cz+dz)
+circlePoint4 = geompy.MakeVertex(cx-dx, cy, cz+dz)
+
+# Edges
+# -----
+
+squareEdge1 = geompy.MakeEdge(basePoint111, basePoint211)
+squareEdge2 = geompy.MakeEdge(basePoint211, basePoint212)
+squareEdge3 = geompy.MakeEdge(basePoint212, basePoint112)
+squareEdge4 = geompy.MakeEdge(basePoint112, basePoint111)
+
+diagEdge1   = geompy.MakeEdge(basePoint111, circlePoint1)
+diagEdge2   = geompy.MakeEdge(basePoint211, circlePoint2)
+diagEdge3   = geompy.MakeEdge(basePoint212, circlePoint3)
+diagEdge4   = geompy.MakeEdge(basePoint112, circlePoint4)
+
+arcEdge1    = geompy.MakeArc(circlePoint1, geompy.MakeVertex(cx      , cy, cz-rayon), circlePoint2)
+arcEdge2    = geompy.MakeArc(circlePoint2, geompy.MakeVertex(cx+rayon, cy, cz      ), circlePoint3)
+arcEdge3    = geompy.MakeArc(circlePoint3, geompy.MakeVertex(cx      , cy, cz+rayon), circlePoint4)
+arcEdge4    = geompy.MakeArc(circlePoint4, geompy.MakeVertex(cx-rayon, cy, cz      ), circlePoint1)
+
+# Faces
+# -----
+
+baseFace1 = geompy.MakeQuad(squareEdge1, diagEdge2, arcEdge1, diagEdge1)
+baseFace2 = geompy.MakeQuad(squareEdge2, diagEdge3, arcEdge2, diagEdge2)
+baseFace3 = geompy.MakeQuad(squareEdge3, diagEdge4, arcEdge3, diagEdge3)
+baseFace4 = geompy.MakeQuad(squareEdge4, diagEdge1, arcEdge4, diagEdge4)
+
+# Solids
+# ------
+
+baseVector = geompy.MakeVectorDXDYDZ(0, 1, 0)
+
+baseSolid1 = geompy.MakePrismVecH(baseFace1, baseVector, hauteur)
+baseSolid2 = geompy.MakePrismVecH(baseFace2, baseVector, hauteur)
+baseSolid3 = geompy.MakePrismVecH(baseFace3, baseVector, hauteur)
+baseSolid4 = geompy.MakePrismVecH(baseFace4, baseVector, hauteur)
+
+# Compound
+# --------
+
+c_l = []
+c_l.append(baseSolid1)
+c_l.append(baseSolid2)
+c_l.append(baseSolid3)
+c_l.append(baseSolid4)
+
+c_cpd = geompy.MakeCompound(c_l)
+piece = geompy.MakeGlueFaces(c_cpd, 1.e-5)
+
+# Add in study
+# ------------
+
+piece_id = geompy.addToStudy(piece, "ex05_hole1build")
+
+# Meshing
+# =======
+
+# Create a hexahedral mesh
+# ------------------------
+
+hexa = smesh.Mesh(piece, "ex05_hole1build:hexa")
+
+algo = hexa.Segment()
+
+algo.NumberOfSegments(6, 3)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Mesh calculus
+# -------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex06_hole1boolean.py b/test/ex06_hole1boolean.py
new file mode 100644 (file)
index 0000000..a3e2d28
--- /dev/null
@@ -0,0 +1,174 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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()
+
+# Geometry
+# ========
+
+# A not centered holed cube build by boolean geometric operations
+
+# Values
+# ------
+
+ox = 0
+oy = 0
+oz = 0
+
+longueur1 = 30
+longueur2 = 70
+
+largeur1  = 30
+largeur2  = 50
+
+hauteur   = 50
+
+rayon = 10
+
+# Triangular face
+# ---------------
+
+def triangle(p1, p2, p3):
+    l = []
+    l.append(geompy.MakeEdge(p1, p2))
+    l.append(geompy.MakeEdge(p2, p3))
+    l.append(geompy.MakeEdge(p3, p1))
+    w = geompy.MakeWire(l)
+    return geompy.MakeFace(w, 1)
+
+# Points
+# ------
+
+basePoint111 = geompy.MakeVertex(ox-longueur1,  oy, oz-largeur1)
+basePoint211 = geompy.MakeVertex(ox+longueur2,  oy, oz-largeur1)
+basePoint112 = geompy.MakeVertex(ox-longueur1,  oy, oz+largeur2)
+basePoint212 = geompy.MakeVertex(ox+longueur2,  oy, oz+largeur2)
+
+holePoint    = geompy.MakeVertex(ox, oy, oz)
+
+# Faces
+# -----
+
+baseFace1 = triangle(basePoint111, basePoint211, holePoint)
+baseFace2 = triangle(basePoint211, basePoint212, holePoint)
+baseFace3 = triangle(basePoint212, basePoint112, holePoint)
+baseFace4 = triangle(basePoint112, basePoint111, holePoint)
+
+# Solids
+# ------
+
+baseVector = geompy.MakeVectorDXDYDZ(0, 1, 0)
+
+baseSolid1 = geompy.MakePrismVecH(baseFace1, baseVector, hauteur)
+baseSolid2 = geompy.MakePrismVecH(baseFace2, baseVector, hauteur)
+baseSolid3 = geompy.MakePrismVecH(baseFace3, baseVector, hauteur)
+baseSolid4 = geompy.MakePrismVecH(baseFace4, baseVector, hauteur)
+
+holeSolid = geompy.MakeCylinder(holePoint, baseVector, rayon, hauteur)
+
+# Boolean operations
+# ------------------
+
+baseHexa1 = geompy.MakeCut(baseSolid1, holeSolid)
+baseHexa2 = geompy.MakeCut(baseSolid2, holeSolid)
+baseHexa3 = geompy.MakeCut(baseSolid3, holeSolid)
+baseHexa4 = geompy.MakeCut(baseSolid4, holeSolid)
+
+# Compound, glue and repair
+# -------------------------
+
+c_l = []
+c_l.append(baseHexa1)
+c_l.append(baseHexa2)
+c_l.append(baseHexa3)
+c_l.append(baseHexa4)
+
+c_cpd = geompy.MakeCompound(c_l)
+c_glu = geompy.MakeGlueFaces(c_cpd, 1.e-5)
+piece = geompy.RemoveExtraEdges(c_glu, doUnionFaces=True)
+
+# Add in study
+# ------------
+
+piece_id = geompy.addToStudy(piece, "ex06_hole1boolean")
+
+# Meshing
+# =======
+
+# Create a hexahedral mesh
+# ------------------------
+
+hexa = smesh.Mesh(piece, "ex06_hole1boolean:hexa")
+
+algo = hexa.Segment()
+
+algo.NumberOfSegments(11)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Create local hypothesis
+# -----------------------
+
+edge1 = geompy.GetEdgeNearPoint(piece, geompy.MakeVertex(ox, oy, oz-largeur1))
+algo1 = hexa.Segment(edge1)
+algo1.NumberOfSegments(3)
+algo1.Propagation()
+
+edge2 = geompy.GetEdgeNearPoint(piece, geompy.MakeVertex(ox-longueur1, oy, oz))
+algo2 = hexa.Segment(edge2)
+algo2.NumberOfSegments(5)
+algo2.Propagation()
+
+edge3 = geompy.GetEdgeNearPoint(piece, geompy.MakeVertex(ox, oy, oz+largeur2))
+algo3 = hexa.Segment(edge3)
+algo3.NumberOfSegments(7)
+algo3.Propagation()
+
+edge4 = geompy.GetEdgeNearPoint(piece, geompy.MakeVertex(ox+longueur2, oy, oz))
+algo4 = hexa.Segment(edge4)
+algo4.NumberOfSegments(9)
+algo4.Propagation()
+
+# Mesh calculus
+# -------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex07_hole1partition.py b/test/ex07_hole1partition.py
new file mode 100644 (file)
index 0000000..336dfa4
--- /dev/null
@@ -0,0 +1,114 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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()
+
+# Geometry
+# ========
+
+# A holed cube build by partitioning geometric operations
+
+# Values
+# ------
+
+g_x = 0
+g_y = 0
+g_z = 0
+
+g_longueur = 50.0
+g_largeur  = 40.0
+g_hauteur  = 25.0
+
+g_rayon = 10
+
+g_trim = 1000
+
+# Box
+# ---
+
+b_boite = geompy.MakeBox(g_x-g_longueur, g_y-g_hauteur, g_z-g_largeur,  g_x+g_longueur, g_y+g_hauteur, g_z+g_largeur)
+
+# Cylinder
+# --------
+
+c_axe = geompy.MakeVectorDXDYDZ(0, 1, 0)
+
+c_cyl = geompy.MakeCylinder(geompy.MakeVertex(g_x, g_y-g_hauteur, g_z), c_axe, g_rayon, g_hauteur*2)
+
+c_piece = geompy.MakeCut(b_boite, c_cyl)
+
+# Partition and reperation
+# ------------------------
+
+p_centre = geompy.MakeVertex(g_x, g_y, g_z)
+
+p_tools = []
+p_tools.append(geompy.MakePlane(p_centre, geompy.MakeVectorDXDYDZ( g_largeur, 0, g_longueur), g_trim))
+p_tools.append(geompy.MakePlane(p_centre, geompy.MakeVectorDXDYDZ(-g_largeur, 0, g_longueur), g_trim))
+
+p_part = geompy.MakePartition([c_piece], p_tools, [], [], geompy.ShapeType["SOLID"])
+
+p_blocs = geompy.RemoveExtraEdges(p_part, doUnionFaces=True)
+piece   = geompy.MakeGlueFaces(p_blocs, 1.e-5)
+
+# Add in study
+# ------------
+
+piece_id = geompy.addToStudy(piece, "ex07_hole1partition")
+
+# Meshing
+# =======
+
+# Create a hexahedral mesh
+# ------------------------
+
+hexa = smesh.Mesh(piece, "ex07_hole1partition:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(20)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Mesh calculus
+# -------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex08_hole2build.py b/test/ex08_hole2build.py
new file mode 100644 (file)
index 0000000..326337c
--- /dev/null
@@ -0,0 +1,147 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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()
+
+# Geometry
+# ========
+
+# A twice holed cube build by points, edges, faces and solids
+
+# Values
+# ------
+
+ox = 0
+oy = 0
+oz = 0
+
+longueur = 200
+largeur  = 100
+hauteur  =  80
+
+cylindre = 50
+
+rayon = 20
+
+# Points
+# ------
+
+piecePoint1 = geompy.MakeVertex(ox         , oy, oz)
+piecePoint2 = geompy.MakeVertex(ox+longueur, oy, oz)
+piecePoint3 = geompy.MakeVertex(ox+longueur, oy, oz+largeur)
+piecePoint4 = geompy.MakeVertex(ox         , oy, oz+largeur)
+
+cz = oz+largeur/2
+
+cylPoint1    = geompy.MakeVertex(ox+cylindre         , oy, cz-rayon)
+cylPoint2    = geompy.MakeVertex(ox+longueur-cylindre, oy, cz-rayon)
+cylPoint3    = geompy.MakeVertex(ox+longueur-cylindre, oy, cz+rayon)
+cylPoint4    = geompy.MakeVertex(ox+cylindre         , oy, cz+rayon)
+
+# Edges
+# -----
+
+pieceEdge1 = geompy.MakeEdge(piecePoint1, piecePoint4)
+pieceEdge2 = geompy.MakeEdge(piecePoint1, cylPoint1)
+pieceEdge3 = geompy.MakeEdge(piecePoint4, cylPoint4)
+
+pieceEdge4 = geompy.MakeEdge(piecePoint2, piecePoint3)
+pieceEdge5 = geompy.MakeEdge(piecePoint2, cylPoint2)
+pieceEdge6 = geompy.MakeEdge(piecePoint3, cylPoint3)
+
+pieceEdge7 = geompy.MakeEdge(cylPoint1, cylPoint2)
+pieceEdge8 = geompy.MakeEdge(cylPoint3, cylPoint4)
+
+cylEdge1 = geompy.MakeArc(cylPoint1, geompy.MakeVertex(ox+cylindre-rayon         , oy, cz), cylPoint4)
+cylEdge2 = geompy.MakeArc(cylPoint1, geompy.MakeVertex(ox+cylindre+rayon         , oy, cz), cylPoint4)
+cylEdge3 = geompy.MakeArc(cylPoint2, geompy.MakeVertex(ox+longueur-cylindre-rayon, oy, cz), cylPoint3)
+cylEdge4 = geompy.MakeArc(cylPoint2, geompy.MakeVertex(ox+longueur-cylindre+rayon, oy, cz), cylPoint3)
+
+# Faces
+# -----
+
+pieceFace1 = geompy.MakeQuad4Vertices(piecePoint1, piecePoint2, cylPoint2 , cylPoint1 )
+pieceFace2 = geompy.MakeQuad         (pieceEdge1 , pieceEdge2 , cylEdge1  , pieceEdge3)
+pieceFace3 = geompy.MakeQuad4Vertices(piecePoint3, piecePoint4, cylPoint4 , cylPoint3 )
+pieceFace4 = geompy.MakeQuad         (pieceEdge4 , pieceEdge5 , cylEdge4  , pieceEdge6)
+pieceFace5 = geompy.MakeQuad         (pieceEdge7 , cylEdge3   , pieceEdge8, cylEdge2  )
+
+# Solids
+# ------
+
+pieceVector = geompy.MakeVectorDXDYDZ(0, 1, 0)
+
+pieceSolid1 = geompy.MakePrismVecH(pieceFace1, pieceVector, hauteur)
+pieceSolid2 = geompy.MakePrismVecH(pieceFace2, pieceVector, hauteur)
+pieceSolid3 = geompy.MakePrismVecH(pieceFace3, pieceVector, hauteur)
+pieceSolid4 = geompy.MakePrismVecH(pieceFace4, pieceVector, hauteur)
+pieceSolid5 = geompy.MakePrismVecH(pieceFace5, pieceVector, hauteur)
+
+# Compound and glue
+# -----------------
+
+c_cpd = geompy.MakeCompound([pieceSolid1, pieceSolid2, pieceSolid3, pieceSolid4, pieceSolid5])
+
+piece = geompy.MakeGlueFaces(c_cpd, 1.e-5)
+
+# Add in study
+# ------------
+
+piece_id = geompy.addToStudy(piece, "ex08_hole2build")
+
+# Meshing
+# =======
+
+# Create a hexahedral mesh
+# ------------------------
+
+hexa = smesh.Mesh(piece, "ex08_hole2build:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(7)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Mesh calculus
+# -------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex09_grid4build.py b/test/ex09_grid4build.py
new file mode 100644 (file)
index 0000000..38a0b1f
--- /dev/null
@@ -0,0 +1,150 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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 math
+
+# Geometry
+# ========
+
+# Element of a grid compound by a square with a cylinder on each vertex build by points, edges, faces and solids
+
+# Values
+# ------
+
+ox = 0
+oy = 0
+oz = 0
+
+arete   =  50
+hauteur = 100
+
+rayon = 10
+
+demi = rayon/2
+r3   = demi*math.sqrt(3)
+
+# Points
+# ------
+
+piecePoint111 = geompy.MakeVertex(ox+rayon      , oy, oz)
+piecePoint211 = geompy.MakeVertex(ox+arete-rayon, oy, oz)
+piecePoint112 = geompy.MakeVertex(ox            , oy, oz+rayon)
+piecePoint212 = geompy.MakeVertex(ox+arete      , oy, oz+rayon)
+piecePoint113 = geompy.MakeVertex(ox            , oy, oz+arete-rayon)
+piecePoint213 = geompy.MakeVertex(ox+arete      , oy, oz+arete-rayon)
+piecePoint114 = geompy.MakeVertex(ox+rayon      , oy, oz+arete)
+piecePoint214 = geompy.MakeVertex(ox+arete-rayon, oy, oz+arete)
+
+pieceCenter1  = geompy.MakeVertex(ox            , oy, oz)
+pieceCenter2  = geompy.MakeVertex(ox+arete      , oy, oz)
+pieceCenter3  = geompy.MakeVertex(ox            , oy, oz+arete)
+pieceCenter4  = geompy.MakeVertex(ox+arete      , oy, oz+arete)
+
+piecePass1    = geompy.MakeVertex(ox+demi       , oy, oz+r3)
+piecePass2    = geompy.MakeVertex(ox+arete-demi , oy, oz+r3)
+piecePass3    = geompy.MakeVertex(ox+arete-demi , oy, oz+arete-r3)
+piecePass4    = geompy.MakeVertex(ox+demi       , oy, oz+arete-r3)
+
+# Edges
+# -----
+
+pieceEdgeSquare1   = geompy.MakeEdge(piecePoint111, piecePoint211)
+pieceEdgeSquare2   = geompy.MakeEdge(piecePoint114, piecePoint214)
+pieceEdgeSquare3   = geompy.MakeEdge(piecePoint112, piecePoint113)
+pieceEdgeSquare4   = geompy.MakeEdge(piecePoint212, piecePoint213)
+
+pieceEdgeDiagonal1 = geompy.MakeEdge(piecePoint111, piecePoint213)
+pieceEdgeDiagonal2 = geompy.MakeEdge(piecePoint112, piecePoint214)
+
+pieceEdgeArc1 = geompy.MakeArc(piecePoint111, piecePass1, piecePoint112)
+pieceEdgeArc2 = geompy.MakeArc(piecePoint211, piecePass2, piecePoint212)
+pieceEdgeArc3 = geompy.MakeArc(piecePoint213, piecePass3, piecePoint214)
+pieceEdgeArc4 = geompy.MakeArc(piecePoint113, piecePass4, piecePoint114)
+
+# Faces
+# -----
+
+pieceFace1 = geompy.MakeQuad(pieceEdgeSquare1, pieceEdgeArc2, pieceEdgeSquare4, pieceEdgeDiagonal1)
+pieceFace2 = geompy.MakeQuad(pieceEdgeSquare2, pieceEdgeArc4, pieceEdgeSquare3, pieceEdgeDiagonal2)
+
+pieceFace3 = geompy.MakeQuad(pieceEdgeArc1, pieceEdgeDiagonal1, pieceEdgeArc3, pieceEdgeDiagonal2)
+
+# Solids
+# ------
+
+pieceVector = geompy.MakeVectorDXDYDZ(0, 1, 0)
+
+pieceSolid1 = geompy.MakePrismVecH(pieceFace1, pieceVector, hauteur)
+pieceSolid2 = geompy.MakePrismVecH(pieceFace2, pieceVector, hauteur)
+pieceSolid3 = geompy.MakePrismVecH(pieceFace3, pieceVector, hauteur)
+
+# Compound and glue
+# -----------------
+
+c_cpd = geompy.MakeCompound([pieceSolid1, pieceSolid2, pieceSolid3])
+
+piece = geompy.MakeGlueFaces(c_cpd, 1.e-5)
+
+# Add in study
+# ------------
+
+piece_id = geompy.addToStudy(piece, "ex09_grid4build")
+
+# Meshing
+# =======
+
+# Create a hexahedral mesh
+# ------------------------
+
+hexa = smesh.Mesh(piece, "ex09_grid4build:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(6)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Mesh calculus
+# -------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex10_grid4geometry.py b/test/ex10_grid4geometry.py
new file mode 100644 (file)
index 0000000..4a08195
--- /dev/null
@@ -0,0 +1,112 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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()
+
+# Geometry
+# ========
+
+# Element of a grid compound by a square with a cylinder on each vertex build by using partition
+
+# Values
+# ------
+
+ox = 0
+oy = 0
+oz = 0
+
+arete   =  50
+hauteur = 100
+rayon   =  10
+
+g_trim = 1000
+
+# Box
+# ---
+
+piecePoint = geompy.MakeVertex(ox, oy, oz)
+
+pieceBox = geompy.MakeBoxTwoPnt(piecePoint, geompy.MakeVertex(ox+arete, oy+hauteur, oz+arete))
+
+# Cut by cylinders
+# ----------------
+
+dirUp = geompy.MakeVectorDXDYDZ(0, 1, 0)
+
+pieceCut1 = geompy.MakeCut(pieceBox , geompy.MakeCylinder(piecePoint                        , dirUp, rayon, hauteur))
+pieceCut2 = geompy.MakeCut(pieceCut1, geompy.MakeCylinder(geompy.MakeVertex(ox+arete, oy, oz      ), dirUp, rayon, hauteur))
+pieceCut3 = geompy.MakeCut(pieceCut2, geompy.MakeCylinder(geompy.MakeVertex(ox      , oy, oz+arete), dirUp, rayon, hauteur))
+pieceCut4 = geompy.MakeCut(pieceCut3, geompy.MakeCylinder(geompy.MakeVertex(ox+arete, oy, oz+arete), dirUp, rayon, hauteur))
+
+# Compound by make a partition of a solid
+# ---------------------------------------
+
+dir = geompy.MakeVectorDXDYDZ(-1, 0, 1)
+
+tools = []
+tools.append(geompy.MakePlane(geompy.MakeVertex(ox+rayon, oy, oz      ), dir, g_trim))
+tools.append(geompy.MakePlane(geompy.MakeVertex(ox      , oy, oz+rayon), dir, g_trim))
+
+piece = geompy.MakePartition([pieceCut4], tools, [], [], geompy.ShapeType["SOLID"])
+
+# Add in study
+# ------------
+
+piece_id = geompy.addToStudy(piece, "ex10_grid4geometry")
+
+# Meshing
+# =======
+
+# Create a hexahedral mesh
+# ------------------------
+
+hexa = smesh.Mesh(piece, "ex10_grid4geometry:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(10)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Mesh calculus
+# -------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex11_grid3partition.py b/test/ex11_grid3partition.py
new file mode 100644 (file)
index 0000000..e0f9008
--- /dev/null
@@ -0,0 +1,133 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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()
+
+# Geometry
+# ========
+
+# grid compound of 3 x 3 elements
+# an element is compound of 3 cylinders concentriques
+# an element is centered in a square of the grid
+# the smaller cylinder is a hole
+
+# prism the grid, and mesh it in hexahedral way
+
+# Values
+# ------
+
+g_x = 0
+g_y = 0
+g_z = 0
+
+g_arete   = 50
+g_hauteur = 30
+
+g_rayon1 = 20
+g_rayon2 = 30
+g_rayon3 = 40
+
+g_grid = 3
+
+g_trim = 1000
+
+# Element
+# -------
+
+e_boite = geompy.MakeBox(g_x-g_arete, g_y-g_hauteur, g_z-g_arete,  g_x+g_arete, g_y+g_hauteur, g_z+g_arete)
+
+e_hauteur = 2*g_hauteur
+e_centre  = geompy.MakeVertex(g_x, g_y-g_hauteur, g_z)
+e_dir     = geompy.MakeVectorDXDYDZ(0, 1, 0)
+
+e_cyl1 = geompy.MakeCylinder(e_centre, e_dir, g_rayon3, e_hauteur)
+
+e_blo1 = geompy.MakeCut(e_boite, e_cyl1)
+
+e_cyl2 = geompy.MakeCylinder(e_centre, e_dir, g_rayon2, e_hauteur)
+
+e_blo2 = geompy.MakeCut(e_cyl1, e_cyl2)
+
+e_cyl3 = geompy.MakeCylinder(e_centre, e_dir, g_rayon1, e_hauteur)
+
+e_blo3 = geompy.MakeCut(e_cyl2, e_cyl3)
+
+# Partition and repair
+# --------------------
+
+p_tools = []
+p_tools.append(geompy.MakePlane(e_centre, geompy.MakeVectorDXDYDZ( 1, 0, 1), g_trim))
+p_tools.append(geompy.MakePlane(e_centre, geompy.MakeVectorDXDYDZ(-1, 0, 1), g_trim))
+
+p_part = geompy.MakePartition([e_blo1, e_blo2, e_blo3], p_tools, [], [], geompy.ShapeType["SOLID"])
+
+p_element = geompy.RemoveExtraEdges(p_part, doUnionFaces=True)
+
+# Grid and glue
+# -------------
+
+grid = geompy.MakeMultiTranslation2D(p_element, geompy.MakeVectorDXDYDZ(1, 0, 0), 2*g_arete, g_grid, geompy.MakeVectorDXDYDZ(0, 0, 1), 2*g_arete, g_grid)
+
+piece = geompy.MakeGlueFaces(grid, 1e-5)
+
+# Add in study
+# ------------
+
+piece_id = geompy.addToStudy(piece, "ex11_grid3partition")
+
+# Meshing
+# =======
+
+# Create a hexahedral mesh
+# ------------------------
+
+hexa = smesh.Mesh(piece, "ex11_grid3partition:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(3)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Mesh calculus
+# -------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex12_grid17partition.py b/test/ex12_grid17partition.py
new file mode 100644 (file)
index 0000000..14bdf0c
--- /dev/null
@@ -0,0 +1,158 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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 time
+t1= time.time()
+
+# Geometry
+# ========
+
+# grid compound of 3 x 3 elements
+# an element is compound of 3 concentric cylinders
+# an element is centered in a square of the grid
+
+# prism the grid, and mesh it in hexahedral way
+
+# Values
+# ------
+
+g_x = 0
+g_y = 0
+g_z = 0
+
+g_arete   = 50
+g_hauteur = 30
+
+g_rayon1 = 20
+g_rayon2 = 30
+g_rayon3 = 40
+
+g_grid = 3
+
+g_trim = 1000
+
+# Solids and rotation to prevent repair
+# -------------------------------------
+
+s_boite = geompy.MakeBox(g_x-g_arete, g_y-g_hauteur, g_z-g_arete,  g_x+g_arete, g_y+g_hauteur, g_z+g_arete)
+
+s_pi4     = 3.141592653/4
+s_hauteur = 2*g_hauteur
+s_centre  = geompy.MakeVertex(g_x, g_y-g_hauteur, g_z)
+s_dir     = geompy.MakeVectorDXDYDZ(0, 1, 0)
+
+s_cyl0 = geompy.MakeCylinder(s_centre, s_dir, g_rayon3, s_hauteur)
+s_cyl1 = geompy.MakeRotation(s_cyl0, s_dir, s_pi4)
+
+s_blo1 = geompy.MakeCut(s_boite, s_cyl1)
+
+s_cyl0 = geompy.MakeCylinder(s_centre, s_dir, g_rayon2, s_hauteur)
+s_cyl2 = geompy.MakeRotation(s_cyl0, s_dir, s_pi4)
+
+s_blo2 = geompy.MakeCut(s_cyl1, s_cyl2)
+
+s_cyl0 = geompy.MakeCylinder(s_centre, s_dir, g_rayon1, s_hauteur)
+s_cyl3 = geompy.MakeRotation(s_cyl0, s_dir, s_pi4)
+
+s_blo3 = geompy.MakeCut(s_cyl2, s_cyl3)
+
+s_arete = g_rayon1/2
+
+s_blo4 = geompy.MakeBox(g_x-s_arete, g_y-g_hauteur, g_z-s_arete,  g_x+s_arete, g_y+g_hauteur, g_z+s_arete)
+
+s_blo5 = geompy.MakeCut(s_cyl3, s_blo4)
+
+# Partition
+# ---------
+
+p_tools = []
+p_tools.append(geompy.MakePlane(s_centre, geompy.MakeVectorDXDYDZ( 1, 0, 1), g_trim))
+p_tools.append(geompy.MakePlane(s_centre, geompy.MakeVectorDXDYDZ(-1, 0, 1), g_trim))
+
+p_partie = geompy.MakePartition([s_blo1, s_blo2, s_blo3, s_blo5], p_tools, [], [], geompy.ShapeType["SOLID"])
+
+# Compound and glue
+# -----------------
+
+c_blocs = geompy.SubShapeAll(p_partie, geompy.ShapeType["SOLID"])
+c_blocs.append(s_blo4)
+
+c_cpd = geompy.MakeCompound(c_blocs)
+
+c_element = geompy.MakeGlueFaces(c_cpd, 1e-4)
+
+# Grid
+# ----
+
+piece = geompy.MakeMultiTranslation2D(c_element, geompy.MakeVectorDXDYDZ(1, 0, 0), 2*g_arete, g_grid, geompy.MakeVectorDXDYDZ(0, 0, 1), 2*g_arete, g_grid)
+
+# Add in study
+# ------------
+
+piece_id = geompy.addToStudy(piece, "ex12_grid17partition")
+
+t2= time.time()
+
+# Meshing
+# =======
+
+# Create a hexahedral mesh
+# ------------------------
+
+hexa = smesh.Mesh(piece, "ex12_grid17partition:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(2)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Mesh calculus
+# -------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+t3= time.time()
+
+print ("time geom",t2-t1)
+print ("time mesh",t3-t2 )
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex13_hole1partial.py b/test/ex13_hole1partial.py
new file mode 100644 (file)
index 0000000..a69492a
--- /dev/null
@@ -0,0 +1,266 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# ==================================
+#
+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()
+
+# Geometry
+# ========
+
+# With hexahedral, build a box partially holed by a not centered cylinder with a thickness
+
+# Values
+# ------
+
+box_dx = 1000
+box_dy =  900
+box_dz =  800
+
+cyl_x      = 500
+cyl_y      = 300
+cyl_dz     = 600
+cyl_radius = 150
+cyl_thick  =  30
+
+# Triangular face
+# ---------------
+
+def triangle(p1, p2, p3):
+    l = []
+    l.append(geompy.MakeEdge(p1, p2))
+    l.append(geompy.MakeEdge(p2, p3))
+    l.append(geompy.MakeEdge(p3, p1))
+    w = geompy.MakeWire(l)
+    return geompy.MakeFace(w, 1)
+
+# The holed part
+# ==============
+
+# Vertex of the holed part
+# ------------------------
+
+hole_point_11 = geompy.MakeVertex(0     , 0     , 0)
+hole_point_21 = geompy.MakeVertex(box_dx, 0     , 0)
+hole_point_12 = geompy.MakeVertex(0     , box_dy, 0)
+hole_point_22 = geompy.MakeVertex(box_dx, box_dy, 0)
+
+hole_center   = geompy.MakeVertex(cyl_x, cyl_y, 0)
+
+# Faces of the holed part
+# -----------------------
+
+hole_face_1 = triangle(hole_point_11, hole_point_21, hole_center)
+hole_face_2 = triangle(hole_point_21, hole_point_22, hole_center)
+hole_face_3 = triangle(hole_point_12, hole_point_22, hole_center)
+hole_face_4 = triangle(hole_point_11, hole_point_12, hole_center)
+
+# Solids of the holed part
+# ------------------------
+
+cyl_dir = geompy.MakeVectorDXDYDZ(0, 0, 1)
+
+hole_solid_1 = geompy.MakePrismVecH(hole_face_1, cyl_dir, cyl_dz)
+hole_solid_2 = geompy.MakePrismVecH(hole_face_2, cyl_dir, cyl_dz)
+hole_solid_3 = geompy.MakePrismVecH(hole_face_3, cyl_dir, cyl_dz)
+hole_solid_4 = geompy.MakePrismVecH(hole_face_4, cyl_dir, cyl_dz)
+
+hole_internal = geompy.MakeCylinder(hole_center, cyl_dir, cyl_radius          , cyl_dz)
+hole_external = geompy.MakeCylinder(hole_center, cyl_dir, cyl_radius+cyl_thick, cyl_dz)
+hole_median   = geompy.MakeCut(hole_external, hole_internal)
+
+# Boolean operations
+# ------------------
+
+blocks = []
+
+blocks.append(   geompy.MakeCut(hole_solid_1, hole_external))
+blocks.append(geompy.MakeCommon(hole_solid_1, hole_median  ))
+
+blocks.append(   geompy.MakeCut(hole_solid_2, hole_external))
+blocks.append(geompy.MakeCommon(hole_solid_2, hole_median  ))
+
+blocks.append(   geompy.MakeCut(hole_solid_3, hole_external))
+blocks.append(geompy.MakeCommon(hole_solid_3, hole_median  ))
+
+blocks.append(   geompy.MakeCut(hole_solid_4, hole_external))
+blocks.append(geompy.MakeCommon(hole_solid_4, hole_median  ))
+
+# The full part
+# =============
+
+# Vertex of the full part
+# -----------------------
+
+full_point_11 = geompy.MakeVertex(0     , 0     , cyl_dz)
+full_point_21 = geompy.MakeVertex(box_dx, 0     , cyl_dz)
+full_point_12 = geompy.MakeVertex(0     , box_dy, cyl_dz)
+full_point_22 = geompy.MakeVertex(box_dx, box_dy, cyl_dz)
+
+full_center = geompy.MakeVertex(cyl_x, cyl_y, cyl_dz)
+
+# Faces of the full part
+# ----------------------
+
+full_face_1 = triangle(full_point_11, full_point_21, full_center)
+full_face_2 = triangle(full_point_21, full_point_22, full_center)
+full_face_3 = triangle(full_point_12, full_point_22, full_center)
+full_face_4 = triangle(full_point_11, full_point_12, full_center)
+
+# Solids of the full part
+# ------------------------
+
+full_dz = box_dz - cyl_dz
+
+full_solid_1 = geompy.MakePrismVecH(full_face_1, cyl_dir, full_dz)
+full_solid_2 = geompy.MakePrismVecH(full_face_2, cyl_dir, full_dz)
+full_solid_3 = geompy.MakePrismVecH(full_face_3, cyl_dir, full_dz)
+full_solid_4 = geompy.MakePrismVecH(full_face_4, cyl_dir, full_dz)
+
+full_internal = geompy.MakeCylinder(full_center, cyl_dir, cyl_radius          , full_dz)
+full_external = geompy.MakeCylinder(full_center, cyl_dir, cyl_radius+cyl_thick, full_dz)
+full_median   = geompy.MakeCut(full_external, full_internal)
+
+# Boolean operations
+# ------------------
+
+full = []
+
+full.append(   geompy.MakeCut(full_solid_1, full_external))
+full.append(geompy.MakeCommon(full_solid_1, full_median))
+
+full.append(   geompy.MakeCut(full_solid_2, full_external))
+full.append(geompy.MakeCommon(full_solid_2, full_median ))
+
+full.append(   geompy.MakeCut(full_solid_3, full_external))
+full.append(geompy.MakeCommon(full_solid_3, full_median))
+
+full.append(   geompy.MakeCut(full_solid_4, full_external))
+full.append(geompy.MakeCommon(full_solid_4, full_median))
+
+# Filling the hole
+# ----------------
+
+box_d = cyl_radius/3
+
+x = cyl_x-box_d
+y = x * cyl_y / cyl_x
+box_point_11 = geompy.MakeVertex(x, y, cyl_dz)
+
+x = cyl_x+box_d
+y = (box_dx - x) * cyl_y / (box_dx - cyl_x)
+box_point_12 = geompy.MakeVertex(x, y, cyl_dz)
+
+x = cyl_x-box_d
+y = box_dy - x * (box_dy - cyl_y) / cyl_x
+box_point_21 = geompy.MakeVertex(x, y, cyl_dz)
+
+x = cyl_x+box_d
+y = box_dy - (box_dx - x) * (box_dy - cyl_y) / (box_dx - cyl_x)
+box_point_22 = geompy.MakeVertex(x, y, cyl_dz)
+
+box_face = geompy.MakeQuad4Vertices(box_point_11, box_point_12, box_point_21, box_point_22)
+
+box = geompy.MakePrismVecH(box_face, cyl_dir, full_dz)
+
+full.append(box)
+
+full.append(geompy.MakeCut(geompy.MakeCommon(full_solid_1, full_internal), box))
+full.append(geompy.MakeCut(geompy.MakeCommon(full_solid_2, full_internal), box))
+full.append(geompy.MakeCut(geompy.MakeCommon(full_solid_3, full_internal), box))
+full.append(geompy.MakeCut(geompy.MakeCommon(full_solid_4, full_internal), box))
+
+# Cut the cylinder thickness
+# -------------------------
+
+full_plan = geompy.MakePlane(geompy.MakeVertex(0, 0, cyl_dz+cyl_thick), cyl_dir, 5000)
+
+full_parts = geompy.MakePartition(full, [full_plan], [], [], geompy.ShapeType["SOLID"])
+
+# Geometry result
+# ---------------
+
+blocks.append(full_parts)
+
+piece_cpd = geompy.MakeCompound(blocks)
+
+piece_ok = geompy.RemoveExtraEdges(piece_cpd, doUnionFaces=True)
+
+piece = geompy.MakeGlueFaces(piece_ok, 1.e-3)
+
+piece_id = geompy.addToStudy(piece, "ex13_hole1partial")
+
+# Meshing
+# =======
+
+# Create a mesh
+# -------------
+
+hexa = smesh.Mesh(piece, "ex13_hole1partial:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(2)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Local hypothesis
+# ----------------
+
+def local(x, y, z, d):
+    edge = geompy.GetEdgeNearPoint(piece, geompy.MakeVertex(x, y, z))
+    algo = hexa.Segment(edge)
+    algo.NumberOfSegments(d)
+    algo.Propagation()
+
+local(0, 0, 100, 40)
+local(0, 0, 700, 15)
+
+local(100, 0, 0, 20)
+local(0, 100, 0, 20)
+
+local(100, 100, 0, 25)
+
+d = cyl_radius-3*cyl_thick
+local(cyl_x+d, cyl_y+d, box_dz, 10)
+
+# Compute the mesh
+# ----------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex14_cyl1holed.py b/test/ex14_cyl1holed.py
new file mode 100644 (file)
index 0000000..1a2a2ba
--- /dev/null
@@ -0,0 +1,151 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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()
+
+# Geometrie
+# =========
+
+# Creer un cylindre avec un trou cylindrique excentre, decoupage en hexahedre et mailler.
+
+# Donnees
+# -------
+
+# unite: millimetre
+
+g_ox = 0
+g_oy = 0
+g_oz = 0
+
+g_cyl_rayon       = 1000
+g_cyl_demiHauteur = 3000
+
+g_trou_rayon       =   5
+g_trou_centre      = 300
+
+g_trim = 15000
+
+# Construire le cylindre
+# ----------------------
+
+c_point    = geompy.MakeVertex(g_ox, g_oy, g_oz-g_cyl_demiHauteur)
+c_dir      = geompy.MakeVectorDXDYDZ(0, 0, 1)
+c_hauteur  = 2*g_cyl_demiHauteur
+c_cylindre = geompy.MakeCylinder(c_point, c_dir, g_cyl_rayon, c_hauteur)
+
+# Trouer le cylindre par un minuscule cylindre excentre
+# -----------------------------------------------------
+
+t_hauteur = g_cyl_demiHauteur
+t_point   = geompy.MakeVertex(g_ox-g_trou_centre, g_oy, g_oz-t_hauteur)
+t_trou    = geompy.MakeCylinder(t_point, c_dir, g_trou_rayon, 2*t_hauteur)
+
+t_piece   = geompy.MakeCut(c_cylindre, t_trou)
+
+# Geometrie hexahedrique
+# ======================
+
+# Decouper
+# --------
+
+h_outils = []
+h_outils.append(geompy.MakePlane(t_point, geompy.MakeVectorDXDYDZ(1, 0, 0), g_trim))
+h_outils.append(geompy.MakePlane(t_point, geompy.MakeVectorDXDYDZ(0, 1, 0), g_trim))
+
+h_piece = geompy.MakePartition([t_piece], h_outils, [], [], geompy.ShapeType["SOLID"])
+
+# Decouper pour les conditions locales
+# ------------------------------------
+
+l_outils = []
+l_i = 1
+l_n = 12
+l_hauteur = c_hauteur/l_n
+
+while l_i<l_n:
+    l_outils.append(geompy.MakePlane(geompy.MakeVertex(g_ox, g_oy, g_oz-g_cyl_demiHauteur+l_i*l_hauteur), c_dir, g_trim))
+    l_i = l_i+1
+
+piece = geompy.MakePartition([h_piece], l_outils, [], [], geompy.ShapeType["SOLID"])
+
+# Ajouter la piece dans l'etude
+# -----------------------------
+
+piece_id = geompy.addToStudy(piece, "ex14_cyl1holed")
+
+# Maillage
+# ========
+
+# Creer un maillage hexahedrique
+# ------------------------------
+
+hexa = smesh.Mesh(piece, "ex14_cyl1holed:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(4)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Poser les hypotheses locales
+# ----------------------------
+
+m_i = 0
+m_n = 12
+m_h = c_hauteur/m_n
+m_d = [4, 6, 8, 10, 10, 9, 8, 7, 6, 5, 4, 3]
+
+m_x = g_ox+g_cyl_rayon
+m_y = g_oy
+m_z = g_oz-g_cyl_demiHauteur+m_h/2
+
+while m_i<m_n:
+    m_p = geompy.MakeVertex(m_x, m_y, m_z + m_i*m_h)
+    m_e = geompy.GetEdgeNearPoint(piece, m_p)
+    m_a = hexa.Segment(m_e)
+    m_a.NumberOfSegments(m_d[m_i])
+    m_a.Propagation()
+    m_i = m_i + 1
+
+# Calculer le maillage
+# --------------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex15_cyl2geometry.py b/test/ex15_cyl2geometry.py
new file mode 100644 (file)
index 0000000..89dcf76
--- /dev/null
@@ -0,0 +1,210 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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()
+
+# Geometrie
+# =========
+
+# Construire avec des hexahedres une piece faite de 2 cylindres de diametre different
+# et dont les axes se coupent orthogonalement, puis mailler.
+
+# Valeurs
+# -------
+
+cx = 0
+cy = 0
+cz = 0
+
+g_rayon   = 100.0
+g_hauteur = 500
+
+p_rayon   =  50.0
+p_hauteur = 500
+
+g_trim = 1000
+
+# Gros cylindre
+# -------------
+
+cpd = []
+
+g_base = geompy.MakeVertex(cx, cy, cz)
+g_dir  = geompy.MakeVectorDXDYDZ(0, 0, 1)
+t_hauteur = p_rayon+10.0
+
+g_cyl = geompy.MakeCylinder(g_base, g_dir, g_rayon, g_hauteur)
+
+g_coupe   = geompy.MakeVectorDXDYDZ(1, 0, 0)
+
+g_tools = []
+g_tools.append(geompy.MakePlane(geompy.MakeVertex(cx+t_hauteur, cy, cz), g_coupe, g_trim))
+g_tools.append(geompy.MakePlane(geompy.MakeVertex(cx-t_hauteur, cy, cz), g_coupe, g_trim))
+
+g_partie = geompy.MakePartition([g_cyl], g_tools, [], [], geompy.ShapeType["SOLID"])
+g_bas, g_centre, g_haut = geompy.SubShapeAllSorted(g_partie, geompy.ShapeType["SOLID"])
+
+# Partie basse du gros cylindre
+# -----------------------------
+
+b_hauteur = 10
+b_base    = 20
+
+b_boite = geompy.MakeBox(cx-t_hauteur, cy-b_base, cz,  cx-t_hauteur-b_hauteur, cy+b_base, cz+g_hauteur)
+cpd.append(b_boite)
+
+b_cyl = geompy.MakeCut(g_bas, b_boite)
+
+b_tools = []
+b_tools.append(geompy.MakePlane(geompy.MakeVertex(cx-t_hauteur-b_hauteur, cy+b_base, cz), geompy.MakeVectorDXDYDZ( 1, 1, 0), g_trim))
+b_tools.append(geompy.MakePlane(geompy.MakeVertex(cx-t_hauteur-b_hauteur, cy-b_base, cz), geompy.MakeVectorDXDYDZ(-1, 1, 0), g_trim))
+
+b_partie = geompy.MakePartition([b_cyl], b_tools, [], [], geompy.ShapeType["SOLID"])
+b_element = geompy.SubShapeAll(b_partie, geompy.ShapeType["SOLID"])
+cpd = cpd + b_element
+
+# Partie haute du gros cylindre
+# -----------------------------
+
+h_plan = geompy.MakePlane(g_base, g_coupe, g_trim)
+
+cpd.append(geompy.MakeMirrorByPlane(b_boite, h_plan))
+
+for h in b_element:
+    h_symetrie = geompy.MakeMirrorByPlane(h, h_plan)
+    cpd.append(h_symetrie)
+
+# Petit cylindre
+# --------------
+
+z_arete = p_rayon/2
+x_arete = z_arete*t_hauteur*2/g_hauteur
+
+px = cx-x_arete
+py = cy-1.5*g_rayon
+pz = cz+g_hauteur/2
+
+p_base = geompy.MakeVertex(cx, py, pz)
+p_dir  = geompy.MakeVectorDXDYDZ(0, 1, 0)
+p_cyl  = geompy.MakeCylinder(p_base, p_dir, p_rayon, p_hauteur)
+
+p_boite = geompy.MakeBox(px, py, pz-z_arete,  cx+x_arete, py+p_hauteur, pz+z_arete)
+
+# Partie interieure du petit cylindre
+# -----------------------------------
+
+i_cyl   = geompy.MakeCommon(p_cyl, g_cyl)
+i_tuyau = geompy.MakeCut(i_cyl, p_boite)
+i_boite = geompy.MakeCommon(p_boite, g_cyl)
+
+# Partie exterieure du petit cylindre
+# -----------------------------------
+
+e_cyl0 = geompy.MakeCut(p_cyl, g_cyl)
+e_cyl  = geompy.SubShapeAllSorted(e_cyl0, geompy.ShapeType["SOLID"])
+
+e_tuyau = geompy.MakeCut(e_cyl[1], p_boite)
+
+e_boite0 = geompy.MakeCut(p_boite, g_cyl)
+e_boite  = geompy.SubShapeAllSorted(e_boite0, geompy.ShapeType["SOLID"])
+
+cpd.append(e_boite[1])
+
+# Partie centrale du gros cylindre
+# --------------------------------
+
+c_cyl = geompy.MakeCut(g_centre, p_cyl)
+
+# Partitionner
+# ------------
+
+p_tools = []
+p_tools.append(geompy.MakePlane(geompy.MakeVertex(px, py, pz-z_arete), geompy.MakeVectorDXDYDZ(-z_arete, 0, x_arete), g_trim))
+p_tools.append(geompy.MakePlane(geompy.MakeVertex(px, py, pz+z_arete), geompy.MakeVectorDXDYDZ( z_arete, 0, x_arete), g_trim))
+
+p_partie = geompy.MakePartition([e_tuyau], p_tools, [], [], geompy.ShapeType["SOLID"])
+p_element = geompy.SubShapeAll(p_partie, geompy.ShapeType["SOLID"])
+cpd = cpd + p_element
+
+q_partie = geompy.MakePartition([i_tuyau, c_cyl], p_tools, [], [], geompy.ShapeType["SOLID"])
+q_element = geompy.SubShapeAll(q_partie, geompy.ShapeType["SOLID"])
+
+q_element = q_element + [i_boite]
+
+q_tools = []
+q_tools.append(geompy.MakePlane(geompy.MakeVertex(cx, cy-b_base, cz), geompy.MakeVectorDXDYDZ(0, 1, 0), g_trim))
+q_tools.append(geompy.MakePlane(geompy.MakeVertex(cx, cy+b_base, cz), geompy.MakeVectorDXDYDZ(0, 1, 0), g_trim))
+
+r_element = []
+for e in q_element:
+    r_partie = geompy.MakePartition([e], q_tools, [], [], geompy.ShapeType["SOLID"])
+    r_element = r_element + geompy.SubShapeAll(r_partie, geompy.ShapeType["SOLID"])
+
+cpd = cpd + r_element
+
+# Compound
+# --------
+
+piece = geompy.RemoveExtraEdges(geompy.MakeCompound(cpd), True)
+
+# Ajouter la piece dans l'etude
+# -----------------------------
+
+piece_id = geompy.addToStudy(piece, "ex15_cyl2geometry")
+
+# Meshing
+# =======
+
+# Create a hexahedral mesh
+# ------------------------
+
+hexa = smesh.Mesh(piece, "ex15_cyl2geometry:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(12)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Mesh calculus
+# -------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex16_cyl2complementary.py b/test/ex16_cyl2complementary.py
new file mode 100644 (file)
index 0000000..6004a0a
--- /dev/null
@@ -0,0 +1,154 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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()
+
+# Geometry
+# ========
+
+# Create the hexahedrical block geometry of a holed parallelepipede.
+# The hole has a T form composed by 2 cylinders with different radius, and their axis are normal.
+# This piece is meshed in hexahedrical.
+
+# Values
+# ------
+
+gx = 0
+gy = 0
+gz = 0
+
+g_dx = 250
+g_dy = 200
+g_dz = 150
+
+g_rayonGrand = 70
+g_rayonPetit = 50
+
+g_trim = 1000
+
+# The parallelepipede
+# -------------------
+
+p_boite = geompy.MakeBox(gx-g_dx, gy-g_dy, gz-g_dz,  gx+g_dx, gy+g_dy, gz+g_dz)
+
+# The great cylinder
+# ------------------
+
+g_base = geompy.MakeVertex(gx-g_dx, gy, gz)
+g_dir  = geompy.MakeVectorDXDYDZ(1, 0, 0)
+g_cyl  = geompy.MakeCylinder(g_base, g_dir, g_rayonGrand, g_dx*2)
+
+# The first hole
+# --------------
+
+b_boite = geompy.MakeCut(p_boite , g_cyl)
+
+# Partitioning
+# ------------
+
+p_base = geompy.MakeVertex(gx, gy, gz)
+
+p_tools = []
+
+p_tools.append(geompy.MakePlane(p_base, geompy.MakeVectorDXDYDZ(0,  1   , 0   ), g_trim))
+p_tools.append(geompy.MakePlane(p_base, geompy.MakeVectorDXDYDZ(0,  g_dz, g_dy), g_trim))
+p_tools.append(geompy.MakePlane(p_base, geompy.MakeVectorDXDYDZ(0, -g_dz, g_dy), g_trim))
+
+p_tools.append(geompy.MakePlane(geompy.MakeVertex(gx-g_rayonPetit, gy, gz), g_dir, g_trim))
+p_tools.append(geompy.MakePlane(geompy.MakeVertex(gx+g_rayonPetit, gy, gz), g_dir, g_trim))
+
+p_piece = geompy.MakePartition([b_boite], p_tools, [], [], geompy.ShapeType["SOLID"])
+
+# The small cylinder
+# ------------------
+
+c_cyl = geompy.MakeCylinder(p_base, geompy.MakeVectorDXDYDZ(0, 0, 1), g_rayonPetit, g_dz)
+
+# The second hole
+# ---------------
+
+d_element = geompy.SubShapeAllSorted(p_piece, geompy.ShapeType["SOLID"])
+
+d_element[ 8] = geompy.MakeCut(d_element[ 8], c_cyl)
+d_element[10] = geompy.MakeCut(d_element[10], c_cyl)
+
+# Compound
+# --------
+
+piece = geompy.RemoveExtraEdges(geompy.MakeCompound(d_element))
+piece = geompy.MakeGlueFaces(piece, 1e-07)
+
+# Add piece in study
+# ------------------
+
+piece_id = geompy.addToStudy(piece, "ex16_cyl2complementary")
+
+# Meshing
+# =======
+
+# Create a hexahedral mesh
+# ------------------------
+
+hexa = smesh.Mesh(piece, "ex16_cyl2complementary:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(12)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Define local hypothesis
+# -----------------------
+
+def local(x, y, z, d):
+    edge = geompy.GetEdgeNearPoint(piece, geompy.MakeVertex(x, y, z))
+    algo = hexa.Segment(edge)
+    algo.NumberOfSegments(d)
+    algo.Propagation()
+
+local(gx     , gy+g_dy, gz+g_dz, 7)
+local(gx+g_dx, gy+g_dy, gz     , 21)
+local(gx+g_dx, gy-g_dy, gz     , 21)
+
+# Mesh calculus
+# -------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex17_dome1.py b/test/ex17_dome1.py
new file mode 100644 (file)
index 0000000..403ef89
--- /dev/null
@@ -0,0 +1,113 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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()
+
+# Geometrie
+# =========
+
+# Creer un cylindre surplombe d'une demi-sphere le tout troue par un petit cylindre.
+# Decouper en hexahedre et mailler.
+
+# Donnees
+# -------
+
+cylindre_rayon   = 100
+cylindre_hauteur = 400
+
+trou_rayon = 20
+trou_z     = cylindre_rayon/2
+
+plan_trim = 2000
+
+# Cylindre
+# --------
+
+cylindre_base = geompy.MakeVertex(0, 0, 0)
+cylindre_dir  = geompy.MakeVectorDXDYDZ(1, 0, 0)
+cylindre      = geompy.MakeCylinder(cylindre_base, cylindre_dir, cylindre_rayon, cylindre_hauteur)
+
+# Dome
+# ----
+
+dome_sphere = geompy.MakeSpherePntR(cylindre_base, cylindre_rayon)
+dome        = geompy.MakeFuse(dome_sphere, cylindre)
+
+# Cheminee
+# --------
+
+cheminee_base = geompy.MakeVertex(-cylindre_hauteur/2, 0, trou_z)
+cheminee_trou = geompy.MakeCylinder(cheminee_base, cylindre_dir, trou_rayon, 2*cylindre_hauteur)
+cheminee      = geompy.MakeCut(dome, cheminee_trou)
+
+# Decoupage et reparation
+# -----------------------
+
+blocs_plan1 = geompy.MakePlane(cheminee_base, geompy.MakeVectorDXDYDZ(0, 1, 0), plan_trim)
+blocs_plan2 = geompy.MakePlane(cheminee_base, geompy.MakeVectorDXDYDZ(0, 0, 1), plan_trim)
+
+blocs_part = geompy.MakePartition([cheminee], [blocs_plan1, blocs_plan2], [], [], geompy.ShapeType["SOLID"])
+
+piece = geompy.RemoveExtraEdges(blocs_part)
+
+# Etude
+# -----
+
+piece_id = geompy.addToStudy(piece, "ex17_dome1")
+
+# Maillage
+# ========
+
+# Maillage hexahedrique
+# ---------------------
+
+hexa = smesh.Mesh(piece, "ex17_dome1:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(20)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Calcul du maillage
+# ------------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex18_dome2.py b/test/ex18_dome2.py
new file mode 100644 (file)
index 0000000..fdd76b8
--- /dev/null
@@ -0,0 +1,150 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# =======================================
+#
+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 math
+
+# Geometrie
+# =========
+
+# Creer un cylindre ayant a chaque bout un morceau de sphere et le tout troue par un petit cylindrique excentre.
+# Decouper en hexahedre et mailler.
+
+# Donnees
+# -------
+
+# unite: millimetre
+
+g_ox = 0
+g_oy = 0
+g_oz = 0
+
+g_cyl_rayon       = 1000
+g_cyl_demiHauteur = 3000
+
+g_trou_rayon       =   5
+g_trou_centre      = 300
+
+g_sphere_rayon = 3500
+
+g_trim = 15000
+
+# Cylindre
+# --------
+
+c_point    = geompy.MakeVertex(g_ox, g_oy, g_oz-g_cyl_demiHauteur)
+c_dir      = geompy.MakeVectorDXDYDZ(0, 0, 1)
+c_hauteur  = 2*g_cyl_demiHauteur
+
+c_cylindre = geompy.MakeCylinder(c_point, c_dir, g_cyl_rayon, c_hauteur)
+
+# Sphere
+# ------
+
+s_hauteur = math.sqrt(g_sphere_rayon*g_sphere_rayon - g_cyl_rayon*g_cyl_rayon) - g_cyl_demiHauteur
+
+s_sphere  = geompy.MakeSphere(g_ox, g_oy, g_oz-s_hauteur, g_sphere_rayon)
+
+# Calottes
+# --------
+
+c_outils = []
+c_outils.append(geompy.MakePlane(geompy.MakeVertex(g_ox, g_oy, g_oz+g_cyl_demiHauteur), geompy.MakeVectorDXDYDZ(0, 0, 1), g_trim))
+
+c_cpd = geompy.MakePartition([s_sphere], c_outils, [], [], geompy.ShapeType["SOLID"])
+c_calotte_haut, c_reste = geompy.SubShapeAllSorted(c_cpd, geompy.ShapeType["SOLID"])
+
+c_plan = geompy.MakePlane(geompy.MakeVertex(g_ox, g_oy, g_oz), geompy.MakeVectorDXDYDZ(0, 0, 1), g_trim)
+c_calotte_bas = geompy.MakeMirrorByPlane(c_calotte_haut, c_plan)
+
+# Fusionner
+# ---------
+
+f_piece1 = geompy.MakeFuse(c_cylindre, c_calotte_haut)
+f_piece  = geompy.MakeFuse(f_piece1, c_calotte_bas)
+
+# Trouer
+# ------
+
+t_hauteur = g_sphere_rayon
+t_point   = geompy.MakeVertex(g_ox-g_trou_centre, g_oy, g_oz-t_hauteur)
+t_trou    = geompy.MakeCylinder(t_point, c_dir, g_trou_rayon, 2*t_hauteur)
+
+t_piece   = geompy.MakeCut(f_piece, t_trou)
+
+# Decouper
+# --------
+
+h_outils = []
+h_outils.append(geompy.MakePlane(t_point, geompy.MakeVectorDXDYDZ(1, 0, 0), g_trim))
+h_outils.append(geompy.MakePlane(t_point, geompy.MakeVectorDXDYDZ(0, 1, 0), g_trim))
+
+h_piece = geompy.MakePartition([t_piece], h_outils, [], [], geompy.ShapeType["SOLID"])
+
+# Reparer
+# -------
+
+piece = geompy.RemoveExtraEdges(h_piece)
+
+# Ajouter la piece dans l'etude
+# -----------------------------
+
+piece_id = geompy.addToStudy(piece, "ex18_dome2")
+
+# Maillage
+# ========
+
+# Maillage hexahedrique
+# ---------------------
+
+hexa = smesh.Mesh(piece, "ex18_dome2:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(2)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Calcul du maillage
+# ------------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex19_sphereINcube.py b/test/ex19_sphereINcube.py
new file mode 100644 (file)
index 0000000..ec63f3b
--- /dev/null
@@ -0,0 +1,195 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# ==================================
+#
+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()
+
+# Geometrie
+# =========
+
+# Mailler en hexahedre une sphere dans un cube.
+
+# Donnees
+# -------
+
+sphere_rayon = 100
+
+cube_cote = 200
+
+plan_trim = 1000
+
+# Sphere
+# ------
+
+sphere_centre = geompy.MakeVertex(0, 0, 0)
+
+sphere_pleine = geompy.MakeSpherePntR(sphere_centre, sphere_rayon)
+
+# Cube interieur
+# --------------
+
+boite_cote = sphere_rayon / 2
+
+boite = geompy.MakeBox(-boite_cote, -boite_cote, -boite_cote,  +boite_cote, +boite_cote, +boite_cote)
+
+blocs = [boite]
+
+# Decoupage sphere
+# ----------------
+
+sphere_troue = geompy.MakeCut(sphere_pleine, boite)
+
+#sphere_outils = []
+#sphere_outils.append(MakePlane(sphere_centre, MakeVectorDXDYDZ( 1, 0,  1), plan_trim))
+#sphere_outils.append(MakePlane(sphere_centre, MakeVectorDXDYDZ( 1, 0, -1), plan_trim))
+#sphere_outils.append(MakePlane(sphere_centre, MakeVectorDXDYDZ( 1, 1,  0), plan_trim))
+#sphere_outils.append(MakePlane(sphere_centre, MakeVectorDXDYDZ(-1, 1,  0), plan_trim))
+
+f1 = geompy.MakePlane(sphere_centre, geompy.MakeVectorDXDYDZ( 1, 0,  1), plan_trim)
+f2 = geompy.MakePlane(sphere_centre, geompy.MakeVectorDXDYDZ(-1, 1,  0), plan_trim)
+f3 = geompy.MakePlane(sphere_centre, geompy.MakeVectorDXDYDZ( 1, 1,  0), plan_trim)
+f4 = geompy.MakePlane(sphere_centre, geompy.MakeVectorDXDYDZ( 1, 0, -1), plan_trim)
+
+
+#sphere_decoupee = MakePartition(solids, sphere_outils, [], [], ShapeType["SOLID"])
+
+sphere_decoupee = geompy.MakePartition([sphere_troue],    [f1], [], [], geompy.ShapeType["SOLID"])
+sphere_decoupee = geompy.MakePartition([sphere_decoupee], [f2], [], [], geompy.ShapeType["SOLID"])
+sphere_decoupee = geompy.MakePartition([sphere_decoupee], [f3], [], [], geompy.ShapeType["SOLID"])
+sphere_decoupee = geompy.MakePartition([sphere_decoupee], [f4], [], [], geompy.ShapeType["SOLID"])
+
+sphere_partie = geompy.MakeCompound([sphere_decoupee])
+
+sphere_partie   = geompy.GetBlockNearPoint(sphere_decoupee, geompy.MakeVertex(-sphere_rayon, 0, 0))
+sphere_bloc     = geompy.RemoveExtraEdges(sphere_partie)
+
+blocs.append(sphere_bloc)
+
+pi2 = 3.141592653/2
+
+sphere_dir1 = geompy.MakeVectorDXDYDZ(0, 1,  0)
+sphere_dir2 = geompy.MakeVectorDXDYDZ(0, 0,  1)
+
+blocs.append(geompy.MakeRotation(sphere_bloc, sphere_dir1, +pi2))
+blocs.append(geompy.MakeRotation(sphere_bloc, sphere_dir1, -pi2))
+
+blocs.append(geompy.MakeRotation(sphere_bloc, sphere_dir2, +pi2))
+blocs.append(geompy.MakeRotation(sphere_bloc, sphere_dir2, -pi2))
+
+blocs.append(geompy.MakeMirrorByPoint(sphere_bloc, sphere_centre))
+
+# Cube exterieur
+# --------------
+
+cube_plein   = geompy.MakeBox(-cube_cote, -cube_cote, -cube_cote,  +cube_cote, +cube_cote, +cube_cote)
+cube_trou    = geompy.MakeCut(cube_plein, sphere_pleine)
+#cube_decoupe = MakePartition([cube_trou], sphere_outils, [], [], ShapeType["SOLID"])
+
+cube_decoupe = geompy.MakePartition([cube_trou],    [f1], [], [], geompy.ShapeType["SOLID"])
+cube_decoupe = geompy.MakePartition([cube_decoupe], [f2], [], [], geompy.ShapeType["SOLID"])
+cube_decoupe = geompy.MakePartition([cube_decoupe], [f3], [], [], geompy.ShapeType["SOLID"])
+cube_decoupe = geompy.MakePartition([cube_decoupe], [f4], [], [], geompy.ShapeType["SOLID"])
+
+cube_decoupe = geompy.MakeCompound([cube_decoupe])
+
+
+cube_partie  = geompy.GetBlockNearPoint(cube_decoupe, geompy.MakeVertex(-cube_cote, 0, 0))
+cube_bloc    = geompy.RemoveExtraEdges(cube_partie)
+
+blocs.append(cube_bloc)
+
+blocs.append(geompy.MakeRotation(cube_bloc, sphere_dir1, +pi2))
+blocs.append(geompy.MakeRotation(cube_bloc, sphere_dir1, -pi2))
+
+blocs.append(geompy.MakeRotation(cube_bloc, sphere_dir2, +pi2))
+blocs.append(geompy.MakeRotation(cube_bloc, sphere_dir2, -pi2))
+
+blocs.append(geompy.MakeMirrorByPoint(cube_bloc, sphere_centre))
+
+# Piece
+# -----
+
+piece_cpd = geompy.MakeCompound(blocs)
+piece = geompy.MakeGlueFaces(piece_cpd, 1.e-3)
+
+piece_id = geompy.addToStudy(piece, "ex19_sphereINcube")
+
+# Groupe geometrique
+# ==================
+
+# Definition du groupe
+# --------------------
+
+groupe = geompy.CreateGroup(piece, geompy.ShapeType["SOLID"])
+
+groupe_nom = "ex19_sphereINcube_interieur"
+geompy.addToStudy(groupe, groupe_nom)
+groupe.SetName(groupe_nom)
+
+# Contenu du groupe
+# -----------------
+
+groupe_sphere = geompy.GetShapesOnSphere(piece, geompy.ShapeType["SOLID"], sphere_centre, sphere_rayon, GEOM.ST_ONIN)
+
+geompy.UnionList(groupe, groupe_sphere)
+
+# Meshing
+# =======
+
+# Create a hexahedral mesh
+# ------------------------
+
+hexa = smesh.Mesh(piece, "ex19_sphereINcube:hexa")
+
+algo = hexa.Segment()
+algo.NumberOfSegments(10)
+
+hexa.Quadrangle()
+
+hexa.Hexahedron()
+
+# Mesh calculus
+# -------------
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Le groupe de mailles
+# --------------------
+
+hexa_groupe = hexa.Group(groupe)
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex21_lamp.py b/test/ex21_lamp.py
new file mode 100644 (file)
index 0000000..f06aa2c
--- /dev/null
@@ -0,0 +1,141 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# ==================================
+#
+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()
+
+# Geometry
+# ========
+
+# an assembly of a box, a cylinder and a truncated cone meshed with tetrahedral.
+
+# 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 in study
+# ------------
+
+geompy.addToStudy(piece, name)
+
+# Create a group of faces
+# -----------------------
+
+group = geompy.CreateGroup(piece, geompy.ShapeType["FACE"])
+
+group_name = name + "_grp"
+geompy.addToStudy(group, group_name)
+group.SetName(group_name)
+
+# Add faces in the group
+# ----------------------
+
+faces = geompy.SubShapeAllIDs(piece, geompy.ShapeType["FACE"])
+
+geompy.UnionIDs(group, faces)
+
+# Create a mesh
+# =============
+
+# Define a mesh on a geometry
+# ---------------------------
+
+tetra = smesh.Mesh(piece, name)
+
+# Define 1D hypothesis
+# --------------------
+
+algo1d = tetra.Segment()
+algo1d.LocalLength(10)
+
+# Define 2D hypothesis
+# --------------------
+
+algo2d = tetra.Triangle()
+algo2d.LengthFromEdges()
+
+# Define 3D hypothesis
+# --------------------
+
+algo3d = tetra.Tetrahedron(smeshBuilder.NETGEN)
+algo3d.MaxElementVolume(100)
+
+# Compute the mesh
+# ----------------
+
+isDone = tetra.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# Create a groupe of faces
+# ------------------------
+
+tetra.Group(group)
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
\ No newline at end of file
diff --git a/test/ex24_cylinder.py b/test/ex24_cylinder.py
new file mode 100644 (file)
index 0000000..51ef152
--- /dev/null
@@ -0,0 +1,139 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+# ==================================
+#
+import math
+
+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()
+
+geo = geompy
+
+# 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
+# ----------------------
+
+def group(name, shape, type, base=None, direction=None):
+    t = geompy.ShapeType[type]
+    g = geompy.CreateGroup(shape, t)
+
+    geompy.addToStudy(g, name)
+    g.SetName(name)
+
+    if base!=None:
+        l = geompy.GetShapesOnPlaneWithLocationIDs(shape, t, direction, base, GEOM.ST_ON)
+        geompy.UnionIDs(g, l)
+
+    return g
+
+group_a = group("baseA", blocks, "FACE", base, direction)
+
+base_b  = geompy.MakeVertex(0, 0, height)
+group_b = group("baseB", blocks, "FACE", base_b, direction)
+
+group_1 = group("limit", blocks, "SOLID")
+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()
+
+def discretize(x, y, z,  n, s=blocks):
+    p = geompy.MakeVertex(x, y, z)
+    e = geompy.GetEdgeNearPoint(s, p)
+    a = hexa.Segment(e)
+    a.NumberOfSegments(n)
+    a.Propagation()
+
+hexa = smesh.Mesh(blocks)
+
+hexa_1d = hexa.Segment()
+hexa_1d.NumberOfSegments(1)
+
+discretize(+radius        , +radius,        0,   5)
+discretize(-radius        , +radius,        0,   8)
+discretize((radius+size)/2,       0,        0,  10)
+discretize(        +radius,       0, height/2,  20)
+
+hexa.Quadrangle()
+hexa.Hexahedron()
+
+isDone = hexa.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+hexa.Group(group_a)
+hexa.Group(group_b)
+hexa.Group(group_1)
+
+# Update object browser
+# ---------------------
+
+salome.sg.updateObjBrowser()
diff --git a/test/ex29_refine.py b/test/ex29_refine.py
new file mode 100644 (file)
index 0000000..031f8be
--- /dev/null
@@ -0,0 +1,246 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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)
+
+isDone = MyMesh.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+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/test/ex30_groupsOp.py b/test/ex30_groupsOp.py
new file mode 100644 (file)
index 0000000..569aae7
--- /dev/null
@@ -0,0 +1,93 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+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 math
+
+global Face_1
+Face_1 = geompy.MakeFaceHW(100, 100, 1)
+geompy.addToStudy( Face_1, "Face_1" )
+
+smesh.UpdateStudy()
+from salome.StdMeshers import StdMeshersBuilder
+pattern = smesh.GetPattern()
+Mesh_1 = smesh.Mesh(Face_1)
+Regular_1D = Mesh_1.Segment()
+Nb_Segments_1 = Regular_1D.NumberOfSegments(10)
+Nb_Segments_1.SetDistrType( 0 )
+Quadrangle_2D = Mesh_1.Quadrangle()
+isDone = Mesh_1.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# groups creation
+
+aListOfElems = [ 52, 53, 54, 55, 56, 57,
+                 62, 63, 64, 65, 66, 67,
+                 72, 73, 74, 75, 76, 77,
+                 82, 83, 84, 85, 86, 87 ]
+                 
+aRedGroup = Mesh_1.GetMesh().CreateGroup( SMESH.FACE, "Red" )
+aRedGroup.Add( aListOfElems );
+aRedGroup.SetColor( SALOMEDS.Color( 1, 0, 0 ) )
+
+aListOfElems = [ 55, 56, 57, 58, 59,
+                 65, 66, 67, 68, 69,
+                 75, 76, 77, 78, 79,
+                 85, 86, 87, 88, 89,
+                 95, 96, 97, 98, 99,
+                 105, 106, 107, 108, 109,
+                 115, 116, 117, 118, 119,
+                 125, 126, 127, 128, 129 ]
+                 
+aGreenGroup = Mesh_1.GetMesh().CreateGroup( SMESH.FACE, "Green" )
+aGreenGroup.Add( aListOfElems );
+aGreenGroup.SetColor( SALOMEDS.Color( 0, 1, 0 ) )
+
+aListOfElems = [ 63, 64, 65, 66, 67, 68, 
+                 73, 74, 75, 76, 77, 78,
+                 83, 84, 85, 86, 87, 88, 
+                 93, 94, 95, 96, 97, 98, 
+                 103, 104, 105, 106, 107, 108, 
+                 113, 114, 115, 116, 117, 118 ]
+                 
+aBlueGroup = Mesh_1.GetMesh().CreateGroup( SMESH.FACE, "Blue" )
+aBlueGroup.Add( aListOfElems );
+aBlueGroup.SetColor( SALOMEDS.Color( 0, 0, 1 ) )
+
+# UnionListOfGroups()
+aUnGrp = Mesh_1.UnionListOfGroups([aRedGroup, aGreenGroup, aBlueGroup], "UnionGrp" )
+
+# IntersectListOfGroups()
+aIntGrp=Mesh_1.IntersectListOfGroups([aRedGroup, aGreenGroup, aBlueGroup], "IntGrp" )
+
+# CutListOfGroups()
+aCutGrp=Mesh_1.CutListOfGroups([aRedGroup],[aGreenGroup,aBlueGroup],"CutGrp")
+
+salome.sg.updateObjBrowser()
+
diff --git a/test/ex31_dimGroup.py b/test/ex31_dimGroup.py
new file mode 100644 (file)
index 0000000..ae0fd09
--- /dev/null
@@ -0,0 +1,66 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+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 math
+
+global Box_1
+Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200)
+geompy.addToStudy( Box_1, "Box_1" )
+
+smesh.UpdateStudy()
+from salome.StdMeshers import StdMeshersBuilder
+Mesh_1 = smesh.Mesh(Box_1)
+Regular_1D = Mesh_1.Segment()
+Nb_Segments_1 = Regular_1D.NumberOfSegments(10)
+Nb_Segments_1.SetDistrType( 0 )
+Quadrangle_2D = Mesh_1.Quadrangle()
+Hexa_3D = Mesh_1.Hexahedron()
+isDone = Mesh_1.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+### CreateDimGroup()
+
+aListOf3d_1=list(range(721,821))
+
+aGrp3D_1=Mesh_1.GetMesh().CreateGroup( SMESH.VOLUME, "Src 3D 1" )
+aGrp3D_1.Add( aListOf3d_1 )
+
+aListOf3d_2=list(range(821, 921))
+aGrp3D_2=Mesh_1.GetMesh().CreateGroup( SMESH.VOLUME, "Src 3D 2" )
+aGrp3D_2.Add( aListOf3d_2 )
+
+aGrp2D = Mesh_1.CreateDimGroup( [aGrp3D_1, aGrp3D_2], SMESH.FACE, "Faces" )
+
+aGrp1D = Mesh_1.CreateDimGroup( [aGrp3D_1, aGrp3D_2], SMESH.EDGE, "Edges" )
+
+aGrp0D = Mesh_1.CreateDimGroup( [aGrp3D_1, aGrp3D_2], SMESH.NODE, "Nodes" )
+
+salome.sg.updateObjBrowser()
+
diff --git a/test/ex_MakePolyLine.py b/test/ex_MakePolyLine.py
new file mode 100644 (file)
index 0000000..a7fb6a7
--- /dev/null
@@ -0,0 +1,39 @@
+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()
+isDone = Mesh_1.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+# 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/test/extrusion_penta_biquad.py b/test/extrusion_penta_biquad.py
new file mode 100644 (file)
index 0000000..51d043a
--- /dev/null
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+
+import sys
+import salome
+
+salome.salome_init_without_session()
+
+import GEOM
+from salome.geom import geomBuilder
+import math
+import SALOMEDS
+
+geompy = geomBuilder.New()
+
+O = geompy.MakeVertex(0, 0, 0)
+OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
+OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
+OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
+Divided_Disk_1 = geompy.MakeDividedDisk(100, 1, GEOM.SQUARE)
+geompy.addToStudy( O, 'O' )
+geompy.addToStudy( OX, 'OX' )
+geompy.addToStudy( OY, 'OY' )
+geompy.addToStudy( OZ, 'OZ' )
+geompy.addToStudy( Divided_Disk_1, 'Divided Disk_1' )
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+aFilterManager = smesh.CreateFilterManager()
+Mesh_1 = smesh.Mesh(Divided_Disk_1)
+Regular_1D = Mesh_1.Segment()
+Number_of_Segments_1 = Regular_1D.NumberOfSegments(6)
+Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
+isDone = Mesh_1.Compute()
+if not isDone:
+    raise Exception("Error when computing Mesh")
+
+aMaxElementLength2D0x5d7fdf0 = aFilterManager.CreateMaxElementLength2D()
+isDone = Mesh_1.QuadToTriObject( Mesh_1,  )
+Mesh_1.ExtrusionSweepObjects( [ Mesh_1 ], [ Mesh_1 ], [ Mesh_1 ], [ 0, 0, 50 ], 3, 1 )
+Mesh_1.ConvertToQuadratic(0, Mesh_1,True)
+
+infos = Mesh_1.GetMeshInfo()
+print("Number of biquadratic pentahedrons:", infos[SMESH.Entity_BiQuad_Penta])
+if (infos[SMESH.Entity_BiQuad_Penta] != 1080):
+  raise RuntimeError("Bad number of biquadratic pentahedrons: should be 1080")
+  
+## Set names of Mesh objects
+smesh.SetName(Regular_1D.GetAlgorithm(), 'Regular_1D')
+smesh.SetName(Quadrangle_2D.GetAlgorithm(), 'Quadrangle_2D')
+smesh.SetName(Number_of_Segments_1, 'Number of Segments_1')
+smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1')
+
+
+if salome.sg.hasDesktop():
+  salome.sg.updateObjBrowser()
diff --git a/test/gmsh_runner.py b/test/gmsh_runner.py
new file mode 100644 (file)
index 0000000..abbe92c
--- /dev/null
@@ -0,0 +1,238 @@
+#!/usr/bin/env python
+import sys
+import salome
+
+salome.salome_init()
+
+import time
+from os import path
+import tempfile
+import subprocess
+
+import GEOM, SMESH, SALOMEDS
+
+from salome.geom import geomBuilder
+from salome.smesh import smeshBuilder
+
+import math
+
+smesh = smeshBuilder.New()
+geompy = geomBuilder.New()
+
+import medcoupling as mc
+
+def create_gmsh_empty_param_file(param_file):
+    """ Create a parameter file for runner """
+    param = """0"""
+    with open(param_file, "w") as ffile:
+        ffile.write(param)
+
+def create_gmsh_param_file(param_file):
+    """ Create a parameter file for runner """
+    param = """1
+0
+0
+0
+0
+0
+0
+2
+1.0
+0.0
+1e22
+0.0
+0
+0
+0"""
+    with open(param_file, "w") as ffile:
+        ffile.write(param)
+
+
+def runTheMesher( mesh_2d, geo, emptyParam=False ):
+    nb_tetras = 0
+    nb_points = 0
+    nb_triangles = 0
+    nb_segments = 0
+    with tempfile.TemporaryDirectory() as tmp_dir:
+        mesh_file = path.join(tmp_dir, "mesh.med")
+        shape_file = path.join(tmp_dir, "shape.brep")
+        param_file = path.join(tmp_dir, "gmsh_param.txt")
+        new_elementsbinary = path.join(tmp_dir, "nodesAndElements.bin")
+        output_mesh = path.join(tmp_dir, "mesh3D.med")
+
+        print("Running in folder: ", tmp_dir)
+        if not ( emptyParam ):
+            create_gmsh_param_file(param_file)
+        else:
+            create_gmsh_empty_param_file(param_file)
+        mesh_2d.ExportMED(mesh_file, 0, 41, 1, mesh_2d, 1, [], '', -1, 1)
+        geompy.ExportBREP( geo, shape_file )
+        
+        runner = path.join("${GMSHPLUGIN_ROOT_DIR}",
+                           "bin",
+                           "salome",
+                           "GMSHPlugin_Runner")
+
+        if sys.platform == 'win32':
+            runner += ".exe"
+
+        cmd = "{runner} GMSH3D {mesh_file} {shape_file} "\
+              "{param_file} NONE {new_elementsbinary} {output_mesh}"\
+              .format(runner=runner,
+                      mesh_file=mesh_file,
+                      shape_file=shape_file,
+                      param_file=param_file,
+                      new_elementsbinary=new_elementsbinary,
+                      output_mesh=output_mesh)
+        print(cmd)
+        subprocess.check_call(cmd, shell=True)
+
+        mesh_read = mc.ReadUMeshFromFile(output_mesh, "MESH", 0)
+
+        nb_tetras = mesh_read.getNumberOfCellsWithType(mc.NORM_TETRA4)
+        nb_points = mesh_read.getNumberOfNodes()
+
+        mesh_read = mc.ReadUMeshFromFile(output_mesh, "MESH", -1)
+        nb_triangles = mesh_read.getNumberOfCellsWithType(mc.NORM_TRI3)
+
+        mesh_read = mc.ReadUMeshFromFile(output_mesh, "MESH", -2)
+        nb_segments = mesh_read.getNumberOfCellsWithType(mc.NORM_SEG2)
+
+    return [nb_points, nb_segments, nb_triangles, nb_tetras]
+
+def test_gmsh3dDefault():
+    """ Test gmsh3d """
+    # Building geometry
+    box = geompy.MakeBoxDXDYDZ(200, 200, 200)
+
+    geompy.ExtractShapes(box, geompy.ShapeType["FACE"], True)
+    groupe_1 = geompy.CreateGroup(box, geompy.ShapeType["FACE"] )
+    geompy.UnionIDs(groupe_1, [3, 13, 23, 27, 31, 33])
+
+    [_, _, _, _, _, _, groupe_1] = geompy.GetExistingSubObjects(box, False)
+    
+    shape_faces = geompy.SubShapeAllSorted(box, geompy.ShapeType["FACE"])
+      
+    mesh_2d = smesh.Mesh(box, 'Maillage_1')
+
+    mesh_2d.Triangle(algo=smeshBuilder.NETGEN_1D2D)
+    isDone = mesh_2d.Compute()
+    premeshedTriangles  = mesh_2d.NbFaces()
+    premeshedTetras     = mesh_2d.NbVolumes() 
+
+    if not isDone:
+        raise Exception("Error when computing Mesh")
+
+    smesh.SetName(mesh_2d, 'Maillage_1')
+
+    [nb_points, nb_segments, nb_triangles, nb_tetras] = runTheMesher( mesh_2d, box )
+    
+
+    print("Nb Tetras:", nb_tetras)
+    print("Nb Triangles:", nb_triangles)
+    print("Nb Segments:", nb_segments)
+    print("Nb Points:", nb_points)
+    
+    assert premeshedTetras == 0      
+    assert nb_triangles == premeshedTriangles
+    assert nb_tetras == 6 # number of tetras for normalized 2D premesh (update if default 2D netgen change!)
+    assert nb_points == 8 # one node in each vertex of the cube
+    assert nb_segments > 0
+
+def test_gmsh3d():
+    """ Test gmsh3d """
+    # Building geometry
+    box = geompy.MakeBoxDXDYDZ(200, 200, 200)
+
+    geompy.ExtractShapes(box, geompy.ShapeType["FACE"], True)
+    groupe_1 = geompy.CreateGroup(box, geompy.ShapeType["FACE"] )
+    geompy.UnionIDs(groupe_1, [3, 13, 23, 27, 31, 33])
+
+    [_, _, _, _, _, _, groupe_1] = geompy.GetExistingSubObjects(box, False)
+    
+    shape_faces = geompy.SubShapeAllSorted(box, geompy.ShapeType["FACE"])
+
+    # Creating 2D mesh
+    netgen_2d_parameters_1 = smesh.CreateHypothesisByAverageLength(
+        'NETGEN_Parameters_2D', 'NETGENEngine', 34.641,  0 )
+    
+    mesh_2d = smesh.Mesh(box, 'Maillage_1')
+    mesh_2d.AddHypothesis(box, netgen_2d_parameters_1)
+
+    mesh_2d.Triangle(algo=smeshBuilder.NETGEN_1D2D)
+    isDone = mesh_2d.Compute()
+    premeshedTriangles  = mesh_2d.NbFaces()
+    premeshedTetras     = mesh_2d.NbVolumes() 
+
+    if not isDone:
+        raise Exception("Error when computing Mesh")
+
+    smesh.SetName(mesh_2d, 'Maillage_1')
+
+    [nb_points, nb_segments, nb_triangles, nb_tetras] = runTheMesher( mesh_2d, box )
+    
+
+    print("Nb Tetras:", nb_tetras)
+    print("Nb Triangles:", nb_triangles)
+    print("Nb Segments:", nb_segments)
+    print("Nb Points:", nb_points)
+    
+    assert premeshedTetras == 0      
+    assert nb_triangles == premeshedTriangles
+    assert nb_tetras > 6
+    assert nb_points > 8
+    assert nb_segments > 0
+    
+def test_gmsh3d_empty_parameters():
+    """ Test gmsh3d """
+    # Building geometry
+    box = geompy.MakeBoxDXDYDZ(200, 200, 200)
+
+    geompy.ExtractShapes(box, geompy.ShapeType["FACE"], True)
+    groupe_1 = geompy.CreateGroup(box, geompy.ShapeType["FACE"] )
+    geompy.UnionIDs(groupe_1, [3, 13, 23, 27, 31, 33])
+
+    [_, _, _, _, _, _, groupe_1] = geompy.GetExistingSubObjects(box, False)
+    
+    shape_faces = geompy.SubShapeAllSorted(box, geompy.ShapeType["FACE"])
+
+    # Creating 2D mesh
+    netgen_2d_parameters_1 = smesh.CreateHypothesisByAverageLength(
+        'NETGEN_Parameters_2D', 'NETGENEngine', 34.641,  0 )
+    
+    mesh_2d = smesh.Mesh(box, 'Maillage_1')
+    mesh_2d.AddHypothesis(box, netgen_2d_parameters_1)
+
+    mesh_2d.Triangle(algo=smeshBuilder.NETGEN_1D2D)
+    isDone = mesh_2d.Compute()
+    premeshedTriangles  = mesh_2d.NbFaces()
+    premeshedTetras     = mesh_2d.NbVolumes() 
+
+    if not isDone:
+        raise Exception("Error when computing Mesh")
+
+    smesh.SetName(mesh_2d, 'Maillage_1')
+
+    [nb_points, nb_segments, nb_triangles, nb_tetras] = runTheMesher( mesh_2d, box, True )
+    
+
+    print("Nb Tetras:", nb_tetras)
+    print("Nb Triangles:", nb_triangles)
+    print("Nb Segments:", nb_segments)
+    print("Nb Points:", nb_points)
+    
+    assert premeshedTetras == 0      
+    assert nb_triangles == premeshedTriangles
+    assert nb_tetras > 6
+    assert nb_points > 8
+    assert nb_segments > 0
+
+if __name__ == "__main__":
+    if sys.platform == "win32":
+        print("Disabled on windows")
+        sys.exit(0)
+
+    test_gmsh3dDefault()
+    test_gmsh3d()
+    test_gmsh3d_empty_parameters()
+    
diff --git a/test/netgen_runner.py b/test/netgen_runner.py
new file mode 100644 (file)
index 0000000..9e61dc7
--- /dev/null
@@ -0,0 +1,140 @@
+#!/usr/bin/env python
+import sys
+import salome
+
+salome.salome_init()
+
+from os import path
+import tempfile
+import subprocess
+
+import GEOM, SMESH, SALOMEDS
+
+from salome.geom import geomBuilder
+from salome.smesh import smeshBuilder
+
+import math
+
+smesh = smeshBuilder.New()
+geompy = geomBuilder.New()
+
+import medcoupling as mc
+
+def create_param_file(param_file):
+    """ Create a parameter file for runner """
+    param = """1
+34.64
+0.14
+16
+0.15
+1.5
+0
+0
+1
+5
+1
+1
+-1
+3
+3
+0.2
+2
+1
+0
+0
+2
+2
+0
+
+0
+0
+0"""
+    with open(param_file, "w") as ffile:
+        ffile.write(param)
+
+
+def test_netgen3d():
+    """ Test netgen3d mesher """
+    # Building geometry
+    box = geompy.MakeBoxDXDYDZ(200, 200, 200)
+
+    geompy.ExtractShapes(box, geompy.ShapeType["FACE"], True)
+    groupe_1 = geompy.CreateGroup(box, geompy.ShapeType["FACE"] )
+    geompy.UnionIDs(groupe_1, [3, 13, 23, 27, 31, 33])
+
+    [_, _, _, _, _, _, groupe_1] = geompy.GetExistingSubObjects(box, False)
+    
+    shape_faces = geompy.SubShapeAllSorted(box, geompy.ShapeType["FACE"])
+    oneFace = shape_faces[0]
+
+    # Creating 2D mesh
+    netgen_2d_parameters_1 = smesh.CreateHypothesisByAverageLength(
+        'NETGEN_Parameters_2D', 'NETGENEngine', 34.641, 0)
+    
+    mesh_2d = smesh.Mesh(box, 'Maillage_1')
+    mesh_2d.AddHypothesis(box, netgen_2d_parameters_1)
+
+    mesh_2d.Triangle(algo=smeshBuilder.NETGEN_1D2D)
+    isDone = mesh_2d.Compute()
+
+    if not isDone:
+        raise Exception("Error when computing Mesh")
+
+    smesh.SetName(mesh_2d, 'Maillage_1')
+
+    with tempfile.TemporaryDirectory() as tmp_dir:
+        mesh_file = path.join(tmp_dir, "mesh.med")
+        shape_file = path.join(tmp_dir, "shape.step")
+        param_file = path.join(tmp_dir, "param.txt")
+        output_mesh = path.join(tmp_dir, "mesh3D.med")
+
+        print("Running in folder: ", tmp_dir)
+        create_param_file(param_file)
+
+        mesh_2d.ExportMED(mesh_file, 0, 41, 1, mesh_2d, 1, [], '', -1, 1)
+        geompy.ExportSTEP(box, shape_file, GEOM.LU_METER)
+
+        runner = path.join("${NETGENPLUGIN_ROOT_DIR}",
+                           "bin",
+                           "salome",
+                           "NETGENPlugin_Runner")
+
+        if sys.platform == 'win32':
+            runner += ".exe"
+
+        cmd = "{runner} NETGEN3D {mesh_file} {shape_file} "\
+              "{param_file} NONE NONE {output_mesh}"\
+              .format(runner=runner,
+                      mesh_file=mesh_file,
+                      shape_file=shape_file,
+                      param_file=param_file,
+                      output_mesh=output_mesh)
+        print(cmd)
+        subprocess.check_call(cmd, shell=True)
+
+        mesh_read = mc.ReadUMeshFromFile(output_mesh, "MESH", 0)
+
+        nb_tetras = mesh_read.getNumberOfCellsWithType(mc.NORM_TETRA4)
+        nb_points = mesh_read.getNumberOfNodes()
+
+        mesh_read = mc.ReadUMeshFromFile(output_mesh, "MESH", -1)
+        nb_triangles = mesh_read.getNumberOfCellsWithType(mc.NORM_TRI3)
+
+        mesh_read = mc.ReadUMeshFromFile(output_mesh, "MESH", -2)
+        nb_segments = mesh_read.getNumberOfCellsWithType(mc.NORM_SEG2)
+
+        print("Nb Tetras:", nb_tetras)
+        print("Nb Triangles:", nb_triangles)
+        print("Nb Segments:", nb_segments)
+        print("Nb Points:", nb_points)
+
+        assert nb_points > 0
+        assert nb_segments > 0
+        assert nb_triangles > 0
+        assert nb_tetras > 0
+
+if __name__ == "__main__":
+    if sys.platform == "win32":
+        print("Disabled on windows")
+        sys.exit(0)
+    test_netgen3d()
\ No newline at end of file
diff --git a/test/netgen_runner_1D2D3D.py b/test/netgen_runner_1D2D3D.py
new file mode 100644 (file)
index 0000000..4db4912
--- /dev/null
@@ -0,0 +1,187 @@
+#!/usr/bin/env python
+import sys
+import salome
+
+salome.salome_init()
+
+from os import path
+import tempfile
+import subprocess
+
+import GEOM, SMESH, SALOMEDS
+
+from salome.geom import geomBuilder
+from salome.smesh import smeshBuilder
+
+import math
+
+smesh = smeshBuilder.New()
+geompy = geomBuilder.New()
+
+import medcoupling as mc
+
+def create_simple2d_param_file_1D(param_file,segments,segLenght,maxArea):
+    """ Create a parameter file for runner """
+    param = """1
+{}
+{}
+{}
+0""".format(segments,segLenght,maxArea)
+    with open(param_file, "w") as ffile:
+        ffile.write(param)
+
+def create_simple2d3d_param_file_1D(param_file,segments,segLenght,maxArea,maxVolume):
+    """ Create a parameter file for runner """
+    param = """1
+{}
+{}
+{}
+{}
+0""".format(segments,segLenght,maxArea,maxVolume)
+
+    with open(param_file, "w") as ffile:
+        ffile.write(param)
+
+def CommonFunction(netgen,case,segments,segLenght,maxArea,maxVolume):
+    # Building geometry
+    box = geompy.MakeBoxDXDYDZ(200, 200, 200)
+
+    # Create 1D regular elements
+    mesh_1d = smesh.Mesh(box, 'Maillage_1')
+    mesh_1d.Segment().NumberOfSegments(1)
+    isDone = mesh_1d.Compute()
+
+    if not isDone:
+        raise Exception("Error when computing Mesh")
+
+    smesh.SetName(mesh_1d, 'Maillage_1')
+    nb_points = 0
+    nb_segments = 0
+    nb_triangles = 0
+    nb_tetras = 0
+    with tempfile.TemporaryDirectory() as tmp_dir:
+        mesh_file = path.join(tmp_dir, "mesh.med")
+        shape_file = path.join(tmp_dir, "shape.brep")
+        if ( case <= 2 ):
+            param_file = path.join(tmp_dir, "param_simple2D.txt")
+        else: 
+            param_file = path.join(tmp_dir, "param_simple3D.txt")
+
+        output_mesh = path.join(tmp_dir, "meshout.med")
+
+        print("Running in folder: ", tmp_dir)
+        
+        if ( case <= 2 ):
+            create_simple2d_param_file_1D(param_file, segments, segLenght, maxArea )
+        else:
+            create_simple2d3d_param_file_1D(param_file, segments, segLenght, maxArea, maxVolume )
+        
+        mesh_1d.ExportMED(mesh_file, 0, 41, 1, mesh_1d, 1, [], '', -1, 1)
+        geompy.ExportBREP( box, shape_file )
+
+        runner = path.join("${NETGENPLUGIN_ROOT_DIR}",
+                            "bin",
+                            "salome",
+                            "NETGENPlugin_Runner")
+
+        if sys.platform == 'win32':
+            runner += ".exe"
+
+        cmd = "{runner} {NETGEN} {mesh_file} {shape_file} "\
+                "{param_file} NONE NONE {output_mesh}"\
+                .format(runner=runner,
+                        NETGEN=netgen,
+                        mesh_file=mesh_file,
+                        shape_file=shape_file,
+                        param_file=param_file,
+                        output_mesh=output_mesh)
+        print(cmd)
+        subprocess.check_call(cmd, shell=True)   
+        mesh_read = mc.ReadUMeshFromFile(output_mesh, "MESH", 0)
+        nb_points = mesh_read.getNumberOfNodes()
+        if (case == 1):
+            nb_segments = mesh_read.getNumberOfCellsWithType(mc.NORM_SEG2)
+        if (case == 2):
+            nb_triangles = mesh_read.getNumberOfCellsWithType(mc.NORM_TRI3)
+            mesh_read    = mc.ReadUMeshFromFile(output_mesh, "MESH", -1)
+            nb_segments  = mesh_read.getNumberOfCellsWithType(mc.NORM_SEG2)
+        if (case == 3):
+            nb_tetras = mesh_read.getNumberOfCellsWithType(mc.NORM_TETRA4)
+            mesh_read = mc.ReadUMeshFromFile(output_mesh, "MESH", -1)
+            nb_triangles = mesh_read.getNumberOfCellsWithType(mc.NORM_TRI3)
+            mesh_read = mc.ReadUMeshFromFile(output_mesh, "MESH", -2)
+            nb_segments = mesh_read.getNumberOfCellsWithType(mc.NORM_SEG2)
+            
+    return [nb_points,nb_segments,nb_triangles,nb_tetras] 
+
+def test_netgen1d():
+    [nb_points,nb_segments,nb_triangles,nb_tetras] = CommonFunction( "NETGEN1D", 1, 1, 200, 0.0, 0.0 )
+
+    print("Nb Points:", nb_points)
+    print("Nb Segments:", nb_segments)
+    assert nb_points > 0
+    assert nb_segments > 0
+    
+
+def test_netgen1d2d():
+    """ Test netgen1d2d mesher """
+    [nb_points,nb_segments,nb_triangles,nb_tetras] = CommonFunction( "NETGEN1D2D", 2, 1, 200, 0.0, 0.0 )
+    
+    print("Nb Triangles:", nb_triangles)
+    print("Nb Segments:", nb_segments)
+    print("Nb Points:", nb_points)
+
+    assert nb_triangles == 12
+    assert nb_points > 0
+    assert nb_segments > 0
+
+def test_netgen1d2dMaxArea():
+    """ Test netgen1d2d mesher """
+    [nb_points,nb_segments,nb_triangles, nb_tetras] = CommonFunction( "NETGEN1D2D", 2, 5, 200, 50.0, 0.0 )
+    
+    print("Nb Triangles:", nb_triangles)
+    print("Nb Segments:", nb_segments)
+    print("Nb Points:", nb_points)
+
+    assert nb_triangles > 12
+    assert nb_points > 0
+    assert nb_segments > 0
+
+                
+def test_netgen1d2d3d():
+    """ Test netgen1d2d mesher """
+    [nb_points,nb_segments,nb_triangles,nb_tetras] = CommonFunction( "NETGEN1D2D3D", 3, 1, 200, 0.0, 0.0 )
+
+    print("Nb Tetras:", nb_tetras)
+    print("Nb Triangles:", nb_triangles)
+    print("Nb Segments:", nb_segments)
+    print("Nb Points:", nb_points)
+    
+    assert nb_triangles == 12
+    assert nb_tetras == 5
+    assert nb_points > 0
+    assert nb_segments > 0
+
+def test_netgen1d2dMaxVolume():
+    """ Test netgen1d2d mesher """
+    [nb_points,nb_segments,nb_triangles,nb_tetras] = CommonFunction( "NETGEN1D2D3D", 3, 1, 200, 500.0, 500.0 )
+
+    print("Nb Tetras:", nb_tetras)
+    print("Nb Triangles:", nb_triangles)
+    print("Nb Segments:", nb_segments)
+    print("Nb Points:", nb_points)
+    
+    assert nb_triangles > 12
+    assert nb_tetras > 5
+    assert nb_points > 0
+    assert nb_segments > 0
+
+if __name__ == "__main__":
+    if sys.platform == "win32":
+        print("Disabled on windows")
+        sys.exit(0)
+    test_netgen1d()
+    test_netgen1d2d()
+    test_netgen1d2d3d()
+    test_netgen1d2dMaxArea()
+    test_netgen1d2dMaxVolume() 
diff --git a/test/netgen_runner_2D.py b/test/netgen_runner_2D.py
new file mode 100644 (file)
index 0000000..36be1b7
--- /dev/null
@@ -0,0 +1,182 @@
+#!/usr/bin/env python
+import sys
+import salome
+
+salome.salome_init()
+
+from os import path
+import tempfile
+import subprocess
+
+import GEOM, SMESH, SALOMEDS
+
+from salome.geom import geomBuilder
+from salome.smesh import smeshBuilder
+
+import math
+
+smesh = smeshBuilder.New()
+geompy = geomBuilder.New()
+
+import medcoupling as mc
+
+def create_param_file(param_file):
+    """ Create a parameter file for runner """
+    param = """1
+34.641
+0.14
+16
+0.15
+1.5
+0
+0
+1
+5
+1
+1
+-1
+3
+3
+0.2
+2
+1
+0
+0
+2
+2
+0
+
+0
+0
+0"""
+    with open(param_file, "w") as ffile:
+        ffile.write(param)
+
+def create_maxarea_param_file_2D(param_file,maxArea):
+    """ Create a parameter file for runner """
+    param = """1
+{}
+""".format(maxArea)
+    with open(param_file, "w") as ffile:
+        ffile.write(param)
+
+def create_lenghtFromEdges_param_file_2D(param_file):
+    """ Create a parameter file for runner """
+    param = """1
+"""
+
+    with open(param_file, "w") as ffile:
+        ffile.write(param)
+
+def CommonFunction(netgen,case,numberOfEdges1D,hypo,maxArea):
+    # Building geometry
+    geometry = geompy.MakeBoxDXDYDZ(200, 200, 200)
+    # Create 1D regular elements
+    mesh_1d = smesh.Mesh(geometry, 'Maillage_1')
+    mesh_1d.Segment().NumberOfSegments(numberOfEdges1D)
+    isDone = mesh_1d.Compute()
+
+    if not isDone:
+        raise Exception("Error when computing Mesh")
+
+    smesh.SetName(mesh_1d, 'Maillage_1')
+    nb_points = 0
+    nb_segments = 0
+    nb_triangles = 0
+    nb_tetras = 0
+    with tempfile.TemporaryDirectory() as tmp_dir:
+        mesh_file = path.join(tmp_dir, "mesh.med")
+        shape_file = path.join(tmp_dir, "shape.brep")
+
+        if ( hypo == 0 ): 
+            param_file = path.join(tmp_dir, "param.txt")
+            create_param_file(param_file )
+
+        if ( hypo == 1 ):
+            param_file = path.join(tmp_dir, "param_lenghtfromedge.txt")
+            create_lenghtFromEdges_param_file_2D(param_file ) 
+
+        if ( hypo == 2 ):
+            param_file = path.join(tmp_dir, "param_maxarea.txt")
+            create_maxarea_param_file_2D(param_file,maxArea)            
+        
+        bin_file    =  path.join(tmp_dir, "mesh.bin")
+        output_mesh = path.join(tmp_dir, "meshout.med")
+
+        print("Running in folder: ", tmp_dir)
+                
+        mesh_1d.ExportMED(mesh_file, 0, 41, 1, mesh_1d, 1, [], '', -1, 1)
+        geompy.ExportBREP( geometry, shape_file )
+
+        runner = path.join("${NETGENPLUGIN_ROOT_DIR}",
+                            "bin",
+                            "salome",
+                            "NETGENPlugin_Runner")
+
+        if sys.platform == 'win32':
+            runner += ".exe"
+
+        cmd = "{runner} {NETGEN} {mesh_file} {shape_file} "\
+                "{param_file} NONE {bin_file} {output_mesh}"\
+                .format(runner=runner,
+                        NETGEN=netgen,
+                        mesh_file=mesh_file,
+                        shape_file=shape_file,
+                        param_file=param_file,
+                        bin_file=bin_file,
+                        output_mesh=output_mesh)
+        print(cmd)
+        subprocess.check_call(cmd, shell=True)   
+        mesh_read = mc.ReadUMeshFromFile(output_mesh, "MESH", 0)
+        nb_points = mesh_read.getNumberOfNodes()
+        if (case == 2):
+            nb_triangles = mesh_read.getNumberOfCellsWithType(mc.NORM_TRI3)
+            mesh_read    = mc.ReadUMeshFromFile(output_mesh, "MESH", -1)
+            nb_segments  = mesh_read.getNumberOfCellsWithType(mc.NORM_SEG2)
+            
+    return [nb_points,nb_segments,nb_triangles,nb_tetras] 
+    
+
+def test_netgen2d():
+    """ Test netgen2d mesher """
+    [nb_points,nb_segments,nb_triangles,nb_tetras] = CommonFunction( "NETGEN2D", 2, 3, 0, 0.0 )
+    
+    print("Nb Triangles:", nb_triangles)
+    print("Nb Segments:", nb_segments)
+    print("Nb Points:", nb_points)
+
+    assert nb_triangles > 12
+    assert nb_points > 8
+    assert nb_segments > 12
+
+def test_netgen2dMaxArea():
+    """ Test netgen2d mesher """
+    [nb_points,nb_segments,nb_triangles,nb_tetras] = CommonFunction( "NETGEN2D", 2, 3, 2, 75.0 )
+    
+    print("Nb Triangles:", nb_triangles)
+    print("Nb Segments:", nb_segments)
+    print("Nb Points:", nb_points)
+
+    assert nb_triangles > 12
+    assert nb_points > 8
+    assert nb_segments > 12
+
+def test_netgen2dLenghtFromEdge():
+    """ Test netgen2d mesher """
+    [nb_points,nb_segments,nb_triangles,nb_tetras] = CommonFunction( "NETGEN2D", 2, 1, 1, 0.0 )
+    
+    print("Nb Triangles:", nb_triangles)
+    print("Nb Segments:", nb_segments)
+    print("Nb Points:", nb_points)
+
+    assert nb_triangles == 12
+    assert nb_points == 8
+    assert nb_segments == 12
+
+if __name__ == "__main__":
+    if sys.platform == "win32":
+        print("Disabled on windows")
+        sys.exit(0)
+    test_netgen2d()
+    test_netgen2dMaxArea()
+    test_netgen2dLenghtFromEdge()
diff --git a/test/shaper_smesh_groups_without_session.py b/test/shaper_smesh_groups_without_session.py
new file mode 100644 (file)
index 0000000..f85828e
--- /dev/null
@@ -0,0 +1,83 @@
+
+"""
+Check that creating a mesh on a shaperstudy object does not raise orb not found in GetExistingSubObjects.
+It is called in SMESH GUI on Create mesh's Apply, in SMESHGUI_MeshOp::createSubMeshOnInternalEdges.
+We explicitly call GetExistingSubObjects here to be able to test it in python.
+"""
+
+import sys
+import salome
+
+salome.standalone()
+salome.salome_init()
+
+###
+### SHAPER component
+###
+
+from salome.shaper import model
+
+model.begin()
+partSet = model.moduleDocument()
+
+### Create Part
+Part_1 = model.addPart(partSet)
+Part_1_doc = Part_1.document()
+
+### Create Box
+Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
+
+### Create Group
+Group_1 = model.addGroup(Part_1_doc, "Edges", [model.selection("EDGE", "[Box_1_1/Left][Box_1_1/Bottom]")])
+Group_1.setName("edge_ox")
+Group_1.result().setName("edge_ox")
+
+### Create Group
+Group_2 = model.addGroup(Part_1_doc, "Edges", [model.selection("EDGE", "[Box_1_1/Back][Box_1_1/Left]")])
+Group_2.setName("edge_oz")
+Group_2.result().setName("edge_oz")
+
+model.end()
+
+###
+### SHAPERSTUDY component
+###
+
+model.publishToShaperStudy()
+import SHAPERSTUDY
+Box_1_1, edge_ox, edge_oz = SHAPERSTUDY.shape(model.featureStringId(Box_1))
+
+###
+### SMESH component
+###
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+#smesh.SetEnablePublish( False ) # Set to False to avoid publish in study if not needed or in some particular situations:
+                                 # multiples meshes built in parallel, complex and numerous mesh edition (performance)
+
+Mesh_1 = smesh.Mesh(Box_1_1)
+Mesh_1.Segment().LocalLength(5)
+Mesh_1.Triangle()
+
+if not Mesh_1.Compute():
+  raise Exception("Error when computing Mesh_1")
+
+edge_ox_1 = Mesh_1.GroupOnGeom(edge_ox,'edge_ox',SMESH.EDGE)
+edge_oz_1 = Mesh_1.GroupOnGeom(edge_oz,'edge_oz',SMESH.EDGE)
+
+# check that ObjectToSObject works (called in GetExistingSubObjects)
+Box_1_1_sobj = salome.ObjectToSObject(Box_1_1)
+if not Box_1_1_sobj:
+  raise Exception("No SObject for Box_1_1")
+
+# check that GetExistingSubObjects works (called in SMESHGUI_MeshOp::createSubMeshOnInternalEdges)
+shaperBuilder = salome.lcc.FindOrLoadComponent("FactoryServer","SHAPERSTUDY")
+sOp = shaperBuilder.GetIShapesOperations()
+geomGroups = sOp.GetExistingSubObjects(Box_1_1, True)
+
+assert(len(geomGroups)==2)
+
+assert(Mesh_1.GetMesh().NbTriangles()>16)
diff --git a/test/ssl_hdf5_symbols_conflicts.py b/test/ssl_hdf5_symbols_conflicts.py
new file mode 100644 (file)
index 0000000..eb6d461
--- /dev/null
@@ -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/test/test_helper.py b/test/test_helper.py
new file mode 100755 (executable)
index 0000000..2b94d0b
--- /dev/null
@@ -0,0 +1,56 @@
+#!/usr/bin/env python3
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+
+import unittest, sys, os
+
+class SalomeSession(object):
+    def __init__(self, script):
+        import runSalomeOld as runSalome
+        run_script = "runSalomeOld.py"
+        if sys.platform == 'win32':
+            module_dir = os.getenv("KERNEL_ROOT_DIR")
+            if module_dir: run_script = os.path.join(module_dir, "bin", "salome", run_script)
+            pass
+        sys.argv  = [run_script]
+        sys.argv += ["--terminal"]
+        sys.argv += ["--modules=GEOM,SHAPER,SHAPERSTUDY,SMESH"]
+        sys.argv += ["%s" % script]
+        if sys.platform == 'win32':
+            main_module_path = sys.modules['__main__'].__file__
+            sys.modules['__main__'].__file__ = ''
+        clt, d = runSalome.main()
+        if sys.platform == 'win32':
+            sys.modules['__main__'].__file__ = main_module_path
+        return
+
+    def __del__(self):
+        port = os.getenv('NSPORT')
+        import killSalomeWithPort
+        killSalomeWithPort.killMyPort(port)
+        return
+    pass
+
+class MyTest(unittest.TestCase):
+    def testFunction(self):
+        SalomeSession(sys.argv[1])
+    pass
+
+unittest.main(argv=sys.argv[:1])
diff --git a/test/test_import_1D2D_with_tetras_and_pyras.py b/test/test_import_1D2D_with_tetras_and_pyras.py
new file mode 100644 (file)
index 0000000..94298e3
--- /dev/null
@@ -0,0 +1,182 @@
+#!/usr/bin/env python
+
+# test fix bos #33557 Bad pyramids generated
+
+import sys
+import salome
+
+
+#nb_segs_right = 30
+#nb_segs_right = 100
+nb_segs_right = 150
+#nb_segs_right = 200
+
+algo = "MG-Tetra"
+#algo = "Netgen"
+#algo = "GMSH"
+
+algo_gmsh = "Delaunay"
+#algo_gmsh = "HXT"
+
+salome.salome_init()
+
+
+
+###
+### GEOM component
+###
+
+import GEOM
+from salome.geom import geomBuilder
+import math
+import SALOMEDS
+
+
+geompy = geomBuilder.New()
+
+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(-0.62375, 0.0575, 0.02)
+Vertex_2 = geompy.MakeVertex(-0.62375, -0.0575, 0.02)
+Vertex_3 = geompy.MakeVertex(-0.365, -0.0575, 0.02)
+Vertex_4 = geompy.MakeVertex(-0.365, 0.0575, 0.02)
+geomObj_1 = geompy.MakeMarker(0, 0, 0, 1, 0, 0, 0, 1, 0)
+Curve_1 = geompy.MakePolyline([Vertex_1, Vertex_4, Vertex_3, Vertex_2], True)
+Face_1 = geompy.MakeFaceWires([Curve_1], 1)
+[right_side] = geompy.SubShapes(Face_1, [6])
+[right_side] = geompy.GetExistingSubObjects(Face_1, False)
+path = geompy.MakePrismDXDYDZ(Vertex_3, 0, 0, 0.1)
+Translation_1 = geompy.MakeTranslation(Vertex_3, 0, -0.02, 0)
+Translation_2 = geompy.MakeTranslation(Vertex_4, 0, 0.02, 0)
+Translation_3 = geompy.MakeTranslation(Vertex_4, 0, 0.02, 0)
+Line_1 = geompy.MakeLineTwoPnt(Translation_3, Translation_1)
+Extrusion_1 = geompy.MakePrismDXDYDZ(Line_1, 0.2, 0, 0)
+Partition_1 = geompy.MakePartition([Extrusion_1], [Face_1], [], [], geompy.ShapeType["FACE"], 0, [], 0)
+Extrusion_2 = geompy.MakePrismDXDYDZ(Partition_1, 0, 0, 0.1)
+[Face_to_enforce] = geompy.SubShapes(Extrusion_2, [30])
+geompy.addToStudy( O, 'O' )
+geompy.addToStudy( OX, 'OX' )
+geompy.addToStudy( OY, 'OY' )
+geompy.addToStudy( OZ, 'OZ' )
+geompy.addToStudy( Vertex_1, 'Vertex_1' )
+geompy.addToStudy( Vertex_2, 'Vertex_2' )
+geompy.addToStudy( Vertex_3, 'Vertex_3' )
+geompy.addToStudy( Vertex_4, 'Vertex_4' )
+geompy.addToStudy( Curve_1, 'Curve_1' )
+geompy.addToStudy( Face_1, 'Face_1' )
+geompy.addToStudyInFather( Face_1, right_side, 'right_side' )
+geompy.addToStudy( path, 'path' )
+geompy.addToStudy( Translation_2, 'Translation_2' )
+geompy.addToStudy( Translation_1, 'Translation_1' )
+geompy.addToStudy( Translation_3, 'Translation_3' )
+geompy.addToStudy( Line_1, 'Line_1' )
+geompy.addToStudy( Extrusion_1, 'Extrusion_1' )
+geompy.addToStudy( Partition_1, 'Partition_1' )
+geompy.addToStudy( Extrusion_2, 'Extrusion_2' )
+geompy.addToStudyInFather( Extrusion_2, Face_to_enforce, 'Face_to_enforce' )
+
+
+# Create a group with other faces than Face_to_enforce
+all_faces = geompy.SubShapeAll(Extrusion_2, geompy.ShapeType["FACE"])
+gr_other_faces = geompy.CreateGroup(Extrusion_2, geompy.ShapeType["FACE"])
+geompy.UnionList(gr_other_faces, all_faces)
+geompy.DifferenceList(gr_other_faces, [Face_to_enforce])
+geompy.addToStudyInFather( Extrusion_2, gr_other_faces, 'other_faces' )
+
+geom_volume = geompy.BasicProperties(Extrusion_2)[2]
+
+###
+### SMESH component
+###
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+
+Mesh_1 = smesh.Mesh(Face_1,'Mesh_1')
+
+Regular_1D = Mesh_1.Segment()
+Number_of_Segments_1 = Regular_1D.NumberOfSegments(10)
+
+Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
+
+right_side_1 = Mesh_1.GroupOnGeom(right_side,'right_side',SMESH.EDGE)
+Regular_1D_1 = Mesh_1.Segment(geom=right_side)
+
+
+Number_of_Segments_2 = Regular_1D_1.NumberOfSegments(nb_segs_right)
+Propagation_of_1D_Hyp = Regular_1D_1.Propagation()
+
+isDone = Mesh_1.Compute()
+
+Mesh_path = smesh.Mesh(path,'Mesh_path')
+
+Regular_1D_2 = Mesh_path.Segment()
+Local_Length_1 = Regular_1D_2.LocalLength(0.01,None,1e-07)
+
+isDone = Mesh_path.Compute()
+
+([ right_side_extruded, right_side_top ], error) = Mesh_1.ExtrusionAlongPathObjects( [], [ Mesh_1 ], [ Mesh_1 ], Mesh_path, None, 1, 0, [  ], 0, 0, [ 0, 0, 0 ], 1, [  ], 0 )
+
+Mesh_2 = smesh.Mesh(Extrusion_2,'Mesh_2')
+
+# Enforce elements from Mesh_1
+Import_1D2D = Mesh_2.UseExisting2DElements(geom=Face_to_enforce)
+Source_Faces_1 = Import_1D2D.SourceFaces([ right_side_extruded ],0,0)
+
+if algo != "GMSH":
+  # CADSurf is global mesh
+  MG_CADSurf = Mesh_2.Triangle(algo=smeshBuilder.MG_CADSurf)
+else:
+  # CADSurf is a submesh on other faces
+  MG_CADSurf = Mesh_2.Triangle(algo=smeshBuilder.MG_CADSurf, geom=gr_other_faces)
+MG_CADSurf_Parameters_1 = MG_CADSurf.Parameters()
+MG_CADSurf_Parameters_1.SetGeometricMesh( 0 )
+MG_CADSurf_Parameters_1.SetPhySize( 0.005 )
+MG_CADSurf_Parameters_1.SetMinSize( 0.005 )
+MG_CADSurf_Parameters_1.SetMaxSize( 0.005 )
+MG_CADSurf_Parameters_1.SetCorrectSurfaceIntersection( False )
+MG_CADSurf_Parameters_1.SetElementType( 1 ) # Quadrangle preference
+if algo == "MG-Tetra":
+  Mesh_2.Tetrahedron(algo=smeshBuilder.MG_Tetra)
+elif algo == "Netgen":
+  Mesh_2.Tetrahedron()
+elif algo == "GMSH":
+  GMSH = Mesh_2.Tetrahedron(algo=smeshBuilder.GMSH)
+  Gmsh_Parameters = GMSH.Parameters()
+  Gmsh_Parameters.Set2DAlgo( 0 )
+  Gmsh_Parameters.SetMinSize( 0 )
+  Gmsh_Parameters.SetMaxSize(  0.005 )
+  if algo_gmsh == "HXT":
+    Gmsh_Parameters.Set3DAlgo( 4 ) 
+  else:
+    Gmsh_Parameters.Set3DAlgo( 0 ) 
+  Gmsh_Parameters.SetIs2d( 0 )
+
+Face_to_enforce_1 = Mesh_2.GroupOnGeom(Face_to_enforce,'Face_to_enforce',SMESH.FACE)
+
+
+isDone = Mesh_2.Compute()
+
+gr_pyramids = Mesh_2.MakeGroup("pyramids", SMESH.VOLUME, CritType=SMESH.FT_ElemGeomType, Threshold=SMESH.Geom_PYRAMID)
+
+if salome.sg.hasDesktop():
+  salome.sg.updateObjBrowser()
+
+if not isDone:
+  raise Exception("Error on mesh compute")
+
+mesh_volume = Mesh_2.GetVolume()
+assert abs(mesh_volume-geom_volume)/geom_volume < 1e-7, "Wrong mesh volume"
+
+min_aspect_ratio, max_aspect_ratio = Mesh_2.GetMinMax(SMESH.FT_AspectRatio3D)
+assert max_aspect_ratio < 200, "Bad aspect ratio 3D: %.1f"%max_aspect_ratio
+
+# Check min and max volume of pyramids
+min_volume, max_volume = Mesh_2.GetMinMax(SMESH.FT_Volume3D, gr_pyramids)
+assert min_volume > 1e-10, "Bad min volume: %s"%min_volume
+expected_max_volume = 6.829e-8
+assert max_volume < 1.5*expected_max_volume, "Bad max volume: %s"%max_volume
diff --git a/test/test_polyhedron_per_solid.py b/test/test_polyhedron_per_solid.py
new file mode 100644 (file)
index 0000000..e48141e
--- /dev/null
@@ -0,0 +1,129 @@
+#!/usr/bin/env python
+
+import sys
+import salome
+
+salome.salome_init_without_session()
+
+###
+### GEOM component
+###
+
+import GEOM
+from salome.geom import geomBuilder
+import math
+import SALOMEDS
+
+
+geompy = geomBuilder.New()
+
+## Creates a polygon given its centre, external radius and number of sides
+def makePolygon(p_centre, radius, nb_sides, theName=""):
+  global geompy, math
+  points = []
+  x, y, z = geompy.PointCoordinates(p_centre)
+  for i in range(nb_sides):
+    angle = i*2*math.pi/nb_sides
+    p = geompy.MakeVertex(x+radius*math.cos(angle), y+radius*math.sin(angle), 0)
+    points.append(p)
+  wire = geompy.MakePolyline(points, True)
+  face = geompy.MakeFace(wire, 1)
+  if theName:
+    geompy.addToStudy(face, theName)
+  return face
+
+## Creates a solid by adding a vertex on its top
+def makeSummitSolid(face, height, theName=""):
+  global geompy
+  p_cdg = geompy.MakeCDG(face)
+  p_top = geompy.MakeTranslation(p_cdg, 0, 0, height)
+  edges = geompy.SubShapeAll(face, geompy.ShapeType["EDGE"])
+  faces = [face]
+  for edge in edges:
+    p1, p2 = geompy.SubShapeAll(edge, geompy.ShapeType["VERTEX"])
+    wire = geompy.MakePolyline([p1, p2, p_top], True)
+    face = geompy.MakeFace(wire, 1)
+    faces.append(face)
+  shell = geompy.MakeShell(faces)
+  solid = geompy.MakeSolid(shell)
+  if theName:
+    geompy.addToStudy(solid, theName)
+  return solid
+
+O = geompy.MakeVertex(0, 0, 0)
+OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
+OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
+OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
+geompy.addToStudy( O, 'O' )
+geompy.addToStudy( OX, 'OX' )
+geompy.addToStudy( OY, 'OY' )
+geompy.addToStudy( OZ, 'OZ' )
+
+height = 0.5
+
+triangle = makePolygon(O, 1, 3, "triangle")
+
+P1 = geompy.MakeVertex(2, 0, 0)
+quadrangle = makePolygon(P1, 1, 4, "quadrangle")
+
+P2 = geompy.MakeVertex(4, 0, 0)
+pentagon = makePolygon(P2, 1, 5, "pentagon")
+
+P3 = geompy.MakeVertex(6, 0, 0)
+hexagon = makePolygon(P3, 1, 6, "hexagon")
+
+P4 = geompy.MakeVertex(8, 0, 0)
+heptagon = makePolygon(P4, 1, 7, "heptagon")
+
+P5 = geompy.MakeVertex(10, 0, 0)
+octagon = makePolygon(P5, 1, 7, "octagon")
+
+polygons = [triangle, quadrangle, pentagon, hexagon, heptagon, octagon]
+polyhedrons = []
+for polygon in polygons:
+  name = polygon.GetName()
+  polygon_extruded = geompy.MakePrismVecH(polygon, OZ, height, theName="%s_prism"%name)
+  polygon_summit = makeSummitSolid(polygon, -height, theName="%s_summit"%name)
+  polyhedrons += [polygon_extruded, polygon_summit]
+
+solids = geompy.MakeCompound(polyhedrons, theName="solids")
+
+
+###
+### SMESH component
+###
+
+import  SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+
+smesh = smeshBuilder.New()
+
+Mesh_1 = smesh.Mesh(solids)
+Regular_1D = Mesh_1.Segment()
+Number_of_Segments_1 = Regular_1D.NumberOfSegments(1)
+PolygonPerFace_2D = Mesh_1.Polygon()
+PolyhedronPerSolid_3D = Mesh_1.Polyhedron()
+
+ok = Mesh_1.Compute()
+if not ok:
+  raise Exception("Error when computing Mesh")
+
+# check volumes
+vol_geom = geompy.BasicProperties(solids)[2]
+vol_mesh = Mesh_1.GetVolume()
+
+assert abs(vol_geom - vol_mesh) < 1e-12
+
+assert Mesh_1.NbVolumes() == 12
+
+# check type of elements
+assert Mesh_1.NbTetras() == 1
+assert Mesh_1.NbHexas() == 1
+assert Mesh_1.NbPyramids() == 1
+assert Mesh_1.NbPrisms() == 1
+assert Mesh_1.NbHexagonalPrisms() == 1
+assert Mesh_1.NbPolyhedrons() == 7
+
+
+if salome.sg.hasDesktop():
+  salome.sg.updateObjBrowser()
diff --git a/test/test_smeshplugins.py b/test/test_smeshplugins.py
new file mode 100644 (file)
index 0000000..a6efe76
--- /dev/null
@@ -0,0 +1,190 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+Test000
+Checks the availability of the external plugins :
+ 1 NETGENPLUGIN
+ 2 GMSHPLUGIN
+ 3 MG-CADSURF           (BLSURFPLUGIN)
+ 4 MG-TETRA             (GHS3DPLUGIN)
+ 5 MG-HEXA              (HEXOTICPLUGIN)
+ 6 MG-HYBRID            (HYBRIDPLUGIN)
+Copyright EDF R&D 2017
+"""
+__revision__ = "V1.0"
+#
+# Computation of the meshes: T/F
+ComputeMeshes = True
+
+import salome
+import platform
+
+salome.salome_init_without_session()
+theStudy = salome.myStudy
+#
+import iparameters
+IPAR = iparameters.IParameters(salome.myStudy.GetCommonParameters("Interface Applicative", 1))
+
+# fill list AP_MODULES_LIST
+IPAR.append("AP_MODULES_LIST", "Geometry")
+IPAR.append("AP_MODULES_LIST", "Mesh")
+
+ERROR = 0
+MESSAGE = ""
+#
+while not ERROR :
+
+###
+### A. GEOM component
+###
+  import GEOM
+  from salome.geom import geomBuilder
+  geompy = geomBuilder.New()
+  O = geompy.MakeVertex(0, 0, 0, "0")
+  OX = geompy.MakeVectorDXDYDZ(1, 0, 0, "OX")
+  OY = geompy.MakeVectorDXDYDZ(0, 1, 0, "OY")
+  OZ = geompy.MakeVectorDXDYDZ(0, 0, 1, "OZ")
+  BOX = geompy.MakeBoxDXDYDZ(200, 200, 200, "BOX")
+
+###
+### B. SMESH component
+###
+
+  import  SMESH
+  from salome.smesh import smeshBuilder
+
+  smesh = smeshBuilder.New()
+
+# B.1. NETGEN
+  TEXTE = "NETGEN_1D2D3D"
+  MESH_1 = smesh.Mesh(BOX)
+  smesh.SetName(MESH_1.GetMesh(), "M_"+TEXTE)
+  try :
+    NETGEN_2D3D = MESH_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)
+  except :
+    MESSAGE += "\nImpossible d'utiliser "+TEXTE
+    ERROR += 1
+  else :
+    if ComputeMeshes :
+      smesh.SetName(NETGEN_2D3D.GetAlgorithm(), TEXTE)
+      OK_COMPUTE = MESH_1.Compute()
+      if not OK_COMPUTE :
+        MESSAGE += "\nErreur avec "+TEXTE
+        ERROR += 1
+      else :
+        print(TEXTE+": OK")
+
+# B.2. Gmsh
+  # GMSH for windows not yet implemented BOS #18709
+  if platform.system() != "Windows" :
+    TEXTE = "Gmsh"
+    MESH_2 = smesh.Mesh(BOX)
+    smesh.SetName(MESH_2.GetMesh(), "M_"+TEXTE)
+    try :
+      GMSH = MESH_2.Tetrahedron(algo=smeshBuilder.GMSH)
+    except :
+      MESSAGE += "\nImpossible d'utiliser "+TEXTE
+      ERROR += 1
+    else :
+      if ComputeMeshes :
+        smesh.SetName(GMSH.GetAlgorithm(), TEXTE)
+        OK_COMPUTE = MESH_2.Compute()
+        if not OK_COMPUTE :
+          MESSAGE += "\nErreur avec "+TEXTE
+          ERROR += 1
+        else :
+          print(TEXTE+": OK")
+  else :
+    print("Skipping B.2 on windows")
+
+# B.3. MG_CADSurf
+  TEXTE = "MG_CADSurf"
+  MESH_3 = smesh.Mesh(BOX)
+  smesh.SetName(MESH_3.GetMesh(), "M_"+TEXTE)
+  try :
+    MG_CADSurf = MESH_3.Triangle(algo=smeshBuilder.MG_CADSurf)
+  except :
+    MESSAGE += "\nImpossible d'utiliser "+TEXTE
+    ERROR += 1
+#   On arrete tout en cas de problème car les suivants en dépendent
+    break
+  else :
+    if ComputeMeshes :
+      smesh.SetName(MG_CADSurf.GetAlgorithm(), TEXTE)
+      OK_COMPUTE = MESH_3.Compute()
+      if not OK_COMPUTE :
+        MESSAGE += "\nErreur avec "+TEXTE
+        ERROR += 1
+      else :
+        print(TEXTE+": OK")
+
+# B.4. MG_Tetra
+  TEXTE = "MG_Tetra"
+  MESH_4 = smesh.Mesh(BOX)
+  smesh.SetName(MESH_4.GetMesh(), "M_"+TEXTE)
+  MG_CADSurf_Te = MESH_4.Triangle(algo=smeshBuilder.MG_CADSurf)
+  try :
+    MG_Tetra = MESH_4.Tetrahedron(algo=smeshBuilder.MG_Tetra)
+  except :
+    MESSAGE += "\nImpossible d'utiliser "+TEXTE
+    ERROR += 1
+  else :
+    if ComputeMeshes :
+      smesh.SetName(MG_Tetra.GetAlgorithm(), TEXTE)
+      OK_COMPUTE = MESH_4.Compute()
+      if not OK_COMPUTE :
+        MESSAGE += "\nErreur avec "+TEXTE
+        ERROR += 1
+      else :
+        print(TEXTE+": OK")
+
+# B.5. MG_Hexa
+  TEXTE = "MG_Hexa"
+  MESH_5 = smesh.Mesh(BOX)
+  smesh.SetName(MESH_5.GetMesh(), "M_"+TEXTE)
+  MG_CADSurf_He = MESH_5.Triangle(algo=smeshBuilder.MG_CADSurf)
+  try :
+    MG_Hexa = MESH_5.Hexahedron(algo=smeshBuilder.MG_Hexa)
+  except :
+    MESSAGE += "\nImpossible d'utiliser "+TEXTE
+    ERROR += 1
+  else :
+    if ComputeMeshes :
+      smesh.SetName(MG_Hexa.GetAlgorithm(), TEXTE)
+      OK_COMPUTE = MESH_5.Compute()
+      if not OK_COMPUTE :
+        MESSAGE += "\nErreur avec "+TEXTE
+        ERROR += 1
+      else :
+        print(TEXTE+": OK")
+
+# B.6. MG_Hybrid
+  TEXTE = "MG_Hybrid"
+  MESH_6 = smesh.Mesh(BOX)
+  smesh.SetName(MESH_6.GetMesh(), "M_"+TEXTE)
+  MG_CADSurf_Hy = MESH_6.Triangle(algo=smeshBuilder.MG_CADSurf)
+  try :
+    MG_Hybrid = MESH_6.Tetrahedron(algo=smeshBuilder.HYBRID)
+  except :
+    MESSAGE += "\nImpossible d'utiliser "+TEXTE
+    ERROR += 1
+  else :
+    if ComputeMeshes :
+      smesh.SetName(MG_Hybrid.GetAlgorithm(), TEXTE)
+      OK_COMPUTE = MESH_6.Compute()
+      if not OK_COMPUTE :
+        MESSAGE += "\nErreur avec "+TEXTE
+        ERROR += 1
+      else :
+        print(TEXTE+": OK")
+
+  break
+
+###
+### C. End
+###
+if ERROR :
+  raise Exception("\n\nNombre d'erreurs : %d" % ERROR + MESSAGE + "\n")
+else :
+  print("\nAucun problème\n")
+
diff --git a/test/test_vlapi_growthlayer.py b/test/test_vlapi_growthlayer.py
new file mode 100644 (file)
index 0000000..4f8aa55
--- /dev/null
@@ -0,0 +1,144 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+import math
+import salome
+salome.salome_init_without_session()
+
+import GEOM
+from salome.geom import geomBuilder
+from salome.smesh import smeshBuilder
+from salome.shaper import model
+
+def assertAlmostEqual(a,b,tol):
+   if ( abs(a-b) < tol ):
+      return True
+   else:
+      print( "not close vals", a, b )
+      return False
+
+
+geompy = geomBuilder.New()
+
+O = geompy.MakeVertex(0, 0, 0)
+OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
+OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
+OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
+
+# create a disk
+geompy.addToStudy( O, 'O' )
+geompy.addToStudy( OX, 'OX' )
+geompy.addToStudy( OY, 'OY' )
+geompy.addToStudy( OZ, 'OZ' )
+Box = geompy.MakeBox(0,0,0,10,10,10)
+
+smesh_builder = smeshBuilder.New()
+
+MesherBox = smesh_builder.Mesh(Box, "Box")
+viscousBuilder = MesherBox.ViscousLayerBuilder()
+
+#############BOX AND TETRA ELEMENTS
+#Set prismatic layer parameters
+offset = 0.7
+numLayers = 4
+viscousBuilder.setBuilderParameters( offset, numLayers, 1.2, [13], False )
+ShrinkBox = viscousBuilder.GetShrinkGeometry()
+
+#Mesh the shrink box
+MesherShinkBox = smesh_builder.Mesh(ShrinkBox, "ShrinkMesh")
+ShrinkBoxMesh = MesherShinkBox.Tetrahedron(smeshBuilder.NETGEN_1D2D3D)
+
+#Compute
+success = MesherShinkBox.Compute()
+assert( success )
+assert( MesherShinkBox.NbVolumes() == 5 ) # if Fails! change the default value of volumes when meshing with Netgen!
+
+FinalMesh = viscousBuilder.AddLayers( MesherShinkBox )
+assert( FinalMesh.NbVolumes() == 5 + numLayers * 2 )    # here 2 stands for the number of face elements per face in the box
+assert( FinalMesh.NbFaces() == 6 *  2 + 4 * numLayers ) # here is the number of face elements for the box + the new faces in the VL. (6 is the number of sides in the box)
+
+#Testing the configuration where face 13 is ignored and so the offset is applied to all other faces
+viscousBuilder.setBuilderParameters( offset, numLayers, 1.2, [13], True )
+ShrinkBox2 = viscousBuilder.GetShrinkGeometry()
+#Mesh the shrink box
+MesherShinkBox2 = smesh_builder.Mesh(ShrinkBox2, "ShrinkMesh2")
+ShrinkBoxMesh2 = MesherShinkBox2.Tetrahedron(smeshBuilder.NETGEN_1D2D3D)
+
+#Compute
+success = MesherShinkBox2.Compute()
+assert( success )
+
+#Test the number of elements on the shrink mesh
+assert( MesherShinkBox2.NbVolumes() == 5 ) # if Fails! change the default (default hypo) number of volumes when meshing with Netgen!
+
+FinalMesh2 = viscousBuilder.AddLayers( MesherShinkBox2 )
+
+assert( FinalMesh2.NbVolumes() == 5 + numLayers * 2 * 5  )   # here 2 stands for the number of face elements per face in the box
+assert( FinalMesh2.NbFaces() == 6 *  2 + 4 * numLayers ) # here is the number of face elements for the box + the new faces in the VL. (6 is the number of sides in the box)
+#############END BOX AND TETRA ELEMENTS
+
+#############MESH SQUARE FACE
+Face = geompy.MakeFaceHW(5, 5, 1)
+Disk = geompy.MakeDiskR(5, 1)
+
+MesherSqr = smesh_builder.Mesh(Face, "Face")
+viscousBuilder = MesherSqr.ViscousLayerBuilder()
+#Set prismatic layer parameters
+offset = 0.5
+numberOfLayers = 6
+viscousBuilder.setBuilderParameters( offset, numberOfLayers, 1.2 )
+ShrinkFace = viscousBuilder.GetShrinkGeometry()
+#Mesh the shrink face
+MesherShinkFace = smesh_builder.Mesh(ShrinkFace, "ShrinkFaceMesh")
+algo = MesherShinkFace.Segment()
+numOfSegments = 4
+algo.NumberOfSegments(numOfSegments)
+ShrinkFaceMesh = MesherShinkFace.Triangle()
+#Compute
+success = MesherShinkFace.Compute()
+assert( success )
+numFaceElementShrinkGeom = MesherShinkFace.NbFaces()
+FinalFaceMesh = viscousBuilder.AddLayers( MesherShinkFace )
+# Check the number of additional elements
+# numOfSegments * 4 * numberOfLayers
+finalNumOfElements = FinalFaceMesh.NbFaces()
+assert( numFaceElementShrinkGeom + 4 * numOfSegments * numberOfLayers == finalNumOfElements )
+
+#############END MESH SQUARE FACE
+
+#############MESH CIRCULAR FACE
+MesherCircle = smesh_builder.Mesh(Disk, "Disk")
+viscousBuilder = MesherCircle.ViscousLayerBuilder()
+viscousBuilder.setBuilderParameters( offset, numberOfLayers, 1.2 )
+ShrinkCircle = viscousBuilder.GetShrinkGeometry()
+MesherShinkCircle = smesh_builder.Mesh(ShrinkCircle, "ShrinkCircleMesh")
+algo = MesherShinkCircle.Segment()
+numOfSegments = 12
+algo.NumberOfSegments(numOfSegments)
+ShrinkCircleMesh = MesherShinkCircle.Triangle()
+
+#Compute
+success = MesherShinkCircle.Compute()
+numFaceElementShrinkGeom = MesherShinkCircle.NbFaces()
+assert( success )
+FinalCircleMesh = viscousBuilder.AddLayers( MesherShinkCircle )
+finalNumOfElements = FinalCircleMesh.NbFaces()
+assert( numFaceElementShrinkGeom + numOfSegments * numberOfLayers == finalNumOfElements )
+#############END MESH CIRCULAR FACE
diff --git a/test/test_vlapi_shrinkgeometry.py b/test/test_vlapi_shrinkgeometry.py
new file mode 100644 (file)
index 0000000..7929d81
--- /dev/null
@@ -0,0 +1,208 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024  CEA, EDF, 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
+#
+
+import math
+import salome
+salome.salome_init_without_session()
+
+import GEOM
+from salome.geom import geomBuilder
+from salome.smesh import smeshBuilder
+from salome.shaper import model
+
+def assertAlmostEqual(a,b,tol):
+   if ( abs(a-b) < tol ):
+      return True
+   else:
+      print( "not close vals", a, b )
+      return False
+
+
+geompy = geomBuilder.New()
+
+O = geompy.MakeVertex(0, 0, 0)
+OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
+OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
+OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
+
+# create a disk
+geompy.addToStudy( O, 'O' )
+geompy.addToStudy( OX, 'OX' )
+geompy.addToStudy( OY, 'OY' )
+geompy.addToStudy( OZ, 'OZ' )
+Box = geompy.MakeBox(0,0,0,10,10,10)
+
+smesh_builder = smeshBuilder.New()
+
+MesherBox = smesh_builder.Mesh(Box, "Box")
+viscousBuilder = MesherBox.ViscousLayerBuilder()
+
+#Set prismatic layer parameters
+offset = 0.1
+
+####SHRINK THE BOX IN ALL DIRECTIONS
+#No list of faces is passed and the isToIgnore flag true by default so the offset if applied to the entire geometry
+viscousBuilder.setBuilderParameters( offset, 4, 1.2 )
+ShrinkBox = viscousBuilder.GetShrinkGeometry()
+
+BoxProperties = geompy.BasicProperties(Box)
+ShrinkBoxProperties = geompy.BasicProperties(ShrinkBox)
+assert( BoxProperties[2] > ShrinkBoxProperties[2] )
+
+assert( assertAlmostEqual( BoxProperties[2], (10.0)**(3.0), 1e-12 ) )
+#The geometry is shrank in all directions
+assert( assertAlmostEqual( ShrinkBoxProperties[2], (10.0-offset*2)**(3), 1e-12 ) )
+####END SHRINK THE BOX IN ALL DIRECTIONS
+
+####SHRINK THE BOX EXCEPT FOR ONE FACE
+viscousBuilder = MesherBox.ViscousLayerBuilder()
+selectableFaces = geompy.SubShapeAllSortedCentresIDs(Box, geompy.ShapeType["FACE"])
+# Set face 1 TO BE ignored
+viscousBuilder.setBuilderParameters( offset, 4, 1.2, [ selectableFaces[ 0 ] ], True  ) # Shrink in all faces except face id
+ShrinkBox = viscousBuilder.GetShrinkGeometry()
+ShrinkBoxProperties = geompy.BasicProperties(ShrinkBox)
+selectableShrinkFaces = geompy.SubShapeAllSortedCentresIDs(ShrinkBox, geompy.ShapeType["FACE"])
+assert( assertAlmostEqual( ShrinkBoxProperties[2], (10.0-offset*2)**(2)*(10.0-offset), 1e-12 ) )
+####END SHRINK THE BOX EXCEPT FOR ONE FACE
+
+####SHRINK THE BOX IN DIRECTION OF ONLY ONE FACE
+# Set face 1 TO NOT be ignored
+viscousBuilder.setBuilderParameters( offset, 4, 1.2, [ selectableFaces[ 0 ] ], False ) # Shrink only the faceid
+ShrinkBox = viscousBuilder.GetShrinkGeometry()
+ShrinkBoxProperties = geompy.BasicProperties(ShrinkBox)
+assert( assertAlmostEqual( ShrinkBoxProperties[2], (10.0)**(2)*(10.0-offset), 1e-12 ) )
+selectableShrinkFaces = geompy.SubShapeAllSortedCentresIDs(ShrinkBox, geompy.ShapeType["FACE"])
+####END SHRINK THE BOX IN DIRECTION OF ONLY ONE FACE
+
+####DO NOT SHRINK THE BOX
+viscousBuilder.setBuilderParameters( offset, 4, 1.2, isElementToIgnore = False )
+ShrinkBox = viscousBuilder.GetShrinkGeometry()
+BoxProperties = geompy.BasicProperties(Box)
+ShrinkBoxProperties = geompy.BasicProperties(ShrinkBox)
+assert( assertAlmostEqual( BoxProperties[2], ShrinkBoxProperties[2], 1e-12) )
+####END DO NOT SHRINK THE BOX
+
+####SHRINK THE ENTIRE SPHERE
+#Test shrinking sphere
+Radius = 10.0
+Sphere = geompy.MakeSphere(0,0,0,Radius)
+MesherSphere = smesh_builder.Mesh(Sphere, "Sphere")
+viscousBuilder = MesherSphere.ViscousLayerBuilder()
+viscousBuilder.setBuilderParameters( offset, 4, 1.2 )
+ShrinkSphere = viscousBuilder.GetShrinkGeometry()
+ShrinkSphereProperties = geompy.BasicProperties(ShrinkSphere)
+assert( ShrinkSphereProperties[2] < 4.0/3.0*math.pi * Radius**3 )
+assert( assertAlmostEqual( ShrinkSphereProperties[2], 4.0/3.0*math.pi*(10.0-offset)**(3), 1e-12 ) )
+####END SHRINK THE ENTIRE SPHERE
+
+####SHRINK THE ENTIRE CYLINDER
+#Test shrinking cylinder
+Cylinder = geompy.MakeCylinderRH(10,30)
+MesherCylinder = smesh_builder.Mesh(Cylinder, "Cylinder")
+viscousBuilder = MesherCylinder.ViscousLayerBuilder()
+viscousBuilder.setBuilderParameters( offset, 4, 1.2 )
+ShrinkCylinder = viscousBuilder.GetShrinkGeometry()
+CylinderProp = geompy.BasicProperties(Cylinder)
+ShirnkCylinderProp = geompy.BasicProperties(ShrinkCylinder)
+
+assert( CylinderProp[2] > ShirnkCylinderProp[2] )
+####END SHRINK THE ENTIRE CYLINDER
+
+####SHRINK THE ENTIRE TUBE
+#Test shrinking tube
+Circle_1 = geompy.MakeCircle(None, None, 20)
+Circle_2 = geompy.MakeCircle(None, None, 10)
+Face_1 = geompy.MakeFaceWires([Circle_1, Circle_2], 1)
+Tube = geompy.MakePrismDXDYDZ(Face_1, 0, 0, 100)
+
+MesherTube = smesh_builder.Mesh(Tube, "Tube")
+viscousBuilder = MesherTube.ViscousLayerBuilder()
+viscousBuilder.setBuilderParameters( offset, 4, 1.2 )
+ShrinkTube = viscousBuilder.GetShrinkGeometry()
+TubeProp = geompy.BasicProperties(Tube)
+ShirnkTubeProp = geompy.BasicProperties(ShrinkTube)
+assert( TubeProp[2] > ShirnkTubeProp[2] )
+####END SHRINK THE ENTIRE TUBE
+
+####SHRINK COMPOUND OBJECT TO GENERATE COMPOUND WITH COMMON FACE
+X     = geompy.MakeVectorDXDYDZ( 1,0,0 )
+O     = geompy.MakeVertex( 100,50,50 )
+plane = geompy.MakePlane( O, X, 200 ) # plane YZ
+lX    = 200
+lYlZ  = 100
+box   = geompy.MakeBoxDXDYDZ(lX,lYlZ,lYlZ)
+sBox  = geompy.MakeHalfPartition( box, plane )
+
+# Generate a uniquebody whit coincident faces
+# 4 left, 34 middle, 50 right
+ignoreFaces = [4,34,50]
+geompy.addToStudy( sBox, "SisterBox" )
+MesherSBox = smesh_builder.Mesh( sBox, "SisterBoxMesh")
+ViscousBuilder = MesherSBox.ViscousLayerBuilder()
+thickness = 20
+numberOfLayers = 10
+stretchFactor = 1.5
+ViscousBuilder.setBuilderParameters( thickness, numberOfLayers, stretchFactor, ignoreFaces )
+ShrinkSBox = ViscousBuilder.GetShrinkGeometry()
+SBoxProp = geompy.BasicProperties(sBox)
+ShirnksBoxProp = geompy.BasicProperties(ShrinkSBox)
+assert( assertAlmostEqual(ShirnksBoxProp[2], lX * (lYlZ - 2.0*thickness)**(2.0), 1e-12 ) )
+####END SHRINK COMPOUND OBJECT TO GENERATE COMPUND WITH COMMON FACE
+
+
+####SHRINK COMPOUND OBJECT TO GENERATE TWO DISJOINT SOLIDS
+ignoreFaces = [4,50]
+ViscousBuilder.setBuilderParameters( thickness, numberOfLayers, stretchFactor, ignoreFaces )
+ShrinkSBox2 = ViscousBuilder.GetShrinkGeometry()
+SBoxProp = geompy.BasicProperties(sBox)
+ShirnksBoxProp2 = geompy.BasicProperties(ShrinkSBox2)
+assert( assertAlmostEqual(ShirnksBoxProp2[2], (lX -2.0*thickness) * (lYlZ - 2.0*thickness)**(2.0), 1e-12 ) )
+####END SHRINK COMPOUND OBJECT TO GENERATE TWO DISJOINT SOLIDS
+
+
+######SHRINK SQUARE
+offset = 0.5
+numberOfLayers = 6
+Face = geompy.MakeFaceHW(5, 5, 1)
+MesherSqr = smesh_builder.Mesh(Face, "Face")
+viscousBuilder = MesherSqr.ViscousLayerBuilder()
+viscousBuilder.setBuilderParameters( offset, numberOfLayers, 1.2 )
+ShrinkFace = viscousBuilder.GetShrinkGeometry()
+
+FaceProperties = geompy.BasicProperties(Face)
+ShrinkFaceProperties = geompy.BasicProperties(ShrinkFace)
+#Test smaller face
+assert( ShrinkFaceProperties[1] < FaceProperties[1] )
+assertAlmostEqual( ShrinkFaceProperties[1], (5.0-offset*2.0)**(2.0), 1e-12 )
+######END SHRINK SQUARE
+
+######SHRINK CIRCLE
+Disk = geompy.MakeDiskR(5, 1)
+
+#Test with circle
+MesherCircle = smesh_builder.Mesh(Disk, "Disk")
+viscousBuilder = MesherCircle.ViscousLayerBuilder()
+viscousBuilder.setBuilderParameters( offset, numberOfLayers, 1.2 )
+ShrinkCircle = viscousBuilder.GetShrinkGeometry()
+FaceProperties = geompy.BasicProperties(Disk)
+ShrinkFaceProperties = geompy.BasicProperties(ShrinkCircle)
+
+assert( ShrinkFaceProperties[1] < FaceProperties[1] )
+######END SHRINK CIRCLE
diff --git a/test/tests.set b/test/tests.set
new file mode 100644 (file)
index 0000000..fb8380f
--- /dev/null
@@ -0,0 +1,141 @@
+# Copyright (C) 2015-2024  CEA, EDF, 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
+  body_fitting_viscous_layer_cylinder.py
+  body_fitting_viscous_layer_tpipe.py
+  body_fitting_quanta_sphere.py
+  ex04_cube5tetraHexa.py
+  ex21_lamp.py
+  ex29_refine.py
+  ex_MakePolyLine.py
+  test_smeshplugins.py
+  test_vlapi_growthlayer.py
+  PAL_MESH_041_mesh.py
+  PAL_MESH_043_3D.py
+  SMESH_BelongToGeom.py
+  SMESH_box2_tetra.py
+  SMESH_box3_tetra.py
+  SMESH_box_tetra.py
+  SMESH_controls.py
+  SMESH_controls_scaled_jacobian.py
+  SMESH_controls_3D_warping.py
+  SMESH_fixation_netgen.py
+  SMESH_fixation_tetra.py
+  SMESH_flight_skin.py
+  SMESH_freebord.py
+  SMESH_GroupFromGeom.py
+  SMESH_GroupFromGeom2.py
+  SMESH_GroupLyingOnGeom.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_test.py
+  SMESH_test1_AndDisplay.py
+  SMESH_test1.py
+  SMESH_test2.py
+  SMESH_test4.py
+  SMESH_create_dual_mesh_adapt.py
+  SMESH_create_dual_mesh_tpipe.py
+  netgen_runner.py
+  netgen_runner_2D.py
+  netgen_runner_1D2D3D.py
+  gmsh_runner.py
+  test_import_1D2D_with_tetras_and_pyras.py
+  )
+
+# The following tests can be executed with both 'make test' and 'salome test'.
+# ----------------------------------------------------------------------------
+
+SET(GOOD_TESTS
+  create_penta_biquad.py
+  extrusion_penta_biquad.py
+  test_polyhedron_per_solid.py
+  test_vlapi_shrinkgeometry.py
+
+  ex01_cube2build.py
+  ex02_cube2primitive.py
+  ex03_cube2partition.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
+  ex24_cylinder.py
+  ex30_groupsOp.py
+  ex31_dimGroup.py
+  PAL_MESH_043_2D.py
+  SMESH_AdvancedEditor.py
+  SMESH_blocks.py
+  SMESH_box.py
+  SMESH_BuildCompound.py
+  SMESH_demo_hexa2_upd.py
+  SMESH_fixation_hexa.py
+  SMESH_fixation.py
+  SMESH_hexaedre.py
+  SMESH_Sphere.py
+  SMESH_test0.py
+  SMESH_test3.py
+  SMESH_test5.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
+  )