From: admin Date: Wed, 28 Dec 2005 09:17:41 +0000 (+0000) Subject: This commit was generated by cvs2git to create branch 'BR-D5-38-2003'. X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=61d19b5134f80f33d84e82a8685f9edaa9daac91;p=modules%2Fsmesh.git This commit was generated by cvs2git to create branch 'BR-D5-38-2003'. Cherrypick from master 2005-12-28 09:17:39 UTC jfa 'Join modifications from branch BR_3_1_0deb': INSTALL Makefile.in adm_local/unix/make_commence.in bin/VERSION build_configure configure.in.base doc/salome/Makefile.in doc/salome/SMESH_index_v3.1.0.html doc/salome/gui/SMESH/about_viewing_meshes.htm doc/salome/gui/SMESH/aspect_ratio_3d.htm doc/salome/gui/SMESH/borders_at_multi-connection.htm doc/salome/gui/SMESH/borders_at_multiconnection_2d.htm doc/salome/gui/SMESH/clipping.htm doc/salome/gui/SMESH/constructing_meshes.htm doc/salome/gui/SMESH/cshdat_robohelp.htm doc/salome/gui/SMESH/cshdat_webhelp.htm doc/salome/gui/SMESH/default.css doc/salome/gui/SMESH/default_ns.css doc/salome/gui/SMESH/defining_hypotheses_tui.htm doc/salome/gui/SMESH/deleting_groups.htm doc/salome/gui/SMESH/display_entity.htm doc/salome/gui/SMESH/ehelp.xml doc/salome/gui/SMESH/ehlpdhtm.js doc/salome/gui/SMESH/extrusion.htm doc/salome/gui/SMESH/extrusion_along_a_path.htm doc/salome/gui/SMESH/files/about_hypotheses.htm doc/salome/gui/SMESH/files/about_meshes.htm doc/salome/gui/SMESH/files/about_meshing_algorithms.htm doc/salome/gui/SMESH/files/about_quality_controls.htm doc/salome/gui/SMESH/files/adding_nodes_and_elements.htm doc/salome/gui/SMESH/files/area_of_elements.htm doc/salome/gui/SMESH/files/arithmetic_1d.htm doc/salome/gui/SMESH/files/aspect_ratio.htm doc/salome/gui/SMESH/files/changing_orientation_of_elements.htm doc/salome/gui/SMESH/files/constructing_groups_of_specific_elements.htm doc/salome/gui/SMESH/files/constructing_meshes.htm doc/salome/gui/SMESH/files/constructing_submeshes.htm doc/salome/gui/SMESH/files/creating_groups.htm doc/salome/gui/SMESH/files/cutting_quadrangles.htm doc/salome/gui/SMESH/files/diagonal_iversion_of_elements.htm doc/salome/gui/SMESH/files/displacing_nodes.htm doc/salome/gui/SMESH/files/displaying_nodes_numbers.htm doc/salome/gui/SMESH/files/editing_groups.htm doc/salome/gui/SMESH/files/importing_and_exporting_meshes.htm doc/salome/gui/SMESH/files/introduction_to_smesh.htm doc/salome/gui/SMESH/files/length_of_edges.htm doc/salome/gui/SMESH/files/max._element_area_hypothesis.htm doc/salome/gui/SMESH/files/max._element_volume_hypothsis.htm doc/salome/gui/SMESH/files/merging_nodes.htm doc/salome/gui/SMESH/files/minimum_angle.htm doc/salome/gui/SMESH/files/non_conform_mesh_allowed_hypothesis.htm doc/salome/gui/SMESH/files/reassigning_hypotheses_and_algorithms.htm doc/salome/gui/SMESH/files/removing_nodes_and_elements.htm doc/salome/gui/SMESH/files/renumbering_nodes_and_elements.htm doc/salome/gui/SMESH/files/rotation.htm doc/salome/gui/SMESH/files/running_smesh_module.htm doc/salome/gui/SMESH/files/sewing_meshes.htm doc/salome/gui/SMESH/files/skew.htm doc/salome/gui/SMESH/files/smoothing.htm doc/salome/gui/SMESH/files/symmetry.htm doc/salome/gui/SMESH/files/taper.htm doc/salome/gui/SMESH/files/translation.htm doc/salome/gui/SMESH/files/uniting_a_set_of_triangles.htm doc/salome/gui/SMESH/files/uniting_two_triangles.htm doc/salome/gui/SMESH/files/using_operations_on_groups.htm doc/salome/gui/SMESH/files/viewing_mesh_info.htm doc/salome/gui/SMESH/files/warp.htm doc/salome/gui/SMESH/free_borders.htm doc/salome/gui/SMESH/free_edges.htm doc/salome/gui/SMESH/grouping_elements.htm doc/salome/gui/SMESH/image10.jpg doc/salome/gui/SMESH/image101.gif doc/salome/gui/SMESH/image102.gif doc/salome/gui/SMESH/image103.gif doc/salome/gui/SMESH/image104.gif doc/salome/gui/SMESH/image105.gif doc/salome/gui/SMESH/image106.gif doc/salome/gui/SMESH/image108.gif doc/salome/gui/SMESH/image119.gif doc/salome/gui/SMESH/image120.gif doc/salome/gui/SMESH/image121.gif doc/salome/gui/SMESH/image122.gif doc/salome/gui/SMESH/image123.gif doc/salome/gui/SMESH/image124.gif doc/salome/gui/SMESH/image125.gif doc/salome/gui/SMESH/image126.gif doc/salome/gui/SMESH/image127.gif doc/salome/gui/SMESH/image129.gif doc/salome/gui/SMESH/image130.gif doc/salome/gui/SMESH/image131.gif doc/salome/gui/SMESH/image132.gif doc/salome/gui/SMESH/image133.gif doc/salome/gui/SMESH/image134.gif doc/salome/gui/SMESH/image135.gif doc/salome/gui/SMESH/image136.gif doc/salome/gui/SMESH/image137.gif doc/salome/gui/SMESH/image138.gif doc/salome/gui/SMESH/image139.gif doc/salome/gui/SMESH/image18.gif doc/salome/gui/SMESH/image19.gif doc/salome/gui/SMESH/image19.jpg doc/salome/gui/SMESH/image20.gif doc/salome/gui/SMESH/image21.gif doc/salome/gui/SMESH/image23.gif doc/salome/gui/SMESH/image27.gif doc/salome/gui/SMESH/image30.gif doc/salome/gui/SMESH/image37.jpg doc/salome/gui/SMESH/image49.gif doc/salome/gui/SMESH/image5.jpg doc/salome/gui/SMESH/image50.gif doc/salome/gui/SMESH/image53.gif doc/salome/gui/SMESH/image55.gif doc/salome/gui/SMESH/image56.gif doc/salome/gui/SMESH/image56.jpg doc/salome/gui/SMESH/image58.gif doc/salome/gui/SMESH/image7.jpg doc/salome/gui/SMESH/image79.jpg doc/salome/gui/SMESH/image86.jpg doc/salome/gui/SMESH/image88.jpg doc/salome/gui/SMESH/image90.jpg doc/salome/gui/SMESH/image92.jpg doc/salome/gui/SMESH/image93.jpg doc/salome/gui/SMESH/image94.jpg doc/salome/gui/SMESH/image95.jpg doc/salome/gui/SMESH/image96.jpg doc/salome/gui/SMESH/image97.jpg doc/salome/gui/SMESH/image99.gif doc/salome/gui/SMESH/length.htm doc/salome/gui/SMESH/modifying_meshes.htm doc/salome/gui/SMESH/pattern_mapping.htm doc/salome/gui/SMESH/pics/a-advmeshinfo.png doc/salome/gui/SMESH/pics/a-arithmetic1d.png doc/salome/gui/SMESH/pics/a-averagelength.png doc/salome/gui/SMESH/pics/a-clipping2.png doc/salome/gui/SMESH/pics/a-creategroup.png doc/salome/gui/SMESH/pics/a-createmesh1.png doc/salome/gui/SMESH/pics/a-createpolyhedralvolume.png doc/salome/gui/SMESH/pics/a-cuttingofquadrangles.png doc/salome/gui/SMESH/pics/a-deflection1d.png doc/salome/gui/SMESH/pics/a-editmesh.png doc/salome/gui/SMESH/pics/a-exportmesh.png doc/salome/gui/SMESH/pics/a-extusionalongapath2.png doc/salome/gui/SMESH/pics/a-filteronedges.png doc/salome/gui/SMESH/pics/a-maxelarea.png doc/salome/gui/SMESH/pics/a-maxelvolume.png doc/salome/gui/SMESH/pics/a-nbsegments1.png doc/salome/gui/SMESH/pics/a-nbsegments2.png doc/salome/gui/SMESH/pics/a-nbsegments3.png doc/salome/gui/SMESH/pics/a-nbsegments4.png doc/salome/gui/SMESH/pics/a-patterntype.png doc/salome/gui/SMESH/pics/a-patterntype1.png doc/salome/gui/SMESH/pics/a-standmeshinfo.png doc/salome/gui/SMESH/pics/a-startendlength.png doc/salome/gui/SMESH/pics/a-transparency.png doc/salome/gui/SMESH/pics/a-unionoftriangles.png doc/salome/gui/SMESH/pics/a-viewgeneral.png doc/salome/gui/SMESH/pics/add_edge.png doc/salome/gui/SMESH/pics/add_node.png doc/salome/gui/SMESH/pics/add_polygone.png doc/salome/gui/SMESH/pics/add_polyhedron.png doc/salome/gui/SMESH/pics/add_quadrangle.png doc/salome/gui/SMESH/pics/add_triangle.png doc/salome/gui/SMESH/pics/addedge.png doc/salome/gui/SMESH/pics/addhexahedron.png doc/salome/gui/SMESH/pics/addnode.png doc/salome/gui/SMESH/pics/addpolygon.png doc/salome/gui/SMESH/pics/addquadrangle.png doc/salome/gui/SMESH/pics/addtetrahedron.png doc/salome/gui/SMESH/pics/addtriangle.png doc/salome/gui/SMESH/pics/b-art_end_length.png doc/salome/gui/SMESH/pics/b-create_group.png doc/salome/gui/SMESH/pics/b-erage_length.png doc/salome/gui/SMESH/pics/b-flection1d.png doc/salome/gui/SMESH/pics/b-ithmetic1d.png doc/salome/gui/SMESH/pics/b-mberofsegments.png doc/salome/gui/SMESH/pics/b-mesh_infos.png doc/salome/gui/SMESH/pics/borders_at_multi_connections1.png doc/salome/gui/SMESH/pics/c-createmesh.png doc/salome/gui/SMESH/pics/c-editmesh.png doc/salome/gui/SMESH/pics/create_group.png doc/salome/gui/SMESH/pics/creategroup.png doc/salome/gui/SMESH/pics/cut_groups1.png doc/salome/gui/SMESH/pics/cut_groups2.png doc/salome/gui/SMESH/pics/cut_groups3.png doc/salome/gui/SMESH/pics/cutgroups.png doc/salome/gui/SMESH/pics/deletegroups.png doc/salome/gui/SMESH/pics/diagonalinversion.png doc/salome/gui/SMESH/pics/edit_mesh1.png doc/salome/gui/SMESH/pics/edit_mesh_change_value_hyp.png doc/salome/gui/SMESH/pics/edit_mesh_remove_hyp.png doc/salome/gui/SMESH/pics/editgroup.png doc/salome/gui/SMESH/pics/editing_groups1.png doc/salome/gui/SMESH/pics/editing_groups2.png doc/salome/gui/SMESH/pics/extrusionalongaline1.png doc/salome/gui/SMESH/pics/extrusionalongaline2.png doc/salome/gui/SMESH/pics/free_borders1.png doc/salome/gui/SMESH/pics/free_edges.png doc/salome/gui/SMESH/pics/importmesh.png doc/salome/gui/SMESH/pics/intersect_groups1.png doc/salome/gui/SMESH/pics/intersect_groups2.png doc/salome/gui/SMESH/pics/intersect_groups3.png doc/salome/gui/SMESH/pics/intersectgroups.png doc/salome/gui/SMESH/pics/length1.png doc/salome/gui/SMESH/pics/length2d.png doc/salome/gui/SMESH/pics/max_el_area.png doc/salome/gui/SMESH/pics/mergenodes.png doc/salome/gui/SMESH/pics/merging_nodes1.png doc/salome/gui/SMESH/pics/merging_nodes2.png doc/salome/gui/SMESH/pics/movenodes.png doc/salome/gui/SMESH/pics/moving_nodes1.png doc/salome/gui/SMESH/pics/moving_nodes2.png doc/salome/gui/SMESH/pics/orientaation1.png doc/salome/gui/SMESH/pics/patternmapping1.png doc/salome/gui/SMESH/pics/patternmapping2.png doc/salome/gui/SMESH/pics/remove_elements1.png doc/salome/gui/SMESH/pics/remove_elements2.png doc/salome/gui/SMESH/pics/remove_nodes1.png doc/salome/gui/SMESH/pics/remove_nodes2.png doc/salome/gui/SMESH/pics/removeelements.png doc/salome/gui/SMESH/pics/removenodes.png doc/salome/gui/SMESH/pics/renumberelements.png doc/salome/gui/SMESH/pics/renumbernodes.png doc/salome/gui/SMESH/pics/revolution1.png doc/salome/gui/SMESH/pics/revolution2.png doc/salome/gui/SMESH/pics/rotation.png doc/salome/gui/SMESH/pics/rotation1.png doc/salome/gui/SMESH/pics/rotation2.png doc/salome/gui/SMESH/pics/selectionfilterlibrary.png doc/salome/gui/SMESH/pics/sewing1.png doc/salome/gui/SMESH/pics/sewing2.png doc/salome/gui/SMESH/pics/sewing3.png doc/salome/gui/SMESH/pics/sewing4.png doc/salome/gui/SMESH/pics/smoothing.png doc/salome/gui/SMESH/pics/smoothing1.png doc/salome/gui/SMESH/pics/smoothing2.png doc/salome/gui/SMESH/pics/submeshconstruction.png doc/salome/gui/SMESH/pics/symmetry1.png doc/salome/gui/SMESH/pics/symmetry2.png doc/salome/gui/SMESH/pics/symmetry3.png doc/salome/gui/SMESH/pics/translation1.png doc/salome/gui/SMESH/pics/translation2.png doc/salome/gui/SMESH/pics/union_groups1.png doc/salome/gui/SMESH/pics/union_groups2.png doc/salome/gui/SMESH/pics/union_groups3.png doc/salome/gui/SMESH/pics/uniongroups.png doc/salome/gui/SMESH/pics/unionoftwotriangles.png doc/salome/gui/SMESH/pics/uniting_a_set_of_triangles1.png doc/salome/gui/SMESH/pics/uniting_a_set_of_triangles2.png doc/salome/gui/SMESH/pics/uniting_two_triangles1.png doc/salome/gui/SMESH/pics/uniting_two_triangles2.png doc/salome/gui/SMESH/presentation.htm doc/salome/gui/SMESH/quality_controls.htm doc/salome/gui/SMESH/revolution.htm doc/salome/gui/SMESH/selection_filter_library.htm doc/salome/gui/SMESH/smesh.htm doc/salome/gui/SMESH/smesh.log doc/salome/gui/SMESH/smesh_csh.htm doc/salome/gui/SMESH/smesh_rhc.htm doc/salome/gui/SMESH/transforming_meshes.htm doc/salome/gui/SMESH/transparency.htm doc/salome/gui/SMESH/viewing_meshes.htm doc/salome/gui/SMESH/webhelp.cab doc/salome/gui/SMESH/webhelp.jar doc/salome/gui/SMESH/whcsh_home.htm doc/salome/gui/SMESH/whcshdata.htm doc/salome/gui/SMESH/whdata/whftdata.js doc/salome/gui/SMESH/whdata/whftdata0.htm doc/salome/gui/SMESH/whdata/whfts.htm doc/salome/gui/SMESH/whdata/whfts.js doc/salome/gui/SMESH/whdata/whfwdata.js doc/salome/gui/SMESH/whdata/whfwdata0.htm doc/salome/gui/SMESH/whdata/whgdata.js doc/salome/gui/SMESH/whdata/whgdata0.htm doc/salome/gui/SMESH/whdata/whglo.htm doc/salome/gui/SMESH/whdata/whglo.js doc/salome/gui/SMESH/whdata/whidata.js doc/salome/gui/SMESH/whdata/whidx.htm doc/salome/gui/SMESH/whdata/whidx.js doc/salome/gui/SMESH/whdata/whtdata.js doc/salome/gui/SMESH/whdata/whtdata0.htm doc/salome/gui/SMESH/whdata/whtoc.htm doc/salome/gui/SMESH/whdata/whtoc.js doc/salome/gui/SMESH/whfbody.htm doc/salome/gui/SMESH/whfdhtml.htm doc/salome/gui/SMESH/whfform.htm doc/salome/gui/SMESH/whfhost.js doc/salome/gui/SMESH/whform.js doc/salome/gui/SMESH/whframes.js doc/salome/gui/SMESH/whgbody.htm doc/salome/gui/SMESH/whgdata/whlstf0.htm doc/salome/gui/SMESH/whgdata/whlstf1.htm doc/salome/gui/SMESH/whgdata/whlstf10.htm doc/salome/gui/SMESH/whgdata/whlstf11.htm doc/salome/gui/SMESH/whgdata/whlstf12.htm doc/salome/gui/SMESH/whgdata/whlstf2.htm doc/salome/gui/SMESH/whgdata/whlstf3.htm doc/salome/gui/SMESH/whgdata/whlstf4.htm doc/salome/gui/SMESH/whgdata/whlstf5.htm doc/salome/gui/SMESH/whgdata/whlstf6.htm doc/salome/gui/SMESH/whgdata/whlstf7.htm doc/salome/gui/SMESH/whgdata/whlstf8.htm doc/salome/gui/SMESH/whgdata/whlstf9.htm doc/salome/gui/SMESH/whgdata/whlstfl0.htm doc/salome/gui/SMESH/whgdata/whlstfl1.htm doc/salome/gui/SMESH/whgdata/whlstfl10.htm doc/salome/gui/SMESH/whgdata/whlstfl11.htm doc/salome/gui/SMESH/whgdata/whlstfl12.htm doc/salome/gui/SMESH/whgdata/whlstfl13.htm doc/salome/gui/SMESH/whgdata/whlstfl14.htm doc/salome/gui/SMESH/whgdata/whlstfl15.htm doc/salome/gui/SMESH/whgdata/whlstfl16.htm doc/salome/gui/SMESH/whgdata/whlstfl17.htm doc/salome/gui/SMESH/whgdata/whlstfl18.htm doc/salome/gui/SMESH/whgdata/whlstfl19.htm doc/salome/gui/SMESH/whgdata/whlstfl2.htm doc/salome/gui/SMESH/whgdata/whlstfl20.htm doc/salome/gui/SMESH/whgdata/whlstfl21.htm doc/salome/gui/SMESH/whgdata/whlstfl22.htm doc/salome/gui/SMESH/whgdata/whlstfl23.htm doc/salome/gui/SMESH/whgdata/whlstfl24.htm doc/salome/gui/SMESH/whgdata/whlstfl25.htm doc/salome/gui/SMESH/whgdata/whlstfl3.htm doc/salome/gui/SMESH/whgdata/whlstfl4.htm doc/salome/gui/SMESH/whgdata/whlstfl5.htm doc/salome/gui/SMESH/whgdata/whlstfl6.htm doc/salome/gui/SMESH/whgdata/whlstfl7.htm doc/salome/gui/SMESH/whgdata/whlstfl8.htm doc/salome/gui/SMESH/whgdata/whlstfl9.htm doc/salome/gui/SMESH/whgdata/whlstg0.htm doc/salome/gui/SMESH/whgdata/whlsti0.htm doc/salome/gui/SMESH/whgdata/whlstt0.htm doc/salome/gui/SMESH/whgdata/whlstt1.htm doc/salome/gui/SMESH/whgdata/whlstt2.htm doc/salome/gui/SMESH/whgdata/whlstt3.htm doc/salome/gui/SMESH/whgdata/whlstt4.htm doc/salome/gui/SMESH/whgdata/whlstt5.htm doc/salome/gui/SMESH/whgdata/whlstt6.htm doc/salome/gui/SMESH/whgdata/whlstt7.htm doc/salome/gui/SMESH/whgdata/whlstt8.htm doc/salome/gui/SMESH/whgdata/whlstt9.htm doc/salome/gui/SMESH/whgdata/whnvf30.htm doc/salome/gui/SMESH/whgdata/whnvf31.htm doc/salome/gui/SMESH/whgdata/whnvf32.htm doc/salome/gui/SMESH/whgdata/whnvf33.htm doc/salome/gui/SMESH/whgdata/whnvl31.htm doc/salome/gui/SMESH/whgdata/whnvl32.htm doc/salome/gui/SMESH/whgdata/whnvl33.htm doc/salome/gui/SMESH/whgdata/whnvp30.htm doc/salome/gui/SMESH/whgdata/whnvp31.htm doc/salome/gui/SMESH/whgdata/whnvp32.htm doc/salome/gui/SMESH/whgdata/whnvp33.htm doc/salome/gui/SMESH/whgdata/whnvt30.htm doc/salome/gui/SMESH/whgdata/whnvt31.htm doc/salome/gui/SMESH/whgdata/whnvt32.htm doc/salome/gui/SMESH/whgdata/whnvt33.htm doc/salome/gui/SMESH/whgdef.htm doc/salome/gui/SMESH/whgdhtml.htm doc/salome/gui/SMESH/whghost.js doc/salome/gui/SMESH/whhost.js doc/salome/gui/SMESH/whibody.htm doc/salome/gui/SMESH/whidhtml.htm doc/salome/gui/SMESH/whiform.htm doc/salome/gui/SMESH/whihost.js doc/salome/gui/SMESH/whlang.js doc/salome/gui/SMESH/whmozemu.js doc/salome/gui/SMESH/whmsg.js doc/salome/gui/SMESH/whnjs.htm doc/salome/gui/SMESH/whphost.js doc/salome/gui/SMESH/whproj.htm doc/salome/gui/SMESH/whproj.js doc/salome/gui/SMESH/whproj.xml doc/salome/gui/SMESH/whproxy.js doc/salome/gui/SMESH/whres.xml doc/salome/gui/SMESH/whskin_banner.htm doc/salome/gui/SMESH/whskin_blank.htm doc/salome/gui/SMESH/whskin_frmset01.htm doc/salome/gui/SMESH/whskin_frmset010.htm doc/salome/gui/SMESH/whskin_homepage.htm doc/salome/gui/SMESH/whskin_info.htm doc/salome/gui/SMESH/whskin_mbars.htm doc/salome/gui/SMESH/whskin_papplet.htm doc/salome/gui/SMESH/whskin_pdhtml.htm doc/salome/gui/SMESH/whskin_pickup.htm doc/salome/gui/SMESH/whskin_plist.htm doc/salome/gui/SMESH/whskin_tbars.htm doc/salome/gui/SMESH/whskin_tw.htm doc/salome/gui/SMESH/whst_topics.xml doc/salome/gui/SMESH/whstart.js doc/salome/gui/SMESH/whstub.js doc/salome/gui/SMESH/wht_abge.jpg doc/salome/gui/SMESH/wht_abgi.jpg doc/salome/gui/SMESH/wht_abgw.jpg doc/salome/gui/SMESH/wht_abte.jpg doc/salome/gui/SMESH/wht_abti.jpg doc/salome/gui/SMESH/wht_abtw.jpg doc/salome/gui/SMESH/whtbar.js doc/salome/gui/SMESH/whtdhtml.htm doc/salome/gui/SMESH/whthost.js doc/salome/gui/SMESH/whtopic.js doc/salome/gui/SMESH/whutils.js doc/salome/gui/SMESH/whver.js doc/salome/gui/SMESH/whxdata/whftdata0.xml doc/salome/gui/SMESH/whxdata/whfts.xml doc/salome/gui/SMESH/whxdata/whfwdata0.xml doc/salome/gui/SMESH/whxdata/whgdata0.xml doc/salome/gui/SMESH/whxdata/whglo.xml doc/salome/gui/SMESH/whxdata/whidx.xml doc/salome/gui/SMESH/whxdata/whtdata0.xml doc/salome/gui/SMESH/whxdata/whtoc.xml doc/salome/tui/SMESH/doxyfile doc/salome/tui/SMESH/doxyfile_py doc/salome/tui/SMESH/sources/static/tree.js idl/SMESH_BasicHypothesis.idl idl/SMESH_Filter.idl idl/SMESH_Gen.idl idl/SMESH_Mesh.idl resources/SMESHCatalog.xml resources/StdMeshers.xml resources/mesh_volume_3d.png src/Controls/SMESH_Controls.cxx src/DriverUNV/DriverUNV_R_SMDS_Mesh.cxx src/MEFISTO2/Makefile.in src/NETGENPlugin/NETGENPlugin_NETGEN_3D.cxx src/NETGENPlugin/NETGENPlugin_NETGEN_3D.hxx src/SMDS/SMDS_VolumeTool.cxx src/SMESH/Makefile.in src/SMESH/SMESH_Algo.cxx src/SMESH/SMESH_Algo.hxx src/SMESH/SMESH_DataMapOfElemPtrSequenceOfElemPtr.hxx src/SMESH/SMESH_Gen.cxx src/SMESH/SMESH_Gen.hxx src/SMESH/SMESH_IndexedDataMapOfShapeIndexedMapOfShape.hxx src/SMESH/SMESH_MeshEditor.cxx src/SMESH/SMESH_MeshEditor.hxx src/SMESH/SMESH_Pattern.cxx src/SMESH/SMESH_Pattern.hxx src/SMESH/SMESH_SequenceOfElemPtr.hxx src/SMESH/SMESH_SequenceOfNode.hxx src/SMESH/SMESH_subMesh.cxx src/SMESHDS/SMESHDS_Mesh.hxx src/SMESHFiltersSelection/SMESH_LogicalFilter.cxx src/SMESHFiltersSelection/SMESH_LogicalFilter.hxx src/SMESHFiltersSelection/SMESH_NumberFilter.cxx src/SMESHFiltersSelection/SMESH_NumberFilter.hxx src/SMESHFiltersSelection/SMESH_Type.h src/SMESHFiltersSelection/SMESH_TypeFilter.cxx src/SMESHFiltersSelection/SMESH_TypeFilter.hxx src/SMESHFiltersSelection/SMESH_TypeFilter.jxx src/SMESHGUI/Makefile.in src/SMESHGUI/SMESHBin.cxx src/SMESHGUI/SMESHGUI.h src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h src/SMESHGUI/SMESHGUI_ClippingDlg.cxx src/SMESHGUI/SMESHGUI_ClippingDlg.h src/SMESHGUI/SMESHGUI_CreateHypothesesDlg.cxx src/SMESHGUI/SMESHGUI_CreatePatternDlg.cxx src/SMESHGUI/SMESHGUI_CreatePatternDlg.h src/SMESHGUI/SMESHGUI_CreatePolyhedralVolumeDlg.cxx src/SMESHGUI/SMESHGUI_CreatePolyhedralVolumeDlg.h src/SMESHGUI/SMESHGUI_DeleteGroupDlg.cxx src/SMESHGUI/SMESHGUI_DeleteGroupDlg.h src/SMESHGUI/SMESHGUI_Dialog.cxx src/SMESHGUI/SMESHGUI_Dialog.h src/SMESHGUI/SMESHGUI_Displayer.cxx src/SMESHGUI/SMESHGUI_Displayer.h src/SMESHGUI/SMESHGUI_EditHypothesesDlg.h src/SMESHGUI/SMESHGUI_EditMeshDlg.cxx src/SMESHGUI/SMESHGUI_EditMeshDlg.h src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.cxx src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.h src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx src/SMESHGUI/SMESHGUI_ExtrusionDlg.h src/SMESHGUI/SMESHGUI_FilterDlg.h src/SMESHGUI/SMESHGUI_GroupDlg.h src/SMESHGUI/SMESHGUI_GroupOpDlg.cxx src/SMESHGUI/SMESHGUI_GroupOpDlg.h src/SMESHGUI/SMESHGUI_Hypotheses.cxx src/SMESHGUI/SMESHGUI_Hypotheses.h src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx src/SMESHGUI/SMESHGUI_HypothesesUtils.h src/SMESHGUI/SMESHGUI_MergeNodesDlg.cxx src/SMESHGUI/SMESHGUI_MergeNodesDlg.h src/SMESHGUI/SMESHGUI_MeshDlg.cxx src/SMESHGUI/SMESHGUI_MeshDlg.h src/SMESHGUI/SMESHGUI_MeshInfosDlg.cxx src/SMESHGUI/SMESHGUI_MeshInfosDlg.h src/SMESHGUI/SMESHGUI_MeshOp.cxx src/SMESHGUI/SMESHGUI_MeshOp.h src/SMESHGUI/SMESHGUI_MeshPatternDlg.cxx src/SMESHGUI/SMESHGUI_MeshPatternDlg.h src/SMESHGUI/SMESHGUI_MoveNodesDlg.cxx src/SMESHGUI/SMESHGUI_MoveNodesDlg.h src/SMESHGUI/SMESHGUI_MultiEditDlg.h src/SMESHGUI/SMESHGUI_NodesDlg.cxx src/SMESHGUI/SMESHGUI_NodesDlg.h src/SMESHGUI/SMESHGUI_Operation.cxx src/SMESHGUI/SMESHGUI_Operation.h src/SMESHGUI/SMESHGUI_Preferences_ScalarBarDlg.cxx src/SMESHGUI/SMESHGUI_Preferences_ScalarBarDlg.h src/SMESHGUI/SMESHGUI_RemoveElementsDlg.h src/SMESHGUI/SMESHGUI_RemoveNodesDlg.h src/SMESHGUI/SMESHGUI_RenumberingDlg.cxx src/SMESHGUI/SMESHGUI_RenumberingDlg.h src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx src/SMESHGUI/SMESHGUI_RevolutionDlg.h src/SMESHGUI/SMESHGUI_RotationDlg.cxx src/SMESHGUI/SMESHGUI_RotationDlg.h src/SMESHGUI/SMESHGUI_Selection.h src/SMESHGUI/SMESHGUI_SelectionOp.cxx src/SMESHGUI/SMESHGUI_SelectionOp.h src/SMESHGUI/SMESHGUI_SewingDlg.cxx src/SMESHGUI/SMESHGUI_SewingDlg.h src/SMESHGUI/SMESHGUI_SingleEditDlg.cxx src/SMESHGUI/SMESHGUI_SingleEditDlg.h src/SMESHGUI/SMESHGUI_SmoothingDlg.cxx src/SMESHGUI/SMESHGUI_SmoothingDlg.h src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.cxx src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.h src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx src/SMESHGUI/SMESHGUI_SymmetryDlg.h src/SMESHGUI/SMESHGUI_TranslationDlg.cxx src/SMESHGUI/SMESHGUI_TranslationDlg.h src/SMESHGUI/SMESHGUI_TransparencyDlg.cxx src/SMESHGUI/SMESHGUI_TransparencyDlg.h src/SMESHGUI/SMESHGUI_Utils.cxx src/SMESHGUI/SMESHGUI_Utils.h src/SMESHGUI/SMESHGUI_XmlHandler.cxx src/SMESHGUI/SMESHGUI_XmlHandler.h src/SMESHGUI/SMESHGUI_aParameter.h src/SMESHGUI/SMESH_images.po src/SMESHGUI/SMESH_msg_en.po src/SMESH_I/SMESH_2smeshpy.cxx src/SMESH_I/SMESH_2smeshpy.hxx src/SMESH_I/SMESH_DumpPython.cxx src/SMESH_I/SMESH_Filter_i.cxx src/SMESH_I/SMESH_Filter_i.hxx src/SMESH_I/SMESH_Gen_i.cxx src/SMESH_I/SMESH_Gen_i.hxx src/SMESH_I/SMESH_Group_i.cxx src/SMESH_I/SMESH_MeshEditor_i.cxx src/SMESH_I/SMESH_MeshEditor_i.hxx src/SMESH_I/SMESH_Mesh_i.cxx src/SMESH_I/SMESH_Pattern_i.cxx src/SMESH_I/SMESH_PythonDump.hxx src/SMESH_SWIG/SMESH_reg.py src/SMESH_SWIG/smesh.py src/StdMeshers/Makefile.in src/StdMeshers/StdMeshers_AutomaticLength.cxx src/StdMeshers/StdMeshers_AutomaticLength.hxx src/StdMeshers/StdMeshers_Distribution.cxx src/StdMeshers/StdMeshers_Distribution.hxx src/StdMeshers/StdMeshers_NumberOfSegments.cxx src/StdMeshers/StdMeshers_NumberOfSegments.hxx src/StdMeshers/StdMeshers_QuadranglePreference.cxx src/StdMeshers/StdMeshers_QuadranglePreference.hxx src/StdMeshers/StdMeshers_Quadrangle_2D.cxx src/StdMeshers/StdMeshers_Quadrangle_2D.hxx src/StdMeshers/StdMeshers_Regular_1D.cxx src/StdMeshers/StdMeshers_Regular_1D.hxx src/StdMeshersGUI/Makefile.in src/StdMeshersGUI/StdMeshersGUI.cxx src/StdMeshersGUI/StdMeshersGUI_DistrPreview.cxx src/StdMeshersGUI/StdMeshersGUI_DistrPreview.h src/StdMeshersGUI/StdMeshersGUI_DistrTable.cxx src/StdMeshersGUI/StdMeshersGUI_DistrTable.h src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.cxx src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.h src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.h src/StdMeshersGUI/StdMeshers_images.po src/StdMeshersGUI/StdMeshers_msg_en.po src/StdMeshers_I/Makefile.in src/StdMeshers_I/StdMeshers_Arithmetic1D_i.cxx src/StdMeshers_I/StdMeshers_AutomaticLength_i.cxx src/StdMeshers_I/StdMeshers_AutomaticLength_i.hxx src/StdMeshers_I/StdMeshers_Deflection1D_i.cxx src/StdMeshers_I/StdMeshers_LocalLength_i.cxx src/StdMeshers_I/StdMeshers_MaxElementArea_i.cxx src/StdMeshers_I/StdMeshers_MaxElementVolume_i.cxx src/StdMeshers_I/StdMeshers_NumberOfSegments_i.cxx src/StdMeshers_I/StdMeshers_NumberOfSegments_i.hxx src/StdMeshers_I/StdMeshers_QuadranglePreference_i.cxx src/StdMeshers_I/StdMeshers_QuadranglePreference_i.hxx src/StdMeshers_I/StdMeshers_StartEndLength_i.cxx src/StdMeshers_I/StdMeshers_i.cxx --- diff --git a/INSTALL b/INSTALL new file mode 100644 index 000000000..78255907a --- /dev/null +++ b/INSTALL @@ -0,0 +1,6 @@ +This is the version 3.1.0 of SMESH +Compatible with : + - KERNEL 3.1.0 + - SALOMEGUI 3.1.0 + - GEOM 3.1.0 + - MED 3.1.0 diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 000000000..f3a90dfb5 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,209 @@ +# -* Makefile *- +# +# Author : Patrick GOLDBRONN (CEA) +# Date : 28/06/2001 +# $Header$ +# + +# source path +top_srcdir=@top_srcdir@ +top_builddir=. +srcdir=@srcdir@ +VPATH=.:@srcdir@:@top_srcdir@/bin:@top_srcdir@/resources:./bin:@top_srcdir@/idl + + +@COMMENCE@ + +SUBDIRS = idl src doc + +RESOURCES_FILES = \ +delete.png \ +mesh_add_sub.png \ +mesh_algo_hexa.png \ +mesh_algo_mefisto.png \ +mesh_algo_quad.png \ +mesh_algo_regular.png \ +mesh_algo_tetra.png \ +mesh_angle.png \ +mesh_area.png \ +mesh_aspect.png \ +mesh_aspect_3d.png \ +mesh_compute.png \ +mesh_connectivity.png \ +mesh_diagonal.png \ +mesh_edit.png \ +mesh_hexa_n.png \ +mesh_hexa.png \ +mesh_hypo_area.png \ +mesh_hypo_length.png \ +mesh_hypo_segment.png \ +mesh_hypo_volume.png \ +mesh_hypo_edit.png \ +mesh_info.png \ +advanced_mesh_info.png \ +standard_mesh_info.png \ +mesh_init.png \ +mesh_length.png \ +mesh_length_2d.png \ +mesh_free_edges.png \ +mesh_free_edges_2d.png \ +mesh_multi_edges.png \ +mesh_multi_edges_2d.png \ +mesh_line_n.png \ +mesh_line.png \ +mesh_move_node.png \ +mesh_orientation.png \ +mesh.png \ +mesh_polygon.png \ +mesh_polyhedron.png \ +mesh_pyramid_n.png \ +mesh_pyramid.png \ +mesh_quad_n.png \ +mesh_quad.png \ +mesh_rem_element.png \ +mesh_rem_node.png \ +mesh_set_algo.png \ +mesh_set_hypo.png \ +mesh_shading.png \ +mesh_shrink.png \ +mesh_skew.png \ +mesh_taper.png \ +mesh_tetra_n.png \ +mesh_tetra.png \ +mesh_tree_algo_hexa.png \ +mesh_tree_algo_mefisto.png \ +mesh_tree_algo.png \ +mesh_tree_algo_quad.png \ +mesh_tree_algo_regular.png \ +mesh_tree_algo_tetra.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_mesh.png \ +mesh_tree_importedmesh.png \ +mesh_tree_mesh_warn.png \ +mesh_triangle_n.png \ +mesh_triangle.png \ +mesh_update.png \ +mesh_vertex_n.png \ +mesh_vertex.png \ +mesh_volume_3d.png \ +mesh_wireframe.png \ +mesh_points.png \ +mesh_wrap.png \ +mesh_tree_group.png \ +mesh_edit_group.png \ +mesh_make_group.png \ +mesh_union2tri.png \ +mesh_uniontri.png \ +mesh_cutquad.png \ +mesh_smoothing.png \ +mesh_renumbering_nodes.png \ +mesh_renumbering_elements.png \ +mesh_extrusion.png \ +mesh_extrusionpath.png \ +mesh_revolution.png \ +ModuleMesh.png \ +mesh_unionGroups.png \ +mesh_intersectGroups.png \ +mesh_cutGroups.png \ +mesh_deleteGroups.png \ +mesh_translation_vector.png \ +mesh_translation_points.png \ +mesh_rotation.png \ +mesh_symmetry_point.png \ +mesh_symmetry_axis.png \ +mesh_symmetry_plane.png \ +mesh_sew_freeborders.png \ +mesh_sew_conform_freeborders.png \ +mesh_sew_bordertoside.png \ +mesh_sew_sideelements.png \ +mesh_merge_nodes.png \ +mesh_merge_elements.png \ +select1.png \ +SMESH_en.xml \ +SMESH.config \ +StdMeshers.xml \ +SMESHCatalog.xml \ +mesh_pattern.png \ +pattern_sample_2d.png \ +pattern_sample_3D.png \ +mesh_add.png \ +mesh_remove.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 +endif + +inc: idl $(include_list) + +include/salome/SALOMEconfig.h: salome_adm/unix/SALOMEconfig.ref + -$(RM) $@ + $(LN_S) ../../$< $@ + +# test if SALOMEconfig.h has changed (contents) +salome_adm/unix/SALOMEconfig.ref: salome_adm/unix/SALOMEconfig.h + @if ! [ -a $@ ]; then \ + cp -p -f $< $@; \ + fi; \ + if ! cmp $< $@; then \ + cp -p -f $< $@; \ + fi; \ + +include/salome/sstream: salome_adm/unix/sstream + -$(RM) $@ + $(LN_S) ../../$< $@ + +depend: depend_idl + +depend_idl: + (cd idl ; $(MAKE) $@) || exit 1 + +# doc is already build : if you want to had documents, go manually to doc and run 'make doc' +#doc: +# (cd doc && $(MAKE) $@) || exit 1 + +install-end: +# finish libtool install +# @$(LT) --mode=finish $(libdir) + +install-include: $(include_list) + $(INSTALL) -d $(includedir) + @for f in X $(include_list); do \ + if test $$f != X; then \ + ($(INSTALL_DATA) -p $$f $(includedir)/. || exit 1); \ + fi; \ + done + +# install script in $(bindir) : +install-bin: $(BIN_SCRIPT) + $(INSTALL) -d $(bindir) + if test $(BIN_SCRIPT)X != X; then \ + $(INSTALL_PROGRAM) $^ $(bindir); \ + fi + +uninstall: uninstall-idl + +uninstall-idl: + $(RM) $(idldir)/*.idl + +distclean: distclean-other + +distclean-other: + -$(RM) salome_adm/unix/*~ salome_adm/unix/*% salome_adm/unix/*.bak salome_adm/unix/*.new salome_adm/unix/*.old + -$(RM) salome_adm/unix/make_* + -$(RM) salome_adm/unix/depend salome_adm/unix/SALOMEconfig.h + -$(RM) config.cache config.log config.status + +@MODULE@ + +install: install-bin install-include install-end + diff --git a/adm_local/unix/make_commence.in b/adm_local/unix/make_commence.in new file mode 100644 index 000000000..5e556548e --- /dev/null +++ b/adm_local/unix/make_commence.in @@ -0,0 +1,253 @@ +# common directories to put headerfiles +inc_builddir=$(top_builddir)/include/salome + +@SET_MAKE@ +SHELL=/bin/sh + +# header missing + +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 +# add libstdc++ to link c++ library with libtool ! +LDFLAGS+= -lstdc++ +LDFLAGSFORBIN+= -lstdc++ + +CP=@CP@ + +# CPP + +CPP=@CPP@ +CXXCPP=@CXXCPP@ +CPPFLAGS=@CPPFLAGS@ -I$(inc_builddir) -I$(srcdir) -I. + +# C + +CC = @CC@ +CFLAGS = @CFLAGS@ +C_DEPEND_FLAG = @C_DEPEND_FLAG@ + +# C++ + +CXX = @CXX@ +CXXFLAGS = @CXXFLAGS@ +CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@ + +# BOOST Library + +BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ + +# JAVA + +JAVA_INCLUDES = @JAVA_INCLUDES@ +JAVA_LIBS = @JAVA_LIBS@ +JAVA_LDPATH = @JAVA_LDPATH@ + +# PYTHON + +PYTHON = @PYTHON@ +PYTHONHOME = @PYTHONHOME@ +PYTHON_INCLUDES = @PYTHON_INCLUDES@ +PYTHON_LIBS = @PYTHON_LIBS@ +PYTHON_VERSION = @PYTHON_VERSION@ +PYTHON_SITE = @PYTHON_SITE@ +PYTHON_SITE_INSTALL = @PYTHON_SITE_INSTALL@ + +# QT + +QT_ROOT = @QT_ROOT@ +QT_INCLUDES = @QT_INCLUDES@ +QT_MT_INCLUDES = @QT_INCLUDES@ -DQT_THREAD_SUPPORT +QT_LIBS = @QT_LIBS@ +QT_MT_LIBS = @QT_MT_LIBS@ + +MOC = @MOC@ +UIC = @UIC@ +MSG2QM = @MSG2QM@ + +#QWT + +QWT_INCLUDES=@QWT_INCLUDES@ +QWT_LIBS=@QWT_LIBS@ + +# SIP +SIP = @SIP@ +SIP_INCLUDES = @SIP_INCLUDES@ +SIP_LIBS = @SIP_LIBS@ + +# PYQT +PYQT_SIPS = @PYQT_SIPS@ +PYQT_LIBS = @PYQT_LIBS@ + +# openGL +OGL_INCLUDES=@OGL_INCLUDES@ +OGL_LIBS=@OGL_LIBS@ + +# VTK +VTK_INCLUDES=@VTK_INCLUDES@ +VTK_LIBS=@VTK_LIBS@ + +# HDF5 + +HDF5_INCLUDES=@HDF5_INCLUDES@ +HDF5_LIBS=@HDF5_LIBS@ +HDF5_MT_LIBS=@HDF5_MT_LIBS@ + +# OpenCasCade + +OCC_INCLUDES=@CAS_CPPFLAGS@ +OCC_CXXFLAGS=@CAS_CXXFLAGS@ + +OCC_KERNEL_LIBS=@CAS_KERNEL@ +OCC_OCAF_LIBS=@CAS_OCAF@ +OCC_VIEWER_LIBS=@CAS_VIEWER@ +OCC_MODELER_LIBS=@CAS_MODELER@ +OCC_DATAEXCHANGE_LIBS=@CAS_DATAEXCHANGE@ +OCC_LIBS=@CAS_LDFLAGS@ +OCC_LDPATH=@CAS_LDPATH@ + +# MPICH + +MPICH_INCLUDES=@MPICH_INCLUDES@ +MPICH_LIBS=@MPICH_LIBS@ + +# Swig C++ Python + +SWIG = @SWIG@ +SWIG_FLAGS = @SWIG_FLAGS@ -I$(inc_builddir) -I$(srcdir) -I. + +# OMNIORB + +OMNIORB_ROOT = @OMNIORB_ROOT@ +OMNIORB_INCLUDES = @OMNIORB_INCLUDES@ +OMNIORB_LIBS = @OMNIORB_LIBS@ +OMNIORB_CXXFLAGS = @OMNIORB_CXXFLAGS@ + +OMNIORB_IDL = @OMNIORB_IDL@ +OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@ +OMNIORB_IDLPYFLAGS = @OMNIORB_IDLPYFLAGS@ -I$(top_srcdir)/idl -I$(top_builddir)/idl/salome \ + -I$(KERNEL_ROOT_DIR)/idl/salome -I$(GEOM_ROOT_DIR)/idl/salome -I$(MED_ROOT_DIR)/idl/salome + +OMNIORB_IDL_CLN_H = @OMNIORB_IDL_CLN_H@ +OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@ +OMNIORB_IDL_CLN_OBJ = @OMNIORB_IDL_CLN_OBJ@ + +OMNIORB_IDL_SRV_H = @OMNIORB_IDL_SRV_H@ +OMNIORB_IDL_SRV_CXX = @OMNIORB_IDL_SRV_CXX@ +OMNIORB_IDL_SRV_OBJ = @OMNIORB_IDL_SRV_OBJ@ + +# Default ORB + +CORBA_ROOT = @CORBA_ROOT@ +CORBA_INCLUDES = @CORBA_INCLUDES@ +CORBA_LIBS = @CORBA_LIBS@ +CORBA_CXXFLAGS = @CORBA_CXXFLAGS@ + +IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_srcdir)/idl -I$(top_builddir)/idl/salome \ + -I$(KERNEL_ROOT_DIR)/idl/salome -I$(GEOM_ROOT_DIR)/idl/salome -I$(MED_ROOT_DIR)/idl/salome +IDLPYFLAGS = @IDLPYFLAGS@ + +IDL = @IDL@ + +IDL_CLN_H = @IDL_CLN_H@ +IDL_CLN_CXX = @IDL_CLN_CXX@ +IDL_CLN_OBJ = @IDL_CLN_OBJ@ + +IDL_SRV_H = @IDL_SRV_H@ +IDL_SRV_CXX = @IDL_SRV_CXX@ +IDL_SRV_OBJ = @IDL_SRV_OBJ@ + +CPPFLAGS+= $(CORBA_INCLUDES) +CXXFLAGS+= $(CORBA_CXXFLAGS) + +# add corba libs when link salome application ! +#LDFLAGS+= $(CORBA_LIBS) +LIBS+=$(CORBA_LIBS) + +## Shared libraries +LT_STATIC_EXEC=@LT_STATIC_EXEC@ +DYNAMIC_DIRS=@DYNAMIC_DIRS@ +LT_LIB=libtool +LT=$(top_builddir)/libtool +LT_COMPILE=$(LT) --mode=compile $(CC) +LT_LINK_LIB=$(LT_LIB) --mode=link $(CC) -rpath $(libdir) +LT_LINK_EXE=$(LT) --mode=link $(CC) $(LT_STATIC_EXEC) -dlopen self -rpath $(bindir) $(DYNAMIC_DIRS) +LT_RUN=$(LT) --mode=execute +LT_INSTALL_PROG=$(LT) --mode=install $(INSTALL_PROGRAM) +LT_INSTALL_LIB=$(LT) --mode=install $(INSTALL_DATA) +LT_UNINSTALL=$(LT) --mode=uninstall $(RM) + +INSTALL=@INSTALL@ +INSTALL_PROGRAM=@INSTALL_PROGRAM@ +INSTALL_DATA=@INSTALL_DATA@ + +# create a symbolic link (or a copie ?) +LN_S=@LN_S@ + +## Installation points +prefix=@prefix@ +exec_prefix=@exec_prefix@ +bindir=@bindir@/salome +libdir=@libdir@/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 + +docdir=${prefix}/doc/salome + +# +# begin of package rules +# + +.PHONY: all lib bin inc resources docs tests install uninstall dep depend depend_idl cleandep mostlyclean clean distclean + +.SUFFIXES: .cxx .cc .c .f .o .lo .idl .py .i .ui .po .qm + +all: + $(MAKE) inc + $(MAKE) depend_idl + $(MAKE) depend + $(MAKE) lib + $(MAKE) bin + $(MAKE) resources + +# +# add target to build administrative files +# + +Makefile: $(top_builddir)/config.status $(srcdir)/Makefile.in + cd $(top_builddir) ; ./config.status + +$(top_builddir)/config.status: $(top_srcdir)/configure + cd $(top_builddir) ; ./config.status --recheck + +# VPATH contain $(srcdir), so make configure is good in top_srcdir and we must add target configure otherwise :-) +ifneq ($(top_srcdir),$(srcdir)) +configure: $(top_srcdir)/configure +endif + +$(top_srcdir)/configure: $(top_srcdir)/configure.in $(top_srcdir)/aclocal.m4 + cd $(top_srcdir) ; autoconf + +$(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 diff --git a/bin/VERSION b/bin/VERSION new file mode 100755 index 000000000..9c664a112 --- /dev/null +++ b/bin/VERSION @@ -0,0 +1 @@ +THIS IS SALOME - SMESH VERSION: 3.1.0 diff --git a/build_configure b/build_configure new file mode 100755 index 000000000..b884b1757 --- /dev/null +++ b/build_configure @@ -0,0 +1,216 @@ +#!/bin/bash + +# +# Tool for updating list of .in file for the SALOME project +# and regenerating configure script +# +# Author : Marc Tajchman - CEA +# Date : 10/10/2002 +# $Header$ +# + +ORIG_DIR=`pwd` +CONF_DIR=`echo $0 | sed -e "s,[^/]*$,,;s,/$,,;s,^$,.,"` + +######################################################################## +# Test if the KERNEL_ROOT_DIR is set correctly + +if test ! -d "${KERNEL_ROOT_DIR}"; then + echo "failed : KERNEL_ROOT_DIR variable is not correct !" + exit +fi + +# Test if the KERNEL_SRC is set correctly + +#if test ! -d "${KERNEL_SRC}"; then +# echo "failed : KERNEL_SRC variable is not correct !" +# exit +#fi +######################################################################## +# find_in - utility function +# +# usage : +# find_in directory filename +# +# Finds files following the *.in pattern, recursively in the +# directory (first argument). +# Results are appended into the file (second argument) +# +# Difference from the standard unix find is that files are tested +# before directories +# + +find_in() +{ + local i + local f=$2 + +# if the first argument is not a directory, returns + + if [ ! -d "$1" ] ; then + return + fi + +# dont look in the CVS directories + + case $1 in + */CVS) return ;; + */adm_local/*) return ;; + *) ;; + esac + +# for each regular file contained in the directory +# test if it's a .in file + + for i in "$1"/* + do + if [ -f "$i" ] ; then + case $i in + *.in) echo " "$i" \\" >> $f;; + *) ;; + esac + fi + done + +# for each subdirectory of the first argument, proceeds recursively + + for i in "$1"/* + do + if [ -d "$i" ] ; then + find_in "$i" "$f" + fi + done +} + + +####################################################################### +# Generate list of .in files (Makefile.in, config.h.in, etc) +# appending it in file configure.in + +cd ${CONF_DIR} +ABS_CONF_DIR=`pwd` + +# +# Common part of the configure.in file +# +chmod u+w configure.in.base +if ! \cp -f configure.in.base configure.in_tmp1 +then + echo + echo "error : can't create files in" ${CONF_DIR} + echo "aborting ..." + chmod u-w configure.in.base + exit +fi +chmod u-w configure.in.base + +if [ -e "${CONF_DIR}/salome_adm" ] ; then + \rm -f ${CONF_DIR}/salome_adm +fi + +# make a link allowing AC_OUTPUT to find the salome_adm/.../*.in files +echo "" >> configure.in_tmp1 +echo 'ln -fs ${KERNEL_ROOT_DIR}/salome_adm ${ROOT_SRCDIR}/.' >> configure.in_tmp1 + +echo "" >> configure.in_tmp1 +echo "AC_OUTPUT([ \\" >> configure.in_tmp1 + +# +# List of .in files in the adm/unix directory +# These files MUST be on top of AC_OUTPUT list so we +# put them "manually" +# + +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 " ./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 " ./salome_adm/unix/make_module \\" >> configure.in_tmp1 + +\rm -f configure.in_tmp2 configure.in_tmp3 +touch configure.in_tmp2 +find_in . configure.in_tmp2 +sed -e '/^...salome_adm/d' configure.in_tmp2 > configure.in_tmp3 +sed -e '/^...adm_local.unix.make_omniorb/d' configure.in_tmp3 > configure.in_tmp2 +sed -e '/^...adm_local.unix.make_commence/d' configure.in_tmp2 > configure.in_tmp3 +sed -e '/configure.in/d' configure.in_tmp3 > configure.in_tmp2 +sed -e 's/.in / /' configure.in_tmp2 >> configure.in_tmp1 +#sed '/^.salome_adm/d' configure.in_tmp2 > configure.in_tmp3 +#sed '/configure.in/d' configure.in_tmp3 > configure.in_tmp2 +#sed 's/.in / /' configure.in_tmp2 >> configure.in_tmp1 + +echo "])" >> configure.in_tmp1 + +# delete the link created for AC_OUTPUT +echo "" >> configure.in_tmp1 +#echo 'rm -f ${ROOT_SRCDIR}/salome_adm' >> configure.in_tmp1 +\mv configure.in_tmp1 configure.in_new +\rm -f configure.in_tmp2 configure.in_tmp3 + + +######################################################################## +# Create new (or replace old) configure.in file +# Print a message if the file is write protected +# + +echo +if test ! -f configure.in +then + echo -n "Creating new file 'configure.in' ... " + if \mv configure.in_new configure.in >& /dev/null + then + echo "done" + else + echo "error, check your file permissions" + fi +else + echo -n "Updating 'configure.in' file ... " + if ! \cp configure.in configure.in_old >& /dev/null + then + echo + echo + echo "Can't backup previous configure.in" + echo -n "Continue (you will not be able to revert) - (Y/N) ? " + read R + case "x$R" in + xn*) exit;; + xN*) exit;; + esac + echo + echo -n " " + fi + if \cp configure.in_new configure.in >& /dev/null + then + echo "done" + else + echo + echo "error, can't update previous configure.in" + fi +fi + +######################################################################## +# Use autoconf to rebuild the configure script +# + +if test -f configure +then + echo -n "Updating 'configure' script ... " +else + echo -n "Creating 'configure' script ... " +fi + +aclocal --acdir=adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files +if autoconf +then + echo "done" +else + echo "failed (check file permissions and/or user quotas ...)" +fi + +cd ${ORIG_DIR} + +echo diff --git a/configure.in.base b/configure.in.base new file mode 100644 index 000000000..d81e49771 --- /dev/null +++ b/configure.in.base @@ -0,0 +1,399 @@ +# +# PLEASE DO NOT MODIFY configure.in FILE +# +# ALL CHANGES WILL BE DISCARDED BY THE NEXT +# build_configure COMMAND +# +# CHANGES MUST BE MADE IN configure.in.base FILE +# +# +# Author : Marc Tajchman (CEA) +# Date : 28/06/2001 +# Modified by : Patrick GOLDBRONN (CEA) +# Modified by : Marc Tajchman (CEA) +# +# Created from configure.in.base +# + +AC_INIT(src) +AC_CONFIG_AUX_DIR(${KERNEL_ROOT_DIR}/salome_adm/unix/config_files) +AC_CANONICAL_HOST + +PACKAGE=salome +AC_SUBST(PACKAGE) + +VERSION=0.0.1 +AC_SUBST(VERSION) + +dnl +dnl Initialize source and build root directories +dnl + +ROOT_BUILDDIR=`pwd` +ROOT_SRCDIR=`echo $0 | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"` +cd $ROOT_SRCDIR +ROOT_SRCDIR=`pwd` +cd $ROOT_BUILDDIR + +AC_SUBST(ROOT_SRCDIR) +AC_SUBST(ROOT_BUILDDIR) + +echo +echo Source root directory : $ROOT_SRCDIR +echo Build root directory : $ROOT_BUILDDIR +echo +echo + +if test -z "$AR"; then + AC_CHECK_PROGS(AR,ar xar,:,$PATH) +fi +AC_SUBST(AR) + +dnl Export the AR macro so that it will be placed in the libtool file +dnl correctly. +export AR + +echo +echo --------------------------------------------- +echo testing make +echo --------------------------------------------- +echo + +AC_PROG_MAKE_SET +AC_PROG_INSTALL +dnl +dnl libtool macro check for CC, LD, NM, LN_S, RANLIB, STRIP + pour les librairies dynamiques ! + +AC_ENABLE_DEBUG(yes) +AC_DISABLE_PRODUCTION + +echo --------------------------------------------- +echo testing libtool +echo --------------------------------------------- + +dnl first, we set static to no! +dnl if we want it, use --enable-static +AC_ENABLE_STATIC(no) + +AC_LIBTOOL_DLOPEN +AC_PROG_LIBTOOL + +dnl Fix up the INSTALL macro if it s a relative path. We want the +dnl full-path to the binary instead. +case "$INSTALL" in + *install-sh*) + INSTALL='\${KERNEL_ROOT_DIR}'/salome_adm/unix/config_files/install-sh + ;; +esac + +echo +echo --------------------------------------------- +echo testing C/C++ +echo --------------------------------------------- +echo + +cc_ok=no +dnl inutil car libtool +dnl AC_PROG_CC +AC_PROG_CXX +AC_DEPEND_FLAG +# AC_CC_WARNINGS([ansi]) +cc_ok=yes + +dnl Library libdl : +AC_CHECK_LIB(dl,dlopen) + +dnl add library libm : +AC_CHECK_LIB(m,ceil) + +dnl +dnl Well we use sstream which is not in gcc pre-2.95.3 +dnl We must test if it exists. If not, add it in include ! +dnl + +AC_CXX_HAVE_SSTREAM + +echo +echo --------------------------------------------- +echo BOOST Library +echo --------------------------------------------- +echo + +CHECK_BOOST + +dnl +dnl --------------------------------------------- +dnl testing MPICH +dnl --------------------------------------------- +dnl + +CHECK_MPICH + +echo +echo --------------------------------------------- +echo testing LEX \& YACC +echo --------------------------------------------- +echo + +lex_yacc_ok=no +AC_PROG_YACC +AC_PROG_LEX +lex_yacc_ok=yes + +echo +echo --------------------------------------------- +echo testing python +echo --------------------------------------------- +echo + +CHECK_PYTHON + +echo +echo --------------------------------------------- +echo Testing qwt +echo --------------------------------------------- +echo + +CHECK_QWT + +dnl echo +dnl echo --------------------------------------------- +dnl echo testing java +dnl echo --------------------------------------------- +dnl echo + +dnl CHECK_JAVA + +echo +echo --------------------------------------------- +echo testing swig +echo --------------------------------------------- +echo + +CHECK_SWIG + +echo +echo --------------------------------------------- +echo testing threads +echo --------------------------------------------- +echo + +ENABLE_PTHREADS + +echo +echo --------------------------------------------- +echo testing omniORB +echo --------------------------------------------- +echo + +CHECK_OMNIORB + +dnl echo +dnl echo --------------------------------------------- +dnl echo testing mico +dnl echo --------------------------------------------- +dnl echo + +dnl CHECK_MICO + +echo +echo --------------------------------------------- +echo default ORB : omniORB +echo --------------------------------------------- +echo + +DEFAULT_ORB=omniORB +CHECK_CORBA + +AC_SUBST_FILE(CORBA) +corba=make_$ORB +CORBA=adm_local/unix/$corba + +echo +echo --------------------------------------------- +echo testing openGL +echo --------------------------------------------- +echo + +CHECK_OPENGL + +echo +echo --------------------------------------------- +echo testing QT +echo --------------------------------------------- +echo + +CHECK_QT + +echo +echo --------------------------------------------- +echo testing MSG2QM +echo --------------------------------------------- +echo + +CHECK_MSG2QM + +echo +echo --------------------------------------------- +echo testing VTK +echo --------------------------------------------- +echo + +CHECK_VTK + +echo +echo --------------------------------------------- +echo testing HDF5 +echo --------------------------------------------- +echo + +CHECK_HDF5 + +echo +echo --------------------------------------------- +echo Testing OpenCascade +echo --------------------------------------------- +echo + +CHECK_CAS + +echo +echo --------------------------------------------- +echo Testing html generators +echo --------------------------------------------- +echo + +CHECK_HTML_GENERATORS + +echo +echo --------------------------------------------- +echo Testing Kernel +echo --------------------------------------------- +echo + +CHECK_KERNEL + +echo +echo --------------------------------------------- +echo Testing Geom +echo --------------------------------------------- +echo + +CHECK_GEOM + +echo +echo --------------------------------------------- +echo Testing Med +echo --------------------------------------------- +echo + +CHECK_MED + +echo +echo --------------------------------------------- +echo Summary +echo --------------------------------------------- +echo + +echo Configure +variables="cc_ok boost_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok omniORB_ok occ_ok doxygen_ok graphviz_ok qwt_ok Kernel_ok Geom_ok Med_ok" + +for var in $variables +do + printf " %10s : " `echo \$var | sed -e "s,_ok,,"` + eval echo \$$var +done + +echo +echo "Default ORB : $DEFAULT_ORB" +echo + +dnl generals files which could be included in every makefile + +AC_SUBST_FILE(COMMENCE) COMMENCE=adm_local/unix/make_commence +AC_SUBST_FILE(CONCLUDE) CONCLUDE=adm_local/unix/make_conclude +AC_SUBST_FILE(MODULE) MODULE=salome_adm/unix/make_module + +dnl les dependences +AC_SUBST_FILE(DEPEND) DEPEND=salome_adm/unix/depend + +dnl We don t need to say when we re entering directories if we re using +dnl GNU make becuase make does it for us. +if test "X$GMAKE" = "Xyes"; then + AC_SUBST(SETX) SETX=":" +else + AC_SUBST(SETX) SETX="set -x" +fi + +# make other build directories +for rep in salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources idl +do +# if test ! -d $rep ; then +# eval mkdir $rep +# fi + $INSTALL -d $rep +done + +echo +echo --------------------------------------------- +echo copying resource files, shell scripts, and +echo xml files +echo --------------------------------------------- +echo + + +dnl copy resources directories + +#for i in `find $ROOT_SRCDIR -name 'resources' -print` +#do +# local_res=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"` +# local_res_dir=`echo $local_res | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"` +# mkdir -p $local_res_dir +# cd $local_res_dir +# ln -fs $i +# echo $local_res +# cd $ROOT_BUILDDIR +#done + +dnl copy shells and utilities contained in the bin directory +dnl excluding .in files (treated in AC-OUTPUT below) and CVS +dnl directory + +mkdir -p bin/salome +cd bin/salome +for i in $ROOT_SRCDIR/bin/* +do + local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"` + case "$local_bin" in + *.in | *~) ;; + ./bin/CVS | ./bin/salome) ;; + *) /usr/bin/install $i .; echo $local_bin ;; + esac +done +cd $ROOT_BUILDDIR + +AC_SUBST_FILE(ENVSCRIPT) ENVSCRIPT=salome_adm/unix/envScript + +dnl copy xml files to the build tree (lib directory) +dnl pourquoi ???? + +#cd lib +#for i in `find $ROOT_SRCDIR -name "*.xml" -print` +#do +# ln -fs $i +# echo `echo $i | sed -e "s,$ROOT_SRCDIR,.,"` +#done +#cd $ROOT_BUILDDIR + + +echo +echo --------------------------------------------- +echo generating Makefiles and configure files +echo --------------------------------------------- +echo + +AC_OUTPUT_COMMANDS([ \ + chmod +x ./bin/* \ +]) + +## do not delete this line diff --git a/doc/salome/Makefile.in b/doc/salome/Makefile.in new file mode 100644 index 000000000..bd9a4eab5 --- /dev/null +++ b/doc/salome/Makefile.in @@ -0,0 +1,44 @@ + +# -* Makefile *- +# +# Author : Patrick GOLDBRONN (CEA) +# Date : 30/11/2001 +# $Header$ +# +# source path +top_srcdir=@top_srcdir@ +top_builddir=../.. +srcdir=@srcdir@ +VPATH=.:@srcdir@ + +SUBDIRS= tui gui + +@COMMENCE@ + +docs: + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done; \ + cp -f $(srcdir)/SMESH_index_v3.1.0.html SMESH_index_v3.1.0.html + +clean: + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + +distclean: clean + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + +install: + $(MAKE) docs + (cd tui && $(MAKE) install); + (cd gui && $(MAKE) install); + cp -f SMESH_index_v3.1.0.html $(docdir) + +uninstall: + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done; \ + rm -fr $(docdir)/SMESH_index_v3.1.0.html diff --git a/doc/salome/SMESH_index_v3.1.0.html b/doc/salome/SMESH_index_v3.1.0.html new file mode 100644 index 000000000..8d4ef121a --- /dev/null +++ b/doc/salome/SMESH_index_v3.1.0.html @@ -0,0 +1,95 @@ + + + + + + + + Mesh Module Documentation + + + +
  +
