From 860d831343f1f1a42c4ff04fc3592c01150b03db Mon Sep 17 00:00:00 2001 From: admin Date: Thu, 8 Jun 2006 14:05:11 +0000 Subject: [PATCH] This commit was generated by cvs2git to create branch 'WPdev'. Cherrypick from master 2006-06-08 14:05:08 UTC jfa 'Warn about direct SMESH idl usage: smesh python package have to be used where it is possible.': SMESH_version.h.in adm_local/Makefile.in adm_local/unix/config_files/check_SMESH.m4 bin/VERSION.in doc/salome/gui/SMESH/adding_quadratic_nodes_and_elements.htm doc/salome/gui/SMESH/files/vtk_3d_viewer.htm doc/salome/gui/SMESH/image142.gif doc/salome/gui/SMESH/image143.gif doc/salome/gui/SMESH/image144.gif doc/salome/gui/SMESH/image145.gif doc/salome/gui/SMESH/image146.gif doc/salome/gui/SMESH/image147.gif doc/salome/gui/SMESH/image148.gif doc/salome/gui/SMESH/image15.jpg doc/salome/gui/SMESH/image151.gif doc/salome/gui/SMESH/image152.gif doc/salome/gui/SMESH/index.htm doc/salome/gui/SMESH/index_csh.htm doc/salome/gui/SMESH/index_rhc.htm doc/salome/gui/SMESH/merge_elements.htm doc/salome/gui/SMESH/mesh.htm doc/salome/gui/SMESH/pics/advanced_mesh_infos.png doc/salome/gui/SMESH/pics/aqt.png doc/salome/gui/SMESH/pics/automaticlength.png doc/salome/gui/SMESH/pics/createmesh-inv.png doc/salome/gui/SMESH/pics/createmesh-inv2.png doc/salome/gui/SMESH/pics/createmesh-inv3.png doc/salome/gui/SMESH/pics/distributionwithanalyticdensity.png doc/salome/gui/SMESH/pics/distributionwithtabledensity.png doc/salome/gui/SMESH/pics/graduatedaxes1.png doc/salome/gui/SMESH/pics/image100.gif doc/salome/gui/SMESH/pics/image102.gif doc/salome/gui/SMESH/pics/image107.gif doc/salome/gui/SMESH/pics/image108.gif doc/salome/gui/SMESH/pics/image109.gif doc/salome/gui/SMESH/pics/image138.gif doc/salome/gui/SMESH/pics/image139.gif doc/salome/gui/SMESH/pics/image21.gif doc/salome/gui/SMESH/pics/image23.gif doc/salome/gui/SMESH/pics/image27.gif doc/salome/gui/SMESH/pics/image77.gif doc/salome/gui/SMESH/pics/image78.gif doc/salome/gui/SMESH/pics/image89.gif doc/salome/gui/SMESH/pics/image91.gif doc/salome/gui/SMESH/pics/image96.gif doc/salome/gui/SMESH/pics/image97.gif doc/salome/gui/SMESH/pics/image98.gif doc/salome/gui/SMESH/pics/image99.gif doc/salome/gui/SMESH/pics/length-crit.png doc/salome/gui/SMESH/pics/mergeelems.png doc/salome/gui/SMESH/pics/meshexportmesh.png doc/salome/gui/SMESH/pics/meshimportmesh.png doc/salome/gui/SMESH/pics/meshtrianglemergeelem1.png doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh.html doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Algorithm.html doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Algorithm__inherit__graph.jpg doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Hexahedron.html doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Hexahedron__inherit__graph.jpg doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Netgen.html doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Netgen__inherit__graph.jpg doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Quadrangle.html doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Quadrangle__inherit__graph.jpg doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Segment.html doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Segment__Python.html doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Segment__Python__inherit__graph.jpg doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Segment__inherit__graph.jpg doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Tetrahedron.html doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Tetrahedron__inherit__graph.jpg doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Triangle.html doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Triangle__inherit__graph.jpg doc/salome/gui/SMESH/smeshpy_doc/doxygen.css doc/salome/gui/SMESH/smeshpy_doc/namespacesmesh.html doc/salome/gui/SMESH/volume.htm doc/salome/gui/SMESH/whd_dpns.htm doc/salome/gui/SMESH/whd_hide0.gif doc/salome/gui/SMESH/whd_hide1.gif doc/salome/gui/SMESH/whd_hide2.gif doc/salome/gui/SMESH/whd_next0.gif doc/salome/gui/SMESH/whd_next1.gif doc/salome/gui/SMESH/whd_next2.gif doc/salome/gui/SMESH/whd_nvp10.htm doc/salome/gui/SMESH/whd_nvp20.htm doc/salome/gui/SMESH/whd_prev0.gif doc/salome/gui/SMESH/whd_prev1.gif doc/salome/gui/SMESH/whd_prev2.gif doc/salome/gui/SMESH/whd_show0.gif doc/salome/gui/SMESH/whd_show1.gif doc/salome/gui/SMESH/whd_show2.gif doc/salome/gui/SMESH/whd_sync0.gif doc/salome/gui/SMESH/whd_sync1.gif doc/salome/gui/SMESH/whd_sync2.gif doc/salome/gui/SMESH/whd_tab0.gif doc/salome/gui/SMESH/whd_tab1.gif doc/salome/gui/SMESH/whd_tab2.gif doc/salome/gui/SMESH/whd_tab3.gif doc/salome/gui/SMESH/whd_tab4.gif doc/salome/gui/SMESH/whd_tab5.gif doc/salome/gui/SMESH/whd_tab6.gif doc/salome/gui/SMESH/whd_tab7.gif doc/salome/gui/SMESH/whd_tab8.gif doc/salome/gui/SMESH/whd_tabs.htm doc/salome/gui/SMESH/whd_toc1.gif doc/salome/gui/SMESH/whd_toc2.gif doc/salome/gui/SMESH/whd_toc3.gif doc/salome/gui/SMESH/whd_toc4.gif doc/salome/gui/SMESH/whd_topic.xml doc/salome/gui/SMESH/whd_wbsh0.gif doc/salome/gui/SMESH/whd_wbsh1.gif doc/salome/gui/SMESH/whd_wbsh2.gif doc/salome/gui/SMESH/whgdata/whlstf13.htm doc/salome/tui/SMESH/doxyfile.in doc/salome/tui/SMESH/doxyfile_py.in doc/salome/tui/SMESH/sources/footer.html doc/salome/tui/SMESH/sources/static/tree.js.in resources/SMESHCatalog.xml.in resources/SalomeApp.xml resources/mesh_conv_to_quad.png resources/mesh_tree_algo_netgen_2d.png resources/mesh_tree_algo_netgen_2d3d.png resources/mesh_tree_hypo_netgen.png resources/mesh_tree_hypo_netgen_2d.png src/DriverUNV/UNV2417_Structure.cxx src/DriverUNV/UNV2417_Structure.hxx src/SMDS/SMDS_QuadraticEdge.cxx src/SMDS/SMDS_QuadraticEdge.hxx src/SMDS/SMDS_QuadraticFaceOfNodes.cxx src/SMDS/SMDS_QuadraticFaceOfNodes.hxx src/SMDS/SMDS_QuadraticVolumeOfNodes.cxx src/SMDS/SMDS_QuadraticVolumeOfNodes.hxx src/SMDS/SMDS_SetIterator.hxx src/SMESH/SMESH_MesherHelper.cxx src/SMESH/SMESH_MesherHelper.hxx src/SMESHClient/Makefile.in src/SMESHClient/SMESHClientBin.cxx src/SMESHClient/SMESH_Client.cxx src/SMESHClient/SMESH_Client.hxx src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.h src/SMESHGUI/SMESHGUI_ConvToQuadDlg.cxx src/SMESHGUI/SMESHGUI_ConvToQuadDlg.h src/SMESHGUI/SMESHGUI_ConvToQuadOp.cxx src/SMESHGUI/SMESHGUI_ConvToQuadOp.h src/SMESH_SWIG/SMESH_AdvancedEditor.py src/SMESH_SWIG/SMESH_fixation_netgen.py src/SMESH_SWIG/SMESH_mechanic_netgen.py src/SMESH_SWIG/ex21_lamp.py src/StdMeshers/StdMeshers_QuadraticMesh.cxx src/StdMeshers/StdMeshers_QuadraticMesh.hxx src/StdMeshers_I/StdMeshers_QuadraticMesh_i.cxx src/StdMeshers_I/StdMeshers_QuadraticMesh_i.hxx --- SMESH_version.h.in | 34 + adm_local/Makefile.in | 60 + adm_local/unix/config_files/check_SMESH.m4 | 63 + bin/VERSION.in | 1 + .../adding_quadratic_nodes_and_elements.htm | 124 ++ doc/salome/gui/SMESH/files/vtk_3d_viewer.htm | 229 ++++ doc/salome/gui/SMESH/image142.gif | Bin 0 -> 1631 bytes doc/salome/gui/SMESH/image143.gif | Bin 0 -> 3947 bytes doc/salome/gui/SMESH/image144.gif | Bin 0 -> 1010 bytes doc/salome/gui/SMESH/image145.gif | Bin 0 -> 1046 bytes doc/salome/gui/SMESH/image146.gif | Bin 0 -> 3036 bytes doc/salome/gui/SMESH/image147.gif | Bin 0 -> 3292 bytes doc/salome/gui/SMESH/image148.gif | Bin 0 -> 5739 bytes doc/salome/gui/SMESH/image15.jpg | Bin 0 -> 69893 bytes doc/salome/gui/SMESH/image151.gif | Bin 0 -> 5160 bytes doc/salome/gui/SMESH/image152.gif | Bin 0 -> 3127 bytes doc/salome/gui/SMESH/index.htm | 180 +++ doc/salome/gui/SMESH/index_csh.htm | 106 ++ doc/salome/gui/SMESH/index_rhc.htm | 106 ++ doc/salome/gui/SMESH/merge_elements.htm | 101 ++ doc/salome/gui/SMESH/mesh.htm | 216 ++++ .../gui/SMESH/pics/advanced_mesh_infos.png | Bin 0 -> 23883 bytes doc/salome/gui/SMESH/pics/aqt.png | Bin 0 -> 15347 bytes doc/salome/gui/SMESH/pics/automaticlength.png | Bin 0 -> 10040 bytes doc/salome/gui/SMESH/pics/createmesh-inv.png | Bin 0 -> 19734 bytes doc/salome/gui/SMESH/pics/createmesh-inv2.png | Bin 0 -> 20798 bytes doc/salome/gui/SMESH/pics/createmesh-inv3.png | Bin 0 -> 19436 bytes .../pics/distributionwithanalyticdensity.png | Bin 0 -> 27728 bytes .../pics/distributionwithtabledensity.png | Bin 0 -> 30802 bytes doc/salome/gui/SMESH/pics/graduatedaxes1.png | Bin 0 -> 18919 bytes doc/salome/gui/SMESH/pics/image100.gif | Bin 0 -> 1040 bytes doc/salome/gui/SMESH/pics/image102.gif | Bin 0 -> 2409 bytes doc/salome/gui/SMESH/pics/image107.gif | Bin 0 -> 2435 bytes doc/salome/gui/SMESH/pics/image108.gif | Bin 0 -> 1046 bytes doc/salome/gui/SMESH/pics/image109.gif | Bin 0 -> 1009 bytes doc/salome/gui/SMESH/pics/image138.gif | Bin 0 -> 4819 bytes doc/salome/gui/SMESH/pics/image139.gif | Bin 0 -> 5289 bytes doc/salome/gui/SMESH/pics/image21.gif | Bin 0 -> 1540 bytes doc/salome/gui/SMESH/pics/image23.gif | Bin 0 -> 1154 bytes doc/salome/gui/SMESH/pics/image27.gif | Bin 0 -> 1703 bytes doc/salome/gui/SMESH/pics/image77.gif | Bin 0 -> 1022 bytes doc/salome/gui/SMESH/pics/image78.gif | Bin 0 -> 1000 bytes doc/salome/gui/SMESH/pics/image89.gif | Bin 0 -> 1020 bytes doc/salome/gui/SMESH/pics/image91.gif | Bin 0 -> 1010 bytes doc/salome/gui/SMESH/pics/image96.gif | Bin 0 -> 1055 bytes doc/salome/gui/SMESH/pics/image97.gif | Bin 0 -> 1065 bytes doc/salome/gui/SMESH/pics/image98.gif | Bin 0 -> 1047 bytes doc/salome/gui/SMESH/pics/image99.gif | Bin 0 -> 1035 bytes doc/salome/gui/SMESH/pics/length-crit.png | Bin 0 -> 3113 bytes doc/salome/gui/SMESH/pics/mergeelems.png | Bin 0 -> 8680 bytes doc/salome/gui/SMESH/pics/meshexportmesh.png | Bin 0 -> 21288 bytes doc/salome/gui/SMESH/pics/meshimportmesh.png | Bin 0 -> 19532 bytes .../gui/SMESH/pics/meshtrianglemergeelem1.png | Bin 0 -> 2921 bytes .../SMESH/smeshpy_doc/classsmesh_1_1Mesh.html | 1004 +++++++++++++++ .../classsmesh_1_1Mesh__Algorithm.html | 461 +++++++ ...esh_1_1Mesh__Algorithm__inherit__graph.jpg | Bin 0 -> 19672 bytes .../classsmesh_1_1Mesh__Hexahedron.html | 502 ++++++++ ...sh_1_1Mesh__Hexahedron__inherit__graph.jpg | Bin 0 -> 5526 bytes .../classsmesh_1_1Mesh__Netgen.html | 590 +++++++++ ...ssmesh_1_1Mesh__Netgen__inherit__graph.jpg | Bin 0 -> 5126 bytes .../classsmesh_1_1Mesh__Quadrangle.html | 533 ++++++++ ...sh_1_1Mesh__Quadrangle__inherit__graph.jpg | Bin 0 -> 5392 bytes .../classsmesh_1_1Mesh__Segment.html | 858 +++++++++++++ .../classsmesh_1_1Mesh__Segment__Python.html | 910 ++++++++++++++ ...1Mesh__Segment__Python__inherit__graph.jpg | Bin 0 -> 7802 bytes ...smesh_1_1Mesh__Segment__inherit__graph.jpg | Bin 0 -> 8272 bytes .../classsmesh_1_1Mesh__Tetrahedron.html | 553 +++++++++ ...h_1_1Mesh__Tetrahedron__inherit__graph.jpg | Bin 0 -> 5448 bytes .../classsmesh_1_1Mesh__Triangle.html | 578 +++++++++ ...mesh_1_1Mesh__Triangle__inherit__graph.jpg | Bin 0 -> 5149 bytes doc/salome/gui/SMESH/smeshpy_doc/doxygen.css | 218 ++++ .../gui/SMESH/smeshpy_doc/namespacesmesh.html | 268 ++++ doc/salome/gui/SMESH/volume.htm | 123 ++ doc/salome/gui/SMESH/whd_dpns.htm | 43 + doc/salome/gui/SMESH/whd_hide0.gif | Bin 0 -> 190 bytes doc/salome/gui/SMESH/whd_hide1.gif | Bin 0 -> 190 bytes doc/salome/gui/SMESH/whd_hide2.gif | Bin 0 -> 190 bytes doc/salome/gui/SMESH/whd_next0.gif | Bin 0 -> 159 bytes doc/salome/gui/SMESH/whd_next1.gif | Bin 0 -> 159 bytes doc/salome/gui/SMESH/whd_next2.gif | Bin 0 -> 159 bytes doc/salome/gui/SMESH/whd_nvp10.htm | 15 + doc/salome/gui/SMESH/whd_nvp20.htm | 334 +++++ doc/salome/gui/SMESH/whd_prev0.gif | Bin 0 -> 159 bytes doc/salome/gui/SMESH/whd_prev1.gif | Bin 0 -> 159 bytes doc/salome/gui/SMESH/whd_prev2.gif | Bin 0 -> 159 bytes doc/salome/gui/SMESH/whd_show0.gif | Bin 0 -> 199 bytes doc/salome/gui/SMESH/whd_show1.gif | Bin 0 -> 199 bytes doc/salome/gui/SMESH/whd_show2.gif | Bin 0 -> 199 bytes doc/salome/gui/SMESH/whd_sync0.gif | Bin 0 -> 231 bytes doc/salome/gui/SMESH/whd_sync1.gif | Bin 0 -> 231 bytes doc/salome/gui/SMESH/whd_sync2.gif | Bin 0 -> 231 bytes doc/salome/gui/SMESH/whd_tab0.gif | Bin 0 -> 285 bytes doc/salome/gui/SMESH/whd_tab1.gif | Bin 0 -> 237 bytes doc/salome/gui/SMESH/whd_tab2.gif | Bin 0 -> 226 bytes doc/salome/gui/SMESH/whd_tab3.gif | Bin 0 -> 209 bytes doc/salome/gui/SMESH/whd_tab4.gif | Bin 0 -> 198 bytes doc/salome/gui/SMESH/whd_tab5.gif | Bin 0 -> 221 bytes doc/salome/gui/SMESH/whd_tab6.gif | Bin 0 -> 212 bytes doc/salome/gui/SMESH/whd_tab7.gif | Bin 0 -> 236 bytes doc/salome/gui/SMESH/whd_tab8.gif | Bin 0 -> 225 bytes doc/salome/gui/SMESH/whd_tabs.htm | 533 ++++++++ doc/salome/gui/SMESH/whd_toc1.gif | Bin 0 -> 153 bytes doc/salome/gui/SMESH/whd_toc2.gif | Bin 0 -> 173 bytes doc/salome/gui/SMESH/whd_toc3.gif | Bin 0 -> 158 bytes doc/salome/gui/SMESH/whd_toc4.gif | Bin 0 -> 953 bytes doc/salome/gui/SMESH/whd_topic.xml | 85 ++ doc/salome/gui/SMESH/whd_wbsh0.gif | Bin 0 -> 260 bytes doc/salome/gui/SMESH/whd_wbsh1.gif | Bin 0 -> 260 bytes doc/salome/gui/SMESH/whd_wbsh2.gif | Bin 0 -> 260 bytes doc/salome/gui/SMESH/whgdata/whlstf13.htm | 46 + doc/salome/tui/SMESH/doxyfile.in | 242 ++++ doc/salome/tui/SMESH/doxyfile_py.in | 242 ++++ doc/salome/tui/SMESH/sources/footer.html | 5 + .../tui/SMESH/sources/static/tree.js.in | 29 + resources/SMESHCatalog.xml.in | 171 +++ resources/SalomeApp.xml | 47 + resources/mesh_conv_to_quad.png | Bin 0 -> 226 bytes resources/mesh_tree_algo_netgen_2d.png | Bin 0 -> 225 bytes resources/mesh_tree_algo_netgen_2d3d.png | Bin 0 -> 278 bytes resources/mesh_tree_hypo_netgen.png | Bin 0 -> 278 bytes resources/mesh_tree_hypo_netgen_2d.png | Bin 0 -> 225 bytes src/DriverUNV/UNV2417_Structure.cxx | 184 +++ src/DriverUNV/UNV2417_Structure.hxx | 49 + src/SMDS/SMDS_QuadraticEdge.cxx | 187 +++ src/SMDS/SMDS_QuadraticEdge.hxx | 62 + src/SMDS/SMDS_QuadraticFaceOfNodes.cxx | 281 +++++ src/SMDS/SMDS_QuadraticFaceOfNodes.hxx | 84 ++ src/SMDS/SMDS_QuadraticVolumeOfNodes.cxx | 347 ++++++ src/SMDS/SMDS_QuadraticVolumeOfNodes.hxx | 130 ++ src/SMDS/SMDS_SetIterator.hxx | 101 ++ src/SMESH/SMESH_MesherHelper.cxx | 698 +++++++++++ src/SMESH/SMESH_MesherHelper.hxx | 265 ++++ src/SMESHClient/Makefile.in | 103 ++ src/SMESHClient/SMESHClientBin.cxx | 30 + src/SMESHClient/SMESH_Client.cxx | 797 ++++++++++++ src/SMESHClient/SMESH_Client.hxx | 79 ++ .../SMESHGUI_AddQuadraticElementDlg.cxx | 1101 +++++++++++++++++ .../SMESHGUI_AddQuadraticElementDlg.h | 132 ++ src/SMESHGUI/SMESHGUI_ConvToQuadDlg.cxx | 130 ++ src/SMESHGUI/SMESHGUI_ConvToQuadDlg.h | 81 ++ src/SMESHGUI/SMESHGUI_ConvToQuadOp.cxx | 286 +++++ src/SMESHGUI/SMESHGUI_ConvToQuadOp.h | 70 ++ src/SMESH_SWIG/SMESH_AdvancedEditor.py | 209 ++++ src/SMESH_SWIG/SMESH_fixation_netgen.py | 75 ++ src/SMESH_SWIG/SMESH_mechanic_netgen.py | 136 ++ src/SMESH_SWIG/ex21_lamp.py | 125 ++ src/StdMeshers/StdMeshers_QuadraticMesh.cxx | 111 ++ src/StdMeshers/StdMeshers_QuadraticMesh.hxx | 65 + .../StdMeshers_QuadraticMesh_i.cxx | 99 ++ .../StdMeshers_QuadraticMesh_i.hxx | 64 + 150 files changed, 15691 insertions(+) create mode 100644 SMESH_version.h.in create mode 100644 adm_local/Makefile.in create mode 100644 adm_local/unix/config_files/check_SMESH.m4 create mode 100755 bin/VERSION.in create mode 100755 doc/salome/gui/SMESH/adding_quadratic_nodes_and_elements.htm create mode 100755 doc/salome/gui/SMESH/files/vtk_3d_viewer.htm create mode 100755 doc/salome/gui/SMESH/image142.gif create mode 100755 doc/salome/gui/SMESH/image143.gif create mode 100755 doc/salome/gui/SMESH/image144.gif create mode 100755 doc/salome/gui/SMESH/image145.gif create mode 100755 doc/salome/gui/SMESH/image146.gif create mode 100755 doc/salome/gui/SMESH/image147.gif create mode 100755 doc/salome/gui/SMESH/image148.gif create mode 100755 doc/salome/gui/SMESH/image15.jpg create mode 100755 doc/salome/gui/SMESH/image151.gif create mode 100755 doc/salome/gui/SMESH/image152.gif create mode 100755 doc/salome/gui/SMESH/index.htm create mode 100755 doc/salome/gui/SMESH/index_csh.htm create mode 100755 doc/salome/gui/SMESH/index_rhc.htm create mode 100755 doc/salome/gui/SMESH/merge_elements.htm create mode 100755 doc/salome/gui/SMESH/mesh.htm create mode 100755 doc/salome/gui/SMESH/pics/advanced_mesh_infos.png create mode 100755 doc/salome/gui/SMESH/pics/aqt.png create mode 100755 doc/salome/gui/SMESH/pics/automaticlength.png create mode 100755 doc/salome/gui/SMESH/pics/createmesh-inv.png create mode 100755 doc/salome/gui/SMESH/pics/createmesh-inv2.png create mode 100755 doc/salome/gui/SMESH/pics/createmesh-inv3.png create mode 100755 doc/salome/gui/SMESH/pics/distributionwithanalyticdensity.png create mode 100755 doc/salome/gui/SMESH/pics/distributionwithtabledensity.png create mode 100755 doc/salome/gui/SMESH/pics/graduatedaxes1.png create mode 100755 doc/salome/gui/SMESH/pics/image100.gif create mode 100755 doc/salome/gui/SMESH/pics/image102.gif create mode 100755 doc/salome/gui/SMESH/pics/image107.gif create mode 100755 doc/salome/gui/SMESH/pics/image108.gif create mode 100755 doc/salome/gui/SMESH/pics/image109.gif create mode 100755 doc/salome/gui/SMESH/pics/image138.gif create mode 100755 doc/salome/gui/SMESH/pics/image139.gif create mode 100755 doc/salome/gui/SMESH/pics/image21.gif create mode 100755 doc/salome/gui/SMESH/pics/image23.gif create mode 100755 doc/salome/gui/SMESH/pics/image27.gif create mode 100755 doc/salome/gui/SMESH/pics/image77.gif create mode 100755 doc/salome/gui/SMESH/pics/image78.gif create mode 100755 doc/salome/gui/SMESH/pics/image89.gif create mode 100755 doc/salome/gui/SMESH/pics/image91.gif create mode 100755 doc/salome/gui/SMESH/pics/image96.gif create mode 100755 doc/salome/gui/SMESH/pics/image97.gif create mode 100755 doc/salome/gui/SMESH/pics/image98.gif create mode 100755 doc/salome/gui/SMESH/pics/image99.gif create mode 100755 doc/salome/gui/SMESH/pics/length-crit.png create mode 100755 doc/salome/gui/SMESH/pics/mergeelems.png create mode 100755 doc/salome/gui/SMESH/pics/meshexportmesh.png create mode 100755 doc/salome/gui/SMESH/pics/meshimportmesh.png create mode 100755 doc/salome/gui/SMESH/pics/meshtrianglemergeelem1.png create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh.html create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Algorithm.html create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Algorithm__inherit__graph.jpg create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Hexahedron.html create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Hexahedron__inherit__graph.jpg create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Netgen.html create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Netgen__inherit__graph.jpg create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Quadrangle.html create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Quadrangle__inherit__graph.jpg create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Segment.html create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Segment__Python.html create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Segment__Python__inherit__graph.jpg create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Segment__inherit__graph.jpg create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Tetrahedron.html create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Tetrahedron__inherit__graph.jpg create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Triangle.html create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Triangle__inherit__graph.jpg create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/doxygen.css create mode 100644 doc/salome/gui/SMESH/smeshpy_doc/namespacesmesh.html create mode 100755 doc/salome/gui/SMESH/volume.htm create mode 100755 doc/salome/gui/SMESH/whd_dpns.htm create mode 100755 doc/salome/gui/SMESH/whd_hide0.gif create mode 100755 doc/salome/gui/SMESH/whd_hide1.gif create mode 100755 doc/salome/gui/SMESH/whd_hide2.gif create mode 100755 doc/salome/gui/SMESH/whd_next0.gif create mode 100755 doc/salome/gui/SMESH/whd_next1.gif create mode 100755 doc/salome/gui/SMESH/whd_next2.gif create mode 100755 doc/salome/gui/SMESH/whd_nvp10.htm create mode 100755 doc/salome/gui/SMESH/whd_nvp20.htm create mode 100755 doc/salome/gui/SMESH/whd_prev0.gif create mode 100755 doc/salome/gui/SMESH/whd_prev1.gif create mode 100755 doc/salome/gui/SMESH/whd_prev2.gif create mode 100755 doc/salome/gui/SMESH/whd_show0.gif create mode 100755 doc/salome/gui/SMESH/whd_show1.gif create mode 100755 doc/salome/gui/SMESH/whd_show2.gif create mode 100755 doc/salome/gui/SMESH/whd_sync0.gif create mode 100755 doc/salome/gui/SMESH/whd_sync1.gif create mode 100755 doc/salome/gui/SMESH/whd_sync2.gif create mode 100755 doc/salome/gui/SMESH/whd_tab0.gif create mode 100755 doc/salome/gui/SMESH/whd_tab1.gif create mode 100755 doc/salome/gui/SMESH/whd_tab2.gif create mode 100755 doc/salome/gui/SMESH/whd_tab3.gif create mode 100755 doc/salome/gui/SMESH/whd_tab4.gif create mode 100755 doc/salome/gui/SMESH/whd_tab5.gif create mode 100755 doc/salome/gui/SMESH/whd_tab6.gif create mode 100755 doc/salome/gui/SMESH/whd_tab7.gif create mode 100755 doc/salome/gui/SMESH/whd_tab8.gif create mode 100755 doc/salome/gui/SMESH/whd_tabs.htm create mode 100755 doc/salome/gui/SMESH/whd_toc1.gif create mode 100755 doc/salome/gui/SMESH/whd_toc2.gif create mode 100755 doc/salome/gui/SMESH/whd_toc3.gif create mode 100755 doc/salome/gui/SMESH/whd_toc4.gif create mode 100755 doc/salome/gui/SMESH/whd_topic.xml create mode 100755 doc/salome/gui/SMESH/whd_wbsh0.gif create mode 100755 doc/salome/gui/SMESH/whd_wbsh1.gif create mode 100755 doc/salome/gui/SMESH/whd_wbsh2.gif create mode 100755 doc/salome/gui/SMESH/whgdata/whlstf13.htm create mode 100755 doc/salome/tui/SMESH/doxyfile.in create mode 100755 doc/salome/tui/SMESH/doxyfile_py.in create mode 100755 doc/salome/tui/SMESH/sources/footer.html create mode 100755 doc/salome/tui/SMESH/sources/static/tree.js.in create mode 100644 resources/SMESHCatalog.xml.in create mode 100644 resources/SalomeApp.xml create mode 100755 resources/mesh_conv_to_quad.png create mode 100755 resources/mesh_tree_algo_netgen_2d.png create mode 100644 resources/mesh_tree_algo_netgen_2d3d.png create mode 100644 resources/mesh_tree_hypo_netgen.png create mode 100644 resources/mesh_tree_hypo_netgen_2d.png create mode 100644 src/DriverUNV/UNV2417_Structure.cxx create mode 100644 src/DriverUNV/UNV2417_Structure.hxx create mode 100644 src/SMDS/SMDS_QuadraticEdge.cxx create mode 100644 src/SMDS/SMDS_QuadraticEdge.hxx create mode 100644 src/SMDS/SMDS_QuadraticFaceOfNodes.cxx create mode 100644 src/SMDS/SMDS_QuadraticFaceOfNodes.hxx create mode 100644 src/SMDS/SMDS_QuadraticVolumeOfNodes.cxx create mode 100644 src/SMDS/SMDS_QuadraticVolumeOfNodes.hxx create mode 100644 src/SMDS/SMDS_SetIterator.hxx create mode 100644 src/SMESH/SMESH_MesherHelper.cxx create mode 100644 src/SMESH/SMESH_MesherHelper.hxx create mode 100644 src/SMESHClient/Makefile.in create mode 100644 src/SMESHClient/SMESHClientBin.cxx create mode 100644 src/SMESHClient/SMESH_Client.cxx create mode 100644 src/SMESHClient/SMESH_Client.hxx create mode 100644 src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx create mode 100644 src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.h create mode 100644 src/SMESHGUI/SMESHGUI_ConvToQuadDlg.cxx create mode 100644 src/SMESHGUI/SMESHGUI_ConvToQuadDlg.h create mode 100644 src/SMESHGUI/SMESHGUI_ConvToQuadOp.cxx create mode 100644 src/SMESHGUI/SMESHGUI_ConvToQuadOp.h create mode 100644 src/SMESH_SWIG/SMESH_AdvancedEditor.py create mode 100644 src/SMESH_SWIG/SMESH_fixation_netgen.py create mode 100644 src/SMESH_SWIG/SMESH_mechanic_netgen.py create mode 100644 src/SMESH_SWIG/ex21_lamp.py create mode 100644 src/StdMeshers/StdMeshers_QuadraticMesh.cxx create mode 100644 src/StdMeshers/StdMeshers_QuadraticMesh.hxx create mode 100644 src/StdMeshers_I/StdMeshers_QuadraticMesh_i.cxx create mode 100644 src/StdMeshers_I/StdMeshers_QuadraticMesh_i.hxx diff --git a/SMESH_version.h.in b/SMESH_version.h.in new file mode 100644 index 000000000..85259c4e3 --- /dev/null +++ b/SMESH_version.h.in @@ -0,0 +1,34 @@ +// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// +// File : SMESH_version.h +// Author : Vadim SANDLER +// Module : SALOME + +#if !defined(__SMESH_VERSION_H__) +#define __SMESH_VERSION_H__ + +/* + SMESH_VERSION is (major << 16) + (minor << 8) + patch. +*/ + +#define SMESH_VERSION_STR "@VERSION@" +#define SMESH_VERSION @XVERSION@ + +#endif // __SMESH_VERSION_H__ diff --git a/adm_local/Makefile.in b/adm_local/Makefile.in new file mode 100644 index 000000000..e2133b49b --- /dev/null +++ b/adm_local/Makefile.in @@ -0,0 +1,60 @@ +# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# source path +top_srcdir=@top_srcdir@ +top_builddir=.. +srcdir=@srcdir@ +VPATH=.:$(srcdir)/adm_local + + +all: resources + +install: + cp -rf @top_srcdir@/adm_local @prefix@ + +bin: + +resources : + cp -rf @top_srcdir@/adm_local $(top_builddir) + +inc: + +lib: + +depend: + +depend_idl: + +install-end: + +install-include: + +install-bin: + +uninstall: + +uninstall-idl: + +distclean: + +clean: + +distclean-other: + diff --git a/adm_local/unix/config_files/check_SMESH.m4 b/adm_local/unix/config_files/check_SMESH.m4 new file mode 100644 index 000000000..f1dbf22f1 --- /dev/null +++ b/adm_local/unix/config_files/check_SMESH.m4 @@ -0,0 +1,63 @@ +# Check availability of SMesh binary distribution +# +# Author : Nicolas REJNERI (OPEN CASCADE, 2003) +# + +AC_DEFUN([CHECK_SMESH],[ + +AC_CHECKING(for SMesh) + +SMesh_ok=no + +SMESH_LDFLAGS="" +SMESH_CXXFLAGS="" + +AC_ARG_WITH(smesh, + [ --with-smesh=DIR root directory path of SMESH installation ], + SMESH_DIR="$withval",SMESH_DIR="") + +if test "x$SMESH_DIR" == "x" ; then + +# no --with-smesh option used + + if test "x$SMESH_ROOT_DIR" != "x" ; then + + # SMESH_ROOT_DIR environment variable defined + SMESH_DIR=$SMESH_ROOT_DIR + + else + + # search SMESH binaries in PATH variable + AC_PATH_PROG(TEMP, libSMESH_Swig.py) + if test "x$TEMP" != "x" ; then + SMESH_BIN_DIR=`dirname $TEMP` + SMESH_DIR=`dirname $SMESH_BIN_DIR` + fi + + fi +# +fi + +if test -f ${SMESH_DIR}/bin/salome/libSMESH_Swig.py ; then + SMesh_ok=yes + AC_MSG_RESULT(Using SMesh module distribution in ${SMESH_DIR}) + + if test "x$SMESH_ROOT_DIR" == "x" ; then + SMESH_ROOT_DIR=${SMESH_DIR} + fi + AC_SUBST(SMESH_ROOT_DIR) + + SMESH_LDFLAGS=-L${SMESH_DIR}/lib${LIB_LOCATION_SUFFIX}/salome + SMESH_CXXFLAGS=-I${SMESH_DIR}/include/salome + + AC_SUBST(SMESH_LDFLAGS) + AC_SUBST(SMESH_CXXFLAGS) + +else + AC_MSG_WARN("Cannot find compiled SMesh module distribution") +fi + +AC_MSG_RESULT(for SMesh: $SMesh_ok) + +])dnl + diff --git a/bin/VERSION.in b/bin/VERSION.in new file mode 100755 index 000000000..fa49d303f --- /dev/null +++ b/bin/VERSION.in @@ -0,0 +1 @@ +THIS IS SALOME - SMESH VERSION: @VERSION@ diff --git a/doc/salome/gui/SMESH/adding_quadratic_nodes_and_elements.htm b/doc/salome/gui/SMESH/adding_quadratic_nodes_and_elements.htm new file mode 100755 index 000000000..86db2586e --- /dev/null +++ b/doc/salome/gui/SMESH/adding_quadratic_nodes_and_elements.htm @@ -0,0 +1,124 @@ + + + + + +Adding Quadratic Nodes and Elements + + + + + + + + + + +

Adding Quadratic Elements

+ +

MESH modules allows you to work with Quadratic + Elements.

+ +

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

+ +

To + add a quadratic element to your mesh:

+ +

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

