From 0aa84210cf7da3868cc8eb26b17a2da8e046b3ae Mon Sep 17 00:00:00 2001 From: abd Date: Wed, 14 Jun 2006 13:58:32 +0000 Subject: [PATCH] Merge from BR_DEBUG_3_2_0b1 --- INSTALL | 7 +- Makefile.in | 58 +- adm_local/unix/config_files/check_Geom.m4 | 45 - adm_local/unix/config_files/check_Med.m4 | 45 - adm_local/unix/make_commence.in | 94 +- adm_local/unix/make_conclude.in | 20 +- bin/VERSION | 1 - build_configure | 36 +- configure.in.base | 40 +- doc/Makefile.in | 30 + doc/salome/AddNetgenInSalome2.pdf | Bin 70678 -> 70677 bytes doc/salome/Makefile.in | 54 +- doc/salome/SMESH_index_v3.1.0.html | 95 - doc/salome/gui/Makefile.in | 25 +- doc/salome/gui/SMESH/about_viewing_meshes.htm | 319 +- .../adding_quadratic_nodes_and_elements.htm | 248 +- doc/salome/gui/SMESH/aspect_ratio_3d.htm | 366 +- .../gui/SMESH/borders_at_multi-connection.htm | 236 +- .../SMESH/borders_at_multiconnection_2d.htm | 225 +- doc/salome/gui/SMESH/clipping.htm | 273 +- doc/salome/gui/SMESH/constructing_meshes.htm | 1459 +-- doc/salome/gui/SMESH/cshdat_robohelp.htm | 516 +- doc/salome/gui/SMESH/cshdat_webhelp.htm | 502 +- doc/salome/gui/SMESH/default.css | 202 +- doc/salome/gui/SMESH/default_ns.css | 236 +- .../gui/SMESH/defining_hypotheses_tui.htm | 2872 +++--- doc/salome/gui/SMESH/deleting_groups.htm | 233 +- doc/salome/gui/SMESH/display_entity.htm | 202 +- doc/salome/gui/SMESH/ehelp.xml | 18 +- doc/salome/gui/SMESH/ehlpdhtm.js | 8476 ++++++++--------- doc/salome/gui/SMESH/extrusion.htm | 323 +- .../gui/SMESH/extrusion_along_a_path.htm | 388 +- .../gui/SMESH/files/about_hypotheses.htm | 416 +- doc/salome/gui/SMESH/files/about_meshes.htm | 495 +- .../SMESH/files/about_meshing_algorithms.htm | 449 +- .../SMESH/files/about_quality_controls.htm | 343 +- .../SMESH/files/adding_nodes_and_elements.htm | 594 +- .../gui/SMESH/files/area_of_elements.htm | 271 +- doc/salome/gui/SMESH/files/arithmetic_1d.htm | 584 +- doc/salome/gui/SMESH/files/aspect_ratio.htm | 376 +- .../changing_orientation_of_elements.htm | 307 +- ...nstructing_groups_of_specific_elements.htm | 201 +- .../gui/SMESH/files/constructing_meshes.htm | 415 +- .../SMESH/files/constructing_submeshes.htm | 357 +- .../gui/SMESH/files/creating_groups.htm | 550 +- .../gui/SMESH/files/cutting_quadrangles.htm | 402 +- .../files/diagonal_iversion_of_elements.htm | 293 +- .../gui/SMESH/files/displacing_nodes.htm | 335 +- .../SMESH/files/displaying_nodes_numbers.htm | 313 +- doc/salome/gui/SMESH/files/editing_groups.htm | 265 +- .../files/importing_and_exporting_meshes.htm | 309 +- .../gui/SMESH/files/introduction_to_smesh.htm | 195 - .../gui/SMESH/files/length_of_edges.htm | 269 +- .../files/max._element_area_hypothesis.htm | 292 +- .../files/max._element_volume_hypothsis.htm | 238 +- doc/salome/gui/SMESH/files/merging_nodes.htm | 257 +- doc/salome/gui/SMESH/files/minimum_angle.htm | 263 +- .../non_conform_mesh_allowed_hypothesis.htm | 290 +- .../reassigning_hypotheses_and_algorithms.htm | 288 +- .../files/removing_nodes_and_elements.htm | 469 +- .../files/renumbering_nodes_and_elements.htm | 332 +- doc/salome/gui/SMESH/files/rotation.htm | 279 +- .../gui/SMESH/files/running_smesh_module.htm | 217 +- doc/salome/gui/SMESH/files/sewing_meshes.htm | 679 +- doc/salome/gui/SMESH/files/skew.htm | 281 +- doc/salome/gui/SMESH/files/smoothing.htm | 386 +- doc/salome/gui/SMESH/files/symmetry.htm | 289 +- doc/salome/gui/SMESH/files/taper.htm | 275 +- doc/salome/gui/SMESH/files/translation.htm | 269 +- .../files/uniting_a_set_of_triangles.htm | 365 +- .../gui/SMESH/files/uniting_two_triangles.htm | 297 +- .../files/using_operations_on_groups.htm | 625 +- .../gui/SMESH/files/viewing_mesh_info.htm | 348 +- doc/salome/gui/SMESH/files/vtk_3d_viewer.htm | 458 +- doc/salome/gui/SMESH/files/warp.htm | 307 +- doc/salome/gui/SMESH/free_borders.htm | 234 +- doc/salome/gui/SMESH/free_edges.htm | 239 +- doc/salome/gui/SMESH/grouping_elements.htm | 2051 ++-- doc/salome/gui/SMESH/image10.jpg | Bin 16039 -> 16038 bytes doc/salome/gui/SMESH/image129.gif | Bin 10074 -> 0 bytes doc/salome/gui/SMESH/image131.gif | Bin 2632 -> 2631 bytes doc/salome/gui/SMESH/image138.gif | Bin 4819 -> 0 bytes doc/salome/gui/SMESH/image139.gif | Bin 5289 -> 0 bytes doc/salome/gui/SMESH/image19.jpg | Bin 54361 -> 0 bytes doc/salome/gui/SMESH/image21.gif | Bin 1540 -> 0 bytes doc/salome/gui/SMESH/image22.gif | Bin 1287 -> 0 bytes doc/salome/gui/SMESH/image23.gif | Bin 1154 -> 0 bytes doc/salome/gui/SMESH/image24.gif | Bin 14544 -> 14541 bytes doc/salome/gui/SMESH/image26.jpg | Bin 6922 -> 0 bytes doc/salome/gui/SMESH/image27.gif | Bin 1703 -> 0 bytes doc/salome/gui/SMESH/image37.gif | Bin 1001 -> 1000 bytes doc/salome/gui/SMESH/image7.jpg | Bin 66668 -> 66667 bytes doc/salome/gui/SMESH/image71.jpg | Bin 11550 -> 11549 bytes doc/salome/gui/SMESH/image73.gif | Bin 2977 -> 0 bytes doc/salome/gui/SMESH/image74.gif | Bin 987 -> 986 bytes doc/salome/gui/SMESH/index.htm | 360 +- doc/salome/gui/SMESH/index_csh.htm | 210 +- doc/salome/gui/SMESH/index_rhc.htm | 210 +- doc/salome/gui/SMESH/length.htm | 230 +- doc/salome/gui/SMESH/merge_elements.htm | 202 +- doc/salome/gui/SMESH/mesh.htm | 432 +- doc/salome/gui/SMESH/modifying_meshes.htm | 2661 +++--- doc/salome/gui/SMESH/pattern_mapping.htm | 609 +- doc/salome/gui/SMESH/pics/a-advmeshinfo.png | Bin 16686 -> 0 bytes doc/salome/gui/SMESH/pics/a-arithmetic1d.png | Bin 12239 -> 12238 bytes doc/salome/gui/SMESH/pics/a-averagelength.png | Bin 10905 -> 10903 bytes doc/salome/gui/SMESH/pics/a-clipping2.png | Bin 16713 -> 16712 bytes doc/salome/gui/SMESH/pics/a-creategroup.png | Bin 13788 -> 13787 bytes doc/salome/gui/SMESH/pics/a-createmesh1.png | Bin 16311 -> 0 bytes .../SMESH/pics/a-createpolyhedralvolume.png | Bin 16641 -> 16640 bytes .../gui/SMESH/pics/a-cuttingofquadrangles.png | Bin 17452 -> 17451 bytes doc/salome/gui/SMESH/pics/a-deflection1d.png | Bin 11003 -> 11002 bytes doc/salome/gui/SMESH/pics/a-editmesh.png | Bin 18398 -> 0 bytes doc/salome/gui/SMESH/pics/a-exportmesh.png | Bin 17304 -> 0 bytes .../gui/SMESH/pics/a-extusionalongapath2.png | Bin 20909 -> 20908 bytes doc/salome/gui/SMESH/pics/a-filteronedges.png | Bin 35867 -> 35864 bytes doc/salome/gui/SMESH/pics/a-maxelarea.png | Bin 11107 -> 11106 bytes doc/salome/gui/SMESH/pics/a-maxelvolume.png | Bin 11390 -> 11389 bytes doc/salome/gui/SMESH/pics/a-nbsegments1.png | Bin 13834 -> 13833 bytes doc/salome/gui/SMESH/pics/a-nbsegments2.png | Bin 14992 -> 14991 bytes doc/salome/gui/SMESH/pics/a-nbsegments3.png | Bin 19652 -> 0 bytes doc/salome/gui/SMESH/pics/a-nbsegments4.png | Bin 16263 -> 0 bytes doc/salome/gui/SMESH/pics/a-patterntype.png | Bin 13256 -> 13255 bytes doc/salome/gui/SMESH/pics/a-patterntype1.png | Bin 11034 -> 11033 bytes doc/salome/gui/SMESH/pics/a-standmeshinfo.png | Bin 10614 -> 10613 bytes .../gui/SMESH/pics/a-startendlength.png | Bin 12836 -> 12834 bytes doc/salome/gui/SMESH/pics/a-transparency.png | Bin 8161 -> 8160 bytes .../gui/SMESH/pics/a-unionoftriangles.png | Bin 15748 -> 15747 bytes doc/salome/gui/SMESH/pics/a-viewgeneral.png | Bin 47825 -> 47824 bytes doc/salome/gui/SMESH/pics/add_edge.png | Bin 3781 -> 3780 bytes doc/salome/gui/SMESH/pics/add_node.png | Bin 3659 -> 3658 bytes doc/salome/gui/SMESH/pics/add_polygone.png | Bin 7400 -> 7399 bytes doc/salome/gui/SMESH/pics/add_polyhedron.png | Bin 10074 -> 10073 bytes doc/salome/gui/SMESH/pics/add_quadrangle.png | Bin 3588 -> 3587 bytes doc/salome/gui/SMESH/pics/add_triangle.png | Bin 4078 -> 4077 bytes doc/salome/gui/SMESH/pics/addedge.png | Bin 8648 -> 8647 bytes doc/salome/gui/SMESH/pics/addhexahedron.png | Bin 9719 -> 9718 bytes doc/salome/gui/SMESH/pics/addnode.png | Bin 8888 -> 8887 bytes doc/salome/gui/SMESH/pics/addpolygon.png | Bin 10032 -> 10031 bytes doc/salome/gui/SMESH/pics/addquadrangle.png | Bin 10712 -> 10711 bytes doc/salome/gui/SMESH/pics/addtetrahedron.png | Bin 9683 -> 9682 bytes doc/salome/gui/SMESH/pics/addtriangle.png | Bin 9956 -> 9955 bytes .../gui/SMESH/pics/advanced_mesh_infos.png | Bin 23883 -> 23882 bytes doc/salome/gui/SMESH/pics/aqt.png | Bin 15347 -> 15346 bytes doc/salome/gui/SMESH/pics/automaticlength.png | Bin 10040 -> 10039 bytes .../gui/SMESH/pics/b-art_end_length.png | Bin 10612 -> 10611 bytes doc/salome/gui/SMESH/pics/b-create_group.png | Bin 28719 -> 0 bytes doc/salome/gui/SMESH/pics/b-erage_length.png | Bin 7198 -> 7197 bytes doc/salome/gui/SMESH/pics/b-flection1d.png | Bin 7295 -> 7294 bytes doc/salome/gui/SMESH/pics/b-ithmetic1d.png | Bin 10451 -> 10450 bytes .../gui/SMESH/pics/b-mberofsegments.png | Bin 25752 -> 25751 bytes doc/salome/gui/SMESH/pics/b-mesh_infos.png | Bin 27924 -> 27923 bytes .../pics/borders_at_multi_connections1.png | Bin 6603 -> 0 bytes doc/salome/gui/SMESH/pics/c-createmesh.png | Bin 17917 -> 0 bytes doc/salome/gui/SMESH/pics/c-editmesh.png | Bin 17581 -> 0 bytes doc/salome/gui/SMESH/pics/create_group.png | Bin 28719 -> 28718 bytes doc/salome/gui/SMESH/pics/creategroup.png | Bin 19382 -> 22501 bytes doc/salome/gui/SMESH/pics/createmesh-inv.png | Bin 19734 -> 19733 bytes doc/salome/gui/SMESH/pics/createmesh-inv2.png | Bin 20798 -> 20797 bytes doc/salome/gui/SMESH/pics/createmesh-inv3.png | Bin 19436 -> 19434 bytes doc/salome/gui/SMESH/pics/cut_groups1.png | Bin 31301 -> 31300 bytes doc/salome/gui/SMESH/pics/cut_groups2.png | Bin 33639 -> 33638 bytes doc/salome/gui/SMESH/pics/cut_groups3.png | Bin 26545 -> 26543 bytes doc/salome/gui/SMESH/pics/cutgroups.png | Bin 10203 -> 10201 bytes doc/salome/gui/SMESH/pics/deletegroups.png | Bin 8871 -> 8870 bytes .../gui/SMESH/pics/diagonalinversion.png | Bin 8602 -> 8600 bytes .../pics/distributionwithanalyticdensity.png | Bin 27728 -> 27727 bytes .../pics/distributionwithtabledensity.png | Bin 30802 -> 30801 bytes doc/salome/gui/SMESH/pics/edit_mesh1.png | Bin 27435 -> 27434 bytes .../SMESH/pics/edit_mesh_change_value_hyp.png | Bin 33103 -> 33102 bytes .../gui/SMESH/pics/edit_mesh_remove_hyp.png | Bin 23860 -> 23859 bytes doc/salome/gui/SMESH/pics/editgroup.png | Bin 19969 -> 29321 bytes doc/salome/gui/SMESH/pics/editing_groups1.png | Bin 52411 -> 52405 bytes doc/salome/gui/SMESH/pics/editing_groups2.png | Bin 45764 -> 45762 bytes .../gui/SMESH/pics/extrusionalongaline1.png | Bin 14660 -> 14659 bytes .../gui/SMESH/pics/extrusionalongaline2.png | Bin 14738 -> 14737 bytes doc/salome/gui/SMESH/pics/free_borders1.png | Bin 5648 -> 5647 bytes doc/salome/gui/SMESH/pics/free_edges.png | Bin 41176 -> 41173 bytes doc/salome/gui/SMESH/pics/graduatedaxes1.png | Bin 18919 -> 18918 bytes doc/salome/gui/SMESH/pics/importmesh.png | Bin 16731 -> 0 bytes .../gui/SMESH/pics/intersect_groups1.png | Bin 30782 -> 30781 bytes .../gui/SMESH/pics/intersect_groups2.png | Bin 34579 -> 34578 bytes .../gui/SMESH/pics/intersect_groups3.png | Bin 31212 -> 31210 bytes doc/salome/gui/SMESH/pics/intersectgroups.png | Bin 10439 -> 10438 bytes doc/salome/gui/SMESH/pics/length-crit.png | Bin 3113 -> 3112 bytes doc/salome/gui/SMESH/pics/length1.png | Bin 7001 -> 0 bytes doc/salome/gui/SMESH/pics/length2d.png | Bin 43379 -> 43378 bytes doc/salome/gui/SMESH/pics/max_el_area.png | Bin 29048 -> 29047 bytes doc/salome/gui/SMESH/pics/mergeelems.png | Bin 8680 -> 8678 bytes doc/salome/gui/SMESH/pics/mergenodes.png | Bin 15359 -> 15357 bytes doc/salome/gui/SMESH/pics/merging_nodes1.png | Bin 28624 -> 28623 bytes doc/salome/gui/SMESH/pics/merging_nodes2.png | Bin 17338 -> 17337 bytes doc/salome/gui/SMESH/pics/meshexportmesh.png | Bin 21288 -> 21287 bytes doc/salome/gui/SMESH/pics/meshimportmesh.png | Bin 19532 -> 19530 bytes .../gui/SMESH/pics/meshtrianglemergeelem1.png | Bin 2921 -> 2920 bytes doc/salome/gui/SMESH/pics/movenodes.png | Bin 10486 -> 10485 bytes doc/salome/gui/SMESH/pics/moving_nodes1.png | Bin 15776 -> 15775 bytes doc/salome/gui/SMESH/pics/moving_nodes2.png | Bin 20232 -> 20230 bytes doc/salome/gui/SMESH/pics/orientaation1.png | Bin 14549 -> 14548 bytes doc/salome/gui/SMESH/pics/patternmapping1.png | Bin 17945 -> 17944 bytes doc/salome/gui/SMESH/pics/patternmapping2.png | Bin 19946 -> 19945 bytes .../gui/SMESH/pics/remove_elements1.png | Bin 7989 -> 7988 bytes .../gui/SMESH/pics/remove_elements2.png | Bin 5244 -> 5243 bytes doc/salome/gui/SMESH/pics/remove_nodes1.png | Bin 11701 -> 11700 bytes doc/salome/gui/SMESH/pics/remove_nodes2.png | Bin 13889 -> 13888 bytes doc/salome/gui/SMESH/pics/removeelements.png | Bin 9172 -> 9171 bytes doc/salome/gui/SMESH/pics/removenodes.png | Bin 9095 -> 9094 bytes .../gui/SMESH/pics/renumberelements.png | Bin 9153 -> 9152 bytes doc/salome/gui/SMESH/pics/renumbernodes.png | Bin 9279 -> 9278 bytes doc/salome/gui/SMESH/pics/revolution1.png | Bin 19193 -> 19192 bytes doc/salome/gui/SMESH/pics/revolution2.png | Bin 19287 -> 19286 bytes doc/salome/gui/SMESH/pics/rotation.png | Bin 17556 -> 17555 bytes doc/salome/gui/SMESH/pics/rotation1.png | Bin 15828 -> 15827 bytes doc/salome/gui/SMESH/pics/rotation2.png | Bin 25671 -> 25670 bytes .../gui/SMESH/pics/selectionfilterlibrary.png | Bin 28008 -> 28007 bytes doc/salome/gui/SMESH/pics/sewing1.png | Bin 21295 -> 21294 bytes doc/salome/gui/SMESH/pics/sewing2.png | Bin 18771 -> 18770 bytes doc/salome/gui/SMESH/pics/sewing3.png | Bin 21209 -> 21208 bytes doc/salome/gui/SMESH/pics/sewing4.png | Bin 17818 -> 17817 bytes doc/salome/gui/SMESH/pics/smoothing.png | Bin 16679 -> 16678 bytes doc/salome/gui/SMESH/pics/smoothing1.png | Bin 12244 -> 12243 bytes doc/salome/gui/SMESH/pics/smoothing2.png | Bin 12606 -> 12604 bytes .../gui/SMESH/pics/submeshconstruction.png | Bin 15135 -> 0 bytes doc/salome/gui/SMESH/pics/symmetry1.png | Bin 14413 -> 14412 bytes doc/salome/gui/SMESH/pics/symmetry2.png | Bin 16135 -> 16134 bytes doc/salome/gui/SMESH/pics/symmetry3.png | Bin 15988 -> 15987 bytes doc/salome/gui/SMESH/pics/translation1.png | Bin 15379 -> 15378 bytes doc/salome/gui/SMESH/pics/translation2.png | Bin 14150 -> 14149 bytes doc/salome/gui/SMESH/pics/union_groups1.png | Bin 45746 -> 45745 bytes doc/salome/gui/SMESH/pics/union_groups2.png | Bin 33473 -> 33472 bytes doc/salome/gui/SMESH/pics/union_groups3.png | Bin 34013 -> 34012 bytes doc/salome/gui/SMESH/pics/uniongroups.png | Bin 10111 -> 10110 bytes .../gui/SMESH/pics/unionoftwotriangles.png | Bin 8729 -> 8728 bytes .../pics/uniting_a_set_of_triangles1.png | Bin 10030 -> 10029 bytes .../pics/uniting_a_set_of_triangles2.png | Bin 9189 -> 9188 bytes .../gui/SMESH/pics/uniting_two_triangles1.png | Bin 10718 -> 10717 bytes .../gui/SMESH/pics/uniting_two_triangles2.png | Bin 9239 -> 9238 bytes doc/salome/gui/SMESH/presentation.htm | 267 +- doc/salome/gui/SMESH/quality_controls.htm | 3170 +++--- doc/salome/gui/SMESH/revolution.htm | 304 +- .../gui/SMESH/selection_filter_library.htm | 313 +- doc/salome/gui/SMESH/smesh.htm | 139 - doc/salome/gui/SMESH/smesh.log | 1003 +- doc/salome/gui/SMESH/smesh_csh.htm | 106 - doc/salome/gui/SMESH/smesh_rhc.htm | 106 - ...sh_1_1Mesh__Hexahedron__inherit__graph.jpg | Bin 5526 -> 5525 bytes .../gui/SMESH/smeshpy_doc/namespacesmesh.html | 3 - doc/salome/gui/SMESH/transforming_meshes.htm | 1530 +-- doc/salome/gui/SMESH/transparency.htm | 190 +- doc/salome/gui/SMESH/viewing_meshes.htm | 501 +- doc/salome/gui/SMESH/volume.htm | 246 +- doc/salome/gui/SMESH/webhelp.jar | Bin 134517 -> 134515 bytes doc/salome/gui/SMESH/whcsh_home.htm | 1198 +-- doc/salome/gui/SMESH/whcshdata.htm | 174 +- doc/salome/gui/SMESH/whd_dpns.htm | 84 +- doc/salome/gui/SMESH/whd_nvp10.htm | 30 +- doc/salome/gui/SMESH/whd_nvp20.htm | 668 +- doc/salome/gui/SMESH/whd_tabs.htm | 1064 +-- doc/salome/gui/SMESH/whd_toc4.gif | Bin 953 -> 952 bytes doc/salome/gui/SMESH/whd_topic.xml | 170 +- doc/salome/gui/SMESH/whdata/whftdata.js | 48 +- doc/salome/gui/SMESH/whdata/whftdata0.htm | 172 +- doc/salome/gui/SMESH/whdata/whfts.htm | 34 +- doc/salome/gui/SMESH/whdata/whfts.js | 80 +- doc/salome/gui/SMESH/whdata/whfwdata.js | 72 +- doc/salome/gui/SMESH/whdata/whfwdata0.htm | 2465 ++--- doc/salome/gui/SMESH/whdata/whgdata.js | 50 +- doc/salome/gui/SMESH/whdata/whgdata0.htm | 66 +- doc/salome/gui/SMESH/whdata/whglo.htm | 30 +- doc/salome/gui/SMESH/whdata/whglo.js | 68 +- doc/salome/gui/SMESH/whdata/whidata.js | 176 +- doc/salome/gui/SMESH/whdata/whidx.htm | 28 +- doc/salome/gui/SMESH/whdata/whidx.js | 68 +- doc/salome/gui/SMESH/whdata/whtdata.js | 126 +- doc/salome/gui/SMESH/whdata/whtdata0.htm | 185 +- doc/salome/gui/SMESH/whdata/whtoc.htm | 30 +- doc/salome/gui/SMESH/whdata/whtoc.js | 60 +- doc/salome/gui/SMESH/whestart.ico | Bin 10134 -> 0 bytes doc/salome/gui/SMESH/whfbody.htm | 74 +- doc/salome/gui/SMESH/whfdhtml.htm | 60 +- doc/salome/gui/SMESH/whfform.htm | 270 +- doc/salome/gui/SMESH/whfhost.js | 1888 ++-- doc/salome/gui/SMESH/whform.js | 430 +- doc/salome/gui/SMESH/whframes.js | 156 +- doc/salome/gui/SMESH/whgbody.htm | 70 +- doc/salome/gui/SMESH/whgdata/whlstf0.htm | 88 +- doc/salome/gui/SMESH/whgdata/whlstf1.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstf10.htm | 86 +- doc/salome/gui/SMESH/whgdata/whlstf11.htm | 94 +- doc/salome/gui/SMESH/whgdata/whlstf12.htm | 89 +- doc/salome/gui/SMESH/whgdata/whlstf13.htm | 92 +- doc/salome/gui/SMESH/whgdata/whlstf2.htm | 84 +- doc/salome/gui/SMESH/whgdata/whlstf3.htm | 88 +- doc/salome/gui/SMESH/whgdata/whlstf4.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstf5.htm | 96 +- doc/salome/gui/SMESH/whgdata/whlstf6.htm | 94 +- doc/salome/gui/SMESH/whgdata/whlstf7.htm | 88 +- doc/salome/gui/SMESH/whgdata/whlstf8.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstf9.htm | 88 +- doc/salome/gui/SMESH/whgdata/whlstfl0.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl1.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl10.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl11.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl12.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl13.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl14.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl15.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl16.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl17.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl18.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl19.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl2.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl20.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl21.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl22.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl23.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl24.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl25.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl3.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl4.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl5.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl6.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl7.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl8.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstfl9.htm | 90 +- doc/salome/gui/SMESH/whgdata/whlstg0.htm | 150 +- doc/salome/gui/SMESH/whgdata/whlsti0.htm | 78 +- doc/salome/gui/SMESH/whgdata/whlstt0.htm | 102 +- doc/salome/gui/SMESH/whgdata/whlstt1.htm | 118 +- doc/salome/gui/SMESH/whgdata/whlstt2.htm | 132 +- doc/salome/gui/SMESH/whgdata/whlstt3.htm | 142 +- doc/salome/gui/SMESH/whgdata/whlstt4.htm | 133 +- doc/salome/gui/SMESH/whgdata/whlstt5.htm | 147 +- doc/salome/gui/SMESH/whgdata/whlstt6.htm | 130 +- doc/salome/gui/SMESH/whgdata/whlstt7.htm | 150 +- doc/salome/gui/SMESH/whgdata/whlstt8.htm | 160 +- doc/salome/gui/SMESH/whgdata/whlstt9.htm | 132 +- doc/salome/gui/SMESH/whgdata/whnvf30.htm | 26 +- doc/salome/gui/SMESH/whgdata/whnvf31.htm | 30 +- doc/salome/gui/SMESH/whgdata/whnvf32.htm | 30 +- doc/salome/gui/SMESH/whgdata/whnvf33.htm | 30 +- doc/salome/gui/SMESH/whgdata/whnvl31.htm | 86 +- doc/salome/gui/SMESH/whgdata/whnvl32.htm | 144 +- doc/salome/gui/SMESH/whgdata/whnvl33.htm | 144 +- doc/salome/gui/SMESH/whgdata/whnvp30.htm | 30 +- doc/salome/gui/SMESH/whgdata/whnvp31.htm | 30 +- doc/salome/gui/SMESH/whgdata/whnvp32.htm | 30 +- doc/salome/gui/SMESH/whgdata/whnvp33.htm | 30 +- doc/salome/gui/SMESH/whgdata/whnvt30.htm | 94 +- doc/salome/gui/SMESH/whgdata/whnvt31.htm | 90 +- doc/salome/gui/SMESH/whgdata/whnvt32.htm | 90 +- doc/salome/gui/SMESH/whgdata/whnvt33.htm | 90 +- doc/salome/gui/SMESH/whgdef.htm | 196 +- doc/salome/gui/SMESH/whgdhtml.htm | 300 +- doc/salome/gui/SMESH/whghost.js | 494 +- doc/salome/gui/SMESH/whhost.js | 2608 ++--- doc/salome/gui/SMESH/whibody.htm | 568 +- doc/salome/gui/SMESH/whidhtml.htm | 60 +- doc/salome/gui/SMESH/whiform.htm | 180 +- doc/salome/gui/SMESH/whihost.js | 848 +- doc/salome/gui/SMESH/whlang.js | 904 +- doc/salome/gui/SMESH/whmozemu.js | 132 +- doc/salome/gui/SMESH/whmsg.js | 136 +- doc/salome/gui/SMESH/whnjs.htm | 48 +- doc/salome/gui/SMESH/whphost.js | 1162 +-- doc/salome/gui/SMESH/whproj.htm | 46 +- doc/salome/gui/SMESH/whproj.js | 168 +- doc/salome/gui/SMESH/whproj.xml | 6 +- doc/salome/gui/SMESH/whproxy.js | 148 +- doc/salome/gui/SMESH/whres.xml | 510 +- doc/salome/gui/SMESH/whrstart.ico | Bin 10134 -> 0 bytes doc/salome/gui/SMESH/whskin_banner.htm | 49 - doc/salome/gui/SMESH/whskin_blank.htm | 20 +- doc/salome/gui/SMESH/whskin_frmset01.htm | 172 - doc/salome/gui/SMESH/whskin_frmset010.htm | 50 - doc/salome/gui/SMESH/whskin_homepage.htm | 319 +- doc/salome/gui/SMESH/whskin_info.htm | 38 +- doc/salome/gui/SMESH/whskin_mbars.htm | 59 - doc/salome/gui/SMESH/whskin_papplet.htm | 360 - doc/salome/gui/SMESH/whskin_pdhtml.htm | 64 - doc/salome/gui/SMESH/whskin_pickup.htm | 456 +- doc/salome/gui/SMESH/whskin_plist.htm | 238 - doc/salome/gui/SMESH/whskin_tbars.htm | 101 - doc/salome/gui/SMESH/whskin_tw.htm | 124 +- doc/salome/gui/SMESH/whst_topics.xml | 82 - doc/salome/gui/SMESH/whstart.ico | Bin 10134 -> 0 bytes doc/salome/gui/SMESH/whstart.js | 862 +- doc/salome/gui/SMESH/whstub.js | 316 +- doc/salome/gui/SMESH/wht_abge.jpg | Bin 6210 -> 0 bytes doc/salome/gui/SMESH/wht_abgi.jpg | Bin 4967 -> 0 bytes doc/salome/gui/SMESH/wht_abgw.jpg | Bin 5659 -> 0 bytes doc/salome/gui/SMESH/wht_abte.jpg | Bin 9810 -> 0 bytes doc/salome/gui/SMESH/wht_abti.jpg | Bin 3863 -> 0 bytes doc/salome/gui/SMESH/wht_abtw.jpg | Bin 3973 -> 0 bytes doc/salome/gui/SMESH/wht_fts_h.gif | Bin 188 -> 0 bytes doc/salome/gui/SMESH/wht_fts_n.gif | Bin 188 -> 0 bytes doc/salome/gui/SMESH/wht_glo_h.gif | Bin 142 -> 0 bytes doc/salome/gui/SMESH/wht_glo_n.gif | Bin 142 -> 0 bytes doc/salome/gui/SMESH/wht_go.gif | Bin 260 -> 0 bytes doc/salome/gui/SMESH/wht_hide.gif | Bin 842 -> 0 bytes doc/salome/gui/SMESH/wht_idx_h.gif | Bin 168 -> 0 bytes doc/salome/gui/SMESH/wht_idx_n.gif | Bin 168 -> 0 bytes doc/salome/gui/SMESH/wht_logo1.gif | Bin 1405 -> 0 bytes doc/salome/gui/SMESH/wht_logo2.gif | Bin 1393 -> 0 bytes doc/salome/gui/SMESH/wht_next.gif | Bin 73 -> 0 bytes doc/salome/gui/SMESH/wht_next_g.gif | Bin 73 -> 0 bytes doc/salome/gui/SMESH/wht_prev.gif | Bin 73 -> 0 bytes doc/salome/gui/SMESH/wht_prev_g.gif | Bin 73 -> 0 bytes doc/salome/gui/SMESH/wht_spac.gif | Bin 43 -> 0 bytes doc/salome/gui/SMESH/wht_sync.gif | Bin 846 -> 0 bytes doc/salome/gui/SMESH/wht_tab0.gif | Bin 285 -> 0 bytes doc/salome/gui/SMESH/wht_tab1.gif | Bin 237 -> 0 bytes doc/salome/gui/SMESH/wht_tab2.gif | Bin 226 -> 0 bytes doc/salome/gui/SMESH/wht_tab3.gif | Bin 209 -> 0 bytes doc/salome/gui/SMESH/wht_tab4.gif | Bin 198 -> 0 bytes doc/salome/gui/SMESH/wht_tab5.gif | Bin 221 -> 0 bytes doc/salome/gui/SMESH/wht_tab6.gif | Bin 212 -> 0 bytes doc/salome/gui/SMESH/wht_tab7.gif | Bin 236 -> 0 bytes doc/salome/gui/SMESH/wht_tab8.gif | Bin 225 -> 0 bytes doc/salome/gui/SMESH/wht_toc1.gif | Bin 124 -> 0 bytes doc/salome/gui/SMESH/wht_toc2.gif | Bin 922 -> 0 bytes doc/salome/gui/SMESH/wht_toc3.gif | Bin 911 -> 0 bytes doc/salome/gui/SMESH/wht_toc4.gif | Bin 953 -> 0 bytes doc/salome/gui/SMESH/wht_toc_h.gif | Bin 204 -> 0 bytes doc/salome/gui/SMESH/wht_toc_n.gif | Bin 195 -> 0 bytes doc/salome/gui/SMESH/wht_ws.gif | Bin 973 -> 0 bytes doc/salome/gui/SMESH/wht_ws_g.gif | Bin 949 -> 0 bytes doc/salome/gui/SMESH/whtbar.js | 2043 ---- doc/salome/gui/SMESH/whtdhtml.htm | 96 +- doc/salome/gui/SMESH/whthost.js | 3006 +++--- doc/salome/gui/SMESH/whtopic.js | 1447 +-- doc/salome/gui/SMESH/whutils.js | 1052 +- doc/salome/gui/SMESH/whver.js | 204 +- doc/salome/gui/SMESH/whxdata/whftdata0.xml | 144 +- doc/salome/gui/SMESH/whxdata/whfts.xml | 14 +- doc/salome/gui/SMESH/whxdata/whfwdata0.xml | 2437 ++--- doc/salome/gui/SMESH/whxdata/whgdata0.xml | 44 +- doc/salome/gui/SMESH/whxdata/whglo.xml | 8 +- doc/salome/gui/SMESH/whxdata/whidx.xml | 8 +- doc/salome/gui/SMESH/whxdata/whtdata0.xml | 181 +- doc/salome/gui/SMESH/whxdata/whtoc.xml | 8 +- doc/salome/tui/Makefile.in | 69 +- doc/salome/tui/SMESH/doxyfile | 203 - doc/salome/tui/SMESH/doxyfile_py | 200 - .../tui/SMESH/sources/Application-About.png | Bin 19226 -> 19225 bytes doc/salome/tui/SMESH/sources/bg_salome.gif | Bin 17294 -> 17293 bytes doc/salome/tui/SMESH/sources/myheader.html | 13 +- .../tui/SMESH/sources/static/doxygen.css | 143 +- doc/salome/tui/SMESH/sources/static/tree.js | 29 - idl/Makefile.in | 21 +- idl/SMESH_BasicHypothesis.idl | 16 +- idl/SMESH_Filter.idl | 3 +- idl/SMESH_Gen.idl | 18 +- idl/SMESH_Group.idl | 12 +- idl/SMESH_Hypothesis.idl | 2 +- idl/SMESH_Mesh.idl | 192 +- idl/SMESH_Pattern.idl | 3 +- resources/SMESHCatalog.xml | 171 - resources/StdMeshers.xml | 20 +- resources/mesh_conv_to_quad.png | Bin 226 -> 225 bytes resources/mesh_quad_edge.png | Bin 290 -> 289 bytes resources/mesh_quad_hexahedron.png | Bin 400 -> 399 bytes resources/mesh_quad_pentahedron.png | Bin 446 -> 445 bytes resources/mesh_quad_pyramid.png | Bin 449 -> 448 bytes resources/mesh_quad_quadrangle.png | Bin 284 -> 283 bytes resources/mesh_quad_tetrahedron.png | Bin 346 -> 345 bytes resources/mesh_quad_triangle.png | Bin 287 -> 286 bytes resources/mesh_tree_algo_netgen_2d.png | Bin 225 -> 224 bytes resources/mesh_tree_algo_netgen_2d3d.png | Bin 278 -> 277 bytes resources/mesh_tree_hypo_netgen.png | Bin 278 -> 277 bytes resources/mesh_tree_hypo_netgen_2d.png | Bin 225 -> 224 bytes src/Controls/Makefile.in | 8 +- src/Controls/SMESHControls.cxx | 2 +- src/Controls/SMESH_Controls.cxx | 508 +- src/Controls/SMESH_Controls.hxx | 2 +- src/Controls/SMESH_ControlsDef.hxx | 3 +- src/Driver/Driver_Document.cxx | 2 +- src/Driver/Driver_Document.h | 2 +- src/Driver/Driver_Mesh.cxx | 2 +- src/Driver/Driver_Mesh.h | 2 +- src/Driver/Driver_SMDS_Mesh.cxx | 2 +- src/Driver/Driver_SMDS_Mesh.h | 2 +- src/Driver/Driver_SMESHDS_Mesh.cxx | 2 +- src/Driver/Driver_SMESHDS_Mesh.h | 2 +- src/Driver/Makefile.in | 4 +- src/DriverDAT/DAT_Test.cxx | 2 +- src/DriverDAT/DriverDAT_R_SMDS_Mesh.cxx | 2 +- src/DriverDAT/DriverDAT_R_SMDS_Mesh.h | 2 +- .../DriverDAT_R_SMESHDS_Document.cxx | 2 +- src/DriverDAT/DriverDAT_R_SMESHDS_Document.h | 2 +- src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.cxx | 2 +- src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.h | 2 +- src/DriverDAT/DriverDAT_W_SMDS_Mesh.cxx | 6 +- src/DriverDAT/DriverDAT_W_SMDS_Mesh.h | 2 +- .../DriverDAT_W_SMESHDS_Document.cxx | 2 +- src/DriverDAT/DriverDAT_W_SMESHDS_Document.h | 2 +- src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.cxx | 2 +- src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.h | 2 +- src/DriverDAT/Makefile.in | 8 +- src/DriverMED/DriverMED_Family.cxx | 208 +- src/DriverMED/DriverMED_Family.h | 104 +- src/DriverMED/DriverMED_R_SMDS_Mesh.cxx | 2 +- src/DriverMED/DriverMED_R_SMDS_Mesh.h | 2 +- .../DriverMED_R_SMESHDS_Document.cxx | 2 +- src/DriverMED/DriverMED_R_SMESHDS_Document.h | 2 +- src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx | 716 +- src/DriverMED/DriverMED_R_SMESHDS_Mesh.h | 5 +- src/DriverMED/DriverMED_W_SMDS_Mesh.cxx | 2 +- src/DriverMED/DriverMED_W_SMDS_Mesh.h | 2 +- .../DriverMED_W_SMESHDS_Document.cxx | 2 +- src/DriverMED/DriverMED_W_SMESHDS_Document.h | 2 +- src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx | 264 +- src/DriverMED/DriverMED_W_SMESHDS_Mesh.h | 2 +- src/DriverMED/MED_Test.cxx | 2 +- src/DriverMED/Makefile.in | 10 +- src/DriverSTL/DriverSTL_R_SMDS_Mesh.cxx | 2 +- src/DriverSTL/DriverSTL_R_SMDS_Mesh.h | 2 +- src/DriverSTL/DriverSTL_W_SMDS_Mesh.cxx | 4 +- src/DriverSTL/DriverSTL_W_SMDS_Mesh.h | 2 +- src/DriverSTL/Makefile.in | 8 +- src/DriverSTL/STL_Test.cxx | 2 +- src/DriverUNV/DriverUNV_R_SMDS_Mesh.cxx | 217 +- src/DriverUNV/DriverUNV_R_SMDS_Mesh.h | 22 +- .../DriverUNV_R_SMESHDS_Document.cxx | 2 +- src/DriverUNV/DriverUNV_R_SMESHDS_Document.h | 2 +- src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.cxx | 2 +- src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.h | 2 +- src/DriverUNV/DriverUNV_W_SMDS_Mesh.cxx | 129 +- src/DriverUNV/DriverUNV_W_SMDS_Mesh.h | 12 +- .../DriverUNV_W_SMESHDS_Document.cxx | 2 +- src/DriverUNV/DriverUNV_W_SMESHDS_Document.h | 2 +- src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.cxx | 2 +- src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.h | 2 +- src/DriverUNV/Makefile.in | 10 +- src/DriverUNV/UNV2411_Structure.cxx | 2 +- src/DriverUNV/UNV2411_Structure.hxx | 2 +- src/DriverUNV/UNV2412_Structure.cxx | 13 +- src/DriverUNV/UNV2412_Structure.hxx | 2 +- src/DriverUNV/UNV_Test.cxx | 2 +- src/DriverUNV/UNV_Utilities.cxx | 21 +- src/DriverUNV/UNV_Utilities.hxx | 21 +- src/MEFISTO2/Makefile.in | 23 +- src/MEFISTO2/aptrte.cxx | 1 + src/Makefile.in | 6 +- src/NETGEN/Makefile.in | 19 + src/NETGENPlugin/Makefile.in | 12 +- src/NETGENPlugin/NETGENPlugin_NETGEN_3D.cxx | 2 +- src/NETGENPlugin/NETGENPlugin_NETGEN_3D.hxx | 2 +- src/NETGENPlugin/NETGENPlugin_NETGEN_3D_i.cxx | 2 +- src/NETGENPlugin/NETGENPlugin_NETGEN_3D_i.hxx | 2 +- src/NETGENPlugin/NETGENPlugin_i.cxx | 2 +- src/NETGENPlugin/NETGENPlugin_icons.po | 19 + src/OBJECT/Makefile.in | 99 +- src/OBJECT/SMESH_Actor.cxx | 129 +- src/OBJECT/SMESH_Actor.h | 40 +- src/OBJECT/SMESH_ActorDef.h | 53 +- src/OBJECT/SMESH_ActorUtils.cxx | 46 +- src/OBJECT/SMESH_ActorUtils.h | 50 +- src/OBJECT/SMESH_DeviceActor.cxx | 176 +- src/OBJECT/SMESH_DeviceActor.h | 22 +- src/OBJECT/SMESH_ExtractGeometry.cxx | 24 +- src/OBJECT/SMESH_ExtractGeometry.h | 3 +- src/OBJECT/SMESH_Object.cxx | 504 +- src/OBJECT/SMESH_Object.h | 2 +- src/OBJECT/SMESH_ObjectDef.h | 17 +- src/SMDS/Makefile.in | 46 +- src/SMDS/SMDSAbs_ElementType.hxx | 2 +- src/SMDS/SMDS_EdgePosition.cxx | 2 +- src/SMDS/SMDS_EdgePosition.hxx | 2 +- src/SMDS/SMDS_ElemIterator.hxx | 18 +- src/SMDS/SMDS_FaceOfEdges.cxx | 28 +- src/SMDS/SMDS_FaceOfEdges.hxx | 13 +- src/SMDS/SMDS_FaceOfNodes.cxx | 33 +- src/SMDS/SMDS_FaceOfNodes.hxx | 12 +- src/SMDS/SMDS_FacePosition.cxx | 2 +- src/SMDS/SMDS_FacePosition.hxx | 2 +- src/SMDS/SMDS_Iterator.hxx | 2 +- src/SMDS/SMDS_IteratorOfElements.cxx | 2 +- src/SMDS/SMDS_IteratorOfElements.hxx | 2 +- src/SMDS/SMDS_Mesh.cxx | 1089 ++- src/SMDS/SMDS_Mesh.hxx | 234 +- src/SMDS/SMDS_MeshEdge.cxx | 14 +- src/SMDS/SMDS_MeshEdge.hxx | 16 +- src/SMDS/SMDS_MeshElement.cxx | 45 +- src/SMDS/SMDS_MeshElement.hxx | 83 +- src/SMDS/SMDS_MeshElementIDFactory.cxx | 2 +- src/SMDS/SMDS_MeshElementIDFactory.hxx | 2 +- src/SMDS/SMDS_MeshFace.cxx | 2 +- src/SMDS/SMDS_MeshFace.hxx | 2 +- src/SMDS/SMDS_MeshGroup.cxx | 2 +- src/SMDS/SMDS_MeshGroup.hxx | 15 +- src/SMDS/SMDS_MeshIDFactory.cxx | 2 +- src/SMDS/SMDS_MeshIDFactory.hxx | 2 +- src/SMDS/SMDS_MeshNode.cxx | 2 +- src/SMDS/SMDS_MeshNode.hxx | 11 +- src/SMDS/SMDS_MeshObject.cxx | 2 +- src/SMDS/SMDS_MeshObject.hxx | 2 +- src/SMDS/SMDS_MeshVolume.cxx | 2 +- src/SMDS/SMDS_MeshVolume.hxx | 2 +- src/SMDS/SMDS_PolygonalFaceOfNodes.cxx | 40 +- src/SMDS/SMDS_PolygonalFaceOfNodes.hxx | 11 +- src/SMDS/SMDS_PolyhedralVolumeOfNodes.cxx | 2 +- src/SMDS/SMDS_PolyhedralVolumeOfNodes.hxx | 2 +- src/SMDS/SMDS_Position.cxx | 2 +- src/SMDS/SMDS_Position.hxx | 2 +- src/SMDS/SMDS_QuadraticEdge.hxx | 4 +- src/SMDS/SMDS_QuadraticFaceOfNodes.hxx | 4 +- src/SMDS/SMDS_QuadraticVolumeOfNodes.hxx | 4 +- src/SMDS/SMDS_SpacePosition.cxx | 2 +- src/SMDS/SMDS_SpacePosition.hxx | 2 +- src/SMDS/SMDS_TypeOfPosition.hxx | 2 +- src/SMDS/SMDS_VertexPosition.cxx | 2 +- src/SMDS/SMDS_VertexPosition.hxx | 2 +- src/SMDS/SMDS_VolumeOfFaces.cxx | 2 +- src/SMDS/SMDS_VolumeOfFaces.hxx | 2 +- src/SMDS/SMDS_VolumeOfNodes.cxx | 36 +- src/SMDS/SMDS_VolumeOfNodes.hxx | 12 +- src/SMDS/SMDS_VolumeTool.cxx | 456 +- src/SMDS/SMDS_VolumeTool.hxx | 5 +- src/SMESH/Makefile.in | 17 +- src/SMESH/SMESH_1D_Algo.cxx | 2 +- src/SMESH/SMESH_1D_Algo.hxx | 2 +- src/SMESH/SMESH_2D_Algo.cxx | 21 +- src/SMESH/SMESH_2D_Algo.hxx | 6 +- src/SMESH/SMESH_3D_Algo.cxx | 5 +- src/SMESH/SMESH_3D_Algo.hxx | 3 +- src/SMESH/SMESH_Algo.cxx | 59 +- src/SMESH/SMESH_Algo.hxx | 27 +- src/SMESH/SMESH_Block.cxx | 2 +- src/SMESH/SMESH_Block.hxx | 2 +- ...MESH_DataMapOfElemPtrSequenceOfElemPtr.hxx | 2 +- src/SMESH/SMESH_Gen.cxx | 99 +- src/SMESH/SMESH_Gen.hxx | 4 +- src/SMESH/SMESH_Group.cxx | 2 +- src/SMESH/SMESH_Group.hxx | 7 +- src/SMESH/SMESH_HypoFilter.cxx | 25 +- src/SMESH/SMESH_HypoFilter.hxx | 10 +- src/SMESH/SMESH_Hypothesis.cxx | 20 +- src/SMESH/SMESH_Hypothesis.hxx | 24 +- ...IndexedDataMapOfShapeIndexedMapOfShape.hxx | 2 +- src/SMESH/SMESH_Mesh.cxx | 461 +- src/SMESH/SMESH_Mesh.hxx | 58 +- src/SMESH/SMESH_MeshEditor.cxx | 3549 +++++-- src/SMESH/SMESH_MeshEditor.hxx | 86 +- src/SMESH/SMESH_MesherHelper.hxx | 4 +- src/SMESH/SMESH_Pattern.cxx | 174 +- src/SMESH/SMESH_Pattern.hxx | 3 +- src/SMESH/SMESH_SequenceOfElemPtr.hxx | 4 +- src/SMESH/SMESH_SequenceOfNode.hxx | 2 +- src/SMESH/SMESH_subMesh.cxx | 319 +- src/SMESH/SMESH_subMesh.hxx | 14 +- src/SMESHClient/SMESH_Client.cxx | 4 +- src/SMESHClient/SMESH_Client.hxx | 12 +- src/SMESHDS/Makefile.in | 6 +- src/SMESHDS/SMESHDS_Command.cxx | 208 +- src/SMESHDS/SMESHDS_Command.hxx | 24 +- src/SMESHDS/SMESHDS_CommandType.hxx | 42 +- src/SMESHDS/SMESHDS_Document.cxx | 14 +- src/SMESHDS/SMESHDS_Document.hxx | 4 +- src/SMESHDS/SMESHDS_Group.cxx | 5 +- src/SMESHDS/SMESHDS_Group.hxx | 2 +- src/SMESHDS/SMESHDS_GroupBase.cxx | 2 +- src/SMESHDS/SMESHDS_GroupBase.hxx | 10 +- src/SMESHDS/SMESHDS_GroupOnGeom.cxx | 2 +- src/SMESHDS/SMESHDS_GroupOnGeom.hxx | 2 +- src/SMESHDS/SMESHDS_Hypothesis.cxx | 2 +- src/SMESHDS/SMESHDS_Hypothesis.hxx | 2 +- src/SMESHDS/SMESHDS_Mesh.cxx | 697 +- src/SMESHDS/SMESHDS_Mesh.hxx | 225 +- src/SMESHDS/SMESHDS_Script.cxx | 227 +- src/SMESHDS/SMESHDS_Script.hxx | 35 +- src/SMESHDS/SMESHDS_SubMesh.cxx | 2 +- src/SMESHDS/SMESHDS_SubMesh.hxx | 2 +- .../Handle_SMESH_TypeFilter.hxx | 31 +- src/SMESHFiltersSelection/Makefile.in | 18 +- .../SMESH_LogicalFilter.cxx | 2 +- .../SMESH_LogicalFilter.hxx | 2 +- .../SMESH_NumberFilter.cxx | 2 +- .../SMESH_NumberFilter.hxx | 2 +- src/SMESHFiltersSelection/SMESH_Type.h | 2 +- .../SMESH_TypeFilter.cxx | 2 +- .../SMESH_TypeFilter.hxx | 2 +- .../SMESH_TypeFilter.ixx | 32 +- .../SMESH_TypeFilter.jxx | 2 +- src/SMESHGUI/Makefile.in | 34 +- src/SMESHGUI/SMESHBin.cxx | 2 +- src/SMESHGUI/SMESHGUI.cxx | 421 +- src/SMESHGUI/SMESHGUI.h | 6 +- src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx | 69 +- src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h | 6 +- src/SMESHGUI/SMESHGUI_ClippingDlg.cxx | 97 +- src/SMESHGUI/SMESHGUI_ClippingDlg.h | 5 +- src/SMESHGUI/SMESHGUI_CreateHypothesesDlg.cxx | 299 - src/SMESHGUI/SMESHGUI_CreatePatternDlg.cxx | 1469 +-- src/SMESHGUI/SMESHGUI_CreatePatternDlg.h | 6 +- .../SMESHGUI_CreatePolyhedralVolumeDlg.cxx | 185 +- .../SMESHGUI_CreatePolyhedralVolumeDlg.h | 8 +- src/SMESHGUI/SMESHGUI_DeleteGroupDlg.cxx | 30 +- src/SMESHGUI/SMESHGUI_DeleteGroupDlg.h | 6 +- src/SMESHGUI/SMESHGUI_Dialog.cxx | 6 +- src/SMESHGUI/SMESHGUI_Dialog.h | 4 +- src/SMESHGUI/SMESHGUI_Displayer.cxx | 2 +- src/SMESHGUI/SMESHGUI_Displayer.h | 2 +- src/SMESHGUI/SMESHGUI_EditHypothesesDlg.cxx | 963 -- src/SMESHGUI/SMESHGUI_EditMeshDlg.cxx | 33 +- src/SMESHGUI/SMESHGUI_EditMeshDlg.h | 6 +- .../SMESHGUI_ExtrusionAlongPathDlg.cxx | 34 +- src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.h | 6 +- src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx | 78 +- src/SMESHGUI/SMESHGUI_ExtrusionDlg.h | 7 +- src/SMESHGUI/SMESHGUI_Filter.cxx | 14 +- src/SMESHGUI/SMESHGUI_Filter.h | 2 +- src/SMESHGUI/SMESHGUI_FilterDlg.cxx | 33 +- src/SMESHGUI/SMESHGUI_FilterDlg.h | 7 +- src/SMESHGUI/SMESHGUI_FilterLibraryDlg.cxx | 32 +- src/SMESHGUI/SMESHGUI_FilterLibraryDlg.h | 6 +- src/SMESHGUI/SMESHGUI_FilterUtils.cxx | 2 +- src/SMESHGUI/SMESHGUI_FilterUtils.h | 2 +- src/SMESHGUI/SMESHGUI_GEOMGenUtils.cxx | 2 +- src/SMESHGUI/SMESHGUI_GEOMGenUtils.h | 2 +- src/SMESHGUI/SMESHGUI_GroupDlg.cxx | 271 +- src/SMESHGUI/SMESHGUI_GroupDlg.h | 16 +- src/SMESHGUI/SMESHGUI_GroupOpDlg.cxx | 44 +- src/SMESHGUI/SMESHGUI_GroupOpDlg.h | 6 +- src/SMESHGUI/SMESHGUI_GroupUtils.cxx | 2 +- src/SMESHGUI/SMESHGUI_GroupUtils.h | 2 +- src/SMESHGUI/SMESHGUI_Hypotheses.cxx | 66 +- src/SMESHGUI/SMESHGUI_Hypotheses.h | 41 +- src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx | 49 +- src/SMESHGUI/SMESHGUI_HypothesesUtils.h | 14 +- src/SMESHGUI/SMESHGUI_IdValidator.h | 2 +- src/SMESHGUI/SMESHGUI_MergeNodesDlg.cxx | 34 +- src/SMESHGUI/SMESHGUI_MergeNodesDlg.h | 6 +- src/SMESHGUI/SMESHGUI_MeshDlg.cxx | 46 +- src/SMESHGUI/SMESHGUI_MeshDlg.h | 8 +- src/SMESHGUI/SMESHGUI_MeshInfosDlg.cxx | 136 +- src/SMESHGUI/SMESHGUI_MeshInfosDlg.h | 28 +- src/SMESHGUI/SMESHGUI_MeshOp.cxx | 693 +- src/SMESHGUI/SMESHGUI_MeshOp.h | 57 +- src/SMESHGUI/SMESHGUI_MeshPatternDlg.cxx | 38 +- src/SMESHGUI/SMESHGUI_MeshPatternDlg.h | 6 +- src/SMESHGUI/SMESHGUI_MeshUtils.cxx | 2 +- src/SMESHGUI/SMESHGUI_MeshUtils.h | 2 +- src/SMESHGUI/SMESHGUI_MoveNodesDlg.cxx | 34 +- src/SMESHGUI/SMESHGUI_MoveNodesDlg.h | 6 +- src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx | 64 +- src/SMESHGUI/SMESHGUI_MultiEditDlg.h | 6 +- src/SMESHGUI/SMESHGUI_NodesDlg.cxx | 39 +- src/SMESHGUI/SMESHGUI_NodesDlg.h | 6 +- src/SMESHGUI/SMESHGUI_Operation.cxx | 50 +- src/SMESHGUI/SMESHGUI_Operation.h | 25 +- src/SMESHGUI/SMESHGUI_PatternUtils.cxx | 2 +- src/SMESHGUI/SMESHGUI_PatternUtils.h | 2 +- src/SMESHGUI/SMESHGUI_PatternWidget.cxx | 2 +- src/SMESHGUI/SMESHGUI_PatternWidget.h | 2 +- src/SMESHGUI/SMESHGUI_PrecisionDlg.cxx | 202 - .../SMESHGUI_Preferences_ColorDlg.cxx | 7 +- src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.h | 2 +- .../SMESHGUI_Preferences_ScalarBarDlg.cxx | 77 +- .../SMESHGUI_Preferences_ScalarBarDlg.h | 5 +- .../SMESHGUI_Preferences_SelectionDlg.cxx | 7 +- .../SMESHGUI_Preferences_SelectionDlg.h | 2 +- src/SMESHGUI/SMESHGUI_RemoveElementsDlg.cxx | 33 +- src/SMESHGUI/SMESHGUI_RemoveElementsDlg.h | 6 +- src/SMESHGUI/SMESHGUI_RemoveNodesDlg.cxx | 34 +- src/SMESHGUI/SMESHGUI_RemoveNodesDlg.h | 6 +- src/SMESHGUI/SMESHGUI_RenumberingDlg.cxx | 39 +- src/SMESHGUI/SMESHGUI_RenumberingDlg.h | 6 +- src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx | 34 +- src/SMESHGUI/SMESHGUI_RevolutionDlg.h | 6 +- src/SMESHGUI/SMESHGUI_RotationDlg.cxx | 33 +- src/SMESHGUI/SMESHGUI_RotationDlg.h | 6 +- src/SMESHGUI/SMESHGUI_SMESHGenUtils.cxx | 2 +- src/SMESHGUI/SMESHGUI_SMESHGenUtils.h | 2 +- src/SMESHGUI/SMESHGUI_Selection.cxx | 8 +- src/SMESHGUI/SMESHGUI_Selection.h | 2 +- src/SMESHGUI/SMESHGUI_SelectionOp.cxx | 46 +- src/SMESHGUI/SMESHGUI_SelectionOp.h | 4 +- src/SMESHGUI/SMESHGUI_SewingDlg.cxx | 33 +- src/SMESHGUI/SMESHGUI_SewingDlg.h | 6 +- src/SMESHGUI/SMESHGUI_ShapeByMeshDlg.cxx | 302 +- src/SMESHGUI/SMESHGUI_ShapeByMeshDlg.h | 102 +- src/SMESHGUI/SMESHGUI_SingleEditDlg.cxx | 29 +- src/SMESHGUI/SMESHGUI_SingleEditDlg.h | 6 +- src/SMESHGUI/SMESHGUI_SmoothingDlg.cxx | 34 +- src/SMESHGUI/SMESHGUI_SmoothingDlg.h | 6 +- src/SMESHGUI/SMESHGUI_SpinBox.cxx | 2 +- src/SMESHGUI/SMESHGUI_SpinBox.h | 2 +- .../SMESHGUI_StandardMeshInfosDlg.cxx | 35 +- src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.h | 6 +- src/SMESHGUI/SMESHGUI_Swig.cxx | 837 +- src/SMESHGUI/SMESHGUI_Swig.hxx | 18 +- src/SMESHGUI/SMESHGUI_Swig.i | 2 +- src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx | 34 +- src/SMESHGUI/SMESHGUI_SymmetryDlg.h | 6 +- src/SMESHGUI/SMESHGUI_TranslationDlg.cxx | 36 +- src/SMESHGUI/SMESHGUI_TranslationDlg.h | 6 +- src/SMESHGUI/SMESHGUI_TransparencyDlg.cxx | 41 +- src/SMESHGUI/SMESHGUI_TransparencyDlg.h | 6 +- src/SMESHGUI/SMESHGUI_Utils.cxx | 28 +- src/SMESHGUI/SMESHGUI_Utils.h | 4 +- src/SMESHGUI/SMESHGUI_VTKUtils.cxx | 2 +- src/SMESHGUI/SMESHGUI_VTKUtils.h | 2 +- src/SMESHGUI/SMESHGUI_XmlHandler.cxx | 19 +- src/SMESHGUI/SMESHGUI_XmlHandler.h | 2 +- src/SMESHGUI/SMESHGUI_aParameter.h | 2 +- src/SMESHGUI/SMESH_icons.po | 45 + src/SMESHGUI/SMESH_images.po | 51 + src/SMESHGUI/SMESH_msg_en.po | 239 +- src/SMESH_I/Makefile.in | 130 +- src/SMESH_I/SMESH.hxx | 2 +- src/SMESH_I/SMESHEngine.cxx | 2 +- src/SMESH_I/SMESH_1D_Algo_i.cxx | 2 +- src/SMESH_I/SMESH_1D_Algo_i.hxx | 2 +- src/SMESH_I/SMESH_2D_Algo_i.cxx | 2 +- src/SMESH_I/SMESH_2D_Algo_i.hxx | 2 +- src/SMESH_I/SMESH_2smeshpy.cxx | 309 +- src/SMESH_I/SMESH_2smeshpy.hxx | 61 +- src/SMESH_I/SMESH_3D_Algo_i.cxx | 2 +- src/SMESH_I/SMESH_3D_Algo_i.hxx | 2 +- src/SMESH_I/SMESH_Algo_i.cxx | 2 +- src/SMESH_I/SMESH_Algo_i.hxx | 2 +- src/SMESH_I/SMESH_DumpPython.cxx | 214 +- src/SMESH_I/SMESH_Filter_i.cxx | 37 +- src/SMESH_I/SMESH_Filter_i.hxx | 2 +- src/SMESH_I/SMESH_Gen_i.cxx | 115 +- src/SMESH_I/SMESH_Gen_i.hxx | 12 +- src/SMESH_I/SMESH_Gen_i_1.cxx | 35 +- src/SMESH_I/SMESH_Group_i.cxx | 32 +- src/SMESH_I/SMESH_Group_i.hxx | 5 +- src/SMESH_I/SMESH_Hypothesis_i.cxx | 4 +- src/SMESH_I/SMESH_Hypothesis_i.hxx | 6 +- src/SMESH_I/SMESH_MEDFamily_i.cxx | 2 +- src/SMESH_I/SMESH_MEDFamily_i.hxx | 4 +- src/SMESH_I/SMESH_MEDMesh_i.cxx | 6 +- src/SMESH_I/SMESH_MEDMesh_i.hxx | 386 +- src/SMESH_I/SMESH_MEDSupport_i.cxx | 2 +- src/SMESH_I/SMESH_MEDSupport_i.hxx | 2 +- src/SMESH_I/SMESH_MeshEditor_i.cxx | 820 +- src/SMESH_I/SMESH_MeshEditor_i.hxx | 68 +- src/SMESH_I/SMESH_Mesh_i.cxx | 613 +- src/SMESH_I/SMESH_Mesh_i.hxx | 137 +- src/SMESH_I/SMESH_Pattern_i.cxx | 18 +- src/SMESH_I/SMESH_Pattern_i.hxx | 2 +- src/SMESH_I/SMESH_PythonDump.hxx | 31 +- src/SMESH_I/SMESH_subMesh_i.cxx | 12 +- src/SMESH_I/SMESH_subMesh_i.hxx | 2 +- src/SMESH_I/smeshpy.py | 2 +- src/SMESH_SWIG/Makefile.in | 8 +- src/SMESH_SWIG/PAL_MESH_041_mesh.py | 19 + src/SMESH_SWIG/PAL_MESH_043_2D.py | 2 +- src/SMESH_SWIG/PAL_MESH_043_3D.py | 2 +- src/SMESH_SWIG/SMESH_BelongToGeom.py | 19 + src/SMESH_SWIG/SMESH_GroupFromGeom.py | 2 +- src/SMESH_SWIG/SMESH_GroupFromGeom2.py | 19 + src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py | 27 +- src/SMESH_SWIG/SMESH_Nut.py | 19 + src/SMESH_SWIG/SMESH_Partition1_tetra.py | 19 + src/SMESH_SWIG/SMESH_Sphere.py | 2 +- src/SMESH_SWIG/SMESH_blocks.py | 2 +- src/SMESH_SWIG/SMESH_box.py | 19 + src/SMESH_SWIG/SMESH_box2_tetra.py | 19 + src/SMESH_SWIG/SMESH_box3_tetra.py | 19 + src/SMESH_SWIG/SMESH_box_tetra.py | 19 + src/SMESH_SWIG/SMESH_controls.py | 2 +- src/SMESH_SWIG/SMESH_demo_hexa2_upd.py | 19 + src/SMESH_SWIG/SMESH_fixation.py | 2 +- src/SMESH_SWIG/SMESH_fixation_hexa.py | 19 + src/SMESH_SWIG/SMESH_fixation_tetra.py | 19 + src/SMESH_SWIG/SMESH_flight_skin.py | 19 + src/SMESH_SWIG/SMESH_freebord.py | 19 + src/SMESH_SWIG/SMESH_hexaedre.py | 19 + src/SMESH_SWIG/SMESH_mechanic.py | 2 +- src/SMESH_SWIG/SMESH_mechanic_editor.py | 2 +- src/SMESH_SWIG/SMESH_mechanic_tetra.py | 2 +- src/SMESH_SWIG/SMESH_reg.py | 2 +- src/SMESH_SWIG/SMESH_shared_modules.py | 19 + src/SMESH_SWIG/SMESH_test.py | 2 +- src/SMESH_SWIG/SMESH_test0.py | 3 +- src/SMESH_SWIG/SMESH_test1.py | 2 +- src/SMESH_SWIG/SMESH_test2.py | 2 +- src/SMESH_SWIG/SMESH_test3.py | 2 +- src/SMESH_SWIG/SMESH_test4.py | 19 + src/SMESH_SWIG/SMESH_test5.py | 2 +- src/SMESH_SWIG/batchmode_mefisto.py | 19 + src/SMESH_SWIG/batchmode_smesh.py | 17 +- src/SMESH_SWIG/ex00_all.py | 19 + src/SMESH_SWIG/ex01_cube2build.py | 19 + src/SMESH_SWIG/ex02_cube2primitive.py | 19 + src/SMESH_SWIG/ex03_cube2partition.py | 19 + src/SMESH_SWIG/ex04_cube5tetraHexa.py | 19 + src/SMESH_SWIG/ex05_hole1build.py | 19 + src/SMESH_SWIG/ex06_hole1boolean.py | 19 + src/SMESH_SWIG/ex07_hole1partition.py | 19 + src/SMESH_SWIG/ex08_hole2build.py | 19 + src/SMESH_SWIG/ex09_grid4build.py | 19 + src/SMESH_SWIG/ex10_grid4geometry.py | 19 + src/SMESH_SWIG/ex11_grid3partition.py | 19 + src/SMESH_SWIG/ex12_grid17partition.py | 19 + src/SMESH_SWIG/ex13_hole1partial.py | 19 + src/SMESH_SWIG/ex14_cyl1holed.py | 19 + src/SMESH_SWIG/ex15_cyl2geometry.py | 19 + src/SMESH_SWIG/ex16_cyl2complementary.py | 19 + src/SMESH_SWIG/ex17_dome1.py | 19 + src/SMESH_SWIG/ex18_dome2.py | 19 + src/SMESH_SWIG/ex19_sphereINcube.py | 19 + src/SMESH_SWIG/libSMESH_Swig.i | 2 +- src/SMESH_SWIG/smesh.py | 474 +- src/StdMeshers/Makefile.in | 26 +- src/StdMeshers/StdMeshers_Arithmetic1D.cxx | 2 +- src/StdMeshers/StdMeshers_Arithmetic1D.hxx | 2 +- src/StdMeshers/StdMeshers_AutomaticLength.cxx | 7 +- src/StdMeshers/StdMeshers_AutomaticLength.hxx | 2 +- src/StdMeshers/StdMeshers_Deflection1D.cxx | 2 +- src/StdMeshers/StdMeshers_Deflection1D.hxx | 2 +- src/StdMeshers/StdMeshers_Distribution.cxx | 46 +- src/StdMeshers/StdMeshers_Distribution.hxx | 2 +- src/StdMeshers/StdMeshers_Hexa_3D.cxx | 1097 +-- src/StdMeshers/StdMeshers_Hexa_3D.hxx | 35 +- src/StdMeshers/StdMeshers_LengthFromEdges.cxx | 2 +- src/StdMeshers/StdMeshers_LengthFromEdges.hxx | 2 +- src/StdMeshers/StdMeshers_LocalLength.cxx | 2 +- src/StdMeshers/StdMeshers_LocalLength.hxx | 2 +- src/StdMeshers/StdMeshers_MEFISTO_2D.cxx | 325 +- src/StdMeshers/StdMeshers_MEFISTO_2D.hxx | 6 +- src/StdMeshers/StdMeshers_MaxElementArea.cxx | 2 +- src/StdMeshers/StdMeshers_MaxElementArea.hxx | 2 +- .../StdMeshers_MaxElementVolume.cxx | 2 +- .../StdMeshers_MaxElementVolume.hxx | 2 +- .../StdMeshers_NotConformAllowed.cxx | 2 +- .../StdMeshers_NotConformAllowed.hxx | 2 +- .../StdMeshers_NumberOfSegments.cxx | 34 +- .../StdMeshers_NumberOfSegments.hxx | 2 +- src/StdMeshers/StdMeshers_Penta_3D.cxx | 658 +- src/StdMeshers/StdMeshers_Penta_3D.hxx | 18 +- src/StdMeshers/StdMeshers_Propagation.cxx | 4 +- src/StdMeshers/StdMeshers_Propagation.hxx | 2 +- .../StdMeshers_QuadranglePreference.cxx | 2 +- .../StdMeshers_QuadranglePreference.hxx | 2 +- src/StdMeshers/StdMeshers_Quadrangle_2D.cxx | 233 +- src/StdMeshers/StdMeshers_Quadrangle_2D.hxx | 18 +- src/StdMeshers/StdMeshers_QuadraticMesh.hxx | 4 +- src/StdMeshers/StdMeshers_Regular_1D.cxx | 214 +- src/StdMeshers/StdMeshers_Regular_1D.hxx | 4 +- src/StdMeshers/StdMeshers_StartEndLength.cxx | 2 +- src/StdMeshers/StdMeshers_StartEndLength.hxx | 2 +- src/StdMeshersGUI/Makefile.in | 14 +- src/StdMeshersGUI/StdMeshersGUI.cxx | 4 +- .../StdMeshersGUI_DistrPreview.cxx | 69 +- .../StdMeshersGUI_DistrPreview.h | 19 + .../StdMeshersGUI_DistrTable.cxx | 2 +- src/StdMeshersGUI/StdMeshersGUI_DistrTable.h | 2 +- .../StdMeshersGUI_NbSegmentsCreator.cxx | 20 + .../StdMeshersGUI_NbSegmentsCreator.h | 19 + .../StdMeshersGUI_StdHypothesisCreator.cxx | 6 +- .../StdMeshersGUI_StdHypothesisCreator.h | 5 +- src/StdMeshersGUI/StdMeshers_images.po | 25 +- src/StdMeshersGUI/StdMeshers_msg_en.po | 19 + src/StdMeshers_I/Makefile.in | 15 +- .../StdMeshers_Arithmetic1D_i.cxx | 2 +- .../StdMeshers_Arithmetic1D_i.hxx | 2 +- .../StdMeshers_AutomaticLength_i.cxx | 2 +- .../StdMeshers_AutomaticLength_i.hxx | 2 +- .../StdMeshers_Deflection1D_i.cxx | 2 +- .../StdMeshers_Deflection1D_i.hxx | 2 +- src/StdMeshers_I/StdMeshers_Hexa_3D_i.cxx | 2 +- src/StdMeshers_I/StdMeshers_Hexa_3D_i.hxx | 2 +- .../StdMeshers_LengthFromEdges_i.cxx | 2 +- .../StdMeshers_LengthFromEdges_i.hxx | 2 +- src/StdMeshers_I/StdMeshers_LocalLength_i.cxx | 2 +- src/StdMeshers_I/StdMeshers_LocalLength_i.hxx | 2 +- src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.cxx | 2 +- src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.hxx | 2 +- .../StdMeshers_MaxElementArea_i.cxx | 2 +- .../StdMeshers_MaxElementArea_i.hxx | 2 +- .../StdMeshers_MaxElementVolume_i.cxx | 2 +- .../StdMeshers_MaxElementVolume_i.hxx | 2 +- .../StdMeshers_NotConformAllowed_i.cxx | 2 +- .../StdMeshers_NotConformAllowed_i.hxx | 2 +- .../StdMeshers_NumberOfSegments_i.cxx | 15 +- .../StdMeshers_NumberOfSegments_i.hxx | 2 +- src/StdMeshers_I/StdMeshers_Propagation_i.cxx | 2 +- src/StdMeshers_I/StdMeshers_Propagation_i.hxx | 2 +- .../StdMeshers_QuadranglePreference_i.cxx | 2 +- .../StdMeshers_QuadranglePreference_i.hxx | 2 +- .../StdMeshers_Quadrangle_2D_i.cxx | 2 +- .../StdMeshers_Quadrangle_2D_i.hxx | 2 +- .../StdMeshers_QuadraticMesh_i.hxx | 4 +- src/StdMeshers_I/StdMeshers_Regular_1D_i.cxx | 2 +- src/StdMeshers_I/StdMeshers_Regular_1D_i.hxx | 2 +- .../StdMeshers_StartEndLength_i.cxx | 2 +- .../StdMeshers_StartEndLength_i.hxx | 2 +- src/StdMeshers_I/StdMeshers_i.cxx | 43 +- 993 files changed, 62165 insertions(+), 54187 deletions(-) delete mode 100644 adm_local/unix/config_files/check_Geom.m4 delete mode 100644 adm_local/unix/config_files/check_Med.m4 delete mode 100755 bin/VERSION delete mode 100644 doc/salome/SMESH_index_v3.1.0.html delete mode 100755 doc/salome/gui/SMESH/files/introduction_to_smesh.htm delete mode 100755 doc/salome/gui/SMESH/image129.gif delete mode 100644 doc/salome/gui/SMESH/image138.gif delete mode 100644 doc/salome/gui/SMESH/image139.gif delete mode 100755 doc/salome/gui/SMESH/image19.jpg delete mode 100755 doc/salome/gui/SMESH/image21.gif delete mode 100755 doc/salome/gui/SMESH/image22.gif delete mode 100755 doc/salome/gui/SMESH/image23.gif delete mode 100755 doc/salome/gui/SMESH/image26.jpg delete mode 100755 doc/salome/gui/SMESH/image27.gif delete mode 100755 doc/salome/gui/SMESH/image73.gif delete mode 100755 doc/salome/gui/SMESH/pics/a-advmeshinfo.png delete mode 100755 doc/salome/gui/SMESH/pics/a-createmesh1.png delete mode 100755 doc/salome/gui/SMESH/pics/a-editmesh.png delete mode 100755 doc/salome/gui/SMESH/pics/a-exportmesh.png delete mode 100755 doc/salome/gui/SMESH/pics/a-nbsegments3.png delete mode 100755 doc/salome/gui/SMESH/pics/a-nbsegments4.png delete mode 100755 doc/salome/gui/SMESH/pics/b-create_group.png delete mode 100755 doc/salome/gui/SMESH/pics/borders_at_multi_connections1.png delete mode 100755 doc/salome/gui/SMESH/pics/c-createmesh.png delete mode 100755 doc/salome/gui/SMESH/pics/c-editmesh.png delete mode 100755 doc/salome/gui/SMESH/pics/importmesh.png delete mode 100755 doc/salome/gui/SMESH/pics/length1.png delete mode 100755 doc/salome/gui/SMESH/pics/submeshconstruction.png delete mode 100755 doc/salome/gui/SMESH/smesh.htm delete mode 100755 doc/salome/gui/SMESH/smesh_csh.htm delete mode 100755 doc/salome/gui/SMESH/smesh_rhc.htm delete mode 100755 doc/salome/gui/SMESH/whestart.ico delete mode 100755 doc/salome/gui/SMESH/whrstart.ico delete mode 100755 doc/salome/gui/SMESH/whskin_banner.htm delete mode 100755 doc/salome/gui/SMESH/whskin_frmset01.htm delete mode 100755 doc/salome/gui/SMESH/whskin_frmset010.htm delete mode 100755 doc/salome/gui/SMESH/whskin_mbars.htm delete mode 100755 doc/salome/gui/SMESH/whskin_papplet.htm delete mode 100755 doc/salome/gui/SMESH/whskin_pdhtml.htm delete mode 100755 doc/salome/gui/SMESH/whskin_plist.htm delete mode 100755 doc/salome/gui/SMESH/whskin_tbars.htm delete mode 100755 doc/salome/gui/SMESH/whst_topics.xml delete mode 100755 doc/salome/gui/SMESH/whstart.ico delete mode 100755 doc/salome/gui/SMESH/wht_abge.jpg delete mode 100755 doc/salome/gui/SMESH/wht_abgi.jpg delete mode 100755 doc/salome/gui/SMESH/wht_abgw.jpg delete mode 100755 doc/salome/gui/SMESH/wht_abte.jpg delete mode 100755 doc/salome/gui/SMESH/wht_abti.jpg delete mode 100755 doc/salome/gui/SMESH/wht_abtw.jpg delete mode 100755 doc/salome/gui/SMESH/wht_fts_h.gif delete mode 100755 doc/salome/gui/SMESH/wht_fts_n.gif delete mode 100755 doc/salome/gui/SMESH/wht_glo_h.gif delete mode 100755 doc/salome/gui/SMESH/wht_glo_n.gif delete mode 100755 doc/salome/gui/SMESH/wht_go.gif delete mode 100755 doc/salome/gui/SMESH/wht_hide.gif delete mode 100755 doc/salome/gui/SMESH/wht_idx_h.gif delete mode 100755 doc/salome/gui/SMESH/wht_idx_n.gif delete mode 100755 doc/salome/gui/SMESH/wht_logo1.gif delete mode 100755 doc/salome/gui/SMESH/wht_logo2.gif delete mode 100755 doc/salome/gui/SMESH/wht_next.gif delete mode 100755 doc/salome/gui/SMESH/wht_next_g.gif delete mode 100755 doc/salome/gui/SMESH/wht_prev.gif delete mode 100755 doc/salome/gui/SMESH/wht_prev_g.gif delete mode 100755 doc/salome/gui/SMESH/wht_spac.gif delete mode 100755 doc/salome/gui/SMESH/wht_sync.gif delete mode 100755 doc/salome/gui/SMESH/wht_tab0.gif delete mode 100755 doc/salome/gui/SMESH/wht_tab1.gif delete mode 100755 doc/salome/gui/SMESH/wht_tab2.gif delete mode 100755 doc/salome/gui/SMESH/wht_tab3.gif delete mode 100755 doc/salome/gui/SMESH/wht_tab4.gif delete mode 100755 doc/salome/gui/SMESH/wht_tab5.gif delete mode 100755 doc/salome/gui/SMESH/wht_tab6.gif delete mode 100755 doc/salome/gui/SMESH/wht_tab7.gif delete mode 100755 doc/salome/gui/SMESH/wht_tab8.gif delete mode 100755 doc/salome/gui/SMESH/wht_toc1.gif delete mode 100755 doc/salome/gui/SMESH/wht_toc2.gif delete mode 100755 doc/salome/gui/SMESH/wht_toc3.gif delete mode 100755 doc/salome/gui/SMESH/wht_toc4.gif delete mode 100755 doc/salome/gui/SMESH/wht_toc_h.gif delete mode 100755 doc/salome/gui/SMESH/wht_toc_n.gif delete mode 100755 doc/salome/gui/SMESH/wht_ws.gif delete mode 100755 doc/salome/gui/SMESH/wht_ws_g.gif delete mode 100755 doc/salome/gui/SMESH/whtbar.js delete mode 100755 doc/salome/tui/SMESH/doxyfile delete mode 100755 doc/salome/tui/SMESH/doxyfile_py delete mode 100755 doc/salome/tui/SMESH/sources/static/tree.js delete mode 100644 resources/SMESHCatalog.xml delete mode 100644 src/SMESHGUI/SMESHGUI_CreateHypothesesDlg.cxx delete mode 100644 src/SMESHGUI/SMESHGUI_EditHypothesesDlg.cxx delete mode 100755 src/SMESHGUI/SMESHGUI_PrecisionDlg.cxx diff --git a/INSTALL b/INSTALL index e07cc9976..0ea0b81cb 100644 --- a/INSTALL +++ b/INSTALL @@ -1,6 +1 @@ -This is the version 3.2.0a1 of SMESH -Compatible with : - - KERNEL 3.2.0a1 - - SALOMEGUI 3.2.0a1 - - GEOM 3.2.0a1 - - MED 3.2.0a1 +SALOME2 : SMESH module diff --git a/Makefile.in b/Makefile.in index f3a90dfb5..5c579e676 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,3 +1,22 @@ +# Copyright (C) 2005 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. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# # -* Makefile *- # # Author : Patrick GOLDBRONN (CEA) @@ -9,12 +28,12 @@ top_srcdir=@top_srcdir@ top_builddir=. srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/bin:@top_srcdir@/resources:./bin:@top_srcdir@/idl +VPATH=.:@srcdir@:@top_srcdir@/bin:./bin/salome:./resources:@top_srcdir@/resources:./bin:@top_srcdir@/idl @COMMENCE@ -SUBDIRS = idl src doc +SUBDIRS = idl src doc adm_local RESOURCES_FILES = \ delete.png \ @@ -76,11 +95,15 @@ mesh_tree_algo.png \ mesh_tree_algo_quad.png \ mesh_tree_algo_regular.png \ mesh_tree_algo_tetra.png \ +mesh_tree_algo_netgen_2d3d.png \ +mesh_tree_algo_netgen_2d.png \ mesh_tree_hypo_area.png \ mesh_tree_hypo_length.png \ mesh_tree_hypo.png \ mesh_tree_hypo_segment.png \ mesh_tree_hypo_volume.png \ +mesh_tree_hypo_netgen.png \ +mesh_tree_hypo_netgen_2d.png \ mesh_tree_mesh.png \ mesh_tree_importedmesh.png \ mesh_tree_mesh_warn.png \ @@ -127,24 +150,41 @@ SMESH_en.xml \ SMESH.config \ StdMeshers.xml \ SMESHCatalog.xml \ +SalomeApp.xml \ mesh_pattern.png \ pattern_sample_2d.png \ pattern_sample_3D.png \ mesh_add.png \ -mesh_remove.png +mesh_remove.png \ +mesh_quad_edge.png \ +mesh_quad_triangle.png \ +mesh_quad_quadrangle.png \ +mesh_quad_tetrahedron.png \ +mesh_quad_pyramid.png \ +mesh_quad_pentahedron.png \ +mesh_quad_hexahedron.png \ +mesh_conv_to_quad.png BIN_SCRIPT= \ VERSION # copy header files in common directory -ifeq ($(HAVE_SSTREAM),yes) - include_list=include/salome/SALOMEconfig.h -else - include_list=include/salome/SALOMEconfig.h include/salome/sstream + +include_list = include/salome/SALOMEconfig.h \ + include/salome/SMESH_version.h + +ifneq ($(HAVE_SSTREAM),yes) + include_list += include/salome/sstream endif inc: idl $(include_list) +bin: bin/salome/VERSION + +bin/salome/VERSION : bin/VERSION + -$(RM) $@ + $(LN_S) ../../$< $@ + include/salome/SALOMEconfig.h: salome_adm/unix/SALOMEconfig.ref -$(RM) $@ $(LN_S) ../../$< $@ @@ -162,6 +202,10 @@ include/salome/sstream: salome_adm/unix/sstream -$(RM) $@ $(LN_S) ../../$< $@ +include/salome/SMESH_version.h: SMESH_version.h + -$(RM) $@ + $(LN_S) ../../$< $@ + depend: depend_idl depend_idl: diff --git a/adm_local/unix/config_files/check_Geom.m4 b/adm_local/unix/config_files/check_Geom.m4 deleted file mode 100644 index 13f3be40c..000000000 --- a/adm_local/unix/config_files/check_Geom.m4 +++ /dev/null @@ -1,45 +0,0 @@ -# Check availability of Geom binary distribution -# -# Author : Nicolas REJNERI (OPEN CASCADE, 2003) -# - -AC_DEFUN([CHECK_GEOM],[ - -AC_CHECKING(for Geom) - -Geom_ok=no - -AC_ARG_WITH(geom, - [ --with-geom=DIR root directory path of GEOM installation ], - GEOM_DIR="$withval",GEOM_DIR="") - -if test "x$GEOM_DIR" == "x" ; then - -# no --with-geom-dir option used - - if test "x$GEOM_ROOT_DIR" != "x" ; then - - # GEOM_ROOT_DIR environment variable defined - GEOM_DIR=$GEOM_ROOT_DIR - - fi -# -fi - -if test -f ${GEOM_DIR}/lib/salome/libGEOMClient.so ; then - Geom_ok=yes - AC_MSG_RESULT(Using Geom module distribution in ${GEOM_DIR}) - - if test "x$GEOM_ROOT_DIR" == "x" ; then - GEOM_ROOT_DIR=${GEOM_DIR} - fi - AC_SUBST(GEOM_ROOT_DIR) - -else - AC_MSG_WARN("Cannot find compiled Geom module distribution") -fi - -AC_MSG_RESULT(for Geom: $Geom_ok) - -])dnl - diff --git a/adm_local/unix/config_files/check_Med.m4 b/adm_local/unix/config_files/check_Med.m4 deleted file mode 100644 index 727bf4381..000000000 --- a/adm_local/unix/config_files/check_Med.m4 +++ /dev/null @@ -1,45 +0,0 @@ -# Check availability of Med binary distribution -# -# Author : Nicolas REJNERI (OPEN CASCADE, 2003) -# - -AC_DEFUN([CHECK_MED],[ - -AC_CHECKING(for Med) - -Med_ok=no - -AC_ARG_WITH(med, - [ --with-med=DIR root directory path of MED installation ], - MED_DIR="$withval",MED_DIR="") - -if test "x$MED_DIR" == "x" ; then - -# no --with-med-dir option used - - if test "x$MED_ROOT_DIR" != "x" ; then - - # MED_ROOT_DIR environment variable defined - MED_DIR=$MED_ROOT_DIR - - fi -# -fi - -if test -f ${MED_DIR}/idl/salome/MED.idl ; then - Med_ok=yes - AC_MSG_RESULT(Using Med module distribution in ${MED_DIR}) - - if test "x$MED_ROOT_DIR" == "x" ; then - MED_ROOT_DIR=${MED_DIR} - fi - AC_SUBST(MED_ROOT_DIR) - -else - AC_MSG_WARN("Cannot find Med module sources") -fi - -AC_MSG_RESULT(for Med: $Med_ok) - -])dnl - diff --git a/adm_local/unix/make_commence.in b/adm_local/unix/make_commence.in index 5e556548e..71df45053 100644 --- a/adm_local/unix/make_commence.in +++ b/adm_local/unix/make_commence.in @@ -11,8 +11,8 @@ HAVE_SSTREAM=@HAVE_SSTREAM@ LIBS=@LIBS@ LIBSFORBIN=@LIBS@ -LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib/salome -Xlinker -rpath-link -Xlinker $(top_builddir)/lib/salome -LDFLAGSFORBIN=@LDFLAGS@ -L$(top_builddir)/lib/salome -Xlinker -rpath-link -Xlinker $(top_builddir)/lib/salome +LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome -Xlinker -rpath-link -Xlinker +LDFLAGSFORBIN=@LDFLAGS@ -L$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome -Xlinker -rpath-link -Xlinker # add libstdc++ to link c++ library with libtool ! LDFLAGS+= -lstdc++ LDFLAGSFORBIN+= -lstdc++ @@ -54,8 +54,8 @@ PYTHONHOME = @PYTHONHOME@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_VERSION = @PYTHON_VERSION@ -PYTHON_SITE = @PYTHON_SITE@ -PYTHON_SITE_INSTALL = @PYTHON_SITE_INSTALL@ +PYTHON_SITE = $(prefix)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages +PYTHON_SITE_INSTALL = $(prefix)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome # QT @@ -168,6 +168,10 @@ CXXFLAGS+= $(CORBA_CXXFLAGS) #LDFLAGS+= $(CORBA_LIBS) LIBS+=$(CORBA_LIBS) +DOXYGEN = @DOXYGEN@ +DOXYGEN_WITH_PYTHON = @DOXYGEN_WITH_PYTHON@ +DOXYGEN_WITH_STL = @DOXYGEN_WITH_STL@ + ## Shared libraries LT_STATIC_EXEC=@LT_STATIC_EXEC@ DYNAMIC_DIRS=@DYNAMIC_DIRS@ @@ -188,16 +192,33 @@ INSTALL_DATA=@INSTALL_DATA@ # create a symbolic link (or a copie ?) LN_S=@LN_S@ +KERNEL_ROOT_DIR=@KERNEL_ROOT_DIR@ +KERNEL_SITE_DIR=@KERNEL_SITE_DIR@ +KERNEL_LDFLAGS=@KERNEL_LDFLAGS@ +KERNEL_CXXFLAGS=@KERNEL_CXXFLAGS@ + +GUI_ROOT_DIR=@GUI_ROOT_DIR@ +GUI_LDFLAGS=@GUI_LDFLAGS@ +GUI_CXXFLAGS=@GUI_CXXFLAGS@ + +MED_ROOT_DIR=@MED_ROOT_DIR@ +MED_LDFLAGS=@MED_LDFLAGS@ +MED_CXXFLAGS=@MED_CXXFLAGS@ + +GEOM_ROOT_DIR=@GEOM_ROOT_DIR@ +GEOM_LDFLAGS=@GEOM_LDFLAGS@ +GEOM_CXXFLAGS=@GEOM_CXXFLAGS@ + ## Installation points prefix=@prefix@ exec_prefix=@exec_prefix@ -bindir=@bindir@/salome -libdir=@libdir@/salome +bindir=@exec_prefix@/bin/salome +libdir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/salome # warning : if user give this path in configure we could have salome/salome :-( includedir=@includedir@/salome datadir=@datadir@/salome idldir=$(prefix)/idl/salome -sharedpydir=@libdir@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules +sharedpydir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules docdir=${prefix}/doc/salome @@ -224,7 +245,13 @@ all: Makefile: $(top_builddir)/config.status $(srcdir)/Makefile.in cd $(top_builddir) ; ./config.status -$(top_builddir)/config.status: $(top_srcdir)/configure +LOCAL_MAKE = make_commence make_conclude make_omniorb + +KERNEL_MAKE = make_module depend SALOMEconfig.h F77config.h sstream envScript + +$(top_builddir)/config.status: $(top_srcdir)/configure \ + $(LOCAL_MAKE:%=$(top_srcdir)/adm_local/unix/%.in) \ + $(KERNEL_MAKE:%=$(KERNEL_ROOT_DIR)/salome_adm/unix/%.in) cd $(top_builddir) ; ./config.status --recheck # VPATH contain $(srcdir), so make configure is good in top_srcdir and we must add target configure otherwise :-) @@ -239,15 +266,42 @@ $(top_srcdir)/configure.in: $(top_srcdir)/configure.in.base cd $(top_srcdir) && ./build_configure -ACLOCAL_SRC = \ -ac_cxx_bool.m4 check_corba.m4 check_vtk.m4 \ -ac_cxx_depend_flag.m4 check_hdf5.m4 enable_pthreads.m4 \ -ac_cxx_mutable.m4 check_mico.m4 libtool.m4 \ -ac_cxx_namespaces.m4 check_omniorb.m4 pyembed.m4 \ -ac_cxx_partial_specialization.m4 check_opengl.m4 python.m4 \ -ac_cxx_typename.m4 check_pthreads.m4 check_cas.m4 \ -ac_cc_warnings.m4 check_qt.m4 check_boost.m4 \ -check_swig.m4 - -$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%) - cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files +ACLOCAL_KERNEL = \ + ac_cxx_bool.m4 \ + check_corba.m4 \ + ac_cxx_depend_flag.m4 \ + check_hdf5.m4 \ + enable_pthreads.m4 \ + ac_cxx_mutable.m4 \ + check_mico.m4 \ + ac_cxx_namespaces.m4 \ + check_omniorb.m4 \ + pyembed.m4 \ + ac_cxx_partial_specialization.m4 \ + python.m4 \ + ac_cxx_typename.m4 \ + check_pthreads.m4 \ + check_cas.m4 \ + ac_cc_warnings.m4 \ + check_boost.m4 \ + check_swig.m4 + +ACLOCAL_GUI = \ + check_vtk.m4 \ + check_opengl.m4 \ + check_qt.m4 \ + check_GUI.m4 \ + check_corba_in_GUI.m4 + +ACLOCAL_MED = check_Med.m4 +ACLOCAL_GEOM = check_GEOM.m4 + +$(top_srcdir)/aclocal.m4: $(ACLOCAL_KERNEL:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%) \ + $(ACLOCAL_GUI:%=@GUI_ROOT_DIR@/adm_local/unix/config_files/%) \ + $(ACLOCAL_MED:%=@MED_ROOT_DIR@/adm_local/unix/config_files/%) \ + $(ACLOCAL_GEOM:%=@GEOM_ROOT_DIR@/adm_local/unix/config_files/%) + cd $(top_srcdir) ; aclocal -I adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files \ + -I @GUI_ROOT_DIR@/adm_local/unix/config_files \ + -I @MED_ROOT_DIR@/adm_local/unix/config_files \ + -I @GEOM_ROOT_DIR@/adm_local/unix/config_files + diff --git a/adm_local/unix/make_conclude.in b/adm_local/unix/make_conclude.in index f4827fd31..37c65077f 100644 --- a/adm_local/unix/make_conclude.in +++ b/adm_local/unix/make_conclude.in @@ -35,9 +35,9 @@ LIB_OBJ_F = $(patsubst %.f, %.lo, $(filter %.f, $(LIB_SRC))) # all libtool obj file in library LIB_OBJ = $(LIB_OBJ_CXX) $(LIB_OBJ_CC) $(LIB_OBJ_C) $(LIB_CLIENT_OBJ:%.o=%.lo) $(LIB_SERVER_OBJ:%.o=%.lo) $(LIB_SWIG_OBJ) $(LIB_OBJ_F) -# LIB_BUILD = $(LIB:%.la=$(top_builddir)/lib/salome/%.la) -LIB_BUILD = $(patsubst %.la, $(top_builddir)/lib/salome/%.la, $(filter %.la, $(LIB))) -LIB_BUILD_A = $(patsubst %.a, $(top_builddir)/lib/salome/%.a, $(filter %.a, $(LIB))) +# LIB_BUILD = $(LIB:%.la=$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la) +LIB_BUILD = $(patsubst %.la, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la, $(filter %.la, $(LIB))) +LIB_BUILD_A = $(patsubst %.a, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.a, $(filter %.a, $(LIB))) ifneq ($(findstring cmodule.la,$(filter %.la, $(LIB))),) LIB_SWIG = $(patsubst %cmodule.la,%.so, $(filter %.la, $(LIB))) @@ -48,7 +48,7 @@ endif lib: $(LIB_BUILD) $(LIB_CLIENT_PY) # we don't build static library ! -$(LIB_BUILD): $(top_builddir)/lib/salome/%.la: %.la +$(LIB_BUILD): $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la: %.la -$(RM) $@ -$(RM) $(patsubst %.la, %.so, $@) -$(RM) $(patsubst %.la, %.a, $@) @@ -59,10 +59,10 @@ $(LIB_BUILD): $(top_builddir)/lib/salome/%.la: %.la $(patsubst %.la, %.so, $@).0 || true if ! test -z $(LIB_SWIG) ; then \ - ln -sf $(patsubst %.la,%.so, $(CURDIR)/.libs/$<) $(top_builddir)/lib/salome/_$(LIB_SWIG) || true;\ + ln -sf $(patsubst %.la,%.so, $(CURDIR)/.libs/$<) $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/_$(LIB_SWIG) || true;\ fi; -$(LIB_BUILD_A): $(top_builddir)/lib/salome/%.a: %.a +$(LIB_BUILD_A): $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.a: %.a -$(RM) $@ ln -sf $(CURDIR)/$< $@ || true @@ -106,7 +106,7 @@ $(DEST_PYSCRIPTS): $(top_builddir)/bin/salome/%: % # copy pyqt files in $(PYTHON_SHARED_SITE) # -PYTHON_SHARED_SITE=$(top_builddir)/lib/python$(PYTHON_VERSION)/site-packages/salome/shared_modules +PYTHON_SHARED_SITE=$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules $(PYTHON_SHARED_SITE): $(INSTALL) -d $@ @@ -260,10 +260,10 @@ clean: mostlyclean -$(RM) $(LIB) $(TEST_PROGS) $(BIN) $(CLEAN) -$(RM) TAGS *~ *# core *.core -$(RM) -r .libs - -$(RM) $(top_builddir)/lib/salome/$(LIB) + -$(RM) $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB) -$(RM) $(patsubst %,$(top_builddir)/bin/salome/%, $(BIN)) - -$(RM) $(patsubst %.la, %.so, $(top_builddir)/lib/salome/$(LIB)) - -$(RM) $(patsubst %.la, %.a, $(top_builddir)/lib/salome/$(LIB)) + -$(RM) $(patsubst %.la, %.so, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB)) + -$(RM) $(patsubst %.la, %.a, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB)) # remove idl generated files (sources) -$(RM) $(LIB_CLIENT_SRC) $(LIB_SERVER_SRC) $(BIN_CLIENT_SRC) $(BIN_SERVER_SRC) # remove idl generated files (headers) diff --git a/bin/VERSION b/bin/VERSION deleted file mode 100755 index 2479b4f28..000000000 --- a/bin/VERSION +++ /dev/null @@ -1 +0,0 @@ -THIS IS SALOME - SMESH VERSION: 3.2.0a1 diff --git a/build_configure b/build_configure index b884b1757..121fb5d2a 100755 --- a/build_configure +++ b/build_configure @@ -26,6 +26,31 @@ fi # echo "failed : KERNEL_SRC variable is not correct !" # exit #fi + +######################################################################## +# Test if the GUI_ROOT_DIR is set correctly + +if test ! -d "${GUI_ROOT_DIR}"; then + echo "failed : GUI_ROOT_DIR variable is not correct !" + exit +fi + +######################################################################## +# Test if the MED_ROOT_DIR is set correctly + +if test ! -d "${MED_ROOT_DIR}"; then + echo "failed : MED_ROOT_DIR variable is not correct !" + exit +fi + +######################################################################## +# Test if the GEOM_ROOT_DIR is set correctly + +if test ! -d "${GEOM_ROOT_DIR}"; then + echo "failed : GEOM_ROOT_DIR variable is not correct !" + exit +fi + ######################################################################## # find_in - utility function # @@ -125,10 +150,10 @@ echo " ./salome_adm/unix/SALOMEconfig.h \\" >> configure.in_tmp1 echo " ./salome_adm/unix/F77config.h \\" >> configure.in_tmp1 echo " ./salome_adm/unix/sstream \\" >> configure.in_tmp1 echo " ./salome_adm/unix/depend \\" >> configure.in_tmp1 -echo " ./adm_local/unix/make_omniorb \\" >> configure.in_tmp1 +echo " ./adm_local/unix/make_omniorb:${ABS_CONF_DIR}/adm_local/unix/make_omniorb.in \\" >> configure.in_tmp1 echo " ./salome_adm/unix/envScript \\" >> configure.in_tmp1 -echo " ./adm_local/unix/make_commence \\" >> configure.in_tmp1 -echo " ./adm_local/unix/make_conclude \\" >> configure.in_tmp1 +echo " ./adm_local/unix/make_commence:${ABS_CONF_DIR}/adm_local/unix/make_commence.in \\" >> configure.in_tmp1 +echo " ./adm_local/unix/make_conclude:${ABS_CONF_DIR}/adm_local/unix/make_conclude.in \\" >> configure.in_tmp1 echo " ./salome_adm/unix/make_module \\" >> configure.in_tmp1 \rm -f configure.in_tmp2 configure.in_tmp3 @@ -203,7 +228,10 @@ else echo -n "Creating 'configure' script ... " fi -aclocal --acdir=adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files +aclocal -I adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files \ + -I ${GUI_ROOT_DIR}/adm_local/unix/config_files \ + -I ${MED_ROOT_DIR}/adm_local/unix/config_files \ + -I ${GEOM_ROOT_DIR}/adm_local/unix/config_files if autoconf then echo "done" diff --git a/configure.in.base b/configure.in.base index d81e49771..cc915a120 100644 --- a/configure.in.base +++ b/configure.in.base @@ -22,8 +22,10 @@ AC_CANONICAL_HOST PACKAGE=salome AC_SUBST(PACKAGE) -VERSION=0.0.1 +VERSION=3.2.0 +XVERSION=0x030200 AC_SUBST(VERSION) +AC_SUBST(XVERSION) dnl dnl Initialize source and build root directories @@ -113,13 +115,7 @@ dnl AC_CXX_HAVE_SSTREAM -echo -echo --------------------------------------------- -echo BOOST Library -echo --------------------------------------------- -echo -CHECK_BOOST dnl dnl --------------------------------------------- @@ -249,6 +245,14 @@ echo CHECK_HDF5 +echo +echo --------------------------------------------- +echo BOOST Library +echo --------------------------------------------- +echo + +CHECK_BOOST + echo echo --------------------------------------------- echo Testing OpenCascade @@ -265,6 +269,26 @@ echo CHECK_HTML_GENERATORS +echo +echo --------------------------------------------- +echo Testing GUI +echo --------------------------------------------- +echo + +CHECK_SALOME_GUI + +echo +echo --------------------------------------------- +echo Testing full GUI +echo --------------------------------------------- +echo + +CHECK_CORBA_IN_GUI +if test "x${CORBA_IN_GUI}" != "xyes"; then + echo "failed : For configure SMESH module necessary full GUI !" + exit +fi + echo echo --------------------------------------------- echo Testing Kernel @@ -326,7 +350,7 @@ else fi # make other build directories -for rep in salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources idl +for rep in salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources idl do # if test ! -d $rep ; then # eval mkdir $rep diff --git a/doc/Makefile.in b/doc/Makefile.in index 7295ede75..af9e2aae5 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,3 +1,22 @@ +# Copyright (C) 2005 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. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# # -* Makefile *- # @@ -19,6 +38,17 @@ docs: @@SETX@; for d in $(SUBDIRS); do \ (cd $$d && $(MAKE) $@) || exit 1; \ done + +usr_docs: + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + +dev_docs: + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + clean: @@SETX@; for d in $(SUBDIRS); do \ (cd $$d && $(MAKE) $@) || exit 1; \ diff --git a/doc/salome/AddNetgenInSalome2.pdf b/doc/salome/AddNetgenInSalome2.pdf index 34fd25204d7f2506a236b2629cfd6157ad7c1936..d736a6ded9ab54cd3b0cccc654a7869ab7d8ece4 100644 GIT binary patch delta 14 WcmbQXf@SIomJKV7Hm@?uc?bY8)&}bU delta 16 YcmbQbf@RtYmJKV77 - - - - - - - Mesh Module Documentation - - - -
  -
-
                   -   
- - - - - - - - - -
- - - -
- -
-
-
-

Mesh MODULE Documentation

-
-
- - - - - -
-
- -
-

Application-About.png -     

-
- -
- - - - -
-
-
-
-
- -
- -
GUI Documentation
- -
- -
- -

-
- -
- -
TUI Documentation
- -
- -
- -

-
-
-
-
-
-
- - diff --git a/doc/salome/gui/Makefile.in b/doc/salome/gui/Makefile.in index 883a053da..c08ee2735 100644 --- a/doc/salome/gui/Makefile.in +++ b/doc/salome/gui/Makefile.in @@ -1,6 +1,21 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D +# Copyright (C) 2005 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. # +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# 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 : Makefile.in # Author : Vasily Rusyaev (Open Cascade NN) @@ -14,9 +29,11 @@ VPATH=.:@srcdir@ @COMMENCE@ -docs: +usr_docs: cp -fr $(srcdir)/SMESH ./ - -find $(PWD) -name CVS -exec rm -rf {} \; + -find $(PWD) -name CVS -prune -exec rm -rf {} \; + +docs: usr_docs clean: rm -fr `ls | grep -v "Makefile"` @@ -27,7 +44,7 @@ distclean: clean install: mkdir -p $(docdir)/gui cp -rf SMESH $(docdir)/gui - -find $(PWD) -name CVS -exec rm -rf {} \; + -find $(PWD) -name CVS -prune -exec rm -rf {} \; uninstall: rm -rf $(docdir)/gui/SMESH diff --git a/doc/salome/gui/SMESH/about_viewing_meshes.htm b/doc/salome/gui/SMESH/about_viewing_meshes.htm index 77ef54955..d47aa94f8 100755 --- a/doc/salome/gui/SMESH/about_viewing_meshes.htm +++ b/doc/salome/gui/SMESH/about_viewing_meshes.htm @@ -1,150 +1,169 @@ - - - - - -About viewing meshes - - - - - - - - - - - - -

About viewing meshes

- -

You can get information about your mesh, change its presentation parameters - and access to other useful functionalities by right-clicking on it in - the Object Browser.

- -

Then the - following pop-up menu appears:

- -

  

- -

- -

 

- -

The Update button refreshes the presentation of your mesh in the Object - Browser, applying all recent changes.

- -

By clicking on Standard Mesh Infos - and Advanced Mesh - Infos you can learn the Mesh - Infos.

- -

Via Numbering -  you can - display the ID numbers of all meshing elements or nodes composing your - mesh in the viewer.

- -

Via Display Mode, Display - Entity,  Colors - / Size, and  Transparency - you can change the way of presentation of your mesh.

- -

In the Clipping menu you can create - cross-sections of the selected objects.

- -

Quality Controls are described in - the next chapter.

- -

By clicking on Display Only - you hide all other objects.

- -

The Erase button deletes the - selected object from the session.

- -

Using the Change background - button you can set the background color. By default it is black.  

- -

 

- -

See Also - a sample TUI Script of a Viewing Mesh Infos - operation.  

- -

 

- - - - + + + + + +About viewing meshes + + + + + + + + + + + + +

Viewing meshes

+ +

After definition of algorithms and hypotheses a new mesh is listed in + the Object Browser. Right-click on it and select Compute - the mesh will be automatically + displayed in the VTK + 3D Viewer. Alternatively click + Display only to hide all other objects at the same time.

+ +

 

+ +

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.

+ +

  

+ +

+ +

 

+ + + +

 

+ + + + diff --git a/doc/salome/gui/SMESH/adding_quadratic_nodes_and_elements.htm b/doc/salome/gui/SMESH/adding_quadratic_nodes_and_elements.htm index 86db2586e..b4d5067d2 100755 --- a/doc/salome/gui/SMESH/adding_quadratic_nodes_and_elements.htm +++ b/doc/salome/gui/SMESH/adding_quadratic_nodes_and_elements.htm @@ -1,124 +1,124 @@ - - - - - -Adding Quadratic Nodes and Elements - - - - - - - - - - -

Adding Quadratic Elements

- -

MESH modules allows you to work with Quadratic - Elements.

- -

Quadratic Edge in not a straight but a broken line and can be defined - by three points: first, middle and last. All more complex Quadratic - Elements differ from ordinary ones in that they consist of Quadratic - Edges.

- -

To - add a quadratic element to your mesh:

- -

1. Select your mesh in the Object Browser - or in the 3D viewer.

- -

2. From the Modification - menu choose the Add item - and select one of the following:

- -

- -

To create any Quadratic - Element specify the nodes which will form your triangle by selecting - them in the 3D viewer with pressed Shift button. Their numbers will appear - in the dialog box as Corner Nodes - (alternatively you can just input numbers in this field without selection).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. All edges and the object formed by them will be - displayed in the Object browser. When all edges are defined you will be - able to click OK or Apply - button to add the element to the mesh.

- -

 

- -

Reverse - button for Quadratic Edges switches the first and the last nodes. For all other elements it reverses the element. -

- -

 

- - - - + + + + + +Adding Quadratic Nodes and Elements + + + + + + + + + + +

Adding Quadratic Elements

+ +

MESH modules allows you to work with Quadratic + Elements.

+ +

Quadratic Edge in not a straight but a broken line and can be defined + by three points: first, middle and last. All more complex Quadratic + Elements differ from ordinary ones in that they consist of Quadratic + Edges.

+ +

To + add a quadratic element to your mesh:

+ +

1. Select your mesh in the Object Browser + or in the 3D viewer.

+ +

2. From the Modification + menu choose the Add item + and select one of the following:

+ +

+ +

To create any Quadratic + Element specify the nodes which will form your triangle by selecting + them in the 3D viewer with pressed Shift button. Their numbers will appear + in the dialog box as Corner Nodes + (alternatively you can just input numbers in this field without selection).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. All edges and the object formed by them will be + displayed in the Object browser. When all edges are defined you will be + able to click OK or Apply + button to add the element to the mesh.

+ +

 

+ +

Reverse + button for Quadratic Edges switches the first and the last nodes. For all other elements it reverses the element. +

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/aspect_ratio_3d.htm b/doc/salome/gui/SMESH/aspect_ratio_3d.htm index 20573a1fd..bd1d7ddfc 100755 --- a/doc/salome/gui/SMESH/aspect_ratio_3d.htm +++ b/doc/salome/gui/SMESH/aspect_ratio_3d.htm @@ -1,163 +1,203 @@ - - - - - -Aspect ratio 3D - - - - - - - - - - - - -

Aspect ratio 3D

- -

- -

 

- -

This mesh quality criterion resembles to the Aspect ratio - criterion, however, it is applied to 3D mesh elements: tetrahedrons, - pentahedrons, hexahedrons, etc.  

- -

There are simple formulas to evaluate directly the value of quality - Qk for simplex in 3D. The formulas are :

- -
- -

• For tetrahedron :

- -

 

- -

 

- -

where :

- -

- -

To calculate Sk , it is needed to sum the area of each of the 3 faces - with the formula given with the triangle.

- -

 

- -

For the other types of element like pentahedron and hexahedron - the formula is the following :

- -

- -

Where Qi are the quality of all the possible simplex (of same dimension - as the element) that compose the element.

- -

For example, hexahedron is analysed via 6 tetrahedrons this way:

- -

- -

 

- -

For 3D elements with quadrangular faces, aspect ratio of such faces -is also analysed and the maximal one over 3D and 2D qualities is taken.

- -

 

- -

 

- -

See Also - a sample TUI Script of an Aspect - Ratio quality control operation.  

- -

 

- -

 

- -

 

- -

 

- - - - + + + + + +Aspect ratio 3D + + + + + + + + + + + + + +

Aspect ratio 3D

+ +

+ +

 

+ +

The Aspect Ratio 3D mesh quality criterion calculates + the same parameter as the Aspect ratio + criterion, but it is applied to 3D mesh elements: tetrahedrons, pentahedrons, + hexahedrons, etc.  

+ +

 

+ + + +

 

+ +

 

+ +

,

+ +

 

+ +

where SK is the sum of surfaces of the faces + of К and VK is the volume of К :

+ +

 

+ +

T

+ +

 

+ + + +

, where Qi represents the value of Qk for all possible simplexes (of the + same dimension as the element) that compose the element.

+ +

For example, a hexahedron is split in 6 tetrahedrons, the Aspect + ratio 3D is calculated for each of them, then the greatest Qk is considered to be the  Aspect ratio 3D + criterion for the whole  hexahedron.

+ +

+ +

 

+ +

To apply the Aspect Ratio 3D quality criterion to your mesh:

+ +

 

+ +

1. Display your mesh in the viewer.

+ +

 

+ +

2. Choose Controls + > Aspect Ratio 3D or click button of the toolbar. + Your mesh will be displayed in the viewer with its elements colored according + to the applied mesh quality control criterion:

+ +

 

+ +

See Also + a sample TUI Script of an Aspect + Ratio 3D quality control operation.  

+ +

 

+ +

 

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/borders_at_multi-connection.htm b/doc/salome/gui/SMESH/borders_at_multi-connection.htm index cba301b96..8ad86b523 100755 --- a/doc/salome/gui/SMESH/borders_at_multi-connection.htm +++ b/doc/salome/gui/SMESH/borders_at_multi-connection.htm @@ -1,115 +1,121 @@ - - - - - -Borders at multi-connection - - - - - - - - - - - - -

Borders at multi-connection

- -

This mesh quality control highlights borders of faces - consisting of edges belonging to several faces. The amount of faces is - specified by user.

- -

 

- -

- -

 

- -

In this picture the borders at multi-connection are displayed in white.

- -

 

- -

See Also - a sample TUI Script of a Borders - at Multi-Connection quality control operation.  

- -

 

- - - - + + + + + +Borders at multi-connection + + + + + + + + + + + + + +

Borders at multi-connection

+ +

This mesh quality control highlights borders of faces + consisting of edges belonging to several faces. The amount of faces is + specified by user.

+ +

 

+ +

+ +

 

+ +

In this picture the borders at multi-connection are displayed in blue.

+ +

 

+ +

See Also + a sample TUI Script of a Borders + at Multi-Connection quality control operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/borders_at_multiconnection_2d.htm b/doc/salome/gui/SMESH/borders_at_multiconnection_2d.htm index 9587602aa..2e9e180c0 100755 --- a/doc/salome/gui/SMESH/borders_at_multiconnection_2d.htm +++ b/doc/salome/gui/SMESH/borders_at_multiconnection_2d.htm @@ -1,110 +1,115 @@ - - - - - -Borders at multiconnection 2D - - - - - - - - - - - - -

Borders at multi-connection 2D

- -

This mesh quality control highlights borders of elements - of mesh, consisting of edges belonging to several elements of mesh.

- -

 

- -

        

- -

 

- -

See Also - a sample TUI Script of a Borders - at Multi-Connection quality control operation.  

- -

 

- - - - + + + + + +Borders at multiconnection 2D + + + + + + + + + + + + + +

Borders at multi-connection 2D

+ +

This mesh quality control highlights borders of elements + of mesh, consisting of edges belonging to several elements of mesh.

+ +

 

+ +

        

+ +

 

+ +

See Also + a sample TUI Script of a Borders + at Multi-Connection quality control operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/clipping.htm b/doc/salome/gui/SMESH/clipping.htm index 8652fd75f..dec479c99 100755 --- a/doc/salome/gui/SMESH/clipping.htm +++ b/doc/salome/gui/SMESH/clipping.htm @@ -1,133 +1,140 @@ - - - - - -Clipping - - - - - - - - - - - -

Clipping

- -

Using this menu you can create cross-section views (clipping planes) - of your mesh.

- -

 

- -

To start, click on the New button.

- -

 

- -

- -

 

- -

Now you can define the parameters of your cross-section: Orientation -  (X-Y, X-Z - or Y-Z); Distance between the - opposite extremities of the object, if - it is set to 0.5 the object is split in two halves; and Rotation - (in angle degrees) around X (Y to Z) - and around Y (X to Z). - If the Show preview button is - on, you can see the clipping plane in the Object - window.

- -

 

- -

- -

 

- -

If the - Auto Apply button is on, you can preview - the cross-section in the Object window

- -

 

- -

- -

 

- -

To get - a new object from Clipping, click - Ok.

- -

 

- -

 

- - - - + + + + + +Clipping + + + + + + + + + + + + +

Clipping

+ +

Using this menu you can create cross-section views (clipping planes) + of your mesh.

+ +

 

+ +

To start, click on the New button.

+ +

 

+ +

+ +

 

+ +

Now you can define the parameters of your cross-section: Orientation +  (X-Y, X-Z + or Y-Z); Distance between the + opposite extremities of the object, if + it is set to 0.5 the object is split in two halves; and Rotation + (in angle degrees) around X (Y to Z) + and around Y (X to Z). + If the Show preview button is + on, you can see the clipping plane in the Object + window.

+ +

 

+ +

+ +

 

+ +

If the + Auto Apply button is on, you can preview + the cross-section in the Object window

+ +

 

+ +

+ +

 

+ +

To get + a new object from Clipping, click + Ok.

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/constructing_meshes.htm b/doc/salome/gui/SMESH/constructing_meshes.htm index 78d8030db..90d82bffc 100755 --- a/doc/salome/gui/SMESH/constructing_meshes.htm +++ b/doc/salome/gui/SMESH/constructing_meshes.htm @@ -1,727 +1,732 @@ - - - - - -Constructing Meshes - - - - - - - - - - -

Creating Meshes

- -

Construction of a Mesh

- -

import salome

- -

import geompy

- -

import StdMeshers

- -

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", - "SMESH")

- -

smeshgui = salome.ImportComponentGUI("SMESH")

- -

smeshgui.Init(salome.myStudyId);

- -

 

- -

# create a box

- -

box = geompy.MakeBox(0., - 0., 0., 100., 200., 300.)

- -

 

- -

# add box to the study

- -

idbox = geompy.addToStudy(box, - "box")

- -

 

- -

# create a hypothesis

- -

print "-------------------------- - create Hypothesis"

- -

print "-------------------------- - NumberOfSegments"

- -

numberOfSegments - = 7

- -

hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", - "libStdMeshersEngine.so")

- -

hypNbSeg.SetNumberOfSegments(numberOfSegments)

- -

print hypNbSeg.GetName()

- -

print hypNbSeg.GetId()

- -

print hypNbSeg.GetNumberOfSegments()

- -

smeshgui.SetName(salome.ObjectToID(hypNbSeg), - "NumberOfSegments_10")

- -

print "-------------------------- - MaxElementArea"

- -

maxElementArea = - 800

- -

hypArea = smesh.CreateHypothesis("MaxElementArea", - "libStdMeshersEngine.so")

- -

hypArea.SetMaxElementArea(maxElementArea)

- -

print hypArea.GetName()

- -

print hypArea.GetId()

- -

print hypArea.GetMaxElementArea()

- -

smeshgui.SetName(salome.ObjectToID(hypArea), - "MaxElementArea_500")

- -

print "-------------------------- - MaxElementVolume"

- -

maxElementVolume - = 900

- -

hypVolume = smesh.CreateHypothesis("MaxElementVolume", - "libStdMeshersEngine.so")

- -

hypVolume.SetMaxElementVolume(maxElementVolume)

- -

print hypVolume.GetName()

- -

print hypVolume.GetId()

- -

print hypVolume.GetMaxElementVolume()

- -

smeshgui.SetName(salome.ObjectToID(hypVolume), - "MaxElementVolume_500")

- -

 

- -

# create algorithms

- -

print "-------------------------- - create Algorithms"

- -

print "-------------------------- - Regular_1D"

- -

regular1D = smesh.CreateHypothesis("Regular_1D", - "libStdMeshersEngine.so")

- -

smeshgui.SetName(salome.ObjectToID(regular1D), - "Wire Discretisation")

- -

print "-------------------------- - MEFISTO_2D"

- -

mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", - "libStdMeshersEngine.so")

- -

smeshgui.SetName(salome.ObjectToID(mefisto2D), - "MEFISTO_2D")

- -

 

- -

# initialize a mesh with - the box

- -

mesh = smesh.CreateMesh(box)

- -

smeshgui.SetName(salome.ObjectToID(mesh), - "MeshBox")

- -

 

- -

# add the hypothesis to - the box

- -

print "-------------------------- - add hypothesis to the box"

- -

mesh.AddHypothesis(box,hypNbSeg)

- -

mesh.AddHypothesis(box,hypArea)

- -

mesh.AddHypothesis(box,hypVolume)

- -

mesh.AddHypothesis(box,regular1D)

- -

mesh.AddHypothesis(box,mefisto2D)

- -

 

- -

# compute the mesh

- -

print "-------------------------- - compute the mesh of the box"

- -

ret = smesh.Compute(mesh,box)

- -

print ret

- -

if ret == 0:

- -

    print - "probleme when computing the mesh"

- -

salome.sg.updateObjBrowser(1)

- -

 

- -

Construction of a Submesh

- -

 

- -

from - geompy import *

- -

import smesh

- -

 

- -

# create vertices

- -

Point111 = MakeVertex( 0,  0, -  0)

- -

Point211 = MakeVertex(10,  0, -  0)

- -

Point121 = MakeVertex( 0, 10,  0)

- -

Point221 = MakeVertex(10, 10,  0)

- -

Point112 = MakeVertex( 0,  0, - 10)

- -

Point212 = MakeVertex(10,  0, - 10)

- -

Point122 = MakeVertex( 0, 10, 10)

- -

Point222 = MakeVertex(10, 10, 10)

- -

 

- -

# create edges

- -

EdgeX111 = MakeEdge(Point111, Point211)

- -

EdgeX121 = MakeEdge(Point121, Point221)

- -

EdgeX112 = MakeEdge(Point112, Point212)

- -

EdgeX122 = MakeEdge(Point122, Point222)

- -

EdgeY11 = MakeEdge(Point111, Point121)

- -

EdgeY21 = MakeEdge(Point211, Point221)

- -

EdgeY12 = MakeEdge(Point112, Point122)

- -

EdgeY22 = MakeEdge(Point212, Point222)

- -

EdgeZ111 = MakeEdge(Point111, Point112)

- -

EdgeZ211 = MakeEdge(Point211, Point212)

- -

EdgeZ121 = MakeEdge(Point121, Point122)

- -

EdgeZ221 = MakeEdge(Point221, Point222)

- -

 

- -

# create faces

- -

FaceX11 = MakeQuad(EdgeY11, EdgeZ111, - EdgeY12, EdgeZ121)

- -

FaceX21 = MakeQuad(EdgeY21, EdgeZ211, - EdgeY22, EdgeZ221)

- -

FaceY111 = MakeQuad(EdgeX111, EdgeZ111, - EdgeX112, EdgeZ211)

- -

FaceY121 = MakeQuad(EdgeX121, EdgeZ121, - EdgeX122, EdgeZ221)

- -

FaceZ11 = MakeQuad(EdgeX111, EdgeY11, - EdgeX121, EdgeY21)

- -

FaceZ12 = MakeQuad(EdgeX112, EdgeY12, - EdgeX122, EdgeY22)

- -

 

- -

# create a solid

- -

Block = MakeHexa(FaceX11, FaceX21, FaceY111, - FaceY121, FaceZ11, FaceZ12)

- -

 

- -

# create a compound

- -

box = MakeCompound([Block])

- -

 

- -

# add in the study

- -

box_id = addToStudy(box, "Box compound")

- -

 

- -

# create hexahedral mesh - on the box

- -

hexa = smesh.Mesh(box, "Box compound - : hexahedrical mesh")

- -

algo = hexa.Segment()

- -

 

- -

# define "NumberOfSegments" - hypothesis to cut the edge in a fixed number of segments

- -

algo.NumberOfSegments(4)

- -

 

- -

# creates a quadrangle - 2D algorithm for the faces

- -

hexa.Quadrangle()

- -

 

- -

# construct a submesh with - a local hypothesis

- -

algo = hexa.Segment(EdgeX111)

- -

 

- -

# define "Arithmetic1D" - hypothesis to cut an edge in several segments with increasing arithmetic - length

- -

algo.Arithmetic1D(1, 4)

- -

 

- -

# define "Propagation" - hypothesis that propagates all other hypothesis on all edges on the opposite - side in case of quadrangular faces

- -

algo.Propagation()

- -

 

- -

# compute the mesh

- -

hexa.Compute() )

- -

 

- -

Editing of a mesh

- -

 

- -

import - salome

- -

import geompy

- -

import SMESH

- -

import StdMeshers

- -

 

- -

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", - "SMESH")

- -

smesh.SetCurrentStudy(salome.myStudy)

- -

 

- -

box   = - geompy.MakeBox(0., 0., 0., 20., 20., 20.)

- -

idbox = geompy.addToStudy(box, "box")

- -

 

- -

subShapeList = geompy.SubShapeAll(box, - geompy.ShapeType["EDGE"])

- -

edge   = - subShapeList[0]

- -

name   = - geompy.SubShapeName(edge, box)

- -

idedge = geompy.addToStudyInFather(box, - edge, name)

- -

 

- -

box  = - salome.IDToObject(idbox)

- -

edge = salome.IDToObject(idedge)

- -

 

- -

hyp1 = smesh.CreateHypothesis("NumberOfSegments", - "libStdMeshersEngine.so")

- -

hyp1.SetNumberOfSegments(3)

- -

hyp2 = smesh.CreateHypothesis("MaxElementArea", - "libStdMeshersEngine.so")

- -

hyp2.SetMaxElementArea(10)

- -

hyp3 = smesh.CreateHypothesis("Arithmetic1D", - "libStdMeshersEngine.so")

- -

hyp3.SetLength(1,1)

- -

hyp3.SetLength(6,0)

- -

hyp4 = smesh.CreateHypothesis("Propagation", - "libStdMeshersEngine.so")

- -

 

- -

algo1 = smesh.CreateHypothesis("Regular_1D", - "libStdMeshersEngine.so")

- -

algo2 = smesh.CreateHypothesis("MEFISTO_2D", - "libStdMeshersEngine.so")

- -

 

- -

mesh = smesh.CreateMesh(box)

- -

mesh.AddHypothesis(box,hyp1)

- -

mesh.AddHypothesis(box,hyp2)

- -

mesh.AddHypothesis(box,algo1)

- -

mesh.AddHypothesis(box,algo2)

- -

mesh.AddHypothesis(edge,hyp3)

- -

mesh.AddHypothesis(edge,hyp4)

- -

mesh.AddHypothesis(edge,algo1)

- -

 

- -

smesh.Compute(mesh,box)

- -

salome.sg.updateObjBrowser(1)

- -

 

- -

# remove a hypothesis

- -

mesh.RemoveHypothesis(edge,hyp4)

- -

 

- -

smesh.Compute(mesh,box)

- -

salome.sg.updateObjBrowser(1)

- -

 

- -

# change the value - of the hypothesis

- -

hyp2.SetMaxElementArea(2)

- -

mesh.AddHypothesis(box,hyp2)

- -

 

- -

smesh.Compute(mesh,box)

- -

salome.sg.updateObjBrowser(1)

- -

 

- -

Export of a Mesh

- -

 

- -

import - salome

- -

import geompy

- -

import StdMeshers

- -

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", - "SMESH")

- -

smeshgui = salome.ImportComponentGUI("SMESH")

- -

smeshgui.Init(salome.myStudyId);

- -

 

- -

# create a box

- -

box = geompy.MakeBox(0., - 0., 0., 100., 200., 300.)

- -

 

- -

# add the box to the study

- -

idbox = geompy.addToStudy(box, - "box")

- -

 

- -

# create a hypothesis

- -

print "-------------------------- - create Hypothesis"

- -

print "-------------------------- - NumberOfSegments"

- -

numberOfSegments - = 7

- -

hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", - "libStdMeshersEngine.so")

- -

hypNbSeg.SetNumberOfSegments(numberOfSegments)

- -

print hypNbSeg.GetName()

- -

print hypNbSeg.GetId()

- -

print hypNbSeg.GetNumberOfSegments()

- -

smeshgui.SetName(salome.ObjectToID(hypNbSeg), - "NumberOfSegments_10")

- -

print "-------------------------- - MaxElementArea"

- -

maxElementArea = - 800

- -

hypArea = smesh.CreateHypothesis("MaxElementArea", - "libStdMeshersEngine.so")

- -

hypArea.SetMaxElementArea(maxElementArea)

- -

print hypArea.GetName()

- -

print hypArea.GetId()

- -

print hypArea.GetMaxElementArea()

- -

smeshgui.SetName(salome.ObjectToID(hypArea), - "MaxElementArea_500")

- -

print "-------------------------- - MaxElementVolume"

- -

maxElementVolume - = 900

- -

hypVolume = smesh.CreateHypothesis("MaxElementVolume", - "libStdMeshersEngine.so")

- -

hypVolume.SetMaxElementVolume(maxElementVolume)

- -

print hypVolume.GetName()

- -

print hypVolume.GetId()

- -

print hypVolume.GetMaxElementVolume()

- -

smeshgui.SetName(salome.ObjectToID(hypVolume), - "MaxElementVolume_500")

- -

 

- -

# create algorithms

- -

print "-------------------------- - create Algorithms"

- -

print "-------------------------- - Regular_1D"

- -

regular1D = smesh.CreateHypothesis("Regular_1D", - "libStdMeshersEngine.so")

- -

smeshgui.SetName(salome.ObjectToID(regular1D), - "Wire Discretisation")

- -

print "-------------------------- - MEFISTO_2D"

- -

mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", - "libStdMeshersEngine.so")

- -

smeshgui.SetName(salome.ObjectToID(mefisto2D), - "MEFISTO_2D")

- -

 

- -

# initialize a mesh with - the box

- -

mesh = smesh.CreateMesh(box)

- -

smeshgui.SetName(salome.ObjectToID(mesh), - "MeshBox")

- -

 

- -

# add the hypothesis to - the box

- -

print "-------------------------- - add hypothesis to the box"

- -

mesh.AddHypothesis(box,hypNbSeg)

- -

mesh.AddHypothesis(box,hypArea)

- -

mesh.AddHypothesis(box,hypVolume)

- -

mesh.AddHypothesis(box,regular1D)

- -

mesh.AddHypothesis(box,mefisto2D)

- -

 

- -

# compute the mesh

- -

print "-------------------------- - compute the mesh of the box"

- -

ret = smesh.Compute(mesh,box)

- -

print ret

- -

if ret == 0:

- -

    print - "probleme when computing the mesh"

- -

salome.sg.updateObjBrowser(1)

- -

mesh.ExportMED("/tmp/meshMED.med",0)

- -

 

- -

 

- - - - + + + + + +Constructing Meshes + + + + + + + + + + + +

Creating Meshes

+ +

Construction of a Mesh

+ +

import salome

+ +

import geompy

+ +

import StdMeshers

+ +

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", + "SMESH")

+ +

smeshgui = salome.ImportComponentGUI("SMESH")

+ +

smeshgui.Init(salome.myStudyId);

+ +

 

+ +

# create a box

+ +

box = geompy.MakeBox(0., + 0., 0., 100., 200., 300.)

+ +

 

+ +

# add box to the study

+ +

idbox = geompy.addToStudy(box, + "box")

+ +

 

+ +

# create a hypothesis

+ +

print "-------------------------- + create Hypothesis"

+ +

print "-------------------------- + NumberOfSegments"

+ +

numberOfSegments + = 7

+ +

hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", + "libStdMeshersEngine.so")

+ +

hypNbSeg.SetNumberOfSegments(numberOfSegments)

+ +

print hypNbSeg.GetName()

+ +

print hypNbSeg.GetId()

+ +

print hypNbSeg.GetNumberOfSegments()

+ +

smeshgui.SetName(salome.ObjectToID(hypNbSeg), + "NumberOfSegments_10")

+ +

print "-------------------------- + MaxElementArea"

+ +

maxElementArea = + 800

+ +

hypArea = smesh.CreateHypothesis("MaxElementArea", + "libStdMeshersEngine.so")

+ +

hypArea.SetMaxElementArea(maxElementArea)

+ +

print hypArea.GetName()

+ +

print hypArea.GetId()

+ +

print hypArea.GetMaxElementArea()

+ +

smeshgui.SetName(salome.ObjectToID(hypArea), + "MaxElementArea_500")

+ +

print "-------------------------- + MaxElementVolume"

+ +

maxElementVolume + = 900

+ +

hypVolume = smesh.CreateHypothesis("MaxElementVolume", + "libStdMeshersEngine.so")

+ +

hypVolume.SetMaxElementVolume(maxElementVolume)

+ +

print hypVolume.GetName()

+ +

print hypVolume.GetId()

+ +

print hypVolume.GetMaxElementVolume()

+ +

smeshgui.SetName(salome.ObjectToID(hypVolume), + "MaxElementVolume_500")

+ +

 

+ +

# create algorithms

+ +

print "-------------------------- + create Algorithms"

+ +

print "-------------------------- + Regular_1D"

+ +

regular1D = smesh.CreateHypothesis("Regular_1D", + "libStdMeshersEngine.so")

+ +

smeshgui.SetName(salome.ObjectToID(regular1D), + "Wire Discretisation")

+ +

print "-------------------------- + MEFISTO_2D"

+ +

mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", + "libStdMeshersEngine.so")

+ +

smeshgui.SetName(salome.ObjectToID(mefisto2D), + "MEFISTO_2D")

+ +

 

+ +

# initialize a mesh with + the box

+ +

mesh = smesh.CreateMesh(box)

+ +

smeshgui.SetName(salome.ObjectToID(mesh), + "MeshBox")

+ +

 

+ +

# add the hypothesis to + the box

+ +

print "-------------------------- + add hypothesis to the box"

+ +

mesh.AddHypothesis(box,hypNbSeg)

+ +

mesh.AddHypothesis(box,hypArea)

+ +

mesh.AddHypothesis(box,hypVolume)

+ +

mesh.AddHypothesis(box,regular1D)

+ +

mesh.AddHypothesis(box,mefisto2D)

+ +

 

+ +

# compute the mesh

+ +

print "-------------------------- + compute the mesh of the box"

+ +

ret = smesh.Compute(mesh,box)

+ +

print ret

+ +

if ret == 0:

+ +

    print + "probleme when computing the mesh"

+ +

salome.sg.updateObjBrowser(1)

+ +

 

+ +

Construction of a Submesh

+ +

 

+ +

from + geompy import *

+ +

import smesh

+ +

 

+ +

# create vertices

+ +

Point111 = MakeVertex( 0,  0, +  0)

+ +

Point211 = MakeVertex(10,  0, +  0)

+ +

Point121 = MakeVertex( 0, 10,  0)

+ +

Point221 = MakeVertex(10, 10,  0)

+ +

Point112 = MakeVertex( 0,  0, + 10)

+ +

Point212 = MakeVertex(10,  0, + 10)

+ +

Point122 = MakeVertex( 0, 10, 10)

+ +

Point222 = MakeVertex(10, 10, 10)

+ +

 

+ +

# create edges

+ +

EdgeX111 = MakeEdge(Point111, Point211)

+ +

EdgeX121 = MakeEdge(Point121, Point221)

+ +

EdgeX112 = MakeEdge(Point112, Point212)

+ +

EdgeX122 = MakeEdge(Point122, Point222)

+ +

EdgeY11 = MakeEdge(Point111, Point121)

+ +

EdgeY21 = MakeEdge(Point211, Point221)

+ +

EdgeY12 = MakeEdge(Point112, Point122)

+ +

EdgeY22 = MakeEdge(Point212, Point222)

+ +

EdgeZ111 = MakeEdge(Point111, Point112)

+ +

EdgeZ211 = MakeEdge(Point211, Point212)

+ +

EdgeZ121 = MakeEdge(Point121, Point122)

+ +

EdgeZ221 = MakeEdge(Point221, Point222)

+ +

 

+ +

# create faces

+ +

FaceX11 = MakeQuad(EdgeY11, EdgeZ111, + EdgeY12, EdgeZ121)

+ +

FaceX21 = MakeQuad(EdgeY21, EdgeZ211, + EdgeY22, EdgeZ221)

+ +

FaceY111 = MakeQuad(EdgeX111, EdgeZ111, + EdgeX112, EdgeZ211)

+ +

FaceY121 = MakeQuad(EdgeX121, EdgeZ121, + EdgeX122, EdgeZ221)

+ +

FaceZ11 = MakeQuad(EdgeX111, EdgeY11, + EdgeX121, EdgeY21)

+ +

FaceZ12 = MakeQuad(EdgeX112, EdgeY12, + EdgeX122, EdgeY22)

+ +

 

+ +

# create a solid

+ +

Block = MakeHexa(FaceX11, FaceX21, FaceY111, + FaceY121, FaceZ11, FaceZ12)

+ +

 

+ +

# create a compound

+ +

box = MakeCompound([Block])

+ +

 

+ +

# add in the study

+ +

box_id = addToStudy(box, "Box compound")

+ +

 

+ +

# create hexahedral mesh + on the box

+ +

hexa = smesh.Mesh(box, "Box compound + : hexahedrical mesh")

+ +

algo = hexa.Segment()

+ +

 

+ +

# define "NumberOfSegments" + hypothesis to cut the edge in a fixed number of segments

+ +

algo.NumberOfSegments(4)

+ +

 

+ +

# creates a quadrangle + 2D algorithm for the faces

+ +

hexa.Quadrangle()

+ +

 

+ +

# construct a submesh with + a local hypothesis

+ +

algo = hexa.Segment(EdgeX111)

+ +

 

+ +

# define "Arithmetic1D" + hypothesis to cut an edge in several segments with increasing arithmetic + length

+ +

algo.Arithmetic1D(1, 4)

+ +

 

+ +

# define "Propagation" + hypothesis that propagates all other hypothesis on all edges on the opposite + side in case of quadrangular faces

+ +

algo.Propagation()

+ +

 

+ +

# compute the mesh

+ +

hexa.Compute()

+ +

 

+ +

Editing of a mesh

+ +

 

+ +

import + salome

+ +

import geompy

+ +

import SMESH

+ +

import StdMeshers

+ +

 

+ +

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", + "SMESH")

+ +

smesh.SetCurrentStudy(salome.myStudy)

+ +

 

+ +

box   = + geompy.MakeBox(0., 0., 0., 20., 20., 20.)

+ +

idbox = geompy.addToStudy(box, "box")

+ +

 

+ +

subShapeList = geompy.SubShapeAll(box, + geompy.ShapeType["EDGE"])

+ +

edge   = + subShapeList[0]

+ +

name   = + geompy.SubShapeName(edge, box)

+ +

idedge = geompy.addToStudyInFather(box, + edge, name)

+ +

 

+ +

box  = + salome.IDToObject(idbox)

+ +

edge = salome.IDToObject(idedge)

+ +

 

+ +

hyp1 = smesh.CreateHypothesis("NumberOfSegments", + "libStdMeshersEngine.so")

+ +

hyp1.SetNumberOfSegments(3)

+ +

hyp2 = smesh.CreateHypothesis("MaxElementArea", + "libStdMeshersEngine.so")

+ +

hyp2.SetMaxElementArea(10)

+ +

hyp3 = smesh.CreateHypothesis("Arithmetic1D", + "libStdMeshersEngine.so")

+ +

hyp3.SetLength(1,1)

+ +

hyp3.SetLength(6,0)

+ +

hyp4 = smesh.CreateHypothesis("Propagation", + "libStdMeshersEngine.so")

+ +

 

+ +

algo1 = smesh.CreateHypothesis("Regular_1D", + "libStdMeshersEngine.so")

+ +

algo2 = smesh.CreateHypothesis("MEFISTO_2D", + "libStdMeshersEngine.so")

+ +

 

+ +

mesh = smesh.CreateMesh(box)

+ +

mesh.AddHypothesis(box,hyp1)

+ +

mesh.AddHypothesis(box,hyp2)

+ +

mesh.AddHypothesis(box,algo1)

+ +

mesh.AddHypothesis(box,algo2)

+ +

mesh.AddHypothesis(edge,hyp3)

+ +

mesh.AddHypothesis(edge,hyp4)

+ +

mesh.AddHypothesis(edge,algo1)

+ +

 

+ +

smesh.Compute(mesh,box)

+ +

salome.sg.updateObjBrowser(1)

+ +

 

+ +

# remove a hypothesis

+ +

mesh.RemoveHypothesis(edge,hyp4)

+ +

 

+ +

smesh.Compute(mesh,box)

+ +

salome.sg.updateObjBrowser(1)

+ +

 

+ +

# change the value + of the hypothesis

+ +

hyp2.SetMaxElementArea(2)

+ +

mesh.AddHypothesis(box,hyp2)

+ +

 

+ +

smesh.Compute(mesh,box)

+ +

salome.sg.updateObjBrowser(1)

+ +

 

+ +

Export of a Mesh

+ +

 

+ +

import + salome

+ +

import geompy

+ +

import StdMeshers

+ +

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", + "SMESH")

+ +

smeshgui = salome.ImportComponentGUI("SMESH")

+ +

smeshgui.Init(salome.myStudyId);

+ +

 

+ +

# create a box

+ +

box = geompy.MakeBox(0., + 0., 0., 100., 200., 300.)

+ +

 

+ +

# add the box to the study

+ +

idbox = geompy.addToStudy(box, + "box")

+ +

 

+ +

# create a hypothesis

+ +

print "-------------------------- + create Hypothesis"

+ +

print "-------------------------- + NumberOfSegments"

+ +

numberOfSegments + = 7

+ +

hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", + "libStdMeshersEngine.so")

+ +

hypNbSeg.SetNumberOfSegments(numberOfSegments)

+ +

print hypNbSeg.GetName()

+ +

print hypNbSeg.GetId()

+ +

print hypNbSeg.GetNumberOfSegments()

+ +

smeshgui.SetName(salome.ObjectToID(hypNbSeg), + "NumberOfSegments_10")

+ +

print "-------------------------- + MaxElementArea"

+ +

maxElementArea = + 800

+ +

hypArea = smesh.CreateHypothesis("MaxElementArea", + "libStdMeshersEngine.so")

+ +

hypArea.SetMaxElementArea(maxElementArea)

+ +

print hypArea.GetName()

+ +

print hypArea.GetId()

+ +

print hypArea.GetMaxElementArea()

+ +

smeshgui.SetName(salome.ObjectToID(hypArea), + "MaxElementArea_500")

+ +

print "-------------------------- + MaxElementVolume"

+ +

maxElementVolume + = 900

+ +

hypVolume = smesh.CreateHypothesis("MaxElementVolume", + "libStdMeshersEngine.so")

+ +

hypVolume.SetMaxElementVolume(maxElementVolume)

+ +

print hypVolume.GetName()

+ +

print hypVolume.GetId()

+ +

print hypVolume.GetMaxElementVolume()

+ +

smeshgui.SetName(salome.ObjectToID(hypVolume), + "MaxElementVolume_500")

+ +

 

+ +

# create algorithms

+ +

print "-------------------------- + create Algorithms"

+ +

print "-------------------------- + Regular_1D"

+ +

regular1D = smesh.CreateHypothesis("Regular_1D", + "libStdMeshersEngine.so")

+ +

smeshgui.SetName(salome.ObjectToID(regular1D), + "Wire Discretisation")

+ +

print "-------------------------- + MEFISTO_2D"

+ +

mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", + "libStdMeshersEngine.so")

+ +

smeshgui.SetName(salome.ObjectToID(mefisto2D), + "MEFISTO_2D")

+ +

 

+ +

# initialize a mesh with + the box

+ +

mesh = smesh.CreateMesh(box)

+ +

smeshgui.SetName(salome.ObjectToID(mesh), + "MeshBox")

+ +

 

+ +

# add the hypothesis to + the box

+ +

print "-------------------------- + add hypothesis to the box"

+ +

mesh.AddHypothesis(box,hypNbSeg)

+ +

mesh.AddHypothesis(box,hypArea)

+ +

mesh.AddHypothesis(box,hypVolume)

+ +

mesh.AddHypothesis(box,regular1D)

+ +

mesh.AddHypothesis(box,mefisto2D)

+ +

 

+ +

# compute the mesh

+ +

print "-------------------------- + compute the mesh of the box"

+ +

ret = smesh.Compute(mesh,box)

+ +

print ret

+ +

if ret == 0:

+ +

    print + "probleme when computing the mesh"

+ +

salome.sg.updateObjBrowser(1)

+ +

mesh.ExportMED("/tmp/meshMED.med",0)

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/cshdat_robohelp.htm b/doc/salome/gui/SMESH/cshdat_robohelp.htm index 2e1891e53..4a4ee57e1 100755 --- a/doc/salome/gui/SMESH/cshdat_robohelp.htm +++ b/doc/salome/gui/SMESH/cshdat_robohelp.htm @@ -1,258 +1,258 @@ - - -SMESH reference manual - - - - - - - - - - - - - - - - - + + +Mesh Module Reference Manual + + + + + + + + + + + + + + + + + diff --git a/doc/salome/gui/SMESH/cshdat_webhelp.htm b/doc/salome/gui/SMESH/cshdat_webhelp.htm index 2fefa3ad4..db3b49a38 100755 --- a/doc/salome/gui/SMESH/cshdat_webhelp.htm +++ b/doc/salome/gui/SMESH/cshdat_webhelp.htm @@ -1,251 +1,251 @@ - - -SMESH reference manual - - - - - - - - - - - - - - - - - + + +Mesh Module Reference Manual + + + + + + + + + + + + + + + + + diff --git a/doc/salome/gui/SMESH/default.css b/doc/salome/gui/SMESH/default.css index de2e5d955..1f8d6d772 100755 --- a/doc/salome/gui/SMESH/default.css +++ b/doc/salome/gui/SMESH/default.css @@ -1,101 +1,101 @@ -BODY { - background-color:#ffffff; - font-family:"Times New Roman" , serif; } -H1 { - font-weight:bold; - font-size:24.0pt; } -LI.kadov-H1 { - font-weight:bold; - font-size:24.0pt; } -H2 { - font-weight:bold; - font-size:18.0pt; } -LI.kadov-H2 { - font-weight:bold; - font-size:18.0pt; } -H3 { - font-weight:bold; - font-size:14.0pt; } -LI.kadov-H3 { - font-weight:bold; - font-size:14.0pt; } -H4 { - font-weight:bold; - font-size:12.0pt; } -LI.kadov-H4 { - font-weight:bold; - font-size:12.0pt; } -H5 { - font-weight:bold; - font-size:10.0pt; } -LI.kadov-H5 { - font-weight:bold; - font-size:10.0pt; } -H6 { - font-weight:bold; - font-size:8.0pt; } -LI.kadov-H6 { - font-weight:bold; - font-size:8.0pt; } -P { - font-size:12.0pt; - margin-top:0pt; - margin-bottom:0pt; } -LI.kadov-P { - font-size:12.0pt; } -A.expandspot { - color:#008000; - cursor:hand; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -SPAN.expandtext { - font-style:italic; - font-weight:normal; - color:#ff0000; } -A.dropspot { - cursor:hand; - color:#008000; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -A.glossterm { - color:#800000; - cursor:hand; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -SPAN.glosstext { - font-style:italic; - font-weight:normal; - color:#0000ff; } -OL { - margin-top:0px; - margin-bottom:0px; } -UL { - margin-top:0px; - margin-bottom:0px; } -A:active { } -A:hover { - x-text-underline:Off; - text-decoration:none; } -A:link { - x-text-underline:Off; - text-decoration:none; } -A:visited { - x-text-underline:Off; - text-decoration:none; } -P.TODO { - font-weight:normal; - font-style:italic; - font-family:"Arial Black" , sans-serif; } -LI.kadov-P-CTODO { - font-weight:normal; - font-style:italic; - font-family:"Arial Black" , sans-serif; } +BODY { + background-color:#ffffff; + font-family:"Times New Roman" , serif; } +H1 { + font-weight:bold; + font-size:24.0pt; } +LI.kadov-H1 { + font-weight:bold; + font-size:24.0pt; } +H2 { + font-weight:bold; + font-size:18.0pt; } +LI.kadov-H2 { + font-weight:bold; + font-size:18.0pt; } +H3 { + font-weight:bold; + font-size:14.0pt; } +LI.kadov-H3 { + font-weight:bold; + font-size:14.0pt; } +H4 { + font-weight:bold; + font-size:12.0pt; } +LI.kadov-H4 { + font-weight:bold; + font-size:12.0pt; } +H5 { + font-weight:bold; + font-size:10.0pt; } +LI.kadov-H5 { + font-weight:bold; + font-size:10.0pt; } +H6 { + font-weight:bold; + font-size:8.0pt; } +LI.kadov-H6 { + font-weight:bold; + font-size:8.0pt; } +P { + font-size:12.0pt; + margin-top:0pt; + margin-bottom:0pt; } +LI.kadov-P { + font-size:12.0pt; } +A.expandspot { + color:#008000; + cursor:hand; + font-style:italic; + x-text-underline:off; + x-text-overline:off; + x-text-line-through:off; + text-decoration:none none none; } +SPAN.expandtext { + font-style:italic; + font-weight:normal; + color:#ff0000; } +A.dropspot { + cursor:hand; + color:#008000; + font-style:italic; + x-text-underline:off; + x-text-overline:off; + x-text-line-through:off; + text-decoration:none none none; } +A.glossterm { + color:#800000; + cursor:hand; + font-style:italic; + x-text-underline:off; + x-text-overline:off; + x-text-line-through:off; + text-decoration:none none none; } +SPAN.glosstext { + font-style:italic; + font-weight:normal; + color:#0000ff; } +OL { + margin-top:0px; + margin-bottom:0px; } +UL { + margin-top:0px; + margin-bottom:0px; } +A:active { } +A:hover { + x-text-underline:Off; + text-decoration:none; } +A:link { + x-text-underline:Off; + text-decoration:none; } +A:visited { + x-text-underline:Off; + text-decoration:none; } +P.TODO { + font-weight:normal; + font-style:italic; + font-family:"Arial Black" , sans-serif; } +LI.kadov-P-CTODO { + font-weight:normal; + font-style:italic; + font-family:"Arial Black" , sans-serif; } diff --git a/doc/salome/gui/SMESH/default_ns.css b/doc/salome/gui/SMESH/default_ns.css index 3eeb3c496..46e8b0018 100755 --- a/doc/salome/gui/SMESH/default_ns.css +++ b/doc/salome/gui/SMESH/default_ns.css @@ -1,118 +1,118 @@ -BODY { - background-color:#ffffff; - font-family:"Times New Roman" , serif; } -H1 { - font-weight:bold; - font-size:24.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H1 { - font-weight:bold; - font-size:24.0pt; } -H2 { - font-weight:bold; - font-size:18.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H2 { - font-weight:bold; - font-size:18.0pt; } -H3 { - font-weight:bold; - font-size:14.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H3 { - font-weight:bold; - font-size:14.0pt; } -H4 { - font-weight:bold; - font-size:12.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H4 { - font-weight:bold; - font-size:12.0pt; } -H5 { - font-weight:bold; - font-size:10.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H5 { - font-weight:bold; - font-size:10.0pt; } -H6 { - font-weight:bold; - font-size:8.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H6 { - font-weight:bold; - font-size:8.0pt; } -P { - font-size:12.0pt; - margin-top:1pt; - margin-bottom:1pt; - font-family:"Times New Roman" , serif; } -LI.kadov-P { - font-size:12.0pt; } -A.expandspot { - color:#008000; - cursor:hand; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -SPAN.expandtext { - font-style:italic; - font-weight:normal; - color:#ff0000; } -A.dropspot { - cursor:hand; - color:#008000; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -A.glossterm { - color:#800000; - cursor:hand; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -SPAN.glosstext { - font-style:italic; - font-weight:normal; - color:#0000ff; } -OL { - margin-top:0px; - margin-bottom:0px; - font-family:"Times New Roman" , serif; } -UL { - margin-top:0px; - margin-bottom:0px; - font-family:"Times New Roman" , serif; } -A:active { } -A:hover { - x-text-underline:Off; - text-decoration:none; } -A:link { - x-text-underline:Off; - text-decoration:none; } -A:visited { - x-text-underline:Off; - text-decoration:none; } -P.TODO { - font-weight:normal; - font-style:italic; - font-family:"Arial Black" , sans-serif; } -LI.kadov-P-CTODO { - font-weight:normal; - font-style:italic; - font-family:"Arial Black" , sans-serif; } -ol ol { - margin-top:1px; } -ol ul { - margin-top:1px; } -ul ul { - margin-top:1px; } -ul ol { - margin-top:1px; } +BODY { + background-color:#ffffff; + font-family:"Times New Roman" , serif; } +H1 { + font-weight:bold; + font-size:24.0pt; + font-family:"Times New Roman" , serif; } +LI.kadov-H1 { + font-weight:bold; + font-size:24.0pt; } +H2 { + font-weight:bold; + font-size:18.0pt; + font-family:"Times New Roman" , serif; } +LI.kadov-H2 { + font-weight:bold; + font-size:18.0pt; } +H3 { + font-weight:bold; + font-size:14.0pt; + font-family:"Times New Roman" , serif; } +LI.kadov-H3 { + font-weight:bold; + font-size:14.0pt; } +H4 { + font-weight:bold; + font-size:12.0pt; + font-family:"Times New Roman" , serif; } +LI.kadov-H4 { + font-weight:bold; + font-size:12.0pt; } +H5 { + font-weight:bold; + font-size:10.0pt; + font-family:"Times New Roman" , serif; } +LI.kadov-H5 { + font-weight:bold; + font-size:10.0pt; } +H6 { + font-weight:bold; + font-size:8.0pt; + font-family:"Times New Roman" , serif; } +LI.kadov-H6 { + font-weight:bold; + font-size:8.0pt; } +P { + font-size:12.0pt; + margin-top:1pt; + margin-bottom:1pt; + font-family:"Times New Roman" , serif; } +LI.kadov-P { + font-size:12.0pt; } +A.expandspot { + color:#008000; + cursor:hand; + font-style:italic; + x-text-underline:off; + x-text-overline:off; + x-text-line-through:off; + text-decoration:none none none; } +SPAN.expandtext { + font-style:italic; + font-weight:normal; + color:#ff0000; } +A.dropspot { + cursor:hand; + color:#008000; + font-style:italic; + x-text-underline:off; + x-text-overline:off; + x-text-line-through:off; + text-decoration:none none none; } +A.glossterm { + color:#800000; + cursor:hand; + font-style:italic; + x-text-underline:off; + x-text-overline:off; + x-text-line-through:off; + text-decoration:none none none; } +SPAN.glosstext { + font-style:italic; + font-weight:normal; + color:#0000ff; } +OL { + margin-top:0px; + margin-bottom:0px; + font-family:"Times New Roman" , serif; } +UL { + margin-top:0px; + margin-bottom:0px; + font-family:"Times New Roman" , serif; } +A:active { } +A:hover { + x-text-underline:Off; + text-decoration:none; } +A:link { + x-text-underline:Off; + text-decoration:none; } +A:visited { + x-text-underline:Off; + text-decoration:none; } +P.TODO { + font-weight:normal; + font-style:italic; + font-family:"Arial Black" , sans-serif; } +LI.kadov-P-CTODO { + font-weight:normal; + font-style:italic; + font-family:"Arial Black" , sans-serif; } +ol ol { + margin-top:1px; } +ol ul { + margin-top:1px; } +ul ul { + margin-top:1px; } +ul ol { + margin-top:1px; } diff --git a/doc/salome/gui/SMESH/defining_hypotheses_tui.htm b/doc/salome/gui/SMESH/defining_hypotheses_tui.htm index 581805053..7f8e0df5a 100755 --- a/doc/salome/gui/SMESH/defining_hypotheses_tui.htm +++ b/doc/salome/gui/SMESH/defining_hypotheses_tui.htm @@ -1,1488 +1,1384 @@ - - - - - -Defining hypotheses TUI - - - - - - - - - - -

Defining Hypotheses and Algorithms

- -

Defining 1D Hypotheses

- -

1D Arithmetic

- -

 

- -

from geompy import - *

- -

import smesh

- -

 

- -

# create vertices

- -

Point111 = MakeVertex( - 0,  0,  0)

- -

Point211 = MakeVertex(10, -  0,  0)

- -

Point121 = MakeVertex( - 0, 10,  0)

- -

Point221 = MakeVertex(10, - 10,  0)

- -

Point112 = MakeVertex( - 0,  0, 10)

- -

Point212 = MakeVertex(10, -  0, 10)

- -

Point122 = MakeVertex( - 0, 10, 10)

- -

Point222 = MakeVertex(10, - 10, 10)

- -

 

- -

# create edges

- -

EdgeX111 = MakeEdge(Point111, - Point211)

- -

EdgeX121 = MakeEdge(Point121, - Point221)

- -

EdgeX112 = MakeEdge(Point112, - Point212)

- -

EdgeX122 = MakeEdge(Point122, - Point222)

- -

EdgeY11 = MakeEdge(Point111, - Point121)

- -

EdgeY21 = MakeEdge(Point211, - Point221)

- -

EdgeY12 = MakeEdge(Point112, - Point122)

- -

EdgeY22 = MakeEdge(Point212, - Point222)

- -

EdgeZ111 = MakeEdge(Point111, - Point112)

- -

EdgeZ211 = MakeEdge(Point211, - Point212)

- -

EdgeZ121 = MakeEdge(Point121, - Point122)

- -

EdgeZ221 = MakeEdge(Point221, - Point222)

- -

 

- -

# create faces

- -

FaceX11 = MakeQuad(EdgeY11, - EdgeZ111, EdgeY12, EdgeZ121)

- -

FaceX21 = MakeQuad(EdgeY21, - EdgeZ211, EdgeY22, EdgeZ221)

- -

FaceY111 = MakeQuad(EdgeX111, - EdgeZ111, EdgeX112, EdgeZ211)

- -

FaceY121 = MakeQuad(EdgeX121, - EdgeZ121, EdgeX122, EdgeZ221)

- -

FaceZ11 = MakeQuad(EdgeX111, - EdgeY11, EdgeX121, EdgeY21)

- -

FaceZ12 = MakeQuad(EdgeX112, - EdgeY12, EdgeX122, EdgeY22)

- -

 

- -

# create a solid

- -

Block = MakeHexa(FaceX11, - FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)

- -

 

- -

# create a compound

- -

box = MakeCompound([Block])

- -

 

- -

# add in the study

- -

box_id = addToStudy(box, - "Box compound")

- -

 

- -

# create a hexahedral mesh on the box

- -

hexa = smesh.Mesh(box, - "Box compound : hexahedrical mesh")

- -

algo = hexa.Segment()

- -

 

- -

# define "NumberOfSegments" hypothesis to cut an edge in a - fixed number of segments

- -

algo.NumberOfSegments(4)

- -

 

- -

# create a quadrangle 2D algorithm for faces

- -

hexa.Quadrangle()

- -

 

- -

# create a hexahedron 3D algorithm for solids

- -

hexa.Hexahedron()

- -

 

- -

# create a local hypothesis

- -

algo = hexa.Segment(EdgeX111)

- -

 

- -

# define "Arithmetic1D" hypothesis to cut an edge in several - segments with arithmetic length increasing

- -

algo.Arithmetic1D(1, - 4)

- -

 

- -

# define "Propagation" hypothesis that propagates all other - hypothesis on all edges on the opposite side in case of quadrangular faces

- -

algo.Propagation()

- -

 

- -

# compute the mesh

- -

hexa.Compute()

- -

 

- -

Deflection 1D and Number of Segments

- -

 

- -

import smesh

- -

import geompy

- -

import salome

- -

gg = salome.ImportComponentGUI("GEOM")

- -

 

- -

# create vertices

- -

px   = - geompy.MakeVertex(100., 0.  , - 0.  )

- -

py   = - geompy.MakeVertex(0.  , - 100., 0.  )

- -

pz   = - geompy.MakeVertex(0.  , - 0.  , 100.)

- -

 

- -

# create a vector from - two points

- -

vxy = geompy.MakeVector(px, - py)

- -

 

- -

# create an arc from - three points

- -

arc = geompy.MakeArc(py, - pz, px)

- -

 

- -

# create a wire

- -

wire = geompy.MakeWire([vxy, - arc])

- -

isPlanarFace = 1

- -

 

- -

# create a face from - the wire

- -

face1 = geompy.MakeFace(wire, - isPlanarFace)

- -

 

- -

# add objects in the - study

- -

id_face1 = geompy.addToStudy(face1,"Face1")

- -

 

- -

# display faces

- -

gg.createAndDisplayGO(id_face1)

- -

gg.setDisplayMode(id_face1,1)

- -

gg.setTransparency(id_face1,0.2)

- -

 

- -

# create hexahedral mesh

- -

hexa = smesh.Mesh(face1, - "Face compound : hexahedrical mesh")

- -

algo = hexa.Triangle()

- -

 

- -

# define "MaxElementArea" - hypothesis to be applied  to - each triangle

- -

algo.MaxElementArea(30)

- -

 

- -

# create a quadrangle - 2D algorithm for faces

- -

hexa.Quadrangle()

- -

 

- -

# create a local hypothesis

- -

algo = hexa.Segment(wire)

- -

 

- -

# define "NumberOfSegments" - hypothesis to cut an edge in a fixed number of segments

- -

algo.NumberOfSegments(6)

- -

 

- -

# define "Deflection1D" - hypothesis

- -

algo.Deflection1D(1)

- -

 

- -

# compute the mesh

- -

hexa.Compute()

- -

 

- -

Start and End Length

- -

from geompy import - *

- -

import smesh

- -

 

- -

# create vertices

- -

Point111 = MakeVertex( - 0,  0,  0)

- -

Point211 = MakeVertex(10, -  0,  0)

- -

Point121 = MakeVertex( - 0, 10,  0)

- -

Point221 = MakeVertex(10, - 10,  0)

- -

Point112 = MakeVertex( - 0,  0, 10)

- -

Point212 = MakeVertex(10, -  0, 10)

- -

Point122 = MakeVertex( - 0, 10, 10)

- -

Point222 = MakeVertex(10, - 10, 10)

- -

 

- -

# create edges

- -

EdgeX111 = MakeEdge(Point111, - Point211)

- -

EdgeX121 = MakeEdge(Point121, - Point221)

- -

EdgeX112 = MakeEdge(Point112, - Point212)

- -

EdgeX122 = MakeEdge(Point122, - Point222)

- -

EdgeY11 = MakeEdge(Point111, - Point121)

- -

EdgeY21 = MakeEdge(Point211, - Point221)

- -

EdgeY12 = MakeEdge(Point112, - Point122)

- -

EdgeY22 = MakeEdge(Point212, - Point222)

- -

EdgeZ111 = MakeEdge(Point111, - Point112)

- -

EdgeZ211 = MakeEdge(Point211, - Point212)

- -

EdgeZ121 = MakeEdge(Point121, - Point122)

- -

EdgeZ221 = MakeEdge(Point221, - Point222)

- -

 

- -

# create faces

- -

FaceX11 = MakeQuad(EdgeY11, - EdgeZ111, EdgeY12, EdgeZ121)

- -

FaceX21 = MakeQuad(EdgeY21, - EdgeZ211, EdgeY22, EdgeZ221)

- -

FaceY111 = MakeQuad(EdgeX111, - EdgeZ111, EdgeX112, EdgeZ211)

- -

FaceY121 = MakeQuad(EdgeX121, - EdgeZ121, EdgeX122, EdgeZ221)

- -

FaceZ11 = MakeQuad(EdgeX111, - EdgeY11, EdgeX121, EdgeY21)

- -

FaceZ12 = MakeQuad(EdgeX112, - EdgeY12, EdgeX122, EdgeY22)

- -

 

- -

# create a solid

- -

Block = MakeHexa(FaceX11, - FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)

- -

 

- -

# create a compound

- -

box = MakeCompound([Block])

- -

 

- -

# add in the study

- -

box_id = addToStudy(box, - "Box compound")

- -

 

- -

# create a hexahedral mesh on the box

- -

hexa = smesh.Mesh(box, - "Box compound : hexahedrical mesh")

- -

algo = hexa.Segment()

- -

 

- -

# define "NumberOfSegments" hypothesis to cut an edge in a - fixed number of segments

- -

algo.NumberOfSegments(4)

- -

 

- -

# create a quadrangle 2D algorithm for faces

- -

hexa.Quadrangle()

- -

 

- -

# create a hexahedron 3D algorithm for solids

- -

hexa.Hexahedron()

- -

 

- -

# create a local hypothesis

- -

algo = hexa.Segment(EdgeX111)

- -

 

- -

# define "StartEndLength" hypothesis to cut an edge in several - segments with increasing geometric length

- -

algo.StartEndLength(1, - 6)

- -

 

- -

# define "Propagation" hypothesis that propagates all other - hypothesis on all edges on the opposite side in case of quadrangular faces

- -

algo.Propagation()

- -

 

- -

# compute the mesh

- -

hexa.Compute()

- -

 

- -

Average Length

- -

from geompy import - *

- -

import smesh

- -

 

- -

# create vertices

- -

Point111 = MakeVertex( - 0,  0,  0)

- -

Point211 = MakeVertex(10, -  0,  0)

- -

Point121 = MakeVertex( - 0, 10,  0)

- -

Point221 = MakeVertex(10, - 10,  0)

- -

Point112 = MakeVertex( - 0,  0, 10)

- -

Point212 = MakeVertex(10, -  0, 10)

- -

Point122 = MakeVertex( - 0, 10, 10)

- -

Point222 = MakeVertex(10, - 10, 10)

- -

 

- -

# create edges

- -

EdgeX111 = MakeEdge(Point111, - Point211)

- -

EdgeX121 = MakeEdge(Point121, - Point221)

- -

EdgeX112 = MakeEdge(Point112, - Point212)

- -

EdgeX122 = MakeEdge(Point122, - Point222)

- -

EdgeY11 = MakeEdge(Point111, - Point121)

- -

EdgeY21 = MakeEdge(Point211, - Point221)

- -

EdgeY12 = MakeEdge(Point112, - Point122)

- -

EdgeY22 = MakeEdge(Point212, - Point222)

- -

EdgeZ111 = MakeEdge(Point111, - Point112)

- -

EdgeZ211 = MakeEdge(Point211, - Point212)

- -

EdgeZ121 = MakeEdge(Point121, - Point122)

- -

EdgeZ221 = MakeEdge(Point221, - Point222)

- -

 

- -

# create faces

- -

FaceX11 = MakeQuad(EdgeY11, - EdgeZ111, EdgeY12, EdgeZ121)

- -

FaceX21 = MakeQuad(EdgeY21, - EdgeZ211, EdgeY22, EdgeZ221)

- -

FaceY111 = MakeQuad(EdgeX111, - EdgeZ111, EdgeX112, EdgeZ211)

- -

FaceY121 = MakeQuad(EdgeX121, - EdgeZ121, EdgeX122, EdgeZ221)

- -

FaceZ11 = MakeQuad(EdgeX111, - EdgeY11, EdgeX121, EdgeY21)

- -

FaceZ12 = MakeQuad(EdgeX112, - EdgeY12, EdgeX122, EdgeY22)

- -

 

- -

# create a solid

- -

Block = MakeHexa(FaceX11, - FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)

- -

 

- -

# create a compound

- -

box = MakeCompound([Block])

- -

 

- -

# add in the study

- -

box_id = addToStudy(box, - "Box compound")

- -

 

- -

# create a hexahedral - mesh on the box

- -

hexa = smesh.Mesh(box, - "Box compound : hexahedrical mesh")

- -

algo = hexa.Segment()

- -

 

- -

# define "NumberOfSegments" - hypothesis to cut an edge in a fixed number of segments

- -

algo.NumberOfSegments(4)

- -

 

- -

# create a quadrangle - 2D algorithm for faces

- -

hexa.Quadrangle()

- -

 

- -

# create a hexahedron - 3D algorithm for solids

- -

hexa.Hexahedron()

- -

 

- -

# create a local hypothesis

- -

algo = hexa.Segment(EdgeX111)

- -

 

- -

# define "LocalLength" - hypothesis to cut an edge in several segments with the same length

- -

algo.LocalLength(2)

- -

 

- -

# define "Propagation" - hypothesis that propagates all other hypothesis on all edges on - the opposite side in case of quadrangular faces

- -

algo.Propagation()

- -

 

- -

# compute the mesh

- -

hexa.Compute()

- -

 

- -

 

- -

Defining 2D and 3D hypotheses

- -

Maximum Element Area

- -

import smesh

- -

import geompy

- -

import salome

- -

gg = salome.ImportComponentGUI("GEOM")

- -

 

- -

# create vertices

- -

px   = - geompy.MakeVertex(100., 0.  , - 0.  )

- -

py   = - geompy.MakeVertex(0.  , - 100., 0.  )

- -

pz   = - geompy.MakeVertex(0.  , - 0.  , 100.)

- -

 

- -

# create a vector from - two points

- -

vxy = geompy.MakeVector(px, - py)

- -

 

- -

# create an arc from three - points

- -

arc = geompy.MakeArc(py, - pz, px)

- -

 

- -

# create a wire

- -

wire = geompy.MakeWire([vxy, - arc])

- -

isPlanarFace = 1

- -

 

- -

# create a face from the - wire

- -

face1 = geompy.MakeFace(wire, - isPlanarFace)

- -

 

- -

# add objects in the study

- -

id_face1 = geompy.addToStudy(face1,"Face1")

- -

 

- -

# display faces

- -

gg.createAndDisplayGO(id_face1)

- -

gg.setDisplayMode(id_face1,1)

- -

gg.setTransparency(id_face1,0.2)

- -

 

- -

# create a hexahedral mesh

- -

hexa = smesh.Mesh(face1, - "Face compound : hexahedrical mesh")

- -

algo = hexa.Triangle()

- -

 

- -

# define "MaxElementArea" - hypothesis to be applied to each triangle

- -

algo.MaxElementArea(7)

- -

 

- -

# create a quadrangle 2D - algorithm for faces

- -

hexa.Quadrangle()

- -

 

- -

# create a local hypothesis

- -

algo = hexa.Segment(wire)

- -

 

- -

# define "NumberOfSegments" - hypothesis to cut an edge in a fixed number of segments

- -

algo.NumberOfSegments(10)

- -

 

- -

# compute the mesh

- -

hexa.Compute()

- -

 

- -

Maximum Element Volume

- -

import - salome

- -

import geompy

- -

import StdMeshers

- -

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", - "SMESH")

- -

smeshgui = salome.ImportComponentGUI("SMESH")

- -

smeshgui.Init(salome.myStudyId);

- -

 

- -

# create a box

- -

box = geompy.MakeCylinderRH(30, - 50) #MakeBox(0., 0., 0., 100., 200., 300.)

- -

 

- -

# add the box to the - study

- -

idbox = geompy.addToStudy(box, - "box")

- -

 

- -

# create vertices

- -

px   = - geompy.MakeVertex(100., 0.  , - 0.  )

- -

py   = - geompy.MakeVertex(0.  , - 100., 0.  )

- -

pz   = - geompy.MakeVertex(0.  , - 0.  , 100.)

- -

 

- -

# create a vector from - two points

- -

vxy = geompy.MakeVector(px, - py)

- -

 

- -

# create an arc from - three points

- -

arc = geompy.MakeArc(py, - pz, px)

- -

 

- -

# create a wire

- -

wire = geompy.MakeWire([vxy, - arc])

- -

isPlanarFace = 1

- -

 

- -

# create a face from - the wire

- -

#face1

- -

box = geompy.MakeFace(wire, - isPlanarFace)

- -

 

- -

# add objects in the - study

- -

id_face1 = geompy.addToStudy(box,"Face1")

- -

#geompy.addToStudy(face1,"Face1")

- -

 

- -

# display faces

- -

gg.createAndDisplayGO(id_face1)

- -

gg.setDisplayMode(id_face1,1)

- -

gg.setTransparency(id_face1,0.2)

- -

 

- -

# create a hypothesis

- -

print "-------------------------- - create Hypothesis"

- -

print "-------------------------- - NumberOfSegments"

- -

numberOfSegments - = 7

- -

hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", - "libStdMeshersEngine.so")

- -

hypNbSeg.SetNumberOfSegments(numberOfSegments)

- -

print hypNbSeg.GetName()

- -

print hypNbSeg.GetId()

- -

print hypNbSeg.GetNumberOfSegments()

- -

smeshgui.SetName(salome.ObjectToID(hypNbSeg), - "NumberOfSegments_10")

- -

print "-------------------------- - MaxElementArea"

- -

maxElementArea = - 800

- -

hypArea = smesh.CreateHypothesis("MaxElementArea", - "libStdMeshersEngine.so")

- -

hypArea.SetMaxElementArea(maxElementArea)

- -

print hypArea.GetName()

- -

print hypArea.GetId()

- -

print hypArea.GetMaxElementArea()

- -

smeshgui.SetName(salome.ObjectToID(hypArea), - "MaxElementArea_800")

- -

print "-------------------------- - MaxElementVolume"

- -

maxElementVolume - = 900

- -

hypVolume = smesh.CreateHypothesis("MaxElementVolume", - "libStdMeshersEngine.so")

- -

hypVolume.SetMaxElementVolume(maxElementVolume)

- -

print hypVolume.GetName()

- -

print hypVolume.GetId()

- -

print hypVolume.GetMaxElementVolume()

- -

smeshgui.SetName(salome.ObjectToID(hypVolume), - "MaxElementVolume_900")

- -

 

- -

# create algorithms

- -

print "-------------------------- - create Algorithms"

- -

print "-------------------------- - Regular_1D"

- -

regular1D = smesh.CreateHypothesis("Regular_1D", - "libStdMeshersEngine.so")

- -

smeshgui.SetName(salome.ObjectToID(regular1D), - "Wire Discretisation")

- -

print "-------------------------- - MEFISTO_2D"

- -

mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", - "libStdMeshersEngine.so")

- -

smeshgui.SetName(salome.ObjectToID(mefisto2D), - "MEFISTO_2D")

- -

#print "-------------------------- - Hexa_3D (Hexahedron meshing algorithm)"

- -

hexa3D = smesh.CreateHypothesis("Hexa_3D", - "libStdMeshersEngine.so")

- -

smeshgui.SetName(salome.ObjectToID(hexa3D), - "HEXA_3D")

- -

 

- -

# initialize a mesh - with the box

- -

mesh = smesh.CreateMesh(box)

- -

smeshgui.SetName(salome.ObjectToID(mesh), - "MeshBox")

- -

 

- -

# add a hypothesis - to the box

- -

print "-------------------------- - add hypothesis to the box"

- -

mesh.AddHypothesis(box,hypNbSeg)

- -

mesh.AddHypothesis(box,hypArea)

- -

mesh.AddHypothesis(box,hypVolume)

- -

mesh.AddHypothesis(box,regular1D)

- -

mesh.AddHypothesis(box,mefisto2D)

- -

mesh.AddHypothesis(box,hexa3D)

- -

 

- -

# compute the mesh

- -

print "-------------------------- - compute the mesh of the box"

- -

ret = smesh.Compute(mesh,box)

- -

print ret

- -

if ret == 0:

- -

    print - "probleme when computing the mesh"

- -

salome.sg.updateObjBrowser(1)

- -

 

- -

Defining Additional Hypotheses

- -

Length from Edges

- -

import smesh

- -

import geompy

- -

import salome

- -

gg = salome.ImportComponentGUI("GEOM")

- -

 

- -

# 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")

- -

isPlanarFace = 1

- -

 

- -

# create faces from two wires

- -

face1 = geompy.MakeFaces([sketcher1, - sketcher2],isPlanarFace)

- -

 

- -

# add objects in the study

- -

id_face1 = geompy.addToStudy(face1,"Face1")

- -

 

- -

# display faces

- -

gg.createAndDisplayGO(id_face1)

- -

gg.setDisplayMode(id_face1,1)

- -

gg.setTransparency(id_face1,0.2)

- -

 

- -

# create a mesh

- -

hexa = smesh.Mesh(face1, - "Face : triangle 2D mesh")

- -

algo = hexa.Triangle()

- -

 

- -

# define "MaxElementArea" hypothesis to be applied to each - triangle

- -

algo.MaxElementArea(30)

- -

 

- -

# define "LengthFromEdges" hypothesis to build triangles based - on the length of the edges taken from the wire

- -

algo.LengthFromEdges()

- -

 

- -

# create local hypothesis

- -

algo = hexa.Segment()

- -

 

- -

# define "NumberOfSegments" hypothesis to cut an edge in a - fixed number of segments

- -

algo.NumberOfSegments(2)

- -

 

- -

# compute the mesh

- -

hexa.Compute()

- -

 

- -

Propagation

- -

from geompy import - *

- -

import smesh

- -

 

- -

# create vertices

- -

Point111 = MakeVertex( - 0,  0,  0)

- -

Point211 = MakeVertex(10, -  0,  0)

- -

Point121 = MakeVertex( - 0, 10,  0)

- -

Point221 = MakeVertex(10, - 10,  0)

- -

Point112 = MakeVertex( - 0,  0, 10)

- -

Point212 = MakeVertex(10, -  0, 10)

- -

Point122 = MakeVertex( - 0, 10, 10)

- -

Point222 = MakeVertex(10, - 10, 10)

- -

 

- -

# create edges

- -

EdgeX111 = MakeEdge(Point111, - Point211)

- -

EdgeX121 = MakeEdge(Point121, - Point221)

- -

EdgeX112 = MakeEdge(Point112, - Point212)

- -

EdgeX122 = MakeEdge(Point122, - Point222)

- -

EdgeY11 = MakeEdge(Point111, - Point121)

- -

EdgeY21 = MakeEdge(Point211, - Point221)

- -

EdgeY12 = MakeEdge(Point112, - Point122)

- -

EdgeY22 = MakeEdge(Point212, - Point222)

- -

EdgeZ111 = MakeEdge(Point111, - Point112)

- -

EdgeZ211 = MakeEdge(Point211, - Point212)

- -

EdgeZ121 = MakeEdge(Point121, - Point122)

- -

EdgeZ221 = MakeEdge(Point221, - Point222)

- -

 

- -

# create faces

- -

FaceX11 = MakeQuad(EdgeY11, - EdgeZ111, EdgeY12, EdgeZ121)

- -

FaceX21 = MakeQuad(EdgeY21, - EdgeZ211, EdgeY22, EdgeZ221)

- -

FaceY111 = MakeQuad(EdgeX111, - EdgeZ111, EdgeX112, EdgeZ211)

- -

FaceY121 = MakeQuad(EdgeX121, - EdgeZ121, EdgeX122, EdgeZ221)

- -

FaceZ11 = MakeQuad(EdgeX111, - EdgeY11, EdgeX121, EdgeY21)

- -

FaceZ12 = MakeQuad(EdgeX112, - EdgeY12, EdgeX122, EdgeY22)

- -

 

- -

# create a solid

- -

Block = MakeHexa(FaceX11, - FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)

- -

 

- -

# create a compound

- -

box = MakeCompound([Block])

- -

 

- -

# add in the study

- -

box_id = addToStudy(box, - "Box compound")

- -

 

- -

# create a hexahedral - mesh on the box

- -

hexa = smesh.Mesh(box, - "Box compound : hexahedrical mesh")

- -

algo = hexa.Segment()

- -

 

- -

# define "NumberOfSegments" - hypothesis to cut an edge in a fixed number of segments

- -

algo.NumberOfSegments(4)

- -

 

- -

# create a quadrangle - 2D algorithm for faces

- -

hexa.Quadrangle()

- -

 

- -

# create a hexahedron - 3D algorithm for solids

- -

hexa.Hexahedron()

- -

 

- -

# create a local hypothesis

- -

algo = hexa.Segment(EdgeX111)

- -

 

- -

# - define "Arithmetic1D" hypothesis to cut an edge in several segments - with arithmetic length

- -

increasing

- -

algo.Arithmetic1D(1, - 4)

- -

 

- -

# define "Propagation" - hypothesis that propagatea all other hypothesis on all edges on the opposite - side in case of quadrangular faces

- -

algo.Propagation()

- -

 

- -

# compute the mesh

- -

hexa.Compute()

- -

 

- -

Defining Meshing Algorithms

- -

import - salome

- -

import StdMeshers

- -

import NETGENPlugin

- -

 

- -

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", - "SMESH")

- -

smeshgui = salome.ImportComponentGUI("SMESH")

- -

smeshgui.Init(salome.myStudyId);

- -

 

- -

# create algorithms

- -

print "-------------------------- - create Algorithms"

- -

print "-------------------------- - Regular_1D (Wire discretisation)"

- -

regular1D = smesh.CreateHypothesis("Regular_1D", - "libStdMeshersEngine.so")

- -

smeshgui.SetName(salome.ObjectToID(regular1D), - "Wire Discretisation")

- -

 

- -

print "-------------------------- - MEFISTO_2D (Triangle meshing algorithm)"

- -

mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", - "libStdMeshersEngine.so")

- -

smeshgui.SetName(salome.ObjectToID(mefisto2D), - "MEFISTO_2D")

- -

 

- -

print "-------------------------- - Quadrangle_2D (Quadrangle meshing algorithm)"

- -

quad2D = smesh.CreateHypothesis( - "Quadrangle_2D", "libStdMeshersEngine.so" )

- -

smeshgui.SetName(salome.ObjectToID(quad2D), - "Quadrangle_2D")

- -

 

- -

print "-------------------------- - Hexa_3D (Hexahedron meshing algorithm)"

- -

hexa3D = smesh.CreateHypothesis("Hexa_3D", - "libStdMeshersEngine.so")

- -

smeshgui.SetName(salome.ObjectToID(hexa3D), - "HEXA_3D")

- -

 

- -

print "-------------------------- - NETGEN_3D (Tetrahedron meshing algorithm)"

- -

netgen3D = smesh.CreateHypothesis("NETGEN_3D", - "libNETGENEngine.so")

- -

smeshgui.SetName(salome.ObjectToID(netgen3D), - "NETGEN_3D")

- -

salome.sg.updateObjBrowser(1)

- -

 

- - - - + + + + + +Defining hypotheses TUI + + + + + + + + + + + +

Defining Hypotheses and Algorithms

+ +

Defining 1D Hypotheses

+ +

1D Arithmetic

+ +

 

+ +

from geompy import + *

+ +

import smesh

+ +

 

+ +

# create vertices

+ +

Point111 = MakeVertex( + 0,  0,  0)

+ +

Point211 = MakeVertex(10, +  0,  0)

+ +

Point121 = MakeVertex( + 0, 10,  0)

+ +

Point221 = MakeVertex(10, + 10,  0)

+ +

Point112 = MakeVertex( + 0,  0, 10)

+ +

Point212 = MakeVertex(10, +  0, 10)

+ +

Point122 = MakeVertex( + 0, 10, 10)

+ +

Point222 = MakeVertex(10, + 10, 10)

+ +

 

+ +

# create edges

+ +

EdgeX111 = MakeEdge(Point111, + Point211)

+ +

EdgeX121 = MakeEdge(Point121, + Point221)

+ +

EdgeX112 = MakeEdge(Point112, + Point212)

+ +

EdgeX122 = MakeEdge(Point122, + Point222)

+ +

EdgeY11 = MakeEdge(Point111, + Point121)

+ +

EdgeY21 = MakeEdge(Point211, + Point221)

+ +

EdgeY12 = MakeEdge(Point112, + Point122)

+ +

EdgeY22 = MakeEdge(Point212, + Point222)

+ +

EdgeZ111 = MakeEdge(Point111, + Point112)

+ +

EdgeZ211 = MakeEdge(Point211, + Point212)

+ +

EdgeZ121 = MakeEdge(Point121, + Point122)

+ +

EdgeZ221 = MakeEdge(Point221, + Point222)

+ +

 

+ +

# create faces

+ +

FaceX11 = MakeQuad(EdgeY11, + EdgeZ111, EdgeY12, EdgeZ121)

+ +

FaceX21 = MakeQuad(EdgeY21, + EdgeZ211, EdgeY22, EdgeZ221)

+ +

FaceY111 = MakeQuad(EdgeX111, + EdgeZ111, EdgeX112, EdgeZ211)

+ +

FaceY121 = MakeQuad(EdgeX121, + EdgeZ121, EdgeX122, EdgeZ221)

+ +

FaceZ11 = MakeQuad(EdgeX111, + EdgeY11, EdgeX121, EdgeY21)

+ +

FaceZ12 = MakeQuad(EdgeX112, + EdgeY12, EdgeX122, EdgeY22)

+ +

 

+ +

# create a solid

+ +

Block = MakeHexa(FaceX11, + FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)

+ +

 

+ +

# create a compound

+ +

box = MakeCompound([Block])

+ +

 

+ +

# add in the study

+ +

box_id = addToStudy(box, + "Box compound")

+ +

 

+ +

# create a hexahedral mesh on the box

+ +

hexa = smesh.Mesh(box, + "Box compound : hexahedrical mesh")

+ +

algo = hexa.Segment()

+ +

 

+ +

# define "NumberOfSegments" hypothesis to cut an edge in a + fixed number of segments

+ +

algo.NumberOfSegments(4)

+ +

 

+ +

# create a quadrangle 2D algorithm for faces

+ +

hexa.Quadrangle()

+ +

 

+ +

# create a hexahedron 3D algorithm for solids

+ +

hexa.Hexahedron()

+ +

 

+ +

# create a local hypothesis

+ +

algo = hexa.Segment(EdgeX111)

+ +

 

+ +

# define "Arithmetic1D" hypothesis to cut an edge in several + segments with arithmetic length increasing

+ +

algo.Arithmetic1D(1, + 4)

+ +

 

+ +

# define "Propagation" hypothesis that propagates all other + hypothesis on all edges on the opposite side in case of quadrangular faces

+ +

algo.Propagation()

+ +

 

+ +

# compute the mesh

+ +

hexa.Compute()

+ +

 

+ +

Deflection 1D and Number of Segments

+ +

 

+ +

import smesh

+ +

import geompy

+ +

import salome

+ +

gg = salome.ImportComponentGUI("GEOM")

+ +

 

+ +

# create vertices

+ +

px   = + geompy.MakeVertex(100., 0.  , + 0.  )

+ +

py   = + geompy.MakeVertex(0.  , + 100., 0.  )

+ +

pz   = + geompy.MakeVertex(0.  , + 0.  , 100.)

+ +

 

+ +

# create a vector from + two points

+ +

vxy = geompy.MakeVector(px, + py)

+ +

 

+ +

# create an arc from + three points

+ +

arc = geompy.MakeArc(py, + pz, px)

+ +

 

+ +

# create a wire

+ +

wire = geompy.MakeWire([vxy, + arc])

+ +

isPlanarFace = 1

+ +

 

+ +

# create a face from + the wire

+ +

face1 = geompy.MakeFace(wire, + isPlanarFace)

+ +

 

+ +

# + get edges from the face

+ +

vxy,arc = geompy.SubShapeAll(face1,geompy.ShapeType["EDGE"])

+ +

 

+ +

# add objects in the + study

+ +

id_face1 = geompy.addToStudy(face1,"Face1")

+ +

id_arc = geompy.addToStudyInFather(face1,arc,"Arc + Edge")

+ +

 

+ +

# display faces

+ +

gg.createAndDisplayGO(id_face1)

+ +

gg.setDisplayMode(id_face1,1)

+ +

gg.setTransparency(id_face1,0.2)

+ +

 

+ +

# create hexahedral mesh

+ +

hexa = smesh.Mesh(face1, + "Face compound : hexahedrical mesh")

+ +

algo = hexa.Triangle()

+ +

 

+ +

# define "MaxElementArea" + hypothesis

+ +

algo.MaxElementArea(30)

+ +

 

+ +

# create a local hypothesis + on the wire

+ +

algo = hexa.Segment(wire)

+ +

 

+ +

# define "NumberOfSegments" + hypothesis to cut a straight edge in a fixed number of segments

+ +

algo.NumberOfSegments(6)

+ +

 

+ +

# define a local "Deflection1D" + hypothesis on the arc

+ +

algo = hexa.Segment(arc)

+ +

algo.Deflection1D(1)

+ +

 

+ +

 

+ +

# compute the mesh

+ +

hexa.Compute()

+ +

 

+ +

Start and End Length

+ +

from geompy import + *

+ +

import smesh

+ +

 

+ +

# create vertices

+ +

Point111 = MakeVertex( + 0,  0,  0)

+ +

Point211 = MakeVertex(10, +  0,  0)

+ +

Point121 = MakeVertex( + 0, 10,  0)

+ +

Point221 = MakeVertex(10, + 10,  0)

+ +

Point112 = MakeVertex( + 0,  0, 10)

+ +

Point212 = MakeVertex(10, +  0, 10)

+ +

Point122 = MakeVertex( + 0, 10, 10)

+ +

Point222 = MakeVertex(10, + 10, 10)

+ +

 

+ +

# create edges

+ +

EdgeX111 = MakeEdge(Point111, + Point211)

+ +

EdgeX121 = MakeEdge(Point121, + Point221)

+ +

EdgeX112 = MakeEdge(Point112, + Point212)

+ +

EdgeX122 = MakeEdge(Point122, + Point222)

+ +

EdgeY11 = MakeEdge(Point111, + Point121)

+ +

EdgeY21 = MakeEdge(Point211, + Point221)

+ +

EdgeY12 = MakeEdge(Point112, + Point122)

+ +

EdgeY22 = MakeEdge(Point212, + Point222)

+ +

EdgeZ111 = MakeEdge(Point111, + Point112)

+ +

EdgeZ211 = MakeEdge(Point211, + Point212)

+ +

EdgeZ121 = MakeEdge(Point121, + Point122)

+ +

EdgeZ221 = MakeEdge(Point221, + Point222)

+ +

 

+ +

# create faces

+ +

FaceX11 = MakeQuad(EdgeY11, + EdgeZ111, EdgeY12, EdgeZ121)

+ +

FaceX21 = MakeQuad(EdgeY21, + EdgeZ211, EdgeY22, EdgeZ221)

+ +

FaceY111 = MakeQuad(EdgeX111, + EdgeZ111, EdgeX112, EdgeZ211)

+ +

FaceY121 = MakeQuad(EdgeX121, + EdgeZ121, EdgeX122, EdgeZ221)

+ +

FaceZ11 = MakeQuad(EdgeX111, + EdgeY11, EdgeX121, EdgeY21)

+ +

FaceZ12 = MakeQuad(EdgeX112, + EdgeY12, EdgeX122, EdgeY22)

+ +

 

+ +

# create a solid

+ +

Block = MakeHexa(FaceX11, + FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)

+ +

 

+ +

# create a compound

+ +

box = MakeCompound([Block])

+ +

 

+ +

# add in the study

+ +

box_id = addToStudy(box, + "Box compound")

+ +

 

+ +

# create a hexahedral mesh on the box

+ +

hexa = smesh.Mesh(box, + "Box compound : hexahedrical mesh")

+ +

algo = hexa.Segment()

+ +

 

+ +

# define "NumberOfSegments" hypothesis to cut an edge in a + fixed number of segments

+ +

algo.NumberOfSegments(4)

+ +

 

+ +

# create a quadrangle 2D algorithm for faces

+ +

hexa.Quadrangle()

+ +

 

+ +

# create a hexahedron 3D algorithm for solids

+ +

hexa.Hexahedron()

+ +

 

+ +

# create a local hypothesis

+ +

algo = hexa.Segment(EdgeX111)

+ +

 

+ +

# define "StartEndLength" hypothesis to cut an edge in several + segments with increasing geometric length

+ +

algo.StartEndLength(1, + 6)

+ +

 

+ +

# define "Propagation" hypothesis that propagates all other + hypothesis on all edges on the opposite side in case of quadrangular faces

+ +

algo.Propagation()

+ +

 

+ +

# compute the mesh

+ +

hexa.Compute()

+ +

 

+ +

Average Length

+ +

from geompy import + *

+ +

import smesh

+ +

 

+ +

# create vertices

+ +

Point111 = MakeVertex( + 0,  0,  0)

+ +

Point211 = MakeVertex(10, +  0,  0)

+ +

Point121 = MakeVertex( + 0, 10,  0)

+ +

Point221 = MakeVertex(10, + 10,  0)

+ +

Point112 = MakeVertex( + 0,  0, 10)

+ +

Point212 = MakeVertex(10, +  0, 10)

+ +

Point122 = MakeVertex( + 0, 10, 10)

+ +

Point222 = MakeVertex(10, + 10, 10)

+ +

 

+ +

# create edges

+ +

EdgeX111 = MakeEdge(Point111, + Point211)

+ +

EdgeX121 = MakeEdge(Point121, + Point221)

+ +

EdgeX112 = MakeEdge(Point112, + Point212)

+ +

EdgeX122 = MakeEdge(Point122, + Point222)

+ +

EdgeY11 = MakeEdge(Point111, + Point121)

+ +

EdgeY21 = MakeEdge(Point211, + Point221)

+ +

EdgeY12 = MakeEdge(Point112, + Point122)

+ +

EdgeY22 = MakeEdge(Point212, + Point222)

+ +

EdgeZ111 = MakeEdge(Point111, + Point112)

+ +

EdgeZ211 = MakeEdge(Point211, + Point212)

+ +

EdgeZ121 = MakeEdge(Point121, + Point122)

+ +

EdgeZ221 = MakeEdge(Point221, + Point222)

+ +

 

+ +

# create faces

+ +

FaceX11 = MakeQuad(EdgeY11, + EdgeZ111, EdgeY12, EdgeZ121)

+ +

FaceX21 = MakeQuad(EdgeY21, + EdgeZ211, EdgeY22, EdgeZ221)

+ +

FaceY111 = MakeQuad(EdgeX111, + EdgeZ111, EdgeX112, EdgeZ211)

+ +

FaceY121 = MakeQuad(EdgeX121, + EdgeZ121, EdgeX122, EdgeZ221)

+ +

FaceZ11 = MakeQuad(EdgeX111, + EdgeY11, EdgeX121, EdgeY21)

+ +

FaceZ12 = MakeQuad(EdgeX112, + EdgeY12, EdgeX122, EdgeY22)

+ +

 

+ +

# create a solid

+ +

Block = MakeHexa(FaceX11, + FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)

+ +

 

+ +

# create a compound

+ +

box = MakeCompound([Block])

+ +

 

+ +

# add in the study

+ +

box_id = addToStudy(box, + "Box compound")

+ +

 

+ +

# create a hexahedral + mesh on the box

+ +

hexa = smesh.Mesh(box, + "Box compound : hexahedrical mesh")

+ +

algo = hexa.Segment()

+ +

 

+ +

# define "NumberOfSegments" + hypothesis to cut an edge in a fixed number of segments

+ +

algo.NumberOfSegments(4)

+ +

 

+ +

# create a quadrangle + 2D algorithm for faces

+ +

hexa.Quadrangle()

+ +

 

+ +

# create a hexahedron + 3D algorithm for solids

+ +

hexa.Hexahedron()

+ +

 

+ +

# create a local hypothesis

+ +

algo = hexa.Segment(EdgeX111)

+ +

 

+ +

# define "LocalLength" + hypothesis to cut an edge in several segments with the same length

+ +

algo.LocalLength(2)

+ +

 

+ +

# define "Propagation" + hypothesis that propagates all other hypothesis on all edges on + the opposite side in case of quadrangular faces

+ +

algo.Propagation()

+ +

 

+ +

# compute the mesh

+ +

hexa.Compute()

+ +

 

+ +

 

+ +

Defining 2D and 3D hypotheses

+ +

Maximum Element Area

+ +

import + smesh

+ +

import geompy

+ +

import salome

+ +

 

+ +

# 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()

+ +

 

+ +

# apply "Max Element + Area" hypothesis to each triangle

+ +

algo.MaxElementArea(100)

+ +

 

+ +

# compute the mesh

+ +

tria_mesh.Compute() +  

+ +

 

+ +

Maximum Element Volume

+ +

import + salome

+ +

import geompy

+ +

import StdMeshers

+ +

import NETGENPlugin

+ +

 

+ +

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", + "SMESH")

+ +

smeshgui = salome.ImportComponentGUI("SMESH")

+ +

smeshgui.Init(salome.myStudyId);

+ +

 

+ +

# create a box

+ +

box = geompy.MakeCylinderRH(30, + 50) #MakeBox(0., 0., 0.,

+ +

100., 200., 300.)

+ +

 

+ +

# add the box in the + study

+ +

idbox = geompy.addToStudy(box, + "box")

+ +

 

+ +

# create a set of hypotheses

+ +

 

+ +

# Number of Segments

+ +

numberOfSegments + = 7

+ +

hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", + "libStdMeshersEngine.so")

+ +

hypNbSeg.SetNumberOfSegments(numberOfSegments)

+ +

print hypNbSeg.GetName()

+ +

print hypNbSeg.GetNumberOfSegments()

+ +

smeshgui.SetName(salome.ObjectToID(hypNbSeg), + "NumberOfSegments_7")

+ +

 

+ +

# Max Element Area

+ +

maxElementArea = + 800

+ +

hypArea = smesh.CreateHypothesis("MaxElementArea", + "libStdMeshersEngine.so")

+ +

hypArea.SetMaxElementArea(maxElementArea)

+ +

print hypArea.GetName()

+ +

print hypArea.GetMaxElementArea()

+ +

smeshgui.SetName(salome.ObjectToID(hypArea), + "MaxElementArea_800")

+ +

 

+ +

# Max Element Volume

+ +

maxElementVolume + = 900

+ +

hypVolume = smesh.CreateHypothesis("MaxElementVolume", + "libStdMeshersEngine.so")

+ +

hypVolume.SetMaxElementVolume(maxElementVolume)

+ +

print hypVolume.GetName()

+ +

print hypVolume.GetMaxElementVolume()

+ +

smeshgui.SetName(salome.ObjectToID(hypVolume), + "MaxElementVolume_900")

+ +

 

+ +

# create a set of algorithms

+ +

 

+ +

# Regular_1D

+ +

regular1D = smesh.CreateHypothesis("Regular_1D", + "libStdMeshersEngine.so")

+ +

smeshgui.SetName(salome.ObjectToID(regular1D), + "Wire Discretisation")

+ +

 

+ +

# MEFISTO_2D

+ +

mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", + "libStdMeshersEngine.so")

+ +

smeshgui.SetName(salome.ObjectToID(mefisto2D), + "MEFISTO_2D")

+ +

 

+ +

# NETGEN_3D (Tetrahedron + meshing algorithm)

+ +

tetra3D = smesh.CreateHypothesis("NETGEN_3D", + "libNETGENEngine.so")

+ +

smeshgui.SetName(salome.ObjectToID(tetra3D), + "NETGEN_3D")

+ +

 

+ +

# initialize a mesh + with the box

+ +

mesh = smesh.CreateMesh(box)

+ +

smeshgui.SetName(salome.ObjectToID(mesh), + "MeshBox")

+ +

 

+ +

# add hypotheses and + algorithms to the box

+ +

mesh.AddHypothesis(box,hypNbSeg)

+ +

mesh.AddHypothesis(box,hypArea)

+ +

mesh.AddHypothesis(box,hypVolume)

+ +

mesh.AddHypothesis(box,regular1D)

+ +

mesh.AddHypothesis(box,mefisto2D)

+ +

mesh.AddHypothesis(box,tetra3D)

+ +

 

+ +

# compute the mesh

+ +

ret = smesh.Compute(mesh,box)

+ +

if ret == 0:

+ +

    print + "probleme when computing the mesh"

+ +

else:

+ +

    print + "Computation succeded"

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Length from Edges

+ +

import + salome

+ +

import geompy

+ +

import smesh

+ +

 

+ +

# 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")

+ +

isPlanarFace = 1

+ +

 

+ +

# create a face from + two wires

+ +

face1 = geompy.MakeFaces([sketcher1, + sketcher2],isPlanarFace)

+ +

 

+ +

# add object in the study

+ +

id_face1 = geompy.addToStudy(face1,"Face1")

+ +

 

+ +

# create a mesh

+ +

tria = smesh.Mesh(face1, + "Face : triangle 2D mesh")

+ +

 

+ +

# Define 1D meshing

+ +

algo = tria.Segment()

+ +

algo.NumberOfSegments(2)

+ +

 

+ +

# create and assign the + algorithm for 2D meshing with triangles

+ +

algo = tria.Triangle()

+ +

 

+ +

# create and assign "LengthFromEdges" + hypothesis to build triangles

+ +

# based on the length + of the edges taken from the wire

+ +

algo.LengthFromEdges()

+ +

 

+ +

# compute the mesh

+ +

tria.Compute()

+ +

 

+ +

Defining Additional Hypotheses

+ +

Propagation

+ +

from + geompy import *

+ +

import smesh

+ +

 

+ +

# create vertices

+ +

Point111 = MakeVertex( + 0,  0,  0)

+ +

Point211 = MakeVertex(10, +  0,  0)

+ +

Point121 = MakeVertex( + 0, 10,  0)

+ +

Point221 = MakeVertex(10, + 10,  0)

+ +

Point112 = MakeVertex( + 0,  0, 10)

+ +

Point212 = MakeVertex(10, +  0, 10)

+ +

Point122 = MakeVertex( + 0, 10, 10)

+ +

Point222 = MakeVertex(10, + 10, 10)

+ +

 

+ +

# create edges

+ +

EdgeX111 = MakeEdge(Point111, + Point211)

+ +

EdgeX121 = MakeEdge(Point121, + Point221)

+ +

EdgeX112 = MakeEdge(Point112, + Point212)

+ +

EdgeX122 = MakeEdge(Point122, + Point222)

+ +

EdgeY11 = MakeEdge(Point111, + Point121)

+ +

EdgeY21 = MakeEdge(Point211, + Point221)

+ +

EdgeY12 = MakeEdge(Point112, + Point122)

+ +

EdgeY22 = MakeEdge(Point212, + Point222)

+ +

EdgeZ111 = MakeEdge(Point111, + Point112)

+ +

EdgeZ211 = MakeEdge(Point211, + Point212)

+ +

EdgeZ121 = MakeEdge(Point121, + Point122)

+ +

EdgeZ221 = MakeEdge(Point221, + Point222)

+ +

 

+ +

# create faces

+ +

FaceX11 = MakeQuad(EdgeY11, + EdgeZ111, EdgeY12, EdgeZ121)

+ +

FaceX21 = MakeQuad(EdgeY21, + EdgeZ211, EdgeY22, EdgeZ221)

+ +

FaceY111 = MakeQuad(EdgeX111, + EdgeZ111, EdgeX112, EdgeZ211)

+ +

FaceY121 = MakeQuad(EdgeX121, + EdgeZ121, EdgeX122, EdgeZ221)

+ +

FaceZ11 = MakeQuad(EdgeX111, + EdgeY11, EdgeX121, EdgeY21)

+ +

FaceZ12 = MakeQuad(EdgeX112, + EdgeY12, EdgeX122, EdgeY22)

+ +

 

+ +

# create a solid

+ +

box = MakeHexa(FaceX11, + FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)

+ +

 

+ +

# add in the study

+ +

box_id = addToStudy(box, + "Box")

+ +

 

+ +

# create a hexahedral + mesh on the box

+ +

hexa = smesh.Mesh(box, + "Box : hexahedrical mesh")

+ +

 

+ +

# create an 1D algorithm + for edges

+ +

algo = hexa.Segment()

+ +

 

+ +

# define "NumberOfSegments" + hypothesis to cut an edge in a fixed number of segments

+ +

algo.NumberOfSegments(4)

+ +

 

+ +

# create a quadrangle + 2D algorithm for faces

+ +

hexa.Quadrangle()

+ +

 

+ +

# create a hexahedron + 3D algorithm for solids

+ +

hexa.Hexahedron()

+ +

 

+ +

# create a local hypothesis

+ +

algo = hexa.Segment(EdgeX111)

+ +

 

+ +

# define "Arithmetic1D" + hypothesis to cut an edge + in several segments with increasing length

+ +

algo.Arithmetic1D(1, + 4)

+ +

 

+ +

# define "Propagation" + hypothesis that propagates all other 1D hypotheses

+ +

# from all edges on the + opposite side of a face in case of quadrangular faces

+ +

algo.Propagation()

+ +

 

+ +

# compute the mesh

+ +

hexa.Compute()  

+ +

Defining Meshing Algorithms

+ +

import + salome

+ +

import StdMeshers

+ +

import NETGENPlugin

+ +

 

+ +

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", + "SMESH")

+ +

smeshgui = salome.ImportComponentGUI("SMESH")

+ +

smeshgui.Init(salome.myStudyId);

+ +

 

+ +

# create algorithms

+ +

print "-------------------------- + create Algorithms"

+ +

print "-------------------------- + Regular_1D (Wire discretisation)"

+ +

regular1D = smesh.CreateHypothesis("Regular_1D", + "libStdMeshersEngine.so")

+ +

smeshgui.SetName(salome.ObjectToID(regular1D), + "Wire Discretisation")

+ +

 

+ +

print "-------------------------- + MEFISTO_2D (Triangle meshing algorithm)"

+ +

mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", + "libStdMeshersEngine.so")

+ +

smeshgui.SetName(salome.ObjectToID(mefisto2D), + "MEFISTO_2D")

+ +

 

+ +

print "-------------------------- + Quadrangle_2D (Quadrangle meshing algorithm)"

+ +

quad2D = smesh.CreateHypothesis( + "Quadrangle_2D", "libStdMeshersEngine.so" )

+ +

smeshgui.SetName(salome.ObjectToID(quad2D), + "Quadrangle_2D")

+ +

 

+ +

print "-------------------------- + Hexa_3D (Hexahedron meshing algorithm)"

+ +

hexa3D = smesh.CreateHypothesis("Hexa_3D", + "libStdMeshersEngine.so")

+ +

smeshgui.SetName(salome.ObjectToID(hexa3D), + "HEXA_3D")

+ +

 

+ +

print "-------------------------- + NETGEN_3D (Tetrahedron meshing algorithm)"

+ +

netgen3D = smesh.CreateHypothesis("NETGEN_3D", + "libNETGENEngine.so")

+ +

smeshgui.SetName(salome.ObjectToID(netgen3D), + "NETGEN_3D")

+ +

salome.sg.updateObjBrowser(1)

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/deleting_groups.htm b/doc/salome/gui/SMESH/deleting_groups.htm index 85b273571..02a7b47e2 100755 --- a/doc/salome/gui/SMESH/deleting_groups.htm +++ b/doc/salome/gui/SMESH/deleting_groups.htm @@ -1,114 +1,119 @@ - - - - - -Deleting Groups - - - - - - - - - - -

Deleting Groups

- -

To delete a group in the - Main Menu select Mesh - -> Delete Groups 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 Ok button to remove the selected groups and close the - menu or Apply button to remove them and proceed with the selection.

- -

 

- -

- -

    

- -

 

- -

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. -   

- - - - + + + + + +Deleting Groups + + + + + + + + + + + +

Deleting Groups

+ +

To delete a group in the + Main Menu select Mesh + -> Delete Groups 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 Ok button to remove the selected groups and close the + menu or Apply button to remove them and proceed with the selection.

+ +

 

+ +

+ +

    

+ +

 

+ +

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. +   

+ + + + diff --git a/doc/salome/gui/SMESH/display_entity.htm b/doc/salome/gui/SMESH/display_entity.htm index 8195fc580..51d7d6604 100755 --- a/doc/salome/gui/SMESH/display_entity.htm +++ b/doc/salome/gui/SMESH/display_entity.htm @@ -1,101 +1,101 @@ - - - - - -Display Entity - - - - - - - - - - - -

Display Entity

- -

In this submenu you can choose to display only faces,

- -

 

- -

- -

 

- -

only edges,

- -

 

- -

- -

 

- -

or both.

- - - - + + + + + +Display Entity + + + + + + + + + + + + +

Display Entity

+ +

In this submenu you can choose to display only volumes, faces or edges + or combine them.

+ +

 

+ +

Only Faces                                                  Only + Edges

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/ehelp.xml b/doc/salome/gui/SMESH/ehelp.xml index be729a46c..8d61adcdc 100755 --- a/doc/salome/gui/SMESH/ehelp.xml +++ b/doc/salome/gui/SMESH/ehelp.xml @@ -1,10 +1,10 @@ - - - - - - - - WebSearch - + + + + + + + + WebSearch + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/ehlpdhtm.js b/doc/salome/gui/SMESH/ehlpdhtm.js index 6cfd2e463..7bcb24993 100755 --- a/doc/salome/gui/SMESH/ehlpdhtm.js +++ b/doc/salome/gui/SMESH/ehlpdhtm.js @@ -1,4239 +1,4239 @@ -// eHelp® Corporation Dynamic HTML JavaScript -// Copyright© 1998-2003 eHelp® Corporation.All rights reserved. -// Version=4.82 - -// Warning:Do not modify this file.It is generated by RoboHELP® and changes will be overwritten. - -//// Segment Begin -- (JavaScript 1.0) - -/// Section Begin - General and relative topics(JavaScript 1.0) - -//{{HH_SYMBOL_SECTION -var HH_ChmFilename = ""; -var HH_WindowName = ""; -var HH_GlossaryFont = ""; -var HH_Glossary = ""; -var HH_Avenue = ""; -var HH_ActiveX = false; -//}}HH_SYMBOL_SECTION - -//Begin to support previous generic parameters -//Get the information about the browser. -var gstrBsAgent = navigator.userAgent.toLowerCase(); -var gnBsVer = parseInt(navigator.appVersion); - -var gbBsOpera = (gstrBsAgent.indexOf('opera') != -1); -var gbBsKonqueror = (gstrBsAgent.indexOf('konqueror') != -1); -var gbBsSafari = (gstrBsAgent.indexOf('safari') != -1); -var gbBsIE = (gstrBsAgent.indexOf('msie') != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari; -var gbBsNS = (gstrBsAgent.indexOf('mozilla') != -1) && ((gstrBsAgent.indexOf('spoofer') == -1) && (gstrBsAgent.indexOf('compatible') == -1)) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari; - -var gbBsMac = (gstrBsAgent.indexOf('mac') != -1); -var gbBsWindows = ((gstrBsAgent.indexOf('win') != -1) || (gstrBsAgent.indexOf('16bit') != -1)); -var gbBsSunOS = (gstrBsAgent.indexOf("sunos") != -1); - -var gbBsIE3Before = ((gbBsIE) && (gnBsVer <= 2)); -var gbBsNS3Before = ((gbBsNS) && (gnBsVer <= 3)); - -var gbBsNS2 = ((gbBsNS) && (gnBsVer <= 2)); -var gbBsNS3 = ((gbBsNS) && (gnBsVer == 3)); -var gbBsIE300301 = ((gbBsIE) && (gnBsVer == 2) && ((gstrBsAgent.indexOf("3.00") != -1)||(gstrBsAgent.indexOf("3.0a") != -1)||(gstrBsAgent.indexOf("3.0b")!=-1)||(gstrBsAgent.indexOf("3.01")!=-1))); -var gbBsIE302 = ((gbBsIE) && (gnBsVer == 2) && (gstrBsAgent.indexOf("3.02") != -1)); - -var gbBsNS4 = ((gbBsNS) && (gnBsVer >= 4)); -var gbBsNS6 = ((gbBsNS) && (gnBsVer >= 5)); -var gbBsNS7 = false; - -var gbBsIE4 = ((gbBsIE) && (gnBsVer >= 4)); -var gbBsIE5 = false; -var gbBsIE55 = false; - -var gbBsOpera6 = false; -var gbBsOpera7 = false; - -var gbBsKonqueror3 = false; - - - -gbBsIE = (navigator.appName.indexOf("Microsoft") != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;; -if (gbBsIE) -{ - if (parseInt(navigator.appVersion) >= 4) { - gbBsIE4 = true; - if (gbBsIE4) { - var nPos = gstrBsAgent.indexOf("msie"); - var strIEversion = gstrBsAgent.substring(nPos + 5); - var nVersion = parseFloat(strIEversion); - if (nVersion >= 5) - gbBsIE5 = true; - if (nVersion >= 5.5) - gbBsIE55 = true; - } - } -} -if (gbBsNS6) -{ - var nPos=gstrBsAgent.indexOf("gecko"); - if(nPos!=-1) - { - var nPos2=gstrBsAgent.indexOf("/", nPos); - if(nPos2!=-1) - { - var nVersion=parseFloat(gstrBsAgent.substring(nPos2+1)); - if (nVersion>=20020823) - gbBsNS7=true; - } - } -} -if (gbBsOpera) -{ - var nPos = gstrBsAgent.indexOf("opera"); - if(nPos!=-1) - { - var nVersion = parseFloat(gstrBsAgent.substring(nPos+6)); - if (nVersion >= 6) - { - gbBsOpera6=true; - if (nVersion >=7) - gbBsOpera7=true; - } - } -} -if (gbBsKonqueror) -{ - var nPos = gstrBsAgent.indexOf("konqueror"); - if(nPos!=-1) - { - var nVersion = parseFloat(gstrBsAgent.substring(nPos+10)); - if (nVersion >= 3) - { - gbBsKonqueror3=true; - } - } -} - -function insertAdjacentHTML(obj, where, htmlStr) -{ - if (gbBsIE || gbBsOpera7) - { - obj.insertAdjacentHTML(where, htmlStr); - } - else if (gbBsNS6 || gbBsSafari) - { - var r = obj.ownerDocument.createRange(); - r.setStartBefore(obj); - var parsedHTML = r.createContextualFragment(htmlStr); - - switch (where){ - case 'beforeBegin': - obj.parentNode.insertBefore(parsedHTML,obj); - break; - case 'afterBegin': - obj.insertBefore(parsedHTML,obj.firstChild); - break; - case 'beforeEnd': - obj.appendChild(parsedHTML); - break; - case 'afterEnd': - if (obj.nextSibling){ - obj.parentNode.insertBefore(parsedHTML,obj.nextSibling); - } else { - obj.parentNode.appendChild(parsedHTML); - } - break; - } - } -} - -// Utilities functions. -function BsscHasExtJs() -{ - if( gbBsIE3Before || gbBsNS3Before) - return false; - return true; -} - -// Register event handler -var gBsOnLoads = new Array(); // An array holds all the onload event handler. -var gBsOnClicks = new Array(); // An array holds all the onClick event handler. -var gBsOnUnLoads = new Array(); // An array holds all the OnUnLoad event handler. -var gBsOnMouseOvers = new Array(); // An array holds all the OnMouseOver event handler. -var gBsOnMouseOuts = new Array(); // An array holds all the OnMouseOut event handler. - -var gbOrignalOnMouseDown = null; - -function BsscRegisterOnLoad(funcHandler) -{ - var nLength = gBsOnLoads.length; - gBsOnLoads[nLength] = funcHandler; -} - -function BsscRegisterOnClick(funcHandler) -{ - var nLength = gBsOnClicks.length; - gBsOnClicks[nLength] = funcHandler; -} - -function BsscRegisterOnUnLoad(funcHandler) -{ - var nLength = gBsOnUnLoads.length; - gBsOnUnLoads[nLength] = funcHandler; -} - -function BsscRegisterOnMouseOver(funcHandler) -{ - var nLength = gBsOnMouseOvers.length; - gBsOnMouseOvers[nLength] = funcHandler; -} - -function BsscRegisterOnMouseOut(funcHandler) -{ - var nLength = gBsOnMouseOuts.length; - gBsOnMouseOuts[nLength] = funcHandler; -} - -function BsGeneralOnLoad() -{ - if (!gbBsIE4 && !gbBsNS4) - return; - - // Make everything visible in navigator - if (gbBsNS4 && !gbBsNS6) { - // Make some special effects items visible - for (var iLayer = 0; iLayer < document.layers.length; iLayer++) { - document.layers[iLayer].visibility = "show"; - document.layers[iLayer].left = 0; - } - } -} - -// If resize the netscape browser, need to reload it. -function BsReDo() -{ - if (innerWidth != origWidth || innerHeight != origHeight) - location.reload(); -} -// End of the local functions. - -// The following functions are used by the html files. -function BSSCOnLoad() -{ - if( !BsscHasExtJs() ) - return; - for (var nElement = gBsOnLoads.length - 1; nElement >= 0; nElement--) - gBsOnLoads[nElement](); -} - -function BSSCOnClick() -{ - if (!BsscHasExtJs()) return; - - for (var nElement = gBsOnClicks.length - 1; nElement >= 0; nElement--) - gBsOnClicks[nElement](); -} - -function BSSCOnUnload() -{ - if (!BsscHasExtJs()) return; - for (var nElement = gBsOnUnLoads.length - 1; nElement >= 0; nElement--) - gBsOnUnLoads[nElement](); -} - -function BSSCOnMouseOver() -{ - if (!BsscHasExtJs()) return; - for (var nElement = gBsOnMouseOvers.length - 1; nElement >= 0; nElement--) - gBsOnMouseOvers[nElement](); -} - -function BSSCOnMouseOut() -{ - if (!BsscHasExtJs()) return; - for (var nElement = gBsOnMouseOuts.length - 1; nElement >= 0; nElement--) - { - gBsOnMouseOuts[nElement](); - } -} -// End of invocation of the event handle functions. - -// Add the GereralOnLoad to the onload array. -if (typeof(BsscRegisterOnLoad) != "undefined") -{ - BsscRegisterOnLoad(BsGeneralOnLoad); -} -if (gbBsNS4&&!gbBsNS6) { - origWidth = innerWidth; - origHeight = innerHeight; - onresize = BsReDo; -} -//End to support previous generic parameters - -//Begin to support previous HHActiveX invoking -function BsHHActivateComponents() -{ - if( HH_ActiveX && (HH_ChmFilename != "") && ((self == top) || (self == top.frames[0]))) - { - var objBody = getElementsByTag(document,"BODY")[0]; - if( typeof(objBody) == "object" ) - { - insertAdjacentHTML(objBody, "beforeEnd", ''); - if (HHComponentActivator.object) - HHComponentActivator.Activate(HH_ChmFilename, HH_WindowName, HH_GlossaryFont, HH_Glossary, HH_Avenue); - } - } -} - -function BsHHActivXOnLoad() -{ - if( gbBsIE4 ) - BsHHActivateComponents(); -} - -if( typeof(BsscRegisterOnLoad) != "undefined" ) -{ - BsscRegisterOnLoad(BsHHActivXOnLoad); -} -//End to support previous HHActiveX invoking - -//Begin to support previous relative topics -//If webHelp needs Related Topics DHTMLcode, it's supposed to add it here -var gbPopupMenuTimeoutExpired = false; -var gbInPopupMenu = false; -var gbPopupMenuTopicList = null; -var gOlddocumentClick = null; - -////////////////////////////////////////////////////////////////////////////////////////// -// -// Popup Menu code -// -////////////////////////////////////////////////////////////////////////////////////////// - -var g_bIsPopupMenuInit = false; -function _WritePopupMenuLayer() -{ - if (!g_bIsPopupMenuInit) - { - if (gbBsNS4&&!gbBsNS6) { -//Do not try to write ininle styles for NS! NS can not handle it and will not stop downloading the html page... - document.write("
"); - } else{ - document.write(""); - if (!(gbBsNS4&&!gbBsNS6)) { - document.write(""); - } - } - g_bIsPopupMenuInit = true; - } -} - -//Seek for the bsscright frame -function _SeekFrameByName( cRoot, strName ) -{ - if( cRoot == null ) return null; - if( cRoot.frames == null ) return null; - if( cRoot.frames[strName] != null ) return cRoot.frames[strName]; - for (var i=0; i'; - } else { - strMenu += '' + gbPopupMenuTopicList[fn_arguments[i]].strTitle + ''; - } - strMenu += ''; - - if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) { - i += 2; - } else { - i += 1; - } - } - strMenu += ""; - - if (gbBsMac) { - // totally hack. because ie5 in mac need something. is one of them. mac is mad. - strMenu +="
"; - } - - var layerPopup = null; - var stylePopup = null; - var nEventX = 0; - var nEventY = 0; - var nWindowWidth = 0; - if (gbBsIE4 || gbBsOpera7) { - - layerPopup = getElement("PopupMenu"); - layerPopup.innerHTML = strMenu; - stylePopup = layerPopup.style; - - _BSPSGetClientSize(); - - // Get the position of the item causing the event (relative to its parent) - nEventX = window.event.clientX; - nEventY = window.event.clientY; - - if (nEventY + layerPopup.scrollHeight + 10 < gBsClientHeight) { - nEventY += document.body.scrollTop + 10; - } else { - nEventY = (document.body.scrollTop + gBsClientHeight) - layerPopup.scrollHeight - 20; - } - stylePopup.top = nEventY; - - var nPopupWidth = layerPopup.scrollWidth; - if (gbBsMac) { - nPopupWidth = 80; // we have no idea how to get the dynamic width of the popup. - } - if (nEventX + nPopupWidth + 20 > gBsClientWidth) { - if (gBsClientWidth - nPopupWidth < 5) { - stylePopup.left = 5; - } else { - stylePopup.left = gBsClientWidth - nPopupWidth - 5; - } - } else { - stylePopup.left = nEventX + document.body.scrollLeft + 20; - } - - stylePopup.visibility = "visible"; - if (!gOlddocumentClick && document.onclick) - gOlddocumentClick = document.onclick; - document.onclick = PopupMenu_HandleClick; - - } else if (gbBsNS6 || gbBsKonqueror3||gbBsSafari) { - layerPopup = getElement("PopupMenu"); - layerPopup.style.visibility = "hidden"; - - if (gbBsNS6) - { - var e = fn_arguments[0]; - nEventX = e.pageX; - nEventY = e.pageY; - } - else - { - nEventX = window.event.clientX; - nEventY = window.event.clientY; - } - _BSPSGetClientSize(); - layerPopup.innerHTML = strMenu; - - if (nEventY + layerPopup.offsetHeight + 20 < window.pageYOffset + gBsClientHeight) { - nEventY += 20; - } else { - nEventY = gBsClientHeight + window.pageYOffset - layerPopup.offsetHeight - 20; - } - - if (nEventX + layerPopup.offsetWidth + 20 > gBsClientWidth + window.pageXOffset) { - if (gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth < 20) { - nEventX = 5; - } else { - nEventX = gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth - 20; - } - } else { - nEventX += 20; - } - layerPopup.style.top = nEventY; - layerPopup.style.left = nEventX; - // set again to avoid the stupid frash in netscape 6. - layerPopup.innerHTML = strMenu; - layerPopup.style.visibility = "visible"; - //window.captureEvents(Event.MOUSEDOWN); - if (!gOlddocumentClick && document.onclick) - gOlddocumentClick = document.onclick; - window.onclick = PopupMenu_HandleClick; - } - else if (gbBsNS4) { - layerPopup = document.layers.PopupMenu; - layerPopup.visibility = "hide"; - stylePopup = layerPopup.document; - stylePopup.write(strMenu); - stylePopup.close(); - var e = fn_arguments[0]; - nEventX = e.pageX; - nEventY = e.pageY; - _BSPSGetClientSize(); - if (nEventY + layerPopup.clip.height + 20 < window.pageYOffset + gBsClientHeight) { - nEventY += 20; - } else { - nEventY = gBsClientHeight + window.pageYOffset- layerPopup.clip.height - 20; - } - layerPopup.top = nEventY; - - if (nEventX + layerPopup.clip.width + 20 > gBsClientWidth + window.pageXOffset) { - if (gBsClientWidth + window.pageXOffset - layerPopup.clip.width < 20) { - nEventX = 5; - } else { - nEventX = gBsClientWidth + window.pageXOffset - layerPopup.clip.width - 20; - } - } else { - nEventX += 20; - } - - layerPopup.left = nEventX; - - layerPopup.visibility = "show"; - - window.captureEvents(Event.MOUSEDOWN); - if (!gOlddocumentClick && document.onmousedown) - gOlddocumentClick = document.onmousedown; - window.onmousedown = PopupMenu_HandleClick; - } - - window.gbInPopupMenu = true; - window.gbPopupMenuTimeoutExpired = false; - setTimeout("PopupMenu_Timeout();", 100); - return false; -} - -function PopupMenu_Timeout() -{ - window.gbPopupMenuTimeoutExpired = true; -} - -function PopupMenu_Over(e) -{ - if (gbBsIE4||gbBsOpera7) - e.srcElement.className = "PopupOver"; - else if (gbBsNS6) - e.target.parentNode.className = "PopupOver"; - return; -} - -function PopupMenu_Out(e) -{ - if (gbBsIE4||gbBsOpera7) - e.srcElement.className = "PopupNotOver"; - else if (gbBsNS6) - e.target.parentNode.className = "PopupNotOver"; - return; -} - -function PopupMenu_HandleClick(e) -{ - if (window.gbPopupMenuTimeoutExpired) { - window.gbInPopupMenu = false; - if (gbBsNS4 && !gbBsNS6) { - window.releaseEvents(Event.MOUSEDOWN); - } - - var layerPopup = null; - if (gbBsNS4&&!gbBsNS6) { - layerPopup = document.layers.PopupMenu; - layerPopup.visibility = "hide"; - } else { - layerPopup = getElement("PopupMenu"); - layerPopup.style.visibility = "hidden"; - } - - if (gOlddocumentClick) - { - if (gbBsNS4 && !gbBsNS6) - document.onmousedown = gOlddocumentClick; - else - document.onclick = gOlddocumentClick; - } - } - return; -} - -function BSSCPopup_ClickMac() -{ - if ((!DHTMLPopupSupport()) && (gbBsIE4 || gbBsOpera7)) - { - var bClickOnAnchor = false; - var el; - if ((window.event != null) && - (window.event.srcElement != null)) - { - el = window.event.srcElement; - while (el != null) - { - if ((el.tagName == "A") || (el.tagName == "AREA")) { - bClickOnAnchor = true; - break; - } - if (el.tagName == "BODY") { - break; - } - el = getParentNode(el); - } - } - if (BSSCPopup_IsPopup()) - { - if (!bClickOnAnchor) { - parent.window.gPopupWindow = null; - self.close(); - } - } - else - { - bClosePopupWindow = true; - if ((bClickOnAnchor) && - (el.href) && - ((el.href.indexOf("javascript:BSSCPopup") != -1) || (el.href.indexOf("javascript:null") != -1) || (el.href.indexOf("javascript:void(0)") != -1))) - { - bClosePopupWindow = false; - } - if (bClosePopupWindow) - { - if (window.gPopupWindow != null && !window.gPopupWindow.closed ) - { - window.gPopupWindow.close(); - } - } - } - } -} - -function BsPopupOnClick() -{ - if (!gbBsIE4 && !gbBsOpera7) - return; - - BSSCPopup_ClickMac(); -} - -function _BSSCOnError(message) -{ - if(-1 != message.indexOf("denied") - || -1 != message.indexOf("Object required")) - return true; -} - -//End to support previous relative topics - -/// Section End - General and relative topics (JavaScript 1.0) - -/// Section Begin - Popup (JavaScript 1.0) -//Begin to support previous popup functions - -//variables used to isolate the browser type -var gBsStyVisShow = null; -var gBsStyVisHide = null; -var gBsClientWidth = 640; -var gBsClientHeight = 480; - -// here is the varible for judge popup windows size. these parameter is for IE5.0, it may need adjust for others. -var gBRateH_W = 0.618; // 1.618 Golden cut. -var gBMaxXOfParent = 0.8; -var gBMaxYOfParent = 0.8; -var gBscrollHeight = 16; -var gBscrollWidth = 16; -var gBpermitXDelta = 3; -var gBpermitYDelta = 3; - - -var arrayPopupURL = new Array(); -var arrayAbsPopupURL = new Array(); - -var arrayDirty = new Array(); - -function setAbsPopupURL(nIndex, strURL) -{ - arrayAbsPopupURL[nIndex] = strURL; -} - -function getAbsPopupURL(nIndex) -{ - if (nIndex == -1 || arrayAbsPopupURL.length <= nIndex) return null; - else - return arrayAbsPopupURL[nIndex]; -} - -function getPopupURL(nIndex) -{ - if (nIndex == -1 || arrayPopupURL.length <= nIndex) return null; - else - return arrayPopupURL[nIndex]; -} - -function getPopupID(nIndex) -{ - return gstrPopupID + nIndex; -} - -function getPopupShadowID(nIndex) -{ - return gstrPopupShadowID + nIndex; -} - -function getPopupTopicID(nIndex) -{ - return gstrPopupTopicID + nIndex; -} - -function getPopupIFrameID(nIndex) -{ - return gstrPopupIFrameID + nIndex; -} - -function getPopupIFrameName(nIndex) -{ - return gstrPopupIFrameName + nIndex; -} - - -function getPopupTopicStyle(nIndex) -{ - return getElement(getPopupTopicID(nIndex)).style; -} - -function getPopupShadowStyle(nIndex) -{ - return getElement(getPopupShadowID(nIndex)).style; -} - -function getPopupIFrame(nIndex) -{ - if (gbBsNS6) - return eval("window.frames['" + getPopupIFrameName(nIndex) + "']"); - else - return eval("document.frames['" + getPopupIFrameName(nIndex) + "']"); -} - -function getPopupDivStyle(nIndex) -{ - return getElement(getPopupID(nIndex)).style; -} - -function getPopupIFrameStyle(nIndex) -{ - return getElement(getPopupIFrameID(nIndex)).style; -} - - -function findDiv(strURL) -{ - for (var i = 0; i < arrayPopupURL.length; i ++ ) { - if (arrayPopupURL[i] == strURL) { - return i; - } - } - return -1; -} - -var gnToken = -1; -function takeToken() -{ - gnToken ++; - if (gnToken > 10000) gnToken = 0; - return gnToken; -} - -function IsValidToken(nToken) -{ - return (gnToken == nToken); -} - -function addDiv(strURL) -{ - for (var i = 0; i < arrayPopupURL.length; i ++) { - if (arrayPopupURL[i] == null) { - arrayPopupURL[i] = strURL; - return i; - } - } - arrayPopupURL[i] = strURL; - arrayDirty[i] = true; - return i; -} - -function setDirty() -{ - for (var i = 0; i < arrayPopupURL.length; i ++ ) - arrayDirty[i] = true; -} - -function IsDirty(nIndex) -{ - if (nIndex == -1) - return true; - else - if (arrayDirty.length > nIndex) - return arrayDirty[nIndex]; - else - return true; -} - -function hideAll() -{ - for (var i = 0; i < arrayPopupURL.length; i ++ ) - { - getPopupDivStyle(i).visibility = gBsStyVisHide; - getPopupIFrameStyle(i).visibility = gBsStyVisHide; - } -} - -function getCurrentPopupIFrame() -{ - for (var i = 0; i < arrayPopupURL.length; i ++) - if (getPopupDivStyle(i).visibility == gBsStyVisShow) - return getPopupIFrame(i); - return null; -} - -function setClear(nIndex) -{ - if (nIndex != -1) - arrayDirty[nIndex] = false; -} - -function _BSSCCreatePopupDiv(strURL) -{ - var nIndex = findDiv(strURL); - if (nIndex == -1 ) { - nIndex = addDiv(strURL); - BsPopup_CreateDiv(nIndex); - } - else { - if (IsDirty(nIndex)) { - if("object" == typeof(getPopupIFrame(nIndex).document)) - getPopupIFrame(nIndex).document.location.href = strURL; - } - } - return nIndex; -} - -//Here is the browser type -function _BSPSGetBrowserInfo() -{ - if (gbBsNS4&&!gbBsNS6) - { - gBsStyVisShow = "show"; - gBsStyVisHide = "hide"; - } - else - { - gBsStyVisShow = "visible"; - gBsStyVisHide = "hidden"; - } -} - -_BSPSGetBrowserInfo(); - -//Get client size info -function _BSPSGetClientSize() -{ - if (gbBsNS4||gbBsKonqueror3||gbBsSafari) - { - gBsClientWidth = innerWidth; - gBsClientHeight = innerHeight; - } - else if (gbBsIE4 || gbBsOpera7) - { - gBsClientWidth = document.body.clientWidth; - gBsClientHeight = document.body.clientHeight; - } -} - -var gstrPopupID = 'BSSCPopup'; -var gstrPopupShadowID = 'BSSCPopupShadow'; -var gstrPopupTopicID = 'BSSCPopupTopic'; -var gstrPopupIFrameID = 'BSSCPopupIFrame'; -var gstrPopupIFrameName = 'BSSCPopupIFrameName'; - -var gstrPopupSecondWindowName = 'BSSCPopup'; - -var gPopupWindow = null; -var gnPopupClickX = 0; -var gnPopupClickY = 0; - -var gnPopupScreenClickX = 0; -var gnPopupScreenClickY = 0; - -var gbPopupTimeoutExpired = false; - -function DHTMLPopupSupport() -{ - if (((gbBsIE4) && (!gbBsMac))||gbBsOpera7|| gbBsNS7) { - return true; - } - return false; -} - -function BSSCPopup_IsPopup() -{ - if (DHTMLPopupSupport() && (this.name.indexOf(gstrPopupIFrameName) != -1)) { - return true; - } else if ((gbBsNS4 || gbBsIE4 || gbBsOpera7) && (this.name.indexOf(gstrPopupID) != -1)) { - return true; - } else { - return false; - } -} - -// If there is a hyperlink in a popup window, display the hyperlink in -// the original window. (bsscright) -if (BSSCPopup_IsPopup() && !gbBsIE4 && !gbBsOpera7) { - document.write(""); -} - -// Local functions. -function BsPopup_CreateDiv(nIndex) -{ - if(!DHTMLPopupSupport()) - return; - // DO NOT SET Width and height for the div, otherwize it will make IE4 popup do not work when view the topic alone. - var strPopupDiv = ""; - - var objBody = getElementsByTag(document, "BODY")[0]; - if( typeof(objBody) != "object" ) - return; - - insertAdjacentHTML(objBody, "beforeEnd", strPopupDiv); -} - -function handleLoadNS() -{ - if (this.id) - { - var nIndex = parseInt(this.id.substring(gstrPopupIFrameID.length)); - BSSCPopup_PostWork(nIndex); - } -} - -function BSSCPopup_PostWork(nIndex) -{ - getPopupDivStyle(nIndex).visibility = gBsStyVisShow; - getPopupIFrameStyle(nIndex).visibility =gBsStyVisShow; - - setClear(nIndex); - window.gbPopupTimeoutExpired = true; - - BSSCPopup_ChangeTargettoParent(getPopupIFrame(nIndex).document); - if (gbBsNS6) - getPopupIFrame(nIndex).document.body.addEventListener("click",BSSCPopupClicked,false); - else - getPopupIFrame(nIndex).document.body.onclick = BSSCPopupClicked; - - if (!gbOrignalOnMouseDown && document.onmousedown) - gbOrignalOnMouseDown = document.onmousedown; - - if (gbBsNS6) - document.addEventListener("mousedown", BSSCPopupParentClicked,false); - else - document.onmousedown = BSSCPopupParentClicked; -} - -function BSSCPopup_Timeout(nIndex, nToken) -{ - if (!IsValidToken(nToken)) return; - - if (gbBsNS6||((getPopupIFrame(nIndex).document.readyState == "complete") && - (getPopupIFrame(nIndex).document.body != null))) { - BSSCPopup_PostWork(nIndex); - } else { - setTimeout("BSSCPopup_Timeout(" + nIndex + "," + nToken + ")", 100); - } -} - -// VH 08/10/00 -// do not change target to parent if the href is using javascript -function BSSCPopup_ChangeTargettoParent(tagsObject) -{ - var collA = getElementsByTag(tagsObject, "A"); - BSSCPopup_ChangeTargettoParent2(collA); - - var collIMG = getElementsByTag(tagsObject,"IMG"); - BSSCPopup_ChangeTargettoParent2(collIMG); -} - -function BSSCPopup_ChangeTargettoParent2(colls) -{ - if (colls != null) { - for (var j = 0; j < colls.length; j ++ ) - { - var strtemp = colls[j].href; - if (strtemp) - { - strtemp = strtemp.toLowerCase(); - if (strtemp.indexOf("javascript:") == -1) - if (colls[j].target == "") - colls[j].target = "_parent"; - } - } - } -} - -function BSPSPopupTopicWinHelp(strURL) -{ - _BSSCPopup(strURL); - return; -} - -function _BSSCPopup(strURL, width, height) -{ - var cuswidth = 0; - var cusheight = 0; - if ("undefined" != typeof(width) && "undefined" != typeof(height)) { - cuswidth = width; - cusheight= height; - } - - if (DHTMLPopupSupport()) { - var nToken = takeToken(); // take token first. - var nIndex = _BSSCCreatePopupDiv(strURL); - window.gbPopupTimeoutExpired = false; - var ntWidth = gBsClientWidth; - var ntHeight = gBsClientHeight; - _BSPSGetClientSize(); - if (ntWidth != gBsClientWidth || ntHeight != gBsClientHeight) { - setDirty(); - } - - if (IsDirty(nIndex)) { - if (gbBsMac) { - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight +")", 400); - } else { - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 100); - } - } - else { - MoveDivAndShow(nIndex ,nToken, cuswidth, cusheight); - } - } else { - _BSSCPopup2(strURL, cuswidth, cusheight); - } - return; -} - -if (gbBsIE55) -{ - var ehlpdhtm_fOldBefureUnload = window.onbeforeunload; - var gnBsUnload=0; - window.onbeforeunload = window_BUnload; -} - -function window_BUnload() -{ - gnBsUnload++; - if (gnBsUnload>1) - return; - for (var i = 0; i < arrayPopupURL.length; i ++) - removeThis(document.all(getPopupID(i))); - arrayPopupURL.length = 0; - if (ehlpdhtm_fOldBefureUnload) - ehlpdhtm_fOldBefureUnload(); -} - -function _BSSCPopup2(strURL, width, height) -{ - if (gbBsOpera6&&gbBsMac) - { - var wmTemp = window.open(document.location.href, gstrPopupSecondWindowName); - wmTemp.close(); - setTimeout("_BSSCPopup3(\""+strURL+"\","+width+","+height+");",100); - } - else - _BSSCPopup3(strURL, width, height); -} - -function _BSSCPopup3(strURL, width, height) -{ - if (window.name == gstrPopupSecondWindowName) { - window.location = strURL; - } else { - if (!gbBsMac || !gbBsNS4) { - BSSCHidePopupWindow(); - } - var nX = 0; - var nY = 0; - var nHeight = 300; - var nWidth = 400; - if (width > 0 && height > 0) { - nHeight = height; - nWidth = width; - } - _BSPSGetClientSize(); - - nX = window.gnPopupScreenClickX; - nY = window.gnPopupScreenClickY; - - if (nY + nHeight + 40 > screen.availHeight) { - nY = screen.availHeight - nHeight - 40; - } - if (nX + nWidth + 40 > screen.availWidth) { - nX = screen.availWidth - nWidth - 40; - } - - // Launch a separate window - var strParam="titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes"; - if (gbBsNS) { - if (gbBsNS6) { - strParam += ",Height=" + nHeight + ",Width=" + nWidth; - strParam += ",screenX=" + nX + ",screenY=" + nY; - strParam += ",dependent=yes"; - } - else { - strParam += ",OuterHeight=" + nHeight + ",OuterWidth=" + nWidth; - strParam += ",screenX=" + nX + ",screenY=" + nY; - strParam += ",dependent=yes"; - } - } - else { - strParam += ",height=" + nHeight + ",width=" + nWidth; - strParam += ",left=" + nX + ",top=" + nY; - } - if (gbBsSafari) - { - if (window.gPopupWindow) - window.gPopupWindow.close(); - window.gPopupWindow = window.open(strURL, "", strParam); - window.gPopupWindow.name = gstrPopupSecondWindowName; - window.gPopupWindow.moveTo(nX, nY); - widnow.gPopupWindow.document.location.reload(); - } - else - { - var wmTemp=null; - if (gbBsKonqueror3) - { - if (window.gPopupWindow) - window.gPopupWindow.close(); - } - if (gbBsOpera&&gbBsMac) - { - wmTemp= window.open(document.location.href, "Temp", strParam); - } - window.gPopupWindow = window.open(strURL, gstrPopupSecondWindowName, strParam); - if (!gbBsIE) - window.gPopupWindow.focus(); - - if (wmTemp) - wmTemp.close(); - } - - if (gbBsNS4) - setEventHandle(); - else if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3) - setTimeout("setPopupFocus();", 100); - } - return; -} - -function setEventHandle() -{ - window.gPopupWindow.captureEvents(Event.CLICK | Event.BLUR); - window.gPopupWindow.onclick = NonIEPopup_HandleClick; - window.gPopupWindow.onblur = NonIEPopup_HandleBlur; -} - -function setPopupFocus() -{ - window.gPopupWindow.focus(); -} - -function NonIEPopup_HandleBlur(e) -{ - window.gPopupWindow.focus(); -} - -function NonIEPopup_HandleClick(e) -{ - // Because navigator will give the event to the handler before the hyperlink, let's - // first route the event to see if we are clicking on a Popup menu in a popup. - document.routeEvent(e); - - // If a popup menu is active then don't do anything with the click - if (window.gPopupWindow.gbInPopupMenu) { - window.gPopupWindow.captureEvents(Event.CLICK); - window.gPopupWindow.onclick = NonIEPopup_HandleClick; - return false; - } - - // Close the popup window - if(e.target.href) - { - if(e.target.href.indexOf("javascript:")==-1) - { - if (e.target.target=="") - window.location.href = e.target.href; - else - window.open(e.target.href, e.target.target); - this.close(); - } - } - else - this.close(); - return false; -} - -function BSSCPopup_AfterLoad(nIndex, nToken, cuswidth, cusheight) -{ - if (!window.getPopupIFrame(nIndex).document) { - _BSSCPopup2(getPopupURL(nIndex), cuswidth, cusheight); - return; - } - - if (!IsValidToken(nToken)) return; - - if (gbBsNS6) - { - setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url. - BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight); - return; - } - - if ((window.getPopupIFrame(nIndex).document.readyState == "complete") && - (window.getPopupIFrame(nIndex).document.body != null)) { - if (window.getPopupIFrame(nIndex).document.location.href.indexOf("about:blank") != -1) { // add this check. IE will use about:blank" as the default vaule for Iframe. - window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex); - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200); - } - else - { - setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url. - BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight); - } - } else { - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200); - } -} - -function BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight) -{ - if (window.gbPopupTimeoutExpired) return; - - if (!IsValidToken(nToken)) return; - - getPopupDivStyle(nIndex).visibility = gBsStyVisHide; - getPopupIFrameStyle(nIndex).visibility = gBsStyVisHide; - - // Determine the width and height for the window - _BSPSGetClientSize(); - - var size = new BSSCSize(0, 0); - - if (cuswidth <= 0 || cusheight <= 0) - BSSCGetContentSize(window.getPopupIFrame(nIndex), size); - else { - size.x = cuswidth; - size.y = cusheight; - } - - // Determine the width and height for the window - var nWidth = size.x; - var nHeight = size.y; - - // for small popup size, we should allow any size. - // The popup size should be ok if bigger than 0 - if (nWidth < 0 || nHeight < 0) return; // there must be something terribly wrong. - - getPopupDivStyle(nIndex).width = nWidth; - getPopupDivStyle(nIndex).height = nHeight; - - getPopupShadowStyle(nIndex).width = nWidth; - getPopupShadowStyle(nIndex).height = nHeight; - getPopupTopicStyle(nIndex).width = nWidth; - getPopupTopicStyle(nIndex).height = nHeight; - if (gbBsIE55) - { - getPopupShadowStyle(nIndex).width = nWidth + 2; - getPopupShadowStyle(nIndex).height = nHeight + 2; - getPopupTopicStyle(nIndex).width = nWidth + 2; - getPopupTopicStyle(nIndex).height = nHeight + 2; - } - - getPopupIFrameStyle(nIndex).width = nWidth; - getPopupIFrameStyle(nIndex).height = nHeight; - if (gbBsIE55 || gbBsNS6) - { - getPopupIFrameStyle(nIndex).top = 0; - getPopupIFrameStyle(nIndex).left = 0; - } - - var strURL = getPopupURL(nIndex); - if (strURL.indexOf("#") != -1&&gbBsNS6) - getPopupIFrame(nIndex).location.reload(); - else if (strURL.indexOf("#") != -1||gbBsNS6) - getPopupIFrame(nIndex).location.href = strURL; // reload again, this will fix the bookmark misunderstand in IE5. - - MoveDivAndShow(nIndex, nToken, cuswidth, cusheight); -} - -function getScrollLeft() -{ - if (document.body.scrollLeft) - return document.body.scrollLeft; - else if (window.pageXOffset) - return window.pageXOffset; - else - return 0; -} - -function getScrollTop() -{ - if (document.body.scrollTop) - return document.body.scrollTop; - else if (window.pageYOffset) - return window.pageYOffset; - else - return 0; -} - - -function MoveDivAndShow(nIndex, nToken, cuswidth, cusheight) -{ - if (window.getPopupIFrame(nIndex).document.location.href != getAbsPopupURL(nIndex)) { // if redirect, reload again. - window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex); - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200); - return; - } - - // Determine the position of the window - var nClickX = window.gnPopupClickX; - var nClickY = window.gnPopupClickY; - var nTop = 0; - var nLeft = 0; - - var nWidth = parseInt(getPopupDivStyle(nIndex).width); - var nHeight = parseInt(getPopupDivStyle(nIndex).height); - - if (nClickY + nHeight + 20 < gBsClientHeight + getScrollTop()) { - nTop = nClickY + 10; - } else { - nTop = (getScrollTop() + gBsClientHeight) - nHeight - 20; - } - if (nClickX + nWidth < gBsClientWidth + getScrollLeft()) { - nLeft = nClickX; - } else { - nLeft = (getScrollLeft() + gBsClientWidth) - nWidth - 8; - } - - if (nTop < getScrollTop()) nTop = getScrollTop() + 1; - if (nLeft< getScrollLeft()) nLeft = getScrollLeft() + 1; - - getPopupDivStyle(nIndex).left = nLeft; - getPopupDivStyle(nIndex).top = nTop; - - // Set the location of the background blocks - getPopupShadowStyle(nIndex).left = 6; - getPopupShadowStyle(nIndex).top = 6; - if (gbBsIE55) - { - getPopupShadowStyle(nIndex).left = 4; - getPopupShadowStyle(nIndex).top = 4; - } - - if (gbBsMac&&gbBsIE4) { - // Total hack on the iMac to get the IFrame to position properly - getPopupIFrameStyle(nIndex).pixelLeft = 100; - getPopupIFrameStyle(nIndex).pixelLeft = 0; - // Explicitly call BSSCOnLoad because the Mac doesn't seem to do it - getPopupIFrame(nIndex).window.BSSCOnLoad(); - } - - if (gbBsNS6&&IsDirty(nIndex)) - getElement(getPopupIFrameID(nIndex)).addEventListener("load", handleLoadNS, false); - else - BSSCPopup_Timeout(nIndex , nToken ); - return; -} - -function BSSCSize(x, y) -{ - this.x = x; - this.y = y; -} - -function BSSCGetContentSize(thisWindow, size) -{ - if (!gbBsIE4 && !gbBsOpera7 && !gbBsNS4) - return; - - if ((gbBsMac&&gbBsIE4)||gbBsNS4||gbBsOpera7) { - size.x = 320; - size.y = 180; - return; - } - - // Resize the width until it is wide enough to handle the content - // The trick is to start wide and determine when the scrollHeight changes - // because then we know a scrollbar is necessary. We can then go back - // to the next widest size (for no scrollbar) - - var ClientRate = gBsClientHeight / gBsClientWidth; - - - var GoldenSize = new BSSCSize(0,0); - GoldenSize.x = gBsClientWidth * gBMaxXOfParent; - GoldenSize.y = gBsClientHeight *gBMaxYOfParent ; - - if (ClientRate > gBRateH_W) { - GoldenSize.y = GoldenSize.x * gBRateH_W; - } - else { - GoldenSize.x = GoldenSize.y / gBRateH_W; - } - - // Try to using parent specified max x. - var x = 0; - var maxgoldx = GoldenSize.x; - var maxx = gBsClientWidth * gBMaxXOfParent; - - // This double resize causes the document to re-render (and we need it to) - if (!gbBsIE5) - thisWindow.moveTo(10000,10000); // this is used to fix the flash on IE4. - - thisWindow.resizeTo(1, 1); - thisWindow.resizeTo(1, 1); - thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight); - thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight); - - var miny = thisWindow.document.body.scrollHeight + gBscrollHeight; - - if (miny > GoldenSize.y) // the popup does not fix in the parent wanted golden area. so try to expand itself as large as it can - { - thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight); - thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight); - - miny = thisWindow.document.body.scrollHeight + gBscrollHeight; - maxy = gBsClientHeight * gBMaxYOfParent; - - if (miny > maxy) { // the popup must have a scroll, OK let it be. - miny = maxy; - size.x = maxx; - size.y = maxy; - thisWindow.document.body.scroll = 'yes'; // At this time we do want to show scroll any more. so it will looks better a little. - } - else { // popup still can fit in the parent area by someway. now we choose the same h/w rate as parent. - size.y = miny; - - // downsize from maxx , now I try to using binary divide. - x = maxx; - deltax = -maxx/2; - //j = 0; - while (true) { - x = x + deltax; - thisWindow.resizeTo(x, miny); - thisWindow.resizeTo(x, miny); - diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * ClientRate; - if (diffy > gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter - deltax = Math.abs(deltax) /2; - else if (diffy < -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter - deltax = -Math.abs(deltax) /2; - else - // the y is close enough to wanted. - break; - if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore. - break; - } - size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth; - size.y = thisWindow.document.body.scrollHeight;// + gBscrollHeight; - thisWindow.document.body.scroll = 'no'; - } - } - else { - if (thisWindow.document.body.scrollWidth > maxgoldx) { - size.x = maxx; - size.y = miny; - thisWindow.document.body.scroll = 'yes'; - } - else { - // downsize from maxgoldx , now I try to using binary divide. - x = maxgoldx; - deltax = -maxgoldx/2; - while (true) { - x = x + deltax; - thisWindow.resizeTo(x, miny); - thisWindow.resizeTo(x, miny); - diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * gBRateH_W; - if (diffy > gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter - deltax = Math.abs(deltax) /2; - else if (diffy < -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter - deltax = -Math.abs(deltax) /2; - else - // the y is close enough to wanted. - break; - if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore. - break; - } - size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth; - size.y = thisWindow.document.body.scrollHeight ; - thisWindow.document.body.scroll = 'no'; // At this time we do not want to show scroll any more. so it will looks better a little. - thisWindow.resizeTo(size.x, size.y); - if (thisWindow.document.body.scrollWidth > size.x) - { - size.x = thisWindow.document.body.scrollWidth; - } - if (thisWindow.document.body.scrollHeight > size.y) - { - size.y = thisWindow.document.body.scrollHeight; - } - } - } - thisWindow.resizeTo(size.x, size.y); - thisWindow.resizeTo(size.x, size.y); - return; -} - -function BSSCPopupParentClicked() -{ - if (!window.gbPopupTimeoutExpired) { - return false; - } - - document.onmousedown = gbOrignalOnMouseDown; - - // Simply hide the popup - hideAll(); - - window.gbPopupTimeoutExpired = false; - - return true; -} - -function isInsideHyperLink(obj) -{ - if (obj&&obj!=getParentNode(obj)) - { - if (obj.tagName=="A"||obj.tagName=="IMG") - return true; - else - return isInsideHyperLink(getParentNode(obj)); - } - else - return false; -} - -function BSSCPopupClicked(e) -{ - if (!window.gbPopupTimeoutExpired) { - return false; - } - - var popupIFrame = getCurrentPopupIFrame(); - if (popupIFrame == null) { - return true; - } - - if (gbBsIE4 && (!((popupIFrame.window.event != null) && - (popupIFrame.window.event.srcElement != null) && - isInsideHyperLink(popupIFrame.window.event.srcElement)))) { - document.onmousedown = gbOrignalOnMouseDown; - - // Simply hide the popup - hideAll(); - window.gbPopupTimeoutExpired = false; - return true; - } - else if (gbBsNS6 && (!((e != null) && - (e.target!= null) && isInsideHyperLink(e.target)))) - { - document.addEventListener("mousedown", gbOrignalOnMouseDown,false); - // Simply hide the popup - hideAll(); - window.gbPopupTimeoutExpired = false; - return true; - } -} - -//trace the mouse over's position for hotspot -function BSPSPopupOnMouseOver(event) -{ - if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3) { - window.gnPopupClickX = event.clientX + getScrollLeft(); - window.gnPopupClickY = event.clientY + getScrollTop(); - window.gnPopupScreenClickX = event.screenX; - window.gnPopupScreenClickY = event.screenY; - } else if (gbBsSafari) { - window.gnPopupClickX = event.clientX + getScrollLeft(); - window.gnPopupClickY = event.clientY + getScrollTop(); - window.gnPopupScreenClickX = event.screenX + window.screenX; - window.gnPopupScreenClickY = event.screenY + window.screenY; - } else if (gbBsNS4) { - window.gnPopupClickX = event.pageX - window.pageXOffset; - window.gnPopupClickY = event.pageY - window.pageYOffset; - window.gnPopupScreenClickX = event.screenX - window.pageXOffset; - window.gnPopupScreenClickY = event.screenY - window.pageYOffset; - } -} - -function BSSCHidePopupWindow() -{ - if (window.gPopupWindow != null) { - if (gbBsNS4) { - if ((typeof window.gPopupWindow != "undefined") && (!window.gPopupWindow.closed)) { - window.gPopupWindow.close(); - window.gPopupWindow = null; - } - } - } - return; -} - -// Add the PopupOnClick to the onclick array. -if (typeof(BsscRegisterOnClick) != "undefined") -{ - BsscRegisterOnClick(BsPopupOnClick); -} -//End to support previous popup functions - -/// Section End - Popup (JavaScript 1.0) - -/// Section Begin - Embedded Stub (JavaScript 1.0) - -function BSSCCreatePopupDiv() -{ - return; -} - -function WritePopupMenuLayer() -{ - if (BsscHasExtJs()) {_WritePopupMenuLayer();} -} - -function BSSCPopup(strURL, width, height) -{ - var re = new RegExp("'", 'g'); - strURL = strURL.replace(re, "%27"); - - if (BsscHasExtJs()) { - _BSSCPopup(strURL, width, height); - }else{ - //Create a temporary window first to ensure the real popup comes up on top - var wndTemp = null; - if (!gbBsNS3) { - wndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4"); - } - // Create the real popup window - var wndPopup = window.open(strURL, "BSSCPopup", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=300,width=400"); - // Close the temporary - if (!gbBsNS3) { - wndTemp.close(); - } else { - wndPopup.focus(); - } - } -} - -var gbWndTemp = null, gbWndPopupLinks = null; -var gbstrParaTotal = ""; - -function PopupMenu_Invoke() -{ - if (typeof(wfRelatedTopic) == 'function' && typeof(IsFlashSupported) == 'function') - { - if (Number(gsSkinVersion) > 2 && IsFlashSupported()) - { - return wfRelatedTopic(PopupMenu_Invoke.arguments); - } - } - if (BsscHasExtJs()) { - return _PopupMenu_Invoke(PopupMenu_Invoke.arguments); - } - if (gbBsNS3Before || gbBsIE3Before ) { - var argLen = PopupMenu_Invoke.arguments.length; - if (argLen < 5) { - window.document.location.href = PopupMenu_Invoke.arguments[3]; - return false; - } - gbWndTemp = null; - gbWndPopupLinks = null; - gbstrParaTotal = ""; - for (var i = 0; i < (argLen - 2) / 2; i++) { - var strParaLine = ""; - if (gbBsNS2){ - strParaLine += "" - strParaLine += PopupMenu_Invoke.arguments[2 * i + 2]; - strParaLine += ""; - } else { - strParaLine += ""); - if (gbBsNS2) { - gbWndPopupLinks.document.write(""); - } else { - //YJ: IE301,302 and NS3.x works fine - gbWndPopupLinks.document.write("<"); - gbWndPopupLinks.document.write("script>"); - gbWndPopupLinks.document.write("function gotoUrl(aUrl) {opener.window.location=aUrl; close();}"); - gbWndPopupLinks.document.write("<"); - gbWndPopupLinks.document.write("/script>"); - } - gbWndPopupLinks.document.write(""); - gbWndPopupLinks.document.write(gbstrParaTotal); - gbWndPopupLinks.document.write(""); - gbWndPopupLinks.document.close(); - - // Close the temporary - if (!gbBsNS3 && gbWndTemp != null) { - gbWndTemp.close(); - }else { - gbWndPopupLinks.focus(); - } - - return true; - } - return false; -} - -/// Section End - Embedded Stub (JavaScript 1.0) - -//// Segment End -- (JavaScript 1.0) - -//// Segment Begin -- (JavaScript 1.2) -/// Section Begin - kadov DHTM (JavaScript 1.2) - -//Begin to support extended and dropdown text effects. -function kadovIsParagraph(el) -{ - return( el.tagName == "P" || el.tagName.indexOf("H") == 0 ) ? true : false; -} - -function kadovInitEachChild(el) -{ - for(var i=0; i "") ) - child.style.setAttribute( "x-on-pageload", "" ); - } - - var href = child.getAttribute("href") - if( href != null && href > "" && href.indexOf( "BSSCPopup" ) >= 0 ) - kadovFilePopupInit(child.id); // Init for Popup - else if( child.className == "dropspot" || child.className == "expandspot" || - child.className == "glossterm" ) - kadovTextPopupInit(child.id);// Init for Expanding/Glossary or DropDown text - else if( child.className == "trigger") - kadovInitTrigger(child.id);// Init for Trigger - else - { - kadovInitEffects(child.id);// Init for DHTML effects - CEngine.SetOneTargetInitialState( child.id ); - } - } - - if( (child.tagName == "IMG") && (child.getAttribute("dynsrc") > "") ) - child.start = "mouseover";// to start a AVI file. fileopen doesn't work - - kadovInitEachChild(child); - } -} - -function kadovRetrieveTextInner(el) -{ - var x = ""; - if( (!el) || (el.tagName == "!") || (el.tagName == "SCRIPT" )) - return x; - - if( kadovIsParagraph(el) ) - { - var strNewID = " "; - if( el.id != "" ) - strNewID += "id=" + el.id + "_NewSpan "; - x = "" + el.innerHTML + ""; - } - else - { - for(var i=0; i 0 ) - if( (nTagClose - nTagOpen) != nDistance ) - return strRawHTML; - - var strCleanOnce = strRawHTML.substring(0, nTagOpen) + strRawHTML.substr(nTagClose + strTagClose.length) ; - return kadovRetrieveCleanHTML( strCleanOnce, strTagOpen, strTagClose ); -} - -function kadovAdjustObjectTag(strRawHTML, nStartPos) -{// adjust object tag for related topics HTML control, because innerHTML misses out the item settings - - //Is there any DTC? - var strDTCTagOpen = ''; - var nDTCTagOpen = strRawHTML.indexOf( strDTCTagOpen, nStartPos ); - if( nDTCTagOpen < 0 ) - return strRawHTML; - var nDTCTagClose = strRawHTML.indexOf( strDTCTagClose, nDTCTagOpen ); - if( nDTCTagClose < nDTCTagOpen) - return strRawHTML; // no Design Time Controls; - - //Is the DTC HTML Help Control? - var strRTObjTagOpen = 'classid=clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11'; - var strRTObjTagClose = ''; - var nRTObjTagOpen = strRawHTML.indexOf( strRTObjTagOpen, nDTCTagOpen ); - if( nRTObjTagOpen < nDTCTagOpen ) - return strRawHTML; - var nRTObjTagClose = strRawHTML.indexOf( strRTObjTagClose, nRTObjTagOpen ); - if( nRTObjTagClose < nRTObjTagOpen ) - return strRawHTML; // is not a HTML help control - - // Is it a related Topics html help control? - var strRTObjLabel = ''; - } - - // to insert the reconstructed item params into runtime object tag - var strAdjustedHTML = strRawHTML.substring(0,nRTObjTagClose) + strRunTimeItemParam + strRawHTML.substring(nRTObjTagClose, strRawHTML.length); - return kadovAdjustObjectTag(strAdjustedHTML, nDTCTagClose + strDTCTagClose.length); -} - -function kadovTextPopupOnLoad( el ) -{ - if( typeof(el) == "string" ) - el = getElement(el); - - var src = el.getAttribute( "x-use-popup" ); - var bNeedMove=true; - if(!src&&el.id) - { - for (var i=0;i"); - strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, ""); - - //work around the bug in HH.exe that highlight the phrases when use Search tab - //this approach is just removing the tag inserted by Microsoft in the runtime - strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "", 52); - - var strStyle = " style='display:none; position:relative;"; - var newDiv = "
" + strCleanHTML + "
"; - - removeThis(srcDiv); // empty the original DIV tag - var elParentPra = kadovFindParentParagraph(el); - if( elParentPra ) - insertAdjacentHTML(elParentPra, "afterEnd", newDiv ); - } - else if( type == "expanding" ) - { - var inner = kadovRetrieveTextInner(srcDiv); - if( inner == "" ) - inner = srcDiv.innerHTML; - var strAdjust = kadovAdjustObjectTag(inner,0); - var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, ""); - strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, ""); - var strClassName = (el.className == "glossterm") ? "glosstext" : "expandtext"; - var newSpan = ""; - removeThis(srcDiv); // empty the original DIV tag - insertAdjacentHTML(el, "afterEnd", newSpan ); - } - } - } - else - { - srcDiv.style.display = "none"; - } - return 0; -} - -function getElementsByTag(obj,sTagName) -{ - if(obj.getElementsByTagName) - return obj.getElementsByTagName(sTagName); - else if(obj.all) - return obj.all.tags(sTagName); - return null; -} - -function getElement(sID) -{ - if(document.getElementById) - return document.getElementById(sID); - else if(document.all) - return document.all(sID); - return null; -} - -function getParentNode(obj) -{ - if(obj.parentNode) - return obj.parentNode; - else if(obj.parentElement) - return obj.parentElement; - return null; -} - -function getChildNodes(obj) -{ - if(obj.childNodes) - { - var children = new Array(); - for (var i = 0; i < obj.childNodes.length; i++) - { - if (obj.childNodes[i].nodeType == 1) - children[children.length] = obj.childNodes[i]; - } - return children; - } - else if(obj.children) - return obj.children; - return null; -} - -function removeThis(obj) -{ - if(obj.parentNode) - obj.parentNode.removeChild(obj); - else - obj.outerHTML=""; -} - -function kadovTextPopup( el ) -{ - if (!gbBsIE4 && !gbBsOpera7 && !gbBsSafari && !gbBsNS6 && !gbBsKonqueror3 ) - return; - - var bNeedMove=true; - - if (window.event) - window.event.cancelBubble = true; - - if( typeof(el) == "string" ) - el = getElement(el); - - if (!el||el==window) - return; - - var src = el.getAttribute( "x-use-popup" ); - if(!src&&el.id) - { - for (var i=0;i= 0 && nNext < values.length ) - { - functions[nIdx] = values.substr( nStart, nNext-nStart+1); - nStart = nNext + 1; - nIdx++; - nNext = values.indexOf( "\)", nStart); - } - - for( var i=0; i= 0 ) - { - nPageClick = arrForClickCount[j].indexOf("="); - if( nPageClick > 0 ) - { - nClickTimes = arrForClickCount[j].substring( nPageClick + 1, arrForClickCount[j].length) * 1; - break; - } - } - } - var args = srcargs; - if( j < arrForClickCount.length ) - {// to strip out the "clicks=99" from the arguments string - args = ""; - for( var k = 0; k < arrForClickCount.length; k ++ ) - { - if( k != j ) - { - args += arrForClickCount[k]; - if( k < arrForClickCount.length - 1 ) - args += ","; - } - } - } - bsscFXInit( null, id, translatedProp, fnname, args, nClickTimes ); - } -} - -function kadovTranslateProp( prop ) -{ - switch( prop ) - { - case "x-on-hover" : return "bsschover"; - case "x-on-pageclick" : return "bsscpageclick"; - case "x-on-pageload" : return "bsscpageload"; - case "x-on-trigger-1" : return "bssctrigger1"; - case "x-on-trigger-2" : return "bssctrigger2"; - } - return null; -} -//End to convert iWrite format to RoboEditor Format for DHTML effects - -//Begin the definition of one entry to DHTML effects -function bsscFXInit( trigger_ID, target_ID, event_type, - action_type, action_setting, event_addional ) -{ - if( (!gbBsWindows && !gbBsSunOS && !(gbBsMac&&gbBsIE5)) || typeof(target_ID) != "string" )//MUST have a target_ID - return; // we don't support Navigator yet - - if( typeof(event_type) == "string" ) - event_type = event_type.toLowerCase(); - if( typeof(action_type) == "string" ) - action_type = action_type.toLowerCase(); - if( typeof(action_setting) == "string" ) - action_setting = action_setting.toLowerCase(); - - // to get the target element then add it to the target list - var eleTarget = CCSSP.GetObject( target_ID ); - if( (eleTarget != null) && (event_type != null) && (action_type != null) ) - { - CEngine.AddOneTarget( target_ID, eleTarget ); - CEngine.BuildTargetObject(target_ID, event_type, action_type, action_setting, event_addional); - } - - // to validate the trigger_ID parameter - if( typeof(trigger_ID) == "string" && trigger_ID != "" ) - CEngine.BuildTriggerObject( trigger_ID, target_ID ); -} -//End the definition of one entry to DHTML effects - -/// Section End - kadov DHTM (JavaScript 1.2) - -/// Section Begin - CCSSP DHTM (JavaScript 1.2) - -//Begin JavaScript libary for cross-platform positioning object. -function CCSSP(){} // constructor of CCSSP class - -CCSSP.GetObject = function( obj ) -{//convert object name string or reference into a valid object reference - if( typeof(obj) == "object" ) - return obj; - else if( typeof(obj) == "string" && obj != "") - { - if( gbBsNS4 ) - return eval("document." + obj); - else - return eval("document.all(\"" + obj + "\")"); - } - else - return null; -} - -CCSSP.MoveObjectTo = function(obj, x, y) -{//positioning an object at a specific pixel coordinate - if( gbBsNS4 ) - obj.moveTo(x,y); - else - { - obj.style.pixelLeft = x; - obj.style.pixelTop = y; - } -} - -CCSSP.MoveObjectBy = function(obj, dx, dy) -{//moveing a object by x and/or y pixel - if( gbBsNS4 ) - obj.moveBy(dx,dy); - else - { - obj.style.pixelLeft += dx; - obj.style.pixelTop += dy; - } -} - -CCSSP.SetObjectBGColor = function(obj, color) -{//set the background color of an object - if( gbBsNS4 ) - obj.bgColor = color; - else - obj.style.backgroundColor = color; -} - -CCSSP.ShowObject = function(obj, bShow) -{// set the object to be visible or invisible - if( gbBsNS4 ) - obj.visibility = (bShow == true) ? 'show' : 'hide'; - else - obj.style.visibility = (bShow == true) ? 'visible' : 'hidden';// when hidden, it still occupy some space. -} - -CCSSP.GetObjectLeft = function(obj) -{// retrieve the x coordinate of a posionable object - if( gbBsNS4 ) - return obj.left; - else - return obj.style.pixelLeft; -} - -CCSSP.GetObjectTop = function(obj) -{// retrieve the y coordinate of a posionable object - if( gbBsNS4 ) - return obj.top; - else - return obj.style.pixelTop; -} - -CCSSP.GetObjectContainLeft = function(obj) -{// retrieve the x coordinate of a posionable object relative to it's parent element - if( gbBsNS4 ) - return obj.pageX; - else - { - if( obj == document.body ) - return obj.clientLeft; - else - return obj.offsetLeft; - } -} - -CCSSP.GetObjectWindowLeft = function(obj) -{// retrieve the x coordinate of a posionable object relative to browser window - if( gbBsNS4 ) - return obj.pageX; - else - { - var nOffsetWindowLeft = 0; - for(var element = obj; element; element = element.offsetParent) - nOffsetWindowLeft += CCSSP.GetObjectContainLeft(element); - return nOffsetWindowLeft; - } -} - -CCSSP.GetObjectContainTop = function(obj) -{// retrieve the y coordinate of a posionable object relative to it's parent element - if( gbBsNS4 ) - return obj.pageY; - else - { - if( obj == document.body ) - return obj.clientTop; - else - return obj.offsetTop; - } -} - -CCSSP.GetObjectWindowTop = function(obj) -{// retrieve the y coordinate of a posionable object relative to browser window - if( gbBsNS4 ) - return obj.pageY; - else - { - var nOffsetWindowTop = 0; - for(var element = obj; element; element = element.offsetParent) - nOffsetWindowTop += CCSSP.GetObjectContainTop(element); - return nOffsetWindowTop; - } -} - -CCSSP.GetObjectHeight = function(obj) -{// retrieve the height of a posionable object - if( gbBsNS4 ) - return obj.clip.height; - else - return obj.offsetHeight; -} - -CCSSP.GetObjectWidth = function(obj) -{// retrieve the width of a posionable object - if( gbBsNS4 ) - return obj.clip.width; - else - return obj.offsetWidth; -} - -CCSSP.RegisterEventHandler = function( srcObj, rawEventName, funcHandler ) -{ // to add the "funcHandler" as the "rawEventName" 's handler to the "srcObj" object,the original event handler will be combined - if (gbBsNS4 && !gbBsNS6) - return ; - - var oldHandler = ""; - - if (gbBsMac &&gbBsIE4&&!gbBsIE5) - { - if (typeof(srcObj[rawEventName.toLowerCase()])=="unknown") - { //search for - - - - - - - - -

Extrusion

- -

Extrusion is a type of surface meshing by generation from discretized - lines. It is used to build mesh elements of plus one dimension than the - swept ones. Each swept 1D element produces one or more quadrangles (or - triangles if one node of a rotated element lays on the revolution axis).

- -

 

- -

To use extrusion:

- -

 

- -

1. From the Modification - menu choose the Extrusion item - or click button in the toolbar. The following dialog box - will appear:

- -

 

- -

 

- -

 

- -

2. In this dialog box you should select

- -
    - -
  • the type of elements - which will be extruded (1D or 2D),

  • - -
  • specify the IDs of - the elements which will be extruded by selecting them in the 3D viewer - or select the whole mesh or submesh,

  • - -
  • specify the vector - along which the elements will be extruded,

  • - -
  • number of steps

  • -
- -

 

- -

3. Click the Apply - or OK button.

- -

 

- -

 

- - --- - - - -
-

-

- -

 

- -
- -

 

- - - - + + + + + +Extrusion + + + + + + + + + + + + +

Extrusion

+ +

Extrusion is a type of surface meshing by generation from discretized + lines. It is used to build mesh elements of plus one dimension than the + swept ones. Each swept 1D element produces one or more quadrangles (or + triangles if one node of a rotated element lays on the revolution axis).

+ +

 

+ +

To use extrusion:

+ +

 

+ +

1. From the Modification + menu choose the Extrusion item + or click button in the toolbar. The following dialog box + will appear:

+ +

 

+ +

 

+ +

 

+ +

2. In this dialog box you should select

+ +
    + +
  • the type of elements + which will be extruded (1D or 2D),

  • + +
  • specify the IDs of + the elements which will be extruded by selecting them in the 3D viewer + or select the whole mesh or submesh,

  • + +
  • specify the vector + along which the elements will be extruded,

  • + +
  • number of steps

  • +
+ +

 

+ +

3. Click the Apply + or OK button.

+ +

 

+ +

 

+ + +++ + + + +
+

+

+ +

 

+ +

 See + Also a sample TUI Script of an Extrusion + operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/extrusion_along_a_path.htm b/doc/salome/gui/SMESH/extrusion_along_a_path.htm index 1ae2b7b8b..84ecb3ced 100755 --- a/doc/salome/gui/SMESH/extrusion_along_a_path.htm +++ b/doc/salome/gui/SMESH/extrusion_along_a_path.htm @@ -1,191 +1,197 @@ - - - - - -Extrusion along a path - - - - - - - - - - - -

Extrusion along a path

- -

In principle, Extrusion along a path works in the same way as Extrusion, - the main difference is that we define not a vector, but a path of extrusion - which must be a meshed edge or wire. To get an idea of how this algorithm - works, let's see the left image, where we have a 1D circle edge and  a - 2D hexagon to be extruded along this path (in the picture they are angular - because we show the wireframe of the mesh). And now let's see the right - image, showing the result of the operation.  

- -

 

- - --- - - - -
-

-

- -

 

- -

     

- -

 

- -

To use Extrusion along a path:

- -

1. From the Modification - menu choose the Extrusion along - a path item or click button in the toolbar. The - following dialog box will appear:

- -

 

- -

- -

 

- -

2. In the dialog box you should  

- -
    - -
  • select the type of - elements which will be extruded (1D or 2D),

  • - -
  • specify the IDs of - the elements which will be extruded by selecting them in the 3D viewer - or Select the whole mesh, submesh or - group,

  • - -
  • specify the path along - which the elements will be extruded, for this you should specify the Mesh, the Shape, - and the Start point for the extrusion. -

  • -
- -

 

- -

3. There are two optional parameters, which - can be very useful.

- -
    - -
  • If the path of extrusion - is curvilinear, at each iteration the extruded shape is rotated to keep - its initial angularity to the curve. By default, the Base - point around which the shape is rotated is the mass center of the - shape, however, you can specify any point as the Base - Point and the shape will be rotated with respect to this point.

  • - -
  • The shape can also - be rotated around the path to get the resulting mesh in a helical fashion. - At the picture above we see both "oblique-angled" and "right-angled" - mesh elements because Rotation Angles - have not been set for all iterations. You set the values of the angles - at the right and add them to the list of angles at the left by pressing - the button and remove the values from the list by pressing - the button.

  • -
- -

4. Click the Apply - or OK button.

- -

 

- -

 See - Also a sample TUI Script of an Extrusion - along a Path operation.  

- -

 

- -

 

- - - - + + + + + +Extrusion along a path + + + + + + + + + + + + +

Extrusion along a path

+ +

In principle, Extrusion along a path works in the same way as Extrusion, + the main difference is that we define not a vector, but a path of extrusion + which must be a meshed edge or wire. To get an idea of how this algorithm + works, let's see the left image, where we have a 1D circle edge and  a + 2D hexagon to be extruded along this path (in the picture they are angular + because we show the wireframe of the mesh). And now let's see the right + image, showing the result of the operation.  

+ +

 

+ + +++ + + + +
+

+

+ +

 

+ +

     

+ +

 

+ +

To use Extrusion along a path:

+ +

1. From the Modification + menu choose the Extrusion along + a path item or click button in the toolbar. The + following dialog box will appear:

+ +

 

+ +

+ +

 

+ +

2. In the dialog box you should  

+ +
    + +
  • select the type of + elements which will be extruded (1D or 2D),

  • + +
  • specify the IDs of + the elements which will be extruded by selecting them in the 3D viewer + or Select the whole mesh, submesh or + group,

  • + +
  • specify the path along + which the elements will be extruded, for this you should specify the Mesh, the Shape, + and the Start point for the extrusion. +

  • +
+ +

 

+ +

3. There are two optional parameters, which + can be very useful.

+ +
    + +
  • If the path of extrusion + is curvilinear, at each iteration the extruded shape is rotated to keep + its initial angularity to the curve. By default, the Base + point around which the shape is rotated is the mass center of the + shape, however, you can specify any point as the Base + Point and the shape will be rotated with respect to this point.

  • + +
  • The shape can also + be rotated around the path to get the resulting mesh in a helical fashion. + At the picture above we see both "oblique-angled" and "right-angled" + mesh elements because Rotation Angles + have not been set for all iterations. You set the values of the angles + at the right and add them to the list of angles at the left by pressing + the button and remove the values from the list by pressing + the button.

  • +
+ +

4. Click the Apply + or OK button.

+ +

 

+ +

 See + Also a sample TUI Script of an Extrusion + along a Path operation.  

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/about_hypotheses.htm b/doc/salome/gui/SMESH/files/about_hypotheses.htm index 1ed198145..449308c20 100755 --- a/doc/salome/gui/SMESH/files/about_hypotheses.htm +++ b/doc/salome/gui/SMESH/files/about_hypotheses.htm @@ -1,203 +1,213 @@ - - - - - -About hypotheses - - - - - - - - - - - - -

About hypotheses

- -

Hypotheses represent - boundary conditions which will be taken into account at calculations of - meshes or submeshes basing on geometrical objects. These hypotheses allow - you to manage the level of detail of the resulting meshes or submeshes: - when applying different hypotheses with different parameters you can preset - the quantity of meshing elements which will compose your mesh. So, it - will be possible to generate a rough or a more refined mesh or submesh. -

- -

 

- -

In MESH there are the following - Basic Hypotheses (to introduce them, you operate numerical values):

- -
    - -
  • 1D Hypotheses (for meshing of edges):

  • - -
      - -
    • Arithmetic - 1D

    • - -
    • Average - Length

    • - -
    • Deflection - 1D

    • - -
    • Number - of segments

    • - -
    • Start - and end length

    • -
    - -
  • 2D - Hypothesis (for meshing of faces): -

  • -
- - - - - -

 

- -

There also exist some Additional - Hypotheses

- -
    - -
      - -
    • Propagation of 1D Hypothesis on opposite edges

    • - -
    • Length from edges

    • - -
    • Non conform mesh allowed

    • -
    -
- -

 

- -

The choice of a hypothesis depends on:

- -
    - -
  • the geometrical object (shape) which will be meshed

  • - -
  • the algorithm, which will be selected for meshing - of this geometrical object (shape)

  • -
- -

 

- -

 

- - - - + + + + + +About hypotheses + + + + + + + + + + + + + +

About hypotheses

+ +

Hypotheses represent + boundary conditions which will be taken into account at calculations of + meshes or submeshes basing on geometrical objects. These hypotheses allow + you to manage the level of detail of the resulting meshes or submeshes: + when applying different hypotheses with different parameters you can preset + the quantity of meshing elements which will compose your mesh. So, it + will be possible to generate a rough or a more refined mesh or submesh. +

+ +

 

+ +

In MESH there are the following + Basic Hypotheses (to introduce them, you operate numerical values):

+ + + +
    + + +
+ + + +

 

+ +

There also exist some Additional + Hypotheses

+ +
    + +
      + +
    • Propagation of 1D Hypothesis on opposite edges

    • + +
    • Non conform mesh allowed

    • + +
    • Quadratic mesh

    • +
    +
+ +

 

+ +

The choice of a hypothesis depends on:

+ +
    + +
  • the geometrical object (shape) which will be meshed

  • + +
  • the algorithm, which will be selected for meshing + of this geometrical object (shape)

  • +
+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/about_meshes.htm b/doc/salome/gui/SMESH/files/about_meshes.htm index d4ba6d835..353b6a7a8 100755 --- a/doc/salome/gui/SMESH/files/about_meshes.htm +++ b/doc/salome/gui/SMESH/files/about_meshes.htm @@ -1,245 +1,250 @@ - - - - - -About meshes - - - - - - - - - - - -

About meshes

- -

MESH represents - a discretization of a geometrical CAD model into a set of entities with - a simple topology. In MESH there are two options of creation of meshes, - you can:

- -

 

- -
    - -
  • generate meshes on the basis of geometrical shapes - produced in the GEOM module,

  • - -
  • create your own meshes using the MESH functions - destined for modification of generated meshes.

  • -
- -

 

- -

The topology of a mesh is described by the relationships between its - entities including:

- -

 

- -
    - -
  • Node - – 0D element of a mesh presented by a point with coordinates (x, y, z).

  • - -
  • Edge - – 1D element of a mesh defined by two nodes.

  • - -
  • Face - – 2D element of a mesh defined by three or four edges (closed contour).

  • - -
  • Volume - – 3D element of a mesh defined by several faces.

  • -
- -

 

- -

These entities are considered as topological - entities and they don't imply any geometric representation. Only Nodes reference  geometric - representations of points with definite coordinates. The - node entity will contain  additional - information about its position in the space and its relations with the - meshed CAD model. Its position could be described in the following way:

- -

 

- -
    - -
  • 2D - position. It is a free position defined by only two coordinates - x,y.

  • - -
  • 3D - position. It is a free position defined by three coordinates x,y - and z.

  • - -
  • Surface - position. It characterizes the position of a node on a geometric - surface and is defined by the u,v position in the parametric space of - the corresponding surface.

  • - -
  • Line - position. It characterizes the position of a node on a geometric - curve and is defined by the u parameter and the corresponding curve.

  • - -
  • Vertex - position. It characterizes the position of a node on a geometric - point of the meshed CAD model and is defined by the x,y,z coordinates - of the corresponding vertex.

  • -
- -

 

- -

 

- -

Connections

- -

Each mesh entity bounds 0 or more mesh entities - of higher dimension. In the same way each mesh entity is bounded by 0 - or more mesh entities of lower dimension:

- -

 

- -
    - -
  • A node bounds edges, - faces and volumes

  • - -
  • An edge bounds faces, - and volumes

  • - -
  • A face bounds volumes

  • - -
  • A volume is bounded - by faces, edges and nodes

  • - -
  • A face is bounded by - edges, and nodes

  • - -
  • An edge is bounded by - nodes

  • -
- -

 

- -

You can notice that there are two types of - connections: inverse and direct connections.

- -

 

- -

Inverse connections

- -

 

- -

This relationship has a particularity that - the order of bounded entities has not a direct meaning. Also the number - of bounded entities is not fixed.

- -

 

- -

The edges surrounding a node. - The 3rd edge has no more sense that the 5th one.

- -

 

- -

Direct connections

- -

 

- -

This relationship has a particularity that - the order of bounding entities is meaningful. The number of bounding entities - is fixed and depends on the type of the entity (hexahedron, tetrahedron,Â…).

- -

 

- -

An edge is composed of two - nodes. A face is composed of 3 or 4 edges depending if we are dealing - with triangles or quadrangles.

- -

 

- -

The connections are not only restricted to - entities of one dimension higher or lower. For example some algorithms - may be interested to retrieve all the faces surrounding a node.

- -

 

- -

 

- -

 

- - - - + + + + + +About meshes + + + + + + + + + + + + +

About meshes

+ +

MESH represents + a discretization of a geometrical CAD model into a set of entities with + a simple topology. In MESH there are two options of creation of meshes, + you can:

+ +

 

+ +
    + +
  • generate meshes on the basis of geometrical shapes + produced in the GEOM module,

  • + +
  • create your own meshes using the MESH functions + destined for modification of generated meshes.

  • +
+ +

 

+ +

The topology of a mesh is described by the relationships between its + entities including:

+ +

 

+ +
    + +
  • Node + – 0D element of a mesh presented by a point with coordinates (x, y, z).

  • + +
  • Edge + – 1D element of a mesh defined by two nodes.

  • + +
  • Face + – 2D element of a mesh defined by three or four edges (closed contour).

  • + +
  • Volume + – 3D element of a mesh defined by several faces.

  • +
+ +

 

+ +

These entities are considered as topological + entities and they don't imply any geometric representation. Only Nodes reference  geometric + representations of points with definite coordinates. The + node entity will contain  additional + information about its position in the space and its relations with the + meshed CAD model. Its position could be described in the following way:

+ +

 

+ +
    + +
  • 2D + position. It is a free position defined by only two coordinates + x,y.

  • + +
  • 3D + position. It is a free position defined by three coordinates x,y + and z.

  • + +
  • Surface + position. It characterizes the position of a node on a geometric + surface and is defined by the u,v position in the parametric space of + the corresponding surface.

  • + +
  • Line + position. It characterizes the position of a node on a geometric + curve and is defined by the u parameter and the corresponding curve.

  • + +
  • Vertex + position. It characterizes the position of a node on a geometric + point of the meshed CAD model and is defined by the x,y,z coordinates + of the corresponding vertex.

  • +
+ +

 

+ +

 

+ +

Connections

+ +

Each mesh entity bounds 0 or more mesh entities + of higher dimension. In the same way each mesh entity is bounded by 0 + or more mesh entities of lower dimension:

+ +

 

+ +
    + +
  • A node bounds edges, + faces and volumes

  • + +
  • An edge bounds faces, + and volumes

  • + +
  • A face bounds volumes

  • + +
  • A volume is bounded + by faces, edges and nodes

  • + +
  • A face is bounded by + edges, and nodes

  • + +
  • An edge is bounded by + nodes

  • +
+ +

 

+ +

You can notice that there are two types of + connections: inverse and direct connections.

+ +

 

+ +

Inverse connections

+ +

 

+ +

This relationship has a particularity that + the order of bounded entities has not a direct meaning. Also the number + of bounded entities is not fixed.

+ +

 

+ +

The edges surrounding a node. + The 3rd edge has no more sense that the 5th one.

+ +

 

+ +

Direct connections

+ +

 

+ +

This relationship has a particularity that + the order of bounding entities is meaningful. The number of bounding entities + is fixed and depends on the type of the entity (hexahedron, tetrahedron,Â…).

+ +

 

+ +

An edge is composed of two + nodes. A face is composed of 3 or 4 edges depending if we are dealing + with triangles or quadrangles.

+ +

 

+ +

The connections are not only restricted to + entities of one dimension higher or lower. For example some algorithms + may be interested to retrieve all the faces surrounding a node.

+ +

 

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/about_meshing_algorithms.htm b/doc/salome/gui/SMESH/files/about_meshing_algorithms.htm index ecc8de1c2..acfdedf3d 100755 --- a/doc/salome/gui/SMESH/files/about_meshing_algorithms.htm +++ b/doc/salome/gui/SMESH/files/about_meshing_algorithms.htm @@ -1,222 +1,227 @@ - - - - - -About meshing algorithms - - - - - - - - - - - - -

Defining meshing algorithms

- -

The MESH module contains a set of meshing algorithms, - which are used for meshing entities (1D, 2D, 3D) composing geometrical - objects. They are as follows:

- -

 

- -
    - -
  • For meshing of 1D entities (edges):

  • -
- -

 

- -
    - -
      - -
    • Wire Discretization meshing algorithm

    • -
    -
- -

 

- -
    - -
  • For meshing of 2D entities (faces):

  • -
- -

 

- -
    - -
      - -
    • Triangle meshing algorithm - Faces are split - into triangular elements.

    • - -
    • Quadrangle meshing algorithm - Faces are split - into quadrangular elements.

    • -
    -
- -

 

- - --- - - - -
-

-

- -

 

- -

 

- -
    - -
  • For meshing of 3D entities (volume - objects):

  • -
- -

 

- -
    - -
      - -
    • Hexahedron meshing algorithm - Volumes are - split into hexahedral (cubic) elements.

    • - -
    • Tetrahedron (Netgen) meshing algorithm - Volumes - are split into tetrahedral (pyramidal) elements.

    • -
    -
- -

 

- - --- - - - -
-

-

- -

 

- -

To apply a meshing algorithm:

- -

Select this algorithm in the Create Mesh dialog box.

- -

 

- -

See Also - a sample TUI Script of a Define - Meshing Algorithm operation.  

- -

 

- - - - + + + + + +About meshing algorithms + + + + + + + + + + + + + +

Defining meshing algorithms

+ +

The MESH module contains a set of meshing algorithms, + which are used for meshing entities (1D, 2D, 3D) composing geometrical + objects. They are as follows:

+ +

 

+ +
    + +
  • For meshing of 1D entities (edges):

  • +
+ +

 

+ +
    + +
      + +
    • Wire Discretization meshing algorithm

    • +
    +
+ +

 

+ +
    + +
  • For meshing of 2D entities (faces):

  • +
+ +

 

+ +
    + +
      + +
    • Triangle meshing algorithm - Faces are split + into triangular elements.

    • + +
    • Quadrangle meshing algorithm - Faces are split + into quadrangular elements.

    • +
    +
+ +

 

+ + +++ + + + +
+

+

+ +

 

+ +

 

+ +
    + +
  • For meshing of 3D entities (volume + objects):

  • +
+ +

 

+ +
    + +
      + +
    • Hexahedron meshing algorithm - Volumes are + split into hexahedral (cubic) elements.

    • + +
    • Tetrahedron (Netgen) meshing algorithm - Volumes + are split into tetrahedral (pyramidal) elements.

    • +
    +
+ +

 

+ + +++ + + + +
+

+

+ +

 

+ +

To apply a meshing algorithm:

+ +

Select this algorithm in the Create Mesh dialog box.

+ +

 

+ +

See Also + a sample TUI Script of a Define + Meshing Algorithm operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/about_quality_controls.htm b/doc/salome/gui/SMESH/files/about_quality_controls.htm index f52da280f..e8bd41667 100755 --- a/doc/salome/gui/SMESH/files/about_quality_controls.htm +++ b/doc/salome/gui/SMESH/files/about_quality_controls.htm @@ -1,168 +1,175 @@ - - - - - -About quality controls - - - - - - - - - - - -

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 1D, 2D and 3D quality controls. -

- -

  

- -

1D mesh quality controls:

- -

 

- - - -

 

- -

2D mesh quality controls:

- -

 

- - - - - -

 

- -

3D mesh quality controls:

- -

 

- - - -

 

- - - - + + + + + +About quality controls + + + + + + + + + + + + +

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 1D, 2D and 3D quality controls. +

+ +

  

+ +

1D mesh quality controls:

+ +

 

+ + + +

 

+ +

2D mesh quality controls:

+ +

 

+ + + + + +

 

+ +

3D mesh quality controls:

+ +

 

+ + + +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/adding_nodes_and_elements.htm b/doc/salome/gui/SMESH/files/adding_nodes_and_elements.htm index 420454e40..014d6120d 100755 --- a/doc/salome/gui/SMESH/files/adding_nodes_and_elements.htm +++ b/doc/salome/gui/SMESH/files/adding_nodes_and_elements.htm @@ -1,291 +1,303 @@ - - - - - -Adding nodes and elements - - - - - - - - - - - -

Adding nodes and elements

- -

In SMESH you can add to your mesh different elements such as:

- -

 

- - - -

 

- -

To add a node or an element to your mesh:

- -

 

- -

1. Select your mesh in the Object Browser - or in the 3D viewer.

- -

 

- -

2. From the Modification - menu choose the Add item, - the following associated submenu will appear:

- -

 

- -

- -

 

- -

 

- -

From this submenu select the type of element - which you would like to add to your mesh.

- -

 

- -

  See - Also sample TUI Scripts of  Adding - Nodes and Elements operations. -  

- -

 

- -

Adding nodes

- -

     

- -

 

- -

In this dialog box set coordinates for your - node in the Coordinates set of - fields and click the Apply or - OK button. Your node will be created:

- -

 

- -

Adding edges

- -

 

- -

      

- -

 

- -

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 - OK button. Your edge will be created:

- -

 

- -

Adding triangles

- -

 

- -

        

- -

 

- -

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 - OK button. Your triangle will - be created:

- -

 

- -

Adding quadrangles

- -

        

- -

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 - OK button. Your quadrangle will - be created:

- -

 

- -

Adding polygons

- -

          

- -

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 - OK button.

- -

 

- -

Adding tetrahedrons

- -

- -

 

- -

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 - OK button. Your tetrahedron will - be created:

- -

 

- -

- -

Adding hexahedrons

- -

- -

 

- -

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 - OK button. Your hexahedron will - be created:

- -

 

- -

 

- -

- -

 

- -

Adding polyhedrons

- -

        

- -

 

- -

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 OK - button. Your hexahedron will be - created.

- -

 

- -

 

- -

 

- - - - + + + + + +Adding nodes and elements + + + + + + + + + + + + +

Adding nodes and elements

+ +

In MESH you can add to your mesh different elements such as:

+ +

 

+ + + +

 

+ +

To add a node or an element to your mesh:

+ +

 

+ +

1. Select your mesh in the Object Browser + or in the 3D viewer.

+ +

 

+ +

2. From the Modification + menu choose the Add item, + the following associated submenu will appear:

+ +

 

+ +

+ +

 

+ +

From this submenu select the type of element + which you would like to add to your mesh.

+ +

 

+ +

  See + Also sample TUI Scripts of  Adding + Nodes and Elements operations. +  

+ +

 

+ +

Adding nodes

+ +

    

+ +

 

+ +

 

+ +

 

+ +

In this dialog box set coordinates for your + node in the Coordinates set of + fields and click the Apply or + OK button. Your node will be created:

+ +

 

+ +

Adding edges

+ +

 

+ +

      

+ +

 

+ +

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 + OK button. Your edge will be created:

+ +

 

+ +

Adding triangles

+ +

 

+ +

        

+ +

 

+ +

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 + OK button. Your triangle will + be created:

+ +

 

+ +

Adding quadrangles

+ +

        

+ +

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 + OK button. Your quadrangle will + be created:

+ +

 

+ +

Adding polygons +

+ +

          

+ +

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 + OK button.

+ +

 

+ +

Adding tetrahedrons

+ +

+ +

 

+ +

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 + OK button. Your tetrahedron will + be created:

+ +

 

+ +

+ +

Adding hexahedrons

+ +

+ +

 

+ +

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 + OK button. Your hexahedron will + be created:

+ +

 

+ +

 

+ +

+ +

 

+ +

Adding polyhedrons

+ +

        

+ +

 

+ +

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 OK + button. Your hexahedron will be + created.

+ +

 

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/area_of_elements.htm b/doc/salome/gui/SMESH/files/area_of_elements.htm index d92aa5ef3..5947a248c 100755 --- a/doc/salome/gui/SMESH/files/area_of_elements.htm +++ b/doc/salome/gui/SMESH/files/area_of_elements.htm @@ -1,133 +1,138 @@ - - - - - -Area of elements - - - - - - - - - - - - -

Area

- -

Area mesh quality - control is based on the algorithm of area calculation of  meshing - elements . It can be applied to meshes consisting of 2D meshing elements - with 3 and 4 nodes (triangles and quadrangles).    

- -

 

- -

To apply the Area quality control to your mesh:

- -

 

- -

1. Display your mesh in the viewer.

- -

 

- -

2. Choose Controls - > Area or click button. Your mesh will be displayed - in the viewer with its elements colored according to the applied mesh - quality control criterion:

- -

 

- -

 

- -

- -

 

- -

See Also - a sample TUI Script of an Area - quality control operation.  

- -

 

- -

 

- - - - + + + + + +Area of elements + + + + + + + + + + + + + +

Area

+ +

Area mesh quality + control is based on the algorithm of area calculation of  meshing + elements. It can be applied to meshes consisting of 2D meshing elements + with 3 and 4 nodes (triangles and quadrangles).    

+ +

 

+ +

To apply the Area quality control to your mesh:

+ +

 

+ +

1. Display your mesh in the viewer.

+ +

 

+ +

2. Choose Controls + > Area or click button. Your mesh will be displayed + in the viewer with its elements colored according to the applied mesh + quality control criterion:

+ +

 

+ +

 

+ +

+ +

 

+ +

See Also + a sample TUI Script of an Area + quality control operation.  

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/arithmetic_1d.htm b/doc/salome/gui/SMESH/files/arithmetic_1d.htm index ead4f03b7..e6cac0059 100755 --- a/doc/salome/gui/SMESH/files/arithmetic_1d.htm +++ b/doc/salome/gui/SMESH/files/arithmetic_1d.htm @@ -1,254 +1,330 @@ - - - - - -Arithmetic 1D - - - - - - - - - - - - -

1D Meshing Hypotheses

- -

Arithmetic 1D hypothesis

- -

Arithmetic 1D 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.

- -

 

- -

     

- -

 

- -

See Also - a sample TUI Script of a Defining - Arithmetic 1D hypothesis operation.  

- -

Deflection 1D hypothesis

- -

Deflection ID hypothesis can - be applied for meshing curvilinear edges composing your geometrical object. - It uses only one parameter: the value of deflection.  

- -

A geometrical edge is divided into equal segments. The maximum distance - between a point on the edge within a segment and the line connecting the - ends of the segment should not exceed the specified value of deflection - . Then mesh nodes are constructed at end segment locations and 1D mesh - elements are constructed on segments.

- -

 

- -

      

- -

 

- -

See Also - a sample TUI Script of a Defining - Deflection 1D hypothesis operation.  

- -

 

- -

- -

Average Length hypothesis

- -

Average 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 split these edges. The points on the edges generated - by these segments will represent nodes of your mesh. Later these nodes - will be used for meshing of the faces abutting to these edges.

- -

 

- -

       

- -

 

- -

See Also - a sample TUI Script of a Defining - Average Length hypothesis operation.  

- -

 

- -

- -

Number of segments hypothesis

- -

Number of segments hypothesis - can be applied for meshing of edges composing your geometrical object. - Definition of this hypothesis consists of setting the number - of segments, which will split these edges. In other words your edges will - be split into a definite number of segments with approximately the same - length. The points on the edges generated by these segments will represent - nodes of your mesh. Later these nodes will be used for meshing of the - faces abutting to these edges.

- -

 

- -

You can set the type of distribution for this - hypothesis in the Hypothesis Construction - dialog bog :

- -

 

- -

Equidistant - Distribution - all segments will have the same length

- -

         

- -

 

- -

Scale Distribution - each - next segment differs from the previous according to the formula: - Ai+1 = Ai - * k, where k is - Scale Factor

- -

\

- -

 

- -

Distribution with Table Density - you - input a number of pairs t - F(t) and - the program computes the formula, which will rule the change of length - of segments.

- -

 

- -

- -

 

- -

Distribution with Analytic Density - you input the formula, which will rule the - change of length of segments

- -

- -

See Also - a sample TUI Script of a Defining - Number of Segments hypothesis operation.  

- -

 

- -

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 each but the - first segment differs from length of the previous one by a constant factor. - Then mesh nodes are constructed at segment ends location and 1D mesh elements - are constructed on them.

- -

 

- -

      

- -

 

- -

See Also - a sample TUI Script of a Defining - Start and End Length  hypothesis - operation.  

- -

 

- - - - + + + + + +Arithmetic 1D + + + + + + + + + + + + + +

1D Meshing Hypotheses

+ + + +

Arithmetic 1D hypothesis

+ +

Arithmetic 1D 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.

+ +

 

+ +

     

+ +

 

+ +

See Also + a sample TUI Script of a Defining + Arithmetic 1D hypothesis operation.  

+ +

Deflection 1D hypothesis

+ +

Deflection ID hypothesis can + be applied for meshing curvilinear edges composing your geometrical object. + It uses only one parameter: the value of deflection.  

+ +

A geometrical edge is divided into equal segments. The maximum distance + between a point on the edge within a segment and the line connecting the + ends of the segment should not exceed the specified value of deflection + . Then mesh nodes are constructed at end segment locations and 1D mesh + elements are constructed on segments.

+ +

 

+ +

      

+ +

 

+ +

See Also + a sample TUI Script of a Defining + Deflection 1D hypothesis operation.  

+ +

 

+ +

+ +

Average Length hypothesis

+ +

Average 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 split these edges. The points on the edges generated + by these segments will represent nodes of your mesh. Later these nodes + will be used for meshing of the faces abutting to these edges.

+ +

 

+ +

       

+ +

 

+ +

See Also + a sample TUI Script of a Defining + Average Length hypothesis operation.  

+ +

 

+ +

+ +

Number of segments hypothesis

+ +

Number of segments hypothesis + can be applied for meshing of edges composing your geometrical object. + Definition of this hypothesis consists of setting the number + of segments, which will split these edges. In other words your edges will + be split into a definite number of segments with approximately the same + length. The points on the edges generated by these segments will represent + nodes of your mesh. Later these nodes will be used for meshing of the + faces abutting to these edges.

+ +

 

+ +

You can set the type of distribution for this + hypothesis in the Hypothesis Construction + dialog bog :

+ +

 

+ +

Equidistant + Distribution - all segments will have the same length, you define + only the Number of Segments.

+ +

 

+ +

         

+ +

 

+ +

Scale Distribution - each + next segment differs from the previous according to the formula: + Ai+1 = Ai + * k, where k is + a Scale Factor.

+ +

\

+ +

 

+ +

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 the curve in the plot. You can select the Conversion + mode from Exponent + and Cut negative.

+ +

 

+ +

+ +

 

+ +

Distribution with Analytic Density - you input the formula, which will rule the + change of length of segments and the module shows the curve in the plot.

+ +

+ +

See Also + a sample TUI Script of a Defining + Number of Segments hypothesis operation.  

+ +

 

+ +

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 each but the + first segment differs from length of the previous one by a constant factor. + Then mesh nodes are constructed at segment ends location and 1D mesh elements + are constructed on them.

+ +

 

+ +

      

+ +

 

+ +

See Also + a sample TUI Script of a Defining + Start and End Length  hypothesis + operation.  

+ +

 

+ +

Automatic Length

+ +

This hypothesis is automatically applied when you select Assign + a set of hypotheses option in Create Mesh menu.

+ +

 

+ +

+ +

 

+ +

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 elements) to 1 (extremely fine + mesh, great number of elements). Compare one and the same object (sphere) + meshed with minimum and maximum value of this parameter.

+ +

 

+ +

   

+ +

 

+ +

 

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/aspect_ratio.htm b/doc/salome/gui/SMESH/files/aspect_ratio.htm index 37b4dea75..d10a24b01 100755 --- a/doc/salome/gui/SMESH/files/aspect_ratio.htm +++ b/doc/salome/gui/SMESH/files/aspect_ratio.htm @@ -1,164 +1,212 @@ - - - - - -Aspect Ratio - - - - - - - - - - - - -

Aspect Ratio

- -

The Aspect Ratio - quality criterion for mesh elements is defined as follows:

- -

 

- -
    - -
  • For a triangle - 2D element consisting of 3 nodes the Aspect - Ratio is calculated by formula: -

     

    - -

    - -

    - -

    where :

    - -

     

    - -

    - -

     

    - -

     

    -
  • - -
  • For a quadrangle - 2D element consisting of 4 nodes  the - Aspect Ratio is the - quality of the worst triange which can be built taking three nodes of - the quadrangle. There are four triangles to consider:

  • - -

    - -
- - -

To apply the Aspect Ratio quality criterion to your mesh:

- -

 

- -

1. Display your mesh in the viewer.

- -

 

- -

2. Choose Controls - > Aspect Ratio or click button in the toolbar. - Your mesh will be displayed in the viewer with its elements colored according - to the applied mesh quality control criterion:

- -

 

- -

- -

 

- -

See Also - a sample TUI Script of an Aspect - Ratio quality control operation.  

- -

 

- - - - + + + + + +Aspect Ratio + + + + + + + + + + + + + +

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 + criterion can be defined as

+ +

where К + is the considered element of the mesh, hmax is the diameter of the element + К (i.e. the length of the longest edge), рк is the radius of the sphere + inscribed in the element K, and a + is a normalisation value chosen so that QK = 1 when К is an equilateral + simplex.

+ +

 

+ +

The value of QK varies between 1 and +oo and the + closer it is to 1, the better the element К is.

+ +
    + +
  • The Aspect Ratio + of a triangle 2D element consisting + of 3 nodes is calculated by the formula:

  • +
+ +

 

+ +

+ +

,

+ +

 

+ +

where рк is the half perimeter of the + element K and SK is its surface.

+ +

 

+ +

+ +

 

+ +
    + +
  • The Aspect + Ratio of a quadrangle 2D + element consisting of 4 nodes is the worst (i.e. the greatest) value from + all triangles which can be built taking three nodes of the quadrangle. + There are four triangles to consider:

  • +
+ +

+ +

Note, that the Aspect Ratio criterion is + applicable to 2D mesh elements only. For 3D elements we use the Aspect + Ratio 3D criterion.   

+ +

 

+ +

To apply the Aspect Ratio quality criterion to your mesh:

+ +

 

+ +

1. Display your mesh in the viewer.

+ +

 

+ +

2. Choose Controls + > Aspect Ratio or click button in the toolbar. + Your mesh will be displayed in the viewer with its elements colored according + to the applied mesh quality control criterion:

+ +

 

+ +

+ +

 

+ +

See Also + a sample TUI Script of an Aspect + Ratio quality control operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/changing_orientation_of_elements.htm b/doc/salome/gui/SMESH/files/changing_orientation_of_elements.htm index fa7317e1d..c282fe13b 100755 --- a/doc/salome/gui/SMESH/files/changing_orientation_of_elements.htm +++ b/doc/salome/gui/SMESH/files/changing_orientation_of_elements.htm @@ -1,148 +1,159 @@ - - - - - -Changing orientation of elements - - - - - - - - - - - -

Changing orientation of elements

- -

Orientation of an element is changed by reverting the order of nodes - of the selected elements.

- -

 

- -

To change orientation of elements:

- -

 

- -

1. Display a mesh or a submesh in the 3D - viewer.

- -

 

- -

2. In the Modification - menu select the Orientation item - or click button in the toolbar. The following dialog box - will appear:

- -

 

- -

 

- -

- -

 

- -

 

- -
    - -
  • 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 filter to selection of elements - of your group.

  • - -
  • Apply to all radio button allows - to modify the orientation of all elements of the currently displayed mesh - or submesh.

  • - -
  • Select from set of fields allows to - choose a submesh or an existing group whose elements will be automatically - added to the list.

  • -
- -

 

- -

3. Click the Apply - or OK button to confirm - the operation.

- -

 

- - - - + + + + + +Changing orientation of elements + + + + + + + + + + + + +

Changing orientation of elements

+ +

Orientation of an element is changed by reverting the order of nodes + of the selected elements.

+ +

 

+ +

To change orientation of elements:

+ +

 

+ +

1. Display a mesh or a submesh in the 3D + viewer.

+ +

 

+ +

2. In the Modification + menu select the Orientation item + or click button in the toolbar. The following dialog box + will appear:

+ +

 

+ +

 

+ +

+ +

 

+ +

 

+ +
    + +
  • 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 filter to selection of elements + of your group.

  • + +
  • Apply to all radio button allows + to modify the orientation of all elements of the currently displayed mesh + or submesh.

  • + +
  • Select from set of fields allows to + choose a submesh or an existing group whose elements will be automatically + added to the list.

  • +
+ +

 

+ +

3. Click the Apply + or OK button to confirm + the operation.

+ +

 

+ +

  See + Also a sample TUI Script of a Change + Orientation operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/constructing_groups_of_specific_elements.htm b/doc/salome/gui/SMESH/files/constructing_groups_of_specific_elements.htm index db59e9e80..0b8e2f5e6 100755 --- a/doc/salome/gui/SMESH/files/constructing_groups_of_specific_elements.htm +++ b/doc/salome/gui/SMESH/files/constructing_groups_of_specific_elements.htm @@ -1,98 +1,103 @@ - - - - - -Constructing groups of specific elements - - - - - - - - - - - -

Constructing groups of specific elements

- -

In MESH you can easily construct groups of specific elements (nodes, - edges, faces or volumes) which will be taken from a definite submesh.

- -

 

- -

To construct a group of specific elements:

- -

 

- -

Right-click on a submesh in the Object Browser - and choose the Construct Group item - or select your submesh in the Object Browser and in the Mesh - menu choose the Construct Group - item. MESH will construct several groups consisting of elements - of the definite type: nodes, edges, faces or volumes.

- - - - + + + + + +Constructing groups of specific elements + + + + + + + + + + + + +

Constructing groups of specific elements

+ +

In MESH you can easily construct groups of specific elements (nodes, + edges, faces or volumes) which will be taken from a definite submesh.

+ +

 

+ +

To construct a group of specific elements:

+ +

 

+ +

Right-click on a submesh in the Object Browser + and choose the Construct Group item + or select your submesh in the Object Browser and in the Mesh + menu choose the Construct Group + item. MESH will construct several groups consisting of elements + of the definite type: nodes, edges, faces or volumes.

+ + + + diff --git a/doc/salome/gui/SMESH/files/constructing_meshes.htm b/doc/salome/gui/SMESH/files/constructing_meshes.htm index 481c03285..1098a35d5 100755 --- a/doc/salome/gui/SMESH/files/constructing_meshes.htm +++ b/doc/salome/gui/SMESH/files/constructing_meshes.htm @@ -1,206 +1,209 @@ - - - - - -Constructing meshes - - - - - - - - - - - - -

Constructing meshes

- -

Construction of a mesh consists of:

- -

 

- -
    - -
  • Selecting a geometrical - object for meshing

  • - -
  • Applying meshing - algorithms and hypotheses which - will be used at computation of this mesh.

  • -
- -

 

- -

To construct a mesh:

- -

1. In the Mesh - menu select Create Mesh or - click button in the toolbar. The following dialog box will - appear:

- -

 

- -

- -

 

- -

2. For example, you need to mesh a 3d object. -

- -

First, type the name for your mesh in the - "Name" box, by default, it is "Mesh_1". Then select - the object you wish to mesh in the Object Browser and click - the "Add" button.

- -

Now you can define 1d Algorithm and 1d Hypotheses, - which will be applied to the edges of your object. (Note that any object - has edges, even if their existence is not apparent, for example, a sphere - has 4 edges). Click the   button to add a hypothesis. Click the button - to define values for the current hypothesis. The use of additional hypotheses - is optional (i.e. you may leave "None" in this box).   

- -

 

- -

Proceed in the same way with 2d and 3d Algorithms - and Hypotheses, note that the choice of hypotheses depends on the algorithm. - There must be one Algorithm and one 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 don't need to define - 3d Algorithm and Hypotheses.

- -

In the Object - Browser the structure of the new mesh will be displayed as follows:

- -

It contains:

- -
    - -
  • a reference to the - geometrical object on the basis of which the mesh has been constructed;

  • - -
  • Applied - hypotheses folder containing the references to the hypotheses applied - to the construction of the mesh;

  • - -
  • Applied - algorithms folder containing the references to the algorithms applied - to the construction of the mesh.

  • -
- -

 

- -

There is an alternative way to create a mesh - on an object simply by clicking Assign - a set of hypotheses button and selecting between Automatic Tetrahedralization - or Hexahedralization.  The - program will automatically generate a 3D mesh with the most appropriate - settings. In the same way you can apply this functionality for meshing - 2D objects, in which case 3D algorithms are not applied.

- -

 

- -

3. Now, when everything is ready, select - your mesh in the Object Browser. -  From - the Mesh menu select Compute or click button of the toolbar.

- -

If you've done everything right, you'll obtain - something like this.

- -

Consider trying a sample script for construction - of a mesh from our TUI Scripts - section.

- -

 

- -

 

- - - - + + + + + +Constructing meshes + + + + + + + + + + + + + +

Constructing meshes

+ +

Construction of a mesh consists of:

+ +

 

+ +
    + +
  • Selecting a geometrical + object for meshing

  • + +
  • Applying meshing + algorithms and hypotheses which + will be used at computation of this mesh.

  • +
+ +

 

+ +

To construct a mesh:

+ +

1. In the Mesh + menu select Create Mesh or + click button in the toolbar. The following dialog box will + appear:

+ +

 

+ +

+ +

 

+ +

2. For example, you need to mesh a 3d object. +

+ +

First, type the name for your mesh in the + "Name" box, by default, it is "Mesh_1". Then select + the object you wish to mesh in the Object Browser and click + the "Add" button.

+ +

Now you can define 1d Algorithm and 1d Hypotheses, + which will be applied to the edges of your object. (Note that any object + has edges, even if their existence is not apparent, for example, a sphere + has 4 edges). Click the   button to add a hypothesis. Click the button + to define values for the current hypothesis. The use of additional hypotheses + is optional (i.e. you may leave "None" in this box).   

+ +

 

+ +

Proceed in the same way with 2d and 3d Algorithms + and Hypotheses, note that the choice of hypotheses depends on the algorithm. + There must be one Algorithm and one 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 don't need to define + 3d Algorithm and Hypotheses.

+ +

In the Object + Browser the structure of the new mesh will be displayed as follows:

+ +

It contains:

+ +
    + +
  • a reference to the + geometrical object on the basis of which the mesh has been constructed;

  • + +
  • Applied + hypotheses folder containing the references to the hypotheses applied + to the construction of the mesh;

  • + +
  • Applied + algorithms folder containing the references to the algorithms applied + to the construction of the mesh.

  • +
+ +

 

+ +

There is an alternative way to create a mesh + on an object simply by clicking Assign + a set of hypotheses button and selecting between Automatic Tetrahedralization + or Hexahedralization.  The + program will automatically generate a 3D mesh with the most appropriate + settings. In the same way you can apply this functionality for meshing + 2D objects, in which case 3D algorithms are not applied.

+ +

 

+ +

3. Now, when everything is ready, select + your mesh in the Object Browser. +  From the + Mesh menu select + Compute or click button of the toolbar.

+ +

 

+ +

Consider trying a sample script for construction + of a mesh from our TUI Scripts + section.

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/constructing_submeshes.htm b/doc/salome/gui/SMESH/files/constructing_submeshes.htm index e09d47b80..9e0adf408 100755 --- a/doc/salome/gui/SMESH/files/constructing_submeshes.htm +++ b/doc/salome/gui/SMESH/files/constructing_submeshes.htm @@ -1,172 +1,185 @@ - - - - - -Constructing submeshes - - - - - - - - - - - - -

Constructing submeshes

- -

Construction of a submesh consists of:

- -

 

- -
    - -
  • Selecting a mesh which - will encapsulate your submesh

  • - -
  • Selecting a geometrical - object for meshing

  • - -
  • Applying one or several - previously hypotheses and meshing - algorithms which will be used at computation of this submesh.

  • -
- -

 

- -

To construct a submesh:

- -

 

- -

From the Mesh - menu select Local Hyp. or - click button in the toolbar. The following dialog box will - appear:

- -

 

- -

- -

 

- -

 

- -

In the Object Browser the structure of the - new submesh will be displayed as follows:

- -

 

- -

- -

 

- -

It contains:

- -

 

- -
    - -
  • a reference to the - geometrical object on the basis of which the submesh has been constructed;

  • - -
  • Applied - hypotheses folder containing the references to the hypotheses applied - to the construction of the submesh;

  • - -
  • Applied - algorithms folder containing the references to the algorithms applied - to the construction of the submesh.

  • -
- -

 

- -

 

- -

See Also - a sample TUI Script of a Construct - Submesh operation.  

- -

 

- - - - + + + + + +Constructing submeshes + + + + + + + + + + + + + +

Constructing submeshes

+ +

Construction of a submesh consists of:

+ +

 

+ +
    + +
  • Selecting a mesh which + will encapsulate your submesh

  • + +
  • Selecting a geometrical + object for meshing

  • + +
  • Applying one or several + previously hypotheses and meshing + algorithms which will be used at computation of this submesh.

  • +
+ +

 

+ +

To construct a submesh:

+ +

 

+ +

From the Mesh + menu select Local Hyp. or + click button in the toolbar. The following dialog box will + appear:

+ +

 

+ +

+ +

 

+ +

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 submesh. You can define algorithms + and hypotheses in the same way as in Create + mesh menu.  

+ +

 

+ +

In the Object Browser the structure of the + new submesh will be displayed as follows:

+ +

 

+ +

+ +

 

+ +

It contains:

+ +

 

+ +
    + +
  • a reference to the + geometrical object on the basis of which the submesh has been constructed;

  • + +
  • Applied + hypotheses folder containing the references to the hypotheses applied + to the construction of the submesh;

  • + +
  • Applied + algorithms folder containing the references to the algorithms applied + to the construction of the submesh.

  • +
+ +

 

+ +

 

+ +

See Also + a sample TUI Script of a Construct + Submesh operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/creating_groups.htm b/doc/salome/gui/SMESH/files/creating_groups.htm index 1a41ccd0b..1200e5969 100755 --- a/doc/salome/gui/SMESH/files/creating_groups.htm +++ b/doc/salome/gui/SMESH/files/creating_groups.htm @@ -1,269 +1,281 @@ - - - - - -Creating groups - - - - - - - - - - - - -

Creating groups

- -

  In MESH you - can create groups of elements of different types. To create a group of - elements - in the Mesh - menu select Create Group. -

- -

To create any group - you should define the following:   

- -
    - -
  • Mesh: - the name of the mesh whose elements - will form your group. You can select your mesh in the Objet 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

    • - -
    • Edges -

    • - -
    • Faces

    • - -
    • Volumes

    • -
    - -
  • Name field allows to enter the name - of your new group.

  • -
- -

SALOME Platform distinguishes - between the two Group types: Standalone - Group and Group on Geometry. -  

- -

Standalone Group

- -

The box for creation of a Standalone - Group appears by default. Standalone - Group consists of mesh elements, which you can define in two possible - ways.

- -
    - -
  • Choosing them manually - with the mouse in the 3D Viewer. 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.

  • - -
  • Applying Filters. The - Set filter button allows to apply - a definite filter to selection of the elements of your group. See more - about filters on the Selection - filter library page.   

  • -
- -

To remove a selected element or elements - from the list click the Remove button. - The Sort List button allows to - sort the list of IDs of mesh elements.

- -

Select from - set of fields allows to choose a submesh or an existing group whose - elements of the previously defined type will be added to the list of elements - which will form your group.

- -

 

- - --- - - - -
-

-

  

-

 

-

 

-

 

-

 

-

 

-

In this picture the brown cells belong to - a group defined manually.

-

 

-

  In this picture the brown cells belong to the group defined - by the criterion
-Taper > 0.

-

 

-

 

- -

 

- -

   See - Also a sample TUI Script of a Create - a Standalone Group operation.  

- -

Group on Geometry

- -

To create a group on - geometry check Group on geometry - in the Group type field. Group on geometry contains the elements - of a certain type belonging to the selected - geometrical object. To define a group select in the Objet Browser - or in the 3D viewer a geometrical object from which the elements will - be taken. After confirmation of the operation MESH will create a new group - of mesh elements.

- -

 

- - --- - - - -
-

-

In this picture the cells which belong to a certain face - are selected in green.

- -

 

- -

   See - Also a sample TUI Script of a Create - a Group on Geometry operation. -  

- -

 

- -

 

- -

 

- -

 

- -

 

- - - - + + + + + +Creating groups + + + + + + + + + + + + + +

Creating groups

+ +

  In MESH you + can create groups of elements of different types. To create a group of + elements + in the Mesh + menu select Create Group. +

+ +

To create any group + you should define the following:   

+ +
    + +
  • Mesh: + the name of the mesh whose elements + will form your group. You can select your mesh in the Objet 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

    • + +
    • Edges +

    • + +
    • Faces

    • + +
    • Volumes

    • +
    + +
  • Name field allows to enter the name + of your new group.

  • +
+ +

SALOME Platform distinguishes + between the two Group types: Standalone + Group and Group on Geometry. +  

+ +

Standalone Group

+ +

Standalone + Group consists of mesh elements, which you can define in two possible + ways.

+ +
    + +
  • Choosing them manually + with the mouse in the 3D Viewer. 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.

  • + +
  • Applying Filters. The + Set filter button allows to apply + a definite filter to selection of the elements of your group. See more + about filters on the Selection + filter library page.   

  • +
+ +

To remove a selected element or elements + from the list click the Remove button. + The Sort List button allows to + sort the list of IDs of mesh elements.

+ +

Select from + set of fields allows to choose a submesh or an existing group whose + elements of the previously defined type will be added to the list of elements + which will form your group.

+ +

Color Number + (integer only, ranging from 0 to 9999) - allows to assign to the group + a certain index, for example, defining boundary conditions. This feature + introduces a useful element of preprocessing in Mesh module. Note that + Color number attribute has nothing + to do with the colors used for the display of the elements of the group.

+ +

 

+ + +++ + + + +
+

+

  

+

 

+

 

+

 

+

 

+

 

+

In this picture the brown cells belong to + a group defined manually.

+

 

+

  In this picture the brown cells belong to the group defined + by the criterion
+Taper > 0.

+

 

+

 

+ +

 

+ +

   See + Also a sample TUI Script of a Create + a Standalone Group operation.  

+ +

Group on Geometry

+ +

To create a group on + geometry check Group on geometry + in the Group type field. Group on geometry contains the elements + of a certain type belonging to the selected + geometrical object. To define a group select in the Objet Browser + or in the 3D viewer a geometrical object from which the elements will + be taken. After confirmation of the operation a new group of mesh elements + will be created.

+ +

 

+ + +++ + + + +
+

+

In this picture the cells which belong to a certain face + are selected in green.

+ +

 

+ +

   See + Also a sample TUI Script of a Create + a Group on Geometry operation. +  

+ +

 

+ +

 

+ +

 

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/cutting_quadrangles.htm b/doc/salome/gui/SMESH/files/cutting_quadrangles.htm index d9b1e31e6..3ffa9a6ae 100755 --- a/doc/salome/gui/SMESH/files/cutting_quadrangles.htm +++ b/doc/salome/gui/SMESH/files/cutting_quadrangles.htm @@ -1,194 +1,208 @@ - - - - - -Cutting quadrangles - - - - - - - - - - - - -

Cutting quadrangles

- -

This operation allows to cut one or several quadrangle - elements by addition of a supplementary edge which will connect two opposite - corners.

- -

 

- -

To cut quadrangles:

- -

 

- -

1. Display a mesh or a submesh in the 3D - viewer.

- -

2. In the Modification - menu select the Cutting of quadrangles - item or click button in the toolbar. The following - dialog box will appear:

- -

 

- -

- -

 

- -
    - -
  • The main list shall contain the quadrangles - which will be cutted. You can click on an quadrangle in the 3D viewer - and it will be highlighted. After that click the 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 the Remove button. The Sort - button allows to sort the list of IDs. The Filter button allows to apply a definite - filter to selection of quadrangles.

  • - -
  • Apply to all radio button allows to - modify the orientation of all quadrangles of the currently displayed mesh - or submesh.

  • - -
  • Use diagonal 2-4 radio button allows - to specify the opposite corners which will be connected by the cutting - edge.

  • - -
  • Preview -

  • - -
  • Criterion menu allows to apply the operation - only to those object which meet the chosen criterion (from the list of - Quality Controls, i.e. Skew, Warping, Minimum Angle, etc.)

  • - -
  • Select from set of fields allows to - choose a submesh or an existing group whose quadrangle elements will be - automatically added to the list.

  • -
- -

 

- -

3. Click the Apply - or OK button to confirm - the operation.

- -

 

- - --- - - - -
-

-

- -

 

- -

  See - Also a sample TUI Script of a Cutting - Quadrangles operation.  

- -

 

- - - - + + + + + +Cutting quadrangles + + + + + + + + + + + + + +

Cutting quadrangles

+ +

This operation allows to cut one or several quadrangle + elements by addition of a supplementary edge which will connect two opposite + corners.

+ +

 

+ +

To cut quadrangles:

+ +

 

+ +

1. Display a mesh or a submesh in the 3D + viewer.

+ +

2. In the Modification + menu select the Cutting of quadrangles + item or click button in the toolbar. The following + dialog box will appear:

+ +

 

+ +

+ +

 

+ +
    + +
  • The + main list contains the list of + quadrangles. You can click on an 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 to sort the + list of IDs. Filter + button allows to apply a definite + filter to the selection of quadrangles.

  • + +
  • Apply to all radio button allows to + modify the orientation of all quadrangles of the currently displayed mesh + or submesh.

  • + +
  • Preview + - provides a preview of cutting in + the viewer.

  • + +
  • Criterion

  • + +
  • Use diagonal 1-3 and + Use diagonal 2-4  allows + to specify the opposite corners which will be connected by the cutting + edge.

  • + +
  • Use + numeric factor -  allows + to apply the operation only to those objects which meet the chosen criterion + (from the list of Quality Controls, i.e. Skew, Warping, Minimum Angle, + etc.)

  • + +
  • Select + from - allows to choose a submesh or an existing group whose quadrangle + elements will be automatically added to the list.

  • +
+ +

 

+ +

3. Click the Apply + or OK button to confirm + the operation.

+ +

 

+ + +++ + + + +
+

+

+ +

 

+ +

  See + Also a sample TUI Script of a Cutting + Quadrangles operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/diagonal_iversion_of_elements.htm b/doc/salome/gui/SMESH/files/diagonal_iversion_of_elements.htm index 871430041..3976832f6 100755 --- a/doc/salome/gui/SMESH/files/diagonal_iversion_of_elements.htm +++ b/doc/salome/gui/SMESH/files/diagonal_iversion_of_elements.htm @@ -1,144 +1,149 @@ - - - - - -Diagonal iversion of elements - - - - - - - - - - - -

Diagonal inversion of elements

- -

 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:

- -

 

- -

1. From the Modification - menu choose the Diagonal inversion - item or click button in the toolbar. The following - dialog box shall appear:

- -

 

- -

- -

 

- -

2. Enter the ID of the required edge in the - Edge  field - or select this edge in the 3D viewer.

- -

 

- -

3. Click the Apply - or OK button.

- -

 

- -

 

- - --- - - - -
-

-

- -

 

- -

  See - Also a sample TUI Script of a Diagonal - Inversion of Elements operation.  

- -

 

- - - - + + + + + +Diagonal iversion of elements + + + + + + + + + + + + +

Diagonal inversion of elements

+ +

 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:

+ +

 

+ +

1. From the Modification + menu choose the Diagonal inversion + item or click button in the toolbar. The following + dialog box shall appear:

+ +

 

+ +

+ +

 

+ +

2. Enter the ID of the required edge in the + Edge  field + or select this edge in the 3D viewer.

+ +

 

+ +

3. Click the Apply + or OK button.

+ +

 

+ +

 

+ + +++ + + + +
+

+

+ +

 

+ +

  See + Also a sample TUI Script of a Diagonal + Inversion of Elements operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/displacing_nodes.htm b/doc/salome/gui/SMESH/files/displacing_nodes.htm index f90a4085c..14898fac2 100755 --- a/doc/salome/gui/SMESH/files/displacing_nodes.htm +++ b/doc/salome/gui/SMESH/files/displacing_nodes.htm @@ -1,165 +1,170 @@ - - - - - -Displacing nodes - - - - - - - - - - - - -

Moving nodes

- -

In MESH you can change the location of any node of your mesh. In this - case all adjacent elements (edges) will be also transformed right after - the displaced node.

- -

 

- -

To displace a node:

- -

 

- -

1. From the Modification - menu choose the Move node item - or click button in the toolbar. The following dialog box - shall appear:

- -

 

- -

- -

 

- -

2. Enter the ID of the required node in the - Node ID  field - or select this node in the 3D viewer. The coordinates of your node will - be automatically displayed in the Coordinates - set of fields.

- -

 

- -

3. Set new coordinates for your node in the - Coordinates set of fields.

- -

 

- -

4. Click the Apply - or OK button.

- -

 

- - --- - - - -
-

-

- -

 

- -

  See - Also a sample TUI Script of a Moving - Nodes operation.  

- -

 

- -

 

- - - - + + + + + +Displacing nodes + + + + + + + + + + + + + +

Moving nodes

+ +

In MESH you can change the location of any node of your mesh. In this + case all adjacent elements (edges) will be also transformed right after + the displaced node.

+ +

 

+ +

To displace a node:

+ +

 

+ +

1. From the Modification + menu choose the Move node item + or click button in the toolbar. The following dialog box + shall appear:

+ +

 

+ +

+ +

 

+ +

2. Enter the ID of the required node in the + Node ID  field + or select this node in the 3D viewer. The coordinates of your node will + be automatically displayed in the Coordinates + set of fields.

+ +

 

+ +

3. Set new coordinates for your node in the + Coordinates set of fields.

+ +

 

+ +

4. Click the Apply + or OK button.

+ +

 

+ + +++ + + + +
+

+

+ +

 

+ +

  See + Also a sample TUI Script of a Moving + Nodes operation.  

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/displaying_nodes_numbers.htm b/doc/salome/gui/SMESH/files/displaying_nodes_numbers.htm index 4f450b7dd..94a2d5425 100755 --- a/doc/salome/gui/SMESH/files/displaying_nodes_numbers.htm +++ b/doc/salome/gui/SMESH/files/displaying_nodes_numbers.htm @@ -1,154 +1,159 @@ - - - - - -Displaying nodes numbers - - - - - - - - - - - - -

Displaying nodes numbers

- -

In MESH you can display the ID numbers of all nodes of your mesh in - the viewer.

- -

 

- -

To display ID numbers of nodes:

- -

 

- -

1. Display your mesh in the viewer

- -

 

- -

2. Right-click on the mesh in the 3D viewer - and from the associated pop-up menu choose Numbering - > Display Nodes #.

- -

 

- -

It will look like as follows:

- -

 

- -

- -

 

- -

Displaying elements 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:

- -

 

- -

1. Display your mesh in the viewer

- -

 

- -

2. Right-click on the mesh in the 3D viewer - and from the associated pop-up menu choose Numbering - > Display Elements #.

- -

 

- -

It will look like as follows:

- -

 

- -

- -

 

- -

 

- - - - + + + + + +Displaying nodes numbers + + + + + + + + + + + + + +

Displaying nodes numbers

+ +

In MESH you can display the ID numbers of all nodes of your mesh in + the viewer.

+ +

 

+ +

To display ID numbers of nodes:

+ +

 

+ +

1. Display your mesh in the viewer

+ +

 

+ +

2. Right-click on the mesh in the 3D viewer + and from the associated pop-up menu choose Numbering + > Display Nodes #.

+ +

 

+ +

It will look like as follows:

+ +

 

+ +

+ +

 

+ +

Displaying elements 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:

+ +

 

+ +

1. Display your mesh in the viewer

+ +

 

+ +

2. Right-click on the mesh in the 3D viewer + and from the associated pop-up menu choose Numbering + > Display Elements #.

+ +

 

+ +

It will look like as follows:

+ +

 

+ +

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/editing_groups.htm b/doc/salome/gui/SMESH/files/editing_groups.htm index 505cdd9b5..adf5054d3 100755 --- a/doc/salome/gui/SMESH/files/editing_groups.htm +++ b/doc/salome/gui/SMESH/files/editing_groups.htm @@ -1,131 +1,134 @@ - - - - - -Editing groups - - - - - - - - - - - - -

Editing groups

- -

To edit an existing group of elements:

- -

 

- -

1. Select your group in the Object Browser - and in the Mesh menu click the - Edit Group item or icon in the toolbar. The following dialog box will appear:

- -

 

- -

- -

 

- -

In this dialog box you can modify the name of your group and add or remove the - elements forming it. For more information see - here.

- -

 

- -

2. Click the OK - or  Apply - button to confirm modification of the group.

- -

 

- -

See Also - a sample TUI Script of an Edit - Group operation.  

- -

 

- - - - + + + + + +Editing groups + + + + + + + + + + + + + +

Editing groups

+ +

To edit an existing group of elements:

+ +

 

+ +

1. Select your group in the Object Browser + and in the Mesh menu click the + Edit Group item or icon in the toolbar. The following dialog box will appear:

+ +

 

+ +

+ +

 

+ +

In this dialog box you can modify the name of your group and add or remove the + elements forming it. For more information see + Creating Groups page.

+ +

2. Click the OK + or  Apply + button to confirm modification of the group.

+ +

 

+ +

See Also + a sample TUI Script of an Edit + Group operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/importing_and_exporting_meshes.htm b/doc/salome/gui/SMESH/files/importing_and_exporting_meshes.htm index 6b3ecf015..5d83de11e 100755 --- a/doc/salome/gui/SMESH/files/importing_and_exporting_meshes.htm +++ b/doc/salome/gui/SMESH/files/importing_and_exporting_meshes.htm @@ -1,152 +1,157 @@ - - - - - -Importing and exporting meshes - - - - - - - - - - - - -

Importing and exporting meshes

- -

In MESH there is a functionality allowing importation/exportation - of meshes from MED, UNV - format files.

- -

 

- -

To import a mesh:

- -

 

- -

1. From the File - menu choose the Import item, from - its sub-menu select the corresponding format (MED,  UNV) - of the file containing your mesh.

- -

2. In the standard Search - File dialog box find the file for importation.

- -

3. Click the OK - button.

- -

 

- -

- -

 

- -

To export a mesh:

- -

 

- -

1. Select the object you wish to export.

- -

2. From the File - menu choose the Export item, from - its sub-menu select the format (MED, UNV) of the file which will contain - your exported mesh..

- -

3. In the standard Search - File select a location for the exported file and enter its - name.

- -

4. Click the OK - button.

- -

 

- -

- -

 

- -

See Also - a sample TUI Script of an Export - Mesh operation.  

- - - - + + + + + +Importing and exporting meshes + + + + + + + + + + + + + +

Importing and exporting meshes

+ +

In MESH there is a functionality allowing importation/exportation + of meshes from MED, UNV + format files.

+ +

 

+ +

To import a mesh:

+ +

 

+ +

1. From the File + menu choose the Import item, from + its sub-menu select the corresponding format (MED,  UNV) + of the file containing your mesh.

+ +

2. In the standard Search + File dialog box find the file for importation.

+ +

3. Click the OK + button.

+ +

 

+ +

+ +

 

+ +

To export a mesh:

+ +

 

+ +

1. Select the object you wish to export.

+ +

2. From the File + menu choose the Export item, from + its sub-menu select the format (MED, UNV) of the file which will contain + your exported mesh..

+ +

3. In the standard Search + File select a location for the exported file and enter its + name.

+ +

4. Click the OK + button.

+ +

 

+ +

+ +

 

+ +

See Also + a sample TUI Script of an Export + Mesh operation.  

+ + + + diff --git a/doc/salome/gui/SMESH/files/introduction_to_smesh.htm b/doc/salome/gui/SMESH/files/introduction_to_smesh.htm deleted file mode 100755 index 4bdc32545..000000000 --- a/doc/salome/gui/SMESH/files/introduction_to_smesh.htm +++ /dev/null @@ -1,195 +0,0 @@ - - - - - -Introduction to SMESH - - - - - - - - - - - -

Introduction to MESH

- -

MESH module of - SALOME is destined for:

- -

 

- -
    - -
  • import and export of meshes in MED format,

  • - -
  • meshing geometrical models previously created - or imported by the GEOM component. MESH module allows to apply 1D, 2D, - 3D meshing algorithms and a set of hypotheses:

  • - -
      - -
    • Local length

    • - -
    • Number of segments

    • - -
    • Max Element Area

    • - -
    • Max Element Volume

    • -
    - -
  • modification of locally generated meshes by

  • - -
      - -
    • Addition/deletion of nodes and elements

    • - -
    • Moving nodes and elements

    • -
    - -
  • grouping mesh elements and performing operations - on these groups

  • - -
  • quality control of meshes basing on a set of definite - criteria -

  • -
- -

- -

 

- -

for edges:

- -

 

- -
    - -
      - -
    • Length of edges

    • - -
    • Borders at multi-connections

    • - -
    • Free borders

    • -
    -
- -

 

- -

for faces:

- -

 

- -
    - -
      - -
    • Area

    • - -
    • Free edges

    • - -
    • Borders at multi-connection 2D

    • - -
    • Length 2D

    • - -
    • Minimum angle

    • - -
    • Taper

    • - -
    • Aspect Ratio

    • - -
    • Warping

    • - -
    • Skew

    • -
    -
- -

 

- -

for solids:

- -

 

- -
    - -
      - -
    • Aspect ratio 3D

    • -
    -
- -

 

- -

 

- - - - diff --git a/doc/salome/gui/SMESH/files/length_of_edges.htm b/doc/salome/gui/SMESH/files/length_of_edges.htm index 4238a5cf4..54cf22553 100755 --- a/doc/salome/gui/SMESH/files/length_of_edges.htm +++ b/doc/salome/gui/SMESH/files/length_of_edges.htm @@ -1,132 +1,137 @@ - - - - - -Length of edges - - - - - - - - - - - - -

Length 2D

- -

This quality control criterion consists of calculation - of length of the edges combining the meshing elements (triangles and quadrangles) - of your mesh.

- -

   

- -

To apply the Length 2D quality criterion to your mesh:

- -

 

- -

1. Display your mesh in the viewer.

- -

 

- -

2. Choose Controls - > Length 2D or click button in the toolbar. Your - mesh will be displayed in the viewer with its elements colored according - to the applied mesh quality control criterion:

- -

 

- -

- -

 

- -

See Also - a sample TUI Script of a  Length - 2D quality control operation.  

- -

 

- -

 

- -

 

- - - - + + + + + +Length of edges + + + + + + + + + + + + + +

Length 2D

+ +

This quality control criterion consists of calculation + of length of the edges combining the meshing elements (triangles and quadrangles) + of your mesh.

+ +

   

+ +

To apply the Length 2D quality criterion to your mesh:

+ +

 

+ +

1. Display your mesh in the viewer.

+ +

 

+ +

2. Choose Controls + > Length 2D or click button in the toolbar. Your + mesh will be displayed in the viewer with its elements colored according + to the applied mesh quality control criterion:

+ +

 

+ +

+ +

 

+ +

See Also + a sample TUI Script of a  Length + 2D quality control operation.  

+ +

 

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/max._element_area_hypothesis.htm b/doc/salome/gui/SMESH/files/max._element_area_hypothesis.htm index e329aab17..213603d7b 100755 --- a/doc/salome/gui/SMESH/files/max._element_area_hypothesis.htm +++ b/doc/salome/gui/SMESH/files/max._element_area_hypothesis.htm @@ -1,120 +1,172 @@ - - - - - -Length from edges - - - - - - - - - - - - -

Max Element Area hypothesis

- -

Max - Element Area hypothesis is applied for meshing of 2D faces composing - your geometrical object. Definition of this hypothesis consists of setting - the maximum area of meshing elements - (depending on the chosen meshing algorithm it can be triangles - or quadrangles), which will compose - the mesh of these 2D faces.

- -

 

- -

- -

 

- -

See Also - a sample TUI Script of a Maximum - Element Area hypothesis operation.  

- -

 

- -

- - - - + + + + + +Length from edges + + + + + + + + + + + + + +

2D Meshing Hypotheses

+ + + +

Max Element Area

+ +

Max Element Area hypothesis + is applied for meshing of 2D faces composing your geometrical object. + Definition of this hypothesis consists of setting the maximum + area of meshing elements (depending on the chosen meshing algorithm + it can be triangles or quadrangles), + which will compose the mesh of these 2D faces.

+ +

 

+ +

+ +

 

+ +

See Also + a sample TUI Script of a Maximum + Element Area hypothesis operation.  

+ +

 

+ +

+ +

 

+ +

 

+ +

Length from Edges

+ +

Length from edges hypothesis + builds 2D mesh segments having a length calculated as an average edge + length for a given wire.

+ +

 

+ +

See Also + a sample TUI Script of a Length + from Edges hypothesis operation.  

+ +

 

+ +

Quadrangle Preference

+ +

This algorithm can be used only together with Quadrangle (Mapping) algorithm. + It allows to build quadrangular meshes even if the number of nodes at + the opposite edges of a meshed face is not equal, otherwise this mesh + will contain some triangular elements.

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/max._element_volume_hypothsis.htm b/doc/salome/gui/SMESH/files/max._element_volume_hypothsis.htm index 08e40aa0a..b9be27030 100755 --- a/doc/salome/gui/SMESH/files/max._element_volume_hypothsis.htm +++ b/doc/salome/gui/SMESH/files/max._element_volume_hypothsis.htm @@ -1,116 +1,122 @@ - - - - - -Non conform mesh allowed hypothesis - - - - - - - - - - - - -

Max Element Volume hypothesis

- -

Max - Element Area 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.

- -

 

- -

- -

 

- -

See Also - a sample TUI Script of a Maximum - Element Volume hypothesis operation.  

- -

 

- - - - + + + + + +Non conform mesh allowed hypothesis + + + + + + + + + + + + + +

Max Element Volume hypothesis

+ +

Max + Element Area 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.

+ +

 

+ +

+ +

 

+ +

See Also + a sample TUI Script of a Maximum + Element Volume hypothesis operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/merging_nodes.htm b/doc/salome/gui/SMESH/files/merging_nodes.htm index fd010796e..b762170ce 100755 --- a/doc/salome/gui/SMESH/files/merging_nodes.htm +++ b/doc/salome/gui/SMESH/files/merging_nodes.htm @@ -1,126 +1,131 @@ - - - - - -Merging nodes - - - - - - - - - - - -

Merging nodes

- -

This functionality allows user to detect groups of coincident - nodes with desirable tolerance, edit these groups and merge.

- -

 

- -

To merge nodes of your mesh:

- -

 

- -

1. From the Modification - choose Transformation and -  from its - sub-menu select the Merge nodes item. - The following dialog box shall appear:

- -

 

- -

- -

 

- -

This dialog box allows to create groups of - coincident nodes and to merge them.

- -

 

- -

            

- -

 

- -

 

- -

 

- -

  See - Also a sample TUI Script of a Merging - Nodes operation.  

- -

 

- - - - + + + + + +Merging nodes + + + + + + + + + + + + +

Merging nodes

+ +

This functionality allows user to detect groups of coincident + nodes with desirable tolerance, edit these groups and merge.

+ +

 

+ +

To merge nodes of your mesh:

+ +

 

+ +

1. From the Modification + choose Transformation and +  from its + sub-menu select the Merge nodes item. + The following dialog box shall appear:

+ +

 

+ +

+ +

 

+ +

This dialog box allows to create groups of + coincident nodes and to merge them.

+ +

 

+ +

            

+ +

 

+ +

 

+ +

 

+ +

  See + Also a sample TUI Script of a Merge + Nodes operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/minimum_angle.htm b/doc/salome/gui/SMESH/files/minimum_angle.htm index b63188d79..edf891759 100755 --- a/doc/salome/gui/SMESH/files/minimum_angle.htm +++ b/doc/salome/gui/SMESH/files/minimum_angle.htm @@ -1,129 +1,134 @@ - - - - - -Minimum angle - - - - - - - - - - - - -

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:

- -

 

- -

1. Display your mesh in the viewer.

- -

 

- -

2. Choose Controls - > Minimum angle or click button. Your mesh will - be displayed in the viewer with its elements colored according to the - applied mesh quality control criterion:

- -

 

- -

- -

 

- -

See Also - a sample TUI Script of a Minimum - Angle quality control operation.  

- -

 

- - - - + + + + + +Minimum angle + + + + + + + + + + + + + +

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:

+ +

 

+ +

1. Display your mesh in the viewer.

+ +

 

+ +

2. Choose Controls + > Minimum angle or click button. Your mesh will + be displayed in the viewer with its elements colored according to the + applied mesh quality control criterion:

+ +

 

+ +

+ +

 

+ +

See Also + a sample TUI Script of a Minimum + Angle quality control operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/non_conform_mesh_allowed_hypothesis.htm b/doc/salome/gui/SMESH/files/non_conform_mesh_allowed_hypothesis.htm index 4704610d0..f79a74bc2 100755 --- a/doc/salome/gui/SMESH/files/non_conform_mesh_allowed_hypothesis.htm +++ b/doc/salome/gui/SMESH/files/non_conform_mesh_allowed_hypothesis.htm @@ -1,148 +1,142 @@ - - - - - -Non conform mesh allowed hypothesis - - - - - - - - - - - - -

Additional Hypotheses

- -

Additional Hypotheses can be - applied as a supplement to the main hypotheses, introducing additional - concepts to mesh creation.

- -

 

- -

To define an Additional Hypothesis - simply select it in Create Mesh - menu. These hypotheses are actually changes in the rules of mesh creation - and as such don't possess adjustable values.

- -

 

- -

Non Conform mesh allowed hypothesis

- -

Non Conform mesh allowed hypothesis - allows to generate non-conform meshes (that is, meshes having some edges - ending on an edge or face of adjacent elements).

- -

 

- -

Propagation of 1D Hypothesis on opposite edges

- -

Propagation - of 1D Hypothesis on opposite edges allows to propagate a set hypothesis - onto an opposite edge. If a local hypothesis and propagation are set on - one of edges of a quadrangular face, the opposite edge will have the same - hypothesis, unless another hypothesis has been locally set on such opposite - edge.

- -

 

- -

See Also - a sample TUI Script of a Propagation - hypothesis operation.  

- -

 

- -

Length from edges hypothesis

- -

Length from edges hypothesis - builds 1D mesh segments having a length calculated as an average edge - length for a given wire.

- -

 

- -

See Also - a sample TUI Script of a Length - from Edges hypothesis operation.  

- -

 

- -

 

- - - - + + + + + +Non conform mesh allowed hypothesis + + + + + + + + + + + + + +

Additional Hypotheses

+ +

Additional Hypotheses can be + applied as a supplement to the main hypotheses, introducing additional + concepts to mesh creation.

+ +

 

+ +

To define an Additional Hypothesis + simply select it in Create Mesh + menu. These hypotheses are actually changes in the rules of mesh creation + and as such don't possess adjustable values.

+ +

Non Conform mesh allowed hypothesis

+ +

Non Conform mesh allowed hypothesis + allows to generate non-conform meshes (that is, meshes having some edges + ending on an edge or face of adjacent elements).

+ +

Quadratic Mesh

+ +

Quadratic Mesh hypothesis allows to build a quadratic mesh (whose edges + are not straight but broken lines and can be defined by three points: + first, middle and last) instead of an ordinary one.  

+ +

Propagation of 1D Hypothesis on opposite edges

+ +

Propagation of 1D Hypothesis on opposite + edges allows to propagate a hypothesis 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 hypothesis, unless another + hypothesis has been locally defined on the opposite edge.

+ +

 

+ +

See Also + a sample TUI Script of a Propagation + hypothesis operation.  

+ +

 

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/reassigning_hypotheses_and_algorithms.htm b/doc/salome/gui/SMESH/files/reassigning_hypotheses_and_algorithms.htm index 0de684dc9..c0b0d06bc 100755 --- a/doc/salome/gui/SMESH/files/reassigning_hypotheses_and_algorithms.htm +++ b/doc/salome/gui/SMESH/files/reassigning_hypotheses_and_algorithms.htm @@ -1,141 +1,147 @@ - - - - - -Reassigning hypotheses and algorithms - - - - - - - - - - - - -

Editing Meshes

- -

After you have created a mesh or submesh with definite applied hypotheses - and algorithms you can edit your mesh by assigning - new hypotheses and algorithms or unassigning - the applied hypotheses and algorithms. The editing proceeds in - the same way as Mesh Creation. -

- -

 

- -

- -

You can also change values for the current hypothesis by clicking the - button.

- -

 

- -

See how a mesh constructed on one and the same geometrical object changes - if we apply different algorithms to it.

- -

 

- -

 

- -

 

- -

- -

 

- -

 

- -

See Also - a sample TUI Script of an Edit - Mesh operation.  

- -

 

- -

 

- -

 

- - - - + + + + + +Reassigning hypotheses and algorithms + + + + + + + + + + + + + +

Editing Meshes

+ +

After you have created a mesh or submesh with definite applied hypotheses + and algorithms you can edit your mesh by assigning + new hypotheses and algorithms or unassigning + the applied hypotheses and algorithms. The editing proceeds in + the same way as Mesh Creation. +

+ +

 

+ +

+ +

You can also change values for the current hypothesis by clicking the + button.

+ +

 

+ +

See how a mesh constructed on one and the same geometrical object changes + if we apply different algorithms to it.

+ +

 

+ +

 

+ +

 

+ +

+ +

 

+ +

 

+ +

See Also + a sample TUI Script of an Edit + Mesh operation.  

+ +

 

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/removing_nodes_and_elements.htm b/doc/salome/gui/SMESH/files/removing_nodes_and_elements.htm index 2a5b82210..9b720e967 100755 --- a/doc/salome/gui/SMESH/files/removing_nodes_and_elements.htm +++ b/doc/salome/gui/SMESH/files/removing_nodes_and_elements.htm @@ -1,223 +1,246 @@ - - - - - -Removing nodes and elements - - - - - - - - - - - - -

Removing nodes and elements

- -

In SMESH you can remove nodes and all types of cells of your mesh.

- -

 

- -

To remove a node:

- -

 

- -

1. Select your mesh in the Object Browser - or in the 3D viewer.

- -

 

- -

2. From the Modification - menu choose Remove and - from the associated submenu select the Remove - nodes, or just click icon in the toolbar. The - following dialog box will appear:

- -

 

- -

- -

 

- -

In this dialog box you can specify one or - several nodes (with pressed Shift button) by choosing them in the 3D viewer.

- -

 

- -

3. Click OK - or Apply  to - confirm deletion of the specified nodes.

- -

 

- -

Be careful while removing - nodes because if you remove a definite node of your mesh all adjacent - elements will be also deleted.

- -

 

- - --- - - - -
-

-

- -

 

- -

 

- -

To remove an element:

- -

 

- -

1. Select your mesh in the Object Browser - or in the 3D viewer.

- -

 

- -

2. From the Modification - menu choose Remove and - from the associated submenu select the Remove - elements, or just click icon in the toolbar. The - following dialog box will appear:

- -

 

- -

- -

 

- -

In this dialog box you can specify one or - several elements of your mesh (with pressed Shift button) by choosing - them in the 3D viewer.

- -

 

- -

3. Click OK - or Apply  to - confirm deletion of the specified elements.

- -

 

- - --- - - - -
-

-

- -

 

- -

 

- -

  See - Also a sample TUI Script of a Removing - Nodes and Elements operation.  

- -

 

- - - - + + + + + +Removing nodes and elements + + + + + + + + + + + + + +

Removing nodes and elements

+ +

In MESH you can remove nodes and all types of cells of your mesh.

+ +

 

+ + + +

 

+ +

To remove a node:

+ +

 

+ +

1. Select your mesh in the Object Browser + or in the 3D viewer.

+ +

 

+ +

2. From the Modification + menu choose Remove and + from the associated submenu select the Remove + nodes, or just click icon in the toolbar. The + following dialog box will appear:

+ +

 

+ +

+ +

 

+ +

In this dialog box you can specify one or + several nodes (with pressed Shift button) by choosing them in the 3D viewer.

+ +

 

+ +

3. Click OK + or Apply  to + confirm deletion of the specified nodes.

+ +

 

+ +

Be careful while removing + nodes because if you remove a definite node of your mesh all adjacent + elements will be also deleted.

+ +

 

+ + +++ + + + +
+

+

+ +

 

+ +

 

+ +

To remove an element:

+ +

 

+ +

1. Select your mesh in the Object Browser + or in the 3D viewer.

+ +

 

+ +

2. From the Modification + menu choose Remove and + from the associated submenu select the Remove + elements, or just click icon in the toolbar. The + following dialog box will appear:

+ +

 

+ +

+ +

 

+ +

In this dialog box you can specify one or + several elements of your mesh (with pressed Shift button) by choosing + them in the 3D viewer.

+ +

 

+ +

3. Click OK + or Apply  to + confirm deletion of the specified elements.

+ +

 

+ + +++ + + + +
+

+

+ +

 

+ +

 

+ +

  See + Also a sample TUI Script of a Removing + Nodes and Elements operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/renumbering_nodes_and_elements.htm b/doc/salome/gui/SMESH/files/renumbering_nodes_and_elements.htm index 49b0b0339..577cd3356 100755 --- a/doc/salome/gui/SMESH/files/renumbering_nodes_and_elements.htm +++ b/doc/salome/gui/SMESH/files/renumbering_nodes_and_elements.htm @@ -1,156 +1,176 @@ - - - - - -Renumbering nodes and elements - - - - - - - - - - - -

Renumbering nodes and elements

- -

In SMESH you can renumber the nodes and elements of your mesh.

- -

 

- -

To renumber the nodes of your mesh:

- -

 

- -

1. In the Modification - menu select Renumbering submenu - and choose the Nodes item or click - button in the toolbar. The following dialog box will - appear:

- -

 

- -

- -

 

- -

2. Fill the Mesh - field by selecting your mesh in the Object Browser or in the 3D - viewer.

- -

 

- -

3. Click the Apply - or OK button - to perform the operation.

- -

 

- -

 

- -

To renumber the elements of your mesh:

- -

 

- -

1. In the Modification - menu select Renumbering submenu - and choose the Elements item or - click button in the toolbar. The following dialog box will - appear:

- -

 

- -

- -

 

- -

2. Fill the Mesh - field by selecting your mesh in the Object Browser or in the 3D - viewer.

- -

 

- -

3. Click the Apply - or OK button - to perform the operation.

- -

 

- -

  See - Also a sample TUI Script of a Renumbering - Nodes and Elements operation. -  

- -

 

- -

 

- - - - + + + + + +Renumbering nodes and elements + + + + + + + + + + + + +

Renumbering nodes and elements

+ +

In MESH you can renumber the nodes and elements of your mesh.

+ +

 

+ + + +

 

+ +

To renumber the nodes of your mesh:

+ +

 

+ +

1. In the Modification + menu select Renumbering submenu + and choose the Nodes item or click + button in the toolbar. The following dialog box will + appear:

+ +

 

+ +

+ +

 

+ +

2. Fill the Mesh + field by selecting your mesh in the Object Browser or in the 3D + viewer.

+ +

 

+ +

3. Click the Apply + or OK button + to perform the operation.

+ +

 

+ +

 

+ +

To renumber the elements of your + mesh:

+ +

 

+ +

1. In the Modification + menu select Renumbering submenu + and choose the Elements item or + click button in the toolbar. The following dialog box will + appear:

+ +

 

+ +

+ +

 

+ +

2. Fill the Mesh + field by selecting your mesh in the Object Browser or in the 3D + viewer.

+ +

 

+ +

3. Click the Apply + or OK button + to perform the operation.

+ +

 

+ +

  See + Also a sample TUI Script of a Renumbering + Nodes and Elements operation. +  

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/rotation.htm b/doc/salome/gui/SMESH/files/rotation.htm index ea4fcd6f8..2e825820b 100755 --- a/doc/salome/gui/SMESH/files/rotation.htm +++ b/doc/salome/gui/SMESH/files/rotation.htm @@ -1,137 +1,142 @@ - - - - - -Rotation - - - - - - - - - - - -

Rotation

- -

This geometrical operation allows to rotate in space your mesh or some - of its elements.

- -

 

- -

 To - rotate your mesh:

- -

 

- -

From the Modification - choose Transformation and -  from its - sub-menu select the Rotation item. - The following dialog box shall appear:

- -

 

- -

- -

 

- -

In this dialog box you can specify the elements - which should be rotated and the rotation parameters:

- -
    - -
  • Axis: - point and vector

  • - -
  • Angle - of rotation

  • -
- -

 

- -

Create a - copy radio button allows to copy the rotated object.

- -

 

- -

  See - Also a sample TUI Script of a Rotation - operation.  

- -

 

- -

  

- -

 

- - - - + + + + + +Rotation + + + + + + + + + + + + +

Rotation

+ +

This geometrical operation allows to rotate in space your mesh or some + of its elements.

+ +

 

+ +

 To + rotate your mesh:

+ +

 

+ +

From the Modification + choose Transformation and +  from its + sub-menu select the Rotation item. + The following dialog box shall appear:

+ +

 

+ +

+ +

 

+ +

In this dialog box you can specify the elements + which should be rotated and the rotation parameters:

+ +
    + +
  • Axis: + point and vector

  • + +
  • Angle + of rotation

  • +
+ +

 

+ +

Create a + copy radio button allows to copy the rotated object.

+ +

 

+ +

  See + Also a sample TUI Script of a Rotation + operation.  

+ +

 

+ +

  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/running_smesh_module.htm b/doc/salome/gui/SMESH/files/running_smesh_module.htm index 735b385ff..a00aac946 100755 --- a/doc/salome/gui/SMESH/files/running_smesh_module.htm +++ b/doc/salome/gui/SMESH/files/running_smesh_module.htm @@ -1,106 +1,111 @@ - - - - - -Running SMESH module - - - - - - - - - - - -

Running MESH module

- -

To start MESH module in SALOME click icon in the - bottom toolbar or select MESH -  from the - Choose box:                      

- -

 

- -

The desktop of the SALOME - platform will be updated with additional toolbars and menus related to - the MESH component .

- -

 

- -

- -

 

- - - - + + + + + +Running SMESH module + + + + + + + + + + + + +

Running MESH module

+ +

To start MESH module in SALOME click icon in the + bottom toolbar or select MESH +  from the + Choose box:                      

+ +

 

+ +

The desktop of the SALOME + platform will be updated with additional toolbars and menus related to + the MESH component .

+ +

 

+ +

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/sewing_meshes.htm b/doc/salome/gui/SMESH/files/sewing_meshes.htm index c281f9e76..3a461cf25 100755 --- a/doc/salome/gui/SMESH/files/sewing_meshes.htm +++ b/doc/salome/gui/SMESH/files/sewing_meshes.htm @@ -1,337 +1,342 @@ - - - - - -Sewing meshes - - - - - - - - - - - - -

Sewing meshes

- -

In SMESH you can sew elements of  different - meshes. The current functionality allows you to sew:

- -

 

- - - -

 

- -

To sew elements of different meshes:

- -

 

- -

1. From the Modification - menu choose the Transformation - item and  from - its sub-menu select the Sewing item. -

- -

2. Check in the dialog box one of the radio - buttons corresponding to the type of sewing operation you would like to - perform.

- -

3. Fill the other fields available in the - dialog box

- -

4. Click the OK - or Apply button - to perform the operation of sewing.

- -

Sew free borders

- -

This functionality allows you to unite two free borders of a 2D mesh.

- -

 

- -

For sewing free borders you should define three points on each border: - first, second and the last node:

- -

 

- -
    - -
  •  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.

- -

 

- -

The sewing algorithm is as follows:

- -

 

- -

1. 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;

- -

2. 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.

- -

 

- -

- -

 

- -

  See - Also a sample TUI Script of a Sew - Free Borders operation.  

- -

 

- -

 

- -

Sew conform free borders

- -

This functionality can be used to unite two free borders of a 2D mesh. -

- -

 

- -

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.

- -

 

- -

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.

- -

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.

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

  See - Also a sample TUI Script of a Sew - Conform Free Borders operation.  

- -

 

- -

 

- -

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 "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.

- -

 

- -

 

- -

The algorithm is following.

- -

1. 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.

- -

2. Sew two sequences of nodes using algorithm of "Sewing of free - berders".

- -

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.

- -

- -

  See - Also a sample TUI Script of a Sew - Border to Side operation.  

- -

 

- -

 

- -

Sew side elements

- -

This operation is intended to unite two mesh - surfaces.

- -

 

- -

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.

- -

- -

- -

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 Sew Side Elements - operation.  

- -

 

- -

 

- - - - + + + + + +Sewing meshes + + + + + + + + + + + + + +

Sewing meshes

+ +

In SMESH you can sew elements of  different + meshes. The current functionality allows you to sew:

+ +

 

+ + + +

 

+ +

To sew elements of different meshes:

+ +

 

+ +

1. From the Modification + menu choose the Transformation + item and  from + its sub-menu select the Sewing item. +

+ +

2. Check in the dialog box one of the radio + buttons corresponding to the type of sewing operation you would like to + perform.

+ +

3. Fill the other fields available in the + dialog box

+ +

4. Click the OK + or Apply button + to perform the operation of sewing.

+ +

Sew free borders

+ +

This functionality allows you to unite two free borders of a 2D mesh.

+ +

 

+ +

For sewing free borders you should define three points on each border: + first, second and the last node:

+ +

 

+ +
    + +
  •  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.

+ +

 

+ +

The sewing algorithm is as follows:

+ +

 

+ +

1. 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;

+ +

2. 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.

+ +

 

+ +

+ +

 

+ +

  See + Also a sample TUI Script of a Sew + Free Borders operation.  

+ +

 

+ +

 

+ +

Sew conform free borders

+ +

This functionality can be used to unite two free borders of a 2D mesh. +

+ +

 

+ +

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.

+ +

 

+ +

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.

+ +

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.

+ +

 

+ +

 

+ +

 

+ +

 

+ +

 

+ +

 

+ +

 

+ +

  See + Also a sample TUI Script of a Sew + Conform Free Borders operation.  

+ +

 

+ +

 

+ +

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 "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.

+ +

 

+ +

 

+ +

The algorithm is following.

+ +

1. 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.

+ +

2. Sew two sequences of nodes using algorithm of "Sewing of free + berders".

+ +

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.

+ +

+ +

  See + Also a sample TUI Script of a Sew + Border to Side operation.  

+ +

 

+ +

 

+ +

Sew side elements

+ +

This operation is intended to unite two mesh + surfaces.

+ +

 

+ +

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.

+ +

+ +

+ +

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 Sew Side Elements + operation.  

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/skew.htm b/doc/salome/gui/SMESH/files/skew.htm index f6280e38a..cfeac0793 100755 --- a/doc/salome/gui/SMESH/files/skew.htm +++ b/doc/salome/gui/SMESH/files/skew.htm @@ -1,140 +1,141 @@ - - - - - -Skew - - - - - - - - - - - - -

Skew

- -

Skew mesh quality - criterion reflects the angle between the lines that join opposite sides - of the element. SKEW  is - a maximum value of all skew angles.

- -

This mesh quality criterion - can be applied to elements composed of 4 and 3 nodes (quadrangles and - triangles)

- -

 

- -

- -

 

- -

To apply the Skew quality criterion to your mesh:

- -

 

- -

1. Display your mesh in the viewer.

- -

 

- -

2. Choose Controls - > Skew or click button of the toolbar. Your mesh - will be displayed in the viewer with its elements colored according to - the applied mesh quality control criterion:

- -

 

- -

- -

 

- -

See Also - a sample TUI Script of a Skew - quality control operation.  

- -

 

- - - - + + + + + +Skew + + + + + + + + + + + + + +

Skew

+ +

Skew mesh quality + criterion reflects the angle between the lines that join opposite sides + of the element. SKEW  is + a maximum value of all skew angles. This + mesh quality criterion can be applied to elements composed of 4 and 3 + nodes (quadrangles and triangles)

+ +

 

+ +

+ +

 

+ +

To apply the Skew quality criterion to your mesh:

+ +

 

+ +

1. Display your mesh in the viewer.

+ +

 

+ +

2. Choose Controls + > Skew or click button of the toolbar. Your mesh + will be displayed in the viewer with its elements colored according to + the applied mesh quality control criterion:

+ +

 

+ +

+ +

 

+ +

See Also + a sample TUI Script of a Skew + quality control operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/smoothing.htm b/doc/salome/gui/SMESH/files/smoothing.htm index 6cab53dbd..5b34249e0 100755 --- a/doc/salome/gui/SMESH/files/smoothing.htm +++ b/doc/salome/gui/SMESH/files/smoothing.htm @@ -1,190 +1,196 @@ - - - - - -Smoothing - - - - - - - - - - - -

Smoothing

- -

Smoothing is used to adjust the locations of element - corners (nodes) to reduce distortions in these elements.

- -

 

- -

To apply smoothing to the elements of your mesh:

- -

 

- -

1. Display a mesh or a submesh in the 3D - viewer.

- -

2. In the Modification - menu select the Smoothing item - or click button in the toolbar. The dialog - box contains the following fields which should be specified:

- -

 

- -

       

- -
    - -
  • Id Elements field allows to specify - the elements which should be smoothed by selecting them in the 3D viewer. - Note: to select several elements press Shift - button.

  • - -
      - -
    • Smoothing is applied - to the whole mesh or its part

    • - -
    • Fixed nodes - ids: some nodes keep their location during smoothing. If a mesh - is built on a geometry shape, the nodes built on geometrical edges are - always fixed. If smoothing is applied to a part of a mesh then the boundary - nodes of an elements set are also fixed. Any other nodes may be additionally - fixed.

    • - -
    • 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. - Typically, the Laplacian method will produce the mesh with the least element - distortion. It is also the faster method.

      • - -
      • Centroidal - smoothing usually produces a mesh that has more uniform element sizes. - Both methods produce good results with "free" meshes.

      • -
      -
    -
- -

 

- -

- -
    - -
  • Iteration limit: both of the smoothing - methods use an iterative procedure to converge toward a smoothed mesh. - All nodes are smoothed according to one of the techniques shown above. - Then the smoothing is reevaluated with the updated nodal locations. This - process continues until the maximum number of iterations has been exceeded, - or all elements has aspect ratio less or equal than the specified one.

  • - -
  • Max. aspect ratio.

  • -
- -

 

- -

3. Click the Apply - or OK button to confirm - the operation.

- -

 

- -

        

- -

 

- -

  See - Also a sample TUI Script of a Smoothing - operation.  

- -

 

- -

 

- - - - + + + + + +Smoothing + + + + + + + + + + + + +

Smoothing

+ +

Smoothing is used to adjust the locations of element + corners (nodes) to reduce distortions in these elements.

+ +

 

+ +

To apply smoothing to the elements of your mesh:

+ +

 

+ +

1. Display a mesh or a submesh in the 3D + viewer.

+ +

2. In the Modification + menu select the Smoothing item + or click button in the toolbar. The dialog + box contains the following fields which should be specified:

+ +

 

+ +

       

+ +
    + +
  • Id Elements field allows to specify + the elements which should be smoothed by selecting them in the 3D viewer + (lock Shift button to select several + elements).

  • + +
      + +
    • Select whole mesh, + submesh or group - smoothing is applied + to the whole mesh or its part.

    • + +
    • Fixed nodes + ids: some nodes keep their location during smoothing. If a mesh + is built on a geometry shape, the nodes built on geometrical edges are + always fixed. If smoothing is applied to a part of a mesh then the boundary + nodes of an elements set are also fixed. Any other nodes may be additionally + fixed.

    • + +
    • 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. + Typically, the Laplacian method will produce the mesh with the least element + distortion. It is also the faster method.

      • + +
      • Centroidal + smoothing usually produces a mesh that has more uniform element sizes. + Both methods produce good results with "free" meshes.

      • +
      +
    +
+ +

 

+ +

+ +
    + +
  • Iteration limit: both of the smoothing + methods use an iterative procedure to converge toward a smoothed mesh. + All nodes are smoothed according to one of the techniques shown above. + Then the smoothing is reevaluated with the updated nodal locations. This + process continues until the maximum number of iterations has been exceeded, + or all elements has aspect ratio less or equal than the specified one.

  • + +
  • Max. aspect ratio.

  • +
+ +

 

+ +

3. Click the Apply + or OK button to confirm + the operation.

+ +

 

+ +

        

+ +

 

+ +

  See + Also a sample TUI Script of a Smoothing + operation.  

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/symmetry.htm b/doc/salome/gui/SMESH/files/symmetry.htm index d8f8a43d5..b8e622996 100755 --- a/doc/salome/gui/SMESH/files/symmetry.htm +++ b/doc/salome/gui/SMESH/files/symmetry.htm @@ -1,142 +1,147 @@ - - - - - -Symmetry - - - - - - - - - - - -

Symmetry

- -

This geometrical operation allows to perform a symmetrical copy of your - mesh or some of its elements.

- -

 

- -

 To - apply symmetry to your mesh:

- -

 

- -

From the Modification - choose Transformation and -  from its - sub-menu select the Symmetry item. - The following dialog box shall appear:

- -

 

- -

- -

 

- -

- -

 

- -

- -

 

- -

This operation has three options, you can - symmetrically copy your mesh or some of its elements specifying:

- -
    - -
  • one point

  • - -
  • one axis (point and - vector)

  • - -
  • one plane (point and - normal)

  • -
- -

 

- -

Create a - copy radio button allows to keep the initial elements or mesh.

- -

 

- -

  See - Also a sample TUI Script of a Symmetry - operation.  

- -

 

- - - - + + + + + +Symmetry + + + + + + + + + + + + +

Symmetry

+ +

This geometrical operation allows to perform a symmetrical copy of your + mesh or some of its elements.

+ +

 

+ +

 To + apply symmetry to your mesh:

+ +

 

+ +

From the Modification + choose Transformation and +  from its + sub-menu select the Symmetry item. + The following dialog box shall appear:

+ +

 

+ +

+ +

 

+ +

+ +

 

+ +

+ +

 

+ +

This operation has three options, you can + symmetrically copy your mesh or some of its elements specifying:

+ +
    + +
  • one point

  • + +
  • one axis (point and + vector)

  • + +
  • one plane (point and + normal)

  • +
+ +

 

+ +

Create a + copy radio button allows to keep the initial elements or mesh.

+ +

 

+ +

  See + Also a sample TUI Script of a Symmetry + operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/taper.htm b/doc/salome/gui/SMESH/files/taper.htm index 9b296b2e8..9ea8a26a7 100755 --- a/doc/salome/gui/SMESH/files/taper.htm +++ b/doc/salome/gui/SMESH/files/taper.htm @@ -1,134 +1,141 @@ - - - - - -Taper - - - - - - - - - - - - -

Taper

- -

Taper mesh quality - criterion represents the ratio of the areas of two triangles separated - by a diagonal. So it can be calculated only for elements consisting of - 4 nodes.

- -

- -

 

- -

 

- -

To apply the Taper quality criterion to your mesh:

- -

 

- -

1. Display your mesh in the viewer.

- -

 

- -

2. Choose Controls - > Taper or click button in the toolbar. Your mesh - will be displayed in the viewer with its elements colored according to - the applied mesh quality control criterion:

- -

 

- -

- -

 

- -

See Also - a sample TUI Script of a Taper - quality control operation.  

- -

 

- - - - + + + + + +Taper + + + + + + + + + + + + + +

Taper

+ +

Taper mesh quality + criterion represents the ratio of the areas of two triangles separated + by a diagonal. So it can be calculated only for elements consisting of + 4 nodes.

+ +

 

+ +

+ +

 

+ +

 

+ +

To apply the Taper quality criterion to your mesh:

+ +

 

+ +

1. Display your mesh in the viewer.

+ +

 

+ +

2. Choose Controls + > Taper or click button in the toolbar. Your mesh + will be displayed in the viewer with its elements colored according to + the applied mesh quality control criterion:

+ +

 

+ +

+ +

 

+ +

See Also + a sample TUI Script of a Taper + quality control operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/translation.htm b/doc/salome/gui/SMESH/files/translation.htm index a07237880..82be5851d 100755 --- a/doc/salome/gui/SMESH/files/translation.htm +++ b/doc/salome/gui/SMESH/files/translation.htm @@ -1,132 +1,137 @@ - - - - - -Translation - - - - - - - - - - - -

Translation

- -

This geometrical operation allows to translate in space your mesh or - some of its elements.

- -

 

- -

 To - translate your mesh:

- -

 

- -

From the Modification - choose Transformation and -  from its - sub-menu select the Translation item. - The following dialog box shall appear:

- -

 

- -

  

- -

 

- -

This operation has two options, you can translate - in space your mesh or some of its elements specifying:

- -
    - -
  • two points (starting - and ending)

  • - -
  • one vector

  • -
- -

Toggle the corresponding checkbox to Select whole mesh, submesh or group.

- -

Create a - copy button allows to copy the translated object.

- -

 

- -

  See - Also a sample TUI Script of a Translation - operation.  

- -

 

- - - - + + + + + +Translation + + + + + + + + + + + + +

Translation

+ +

This geometrical operation allows to translate in space your mesh or + some of its elements.

+ +

 

+ +

 To + translate your mesh:

+ +

 

+ +

From the Modification + choose Transformation and +  from its + sub-menu select the Translation item. + The following dialog box shall appear:

+ +

 

+ +

  

+ +

 

+ +

This operation has two options, you can translate + in space your mesh or some of its elements specifying:

+ +
    + +
  • two points (starting + and ending)

  • + +
  • one vector

  • +
+ +

Toggle the corresponding checkbox to Select whole mesh, submesh or group.

+ +

Create a + copy button allows to copy the translated object.

+ +

 

+ +

  See + Also a sample TUI Script of a Translation + operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/uniting_a_set_of_triangles.htm b/doc/salome/gui/SMESH/files/uniting_a_set_of_triangles.htm index d625b7ecc..69e6ea13b 100755 --- a/doc/salome/gui/SMESH/files/uniting_a_set_of_triangles.htm +++ b/doc/salome/gui/SMESH/files/uniting_a_set_of_triangles.htm @@ -1,182 +1,183 @@ - - - - - -Uniting a set of triangles - - - - - - - - - - - - -

Uniting a set of triangles

- -

In contrast to the - previous operation this one allows to unite at once many triangles - if they have adjacent edges.

- -

 

- -

To union several triangles:

- -

 

- -

- -

1. Display a mesh or a submesh in the 3D - viewer.

- -

2. In the Modification - menu select the Union of triangles - item or click button in the toolbar. The following - dialog box will appear:

- -

 

- -
    - -
  • The main list shall contain the triangles - which will be united. You can click on an 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 Set - filter button allows to apply a definite filter to selection of - triangles.

  • - -
  • Apply to all radio button allows to - modify the orientation of all triangles of the currently displayed mesh - or submesh.

  • - -
  • Criterion menu allows to apply the operation - only to those object which meet the chosen criterion (from the list of - Quality Controls, i.e. Skew, Warping, Minimum Angle, etc.)

  • - -
  • Select from set of fields allows to - choose a submesh or an existing group whose triangle elements will be - automatically added to the list.

  • -
- -

 

- -

3. Click the Apply - or OK 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.

- -

 

- -

 

- -

 

- -

 

- -

   

- -

 

- -

 See - Also a sample TUI Script of a Uniting - a Set of Triangles operation.  

- -

 

- - - - + + + + + +Uniting a set of triangles + + + + + + + + + + + + + +

Uniting a set of triangles

+ +

In contrast to the + previous operation this one allows to unite at once many triangles + if they have adjacent edges.

+ +

 

+ +

To union several triangles:

+ +

 

+ +

+ +

 

+ +

1. Display a mesh or a submesh in the 3D + viewer.

+ +

2. In the Modification + menu select the Union of triangles + item or click button in the toolbar. The following + dialog box will appear:

+ +

 

+ +
    + +
  • The main list shall contain the triangles + which will be united. You can click on an 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 Set + filter button allows to apply a definite filter to selection of + triangles.

  • + +
  • Apply to all radio button allows to + modify the orientation of all triangles of the currently displayed mesh + or submesh.

  • + +
  • Criterion menu allows to apply the operation + only to those object which meet the chosen criterion (from the list of + Quality Controls, i.e. Skew, Warping, Minimum Angle, etc.)

  • + +
  • Select from set of fields allows to + choose a submesh or an existing group whose triangle elements will be + automatically added to the list.

  • +
+ +

 

+ +

3. Click the Apply + or OK 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.

+ +

 

+ +

   

+ +

 

+ +

 See + Also a sample TUI Script of a Uniting + a Set of Triangles operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/uniting_two_triangles.htm b/doc/salome/gui/SMESH/files/uniting_two_triangles.htm index 98ad79f5b..738ef90f0 100755 --- a/doc/salome/gui/SMESH/files/uniting_two_triangles.htm +++ b/doc/salome/gui/SMESH/files/uniting_two_triangles.htm @@ -1,146 +1,151 @@ - - - - - -Uniting two triangles - - - - - - - - - - - -

Uniting two triangles

- -

 In MESH - you can union two neighboring triangles (cells) by deletion of the common - edge.

- -

 

- -

To unite two triangles:

- -

 

- -

1. From the Modification - menu choose the Union of two triangles - item or click button in the toolbar. The following - dialog box shall appear:

- -

 

- -

- -

 

- -

2. Enter the ID of the required edge in the - Edge  field - or select this edge in the 3D viewer.

- -

 

- -

3. Click the Apply - or OK button.

- -

 

- -

 

- - --- - - - -
-

-

- -

 

- -

  See - Also a sample TUI Script of a Uniting - Two Triangles operation.  

- -

 

- - - - + + + + + +Uniting two triangles + + + + + + + + + + + + +

Uniting two triangles

+ +

 In MESH + you can union two neighboring triangles (cells) by deletion of the common + edge.

+ +

 

+ +

To unite two triangles:

+ +

 

+ +

1. From the Modification + menu choose the Union of two triangles + item or click button in the toolbar. The following + dialog box shall appear:

+ +

 

+ +

+ +

 

+ +

2. Enter the ID of the required edge in the + Edge  field + or select this edge in the 3D viewer.

+ +

 

+ +

3. Click the Apply + or OK button.

+ +

 

+ +

 

+ + +++ + + + +
+

+

+ +

 

+ +

  See + Also a sample TUI Script of a Uniting + Two Triangles operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/using_operations_on_groups.htm b/doc/salome/gui/SMESH/files/using_operations_on_groups.htm index 622120a22..4cd9fa069 100755 --- a/doc/salome/gui/SMESH/files/using_operations_on_groups.htm +++ b/doc/salome/gui/SMESH/files/using_operations_on_groups.htm @@ -1,310 +1,315 @@ - - - - - -Using operations on groups - - - - - - - - - - - - -

Using operations on groups

- -

In MESH you can - perform some Boolean operations on groups, which belong to one and the - same mesh.

- -

 

- - - -

 

- -

Union of two 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 two groups:

- -

 

- -

1. In the Mesh - menu select the Union Groups item. - The following dialog box will appear:

- -

 

- - --- - - - -
-

-

       

-

            Group1 -                         Group2 -                          Group12

-

 

-

For example, we have two groups Group1 and Group2.

-

The result of their Union will - be Group12   

- -

  

- -

 In - this dialog box you should specify the name - of the resulting group and two - groups which will be united.

- -

 

- -

2. Click the Ok - or  Apply - button to confirm creation of the group.

- -

 

- -

See Also - a sample TUI Script of a Union - of two Groups operation.  

- -

 

- -

 

- -

 

- -

Intersection of two groups

- -

This operation allows to create a new group in such a way that all mesh - elements that are present in both initial groups are added to the new - one.

- -

 

- -

To intersect two groups:

- -

 

- -

1. In the Mesh - menu select the Intersect Groups - item. The following dialog box will appear:

- -

 

- - --- - - - -
-

-

 

-

            Group1 -                         Group2 -                    Group12a

-

 

-

For example, we have two groups Group1 and Group2.

-

The result of their Intersection - will be Group12a   

- -

 

- -

In this dialog box you should specify the - name of the resulting group and - two groups which will be intersected.

- -

 

- -

2. Click the Ok - or  Apply - button to confirm creation of the group.

- -

 

- -

 See - Also a sample TUI Script of an  Intersection - of two Groups operation.  

- -

 

- -

Cut of two groups

- -

This operation allows to create a new group in such a way that all mesh - elements that are present in the main group but are absent in the tool - group are added to the new one.

- -

 

- -

To cut two groups:

- -

 

- -

1. In the Mesh - menu select the Cut Groups item. - The following dialog box will appear:

- -

 

- - --- - - - -
-

-

    

-

           Group1 -                          Group2 -                        Group12b

-

 

-

For example, we have two groups Group1 and Group2.

-

The result of their Cut will - be Group12b   

- -

 

- -

In this dialog box you should specify the - name of the resulting group and - two groups which will be cut.

- -

 

- -

2. Click the Ok - or  Apply - button to confirm creation of the group.  

- -

 

- -

  See - Also a sample TUI Script of a  Cut - of two Groups operation.  

- -

 

- -

 

- - - - + + + + + +Using operations on groups + + + + + + + + + + + + + +

Using operations on groups

+ +

In MESH you can + perform some Boolean operations on groups, which belong to one and the + same mesh.

+ +

 

+ + + +

 

+ +

Union of two 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 two groups:

+ +

 

+ +

1. In the Mesh + menu select the Union Groups item. + The following dialog box will appear:

+ +

 

+ + +++ + + + +
+

+

       

+

            Group1 +                         Group2 +                          Group12

+

 

+

For example, we have two groups Group1 and Group2.

+

The result of their Union will + be Group12   

+ +

  

+ +

 In + this dialog box you should specify the name + of the resulting group and two + groups which will be united.

+ +

 

+ +

2. Click the Ok + or  Apply + button to confirm creation of the group.

+ +

 

+ +

See Also + a sample TUI Script of a Union + of two Groups operation.  

+ +

 

+ +

 

+ +

 

+ +

Intersection of two groups

+ +

This operation allows to create a new group in such a way that all mesh + elements that are present in both initial groups are added to the new + one.

+ +

 

+ +

To intersect two groups:

+ +

 

+ +

1. In the Mesh + menu select the Intersect Groups + item. The following dialog box will appear:

+ +

 

+ + +++ + + + +
+

+

 

+

            Group1 +                         Group2 +                    Group12a

+

 

+

For example, we have two groups Group1 and Group2.

+

The result of their Intersection + will be Group12a   

+ +

 

+ +

In this dialog box you should specify the + name of the resulting group and + two groups which will be intersected.

+ +

 

+ +

2. Click the Ok + or  Apply + button to confirm creation of the group.

+ +

 

+ +

 See + Also a sample TUI Script of an  Intersection + of two Groups operation.  

+ +

 

+ +

Cut of two groups

+ +

This operation allows to create a new group in such a way that all mesh + elements that are present in the main group but are absent in the tool + group are added to the new one.

+ +

 

+ +

To cut two groups:

+ +

 

+ +

1. In the Mesh + menu select the Cut Groups item. + The following dialog box will appear:

+ +

 

+ + +++ + + + +
+

+

    

+

           Group1 +                          Group2 +                        Group12b

+

 

+

For example, we have two groups Group1 and Group2.

+

The result of their Cut will + be Group12b   

+ +

 

+ +

In this dialog box you should specify the + name of the resulting group and + two groups which will be cut.

+ +

 

+ +

2. Click the Ok + or  Apply + button to confirm creation of the group.  

+ +

 

+ +

  See + Also a sample TUI Script of a  Cut + of two Groups operation.  

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/viewing_mesh_info.htm b/doc/salome/gui/SMESH/files/viewing_mesh_info.htm index a2beb2ab5..e6a9ffb21 100755 --- a/doc/salome/gui/SMESH/files/viewing_mesh_info.htm +++ b/doc/salome/gui/SMESH/files/viewing_mesh_info.htm @@ -1,164 +1,184 @@ - - - - - -Viewing mesh info - - - - - - - - - - - - -

Mesh infos

- -

There are two types of information boxes: Standard - Mesh Infos and Advanced - Mesh Infos.

- -

 

- -

The Standard - Mesh Infos box gives only the information on the number of 2D elements - of mesh and the number of nodes. However, from this Info you can learn - about groups selected on this mesh.

- -

To view the Standard - Mesh Infos, select your mesh or submesh in the Object - Browser and select Standard Mesh Infos from - the Mesh menu or click - button in the toolbar. The following information will - be displayed:

- -

 

- -

- -

 

- -

The Advanced Mesh - Infos gives more information about the mesh, including the total - number of faces and volumes and their geometrical types.

- -

To view the Advanced Mesh Infos, select - your mesh or submesh in the Object Browser - and select Advanced - Mesh Infos from the Mesh menu or click button - in the toolbar. The following information will be displayed:

- -

 

- -

- -

 

- -

 

- -

In case you get Mesh Infos via a TUI script, - the information is displayed in Python Console.

- -

 

- -

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- - - - + + + + + +Viewing mesh info + + + + + + + + + + + + + +

Mesh infos

+ +

There are two types of information boxes: Standard + Mesh Infos and Advanced + Mesh Infos.

+ +

 

+ + + +

 

+ +

Standard Mesh Infos

+ +

The Standard + Mesh Infos box gives only the information on the number of elements + of maximum dimension and the number of nodes in the mesh. However, from + this Info you can learn about groups selected on this mesh.

+ +

To view the Standard + Mesh Infos, select your mesh or submesh in the Object + Browser and select Standard Mesh Infos from + the Mesh menu or click + button in the toolbar. The following information will + be displayed:

+ +

 

+ +

+ +

 

+ +

Advanced Mesh Infos

+ +

The Advanced Mesh + Infos gives more information about the mesh, including the total + number of faces and volumes and their geometrical types.

+ +

To view the Advanced Mesh Infos, select + your mesh or submesh in the Object Browser + and select Advanced + Mesh Infos from the Mesh menu or click button + in the toolbar. The following information will be displayed:

+ +

 

+ +

+ +

 

+ +

 

+ +

In case you get Mesh Infos via a TUI + script, the information is displayed in Python Console.

+ +

 

+ +

+ +

 

+ +

 

+ +

 

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/vtk_3d_viewer.htm b/doc/salome/gui/SMESH/files/vtk_3d_viewer.htm index e8ce5413c..ffb8f9a18 100755 --- a/doc/salome/gui/SMESH/files/vtk_3d_viewer.htm +++ b/doc/salome/gui/SMESH/files/vtk_3d_viewer.htm @@ -1,229 +1,229 @@ - - - - - -VTK 3D Viewer - - - - - - - - - - - -

VTK 3D Viewer

- -

VTK - 3D viewer is the default viewer for Mesh Module, allowing to visualize - meshes. It is also used in Post-Pro module for all 3D presentations except - for Gauss Points.

- -

 

- -

The functionalities of - VTK viewer are available via its Viewer Toolbar. Buttons marked with small - downward triangles have extended functionality which can be accessed by - locking on them with left mouse button.  

- -

 

- -

- -
    - -
  • Dump View - exports - an object from the viewer in bmp, png, jpg or jpeg image format.

  • - -
  • Show/Hide Trihedron - - shows or hides coordinate axes.

  • - -
  •  Fit - all - allows to select a point to be the center of a scene representing - all displayed objects in the visible area. -

  • - -
  •   Fit area - resizes - the view to place in the visible area only the contents of a frame drawn - with pressed left mouse button.

  • - -
  • Zoom -  allows - to zoom in and out.

  • - -
  • Panning - if the - represented objects are greater that the visible area and you don't wish - to use Fit all functionality, - click on this button and you'll be able to drag the scene to see its remote - parts.

  • - -
  • Global panning - - represents all displayed objects in the visible area.

  • - -
  • Rotation - allows - to rotate the selected object using the mouse.

  • - -
  • These buttons orientate the scene strictly about coordinate - axes.

  • - -
  • Reset - restores - the default position (isometric) of objects in the scene.

  • - -
  • Scaling - represents - objects deformed (stretched or stuffed) along the axes of coordinates

  • - -
  •  Graduated axes - allows - to define parameters of axes and graduate them.

  • -
- -

 

- -

- -
    - -
  • Axis name

  • - -
  • Is visible - if checked the axis name is displayed in - the viewer.

  • - -
  • Name - - allows to redefine the name of the axis.

  • - -
  • Font - - allows to define color and properties of the font of axis name.

  • - -
  • Labels -

  • - -
  • Is visible - if checked the labels are displayed in the - viewer.

  • - -
  • Number - - allows to define the number of labels.

  • - -
  • Offset - - allows to define the distance between labels.

  • - -
  • Font - - allows to define color and properties of the font of labels names.

  • - -
  • Tick marks

  • - -
  • Is visible - if checked the tick marks are displayed in - the viewer.

  • - -
  • Length - - allows to define the length of tick marks

  • - -
  • Is visible if - checked the axis is displayed in the viewer.

  • -
- - - - + + + + + +VTK 3D Viewer + + + + + + + + + + + +

VTK 3D Viewer

+ +

VTK + 3D viewer is the default viewer for Mesh Module, allowing to visualize + meshes. It is also used in Post-Pro module for all 3D presentations except + for Gauss Points.

+ +

 

+ +

The functionalities of + VTK viewer are available via its Viewer Toolbar. Buttons marked with small + downward triangles have extended functionality which can be accessed by + locking on them with left mouse button.  

+ +

 

+ +

+ +
    + +
  • Dump View - exports + an object from the viewer in bmp, png, jpg or jpeg image format.

  • + +
  • Show/Hide Trihedron + - shows or hides coordinate axes.

  • + +
  •  Fit + all - allows to select a point to be the center of a scene representing + all displayed objects in the visible area. +

  • + +
  •   Fit area - resizes + the view to place in the visible area only the contents of a frame drawn + with pressed left mouse button.

  • + +
  • Zoom -  allows + to zoom in and out.

  • + +
  • Panning - if the + represented objects are greater that the visible area and you don't wish + to use Fit all functionality, + click on this button and you'll be able to drag the scene to see its remote + parts.

  • + +
  • Global panning - + represents all displayed objects in the visible area.

  • + +
  • Rotation - allows + to rotate the selected object using the mouse.

  • + +
  • These buttons orientate the scene strictly about coordinate + axes.

  • + +
  • Reset - restores + the default position (isometric) of objects in the scene.

  • + +
  • Scaling - represents + objects deformed (stretched or stuffed) along the axes of coordinates

  • + +
  •  Graduated axes - allows + to define parameters of axes and graduate them.

  • +
+ +

 

+ +

+ +
    + +
  • Axis name

  • + +
  • Is visible - if checked the axis name is displayed in + the viewer.

  • + +
  • Name + - allows to redefine the name of the axis.

  • + +
  • Font + - allows to define color and properties of the font of axis name.

  • + +
  • Labels +

  • + +
  • Is visible - if checked the labels are displayed in the + viewer.

  • + +
  • Number + - allows to define the number of labels.

  • + +
  • Offset + - allows to define the distance between labels.

  • + +
  • Font + - allows to define color and properties of the font of labels names.

  • + +
  • Tick marks

  • + +
  • Is visible - if checked the tick marks are displayed in + the viewer.

  • + +
  • Length + - allows to define the length of tick marks

  • + +
  • Is visible if + checked the axis is displayed in the viewer.

  • +
+ + + + diff --git a/doc/salome/gui/SMESH/files/warp.htm b/doc/salome/gui/SMESH/files/warp.htm index acc2afc6f..a67d0e2f3 100755 --- a/doc/salome/gui/SMESH/files/warp.htm +++ b/doc/salome/gui/SMESH/files/warp.htm @@ -1,151 +1,156 @@ - - - - - -Warp - - - - - - - - - - - - -

Warping

- -

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:

- -

1. bisecting the four element edges,

- -

2. 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:

- -

 

- -

1. Display your mesh in the viewer.

- -

 

- -

2. Choose Controls - > Warp or click button of the toolbar. Your mesh - will be displayed in the viewer with its elements colored according to - the applied mesh quality control criterion:

- -

 

- -

- -

 

- -

See Also - a sample TUI Script of a Warping - quality control operation.  

- -

 

- -

 

- - - - + + + + + +Warp + + + + + + + + + + + + + +

Warping

+ +

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:

+ +

1. bisecting the four element edges,

+ +

2. 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:

+ +

 

+ +

1. Display your mesh in the viewer.

+ +

 

+ +

2. Choose Controls + > Warp or click button of the toolbar. Your mesh + will be displayed in the viewer with its elements colored according to + the applied mesh quality control criterion:

+ +

 

+ +

+ +

 

+ +

See Also + a sample TUI Script of a Warping + quality control operation.  

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/free_borders.htm b/doc/salome/gui/SMESH/free_borders.htm index ebfcb53d4..b262c9cd3 100755 --- a/doc/salome/gui/SMESH/free_borders.htm +++ b/doc/salome/gui/SMESH/free_borders.htm @@ -1,114 +1,120 @@ - - - - - -Free borders - - - - - - - - - - - - -

Free borders

- -

This mesh quality control highlights borders of faces - consisting of edges belonging to one face only.

- -

 

- -

 

- -

 

- -

In this picture the free borders are displayed in white.

- -

 

- -

See Also - a sample TUI Script of a Free - Borders quality control operation.  

- -

 

- - - - + + + + + +Free borders + + + + + + + + + + + + + +

Free borders

+ +

This mesh quality control highlights borders of faces + consisting of edges belonging to one face only.

+ +

 

+ +

 

+ +

 

+ +

In this picture the free borders are displayed in white.

+ +

 

+ +

See Also + a sample TUI Script of a Free + Borders quality control operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/free_edges.htm b/doc/salome/gui/SMESH/free_edges.htm index fa4374670..fe7146d12 100755 --- a/doc/salome/gui/SMESH/free_edges.htm +++ b/doc/salome/gui/SMESH/free_edges.htm @@ -1,117 +1,122 @@ - - - - - -Free_edges - - - - - - - - - - - - -

Free edges

- -

  This - mesh quality control highlights borders of  elements - of mesh consisting of edges belonging to one element of mesh only.

- -

 

- -

- -

 

- -

In this picture some elements of mesh have - been deleted and the "holes" are outlined in red.

- -

 

- -

See Also - a sample TUI Script of a Free - Edges quality control operation.  

- -

 

- - - - + + + + + +Free_edges + + + + + + + + + + + + + +

Free edges

+ +

  This + mesh quality control highlights borders of  elements + of mesh consisting of edges belonging to one element of mesh only.

+ +

 

+ +

+ +

 

+ +

In this picture some elements of mesh have + been deleted and the "holes" are outlined in red.

+ +

 

+ +

See Also + a sample TUI Script of a Free + Edges quality control operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/grouping_elements.htm b/doc/salome/gui/SMESH/grouping_elements.htm index b3f7985c8..143be3035 100755 --- a/doc/salome/gui/SMESH/grouping_elements.htm +++ b/doc/salome/gui/SMESH/grouping_elements.htm @@ -1,1078 +1,973 @@ - - - - - -Grouping Elements - - - - - - - - - - -

Grouping Elements

- -

Create a Standalone Group

- -

 

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

aFilterMgr = smesh.CreateFilterManager()

- -

 

- -

# Criterion : AREA > - 100

- -

 

- -

aFunctor = aFilterMgr.CreateArea()

- -

aPredicate = aFilterMgr.CreateMoreThan()

- -

aPredicate.SetNumFunctor( - aFunctor )

- -

aPredicate.SetMargin( - 100 )

- -

 

- -

aFilter = aFilterMgr.CreateFilter()

- -

aFilter.SetPredicate( - aPredicate )

- -

 

- -

anIds = aFilter.GetElementsId( - mesh )

- -

 

- -

# print the result

- -

print "Criterion: - Area > 100 Nb = ", len( anIds )

- -

for i in range( - len( anIds ) ):

- -

  print - anIds[ i ]

- -

 

- -

# create a group consisting - of faces with area > 100

- -

aGroup = mesh.CreateGroup( - SMESH.FACE, "Area > 100" )

- -

aGroup.Add( anIds - )

- -

 

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

- -

Create a Group on Geometry

- -

import salome

- -

import geompy

- -

 

- -

import StdMeshers

- -

 

- -

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", - "SMESH")

- -

 

- -

smeshgui = salome.ImportComponentGUI("SMESH")

- -

smeshgui.Init(salome.myStudyId);

- -

 

- -

# create a box

- -

box = geompy.MakeBox(0., - 0., 0., 100., 100., 100.)

- -

 

- -

# add the box to the study

- -

idbox = geompy.addToStudy(box, - "box")

- -

 

- -

# add the first face of - the box to the study

- -

subShapeList = geompy.SubShapeAll(box, - geompy.ShapeType["FACE"])

- -

face = subShapeList[0]

- -

name = geompy.SubShapeName(face, - box)

- -

idface = geompy.addToStudyInFather(box, - face, name)

- -

 

- -

# create a hypothesis

- -

print "-------------------------- - create Hypothesis"

- -

 

- -

print "-------------------------- - NumberOfSegments"

- -

numberOfSegments - = 7

- -

 

- -

hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", - "libStdMeshersEngine.so")

- -

hypNbSeg.SetNumberOfSegments(numberOfSegments)

- -

 

- -

print hypNbSeg.GetName()

- -

print hypNbSeg.GetId()

- -

print hypNbSeg.GetNumberOfSegments()

- -

 

- -

smeshgui.SetName(salome.ObjectToID(hypNbSeg), - "NumberOfSegments_10")

- -

 

- -

print "-------------------------- - MaxElementArea"

- -

maxElementArea = - 800

- -

 

- -

hypArea = smesh.CreateHypothesis("MaxElementArea", - "libStdMeshersEngine.so")

- -

hypArea.SetMaxElementArea(maxElementArea)

- -

 

- -

print hypArea.GetName()

- -

print hypArea.GetId()

- -

print hypArea.GetMaxElementArea()

- -

 

- -

smeshgui.SetName(salome.ObjectToID(hypArea), - "MaxElementArea_500")

- -

 

- -

print "-------------------------- - MaxElementVolume"

- -

maxElementVolume - = 900

- -

 

- -

hypVolume = smesh.CreateHypothesis("MaxElementVolume", - "libStdMeshersEngine.so")

- -

hypVolume.SetMaxElementVolume(maxElementVolume)

- -

 

- -

print hypVolume.GetName()

- -

print hypVolume.GetId()

- -

print hypVolume.GetMaxElementVolume()

- -

 

- -

smeshgui.SetName(salome.ObjectToID(hypVolume), - "MaxElementVolume_500")

- -

 

- -

# create algorithms

- -

print "-------------------------- - create Algorithms"

- -

 

- -

print "-------------------------- - Regular_1D"

- -

regular1D = smesh.CreateHypothesis("Regular_1D", - "libStdMeshersEngine.so")

- -

smeshgui.SetName(salome.ObjectToID(regular1D), - "Wire Discretisation")

- -

 

- -

print "-------------------------- - Quadrangle_2D"

- -

quad2D = smesh.CreateHypothesis("Quadrangle_2D", - "libStdMeshersEngine.so")

- -

smeshgui.SetName(salome.ObjectToID(quad2D), - "Quadrangle_2D")

- -

 

- -

# initialize a mesh with - the box

- -

mesh = smesh.CreateMesh(box)

- -

smeshgui.SetName(salome.ObjectToID(mesh), - "MeshBox")

- -

 

- -

# add a hypothesis to the - box

- -

print "-------------------------- - add hypothesis to the box"

- -

mesh.AddHypothesis(box,hypNbSeg)

- -

mesh.AddHypothesis(box,hypArea)

- -

mesh.AddHypothesis(box,hypVolume)

- -

mesh.AddHypothesis(box,regular1D)

- -

mesh.AddHypothesis(box,quad2D)

- -

 

- -

# compute the mesh

- -

print "-------------------------- - compute the mesh of the box"

- -

ret = smesh.Compute(mesh,box)

- -

print ret

- -

if ret == 0:

- -

    print - "probleme when computing the mesh"

- -

 

- -

# create geometry groups - on the 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.CreateGroupFromGEOM(SMESH.FACE, - "SMESHGroup1", aGeomGroup1)

- -

aSmeshGroup2 = mesh.CreateGroupFromGEOM(SMESH.EDGE, - "SMESHGroup2", aGeomGroup2)

- -

 

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Edit a Group

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

aFilterMgr = smesh.CreateFilterManager()

- -

 

- -

# Criterion : AREA > - 20

- -

 

- -

aFunctor = aFilterMgr.CreateArea()

- -

aPredicate = aFilterMgr.CreateMoreThan()

- -

aPredicate.SetNumFunctor( - aFunctor )

- -

aPredicate.SetMargin( - 30 )

- -

 

- -

aFilter = aFilterMgr.CreateFilter()

- -

aFilter.SetPredicate( - aPredicate )

- -

 

- -

anIds = aFilter.GetElementsId( - mesh )

- -

 

- -

# create a group by adding - elements with area > 20

- -

aGroup = mesh.CreateGroup( - SMESH.FACE, "Area > 20" )

- -

aGroup.Add( anIds - )

- -

 

- -

print "Criterion: - Area > 20 Nb = ", len( anIds )

- -

for i in range( - len( anIds ) ):

- -

  print - anIds[ i ]

- -

 

- -

# Criterion : AREA > - 60

- -

 

- -

aFunctor = aFilterMgr.CreateArea()

- -

aPredicate = aFilterMgr.CreateMoreThan()

- -

aPredicate.SetNumFunctor( - aFunctor )

- -

aPredicate.SetMargin( - 60 )

- -

 

- -

aFilter = aFilterMgr.CreateFilter()

- -

aFilter.SetPredicate( - aPredicate )

- -

 

- -

anIds = aFilter.GetElementsId( - mesh )

- -

 

- -

# create a group of elements - with area [20; 60] by removing elements with area > 60 from  group - aGroup

- -

aGroup.Remove(anIds)

- -

 

- -

# print the result

- -

aGroupElemIDs = - aGroup.GetListOfID()

- -

print "Criterion: - 20 < Area < 60 = ", len( aGroupElemIDs )

- -

for i in range( - len( aGroupElemIDs ) ):

- -

  print - aGroupElemIDs[ i ]

- -

 

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

 

- -

Union of two groups

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

aFilterMgr = smesh.CreateFilterManager()

- -

 

- -

# Criterion : AREA > - 20

- -

 

- -

aFunctor = aFilterMgr.CreateArea()

- -

aPredicate = aFilterMgr.CreateMoreThan()

- -

aPredicate.SetNumFunctor( - aFunctor )

- -

aPredicate.SetMargin( - 20 )

- -

 

- -

aFilter = aFilterMgr.CreateFilter()

- -

aFilter.SetPredicate( - aPredicate )

- -

 

- -

anIds = aFilter.GetElementsId( - mesh )

- -

 

- -

# create a group by adding - elements with area > 20

- -

aGroup1 = mesh.CreateGroup( - SMESH.FACE, "Area > 20" )

- -

aGroup1.Add( anIds - )

- -

 

- -

print "Criterion: - Area > 20 Nb = ", len( anIds )

- -

for i in range( - len( anIds ) ):

- -

  print - anIds[ i ]

- -

 

- -

# Criterion : AREA = 20

- -

 

- -

aFunctor = aFilterMgr.CreateArea()

- -

aPredicate = aFilterMgr.CreateEqualTo()

- -

aPredicate.SetNumFunctor( - aFunctor )

- -

aPredicate.SetMargin( - 20 )

- -

 

- -

aFilter = aFilterMgr.CreateFilter()

- -

aFilter.SetPredicate( - aPredicate )

- -

 

- -

anIds = aFilter.GetElementsId( - mesh )

- -

 

- -

# create a group by adding - elements with area > 20

- -

aGroup2 = mesh.CreateGroup( - SMESH.FACE, "Area = 20" )

- -

aGroup2.Add( anIds - )

- -

 

- -

print "Criterion: - Area = 20 Nb = ", len( anIds )

- -

for i in range( - len( anIds ) ):

- -

  print - anIds[ i ]

- -

 

- -

# create union group : - area >= 20

- -

aGroup3 = mesh.UnionGroups(aGroup1, - aGroup2, "Area >= 20")

- -

print "Criterion: - Area >= 20 Nb = ", len( aGroup3.GetListOfID() )

- -

 

- -

# Criterion : AREA < - 20

- -

 

- -

aFunctor = aFilterMgr.CreateArea()

- -

aPredicate = aFilterMgr.CreateLessThan()

- -

aPredicate.SetNumFunctor( - aFunctor )

- -

aPredicate.SetMargin( - 20 )

- -

 

- -

aFilter = aFilterMgr.CreateFilter()

- -

aFilter.SetPredicate( - aPredicate )

- -

 

- -

anIds = aFilter.GetElementsId( - mesh )

- -

 

- -

# create a group by adding - elements with area < 20

- -

aGroup4 = mesh.CreateGroup( - SMESH.FACE, "Area < 20" )

- -

aGroup4.Add( anIds - )

- -

 

- -

print "Criterion: - Area < 20 Nb = ", len( anIds )

- -

for i in range( - len( anIds ) ):

- -

  print - anIds[ i ]

- -

  

- -

# create union group : - area >= 20 and area < 20

- -

aGroup5 = mesh.UnionGroups(aGroup3, - aGroup4, "Any Area")

- -

print "Criterion: - Any Area Nb = ", len( aGroup5.GetListOfID() )

- -

 

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

- -

 

- -

- -

 

- -

Intersection of two groups

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

aFilterMgr = smesh.CreateFilterManager()

- -

 

- -

# Criterion : AREA > - 20

- -

 

- -

aFunctor = aFilterMgr.CreateArea()

- -

aPredicate = aFilterMgr.CreateMoreThan()

- -

aPredicate.SetNumFunctor( - aFunctor )

- -

aPredicate.SetMargin( - 20 )

- -

 

- -

aFilter = aFilterMgr.CreateFilter()

- -

aFilter.SetPredicate( - aPredicate )

- -

 

- -

anIds = aFilter.GetElementsId( - mesh )

- -

 

- -

# create a group by adding - elements with area > 20

- -

aGroup1 = mesh.CreateGroup( - SMESH.FACE, "Area > 20" )

- -

aGroup1.Add( anIds - )

- -

 

- -

print "Criterion: - Area > 20 Nb = ", len( anIds )

- -

for i in range( - len( anIds ) ):

- -

  print - anIds[ i ]

- -

 

- -

# Criterion : AREA < - 60

- -

 

- -

aFunctor = aFilterMgr.CreateArea()

- -

aPredicate = aFilterMgr.CreateLessThan()

- -

aPredicate.SetNumFunctor( - aFunctor )

- -

aPredicate.SetMargin( - 60 )

- -

 

- -

aFilter = aFilterMgr.CreateFilter()

- -

aFilter.SetPredicate( - aPredicate )

- -

 

- -

anIds = aFilter.GetElementsId( - mesh )

- -

 

- -

# create a group by adding - elements with area < 60

- -

aGroup2 = mesh.CreateGroup( - SMESH.FACE, "Area < 60" )

- -

aGroup2.Add( anIds - )

- -

 

- -

print "Criterion: - Area < 60 Nb = ", len( anIds )

- -

for i in range( - len( anIds ) ):

- -

  print - anIds[ i ]

- -

  

- -

# create an intersection - of groups : 20 < area < 60

- -

aGroup3 = mesh.IntersectGroups(aGroup1, - aGroup2, "20 < Area < 60")

- -

print "Criterion: - 20 < Area < 60 Nb = ", len( aGroup3.GetListOfID() )

- -

 

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

   

- -

Cut of two groups

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

aFilterMgr = smesh.CreateFilterManager()

- -

 

- -

# Criterion : AREA > - 20

- -

 

- -

aFunctor = aFilterMgr.CreateArea()

- -

aPredicate = aFilterMgr.CreateMoreThan()

- -

aPredicate.SetNumFunctor( - aFunctor )

- -

aPredicate.SetMargin( - 20 )

- -

 

- -

aFilter = aFilterMgr.CreateFilter()

- -

aFilter.SetPredicate( - aPredicate )

- -

 

- -

anIds = aFilter.GetElementsId( - mesh )

- -

 

- -

# create a group by adding - elements with area > 20

- -

aGroupMain = mesh.CreateGroup( - SMESH.FACE, "Area > 20" )

- -

aGroupMain.Add( - anIds )

- -

 

- -

print "Criterion: - Area > 20 Nb = ", len( anIds )

- -

for i in range( - len( anIds ) ):

- -

  print - anIds[ i ]

- -

 

- -

# Criterion : AREA < - 60

- -

 

- -

aFunctor = aFilterMgr.CreateArea()

- -

aPredicate = aFilterMgr.CreateLessThan()

- -

aPredicate.SetNumFunctor( - aFunctor )

- -

aPredicate.SetMargin( - 60 )

- -

 

- -

aFilter = aFilterMgr.CreateFilter()

- -

aFilter.SetPredicate( - aPredicate )

- -

 

- -

anIds = aFilter.GetElementsId( - mesh )

- -

 

- -

# create a group by adding - elements with area < 60

- -

aGroupTool = mesh.CreateGroup( - SMESH.FACE, "Area < 60" )

- -

aGroupTool.Add( - anIds )

- -

 

- -

print "Criterion: - Area < 60 Nb = ", len( anIds )

- -

for i in range( - len( anIds ) ):

- -

  print - anIds[ i ]

- -

  

- -

# create an intersection - of groups : area >= 60

- -

aGroupRes = mesh.CutGroups(aGroupMain, - aGroupTool, "Area >= 60")

- -

print "Criterion: - Area >= 60 Nb = ", len( aGroupRes.GetListOfID() )

- -

 

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

   

- - - - + + + + + +Grouping Elements + + + + + + + + + + + +

Grouping Elements

+ +

Create a Standalone Group

+ +

 

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

 

+ +

# Criterion : AREA > + 100

+ +

 

+ +

aFunctor = aFilterMgr.CreateArea()

+ +

aPredicate = aFilterMgr.CreateMoreThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 100 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# print the result

+ +

print "Criterion: + Area > 100 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# create a group consisting + of faces with area > 100

+ +

aGroup = mesh.CreateGroup( + SMESH.FACE, "Area > 100" )

+ +

aGroup.Add( anIds + )

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

+ +

Create a Group on Geometry

+ +

import salome

+ +

import geompy

+ +

 

+ +

import SMESH

+ +

import StdMeshers

+ +

 

+ +

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", + "SMESH")

+ +

 

+ +

# create a box

+ +

box = geompy.MakeBox(0., + 0., 0., 100., 100., 100.)

+ +

 

+ +

# add the box to the study

+ +

idbox = geompy.addToStudy(box, + "box")

+ +

 

+ +

# add the first face of + the box to the study

+ +

subShapeList = geompy.SubShapeAll(box, + geompy.ShapeType["FACE"])

+ +

face = subShapeList[0]

+ +

name = geompy.SubShapeName(face, + box)

+ +

idface = geompy.addToStudyInFather(box, + face, name)

+ +

 

+ +

# create a hypothesis

+ +

numberOfSegments + = 7

+ +

hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", + "libStdMeshersEngine.so")

+ +

hypNbSeg.SetNumberOfSegments(numberOfSegments)

+ +

 

+ +

# create algorithms

+ +

regular1D = smesh.CreateHypothesis("Regular_1D", + "libStdMeshersEngine.so")

+ +

quad2D = smesh.CreateHypothesis("Quadrangle_2D", + "libStdMeshersEngine.so")

+ +

 

+ +

# initialize a mesh with + the box

+ +

mesh = smesh.CreateMesh(box)

+ +

 

+ +

# add hypotheses and algorithms + to the box

+ +

mesh.AddHypothesis(box,hypNbSeg)

+ +

mesh.AddHypothesis(box,regular1D)

+ +

mesh.AddHypothesis(box,quad2D)

+ +

 

+ +

# compute the mesh

+ +

ret = smesh.Compute(mesh,box)

+ +

if ret == 0:

+ +

    print + "probleme when computing the mesh"

+ +

else:

+ +

    print + "Computation succeded"

+ +

 

+ +

# create geometry groups + on the face

+ +

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")

+ +

 

+ +

# create SMESH groups

+ +

aSmeshGroup1 = mesh.CreateGroupFromGEOM(SMESH.FACE, + "SMESHGroup1",

+ +

aGeomGroup1)

+ +

aSmeshGroup2 = mesh.CreateGroupFromGEOM(SMESH.EDGE, + "SMESHGroup2", aGeomGroup2)

+ +

 

+ +

salome.sg.updateObjBrowser(1) +  

+ +

 

+ +

Edit a Group

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

 

+ +

# Criterion : AREA > + 20

+ +

 

+ +

aFunctor = aFilterMgr.CreateArea()

+ +

aPredicate = aFilterMgr.CreateMoreThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 30 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# create a group by adding + elements with area > 20

+ +

aGroup = mesh.CreateGroup( + SMESH.FACE, "Area > 20" )

+ +

aGroup.Add( anIds + )

+ +

 

+ +

print "Criterion: + Area > 20 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# Criterion : AREA > + 60

+ +

 

+ +

aFunctor = aFilterMgr.CreateArea()

+ +

aPredicate = aFilterMgr.CreateMoreThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 60 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# create a group of elements + with area [20; 60] by removing elements with area > 60 from  group + aGroup

+ +

aGroup.Remove(anIds)

+ +

 

+ +

# print the result

+ +

aGroupElemIDs = + aGroup.GetListOfID()

+ +

print "Criterion: + 20 < Area < 60 = ", len( aGroupElemIDs )

+ +

for i in range( + len( aGroupElemIDs ) ):

+ +

  print + aGroupElemIDs[ i ]

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

 

+ +

Union of two groups

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

 

+ +

# Criterion : AREA > + 20

+ +

 

+ +

aFunctor = aFilterMgr.CreateArea()

+ +

aPredicate = aFilterMgr.CreateMoreThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 20 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# create a group by adding + elements with area > 20

+ +

aGroup1 = mesh.CreateGroup( + SMESH.FACE, "Area > 20" )

+ +

aGroup1.Add( anIds + )

+ +

 

+ +

print "Criterion: + Area > 20 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# Criterion : AREA = 20

+ +

 

+ +

aFunctor = aFilterMgr.CreateArea()

+ +

aPredicate = aFilterMgr.CreateEqualTo()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 20 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# create a group by adding + elements with area > 20

+ +

aGroup2 = mesh.CreateGroup( + SMESH.FACE, "Area = 20" )

+ +

aGroup2.Add( anIds + )

+ +

 

+ +

print "Criterion: + Area = 20 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# create union group : + area >= 20

+ +

aGroup3 = mesh.UnionGroups(aGroup1, + aGroup2, "Area >= 20")

+ +

print "Criterion: + Area >= 20 Nb = ", len( aGroup3.GetListOfID() )

+ +

 

+ +

# Criterion : AREA < + 20

+ +

 

+ +

aFunctor = aFilterMgr.CreateArea()

+ +

aPredicate = aFilterMgr.CreateLessThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 20 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# create a group by adding + elements with area < 20

+ +

aGroup4 = mesh.CreateGroup( + SMESH.FACE, "Area < 20" )

+ +

aGroup4.Add( anIds + )

+ +

 

+ +

print "Criterion: + Area < 20 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

  

+ +

# create union group : + area >= 20 and area < 20

+ +

aGroup5 = mesh.UnionGroups(aGroup3, + aGroup4, "Any Area")

+ +

print "Criterion: + Any Area Nb = ", len( aGroup5.GetListOfID() )

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

+ +

 

+ +

+ +

 

+ +

Intersection of two groups

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

 

+ +

# Criterion : AREA > + 20

+ +

 

+ +

aFunctor = aFilterMgr.CreateArea()

+ +

aPredicate = aFilterMgr.CreateMoreThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 20 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# create a group by adding + elements with area > 20

+ +

aGroup1 = mesh.CreateGroup( + SMESH.FACE, "Area > 20" )

+ +

aGroup1.Add( anIds + )

+ +

 

+ +

print "Criterion: + Area > 20 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# Criterion : AREA < + 60

+ +

 

+ +

aFunctor = aFilterMgr.CreateArea()

+ +

aPredicate = aFilterMgr.CreateLessThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 60 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# create a group by adding + elements with area < 60

+ +

aGroup2 = mesh.CreateGroup( + SMESH.FACE, "Area < 60" )

+ +

aGroup2.Add( anIds + )

+ +

 

+ +

print "Criterion: + Area < 60 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

  

+ +

# create an intersection + of groups : 20 < area < 60

+ +

aGroup3 = mesh.IntersectGroups(aGroup1, + aGroup2, "20 < Area < 60")

+ +

print "Criterion: + 20 < Area < 60 Nb = ", len( aGroup3.GetListOfID() )

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

   

+ +

Cut of two groups

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

 

+ +

# Criterion : AREA > + 20

+ +

 

+ +

aFunctor = aFilterMgr.CreateArea()

+ +

aPredicate = aFilterMgr.CreateMoreThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 20 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# create a group by adding + elements with area > 20

+ +

aGroupMain = mesh.CreateGroup( + SMESH.FACE, "Area > 20" )

+ +

aGroupMain.Add( + anIds )

+ +

 

+ +

print "Criterion: + Area > 20 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# Criterion : AREA < + 60

+ +

 

+ +

aFunctor = aFilterMgr.CreateArea()

+ +

aPredicate = aFilterMgr.CreateLessThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 60 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# create a group by adding + elements with area < 60

+ +

aGroupTool = mesh.CreateGroup( + SMESH.FACE, "Area < 60" )

+ +

aGroupTool.Add( + anIds )

+ +

 

+ +

print "Criterion: + Area < 60 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

  

+ +

# create an intersection + of groups : area >= 60

+ +

aGroupRes = mesh.CutGroups(aGroupMain, + aGroupTool, "Area >= 60")

+ +

print "Criterion: + Area >= 60 Nb = ", len( aGroupRes.GetListOfID() )

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

   

+ + + + diff --git a/doc/salome/gui/SMESH/image10.jpg b/doc/salome/gui/SMESH/image10.jpg index 5a15643bb019c662e2a22ef3c50db01b49ec66cb..14cea86187fe4e395d55cc30cf1ddb90bdd5b932 100755 GIT binary patch delta 12 UcmZ2pyR3G@XTHr}_%`bU04=8mkN^Mx delta 14 WcmZ2hyS#S8XFf*W&7b);>jMBa=mwnt diff --git a/doc/salome/gui/SMESH/image129.gif b/doc/salome/gui/SMESH/image129.gif deleted file mode 100755 index c3d2c60cfaefe5eb5eb23e56131b121c1fc6a501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10074 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 K8e;rM!2bdQ%W@n5 diff --git a/doc/salome/gui/SMESH/image131.gif b/doc/salome/gui/SMESH/image131.gif index 8ca3453fdac083655fb3c9950eee1cad985b5c0d..dc6433146575445d3777b8a69c1077d533ed35b4 100755 GIT binary patch delta 12 UcmX>ha$ID?MCQ$tn76S303(eB00000 delta 14 WcmX>uazbRoL}o_b%@diou>k-n)CCOy diff --git a/doc/salome/gui/SMESH/image138.gif b/doc/salome/gui/SMESH/image138.gif deleted file mode 100644 index 1659aab9f026f827ec29a201624e95fecea52ad9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4819 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 diff --git a/doc/salome/gui/SMESH/image139.gif b/doc/salome/gui/SMESH/image139.gif deleted file mode 100644 index 03943831c52fc6ed4ea9f8c62045033902e36962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5289 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 z%0A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 diff --git a/doc/salome/gui/SMESH/image22.gif b/doc/salome/gui/SMESH/image22.gif deleted file mode 100755 index 18b53bf4df7bf7efa602abe4871046d88dbdb334..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1287 zcmX9-3rw3u96w`O*d#j8R8X2gryIpbG-srs!37hbECi;a3`W>6JvSm|6BHT4HO?@> zEU*+AH(uran6Obc_KFG;*`NpNR6wLb!O*qh7#bDA=K1^1OPYKBf3N@71WUX*YVSOW zC;t#_*woLaCL4A(+aSj5VEfoDolfWP?;j8l5EvM!*Xu(=LybnG$z)1POG{2pj*E+n zj*gaxZ89}=lGw$PT%H{9cqV(gDk&k15Kf2yI3<)4MhT}xP$JbGWrQ)p84-*~^^|hL zIN_WKPNb@&f-ph2AVLs{wIo~;AvHumGJ*;`p;8f0N*Se`QbDOyeAqKaIirG6spxUd zIOUuQPNhqfEp-*S1l1x!36Mt0cmQ90xme0DlC`* zG4?`msj`DNaN}A?E>)Ds9!VowWQo`i5>i17@C~mp2R9InGRTBF#jij$RKRFGz;oQ= z07I&lATl@vEA|rcsb->kXbYNv)DbgsMV4qD(n3Or1T}DvUcw?gY4w^+t+kK?eh>l? zkSN7-Tw;e}0Q^5;#;T2kXJ=;@78aJ4mR46+yId}((>XOY<#xLl78ZOy-^$9$>guXo zzvXbW+H5xM!;wU)2{Tq0kK>SN{{`ZYlZ~N?XB|UF{qK+5eeG=1@UhKXlIjxsn!oxu znC8x2>ub4M5%ywvsKwbjYL9rid-tfb&2{pr*T?EC{q5tm=6v7mXn)7ojoXiIG9;br z{I(_09+@?EuIsyw)Rv_Br1RZBoKEl0bsySnn>w>+xZJQ~;L{)b*(IOOQPq=C_tuG# zlFav*jrbJm&iTkNKXANgtSLdo*Y zyhCdTX2w2QINlReSa7NJi>(t+#9V%3@aHofOB-Tii~hcTU)Qj;_x*$U-p-C~x{6cl z>+U~Z7`U)&HhRSM4d2#Ka&s*zAS)XXlFVSj}Mx_g??L z@g045r{SYUgSq+0Qn)9p{PfO(^kdXAonsC8tS02Rv8iw_%e;6oyzKB_!9hh4dcT%R zKmEpEQxlA)u*&2wA8508k0*v#ywd(m+m1{&ntJlXqOzcx$4;0Q52QC(f->G5@GjQg z({1w96-@5;)W5gb@Y9j!{sSySgmeG^ diff --git a/doc/salome/gui/SMESH/image23.gif b/doc/salome/gui/SMESH/image23.gif deleted file mode 100755 index 5a1216dc6ecbf9b9e598419dbd37f41254a49730..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1154 zcmZ?wbh9u|tY9!;_|5&}UZ3Jv`V&Sf&5lav}JX$1S(tlYHJyHzLt)Evp+l*9eT z#dax@#t!~7teTl@e;6kQF7)V^Q|;Q4d2o^U%wIjbgw_3)^VK(26fn$B<)T zXTQxkb0azW;B<4XYc>|^Zl0O;@mg!tqz~uL&3C-qsu{lW{_GXW!gq5lO(VCj7jL_x zHOVaJ>S|``yKk+_GanwCyxYxtPi67;bBn#_`^kQfI=;D6J%8nlZ7<*I30_a%#{F;C zi%)gh<^TKaK0Z1**E-CPC+vA_-y79yI`{r<^ZN03?y=YmMzdq`b*yq_@?Jl;vL|@) zPW!%~hDEI-vSpWGMM4wzqwBE+V)M%HBtLHbajQ-3R(oO>$E{;Zl?V1}Jnk{MW)bMX GU=08;yt?}U diff --git a/doc/salome/gui/SMESH/image24.gif b/doc/salome/gui/SMESH/image24.gif index 3d8032bf057f2edd8812eb21cd20a75bab20767e..c678a613212dc150b7ac178b0b2e803658db259e 100755 GIT binary patch delta 22 ecmcamc(!muFZ1R;W-gA+Gr0?SH*-rKl?MQFf(WJn delta 28 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 S&Ie%0{^wHvxAX{yhW`uK(B>Ne diff --git a/doc/salome/gui/SMESH/image27.gif b/doc/salome/gui/SMESH/image27.gif deleted file mode 100755 index 6c8485ca92484aaefe28a6836fa65a05a715fbad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1703 zcmZ?wbh9u|e8rH!@SOn!{{R0Erbmg<5EyYGpab$TC@(N@{AXb1knz~C;9xU{uvW~8 z4GIly0)lou9vc@O?Updkx^tpX>3FN0eV2^qrX`*e75({qR&HAA-OUiOPe)TY#dm^n z@v9>{FF)~ZwHIc4>v<*p;zVcFB%i7+FN2oL&$K$DA-XEGO*r{g%?eY8@J7SUS-jp8 zo<=N;tDmG>z4fizx;X2$xvw{@j@_XB@zvSWW@|63VSoRv)O&`~ogJ38TI*(CfAe6r zVycs#kL02UM`{Fr_sUpoPHUdCe9>B;sxRrQim%%}+byyF@!ojH>Up}mw!A&lp1#dZ zN387ay-DG0_q~6Yr5=rWndi4|;+oGJFU)WEJ1vv*YWVrTO#ZIj zKX(-DmsgLEd-?PG%ZsO%%lvy;{dwi$aQ&G5N&kN{uxUJKU=hoB(8!^-;z1LS*^39w z0&W@)TSUS#9=1xPt$5fbQ>HP!UE$l8_zsn8*CYc}m)*FRpuMW&VWfIln{4-jvoDgG z_8yH;E;Qjf{Qew8Gm%TfNQ7pUiJy)5=&-t@Jc< zX1!R{!U@YYUoD%l&NAxJ>`9YWOq&-tHS%Rx$GLKm#j|&@-k4?ErnP)!KvLJM=2h#u zmaf*@_MauM2^_$HX+_c|r zT5_^$P2r5FY{@RAqTQ3XnUr1$@qJ+C@^1OImyz$bg^8KY*==x9GOsuw_xhyXZ$hD> zMX$|X#qWK)>q}l?v}D+-g(0z}uRWg&{mFIVcKvET0yZmg8%rsv9|0jp(8UZ-rjXM8QZ+{)x`gudRyt?%Q! zgs#s!?2@|tpn7@Uhi{ecd#-f&yH+kS?LKXDB&hYAMgDr>+|(})uaDZ+Uia%L{PARZ R{=c6umapH}#mLBD4FDnp;yVBU diff --git a/doc/salome/gui/SMESH/image37.gif b/doc/salome/gui/SMESH/image37.gif index edd5263d85a207447082330eed7c63e2e33d233d..43592da643f1dcc10d026e35f1bdf971eec1f97c 100755 GIT binary patch delta 11 ScmaFK{(^l&F7xC(=4t>QI0SzH delta 13 UcmaFC{*rw|E;A$V<@i~s-t diff --git a/doc/salome/gui/SMESH/image7.jpg b/doc/salome/gui/SMESH/image7.jpg index cbd6170ee9f9fdd1078ce15363a6eee1ed9dc86d..ded3ae99a35200597497fb8f0a1ad3803ce276c0 100755 GIT binary patch delta 14 VcmaFU!ScF;WrL>MW-T|TeE>2U1~LEu delta 16 XcmaFe!SbeqWrL<0BkyKSH>Z67I)w&5 diff --git a/doc/salome/gui/SMESH/image71.jpg b/doc/salome/gui/SMESH/image71.jpg index cb1223d3895bfeb700592dfd27b64d20f6ef772b..bdb07ea6bab04466f5aa3a92191cff1485b68014 100755 GIT binary patch delta 12 TcmbOiH8*NQlGNs8sog>VBuNDs delta 14 VcmbOmH7{yIk`yEF<|L`zLI5hz1ttIh diff --git a/doc/salome/gui/SMESH/image73.gif b/doc/salome/gui/SMESH/image73.gif deleted file mode 100755 index 504816a3c0859db0b50534d136b416f4eff42f70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2977 zcmeH``9IT-1IOQ+*%oVtX(q>%BSJQ&lxmy%sFs{VDYK9x)~9Ir48!DT&gQCNliWvh zguWBGiWEXgha&MsQ`FK7aFI#(?LkG_n103Kx@GEdQ z9ECzDD=TYiYU=6f;qiELb8`xX;^5%m?CeaV(fs`UE?v6BWHMPS7Kg)0OH0ei$tfx- z5{X1LH8o<+OR-qo+1c6K+xx%0f9qcZ|2GB0y8p%7eu}uqhJSnKJ@;(r| z8v+fM>9kXv1pt}IpTY1e6{B4114tY|ikI9zo^b5Vpm7is@YO_KCizMd5gsN~V*m%l zH(~Wv;UxFZG!S?u;!TyA=A;M-vk_heP%6NYY zB(ro^k5Z(7*1ty1-)1O5p%t5Il_+v+C7G*poy__Jgc_3usglTG&|i8QF@L`QS!#Jm z-Rfd-)~-l_n>-vKfo=3FLK=o2u2b);*ynYD?j|`dww@2MB129wuHAXic32za3Zz*d zNZpFB@cU0I=u4eM{U67ADpbQ;(SA<^2r8gFU4V~3lR zwD_W{jZT=;NFUg9+L%ne0i8byIls&<#E8=L`wZmP8_5d|!ZnfchQY`)Y3UPG0D%&a z2I+V^CVkt~${eUqUbbZxaf5H{? z>f8gvr0vee=Q6p5s8R4vpL2j#ckx&S#03VFWfoX01&h^|u03JHkdyC_=(Da+Idr`$ zkaA{c;B4KDn!Bq=r|>jQ23E#tf2Y<^O3T5ctQb7I@U=}&%o)U>`G)IM>1_~h0? zGs~z;h~~EdAMaiyRX6m1FeLxJHhwTH-T3d^%~k3Aj4e6l!#aW+&blF$EF*j-$oB19zrceYr3rjfdB4 zhwu_)!t-IC1jS5x+G%WKRv(n`kf@0RmK@m?MvdAx5knL;`L~lj&8Qt{N3ar?1lk7k z>QzGLl9UGD!?(*(2!sGIWjzHNUF7!$K~iKbUMYCCqTY0d;7acSPyhhU!nJ}Pmrn6N z5n9W&rPE=2+IVfASV~~e3c>?tA41i$?$;+ykxNLvO-Bg@r=5eDuZutM?{@6~Lb$`ZLRg-3Q$YoFH)wiO_6}7NK#se; z?uId_;hz$G3tZT$y;e;x4)dI;Dt{Jj^^EgFF)4&x5&(I}E*G4N`BIe^hZ^hX!{K5+ zOOdu>Ct5!Rqse5V^oh4omLlj1DK+KV12Uu(NJRgWu~9{>s4aqw&+jR`vC)47IbPg_+(iA zO1ae4h~}@=C$hp)Ur*~d4Ui0-30j6m7tq~&sNO_Y;pshCO#oEpI@SWo_ZDU3c|*~2 zmqn@mvprsIt}0_48STTKV8KjExIA-uzScr5t3LlQ z&w0F|akqc$n(m>xJi>3&p%M zIKgvrq>myz4P01xi**M6W4EAnHq=g(E2i4NENy?S9OYC0Kgr_j^7GOzvbN?kSH&#O z6O|`pHZLx;H8WjmQaoRN^0`T)e+&%O)%DAh+DXU+X67O^%D%p%BxOF25h^P-@q4Ke z)1$*1LR&+D#9=URR;*5vGVbmZD&&p()rCyIw)s)a=vk`?>*%h!pfdK!48e4x-n>YAp;q^DW|9Dk=$9muO-Pl3FR8Zyz;|JEFQ47u`C$vJu&@ z5sj~(o5*pbL{%p+X1NqbE5sOpq7ENbSu1A^4X$K3zVh4fxFs4|nYH>@%*)xob0Fiq z#B9eXTPOL-6JHIXxRmAJOvldZ9J?Y8?_9LF6!WdNw*5`Zu{pG?cqC$Y3kiC*_ff*g K@;4bcaOA&RKKPIT diff --git a/doc/salome/gui/SMESH/image74.gif b/doc/salome/gui/SMESH/image74.gif index c66029e7484cd22dcbdfddd29e9592812a56b299..db8a4c8cd10fe3f3e33103f3bddfb74954d58a32 100755 GIT binary patch delta 11 Scmcc3ev5sBGV^2==IsC)!UPKd delta 13 Ucmcb`ew%%RGBYFZWM$^<03bL77ytkO diff --git a/doc/salome/gui/SMESH/index.htm b/doc/salome/gui/SMESH/index.htm index 767e2b766..3163eee1b 100755 --- a/doc/salome/gui/SMESH/index.htm +++ b/doc/salome/gui/SMESH/index.htm @@ -1,180 +1,180 @@ - - -Mesh Module Reference Manual - - - - - - - - - - - - - + + +Mesh Module Reference Manual + + + + + + + + + + + + + diff --git a/doc/salome/gui/SMESH/index_csh.htm b/doc/salome/gui/SMESH/index_csh.htm index 2bd1f6387..867d877c9 100755 --- a/doc/salome/gui/SMESH/index_csh.htm +++ b/doc/salome/gui/SMESH/index_csh.htm @@ -1,106 +1,106 @@ - - -Mesh Module Reference Manual - - - - - - - - - - - - + + +Mesh Module Reference Manual + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/index_rhc.htm b/doc/salome/gui/SMESH/index_rhc.htm index 4e8723907..b751bd4c8 100755 --- a/doc/salome/gui/SMESH/index_rhc.htm +++ b/doc/salome/gui/SMESH/index_rhc.htm @@ -1,106 +1,106 @@ - - -Mesh Module Reference Manual - - - - - - - - - - - - + + +Mesh Module Reference Manual + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/length.htm b/doc/salome/gui/SMESH/length.htm index ea7c01310..db7b0ae0f 100755 --- a/doc/salome/gui/SMESH/length.htm +++ b/doc/salome/gui/SMESH/length.htm @@ -1,112 +1,118 @@ - - - - - -Length - - - - - - - - - - - - -

Length

- -

The Length quality control criterion returns a value - of length of edge.

- -

 

- -

- -

 

- -

 

- -

See Also - a sample TUI Script of a  Length - quality control operation.  

- -

.

- - - - + + + + + +Length + + + + + + + + + + + + + +

Length

+ +

The Length quality control criterion returns a value + of length of edge.

+ +

 

+ +

+ +

 

+ +

 

+ +

See Also + a sample TUI Script of a  Length + quality control operation.  

+ +

.

+ + + + diff --git a/doc/salome/gui/SMESH/merge_elements.htm b/doc/salome/gui/SMESH/merge_elements.htm index 32b5ebfb8..f210b6af8 100755 --- a/doc/salome/gui/SMESH/merge_elements.htm +++ b/doc/salome/gui/SMESH/merge_elements.htm @@ -1,101 +1,101 @@ - - - - - -Merge Elements - - - - - - - - - - -

Merging Elements

- -

This functionality allows to merge coincident elements - of a mesh selectable in the dialog box.

- -

- -

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.

- -

- -

  See - Also a sample TUI Script of a Merge - Elements operation.  

- -

 

- -

 

- - - - + + + + + +Merge Elements + + + + + + + + + + +

Merging Elements

+ +

This functionality allows to merge coincident elements + of a mesh selectable in the dialog box.

+ +

+ +

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.

+ +

+ +

  See + Also a sample TUI Script of a Merge + Elements operation.  

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/mesh.htm b/doc/salome/gui/SMESH/mesh.htm index be7069d51..f849df81a 100755 --- a/doc/salome/gui/SMESH/mesh.htm +++ b/doc/salome/gui/SMESH/mesh.htm @@ -1,216 +1,216 @@ - - - - - -mesh - - - - - - - - - - - -

Introduction to MESH

- -

 

- -

MESH - module of SALOME is destined for:

- - - -

- -

for edges:

- -
    - - -
- -

for faces:

- -
    - - -
- -

for solids:

- -
    - - -
- -

.

- - - - + + + + + +mesh + + + + + + + + + + + +

Introduction to MESH

+ +

 

+ +

MESH + module of SALOME is destined for:

+ + + +

+ +

for edges:

+ +
    + + +
+ +

for faces:

+ +
    + + +
+ +

for solids:

+ +
    + + +
+ +

.

+ + + + diff --git a/doc/salome/gui/SMESH/modifying_meshes.htm b/doc/salome/gui/SMESH/modifying_meshes.htm index 8ba2b742c..4e44b555e 100755 --- a/doc/salome/gui/SMESH/modifying_meshes.htm +++ b/doc/salome/gui/SMESH/modifying_meshes.htm @@ -1,1085 +1,1576 @@ - - - - - -Modifying Meshes - - - - - - - - - - -

Modifying Meshes

- -

Adding Nodes and Elements

- -

Add Node

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# add node

- -

aMeshEditor = mesh.GetMeshEditor()

- -

if aMeshEditor.AddNode(50, - 10, 0) == 1:

- -

    print - "Node addition is OK!"

- -

else:

- -

    print - "KO node addition."

- -

    

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Add Edge

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# add node

- -

aMeshEditor = mesh.GetMeshEditor()

- -

if aMeshEditor.AddNode(50, - 10, 0) == 1:

- -

    print - "Node addition is OK!"

- -

else:

- -

    print - "KO node addition."

- -

 

- -

# add edge

- -

LastNodeId = mesh.NbNodes()

- -

if aMeshEditor.AddEdge([LastNodeId, - 38]) == 1:

- -

    print - "Edge addition is OK!"

- -

else:

- -

    print - "KO edge addition."

- -

 

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Add Triangle

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# add node

- -

aMeshEditor = mesh.GetMeshEditor()

- -

if aMeshEditor.AddNode(50, - 10, 0) == 1:

- -

    print - "Node addition is OK!"

- -

else:

- -

    print - "KO node addition."

- -

 

- -

LastNodeId = mesh.NbNodes()

- -

 

- -

# add triangle

- -

if aMeshEditor.AddFace([LastNodeId, - 38, 39]) == 1:

- -

    print - "Triangle addition is OK!"

- -

else:

- -

    print - "KO triangle addition."

- -

    

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Add Quadrangle

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# add node

- -

aMeshEditor = mesh.GetMeshEditor()

- -

if aMeshEditor.AddNode(50, - 10, 0) == 1:

- -

    print - "Node addition is OK!"

- -

else:

- -

    print - "KO node addition."

- -

 

- -

LastNodeId = mesh.NbNodes()

- -

 

- -

# add quadrangle

- -

if aMeshEditor.AddNode(40, - 20, 0) == 1:

- -

    print - "Node addition is OK!"

- -

else:

- -

    print - "KO node addition."

- -

if aMeshEditor.AddFace([mesh.NbNodes(), - LastNodeId, 38, 39]) == 1:

- -

    print - "Quadrangle addition is OK!"

- -

else:

- -

    print - "KO quadrangle addition."

- -

 

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Add Tetrahedron

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# add node

- -

aMeshEditor = mesh.GetMeshEditor()

- -

if aMeshEditor.AddNode(50, - 10, 0) == 1:

- -

    print - "Node addition is OK!"

- -

else:

- -

    print - "KO node addition."

- -

 

- -

LastNodeId = mesh.NbNodes()

- -

 

- -

# add tetrahedron

- -

if aMeshEditor.AddVolume([LastNodeId, - 38, 39, 246]) == 1:

- -

    print - "Tetrahedron addition is OK!"

- -

else:

- -

    print - "KO tetrahedron addition."

- -

    

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Add Hexahedron

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# add nodes

- -

aMeshEditor = mesh.GetMeshEditor()

- -

if aMeshEditor.AddNode(50, - 10, 0) == 1:

- -

    print - "Node addition is OK!"

- -

else:

- -

    print - "KO node addition."

- -

aNodeId1 = mesh.NbNodes()

- -

 

- -

if aMeshEditor.AddNode(47, - 12, 0) == 1:

- -

    print - "Node addition is OK!"

- -

else:

- -

    print - "KO node addition."

- -

aNodeId2 = mesh.NbNodes()

- -

 

- -

if aMeshEditor.AddNode(50, - 10, 10) == 1:

- -

    print - "Node addition is OK!"

- -

else:

- -

    print - "KO node addition."

- -

aNodeId3 = mesh.NbNodes()

- -

 

- -

if aMeshEditor.AddNode(47, - 12, 10) == 1:

- -

    print - "Node addition is OK!"

- -

else:

- -

    print - "KO node addition."

- -

aNodeId4 = mesh.NbNodes()

- -

 

- -

# add hexahedron

- -

if aMeshEditor.AddVolume([aNodeId2, - aNodeId1, 38, 39, aNodeId4, aNodeId3, 245, 246]) == 1:

- -

    print - "Hexahedron addition is OK!"

- -

else:

- -

    print - "KO Hexahedron addition."

- -

    

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Removing Nodes and Elements

- -

Removing Nodes

- -

 

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# add node

- -

aMeshEditor = mesh.GetMeshEditor()

- -

if aMeshEditor.RemoveNodes([246, - 255]) == 1:

- -

    print - "Node removing is OK!"

- -

else:

- -

    print - "KO node removing."

- -

    

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Removing Elements

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

anEditor = mesh.GetMeshEditor()

- -

anEditor.RemoveElements([850, - 859, 814])

- -

 

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Renumbering Nodes and Elements

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

anEditor = mesh.GetMeshEditor()

- -

anEditor.RenumberNodes()

- -

 

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

 

- -

Moving Nodes

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# move node

- -

aMeshEditor = mesh.GetMeshEditor()

- -

aMeshEditor.MoveNode(38, - 20, 10, 0)

- -

    

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Diagonal Inversion

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# inverse diagonal

- -

aMeshEditor = mesh.GetMeshEditor()

- -

aMeshEditor.InverseDiag(700, - 642)

- -

    

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Uniting two Triangles

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# delete diagonal

- -

aMeshEditor = mesh.GetMeshEditor()

- -

aMeshEditor.DeleteDiag(700, - 642)

- -

    

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Uniting a Set of Triangles

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# unite a set of triangles

- -

aFilterMgr = smesh.CreateFilterManager()

- -

aFunctor = aFilterMgr.CreateMinimumAngle()

- -

 

- -

aMeshEditor = mesh.GetMeshEditor()

- -

aMeshEditor.TriToQuad([1145, - 1147, 1159, 1135], aFunctor, 60)

- -

    

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Cutting Quadrangles

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# unite a set of triangles

- -

aFilterMgr = smesh.CreateFilterManager()

- -

aFunctor = aFilterMgr.CreateMinimumAngle()

- -

 

- -

aMeshEditor = mesh.GetMeshEditor()

- -

aMeshEditor.QuadToTri([405, - 406], aFunctor)

- -

    

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Smoothing

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# smooth

- -

FacesSmooth = [911, - 931, 950, 864, 932]

- -

GroupSmooth = mesh.CreateGroup(SMESH.FACE,"Group - of faces (smooth)")

- -

GroupSmooth.Add(FacesSmooth)

- -

 

- -

aMeshEditor = mesh.GetMeshEditor()

- -

aMeshEditor.SmoothObject(GroupSmooth, - [], 20, 2, SMESH.SMESH_MeshEditor.CENTROIDAL_SMOOTH)

- -

 

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

 

- -

Extrusion

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# extrusion of the group

- -

point = SMESH.PointStruct(0, - 0, 5)

- -

vector = SMESH.DirStruct(point)

- -

FacesTriToQuad = [2381, - 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, - 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, - 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, - 2418, 2419, 2420, 2421, 2422]

- -

 

- -

GroupTriToQuad = mesh.CreateGroup(SMESH.FACE,"Group - of faces (quad)")

- -

GroupTriToQuad.Add(FacesTriToQuad)

- -

 

- -

aMeshEditor = mesh.GetMeshEditor()

- -

aMeshEditor.ExtrusionSweepObject(GroupTriToQuad, - vector, 5)

- -

 

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Extrusion along a Path

- -

import geompy

- -

import smesh

- -

import salome

- -

import SMESH

- -

 

- -

# create a 2D mesh on - a face

- -

# create vertices

- -

px   = - geompy.MakeVertex(100., 0.  , - 0.  )

- -

py   = - geompy.MakeVertex(0.  , - 100., 0.  )

- -

pz   = - geompy.MakeVertex(0.  , - 0.  , 100.)

- -

 

- -

# create a vector from - two points

- -

vxy = geompy.MakeVector(px, - py)

- -

 

- -

# create an arc from - three points

- -

arc = geompy.MakeArc(py, - pz, px)

- -

 

- -

# create a wire

- -

wire = geompy.MakeWire([vxy, - arc])

- -

isPlanarFace = 1

- -

 

- -

# create a face from - the wire

- -

face1 = geompy.MakeFace(wire, - isPlanarFace)

- -

 

- -

# add objects in the - study

- -

id_face1 = geompy.addToStudy(face1,"Face1")

- -

 

- -

# create hexahedrical - mesh

- -

hexa = smesh.Mesh(face1, - "Face compound : hexahedrical mesh")

- -

algo = hexa.Triangle()

- -

 

- -

# define "MaxElementArea" - hypothesis to be applied to each triangle

- -

algo.MaxElementArea(30)

- -

 

- -

# create a quadrangle - 2D algorithm for faces

- -

hexa.Quadrangle()

- -

 

- -

# create a local hypothesis

- -

algo = hexa.Segment(wire)

- -

 

- -

# define "NumberOfSegments" - hypothesis to cut an edge in a fixed number of segments

- -

algo.NumberOfSegments(6)

- -

 

- -

# compute the mesh

- -

hexa.Compute()

- -

 

- -

# create path mesh and - path shape

- -

# create a circle from - three points

- -

px1   = - geompy.MakeVertex(100., 100.  , - 0.  )

- -

py1   = - geompy.MakeVertex(-100.  , - -100., 0.  )

- -

pz1   = - geompy.MakeVertex(0.  , - 0.  , 50.)

- -

circle = geompy.MakeCircleThreePnt(py1, - pz1, px1)

- -

 

- -

# add objects in the - study

- -

id_circle = geompy.addToStudy(circle,"Path")

- -

circlemesh = smesh.Mesh(circle, - "Path mesh")

- -

 

- -

# create a local hypothesis

- -

algo = circlemesh.Segment()

- -

# define "NumberOfSegments" - hypothesis to cut an edge in a fixed number of segments

- -

algo.NumberOfSegments(10)

- -

 

- -

# compute the mesh

- -

circlemesh.Compute()

- -

 

- -

# extrusion of the mesh

- -

aMeshEditor = hexa.GetMesh().GetMeshEditor()

- -

aMeshEditor.ExtrusionAlongPathObject(hexa.GetMesh(), - circlemesh.GetMesh(), circle, 1, 0, [], 0, SMESH.PointStruct(0, 0, 0))

- -

 

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

Revolution

- -

import SMESH

- -

import SMESH_mechanic

- -

import math

- -

 

- -

smesh  = - SMESH_mechanic.smesh

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

# rotate a sweep object

- -

FacesRotate = [492, - 493, 502, 503]

- -

GroupRotate = mesh.CreateGroup(SMESH.FACE,"Group - of faces (rotate)")

- -

GroupRotate.Add(FacesRotate)

- -

angle45 =  45*math.pi/180

- -

axisXYZ = SMESH.AxisStruct(-38.3128, - -73.3658, -23.321, -13.3402, -13.3265, 6.66632)

- -

 

- -

aMeshEditor = mesh.GetMeshEditor()

- -

aMeshEditor.RotationSweepObject(GroupRotate, - axisXYZ, angle45, 4, 1e-5)

- -

 

- -

salome.sg.updateObjBrowser(1) -

- - - - + + + + + +Modifying Meshes + + + + + + + + + + + +

Modifying Meshes

+ +

Adding Nodes and Elements

+ +

Add Node

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# add node

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

if aMeshEditor.AddNode(50, + 10, 0) == 1:

+ +

    print + "Node addition is OK!"

+ +

else:

+ +

    print + "KO node addition."

+ +

    

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Add Edge

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# add node

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

if aMeshEditor.AddNode(50, + 10, 0) == 1:

+ +

    print + "Node addition is OK!"

+ +

else:

+ +

    print + "KO node addition."

+ +

 

+ +

# add edge

+ +

LastNodeId = mesh.NbNodes()

+ +

if aMeshEditor.AddEdge([LastNodeId, + 38]) == 1:

+ +

    print + "Edge addition is OK!"

+ +

else:

+ +

    print + "KO edge addition."

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Add Triangle

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# add node

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

if aMeshEditor.AddNode(50, + 10, 0) == 1:

+ +

    print + "Node addition is OK!"

+ +

else:

+ +

    print + "KO node addition."

+ +

 

+ +

LastNodeId = mesh.NbNodes()

+ +

 

+ +

# add triangle

+ +

if aMeshEditor.AddFace([LastNodeId, + 38, 39]) == 1:

+ +

    print + "Triangle addition is OK!"

+ +

else:

+ +

    print + "KO triangle addition."

+ +

    

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Add Quadrangle

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# add node

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

if aMeshEditor.AddNode(50, + 10, 0) == 1:

+ +

    print + "Node addition is OK!"

+ +

else:

+ +

    print + "KO node addition."

+ +

 

+ +

LastNodeId = mesh.NbNodes()

+ +

 

+ +

# add quadrangle

+ +

if aMeshEditor.AddNode(40, + 20, 0) == 1:

+ +

    print + "Node addition is OK!"

+ +

else:

+ +

    print + "KO node addition."

+ +

if aMeshEditor.AddFace([mesh.NbNodes(), + LastNodeId, 38, 39]) == 1:

+ +

    print + "Quadrangle addition is OK!"

+ +

else:

+ +

    print + "KO quadrangle addition."

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Add Tetrahedron

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# add node

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

if aMeshEditor.AddNode(50, + 10, 0) == 1:

+ +

    print + "Node addition is OK!"

+ +

else:

+ +

    print + "KO node addition."

+ +

 

+ +

LastNodeId = mesh.NbNodes()

+ +

 

+ +

# add tetrahedron

+ +

if aMeshEditor.AddVolume([LastNodeId, + 38, 39, 246]) == 1:

+ +

    print + "Tetrahedron addition is OK!"

+ +

else:

+ +

    print + "KO tetrahedron addition."

+ +

    

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Add Hexahedron

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# add nodes

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

if aMeshEditor.AddNode(50, + 10, 0) == 1:

+ +

    print + "Node addition is OK!"

+ +

else:

+ +

    print + "KO node addition."

+ +

aNodeId1 = mesh.NbNodes()

+ +

 

+ +

if aMeshEditor.AddNode(47, + 12, 0) == 1:

+ +

    print + "Node addition is OK!"

+ +

else:

+ +

    print + "KO node addition."

+ +

aNodeId2 = mesh.NbNodes()

+ +

 

+ +

if aMeshEditor.AddNode(50, + 10, 10) == 1:

+ +

    print + "Node addition is OK!"

+ +

else:

+ +

    print + "KO node addition."

+ +

aNodeId3 = mesh.NbNodes()

+ +

 

+ +

if aMeshEditor.AddNode(47, + 12, 10) == 1:

+ +

    print + "Node addition is OK!"

+ +

else:

+ +

    print + "KO node addition."

+ +

aNodeId4 = mesh.NbNodes()

+ +

 

+ +

# add hexahedron

+ +

if aMeshEditor.AddVolume([aNodeId2, + aNodeId1, 38, 39, aNodeId4, aNodeId3, 245, 246]) == 1:

+ +

    print + "Hexahedron addition is OK!"

+ +

else:

+ +

    print + "KO Hexahedron addition."

+ +

    

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Add Polygon

+ +

import salome

+ +

import geompy

+ +

import math

+ +

 

+ +

import StdMeshers

+ +

 

+ +

# GEOM module

+ +

shape_mesh = geompy.MakeCylinderRH(13, + 77)

+ +

geompy.addToStudy(shape_mesh, + "cylinder")

+ +

 

+ +

# SMESH module

+ +

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", + "SMESH")

+ +

smesh.SetCurrentStudy(salome.myStudy)

+ +

mesh = smesh.CreateMesh(shape_mesh)

+ +

MeshEditor = mesh.GetMeshEditor()

+ +

 

+ +

# a method to build a polygonal + mesh element with nb_vert angles:

+ +

def MakePolygon + (a_mesh, x0, y0, z0, radius, nb_vert):

+ +

    node_start_id + = a_mesh.NbNodes() + 1

+ +

    al + = 2.0 * math.pi / nb_vert

+ +

    node_ids + = []

+ +

    

+ +

# Create nodes for a polyhedron

+ +

    for + ii in range(nb_vert):

+ +

        MeshEditor.AddNode(x0 + + radius * math.cos(ii*al),

+ +

                           y0 + + radius * math.sin(ii*al),

+ +

                           z0)

+ +

        node_ids.append(node_start_id + + ii)

+ +

        pass

+ +

    

+ +

# Create a polygon

+ +

    MeshEditor.AddPolygonalFace(node_ids)

+ +

    return + 0

+ +

 

+ +

# Create three polygons

+ +

MakePolygon(mesh, + 0, 0,  0, + 30, 13)

+ +

MakePolygon(mesh, + 0, 0, 10, 21,  9)

+ +

MakePolygon(mesh, + 0, 0, 20, 13,  6)

+ +

 

+ +

salome.sg.updateObjBrowser(1) +  

+ +

 

+ +

Add polyhedron

+ +

import + salome

+ +

import geompy

+ +

import math

+ +

 

+ +

#import SMESH

+ +

import StdMeshers

+ +

 

+ +

# GEOM

+ +

shape_mesh = geompy.MakeCylinderRH(13, + 77)

+ +

geompy.addToStudy(shape_mesh, + "cylinder")

+ +

 

+ +

# SMESH

+ +

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", + "SMESH")

+ +

smesh.SetCurrentStudy(salome.myStudy)

+ +

mesh = smesh.CreateMesh(shape_mesh)

+ +

MeshEditor = mesh.GetMeshEditor()

+ +

 

+ +

# Now we are going + to create a 12-hedron:

+ +

 

+ +

# Create nodes for + polyhedron

+ +

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

+ +

 

+ +

for i in range(5):

+ +

    MeshEditor.AddNode(rr*math.cos(i*al), + rr*math.sin(i*al),  0) + # 1,3,5,7, 9 # bottom

+ +

    MeshEditor.AddNode(r1*math.cos(i*al), + r1*math.sin(i*al), dh) # + 2,4,6,8,10 # above bottom

+ +

 

+ +

for i in range(5):

+ +

    MeshEditor.AddNode(rr*math.cos(i*al + + al/2.0),

+ +

                       rr*math.sin(i*al + + al/2.0), hh) # 11,13,15,17,19 # + top

+ +

    MeshEditor.AddNode(r1*math.cos(i*al + + al/2.0),

+ +

                       r1*math.sin(i*al + + al/2.0), hh - dh) # 12,14,16,18,20 # + below top

+ +

 

+ +

# Create a polyhedral + volume

+ +

MeshEditor.AddPolyhedralVolume([ + 1,  3,  5, +  7,  9, +  # + bottom

+ +

                                 1, +  2, 12, +  4,  3, +  # + .

+ +

                                 3, +  4, 14, +  6,  5, +  # + .

+ +

                                 5, +  6, 16, +  8,  7, +  # + . above bottom

+ +

                                 7, +  8, 18, + 10,  9, +  # + .

+ +

                                 9, + 10, 20,  2, +  1,  # + .

+ +

                                11, + 12,  4, + 14, 13,  # + -

+ +

                                13, + 14,  6, + 16, 15,  # + -

+ +

                                15, + 16,  8, + 18, 17,  # + - below top

+ +

                                17, + 18, 10, 20, 19,  # + -

+ +

                                19, + 20,  2, + 12, 11,  # + -

+ +

                                11, + 13, 15, 17, 19], # + top

+ +

                               [5,5,5,5,5,5,5,5,5,5,5,5])

+ +

 

+ +

salome.sg.updateObjBrowser(1) +  

+ +

 

+ +

Removing Nodes and Elements

+ +

Removing Nodes

+ +

 

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# add node

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

if aMeshEditor.RemoveNodes([246, + 255]) == 1:

+ +

    print + "Node removing is OK!"

+ +

else:

+ +

    print + "KO node removing."

+ +

    

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Removing Elements

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

anEditor = mesh.GetMeshEditor()

+ +

anEditor.RemoveElements([850, + 859, 814])

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Renumbering Nodes and Elements

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

anEditor = mesh.GetMeshEditor()

+ +

anEditor.RenumberNodes()

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

 

+ +

Moving Nodes

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# move node

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

aMeshEditor.MoveNode(38, + 20, 10, 0)

+ +

    

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Diagonal Inversion

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# inverse diagonal

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

aMeshEditor.InverseDiag(700, + 642)

+ +

    

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Uniting two Triangles

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# delete diagonal

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

aMeshEditor.DeleteDiag(700, + 642)

+ +

    

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Uniting a Set of Triangles

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# unite a set of triangles

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

aFunctor = aFilterMgr.CreateMinimumAngle()

+ +

 

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

aMeshEditor.TriToQuad([1145, + 1147, 1159, 1135], aFunctor, 60)

+ +

    

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Orientation

+ +

import + salome

+ +

import geompy

+ +

 

+ +

import StdMeshers

+ +

 

+ +

# GEOM module

+ +

shape_mesh = geompy.MakeCylinderRH(13, + 77)

+ +

geompy.addToStudy(shape_mesh, + "cylinder")

+ +

 

+ +

# SMESH module

+ +

smesh = salome.lcc.FindOrLoadComponent("FactoryServer", + "SMESH")

+ +

smesh.SetCurrentStudy(salome.myStudy)

+ +

mesh = smesh.CreateMesh(shape_mesh)

+ +

MeshEditor = mesh.GetMeshEditor()

+ +

 

+ +

# build five quadrangles:

+ +

node_start_id = mesh.NbNodes() + + 1

+ +

dx = 10

+ +

dy = 20

+ +

 

+ +

MeshEditor.AddNode(0.0 + * dx, 0, 0) # 1

+ +

MeshEditor.AddNode(1.0 + * dx, 0, 0) # 2

+ +

MeshEditor.AddNode(2.0 + * dx, 0, 0) # 3

+ +

MeshEditor.AddNode(3.0 + * dx, 0, 0) # 4

+ +

MeshEditor.AddNode(4.0 + * dx, 0, 0) # 5

+ +

MeshEditor.AddNode(5.0 + * dx, 0, 0) # 6

+ +

 

+ +

MeshEditor.AddNode(0.0 + * dx, dy, 0) # 7

+ +

MeshEditor.AddNode(1.0 + * dx, dy, 0) # 8

+ +

MeshEditor.AddNode(2.0 + * dx, dy, 0) # 9

+ +

MeshEditor.AddNode(3.0 + * dx, dy, 0) # 10

+ +

MeshEditor.AddNode(4.0 + * dx, dy, 0) # 11

+ +

MeshEditor.AddNode(5.0 + * dx, dy, 0) # 12

+ +

 

+ +

MeshEditor.AddFace([1, + 2,  8,  7])

+ +

MeshEditor.AddFace([2, + 3,  9,  8])

+ +

MeshEditor.AddFace([3, + 4, 10,  9])

+ +

MeshEditor.AddFace([4, + 5, 11, 10])

+ +

MeshEditor.AddFace([5, + 6, 12, 11])

+ +

 

+ +

# Change orientation + of the second and the fourth faces.

+ +

MeshEditor.Reorient([2, + 4])

+ +

 

+ +

salome.sg.updateObjBrowser(1) +  

+ +

 

+ +

Cutting Quadrangles

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# unite a set of triangles

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

aFunctor = aFilterMgr.CreateMinimumAngle()

+ +

 

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

aMeshEditor.QuadToTri([405, + 406], aFunctor)

+ +

    

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Smoothing

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# smooth

+ +

FacesSmooth = [911, + 931, 950, 864, 932]

+ +

GroupSmooth = mesh.CreateGroup(SMESH.FACE,"Group + of faces (smooth)")

+ +

GroupSmooth.Add(FacesSmooth)

+ +

 

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

aMeshEditor.SmoothObject(GroupSmooth, + [], 20, 2, SMESH.SMESH_MeshEditor.CENTROIDAL_SMOOTH)

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

 

+ +

Extrusion

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# extrusion of the group

+ +

point = SMESH.PointStruct(0, + 0, 5)

+ +

vector = SMESH.DirStruct(point)

+ +

FacesTriToQuad = [2381, + 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, + 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, + 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, + 2418, 2419, 2420, 2421, 2422]

+ +

 

+ +

GroupTriToQuad = mesh.CreateGroup(SMESH.FACE,"Group + of faces (quad)")

+ +

GroupTriToQuad.Add(FacesTriToQuad)

+ +

 

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

aMeshEditor.ExtrusionSweepObject(GroupTriToQuad, + vector, 5)

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Extrusion along a Path

+ +

import geompy

+ +

import smesh

+ +

import salome

+ +

import SMESH

+ +

 

+ +

# 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 2D mesh on + the face

+ +

trias = smesh.Mesh(face1, + "Face : 2D mesh")

+ +

 

+ +

algo = trias.Segment()

+ +

algo.NumberOfSegments(6)

+ +

 

+ +

algo = trias.Triangle()

+ +

algo.LengthFromEdges()

+ +

 

+ +

trias.Compute()

+ +

 

+ +

# create a path mesh

+ +

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")

+ +

 

+ +

circlemesh = smesh.Mesh(circle, + "Path mesh")

+ +

 

+ +

algo = circlemesh.Segment()

+ +

algo.NumberOfSegments(10)

+ +

 

+ +

circlemesh.Compute()

+ +

 

+ +

# extrusion of the mesh

+ +

# The mesh "trias" + will be extruded along another mesh, which is a sub-mesh of "circlemesh",

+ +

# + corresponding to geometry "circle". In this particular case + the path mesh will be the whole "circlemesh"

+ +

 

+ +

aMeshEditor = trias.GetMesh().GetMeshEditor()

+ +

aMeshEditor.ExtrusionAlongPathObject(trias.GetMesh(), + circlemesh.GetMesh(), circle, 1, 0, [], 0, SMESH.PointStruct(0, 0, 0))

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

Revolution

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

import math

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# rotate a sweep object

+ +

FacesRotate = [492, + 493, 502, 503]

+ +

GroupRotate = mesh.CreateGroup(SMESH.FACE,"Group + of faces (rotate)")

+ +

GroupRotate.Add(FacesRotate)

+ +

angle45 =  45*math.pi/180

+ +

axisXYZ = SMESH.AxisStruct(-38.3128, + -73.3658, -23.321, -13.3402, -13.3265, 6.66632)

+ +

 

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

aMeshEditor.RotationSweepObject(GroupRotate, + axisXYZ, angle45, 4, 1e-5)

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Pattern Mapping

+ +

import salome

+ +

import geompy

+ +

import SMESH, smesh

+ +

 

+ +

geompy.init_geom(salome.myStudy)

+ +

smesh.smesh.SetCurrentStudy(salome.myStudy)

+ +

 

+ +

# define 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 quadrangle mesh + 3x3 on Face_1

+ +

Mesh_1 = smesh.Mesh(Face_1)

+ +

Wire_discretisation + = Mesh_1.Segment()

+ +

Wire_discretisation.NumberOfSegments(3)

+ +

Mesh_1.Quadrangle()

+ +

 

+ +

isDone = Mesh_1.Compute()

+ +

if not isDone: print + 'Mesh Mesh_1 : computation failed'

+ +

 

+ +

# pattern the mesh

+ +

Mesh_2 = smesh.Mesh(Face_2)

+ +

Nb_Segments_1 = smesh.smesh.CreateHypothesis('NumberOfSegments', + 'libStdMeshersEngine.so')

+ +

Nb_Segments_1.SetNumberOfSegments(1)

+ +

status = Mesh_2.GetMesh().AddHypothesis(Face_2, + Nb_Segments_1)

+ +

status = Mesh_2.GetMesh().AddHypothesis(Face_2, + Wire_discretisation.GetAlgorithm())

+ +

Triangle_Mefisto = + Mesh_2.Triangle()

+ +

Max_Element_Area = + Triangle_Mefisto.MaxElementArea(240)

+ +

 

+ +

isDone = Mesh_2.Compute()

+ +

if not isDone: print + 'Mesh Mesh_2 : computation failed'

+ +

 

+ +

# create a pattern

+ +

pattern = smesh.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

+ +

pattern.ApplyToMeshFaces(Mesh_1.GetMesh(), + [17], 0, 0)

+ +

isDone = pattern.MakeMesh(Mesh_1.GetMesh(), + 0, 0)

+ +

if (isDone != 1):

+ +

print + 'MakeMesh :', pattern.GetErrorCode()

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ + + + diff --git a/doc/salome/gui/SMESH/pattern_mapping.htm b/doc/salome/gui/SMESH/pattern_mapping.htm index bc8b8a03b..87685f026 100755 --- a/doc/salome/gui/SMESH/pattern_mapping.htm +++ b/doc/salome/gui/SMESH/pattern_mapping.htm @@ -1,298 +1,311 @@ - - - - - -Pattern mapping - - - - - - - - - - - - -

Pattern mapping

- -

About patterns

- -

The pattern describes a mesh to generate: positions of - nodes within a geometrical domain and nodal connectivity of elements. - As well, a pattern specifies the so-called key-points, i.e. nodes that - will be located at geometrical vertices. Pattern description is stored - in <pattern_name>.smp file.

- -

 

- -

The smp file contains 4 sections:

- -

 

- -

1. The first line holds the number of nodes - (N).

- -

 

- -

2. The next N lines describe nodes coordinates. - Each line holds 2 coordinates of a node.

- -

 

- -

3. A key-points line: indices of nodes to - be mapped on geometrical vertices. An index n refers to a node described - on an n-th line of section 2. The first node index is zero.

- -

 

- -

4. The rest lines describe nodal connectivity - of elements, one line for an element. A line holds indices of nodes forming - an element. An index n refers to a node described on an n-th line of the - section 2. The first node index is zero. There must be 3 or 4 indices - on a line: only 2d elements are allowed.

- -

 

- -

The 2D pattern must contain at least one element and at least one key-point. - All key-points must lay on boundaries.

- -

 

- -

An example of a simple smp file and a preview of a pattern described - in this file:

- -

 

- -

- -

 

- -

 

- -

Application of pattern mapping

- -

To apply pattern mapping to a geometrical object:

- -

 

- -

1. From the Modification - menu choose the Pattern Mapping - item or click button in the toolbar. The following - dialog box shall appear:

- -

 

- - --- - - - -
-

-

- -

 

- -

To apply a pattern to a geometrical object, you should specify:

- -

- a face having the number of vertices equal - to the number of key-points in the pattern; the number of key-points on - internal boundaries of a pattern must also be equal to the number of vertices - on internal boundaries of a face;

- -

- a vertex to which the first key-point should - be mapped,

- -

- reverse or not the order of key-points. - (The order of vertices of a face is counterclockwise looking from outside).

- -

 

- -

Then you either load a .smp pattern file previously created manually - by clicking on the button, or click on the New - button for automatic generation.

- -

For an automatic generation you just specify a geometrical face having - a mesh built on it. Mesh nodes lying on face vertices become key-points. - Additionally, you may choose the way of getting nodes coordinates by projecting nodes on the face instead - of using "positions on face" generated by mesher (if there is - any). Faces having a seam edge canÂ’t be used for automatic pattern creation.

- -

 

- -

When creating a pattern from an existing mesh, there are two possible - cases:

- -

 

- -

1. A sub-mesh on face is selected. A pattern is created from the 2d - elements bound to a face by mesher. Node coordinates are either "positions - on face" computed by mesher, or coordinates got by node projection - on a geometrical surface, according to your choice.

- -

2. A mesh where the main shape is a face, is selected. A pattern is - created from all the 2d elements in a mesh. If all mesh elements are build - by mesher, the user can select the way of getting nodes coordinates, else - all nodes are projected on a face surface.

- - --- - - - -
-

-

- -

 

- -

Mapping algorithm:

- -

The mapping algorithm is as follows:

- -

 

- -

1. Key-points are set in the order that they - are encountered when walking along a pattern boundary so that elements - are on the left. The first key-point is preserved.

- -

2. Find geometrical vertices corresponding - to key-points by vertices order in a face boundary; here, "Reverse - order of key-points" flag is taken into account.

- -

 

- -

- -

 

- -

3. Boundary nodes of a pattern are mapped - onto edges of a face: a node located between certain key-points on a pattern - boundary is mapped on a geometrical edge limited by corresponding geometrical - vertices. Node position on an edge reflects its distance from two key-points.

- -

 

- -

- -

 

- -

4. Coordinates of a non-boundary node in - a parametric space of a face are defined as following. In a parametric - space of a pattern, a node lays at the intersection of two iso-lines, - each of which intersects a pattern boundary at least at two points. Knowing - mapped positions of boundary nodes, we find where isoline-boundary intersection - points are mapped to, and hence we can find mapped isolines direction - and then, two node positions on two mapped isolines. The eventual mapped - position of a node is found as an average of positions on mapped isolines.

- -

 

- -

- - - - + + + + + +Pattern mapping + + + + + + + + + + + + + +

Pattern mapping

+ +

About patterns

+ +

The pattern describes a mesh to generate: positions of + nodes within a geometrical domain and nodal connectivity of elements. + As well, a pattern specifies the so-called key-points, i.e. nodes that + will be located at geometrical vertices. Pattern description is stored + in <pattern_name>.smp file.

+ +

 

+ +

The smp file contains 4 sections:

+ +

 

+ +

1. The first line holds the number of nodes + (N).

+ +

 

+ +

2. The next N lines describe nodes coordinates. + Each line holds 2 coordinates of a node.

+ +

 

+ +

3. A key-points line: indices of nodes to + be mapped on geometrical vertices. An index n refers to a node described + on an n-th line of section 2. The first node index is zero.

+ +

 

+ +

4. The rest lines describe nodal connectivity + of elements, one line for an element. A line holds indices of nodes forming + an element. An index n refers to a node described on an n-th line of the + section 2. The first node index is zero. There must be 3 or 4 indices + on a line: only 2d elements are allowed.

+ +

 

+ +

The 2D pattern must contain at least one element and at least one key-point. + All key-points must lay on boundaries.

+ +

 

+ +

An example of a simple smp file and a preview of a pattern described + in this file:

+ +

 

+ +

+ +

 

+ +

 

+ +

Application of pattern mapping

+ +

To apply pattern mapping to a geometrical object:

+ +

 

+ +

1. From the Modification + menu choose the Pattern Mapping + item or click button in the toolbar. The following + dialog box shall appear:

+ +

 

+ + +++ + + + +
+

+

+ +

 

+ +

To apply a pattern to a geometrical object, you should specify:

+ +

- a face having the number of vertices equal + to the number of key-points in the pattern; the number of key-points on + internal boundaries of a pattern must also be equal to the number of vertices + on internal boundaries of a face;

+ +

- a vertex to which the first key-point should + be mapped,

+ +

- reverse or not the order of key-points. + (The order of vertices of a face is counterclockwise looking from outside).

+ +

 

+ +

Then you either load a .smp pattern file previously created manually + by clicking on the button, or click on the New + button for automatic generation.

+ +

For an automatic generation you just specify a geometrical face having + a mesh built on it. Mesh nodes lying on face vertices become key-points. + Additionally, you may choose the way of getting nodes coordinates by projecting nodes on the face instead + of using "positions on face" generated by mesher (if there is + any). Faces having a seam edge canÂ’t be used for automatic pattern creation.

+ +

 

+ +

When creating a pattern from an existing mesh, there are two possible + cases:

+ +

 

+ +

1. A sub-mesh on face is selected. A pattern is created from the 2d + elements bound to a face by mesher. Node coordinates are either "positions + on face" computed by mesher, or coordinates got by node projection + on a geometrical surface, according to your choice.

+ +

2. A mesh where the main shape is a face, is selected. A pattern is + created from all the 2d elements in a mesh. If all mesh elements are build + by mesher, the user can select the way of getting nodes coordinates, else + all nodes are projected on a face surface.

+ + +++ + + + +
+

+

+ +

 

+ +

Mapping algorithm:

+ +

The mapping algorithm is as follows:

+ +

 

+ +

1. Key-points are set in the order that they + are encountered when walking along a pattern boundary so that elements + are on the left. The first key-point is preserved.

+ +

2. Find geometrical vertices corresponding + to key-points by vertices order in a face boundary; here, "Reverse + order of key-points" flag is taken into account.

+ +

 

+ +

+ +

 

+ +

3. Boundary nodes of a pattern are mapped + onto edges of a face: a node located between certain key-points on a pattern + boundary is mapped on a geometrical edge limited by corresponding geometrical + vertices. Node position on an edge reflects its distance from two key-points.

+ +

 

+ +

+ +

 

+ +

4. Coordinates of a non-boundary node in + a parametric space of a face are defined as following. In a parametric + space of a pattern, a node lays at the intersection of two iso-lines, + each of which intersects a pattern boundary at least at two points. Knowing + mapped positions of boundary nodes, we find where isoline-boundary intersection + points are mapped to, and hence we can find mapped isolines direction + and then, two node positions on two mapped isolines. The eventual mapped + position of a node is found as an average of positions on mapped isolines.

+ +

 

+ +

+ +

 

+ +

 See + Also a sample TUI Script of a Pattern + Mapping operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/pics/a-advmeshinfo.png b/doc/salome/gui/SMESH/pics/a-advmeshinfo.png deleted file mode 100755 index 41aa28b3af1e9af60a2143c6eb147c2161569f38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16686 zcmbWfbzD{5wm-ZDq(nkQKpLf`rCUH!knZj-=@LOgx;qqUrD2ns?vieh?(Tjkr_b}8 z_nv!yfACS3d(SoJTyu=^jj;@RFC+FC^*Jg80(mSUE+P+sJU{?HE69l83O42^dI*FR zA|WEAXzH^w>*>*Va@TRt!Bw06?#+~4Ut)}8&0*Uz?bBf9##*Y}q=NEG3(}VnQZk-X`@0DJDPa zV&{0Gz$aeI&gHB-zj5W(PJDM8+5^0vL>S0+x0!G z#%`gMz|8Douc~eAY}Av_z}eZ(seN*^?ehekL;{muOExcNwM=2Zt!$eit!vhzp%Wz+ z*XLkdhKQuNx09ttcJ}t<6cnEy;W9wpm%I_><(;YSpov_5N|3|A9hns8J&(huV9UZ2 znUEkN-8=t%(voA=xgC~PvR7ME_1lsqF|anudCFCfLp{2{c=~t$ap|?`xZlG`snwTb6aWoL66KpmQF%f8df2 z_kL4BHD%v;3g^fR(;JT^=D2dkrHSlzPs&@_@einFEr~a%enK+fi@`6_m&9ggXV+w0 zmgPNT!lDQ35y_HtR`~knq1V+8$BdR1&Dx4YUu`s(Gg;6Co!P}H5dm(z&Ac&g(VMeW zhGBm1lg!RzL8dUWiQ+`*gi=q2q~%D|iQ=q8ao#f=$Ncu8VmHU#x*U}L*z}kD3oL6g z^eaUzktxC4;ggoD+d-)@bSiPC3R(<05{qv19#Fml4w99nqSNO+ZjObr$&_p^WQHq_ zXG*_3QHNLOJ=1^7Yd+cYh8@+6rF-)6oTllmdV4Q4D5TL;TD?wwhj!Z_=2Gspvb8IP zx_6soR8?DtlxIfMdQBu;VLqCxUC;fPhq3?6>ki+Yu|t+{t+00Yn)mTD%*wTlD<@qJxv7boGFBD=RSNV|8j`D|7xS9JdGG@K5uzDgzJV>D`3 z(u$?@RlTf@+*f%hZ$@{n>Ny0mVO)1nINebtg+1ZP& zW>@e>^;(*{xTIwNQ2XShw4~&i%6jb{EE$_h#+GLF$qJp~H}#d*?7KCJxv=3Oc{`S5 zmpTmu0^G|7zpt7(Agvu83VHGrGAW!w+gTI5SBN2=vvC`_Us)St{hltFW_EoznH5f> zwGaA|!XnU3Qp^6{WZsz&_JPFPJ=E82gZ_z6PnRIe_p_uF6_X3~1~0xdjXm;Hd${nC zv(@hoA3jlNu3W3`uR1qW4nW#JD4jPO`qdm6&0L3l%Q`zX`tbLOUOlI69zVQ0 z`%7jn91dJ6WAB=1crk|6+S~0-C|b!DdwbjbgaPSAnIdg)axDQ3O}XKzk$QAo95DiAbkIn-;$l(ju-X1I2JJd=b@k^GT|q9cabLS<&A5m&XD(s(E2z3l zwHO-1m3!(hkfkZl&D#Yyy{~Rx-RqNd-h7Tu{DuS73#r#Hdevn z-9LSNc{WftlZ8!`PSPhU@YXiKgiG72gifyE77+oHn7DuD?ydd)coy&7^`jB1A%Qci zni`_Lu-&k}Bdk;F3r5DebMKcg5eJK|e9?$`69mw&yUHTrDMmP2 zO3G@45PO~Lk+1Th9$i8rl8g=RR!#6;Z(zBd&x(ofLnoxIf2h``$HdG+u5YjQX3j=} zAt^VkQRd-wQCr+g*zyjQ0(Cy-kFW5pHplXs7K`It#`n6^a*(R_=4!U*4Uj*_mw6KcG#%Ez!N4Mka8Mv4j6D z`RQ?VpMP{TcA>TPOD)On13aT$9!j#bb3X)mg~FWzt$@3bNdz-?mxE9~58hiZNJ>fy z>NXDtvF2mH*6+u$6NT9#daFqE=6eS3hwt>HWHO?*<~3o(Q9aJ(bgg`k28_!}4#piq zP&P!D2Rf>*&+H(#=SvuHa5eV78@=+Ce@bqR{R|4{k~!)qVDZ{S?7zFf8hy1gS$gUK zQ>&g@?^*T=A9Q{rzw4b5vT{)&;6d&$Mv~u_$fCRpRsQ|!0PhJyYOljh^-sDZx9yTp zSF56#lxP#|Jh=)u-@hNL92D?a;g7$LijpsR(BChUApLtWil2i~qrEq={5427 zOk7+Jiyz*Ebx=FZ9~>O0UG837TK7_(yDY*de8hdb_w{UI{$ei~L$~Fvx%zW!>q6Jl z$B6<8((_BK58tS_=b%p%dcs8(jb3@G)_dDt;*1wOiVnV&fO^c5!7#RjGL`EOs_6J0 z=(ufAJoC6lVIQxhQOHIcZsB-;@xVkTEodot@=na7yMbDxJ(h;VdhvXq%*S~+Al_rA zQO2Iwps$X%==4R7m0@@7usE};T=owt;dZZ2TSRlNh4WLZHy+~#;a0sC?klU?0?(z& zI<%_FJX~c&#iA1;J_ZCJLHNXO;?{1SJbA*D+&80jLHs0o=={c38Y~wIo1L94nY2uJ zw?8@kIMmbeAjZFr(~WA^dbd^c3r(?2XHAg_A;$+q@vf}`X>`TfcbpJ8vAb;bVJK(G zg+V@hn)nX;!u7?`zz3qbPmhqE>9O!c$0dneaNqW7)FspGd33C>PBZbulhIT79F7&f z)#;)!Q)5`Ggl${d*VY;A;a^|fwd!2)w=6Gzp{GwoJv-@lxS1S}tru{&G_W>^NQQ2V z4}b8^W|%vhX$ivaxVYMDpiwC#>@mK6F@8!JjUP>Ovop&#H|OH+UUmZ=wmj$J?l6ea zm}fH|X#@xFgIoV?eBF3LdAVYLDqqKJES*7#>ftsIBc+ax&a}kY-1tpE1c8H#<0bQh z^qf0kb7sVn=;%b>0&TdVaNBV=+8+~RN=aNi$@pUhWS+GgzZcscSx#3zR#8#OS1Gdg zaHSS*&q264+v(Ug{AN_3{5`vx>EPz4M+Iefq32q*WHVeZ#~oGVmK@kQke74!wA+p8 zV1nZB-ery{97!2A#Z60?n?IL=g)io4<>bEq3Mb2ZfKbR#NXX+9;;_~q84)4q;lUfv zptZO@n7KU-#gJu`P4g(_a*jD!-Z}}m(3?KcypoZS*mLjcxA5diObz_L@3cU@!R{N6iyI+^_T_8IlKQKD@V#n@$%eS?&BfLiXY=oRsPg6J zbKoipW+k{}Rr<98*BT>(uP-~)#%?}@_=*jAH*4;5_!f1o*G^_CxvbAgj^w3z&yP#_ zkdh-3DL##S^%R+0zf&&lWPr^l3@;#%Q}A>zhZCODNVE1b@+5Cv!HF;`kn>a9bd_o)_gg-{6F{fC$^9CWlsTU)_#E(XtDo5kG$tH;ZzemwmBB@5{CH zW58{i6nu5=tmxsV=ud**Uw7B-QANA@lago2oO;gVH>SuLOI4G~=iiSG-(*?imT}OI zPU|+mq=g_%rz$82`Redyr<5Ubi1Z3(b3HW}bAe#PL3;V&xGz*%gpm9QmVPU0OfXTJ z039-UQY6zDgeQFk59+Ugwlfi^pT`{qf@vT|#`*N8S zDK(mi_2afn8sYY{M=;_$f@e0tZ-l=4(Vd19;h>U3(Q7?0$Xf!B#9q>3dFlV5Y$n=UmiSoAUYTt$f+8M@JXhK(%$`-1|k+SHKs@_ID=Tea6%$z zs0jbV1!3^Lw&~{5qBx^!1}J+l^s`)1cz3Dg$X2HHdWqxm(bwEDE%mfvQFh^TkHIxi zj-Dzx%foHYR1dpIE6B@FR9M9OiY;?`6JHDu3Ks{H7vxRAJl*5yHQtUFYK0n+cf5jj`pO;gmX6Ra;$VGC;grf2NHHueLvy9~Q@Ya-t#>;~;Ig2ERG5$Hk2)6|YIf{2F9Yr15h`l4 zc}1z?v=d@I_kPV5iFzG9A(xvUuC|NM0RL6U=4ieH?d4M&*ac-Ok8`%y&1GwAtF2D` zRS1lJ?pdYPe7lzO?B|NGSgUEM9L&Sj;|D+Q@h@S&ev~#atoNN4B065@CR;(U!4(C@ zGn+>iV?Xq~COoob(`7pMG2I$QlG$Y|x{eM?#!5;zYn4=gDlaZAsTJ!!5E2qnt)u^O zr^h#1ppqlA!~KxI!FsuRa5axzI)T%tJ(K_&3rpxTDvs&kH_^f^hIQBK+kg|ml5t21 zWaCy&w#Ek>iJ-LL3>>Wuz!w|uaKAAbpsm6GR8T;d%I!$L*n@1K7ESr?Tz3x1#m!Bh zCE0!^2T-?a?YUZKMp<_Ep{m{GWkto7m@V7+n=>p&rY|6km)$jb?Ka$bk?wV@MSo6b za^BU{XKY(s-fndm;4>-D(||HiD)g@jY8ReWm)Okn6T5FSlbST8ZQoBYaa{FCqhsfr zcu%qO-dyUMJHL(Q-Z+#*!)xkImSila=jCgX&)$l;ULGDE$QT$o$~)>JVq)0%dC-Sp zpdOe`=2Kv|%Vu0e_l2guEb1^>>5i37WO;~-iyKDFC%L8kGl=`C(XrCgLv`n!sfx*J z2dZ#^Th4UPOZ;8p-47c>6n{Apy%s+%el9u5efRmjxcCO-EgXN=y46341QIbIbx%BFJ1%4NP?SXmJT=Qx3gn`eOE`qvfP zr;8Z@tNLWw2~9{x`bq6{i2>3x8>ujFPxvctH`A;%EtwU{sL9N5{(Lo4lq~$eC5rc? zfq_EzwdC)aqiQ3Z2niie_3093B)M(bnp*vaU|?V%byZ~Ggy`|cdUDO(JEZ15bU_hG zbRv-b{(Bzz$0uR}%LL-%ShwaR<>lo~SEpa~lm_E69xgs&9LjRQRfn4Qg$ro&sI&}a zNtsP&(_5vPx2Q-p!2SO9RT$v|3TcKE1Z0wMp7c(!JYr(mlI#yY7~y@?Xvv7Z{llMSrG{%Fiod(+VH z-PxMqpB5a~JQrood)koZ)qsWZroUXhO+4*Q<>BbKENe*W3O#Zk3$NH3TUDK_vNK5Y zJXM46^6^PXi@&z6T?*sjblS%22q($0oGgWGPgMtZka!b{3#2c~3fve54EFRlja8Dfl#X$#&TAe8~ zq{-LUfv;?DxhvWsMTwIqb?E2%vZMVhRdPF;Cs^$R%xA=i zf*^`j&%55Fc`vwv71@Dk&?l~*`JvBub=2gG+nmAA7{7s(^GdB$gw;<&uq5rqb?VqG zgqZC)1_lP82np<-&mnttN9bf^WW99`lo-6{AMNgvxeAK=5wxzyigX6LqNy&dN1eyx zZie0*ucHt?YFNRxuV#uT0-Bg*m0Bx`0L>`n zNVaL9$uDeeV)>GXc=~u5WUvgAfwb$(ts+8xkAykK6XVuEEVU_FJOLl;*_y#j6Ab>l zZHM+yqK@n03-sspGa>q(JrOF*qw`)@p(bfw{^0PlT5oe^qSb!+5r^iAqi}PypYCxt zdp44<7EG1Q*TvXy4JT-5_;M%B8cDD=XS&2}n6d*+(^@_9AwU!Q*Y4l-E~f()TKrkv zj!j|er%G{)1ug#Q1|#co9wp0jZ7FVea}6n)0kaT%n}R=+JgJSO>-euH#643^{nmd zHEc7P?;AZ;OC@1Xk9;9E#8GTxhh96+7xr%rMCxqhi7P3+m96Kkd$%p#VZ;Apk4twsi`ixvv@QQg13SiQnr6qKfV^s{eo`<~aGjA?}7`3D*< zMF_eamx!^|@HPamX?M03pG*HGF)?ury++*R z*D@~0&8G%)c)oqcFTfflY~FnXD9W!7!vMGoF*FMPRaKnVX(yT9cekIPCwK0=Bq#s0 zK0L@VDi+y`Nls3FSVw;ZVa=z5mri3z1S}Mbn=0n=WD6S`yT$Wl*8oHV8Uc3*3O3a* zkhH<)&jEl;xIQ&}v*xE?p+4E*EdY;%W_Xe`DxJogs5Ji*z`Z9VBm~k19LWoL&W6g!$k-i2)3W_*awJb-&HqvH7x9G&dQ5w|8Scx_LAAp0bf&qg>)Eq; zqw1eRzKE}MN_fRc0FFd>_z-81T2zw5lUd@wFo-`Nh$eUc56UBp^fco~tjerV9Y^YLrT38sNllm3)J*<>Q!(R`)r z%t3)%<%;L;lG%;GuMpr>l>(aZoNq8NH`hYc)a`UV@x}Vt&a@biLtFeGX9C1Kqq4_u z+?%kF`!4EDsRb#(#y^zlAopU5dBx(wLQ@)_yXkl((P)8Ej@fYb4-F{#N0^W2gY}UT z?7NF~0WgP%e5L%uU%nVv+&p`WKk@t1_@pEyB@e8AS(#7#(nCN*Je*FOce%)lM#_m0Iu~Z(JQ?k# zREJFvR-;oa;x+$n@^#%V={R>>D>~jB4Zan+k&u+s2Vfr(SESlMz~g1SoltUp+p!ly z$Q1=Nx2F?(Esu#;J0oAT@m@|3+=HG+jIhR3=Q)XLo*n=iA466H`UWa~g|_K8nOA_^ z*02vS$Np{I*}dO1J)Imz#4}W4Am)!w)J=Ei);5<+KAtCn(Cl-Af$9?~;ZZ zyuEKhb%WbG+ToawN=lMMYCvyiDdW1?a6H{sW6-S9)r^no`6{Z++MB@T`&HO~==WDd z#RBcnv$gv0ggo1PNY`JvouX zhS;DZ)M#)mI2Y_KIJB>A22-$Jyv4H;)_$ZndZ#Q`q|ImCpVVd3aMNx$D0rR}VJ8H+XWGCqA>XLS|cmhZ*m8BORK*X7V_<@?UaQ1`b=IU&KrP3JI z7dV4wHr^2M;(~8W44fgwB4xhu>FB7a1TF_k67Op}pPoGc1wqXC_Zepb_|e8~UF}Li zi3tG+Mi^k%`{}Orr@jD8S$nvnB{|f}jL!j2DscE0f&MwfJib9;*`?3$6k z3DN_E_n;MY`#qBx5V%Xpv>_oOX>MuBQ>uM7I5;TsHoIZ7NVEDrsewpp9?TRo zo6TpF3;1R~qcdbRT^V|{TZ_TL0ewT?;BmpiWu&C4@++!Dy&*r8W29ug*_PYjw!`~xan6Y9b;})I9=ceD%o*X?_-hsJ7 z$@vPiRAsl%gAbYyTcQdXfbJxXS|9_h=o!6wG01fJ>eTO()vV_SO$gbLw7I@32 zoFH+tj90qSV<01wl9FbKcTlwDwDw~bsuU>yL`Fx?9$(NN$yM`(&JA%vL<+~Pu#v<0 zPfhbYDR60MFE>m7FG--O&_}my@|^nm#T4(T|LH(^j^oxC08K5%WjGRdZCcV56~_-7*cD0fnvaY<-7`r`R>)8>gA}s@~sU82%V*? z(Ru7=*+c3SeUoJ-iQJB~z-4MLMOmWy^;3gG`G=~|+3qYphm$6(XJyP_ToC!uBZFo? z6rd5ofjrvfhk}iq>`jl!(tv8BdHdTJ!*uc+#cYk!QesZJ-r;f=Wc%L;cvmR{kf7`g zI^^2qDaNmi%M45G>GF$7IqcLuM?tEyn zH&?$g%`SijlHZ5Du~e`LCc87$T$KXuYDZDD%*>JF+U}to^S$c7Ub3)6ImtrdGiHZ( zCV(pQ*Quuqr1QE)O;uQ!s43^jq{8JSxZ-FMfwFYZ&5U~DuFsdkUulGt3f^$t7^A|>_G>!h1Z-=r^vRTh0w6==iSk%kRd)zz*VpO8t?4s4ezzgri ze<3MwuJnI-USDN(N!mm3g;iDYoM-Hi?%Y;%Quv(X0Gcy0!v(0d#GoT&3#{Vg;6U%6 zbbDDfebN%loS@j|j(@2XkhU0kAT;7zj28kT#qd|2lC)B*Y0c;K*srls5Tw-G+gl*j zg7o+XEDU&N7AEG0d)wjORNm@PYpYj11;00W_UeSi#gSR}Qo7(V_#?Ksm3~yLhY)eZ z{cdU!@xT|dw`XBB?(cN2o^g`~>97)%3;@tHpjIZo3g8{+3lrmg;1Qnyl@f?h1kXSA z8859zW{&(&I`ZGu8JY83(|XQ7^ox4za?X9P#P!Hn3`6Rr4oB&|0-GY>P5hC~VjPRx zJ#NW@Hc2}B2{vMe{!jTDE?!K@=QtLzL()20&;Bn`*2E1I4d}1oyobo_$)O1ec%K3g zhJhXfx97mu&=`~K@JCkOC&wpYEsLH=<^h0-NA01;Gw+fFAZOdPV!kAyO;UH`+NKAb zW@-Ox%lE9T2gUy;L;)pTCGHdmPvNEU7LeCT{n3FC?cWw(^s{)KP=x)D$^+dbjn;8dTN!~o7)0!sURhEI>b zT2{xb$bgmND%Yo?et-55=N)}Lz$(>57@RKq8FC}#g96X(_8XgCK{mRvS!8?Rd@gc+TwE83I$TrdS64@%>MbOm4&a@2{UkNlyX^k)`l)z5@%=_j@?joco)_!2_=ByU z=G_C$BS7)uSs%&6-re1W{7|d+j~IUw@+o)JLXlBXXOa==;X|yaPh<9~q@?g5ih1&% zDRda@j+t5?NcN(AB?X$d$=uaZpz3qIR|-Okk>4D95Srh6D{j1p15eR=xxiNkw2 z5klF2l~VsB9{VZ|%frLOeE)PdFwl4Q1F49J$kQ2d5o;6Ege+Sj39kz#Fm?gwFbE$F z7AKoM4o?PNLc-n-@Yz7dZW?Wig-1ev54F~U-CkPMAbfbB3((8Gc;@Wvd@r6IkG%w_ zJ|YVv7~00Uqkh^`gzgqgGIl4p!(CzL>;P0Hz8UwudNdD5(*GqrpL!M<^@^N)G27cx z_2miX;T6hEV zdz-`RioH9YF+6-U0A$Jk1xv3WBBxN38+}Prs!)v+Bb|E9Gni*U1w!K9p$6z5acG|Z z9tuHTUy8jzC+18rAz@FZ? z!2Z6i`Dmf&hYznKBRAGQ0;z{WAzQlX-&p{47j$E<0^P=zAan;g>>AQyU`+oX_jEY+0GZ;K`d))T&|0D_h-FBQ{ z!+bRtM|j5$6nm4ai3!y>#-5Adw%%{wzA1(%eGdfx{tpqr{tqHRERim75X-G+lK>+h zs&TXcJxM$3WI?ImOQ2>b7vOw+&Snl0(82z`E;yLw7SmzCdb@X6fS8XYINu0^eAt`_ zy7M?D0j{z5D6Nv~dQ$*$Dv|o{%YUKuw1zIovV12`8+I;2bJEj)#F(Sh+2@i^VZZ?{a0~Bt3!Mg|7d){|1*w`u>y<|nxS&U!GyHG}>U{gYdhK2}vpO@r3!9oV` zZe@6Yf2H~JBaiEY4i{I~g`FL%nKa;>?(4N|OqNlV84oNj_+#Ma&#&~vVG|H&Xtuzt zX1(ujJPz7$?^`q|q~dJvZq9hz#Pz8t$T9D=*UF#Mru*;V@4Mixj^;Z0`a-*7=@hag zae&?;p*t_=kAU%2Vu><^*Y!z8BNQHpMJZek?dTe|?uoocERm6sugzxs-VtyxyLKCj zVMuJZ76Kk_$PkFS50GD}Ti+((4zNfjZ;zaoE_3C^X zgHnA1WGVGZ%PzojTfh&zuBKP%MYQXjiTFOI`(xR{BqlGo*&0U!U}t{-ek1^?Tz}cR zMfw&%J=f=c@&H`h0>Tn>tUT0}Sto=np_m<1G66L`Up4<1VB0m0JMFBp0xip3YIK(& z1UzAtR#W%o^5V3?paUHMsdr#1X!ucVE-YiCU~>O-s{R5H*a6AP(VBKbBYutdvG_s{ zQ2b1H=x(`pHXjf=`%3Bowa01F`FSq#_U+K_h7+XRy@n{6-O7GHuvME-o|&c=AhADL z&G<~V5WpPuXU^^30{TDwdwWqDRE9jjhJciQFRB5VRtr#f&5;&Ggy9muQp9pjOU|N*vzK^O15Bd zqPO}Z@lWciy`{}^dnY;Qg}BF{c5A85aPJE>xj+*TAuoAJJUH@TTUWY_$LH8Nxwuv) zD*;4#NlAIwREM#DeB5ftzGA8Xikoz{MbFWu04*&lXp({?y*7*5szE2_?ZlSleIS_W z{d)1YkMBj{)}PGi_`S+_5p8Yl*7kP!Le1(|3#8BnaL+$zvAtI~BbMyLf7EgBsHKv7 zc}%@-uFlVkfgPe=ZrT*rr(v%Z|3~91dap*gP_ql@*tT|d3!p8k+0!$vdU6J}#S3>(@azbTNz>0O3wARr+vt**WW+5m93+N}T-H9p^8s5_f; zZ!i5%DsYahZu-{d9gqjfUcU58bnajFK_clqfemNN8XV^ig5HOSh=|7Wjp4)DXTfdF ze_+Jy;3&neLmvY@hQh^`2}|c~1jsBQiL8WtFH5kai;9Zqsi~1c(Hpax1};|PR=zT? zZKEL2(*ya5v_e{*MqbZ!dYK+n+TLEf{=Ef= zcQf-R<;v|e-%uh){VwQ6HuA^D5zl*@3zQnXn|9Mrw>Tn2bM+JT?i~N#j-qBx8wR2f z=+p}L%2HoitjRo&)AsL*aqX6#;ozhSb7TDQw&^#Z59R*LpuxDRwl*4U8)!}$%n*Xl zeAj6~_TzG%c5}3#qgRa;C7GnX)ToCVG)MyV>Kq75K;J1l)*5>B9fTx{tEAh)6yTi( zi>*QE#E}!h!p6v;^XGt37%s`;i9y1i0@ReF(bA&*v$Fx_eh|+4 zXY<~yhbNI9_y-jCzzaYCwJD(EqyZP*s4I#BavzDnN!kZy9KgSknXS)rJM&{S0h2K- z?2N%eb;WtZmMD#eP8_0xB;a&cNg&P`m``5NCI+muq9;djWJPas^YZefz1&%f>QA48 zyt)i%u0rIfel~eQR{ShHnS0R5Jqvx4%45PnuTlB3*oG9Sa3-K72RzAMV09hKM=C{5 zfBf>}i+H5M|J`IQz8Xje-8ICn%UFP^f~19jfszf#Y;|RAnvRy_AeY@Dg0D7_h@?5H zj4>5}kn*6S0s6SzNXF`C1H19JQSs_oWPHZD8p>QzcL7 z-;cZ47M#fATsR1OH_gsj%Q;-_V6r)0Bn$lbv(efCWQ5MzzYGfT#~|oWC^0adETs^* zJ%165OOMzIjj-?s0xdA9v($oUN~gX{V1q}}0dg?_r5WIdsB8;)w`cj7R!>(J+q;m*Gg2cumCQMOnM{# z=gq5sF9}R>1=JQY_bD|tfxG}nzxRTiOe*)n?rvJ<%{s?h6Egv?=5x)f-W~h)yYai? zxhnc4LACeqBfgXxXM)A61SOL7f=A-IH}FE=%r7&5T;4o3!G;!g*iCm`bEINEUbwUV zH84gUXy+oW2mgCew-85NnxrE%l1vkq|E8cCWR#%-#iweqTlaU3Z<%8;WGt=u?=s4B zXy`wY76h~*|FOTvX?sEl$Sxb(^ND1_{)QX#i&lCw6LudqW+(>iKvSJ`I)AE@)ikrq zFJ01l@dA(qYn-=au1uy(@*XCBP2BsbWJmosL2)SfhxJr>SJR6p?snp&;Jb7~?#IT8EIO zvr|rpZ7SgC{{DcGFo>6fsL~)A|B!puRQxIc-&AvI1!v~au#75n3wREKbDx!2Ut7;q zHQE{KjPIy^SNdzZr}6zOq=8t@*5Htkq`!iiFf>msrSp}}#N8-yWoB%G9@_15BP4~K zcYURVo${t^N8G5-#ZDcKo|^r$Wn%Bd+ASzr&JYJ=S^4bNnD@z`cPCRUw7sRp*Ut|j z`(1im<~uJ@Rn}yF18&ghRaIS$MM5GA5LGRb}*1kpCr%3n+NGW&hX zMJ^COs5Js?_DlNTDeXVn9{zYiIMTzB3rPIbHCR|kpzR?r@R!Xa5o=r^`Lx~8iD8wH z{KrnZmUrIWOty`U-#}aU%=d4(R_ZTxq=%fbLk;rkN_ zsxs=o^`I+r(IDjWn{Eb=AdI-#N|qIY2fQG0>Fj$4Fy-QUK+(uAw5G7*6Kk4{*TThR zVg&s8cRC$+ZLmLYV$oLp6lgvPUN(t`vIavRCilHP-Y_M$I;ZCGnq62Yn|;D^t9;)n zu`!gz?H>_NFo^+5Fi6c9jY$<-$f<*xaUiKd)0`V_3r2gL3`XYd1xJ%ZRIvWaw9f}u&6$LJMsJYYIE zd{PbSUw|qK-Zda+V#1W(ACh9^vea}PL~FVQD`gdfZGQgz`Mxs^(9Z|^hll#t=LdeD zKO31rKWxZfBA!x!R|&9MUYq*sdV|pu!3<>5cqM?CTK1|;{U@P-(@Yf%NU1RG1GYQ0 zeG*Mg&27HcS72y?KFsaj$RanTe8q+Rg%-6qBJK}?v`YDSK}!O&L11X;LsHNj!EDg}D@T?jvkzc#mxa%`2`olmGX2fKle#^QYw9Pw z(D3K?+2HX4oXpPAjsnz^-2q3AIQRrgL`a9spi^ItRA-4p+G*4cfM>kM8~M(XG29QtXWT-ESz|{jCrf&3HV7 zo+6&+_&h1m#>l5RUnHC&s`aBZ1(c*|RppeVhnNv~ zP>_*rk1<668ZV9p4366knf#$V>4Z;qjeWr{A<_RPA&DNgz4WA4Ssq*T40kThjgox47^XzdrRY?vbU`V-8Fn z9b9|T@SB8_+e>vbqOpXLY1YMbPCioMJQ~OOy@|H4IFB*`fpTIXp=pSGQ3puR4s8Lv zdy9K31NqHRi1@}s9~C0e#c}u!C?gW6*ogS!(NPMaHzc5AD{{K~#81c?R90xv7K(3( z0Wy9%gCWQfGl+#8Xor{dzFpuwc&F}q4$6%D6NXE+VXDXESxw#Wh1)z4>yv@V`@w zNpCW~)du4;MSh@2EXt%Uxyr%TZ8^6bieRo~%DU_Ddz}3Ex$<>n5O({d37yEx0FL&M zrSYRa=EO#SlwzZ49oFg^n`BFg32F8j%|e)*c-1A1Z$JSyJNC==m$tvh*N?Xnm=cG0 zDiS+YMK5Cu3VQ3Z=}=JGpyQ)?0pPy}n7#jh0V>GlNim=y=7^OAYPxXISQrU~h(3Kz zCvCjLw-)5X95}PHDTS4Yko1Ed z?bdNzO$&7ChQ7GDZsYA^6$SF6*JSl%+0t~|VfhkIKYZRGwpzw=zB!K2a+zU!HQ>ZHf%qd<}e>6ns>H z@wjX+r=35gL{_I(+;ZdqD3z=iYp#in~L4VV}W5Arhi8 KB86{sKmC7D0fe=eS-Gr-S%BkL)B04eXe?FeIGr-TCcO%OweE=>I1&ROw diff --git a/doc/salome/gui/SMESH/pics/a-averagelength.png b/doc/salome/gui/SMESH/pics/a-averagelength.png index dc007eb575faa7564fa27da30eba60d5de4c1242..d1a0e1e52f03f3a80d97d20f7c5773d0674987de 100755 GIT binary patch delta 18 acmbOkIz5!7Gr-S%BkNB7&HMRpNdW*vF$X{Z delta 21 dcmbOpIy02DGr-TCcO%PAen#HSd--ok0RU0}2U!3B diff --git a/doc/salome/gui/SMESH/pics/a-clipping2.png b/doc/salome/gui/SMESH/pics/a-clipping2.png index 639792ca39564e2644b2b805ba38e305e1b1aa41..4bd1c94263ca5dfd775677e5a4db567fcda7f309 100755 GIT binary patch delta 15 WcmX@v#CW2Kk)<=h&wV4Siz5IpZUsdE delta 16 XcmX@n#CWoak+n0x&z*N8i;E)wGra{; diff --git a/doc/salome/gui/SMESH/pics/a-creategroup.png b/doc/salome/gui/SMESH/pics/a-creategroup.png index 38ef5a856a6006850c5ad755c783cfb1bc6a351e..46462cfa62977fc52b1d0c11c03d5aa7f1f8f5f6 100755 GIT binary patch delta 13 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 O$UAXau_6&&@Bancz<%}s diff --git a/doc/salome/gui/SMESH/pics/a-createpolyhedralvolume.png b/doc/salome/gui/SMESH/pics/a-createpolyhedralvolume.png index 532eac08f0457d91a8200875acabb6dba41f8083..b44885ba5eaa3f5e729a07347de1f3f25cb9caa2 100755 GIT binary patch delta 15 WcmZo{Vr*z)Wa$j>bKl7N#{mE-MFngC delta 16 XcmZo@Vr*<;WbF*_bLZX2^2Y%HEd&L5 diff --git a/doc/salome/gui/SMESH/pics/a-cuttingofquadrangles.png b/doc/salome/gui/SMESH/pics/a-cuttingofquadrangles.png index ff9ae68e19b80a8f22354c88265f710404c58fc9..7f4716715adff60e0c0f90d2157fb1b0ae125b8d 100755 GIT binary patch delta 15 WcmZ3}!MM7Ek)<=h&wV4Sx(fg-z6AXM delta 16 XcmZ48!MLV_k+n0x&z*N8i@FN{Fy93V diff --git a/doc/salome/gui/SMESH/pics/a-deflection1d.png b/doc/salome/gui/SMESH/pics/a-deflection1d.png index 57fd8597a10f406fa8f410fd0fa37332c4b61e1c..8d9021290b5d9cb131b3abd7990f6fef8d5ced67 100755 GIT binary patch delta 13 Ucmewz`YV*BGr-S%BkMOU041@!;` diff --git a/doc/salome/gui/SMESH/pics/a-editmesh.png b/doc/salome/gui/SMESH/pics/a-editmesh.png deleted file mode 100755 index f5da15a2d96f536e0e6f1479747a23a7d8a0e072..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18398 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 diff --git a/doc/salome/gui/SMESH/pics/a-extusionalongapath2.png b/doc/salome/gui/SMESH/pics/a-extusionalongapath2.png index f120fc3c0fc4544d6ac2a10d8c02c6d58c212974..898d43166b8714546bdeec094ea71caab5fef36e 100755 GIT binary patch delta 15 WcmZ3xm~qWwMwZS1KlhESD*^#9iv_~~ delta 16 XcmZ3pm~ri5M%K;%KX=}ZEGq&5G~@-) diff --git a/doc/salome/gui/SMESH/pics/a-filteronedges.png b/doc/salome/gui/SMESH/pics/a-filteronedges.png index 48b3ece016adda7ad3de42683abbd32720753829..004433248a498e599131451d380d342bb1a80e73 100755 GIT binary patch delta 23 fcmbO|gK5SLCYH_sKlh2OKR5ngB(QmrU}Y5mb59B+ delta 28 kcmbO+gK72*Cf3dXKX=}VEI%1}H~w8Dz{tCKzF=h)0Fz1zNB{r; diff --git a/doc/salome/gui/SMESH/pics/a-maxelarea.png b/doc/salome/gui/SMESH/pics/a-maxelarea.png index b4af4b23fccfa04ce80dd874a297d63303903fe0..e3bfa1841833ca48575eb2a854d355e85c633ab3 100755 GIT binary patch delta 13 UcmaDH_9%>{Gr-S%BWs*C04h5LBLDyZ delta 14 VcmaD9_Bf2SGr-TCcOy%jHUKVV1uy^r diff --git a/doc/salome/gui/SMESH/pics/a-maxelvolume.png b/doc/salome/gui/SMESH/pics/a-maxelvolume.png index 2611807fd6dd72b1c12f6c4e5515e60cfc943c51..419d83ff2c109451c9002a25fe275cfe8df910f8 100755 GIT binary patch delta 13 Ucmewt@i&5{Gr-S%BWtA&04*j3c>n+a delta 14 Vcmewx@h^h4Gr-TCcOy%s4gfKV1%?0s diff --git a/doc/salome/gui/SMESH/pics/a-nbsegments1.png b/doc/salome/gui/SMESH/pics/a-nbsegments1.png index 35c09094def52c61deea1a24d687b06eaa3ea916..a42714aea0212ded646f0be82db556acfc31bb3a 100755 GIT binary patch delta 13 UcmeCm>C9p24DfT`$jWL403#p-PXGV_ delta 14 VcmeCo>B?d44DfU3-N?df1^_0+1Y7_B diff --git a/doc/salome/gui/SMESH/pics/a-nbsegments2.png b/doc/salome/gui/SMESH/pics/a-nbsegments2.png index 7f33c61ff2961aef668f35f5d1ae867fc6966162..51e7c9ddb28ae1d050b8e067e201311f961ec72b 100755 GIT binary patch delta 13 UcmbPG+F#1j8Q|x>k+s_j040V5_W%F@ delta 14 VcmeA#olwf!8Q|y6yOE{a3IHic1q1*9 diff --git a/doc/salome/gui/SMESH/pics/a-nbsegments3.png b/doc/salome/gui/SMESH/pics/a-nbsegments3.png deleted file mode 100755 index a21648267651aaec1cebab39707ca232c3e49dc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19652 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 diff --git a/doc/salome/gui/SMESH/pics/a-patterntype.png b/doc/salome/gui/SMESH/pics/a-patterntype.png index 3383cd75e2732f12ddf5073490e1d3c1b0ec8367..3d676af1f2fa3bff89bf23d0c0f7a15d2ee39fb5 100755 GIT binary patch delta 13 UcmX?+emtF}Gr-S%BkN&f04e(gd;kCd delta 14 VcmX?}ej=TpZ=1#kcW diff --git a/doc/salome/gui/SMESH/pics/a-unionoftriangles.png b/doc/salome/gui/SMESH/pics/a-unionoftriangles.png index d9ef53c11f61ea127e8a04052572e8c942e7a0ba..16016551f2b5040308933a80737be543df9eba9b 100755 GIT binary patch delta 13 UcmZpvZmwqO4DfT`$Xag;03_7};s5{u delta 14 VcmZp!ZmDMN4DfU3-N;gJ3jipK1n&R< diff --git a/doc/salome/gui/SMESH/pics/a-viewgeneral.png b/doc/salome/gui/SMESH/pics/a-viewgeneral.png index 09b7c23915ad24256f45cd9188568199e48cbf74..f5637ccfacd59993a2c9208f271776356490375b 100755 GIT binary patch delta 15 XcmcckmFdD)CYH_sKlhESXLbPqJs}4^ delta 16 YcmcccmFePFCf3dXKX=}ZEN6BB077U7O8@`> diff --git a/doc/salome/gui/SMESH/pics/add_edge.png b/doc/salome/gui/SMESH/pics/add_edge.png index 8a532e1d91f6b0b11086d1a225d7f16b6f3f2cb2..8455fcd542f25bfc5290619421f3a67c3dff7f0d 100755 GIT binary patch delta 13 UcmX>qdqkF{Gr-S%BkKV^03$2}x&QzG delta 14 VcmX>idsLRSGr-TCcO%OIJ^&`D1jhgX diff --git a/doc/salome/gui/SMESH/pics/add_node.png b/doc/salome/gui/SMESH/pics/add_node.png index cb50bf6e62f34cea812c6da3a6fea23b2c6bfe06..562cf16ab7828c85a7b93c034835f4cced3fe7ff 100755 GIT binary patch delta 13 UcmX>tb4rG#Gr-S%BdZ%903xykN&o-= delta 14 VcmX>lb6SSAGr-TCcO#1%9{?se1Xln6 diff --git a/doc/salome/gui/SMESH/pics/add_polygone.png b/doc/salome/gui/SMESH/pics/add_polygone.png index a76baceaee4c4ebbb80cd999324c644bf3ca0ca3..b05e25b37c8f7a7fb7ef061519e876218cd5229b 100755 GIT binary patch delta 13 UcmaE1`P`DFGr-S%BkN-s04Xp9X#fBK delta 14 VcmaEE`NER5Gr-TCcO%PV82~LR1$F=c diff --git a/doc/salome/gui/SMESH/pics/add_polyhedron.png b/doc/salome/gui/SMESH/pics/add_polyhedron.png index 2e23634c996e5f9cfcf3e31fe5d1d056ffa7fbe8..62c0857a91cabc297704c671f96870122666f078 100755 GIT binary patch delta 13 UcmccRchirhGr-S%BWtKS04SXV^Z)<= delta 14 VcmccVcgv5pGr-TCcOy%vIsh!C1pxp6 diff --git a/doc/salome/gui/SMESH/pics/add_quadrangle.png b/doc/salome/gui/SMESH/pics/add_quadrangle.png index f25b94d9faf26169a913f9749a86fbf93558d190..b7ec66612a18e5263a7088d52a1b02caf35b39f1 100755 GIT binary patch delta 13 UcmZpXX_jH>4DfT`$oiib03CY-bN~PV delta 14 VcmZpcX^~;=4DfU3-N^Ev7XTo01c3km diff --git a/doc/salome/gui/SMESH/pics/add_triangle.png b/doc/salome/gui/SMESH/pics/add_triangle.png index 41c3359297743992b8bded93e1aa4dbe4ed829c2..fee1ccf80f6718f565e4c6de9d7dcb6bb619406c 100755 GIT binary patch delta 13 UcmaDS|5l!*Gr-S%BkN0k04IY5IsgCw delta 14 VcmaDW|4yE@Gr-TCcO%P7egG>~1xEk? diff --git a/doc/salome/gui/SMESH/pics/addedge.png b/doc/salome/gui/SMESH/pics/addedge.png index c9eeaf970f71c6a1306b1e11a10483e964df1565..8bea8bf6abc988acabe49067c19acba2b06ce416 100755 GIT binary patch delta 13 UcmX@%eB7C(Gr-S%BkN&B04C7|A^-pY delta 14 VcmX@^e8QQvGr-TCcO%PTMF1+F1up;q diff --git a/doc/salome/gui/SMESH/pics/addhexahedron.png b/doc/salome/gui/SMESH/pics/addhexahedron.png index fd2ef245aac69417874c03ab2cba9aed53064536..909bda8925de9358569d38936c7641ca8fef89b1 100755 GIT binary patch delta 13 UcmezF{mq-DGr-S%BkLzs04z%d!vFvP delta 14 Vcmez7{oR|jGr-TCcO%OuRRA!D1<(Kh diff --git a/doc/salome/gui/SMESH/pics/addnode.png b/doc/salome/gui/SMESH/pics/addnode.png index 167a966b8a910265abd5c871399ae26a9ffa054a..181e2c9f76668ab95de63aa263b2e4c8af85c63b 100755 GIT binary patch delta 13 Ucmdnty4{tfGr-S%BkN`*03}`o_W%F@ delta 14 Vcmdn)y2F*VGr-TCcO%PYB>*W91q1*9 diff --git a/doc/salome/gui/SMESH/pics/addpolygon.png b/doc/salome/gui/SMESH/pics/addpolygon.png index 785a6234115160d8d2c7022412782e0b1fd88dc5..c59a4b7eed4d5e37240500c91f785865ed7a925d 100755 GIT binary patch delta 13 Ucmdnsx89GXGr-S%BdfML03=xib^rhX delta 14 VcmZ4Qx51CKGr-TCcO#3oIshmQ1cLwo diff --git a/doc/salome/gui/SMESH/pics/addquadrangle.png b/doc/salome/gui/SMESH/pics/addquadrangle.png index 2bbddf158ff05894830e19d723f3946cd9513994..594078e05dc523bfc1c4a4b3ef923cc53eeba351 100755 GIT binary patch delta 13 UcmcZ+d_9<@Gr-S%BkN^N04do8dH?_b delta 14 VcmcZ}d?T2(Gr-TCcO%PXO#m(D1&06t diff --git a/doc/salome/gui/SMESH/pics/addtetrahedron.png b/doc/salome/gui/SMESH/pics/addtetrahedron.png index 0a415707a167d1425c7db75dd4065b8691e3209f..2fc4d062cffc820282155736afacc61b01cb2383 100755 GIT binary patch delta 13 UcmccYeaV}pGr-S%BkMU;04SpcR{#J2 delta 14 VcmccQec79}Gr-TCcO%O=RRAoP1!MpK diff --git a/doc/salome/gui/SMESH/pics/addtriangle.png b/doc/salome/gui/SMESH/pics/addtriangle.png index 405d6f57f366f6a2f99a17b90f65ed700760df60..38349c444d8cdbab1a5324d8fa6f930f6bf5b22f 100755 GIT binary patch delta 13 UcmaFj``DMIGr-S%BkO%N04jM%K;%KX=}ZEN-y?IsXOZ diff --git a/doc/salome/gui/SMESH/pics/aqt.png b/doc/salome/gui/SMESH/pics/aqt.png index 32e36bd0e5dcc708eda4e4c55f810fc9e82fe23b..01ab899dc36b528b4f92f302a08e7ff3233907be 100755 GIT binary patch delta 13 Ucmexd{;8a$Gr-S%BkMbB058D?B>(^b delta 14 VcmexV{<)mBGr-TCcO%O?YXCG&1~LEu diff --git a/doc/salome/gui/SMESH/pics/automaticlength.png b/doc/salome/gui/SMESH/pics/automaticlength.png index d96ffc82dd381434faaea8bea03269feaa19a997..0168b58ad78e93a2b29333d66e0950bf9e2571b0 100755 GIT binary patch delta 13 Ucmdntx80AWGr-S%Bdf7G03|5|jsO4v delta 14 Vcmdn)x5JOMGr-TCcO#3jIsho`1e*W= diff --git a/doc/salome/gui/SMESH/pics/b-art_end_length.png b/doc/salome/gui/SMESH/pics/b-art_end_length.png index 26da5fa735bcd1c7b00c2816ff3bbfe8c51ddb32..1608bc08a76e0fa251d1a524808f3e57ef208bca 100755 GIT binary patch delta 13 Ucmewo^f`#7Gr-S%BWu1U04tjXOaK4? delta 14 Vcmewy^d*S3Gr-TCcOy%_CIBzr1z7+9 diff --git a/doc/salome/gui/SMESH/pics/b-create_group.png b/doc/salome/gui/SMESH/pics/b-create_group.png deleted file mode 100755 index 6fc2367b3e83da6225713d405ebe2410aab3b365..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28719 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 cZJo!L?P}L#xPn;_0tEO<{9 delta 14 VcmbPhG0%dvGr-TCcO#3W3;-kg1Qq}Q diff --git a/doc/salome/gui/SMESH/pics/b-flection1d.png b/doc/salome/gui/SMESH/pics/b-flection1d.png index e160cf55d76524d7c91daf2f170619011b70c6da..1cedcd087b91da54c330d5aa5ea6e8ac9620a1d8 100755 GIT binary patch delta 13 Ucmexw@y~*#Gr-S%BWslm04i_=EC2ui delta 14 Vcmexo@!x{AGr-TCcOy%c3;-^c1vvl! diff --git a/doc/salome/gui/SMESH/pics/b-ithmetic1d.png b/doc/salome/gui/SMESH/pics/b-ithmetic1d.png index 72f76b9517f5cca0b61e529d08d48ff3b5e2b3e6..031aaa734944315c19214a9c64094fe802e5ca51 100755 GIT binary patch delta 13 UcmcZ{cqx#jGr-S%BkMU004XX3W&i*H delta 14 VcmcZ=M%K;%KX=}ZEd03uHpT^y diff --git a/doc/salome/gui/SMESH/pics/borders_at_multi_connections1.png b/doc/salome/gui/SMESH/pics/borders_at_multi_connections1.png deleted file mode 100755 index 8a2d16499f69c531b73ca62c1b48284c4e195e8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6603 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 diff --git a/doc/salome/gui/SMESH/pics/c-editmesh.png b/doc/salome/gui/SMESH/pics/c-editmesh.png deleted file mode 100755 index bbad9686db7f9847406403e02e0451aad13d8957..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17581 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

 See - Also a sample TUI Script of an Extrusion - operation.