+
                   +   
+ + + + + + + + + +
+ + + +
+ +
+
+
+

Mesh MODULE Documentation

+
+
+ + + + + +
+
+ +
+

Application-About.png +     

+
+ +
+ + + + +
+
+
+
+
+ +
+ +
GUI Documentation
+ +
+ +
+ +

+
+ +
+ +
TUI Documentation
+ +
+ +
+ +

+
+
+
+
+
+
+ + diff --git a/doc/salome/gui/SMESH/about_viewing_meshes.htm b/doc/salome/gui/SMESH/about_viewing_meshes.htm new file mode 100755 index 000000000..77ef54955 --- /dev/null +++ b/doc/salome/gui/SMESH/about_viewing_meshes.htm @@ -0,0 +1,150 @@ + + + + + +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.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/aspect_ratio_3d.htm b/doc/salome/gui/SMESH/aspect_ratio_3d.htm new file mode 100755 index 000000000..20573a1fd --- /dev/null +++ b/doc/salome/gui/SMESH/aspect_ratio_3d.htm @@ -0,0 +1,163 @@ + + + + + +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.  

+ +

 

+ +

 

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/borders_at_multi-connection.htm b/doc/salome/gui/SMESH/borders_at_multi-connection.htm new file mode 100755 index 000000000..cba301b96 --- /dev/null +++ b/doc/salome/gui/SMESH/borders_at_multi-connection.htm @@ -0,0 +1,115 @@ + + + + + +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.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/borders_at_multiconnection_2d.htm b/doc/salome/gui/SMESH/borders_at_multiconnection_2d.htm new file mode 100755 index 000000000..9587602aa --- /dev/null +++ b/doc/salome/gui/SMESH/borders_at_multiconnection_2d.htm @@ -0,0 +1,110 @@ + + + + + +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 new file mode 100755 index 000000000..8652fd75f --- /dev/null +++ b/doc/salome/gui/SMESH/clipping.htm @@ -0,0 +1,133 @@ + + + + + +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 new file mode 100755 index 000000000..78d8030db --- /dev/null +++ b/doc/salome/gui/SMESH/constructing_meshes.htm @@ -0,0 +1,727 @@ + + + + + +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 new file mode 100755 index 000000000..2e1891e53 --- /dev/null +++ b/doc/salome/gui/SMESH/cshdat_robohelp.htm @@ -0,0 +1,258 @@ + + +SMESH reference manual + + + + + + + + + + + + + + + + + diff --git a/doc/salome/gui/SMESH/cshdat_webhelp.htm b/doc/salome/gui/SMESH/cshdat_webhelp.htm new file mode 100755 index 000000000..2fefa3ad4 --- /dev/null +++ b/doc/salome/gui/SMESH/cshdat_webhelp.htm @@ -0,0 +1,251 @@ + + +SMESH reference manual + + + + + + + + + + + + + + + + + diff --git a/doc/salome/gui/SMESH/default.css b/doc/salome/gui/SMESH/default.css new file mode 100755 index 000000000..de2e5d955 --- /dev/null +++ b/doc/salome/gui/SMESH/default.css @@ -0,0 +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; } diff --git a/doc/salome/gui/SMESH/default_ns.css b/doc/salome/gui/SMESH/default_ns.css new file mode 100755 index 000000000..3eeb3c496 --- /dev/null +++ b/doc/salome/gui/SMESH/default_ns.css @@ -0,0 +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; } diff --git a/doc/salome/gui/SMESH/defining_hypotheses_tui.htm b/doc/salome/gui/SMESH/defining_hypotheses_tui.htm new file mode 100755 index 000000000..581805053 --- /dev/null +++ b/doc/salome/gui/SMESH/defining_hypotheses_tui.htm @@ -0,0 +1,1488 @@ + + + + + +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)

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/deleting_groups.htm b/doc/salome/gui/SMESH/deleting_groups.htm new file mode 100755 index 000000000..85b273571 --- /dev/null +++ b/doc/salome/gui/SMESH/deleting_groups.htm @@ -0,0 +1,114 @@ + + + + + +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 new file mode 100755 index 000000000..8195fc580 --- /dev/null +++ b/doc/salome/gui/SMESH/display_entity.htm @@ -0,0 +1,101 @@ + + + + + +Display Entity + + + + + + + + + + + +