+ +

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

+ +

+ +

To create any Quadratic + Element specify the nodes which will form your triangle by selecting + them in the 3D viewer with pressed Shift button. Their numbers will appear + in the dialog box as Corner Nodes + (alternatively you can just input numbers in this field without selection).The + edges formed by the corner nodes will appear in the table. To define the + middle nodes for each edge double-click on the respective field and input + the number of the node. All edges and the object formed by them will be + displayed in the Object browser. When all edges are defined you will be + able to click OK or Apply + button to add the element to the mesh.

+ +

 

+ +

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

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/files/vtk_3d_viewer.htm b/doc/salome/gui/SMESH/files/vtk_3d_viewer.htm new file mode 100755 index 000000000..e8ce5413c --- /dev/null +++ b/doc/salome/gui/SMESH/files/vtk_3d_viewer.htm @@ -0,0 +1,229 @@ + + + + + +VTK 3D Viewer + + + + + + + + + + + +

VTK 3D Viewer

+ +

VTK + 3D viewer is the default viewer for Mesh Module, allowing to visualize + meshes. It is also used in Post-Pro module for all 3D presentations except + for Gauss Points.

+ +

 

+ +

The functionalities of + VTK viewer are available via its Viewer Toolbar. Buttons marked with small + downward triangles have extended functionality which can be accessed by + locking on them with left mouse button.  

+ +

 

+ +

+ + + +

 

+ +

+ + + + + + diff --git a/doc/salome/gui/SMESH/image142.gif b/doc/salome/gui/SMESH/image142.gif new file mode 100755 index 0000000000000000000000000000000000000000..2f411e58df22ee7e5b9a497ad0a658a4000d2bd2 GIT binary patch literal 1631 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/image144.gif b/doc/salome/gui/SMESH/image144.gif new file mode 100755 index 0000000000000000000000000000000000000000..3dffd53ff321a40900fcb196439fb4ab14be25b8 GIT binary patch literal 1010 zcmZ?wbh9u|lwgoz_|5ILrGiT1yrAybYUAwjA+SaXG_wL>M90=Y&fB*jdcOdxx z{r`W4|3EwnMnhnDg@6voJD|M4z;T^HmP5v4!-9j&9Ku>LCpIi}X6IEhtI!Bga_r`j zX1GyNu;@^yw6oL~iwTXMY`i{gIs%`ToSdRAej?_A!?RONI_BrrSZ-GLXV6i7#Ithq za-VtJ4NOOGGNk)4@bXCf<(&HT!ZLqpo*7x29WM9!%w^)Z;J|QwNnCMT>Q0A-u*D`9 z!&tjYA2X~CT7Iu*$CS5snTxjg$_xdC57rn-OetFd2l95j#wgH3Y`nL36N# z@dr2-!XSwZdD&RAjV^nzV6xU0++?t#kw|(8f{88@1y1Xq5%l3XJjaI*Jn^$_r%rZP zK{W&bKp1ikia z03<|7LP@qID$0nmOk`J7d{G5Z5mk{>RZvw_HKtNuH5JvDG(?T(H4!xpHBY7hl;^30 zl=9SrzIF`o}y0GCqNMb~9+=y(7gqUVC=0Rv!!FhO9&&In@~V=nVO<}<&&-B%Q! zQs49ZZ35p91Jeu`3;cW#_(72{2puQ%yf6%lM*s5<8HjFg-TngLAK1W}MEc><5LO)R zT29ZtsB9d*eLazE(|1J<^w0kK8rR47?nrcgNxpeCPAa+efr-)FgDXj^r>Qj_Iox#V z@%z^ryNmk{Mpwlladake>wbE{d0A2~Kke*p9gG)d8le2g!tlAZ`Hn=A+_*VfU0OoS z>dD^R#be3SJqhXA$ncS?^E$Z@iH_~Bzhi#-wlg;+)O2*N7Rvg@mRc6OroV5N8g&E8 z{9t+SlgkZUl*9@VVfx*pkNsO#oxXc5txU!iKaA`lhbET2^KC1e!im1J&u?2+rfQ#G eBaK^|k$Y9Sxw+Pg?C+n)*B8}|d@Vf#Eq?(hjSy%6 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/image146.gif b/doc/salome/gui/SMESH/image146.gif new file mode 100755 index 0000000000000000000000000000000000000000..18f22241d741aa80cfe69923cd38948a6e6a8676 GIT binary patch literal 3036 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 Z8fH-wW;GCIvmSPXFWgS~01FFr_J4K}Tkrq? literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/image148.gif b/doc/salome/gui/SMESH/image148.gif new file mode 100755 index 0000000000000000000000000000000000000000..0ef41477720635b13f6246e4c0d3c8e588e94738 GIT binary patch literal 5739 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ℑ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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/image151.gif b/doc/salome/gui/SMESH/image151.gif new file mode 100755 index 0000000000000000000000000000000000000000..5c4a20e9a427109f667718ecf9d56235af53d7f9 GIT binary patch literal 5160 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/image152.gif b/doc/salome/gui/SMESH/image152.gif new file mode 100755 index 0000000000000000000000000000000000000000..2005d3fff09e1228355d651760c46d2ffedf55c1 GIT binary patch literal 3127 zcmb_bi9b~R7rtIZsgMw5$!kl9uC;7orjezLeTX90GI*uz5+y=ehg^hggOn|MdZi?} z6QKz$TI}%_Nm{tS@AWtQ&gV0qJ7>;0&v~Bb+&OAS*3mxAfGVIL5D_sOpO}qD49H@L z=W<5RO1N3gH-_O#leu~^aBz=Az%%_0BOJyv;rPrF~A1U01GFaBg!BLfuSf) z7zy-&wIIVV6vKh9KrUbbiYShuIPeiT4GaLhKszuRs0CI6KLAZI4eS7%fMB2yum)g& zG?)am01vPjU;}8JI1$ke${+`UgNp$pfj+PnWZ1?_M)as}Q{#MiZ`Y zct?zG*g+g&Lm`2*L7KS91`h&w0~)*z;7Y(epb4x}Cf;V^zX0*#kQDD8N^OymFRu_4 zep-9$QG&qV$MPw4#oe)6gk0Y|tt;tC6@_KE%<4;fGX+ShroHuL=2xHZkd>}jDr4oz zam+-$uVz~0%ADOI;cKlBQ}8@YzIzv=Vu-o*x~lLi^* zYAecNWcu64-vmNfBIo(oC5|ykuig`Hgd0(xX4=Md+fW~tJy zwK4Bc@7tuLn>*4L=Mv%D zy1bUeS}XE@(|fVKOr+iatF7P9Cei30lTY5bb5wZ=L=Lu!in@JW_R;1g9tKaj?DKTcvGS2SVdom|$)G9qdfp&MZ$|9NWjiNw+_Lr!9Oq6< zoU)<*)Ue6(dLYI&qF9p3j6N$b36-Ao$Z!MQ_T*xr_nb%4tS%LIR&PfTfTdp zEzqQt1YNMRouvz1m=m?XA=Ahtb6b1S!Wzu7UtdW%jZZ0g`Il+AR_C{l*~cpuIMQ9z z+Lnh3<5k(xe$^{0uY*z+?VZE$?~2k;3rEqs2cK|`lnX0%b+DF8m_A?hY~R$IVBZT4 zx#1%|4&rUa_2zfl*ItTBMidu6&T9Fzr@*5y3hzON+k zoqL%)BiO3dBhV*_N24|F*93v@*P7H%#>)1;0Fg^17xq?H?7}SFYn+AtRDL zd&G;^GZq-5Ih*ciSy47WTYPOgshb6R3|UrMg$LkrLW2=`%irwPRI_+`v8LoV>!&KpGH|K)rT!|KHQ{y2z}iMX5iRPCF*(WXhwP{n*FSB+5v-H>=euHYGhr_V_8|ml=h^ z0s17W+fSK>ww*M3XhR*l#>k{#SXnltp7!=`)bufS$L-M0q^vJS%uLSJASFNdH15|u zO2YE|k;9Q}$V&rm)>Dh>vnlt=F6)@J-elO+#}-?h*y<)}+MnijulpJ6&DYk(so z`ujPu!S}?6F=iEZ3KQ>D)Z6xsUrEclRhc4l
S)? zAXSxqd^bqp*mAcfO=Ew7xa_mnmYeL`jXmf6x?fGKo+jT+ESrj8N~D$tDn?6)ll%TzV~)l2j^TDcGI0kRYMKRsk3Gl ztM5eBOLQ5s=5?~i?v zW7I33Hq)flU%T|xB=_;vaC^!-M(~N|>GX;Gtu{2BLywtOW~2lLV`o#ZW;Jh0deybz z_Y@IkVAT1~k0iylhl}i(Fk>j$p!$QLSIgral~tm4_emliFS>n&Qb$kSZ!E+DpUD3A zsW$Akf_NmWM(BQ_qqR%hC~u3Bv6fo;bg@Wj&YeyZ*QM|XnYZ0jt0|rL)Q)FN=(MXo zw?6lRZYnb~FrA@USG0A%lb*vQIe?0vk7rHjy>-c`ycgc*YxPp+=&X{BZwOq)kf79L z=F^_no8-qH_!4GkZkSBD!IyINW;3;PNanZ}yZW6+@psx4-~NajcU3eUJT2oNq~&b= z;CkT2R!_P9rb824sk&(Uhpam`dV(d5(eHh%&J~YISH)XIR8nQ<*UJmvu1z0_eWdna zaQl&JZf{P$wiAB!JLUgc7p*(V<;Lm_y;7e4F}qQbKgZ}hE$k7u+0+G zG>bnUUTeV9(7@93(lz;Ui&0MQpKZHw`1ZHi6AEnuoBMX?>xT7di_!z_M!cRD1lh-y z&*#7H7_?oUtWS#9NV5Ip9eS>*Y)q9R?diI_evBV|?ykaAZ_M=SI%?98Uaqy~>Px>Y z{@*@@a4fccI^6ekVIkT}tVzv@3u|w5933$2Oi>?8K^(H_RII*xiNu7y@&*V_R99g*HZ0@Egh->{TYV~=shfsflDj=RlD=% zUE4L9o#+fN{bw3t^eekBsV60${hiRIw&!`Gg>L%-SC_&?$AUe37MXS9zr_O#M<;5^ JVj$@7{{UV0;3@zB literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/index.htm b/doc/salome/gui/SMESH/index.htm new file mode 100755 index 000000000..767e2b766 --- /dev/null +++ b/doc/salome/gui/SMESH/index.htm @@ -0,0 +1,180 @@ + + +Mesh Module Reference Manual + + + + + + + + + + + + + diff --git a/doc/salome/gui/SMESH/index_csh.htm b/doc/salome/gui/SMESH/index_csh.htm new file mode 100755 index 000000000..2bd1f6387 --- /dev/null +++ b/doc/salome/gui/SMESH/index_csh.htm @@ -0,0 +1,106 @@ + + +Mesh Module Reference Manual + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/index_rhc.htm b/doc/salome/gui/SMESH/index_rhc.htm new file mode 100755 index 000000000..4e8723907 --- /dev/null +++ b/doc/salome/gui/SMESH/index_rhc.htm @@ -0,0 +1,106 @@ + + +Mesh Module Reference Manual + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/merge_elements.htm b/doc/salome/gui/SMESH/merge_elements.htm new file mode 100755 index 000000000..32b5ebfb8 --- /dev/null +++ b/doc/salome/gui/SMESH/merge_elements.htm @@ -0,0 +1,101 @@ + + + + + +Merge Elements + + + + + + + + + + +

Merging Elements

+ +

This functionality allows to merge coincident elements + of a mesh selectable in the dialog box.

+ +

+ +

In this picture you see a triangle which coincides with one of the elements + of the mesh. After we apply Merge Elements + functionality, the triangle will be completely merged with the mesh.

+ +

+ +

  See + Also a sample TUI Script of a Merge + Elements operation.  

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/mesh.htm b/doc/salome/gui/SMESH/mesh.htm new file mode 100755 index 000000000..be7069d51 --- /dev/null +++ b/doc/salome/gui/SMESH/mesh.htm @@ -0,0 +1,216 @@ + + + + + +mesh + + + + + + + + + + + +

Introduction to MESH

+ +

 

+ +

MESH + module of SALOME is destined for:

+ + + +

+ +

for edges:

+ +
    + + +
+ +

for faces:

+ +
    + + +
+ +

for solids:

+ +
    + + +
+ +

.