Display Entity

+ +

In this submenu you can choose to display only faces,

+ +

 

+ +

+ +

 

+ +

only edges,

+ +

 

+ +

+ +

 

+ +

or both.

+ + + + diff --git a/doc/salome/gui/SMESH/ehelp.xml b/doc/salome/gui/SMESH/ehelp.xml new file mode 100755 index 000000000..be729a46c --- /dev/null +++ b/doc/salome/gui/SMESH/ehelp.xml @@ -0,0 +1,10 @@ + + + + + + + + WebSearch + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/ehlpdhtm.js b/doc/salome/gui/SMESH/ehlpdhtm.js new file mode 100755 index 000000000..6cfd2e463 --- /dev/null +++ b/doc/salome/gui/SMESH/ehlpdhtm.js @@ -0,0 +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.

+ +

 

+ +

 

+ + +++ + + + +
+

+

+ +

 

+ +
+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/extrusion_along_a_path.htm b/doc/salome/gui/SMESH/extrusion_along_a_path.htm new file mode 100755 index 000000000..1ae2b7b8b --- /dev/null +++ b/doc/salome/gui/SMESH/extrusion_along_a_path.htm @@ -0,0 +1,191 @@ + + + + + +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 new file mode 100755 index 000000000..1ed198145 --- /dev/null +++ b/doc/salome/gui/SMESH/files/about_hypotheses.htm @@ -0,0 +1,203 @@ + + + + + +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)

  • +
+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/about_meshes.htm b/doc/salome/gui/SMESH/files/about_meshes.htm new file mode 100755 index 000000000..d4ba6d835 --- /dev/null +++ b/doc/salome/gui/SMESH/files/about_meshes.htm @@ -0,0 +1,245 @@ + + + + + +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 new file mode 100755 index 000000000..ecc8de1c2 --- /dev/null +++ b/doc/salome/gui/SMESH/files/about_meshing_algorithms.htm @@ -0,0 +1,222 @@ + + + + + +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 new file mode 100755 index 000000000..f52da280f --- /dev/null +++ b/doc/salome/gui/SMESH/files/about_quality_controls.htm @@ -0,0 +1,168 @@ + + + + + +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 new file mode 100755 index 000000000..420454e40 --- /dev/null +++ b/doc/salome/gui/SMESH/files/adding_nodes_and_elements.htm @@ -0,0 +1,291 @@ + + + + + +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.

+ +

 

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/area_of_elements.htm b/doc/salome/gui/SMESH/files/area_of_elements.htm new file mode 100755 index 000000000..d92aa5ef3 --- /dev/null +++ b/doc/salome/gui/SMESH/files/area_of_elements.htm @@ -0,0 +1,133 @@ + + + + + +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 new file mode 100755 index 000000000..ead4f03b7 --- /dev/null +++ b/doc/salome/gui/SMESH/files/arithmetic_1d.htm @@ -0,0 +1,254 @@ + + + + + +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.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/aspect_ratio.htm b/doc/salome/gui/SMESH/files/aspect_ratio.htm new file mode 100755 index 000000000..37b4dea75 --- /dev/null +++ b/doc/salome/gui/SMESH/files/aspect_ratio.htm @@ -0,0 +1,164 @@ + + + + + +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.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/changing_orientation_of_elements.htm b/doc/salome/gui/SMESH/files/changing_orientation_of_elements.htm new file mode 100755 index 000000000..fa7317e1d --- /dev/null +++ b/doc/salome/gui/SMESH/files/changing_orientation_of_elements.htm @@ -0,0 +1,148 @@ + + + + + +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.

+ +

 

+ + + + 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 new file mode 100755 index 000000000..db59e9e80 --- /dev/null +++ b/doc/salome/gui/SMESH/files/constructing_groups_of_specific_elements.htm @@ -0,0 +1,98 @@ + + + + + +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 new file mode 100755 index 000000000..481c03285 --- /dev/null +++ b/doc/salome/gui/SMESH/files/constructing_meshes.htm @@ -0,0 +1,206 @@ + + + + + +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.

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/constructing_submeshes.htm b/doc/salome/gui/SMESH/files/constructing_submeshes.htm new file mode 100755 index 000000000..e09d47b80 --- /dev/null +++ b/doc/salome/gui/SMESH/files/constructing_submeshes.htm @@ -0,0 +1,172 @@ + + + + + +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.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/creating_groups.htm b/doc/salome/gui/SMESH/files/creating_groups.htm new file mode 100755 index 000000000..1a41ccd0b --- /dev/null +++ b/doc/salome/gui/SMESH/files/creating_groups.htm @@ -0,0 +1,269 @@ + + + + + +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. +  

+ +

 

+ +

 

+ +

 

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/cutting_quadrangles.htm b/doc/salome/gui/SMESH/files/cutting_quadrangles.htm new file mode 100755 index 000000000..d9b1e31e6 --- /dev/null +++ b/doc/salome/gui/SMESH/files/cutting_quadrangles.htm @@ -0,0 +1,194 @@ + + + + + +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.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/diagonal_iversion_of_elements.htm b/doc/salome/gui/SMESH/files/diagonal_iversion_of_elements.htm new file mode 100755 index 000000000..871430041 --- /dev/null +++ b/doc/salome/gui/SMESH/files/diagonal_iversion_of_elements.htm @@ -0,0 +1,144 @@ + + + + + +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 new file mode 100755 index 000000000..f90a4085c --- /dev/null +++ b/doc/salome/gui/SMESH/files/displacing_nodes.htm @@ -0,0 +1,165 @@ + + + + + +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 new file mode 100755 index 000000000..4f450b7dd --- /dev/null +++ b/doc/salome/gui/SMESH/files/displaying_nodes_numbers.htm @@ -0,0 +1,154 @@ + + + + + +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 new file mode 100755 index 000000000..505cdd9b5 --- /dev/null +++ b/doc/salome/gui/SMESH/files/editing_groups.htm @@ -0,0 +1,131 @@ + + + + + +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.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/importing_and_exporting_meshes.htm b/doc/salome/gui/SMESH/files/importing_and_exporting_meshes.htm new file mode 100755 index 000000000..6b3ecf015 --- /dev/null +++ b/doc/salome/gui/SMESH/files/importing_and_exporting_meshes.htm @@ -0,0 +1,152 @@ + + + + + +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 new file mode 100755 index 000000000..4bdc32545 --- /dev/null +++ b/doc/salome/gui/SMESH/files/introduction_to_smesh.htm @@ -0,0 +1,195 @@ + + + + + +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 new file mode 100755 index 000000000..4238a5cf4 --- /dev/null +++ b/doc/salome/gui/SMESH/files/length_of_edges.htm @@ -0,0 +1,132 @@ + + + + + +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 new file mode 100755 index 000000000..e329aab17 --- /dev/null +++ b/doc/salome/gui/SMESH/files/max._element_area_hypothesis.htm @@ -0,0 +1,120 @@ + + + + + +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.  

+ +

 

+ +

+ + + + diff --git a/doc/salome/gui/SMESH/files/max._element_volume_hypothsis.htm b/doc/salome/gui/SMESH/files/max._element_volume_hypothsis.htm new file mode 100755 index 000000000..08e40aa0a --- /dev/null +++ b/doc/salome/gui/SMESH/files/max._element_volume_hypothsis.htm @@ -0,0 +1,116 @@ + + + + + +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 new file mode 100755 index 000000000..fd010796e --- /dev/null +++ b/doc/salome/gui/SMESH/files/merging_nodes.htm @@ -0,0 +1,126 @@ + + + + + +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.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/minimum_angle.htm b/doc/salome/gui/SMESH/files/minimum_angle.htm new file mode 100755 index 000000000..b63188d79 --- /dev/null +++ b/doc/salome/gui/SMESH/files/minimum_angle.htm @@ -0,0 +1,129 @@ + + + + + +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 new file mode 100755 index 000000000..4704610d0 --- /dev/null +++ b/doc/salome/gui/SMESH/files/non_conform_mesh_allowed_hypothesis.htm @@ -0,0 +1,148 @@ + + + + + +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.  

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/reassigning_hypotheses_and_algorithms.htm b/doc/salome/gui/SMESH/files/reassigning_hypotheses_and_algorithms.htm new file mode 100755 index 000000000..0de684dc9 --- /dev/null +++ b/doc/salome/gui/SMESH/files/reassigning_hypotheses_and_algorithms.htm @@ -0,0 +1,141 @@ + + + + + +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 new file mode 100755 index 000000000..2a5b82210 --- /dev/null +++ b/doc/salome/gui/SMESH/files/removing_nodes_and_elements.htm @@ -0,0 +1,223 @@ + + + + + +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.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/renumbering_nodes_and_elements.htm b/doc/salome/gui/SMESH/files/renumbering_nodes_and_elements.htm new file mode 100755 index 000000000..49b0b0339 --- /dev/null +++ b/doc/salome/gui/SMESH/files/renumbering_nodes_and_elements.htm @@ -0,0 +1,156 @@ + + + + + +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. +  

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/rotation.htm b/doc/salome/gui/SMESH/files/rotation.htm new file mode 100755 index 000000000..ea4fcd6f8 --- /dev/null +++ b/doc/salome/gui/SMESH/files/rotation.htm @@ -0,0 +1,137 @@ + + + + + +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 new file mode 100755 index 000000000..735b385ff --- /dev/null +++ b/doc/salome/gui/SMESH/files/running_smesh_module.htm @@ -0,0 +1,106 @@ + + + + + +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 new file mode 100755 index 000000000..c281f9e76 --- /dev/null +++ b/doc/salome/gui/SMESH/files/sewing_meshes.htm @@ -0,0 +1,337 @@ + + + + + +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 new file mode 100755 index 000000000..f6280e38a --- /dev/null +++ b/doc/salome/gui/SMESH/files/skew.htm @@ -0,0 +1,140 @@ + + + + + +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 new file mode 100755 index 000000000..6cab53dbd --- /dev/null +++ b/doc/salome/gui/SMESH/files/smoothing.htm @@ -0,0 +1,190 @@ + + + + + +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.  

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/symmetry.htm b/doc/salome/gui/SMESH/files/symmetry.htm new file mode 100755 index 000000000..d8f8a43d5 --- /dev/null +++ b/doc/salome/gui/SMESH/files/symmetry.htm @@ -0,0 +1,142 @@ + + + + + +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 new file mode 100755 index 000000000..9b296b2e8 --- /dev/null +++ b/doc/salome/gui/SMESH/files/taper.htm @@ -0,0 +1,134 @@ + + + + + +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 new file mode 100755 index 000000000..a07237880 --- /dev/null +++ b/doc/salome/gui/SMESH/files/translation.htm @@ -0,0 +1,132 @@ + + + + + +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 new file mode 100755 index 000000000..d625b7ecc --- /dev/null +++ b/doc/salome/gui/SMESH/files/uniting_a_set_of_triangles.htm @@ -0,0 +1,182 @@ + + + + + +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 new file mode 100755 index 000000000..98ad79f5b --- /dev/null +++ b/doc/salome/gui/SMESH/files/uniting_two_triangles.htm @@ -0,0 +1,146 @@ + + + + + +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 new file mode 100755 index 000000000..622120a22 --- /dev/null +++ b/doc/salome/gui/SMESH/files/using_operations_on_groups.htm @@ -0,0 +1,310 @@ + + + + + +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 new file mode 100755 index 000000000..a2beb2ab5 --- /dev/null +++ b/doc/salome/gui/SMESH/files/viewing_mesh_info.htm @@ -0,0 +1,164 @@ + + + + + +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.

+ +

 

+ +

+ +

 

+ +

 

+ +

 

+ +

 

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/warp.htm b/doc/salome/gui/SMESH/files/warp.htm new file mode 100755 index 000000000..acc2afc6f --- /dev/null +++ b/doc/salome/gui/SMESH/files/warp.htm @@ -0,0 +1,151 @@ + + + + + +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 new file mode 100755 index 000000000..ebfcb53d4 --- /dev/null +++ b/doc/salome/gui/SMESH/free_borders.htm @@ -0,0 +1,114 @@ + + + + + +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 new file mode 100755 index 000000000..fa4374670 --- /dev/null +++ b/doc/salome/gui/SMESH/free_edges.htm @@ -0,0 +1,117 @@ + + + + + +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 new file mode 100755 index 000000000..b3f7985c8 --- /dev/null +++ b/doc/salome/gui/SMESH/grouping_elements.htm @@ -0,0 +1,1078 @@ + + + + + +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) +

+ +

 

+ +

   

+ + + + diff --git a/doc/salome/gui/SMESH/image10.jpg b/doc/salome/gui/SMESH/image10.jpg new file mode 100755 index 000000000..5a15643bb Binary files /dev/null and b/doc/salome/gui/SMESH/image10.jpg differ diff --git a/doc/salome/gui/SMESH/image101.gif b/doc/salome/gui/SMESH/image101.gif new file mode 100755 index 000000000..b761fec72 Binary files /dev/null and b/doc/salome/gui/SMESH/image101.gif differ diff --git a/doc/salome/gui/SMESH/image102.gif b/doc/salome/gui/SMESH/image102.gif new file mode 100755 index 000000000..be6a58286 Binary files /dev/null and b/doc/salome/gui/SMESH/image102.gif differ diff --git a/doc/salome/gui/SMESH/image103.gif b/doc/salome/gui/SMESH/image103.gif new file mode 100755 index 000000000..f3d6951da Binary files /dev/null and b/doc/salome/gui/SMESH/image103.gif differ diff --git a/doc/salome/gui/SMESH/image104.gif b/doc/salome/gui/SMESH/image104.gif new file mode 100755 index 000000000..3c33feee7 Binary files /dev/null and b/doc/salome/gui/SMESH/image104.gif differ diff --git a/doc/salome/gui/SMESH/image105.gif b/doc/salome/gui/SMESH/image105.gif new file mode 100755 index 000000000..0f7454573 Binary files /dev/null and b/doc/salome/gui/SMESH/image105.gif differ diff --git a/doc/salome/gui/SMESH/image106.gif b/doc/salome/gui/SMESH/image106.gif new file mode 100755 index 000000000..71bda2e9a Binary files /dev/null and b/doc/salome/gui/SMESH/image106.gif differ diff --git a/doc/salome/gui/SMESH/image108.gif b/doc/salome/gui/SMESH/image108.gif new file mode 100755 index 000000000..5f0ed45b4 Binary files /dev/null and b/doc/salome/gui/SMESH/image108.gif differ diff --git a/doc/salome/gui/SMESH/image119.gif b/doc/salome/gui/SMESH/image119.gif new file mode 100755 index 000000000..5294d844d Binary files /dev/null and b/doc/salome/gui/SMESH/image119.gif differ diff --git a/doc/salome/gui/SMESH/image120.gif b/doc/salome/gui/SMESH/image120.gif new file mode 100755 index 000000000..18ddeca6d Binary files /dev/null and b/doc/salome/gui/SMESH/image120.gif differ diff --git a/doc/salome/gui/SMESH/image121.gif b/doc/salome/gui/SMESH/image121.gif new file mode 100755 index 000000000..7a2ffd66c Binary files /dev/null and b/doc/salome/gui/SMESH/image121.gif differ diff --git a/doc/salome/gui/SMESH/image122.gif b/doc/salome/gui/SMESH/image122.gif new file mode 100755 index 000000000..207d30b97 Binary files /dev/null and b/doc/salome/gui/SMESH/image122.gif differ diff --git a/doc/salome/gui/SMESH/image123.gif b/doc/salome/gui/SMESH/image123.gif new file mode 100755 index 000000000..2780e70d4 Binary files /dev/null and b/doc/salome/gui/SMESH/image123.gif differ diff --git a/doc/salome/gui/SMESH/image124.gif b/doc/salome/gui/SMESH/image124.gif new file mode 100755 index 000000000..98f0c40b6 Binary files /dev/null and b/doc/salome/gui/SMESH/image124.gif differ diff --git a/doc/salome/gui/SMESH/image125.gif b/doc/salome/gui/SMESH/image125.gif new file mode 100755 index 000000000..198351307 Binary files /dev/null and b/doc/salome/gui/SMESH/image125.gif differ diff --git a/doc/salome/gui/SMESH/image126.gif b/doc/salome/gui/SMESH/image126.gif new file mode 100755 index 000000000..e2e695519 Binary files /dev/null and b/doc/salome/gui/SMESH/image126.gif differ diff --git a/doc/salome/gui/SMESH/image127.gif b/doc/salome/gui/SMESH/image127.gif new file mode 100755 index 000000000..79bccc66f Binary files /dev/null and b/doc/salome/gui/SMESH/image127.gif differ diff --git a/doc/salome/gui/SMESH/image129.gif b/doc/salome/gui/SMESH/image129.gif new file mode 100755 index 000000000..c3d2c60cf Binary files /dev/null and b/doc/salome/gui/SMESH/image129.gif differ diff --git a/doc/salome/gui/SMESH/image130.gif b/doc/salome/gui/SMESH/image130.gif new file mode 100755 index 000000000..cc8c3a5e1 Binary files /dev/null and b/doc/salome/gui/SMESH/image130.gif differ diff --git a/doc/salome/gui/SMESH/image131.gif b/doc/salome/gui/SMESH/image131.gif new file mode 100755 index 000000000..8ca3453fd Binary files /dev/null and b/doc/salome/gui/SMESH/image131.gif differ diff --git a/doc/salome/gui/SMESH/image132.gif b/doc/salome/gui/SMESH/image132.gif new file mode 100755 index 000000000..e7577ea7c Binary files /dev/null and b/doc/salome/gui/SMESH/image132.gif differ diff --git a/doc/salome/gui/SMESH/image133.gif b/doc/salome/gui/SMESH/image133.gif new file mode 100755 index 000000000..60a4b9605 Binary files /dev/null and b/doc/salome/gui/SMESH/image133.gif differ diff --git a/doc/salome/gui/SMESH/image134.gif b/doc/salome/gui/SMESH/image134.gif new file mode 100755 index 000000000..60148bab7 Binary files /dev/null and b/doc/salome/gui/SMESH/image134.gif differ diff --git a/doc/salome/gui/SMESH/image135.gif b/doc/salome/gui/SMESH/image135.gif new file mode 100755 index 000000000..13b7b089b Binary files /dev/null and b/doc/salome/gui/SMESH/image135.gif differ diff --git a/doc/salome/gui/SMESH/image136.gif b/doc/salome/gui/SMESH/image136.gif new file mode 100755 index 000000000..9b17450fc Binary files /dev/null and b/doc/salome/gui/SMESH/image136.gif differ diff --git a/doc/salome/gui/SMESH/image137.gif b/doc/salome/gui/SMESH/image137.gif new file mode 100755 index 000000000..7f4cd13fe Binary files /dev/null and b/doc/salome/gui/SMESH/image137.gif differ diff --git a/doc/salome/gui/SMESH/image138.gif b/doc/salome/gui/SMESH/image138.gif new file mode 100644 index 000000000..1659aab9f Binary files /dev/null and b/doc/salome/gui/SMESH/image138.gif differ diff --git a/doc/salome/gui/SMESH/image139.gif b/doc/salome/gui/SMESH/image139.gif new file mode 100644 index 000000000..03943831c Binary files /dev/null and b/doc/salome/gui/SMESH/image139.gif differ diff --git a/doc/salome/gui/SMESH/image18.gif b/doc/salome/gui/SMESH/image18.gif new file mode 100755 index 000000000..a5ae8d8fc Binary files /dev/null and b/doc/salome/gui/SMESH/image18.gif differ diff --git a/doc/salome/gui/SMESH/image19.gif b/doc/salome/gui/SMESH/image19.gif new file mode 100755 index 000000000..3cf748a52 Binary files /dev/null and b/doc/salome/gui/SMESH/image19.gif differ diff --git a/doc/salome/gui/SMESH/image19.jpg b/doc/salome/gui/SMESH/image19.jpg new file mode 100755 index 000000000..f5c63956a Binary files /dev/null and b/doc/salome/gui/SMESH/image19.jpg differ diff --git a/doc/salome/gui/SMESH/image20.gif b/doc/salome/gui/SMESH/image20.gif new file mode 100755 index 000000000..5417f896b Binary files /dev/null and b/doc/salome/gui/SMESH/image20.gif differ diff --git a/doc/salome/gui/SMESH/image21.gif b/doc/salome/gui/SMESH/image21.gif new file mode 100755 index 000000000..5dbd12184 Binary files /dev/null and b/doc/salome/gui/SMESH/image21.gif differ diff --git a/doc/salome/gui/SMESH/image23.gif b/doc/salome/gui/SMESH/image23.gif new file mode 100755 index 000000000..5a1216dc6 Binary files /dev/null and b/doc/salome/gui/SMESH/image23.gif differ diff --git a/doc/salome/gui/SMESH/image27.gif b/doc/salome/gui/SMESH/image27.gif new file mode 100755 index 000000000..6c8485ca9 Binary files /dev/null and b/doc/salome/gui/SMESH/image27.gif differ diff --git a/doc/salome/gui/SMESH/image30.gif b/doc/salome/gui/SMESH/image30.gif new file mode 100755 index 000000000..55859c763 Binary files /dev/null and b/doc/salome/gui/SMESH/image30.gif differ diff --git a/doc/salome/gui/SMESH/image37.jpg b/doc/salome/gui/SMESH/image37.jpg new file mode 100755 index 000000000..5fba91a2f Binary files /dev/null and b/doc/salome/gui/SMESH/image37.jpg differ diff --git a/doc/salome/gui/SMESH/image49.gif b/doc/salome/gui/SMESH/image49.gif new file mode 100755 index 000000000..d10d9c4df Binary files /dev/null and b/doc/salome/gui/SMESH/image49.gif differ diff --git a/doc/salome/gui/SMESH/image5.jpg b/doc/salome/gui/SMESH/image5.jpg new file mode 100755 index 000000000..f195ac88a Binary files /dev/null and b/doc/salome/gui/SMESH/image5.jpg differ diff --git a/doc/salome/gui/SMESH/image50.gif b/doc/salome/gui/SMESH/image50.gif new file mode 100755 index 000000000..72d39545a Binary files /dev/null and b/doc/salome/gui/SMESH/image50.gif differ diff --git a/doc/salome/gui/SMESH/image53.gif b/doc/salome/gui/SMESH/image53.gif new file mode 100755 index 000000000..8f728207f Binary files /dev/null and b/doc/salome/gui/SMESH/image53.gif differ diff --git a/doc/salome/gui/SMESH/image55.gif b/doc/salome/gui/SMESH/image55.gif new file mode 100755 index 000000000..cc1b80e48 Binary files /dev/null and b/doc/salome/gui/SMESH/image55.gif differ diff --git a/doc/salome/gui/SMESH/image56.gif b/doc/salome/gui/SMESH/image56.gif new file mode 100755 index 000000000..ffe1e9521 Binary files /dev/null and b/doc/salome/gui/SMESH/image56.gif differ diff --git a/doc/salome/gui/SMESH/image56.jpg b/doc/salome/gui/SMESH/image56.jpg new file mode 100755 index 000000000..5fba91a2f Binary files /dev/null and b/doc/salome/gui/SMESH/image56.jpg differ diff --git a/doc/salome/gui/SMESH/image58.gif b/doc/salome/gui/SMESH/image58.gif new file mode 100755 index 000000000..45e28568e Binary files /dev/null and b/doc/salome/gui/SMESH/image58.gif differ diff --git a/doc/salome/gui/SMESH/image7.jpg b/doc/salome/gui/SMESH/image7.jpg new file mode 100755 index 000000000..cbd6170ee Binary files /dev/null and b/doc/salome/gui/SMESH/image7.jpg differ diff --git a/doc/salome/gui/SMESH/image79.jpg b/doc/salome/gui/SMESH/image79.jpg new file mode 100755 index 000000000..6d164167f Binary files /dev/null and b/doc/salome/gui/SMESH/image79.jpg differ diff --git a/doc/salome/gui/SMESH/image86.jpg b/doc/salome/gui/SMESH/image86.jpg new file mode 100755 index 000000000..168b43e2c Binary files /dev/null and b/doc/salome/gui/SMESH/image86.jpg differ diff --git a/doc/salome/gui/SMESH/image88.jpg b/doc/salome/gui/SMESH/image88.jpg new file mode 100755 index 000000000..3b2a9739c Binary files /dev/null and b/doc/salome/gui/SMESH/image88.jpg differ diff --git a/doc/salome/gui/SMESH/image90.jpg b/doc/salome/gui/SMESH/image90.jpg new file mode 100755 index 000000000..4f4c301d4 Binary files /dev/null and b/doc/salome/gui/SMESH/image90.jpg differ diff --git a/doc/salome/gui/SMESH/image92.jpg b/doc/salome/gui/SMESH/image92.jpg new file mode 100755 index 000000000..bf6e61049 Binary files /dev/null and b/doc/salome/gui/SMESH/image92.jpg differ diff --git a/doc/salome/gui/SMESH/image93.jpg b/doc/salome/gui/SMESH/image93.jpg new file mode 100755 index 000000000..f9780b4ba Binary files /dev/null and b/doc/salome/gui/SMESH/image93.jpg differ diff --git a/doc/salome/gui/SMESH/image94.jpg b/doc/salome/gui/SMESH/image94.jpg new file mode 100755 index 000000000..789166734 Binary files /dev/null and b/doc/salome/gui/SMESH/image94.jpg differ diff --git a/doc/salome/gui/SMESH/image95.jpg b/doc/salome/gui/SMESH/image95.jpg new file mode 100755 index 000000000..047dccf64 Binary files /dev/null and b/doc/salome/gui/SMESH/image95.jpg differ diff --git a/doc/salome/gui/SMESH/image96.jpg b/doc/salome/gui/SMESH/image96.jpg new file mode 100755 index 000000000..5f3128eb9 Binary files /dev/null and b/doc/salome/gui/SMESH/image96.jpg differ diff --git a/doc/salome/gui/SMESH/image97.jpg b/doc/salome/gui/SMESH/image97.jpg new file mode 100755 index 000000000..275f2e396 Binary files /dev/null and b/doc/salome/gui/SMESH/image97.jpg differ diff --git a/doc/salome/gui/SMESH/image99.gif b/doc/salome/gui/SMESH/image99.gif new file mode 100755 index 000000000..4959ed825 Binary files /dev/null and b/doc/salome/gui/SMESH/image99.gif differ diff --git a/doc/salome/gui/SMESH/length.htm b/doc/salome/gui/SMESH/length.htm new file mode 100755 index 000000000..ea7c01310 --- /dev/null +++ b/doc/salome/gui/SMESH/length.htm @@ -0,0 +1,112 @@ + + + + + +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/modifying_meshes.htm b/doc/salome/gui/SMESH/modifying_meshes.htm new file mode 100755 index 000000000..8ba2b742c --- /dev/null +++ b/doc/salome/gui/SMESH/modifying_meshes.htm @@ -0,0 +1,1085 @@ + + + + + +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) +