+ + + + diff --git a/doc/salome/gui/SMESH/pics/advanced_mesh_infos.png b/doc/salome/gui/SMESH/pics/advanced_mesh_infos.png new file mode 100755 index 0000000000000000000000000000000000000000..f8341e8926fa16fb25a6cd9f5cae42f9fff089ad GIT binary patch literal 23883 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/aqt.png b/doc/salome/gui/SMESH/pics/aqt.png new file mode 100755 index 0000000000000000000000000000000000000000..32e36bd0e5dcc708eda4e4c55f810fc9e82fe23b GIT binary patch literal 15347 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 DBTa5H literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/automaticlength.png b/doc/salome/gui/SMESH/pics/automaticlength.png new file mode 100755 index 0000000000000000000000000000000000000000..d96ffc82dd381434faaea8bea03269feaa19a997 GIT binary patch literal 10040 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/createmesh-inv3.png b/doc/salome/gui/SMESH/pics/createmesh-inv3.png new file mode 100755 index 0000000000000000000000000000000000000000..6c9da9c0ac342319f6a8494602b5ae4925c7f721 GIT binary patch literal 19436 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 H{rCSL?m0qN literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/image100.gif b/doc/salome/gui/SMESH/pics/image100.gif new file mode 100755 index 0000000000000000000000000000000000000000..c44d68ffc6b0d3f5616c278d151d300e5e732579 GIT binary patch literal 1040 zcmZ?wbh9u|lwgox_|5ILrGiT1yrAybYUAuMb*1dc89y@mI`Sa)R-@pI<{rms_ z4F7?66pV(za0~$*kf%U-fq~;IgCvK{iUkV}vTz71MVu&5aBOB3)=JrNVWC5ZpsLz} zh>J>YtlTC=E(sGEkFjd-N;p_-QgLBm7ZaGUbJNn}O$CL9cE5o)NQ+k5}Yh^>p>d`OT6N z8V`zB+}g*=v4L0j*UNyTjiJqA(jw~DS9+#ju3MpC^mv`AX zcI225GA*LWI>sV*v?@zEmr2Jn-|fHHANKV;uixL#>v`UeI0uWfA+A6XAOd~>hr{LN zE!U<}w(Jii!$0o6Y5N z`Fy@WAb9cO#qjX(Y-ou|+8Rht0%w&9F)xSPK zKzcRCZj&Zk4x9&H16bVIhNH)wYuuH&K{o?x$wB2yG^kYKhLi-Iw&B~8DV9*qZ9O^5 zkJ;Cim>buif=d-w7_ll{StBePCyBL^=4l#`Tiv>bGFuU*9`-%erkV(Wz+{!WG-9Jc zFbxghO4rP8WMh$vVy+qp3P?i@sni9_n^_b5kydlr*3-VzoRr_iN%=&p{hhqL9EXJ` zyzT8ljNN_LE~~xaRU3;vsgU)Qop&Mh*_b^^vo3I7t)nXRP`^FMzs0zCBB=qT+zk!I z9C?uLX8(SPxbEMlNmRmaPWXNo>b%YN_co$Ijb6aDGgTLQwS1Jl(B1h~>lTv)gN4sZ z1ibO#O1kBt{h~sw?6hYg#$0lu$jJf8cEykNF5mTh1!cQ9lK&)lQM_T*r8tVlT}nva zu6o(Y+Fid(a@XZc{)gx}$|(zP4v)wVS;Yl}1ZQMU-CvYky%Uz(5zdKdVkV7-!(_Uq ztJHe-W*%naNk?r#os6J}{=+9!Ifc*KXJES+G&M$+D%My8!4v2+(6U1O6^U}?$=bRY z7r++MIW1)iQlT2rU;vg1gf+TM%=2#Dkm`YfsqQqej1irf1Q?>J2W~bcm$p+~Z@agG z5`Z3w+C%hT0&DHN(Cw+I@K9f5-EAiOxhfqEf!M`jV)zZ0(apbfvtOqj9Q#~dRr4uj zil}n=igsVo>eKsC5#&z7Exqlmh<+`^a#gMgJ}Ueb_}x@kflZ90Db|a$zdht%#xwoR z8j`U+1c4n~9<|$Hw2WXCqj^I(gP{l};d=%7f=)6guF~q_*$)B11MEBTU4ia5U+n&Gsrn1gpjoNuIg4$^)m2W8NivES@hi{#x+B5i~xiP?n^36Eh<+(F?@;h;8>y_ciXN_^YL93PmWi>(ExLd$T z+`bSZ;En#Fmv`f<>*LeUw!;TUQonh6MxX2RE1A>X^e`xUeGaP9B;2^ZU*tpnkDf^{ zz4~XmW$@zLJw73B9m@buVNN9?B~kgYb>O?30Q98v-cUNnQm$T>gIIubK&N>>{ao<} z^^M`;S-X7=DQ(}TR(K@2-C zMUN-6sDoQpTZABaYmVac-r-AO<>S9vXrG5@uArl#+LCeLs&l&;m|u%nl`~bxq&3~n zcbBtXc7RPj<3{YpEt#60nSzh)hN)UR3nEghjlICFAg$v#WbFg{1m;eWsc>5F&=k(& z)HZ3a{*vyFEnlXF;P%~8C^nKD1W{_JEz-fx3T-94tq>)9fHk|#Ly0qS2mXj<{ zAxn|>)^o02@>A$@#>B^3$}FKxVyTcLT^T@dm$Y&6(94tVOb8M!fu_^I^eyJI)t?kS z;SK$rio^niYLtse?DSW^qYgs8SZ#oL8eAp3Sb7VPkXdvQaNnbsm**AKsg5NuazP(r zZmZSD8B^Ir=h^-K7v4wUaiXr!Fl8Bu(j8!Wj6EuL)^Yar$5(S1j0e1{SmC3AoG~-b z$JyFaN}W?JznNsp)$#pSLgVi9iph}Kdt)_DK6~pG9SN*+);GP|tlvkjwX;+WU^LXQ zkf~_0wAj;O|2aX!%Zgd;Z~4f_=FgWUGrho0g=xJ+Fb8Cz77?~OQ`Ru1>nA``R~y6b zkw}iW0{3P3U;Lj&p(1WWxS<{m*NzA`J}9*Y$-|0I>W&ga0%K literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/image107.gif b/doc/salome/gui/SMESH/pics/image107.gif new file mode 100755 index 0000000000000000000000000000000000000000..ae9d7f1e65fc0c043d6a96231c5cd773a428e717 GIT binary patch literal 2435 zcmeIx`BT~l8V2w$2nq%*iU-)3;DJFr8m$_m>8{{-;8kxc5|7}8Yiu?sTH4K^W;I4* z#8?kN1r=|_;1T1Ikf!xYP;;P+>y;)R7#mW}dSzSI&i)hoLqGGpzd!TLygp=a*K-Mn zfGMyK{Lelxjf8DjBacy3$Z3@sQe}2b#dmOUAdyI+p`kPyjlp1Czka=>q@<#vg3srR zM53;)u6{nPzrTNUbaZTNY;JCDd5p2Vyu3kzZ5&f=sE|n2G*YEHj%xpydS9&u)W`Ry zKNtA_Sits=8h`u(08<0*u#>($f=Br<6oER?BYa$lwD9Bm-fj4)82x$L;>6v?@!R0Q z8z;$%1P->fEsfWxvXUY8wDw4GIo$uk{Vi&h)3xgO?DWkczJXRX-$l{H?9|yI^9z zCKNScgpbD(^N@hS$OR;GYhj>0Au?%OVb9j*#c=H$gopI1q_^BMdz4h8H`z0#?Chi7 zBt-R@MD^Hz_-{1k#WWt?oyW|Rm}Pp7mwtgO`griLR66tUuMpU8P&^i16@p!cu5z*; zvB8xQ{9Kf8a3vI>Ie`W^UecvR!yTW~RLexH*Twb(ONq!>#U98A;AAjnD`tTnaTv zj9;K>f{{^GewDLm09An`GAe{^mQ0IkXOd<%(;WP_Ww76iCG>qdZDaj^Gb>XW9gF#AD zqKE^pslfzTwQx(VkF20*_P9~AQ9y8HZH-Y4G5l&}R&ADov$t`xe}R(1`}$OhfPQPB zGPbEtzIW>OX?*ae#3G$#1Kf)|RKf};l|Y2PYtNZv#O8hbds>$c?5YO5=NEI)6^2%g zv7r%Qp5|Y+d&F0*PJBI*9O_K$&~Xot*U#&>+wsQFZ;Q(}mSEPv8aKuortI#p7=Fqk zv~zYNi=^Na_#Pr$`~3(2)*c~WsRzPVt8@Gq)c4G3!;fna%!m?~gFH3zE3{lzZO5g? zd}BjJX3n>apN?_gobM*sCh+2{O}nSEg3|0Wu+q+qKJOuQ%9In> zNez3XNN86Ix>amcFxc4n)X68~GLJ&XYShFMTm7kx@}#`)`?n&LG(PwxZzlz}pNk0I z^+)xUK&-lI5lJSgI_Zugi)Ym{z9-Raq`J@*0FZZce8B#Fh(f}Kbt!->5ehH(5RI7c z{1c`Cx!W$fAf&Be`hE#CIg@B(L@$v2EIfM3beSXjJH7Qp^)-+j#yw#9j8BcX-J&dY zudvxN$N1F%Y#!;Rhh;%PlNkm8AWhn! zP0&rL!yPg@0`Z|blpD%11}=iHbw2T@-52Ec0LK=WEoIOeAxdE&ukn`A&8k>v_QK!mSvu)vZD8--47pHD#IiG<)Fafg>|?2%9(%v!l<=bQc~uJ z%ztGw?{!?%yRtvLsw2)B_g~)O?vHE+idpkdmiLDCM>h=Nqzgd#(Zc?N1DVQ)^?2p? LqjR<(5a9k_bnq>7 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/image108.gif b/doc/salome/gui/SMESH/pics/image108.gif new file mode 100755 index 0000000000000000000000000000000000000000..bec69e6620add14e0a0fb50b0db260e1777ce15e GIT binary patch literal 1046 zcmZ?wbh9u|lwpu$_|5C&ZJ=OiCHcI@7<;^*(5zZVdA ze@@{2dmwuM9SHt^|Ns9#Sl=iy8UjN;1av??0ObV+j^7N*95Nmo794Em5Y~!0v0>ri zb^&2A1&50YN4v#UJYUOkF`ntlePj2op6-$PO3#=@wfRWX);r6ku=eCG9tM#UvrE+DcRALINz4g<>9)^aR9`J- zhtAVId`8v*U4qJ|&as$uU*nm6z^jj8Ls^Pt)RxCrrOlVwIW(B%GOzVK?zdsLdH%JX q#`11uUE?E>Tf$3& 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/image139.gif b/doc/salome/gui/SMESH/pics/image139.gif new file mode 100755 index 0000000000000000000000000000000000000000..03943831c52fc6ed4ea9f8c62045033902e36962 GIT binary patch literal 5289 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/image23.gif b/doc/salome/gui/SMESH/pics/image23.gif new file mode 100755 index 0000000000000000000000000000000000000000..5a1216dc6ecbf9b9e598419dbd37f41254a49730 GIT binary patch literal 1154 zcmZ?wbh9u|tY9!;_|5&}UZ3Jv`V&Sf&5lav}JX$1S(tlYHJyHzLt)Evp+l*9eT z#dax@#t!~7teTl@e;6kQF7)V^Q|;Q4d2o^U%wIjbgw_3)^VK(26fn$B<)T zXTQxkb0azW;B<4XYc>|^Zl0O;@mg!tqz~uL&3C-qsu{lW{_GXW!gq5lO(VCj7jL_x zHOVaJ>S|``yKk+_GanwCyxYxtPi67;bBn#_`^kQfI=;D6J%8nlZ7<*I30_a%#{F;C zi%)gh<^TKaK0Z1**E-CPC+vA_-y79yI`{r<^ZN03?y=YmMzdq`b*yq_@?Jl;vL|@) zPW!%~hDEI-vSpWGMM4wzqwBE+V)M%HBtLHbajQ-3R(oO>$E{;Zl?V1}Jnk{MW)bMX GU=08;yt?}U literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/image27.gif b/doc/salome/gui/SMESH/pics/image27.gif new file mode 100755 index 0000000000000000000000000000000000000000..6c8485ca92484aaefe28a6836fa65a05a715fbad GIT binary patch literal 1703 zcmZ?wbh9u|e8rH!@SOn!{{R0Erbmg<5EyYGpab$TC@(N@{AXb1knz~C;9xU{uvW~8 z4GIly0)lou9vc@O?Updkx^tpX>3FN0eV2^qrX`*e75({qR&HAA-OUiOPe)TY#dm^n z@v9>{FF)~ZwHIc4>v<*p;zVcFB%i7+FN2oL&$K$DA-XEGO*r{g%?eY8@J7SUS-jp8 zo<=N;tDmG>z4fizx;X2$xvw{@j@_XB@zvSWW@|63VSoRv)O&`~ogJ38TI*(CfAe6r zVycs#kL02UM`{Fr_sUpoPHUdCe9>B;sxRrQim%%}+byyF@!ojH>Up}mw!A&lp1#dZ zN387ay-DG0_q~6Yr5=rWndi4|;+oGJFU)WEJ1vv*YWVrTO#ZIj zKX(-DmsgLEd-?PG%ZsO%%lvy;{dwi$aQ&G5N&kN{uxUJKU=hoB(8!^-;z1LS*^39w z0&W@)TSUS#9=1xPt$5fbQ>HP!UE$l8_zsn8*CYc}m)*FRpuMW&VWfIln{4-jvoDgG z_8yH;E;Qjf{Qew8Gm%TfNQ7pUiJy)5=&-t@Jc< zX1!R{!U@YYUoD%l&NAxJ>`9YWOq&-tHS%Rx$GLKm#j|&@-k4?ErnP)!KvLJM=2h#u zmaf*@_MauM2^_$HX+_c|r zT5_^$P2r5FY{@RAqTQ3XnUr1$@qJ+C@^1OImyz$bg^8KY*==x9GOsuw_xhyXZ$hD> zMX$|X#qWK)>q}l?v}D+-g(0z}uRWg&{mFIVcKvET0yZmg8%rsv9|0jp(8UZ-rjXM8QZ+{)x`gudRyt?%Q! zgs#s!?2@|tpn7@Uhi{ecd#-f&yH+kS?LKXDB&hYAMgDr>+|(})uaDZ+Uia%L{PARZ R{=c6umapH}#mLBD4FDnp;yVBU literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/image77.gif b/doc/salome/gui/SMESH/pics/image77.gif new file mode 100755 index 0000000000000000000000000000000000000000..ef7a62f32ecc9c77d60f6cc09e7188eb81c4dd2b GIT binary patch literal 1022 zcmZ?wbh9u|lwy!%_|5{{8#!K=A+j|NjjCfp`>*hQJUE0UeN=L3x3J<1vFi zhm6OD1qYisgtcN$Y*=`>T|n6@CSu{DqurvyDhEz%WNPhKaFkk5u)wjAnVqX8=H#S9 zO-yV&bEae}ENx`hjg;GPp!i@TyN&LQlm`sy=lYpA1SA*^9%5L^!om~a@a2U&0~41< ztLB32Fcxm9h@}l*Ra%&t_tf!PZ+pW$C2+48gZ8zon=>&-kkn#8!pM*}pgoaH`tP3PfDhg(PWM=1;$OyZ;p!DLUrT*p> hyt}u(y}d))`^MSb+uz^cr_3Smw`a%4M~sXN)&K>ViW2|; literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/image78.gif b/doc/salome/gui/SMESH/pics/image78.gif new file mode 100755 index 0000000000000000000000000000000000000000..9466aa6ce78d4aec88690831628277599b51aa90 GIT binary patch literal 1000 zcmZ?wbh9u|lxC1*_|5ILrGiT1yrAybYUAuMb*1dc89y@mIIS{;m{{H>@??CYX z`~Uw8|ABZEjE2DQ3IQFEcR+c8f#WQLEQgH8h6M+kIfS)hPHb3sxLrWltfON?qboC; zOvIdy36015YpwZklc&&M@O^xUw0u+|{&u8E;;ZSHu zzrg6q`6ouJ_&~s9wx($+7ba^4EN5IGW>9&lA#{NgtAIj5LQ3PR_+&QL4IAH{+LF~Q zwpa7YGtV6c>96K?URf4CpNolGY)@!IA_Jq4v+S828yhFZd-qfBsR6N$$N;* zP+)B87T{%C5%JN%t%<=btmQ!A!sf~9&a2kEP;m6_)=0L>aG1Qzi-9-9%wxmm1B@&} z*<5QY7dV`lV_Eo)$7)Mv;8G8BubKb`$IA;j7AT#K3~V^R+IgW}$1DX01}3%xT&xF7 zULIqJ<6n_$5So2r6C+y)>+NqVZf`1_Z6x7SVZgLl`|K;%fE^njFJg9@)%$vfQ6h^! zJBL8Sw2e=X@pCY1crEyxenCiIS|j1W=a+{T>dXK5xog{7)*Z#K@13pQ-gN&!Gq=3n KpT&n77_0&5X@{Et literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/image91.gif b/doc/salome/gui/SMESH/pics/image91.gif new file mode 100755 index 0000000000000000000000000000000000000000..9e93c1c720f198df9a35fa5f0cc90246341a5d08 GIT binary patch literal 1010 zcmZ?wbh9u|lwy!#_|5d-onYcI-J2ynp`w z{rm4g@c;Y&{|x_ucod9=z;Fox9gs&rd4YlBI)fsIjK_ur2b(#BwPH?eSm@lwFQ-=H zAjo*MLr9UqjWIKpPcU2 zWLuHL@Hure6O)DA1ItghH_Ho7i90*%VAJ&t$*1S(MmN5_y`%W`xw(dk4h+@+U?hNy literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/image96.gif b/doc/salome/gui/SMESH/pics/image96.gif new file mode 100755 index 0000000000000000000000000000000000000000..4580d5b5cee7f763d12c01f5fd3d4c79d2c6e580 GIT binary patch literal 1055 zcmZ?wbh9u|lwc5N_|5ILrGiT1yrAybYUAuMb*1dc89y@mI+O=!FKb$ffMA2?WG>^jBOMnN8kpI*1QZw+G%!w3(6!6?X{6RPpM$}~ zARzGI(MBGhUn&L(4Gfc6yW~_k4lppXuyCD7;bLICIMpNj-x;gov~U))QahhpTVFCT zvGL8=^D9jE(h?396Ws!bb&ZT1OgtO7FQ(jMEQ}ZXv2wbB=VWHTSuLL1S0*oQ*f?#k z*5yqX+r8E+o!|-44rVHI{$HZKp!D+0OndG%w-UDA-fk?N@>gp&qucHEzR&mVGILrGiT1yrAybYUAuMb*1dc89y@mI+O=!d`3n$PHcR9lud(iMaqIrPn)JOXvLKILrGiT1yrAybYUAuMb*1dc89y@mI+O=!CP|H$9SasZvkEAy8SI#_ z@Nk=;YS5Y!50sAeaH)wsxp7hX!~|(krih)N6g?&~NuLO*JmA2{#KItAP$2ZoVV0R7 zhwFmL>2C8m!`V~~5*iw&vc?6mBs4HEF|pILrGiT1yrAybYUAuMb*1dc89y@mI`Sa)R-@pI<{rms_ z4F7?66pV(za0~$*kf%U-fq~-#gCvK{iUkV}vTz71MeHb0aBOB3)=KF(u+X7{RouhJ zVdEm#9&RTogN6-@UD*T}Wg;9JR6Qrlb2H7@nb2^Si7mluN+kmWBLgD~&w-VbA2czu zG4MnP99Y)K>dGo-8sPASm+0OMUZtu%qUyn9*^XEVF__)MzRd(UDH?qRtBbZd$jlc93 QD!+evlt1r{gaCsz0F~i_6#xJL literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/length-crit.png b/doc/salome/gui/SMESH/pics/length-crit.png new file mode 100755 index 0000000000000000000000000000000000000000..96836cd878d5cb88116d54bad735a44011ef2e97 GIT binary patch literal 3113 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 Ma9zJr_tw4t0`7E2DgXcg literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/mergeelems.png b/doc/salome/gui/SMESH/pics/mergeelems.png new file mode 100755 index 0000000000000000000000000000000000000000..9314da8c345beb0b6e7989033a01f8228152ad74 GIT binary patch literal 8680 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/meshimportmesh.png b/doc/salome/gui/SMESH/pics/meshimportmesh.png new file mode 100755 index 0000000000000000000000000000000000000000..f87250bf462ad954dd984e40951c37f991a3950f GIT binary patch literal 19532 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 D+8gi4 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/meshtrianglemergeelem1.png b/doc/salome/gui/SMESH/pics/meshtrianglemergeelem1.png new file mode 100755 index 0000000000000000000000000000000000000000..0f9bd5215bd8f9109e315a1cbb2eae9bf3931501 GIT binary patch literal 2921 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 Tlu}bb00000NkvXXu0mjfMoXAF literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh.html b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh.html new file mode 100644 index 000000000..b99783934 --- /dev/null +++ b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh.html @@ -0,0 +1,1004 @@ + + +SALOME - SMESH - v.version: smesh.Mesh Class Reference + + + + +

smesh.Mesh Class Reference

Class to define a mesh. +
More... +

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

Public Member Functions

def __init__
 Constructor.
def GetMesh
 Method that returns the mesh.
def GetShape
 Method that returns the shape associated to the mesh.
def MeshDimension
 Returns mesh dimension depending on shape one.
def Segment
 Creates a segment discretization 1D algorithm.
def Triangle
 Creates a triangle 2D algorithm for faces.
def Quadrangle
 Creates a quadrangle 2D algorithm for faces.
def Tetrahedron
 Creates a tetrahedron 3D algorithm for solids.
def Hexahedron
 Creates a hexahedron 3D algorithm for solids.
def Netgen
 Creates a NETGEN-based 2D or 3D independent algorithm (i.e.
def Compute
 Compute the mesh and return the status of the computation.
def AutomaticTetrahedralization
 Compute tetrahedral mesh using AutomaticLength + MEFISTO + NETGEN The parameter fineness [0.
def AutomaticHexahedralization
 Compute hexahedral mesh using AutomaticLength + Quadrangle + Hexahedron The parameter fineness [0.
def RemoveGlobalHypotheses
 Removes all global hypotheses.
def Group
 Create a mesh group based on geometric object grp and give a name, if this parameter is not defined the name is the same as the geometric group name.
def ExportToMED
 Export the mesh in a file with the MED format and choice the version of MED format.
def ExportMED
 Export the mesh in a file with the MED format.
def ExportDAT
 Export the mesh in a file with the DAT format.
def ExportUNV
 Export the mesh in a file with the UNV format.
def ExportSTL
 Export the mesh in a file with the STL format.

Data Fields

 geom
 mesh

Static Public Attributes

int geom = 0
int mesh = 0
+


Detailed Description

+More details. +

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh.__init__   self,
  geom,
  name = 0
+
+ + + + + +
+   + + +

+Creates mesh on the shape geom, sets GUI name of this mesh to name.

Parameters:
+ + + +
geom Shape to be meshed
name Study name of the mesh
+
+
+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh.GetMesh   self  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh.GetShape   self  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh.MeshDimension   self  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh.Segment   self,
  algo = REGULAR,
  geom = 0
+
+ + + + + +
+   + + +

+If the optional algo parameter is not sets, this algorithm is REGULAR. If the optional geom parameter is not sets, this algorithm is global. Otherwise, this algorithm define a submesh based on geom subshape.

Parameters:
+ + + +
algo values are smesh.REGULAR or smesh.PYTHON for discretization via python function
geom If defined, subshape to be meshed
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh.Triangle   self,
  geom = 0
+
+ + + + + +
+   + + +

+If the optional geom parameter is not sets, this algorithm is global. Otherwise, this algorithm define a submesh based on geom subshape.

Parameters:
+ + +
geom If defined, subshape to be meshed
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh.Quadrangle   self,
  geom = 0
+
+ + + + + +
+   + + +

+If the optional geom parameter is not sets, this algorithm is global. Otherwise, this algorithm define a submesh based on geom subshape.

Parameters:
+ + +
geom If defined, subshape to be meshed
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh.Tetrahedron   self,
  algo,
  geom = 0
+
+ + + + + +
+   + + +

+The parameter algo permits to choice the algorithm: NETGEN or GHS3D If the optional geom parameter is not sets, this algorithm is global. Otherwise, this algorithm define a submesh based on geom subshape.

Parameters:
+ + + +
algo values are: smesh.NETGEN, smesh.GHS3D
geom If defined, subshape to be meshed
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh.Hexahedron   self,
  geom = 0
+
+ + + + + +
+   + + +

+If the optional geom parameter is not sets, this algorithm is global. Otherwise, this algorithm define a submesh based on geom subshape.

Parameters:
+ + +
geom If defined, subshape to be meshed
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh.Netgen   self,
  is3D,
  geom = 0
+
+ + + + + +
+   + + +

+needs no discrete boundary). If the optional geom parameter is not sets, this algorithm is global. Otherwise, this algorithm defines a submesh based on geom subshape.

Parameters:
+ + + +
is3D If 0 then algorithm is 2D, otherwise 3D
geom If defined, subshape to be meshed
+
+
+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh.Compute   self  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh.AutomaticTetrahedralization   self,
  fineness = 0
+
+ + + + + +
+   + + +

+-1.] defines mesh fineness

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh.AutomaticHexahedralization   self,
  fineness = 0
+
+ + + + + +
+   + + +

+-1.] defines mesh fineness

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh.RemoveGlobalHypotheses   self  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh.Group   self,
  grp,
  name = ""
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
grp is a geometric group, a vertex, an edge, a face or a solid
name is the name of the mesh group
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh.ExportToMED   self,
  f,
  version,
  opt = 0
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
f is the file name
version values are SMESH.MED_V2_1, SMESH.MED_V2_2
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh.ExportMED   self,
  f,
  opt = 0
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
f is the file name
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh.ExportDAT   self,
  f
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
f is the file name
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh.ExportUNV   self,
  f
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
f is the file name
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh.ExportSTL   self,
  f,
  ascii = 1
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
f is the file name
ascii defined the kind of file contents
+
+
+


Field Documentation

+

+ + + + +
+ + + + +
int smesh.Mesh.geom = 0 [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh.mesh = 0 [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh.geom
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh.mesh
+
+ + + + + +
+   + + +

+

+ + diff --git a/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Algorithm.html b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Algorithm.html new file mode 100644 index 000000000..97d0e0ef7 --- /dev/null +++ b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Algorithm.html @@ -0,0 +1,461 @@ + + +SALOME - SMESH - v.version: smesh.Mesh_Algorithm Class Reference + + + + +

smesh.Mesh_Algorithm Class Reference

Mother class to define algorithm, recommended to don't use directly. +More... +

+Inheritance diagram for smesh.Mesh_Algorithm:

Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

def GetSubMesh
def GetAlgorithm
 Return the wrapped mesher.
def TreatHypoStatus
 Private method.
def Create
 Private method.
def Hypothesis
 Private method.

Data Fields

 mesh
 geom
 subm
 algo

Static Public Attributes

int mesh = 0
int geom = 0
int subm = 0
int algo = 0
+

Detailed Description

+More details. +

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetSubMesh   self  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetAlgorithm   self  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.TreatHypoStatus   self,
  status,
  hypName,
  geomName,
  isAlgo
+
+ + + + + +
+   + + +

+Print error message if a hypothesis was not assigned.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Create   self,
  mesh,
  geom,
  hypo,
  so = "libStdMeshersEngine.so"
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Hypothesis   self,
  hyp,
  args = [],
  so = "libStdMeshersEngine.so"
+
+ + + + + +
+   + + +

+

+


Field Documentation

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.mesh = 0 [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.geom = 0 [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.subm = 0 [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.algo = 0 [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.mesh
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.geom
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.subm
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.algo
+
+ + + + + +
+   + + +

+

+ + diff --git a/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Algorithm__inherit__graph.jpg b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Algorithm__inherit__graph.jpg new file mode 100644 index 0000000000000000000000000000000000000000..39dd1ddf86cae1f86535dc4e372d4c3da36aa562 GIT binary patch literal 19672 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 V>=N+$Ph<(e^JwpX9!QY+{{gXvgW&)G literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Hexahedron.html b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Hexahedron.html new file mode 100644 index 000000000..d177efa43 --- /dev/null +++ b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Hexahedron.html @@ -0,0 +1,502 @@ + + +SALOME - SMESH - v.version: smesh.Mesh_Hexahedron Class Reference + + + + +

smesh.Mesh_Hexahedron Class Reference

Class to define a hexahedron 3D algorithm. +More... +

+Inheritance diagram for smesh.Mesh_Hexahedron:

Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

def __init__
 Private constructor.
def GetSubMesh
def GetAlgorithm
 Return the wrapped mesher.
def TreatHypoStatus
 Private method.
def Create
 Private method.
def Hypothesis
 Private method.

Data Fields

 mesh
 geom
 subm
 algo

Static Public Attributes

int mesh = 0
int geom = 0
int subm = 0
int algo = 0
+

Detailed Description

+More details. +

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Hexahedron.__init__   self,
  mesh,
  geom = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetSubMesh   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetAlgorithm   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.TreatHypoStatus   self,
  status,
  hypName,
  geomName,
  isAlgo
[inherited]
+
+ + + + + +
+   + + +

+Print error message if a hypothesis was not assigned.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Create   self,
  mesh,
  geom,
  hypo,
  so = "libStdMeshersEngine.so"
[inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Hypothesis   self,
  hyp,
  args = [],
  so = "libStdMeshersEngine.so"
[inherited]
+
+ + + + + +
+   + + +

+

+


Field Documentation

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.mesh = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.mesh [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.geom = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.geom [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.subm = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.subm [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.algo = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.algo [inherited]
+
+ + + + + +
+   + + +

+

+ + diff --git a/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Hexahedron__inherit__graph.jpg b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Hexahedron__inherit__graph.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d1e65ac6675d7b7cda598fd0e834ded872a02fb GIT binary patch literal 5526 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 ll8xc9c@-7mGwLx(xrro65|B=ftSnlsAHS^ri% + +SALOME - SMESH - v.version: smesh.Mesh_Netgen Class Reference + + + + +

smesh.Mesh_Netgen Class Reference

Class to define a NETGEN-based 2D or 3D algorithm that need no discrete boundary (i.e. +More... +

+Inheritance diagram for smesh.Mesh_Netgen:

Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

def __init__
 Private constructor.
def Parameters
 Define hypothesis containing parameters of the algorithm.
def GetSubMesh
def GetAlgorithm
 Return the wrapped mesher.
def TreatHypoStatus
 Private method.
def Create
 Private method.
def Hypothesis
 Private method.

Data Fields

 is3D
 mesh
 geom
 subm
 algo

Static Public Attributes

int is3D = 0
int mesh = 0
int geom = 0
int subm = 0
int algo = 0
+

Detailed Description

+independent)

+More details. +

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Netgen.__init__   self,
  mesh,
  is3D,
  geom = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Netgen.Parameters   self  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetSubMesh   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetAlgorithm   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.TreatHypoStatus   self,
  status,
  hypName,
  geomName,
  isAlgo
[inherited]
+
+ + + + + +
+   + + +

+Print error message if a hypothesis was not assigned.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Create   self,
  mesh,
  geom,
  hypo,
  so = "libStdMeshersEngine.so"
[inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Hypothesis   self,
  hyp,
  args = [],
  so = "libStdMeshersEngine.so"
[inherited]
+
+ + + + + +
+   + + +

+

+


Field Documentation

+

+ + + + +
+ + + + +
int smesh.Mesh_Netgen.is3D = 0 [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Netgen.is3D
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.mesh = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.mesh [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.geom = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.geom [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.subm = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.subm [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.algo = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.algo [inherited]
+
+ + + + + +
+   + + +

+

+ + diff --git a/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Netgen__inherit__graph.jpg b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Netgen__inherit__graph.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d82cacddc9186f4ebd5d54f3c6afc5cc892726ac GIT binary patch literal 5126 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 E05smdbN~PV literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Quadrangle.html b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Quadrangle.html new file mode 100644 index 000000000..8febcc801 --- /dev/null +++ b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Quadrangle.html @@ -0,0 +1,533 @@ + + +SALOME - SMESH - v.version: smesh.Mesh_Quadrangle Class Reference + + + + +

smesh.Mesh_Quadrangle Class Reference

Class to define a quadrangle 2D algorithm. +More... +

+Inheritance diagram for smesh.Mesh_Quadrangle:

Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

def __init__
 Private constructor.
def QuadranglePreference
 Define "QuadranglePreference" hypothesis, forcing construction of quadrangles if the number of nodes on opposite edges is not the same in the case where the global number of nodes on edges is even.
def GetSubMesh
def GetAlgorithm
 Return the wrapped mesher.
def TreatHypoStatus
 Private method.
def Create
 Private method.
def Hypothesis
 Private method.

Data Fields

 mesh
 geom
 subm
 algo

Static Public Attributes

int mesh = 0
int geom = 0
int subm = 0
int algo = 0
+

Detailed Description

+More details. +

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Quadrangle.__init__   self,
  mesh,
  geom = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Quadrangle.QuadranglePreference   self  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetSubMesh   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetAlgorithm   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.TreatHypoStatus   self,
  status,
  hypName,
  geomName,
  isAlgo
[inherited]
+
+ + + + + +
+   + + +

+Print error message if a hypothesis was not assigned.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Create   self,
  mesh,
  geom,
  hypo,
  so = "libStdMeshersEngine.so"
[inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Hypothesis   self,
  hyp,
  args = [],
  so = "libStdMeshersEngine.so"
[inherited]
+
+ + + + + +
+   + + +

+

+


Field Documentation

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.mesh = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.mesh [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.geom = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.geom [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.subm = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.subm [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.algo = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.algo [inherited]
+
+ + + + + +
+   + + +

+

+ + diff --git a/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Quadrangle__inherit__graph.jpg b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Quadrangle__inherit__graph.jpg new file mode 100644 index 0000000000000000000000000000000000000000..38172d20022bc6d8654f1f6c5d93855a64a42a29 GIT binary patch literal 5392 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 + +SALOME - SMESH - v.version: smesh.Mesh_Segment Class Reference + + + + +

smesh.Mesh_Segment Class Reference

Class to define a segment 1D algorithm for discretization. +More... +

+Inheritance diagram for smesh.Mesh_Segment:

Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

def __init__
 Private constructor.
def LocalLength
 Define "LocalLength" hypothesis to cut an edge in several segments with the same length.
def NumberOfSegments
 Define "NumberOfSegments" hypothesis to cut an edge in several fixed number of segments.
def Arithmetic1D
 Define "Arithmetic1D" hypothesis to cut an edge in several segments with arithmetic length increasing.
def StartEndLength
 Define "StartEndLength" hypothesis to cut an edge in several segments with geometric length increasing.
def Deflection1D
 Define "Deflection1D" hypothesis.
def Propagation
 Define "Propagation" hypothesis that propagate all other hypothesis on all others edges that are in the opposite side in the case of quadrangular faces.
def AutomaticLength
 Define "AutomaticLength" hypothesis.
def QuadraticMesh
 Define "QuadraticMesh" hypothesis, forcing construction of quadratic edges.
def GetSubMesh
def GetAlgorithm
 Return the wrapped mesher.
def TreatHypoStatus
 Private method.
def Create
 Private method.
def Hypothesis
 Private method.

Data Fields

 mesh
 geom
 subm
 algo

Static Public Attributes

int mesh = 0
int geom = 0
int subm = 0
int algo = 0
+

Detailed Description

+More details. +

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment.__init__   self,
  mesh,
  geom = 0
+
+ + + + + +
+   + + +

+ +

+Reimplemented in smesh.Mesh_Segment_Python.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment.LocalLength   self,
  l
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
l for the length of segments that cut an edge
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment.NumberOfSegments   self,
  n,
  s = []
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
n for the number of segments that cut an edge
s for the scale factor (optional)
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment.Arithmetic1D   self,
  start,
  end
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
start for the length of the first segment
end for the length of the last segment
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment.StartEndLength   self,
  start,
  end
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
start for the length of the first segment
end for the length of the last segment
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment.Deflection1D   self,
  d
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
d for the deflection
+
+
+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Segment.Propagation   self  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment.AutomaticLength   self,
  fineness = 0
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
fineness for the fineness [0-1]
+
+
+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Segment.QuadraticMesh   self  ) 
+
+ + + + + +
+   + + +

+If the 2D mesher sees that all boundary edges are quadratic ones, it generates quadratic faces, else it generates linear faces using medium nodes as if they were vertex ones. The 3D mesher generates quadratic volumes only if all boundary faces are quadratic ones, else it fails.

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetSubMesh   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetAlgorithm   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.TreatHypoStatus   self,
  status,
  hypName,
  geomName,
  isAlgo
[inherited]
+
+ + + + + +
+   + + +

+Print error message if a hypothesis was not assigned.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Create   self,
  mesh,
  geom,
  hypo,
  so = "libStdMeshersEngine.so"
[inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Hypothesis   self,
  hyp,
  args = [],
  so = "libStdMeshersEngine.so"
[inherited]
+
+ + + + + +
+   + + +

+

+


Field Documentation

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.mesh = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.mesh [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.geom = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.geom [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.subm = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.subm [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.algo = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.algo [inherited]
+
+ + + + + +
+   + + +

+

+ + diff --git a/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Segment__Python.html b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Segment__Python.html new file mode 100644 index 000000000..230c9c259 --- /dev/null +++ b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Segment__Python.html @@ -0,0 +1,910 @@ + + +SALOME - SMESH - v.version: smesh.Mesh_Segment_Python Class Reference + + + + +

smesh.Mesh_Segment_Python Class Reference

Class to define a segment 1D algorithm for discretization with python function. +More... +

+Inheritance diagram for smesh.Mesh_Segment_Python:

Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

def __init__
 Private constructor.
def PythonSplit1D
 Define "PythonSplit1D" hypothesis based on the Erwan Adam patch, awaiting equivalent SALOME functionality.
def LocalLength
 Define "LocalLength" hypothesis to cut an edge in several segments with the same length.
def NumberOfSegments
 Define "NumberOfSegments" hypothesis to cut an edge in several fixed number of segments.
def Arithmetic1D
 Define "Arithmetic1D" hypothesis to cut an edge in several segments with arithmetic length increasing.
def StartEndLength
 Define "StartEndLength" hypothesis to cut an edge in several segments with geometric length increasing.
def Deflection1D
 Define "Deflection1D" hypothesis.
def Propagation
 Define "Propagation" hypothesis that propagate all other hypothesis on all others edges that are in the opposite side in the case of quadrangular faces.
def AutomaticLength
 Define "AutomaticLength" hypothesis.
def QuadraticMesh
 Define "QuadraticMesh" hypothesis, forcing construction of quadratic edges.
def GetSubMesh
def GetAlgorithm
 Return the wrapped mesher.
def TreatHypoStatus
 Private method.
def Create
 Private method.
def Hypothesis
 Private method.

Data Fields

 mesh
 geom
 subm
 algo

Static Public Attributes

int mesh = 0
int geom = 0
int subm = 0
int algo = 0
+

Detailed Description

+More details. +

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment_Python.__init__   self,
  mesh,
  geom = 0
+
+ + + + + +
+   + + +

+ +

+Reimplemented from smesh.Mesh_Segment.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment_Python.PythonSplit1D   self,
  n,
  func
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
n for the number of segments that cut an edge
func for the python function that calculate the length of all segments
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment.LocalLength   self,
  l
[inherited]
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
l for the length of segments that cut an edge
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment.NumberOfSegments   self,
  n,
  s = []
[inherited]
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
n for the number of segments that cut an edge
s for the scale factor (optional)
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment.Arithmetic1D   self,
  start,
  end
[inherited]
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
start for the length of the first segment
end for the length of the last segment
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment.StartEndLength   self,
  start,
  end
[inherited]
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
start for the length of the first segment
end for the length of the last segment
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment.Deflection1D   self,
  d
[inherited]
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
d for the deflection
+
+
+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Segment.Propagation   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Segment.AutomaticLength   self,
  fineness = 0
[inherited]
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
fineness for the fineness [0-1]
+
+
+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Segment.QuadraticMesh   self  )  [inherited]
+
+ + + + + +
+   + + +

+If the 2D mesher sees that all boundary edges are quadratic ones, it generates quadratic faces, else it generates linear faces using medium nodes as if they were vertex ones. The 3D mesher generates quadratic volumes only if all boundary faces are quadratic ones, else it fails.

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetSubMesh   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetAlgorithm   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.TreatHypoStatus   self,
  status,
  hypName,
  geomName,
  isAlgo
[inherited]
+
+ + + + + +
+   + + +

+Print error message if a hypothesis was not assigned.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Create   self,
  mesh,
  geom,
  hypo,
  so = "libStdMeshersEngine.so"
[inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Hypothesis   self,
  hyp,
  args = [],
  so = "libStdMeshersEngine.so"
[inherited]
+
+ + + + + +
+   + + +

+

+


Field Documentation

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.mesh = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.mesh [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.geom = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.geom [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.subm = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.subm [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.algo = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.algo [inherited]
+
+ + + + + +
+   + + +

+

+ + diff --git a/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Segment__Python__inherit__graph.jpg b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Segment__Python__inherit__graph.jpg new file mode 100644 index 0000000000000000000000000000000000000000..68ae8f3e629c65d771e3326115c6e87c4f2c3fbf GIT binary patch literal 7802 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Tetrahedron.html b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Tetrahedron.html new file mode 100644 index 000000000..e0064eea3 --- /dev/null +++ b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Tetrahedron.html @@ -0,0 +1,553 @@ + + +SALOME - SMESH - v.version: smesh.Mesh_Tetrahedron Class Reference + + + + +

smesh.Mesh_Tetrahedron Class Reference

Class to define a tetrahedron 3D algorithm. +More... +

+Inheritance diagram for smesh.Mesh_Tetrahedron:

Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

def __init__
 Private constructor.
def MaxElementVolume
 Define "MaxElementVolume" hypothesis to give the maximun volume of each tetrahedral.
def GetSubMesh
def GetAlgorithm
 Return the wrapped mesher.
def TreatHypoStatus
 Private method.
def Create
 Private method.
def Hypothesis
 Private method.

Data Fields

 mesh
 geom
 subm
 algo

Static Public Attributes

int mesh = 0
int geom = 0
int subm = 0
int algo = 0
+

Detailed Description

+More details. +

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Tetrahedron.__init__   self,
  mesh,
  algo,
  geom = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Tetrahedron.MaxElementVolume   self,
  vol
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
vol for the maximum volume of each tetrahedral
+
+
+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetSubMesh   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetAlgorithm   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.TreatHypoStatus   self,
  status,
  hypName,
  geomName,
  isAlgo
[inherited]
+
+ + + + + +
+   + + +

+Print error message if a hypothesis was not assigned.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Create   self,
  mesh,
  geom,
  hypo,
  so = "libStdMeshersEngine.so"
[inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Hypothesis   self,
  hyp,
  args = [],
  so = "libStdMeshersEngine.so"
[inherited]
+
+ + + + + +
+   + + +

+

+


Field Documentation

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.mesh = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.mesh [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.geom = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.geom [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.subm = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.subm [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.algo = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.algo [inherited]
+
+ + + + + +
+   + + +

+

+ + diff --git a/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Tetrahedron__inherit__graph.jpg b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Tetrahedron__inherit__graph.jpg new file mode 100644 index 0000000000000000000000000000000000000000..78d01b1be45e54c5984b4a7914c0b550a482a80e GIT binary patch literal 5448 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 E2X8%`umAu6 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Triangle.html b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Triangle.html new file mode 100644 index 000000000..718cfc3de --- /dev/null +++ b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Triangle.html @@ -0,0 +1,578 @@ + + +SALOME - SMESH - v.version: smesh.Mesh_Triangle Class Reference + + + + +

smesh.Mesh_Triangle Class Reference

Class to define a triangle 2D algorithm. +More... +

+Inheritance diagram for smesh.Mesh_Triangle:

Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

def __init__
 Private constructor.
def MaxElementArea
 Define "MaxElementArea" hypothesis to give the maximun area of each triangles.
def LengthFromEdges
 Define "LengthFromEdges" hypothesis to build triangles based on the length of the edges taken from the wire.
def GetSubMesh
def GetAlgorithm
 Return the wrapped mesher.
def TreatHypoStatus
 Private method.
def Create
 Private method.
def Hypothesis
 Private method.

Data Fields

 mesh
 geom
 subm
 algo

Static Public Attributes

int mesh = 0
int geom = 0
int subm = 0
int algo = 0
+

Detailed Description

+More details. +

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Triangle.__init__   self,
  mesh,
  geom = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Triangle.MaxElementArea   self,
  area
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
area for the maximum area of each triangles
+
+
+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Triangle.LengthFromEdges   self  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetSubMesh   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
def smesh.Mesh_Algorithm.GetAlgorithm   self  )  [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.TreatHypoStatus   self,
  status,
  hypName,
  geomName,
  isAlgo
[inherited]
+
+ + + + + +
+   + + +

+Print error message if a hypothesis was not assigned.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Create   self,
  mesh,
  geom,
  hypo,
  so = "libStdMeshersEngine.so"
[inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def smesh.Mesh_Algorithm.Hypothesis   self,
  hyp,
  args = [],
  so = "libStdMeshersEngine.so"
[inherited]
+
+ + + + + +
+   + + +

+

+


Field Documentation

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.mesh = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.mesh [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.geom = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.geom [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.subm = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.subm [inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.Mesh_Algorithm.algo = 0 [static, inherited]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
smesh.Mesh_Algorithm.algo [inherited]
+
+ + + + + +
+   + + +

+

+ + diff --git a/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Triangle__inherit__graph.jpg b/doc/salome/gui/SMESH/smeshpy_doc/classsmesh_1_1Mesh__Triangle__inherit__graph.jpg new file mode 100644 index 0000000000000000000000000000000000000000..30692a195cd3e1e5c9fc808c1801c3cab7d4ccd9 GIT binary patch literal 5149 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 + +SALOME - SMESH - v.version: Package smesh + + + + +

Package smesh

+

+Python package smesh defines several classes, destined for easy and clear mesh creation and edition. +

Example.

+

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

Data Structures

class  Mesh_Algorithm
 Mother class to define algorithm, recommended to don't use directly. More...
class  Mesh_Segment
 Class to define a segment 1D algorithm for discretization. More...
class  Mesh_Segment_Python
 Class to define a segment 1D algorithm for discretization with python function. More...
class  Mesh_Triangle
 Class to define a triangle 2D algorithm. More...
class  Mesh_Quadrangle
 Class to define a quadrangle 2D algorithm. More...
class  Mesh_Tetrahedron
 Class to define a tetrahedron 3D algorithm. More...
class  Mesh_Hexahedron
 Class to define a hexahedron 3D algorithm. More...
class  Mesh_Netgen
 Class to define a NETGEN-based 2D or 3D algorithm that need no discrete boundary (i.e. More...
class  Mesh
 Class to define a mesh. More...

Functions

def GetName
def SetName

Variables

int REGULAR = 1
int PYTHON = 2
int NETGEN = 3
int GHS3D = 4
tuple smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
string NO_NAME = "NoName"
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
def smesh.GetName   obj  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
def smesh.SetName   obj,
  name
+
+ + + + + +
+   + + +

+

+


Variable Documentation

+

+ + + + +
+ + + + +
int smesh.REGULAR = 1 [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.PYTHON = 2 [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.NETGEN = 3 [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
int smesh.GHS3D = 4 [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
tuple smesh.smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH") [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
string smesh.NO_NAME = "NoName" [static]
+
+ + + + + +
+   + + +

+

+ + diff --git a/doc/salome/gui/SMESH/volume.htm b/doc/salome/gui/SMESH/volume.htm new file mode 100755 index 000000000..f55993eaf --- /dev/null +++ b/doc/salome/gui/SMESH/volume.htm @@ -0,0 +1,123 @@ + + + + + +Volume + + + + + + + + + + + +

Volume

+ +

Volume mesh quality + criterion reflects the volume of meshes of a 3D object.

+ +

+ +

To + apply the Volume quality criterion to your mesh:

+ +

1. Display your mesh in the viewer.

+ +

2. Choose Controls + > Volume 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 Volume quality control operation. +  

+ +

 

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/whd_dpns.htm b/doc/salome/gui/SMESH/whd_dpns.htm new file mode 100755 index 000000000..1bca23603 --- /dev/null +++ b/doc/salome/gui/SMESH/whd_dpns.htm @@ -0,0 +1,43 @@ + + +Navigator Pane + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/whd_hide0.gif b/doc/salome/gui/SMESH/whd_hide0.gif new file mode 100755 index 0000000000000000000000000000000000000000..97ea0bb6d7aae6a5c303f7288804f3ea9f0e2adc GIT binary patch literal 190 zcmZ?wbhEHbRAmrm*vtR|4Pe{=rW$~}1`s%K;J|;N_#fBm(s{K5IA+wS(XUH&97X-)sr-!@Y0 U%`L5M?HwJV-95d1eS!?u0EaP9SpWb4 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_hide1.gif b/doc/salome/gui/SMESH/whd_hide1.gif new file mode 100755 index 0000000000000000000000000000000000000000..97ea0bb6d7aae6a5c303f7288804f3ea9f0e2adc GIT binary patch literal 190 zcmZ?wbhEHbRAmrm*vtR|4Pe{=rW$~}1`s%K;J|;N_#fBm(s{K5IA+wS(XUH&97X-)sr-!@Y0 U%`L5M?HwJV-95d1eS!?u0EaP9SpWb4 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_hide2.gif b/doc/salome/gui/SMESH/whd_hide2.gif new file mode 100755 index 0000000000000000000000000000000000000000..97ea0bb6d7aae6a5c303f7288804f3ea9f0e2adc GIT binary patch literal 190 zcmZ?wbhEHbRAmrm*vtR|4Pe{=rW$~}1`s%K;J|;N_#fBm(s{K5IA+wS(XUH&97X-)sr-!@Y0 U%`L5M?HwJV-95d1eS!?u0EaP9SpWb4 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_next0.gif b/doc/salome/gui/SMESH/whd_next0.gif new file mode 100755 index 0000000000000000000000000000000000000000..d92dda5223599ae2e8764bd25d24f93b5b35d887 GIT binary patch literal 159 zcmZ?wbhEHblx7fS*vtR|4Pe{=rW$~}1`s%K;J|;N_GOF0KgAF3IG5A literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_next1.gif b/doc/salome/gui/SMESH/whd_next1.gif new file mode 100755 index 0000000000000000000000000000000000000000..d92dda5223599ae2e8764bd25d24f93b5b35d887 GIT binary patch literal 159 zcmZ?wbhEHblx7fS*vtR|4Pe{=rW$~}1`s%K;J|;N_GOF0KgAF3IG5A literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_next2.gif b/doc/salome/gui/SMESH/whd_next2.gif new file mode 100755 index 0000000000000000000000000000000000000000..d92dda5223599ae2e8764bd25d24f93b5b35d887 GIT binary patch literal 159 zcmZ?wbhEHblx7fS*vtR|4Pe{=rW$~}1`s%K;J|;N_GOF0KgAF3IG5A literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_nvp10.htm b/doc/salome/gui/SMESH/whd_nvp10.htm new file mode 100755 index 000000000..a57fe1e49 --- /dev/null +++ b/doc/salome/gui/SMESH/whd_nvp10.htm @@ -0,0 +1,15 @@ + + +Navigation Pane + + + + + + + + + + + + diff --git a/doc/salome/gui/SMESH/whd_nvp20.htm b/doc/salome/gui/SMESH/whd_nvp20.htm new file mode 100755 index 000000000..c5754bc41 --- /dev/null +++ b/doc/salome/gui/SMESH/whd_nvp20.htm @@ -0,0 +1,334 @@ + + +navigation pane + + + + + + + + + + + + + + + + + diff --git a/doc/salome/gui/SMESH/whd_prev0.gif b/doc/salome/gui/SMESH/whd_prev0.gif new file mode 100755 index 0000000000000000000000000000000000000000..518561a0d284eea6b136e0f65591bbe3f00173ee GIT binary patch literal 159 zcmZ?wbhEHblx7fS*vtR|4Pe{=rW$~}1`s%K;J|;N_ oU;NgcIXC46r>s_>iMrWq#-jL{%@sa+vrjf`sXCjtTbaQc0N6r5jsO4v literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_prev1.gif b/doc/salome/gui/SMESH/whd_prev1.gif new file mode 100755 index 0000000000000000000000000000000000000000..518561a0d284eea6b136e0f65591bbe3f00173ee GIT binary patch literal 159 zcmZ?wbhEHblx7fS*vtR|4Pe{=rW$~}1`s%K;J|;N_ oU;NgcIXC46r>s_>iMrWq#-jL{%@sa+vrjf`sXCjtTbaQc0N6r5jsO4v literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_prev2.gif b/doc/salome/gui/SMESH/whd_prev2.gif new file mode 100755 index 0000000000000000000000000000000000000000..518561a0d284eea6b136e0f65591bbe3f00173ee GIT binary patch literal 159 zcmZ?wbhEHblx7fS*vtR|4Pe{=rW$~}1`s%K;J|;N_ oU;NgcIXC46r>s_>iMrWq#-jL{%@sa+vrjf`sXCjtTbaQc0N6r5jsO4v literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_show0.gif b/doc/salome/gui/SMESH/whd_show0.gif new file mode 100755 index 0000000000000000000000000000000000000000..60e8e689798894e49320835bacdce74069bc2755 GIT binary patch literal 199 zcmZ?wbhEHb)M5~3*vtR|4Pe{=rW$~}1`s%K;J|;N_E$rasmle_fbS~emu&&XWTYKFwOuzj8WaIn> egZkzce)i6;?w;Ph{%-S0lc!9bHhsDvgEasywN*#} literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_show1.gif b/doc/salome/gui/SMESH/whd_show1.gif new file mode 100755 index 0000000000000000000000000000000000000000..60e8e689798894e49320835bacdce74069bc2755 GIT binary patch literal 199 zcmZ?wbhEHb)M5~3*vtR|4Pe{=rW$~}1`s%K;J|;N_E$rasmle_fbS~emu&&XWTYKFwOuzj8WaIn> egZkzce)i6;?w;Ph{%-S0lc!9bHhsDvgEasywN*#} literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_show2.gif b/doc/salome/gui/SMESH/whd_show2.gif new file mode 100755 index 0000000000000000000000000000000000000000..60e8e689798894e49320835bacdce74069bc2755 GIT binary patch literal 199 zcmZ?wbhEHb)M5~3*vtR|4Pe{=rW$~}1`s%K;J|;N_E$rasmle_fbS~emu&&XWTYKFwOuzj8WaIn> egZkzce)i6;?w;Ph{%-S0lc!9bHhsDvgEasywN*#} literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_sync0.gif b/doc/salome/gui/SMESH/whd_sync0.gif new file mode 100755 index 0000000000000000000000000000000000000000..1a9785ce625d4b5226515db4d6e0c7af3e416fba GIT binary patch literal 231 zcmZ?wbhEHbv|vM`9&x+nI$ zNd8r_c*)1$HEPY51-@OEc3gZ{eya7pwBt{WU+i`cUmmp8QZH$8UqzwSs@BDAwHYZ@ zNoh?j`R(#$ZiyX{(Jdi~6SEt%OMG>D%4g2fo-=KIR Lx^4SrK?Z98%;sR# literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_sync1.gif b/doc/salome/gui/SMESH/whd_sync1.gif new file mode 100755 index 0000000000000000000000000000000000000000..1a9785ce625d4b5226515db4d6e0c7af3e416fba GIT binary patch literal 231 zcmZ?wbhEHbv|vM`9&x+nI$ zNd8r_c*)1$HEPY51-@OEc3gZ{eya7pwBt{WU+i`cUmmp8QZH$8UqzwSs@BDAwHYZ@ zNoh?j`R(#$ZiyX{(Jdi~6SEt%OMG>D%4g2fo-=KIR Lx^4SrK?Z98%;sR# literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_sync2.gif b/doc/salome/gui/SMESH/whd_sync2.gif new file mode 100755 index 0000000000000000000000000000000000000000..1a9785ce625d4b5226515db4d6e0c7af3e416fba GIT binary patch literal 231 zcmZ?wbhEHbv|vM`9&x+nI$ zNd8r_c*)1$HEPY51-@OEc3gZ{eya7pwBt{WU+i`cUmmp8QZH$8UqzwSs@BDAwHYZ@ zNoh?j`R(#$ZiyX{(Jdi~6SEt%OMG>D%4g2fo-=KIR Lx^4SrK?Z98%;sR# literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_tab0.gif b/doc/salome/gui/SMESH/whd_tab0.gif new file mode 100755 index 0000000000000000000000000000000000000000..955c42f47a076d635e5f28250996e98e7cd7c076 GIT binary patch literal 285 zcmV+&0pk8gNk%w1VeSDK0HXf@|NsBx<>kP@z`wu00002Mz`y_i00000A^8LW000F5 zEC2ui0PX=806+ucIJ(^aFv>}*y*TU5yZ>M)j$~<`XsWJk>%MR-&vb3yc&_h!@BhG{ za7Zi~kI1BQ$!z`v(5Q4uty-_xtai)odcWYXcuX#v&*-#z&0ag-@VIs;jK6uCK7M zvayD>wzs&sy1Tr+zQ4f1!o$SH#>dFX%FE2n&d<=%($mz{*4NnC+S}aS*#O|-;^XAy j=I7|?>g(+7?(gvN^7Hid_V@Vt`uqI*-v0piBme+AZ&j?@ literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_tab1.gif b/doc/salome/gui/SMESH/whd_tab1.gif new file mode 100755 index 0000000000000000000000000000000000000000..b3ec41d6d8a6a3f2d06b41f8ea70572610acbfdb GIT binary patch literal 237 zcmZ?wbhEHbbYl=@*vtR|4Pe{=rW$~}1`s%K;J|;N_$ATn&sXV7$()z5O37izzJfJ!?b`Q$c;Bvk-@SYO2XPn1zT*pp zB8-__JR?GW^@#djjxO6e*VI2&EU2lc@8~ll%UIi3@4F^ZKI_$wf6tQps&@3Ne^E|F zLup%Hd_-awznW-Ok)e6q?^?=|z+uGd_>VZ)}) RYqxIm-m%k}fnAWn8USudW4QnT literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_tab2.gif b/doc/salome/gui/SMESH/whd_tab2.gif new file mode 100755 index 0000000000000000000000000000000000000000..08fb0ce4fe630b4dd33f1f8d099945ff48531b0c GIT binary patch literal 226 zcmZ?wbhEHbv||uu*vtR|4Pe{=rW$~}1`s%K;J|;N_amdW@3l){E)f@i$$g^S+H!mvz_+Zb?dcPZQ>AQ Gum%87{9UmC literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_tab3.gif b/doc/salome/gui/SMESH/whd_tab3.gif new file mode 100755 index 0000000000000000000000000000000000000000..1819c8e8f786ed0b62007b198cb69dca982c49f6 GIT binary patch literal 209 zcmZ?wbhEHbG-eQG*vtR|4Pe{=rW$~}1`s%K;J|;N_tQPIo@N&L#vFwFx*~w?0Zi@IVyZ?G?SxwgB2Sq=oM{i31m{lp1 o6|Yd&+>jp=)lsO@?iOr5ams`##?z)-O`hdDXRZYUyC8!#0CKBV4FCWD literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_tab4.gif b/doc/salome/gui/SMESH/whd_tab4.gif new file mode 100755 index 0000000000000000000000000000000000000000..1a6fc4f4aa68d1b8fdd35c21c002f4a117133639 GIT binary patch literal 198 zcmZ?wbhEHb)MF53*vtR|4Pe{=rW$~}1`s%K;J|;N_j1LiMqShUz?=`!;bD@_^L1sSXX;;C5C literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_tab6.gif b/doc/salome/gui/SMESH/whd_tab6.gif new file mode 100755 index 0000000000000000000000000000000000000000..fe312d238ad98026d9171f20077f95e372a82752 GIT binary patch literal 212 zcmZ?wbhEHbG-D8D*vtR|4Pe{=rW$~}1`s%K;J|;N_*vtR|4Pe{=rW$~}1`s%K;J|;N_$5v+f;9S4GUsJ*HDtct_r7pLLGEFr+V_8Ee0O;8o<&2<`FKKp zgqPAJzo)&PT}q5Wa-}I#9eTspT+b9~?!S8>tcA^f&bH2eyZmdZ{r>)&Ny+JT znL<_d9VJB_oh^Np#xCXkwNtyg@*7p#oATmQ7Br?-^r+2=G;7V8xWXY%WBJ+@8#e`Q P+3L7`hb;rUAcHjkosMI* literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_tab8.gif b/doc/salome/gui/SMESH/whd_tab8.gif new file mode 100755 index 0000000000000000000000000000000000000000..c80acc8d57852a246362d981ae89d4148f157987 GIT binary patch literal 225 zcmZ?wbhEHbv|$is*vtR|4Pe{=rW$~}1`s%K;J|;N_WX{W2)us4ipV)^3U#ew_*Or&hV{|y+vg7j?6Bkay z$U8Fi;%Ua8k9bV=dSI~ftX`|PkLjzUMS>3vSbJQ%3r}pVys>U^^SeKxMtvvmrk72WmQa=UOuH{qFu0FTg{|-^09LkFYj1xWvjh*-FnScs{|RW E0hmEvxBvhE literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_tabs.htm b/doc/salome/gui/SMESH/whd_tabs.htm new file mode 100755 index 000000000..1568f573d --- /dev/null +++ b/doc/salome/gui/SMESH/whd_tabs.htm @@ -0,0 +1,533 @@ + + +WebHelp Tabs Frame in Navigation Pane + + + + + + + + + + + \ No newline at end of file diff --git a/doc/salome/gui/SMESH/whd_toc1.gif b/doc/salome/gui/SMESH/whd_toc1.gif new file mode 100755 index 0000000000000000000000000000000000000000..11017258c92970b19454ead146fd5b379bec281f GIT binary patch literal 153 zcmZ?wbhEHb6krfw*v!E29|#!!A2@KJ0SFix6c`j3@B+o3EQ|~cj0`#;RUk8*S=?{xVR_$zZm5-g_Pmk7#Uti(DzxdWm!V8gx$+Ye-*fKA Z&qxFbzbZW-RFiQ{v>{?oou(jzH2|ujEKL9a literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_toc2.gif b/doc/salome/gui/SMESH/whd_toc2.gif new file mode 100755 index 0000000000000000000000000000000000000000..975e5f6f4dde718d6af7eb7aaca2301a398d0985 GIT binary patch literal 173 zcmZ?wbhEHb6krfw*v!E29|RbH@W6os4M4!qpunKOfEy_OWMO1rU}De#DFK<`%n}vg zp|pDIvWD7YY>bQ|?GtjD74se@CfrgKZZ@Bmp0zThw8(5iM~YSk!(9It&y2-*E@YG} v+8t4Edv%%mPet2C-OICinA>(d7FSUdOO|VTbKuP+zH@t`jkbp=F<1itbz3&o literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_toc3.gif b/doc/salome/gui/SMESH/whd_toc3.gif new file mode 100755 index 0000000000000000000000000000000000000000..4b8122f0f430c4baa062d3681f98f0e41e749017 GIT binary patch literal 158 zcmZ?wbhEHb6krfw*v!E29|RbH@W6os4Gj$n3<^Lo2HZgLCkrD30~3P|ND0UcXBO{( z37)HW%xGY+`tCe2SC&&|MMdWPovo4CLd=bx@xKpd$4#<1nc$(rX1ea|6E)438OQq) gtyoviVpt_6a5ii8UHu;M1& literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_toc4.gif b/doc/salome/gui/SMESH/whd_toc4.gif new file mode 100755 index 0000000000000000000000000000000000000000..3f9a036867847517b1eab4503a4bd378178c0bd5 GIT binary patch literal 953 zcmZ?wbhEHb6krfw_|Cxa9|RbH@C*>l1R^jjNr4Mc#bG=`Z##K4d?lL5$1V*qMm z0P}&YQ7{?;LplT$f3h$#FfcLbfP4YU6Yd<-7+5)EJT@#iz|5@VQZYdRD8a|bv%nyr z(WQ+;DCLYt;e!TFE@6k77X?ZO8M#FSIu0CYJjBQ%=+&cO^oW6hn}@@PL-EOpiE7+_ zOB}Xn1U57CJc(fte#zL$Am!4aQ0f%SsF82x@IfFcXc?2JjfX{pcEfa6R=o+UF047k gA!N-p;ls7Hhjyr|dn8ybc;CR}$jc=rA;4e_0PdJkt^fc4 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/whd_topic.xml b/doc/salome/gui/SMESH/whd_topic.xml new file mode 100755 index 000000000..a1b0320fb --- /dev/null +++ b/doc/salome/gui/SMESH/whd_topic.xml @@ -0,0 +1,85 @@ + + + + + + + + + + +"]]> + + + + +"]]> + + + + +"; +OutputInTopicNavBarDataWebSearch.form();]]> + + + + + + + + + + +"]]> + + + diff --git a/doc/salome/gui/SMESH/whd_wbsh0.gif b/doc/salome/gui/SMESH/whd_wbsh0.gif new file mode 100755 index 0000000000000000000000000000000000000000..383688e7cdf6fc64d789bef55fb569d00563682b GIT binary patch literal 260 zcmZ?wbhEHb^k5KX*vtR|4Pe{=rW$~}1`s%K;J|;N_pi3um7TZ!{OM~2XVw-kO|^-f^X$8OVoiBY zc2#mlo_l>saATyygp%rj?#ZQ7CMony>nWRpi3um7TZ!{OM~2XVw-kO|^-f^X$8OVoiBY zc2#mlo_l>saATyygp%rj?#ZQ7CMony>nWRpi3um7TZ!{OM~2XVw-kO|^-f^X$8OVoiBY zc2#mlo_l>saATyygp%rj?#ZQ7CMony>nWR + +Search Words List + + + + + + + +

<<

+

+will 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
window
wire 1 2 3 4 5 6 7
wire_discretisation
wireframe 1 2 3
wires
wish 1 2 3 4
within 1 2 3
without 1 2
words
work
works
worst
would 1 2
ww
+

+x 1 2 3
x0
+

+y 1 2
y0
your 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
+

+z 1 2
z0
zero
zoom


+ + + + diff --git a/doc/salome/tui/SMESH/doxyfile.in b/doc/salome/tui/SMESH/doxyfile.in new file mode 100755 index 000000000..e9705fdea --- /dev/null +++ b/doc/salome/tui/SMESH/doxyfile.in @@ -0,0 +1,242 @@ +# Doxyfile 1.4.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "SALOME - SMESH - v.@VERSION@" +PROJECT_NUMBER = +OUTPUT_DIRECTORY = ../ +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = NO +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = YES +INLINE_INHERITED_MEMB = YES +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = ../../../share/salome \ + ../../../build/salome +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 5 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = YES +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = YES +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 25 +SHOW_USED_FILES = NO +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = log.txt + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ../../../share/salome/src \ + ../../../share/salome/idl \ + ../../../build/salome/bin +FILE_PATTERNS = *.hxx *.cxx *.h *.c *.hh *.cc *.idl python_extension_must_be_here +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = sources/ +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = SMESH +HTML_FILE_EXTENSION = .html +HTML_HEADER = sources/myheader.html +HTML_FOOTER = sources/footer.html +HTML_STYLESHEET = sources/static/doxygen.css +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = YES +TOC_EXPAND = YES +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = NO + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = NO +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = NO +GROUP_GRAPHS = NO +UML_LOOK = NO +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = NO +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = jpg +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1200 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = NO +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/doc/salome/tui/SMESH/doxyfile_py.in b/doc/salome/tui/SMESH/doxyfile_py.in new file mode 100755 index 000000000..78d1407fd --- /dev/null +++ b/doc/salome/tui/SMESH/doxyfile_py.in @@ -0,0 +1,242 @@ +# Doxyfile 1.4.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "SALOME - SMESH - v.@VERSION@" +PROJECT_NUMBER = +OUTPUT_DIRECTORY = ../ +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = NO +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = YES +INLINE_INHERITED_MEMB = YES +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = ../../../share/salome \ + ../../../build/salome +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 5 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = YES +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = YES +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 25 +SHOW_USED_FILES = NO +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = log.txt + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ../../../share/salome/src \ + ../../../share/salome/idl \ + ../../../build/salome/bin +FILE_PATTERNS = *.hxx *.cxx *.h *.c *.hh *.cc *.idl python_extension_must_be_here +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = sources/ +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = SMESH +HTML_FILE_EXTENSION = .html +HTML_HEADER = sources/myheader.html +HTML_FOOTER = sources/footer.html +HTML_STYLESHEET = sources/static/doxygen.css +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = YES +TOC_EXPAND = YES +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = NO + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = NO +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = NO +GROUP_GRAPHS = NO +UML_LOOK = NO +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = NO +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = jpg +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1200 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = NO +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/doc/salome/tui/SMESH/sources/footer.html b/doc/salome/tui/SMESH/sources/footer.html new file mode 100755 index 000000000..cb55f397a --- /dev/null +++ b/doc/salome/tui/SMESH/sources/footer.html @@ -0,0 +1,5 @@ + + + + diff --git a/doc/salome/tui/SMESH/sources/static/tree.js.in b/doc/salome/tui/SMESH/sources/static/tree.js.in new file mode 100755 index 000000000..36d021fcb --- /dev/null +++ b/doc/salome/tui/SMESH/sources/static/tree.js.in @@ -0,0 +1,29 @@ +foldersTree = gFld("SALOME v.@VERSION@ ", "", "") + insDoc(foldersTree, gLnk("Main Page", "", "main.html")) + +aux1 = insFld(foldersTree, gFld("TUI Reference Guide", "")) + aux2 = insFld(aux1, gFld("Modules", "")) + aux3 = insFld(aux2, gFld("SALOME SMESH module", "")) +/*! insDoc(aux3, gLnk("Overview", "", "overview_SMESH.html"))*/ + aux4 = insFld(aux3, gFld("Packages", "")) + insDoc(aux4, gLnk("SMESH", "", "namespaceSMESH.html")) +/*! insDoc(aux3, gLnk("Examples", "", "examples_SMESH.html")) +*/ + + insDoc(aux1, gLnk("Data Structures", "", "annotated.html")) + insDoc(aux1, gLnk("Class Hierarchy", "", "hierarchy.html")) + insDoc(aux1, gLnk("Class methods list", "", "functions.html")) + insDoc(aux1, gLnk("Namespace Members", "", "namespacemembers.html")) + insDoc(aux1, gLnk("File List", "", "files.html")) + +aux1 = insFld(foldersTree, gFld("IDL/Python mapping", "")) + insDoc(aux1, gLnk("Mapping of SMESH IDL definitions to Python language", "", "page2.html")) + +aux1 = insFld(foldersTree, gFld("Python Commands", "", "meshpy_doc/main.html")) + insDoc(aux1, gLnk("Package List", "", "meshpy_doc/namespaces.html")) + insDoc(aux1, gLnk("Data Structures", "", "meshpy_doc/annotated.html")) + insDoc(aux1, gLnk("Namespace Members", "", "meshpy_doc/namespacemembers.html")) + insDoc(aux1, gLnk("File List", "", "meshpy_doc/files.html")) + +aux1 = insFld(foldersTree, gFld("Adding meshers in SMESH", "")) + insDoc(aux1, gLnk("Using Plugin mechanism in SMESH", "", "PluginMeshers.html")) diff --git a/resources/SMESHCatalog.xml.in b/resources/SMESHCatalog.xml.in new file mode 100644 index 000000000..d5d2bb072 --- /dev/null +++ b/resources/SMESHCatalog.xml.in @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + SMESH + Mesh + MESH + NRI + @VERSION@ + Mesh component + 1 + ModuleMesh.png + 1 + + + SMESH + + + + CreateHypothesis + + + + 1 + + + string + anHyp + + + + long + studyId + + + + + + SMESH_Hypothesis + aHyp + + + + + + Init + + + + 1 + + + GEOM_Gen + geomEngine + + + + long + studyId + + + + GEOM_Shape + aShape + + + + + + SMESH_Mesh + aMesh + + + + + + Compute + + + + 1 + + + SMESH_Mesh + aMesh + + + + GEOM_Shape + aSubShape + + + + + + boolean + res + Result + + + + + IsReadyToCompute + + + + 1 + + + SMESH_Mesh + aMesh + + + + GEOM_Shape + aSubShape + + + + + boolean + res + Result + + + + SMESH_Mesh + + + + AddHypothesis + + + + 1 + + + GEOM_Shape + aSubShape + + + + SMESH_Hypothesis + aHyp + + + + + + boolean + res + Result + + + + + + hostname = localhost + + + diff --git a/resources/SalomeApp.xml b/resources/SalomeApp.xml new file mode 100644 index 000000000..3b4db83ca --- /dev/null +++ b/resources/SalomeApp.xml @@ -0,0 +1,47 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
diff --git a/resources/mesh_conv_to_quad.png b/resources/mesh_conv_to_quad.png new file mode 100755 index 0000000000000000000000000000000000000000..ae39c7e0a2a3a27a7fde1c3555b5bc65749f7b23 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmC^*H_ z#WAE}&eJP~Tn7|*STD#Nz3Q5A@L+Ql*ZYfG#f9pY2jpH<>&kwOg_WC4@=NFA<3OQ2PZ!4!iOX{*9ppWrz{5PZtJH|g zSTQY0gw4x7w^Kk-v+nnS8v-ouy9!o_lubINwqT2?#@1Vm3_CaMDm2=^EFdKJT7mE4psdQ$ z-6Y5-Q9-heuUp3sl~+H>~rToA)Pq!JRcbY~o};nfq4fXC4-u RA_a6VgQu&X%Q~loCIB=OUwZ%m literal 0 HcmV?d00001 diff --git a/resources/mesh_tree_hypo_netgen.png b/resources/mesh_tree_hypo_netgen.png new file mode 100644 index 0000000000000000000000000000000000000000..ad5e9f3c4c3bde47d12ecc2b38ad11c3f05c041e GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xawj^(N7l!{JxM1({$v_d#0*}aI z1_o{+5N5n|x9$&6kiEpy*OmPm3oD7mE4psdQ$ z-6Y5-Q9-heuUp3sl~+H>~rToA)Pq!JRcbY~o};nfq4fXC4-u RA_a6VgQu&X%Q~loCIDO<>&kwOg_WC4$+d~=F;FPa)5S4F;_}={2YC-D@G#HqDmCIV zR!mD0Ve_)j?G#Ydtowc7h5(EEu7VXJWs^>+E!bkJvGo=s!_E!63XS$J3kb2US=X&Y;r!<9S4xBy= Pw3)%v)z4*}Q$iB}xc5qt literal 0 HcmV?d00001 diff --git a/src/DriverUNV/UNV2417_Structure.cxx b/src/DriverUNV/UNV2417_Structure.cxx new file mode 100644 index 000000000..67d2cbe25 --- /dev/null +++ b/src/DriverUNV/UNV2417_Structure.cxx @@ -0,0 +1,184 @@ +// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#include "UNV2417_Structure.hxx" +#include "UNV_Utilities.hxx" + +#include +#include + +using namespace std; +using namespace UNV; +using namespace UNV2417; + +#ifdef _DEBUG_ +static int MYDEBUG = 0; +#else +static int MYDEBUG = 0; +#endif + + +static string _group_labels[] = {"2417", "2429", "2430", "2432", "2435", "2452", "2467"}; +#define NBGROUP 7 + +static string _label_dataset = "2467"; + +void UNV2417::Read(std::ifstream& in_stream, TDataSet& theDataSet) +{ + if(!in_stream.good()) + EXCEPTION(runtime_error,"ERROR: Input file not good."); + + std::string olds, news; + + while(true){ + in_stream >> olds >> news; + /* + * a "-1" followed by a number means the beginning of a dataset + * stop combing at the end of the file + */ + while( ((olds != "-1") || (news == "-1") ) && !in_stream.eof() ){ + olds = news; + in_stream >> news; + } + if(in_stream.eof()) + return; + for (int i = 0; i < NBGROUP; i++) { + if (news == _group_labels[i]) { + ReadGroup(news, in_stream, theDataSet); + } + } + } +} + + + +void UNV2417::ReadGroup(const std::string& myGroupLabel, std::ifstream& in_stream, TDataSet& theDataSet) +{ + TGroupId aId; + for(; !in_stream.eof();){ + in_stream >> aId ; + if(aId == -1){ + // end of dataset is reached + break; + } + + int n_nodes; + TRecord aRec; + int aTmp; + in_stream>>aTmp; // miss not necessary values + in_stream>>aTmp; + in_stream>>aTmp; + in_stream>>aTmp; + in_stream>>aTmp; + in_stream>>aTmp; + in_stream>>n_nodes; + + std::getline(in_stream, aRec.GroupName, '\n'); // Finalise previous reading + std::getline(in_stream, aRec.GroupName, '\n'); + + int aElType; + int aElId; + int aNum; + for(int j=0; j < n_nodes; j++){ + in_stream>>aElType; + in_stream>>aElId; + if ((myGroupLabel.compare("2435") == 0) || (myGroupLabel.compare("2452") == 0) || (myGroupLabel.compare("2467") == 0)) { + in_stream>>aTmp; + in_stream>>aTmp; + } + switch (aElType) { + case 7: // Nodes + aNum = aRec.NodeList.size(); + aRec.NodeList.resize(aNum + 1); + aRec.NodeList[aNum] = aElId; + break; + case 8: // Elements + aNum = aRec.ElementList.size(); + aRec.ElementList.resize(aNum + 1); + aRec.ElementList[aNum] = aElId; + break; + } + } + theDataSet.insert(TDataSet::value_type(aId,aRec)); + } + +} + + +void UNV2417::Write(std::ofstream& out_stream, const TDataSet& theDataSet) +{ + if(!out_stream.good()) + EXCEPTION(runtime_error,"ERROR: Output file not good."); + + /* + * Write beginning of dataset + */ + out_stream<<" -1\n"; + out_stream<<" "<<_label_dataset<<"\n"; + + TDataSet::const_iterator anIter = theDataSet.begin(); + for(; anIter != theDataSet.end(); anIter++){ + const TGroupId& aLabel = anIter->first; + const TRecord& aRec = anIter->second; + int aNbNodes = aRec.NodeList.size(); + int aNbElements = aRec.ElementList.size(); + int aNbRecords = aNbNodes + aNbElements; + + out_stream< +#include +#include +#include + + +namespace UNV2417{ + + typedef std::vector TListOfId; // Nodal connectivitiesList of Id + + struct TRecord{ + std::string GroupName; + TListOfId NodeList; + TListOfId ElementList; + }; + + typedef int TGroupId; // type of element label + typedef std::map TDataSet; + + void Read(std::ifstream& in_stream, TDataSet& theDataSet); + void ReadGroup(const std::string& myGroupLabel, std::ifstream& in_stream, TDataSet& theDataSet); + + void Write(std::ofstream& out_stream, const TDataSet& theDataSet); +}; + + +#endif diff --git a/src/SMDS/SMDS_QuadraticEdge.cxx b/src/SMDS/SMDS_QuadraticEdge.cxx new file mode 100644 index 000000000..1dac4ef13 --- /dev/null +++ b/src/SMDS/SMDS_QuadraticEdge.cxx @@ -0,0 +1,187 @@ +// SMESH SMDS : implementaion of Salome mesh data structure +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File: SMDS_QuadraticEdge.cxx +// Created: 16.01.06 16:25:42 +// Author: Sergey KUUL + + +#include "SMDS_QuadraticEdge.hxx" + +#include "SMDS_SetIterator.hxx" +#include "SMDS_IteratorOfElements.hxx" +#include "SMDS_MeshNode.hxx" + +using namespace std; + +//======================================================================= +//function : SMDS_QuadraticEdge +//purpose : +//======================================================================= + +SMDS_QuadraticEdge::SMDS_QuadraticEdge(const SMDS_MeshNode * node1, + const SMDS_MeshNode * node2, + const SMDS_MeshNode * node12) + :SMDS_MeshEdge(node1,node2) +{ + myNodes[2]=node12; +} + + +//======================================================================= +//function : Print +//purpose : +//======================================================================= + +void SMDS_QuadraticEdge::Print(ostream & OS) const +{ + OS << "quadratic edge <" << GetID() << "> : ( first-" << myNodes[0] + << " , last-" << myNodes[1] << " , medium-" << myNodes[2] << ") " << endl; +} + + +//======================================================================= +//function : NbNodes +//purpose : +//======================================================================= + +int SMDS_QuadraticEdge::NbNodes() const +{ + return 3; +} + +//======================================================================= +//function : ChangeNodes +//purpose : +//======================================================================= + +bool SMDS_QuadraticEdge::ChangeNodes(const SMDS_MeshNode * node1, + const SMDS_MeshNode * node2, + const SMDS_MeshNode * node12) +{ + myNodes[0]=node1; + myNodes[1]=node2; + myNodes[2]=node12; + return true; +} + +//======================================================================= +//function : IsMediumNode +//purpose : +//======================================================================= + +bool SMDS_QuadraticEdge::IsMediumNode(const SMDS_MeshNode * node) const +{ + return (myNodes[2]==node); +} + +namespace +{ + //======================================================================= + //class : _MyInterlacedNodeIterator + //purpose : + //======================================================================= + + class _MyInterlacedNodeIterator: public SMDS_NodeArrayIterator + { + const SMDS_MeshNode * myNodes[3]; + public: + _MyInterlacedNodeIterator(const SMDS_MeshNode * const * nodes): + SMDS_NodeArrayIterator( myNodes, & myNodes[3] ) + { + myNodes[0] = nodes[0]; + myNodes[1] = nodes[2]; + myNodes[2] = nodes[1]; + } + }; + + //======================================================================= + //class : _MyInterlacedNodeElemIterator + //purpose : + //======================================================================= + + class _MyInterlacedNodeElemIterator : public SMDS_ElemIterator + { + SMDS_NodeIteratorPtr myItr; + public: + _MyInterlacedNodeElemIterator(SMDS_NodeIteratorPtr interlacedNodeItr): + myItr( interlacedNodeItr ) {} + bool more() { return myItr->more(); } + const SMDS_MeshElement* next() { return myItr->next(); } + }; + + //======================================================================= + //class : _MyNodeIterator + //purpose : + //======================================================================= + + class _MyNodeIterator:public SMDS_NodeArrayElemIterator + { + public: + _MyNodeIterator(const SMDS_MeshNode * const * nodes): + SMDS_NodeArrayElemIterator( nodes, & nodes[3] ) {} + }; +} + +//======================================================================= +//function : interlacedNodesIterator +//purpose : +//======================================================================= + +SMDS_NodeIteratorPtr SMDS_QuadraticEdge::interlacedNodesIterator() const +{ + return SMDS_NodeIteratorPtr (new _MyInterlacedNodeIterator (myNodes)); +} + + +//======================================================================= +//function : interlacedNodesElemIterator +//purpose : +//======================================================================= + +SMDS_ElemIteratorPtr SMDS_QuadraticEdge::interlacedNodesElemIterator() const +{ + return SMDS_ElemIteratorPtr + (new _MyInterlacedNodeElemIterator ( interlacedNodesIterator() )); +} + +//======================================================================= +//function : elementsIterator +//purpose : +//======================================================================= + +SMDS_ElemIteratorPtr SMDS_QuadraticEdge::elementsIterator(SMDSAbs_ElementType type) const +{ + switch(type) + { + case SMDSAbs_Edge: + return SMDS_MeshElement::elementsIterator(SMDSAbs_Edge); + case SMDSAbs_Node: + return SMDS_ElemIteratorPtr(new _MyNodeIterator(myNodes)); + default: + return SMDS_ElemIteratorPtr + (new SMDS_IteratorOfElements + (this,type, SMDS_ElemIteratorPtr(new _MyNodeIterator(myNodes)))); + } +} + diff --git a/src/SMDS/SMDS_QuadraticEdge.hxx b/src/SMDS/SMDS_QuadraticEdge.hxx new file mode 100644 index 000000000..6c6099602 --- /dev/null +++ b/src/SMDS/SMDS_QuadraticEdge.hxx @@ -0,0 +1,62 @@ +// SMESH SMDS : implementaion of Salome mesh data structure +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : SMDS_QuadraticEdge.hxx +// Module : SMESH + +#ifndef _SMDS_QuadraticEdge_HeaderFile +#define _SMDS_QuadraticEdge_HeaderFile + +#include "SMDS_MeshEdge.hxx" +#include + +class SMDS_WNT_EXPORT SMDS_QuadraticEdge: public SMDS_MeshEdge +{ + +public: + SMDS_QuadraticEdge(const SMDS_MeshNode * node1, + const SMDS_MeshNode * node2, + const SMDS_MeshNode * node12); + + bool ChangeNodes(const SMDS_MeshNode * node1, + const SMDS_MeshNode * node2, + const SMDS_MeshNode * node12); + + void Print(std::ostream & OS) const; + + int NbNodes() const; + + virtual bool IsQuadratic() const { return true; } + + virtual bool IsMediumNode(const SMDS_MeshNode* node) const; + + SMDS_NodeIteratorPtr interlacedNodesIterator() const; + + SMDS_ElemIteratorPtr interlacedNodesElemIterator() const; + +protected: + SMDS_ElemIteratorPtr + elementsIterator(SMDSAbs_ElementType type) const; + +}; +#endif diff --git a/src/SMDS/SMDS_QuadraticFaceOfNodes.cxx b/src/SMDS/SMDS_QuadraticFaceOfNodes.cxx new file mode 100644 index 000000000..fa4249e66 --- /dev/null +++ b/src/SMDS/SMDS_QuadraticFaceOfNodes.cxx @@ -0,0 +1,281 @@ +// SMESH SMDS : implementaion of Salome mesh data structure +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File: SMDS_QuadraticFaceOfNodes.cxx +// Created: 16.01.06 17:12:58 +// Author: Sergey KUUL + +#include "SMDS_QuadraticFaceOfNodes.hxx" + +#include "SMDS_SetIterator.hxx" +#include "SMDS_IteratorOfElements.hxx" +#include "SMDS_MeshNode.hxx" + +#include "utilities.h" + +using namespace std; + + +//======================================================================= +//function : SMDS_QuadraticFaceOfNodes() +//purpose : Constructor +//======================================================================= + +SMDS_QuadraticFaceOfNodes::SMDS_QuadraticFaceOfNodes(const SMDS_MeshNode * n1, + const SMDS_MeshNode * n2, + const SMDS_MeshNode * n3, + const SMDS_MeshNode * n12, + const SMDS_MeshNode * n23, + const SMDS_MeshNode * n31) +{ + myNodes.resize( 6 ); + myNodes[ 0 ] = n1; + myNodes[ 1 ] = n2; + myNodes[ 2 ] = n3; + myNodes[ 3 ] = n12; + myNodes[ 4 ] = n23; + myNodes[ 5 ] = n31; +} + + +//======================================================================= +//function : SMDS_QuadraticFaceOfNodes() +//purpose : Constructor +//======================================================================= + +SMDS_QuadraticFaceOfNodes::SMDS_QuadraticFaceOfNodes(const SMDS_MeshNode * n1, + const SMDS_MeshNode * n2, + const SMDS_MeshNode * n3, + const SMDS_MeshNode * n4, + const SMDS_MeshNode * n12, + const SMDS_MeshNode * n23, + const SMDS_MeshNode * n34, + const SMDS_MeshNode * n41) +{ + myNodes.resize( 8 ); + myNodes[ 0 ] = n1; + myNodes[ 1 ] = n2; + myNodes[ 2 ] = n3; + myNodes[ 3 ] = n4; + myNodes[ 4 ] = n12; + myNodes[ 5 ] = n23; + myNodes[ 6 ] = n34; + myNodes[ 7 ] = n41; +} + + +//======================================================================= +//function : IsMediumNode +//purpose : +//======================================================================= + +bool SMDS_QuadraticFaceOfNodes::IsMediumNode(const SMDS_MeshNode * node) const +{ + int i=NbNodes()/2; + for(; i : "; + int i, nbNodes = myNodes.size(); + for (i = 0; i < nbNodes - 1; i++) + OS << myNodes[i] << ","; + OS << myNodes[i] << ") " << endl; +} + +namespace { + + //======================================================================= + //class : _MyInterlacedNodeIterator + //purpose : + //======================================================================= + + class _MyInterlacedNodeIterator:public SMDS_NodeIterator + { + const vector& mySet; + int myIndex; + const int * myInterlace; + public: + _MyInterlacedNodeIterator(const vector& s, + const int * interlace): + mySet(s),myIndex(0),myInterlace(interlace) {} + + bool more() + { + return myIndex < mySet.size(); + } + + const SMDS_MeshNode* next() + { + return mySet[ myInterlace[ myIndex++ ]]; + } + }; + + //======================================================================= + //class : _MyInterlacedNodeElemIterator + //purpose : + //======================================================================= + + class _MyInterlacedNodeElemIterator : public SMDS_ElemIterator + { + SMDS_NodeIteratorPtr myItr; + public: + _MyInterlacedNodeElemIterator(SMDS_NodeIteratorPtr interlacedNodeItr): + myItr( interlacedNodeItr ) {} + bool more() { return myItr->more(); } + const SMDS_MeshElement* next() { return myItr->next(); } + }; + + //======================================================================= + //class : _MyNodeIterator + //purpose : + //======================================================================= + + class _MyNodeIterator : public SMDS_NodeVectorElemIterator + { + public: + _MyNodeIterator(const vector& s): + SMDS_NodeVectorElemIterator( s.begin(), s.end() ) {} + }; + +} + +//======================================================================= +//function : interlacedNodesIterator +//purpose : +//======================================================================= + +SMDS_NodeIteratorPtr SMDS_QuadraticFaceOfNodes::interlacedNodesIterator() const +{ + static int triaInterlace [] = { 0, 3, 1, 4, 2, 5 }; + static int quadInterlace [] = { 0, 4, 1, 5, 2, 6, 3, 7 }; + return SMDS_NodeIteratorPtr + (new _MyInterlacedNodeIterator (myNodes, myNodes.size()==6 ? triaInterlace : quadInterlace)); +} + +//======================================================================= +//function : interlacedNodesElemIterator +//purpose : +//======================================================================= + +SMDS_ElemIteratorPtr SMDS_QuadraticFaceOfNodes::interlacedNodesElemIterator() const +{ + return SMDS_ElemIteratorPtr + (new _MyInterlacedNodeElemIterator ( interlacedNodesIterator() )); +} + +//======================================================================= +//function : elementsIterator +//purpose : +//======================================================================= + +SMDS_ElemIteratorPtr SMDS_QuadraticFaceOfNodes::elementsIterator + (SMDSAbs_ElementType type) const +{ + switch(type) + { + case SMDSAbs_Face: + return SMDS_MeshElement::elementsIterator(SMDSAbs_Face); + case SMDSAbs_Node: + return SMDS_ElemIteratorPtr(new _MyNodeIterator(myNodes)); + case SMDSAbs_Edge: + MESSAGE("Error : edge iterator for SMDS_QuadraticFaceOfNodes not implemented"); + break; + default: + return SMDS_ElemIteratorPtr + (new SMDS_IteratorOfElements + (this,type,SMDS_ElemIteratorPtr (new _MyNodeIterator(myNodes)))); + } + return SMDS_ElemIteratorPtr(); +} + +/*! + * \brief Return node by its index + * \param ind - node index + * \retval const SMDS_MeshNode* - the node + * + * Index is wrapped if it is out of a valid range + */ +const SMDS_MeshNode* SMDS_QuadraticFaceOfNodes::GetNode(const int ind) const +{ + return myNodes[ WrappedIndex( ind )]; +} + diff --git a/src/SMDS/SMDS_QuadraticFaceOfNodes.hxx b/src/SMDS/SMDS_QuadraticFaceOfNodes.hxx new file mode 100644 index 000000000..d174e813e --- /dev/null +++ b/src/SMDS/SMDS_QuadraticFaceOfNodes.hxx @@ -0,0 +1,84 @@ +// SMESH SMDS : implementaion of Salome mesh data structure +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : SMDS_QuadraticVolumeOfNodes.hxx +// Module : SMESH + +#ifndef _SMDS_QuadraticFaceOfNodes_HeaderFile +#define _SMDS_QuadraticFaceOfNodes_HeaderFile + +#include "SMDS_MeshFace.hxx" + +class SMDS_WNT_EXPORT SMDS_QuadraticFaceOfNodes:public SMDS_MeshFace +{ +public: + SMDS_QuadraticFaceOfNodes (const SMDS_MeshNode * n1, + const SMDS_MeshNode * n2, + const SMDS_MeshNode * n3, + const SMDS_MeshNode * n12, + const SMDS_MeshNode * n23, + const SMDS_MeshNode * n31); + + SMDS_QuadraticFaceOfNodes(const SMDS_MeshNode * n1, + const SMDS_MeshNode * n2, + const SMDS_MeshNode * n3, + const SMDS_MeshNode * n4, + const SMDS_MeshNode * n12, + const SMDS_MeshNode * n23, + const SMDS_MeshNode * n34, + const SMDS_MeshNode * n41); + + virtual bool IsQuadratic() const { return true; } + + virtual bool IsMediumNode(const SMDS_MeshNode* node) const; + + bool ChangeNodes(const SMDS_MeshNode* nodes[], + const int nbNodes); + + virtual int NbNodes() const; + virtual int NbEdges() const; + virtual int NbFaces() const; + + virtual void Print (std::ostream & OS) const; + + SMDS_NodeIteratorPtr interlacedNodesIterator() const; + + SMDS_ElemIteratorPtr interlacedNodesElemIterator() const; + + /*! + * \brief Return node by its index + * \param ind - node index + * \retval const SMDS_MeshNode* - the node + * + * Index is wrapped if it is out of a valid range + */ + virtual const SMDS_MeshNode* GetNode(const int ind) const; + +protected: + virtual SMDS_ElemIteratorPtr elementsIterator (SMDSAbs_ElementType type) const; + + private: + std::vector myNodes; +}; + +#endif diff --git a/src/SMDS/SMDS_QuadraticVolumeOfNodes.cxx b/src/SMDS/SMDS_QuadraticVolumeOfNodes.cxx new file mode 100644 index 000000000..ce14eccd0 --- /dev/null +++ b/src/SMDS/SMDS_QuadraticVolumeOfNodes.cxx @@ -0,0 +1,347 @@ +// SMESH SMDS : implementaion of Salome mesh data structure +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File: SMDS_QuadraticVolumeOfNodes.cxx +// Created: 17.01.06 09:46:11 +// Author: Sergey KUUL + +#include "SMDS_QuadraticVolumeOfNodes.hxx" + +#include "SMDS_IteratorOfElements.hxx" +#include "SMDS_MeshNode.hxx" +#include "SMDS_SetIterator.hxx" + +#include "utilities.h" + +using namespace std; + + +//======================================================================= +//function : SMDS_QuadraticVolumeOfNodes() +//purpose : Constructor tetrahedron of 10 nodes +//======================================================================= + +SMDS_QuadraticVolumeOfNodes::SMDS_QuadraticVolumeOfNodes + (const SMDS_MeshNode * n1, + const SMDS_MeshNode * n2, + const SMDS_MeshNode * n3, + const SMDS_MeshNode * n4, + const SMDS_MeshNode * n12, + const SMDS_MeshNode * n23, + const SMDS_MeshNode * n31, + const SMDS_MeshNode * n14, + const SMDS_MeshNode * n24, + const SMDS_MeshNode * n34) +{ + myNodes.resize( 10 ); + myNodes[ 0 ] = n1; + myNodes[ 1 ] = n2; + myNodes[ 2 ] = n3; + myNodes[ 3 ] = n4; + myNodes[ 4 ] = n12; + myNodes[ 5 ] = n23; + myNodes[ 6 ] = n31; + myNodes[ 7 ] = n14; + myNodes[ 8 ] = n24; + myNodes[ 9 ] = n34; +} + + +//======================================================================= +//function : SMDS_QuadraticVolumeOfNodes() +//purpose : Constructor pyramid of 13 nodes +//======================================================================= + +SMDS_QuadraticVolumeOfNodes::SMDS_QuadraticVolumeOfNodes + (const SMDS_MeshNode * n1, + const SMDS_MeshNode * n2, + const SMDS_MeshNode * n3, + const SMDS_MeshNode * n4, + const SMDS_MeshNode * n5, + const SMDS_MeshNode * n12, + const SMDS_MeshNode * n23, + const SMDS_MeshNode * n34, + const SMDS_MeshNode * n41, + const SMDS_MeshNode * n15, + const SMDS_MeshNode * n25, + const SMDS_MeshNode * n35, + const SMDS_MeshNode * n45) +{ + myNodes.resize( 13 ); + myNodes[ 0 ] = n1; + myNodes[ 1 ] = n2; + myNodes[ 2 ] = n3; + myNodes[ 3 ] = n4; + myNodes[ 4 ] = n5; + myNodes[ 5 ] = n12; + myNodes[ 6 ] = n23; + myNodes[ 7 ] = n34; + myNodes[ 8 ] = n41; + myNodes[ 9 ] = n15; + myNodes[ 10 ] = n25; + myNodes[ 11 ] = n35; + myNodes[ 12 ] = n45; +} + + +//======================================================================= +//function : SMDS_QuadraticVolumeOfNodes() +//purpose : Constructor Pentahedron with 15 nodes +//======================================================================= + +SMDS_QuadraticVolumeOfNodes::SMDS_QuadraticVolumeOfNodes + (const SMDS_MeshNode * n1, + const SMDS_MeshNode * n2, + const SMDS_MeshNode * n3, + const SMDS_MeshNode * n4, + const SMDS_MeshNode * n5, + const SMDS_MeshNode * n6, + const SMDS_MeshNode * n12, + const SMDS_MeshNode * n23, + const SMDS_MeshNode * n31, + const SMDS_MeshNode * n45, + const SMDS_MeshNode * n56, + const SMDS_MeshNode * n64, + const SMDS_MeshNode * n14, + const SMDS_MeshNode * n25, + const SMDS_MeshNode * n36) +{ + myNodes.resize( 15 ); + myNodes[ 0 ] = n1; + myNodes[ 1 ] = n2; + myNodes[ 2 ] = n3; + myNodes[ 3 ] = n4; + myNodes[ 4 ] = n5; + myNodes[ 5 ] = n6; + myNodes[ 6 ] = n12; + myNodes[ 7 ] = n23; + myNodes[ 8 ] = n31; + myNodes[ 9 ] = n45; + myNodes[ 10 ] = n56; + myNodes[ 11 ] = n64; + myNodes[ 12 ] = n14; + myNodes[ 13 ] = n25; + myNodes[ 14 ] = n36; +} + + +//======================================================================= +//function : SMDS_QuadraticVolumeOfNodes() +//purpose : Constructor Hexahedrons with 20 nodes +//======================================================================= + +SMDS_QuadraticVolumeOfNodes::SMDS_QuadraticVolumeOfNodes + (const SMDS_MeshNode * n1, + const SMDS_MeshNode * n2, + const SMDS_MeshNode * n3, + const SMDS_MeshNode * n4, + const SMDS_MeshNode * n5, + const SMDS_MeshNode * n6, + const SMDS_MeshNode * n7, + const SMDS_MeshNode * n8, + const SMDS_MeshNode * n12, + const SMDS_MeshNode * n23, + const SMDS_MeshNode * n34, + const SMDS_MeshNode * n41, + const SMDS_MeshNode * n56, + const SMDS_MeshNode * n67, + const SMDS_MeshNode * n78, + const SMDS_MeshNode * n85, + const SMDS_MeshNode * n15, + const SMDS_MeshNode * n26, + const SMDS_MeshNode * n37, + const SMDS_MeshNode * n48) +{ + myNodes.resize( 20 ); + myNodes[ 0 ] = n1; + myNodes[ 1 ] = n2; + myNodes[ 2 ] = n3; + myNodes[ 3 ] = n4; + myNodes[ 4 ] = n5; + myNodes[ 5 ] = n6; + myNodes[ 6 ] = n7; + myNodes[ 7 ] = n8; + myNodes[ 8 ] = n12; + myNodes[ 9 ] = n23; + myNodes[ 10 ] = n34; + myNodes[ 11 ] = n41; + myNodes[ 12 ] = n56; + myNodes[ 13 ] = n67; + myNodes[ 14 ] = n78; + myNodes[ 15 ] = n85; + myNodes[ 16 ] = n15; + myNodes[ 17 ] = n26; + myNodes[ 18 ] = n37; + myNodes[ 19 ] = n48; +} + + +//======================================================================= +//function : IsMediumNode +//purpose : +//======================================================================= + +bool SMDS_QuadraticVolumeOfNodes::IsMediumNode(const SMDS_MeshNode* node) const +{ + int nbCorners = 0; + switch (myNodes.size()) { + case 10: nbCorners = 4; break; + case 13: nbCorners = 5; break; + case 15: nbCorners = 6; break; + default: nbCorners = 8; + } + for ( int i = nbCorners; i : "; + int i, nbNodes = myNodes.size(); + for (i = 0; i < nbNodes - 1; i++) + OS << myNodes[i] << ","; + OS << myNodes[i] << ") " << endl; +} + + +//======================================================================= +//private class : SMDS_QuadraticVolumeOfNodes_MyIterator +//purpose : +//======================================================================= + +class SMDS_QuadraticVolumeOfNodes_MyIterator : public SMDS_NodeVectorElemIterator +{ +public: + SMDS_QuadraticVolumeOfNodes_MyIterator(const vector& s): + SMDS_NodeVectorElemIterator( s.begin(), s.end() ) {} +}; + +//======================================================================= +//function : elementsIterator +//purpose : +//======================================================================= + +SMDS_ElemIteratorPtr SMDS_QuadraticVolumeOfNodes::elementsIterator + (SMDSAbs_ElementType type) const +{ + switch(type) + { + case SMDSAbs_Volume: + return SMDS_MeshElement::elementsIterator(SMDSAbs_Volume); + case SMDSAbs_Node: + return SMDS_ElemIteratorPtr(new SMDS_QuadraticVolumeOfNodes_MyIterator(myNodes)); + case SMDSAbs_Edge: + MESSAGE("Error : edge iterator for SMDS_QuadraticVolumeOfNodes not implemented"); + break; + case SMDSAbs_Face: + MESSAGE("Error : face iterator for SMDS_QuadraticVolumeOfNodes not implemented"); + break; + default: + return SMDS_ElemIteratorPtr + (new SMDS_IteratorOfElements + (this,type,SMDS_ElemIteratorPtr + (new SMDS_QuadraticVolumeOfNodes_MyIterator(myNodes)))); + } + return SMDS_ElemIteratorPtr(); +} + +/*! + * \brief Return node by its index + * \param ind - node index + * \retval const SMDS_MeshNode* - the node + * + * Index is wrapped if it is out of a valid range + */ +const SMDS_MeshNode* SMDS_QuadraticVolumeOfNodes::GetNode(const int ind) const +{ + return myNodes[ WrappedIndex( ind )]; +} + diff --git a/src/SMDS/SMDS_QuadraticVolumeOfNodes.hxx b/src/SMDS/SMDS_QuadraticVolumeOfNodes.hxx new file mode 100644 index 000000000..23f4369d3 --- /dev/null +++ b/src/SMDS/SMDS_QuadraticVolumeOfNodes.hxx @@ -0,0 +1,130 @@ +// SMESH SMDS : implementaion of Salome mesh data structure +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : SMDS_QuadraticVolumeOfNodes.hxx +// Module : SMESH + +#ifndef _SMDS_QuadraticVolumeOfNodes_HeaderFile +#define _SMDS_QuadraticVolumeOfNodes_HeaderFile + +#include "SMDS_MeshVolume.hxx" + +class SMDS_WNT_EXPORT SMDS_QuadraticVolumeOfNodes: public SMDS_MeshVolume +{ +public: + // tetrahedron of 10 nodes + SMDS_QuadraticVolumeOfNodes (const SMDS_MeshNode * n1, + const SMDS_MeshNode * n2, + const SMDS_MeshNode * n3, + const SMDS_MeshNode * n4, + const SMDS_MeshNode * n12, + const SMDS_MeshNode * n23, + const SMDS_MeshNode * n31, + const SMDS_MeshNode * n14, + const SMDS_MeshNode * n24, + const SMDS_MeshNode * n34); + + // pyramid of 13 nodes + SMDS_QuadraticVolumeOfNodes(const SMDS_MeshNode * n1, + const SMDS_MeshNode * n2, + const SMDS_MeshNode * n3, + const SMDS_MeshNode * n4, + const SMDS_MeshNode * n5, + const SMDS_MeshNode * n12, + const SMDS_MeshNode * n23, + const SMDS_MeshNode * n34, + const SMDS_MeshNode * n41, + const SMDS_MeshNode * n15, + const SMDS_MeshNode * n25, + const SMDS_MeshNode * n35, + const SMDS_MeshNode * n45); + + // Pentahedron with 15 nodes + SMDS_QuadraticVolumeOfNodes(const SMDS_MeshNode * n1, + const SMDS_MeshNode * n2, + const SMDS_MeshNode * n3, + const SMDS_MeshNode * n4, + const SMDS_MeshNode * n5, + const SMDS_MeshNode * n6, + const SMDS_MeshNode * n12, + const SMDS_MeshNode * n23, + const SMDS_MeshNode * n31, + const SMDS_MeshNode * n45, + const SMDS_MeshNode * n56, + const SMDS_MeshNode * n64, + const SMDS_MeshNode * n14, + const SMDS_MeshNode * n25, + const SMDS_MeshNode * n36); + + // Hexahedrons with 20 nodes + SMDS_QuadraticVolumeOfNodes(const SMDS_MeshNode * n1, + const SMDS_MeshNode * n2, + const SMDS_MeshNode * n3, + const SMDS_MeshNode * n4, + const SMDS_MeshNode * n5, + const SMDS_MeshNode * n6, + const SMDS_MeshNode * n7, + const SMDS_MeshNode * n8, + const SMDS_MeshNode * n12, + const SMDS_MeshNode * n23, + const SMDS_MeshNode * n34, + const SMDS_MeshNode * n41, + const SMDS_MeshNode * n56, + const SMDS_MeshNode * n67, + const SMDS_MeshNode * n78, + const SMDS_MeshNode * n85, + const SMDS_MeshNode * n15, + const SMDS_MeshNode * n26, + const SMDS_MeshNode * n37, + const SMDS_MeshNode * n48); + + virtual bool IsQuadratic() const { return true; } + + virtual bool IsMediumNode(const SMDS_MeshNode* node) const; + + bool ChangeNodes(const SMDS_MeshNode* nodes[], + const int nbNodes); + + virtual int NbNodes() const; + virtual int NbEdges() const; + virtual int NbFaces() const; + + virtual void Print (std::ostream & OS) const; + + /*! + * \brief Return node by its index + * \param ind - node index + * \retval const SMDS_MeshNode* - the node + * + * Index is wrapped if it is out of a valid range + */ + virtual const SMDS_MeshNode* GetNode(const int ind) const; + + protected: + virtual SMDS_ElemIteratorPtr elementsIterator (SMDSAbs_ElementType type) const; + + private: + std::vector myNodes; +}; + +#endif diff --git a/src/SMDS/SMDS_SetIterator.hxx b/src/SMDS/SMDS_SetIterator.hxx new file mode 100644 index 000000000..05fa6c046 --- /dev/null +++ b/src/SMDS/SMDS_SetIterator.hxx @@ -0,0 +1,101 @@ +// SMESH SMDS : implementaion of Salome mesh data structure +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : SMDS_SetIterator.hxx +// Created : Mon Feb 27 16:57:43 2006 +// Author : Edward AGAPOV (eap) + + +#ifndef SMDS_SetIterator_HeaderFile +#define SMDS_SetIterator_HeaderFile + +#include "SMDS_Iterator.hxx" + +/////////////////////////////////////////////////////////////////////////////// +/// specific SMDS_Iterator iterating over abstract set of values like STL containers +/// +/// BE CAREFUL: iterator pointed value is static_cast'ed to VALUE +/// +/////////////////////////////////////////////////////////////////////////////// + +template +class SMDS_SetIterator : public SMDS_Iterator +{ +protected: + VALUE_SET_ITERATOR _beg, _end; +public: + SMDS_SetIterator(const VALUE_SET_ITERATOR & begin, + const VALUE_SET_ITERATOR & end) + { init ( begin, end ); } + + /// Initialization + virtual void init(const VALUE_SET_ITERATOR & begin, + const VALUE_SET_ITERATOR & end) + { _beg = begin; _end = end; } + + /// Return true if and only if there are other object in this iterator + virtual bool more() { return _beg != _end; } + + /// Return the current object and step to the next one + virtual VALUE next() { return static_cast( *_beg++ ); } + +}; + +// useful specifications + +#include + +class SMDS_MeshElement; +class SMDS_MeshNode; + +typedef const SMDS_MeshElement* SMDS_pElement; +typedef const SMDS_MeshNode* SMDS_pNode; + +// element iterators + +typedef SMDS_SetIterator< SMDS_pElement, std::vector< SMDS_pElement >::const_iterator> +SMDS_ElementVectorIterator; + + +typedef SMDS_SetIterator< SMDS_pElement, SMDS_pElement const *> +SMDS_ElementArrayIterator; + + +typedef SMDS_SetIterator< SMDS_pElement, std::vector< SMDS_pNode >::const_iterator> +SMDS_NodeVectorElemIterator; + + +typedef SMDS_SetIterator< SMDS_pElement, SMDS_pNode const * > +SMDS_NodeArrayElemIterator; + +// node iterators + +typedef SMDS_SetIterator< SMDS_pNode, std::vector< SMDS_pNode >::const_iterator > +SMDS_NodeVectorIterator; + + +typedef SMDS_SetIterator< SMDS_pNode, SMDS_pNode const * > +SMDS_NodeArrayIterator; + + +#endif diff --git a/src/SMESH/SMESH_MesherHelper.cxx b/src/SMESH/SMESH_MesherHelper.cxx new file mode 100644 index 000000000..fd0a0dcfb --- /dev/null +++ b/src/SMESH/SMESH_MesherHelper.cxx @@ -0,0 +1,698 @@ +// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: SMESH_MesherHelper.cxx +// Created: 15.02.06 15:22:41 +// Author: Sergey KUUL +// Copyright: Open CASCADE 2006 + + +#include "SMESH_MesherHelper.hxx" + +#include "SMDS_FacePosition.hxx" +#include "SMDS_EdgePosition.hxx" +#include "SMESH_MeshEditor.hxx" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//======================================================================= +//function : CheckShape +//purpose : +//======================================================================= + +bool SMESH_MesherHelper::IsQuadraticSubMesh(const TopoDS_Shape& aSh) +{ + SMESHDS_Mesh* meshDS = GetMesh()->GetMeshDS(); + // we can create quadratic elements only if all elements + // created on subshapes of given shape are quadratic + // also we have to fill myNLinkNodeMap + myCreateQuadratic = true; + mySeamShapeIds.clear(); + TopAbs_ShapeEnum subType( aSh.ShapeType()==TopAbs_FACE ? TopAbs_EDGE : TopAbs_FACE ); + SMDSAbs_ElementType elemType( subType==TopAbs_FACE ? SMDSAbs_Face : SMDSAbs_Edge ); + + TopExp_Explorer exp( aSh, subType ); + for (; exp.More() && myCreateQuadratic; exp.Next()) { + if ( SMESHDS_SubMesh * subMesh = meshDS->MeshElements( exp.Current() )) { + if ( SMDS_ElemIteratorPtr it = subMesh->GetElements() ) { + while(it->more()) { + const SMDS_MeshElement* e = it->next(); + if ( e->GetType() != elemType || !e->IsQuadratic() ) { + myCreateQuadratic = false; + break; + } + else { + // fill NLinkNodeMap + switch ( e->NbNodes() ) { + case 3: + AddNLinkNode(e->GetNode(0),e->GetNode(1),e->GetNode(2)); break; + case 6: + AddNLinkNode(e->GetNode(0),e->GetNode(1),e->GetNode(3)); + AddNLinkNode(e->GetNode(1),e->GetNode(2),e->GetNode(4)); + AddNLinkNode(e->GetNode(2),e->GetNode(0),e->GetNode(5)); break; + case 8: + AddNLinkNode(e->GetNode(0),e->GetNode(1),e->GetNode(4)); + AddNLinkNode(e->GetNode(1),e->GetNode(2),e->GetNode(5)); + AddNLinkNode(e->GetNode(2),e->GetNode(3),e->GetNode(6)); + AddNLinkNode(e->GetNode(3),e->GetNode(0),e->GetNode(7)); + break; + default: + myCreateQuadratic = false; + break; + } + } + } + } + } + } + + if(!myCreateQuadratic) { + myNLinkNodeMap.clear(); + } + else { + SetSubShape( aSh ); + } + return myCreateQuadratic; +} + +//================================================================================ +/*! + * \brief Set geomerty to make elements on + * \param aSh - geomertic shape + */ +//================================================================================ + +void SMESH_MesherHelper::SetSubShape(const int aShID) +{ + if ( aShID == myShapeID ) + return; + if ( aShID > 1 ) + SetSubShape( GetMesh()->GetMeshDS()->IndexToShape( aShID )); + else + SetSubShape( TopoDS_Shape() ); +} + +//================================================================================ +/*! + * \brief Set geomerty to make elements on + * \param aSh - geomertic shape + */ +//================================================================================ + +void SMESH_MesherHelper::SetSubShape(const TopoDS_Shape& aSh) +{ + if ( !myShape.IsNull() && !aSh.IsNull() && myShape.IsSame( aSh )) + return; + + myShape = aSh; + mySeamShapeIds.clear(); + + if ( myShape.IsNull() ) { + myShapeID = -1; + return; + } + SMESHDS_Mesh* meshDS = GetMesh()->GetMeshDS(); + myShapeID = meshDS->ShapeToIndex(aSh); + + // treatment of periodic faces + if ( aSh.ShapeType() == TopAbs_FACE ) + { + const TopoDS_Face& face = TopoDS::Face( aSh ); + BRepAdaptor_Surface surface( face ); + if ( surface.IsUPeriodic() || surface.IsVPeriodic() ) + { + // look for a seam edge + for ( TopExp_Explorer exp( face, TopAbs_EDGE ); exp.More(); exp.Next()) { + const TopoDS_Edge& edge = TopoDS::Edge( exp.Current() ); + if ( BRep_Tool::IsClosed( edge, face )) { + // initialize myPar1, myPar2 and myParIndex + if ( mySeamShapeIds.empty() ) { + gp_Pnt2d uv1, uv2; + BRep_Tool::UVPoints( edge, face, uv1, uv2 ); + if ( Abs( uv1.Coord(1) - uv2.Coord(1) ) < Abs( uv1.Coord(2) - uv2.Coord(2) )) + { + myParIndex = 1; // U periodic + myPar1 = surface.FirstUParameter(); + myPar2 = surface.LastUParameter(); + } + else { + myParIndex = 2; // V periodic + myPar1 = surface.FirstVParameter(); + myPar2 = surface.LastVParameter(); + } + } + // store shapes indices + mySeamShapeIds.insert( meshDS->ShapeToIndex( exp.Current() )); + for ( TopExp_Explorer v( exp.Current(), TopAbs_VERTEX ); v.More(); v.Next() ) + mySeamShapeIds.insert( meshDS->ShapeToIndex( v.Current() )); + } + } + } + } +} + +//================================================================================ + /*! + * \brief Check if inFaceNode argument is necessary for call GetNodeUV(F,..) + * \param F - the face + * \retval bool - return true if the face is periodic + */ +//================================================================================ + +bool SMESH_MesherHelper::GetNodeUVneedInFaceNode(const TopoDS_Face& F) const +{ + if ( F.IsNull() ) return !mySeamShapeIds.empty(); + + if ( !F.IsNull() && !myShape.IsNull() && myShape.IsSame( F )) + return !mySeamShapeIds.empty(); + + Handle(Geom_Surface) aSurface = BRep_Tool::Surface( F ); + if ( !aSurface.IsNull() ) + return ( aSurface->IsUPeriodic() || aSurface->IsVPeriodic() ); + + return false; +} + +//======================================================================= +//function : IsMedium +//purpose : +//======================================================================= + +bool SMESH_MesherHelper::IsMedium(const SMDS_MeshNode* node, + const SMDSAbs_ElementType typeToCheck) +{ + return SMESH_MeshEditor::IsMedium( node, typeToCheck ); +} + +//======================================================================= +//function : AddNLinkNode +//purpose : +//======================================================================= +/*! + * Auxilary function for filling myNLinkNodeMap + */ +void SMESH_MesherHelper::AddNLinkNode(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const SMDS_MeshNode* n12) +{ + NLink link( n1, n2 ); + if ( n1 > n2 ) link = NLink( n2, n1 ); + // add new record to map + myNLinkNodeMap.insert( make_pair(link,n12)); +} + +//======================================================================= +/*! + * \brief Select UV on either of 2 pcurves of a seam edge, closest to the given UV + * \param uv1 - UV on the seam + * \param uv2 - UV within a face + * \retval gp_Pnt2d - selected UV + */ +//======================================================================= + +gp_Pnt2d SMESH_MesherHelper::GetUVOnSeam( const gp_Pnt2d& uv1, const gp_Pnt2d& uv2 ) const +{ + double p1 = uv1.Coord( myParIndex ); + double p2 = uv2.Coord( myParIndex ); + double p3 = ( Abs( p1 - myPar1 ) < Abs( p1 - myPar2 )) ? myPar2 : myPar1; + if ( Abs( p2 - p1 ) > Abs( p2 - p3 )) + p1 = p3; + gp_Pnt2d result = uv1; + result.SetCoord( myParIndex, p1 ); + return result; +} + +//======================================================================= +/*! + * \brief Return node UV on face + * \param F - the face + * \param n - the node + * \param n2 - a node of element being created located inside a face + * \retval gp_XY - resulting UV + * + * Auxilary function called form GetMediumNode() + */ +//======================================================================= + +gp_XY SMESH_MesherHelper::GetNodeUV(const TopoDS_Face& F, + const SMDS_MeshNode* n, + const SMDS_MeshNode* n2) +{ + gp_Pnt2d uv; + const SMDS_PositionPtr Pos = n->GetPosition(); + if(Pos->GetTypeOfPosition()==SMDS_TOP_FACE) { + // node has position on face + const SMDS_FacePosition* fpos = + static_cast(n->GetPosition().get()); + uv = gp_Pnt2d(fpos->GetUParameter(),fpos->GetVParameter()); + } + else if(Pos->GetTypeOfPosition()==SMDS_TOP_EDGE) { + // node has position on edge => it is needed to find + // corresponding edge from face, get pcurve for this + // edge and recieve value from this pcurve + const SMDS_EdgePosition* epos = + static_cast(n->GetPosition().get()); + SMESHDS_Mesh* meshDS = GetMesh()->GetMeshDS(); + int edgeID = Pos->GetShapeId(); + TopoDS_Edge E = TopoDS::Edge(meshDS->IndexToShape(edgeID)); + double f, l; + TopLoc_Location loc; + Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface(E, F, f, l); + uv = C2d->Value( epos->GetUParameter() ); + // for a node on a seam edge select one of UVs on 2 pcurves + if ( n2 && mySeamShapeIds.find( edgeID ) != mySeamShapeIds.end() ) + uv = GetUVOnSeam( uv, GetNodeUV( F, n2, 0 )); + } + else if(Pos->GetTypeOfPosition()==SMDS_TOP_VERTEX) { + SMESHDS_Mesh * meshDS = GetMesh()->GetMeshDS(); + int vertexID = n->GetPosition()->GetShapeId(); + const TopoDS_Vertex& V = TopoDS::Vertex(meshDS->IndexToShape(vertexID)); + uv = BRep_Tool::Parameters( V, F ); + if ( n2 && mySeamShapeIds.find( vertexID ) != mySeamShapeIds.end() ) + uv = GetUVOnSeam( uv, GetNodeUV( F, n2, 0 )); + } + return uv.XY(); +} + +//======================================================================= +/*! + * \brief Return node U on edge + * \param E - the Edge + * \param n - the node + * \retval double - resulting U + * + * Auxilary function called form GetMediumNode() + */ +//======================================================================= + +double SMESH_MesherHelper::GetNodeU(const TopoDS_Edge& E, + const SMDS_MeshNode* n) +{ + double param = 0; + const SMDS_PositionPtr Pos = n->GetPosition(); + if(Pos->GetTypeOfPosition()==SMDS_TOP_EDGE) { + const SMDS_EdgePosition* epos = + static_cast(n->GetPosition().get()); + param = epos->GetUParameter(); + } + else if(Pos->GetTypeOfPosition()==SMDS_TOP_VERTEX) { + SMESHDS_Mesh * meshDS = GetMesh()->GetMeshDS(); + int vertexID = n->GetPosition()->GetShapeId(); + const TopoDS_Vertex& V = TopoDS::Vertex(meshDS->IndexToShape(vertexID)); + param = BRep_Tool::Parameter( V, E ); + } + return param; +} + +//======================================================================= +//function : GetMediumNode +//purpose : +//======================================================================= +/*! + * Special function for search or creation medium node + */ +const SMDS_MeshNode* SMESH_MesherHelper::GetMediumNode(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + bool force3d) +{ + TopAbs_ShapeEnum shapeType = myShape.IsNull() ? TopAbs_SHAPE : myShape.ShapeType(); + + NLink link(( n1 < n2 ? n1 : n2 ), ( n1 < n2 ? n2 : n1 )); + ItNLinkNode itLN = myNLinkNodeMap.find( link ); + if ( itLN != myNLinkNodeMap.end() ) { + return (*itLN).second; + } + else { + // create medium node + SMDS_MeshNode* n12; + SMESHDS_Mesh* meshDS = GetMesh()->GetMeshDS(); + int faceID = -1, edgeID = -1; + const SMDS_PositionPtr Pos1 = n1->GetPosition(); + const SMDS_PositionPtr Pos2 = n2->GetPosition(); + + if( myShape.IsNull() ) + { + if( Pos1->GetTypeOfPosition()==SMDS_TOP_FACE ) { + faceID = Pos1->GetShapeId(); + } + else if( Pos2->GetTypeOfPosition()==SMDS_TOP_FACE ) { + faceID = Pos2->GetShapeId(); + } + + if( Pos1->GetTypeOfPosition()==SMDS_TOP_EDGE ) { + edgeID = Pos1->GetShapeId(); + } + if( Pos2->GetTypeOfPosition()==SMDS_TOP_EDGE ) { + edgeID = Pos2->GetShapeId(); + } + } + + if(!force3d) { + // we try to create medium node using UV parameters of + // nodes, else - medium between corresponding 3d points + if(faceID>-1 || shapeType == TopAbs_FACE) { + // obtaining a face and 2d points for nodes + TopoDS_Face F; + if( myShape.IsNull() ) + F = TopoDS::Face(meshDS->IndexToShape(faceID)); + else { + F = TopoDS::Face(myShape); + faceID = myShapeID; + } + + gp_XY p1 = GetNodeUV(F,n1,n2); + gp_XY p2 = GetNodeUV(F,n2,n1); + + //checking if surface is periodic + Handle(Geom_Surface) S = BRep_Tool::Surface(F); + Standard_Real UF,UL,VF,VL; + S->Bounds(UF,UL,VF,VL); + + Standard_Real u,v; + Standard_Boolean isUPeriodic = S->IsUPeriodic(); + if(isUPeriodic) { + Standard_Real UPeriod = S->UPeriod(); + Standard_Real p2x = p2.X()+ShapeAnalysis::AdjustByPeriod(p2.X(),p1.X(),UPeriod); + Standard_Real pmid = (p1.X()+p2x)/2.; + u = pmid+ShapeAnalysis::AdjustToPeriod(pmid,UF,UL); + } + else + u= (p1.X()+p2.X())/2.; + + Standard_Boolean isVPeriodic = S->IsVPeriodic(); + if(isVPeriodic) { + Standard_Real VPeriod = S->VPeriod(); + Standard_Real p2y = p2.Y()+ShapeAnalysis::AdjustByPeriod(p2.Y(),p1.Y(),VPeriod); + Standard_Real pmid = (p1.Y()+p2y)/2.; + v = pmid+ShapeAnalysis::AdjustToPeriod(pmid,VF,VL); + } + else + v = (p1.Y()+p2.Y())/2.; + + gp_Pnt P = S->Value(u, v); + n12 = meshDS->AddNode(P.X(), P.Y(), P.Z()); + meshDS->SetNodeOnFace(n12, faceID, u, v); + myNLinkNodeMap.insert(NLinkNodeMap::value_type(link,n12)); + return n12; + } + if (edgeID>-1 || shapeType == TopAbs_EDGE) { + + TopoDS_Edge E; + if( myShape.IsNull() ) + E = TopoDS::Edge(meshDS->IndexToShape(edgeID)); + else { + E = TopoDS::Edge(myShape); + edgeID = myShapeID; + } + + double p1 = GetNodeU(E,n1); + double p2 = GetNodeU(E,n2); + + double f,l; + Handle(Geom_Curve) C = BRep_Tool::Curve(E, f, l); + if(!C.IsNull()) { + + Standard_Boolean isPeriodic = C->IsPeriodic(); + double u; + if(isPeriodic) { + Standard_Real Period = C->Period(); + Standard_Real p = p2+ShapeAnalysis::AdjustByPeriod(p2,p1,Period); + Standard_Real pmid = (p1+p)/2.; + u = pmid+ShapeAnalysis::AdjustToPeriod(pmid,C->FirstParameter(),C->LastParameter()); + } + else + u = (p1+p2)/2.; + + gp_Pnt P = C->Value( u ); + n12 = meshDS->AddNode(P.X(), P.Y(), P.Z()); + meshDS->SetNodeOnEdge(n12, edgeID, u); + myNLinkNodeMap.insert(NLinkNodeMap::value_type(link,n12)); + return n12; + } + } + } + // 3d variant + double x = ( n1->X() + n2->X() )/2.; + double y = ( n1->Y() + n2->Y() )/2.; + double z = ( n1->Z() + n2->Z() )/2.; + n12 = meshDS->AddNode(x,y,z); + if(edgeID>-1) + meshDS->SetNodeOnEdge(n12, edgeID); + else if(faceID>-1) + meshDS->SetNodeOnFace(n12, faceID); + else + meshDS->SetNodeInVolume(n12, myShapeID); + myNLinkNodeMap.insert(NLinkNodeMap::value_type(link,n12)); + return n12; + } +} + +//======================================================================= +//function : AddQuadraticEdge +//purpose : +//======================================================================= +/** + * Special function for creation quadratic edge + */ +SMDS_QuadraticEdge* SMESH_MesherHelper::AddQuadraticEdge(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const int id, + const bool force3d) +{ + SMESHDS_Mesh * meshDS = GetMesh()->GetMeshDS(); + + const SMDS_MeshNode* n12 = GetMediumNode(n1,n2,force3d); + + myCreateQuadratic = true; + + if(id) + return (SMDS_QuadraticEdge*)(meshDS->AddEdgeWithID(n1, n2, n12, id)); + else + return (SMDS_QuadraticEdge*)(meshDS->AddEdge(n1, n2, n12)); +} + +//======================================================================= +//function : AddFace +//purpose : +//======================================================================= +/*! + * Special function for creation quadratic triangle + */ +SMDS_MeshFace* SMESH_MesherHelper::AddFace(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const SMDS_MeshNode* n3, + const int id, + const bool force3d) +{ + SMESHDS_Mesh * meshDS = GetMesh()->GetMeshDS(); + if(!myCreateQuadratic) { + if(id) + return meshDS->AddFaceWithID(n1, n2, n3, id); + else + return meshDS->AddFace(n1, n2, n3); + } + + const SMDS_MeshNode* n12 = GetMediumNode(n1,n2,force3d); + const SMDS_MeshNode* n23 = GetMediumNode(n2,n3,force3d); + const SMDS_MeshNode* n31 = GetMediumNode(n3,n1,force3d); + + if(id) + return meshDS->AddFaceWithID(n1, n2, n3, n12, n23, n31, id); + else + return meshDS->AddFace(n1, n2, n3, n12, n23, n31); +} + + +//======================================================================= +//function : AddFace +//purpose : +//======================================================================= +/*! + * Special function for creation quadratic quadrangle + */ +SMDS_MeshFace* SMESH_MesherHelper::AddFace(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const SMDS_MeshNode* n3, + const SMDS_MeshNode* n4, + const int id, + const bool force3d) +{ + SMESHDS_Mesh * meshDS = GetMesh()->GetMeshDS(); + if(!myCreateQuadratic) { + if(id) + return meshDS->AddFaceWithID(n1, n2, n3, n4, id); + else + return meshDS->AddFace(n1, n2, n3, n4); + } + + const SMDS_MeshNode* n12 = GetMediumNode(n1,n2,force3d); + const SMDS_MeshNode* n23 = GetMediumNode(n2,n3,force3d); + const SMDS_MeshNode* n34 = GetMediumNode(n3,n4,force3d); + const SMDS_MeshNode* n41 = GetMediumNode(n4,n1,force3d); + + if(id) + return meshDS->AddFaceWithID(n1, n2, n3, n4, n12, n23, n34, n41, id); + else + return meshDS->AddFace(n1, n2, n3, n4, n12, n23, n34, n41); +} + + +//======================================================================= +//function : AddVolume +//purpose : +//======================================================================= +/*! + * Special function for creation quadratic volume + */ +SMDS_MeshVolume* SMESH_MesherHelper::AddVolume(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const SMDS_MeshNode* n3, + const SMDS_MeshNode* n4, + const SMDS_MeshNode* n5, + const SMDS_MeshNode* n6, + const int id, + const bool force3d) +{ + SMESHDS_Mesh * meshDS = GetMesh()->GetMeshDS(); + if(!myCreateQuadratic) { + if(id) + return meshDS->AddVolumeWithID(n1, n2, n3, n4, n5, n6, id); + else + return meshDS->AddVolume(n1, n2, n3, n4, n5, n6); + } + + const SMDS_MeshNode* n12 = GetMediumNode(n1,n2,force3d); + const SMDS_MeshNode* n23 = GetMediumNode(n2,n3,force3d); + const SMDS_MeshNode* n31 = GetMediumNode(n3,n1,force3d); + + const SMDS_MeshNode* n45 = GetMediumNode(n4,n5,force3d); + const SMDS_MeshNode* n56 = GetMediumNode(n5,n6,force3d); + const SMDS_MeshNode* n64 = GetMediumNode(n6,n4,force3d); + + const SMDS_MeshNode* n14 = GetMediumNode(n1,n4,force3d); + const SMDS_MeshNode* n25 = GetMediumNode(n2,n5,force3d); + const SMDS_MeshNode* n36 = GetMediumNode(n3,n6,force3d); + + if(id) + return meshDS->AddVolumeWithID(n1, n2, n3, n4, n5, n6, + n12, n23, n31, n45, n56, n64, n14, n25, n36, id); + else + return meshDS->AddVolume(n1, n2, n3, n4, n5, n6, + n12, n23, n31, n45, n56, n64, n14, n25, n36); +} + + +//======================================================================= +//function : AddVolume +//purpose : +//======================================================================= +/*! + * Special function for creation quadratic volume + */ +SMDS_MeshVolume* SMESH_MesherHelper::AddVolume(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const SMDS_MeshNode* n3, + const SMDS_MeshNode* n4, + const int id, + const bool force3d) +{ + SMESHDS_Mesh * meshDS = GetMesh()->GetMeshDS(); + if(!myCreateQuadratic) { + if(id) + return meshDS->AddVolumeWithID(n1, n2, n3, n4, id); + else + return meshDS->AddVolume(n1, n2, n3, n4); + } + + const SMDS_MeshNode* n12 = GetMediumNode(n1,n2,force3d); + const SMDS_MeshNode* n23 = GetMediumNode(n2,n3,force3d); + const SMDS_MeshNode* n31 = GetMediumNode(n3,n1,force3d); + + const SMDS_MeshNode* n14 = GetMediumNode(n1,n4,force3d); + const SMDS_MeshNode* n24 = GetMediumNode(n2,n4,force3d); + const SMDS_MeshNode* n34 = GetMediumNode(n3,n4,force3d); + + if(id) + return meshDS->AddVolumeWithID(n1, n2, n3, n4, n12, n23, n31, n14, n24, n34, id); + else + return meshDS->AddVolume(n1, n2, n3, n4, n12, n23, n31, n14, n24, n34); +} + + +//======================================================================= +//function : AddVolume +//purpose : +//======================================================================= +/*! + * Special function for creation quadratic volume + */ +SMDS_MeshVolume* SMESH_MesherHelper::AddVolume(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const SMDS_MeshNode* n3, + const SMDS_MeshNode* n4, + const SMDS_MeshNode* n5, + const SMDS_MeshNode* n6, + const SMDS_MeshNode* n7, + const SMDS_MeshNode* n8, + const int id, + const bool force3d) +{ + SMESHDS_Mesh * meshDS = GetMesh()->GetMeshDS(); + if(!myCreateQuadratic) { + if(id) + return meshDS->AddVolumeWithID(n1, n2, n3, n4, n5, n6, n7, n8, id); + else + return meshDS->AddVolume(n1, n2, n3, n4, n5, n6, n7, n8); + } + + const SMDS_MeshNode* n12 = GetMediumNode(n1,n2,force3d); + const SMDS_MeshNode* n23 = GetMediumNode(n2,n3,force3d); + const SMDS_MeshNode* n34 = GetMediumNode(n3,n4,force3d); + const SMDS_MeshNode* n41 = GetMediumNode(n4,n1,force3d); + + const SMDS_MeshNode* n56 = GetMediumNode(n5,n6,force3d); + const SMDS_MeshNode* n67 = GetMediumNode(n6,n7,force3d); + const SMDS_MeshNode* n78 = GetMediumNode(n7,n8,force3d); + const SMDS_MeshNode* n85 = GetMediumNode(n8,n5,force3d); + + const SMDS_MeshNode* n15 = GetMediumNode(n1,n5,force3d); + const SMDS_MeshNode* n26 = GetMediumNode(n2,n6,force3d); + const SMDS_MeshNode* n37 = GetMediumNode(n3,n7,force3d); + const SMDS_MeshNode* n48 = GetMediumNode(n4,n8,force3d); + + if(id) + return meshDS->AddVolumeWithID(n1, n2, n3, n4, n5, n6, n7, n8, + n12, n23, n34, n41, n56, n67, + n78, n85, n15, n26, n37, n48, id); + else + return meshDS->AddVolume(n1, n2, n3, n4, n5, n6, n7, n8, + n12, n23, n34, n41, n56, n67, + n78, n85, n15, n26, n37, n48); +} + + diff --git a/src/SMESH/SMESH_MesherHelper.hxx b/src/SMESH/SMESH_MesherHelper.hxx new file mode 100644 index 000000000..4ae2101ec --- /dev/null +++ b/src/SMESH/SMESH_MesherHelper.hxx @@ -0,0 +1,265 @@ +// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: SMESH_MesherHelper.hxx +// Created: 15.02.06 14:48:09 +// Author: Sergey KUUL +// Copyright: Open CASCADE 2006 + + +#ifndef SMESH_MesherHelper_HeaderFile +#define SMESH_MesherHelper_HeaderFile + +#include +#include +#include +#include +#include +#include + +#include + +typedef pair NLink; +typedef map NLinkNodeMap; +typedef map::iterator ItNLinkNode; + +/*! + * \brief It helps meshers to add elements + * + * It allow meshers not to care about creation of medium nodes + * when filling a quadratic mesh. Helper does it itself. + * It defines degree of elements to create when IsQuadraticSubMesh() + * is called. + */ + +class SMESH_MesherHelper +{ + public: + // ---------- PUBLIC METHODS ---------- + + /// Empty constructor + SMESH_MesherHelper(SMESH_Mesh& theMesh) + { myMesh=(void *)&theMesh; myCreateQuadratic = false; myShapeID=-1;} + + SMESH_Mesh* GetMesh() const + { return (SMESH_Mesh*)myMesh; } + + /// Copy constructor + //Standard_EXPORT SMESH_MesherHelper (const SMESH_MesherHelper& theOther); + + /// Destructor + //Standard_EXPORT virtual ~SMESH_MesherHelper (); + + /** + * Check submesh for given shape + * Check if all elements on this shape + * are quadratic, if yes => set true to myCreateQuadratic + * (default value is false). Also fill myNLinkNodeMap + * Returns myCreateQuadratic + */ + bool IsQuadraticSubMesh(const TopoDS_Shape& theShape); + + /*! + * \brief Returns true if given node is medium + * \param n - node to check + * \param typeToCheck - type of elements containing the node to ask about node status + * \retval bool - check result + */ + static bool IsMedium(const SMDS_MeshNode* node, + const SMDSAbs_ElementType typeToCheck = SMDSAbs_All); + + /** + * Auxilary function for filling myNLinkNodeMap + */ + void AddNLinkNode(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const SMDS_MeshNode* n12); + + /** + * Auxilary function for filling myNLinkNodeMap + */ + void AddNLinkNodeMap(const NLinkNodeMap& aMap) + { myNLinkNodeMap.insert(aMap.begin(), aMap.end()); } + + /** + * Returns myNLinkNodeMap + */ + const NLinkNodeMap& GetNLinkNodeMap() { return myNLinkNodeMap; } + + /*! + * \brief Return node UV on face + * \param F - the face + * \param n - the node + * \param inFaceNode - a node of element being created located inside a face + * \retval gp_XY - resulting UV + * + * Auxilary function called form GetMediumNode() + */ + gp_XY GetNodeUV(const TopoDS_Face& F, + const SMDS_MeshNode* n, + const SMDS_MeshNode* inFaceNode=0); + + /*! + * \brief Check if inFaceNode argument is necessary for call GetNodeUV(F,..) + * \param F - the face + * \retval bool - return true if the face is periodic + * + * if F is Null, answer about subshape set through IsQuadraticSubMesh() or + * SetSubShape() + */ + bool GetNodeUVneedInFaceNode(const TopoDS_Face& F = TopoDS_Face()) const; + + /*! + * \brief Return U on edge + * \param F - the edge + * \param n - the node + * \retval double - resulting U + * + * Auxilary function called from GetMediumNode() + */ + double GetNodeU(const TopoDS_Edge& E, + const SMDS_MeshNode* n); + + + /** + * Special function for search or creation medium node + */ + const SMDS_MeshNode* GetMediumNode(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const bool force3d); + + /** + * Special function for creation quadratic edge + */ + SMDS_QuadraticEdge* AddQuadraticEdge(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const int id = 0, + const bool force3d = true); + + /** + * Special function for creation quadratic triangle + */ + SMDS_MeshFace* AddFace(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const SMDS_MeshNode* n3, + const int id=0, + const bool force3d = false); + + /** + * Special function for creation quadratic quadrangle + */ + SMDS_MeshFace* AddFace(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const SMDS_MeshNode* n3, + const SMDS_MeshNode* n4, + const int id = 0, + const bool force3d = false); + + /** + * Special function for creation quadratic tetraahedron + */ + SMDS_MeshVolume* AddVolume(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const SMDS_MeshNode* n3, + const SMDS_MeshNode* n4, + const int id = 0, + const bool force3d = true); + + /** + * Special function for creation quadratic pentahedron + */ + SMDS_MeshVolume* AddVolume(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const SMDS_MeshNode* n3, + const SMDS_MeshNode* n4, + const SMDS_MeshNode* n5, + const SMDS_MeshNode* n6, + const int id = 0, + const bool force3d = true); + + /** + * Special function for creation quadratic hexahedron + */ + SMDS_MeshVolume* AddVolume(const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + const SMDS_MeshNode* n3, + const SMDS_MeshNode* n4, + const SMDS_MeshNode* n5, + const SMDS_MeshNode* n6, + const SMDS_MeshNode* n7, + const SMDS_MeshNode* n8, + const int id = 0, + bool force3d = true); + + + /*! + * \brief Set order of elements to create + * \param theBuildQuadratic - to build quadratic or not + * + * To be used for quadratic elements creation without preceding + * IsQuadraticSubMesh() or AddQuadraticEdge() call + */ + void SetKeyIsQuadratic(const bool theBuildQuadratic) + { myCreateQuadratic = theBuildQuadratic; } + + /*! + * \brief Set shape to make elements on + * \param subShape, subShapeID - shape or its ID (==SMESHDS_Mesh::ShapeToIndex(shape)) + */ + void SetSubShape(const int subShapeID); + void SetSubShape(const TopoDS_Shape& subShape); + + /*! + * \brief Return shape or its ID, on which created elements are added + * \retval TopoDS_Shape, int - shape or its ID + */ + int GetSubShapeID() { return myShapeID; } + TopoDS_Shape GetSubShape() { return myShape; } + + protected: + + /*! + * \brief Select UV on either of 2 pcurves of a seam edge, closest to the given UV + * \param uv1 - UV on the seam + * \param uv2 - UV within a face + * \retval gp_Pnt2d - selected UV + */ + gp_Pnt2d GetUVOnSeam( const gp_Pnt2d& uv1, const gp_Pnt2d& uv2 ) const; + + private: + + void* myMesh; + + int myShapeID; + + // Key for creation quadratic faces + bool myCreateQuadratic; + + // special map for using during creation quadratic faces + NLinkNodeMap myNLinkNodeMap; + + std::set< int > mySeamShapeIds; + double myPar1, myPar2; // bounds of a closed periodic surface + int myParIndex; // bounds' index (1-U, 2-V) + TopoDS_Shape myShape; + +}; + + +#endif diff --git a/src/SMESHClient/Makefile.in b/src/SMESHClient/Makefile.in new file mode 100644 index 000000000..d367f0d27 --- /dev/null +++ b/src/SMESHClient/Makefile.in @@ -0,0 +1,103 @@ +# GEOM GEOMClient : tool to transfer BREP files from GEOM server to GEOM client +# +# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.in +# Author : Pavel TELKOV (OCC) +# Module : SHESM + +top_srcdir=@top_srcdir@ +top_builddir=../.. +srcdir=@srcdir@ +VPATH=.:@srcdir@:@top_srcdir@/idl + + +@COMMENCE@ + +# header files +EXPORT_HEADERS = \ + SMESH_Client.hxx + +# Libraries targets + +LIB = libSMESHClient.la +LIB_SRC = SMESH_Client.cxx + +LIB_CLIENT_IDL = SALOME_Comm.idl \ + SALOME_Component.idl \ + SALOMEDS.idl \ + SALOMEDS_Attributes.idl \ + SALOME_Exception.idl \ + SALOME_GenericObj.idl \ + SMESH_Mesh.idl \ + SMESH_Gen.idl \ + SMESH_Group.idl \ + SMESH_Hypothesis.idl \ + SMESH_Pattern.idl \ + SMESH_Filter.idl \ + GEOM_Gen.idl \ + MED.idl + +# Executables targets +BIN = SMESHClientBin +BIN_SRC = +BIN_CLIENT_IDL = +BIN_SERVER_IDL = + +# additionnal information to compil and link file +CPPFLAGS += $(OCC_INCLUDES) $(KERNEL_CXXFLAGS) $(BOOST_CPPFLAGS) +CXXFLAGS += $(OCC_CXXFLAGS) $(KERNEL_CXXFLAGS) +LDFLAGS += $(OCC_KERNEL_LIBS) \ + $(KERNEL_LDFLAGS) \ + $(GEOM_LDFLAGS) \ + $(MED_LDFLAGS) \ + -lSMDS \ + -lSMESHimpl \ + -lSMESHDS \ + -lSMESHControls \ + -lNMTTools \ + -lNMTDS \ + -lmed_V2_1 \ + -lMEDWrapper \ + -lMEDWrapperBase \ + -lMEDWrapper_V2_1 \ + -lMEDWrapper_V2_2 \ + -lSalomeResourcesManager \ + -lSalomeLifeCycleCORBA \ + -lSalomeNotification \ + -lSalomeContainer \ + -lRegistry \ + -lSalomeNS \ + -lSALOMELocalTrace \ + -lSALOMEBasics \ + -lOpUtil \ + -lTKShHealing \ + -lMeshDriverDAT \ + -lMeshDriverSTL \ + -lMeshDriverMED \ + -lMeshDriverUNV \ + -lMeshDriver + +LDFLAGSFORBIN += $(LDFLAGS) + +@CONCLUDE@ + diff --git a/src/SMESHClient/SMESHClientBin.cxx b/src/SMESHClient/SMESHClientBin.cxx new file mode 100644 index 000000000..998d10727 --- /dev/null +++ b/src/SMESHClient/SMESHClientBin.cxx @@ -0,0 +1,30 @@ +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File : +// Author : +// Module : +// $Header: + +#include "SMESH_Client.hxx" + +int main( int, char** ) +{ + return 0; +} diff --git a/src/SMESHClient/SMESH_Client.cxx b/src/SMESHClient/SMESH_Client.cxx new file mode 100644 index 000000000..bd52bc042 --- /dev/null +++ b/src/SMESHClient/SMESH_Client.cxx @@ -0,0 +1,797 @@ +// SMESH SMESHClient : tool to update client mesh structure by mesh from server +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : SMESH_Client.cxx +// Author : Pavel TELKOV +// Module : SMESH + +#include "SMESH_Client.hxx" +#include "SMESH_Mesh.hxx" + +#include "SALOME_NamingService.hxx" +#include "SALOME_LifeCycleCORBA.hxx" + +#include +#include CORBA_SERVER_HEADER(SALOME_Component) +#include CORBA_SERVER_HEADER(SALOME_Exception) + +#include "OpUtil.hxx" +#include "utilities.h" + +#ifdef WNT +#include +#else +#include +#endif + +#include + +#ifndef EXCEPTION +#define EXCEPTION(TYPE, MSG) {\ + std::ostringstream aStream;\ + aStream<<__FILE__<<"["<<__LINE__<<"]::"<FindNode(theId)) return anElem; + EXCEPTION(runtime_error,"SMDS_Mesh::FindNode - cannot find a SMDS_MeshNode for ID = "<FindElement(theId)) return anElem; + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot find a SMDS_MeshElement for ID = "<AddNodeWithID(aCoords[aCoordId], + aCoords[aCoordId+1], + aCoords[aCoordId+2], + anIndexes[anElemId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddNodeWithID for ID = "<AddEdgeWithID(anIndexes[anIndexId+1], + anIndexes[anIndexId+2], + anIndexes[anIndexId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddEdgeWithID for ID = "<AddFaceWithID(anIndexes[anIndexId+1], + anIndexes[anIndexId+2], + anIndexes[anIndexId+3], + anIndexes[anIndexId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddFaceWithID for ID = "<AddFaceWithID(anIndexes[anIndexId+1], + anIndexes[anIndexId+2], + anIndexes[anIndexId+3], + anIndexes[anIndexId+4], + anIndexes[anIndexId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddFaceWithID for ID = "< nodes_ids (aNbNodes); + for (int i = 0; i < aNbNodes; i++) { + nodes_ids[i] = anIndexes[anIndexId++]; + } + + SMDS_MeshElement* anElem = theMesh->AddPolygonalFaceWithID(nodes_ids, aFaceId); + if (!anElem) + EXCEPTION(runtime_error, "SMDS_Mesh::FindElement - cannot AddPolygonalFaceWithID for ID = " + << anElemId); + } + } + + + //======================================================================= + //function : AddTetrasWithID + //======================================================================= + inline void AddTetrasWithID(SMDS_Mesh* theMesh, + SMESH::log_array_var& theSeq, + CORBA::Long theId) + { + const SMESH::long_array& anIndexes = theSeq[theId].indexes; + CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; + if(5*aNbElems != anIndexes.length()) + EXCEPTION(runtime_error,"AddTetrasWithID - 5*aNbElems != anIndexes.length()"); + for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=5){ + SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1], + anIndexes[anIndexId+2], + anIndexes[anIndexId+3], + anIndexes[anIndexId+4], + anIndexes[anIndexId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddVolumeWithID for ID = "<AddVolumeWithID(anIndexes[anIndexId+1], + anIndexes[anIndexId+2], + anIndexes[anIndexId+3], + anIndexes[anIndexId+4], + anIndexes[anIndexId+5], + anIndexes[anIndexId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddVolumeWithID for ID = "<AddVolumeWithID(anIndexes[anIndexId+1], + anIndexes[anIndexId+2], + anIndexes[anIndexId+3], + anIndexes[anIndexId+4], + anIndexes[anIndexId+5], + anIndexes[anIndexId+6], + anIndexes[anIndexId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddVolumeWithID for ID = "<AddVolumeWithID(anIndexes[anIndexId+1], + anIndexes[anIndexId+2], + anIndexes[anIndexId+3], + anIndexes[anIndexId+4], + anIndexes[anIndexId+5], + anIndexes[anIndexId+6], + anIndexes[anIndexId+7], + anIndexes[anIndexId+8], + anIndexes[anIndexId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddVolumeWithID for ID = "< nodes_ids (aNbNodes); + for (int i = 0; i < aNbNodes; i++) { + nodes_ids[i] = anIndexes[anIndexId++]; + } + + int aNbFaces = anIndexes[anIndexId++]; + std::vector quantities (aNbFaces); + for (int i = 0; i < aNbFaces; i++) { + quantities[i] = anIndexes[anIndexId++]; + } + + SMDS_MeshElement* anElem = + theMesh->AddPolyhedralVolumeWithID(nodes_ids, quantities, aFaceId); + if (!anElem) + EXCEPTION(runtime_error, "SMDS_Mesh::FindElement - cannot AddPolyhedralVolumeWithID for ID = " + << anElemId); + } + } + + + //======================================================================= + //function : AddQuadEdgesWithID + //======================================================================= + inline void AddQuadEdgesWithID(SMDS_Mesh* theMesh, + SMESH::log_array_var& theSeq, + CORBA::Long theId) + { + const SMESH::long_array& anIndexes = theSeq[theId].indexes; + CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; + if(4*aNbElems != anIndexes.length()) + EXCEPTION(runtime_error,"AddQuadEdgeWithID - 4*aNbElems != aCoords.length()"); + for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=4){ + SMDS_MeshElement* anElem = theMesh->AddEdgeWithID(anIndexes[anIndexId+1], + anIndexes[anIndexId+2], + anIndexes[anIndexId+3], + anIndexes[anIndexId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddEdgeWithID for ID = "<AddFaceWithID(anIndexes[anIndexId+1], + anIndexes[anIndexId+2], + anIndexes[anIndexId+3], + anIndexes[anIndexId+4], + anIndexes[anIndexId+5], + anIndexes[anIndexId+6], + anIndexes[anIndexId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddFaceWithID for ID = "<AddFaceWithID(anIndexes[anIndexId+1], + anIndexes[anIndexId+2], + anIndexes[anIndexId+3], + anIndexes[anIndexId+4], + anIndexes[anIndexId+5], + anIndexes[anIndexId+6], + anIndexes[anIndexId+7], + anIndexes[anIndexId+8], + anIndexes[anIndexId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddFaceWithID for ID = "<AddVolumeWithID(anIndexes[anIndexId+1], + anIndexes[anIndexId+2], + anIndexes[anIndexId+3], + anIndexes[anIndexId+4], + anIndexes[anIndexId+5], + anIndexes[anIndexId+6], + anIndexes[anIndexId+7], + anIndexes[anIndexId+8], + anIndexes[anIndexId+9], + anIndexes[anIndexId+10], + anIndexes[anIndexId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddVolumeWithID for ID = "<AddVolumeWithID(anIndexes[anIndexId+1], + anIndexes[anIndexId+2], + anIndexes[anIndexId+3], + anIndexes[anIndexId+4], + anIndexes[anIndexId+5], + anIndexes[anIndexId+6], + anIndexes[anIndexId+7], + anIndexes[anIndexId+8], + anIndexes[anIndexId+9], + anIndexes[anIndexId+10], + anIndexes[anIndexId+11], + anIndexes[anIndexId+12], + anIndexes[anIndexId+13], + anIndexes[anIndexId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddVolumeWithID for ID = "<AddVolumeWithID(anIndexes[anIndexId+1], + anIndexes[anIndexId+2], + anIndexes[anIndexId+3], + anIndexes[anIndexId+4], + anIndexes[anIndexId+5], + anIndexes[anIndexId+6], + anIndexes[anIndexId+7], + anIndexes[anIndexId+8], + anIndexes[anIndexId+9], + anIndexes[anIndexId+10], + anIndexes[anIndexId+11], + anIndexes[anIndexId+12], + anIndexes[anIndexId+13], + anIndexes[anIndexId+14], + anIndexes[anIndexId+15], + anIndexes[anIndexId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddVolumeWithID for ID = "<AddVolumeWithID(anIndexes[anIndexId+1], + anIndexes[anIndexId+2], + anIndexes[anIndexId+3], + anIndexes[anIndexId+4], + anIndexes[anIndexId+5], + anIndexes[anIndexId+6], + anIndexes[anIndexId+7], + anIndexes[anIndexId+8], + anIndexes[anIndexId+9], + anIndexes[anIndexId+10], + anIndexes[anIndexId+11], + anIndexes[anIndexId+12], + anIndexes[anIndexId+13], + anIndexes[anIndexId+14], + anIndexes[anIndexId+15], + anIndexes[anIndexId+16], + anIndexes[anIndexId+17], + anIndexes[anIndexId+18], + anIndexes[anIndexId+19], + anIndexes[anIndexId+20], + anIndexes[anIndexId]); + if(!anElem) + EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddVolumeWithID for ID = "< aNodes (nbNodes); + for (int iNode = 0; iNode < nbNodes; iNode++) { + aNodes[iNode] = FindNode(theMesh, anIndexes[iind++]); + } + // nb faces + int nbFaces = anIndexes[iind++]; + // quantities + std::vector quantities (nbFaces); + for (int iFace = 0; iFace < nbFaces; iFace++) { + quantities[iFace] = anIndexes[iind++]; + } + // change + theMesh->ChangePolyhedronNodes(elem, aNodes, quantities); + } + } +} + +//======================================================================= +SMESH::SMESH_Gen_var +SMESH_Client::GetSMESHGen(CORBA::ORB_ptr theORB, + CORBA::Boolean& theIsEmbeddedMode) +{ + static SMESH::SMESH_Gen_var aMeshGen; + + if(CORBA::is_nil(aMeshGen.in())){ +#ifdef WNT + long aClientPID = (long)_getpid(); +#else + long aClientPID = (long)getpid(); +#endif + + SALOME_NamingService aNamingService(theORB); + SALOME_LifeCycleCORBA aLifeCycleCORBA(&aNamingService); + Engines::Component_var aComponent = aLifeCycleCORBA.FindOrLoad_Component("FactoryServer","SMESH"); + aMeshGen = SMESH::SMESH_Gen::_narrow(aComponent); + + std::string aClientHostName = GetHostname(); + Engines::Container_var aServerContainer = aMeshGen->GetContainerRef(); + CORBA::String_var aServerHostName = aServerContainer->getHostName(); + CORBA::Long aServerPID = aServerContainer->getPID(); + aMeshGen->SetEmbeddedMode((aClientPID == aServerPID) && (aClientHostName == aServerHostName.in())); + } + theIsEmbeddedMode = aMeshGen->IsEmbeddedMode(); + + return aMeshGen; +} + + +//======================================================================= +// function : Create() +// purpose : +//======================================================================= +SMESH_Client::SMESH_Client(CORBA::ORB_ptr theORB, + SMESH::SMESH_Mesh_ptr theMesh): + myMeshServer(SMESH::SMESH_Mesh::_duplicate(theMesh)), + mySMESHDSMesh(NULL), + mySMDSMesh(NULL) +{ + myMeshServer->Register(); + + CORBA::Boolean anIsEmbeddedMode; + GetSMESHGen(theORB,anIsEmbeddedMode); + if(anIsEmbeddedMode){ + if ( MYDEBUG ) + MESSAGE("Info: The same process, update mesh by pointer "); + // just set client mesh pointer to server mesh pointer + SMESH_Mesh* aMesh = reinterpret_cast(theMesh->GetMeshPtr()); + if(aMesh->GetMeshDS()->IsEmbeddedMode()){ + mySMESHDSMesh = aMesh->GetMeshDS(); + mySMDSMesh = mySMESHDSMesh; + } + } + if(!mySMDSMesh) + mySMDSMesh = new SMDS_Mesh(); +} + + +//================================================================================= +// function : ~SMESH_Client +// purpose : Destructor +//================================================================================= +SMESH_Client::~SMESH_Client() +{ + myMeshServer->Destroy(); + if(!mySMESHDSMesh) + delete mySMDSMesh; +} + + +//================================================================================= +SMDS_Mesh* +SMESH_Client::GetMesh() const +{ + return mySMDSMesh; +} + + +//================================================================================= +SMDS_Mesh* +SMESH_Client::operator->() const +{ + return GetMesh(); +} + + +//================================================================================= +SMESH::SMESH_Mesh_ptr +SMESH_Client::GetMeshServer() +{ + return myMeshServer.in(); +} + + +//================================================================================= +// function : SMESH_Client +// purpose : Update mesh +//================================================================================= +bool +SMESH_Client::Update(bool theIsClear) +{ + bool anIsModified = true; + if(mySMESHDSMesh){ + SMESHDS_Script* aScript = mySMESHDSMesh->GetScript(); + anIsModified = aScript->IsModified(); + aScript->SetModified(false); + }else{ + SMESH::log_array_var aSeq = myMeshServer->GetLog( theIsClear ); + CORBA::Long aLength = aSeq->length(); + anIsModified = aLength > 0; + if( MYDEBUG ) + MESSAGE( "Update: length of the script is "<RemoveNode( FindNode( mySMDSMesh, anIndexes[anElemId] ) ); + break; + + case SMESH::REMOVE_ELEMENT: + for( ; anElemId < aNbElems; anElemId++ ) + mySMDSMesh->RemoveElement( FindElement( mySMDSMesh, anIndexes[anElemId] ) ); + break; + + case SMESH::MOVE_NODE: + for(CORBA::Long aCoordId=0; anElemId < aNbElems; anElemId++, aCoordId+=3) + { + SMDS_MeshNode* node = + const_cast( FindNode( mySMDSMesh, anIndexes[anElemId] )); + node->setXYZ( aCoords[aCoordId], aCoords[aCoordId+1], aCoords[aCoordId+2] ); + } + break; + + case SMESH::CHANGE_ELEMENT_NODES: + for ( CORBA::Long i = 0; anElemId < aNbElems; anElemId++ ) + { + // find element + const SMDS_MeshElement* elem = FindElement( mySMDSMesh, anIndexes[i++] ); + // nb nodes + int nbNodes = anIndexes[i++]; + // nodes + //ASSERT( nbNodes < 9 ); + const SMDS_MeshNode* aNodes[ nbNodes ]; + for ( int iNode = 0; iNode < nbNodes; iNode++ ) + aNodes[ iNode ] = FindNode( mySMDSMesh, anIndexes[i++] ); + // change + mySMDSMesh->ChangeElementNodes( elem, aNodes, nbNodes ); + } + break; + + case SMESH::CHANGE_POLYHEDRON_NODES: + ChangePolyhedronNodes(mySMDSMesh, aSeq, anId); + break; + case SMESH::RENUMBER: + for(CORBA::Long i=0; anElemId < aNbElems; anElemId++, i+=3) + { + mySMDSMesh->Renumber( anIndexes[i], anIndexes[i+1], anIndexes[i+2] ); + } + break; + + default:; + } + } + } + catch ( SALOME::SALOME_Exception& exc ) + { + INFOS("Following exception was cought:\n\t"<NbNodes() = "<NbNodes()); + MESSAGE("Update - mySMDSMesh->NbEdges() = "<NbEdges()); + MESSAGE("Update - mySMDSMesh->NbFaces() = "<NbFaces()); + MESSAGE("Update - mySMDSMesh->NbVolumes() = "<NbVolumes()); + } + } // end of update mesh by log script + + return anIsModified; +} diff --git a/src/SMESHClient/SMESH_Client.hxx b/src/SMESHClient/SMESH_Client.hxx new file mode 100644 index 000000000..cc17cf88c --- /dev/null +++ b/src/SMESHClient/SMESH_Client.hxx @@ -0,0 +1,79 @@ +// SMESH SMESHClient : tool to update client mesh structure by mesh from server +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : SMESH_Client.hxx +// Author : Pavel TELKOV +// Module : SMESH + +#ifndef _SMESH_Client_HeaderFile +#define _SMESH_Client_HeaderFile + +#include +#include CORBA_SERVER_HEADER(SMESH_Gen) +#include CORBA_SERVER_HEADER(SMESH_Mesh) + +#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS +#define SMESHCLIENT_WNT_EXPORT __declspec( dllexport ) +#else +#define SMESHCLIENT_WNT_EXPORT +#endif + +class SMESHDS_Mesh; +class SMDS_Mesh; + + +//===================================================================== +// SMESH_Client : class definition +//===================================================================== +class SMESHCLIENT_WNT_EXPORT SMESH_Client +{ +public: + static + SMESH::SMESH_Gen_var + GetSMESHGen(CORBA::ORB_ptr theORB, + CORBA::Boolean& theIsEmbeddedMode); + + SMESH_Client(CORBA::ORB_ptr theORB, + SMESH::SMESH_Mesh_ptr theMesh); + ~SMESH_Client(); + + bool + Update(bool theIsClear); + + SMDS_Mesh* + GetMesh() const; + + SMDS_Mesh* + operator->() const; + + SMESH::SMESH_Mesh_ptr + GetMeshServer(); + +protected: + SMESH::SMESH_Mesh_var myMeshServer; + SMESHDS_Mesh* mySMESHDSMesh; + SMDS_Mesh* mySMDSMesh; +}; + + +#endif diff --git a/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx b/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx new file mode 100644 index 000000000..da47fe190 --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx @@ -0,0 +1,1101 @@ +// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#include "SMESHGUI_AddQuadraticElementDlg.h" + +#include "SMESHGUI.h" +#include "SMESHGUI_Utils.h" +#include "SMESHGUI_VTKUtils.h" +#include "SMESHGUI_MeshUtils.h" +#include "SMESHGUI_IdValidator.h" +#include "SMESH_ActorUtils.h" + +#include "SMDS_Mesh.hxx" +#include "SMESH_Actor.h" + +#include "SUIT_Session.h" +#include "SUIT_MessageBox.h" +#include "LightApp_Application.h" + +#include "SVTK_Selection.h" +#include "SVTK_Selector.h" +#include "SALOME_ListIO.hxx" +#include "SALOME_ListIteratorOfListIO.hxx" + +#include "SalomeApp_Study.h" +#include "SalomeApp_Application.h" + +#include "SVTK_ViewModel.h" +#include "SVTK_ViewWindow.h" + +#include "utilities.h" + +// OCCT Includes +#include +#include + +// VTK Includes +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +// QT Includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// STL includes +#include + +using namespace std; + +namespace SMESH { + + void ReverseConnectivity( vector & ids, int type ) + { + // for reverse connectivity of other types keeping the first id, see + // void SMESH_VisualObjDef::buildElemPrs() in SMESH_Object.cxx:900 + const int* conn = 0; + + switch ( type ) { + case QUAD_TETRAHEDRON: { + static int aConn[] = {0,2,1,3,6,5,4,7,9,8}; + conn = aConn; + break; + } + case QUAD_PYRAMID: { + static int aConn[] = {0,3,2,1,4,8,7,6,5,9,12,11,10}; + conn = aConn; + break; + } + case QUAD_PENTAHEDRON: { + static int aConn[] = {0,2,1,3,5,4,8,7,6,11,10,9,12,14,13}; + conn = aConn; + break; + } + case QUAD_HEXAHEDRON: { + static int aConn[] = {0,3,2,1,4,7,6,5,11,10,9,8,15,14,13,12,16,19,18,17}; + conn = aConn; + break; + } + case QUAD_EDGE: { + static int aConn[] = {1,0,2}; + conn = aConn; + break; + } + case QUAD_TRIANGLE: { + static int aConn[] = {0,2,1,5,4,3}; + conn = aConn; + break; + } + case QUAD_QUADRANGLE: { + static int aConn[] = {0,3,2,1,7,6,5,4}; + conn = aConn; + break; + } + default:; + } + if ( !conn ) { + reverse( ids.begin(), ids.end() ); + } + else { + vector aRevIds( ids.size() ); + for ( int i = 0; i < ids.size(); i++) + aRevIds[ i ] = ids[ conn[ i ]]; + ids = aRevIds; + } + } + + class TElementSimulation { + SalomeApp_Application* myApplication; + SUIT_ViewWindow* myViewWindow; + SVTK_ViewWindow* myVTKViewWindow; + + SALOME_Actor* myPreviewActor; + vtkDataSetMapper* myMapper; + vtkUnstructuredGrid* myGrid; + //vtkProperty* myBackProp, *myProp; + + vtkFloatingPointType myRGB[3], myBackRGB[3]; + + public: + TElementSimulation (SalomeApp_Application* theApplication) + { + myApplication = theApplication; + SUIT_ViewManager* mgr = theApplication->activeViewManager(); + if (!mgr) return; + myViewWindow = mgr->getActiveView(); + myVTKViewWindow = GetVtkViewWindow(myViewWindow); + + myGrid = vtkUnstructuredGrid::New(); + + // Create and display actor + myMapper = vtkDataSetMapper::New(); + myMapper->SetInput(myGrid); + + myPreviewActor = SALOME_Actor::New(); + myPreviewActor->PickableOff(); + myPreviewActor->VisibilityOff(); + myPreviewActor->SetMapper(myMapper); + + vtkProperty* myProp = vtkProperty::New(); + GetColor( "SMESH", "fill_color", myRGB[0], myRGB[1], myRGB[2], QColor( 0, 170, 255 ) ); + myProp->SetColor( myRGB[0], myRGB[1], myRGB[2] ); + myPreviewActor->SetProperty( myProp ); + myProp->Delete(); + + vtkProperty* myBackProp = vtkProperty::New(); + GetColor( "SMESH", "backface_color", myBackRGB[0], myBackRGB[1], myBackRGB[2], QColor( 0, 0, 255 ) ); + myBackProp->SetColor( myBackRGB[0], myBackRGB[1], myBackRGB[2] ); + myPreviewActor->SetBackfaceProperty( myBackProp ); + myBackProp->Delete(); + + myVTKViewWindow->AddActor(myPreviewActor); + } + + typedef std::vector TVTKIds; + void SetPosition (SMESH_Actor* theActor, + const int theType, + TVTKIds& theIds, + const int theMode, + const bool theReverse) + { + vtkUnstructuredGrid *aGrid = theActor->GetUnstructuredGrid(); + myGrid->SetPoints(aGrid->GetPoints()); + + //add points + + vtkIdType aType = 0; + + switch (theType) { + case QUAD_EDGE: + aType = VTK_QUADRATIC_EDGE; + break; + case QUAD_TRIANGLE: + aType = VTK_QUADRATIC_TRIANGLE; + break; + case QUAD_QUADRANGLE: + aType = VTK_QUADRATIC_QUAD; + break; + case QUAD_TETRAHEDRON: + aType = VTK_QUADRATIC_TETRA; + break; + case QUAD_PYRAMID: + //aType = VTK_QUADRATIC_PYRAMID; // NOT SUPPORTED IN VTK4.2 + aType = VTK_CONVEX_POINT_SET; + break; + case QUAD_PENTAHEDRON: + //aType = VTK_QUADRATIC_WEDGE; // NOT SUPPORTED IN VTK4.2 + aType = VTK_CONVEX_POINT_SET; + break; + case QUAD_HEXAHEDRON: + aType = VTK_QUADRATIC_HEXAHEDRON; + break; + } + + // take care of orientation + if ( aType == VTK_CONVEX_POINT_SET ) { + if ( theReverse && theMode == VTK_SURFACE ) { + //myPreviewActor->GetProperty()->SetColor( myBackRGB[0], myBackRGB[1], myBackRGB[2] ); + } + } + else { + // VTK cell connectivity opposites the MED one for volumic elements + if ( theIds.size() > 8 ? !theReverse : theReverse ) { + ReverseConnectivity( theIds, theType ); + } + } + + myGrid->Reset(); + vtkIdList *anIds = vtkIdList::New(); + + for (int i = 0, iEnd = theIds.size(); i < iEnd; i++) { + anIds->InsertId(i,theIds[i]); + //std::cout << i<< ": " << theIds[i] << std::endl; + } + + myGrid->InsertNextCell(aType,anIds); + anIds->Delete(); + + myGrid->Modified(); + + myPreviewActor->GetMapper()->Update(); + myPreviewActor->SetRepresentation( theMode ); + SetVisibility(true); + + // restore normal orientation + if ( aType == VTK_CONVEX_POINT_SET ) { + if ( theReverse && theMode == VTK_SURFACE ) { + //myPreviewActor->GetProperty()->SetColor( myRGB[0], myRGB[1], myRGB[2] ); + } + } + } + + + void SetVisibility (bool theVisibility) + { + myPreviewActor->SetVisibility(theVisibility); + RepaintCurrentView(); + } + + + ~TElementSimulation() + { + if (FindVtkViewWindow(myApplication->activeViewManager(), myViewWindow)) { + myVTKViewWindow->RemoveActor(myPreviewActor); + } + myPreviewActor->Delete(); + + myMapper->RemoveAllInputs(); + myMapper->Delete(); + + myGrid->Delete(); + +// myProp->Delete(); +// myBackProp->Delete(); + } + }; +} + + +// Define the sequences of ids +static int FirstEdgeIds[] = {0}; +static int LastEdgeIds[] = {1}; + +static int FirstTriangleIds[] = {0,1,2}; +static int LastTriangleIds[] = {1,2,0}; + +static int FirstQuadrangleIds[] = {0,1,2,3}; +static int LastQuadrangleIds[] = {1,2,3,0}; + +static int FirstTetrahedronIds[] = {0,1,2,3,3,3}; +static int LastTetrahedronIds[] = {1,2,0,0,1,2}; + +static int FirstPyramidIds[] = {0,1,2,3,4,4,4,4}; +static int LastPyramidIds[] = {1,2,3,0,0,1,2,3}; + +static int FirstPentahedronIds[] = {0,1,2,3,4,5,0,1,2}; +static int LastPentahedronIds[] = {1,2,0,4,5,3,3,4,5}; + +static int FirstHexahedronIds[] = {0,1,2,3,4,5,6,7,0,1,2,3}; +static int LastHexahedronIds[] = {1,2,3,0,5,6,7,4,4,5,6,7}; + + + +//================================================================================= +// function : SMESHGUI_AddQuadraticElementDlg() +// purpose : constructor +//================================================================================= +SMESHGUI_AddQuadraticElementDlg::SMESHGUI_AddQuadraticElementDlg( SMESHGUI* theModule, + const int theType, + const char* name, + bool modal, WFlags fl) + : QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder | + WStyle_Title | WStyle_SysMenu | Qt::WDestructiveClose), + mySMESHGUI( theModule ), + mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ), + myType( theType ) +{ + SalomeApp_Application* anApp = dynamic_cast + (SUIT_Session::session()->activeApplication()); + + mySimulation = new SMESH::TElementSimulation (anApp); + mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector(); + + QString anElementName; + + switch ( myType ) { + case QUAD_EDGE: + anElementName = QString("QUADRATIC_EDGE"); + break; + case QUAD_TRIANGLE: + anElementName = QString("QUADRATIC_TRIANGLE"); + break; + case QUAD_QUADRANGLE: + anElementName = QString("QUADRATIC_QUADRANGLE"); + break; + case QUAD_TETRAHEDRON: + anElementName = QString("QUADRATIC_TETRAHEDRON"); + break; + case QUAD_PYRAMID: + anElementName = QString("QUADRATIC_PYRAMID"); + break; + case QUAD_PENTAHEDRON: + anElementName = QString("QUADRATIC_PENTAHEDRON"); + break; + case QUAD_HEXAHEDRON: + anElementName = QString("QUADRATIC_HEXAHEDRON"); + break; + default: + myType = QUAD_EDGE; + anElementName = QString("QUADRATIC_EDGE"); + } + + QString iconName = tr(QString("ICON_DLG_%1").arg(anElementName)); + QString caption = tr(QString("SMESH_ADD_%1_TITLE").arg(anElementName)); + QString argumentsGrTitle = tr(QString("SMESH_ADD_%1").arg(anElementName)); + QString constructorGrTitle = tr(QString("SMESH_%1").arg(anElementName)); + + QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", iconName)); + QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT"))); + + if (!name) + setName("SMESHGUI_AddQuadraticElementDlg"); + setCaption(caption); + + setSizeGripEnabled(TRUE); + QGridLayout* aDialogLayout = new QGridLayout(this); + aDialogLayout->setSpacing(6); + aDialogLayout->setMargin(11); + + /***************************************************************/ + GroupConstructors = new QButtonGroup(this, "GroupConstructors"); + GroupConstructors->setTitle(constructorGrTitle); + + GroupConstructors->setExclusive(TRUE); + GroupConstructors->setColumnLayout(0, Qt::Vertical); + GroupConstructors->layout()->setSpacing(0); + GroupConstructors->layout()->setMargin(0); + GroupConstructors->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed)); + QGridLayout* aGroupConstructorsLayout = new QGridLayout(GroupConstructors->layout()); + aGroupConstructorsLayout->setAlignment(Qt::AlignTop); + aGroupConstructorsLayout->setSpacing(6); + aGroupConstructorsLayout->setMargin(11); + myRadioButton1 = new QRadioButton(GroupConstructors, "myRadioButton1"); + myRadioButton1->setText(tr("" )); + myRadioButton1->setPixmap(image0); + myRadioButton1->setChecked(TRUE); + myRadioButton1->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, myRadioButton1->sizePolicy().hasHeightForWidth())); + aGroupConstructorsLayout->addWidget(myRadioButton1, 0, 0); + aGroupConstructorsLayout->addItem( new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, 1); + aDialogLayout->addWidget(GroupConstructors, 0, 0); + + /***************************************************************/ + GroupArguments = new QGroupBox(this, "GroupArguments"); + GroupArguments->setTitle(argumentsGrTitle); + GroupArguments->setColumnLayout(0, Qt::Vertical); + GroupArguments->layout()->setSpacing(0); + GroupArguments->layout()->setMargin(0); + GroupArguments->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding)); + QGridLayout* aGroupArgumentsLayout = new QGridLayout(GroupArguments->layout()); + aGroupArgumentsLayout->setAlignment(Qt::AlignTop); + aGroupArgumentsLayout->setSpacing(6); + aGroupArgumentsLayout->setMargin(11); + QLabel* aCornerNodesLabel = new QLabel(GroupArguments, "aCornerNodesLabel"); + aCornerNodesLabel->setText(tr("SMESH_CORNER_NODES" )); + aGroupArgumentsLayout->addWidget(aCornerNodesLabel, 0, 0); + mySelectButton = new QPushButton(GroupArguments, "mySelectButton"); + mySelectButton->setPixmap(image1); + aGroupArgumentsLayout->addWidget(mySelectButton, 0, 1); + myCornerNodes = new QLineEdit(GroupArguments, "myCornerNodes"); + aGroupArgumentsLayout->addWidget(myCornerNodes, 0, 2); + + myTable = new QTable(GroupArguments); + aGroupArgumentsLayout->addMultiCellWidget(myTable, 1, 1, 0, 2); + + myReverseCB = new QCheckBox(GroupArguments, "myReverseCB"); + myReverseCB->setText(tr("SMESH_REVERSE" )); + aGroupArgumentsLayout->addWidget(myReverseCB, 2, 0); + + aDialogLayout->addWidget(GroupArguments, 1, 0); + + + /***************************************************************/ + GroupButtons = new QGroupBox(this, "GroupButtons"); + GroupButtons->setColumnLayout(0, Qt::Vertical); + GroupButtons->layout()->setSpacing(0); + GroupButtons->layout()->setMargin(0); + GroupButtons->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)); + QGridLayout* aGroupButtonsLayout = new QGridLayout(GroupButtons->layout()); + aGroupButtonsLayout->setAlignment(Qt::AlignTop); + aGroupButtonsLayout->setSpacing(6); + aGroupButtonsLayout->setMargin(11); + buttonCancel = new QPushButton(GroupButtons, "buttonCancel"); + buttonCancel->setText(tr("SMESH_BUT_CLOSE" )); + buttonCancel->setAutoDefault(TRUE); + aGroupButtonsLayout->addWidget(buttonCancel, 0, 3); + buttonApply = new QPushButton(GroupButtons, "buttonApply"); + buttonApply->setText(tr("SMESH_BUT_APPLY" )); + buttonApply->setAutoDefault(TRUE); + aGroupButtonsLayout->addWidget(buttonApply, 0, 1); + aGroupButtonsLayout->addItem( new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, 2); + buttonOk = new QPushButton(GroupButtons, "buttonOk"); + buttonOk->setText(tr("SMESH_BUT_OK" )); + buttonOk->setAutoDefault(TRUE); + buttonOk->setDefault(TRUE); + aGroupButtonsLayout->addWidget(buttonOk, 0, 0); + buttonHelp = new QPushButton(GroupButtons, "buttonHelp"); + buttonHelp->setText(tr("SMESH_BUT_HELP" )); + buttonHelp->setAutoDefault(TRUE); + aGroupButtonsLayout->addWidget(buttonHelp, 0, 4); + + aDialogLayout->addWidget(GroupButtons, 2, 0); + + Init(); /* Initialisations */ +} + +//================================================================================= +// function : ~SMESHGUI_AddQuadraticElementDlg() +// purpose : Destroys the object and frees any allocated resources +//================================================================================= +SMESHGUI_AddQuadraticElementDlg::~SMESHGUI_AddQuadraticElementDlg() +{ + // no need to delete child widgets, Qt does it all for us + delete mySimulation; +} + +//================================================================================= +// function : Init() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::Init() +{ + GroupArguments->show(); + myRadioButton1->setChecked(TRUE); + myIsEditCorners = true; + mySMESHGUI->SetActiveDialogBox((QDialog*)this); + + myActor = 0; + + int aNumRows; + + switch (myType) { + case QUAD_EDGE: + aNumRows = 1; + myNbCorners = 2; + myHelpFileName = "/adding_quadratic_nodes_and_elements.htm#?"; //Adding_edges + break; + case QUAD_TRIANGLE: + aNumRows = 3; + myNbCorners = 3; + myHelpFileName = "/adding_quadratic_nodes_and_elements.htm#?"; //Adding_triangles + break; + case QUAD_QUADRANGLE: + aNumRows = 4; + myNbCorners = 4; + myHelpFileName = "/adding_quadratic_nodes_and_elements.htm#?"; //Adding_quadrangles + break; + case QUAD_TETRAHEDRON: + aNumRows = 6; + myNbCorners = 4; + myHelpFileName = "/adding_quadratic_nodes_and_elements.htm#?"; //Adding_tetrahedrons + break; + case QUAD_PYRAMID: + aNumRows = 8; + myNbCorners = 5; + myHelpFileName = "/adding_quadratic_nodes_and_elements.htm#?"; //Adding_pyramids + break; + case QUAD_PENTAHEDRON: + aNumRows = 9; + myNbCorners = 6; + myHelpFileName = "/adding_quadratic_nodes_and_elements.htm#?"; //Adding_pentahedrons + break; + case QUAD_HEXAHEDRON: + aNumRows = 12; + myNbCorners = 8; + myHelpFileName = "/adding_quadratic_nodes_and_elements.htm#?"; //Adding_hexahedrons + break; + } + + myCornerNodes->setValidator(new SMESHGUI_IdValidator(this, "validator", myNbCorners)); + + /* initialize table */ + myTable->setNumCols(3); + myTable->setNumRows(aNumRows); + + QStringList aColLabels; + aColLabels.append(tr("SMESH_FIRST")); + aColLabels.append(tr("SMESH_MIDDLE")); + aColLabels.append(tr("SMESH_LAST")); + myTable->setColumnLabels(aColLabels); + + for ( int col = 0; col < myTable->numCols(); col++ ) + myTable->setColumnWidth(col, 80); + + myTable->setColumnReadOnly(0, true); + myTable->setColumnReadOnly(2, true); + + myTable->setEnabled( false ); + + for ( int row = 0; row < myTable->numRows(); row++ ) + { + SMESHGUI_IdEditItem* anEditItem = new SMESHGUI_IdEditItem( myTable, QTableItem::OnTyping, "" ); + anEditItem->setReplaceable(false); + myTable->setItem(row, 1, anEditItem); + } + + /* signals and slots connections */ + connect(mySelectButton, SIGNAL(clicked()), SLOT(SetEditCorners())); + connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), SLOT(SelectionIntoArgument())); + connect(myTable, SIGNAL(doubleClicked(int, int, int, const QPoint&)), SLOT(onCellDoubleClicked(int, int, int, const QPoint&))); + connect(myTable, SIGNAL(valueChanged (int, int)), SLOT(onCellTextChange(int, int))); + connect(myCornerNodes, SIGNAL(textChanged(const QString&)), SLOT(onTextChange(const QString&))); + connect(myReverseCB, SIGNAL(stateChanged(int)), SLOT(onReverse(int))); + + connect(buttonOk, SIGNAL(clicked()), SLOT(ClickOnOk())); + connect(buttonCancel, SIGNAL(clicked()), SLOT(ClickOnCancel())); + connect(buttonApply, SIGNAL(clicked()), SLOT(ClickOnApply())); + connect(buttonHelp, SIGNAL(clicked()), SLOT(ClickOnHelp())); + + connect(mySMESHGUI, SIGNAL (SignalDeactivateActiveDialog()), SLOT(DeactivateActiveDialog())); + connect(mySMESHGUI, SIGNAL (SignalStudyFrameChanged()), SLOT(ClickOnCancel())); + + this->show(); // displays Dialog + + // set selection mode + SMESH::SetPointRepresentation(true); + + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode( NodeSelection ); + + myBusy = false; + + SetEditCorners(); +} + +//================================================================================= +// function : ClickOnApply() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::ClickOnApply() +{ + if (IsValid() && !mySMESHGUI->isActiveStudyLocked()) { + myBusy = true; + + vector anIds; + + switch (myType) { + case QUAD_EDGE: + anIds.push_back(myTable->text(0, 0).toInt()); + anIds.push_back(myTable->text(0, 2).toInt()); + anIds.push_back(myTable->text(0, 1).toInt()); + break; + case QUAD_TRIANGLE: + case QUAD_QUADRANGLE: + case QUAD_TETRAHEDRON: + case QUAD_PYRAMID: + case QUAD_PENTAHEDRON: + case QUAD_HEXAHEDRON: + for ( int row = 0; row < myNbCorners; row++ ) + anIds.push_back(myTable->text(row, 0).toInt()); + for ( int row = 0; row < myTable->numRows(); row++ ) + anIds.push_back(myTable->text(row, 1).toInt()); + break; + } + if ( myReverseCB->isChecked()) + SMESH::ReverseConnectivity( anIds, myType ); + + int aNumberOfIds = anIds.size(); + SMESH::long_array_var anArrayOfIdeces = new SMESH::long_array; + anArrayOfIdeces->length( aNumberOfIds ); + + for (int i = 0; i < aNumberOfIds; i++) + anArrayOfIdeces[i] = anIds[ i ]; + + SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); + switch (myType) { + case QUAD_EDGE: + aMeshEditor->AddEdge(anArrayOfIdeces.inout()); break; + case QUAD_TRIANGLE: + case QUAD_QUADRANGLE: + aMeshEditor->AddFace(anArrayOfIdeces.inout()); break; + case QUAD_TETRAHEDRON: + case QUAD_PYRAMID: + case QUAD_PENTAHEDRON: + case QUAD_HEXAHEDRON: + aMeshEditor->AddVolume(anArrayOfIdeces.inout()); break; + } + + SALOME_ListIO aList; aList.Append( myActor->getIO() ); + mySelector->ClearIndex(); + mySelectionMgr->setSelectedObjects( aList, false ); + + SMESH::UpdateView(); + mySimulation->SetVisibility(false); + + buttonOk->setEnabled(false); + buttonApply->setEnabled(false); + + UpdateTable(); + SetEditCorners(); + + myBusy = false; + } +} + +//================================================================================= +// function : ClickOnOk() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::ClickOnOk() +{ + ClickOnApply(); + ClickOnCancel(); + return; +} + +//================================================================================= +// function : ClickOnCancel() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::ClickOnCancel() +{ + mySelectionMgr->clearSelected(); + mySimulation->SetVisibility(false); + SMESH::SetPointRepresentation(false); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode( ActorSelection ); + disconnect(mySelectionMgr, 0, this, 0); + mySMESHGUI->ResetState(); + reject(); + return; +} + +//================================================================================= +// function : ClickOnHelp() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::ClickOnHelp() +{ + LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication()); + if (app) + app->onHelpContextModule(mySMESHGUI ? app->moduleName(mySMESHGUI->moduleName()) : QString(""), myHelpFileName); + else { + SUIT_MessageBox::warn1(0, QObject::tr("WRN_WARNING"), + QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE"). + arg(app->resourceMgr()->stringValue("ExternalBrowser", "application")).arg(myHelpFileName), + QObject::tr("BUT_OK")); + } +} + +//================================================================================= +// function : onTextChange() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::onTextChange (const QString& theNewText) +{ + if (myBusy) return; + myBusy = true; + + buttonOk->setEnabled(false); + buttonApply->setEnabled(false); + + mySimulation->SetVisibility(false); + + // hilight entered nodes + SMDS_Mesh* aMesh = 0; + if (myActor) + aMesh = myActor->GetObject()->GetMesh(); + + if (aMesh) { + TColStd_MapOfInteger newIndices; + + QStringList aListId = QStringList::split(" ", theNewText, false); + bool allOk = true; + for (int i = 0; i < aListId.count(); i++) { + if( const SMDS_MeshNode * n = aMesh->FindNode( aListId[ i ].toInt() ) ) + newIndices.Add( n->GetID() ); + else + { + allOk = false; + break; + } + } + + mySelector->AddOrRemoveIndex( myActor->getIO(), newIndices, false ); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->highlight( myActor->getIO(), true, true ); + + if ( sender() == myCornerNodes ) + UpdateTable( allOk ); + } + + if( IsValid() ) { + buttonOk->setEnabled(true); + buttonApply->setEnabled(true); + } + + if ( sender() == myTable ) + displaySimulation(); + + myBusy = false; +} + +//================================================================================= +// function : SelectionIntoArgument() +// purpose : Called when selection has changed +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::SelectionIntoArgument() +{ + if (myBusy) return; + + if ( myIsEditCorners ) + { + // clear + myActor = 0; + + myBusy = true; + myCornerNodes->setText(""); + myBusy = false; + + if (!GroupButtons->isEnabled()) // inactive + return; + + buttonOk->setEnabled(false); + buttonApply->setEnabled(false); + + mySimulation->SetVisibility(false); + + // get selected mesh + SALOME_ListIO aList; + mySelectionMgr->selectedObjects(aList,SVTK_Viewer::Type()); + + if (aList.Extent() != 1) + { + UpdateTable(); + return; + } + + Handle(SALOME_InteractiveObject) anIO = aList.First(); + myMesh = SMESH::GetMeshByIO(anIO); + if (myMesh->_is_nil()) + return; + + myActor = SMESH::FindActorByEntry(anIO->getEntry()); + + } + + if (!myActor) + return; + + // get selected nodes + QString aString = ""; + int nbNodes = SMESH::GetNameOfSelectedNodes(mySelector,myActor->getIO(),aString); + + if ( myIsEditCorners ) + { + myBusy = true; + myCornerNodes->setText(aString); + myBusy = false; + + UpdateTable(); + } + else if ( myTable->isEnabled() && nbNodes == 1 ) + { + myBusy = true; + int theRow = myTable->currentRow(), theCol = myTable->currentColumn(); + if ( theCol == 1 ) + myTable->setText(theRow, 1, aString); + myBusy = false; + } + + if ( IsValid() ) + { + buttonOk->setEnabled( true ); + buttonApply->setEnabled( true ); + } + + displaySimulation(); +} + +//================================================================================= +// function : displaySimulation() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::displaySimulation() +{ + if (!myIsEditCorners) { + SMESH::TElementSimulation::TVTKIds anIds; + + // Collect ids from the dialog + int anID; + bool ok; + int aDisplayMode = VTK_SURFACE; + + if ( myType == QUAD_EDGE ) + { + anIds.push_back( myActor->GetObject()->GetNodeVTKId( myTable->text(0, 0).toInt() ) ); + anIds.push_back( myActor->GetObject()->GetNodeVTKId( myTable->text(0, 2).toInt() ) ); + anID = (myTable->text(0, 1)).toInt(&ok); + if (!ok) anID = (myTable->text(0, 0)).toInt(); + anIds.push_back( myActor->GetObject()->GetNodeVTKId(anID) ); + aDisplayMode = VTK_WIREFRAME; + } + else + { + for ( int row = 0; row < myNbCorners; row++ ) + anIds.push_back( myActor->GetObject()->GetNodeVTKId( myTable->text(row, 0).toInt() ) ); + + for ( int row = 0; row < myTable->numRows(); row++ ) + { + anID = (myTable->text(row, 1)).toInt(&ok); + if (!ok) { + anID = (myTable->text(row, 0)).toInt(); + aDisplayMode = VTK_WIREFRAME; + } + anIds.push_back( myActor->GetObject()->GetNodeVTKId(anID) ); + } + } + + mySimulation->SetPosition(myActor,myType,anIds,aDisplayMode,myReverseCB->isChecked()); + SMESH::UpdateView(); + } +} + +//================================================================================= +// function : SetEditCorners() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::SetEditCorners() +{ + myCornerNodes->setFocus(); + myIsEditCorners = true; + + SelectionIntoArgument(); +} + +//================================================================================= +// function : DeactivateActiveDialog() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::DeactivateActiveDialog() +{ + if (GroupConstructors->isEnabled()) { + GroupConstructors->setEnabled(false); + GroupArguments->setEnabled(false); + GroupButtons->setEnabled(false); + mySimulation->SetVisibility(false); + mySMESHGUI->ResetState(); + mySMESHGUI->SetActiveDialogBox(0); + } +} + +//================================================================================= +// function : ActivateThisDialog() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::ActivateThisDialog() +{ + /* Emit a signal to deactivate the active dialog */ + mySMESHGUI->EmitSignalDeactivateDialog(); + + GroupConstructors->setEnabled(true); + GroupArguments->setEnabled(true); + GroupButtons->setEnabled(true); + + SMESH::SetPointRepresentation(true); + + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode( NodeSelection ); + SelectionIntoArgument(); +} + +//================================================================================= +// function : enterEvent() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::enterEvent (QEvent*) +{ + if (GroupConstructors->isEnabled()) + return; + ActivateThisDialog(); + return; +} + +//================================================================================= +// function : closeEvent() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::closeEvent (QCloseEvent*) +{ + /* same than click on cancel button */ + ClickOnCancel(); + return; +} + +//================================================================================= +// function : hideEvent() +// purpose : caused by ESC key +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::hideEvent (QHideEvent*) +{ + if (!isMinimized()) + ClickOnCancel(); +} + +//================================================================================= +// function : onReverse() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::onReverse (int state) +{ + if (!IsValid()) + return; + + if (state >= 0) { + mySimulation->SetVisibility(false); + displaySimulation(); + } +} + + +//================================================================================= +// function : IsValid() +// purpose : +//================================================================================= +bool SMESHGUI_AddQuadraticElementDlg::IsValid() +{ + SMDS_Mesh* aMesh = 0; + if (myActor) + aMesh = myActor->GetObject()->GetMesh(); + if (!aMesh) + return false; + + bool ok; + + for ( int row = 0; row < myTable->numRows(); row++ ) + { + int anID = (myTable->text(row, 1)).toInt(&ok); + if ( !ok ) + return false; + + const SMDS_MeshNode * aNode = aMesh->FindNode(anID); + if ( !aNode ) + return false; + } + + return true; +} + +//================================================================================= +// function : UpdateTable() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::UpdateTable( bool theConersValidity ) +{ + QStringList aListCorners = QStringList::split(" ", myCornerNodes->text(), false); + + if ( aListCorners.count() == myNbCorners && theConersValidity ) + { + myTable->setEnabled( true ); + + // clear the Middle column + for ( int row = 0; row < myTable->numRows(); row++ ) + myTable->setText( row, 1, ""); + + int* aFirstColIds; + int* aLastColIds; + + switch (myType) { + case QUAD_EDGE: + aFirstColIds = FirstEdgeIds; + aLastColIds = LastEdgeIds; + break; + case QUAD_TRIANGLE: + aFirstColIds = FirstTriangleIds; + aLastColIds = LastTriangleIds; + break; + case QUAD_QUADRANGLE: + aFirstColIds = FirstQuadrangleIds; + aLastColIds = LastQuadrangleIds; + break; + case QUAD_TETRAHEDRON: + aFirstColIds = FirstTetrahedronIds; + aLastColIds = LastTetrahedronIds; + break; + case QUAD_PYRAMID: + aFirstColIds = FirstPyramidIds; + aLastColIds = LastPyramidIds; + break; + case QUAD_PENTAHEDRON: + aFirstColIds = FirstPentahedronIds; + aLastColIds = LastPentahedronIds; + break; + case QUAD_HEXAHEDRON: + aFirstColIds = FirstHexahedronIds; + aLastColIds = LastHexahedronIds; + break; + } + + // fill the First and the Last columns + for (int i = 0, iEnd = myTable->numRows(); i < iEnd; i++) + myTable->setText( i, 0, aListCorners[ aFirstColIds[i] ] ); + + for (int i = 0, iEnd = myTable->numRows(); i < iEnd; i++) + myTable->setText( i, 2, aListCorners[ aLastColIds[i] ] ); + } + else + { + // clear table + for ( int row = 0; row < myTable->numRows(); row++ ) + for ( int col = 0; col < myTable->numCols(); col++ ) + myTable->setText(row, col, ""); + + myTable->setEnabled( false ); + } +} + + +//================================================================================= +// function : onTableActivate() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::onCellDoubleClicked( int theRow, int theCol, int theButton, const QPoint& theMousePos ) +{ + if ( theButton == 1 && theCol == 1 ) + myIsEditCorners = false; + + displaySimulation(); + return; +} + + +//================================================================================= +// function : onCellTextChange() +// purpose : +//================================================================================= +void SMESHGUI_AddQuadraticElementDlg::onCellTextChange(int theRow, int theCol) +{ + onTextChange( myTable->text(theRow, theCol) ); +} + + +QWidget* SMESHGUI_IdEditItem::createEditor() const +{ + QLineEdit *aLineEdit = new QLineEdit(text(), table()->viewport()); + aLineEdit->setValidator( new SMESHGUI_IdValidator(table()->viewport(), "validator", 1) ); + return aLineEdit; +} diff --git a/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.h b/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.h new file mode 100644 index 000000000..ea63a83ec --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.h @@ -0,0 +1,132 @@ +// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef DIALOGBOX_ADD_QUADRATIC_ELEMENT_H +#define DIALOGBOX_ADD_QUADRATIC_ELEMENT_H + +#include "LightApp_SelectionMgr.h" + +// QT Includes +#include +#include + +class QButtonGroup; +class QGroupBox; +class QLineEdit; +class QPushButton; +class QRadioButton; +class QCheckBox; +class QTable; +class SMESHGUI; +class SMESH_Actor; +class SVTK_Selector; + +namespace SMESH{ + struct TElementSimulation; +} + +// IDL Headers +#include +#include CORBA_SERVER_HEADER(SMESH_Mesh) + +enum { QUAD_EDGE, QUAD_TRIANGLE, QUAD_QUADRANGLE, QUAD_TETRAHEDRON, QUAD_PYRAMID, QUAD_PENTAHEDRON, QUAD_HEXAHEDRON }; + +//================================================================================= +// class : SMESHGUI_AddQuadraticElementDlg +// purpose : +//================================================================================= +class SMESHGUI_AddQuadraticElementDlg : public QDialog +{ + Q_OBJECT + +public: + SMESHGUI_AddQuadraticElementDlg( SMESHGUI* theModule, + const int theType, + const char* = 0, + bool modal = FALSE, WFlags fl = 0 ); + ~SMESHGUI_AddQuadraticElementDlg(); + +private: + void Init (); + void closeEvent (QCloseEvent*); + void hideEvent (QHideEvent*); /* ESC key */ + void enterEvent (QEvent*); /* mouse enter the QWidget */ + void displaySimulation(); + void UpdateTable( bool theConersValidity = true ); + bool IsValid(); + + SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */ + LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */ + int myNbCorners; /* The required number of corners */ + bool myBusy; + SVTK_Selector* mySelector; + + SMESH::SMESH_Mesh_var myMesh; + SMESH_Actor* myActor; + SMESH::TElementSimulation* mySimulation; + + int myType; + bool myIsEditCorners; + + QButtonGroup* GroupConstructors; + QRadioButton* myRadioButton1; + + QGroupBox* GroupArguments; + QLineEdit* myCornerNodes; + QPushButton* mySelectButton; + QTable* myTable; + QCheckBox* myReverseCB; + + QGroupBox* GroupButtons; + QPushButton* buttonOk; + QPushButton* buttonCancel; + QPushButton* buttonApply; + QPushButton * buttonHelp; + + QString myHelpFileName; + +private slots: + + void onTextChange(const QString&); + void onCellTextChange(int, int); + void onReverse( int ); + void onCellDoubleClicked(int, int, int, const QPoint&); + + void ClickOnOk(); + void ClickOnCancel(); + void ClickOnApply(); + void ClickOnHelp(); + void SetEditCorners() ; + void SelectionIntoArgument() ; + void DeactivateActiveDialog() ; + void ActivateThisDialog() ; +}; + +class SMESHGUI_IdEditItem: public QTableItem +{ +public: + SMESHGUI_IdEditItem(QTable* table, EditType et, const QString& text ): + QTableItem(table, et, text) {}; + ~SMESHGUI_IdEditItem() {}; + + QWidget* createEditor() const; +}; + + +#endif // DIALOGBOX_ADD_QUADRATIC_ELEMENT_H diff --git a/src/SMESHGUI/SMESHGUI_ConvToQuadDlg.cxx b/src/SMESHGUI/SMESHGUI_ConvToQuadDlg.cxx new file mode 100644 index 000000000..6c2cf5dab --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_ConvToQuadDlg.cxx @@ -0,0 +1,130 @@ +// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/** +* SMESH SMESHGUI +* +* Copyright (C) 2005 CEA/DEN, EDF R&D +* +* +* +* File : SMESHGUI_ConvToQuadDlg.cxx +* Module : SMESH +*/ + +#include +#include + +#include +#include +#include +#include +#include + +SMESHGUI_ConvToQuadDlg::SMESHGUI_ConvToQuadDlg() +: SMESHGUI_Dialog( 0, false, true ) +{ + + setCaption( tr( "CAPTION" ) ); + + // Create top controls + QGroupBox* aGrp = new QGroupBox( 3, Qt::Horizontal, mainFrame() ); + aGrp->setFrameStyle( QFrame::NoFrame ); + aGrp->setInsideMargin( 0 ); + + // mesh + createObject( tr( "MESH" ), aGrp, 0 ); + + //Create check box + myMedNdsOnGeom = new QCheckBox( tr( "MEDIUMNDS" ), mainFrame() ); + + //Create RadioButtons + myBG = new QButtonGroup( 2, Qt::Vertical, "", mainFrame() ); + myBG->setExclusive( true ); + + myRB1 = new QRadioButton( myBG ); + myRB1->setText( tr( "RADIOBTN_1" ) ); + myRB1->setChecked( true ); + + myRB2 = new QRadioButton( myBG ); + myRB2->setText( tr( "RADIOBTN_2" ) ); + + // Fill layout + QVBoxLayout* aLay = new QVBoxLayout( mainFrame(), 5, 5 ); + aLay->addWidget( aGrp ); + aLay->addWidget( myMedNdsOnGeom ); + aLay->addWidget( myBG ); + + connect(myBG, SIGNAL( clicked( int ) ), this, SIGNAL( onClicked( int ) ) ); +} + +SMESHGUI_ConvToQuadDlg::~SMESHGUI_ConvToQuadDlg() +{ +} + +bool SMESHGUI_ConvToQuadDlg::IsMediumNdsOnGeom() const +{ + return !myMedNdsOnGeom->isChecked(); +} + +void SMESHGUI_ConvToQuadDlg::SetMediumNdsOnGeom(const bool theCheck) +{ + myMedNdsOnGeom->setChecked(theCheck); +} + +bool SMESHGUI_ConvToQuadDlg::IsEnabledCheck() const +{ + return myMedNdsOnGeom->isEnabled(); +} + +void SMESHGUI_ConvToQuadDlg::SetEnabledCheck( const bool theCheck ) +{ + myMedNdsOnGeom->setEnabled( theCheck ); +} + +int SMESHGUI_ConvToQuadDlg::CurrentRB( ) +{ + return myBG->selectedId(); +} + +void SMESHGUI_ConvToQuadDlg::SetEnabledControls( const bool theCheck ) +{ + myBG->setEnabled( theCheck ); + myMedNdsOnGeom->setEnabled( theCheck ); + setButtonEnabled( theCheck, QtxDialog::OK | QtxDialog::Apply ); +} + +void SMESHGUI_ConvToQuadDlg::SetEnabledRB( const int idx, const bool theCheck ) +{ + if(idx) + { + myRB2->setEnabled( theCheck ); + myRB1->setEnabled( !theCheck ); + myRB1->setChecked( true ); + } + else + { + myRB1->setEnabled( theCheck ); + myRB2->setEnabled( !theCheck ); + myRB2->setChecked( true ); + } + emit onClicked( myBG->selectedId() ); +} + + diff --git a/src/SMESHGUI/SMESHGUI_ConvToQuadDlg.h b/src/SMESHGUI/SMESHGUI_ConvToQuadDlg.h new file mode 100644 index 000000000..68d024bc6 --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_ConvToQuadDlg.h @@ -0,0 +1,81 @@ +// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/** +* SMESH SMESHGUI +* +* Copyright (C) 2005 CEA/DEN, EDF R&D +* +* +* +* File : SMESHGUI_ConvToQuadDlg.h +* Module : SMESH +*/ + + +#ifndef SMESHGUI_ConvToQuadDlg_H +#define SMESHGUI_ConvToQuadDlg_H + +#include "SMESHGUI_Dialog.h" +/*#include +#include +#include */ + +//idl headers +#include +#include CORBA_SERVER_HEADER(SMESH_Mesh) + +class QCheckBox; +class QRadioButton; +class QButtonGroup; + +class SMESHGUI_ConvToQuadDlg : public SMESHGUI_Dialog +{ + Q_OBJECT + +public: + SMESHGUI_ConvToQuadDlg(); + virtual ~SMESHGUI_ConvToQuadDlg(); + + bool IsMediumNdsOnGeom() const; + void SetMediumNdsOnGeom(const bool theCheck); + bool IsEnabledCheck() const; + void SetEnabledCheck( const bool theCheck ); + void SetEnabledGroup( const bool theCheck ); + void SetEnabledControls( const bool theCheck ); + void SetEnabledRB( const int idx, const bool theCheck ); + int CurrentRB();//returns the ID of the selected toggle button + +signals: + void onClicked( int ); + +private: + + QCheckBox* myMedNdsOnGeom; + QButtonGroup* myBG; + QRadioButton* myRB1; + QRadioButton* myRB2; + +}; + +#endif + + + + diff --git a/src/SMESHGUI/SMESHGUI_ConvToQuadOp.cxx b/src/SMESHGUI/SMESHGUI_ConvToQuadOp.cxx new file mode 100644 index 000000000..a5095e6a9 --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_ConvToQuadOp.cxx @@ -0,0 +1,286 @@ +// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/** +* SMESH SMESHGUI +* +* Copyright (C) 2005 CEA/DEN, EDF R&D +* +* +* +* File : SMESHGUI_ConvToQuadOp.h +* Module : SMESHGUI +*/ + +#include "SMESHGUI_ConvToQuadOp.h" +#include "SMESHGUI_ConvToQuadDlg.h" + +#include "SMESHGUI.h" +#include "SMESHGUI_Utils.h" + +#include "SMESH_TypeFilter.hxx" + +#include "SalomeApp_Tools.h" + +#include "SUIT_MessageBox.h" + +#include "LightApp_UpdateFlags.h" + +//================================================================================ +/*! + * \brief Constructor + * + * Initialize operation +*/ +//================================================================================ +SMESHGUI_ConvToQuadOp::SMESHGUI_ConvToQuadOp() + : SMESHGUI_SelectionOp(), + myDlg( 0 ) +{ +} + +//================================================================================ +/*! + * \brief Destructor +*/ +//================================================================================ +SMESHGUI_ConvToQuadOp::~SMESHGUI_ConvToQuadOp() +{ + if ( myDlg ) + delete myDlg; +} + +//================================================================================ +/*! + * \brief Gets dialog of this operation + * \retval LightApp_Dialog* - pointer to dialog of this operation +*/ +//================================================================================ +LightApp_Dialog* SMESHGUI_ConvToQuadOp::dlg() const +{ + return myDlg; +} + +//================================================================================ +/*! + * \brief Creates dialog if necessary and shows it + * + * Virtual method redefined from base class called when operation is started creates + * dialog if necessary and shows it, activates selection + */ +//================================================================================ +void SMESHGUI_ConvToQuadOp::startOperation() +{ + if( !myDlg ) + { + myDlg = new SMESHGUI_ConvToQuadDlg( ); + } + connect( myDlg, SIGNAL( onClicked( int ) ), SLOT( ConnectRadioButtons( int ) ) ); + + SMESHGUI_SelectionOp::startOperation(); + + myDlg->SetMediumNdsOnGeom( false ); + myDlg->activateObject( 0 ); + myDlg->show(); + + selectionDone(); +} + +//================================================================================ +/*! + * \brief Updates dialog's look and feel + * + * Virtual method redefined from the base class updates dialog's look and feel + */ +//================================================================================ +void SMESHGUI_ConvToQuadOp::selectionDone() +{ + if ( !dlg()->isShown() ) + return; + + SMESHGUI_SelectionOp::selectionDone(); + try + { + QString anMeshEntry = myDlg->selectedObject( 0 ); + _PTR(SObject) pMesh = studyDS()->FindObjectID( anMeshEntry.latin1() ); + if ( !pMesh ) return; + + SMESH::SMESH_Mesh_var mesh = + SMESH::SObjectToInterface( pMesh ); + + if( mesh->_is_nil() ) + { + myDlg->SetEnabledControls( false ); + } + else if( ConsistMesh( mesh ) == SMESHGUI_ConvToQuadOp::Quadratic ) + { + myDlg->SetEnabledRB( 0, false ); + } + else if( ConsistMesh( mesh ) == SMESHGUI_ConvToQuadOp::Linear ) + { + myDlg->SetEnabledRB( 1, false ); + } + else + { + myDlg->SetEnabledControls( true ); + } + } + catch ( const SALOME::SALOME_Exception& S_ex ) + { + SalomeApp_Tools::QtCatchCorbaException( S_ex ); + } + catch ( ... ) + { + } +} + +//================================================================================ +/*! + * \brief Creates selection filter + * \param theId - identifier of current selection widget + * \retval SUIT_SelectionFilter* - pointer to the created filter or null + * + * Creates selection filter in accordance with identifier of current selection widget + */ +//================================================================================ +SUIT_SelectionFilter* SMESHGUI_ConvToQuadOp::createFilter( const int theId ) const +{ + if ( theId == 0 ) + return new SMESH_TypeFilter( MESH ); + else + return 0; +} + +//================================================================================ +/*! + * \brief Edits mesh + * + * Virtual slot redefined from the base class called when "Apply" button is clicked + */ +//================================================================================ +bool SMESHGUI_ConvToQuadOp::onApply() +{ + + QString aMess; + + QString anMeshEntry = myDlg->selectedObject( 0 ); + _PTR(SObject) pMesh = studyDS()->FindObjectID( anMeshEntry.latin1() ); + if ( !pMesh ) + { + dlg()->show(); + SUIT_MessageBox::warn1( myDlg, + tr( "SMESH_WRN_WARNING" ), tr("MESH_IS_NOT_SELECTED"), tr( "SMESH_BUT_OK" ) ); + + return false; + } + + SMESH::SMESH_Mesh_var mesh = + SMESH::SObjectToInterface( pMesh ); + + if( CORBA::is_nil(mesh) ) + { + SUIT_MessageBox::warn1( myDlg, + tr( "SMESH_WRN_WARNING" ), tr("REF_IS_NULL"), tr( "SMESH_BUT_OK" ) ); + + return false; + } + + bool aResult = false; + + try + { + SMESH::SMESH_MeshEditor_var aEditor = mesh->GetMeshEditor(); + if( !myDlg->CurrentRB() ) + { + bool aParam = true; + if( myDlg->IsEnabledCheck() ) + aParam = myDlg->IsMediumNdsOnGeom(); + + aEditor->ConvertToQuadratic( aParam ); + aResult = true; + } + else + { + aResult = aEditor->ConvertFromQuadratic(); + } + } + catch ( const SALOME::SALOME_Exception& S_ex ) + { + SalomeApp_Tools::QtCatchCorbaException( S_ex ); + aResult = false; + } + catch ( ... ) + { + aResult = false; + } + if( aResult ) + { + update( UF_ObjBrowser | UF_Model | UF_Viewer ); + selectionDone(); + } + return aResult; +} + +//================================================================================ +/*! ConsistMesh + * Determines, what elements this mesh contains. + */ +//================================================================================ +SMESHGUI_ConvToQuadOp::MeshType SMESHGUI_ConvToQuadOp::ConsistMesh( const SMESH::SMESH_Mesh_var& mesh) const +{ + int nbAllElem = 0, nbQEdges =0, nbQFaces =0, nbQVolum = 0; + int nbEdges = 0, nbFaces = 0, nbVolum = 0; + + nbAllElem = (int)mesh->NbElements(); + nbQEdges = (int)mesh->NbEdgesOfOrder(SMESH::ORDER_QUADRATIC); + nbQFaces = (int)mesh->NbFacesOfOrder(SMESH::ORDER_QUADRATIC); + nbQVolum = (int)mesh->NbVolumesOfOrder(SMESH::ORDER_QUADRATIC); + + nbEdges = (int)mesh->NbEdgesOfOrder(SMESH::ORDER_LINEAR); + nbFaces = (int)mesh->NbFacesOfOrder(SMESH::ORDER_LINEAR); + nbVolum = (int)mesh->NbVolumesOfOrder(SMESH::ORDER_LINEAR); + + if( nbAllElem == (nbQEdges+nbQFaces+nbQVolum) ) + return SMESHGUI_ConvToQuadOp::Quadratic; + else if ( nbAllElem == (nbEdges+nbFaces+nbVolum) ) + return SMESHGUI_ConvToQuadOp::Linear; + else + return SMESHGUI_ConvToQuadOp::Comp; +} + + +void SMESHGUI_ConvToQuadOp::ConnectRadioButtons( int id ) +{ + QString anMeshEntry = myDlg->selectedObject( 0 ); + _PTR(SObject) pMesh = studyDS()->FindObjectID( anMeshEntry.latin1() ); + if ( !pMesh ) return; + + SMESH::SMESH_Mesh_var mesh = + SMESH::SObjectToInterface( pMesh ); + + GEOM::GEOM_Object_var mainGeom; + mainGeom = mesh->GetShapeToMesh(); + + if( id || mainGeom->_is_nil() ) + myDlg->SetEnabledCheck( false ); + else + myDlg->SetEnabledCheck( true ); +} + + diff --git a/src/SMESHGUI/SMESHGUI_ConvToQuadOp.h b/src/SMESHGUI/SMESHGUI_ConvToQuadOp.h new file mode 100644 index 000000000..129a4b91a --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_ConvToQuadOp.h @@ -0,0 +1,70 @@ +// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/** +* SMESH SMESHGUI +* +* Copyright (C) 2005 CEA/DEN, EDF R&D +* +* +* +* File : SMESHGUI_ConvToQuadOp.h +* Module : SMESHGUI +*/ + +#ifndef SMESHGUI_ConvToQuadOp_H +#define SMESHGUI_ConvToQuadOp_H + +#include +//#include + +#include +#include CORBA_SERVER_HEADER(SMESH_Mesh) + +class SMESHGUI_ConvToQuadDlg; + +class SMESHGUI_ConvToQuadOp : public SMESHGUI_SelectionOp +{ + Q_OBJECT + +public: +enum MeshType{ Comp = 0, Linear, Quadratic }; + +public: + SMESHGUI_ConvToQuadOp(); + virtual ~SMESHGUI_ConvToQuadOp(); + + virtual LightApp_Dialog* dlg() const; + +protected: + virtual void startOperation(); + virtual void selectionDone(); + virtual SUIT_SelectionFilter* createFilter( const int ) const; + MeshType ConsistMesh( const SMESH::SMESH_Mesh_var& ) const; + +protected slots: + virtual bool onApply(); + void ConnectRadioButtons( int); + +private: + SMESHGUI_ConvToQuadDlg* myDlg; +}; + +#endif + diff --git a/src/SMESH_SWIG/SMESH_AdvancedEditor.py b/src/SMESH_SWIG/SMESH_AdvancedEditor.py new file mode 100644 index 000000000..914cd7931 --- /dev/null +++ b/src/SMESH_SWIG/SMESH_AdvancedEditor.py @@ -0,0 +1,209 @@ +# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +import smesh +import SMESH +import math + +def GetNewNodes(mesh,Elems,OldNodes): + """ + Auxilary function, which return list of nodes from + given Elems avoided nodes from OldNodes + """ + newnodes = [] + for i in Elems: + nbn = mesh.GetElemNbNodes(i) + for j in range(0,nbn): + nn = mesh.GetElemNode(i,j) + isold = 0 + for k in range(0,len(newnodes)): + if nn==newnodes[k]: + isold = 1 + break + pass + if isold: continue + for k in range(0,len(OldNodes)): + if nn==OldNodes[k]: + isold = 1 + break + pass + if isold: continue + newnodes.append(nn) + pass + pass + return newnodes + + +# create empty mesh +mesh = smesh.smesh.CreateEmptyMesh() + +ed = mesh.GetMeshEditor() +tol = 0.001 + +# create a cross from quadrangle faces +# 1. create first edge and make extrusion along 0x +n1 = ed.AddNode(55,-5,0) +n2 = ed.AddNode(55,5,0) +e1 = ed.AddEdge([n1,n2]) +dir1 = SMESH.DirStruct(SMESH.PointStruct(-10,0,0)) +ed.ExtrusionSweep([e1],dir1,11) +# 2. create second edge and make extrusion along 0y +n3 = ed.AddNode(-5,-55,0) +n4 = ed.AddNode(5,-55,0) +e2 = ed.AddEdge([n3,n4]) +dir2 = SMESH.DirStruct(SMESH.PointStruct(0,10,0)) +ed.ExtrusionSweep([e2],dir2,11) + +# since result has coincident nodes and faces +# we have to make merge +nodes = ed.FindCoincidentNodes(0.001) +ed.MergeNodes(nodes) +ed.MergeEqualElements() + +# make extrusion faces along 0z +faces = mesh.GetElementsByType(SMESH.FACE) +nbf = len(faces) +maxang = 2.0 +zstep = 5 +nbzsteps = 50 +dir3 = SMESH.DirStruct(SMESH.PointStruct(0,0,zstep)) +newfaces = [] # list for keeping created top faces + # during extrusion + +for i in range(0,nbzsteps): + ed.ExtrusionSweep(faces,dir3,1) + # find top faces after each extrusion and keep them + res = ed.GetLastCreatedElems() + nbr = len(res) + nfaces = [] + for j in res: + nbn = mesh.GetElemNbNodes(j) + if nbn!=4: continue + nn1 = mesh.GetElemNode(j,0) + xyz1 = mesh.GetNodeXYZ(nn1) + nn2 = mesh.GetElemNode(j,1) + xyz2 = mesh.GetNodeXYZ(nn2) + nn3 = mesh.GetElemNode(j,2) + xyz3 = mesh.GetNodeXYZ(nn3) + if abs(xyz1[2]-xyz2[2])2: faces1.append(i) + pass +nbf1 = len(faces1) + +# create other two edges and rotate them for creation +# other full circle +n8 = ed.AddNode(-65,0,0) +n9 = ed.AddNode(-67.5,0,0) +n10 = ed.AddNode(-70,0,0) +e8 = ed.AddEdge([n8,n9]) +e9 = ed.AddEdge([n9,n10]) +axisr3 = SMESH.AxisStruct(-65,0,0,0,-1,0) +ed.RotationSweep([e8,e9],axisr3, math.pi/6, 12, tol) +res = ed.GetLastCreatedElems() +faces2 = [] +for i in res: + nbn = mesh.GetElemNbNodes(i) + if nbn>2: faces2.append(i) + pass +nbf2 = len(faces2) + +# there are coincident nodes after rotation +# therefore we have to merge nodes +nodes = ed.FindCoincidentNodes(0.001) +ed.MergeNodes(nodes) + +nbcircs = 2 +nbrsteps = 24 +nbrs = nbcircs*nbrsteps +dz = nbzsteps*zstep/nbrs + +# create first spiral +oldnodes = [] +newnodes = GetNewNodes(mesh,faces1,oldnodes) +oldnodes = newnodes + +nodes = [] +ed.RotationSweep(faces1,axisr1, math.pi*2/nbrsteps, nbrs, tol) +res = ed.GetLastCreatedElems() + +for i in range(0,nbrs): + volumes = [] + for j in range(0,nbf1): volumes.append(res[i+j*nbrs]) + newnodes = GetNewNodes(mesh,volumes,oldnodes) + for j in newnodes: + xyz = mesh.GetNodeXYZ(j) + ed.MoveNode(j,xyz[0],xyz[1],xyz[2]+dz*(i+1)) + pass + oldnodes = newnodes + pass + +# create second spiral +oldnodes = [] +newnodes = GetNewNodes(mesh,faces2,oldnodes) +oldnodes = newnodes + +nodes = [] +ed.RotationSweep(faces2,axisr1, math.pi*2/nbrsteps, nbrs, tol) +res = ed.GetLastCreatedElems() + +for i in range(0,nbrs): + volumes = [] + for j in range(0,nbf2): volumes.append(res[i+j*nbrs]) + newnodes = GetNewNodes(mesh,volumes,oldnodes) + for j in newnodes: + xyz = mesh.GetNodeXYZ(j) + ed.MoveNode(j,xyz[0],xyz[1],xyz[2]+dz*(i+1)) + pass + oldnodes = newnodes + pass + + diff --git a/src/SMESH_SWIG/SMESH_fixation_netgen.py b/src/SMESH_SWIG/SMESH_fixation_netgen.py new file mode 100644 index 000000000..31114905c --- /dev/null +++ b/src/SMESH_SWIG/SMESH_fixation_netgen.py @@ -0,0 +1,75 @@ +# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# Tetrahedrization of the geometry generated by the Python script +# SMESH_fixation.py +# The new Netgen algorithm is used that discretizes baoundaries itself +# + +import StdMeshers +import NETGENPlugin +import SMESH_fixation +import smesh + +compshell = SMESH_fixation.compshell +idcomp = SMESH_fixation.idcomp +geompy = SMESH_fixation.geompy +salome = SMESH_fixation.salome + +print "Analysis of the geometry to be meshed :" +subShellList = geompy.SubShapeAll(compshell, geompy.ShapeType["SHELL"]) +subFaceList = geompy.SubShapeAll(compshell, geompy.ShapeType["FACE"]) +subEdgeList = geompy.SubShapeAll(compshell, geompy.ShapeType["EDGE"]) + +print "number of Shells in compshell : ", len(subShellList) +print "number of Faces in compshell : ", len(subFaceList) +print "number of Edges in compshell : ", len(subEdgeList) + +status = geompy.CheckShape(compshell) +print " check status ", status + +### ---------------------------- SMESH -------------------------------------- + +print "-------------------------- create Mesh, algorithm, hypothesis" + +mesh = smesh.Mesh(compshell, "MeshcompShel"); +netgen = mesh.Netgen(1) +hyp = netgen.Parameters() +hyp.SetMaxSize( 50 ) +#hyp.SetSecondOrder( 0 ) +hyp.SetFineness( 3 ) +#hyp.SetOptimize( 1 ) + +salome.sg.updateObjBrowser(1) + +print "-------------------------- compute mesh" +ret = mesh.Compute() +print ret +if ret != 0: + print "Information about the MeshcompShel:" + print "Number of nodes : ", mesh.GetMesh().NbNodes() + print "Number of edges : ", mesh.GetMesh().NbEdges() + print "Number of faces : ", mesh.GetMesh().NbFaces() + print "Number of triangles : ", mesh.GetMesh().NbTriangles() + print "Number of volumes : ", mesh.GetMesh().NbVolumes() + print "Number of tetrahedrons : ", mesh.GetMesh().NbTetras() + +else: + print "problem when computing the mesh" diff --git a/src/SMESH_SWIG/SMESH_mechanic_netgen.py b/src/SMESH_SWIG/SMESH_mechanic_netgen.py new file mode 100644 index 000000000..b3a0ea2a7 --- /dev/null +++ b/src/SMESH_SWIG/SMESH_mechanic_netgen.py @@ -0,0 +1,136 @@ +# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# Quadrangulation of the geometry generated by the Python script +# SMESH_mechanic.py +# The new Netgen algorithm is used that discretizes baoundaries itself +# + +import salome +import geompy + +geom = geompy.geom + +import StdMeshers +import NETGENPlugin +import smesh + +# ---------------------------- GEOM -------------------------------------- + +# ---- define contigous arcs and segment to define a closed wire +p1 = geompy.MakeVertex( 100.0, 0.0, 0.0 ) +p2 = geompy.MakeVertex( 50.0, 50.0, 0.0 ) +p3 = geompy.MakeVertex( 100.0, 100.0, 0.0 ) +arc1 = geompy.MakeArc( p1, p2, p3 ) + +p4 = geompy.MakeVertex( 170.0, 100.0, 0.0 ) +seg1 = geompy.MakeVector( p3, p4 ) + +p5 = geompy.MakeVertex( 200.0, 70.0, 0.0 ) +p6 = geompy.MakeVertex( 170.0, 40.0, 0.0 ) +arc2 = geompy.MakeArc( p4, p5, p6 ) + +p7 = geompy.MakeVertex( 120.0, 30.0, 0.0 ) +arc3 = geompy.MakeArc( p6, p7, p1 ) + +# ---- define a closed wire with arcs and segment +List1 = [] +List1.append( arc1 ) +List1.append( seg1 ) +List1.append( arc2 ) +List1.append( arc3 ) + +wire1 = geompy.MakeWire( List1 ) +Id_wire1 = geompy.addToStudy( wire1, "wire1" ) + +# ---- define a planar face with wire +WantPlanarFace = 1 #True +face1 = geompy.MakeFace( wire1, WantPlanarFace ) +Id_face1 = geompy.addToStudy( face1, "face1" ) + +# ---- create a shape by extrusion +pO = geompy.MakeVertex( 0.0, 0.0, 0.0 ) +pz = geompy.MakeVertex( 0.0, 0.0, 100.0 ) +vz = geompy.MakeVector( pO, pz ) + +prism1 = geompy.MakePrismVecH( face1, vz, 100.0 ) +Id_prism1 = geompy.addToStudy( prism1, "prism1") + +# ---- create two cylinders + +pc1 = geompy.MakeVertex( 90.0, 50.0, -40.0 ) +pc2 = geompy.MakeVertex( 170.0, 70.0, -40.0 ) +radius = 20.0 +height = 180.0 +cyl1 = geompy.MakeCylinder( pc1, vz, radius, height ) +cyl2 = geompy.MakeCylinder( pc2, vz, radius, height ) + +Id_Cyl1 = geompy.addToStudy( cyl1, "cyl1" ) +Id_Cyl2 = geompy.addToStudy( cyl2, "cyl2" ) + +# ---- cut with cyl1 +shape = geompy.MakeBoolean( prism1, cyl1, 2 ) + +# ---- fuse with cyl2 to obtain the final mechanic piece :) +mechanic = geompy.MakeBoolean( shape, cyl2, 3 ) +Id_mechanic = geompy.addToStudy( mechanic, "mechanic" ) + +# ---- Analysis of the geometry + +print "Analysis of the geometry mechanic :" + +subShellList = geompy.SubShapeAll(mechanic,geompy.ShapeType["SHELL"]) +subFaceList = geompy.SubShapeAll(mechanic,geompy.ShapeType["FACE"]) +subEdgeList = geompy.SubShapeAll(mechanic,geompy.ShapeType["EDGE"]) + +print "number of Shells in mechanic : ",len(subShellList) +print "number of Faces in mechanic : ",len(subFaceList) +print "number of Edges in mechanic : ",len(subEdgeList) + +### ---------------------------- SMESH -------------------------------------- + +print "-------------------------- create Mesh, algorithm, hypothesis" + +mesh = smesh.Mesh(mechanic, "Mesh_mechanic"); +netgen = mesh.Netgen(0) +hyp = netgen.Parameters() +hyp.SetMaxSize( 50 ) +#hyp.SetSecondOrder( 0 ) +hyp.SetFineness( 3 ) +hyp.SetQuadAllowed( 1 ) +#hyp.SetOptimize( 1 ) + +salome.sg.updateObjBrowser(1) + +print "-------------------------- compute mesh" +ret = mesh.Compute() +print ret +if ret != 0: + print "Information about the MeshcompShel:" + print "Number of nodes : ", mesh.GetMesh().NbNodes() + print "Number of edges : ", mesh.GetMesh().NbEdges() + print "Number of faces : ", mesh.GetMesh().NbFaces() + print "Number of triangles : ", mesh.GetMesh().NbTriangles() + print "Number of quadrangles : ", mesh.GetMesh().NbQuadrangles() + print "Number of volumes : ", mesh.GetMesh().NbVolumes() + print "Number of tetrahedrons : ", mesh.GetMesh().NbTetras() + +else: + print "problem when computing the mesh" diff --git a/src/SMESH_SWIG/ex21_lamp.py b/src/SMESH_SWIG/ex21_lamp.py new file mode 100644 index 000000000..fd6277369 --- /dev/null +++ b/src/SMESH_SWIG/ex21_lamp.py @@ -0,0 +1,125 @@ +# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# CEA/LGLS 2006, Francis KLOSS (OCC) +# ================================== + +from geompy import * + +import smesh + +# Geometry +# ======== + +# an assembly of a box, a cylinder and a truncated cone meshed with tetrahedral. + +# Define values +# ------------- + +name = "ex21_lamp" + +cote = 60 + +section = 20 +size = 200 + +radius_1 = 80 +radius_2 = 40 +height = 100 + +# Build a box +# ----------- + +box = MakeBox(-cote, -cote, -cote, +cote, +cote, +cote) + +# Build a cylinder +# ---------------- + +pt1 = MakeVertex(0, 0, cote/3) +di1 = MakeVectorDXDYDZ(0, 0, 1) +cyl = MakeCylinder(pt1, di1, section, size) + +# Build a truncated cone +# ---------------------- + +pt2 = MakeVertex(0, 0, size) +cone = MakeCone(pt2, di1, radius_1, radius_2, height) + +# Fuse +# ---- + +box_cyl = MakeFuse(box, cyl) +piece = MakeFuse(box_cyl, cone) + +# Add in study +# ------------ + +addToStudy(piece, name) + +# Create a group of faces +# ----------------------- + +group = CreateGroup(piece, ShapeType["FACE"]) + +group_name = name + "_grp" +addToStudy(group, group_name) +group.SetName(group_name) + +# Add faces in the group +# ---------------------- + +faces = SubShapeAllIDs(piece, ShapeType["FACE"]) + +UnionIDs(group, faces) + +# Create a mesh +# ============= + +# Define a mesh on a geometry +# --------------------------- + +tetra = smesh.Mesh(piece, name) + +# Define 1D hypothesis +# -------------------- + +algo1d = tetra.Segment() +algo1d.LocalLength(10) + +# Define 2D hypothesis +# -------------------- + +algo2d = tetra.Triangle() +algo2d.LengthFromEdges() + +# Define 3D hypothesis +# -------------------- + +algo3d = tetra.Tetrahedron(smesh.NETGEN) +algo3d.MaxElementVolume(100) + +# Compute the mesh +# ---------------- + +tetra.Compute() + +# Create a groupe of faces +# ------------------------ + +tetra.Group(group) diff --git a/src/StdMeshers/StdMeshers_QuadraticMesh.cxx b/src/StdMeshers/StdMeshers_QuadraticMesh.cxx new file mode 100644 index 000000000..2e56a6560 --- /dev/null +++ b/src/StdMeshers/StdMeshers_QuadraticMesh.cxx @@ -0,0 +1,111 @@ +// SMESH StdMeshers_QuadraticMesh : implementaion of SMESH idl descriptions +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : StdMeshers_QuadraticMesh.cxx +// Module : SMESH +// $Header$ + +#include "StdMeshers_QuadraticMesh.hxx" +#include "utilities.h" + +using namespace std; + +//============================================================================= +/*! + * + */ +//============================================================================= + +StdMeshers_QuadraticMesh::StdMeshers_QuadraticMesh(int hypId, + int studyId, + SMESH_Gen * gen) + :SMESH_Hypothesis(hypId, studyId, gen) +{ + _name = "QuadraticMesh"; + _param_algo_dim = -1; // it means auxiliary, dim = 1 +} + +//============================================================================= +/*! + * + */ +//============================================================================= + +StdMeshers_QuadraticMesh::~StdMeshers_QuadraticMesh() +{ +} + +//============================================================================= +/*! + * + */ +//============================================================================= + +ostream & StdMeshers_QuadraticMesh::SaveTo(ostream & save) +{ + return save; +} + +//============================================================================= +/*! + * + */ +//============================================================================= + +istream & StdMeshers_QuadraticMesh::LoadFrom(istream & load) +{ + return load; +} + +//============================================================================= +/*! + * + */ +//============================================================================= + +ostream & operator <<(ostream & save, StdMeshers_QuadraticMesh & hyp) +{ + return hyp.SaveTo( save ); +} + +//============================================================================= +/*! + * + */ +//============================================================================= + +istream & operator >>(istream & load, StdMeshers_QuadraticMesh & hyp) +{ + return hyp.LoadFrom( load ); +} +//================================================================================ +/*! + * \brief Initialize my parameter values by the mesh built on the geometry + * \retval bool - false as this hypothesis does not have parameters values + */ +//================================================================================ + +bool StdMeshers_QuadraticMesh::SetParametersByMesh(const SMESH_Mesh*, const TopoDS_Shape&) +{ + return false; +} diff --git a/src/StdMeshers/StdMeshers_QuadraticMesh.hxx b/src/StdMeshers/StdMeshers_QuadraticMesh.hxx new file mode 100644 index 000000000..db601eec8 --- /dev/null +++ b/src/StdMeshers/StdMeshers_QuadraticMesh.hxx @@ -0,0 +1,65 @@ +// SMESH StdMeshers : implementaion of SMESH idl descriptions +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : StdMeshers_QuadraticMesh.hxx +// Module : SMESH +// $Header$ + +#ifndef _StdMeshers_QuadraticMesh_HXX_ +#define _StdMeshers_QuadraticMesh_HXX_ + +#include "SMESH_Hypothesis.hxx" +#include "Utils_SALOME_Exception.hxx" + +/*! + * \brief Hypothesis for StdMeshers_Regular_1D, forcing construction of quadratic edges. + * If the 2D mesher sees that all boundary edges are quadratic ones, + * it generates quadratic faces, else it generates linear faces using + * medium nodes as if they were vertex ones. + * The 3D mesher generates quadratic volumes only if all boundary faces + * are quadratic ones, else it fails. + */ +class StdMeshers_QuadraticMesh:public SMESH_Hypothesis +{ + public: + StdMeshers_QuadraticMesh(int hypId, int studyId, SMESH_Gen * gen); + virtual ~ StdMeshers_QuadraticMesh(); + + virtual std::ostream & SaveTo(std::ostream & save); + virtual std::istream & LoadFrom(std::istream & load); + friend std::ostream & operator <<(std::ostream & save, StdMeshers_QuadraticMesh & hyp); + friend std::istream & operator >>(std::istream & load, StdMeshers_QuadraticMesh & hyp); + + /*! + * \brief Initialize my parameter values by the mesh built on the geometry + * \param theMesh - the built mesh + * \param theShape - the geometry of interest + * \retval bool - true if parameter values have been successfully defined + * + * Just return false as this hypothesis does not have parameters values + */ + virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape); + +}; + +#endif diff --git a/src/StdMeshers_I/StdMeshers_QuadraticMesh_i.cxx b/src/StdMeshers_I/StdMeshers_QuadraticMesh_i.cxx new file mode 100644 index 000000000..80c18738f --- /dev/null +++ b/src/StdMeshers_I/StdMeshers_QuadraticMesh_i.cxx @@ -0,0 +1,99 @@ +// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : StdMeshers_QuadraticMesh_i.cxx +// Moved here from SMESH_LocalLength_i.cxx +// Author : Paul RASCLE, EDF +// Module : SMESH +// $Header$ + +#include "StdMeshers_QuadraticMesh_i.hxx" +#include "SMESH_Gen_i.hxx" +#include "SMESH_Gen.hxx" + +#include "Utils_CorbaException.hxx" +#include "utilities.h" + +//#include + +using namespace std; + +//============================================================================= +/*! + * StdMeshers_QuadraticMesh_i::StdMeshers_QuadraticMesh_i + * + * Constructor + */ +//============================================================================= + +StdMeshers_QuadraticMesh_i::StdMeshers_QuadraticMesh_i +( PortableServer::POA_ptr thePOA, + int theStudyId, + ::SMESH_Gen* theGenImpl ) + : SALOME::GenericObj_i( thePOA ),SMESH_Hypothesis_i( thePOA ) +{ + myBaseImpl = new ::StdMeshers_QuadraticMesh( theGenImpl->GetANewId(), + theStudyId, + theGenImpl ); +} + +//============================================================================= +/*! + * StdMeshers_QuadraticMesh_i::~StdMeshers_QuadraticMesh_i + * + * Destructor + */ +//============================================================================= + +StdMeshers_QuadraticMesh_i::~StdMeshers_QuadraticMesh_i() +{ +} + +//============================================================================= +/*! + * StdMeshers_QuadraticMesh_i::GetImpl + * + * Get implementation + */ +//============================================================================= + +::StdMeshers_QuadraticMesh* StdMeshers_QuadraticMesh_i::GetImpl() +{ + return ( ::StdMeshers_QuadraticMesh* )myBaseImpl; +} + +//================================================================================ +/*! + * \brief Verify whether hypothesis supports given entity type + * \param type - dimension (see SMESH::Dimension enumeration) + * \retval CORBA::Boolean - TRUE if dimension is supported, FALSE otherwise + * + * Verify whether hypothesis supports given entity type (see SMESH::Dimension enumeration) + */ +//================================================================================ + +CORBA::Boolean StdMeshers_QuadraticMesh_i::IsDimSupported( SMESH::Dimension type ) +{ + return type == SMESH::DIM_1D; +} + diff --git a/src/StdMeshers_I/StdMeshers_QuadraticMesh_i.hxx b/src/StdMeshers_I/StdMeshers_QuadraticMesh_i.hxx new file mode 100644 index 000000000..90c74e3d9 --- /dev/null +++ b/src/StdMeshers_I/StdMeshers_QuadraticMesh_i.hxx @@ -0,0 +1,64 @@ +// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : StdMeshers_QuadraticMesh_i.hxx +// Moved here from SMESH_LocalLength_i.hxx +// Author : Paul RASCLE, EDF +// Module : SMESH +// $Header$ + +#ifndef _SMESH_QuadraticMesh_I_HXX_ +#define _SMESH_QuadraticMesh_I_HXX_ + +#include +#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis) + +#include "SMESH_Hypothesis_i.hxx" +#include "StdMeshers_QuadraticMesh.hxx" + +class SMESH_Gen; + +// ====================================================== +// Local Length hypothesis +// ====================================================== +class StdMeshers_QuadraticMesh_i: + public virtual POA_StdMeshers::StdMeshers_QuadraticMesh, + public virtual SMESH_Hypothesis_i +{ +public: + // Constructor + StdMeshers_QuadraticMesh_i( PortableServer::POA_ptr thePOA, + int theStudyId, + ::SMESH_Gen* theGenImpl ); + // Destructor + virtual ~StdMeshers_QuadraticMesh_i(); + + // Get implementation + ::StdMeshers_QuadraticMesh* GetImpl(); + + // Verify whether hypothesis supports given entity type + CORBA::Boolean IsDimSupported( SMESH::Dimension type ); +}; + +#endif + -- 2.39.2