+ + + + diff --git a/doc/salome/gui/SMESH/pattern_mapping.htm b/doc/salome/gui/SMESH/pattern_mapping.htm new file mode 100755 index 000000000..bc8b8a03b --- /dev/null +++ b/doc/salome/gui/SMESH/pattern_mapping.htm @@ -0,0 +1,298 @@ + + + + + +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.

+ +

 

+ +

+ + + + diff --git a/doc/salome/gui/SMESH/pics/a-advmeshinfo.png b/doc/salome/gui/SMESH/pics/a-advmeshinfo.png new file mode 100755 index 000000000..41aa28b3a Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-advmeshinfo.png differ diff --git a/doc/salome/gui/SMESH/pics/a-arithmetic1d.png b/doc/salome/gui/SMESH/pics/a-arithmetic1d.png new file mode 100755 index 000000000..d34a5e24c Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-arithmetic1d.png differ diff --git a/doc/salome/gui/SMESH/pics/a-averagelength.png b/doc/salome/gui/SMESH/pics/a-averagelength.png new file mode 100755 index 000000000..dc007eb57 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-averagelength.png differ diff --git a/doc/salome/gui/SMESH/pics/a-clipping2.png b/doc/salome/gui/SMESH/pics/a-clipping2.png new file mode 100755 index 000000000..639792ca3 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-clipping2.png differ diff --git a/doc/salome/gui/SMESH/pics/a-creategroup.png b/doc/salome/gui/SMESH/pics/a-creategroup.png new file mode 100755 index 000000000..38ef5a856 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-creategroup.png differ diff --git a/doc/salome/gui/SMESH/pics/a-createmesh1.png b/doc/salome/gui/SMESH/pics/a-createmesh1.png new file mode 100755 index 000000000..026c88d21 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-createmesh1.png differ diff --git a/doc/salome/gui/SMESH/pics/a-createpolyhedralvolume.png b/doc/salome/gui/SMESH/pics/a-createpolyhedralvolume.png new file mode 100755 index 000000000..532eac08f Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-createpolyhedralvolume.png differ diff --git a/doc/salome/gui/SMESH/pics/a-cuttingofquadrangles.png b/doc/salome/gui/SMESH/pics/a-cuttingofquadrangles.png new file mode 100755 index 000000000..ff9ae68e1 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-cuttingofquadrangles.png differ diff --git a/doc/salome/gui/SMESH/pics/a-deflection1d.png b/doc/salome/gui/SMESH/pics/a-deflection1d.png new file mode 100755 index 000000000..57fd8597a Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-deflection1d.png differ diff --git a/doc/salome/gui/SMESH/pics/a-editmesh.png b/doc/salome/gui/SMESH/pics/a-editmesh.png new file mode 100755 index 000000000..f5da15a2d Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-editmesh.png differ diff --git a/doc/salome/gui/SMESH/pics/a-exportmesh.png b/doc/salome/gui/SMESH/pics/a-exportmesh.png new file mode 100755 index 000000000..0c24b1290 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-exportmesh.png differ diff --git a/doc/salome/gui/SMESH/pics/a-extusionalongapath2.png b/doc/salome/gui/SMESH/pics/a-extusionalongapath2.png new file mode 100755 index 000000000..f120fc3c0 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-extusionalongapath2.png differ diff --git a/doc/salome/gui/SMESH/pics/a-filteronedges.png b/doc/salome/gui/SMESH/pics/a-filteronedges.png new file mode 100755 index 000000000..48b3ece01 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-filteronedges.png differ diff --git a/doc/salome/gui/SMESH/pics/a-maxelarea.png b/doc/salome/gui/SMESH/pics/a-maxelarea.png new file mode 100755 index 000000000..b4af4b23f Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-maxelarea.png differ diff --git a/doc/salome/gui/SMESH/pics/a-maxelvolume.png b/doc/salome/gui/SMESH/pics/a-maxelvolume.png new file mode 100755 index 000000000..2611807fd Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-maxelvolume.png differ diff --git a/doc/salome/gui/SMESH/pics/a-nbsegments1.png b/doc/salome/gui/SMESH/pics/a-nbsegments1.png new file mode 100755 index 000000000..35c09094d Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-nbsegments1.png differ diff --git a/doc/salome/gui/SMESH/pics/a-nbsegments2.png b/doc/salome/gui/SMESH/pics/a-nbsegments2.png new file mode 100755 index 000000000..7f33c61ff Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-nbsegments2.png differ diff --git a/doc/salome/gui/SMESH/pics/a-nbsegments3.png b/doc/salome/gui/SMESH/pics/a-nbsegments3.png new file mode 100755 index 000000000..a21648267 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-nbsegments3.png differ diff --git a/doc/salome/gui/SMESH/pics/a-nbsegments4.png b/doc/salome/gui/SMESH/pics/a-nbsegments4.png new file mode 100755 index 000000000..ebad8cd73 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-nbsegments4.png differ diff --git a/doc/salome/gui/SMESH/pics/a-patterntype.png b/doc/salome/gui/SMESH/pics/a-patterntype.png new file mode 100755 index 000000000..3383cd75e Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-patterntype.png differ diff --git a/doc/salome/gui/SMESH/pics/a-patterntype1.png b/doc/salome/gui/SMESH/pics/a-patterntype1.png new file mode 100755 index 000000000..38449225a Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-patterntype1.png differ diff --git a/doc/salome/gui/SMESH/pics/a-standmeshinfo.png b/doc/salome/gui/SMESH/pics/a-standmeshinfo.png new file mode 100755 index 000000000..6b35f0a99 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-standmeshinfo.png differ diff --git a/doc/salome/gui/SMESH/pics/a-startendlength.png b/doc/salome/gui/SMESH/pics/a-startendlength.png new file mode 100755 index 000000000..e48f617d2 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-startendlength.png differ diff --git a/doc/salome/gui/SMESH/pics/a-transparency.png b/doc/salome/gui/SMESH/pics/a-transparency.png new file mode 100755 index 000000000..8e7498d58 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-transparency.png differ diff --git a/doc/salome/gui/SMESH/pics/a-unionoftriangles.png b/doc/salome/gui/SMESH/pics/a-unionoftriangles.png new file mode 100755 index 000000000..d9ef53c11 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-unionoftriangles.png differ diff --git a/doc/salome/gui/SMESH/pics/a-viewgeneral.png b/doc/salome/gui/SMESH/pics/a-viewgeneral.png new file mode 100755 index 000000000..09b7c2391 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/a-viewgeneral.png differ diff --git a/doc/salome/gui/SMESH/pics/add_edge.png b/doc/salome/gui/SMESH/pics/add_edge.png new file mode 100755 index 000000000..8a532e1d9 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/add_edge.png differ diff --git a/doc/salome/gui/SMESH/pics/add_node.png b/doc/salome/gui/SMESH/pics/add_node.png new file mode 100755 index 000000000..cb50bf6e6 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/add_node.png differ diff --git a/doc/salome/gui/SMESH/pics/add_polygone.png b/doc/salome/gui/SMESH/pics/add_polygone.png new file mode 100755 index 000000000..a76baceae Binary files /dev/null and b/doc/salome/gui/SMESH/pics/add_polygone.png differ diff --git a/doc/salome/gui/SMESH/pics/add_polyhedron.png b/doc/salome/gui/SMESH/pics/add_polyhedron.png new file mode 100755 index 000000000..2e23634c9 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/add_polyhedron.png differ diff --git a/doc/salome/gui/SMESH/pics/add_quadrangle.png b/doc/salome/gui/SMESH/pics/add_quadrangle.png new file mode 100755 index 000000000..f25b94d9f Binary files /dev/null and b/doc/salome/gui/SMESH/pics/add_quadrangle.png differ diff --git a/doc/salome/gui/SMESH/pics/add_triangle.png b/doc/salome/gui/SMESH/pics/add_triangle.png new file mode 100755 index 000000000..41c335929 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/add_triangle.png differ diff --git a/doc/salome/gui/SMESH/pics/addedge.png b/doc/salome/gui/SMESH/pics/addedge.png new file mode 100755 index 000000000..c9eeaf970 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/addedge.png differ diff --git a/doc/salome/gui/SMESH/pics/addhexahedron.png b/doc/salome/gui/SMESH/pics/addhexahedron.png new file mode 100755 index 000000000..fd2ef245a Binary files /dev/null and b/doc/salome/gui/SMESH/pics/addhexahedron.png differ diff --git a/doc/salome/gui/SMESH/pics/addnode.png b/doc/salome/gui/SMESH/pics/addnode.png new file mode 100755 index 000000000..167a966b8 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/addnode.png differ diff --git a/doc/salome/gui/SMESH/pics/addpolygon.png b/doc/salome/gui/SMESH/pics/addpolygon.png new file mode 100755 index 000000000..785a62341 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/addpolygon.png differ diff --git a/doc/salome/gui/SMESH/pics/addquadrangle.png b/doc/salome/gui/SMESH/pics/addquadrangle.png new file mode 100755 index 000000000..2bbddf158 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/addquadrangle.png differ diff --git a/doc/salome/gui/SMESH/pics/addtetrahedron.png b/doc/salome/gui/SMESH/pics/addtetrahedron.png new file mode 100755 index 000000000..0a415707a Binary files /dev/null and b/doc/salome/gui/SMESH/pics/addtetrahedron.png differ diff --git a/doc/salome/gui/SMESH/pics/addtriangle.png b/doc/salome/gui/SMESH/pics/addtriangle.png new file mode 100755 index 000000000..405d6f57f Binary files /dev/null and b/doc/salome/gui/SMESH/pics/addtriangle.png differ diff --git a/doc/salome/gui/SMESH/pics/b-art_end_length.png b/doc/salome/gui/SMESH/pics/b-art_end_length.png new file mode 100755 index 000000000..26da5fa73 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/b-art_end_length.png differ diff --git a/doc/salome/gui/SMESH/pics/b-create_group.png b/doc/salome/gui/SMESH/pics/b-create_group.png new file mode 100755 index 000000000..6fc2367b3 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/b-create_group.png differ diff --git a/doc/salome/gui/SMESH/pics/b-erage_length.png b/doc/salome/gui/SMESH/pics/b-erage_length.png new file mode 100755 index 000000000..f64077c90 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/b-erage_length.png differ diff --git a/doc/salome/gui/SMESH/pics/b-flection1d.png b/doc/salome/gui/SMESH/pics/b-flection1d.png new file mode 100755 index 000000000..e160cf55d Binary files /dev/null and b/doc/salome/gui/SMESH/pics/b-flection1d.png differ diff --git a/doc/salome/gui/SMESH/pics/b-ithmetic1d.png b/doc/salome/gui/SMESH/pics/b-ithmetic1d.png new file mode 100755 index 000000000..72f76b951 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/b-ithmetic1d.png differ diff --git a/doc/salome/gui/SMESH/pics/b-mberofsegments.png b/doc/salome/gui/SMESH/pics/b-mberofsegments.png new file mode 100755 index 000000000..27f68685e Binary files /dev/null and b/doc/salome/gui/SMESH/pics/b-mberofsegments.png differ diff --git a/doc/salome/gui/SMESH/pics/b-mesh_infos.png b/doc/salome/gui/SMESH/pics/b-mesh_infos.png new file mode 100755 index 000000000..6abd3c184 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/b-mesh_infos.png differ diff --git a/doc/salome/gui/SMESH/pics/borders_at_multi_connections1.png b/doc/salome/gui/SMESH/pics/borders_at_multi_connections1.png new file mode 100755 index 000000000..8a2d16499 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/borders_at_multi_connections1.png differ diff --git a/doc/salome/gui/SMESH/pics/c-createmesh.png b/doc/salome/gui/SMESH/pics/c-createmesh.png new file mode 100755 index 000000000..5ff3ffc58 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/c-createmesh.png differ diff --git a/doc/salome/gui/SMESH/pics/c-editmesh.png b/doc/salome/gui/SMESH/pics/c-editmesh.png new file mode 100755 index 000000000..bbad9686d Binary files /dev/null and b/doc/salome/gui/SMESH/pics/c-editmesh.png differ diff --git a/doc/salome/gui/SMESH/pics/create_group.png b/doc/salome/gui/SMESH/pics/create_group.png new file mode 100755 index 000000000..6fc2367b3 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/create_group.png differ diff --git a/doc/salome/gui/SMESH/pics/creategroup.png b/doc/salome/gui/SMESH/pics/creategroup.png new file mode 100755 index 000000000..12b7d4b14 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/creategroup.png differ diff --git a/doc/salome/gui/SMESH/pics/cut_groups1.png b/doc/salome/gui/SMESH/pics/cut_groups1.png new file mode 100755 index 000000000..f066a5541 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/cut_groups1.png differ diff --git a/doc/salome/gui/SMESH/pics/cut_groups2.png b/doc/salome/gui/SMESH/pics/cut_groups2.png new file mode 100755 index 000000000..3ec7a93d1 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/cut_groups2.png differ diff --git a/doc/salome/gui/SMESH/pics/cut_groups3.png b/doc/salome/gui/SMESH/pics/cut_groups3.png new file mode 100755 index 000000000..1c5ebed80 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/cut_groups3.png differ diff --git a/doc/salome/gui/SMESH/pics/cutgroups.png b/doc/salome/gui/SMESH/pics/cutgroups.png new file mode 100755 index 000000000..87e6da88b Binary files /dev/null and b/doc/salome/gui/SMESH/pics/cutgroups.png differ diff --git a/doc/salome/gui/SMESH/pics/deletegroups.png b/doc/salome/gui/SMESH/pics/deletegroups.png new file mode 100755 index 000000000..383a79aa8 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/deletegroups.png differ diff --git a/doc/salome/gui/SMESH/pics/diagonalinversion.png b/doc/salome/gui/SMESH/pics/diagonalinversion.png new file mode 100755 index 000000000..967e7a12e Binary files /dev/null and b/doc/salome/gui/SMESH/pics/diagonalinversion.png differ diff --git a/doc/salome/gui/SMESH/pics/edit_mesh1.png b/doc/salome/gui/SMESH/pics/edit_mesh1.png new file mode 100755 index 000000000..4369e51b4 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/edit_mesh1.png differ diff --git a/doc/salome/gui/SMESH/pics/edit_mesh_change_value_hyp.png b/doc/salome/gui/SMESH/pics/edit_mesh_change_value_hyp.png new file mode 100755 index 000000000..7dee01f7d Binary files /dev/null and b/doc/salome/gui/SMESH/pics/edit_mesh_change_value_hyp.png differ diff --git a/doc/salome/gui/SMESH/pics/edit_mesh_remove_hyp.png b/doc/salome/gui/SMESH/pics/edit_mesh_remove_hyp.png new file mode 100755 index 000000000..0a45639aa Binary files /dev/null and b/doc/salome/gui/SMESH/pics/edit_mesh_remove_hyp.png differ diff --git a/doc/salome/gui/SMESH/pics/editgroup.png b/doc/salome/gui/SMESH/pics/editgroup.png new file mode 100755 index 000000000..384a30399 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/editgroup.png differ diff --git a/doc/salome/gui/SMESH/pics/editing_groups1.png b/doc/salome/gui/SMESH/pics/editing_groups1.png new file mode 100755 index 000000000..beb946ab7 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/editing_groups1.png differ diff --git a/doc/salome/gui/SMESH/pics/editing_groups2.png b/doc/salome/gui/SMESH/pics/editing_groups2.png new file mode 100755 index 000000000..7cff1819c Binary files /dev/null and b/doc/salome/gui/SMESH/pics/editing_groups2.png differ diff --git a/doc/salome/gui/SMESH/pics/extrusionalongaline1.png b/doc/salome/gui/SMESH/pics/extrusionalongaline1.png new file mode 100755 index 000000000..86b2cba30 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/extrusionalongaline1.png differ diff --git a/doc/salome/gui/SMESH/pics/extrusionalongaline2.png b/doc/salome/gui/SMESH/pics/extrusionalongaline2.png new file mode 100755 index 000000000..b039cfce5 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/extrusionalongaline2.png differ diff --git a/doc/salome/gui/SMESH/pics/free_borders1.png b/doc/salome/gui/SMESH/pics/free_borders1.png new file mode 100755 index 000000000..6e73c9329 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/free_borders1.png differ diff --git a/doc/salome/gui/SMESH/pics/free_edges.png b/doc/salome/gui/SMESH/pics/free_edges.png new file mode 100755 index 000000000..6f1100c87 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/free_edges.png differ diff --git a/doc/salome/gui/SMESH/pics/importmesh.png b/doc/salome/gui/SMESH/pics/importmesh.png new file mode 100755 index 000000000..fa858d7f3 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/importmesh.png differ diff --git a/doc/salome/gui/SMESH/pics/intersect_groups1.png b/doc/salome/gui/SMESH/pics/intersect_groups1.png new file mode 100755 index 000000000..9251b0e7a Binary files /dev/null and b/doc/salome/gui/SMESH/pics/intersect_groups1.png differ diff --git a/doc/salome/gui/SMESH/pics/intersect_groups2.png b/doc/salome/gui/SMESH/pics/intersect_groups2.png new file mode 100755 index 000000000..eeaed8da1 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/intersect_groups2.png differ diff --git a/doc/salome/gui/SMESH/pics/intersect_groups3.png b/doc/salome/gui/SMESH/pics/intersect_groups3.png new file mode 100755 index 000000000..74f5c2d76 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/intersect_groups3.png differ diff --git a/doc/salome/gui/SMESH/pics/intersectgroups.png b/doc/salome/gui/SMESH/pics/intersectgroups.png new file mode 100755 index 000000000..b28b4d4d6 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/intersectgroups.png differ diff --git a/doc/salome/gui/SMESH/pics/length1.png b/doc/salome/gui/SMESH/pics/length1.png new file mode 100755 index 000000000..53f4f9591 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/length1.png differ diff --git a/doc/salome/gui/SMESH/pics/length2d.png b/doc/salome/gui/SMESH/pics/length2d.png new file mode 100755 index 000000000..9a5264a02 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/length2d.png differ diff --git a/doc/salome/gui/SMESH/pics/max_el_area.png b/doc/salome/gui/SMESH/pics/max_el_area.png new file mode 100755 index 000000000..88db3d6f8 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/max_el_area.png differ diff --git a/doc/salome/gui/SMESH/pics/mergenodes.png b/doc/salome/gui/SMESH/pics/mergenodes.png new file mode 100755 index 000000000..d994afa28 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/mergenodes.png differ diff --git a/doc/salome/gui/SMESH/pics/merging_nodes1.png b/doc/salome/gui/SMESH/pics/merging_nodes1.png new file mode 100755 index 000000000..f64bdcbe2 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/merging_nodes1.png differ diff --git a/doc/salome/gui/SMESH/pics/merging_nodes2.png b/doc/salome/gui/SMESH/pics/merging_nodes2.png new file mode 100755 index 000000000..8d7cfdd09 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/merging_nodes2.png differ diff --git a/doc/salome/gui/SMESH/pics/movenodes.png b/doc/salome/gui/SMESH/pics/movenodes.png new file mode 100755 index 000000000..16e9e6262 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/movenodes.png differ diff --git a/doc/salome/gui/SMESH/pics/moving_nodes1.png b/doc/salome/gui/SMESH/pics/moving_nodes1.png new file mode 100755 index 000000000..2bae38850 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/moving_nodes1.png differ diff --git a/doc/salome/gui/SMESH/pics/moving_nodes2.png b/doc/salome/gui/SMESH/pics/moving_nodes2.png new file mode 100755 index 000000000..b65e57ae9 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/moving_nodes2.png differ diff --git a/doc/salome/gui/SMESH/pics/orientaation1.png b/doc/salome/gui/SMESH/pics/orientaation1.png new file mode 100755 index 000000000..c23b0b8a8 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/orientaation1.png differ diff --git a/doc/salome/gui/SMESH/pics/patternmapping1.png b/doc/salome/gui/SMESH/pics/patternmapping1.png new file mode 100755 index 000000000..14daae187 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/patternmapping1.png differ diff --git a/doc/salome/gui/SMESH/pics/patternmapping2.png b/doc/salome/gui/SMESH/pics/patternmapping2.png new file mode 100755 index 000000000..fbcf35544 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/patternmapping2.png differ diff --git a/doc/salome/gui/SMESH/pics/remove_elements1.png b/doc/salome/gui/SMESH/pics/remove_elements1.png new file mode 100755 index 000000000..538460f43 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/remove_elements1.png differ diff --git a/doc/salome/gui/SMESH/pics/remove_elements2.png b/doc/salome/gui/SMESH/pics/remove_elements2.png new file mode 100755 index 000000000..888188cc7 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/remove_elements2.png differ diff --git a/doc/salome/gui/SMESH/pics/remove_nodes1.png b/doc/salome/gui/SMESH/pics/remove_nodes1.png new file mode 100755 index 000000000..94caae679 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/remove_nodes1.png differ diff --git a/doc/salome/gui/SMESH/pics/remove_nodes2.png b/doc/salome/gui/SMESH/pics/remove_nodes2.png new file mode 100755 index 000000000..e9f806402 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/remove_nodes2.png differ diff --git a/doc/salome/gui/SMESH/pics/removeelements.png b/doc/salome/gui/SMESH/pics/removeelements.png new file mode 100755 index 000000000..42a79b5b1 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/removeelements.png differ diff --git a/doc/salome/gui/SMESH/pics/removenodes.png b/doc/salome/gui/SMESH/pics/removenodes.png new file mode 100755 index 000000000..cfcb777c6 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/removenodes.png differ diff --git a/doc/salome/gui/SMESH/pics/renumberelements.png b/doc/salome/gui/SMESH/pics/renumberelements.png new file mode 100755 index 000000000..0812b5066 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/renumberelements.png differ diff --git a/doc/salome/gui/SMESH/pics/renumbernodes.png b/doc/salome/gui/SMESH/pics/renumbernodes.png new file mode 100755 index 000000000..90a0eda13 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/renumbernodes.png differ diff --git a/doc/salome/gui/SMESH/pics/revolution1.png b/doc/salome/gui/SMESH/pics/revolution1.png new file mode 100755 index 000000000..d459cf463 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/revolution1.png differ diff --git a/doc/salome/gui/SMESH/pics/revolution2.png b/doc/salome/gui/SMESH/pics/revolution2.png new file mode 100755 index 000000000..a3c005202 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/revolution2.png differ diff --git a/doc/salome/gui/SMESH/pics/rotation.png b/doc/salome/gui/SMESH/pics/rotation.png new file mode 100755 index 000000000..372b9b307 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/rotation.png differ diff --git a/doc/salome/gui/SMESH/pics/rotation1.png b/doc/salome/gui/SMESH/pics/rotation1.png new file mode 100755 index 000000000..5a4ad9901 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/rotation1.png differ diff --git a/doc/salome/gui/SMESH/pics/rotation2.png b/doc/salome/gui/SMESH/pics/rotation2.png new file mode 100755 index 000000000..366771a69 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/rotation2.png differ diff --git a/doc/salome/gui/SMESH/pics/selectionfilterlibrary.png b/doc/salome/gui/SMESH/pics/selectionfilterlibrary.png new file mode 100755 index 000000000..f07c09641 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/selectionfilterlibrary.png differ diff --git a/doc/salome/gui/SMESH/pics/sewing1.png b/doc/salome/gui/SMESH/pics/sewing1.png new file mode 100755 index 000000000..795d7a06b Binary files /dev/null and b/doc/salome/gui/SMESH/pics/sewing1.png differ diff --git a/doc/salome/gui/SMESH/pics/sewing2.png b/doc/salome/gui/SMESH/pics/sewing2.png new file mode 100755 index 000000000..66a409973 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/sewing2.png differ diff --git a/doc/salome/gui/SMESH/pics/sewing3.png b/doc/salome/gui/SMESH/pics/sewing3.png new file mode 100755 index 000000000..6c74f1cbf Binary files /dev/null and b/doc/salome/gui/SMESH/pics/sewing3.png differ diff --git a/doc/salome/gui/SMESH/pics/sewing4.png b/doc/salome/gui/SMESH/pics/sewing4.png new file mode 100755 index 000000000..cd9869a85 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/sewing4.png differ diff --git a/doc/salome/gui/SMESH/pics/smoothing.png b/doc/salome/gui/SMESH/pics/smoothing.png new file mode 100755 index 000000000..0fda00a22 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/smoothing.png differ diff --git a/doc/salome/gui/SMESH/pics/smoothing1.png b/doc/salome/gui/SMESH/pics/smoothing1.png new file mode 100755 index 000000000..763a5300b Binary files /dev/null and b/doc/salome/gui/SMESH/pics/smoothing1.png differ diff --git a/doc/salome/gui/SMESH/pics/smoothing2.png b/doc/salome/gui/SMESH/pics/smoothing2.png new file mode 100755 index 000000000..bfce45739 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/smoothing2.png differ diff --git a/doc/salome/gui/SMESH/pics/submeshconstruction.png b/doc/salome/gui/SMESH/pics/submeshconstruction.png new file mode 100755 index 000000000..c2c12e5c6 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/submeshconstruction.png differ diff --git a/doc/salome/gui/SMESH/pics/symmetry1.png b/doc/salome/gui/SMESH/pics/symmetry1.png new file mode 100755 index 000000000..0fe145964 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/symmetry1.png differ diff --git a/doc/salome/gui/SMESH/pics/symmetry2.png b/doc/salome/gui/SMESH/pics/symmetry2.png new file mode 100755 index 000000000..99c456463 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/symmetry2.png differ diff --git a/doc/salome/gui/SMESH/pics/symmetry3.png b/doc/salome/gui/SMESH/pics/symmetry3.png new file mode 100755 index 000000000..0ded9ce79 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/symmetry3.png differ diff --git a/doc/salome/gui/SMESH/pics/translation1.png b/doc/salome/gui/SMESH/pics/translation1.png new file mode 100755 index 000000000..745506149 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/translation1.png differ diff --git a/doc/salome/gui/SMESH/pics/translation2.png b/doc/salome/gui/SMESH/pics/translation2.png new file mode 100755 index 000000000..f321be118 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/translation2.png differ diff --git a/doc/salome/gui/SMESH/pics/union_groups1.png b/doc/salome/gui/SMESH/pics/union_groups1.png new file mode 100755 index 000000000..7b2fc7511 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/union_groups1.png differ diff --git a/doc/salome/gui/SMESH/pics/union_groups2.png b/doc/salome/gui/SMESH/pics/union_groups2.png new file mode 100755 index 000000000..980e48d41 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/union_groups2.png differ diff --git a/doc/salome/gui/SMESH/pics/union_groups3.png b/doc/salome/gui/SMESH/pics/union_groups3.png new file mode 100755 index 000000000..caf6bb42b Binary files /dev/null and b/doc/salome/gui/SMESH/pics/union_groups3.png differ diff --git a/doc/salome/gui/SMESH/pics/uniongroups.png b/doc/salome/gui/SMESH/pics/uniongroups.png new file mode 100755 index 000000000..936c3b9f7 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/uniongroups.png differ diff --git a/doc/salome/gui/SMESH/pics/unionoftwotriangles.png b/doc/salome/gui/SMESH/pics/unionoftwotriangles.png new file mode 100755 index 000000000..b9d2bdbd7 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/unionoftwotriangles.png differ diff --git a/doc/salome/gui/SMESH/pics/uniting_a_set_of_triangles1.png b/doc/salome/gui/SMESH/pics/uniting_a_set_of_triangles1.png new file mode 100755 index 000000000..fb00167a5 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/uniting_a_set_of_triangles1.png differ diff --git a/doc/salome/gui/SMESH/pics/uniting_a_set_of_triangles2.png b/doc/salome/gui/SMESH/pics/uniting_a_set_of_triangles2.png new file mode 100755 index 000000000..16d135112 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/uniting_a_set_of_triangles2.png differ diff --git a/doc/salome/gui/SMESH/pics/uniting_two_triangles1.png b/doc/salome/gui/SMESH/pics/uniting_two_triangles1.png new file mode 100755 index 000000000..e94be3a0f Binary files /dev/null and b/doc/salome/gui/SMESH/pics/uniting_two_triangles1.png differ diff --git a/doc/salome/gui/SMESH/pics/uniting_two_triangles2.png b/doc/salome/gui/SMESH/pics/uniting_two_triangles2.png new file mode 100755 index 000000000..5cac5f541 Binary files /dev/null and b/doc/salome/gui/SMESH/pics/uniting_two_triangles2.png differ diff --git a/doc/salome/gui/SMESH/presentation.htm b/doc/salome/gui/SMESH/presentation.htm new file mode 100755 index 000000000..c12e5bcfd --- /dev/null +++ b/doc/salome/gui/SMESH/presentation.htm @@ -0,0 +1,129 @@ + + + + + +Presentation + + + + + + + + + + + +

Display Mode

+ +

By default your objects are represented as set in Preferences.

+ +

However, right-clicking on the mesh in the Object + Browser, and selecting Display + Mode, you can display your mesh as: +

+ +

 

+ +

Wireframe,

+ +

+ +

 

+ +

Shading

+ +

+ +

 

+ +

or Nodes.

+ +

+ +

 

+ +

Wireframe can + combine with Nodes and + Shading.

+ +

 

+ +

Shading + and Wireframe modes can combine + with Shrink, however + Nodes can't.

+ +

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/quality_controls.htm b/doc/salome/gui/SMESH/quality_controls.htm new file mode 100755 index 000000000..9b7239010 --- /dev/null +++ b/doc/salome/gui/SMESH/quality_controls.htm @@ -0,0 +1,1536 @@ + + + + + +Quality Controls + + + + + + + + + + +

Quality Controls

+ +

Free Borders

+ +

import salome

+ +

import geompy

+ +

import SMESH

+ +

import StdMeshers

+ +

 

+ +

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

+ +

smesh.SetCurrentStudy(salome.myStudy)

+ +

 

+ +

# create a box without + one plane

+ +

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

+ +

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

+ +

 

+ +

FaceList  = + []

+ +

for i in range( + 5 ):

+ +

  FaceList.append( + subShapeList[ i ] )

+ +

 

+ +

aComp = geompy.MakeCompound( + FaceList )

+ +

aBox = geompy.Sew( + aComp, 1. )

+ +

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

+ +

  

+ +

aBox  = + salome.IDToObject( idbox )

+ +

 

+ +

# create a mesh

+ +

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

+ +

hyp1.SetNumberOfSegments(5)

+ +

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

+ +

hyp2.SetMaxElementArea(20)

+ +

 

+ +

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

+ +

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

+ +

 

+ +

mesh = smesh.CreateMesh(aBox)

+ +

mesh.AddHypothesis(aBox,hyp1)

+ +

mesh.AddHypothesis(aBox,hyp2)

+ +

mesh.AddHypothesis(aBox,algo1)

+ +

mesh.AddHypothesis(aBox,algo2)

+ +

 

+ +

smesh.Compute(mesh,aBox)

+ +

 

+ +

smeshgui = salome.ImportComponentGUI("SMESH")

+ +

smeshgui.Init(salome.myStudyId);

+ +

smeshgui.SetName( + salome.ObjectToID( mesh ), "Mesh_freebord" );

+ +

 

+ +

# criterion : free borders

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

aPredicate = aFilterMgr.CreateFreeBorders()

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# print the result

+ +

print "Criterion: + Free borders Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# create a group

+ +

aGroup = mesh.CreateGroup( + SMESH.EDGE, "Free borders" )

+ +

aGroup.Add( anIds + )

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Borders at Multiconnection

+ +

import salome

+ +

import geompy

+ +

import SMESH

+ +

import StdMeshers

+ +

 

+ +

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

+ +

smesh.SetCurrentStudy(salome.myStudy)

+ +

 

+ +

# create a box without + one plane

+ +

 

+ +

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

+ +

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

+ +

 

+ +

FaceList  = + []

+ +

for i in range( + 5 ):

+ +

  FaceList.append( + subShapeList[ i ] )

+ +

 

+ +

aComp = geompy.MakeCompound( + FaceList )

+ +

aBox = geompy.Sew( + aComp, 1. )

+ +

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

+ +

  

+ +

aBox  = + salome.IDToObject( idbox )

+ +

 

+ +

# create a mesh

+ +

 

+ +

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

+ +

hyp1.SetNumberOfSegments(5)

+ +

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

+ +

hyp2.SetMaxElementArea(20)

+ +

 

+ +

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

+ +

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

+ +

 

+ +

mesh = smesh.CreateMesh(aBox)

+ +

mesh.AddHypothesis(aBox,hyp1)

+ +

mesh.AddHypothesis(aBox,hyp2)

+ +

mesh.AddHypothesis(aBox,algo1)

+ +

mesh.AddHypothesis(aBox,algo2)

+ +

 

+ +

smesh.Compute(mesh,aBox)

+ +

 

+ +

smeshgui = salome.ImportComponentGUI("SMESH")

+ +

smeshgui.Init(salome.myStudyId);

+ +

smeshgui.SetName( + salome.ObjectToID( mesh ), "Mesh_borders_at_multi-connections" + );

+ +

 

+ +

# Criterion : Borders at + multi-connection

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

aFunctor = aFilterMgr.CreateMultiConnection()

+ +

 

+ +

aPredicate = aFilterMgr.CreateEqualTo()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 2 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# print the result

+ +

print "Criterion: + Borders at multi-connections Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# create a group

+ +

aGroup = mesh.CreateGroup( + SMESH.EDGE, "Borders at multi-connections" )

+ +

aGroup.Add( anIds + )

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Length 1D

+ +

 

+ +

import salome

+ +

import geompy

+ +

import SMESH

+ +

import StdMeshers

+ +

 

+ +

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

+ +

smesh.SetCurrentStudy(salome.myStudy)

+ +

 

+ +

# create a box without + one plane

+ +

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

+ +

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

+ +

 

+ +

FaceList  = + []

+ +

for i in range( + 5 ):

+ +

  FaceList.append( + subShapeList[ i ] )

+ +

 

+ +

aComp = geompy.MakeCompound( + FaceList )

+ +

aBox = geompy.Sew( + aComp, 1. )

+ +

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

+ +

  

+ +

aBox  = + salome.IDToObject( idbox )

+ +

 

+ +

# create a mesh

+ +

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

+ +

hyp1.SetNumberOfSegments(5)

+ +

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

+ +

hyp2.SetMaxElementArea(20)

+ +

 

+ +

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

+ +

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

+ +

 

+ +

mesh = smesh.CreateMesh(aBox)

+ +

mesh.AddHypothesis(aBox,hyp1)

+ +

mesh.AddHypothesis(aBox,hyp2)

+ +

mesh.AddHypothesis(aBox,algo1)

+ +

mesh.AddHypothesis(aBox,algo2)

+ +

 

+ +

smesh.Compute(mesh,aBox)

+ +

 

+ +

smeshgui = salome.ImportComponentGUI("SMESH")

+ +

smeshgui.Init(salome.myStudyId);

+ +

smeshgui.SetName( + salome.ObjectToID( mesh ), "Mesh" );

+ +

 

+ +

# Criterion : Length > + 3

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

aFunctor = aFilterMgr.CreateLength()

+ +

 

+ +

aPredicate = aFilterMgr.CreateMoreThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 3 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# print the result

+ +

print "Criterion: + Edges length > 3 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# create a group

+ +

aGroup = mesh.CreateGroup( + SMESH.EDGE, "Edges with legth > 3" )

+ +

aGroup.Add( anIds + )

+ +

salome.sg.updateObjBrowser(1)

+ +

 

+ +

Free Edges

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

 

+ +

# Criterion : AREA > + 30

+ +

 

+ +

aFunctor = aFilterMgr.CreateArea()

+ +

aPredicate = aFilterMgr.CreateMoreThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 30 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

anEditor = mesh.GetMeshEditor()

+ +

anEditor.RemoveElements(anIds)

+ +

 

+ +

# Criterion : FREE EDGES

+ +

 

+ +

aPredicate = aFilterMgr.CreateFreeEdges()

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# print the result

+ +

print "Criterion: + Free edges Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# create a group

+ +

aGroup = mesh.CreateGroup( + SMESH.EDGE, "Free edges" )

+ +

aGroup.Add( anIds + )

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Length 2D

+ +

import salome

+ +

import geompy

+ +

import SMESH

+ +

import StdMeshers

+ +

 

+ +

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

+ +

smesh.SetCurrentStudy(salome.myStudy)

+ +

 

+ +

# create a box without + one plane

+ +

 

+ +

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

+ +

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

+ +

 

+ +

FaceList  = + []

+ +

for i in range( + 5 ):

+ +

  FaceList.append( + subShapeList[ i ] )

+ +

 

+ +

aComp = geompy.MakeCompound( + FaceList )

+ +

aBox = geompy.Sew( + aComp, 1. )

+ +

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

+ +

  

+ +

aBox  = + salome.IDToObject( idbox )

+ +

 

+ +

# create a mesh

+ +

 

+ +

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

+ +

hyp1.SetNumberOfSegments(5)

+ +

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

+ +

hyp2.SetMaxElementArea(20)

+ +

 

+ +

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

+ +

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

+ +

 

+ +

mesh = smesh.CreateMesh(aBox)

+ +

mesh.AddHypothesis(aBox,hyp1)

+ +

mesh.AddHypothesis(aBox,hyp2)

+ +

mesh.AddHypothesis(aBox,algo1)

+ +

mesh.AddHypothesis(aBox,algo2)

+ +

 

+ +

smesh.Compute(mesh,aBox)

+ +

 

+ +

smeshgui = salome.ImportComponentGUI("SMESH")

+ +

smeshgui.Init(salome.myStudyId);

+ +

smeshgui.SetName( + salome.ObjectToID( mesh ), "Mesh" );

+ +

 

+ +

# Criterion : Length 2D + > 5

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

aFunctor = aFilterMgr.CreateLength2D()

+ +

 

+ +

aPredicate = aFilterMgr.CreateMoreThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 5 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# print the result

+ +

print "Criterion: + Edges length 2D > 5 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# create a group

+ +

aGroup = mesh.CreateGroup( + SMESH.FACE, "Edges with legth 2D > 5" )

+ +

aGroup.Add( anIds + )

+ +

salome.sg.updateObjBrowser(1) +  

+ +

 

+ +

Borders at Multiconnection 2D

+ +

import salome

+ +

import geompy

+ +

import SMESH

+ +

import StdMeshers

+ +

 

+ +

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

+ +

smesh.SetCurrentStudy(salome.myStudy)

+ +

 

+ +

# create a box without + one plane

+ +

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

+ +

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

+ +

 

+ +

FaceList  = + []

+ +

for i in range( + 5 ):

+ +

  FaceList.append( + subShapeList[ i ] )

+ +

 

+ +

aComp = geompy.MakeCompound( + FaceList )

+ +

aBox = geompy.Sew( + aComp, 1. )

+ +

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

+ +

  

+ +

aBox  = + salome.IDToObject( idbox )

+ +

 

+ +

# create a mesh

+ +

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

+ +

hyp1.SetNumberOfSegments(5)

+ +

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

+ +

hyp2.SetMaxElementArea(20)

+ +

 

+ +

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

+ +

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

+ +

 

+ +

mesh = smesh.CreateMesh(aBox)

+ +

mesh.AddHypothesis(aBox,hyp1)

+ +

mesh.AddHypothesis(aBox,hyp2)

+ +

mesh.AddHypothesis(aBox,algo1)

+ +

mesh.AddHypothesis(aBox,algo2)

+ +

 

+ +

smesh.Compute(mesh,aBox)

+ +

smeshgui = salome.ImportComponentGUI("SMESH")

+ +

smeshgui.Init(salome.myStudyId);

+ +

smeshgui.SetName( + salome.ObjectToID( mesh ), "Mesh" );

+ +

 

+ +

# Criterion : MULTI-CONNECTION + 2D = 2

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

aFunctor = aFilterMgr.CreateMultiConnection2D()

+ +

 

+ +

aPredicate = aFilterMgr.CreateEqualTo()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 2 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# print the result

+ +

print "Criterion: + Borders at multi-connection 2D = 2 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# create a group

+ +

aGroup = mesh.CreateGroup( + SMESH.FACE, "Borders at multi-connection 2D = 2" )

+ +

aGroup.Add( anIds + )

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Area

+ +

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

+ +

aGroup = mesh.CreateGroup( + SMESH.FACE, "Area > 100" )

+ +

aGroup.Add( anIds + )

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Taper

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

 

+ +

# Criterion : Taper > + 3e-20

+ +

 

+ +

aFunctor = aFilterMgr.CreateTaper()

+ +

aPredicate = aFilterMgr.CreateMoreThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 3e-20 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# print the result

+ +

print "Criterion: + Taper > 3e-20 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# create a group

+ +

aGroup = mesh.CreateGroup( + SMESH.FACE, "Taper > 3e-20" )

+ +

aGroup.Add( anIds + )

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Aspect Ratio

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

 

+ +

# Criterion : ASPECT RATIO + > 1.4

+ +

 

+ +

aFunctor = aFilterMgr.CreateAspectRatio()

+ +

aPredicate = aFilterMgr.CreateMoreThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 1.4 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# print the result

+ +

print "Criterion: + Aspect Ratio > 1.4 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# create a group

+ +

aGroup = mesh.CreateGroup( + SMESH.FACE, "Aspect Ratio > 1.4" )

+ +

aGroup.Add( anIds + )

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Minimum Angle

+ +

 

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

 

+ +

# Criterion : MINIMUM + ANGLE < 70

+ +

 

+ +

aFunctor = aFilterMgr.CreateMinimumAngle()

+ +

aPredicate = aFilterMgr.CreateLessThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 70 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# print the result

+ +

print "Criterion: + Minimum Angle < 70 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# create a group

+ +

aGroup = mesh.CreateGroup( + SMESH.FACE, "Minimum Angle < 70" )

+ +

aGroup.Add( anIds + )

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Warping

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

 

+ +

# Criterion : WARP ANGLE + > 1e-15

+ +

 

+ +

aFunctor = aFilterMgr.CreateWarping()

+ +

aPredicate = aFilterMgr.CreateMoreThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 1e-15 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# print the result

+ +

print "Criterion: + Warp > 1e-15 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# create a group

+ +

aGroup = mesh.CreateGroup( + SMESH.FACE, "Warp > 1e-15" )

+ +

aGroup.Add( anIds + )

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Skew

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

 

+ +

# Criterion : Skew > + 18

+ +

 

+ +

aFunctor = aFilterMgr.CreateSkew()

+ +

aPredicate = aFilterMgr.CreateMoreThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 18 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# print the result

+ +

print "Criterion: + Skew > 18 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# create a group

+ +

aGroup = mesh.CreateGroup( + SMESH.FACE, "Skew > 18" )

+ +

aGroup.Add( anIds + )

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Aspect Ratio 3D

+ +

import SMESH

+ +

import SMESH_mechanic_tetra

+ +

 

+ +

smesh  = + SMESH_mechanic_tetra.smesh

+ +

mesh   = + SMESH_mechanic_tetra.mesh

+ +

salome = SMESH_mechanic_tetra.salome

+ +

 

+ +

aFilterMgr = smesh.CreateFilterManager()

+ +

 

+ +

# Criterion : ASPECT RATIO + 3D > 2.2

+ +

 

+ +

aFunctor = aFilterMgr.CreateAspectRatio3D()

+ +

aPredicate = aFilterMgr.CreateMoreThan()

+ +

aPredicate.SetNumFunctor( + aFunctor )

+ +

aPredicate.SetMargin( + 2.2 )

+ +

 

+ +

aFilter = aFilterMgr.CreateFilter()

+ +

aFilter.SetPredicate( + aPredicate )

+ +

 

+ +

anIds = aFilter.GetElementsId( + mesh )

+ +

 

+ +

# print the result

+ +

print "Criterion: + Aspect Ratio 3D > 2.2 Nb = ", len( anIds )

+ +

for i in range( + len( anIds ) ):

+ +

  print + anIds[ i ]

+ +

 

+ +

# create a group

+ +

aGroup = mesh.CreateGroup( + SMESH.VOLUME, "Aspect Ratio 3D > 2.2" )

+ +

aGroup.Add( anIds + )

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ + + + diff --git a/doc/salome/gui/SMESH/revolution.htm b/doc/salome/gui/SMESH/revolution.htm new file mode 100755 index 000000000..d409d47a6 --- /dev/null +++ b/doc/salome/gui/SMESH/revolution.htm @@ -0,0 +1,148 @@ + + + + + +Revolution + + + + + + + + + + + +

Revolution

+ +

Revolution 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 apply revolution:

+ +

 

+ +

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

+ +

 

+ +

+ +

 

+ +

2. In this dialog box you should specify:

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

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

  • + +
  • specify the axis (point + and vector) around which the elements will be revolved,

  • + +
  • angle of rotation,

  • + +
  • number of steps,

  • + +
  • tolerance of rotation

  • +
+ +

 

+ +

3. Click the Apply + or OK button.

+ +

 

+ +

+ +

 

+ +

 See + Also a sample TUI Script of a  Revolution + operation.  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/selection_filter_library.htm b/doc/salome/gui/SMESH/selection_filter_library.htm new file mode 100755 index 000000000..333b5b0d2 --- /dev/null +++ b/doc/salome/gui/SMESH/selection_filter_library.htm @@ -0,0 +1,154 @@ + + + + + +Selection filter library + + + + + + + + + + + +

Selection filter library

+ +

Selection filter library is a powerful tool enabling to create filters + to be used on meshes. You can access to it from the Main Menu via Tools / Selection filter library.

+ +

 

+ +

+ +

 

+ +

Library file name shows + the path and the file name where your filters will be stored. By clicking + the browse button + you can load an existing filter library.

+ +

Names of filters lists the filters + created or uploaded for the current study. You can Add + or Delete filters.  

+ +

In Filter name box you can specify + the name for your filter. By default it is prefixed with the corresponding + entity type.

+ +

Each filter can be applicable to Nodes, + Edges, Faces or Volumes. + You can combine many criteria in one filter, but they all must be of the + same Entity type.

+ +

The Add button creates a new + criterion at the end of the list of criteria. The Insert + button creates a new criterion before the selected criterion. The Remove button deletes the selected criterion. + The Clear button deletes all criteria. +  

+ +

Each Entity type has its specific + list of criteria, however all filters have common syntax. For each criterion + you should specify the Threshold Value + and whether we search for the elements that should be More, + Less or Equal to this Value. + You should also specify if the criterion is Unary + or Binary.   

+ +

Some criteria should have the additional parameter of Tolerance.

+ +

 

+ +

When we create a Standalone Group + using filters (for this click Set Filters + button in the Create Group menu), + the menu for setting filters looks a bit differently. Toggling Insert + filter in viewer checkbox enables to preview the group selected + with your current filter in the viewer.

+ +

In the Source field you choose + if the filter will be applied to the whole Mesh, + the Initial Selection or the Current Group.

+ +

Copy from... button gives you + a possibility to load an existing filter from Selection + filter library and Add to... + button gives you a possibility to save your current filter in the Library. +  

+ +

 

+ +

+ + + + diff --git a/doc/salome/gui/SMESH/smesh.htm b/doc/salome/gui/SMESH/smesh.htm new file mode 100755 index 000000000..4964c60ea --- /dev/null +++ b/doc/salome/gui/SMESH/smesh.htm @@ -0,0 +1,139 @@ + + + + SMESH reference manual + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/smesh.log b/doc/salome/gui/SMESH/smesh.log new file mode 100755 index 000000000..f87769ff7 --- /dev/null +++ b/doc/salome/gui/SMESH/smesh.log @@ -0,0 +1,495 @@ +|SourceProjectName:SMESH.hpr +|DestinationProjectName:smesh.htm +whhost.js +whmsg.js +whmozemu.js +whproxy.js +whstub.js +whutils.js +whver.js +whform.js +whphost.js +whstart.js +whtopic.js +whframes.js +whlang.js +whskin_info.htm +whskin_blank.htm +whskin_pickup.htm +whskin_homepage.htm +whskin_tw.htm +whnjs.htm +whthost.js +whtdhtml.htm +whihost.js +whibody.htm +whiform.htm +whfhost.js +whfbody.htm +whfform.htm +whghost.js +whgbody.htm +whgdhtml.htm +whgdef.htm +whproj.js +whproj.xml +whproj.htm +whxdata\whtoc.xml +whxdata\whidx.xml +whxdata\whfts.xml +whxdata\whglo.xml +whdata\whtoc.js +whdata\whtoc.htm +whdata\whtdata.js +whdata\whidx.js +whdata\whidx.htm +whdata\whidata.js +whdata\whfts.js +whdata\whfts.htm +whdata\whglo.js +whdata\whglo.htm +whdata\whgdata.js +whdata\whftdata.js +whdata\whfwdata.js +whres.xml +webhelp.jar +webhelp.cab +whgdata\whnvp30.htm +whgdata\whnvp31.htm +whgdata\whnvp32.htm +whgdata\whnvp33.htm +whgdata\whnvt30.htm +whgdata\whnvt31.htm +whgdata\whnvt32.htm +whgdata\whnvt33.htm +whgdata\whnvf30.htm +whgdata\whnvf31.htm +whgdata\whnvf32.htm +whgdata\whnvf33.htm +whgdata\whnvl31.htm +whgdata\whnvl32.htm +whgdata\whnvl33.htm +whgdata\whexpbar.gif +cshdat_webhelp.htm +whcsh_home.htm +whcshdata.htm +cshdat_robohelp.htm +wht_tab0.gif +wht_tab1.gif +wht_tab2.gif +wht_tab3.gif +wht_tab4.gif +wht_tab5.gif +wht_tab6.gif +wht_tab7.gif +wht_tab8.gif +wht_glo_h.gif +wht_glo_n.gif +wht_fts_h.gif +wht_fts_n.gif +wht_idx_h.gif +wht_idx_n.gif +wht_toc_h.gif +wht_toc_n.gif +wht_ws.gif +wht_ws_g.gif +wht_logo1.gif +wht_logo2.gif +wht_abgw.jpg +wht_abgi.jpg +wht_abge.jpg +wht_abtw.jpg +wht_abte.jpg +wht_abti.jpg +wht_spac.gif +wht_next.gif +wht_next_g.gif +wht_prev.gif +wht_prev_g.gif +wht_sync.gif +wht_hide.gif +wht_go.gif +whstart.ico +whestart.ico +whrstart.ico +whidhtml.htm +whfdhtml.htm +whskin_banner.htm +whtbar.js +whskin_pdhtml.htm +whskin_papplet.htm +whskin_plist.htm +whskin_tbars.htm +whskin_mbars.htm +wht_toc4.gif +wht_toc1.gif +wht_toc2.gif +wht_toc3.gif +whskin_frmset010.htm +whst_topics.xml +whskin_frmset01.htm +smesh_hha.hhk +smesh.hhc +smesh.hhk +about_viewing_meshes.htm +aspect_ratio_3d.htm +borders_at_multi-connection.htm +borders_at_multiconnection_2d.htm +clipping.htm +constructing_meshes.htm +defining_hypotheses_tui.htm +deleting_groups.htm +display_entity.htm +extrusion.htm +extrusion_along_a_path.htm +files\about_hypotheses.htm +files\about_meshes.htm +files\about_meshing_algorithms.htm +files\about_quality_controls.htm +files\adding_nodes_and_elements.htm +files\area_of_elements.htm +files\arithmetic_1d.htm +files\aspect_ratio.htm +files\changing_orientation_of_elements.htm +files\constructing_groups_of_specific_elements.htm +files\constructing_meshes.htm +files\constructing_submeshes.htm +files\creating_groups.htm +files\cutting_quadrangles.htm +files\diagonal_iversion_of_elements.htm +files\displacing_nodes.htm +files\displaying_nodes_numbers.htm +files\editing_groups.htm +files\importing_and_exporting_meshes.htm +files\introduction_to_smesh.htm +files\length_of_edges.htm +files\max._element_area_hypothesis.htm +files\max._element_volume_hypothsis.htm +files\merging_nodes.htm +files\minimum_angle.htm +files\non_conform_mesh_allowed_hypothesis.htm +files\reassigning_hypotheses_and_algorithms.htm +files\removing_nodes_and_elements.htm +files\renumbering_nodes_and_elements.htm +files\rotation.htm +files\running_smesh_module.htm +files\sewing_meshes.htm +files\skew.htm +files\smoothing.htm +files\symmetry.htm +files\taper.htm +files\translation.htm +files\uniting_a_set_of_triangles.htm +files\uniting_two_triangles.htm +files\using_operations_on_groups.htm +files\viewing_mesh_info.htm +files\warp.htm +free_borders.htm +free_edges.htm +grouping_elements.htm +length.htm +modifying_meshes.htm +pattern_mapping.htm +presentation.htm +quality_controls.htm +revolution.htm +selection_filter_library.htm +transforming_meshes.htm +transparency.htm +viewing_meshes.htm +ehelp.xml +texture_horiz_ltbluebubbles.jpg +smesh.glo +default.css +pics\add_node.png +pics\remove_nodes2.png +pics\merging_nodes2.png +pics\moving_nodes2.png +pics\smoothing2.png +pics\b-mberofsegments.png +pics\b-flection1d.png +pics\a-cuttingofquadrangles.png +image129.gif +pics\addquadrangle.png +pics\intersectgroups.png +pics\editgroup.png +image95.jpg +pics\sewing1.png +image92.gif +image51.jpg +image70.gif +pics\create_group.png +pics\edit_mesh_change_value_hyp.png +pics\free_borders1.png +pics\add_triangle.png +pics\b-art_end_length.png +pics\a-creategroup.png +pics\a-clipping2.png +pics\a-transparency.png +pics\diagonalinversion.png +pics\translation1.png +image96.jpg +pics\sewing2.png +image119.gif +image108.gif +image52.jpg +image82.gif +image71.gif +image30.jpg +pics\rotation1.png +pics\a-createpolyhedralvolume.png +pics\a-patterntype.png +pics\orientaation1.png +pics\translation2.png +pics\cutgroups.png +image97.jpg +pics\sewing3.png +image86.jpg +image50.gif +image94.gif +image83.gif +image31.jpg +pics\add_polyhedron.png +pics\add_edge.png +pics\rotation2.png +pics\b-ithmetic1d.png +image10.jpg +pics\a-maxelarea.png +pics\addhexahedron.png +pics\addtetrahedron.png +image5.jpg +pics\sewing4.png +image95.gif +image76.jpg +image84.gif +image73.gif +image32.jpg +image40.gif +pics\smoothing.png +image88.jpg +image30.gif +image96.gif +image77.jpg +image74.gif +image63.gif +image22.jpg +image41.gif +pics\deletegroups.png +pics\editing_groups1.png +pics\uniting_two_triangles1.png +image7.jpg +pics\a-averagelength.png +pics\a-patterntype1.png +pics\extrusionalongaline1.png +pics\movenodes.png +pics\rotation.png +image56.jpg +image53.gif +image20.gif +image97.gif +image78.jpg +image64.gif +image23.jpg +pics\cut_groups1.png +pics\editing_groups2.png +pics\uniting_two_triangles2.png +pics\a-unionoftriangles.png +pics\a-arithmetic1d.png +pics\a-exportmesh.png +pics\extrusionalongaline2.png +pics\importmesh.png +image79.jpg +image21.gif +image98.gif +image32.gif +pics\cut_groups2.png +image130.gif +pics\max_el_area.png +pics\a-extusionalongapath2.png +pics\a-viewgeneral.png +pics\revolution1.png +pics\addtriangle.png +image99.gif +image55.gif +image88.gif +image36.jpg +image33.gif +image22.gif +image25.jpg +i_blue.jpg +pics\cut_groups3.png +image131.gif +pics\c-editmesh.png +pics\add_quadrangle.png +pics\uniting_a_set_of_triangles1.png +pics\a-deflection1d.png +pics\revolution2.png +pics\unionoftwotriangles.png +pics\addnode.png +image120.gif +image56.gif +image37.jpg +image23.gif +image67.gif +image34.gif +image26.jpg +image132.gif +pics\edit_mesh1.png +pics\remove_elements1.png +pics\uniting_a_set_of_triangles2.png +pics\mergenodes.png +pics\symmetry1.png +image121.gif +image79.gif +image38.jpg +image46.gif +image35.gif +image27.jpg +image24.gif +pics\intersect_groups1.png +image133.gif +pics\length1.png +pics\borders_at_multi_connections1.png +pics\add_polygone.png +pics\remove_elements2.png +pics\a-maxelvolume.png +pics\symmetry2.png +image122.gif +image58.gif +image36.gif +image25.gif +note1.gif +pics\intersect_groups2.png +image134.gif +pics\b-mesh_infos.png +pics\symmetry3.png +pics\addedge.png +image123.gif +image101.gif +image37.gif +pics\intersect_groups3.png +image135.gif +pics\b-erage_length.png +pics\a-standmeshinfo.png +pics\a-nbsegments1.png +pics\patternmapping1.png +image90.jpg +image124.gif +image102.gif +image19.jpg +image49.gif +image27.gif +image38.gif +image136.gif +pics\c-createmesh.png +pics\a-nbsegments2.png +pics\a-startendlength.png +pics\patternmapping2.png +pics\removeelements.png +pics\removenodes.png +pics\uniongroups.png +image125.gif +image103.gif +pics\exemple.gif +image39.gif +image28.gif +pics\union_groups1.png +image137.gif +pics\free_edges.png +pics\a-nbsegments3.png +pics\creategroup.png +image92.jpg +pics\submeshconstruction.png +image126.gif +image104.gif +image18.gif +image70.jpg +pics\union_groups2.png +pics\length2d.png +pics\a-advmeshinfo.png +pics\a-nbsegments4.png +pics\renumbernodes.png +image127.gif +image93.jpg +image105.gif +image19.gif +image71.jpg +pics\selectionfilterlibrary.png +pics\union_groups3.png +pics\edit_mesh_remove_hyp.png +pics\remove_nodes1.png +pics\merging_nodes1.png +pics\moving_nodes1.png +pics\smoothing1.png +pics\a-filteronedges.png +pics\renumberelements.png +pics\addpolygon.png +image94.jpg +image106.gif +image91.gif +image80.gif +smesh.ppf +ehlpdhtm.js +default_ns.css +whxdata\whtdata0.xml +whxdata\whftdata0.xml +whxdata\whfwdata0.xml +whxdata\whgdata0.xml +whdata\whtdata0.htm +whdata\whftdata0.htm +whdata\whfwdata0.htm +whdata\whgdata0.htm +whgdata\whlstt0.htm +whgdata\whlstt1.htm +whgdata\whlstt2.htm +whgdata\whlstt3.htm +whgdata\whlstt4.htm +whgdata\whlstt5.htm +whgdata\whlstt6.htm +whgdata\whlstt7.htm +whgdata\whlstt8.htm +whgdata\whlstt9.htm +whgdata\whlsti0.htm +whgdata\whlstfl0.htm +whgdata\whlstfl1.htm +whgdata\whlstfl2.htm +whgdata\whlstfl3.htm +whgdata\whlstfl4.htm +whgdata\whlstfl5.htm +whgdata\whlstfl6.htm +whgdata\whlstfl7.htm +whgdata\whlstfl8.htm +whgdata\whlstfl9.htm +whgdata\whlstfl10.htm +whgdata\whlstfl11.htm +whgdata\whlstfl12.htm +whgdata\whlstfl13.htm +whgdata\whlstfl14.htm +whgdata\whlstfl15.htm +whgdata\whlstfl16.htm +whgdata\whlstfl17.htm +whgdata\whlstfl18.htm +whgdata\whlstfl19.htm +whgdata\whlstfl20.htm +whgdata\whlstfl21.htm +whgdata\whlstfl22.htm +whgdata\whlstfl23.htm +whgdata\whlstfl24.htm +whgdata\whlstfl25.htm +whgdata\whlstf0.htm +whgdata\whlstf1.htm +whgdata\whlstf2.htm +whgdata\whlstf3.htm +whgdata\whlstf4.htm +whgdata\whlstf5.htm +whgdata\whlstf6.htm +whgdata\whlstf7.htm +whgdata\whlstf8.htm +whgdata\whlstf9.htm +whgdata\whlstf10.htm +whgdata\whlstf11.htm +whgdata\whlstf12.htm +whgdata\whlstg0.htm +smesh.htm +smesh_csh.htm +smesh_rhc.htm diff --git a/doc/salome/gui/SMESH/smesh_csh.htm b/doc/salome/gui/SMESH/smesh_csh.htm new file mode 100755 index 000000000..ebe4e93f8 --- /dev/null +++ b/doc/salome/gui/SMESH/smesh_csh.htm @@ -0,0 +1,106 @@ + + +SMESH reference manual + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/smesh_rhc.htm b/doc/salome/gui/SMESH/smesh_rhc.htm new file mode 100755 index 000000000..3bb6f9a54 --- /dev/null +++ b/doc/salome/gui/SMESH/smesh_rhc.htm @@ -0,0 +1,106 @@ + + +SMESH reference manual + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/transforming_meshes.htm b/doc/salome/gui/SMESH/transforming_meshes.htm new file mode 100755 index 000000000..6d2ada4f1 --- /dev/null +++ b/doc/salome/gui/SMESH/transforming_meshes.htm @@ -0,0 +1,664 @@ + + + + + +Transforming Meshes + + + + + + + + + + +

Transforming Meshes

+ +

Transforming Meshes

+ +

 

+ +

Translation

+ +

 

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# translate a mesh

+ +

anEditor = mesh.GetMeshEditor()

+ +

point = SMESH.PointStruct(-150, -150, + 0)

+ +

vector = SMESH.DirStruct(point)

+ +

anEditor.TranslateObject(mesh, vector, + 1)

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Rotation

+ +

 

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

mport math

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# rotate a mesh

+ +

anEditor = mesh.GetMeshEditor()

+ +

axisXYZ = SMESH.AxisStruct(0, 0, 0, 5, + 5, 20)

+ +

angle180 =  1.5*math.pi

+ +

anEditor.RotateObject(mesh, axisXYZ, angle180, + 1)

+ +

 

+ +

salome.sg.updateObjBrowser(1)

+ +

 

+ +

 

+ +

Symmetry

+ +

 

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

import math

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# create a symmetrical + copy of the mesh mirrored through a point

+ +

anEditor = mesh.GetMeshEditor()

+ +

anEditor.MirrorObject(mesh, SMESH.AxisStruct(0, + 0, 0, 0, 0, 0), SMESH.SMESH_MeshEditor.POINT, 1)

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

 

+ +

Merging + Nodes

+ +

 

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

smesh  = + SMESH_mechanic.smesh

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

# merge nodes

+ +

aMeshEditor = mesh.GetMeshEditor()

+ +

Tolerance = 25.0

+ +

 

+ +

GroupsOfNodes = aMeshEditor.FindCoincidentNodes(Tolerance)

+ +

aMeshEditor.MergeNodes(GroupsOfNodes)

+ +

    

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Sewing Meshes

+ +

Sew Meshes Border to Border

+ +

import salome

+ +

import geompy

+ +

import smesh

+ +

 

+ +

# create two faces of a + box

+ +

box1 = geompy.MakeBox(0., + 0., -10., 30., 20., 25.)

+ +

subShapeList1 = + geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])

+ +

 

+ +

box2 = geompy.MakeBox(0., + 5., 0., 20., 20., 15.)

+ +

subShapeList2 = + geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])

+ +

EdgesList = geompy.SubShapeAll(subShapeList2[ + 1 ], geompy.ShapeType["EDGE"])

+ +

 

+ +

aComp = geompy.MakeCompound( + [subShapeList1[ 2 ], subShapeList2[ 1 ]] )

+ +

idComp = geompy.addToStudy( + aComp, "Two faces" )

+ +

aCompobj  = + salome.IDToObject( idComp )

+ +

 

+ +

# create a mesh on two + faces

+ +

 

+ +

mesh = smesh.Mesh(aCompobj, + "Two faces : quadrangle mesh")

+ +

algo = mesh.Segment()

+ +

 

+ +

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

+ +

algo.NumberOfSegments(9)

+ +

 

+ +

# create a quadrangle 2D + algorithm for faces

+ +

mesh.Quadrangle()

+ +

 

+ +

# create a local hypothesis

+ +

algo = mesh.Segment(EdgesList[2])

+ +

 

+ +

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

+ +

mesh.Compute()

+ +

 

+ +

# sew free borders

+ +

anEditor = mesh.GetMesh().GetMeshEditor()

+ +

anEditor.SewBorderToSide(5, + 45, 6, 113, 109, 0, 0)

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Sew Conform Free Borders

+ +

import salome

+ +

import geompy

+ +

import smesh

+ +

 

+ +

# create two faces of the + box

+ +

box1 = geompy.MakeBox(0., + 0., -10., 20., 20., 15.)

+ +

subShapeList1 = + geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])

+ +

 

+ +

box2 = geompy.MakeBox(0., + 5., 0., 20., 20., 15.)

+ +

subShapeList2 = + geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])

+ +

EdgesList = geompy.SubShapeAll(subShapeList2[ + 1 ], geompy.ShapeType["EDGE"])

+ +

 

+ +

aComp = geompy.MakeCompound( + [subShapeList1[ 2 ], subShapeList2[ 1 ]] )

+ +

idComp = geompy.addToStudy( + aComp, "Two faces" )

+ +

aCompobj  = + salome.IDToObject( idComp )

+ +

 

+ +

# create a mesh on two + faces

+ +

mesh = smesh.Mesh(aCompobj, + "Two faces : quadrangle mesh")

+ +

algo = mesh.Segment()

+ +

 

+ +

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

+ +

algo.NumberOfSegments(9)

+ +

 

+ +

# create a quadrangle 2D + algorithm for faces

+ +

mesh.Quadrangle()

+ +

 

+ +

# create a local hypothesis

+ +

algo = mesh.Segment(EdgesList[2])

+ +

 

+ +

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

+ +

algo.Arithmetic1D(1, + 4)

+ +

 

+ +

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

+ +

algo.Propagation()

+ +

mesh.Compute()

+ +

 

+ +

# sew free borders

+ +

anEditor = mesh.GetMesh().GetMeshEditor()

+ +

anEditor.SewConformFreeBorders(5, + 45, 6, 3, 24)

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Sew Free Borders

+ +

import salome

+ +

import geompy

+ +

import smesh

+ +

 

+ +

# create two faces of the + box

+ +

box1 = geompy.MakeBox(0., + 0., 0., 20., 20., 15.)

+ +

subShapeList1 = + geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])

+ +

 

+ +

box2 = geompy.MakeBox(0., + 5., 0., 20., 20., 15.)

+ +

subShapeList2 = + geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])

+ +

EdgesList = geompy.SubShapeAll(subShapeList2[ + 1 ], geompy.ShapeType["EDGE"])

+ +

 

+ +

aComp = geompy.MakeCompound( + [subShapeList1[ 2 ], subShapeList2[ 1 ]] )

+ +

idComp = geompy.addToStudy( + aComp, "Two faces" )

+ +

aCompobj  = + salome.IDToObject( idComp )

+ +

 

+ +

# create a mesh on two + faces

+ +

mesh = smesh.Mesh(aCompobj, + "Two faces : quadrangle mesh")

+ +

algo = mesh.Segment()

+ +

 

+ +

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

+ +

algo.NumberOfSegments(4)

+ +

 

+ +

# creates a quadrangle + 2D algorithm for faces

+ +

mesh.Quadrangle()

+ +

 

+ +

# create a local hypothesis

+ +

algo = mesh.Segment(EdgesList[2])

+ +

 

+ +

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

+ +

algo.Arithmetic1D(1, + 4)

+ +

 

+ +

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

+ +

algo.Propagation()

+ +

mesh.Compute()

+ +

 

+ +

# sew free borders

+ +

anEditor = mesh.GetMesh().GetMeshEditor()

+ +

anEditor.SewFreeBorders(6, + 21, 5, 1, 12, 3, 0, 0)

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

Sew Side Elements

+ +

import salome

+ +

import geompy

+ +

import smesh

+ +

 

+ +

# create two faces of the + box

+ +

box1 = geompy.MakeBox(0., +  0., 0., + 10., 10., 10.)

+ +

box2 = geompy.MakeBox(0., + 15., 0., 20., 25., 10.)

+ +

EdgesList = geompy.SubShapeAll(box2, + geompy.ShapeType["EDGE"])

+ +

 

+ +

aComp = geompy.MakeCompound( + [box1, box2] )

+ +

idComp = geompy.addToStudy( + aComp, "Two faces" )

+ +

aCompobj  = + salome.IDToObject( idComp )

+ +

 

+ +

# create a mesh on two + faces

+ +

mesh = smesh.Mesh(aCompobj, + "Two faces : quadrangle mesh")

+ +

algo = mesh.Segment()

+ +

 

+ +

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

+ +

algo.NumberOfSegments(2)

+ +

 

+ +

# create a quadrangle 2D + algorithm for faces

+ +

mesh.Quadrangle()

+ +

 

+ +

# create a local hypothesis

+ +

algo = mesh.Segment(EdgesList[8])

+ +

 

+ +

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

+ +

algo.NumberOfSegments(4)

+ +

 

+ +

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

+ +

algo.Propagation()

+ +

mesh.Compute()

+ +

 

+ +

# sew free borders

+ +

anEditor = mesh.GetMesh().GetMeshEditor()

+ +

anEditor.SewSideElements([69, + 70, 71, 72], [91, 92, 89, 90], 8, 38, 23, 58)

+ +

salome.sg.updateObjBrowser(1) +

+ + + + diff --git a/doc/salome/gui/SMESH/transparency.htm b/doc/salome/gui/SMESH/transparency.htm new file mode 100755 index 000000000..701b47a01 --- /dev/null +++ b/doc/salome/gui/SMESH/transparency.htm @@ -0,0 +1,92 @@ + + + + + +Transparency + + + + + + + + + + + +

Transparency

+ +

+ +

 

+ +

Using this slider you can set the transparency of shading. Absolutely + transparent shading will be invisible. By default it is absolutely opaque. +  

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/viewing_meshes.htm b/doc/salome/gui/SMESH/viewing_meshes.htm new file mode 100755 index 000000000..d6a576e1a --- /dev/null +++ b/doc/salome/gui/SMESH/viewing_meshes.htm @@ -0,0 +1,248 @@ + + + + + +Viewing Meshes + + + + + + + + + + +

Viewing Meshes

+ +

Viewing Mesh Infos

+ +

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 one 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)

+ +

print "Information about mesh:"

+ +

print "Number of nodes       : + ", mesh.NbNodes()

+ +

print "Number of edges       : + ", mesh.NbEdges()

+ +

print "Number of faces       : + ", mesh.NbFaces()

+ +

print "Number of triangles   : + ", mesh.NbTriangles()

+ +

print "Number of quadrangles : ", + mesh.NbQuadrangles()

+ +

print "Number of polygons    : + ", mesh.NbPolygons()

+ +

print "Number of volumes     : + ", mesh.NbVolumes()

+ +

print "Number of tetrahedrons: ", + mesh.NbTetras()

+ +

print "Number of hexahedrons : ", + mesh.NbHexas()

+ +

print "Number of prisms      : + ", mesh.NbPrisms()

+ +

print "Number of pyramids    : + ", mesh.NbPyramids()

+ +

print "Number of polyhedrons : ", + mesh.NbPolyhedrons()

+ +

salome.sg.updateObjBrowser(1)

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/webhelp.cab b/doc/salome/gui/SMESH/webhelp.cab new file mode 100755 index 000000000..b942f642f Binary files /dev/null and b/doc/salome/gui/SMESH/webhelp.cab differ diff --git a/doc/salome/gui/SMESH/webhelp.jar b/doc/salome/gui/SMESH/webhelp.jar new file mode 100755 index 000000000..53b266636 Binary files /dev/null and b/doc/salome/gui/SMESH/webhelp.jar differ diff --git a/doc/salome/gui/SMESH/whcsh_home.htm b/doc/salome/gui/SMESH/whcsh_home.htm new file mode 100755 index 000000000..38f71d169 --- /dev/null +++ b/doc/salome/gui/SMESH/whcsh_home.htm @@ -0,0 +1,600 @@ + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/whcshdata.htm b/doc/salome/gui/SMESH/whcshdata.htm new file mode 100755 index 000000000..2964043b7 --- /dev/null +++ b/doc/salome/gui/SMESH/whcshdata.htm @@ -0,0 +1,87 @@ + + +SMESH reference manual + + + + + + + + + + diff --git a/doc/salome/gui/SMESH/whdata/whftdata.js b/doc/salome/gui/SMESH/whdata/whftdata.js new file mode 100755 index 000000000..071ae6fc7 --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whftdata.js @@ -0,0 +1,25 @@ +// WebHelp 5.10.001 +var gTEA = new Array(); +function aTE(sTopicTitle, sTopicURL) +{ + var len = gTEA.length; + gTEA[len] = new topicEntry(sTopicTitle, sTopicURL); +} + +function topicEntry(sTopicTitle, sTopicURL) +{ + this.sTopicTitle = sTopicTitle; + this.sTopicURL = sTopicURL; +} + +function window_OnLoad() +{ + if (parent && parent != this) { + if (parent.putFtsTData) + { + parent.putFtsTData(gTEA); + } + } +} + +window.onload = window_OnLoad; \ No newline at end of file diff --git a/doc/salome/gui/SMESH/whdata/whftdata0.htm b/doc/salome/gui/SMESH/whdata/whftdata0.htm new file mode 100755 index 000000000..3ecd68c6c --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whftdata0.htm @@ -0,0 +1,84 @@ + + + + + + + + + + + diff --git a/doc/salome/gui/SMESH/whdata/whfts.htm b/doc/salome/gui/SMESH/whdata/whfts.htm new file mode 100755 index 000000000..1b6176ed0 --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whfts.htm @@ -0,0 +1,18 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/whdata/whfts.js b/doc/salome/gui/SMESH/whdata/whfts.js new file mode 100755 index 000000000..2b6678690 --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whfts.js @@ -0,0 +1,40 @@ +// WebHelp 5.10.001 +var gaFileMapping = new Array(); +var gaFileTopicMapping = new Array(); + +function fileMapping(sStartKey, sEndKey, sFileName) +{ + this.sStartKey = sStartKey; + this.sEndKey = sEndKey; + this.sFileName = sFileName; + this.aFtsKeys = null; +} + +function fileTopicMapping(nIdBegin, nIdEnd, sFileName) +{ + this.nBegin = nIdBegin; + this.nEnd = nIdEnd; + this.sFileName = sFileName; + this.aTopics = null; +} + + +function iWM(sStartKey, sEndKey, sFileName) +{ + gaFileMapping[gaFileMapping.length] = new fileMapping(sStartKey, sEndKey, sFileName); +} + +function window_OnLoad() +{ + if (parent && parent != this && parent.ftsReady) + { + parent.ftsReady(gaFileMapping, gaFileTopicMapping); + } +} + +function iTM(nIdBegin, nIdEnd, sFileName) +{ + gaFileTopicMapping[gaFileTopicMapping.length] = new fileTopicMapping(nIdBegin, nIdEnd, sFileName); +} + +window.onload = window_OnLoad; diff --git a/doc/salome/gui/SMESH/whdata/whfwdata.js b/doc/salome/gui/SMESH/whdata/whfwdata.js new file mode 100755 index 000000000..e9e8bc6c1 --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whfwdata.js @@ -0,0 +1,37 @@ +// WebHelp 5.10.001 +var gWEA = new Array(); +function aWE() +{ + var len = gWEA.length; + gWEA[len] = new ftsEntry(aWE.arguments); +} + +function ftsEntry(fn_arguments) +{ + if (fn_arguments.length && fn_arguments.length >= 1) + { + this.sItemName = fn_arguments[0]; + this.aTopics = null; + var nLen = fn_arguments.length; + if (nLen > 1) + { + this.aTopics = new Array(); + for (var i = 0; i < nLen - 1; i ++ ) + { + this.aTopics[i] = fn_arguments[i + 1]; + } + } + } +} + +function window_OnLoad() +{ + if (parent && parent != this) { + if (parent.putFtsWData) + { + parent.putFtsWData(gWEA); + } + } +} + +window.onload = window_OnLoad; \ No newline at end of file diff --git a/doc/salome/gui/SMESH/whdata/whfwdata0.htm b/doc/salome/gui/SMESH/whdata/whfwdata0.htm new file mode 100755 index 000000000..dfe30b817 --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whfwdata0.htm @@ -0,0 +1,1148 @@ + + + + + + + + + + + diff --git a/doc/salome/gui/SMESH/whdata/whgdata.js b/doc/salome/gui/SMESH/whdata/whgdata.js new file mode 100755 index 000000000..77e0107f3 --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whgdata.js @@ -0,0 +1,26 @@ +// WebHelp 5.10.001 +var gIEA = new Array(); +function aGE(sName, sDef) +{ + var len = gIEA.length; + gIEA[len] = new gloEntry(sName, sDef); +} + +function gloEntry(sName, sDef) +{ + this.sName = sName; + this.sDef = sDef; + this.nNKOff = 0; +} + +function window_OnLoad() +{ + if (parent && parent != this) { + if (parent.putData) + { + parent.putData(gIEA); + } + } +} + +window.onload = window_OnLoad; \ No newline at end of file diff --git a/doc/salome/gui/SMESH/whdata/whgdata0.htm b/doc/salome/gui/SMESH/whdata/whgdata0.htm new file mode 100755 index 000000000..9d256b1a8 --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whgdata0.htm @@ -0,0 +1,33 @@ + + + + + + + + + + + diff --git a/doc/salome/gui/SMESH/whdata/whglo.htm b/doc/salome/gui/SMESH/whdata/whglo.htm new file mode 100755 index 000000000..dc5a67786 --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whglo.htm @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/whdata/whglo.js b/doc/salome/gui/SMESH/whdata/whglo.js new file mode 100755 index 000000000..e0519afcb --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whglo.js @@ -0,0 +1,34 @@ +// WebHelp 5.10.001 +var gaFileMapping = new Array(); +function fileMapping(sBK, sEK, sFileName, nNum) +{ + this.sBK = sBK; + this.sEK = sEK; + this.sFileName = sFileName; + this.aKs = null; + this.nNum = nNum; + this.oUsedItems = null; +} + + +function iFM(sBK, sEK, sFileName, nNum) +{ + var i = gaFileMapping.length; + gaFileMapping[i] = new fileMapping(sBK, sEK, sFileName, nNum); + if (i == 0) { + gaFileMapping[i].nTotal = nNum; + } + else { + gaFileMapping[i].nTotal = nNum + gaFileMapping[i - 1].nTotal; + } +} + +function window_OnLoad() +{ + if (parent && parent != this && parent.projReady) + { + parent.projReady(gaFileMapping); + } +} + +window.onload = window_OnLoad; diff --git a/doc/salome/gui/SMESH/whdata/whidata.js b/doc/salome/gui/SMESH/whdata/whidata.js new file mode 100755 index 000000000..9f0eb15ed --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whidata.js @@ -0,0 +1,89 @@ +// WebHelp 5.10.001 +// const strings +var gIEA = new Array(); +function aIE() +{ + var len = gIEA.length; + gIEA[len] = new indexEntry(aIE.arguments); +} + +function topic(sName, sURL) +{ + this.sName = sName; + this.sURL = sURL; +} + +function indexEntry(fn_arguments) +{ + if (fn_arguments.length && fn_arguments.length >= 3) + { + this.nType = fn_arguments[0]; + this.nPKOff = 0; + this.nNKOff = fn_arguments[1]; + this.sName = fn_arguments[2]; + this.aTopics = null; + var nLen = fn_arguments.length; + if (Math.floor(nLen / 2) * 2 == nLen) + { + this.sTarget = fn_arguments[3]; + if (nLen > 5) + { + this.aTopics = new Array(); + for (var i = 0; i < (nLen - 5)/2; i++) + { + this.aTopics[i] = new topic(fn_arguments[i * 2 + 4], fn_arguments[i * 2 + 5]); + } + } + + } + else + { + if (nLen > 4) + { + this.aTopics = new Array(); + for (var i = 0; i < (nLen - 4)/2; i++) + { + this.aTopics[i] = new topic(fn_arguments[i * 2 + 3], fn_arguments[i * 2 + 4]); + } + } + } + } +} + +function getIndexTopicMappingList(nItemIndex) +{ + var sTopics = ""; + if (gIEA.length > nItemIndex) + { + if (gIEA[nItemIndex].aTopics) + { + var i = 0; + var nLen = gIEA[nItemIndex].aTopics.length; + for (i = 0; i < nLen; i ++) + { + sTopics += "," + gIEA[nItemIndex].aTopics[i]; + } + } + } + return sTopics; +} + +function window_OnLoad() +{ + if (parent && parent != this) { + if (parent.putData) + { + for (var i = 0; i < gIEA.length; i ++ ) + { + if (gIEA[i].nNKOff != 0 && i + gIEA[i].nNKOff + 1 < gIEA.length) + { + + gIEA[i + gIEA[i].nNKOff + 1].nPKOff = gIEA[i].nNKOff; + } + } + parent.putData(gIEA); + } + } +} + +window.onload = window_OnLoad; \ No newline at end of file diff --git a/doc/salome/gui/SMESH/whdata/whidx.htm b/doc/salome/gui/SMESH/whdata/whidx.htm new file mode 100755 index 000000000..0a0deedd0 --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whidx.htm @@ -0,0 +1,15 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/whdata/whidx.js b/doc/salome/gui/SMESH/whdata/whidx.js new file mode 100755 index 000000000..e0519afcb --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whidx.js @@ -0,0 +1,34 @@ +// WebHelp 5.10.001 +var gaFileMapping = new Array(); +function fileMapping(sBK, sEK, sFileName, nNum) +{ + this.sBK = sBK; + this.sEK = sEK; + this.sFileName = sFileName; + this.aKs = null; + this.nNum = nNum; + this.oUsedItems = null; +} + + +function iFM(sBK, sEK, sFileName, nNum) +{ + var i = gaFileMapping.length; + gaFileMapping[i] = new fileMapping(sBK, sEK, sFileName, nNum); + if (i == 0) { + gaFileMapping[i].nTotal = nNum; + } + else { + gaFileMapping[i].nTotal = nNum + gaFileMapping[i - 1].nTotal; + } +} + +function window_OnLoad() +{ + if (parent && parent != this && parent.projReady) + { + parent.projReady(gaFileMapping); + } +} + +window.onload = window_OnLoad; diff --git a/doc/salome/gui/SMESH/whdata/whtdata.js b/doc/salome/gui/SMESH/whdata/whtdata.js new file mode 100755 index 000000000..d5428a7de --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whtdata.js @@ -0,0 +1,64 @@ +// WebHelp 5.10.001 +var gTEA = new Array(); +function aTE() +{ + gTEA[gTEA.length] = new tocEntry(aTE.arguments); +} + +function tocEntry(fn_arguments) +{ + if (fn_arguments.length < 3) + { + alert ("data format wrong!!!"); + return; + } + + this.nType = fn_arguments[0]; + this.nContents = fn_arguments[1]; + this.sItemName = fn_arguments[2]; + + if (this.nType == 1 || this.nType == 2 || this.nType == 16) + { + if (fn_arguments.length > 3) + { + this.sItemURL = fn_arguments[3]; + if (fn_arguments.length > 4) + { + this.sTarget = fn_arguments[4]; + if (fn_arguments.length > 5) + this.sIconRef = fn_arguments[5]; + } + } + } + if (this.nType == 4 || this.nType == 8) + { + if (fn_arguments.length > 3) + { + this.sRefURL = fn_arguments[3]; + if (this.nType == 4) + { + if(this.sRefURL.lastIndexOf("/")!=this.sRefURL.length-1) + this.sRefURL+="/"; + } + if (fn_arguments.length > 4) + { + this.sItemURL = fn_arguments[4]; + if (fn_arguments.length > 5) + { + this.sTarget = fn_arguments[5]; + if (fn_arguments.length > 6) + this.sIconRef = fn_arguments[6]; + } + } + } + } +} + + +function window_OnLoad() +{ + if (parent && parent != this && parent.putData) { + parent.putData(gTEA); + } +} +window.onload = window_OnLoad; \ No newline at end of file diff --git a/doc/salome/gui/SMESH/whdata/whtdata0.htm b/doc/salome/gui/SMESH/whdata/whtdata0.htm new file mode 100755 index 000000000..19d460aee --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whtdata0.htm @@ -0,0 +1,90 @@ + + + + + + + + + + + diff --git a/doc/salome/gui/SMESH/whdata/whtoc.htm b/doc/salome/gui/SMESH/whdata/whtoc.htm new file mode 100755 index 000000000..54e0cbf26 --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whtoc.htm @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/whdata/whtoc.js b/doc/salome/gui/SMESH/whdata/whtoc.js new file mode 100755 index 000000000..163d8cc9f --- /dev/null +++ b/doc/salome/gui/SMESH/whdata/whtoc.js @@ -0,0 +1,31 @@ +// WebHelp 5.10.001 +// const strings +var gaProj = new Array(); +var gsRoot = ""; + +function setRoot(sRoot) +{ + gsRoot = sRoot +} + +function aPE(sProjPath, sRootPath) +{ + gaProj[gaProj.length] = new tocProjEntry(sProjPath, sRootPath); +} + +function tocProjEntry(sProjPath, sRootPath) +{ + if(sProjPath.lastIndexOf("/")!=sProjPath.length-1) + sProjPath+="/"; + this.sPPath = sProjPath; + this.sRPath = sRootPath; +} + + +function window_OnLoad() +{ + if (parent && parent != this && parent.projReady) { + parent.projReady(gsRoot, gaProj); + } +} +window.onload = window_OnLoad; \ No newline at end of file diff --git a/doc/salome/gui/SMESH/whfbody.htm b/doc/salome/gui/SMESH/whfbody.htm new file mode 100755 index 000000000..86d8e63db --- /dev/null +++ b/doc/salome/gui/SMESH/whfbody.htm @@ -0,0 +1,37 @@ + + +Search Result + + + + + + + + + + + + + + + + + diff --git a/doc/salome/gui/SMESH/whfdhtml.htm b/doc/salome/gui/SMESH/whfdhtml.htm new file mode 100755 index 000000000..236beec73 --- /dev/null +++ b/doc/salome/gui/SMESH/whfdhtml.htm @@ -0,0 +1,30 @@ + + +Search Frame + + + + + + + + + diff --git a/doc/salome/gui/SMESH/whfform.htm b/doc/salome/gui/SMESH/whfform.htm new file mode 100755 index 000000000..f592a738d --- /dev/null +++ b/doc/salome/gui/SMESH/whfform.htm @@ -0,0 +1,136 @@ + + +Search Form + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/whfhost.js b/doc/salome/gui/SMESH/whfhost.js new file mode 100755 index 000000000..167acc459 --- /dev/null +++ b/doc/salome/gui/SMESH/whfhost.js @@ -0,0 +1,945 @@ +// WebHelp 5.10.003 +var gsSK2=null; +var gsSK=null; +var gsFtsBreakChars="\t\r\n\"\\ .,!@#$%^&*()~'`:;<>?/{}[]|+-=\x85\x92\x93\x94\x95\x96\x97\x99\xA9\xAE\xB7"; +var gnCLF=0; +var gsHelpCannotSearch="Cannot search for that phrase."; +var gsNoTopics="No Topics Found."; +var gsLoadingDivID="LoadingDiv"; +var gsLoadingMsg="Loading data, please wait..."; +var gsSearchMsg="Searching..."; +var gsResultDivID="ResultDiv"; +var gaaFCD=new Array(); +var gaaFTCD=new Array(); +var goCF=null; +var goCTF=null; +var gaTI=null; +var gnCurrentOp=0; +var gbNot=false; +var gbReady=false; +var gnLoadFts=1; +var gnCacheLimits=5; +var gaCCD=new Array(); +var gbXML=false; +var gaData=new Array(); +var gsBgColor="#ffffff"; +var gsBgImage=""; +var gsMargin="0pt"; +var gsIndent="0pt"; +var gsCheckKey=null; +var gnIndexNum=0; +var gaFtsContentsCon=null; +var gaTopicCheckInfo=null; +var gnTopicCheck=0; +var goFont=null; +var goErrFont=null; +var goHoverFont=null; +var gsABgColor="#cccccc"; +var gbWhFHost=false; +var gbFirst=false; + +function setBackground(sBgImage) +{ + gsBgImage=sBgImage; +} + +function setBackgroundcolor(sBgColor) +{ + gsBgColor=sBgColor; +} + +function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration) +{ + var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration); + if(sType=="Normal") + goFont=vFont; + else if(sType=="Error") + goErrFont=vFont; + else if(sType=="Hover") + goHoverFont=vFont; +} + +function setActiveBgColor(sBgColor) +{ + gsABgColor=sBgColor; +} + +function setMargin(sMargin) +{ + gsMargin=sMargin; +} + +function setIndent(sIndent) +{ + gsIndent=sIndent; +} + +function updateCache(oCF) +{ + var len=gaCCD.length; + if(len0&&sURL) + { + var topic=new Object(); + topic.sTopicTitle=name; + topic.sTopicURL=sURL; + aTopics[aTopics.length]=topic; + } + } + oChild=oChild.nextSibling; + } + putFtsTData(aTopics); + } + } + else if(gnLoadFts==2) + { + var node=xmlDoc.lastChild; + if(node) + { + var oChild=node.firstChild; + var aFtsContents=new Array(); + while(oChild) + { + if(oChild.nodeName=="key") + { + var name=oChild.getAttribute("name"); + if(name&&name.length>0) + { + var item=new Object(); + item.sItemName=name; + aFtsContents[aFtsContents.length]=item; + var oChildChild=oChild.firstChild; + while(oChildChild) + { + if(oChildChild.nodeName=="#text") + { + var sIDs=oChildChild.nodeValue; + if(sIDs) + { + var nBPos=0; + do + { + var nPos=sIDs.indexOf(",",nBPos); + var sID=null; + if(nPos!=-1) + sID=sIDs.substring(nBPos,nPos); + else + sID=sIDs.substring(nBPos); + + if(sID) + { + var id=parseInt(sID); + if(!isNaN(id)) + { + if(!item.aTopics) + item.aTopics=new Array(); + item.aTopics[item.aTopics.length]=id; + } + } + nBPos=nPos+1; + }while(nBPos!=0&&nBPos0) + { + document.body.background=gsBgImage; + } + if(gsBgColor&&gsBgColor.length>0) + { + document.body.bgColor=gsBgColor; + } + writeResultDiv(); + loadFts(); + var oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null) + SendMessage(oMsg); +} + +function writeResultDiv() +{ + var sHTML="
"; + document.body.insertAdjacentHTML("beforeEnd",sHTML); +} + +function loadFts() +{ + if(!gbReady) + { + var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null); + if(SendMessage(oResMsg)&&oResMsg.oParam) + { + gbReady=true; + var oProj=oResMsg.oParam; + var aProj=oProj.aProj; + gbXML=oProj.bXML; + if(aProj.length>0) + { + var sLangId=aProj[0].sLangId; + for(var i=0;i=0)&&(gsFtsBreakChars.charAt(nSep)=="|"))){ + gnCurrentOp=0; + gbNot=false; + }else if((sCW=="and")||((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="&"))){ + gnCurrentOp=1; + gbNot=false; + }else if((sCW=="not")|| + ((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="~"))){ + gbNot=!gbNot; + }else if(sCW!=""&&!IsStopWord(sCW,gaFtsStop)){ + var sCurrentStem=GetStem(sCW); + gsCW=sCurrentStem; + ftsFindKeyword(); + return; + } + findOneKey(); + } + else{ + displayTopics(); + checkAgain(); + } +} + +function checkAgain() +{ + gsCheckKey = ""; + gnIndexNum = 0; + gsSK=gsSK2; + gsSK2=null; + if(gsSK!=null) + setTimeout("findFTSKey();",1); +} + +function displayTopics() +{ + var sHTML=""; + var sLine=""; + for(var i=0;i"+_textToHtml(gaTI[i].sTopicTitle)+""; + if(i>>4<<4==i) + { + sHTML+=sLine; + sLine=""; + } + } + if(sLine.length>0) + sHTML+=sLine; + + if(sHTML.length==0) + sHTML="

"+gsNoTopics+"

" + else + sHTML="
"+sHTML+"
"; + + var resultDiv=getElement(gsResultDivID); + if(resultDiv) + resultDiv.innerHTML=sHTML; +} + +function displayMsg(sErrorMsg) +{ + var sHTML="

"+sErrorMsg+"

"; + + var resultDiv=getElement(gsResultDivID); + if(resultDiv) + resultDiv.innerHTML=sHTML; +} + +function ftsFindKeyword() +{ + var sKey=gsCW; + var bNeedLoad=false; + var aFtsContentsCon=null; + var s=0; + if(sKey==null) return; + if(!gsCheckKey||sKey!=gsCheckKey||gnIndexNum==0) + { + aFtsContentsCon=new Array(); + gnCheck=0; + gsCheckKey=sKey; + gnTopicCheck=0; + gaTopicCheckInfo=null; + } + else{ + s=gnIndexNum; + aFtsContentsCon=gaFtsContentsCon; + } + for(var i=gnCheck;i=aTI.length) + { + aLS=gaTI; + aSS=aTI; + } + else + { + aLS=aTI; + aSS=gaTI; + } + var s=0; + for(var i=0;i=0) + { + var nM; + var bFound=false; + do{ + nM=(nB+nE)>>1; + if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)>0) + nE=nM-1; + else if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0) + nB=nM+1; + else + { + bFound=true; + break; + } + }while(nB<=nE); + if(bFound) + insertItemIntoArray(aTI,nM,oTI); + else + { + if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0) + insertItemIntoArray(aTI,nM+1,oTI); + else + insertItemIntoArray(aTI,nM,oTI); + } + } + else + aTI[0]=oTI; +} + +function mergeTopics(aTI1,aTI2) +{ + var i1=0; + var i2=0; + var len1=aTI1.length; + var len2=aTI2.length; + var aTopicNew=new Array(); + var i=0; + while(i1>1; + if(compare(keys[nM].sItemName,sKey)>0) + nE=nM-1; + else if(compare(keys[nM].sItemName,sKey)<0) + nB=nM+1; + else{ + bFound=true; + break; + } + }while(nB<=nE); + if(bFound) + { + if(keys[nM].aTopics) + { + for(var i=0;i>1; + if(aFTCD[nM].nBegin>nTopicId) + nE=nM-1; + else if(aFTCD[nM].nEnd

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