From 5dcb2f2b467e63a0e5d37e234b2ba8f8e624f987 Mon Sep 17 00:00:00 2001 From: eap Date: Tue, 22 Oct 2019 17:24:35 +0300 Subject: [PATCH] #17845 [EDF] Modifications of Automatic meshing --- CMakeLists.txt | 17 +- doc/salome/gui/SMESH/images/hypo_sets.png | Bin 7070 -> 6176 bytes doc/salome/gui/SMESH/images/pref21.png | Bin 93832 -> 98734 bytes .../gui/SMESH/input/constructing_meshes.rst | 1 - .../gui/SMESH/input/mesh_preferences.rst | 4 + idl/SMESH_Gen.idl | 11 +- resources/CMakeLists.txt | 275 ++++++------ resources/SalomeApp.xml.in | 1 + resources/StdMeshers.xml.in | 43 +- resources/mesh_tree_hypo_import_source_1d.png | Bin 0 -> 924 bytes resources/mesh_tree_hypo_import_source_2d.png | Bin 0 -> 924 bytes .../mesh_tree_hypo_layers_distribution_2d.png | Bin 0 -> 1010 bytes src/SMESH/SMESH_Hypothesis.hxx | 7 + src/SMESHGUI/SMESHGUI.cxx | 1 + src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.cxx | 8 +- src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.h | 1 + src/SMESHGUI/SMESHGUI_Hypotheses.cxx | 133 ++++-- src/SMESHGUI/SMESHGUI_Hypotheses.h | 40 +- src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx | 3 +- src/SMESHGUI/SMESHGUI_MeshDlg.cxx | 28 +- src/SMESHGUI/SMESHGUI_MeshDlg.h | 6 +- src/SMESHGUI/SMESHGUI_MeshOp.cxx | 402 +++++++++++++++--- src/SMESHGUI/SMESHGUI_MeshOp.h | 10 +- src/SMESHGUI/SMESHGUI_XmlHandler.cxx | 22 +- src/SMESHGUI/SMESH_msg_en.ts | 15 + src/SMESH_I/SMESH_Gen_i.cxx | 38 +- src/SMESH_I/SMESH_Gen_i.hxx | 10 +- src/SMESH_I/SMESH_Gen_i_1.cxx | 36 +- src/SMESH_SWIG/StdMeshersBuilder.py | 3 +- src/SMESH_SWIG/smeshBuilder.py | 21 + .../StdMeshersGUI_StdHypothesisCreator.cxx | 2 +- src/StdMeshersGUI/StdMeshers_images.ts | 18 +- 32 files changed, 839 insertions(+), 317 deletions(-) create mode 100644 resources/mesh_tree_hypo_import_source_1d.png create mode 100644 resources/mesh_tree_hypo_import_source_2d.png create mode 100644 resources/mesh_tree_hypo_layers_distribution_2d.png diff --git a/CMakeLists.txt b/CMakeLists.txt index 10fb7d492..3515fa48d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,10 +76,11 @@ OPTION(SALOME_BUILD_TESTS "Build SALOME tests" ON) OPTION(SALOME_BUILD_DOC "Generate SALOME SMESH documentation" ON) # Advanced options: -OPTION(SALOME_BUILD_GUI "Enable GUI" ON) -OPTION(SALOME_SMESH_USE_CGNS "Enable import/export to CGNS format" OFF) -OPTION(SALOME_SMESH_USE_TBB "Enable parallel computation" OFF) -OPTION(SALOME_SMESH_DYNLOAD_LOCAL "Load plug-ins' symbols locally (Linux only)" ON) +OPTION(SALOME_BUILD_GUI "Enable GUI" ON) +OPTION(SALOME_SMESH_USE_CGNS "Enable import/export to CGNS format" OFF) +OPTION(SALOME_SMESH_USE_TBB "Enable parallel computation" OFF) +OPTION(SALOME_SMESH_DYNLOAD_LOCAL "Load plug-ins' symbols locally (Linux only)" ON) +OPTION(SMESH_USE_MESHGEMS_HYPOSET "Prefer MeshGems algorithms in sets of hypotheses" OFF) CMAKE_DEPENDENT_OPTION(SALOME_SMESH_BUILD_FRENCH_DOC "Generate SALOME SMESH French documentation" OFF "SALOME_BUILD_DOC" OFF) @@ -87,6 +88,12 @@ IF(SALOME_SMESH_DYNLOAD_LOCAL) ADD_DEFINITIONS(-DDYNLOAD_LOCAL) ENDIF(SALOME_SMESH_DYNLOAD_LOCAL) +IF(SMESH_USE_MESHGEMS_HYPOSET) + SET(SMESH_USE_MESHGEMS_HYPOSET_VAR "true") +ELSE(SMESH_USE_MESHGEMS_HYPOSET) + SET(SMESH_USE_MESHGEMS_HYPOSET_VAR "false") +ENDIF(SMESH_USE_MESHGEMS_HYPOSET) + #On Linux use Fortran to compile MEFISTO2D IF(NOT WIN32) ENABLE_LANGUAGE(Fortran) @@ -94,7 +101,7 @@ IF(NOT WIN32) ADD_DEFINITIONS(-DENABLE_MEFISTO) ENDIF(NOT WIN32) -MARK_AS_ADVANCED(SALOME_BUILD_GUI SALOME_SMESH_USE_CGNS SALOME_SMESH_USE_TBB SALOME_SMESH_DYNLOAD_LOCAL) +MARK_AS_ADVANCED(SALOME_BUILD_GUI SALOME_SMESH_USE_CGNS SALOME_SMESH_USE_TBB SALOME_SMESH_DYNLOAD_LOCAL SMESH_USE_MESHGEMS_HYPOSET) # Prerequisites # ============= diff --git a/doc/salome/gui/SMESH/images/hypo_sets.png b/doc/salome/gui/SMESH/images/hypo_sets.png index 2a9859d231e9b79fe6e8de4d5611c00656334918..14af9af48a178f666fb66c0662ecc2328795ab82 100644 GIT binary patch literal 6176 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 literal 7070 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 vM{wRga@`aN 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 hypothesis. +.. _use_meshgems_pref: + + * **Use MeshGems meshers when assigning set of hypotheses** - if activated, commercial meshers of MeshGems suite are used instead of a free mesher NETGEN when assigning a set of hypotheses in Create Mesh/Sub-mesh dialog. + * **Mesh loading** * **No mesh loading from study file at hypothesis modification** - if activated, the mesh data will not be loaded from the study file when a hypothesis is modified. This allows saving time by omitting loading data of a large mesh that is planned to be recomputed with other parameters. diff --git a/idl/SMESH_Gen.idl b/idl/SMESH_Gen.idl index cdb800e87..4dbeb2ef0 100644 --- a/idl/SMESH_Gen.idl +++ b/idl/SMESH_Gen.idl @@ -116,6 +116,15 @@ module SMESH }; typedef sequence compute_error_array; + /*! + * Way to initialize hypothesis + */ + struct HypInitParams + { + short way; // 0 - by mesh, 1 - by geometry size + prefered parameters, 2 - by averageLength + double averageLength; + boolean quadDominated; + }; interface SMESH_Gen : Engines::EngineComponent, SALOMEDS::Driver { @@ -175,7 +184,7 @@ module SMESH in string theLibName, in SMESH_Mesh theMesh, in GEOM::GEOM_Object theGeom, - in boolean byMesh) + in HypInitParams theWay) raises ( SALOME::SALOME_Exception ); /*! diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt index 7b880a703..d0d99adcb 100644 --- a/resources/CMakeLists.txt +++ b/resources/CMakeLists.txt @@ -21,7 +21,18 @@ # SET(SMESH_RESOURCES_FILES + ModuleMesh.png + advanced_mesh_info.png + bare_border_face.png + bare_border_volume.png + copy_mesh.png + copy_mesh_with_geom.png delete.png + mesh.png + mesh_0D_elem.png + mesh_0D_on_all_nodes.png + mesh_2d_from_3d.png + mesh_add.png mesh_add_sub.png mesh_algo_hexa.png mesh_algo_mefisto.png @@ -29,211 +40,203 @@ SET(SMESH_RESOURCES_FILES mesh_algo_regular.png mesh_algo_tetra.png mesh_angle.png + mesh_angle_measure.png mesh_area.png mesh_aspect.png mesh_aspect_3d.png + mesh_ball.png mesh_biquad_quadrangle.png mesh_biquad_triangle.png + mesh_bounding_box.png + mesh_build_compound.png mesh_choose.png mesh_choose_all.png mesh_clear.png mesh_compute.png - mesh_evaluate.png - mesh_order.png + mesh_conv_to_quad.png + mesh_cutGroups.png + mesh_cutquad.png + mesh_deflection.png + mesh_deleteGroups.png mesh_diagonal.png + mesh_duplicate_elem_only.png + mesh_duplicate_group_boundary.png + mesh_duplicate_nodes.png + mesh_duplicate_nodes_with_elem.png mesh_edit.png - mesh_hexa.png - mesh_hypo_area.png - mesh_hypo_length.png - mesh_hypo_segment.png - mesh_hypo_volume.png - mesh_hypo_edit.png - mesh_plus.png - mesh_minus.png - mesh_info.png - advanced_mesh_info.png - standard_mesh_info.png + mesh_edit_group.png mesh_elem_info.png mesh_equal_edge.png mesh_equal_face.png mesh_equal_node.png mesh_equal_volume.png - mesh_whatis.png - mesh_init.png - mesh_length.png - mesh_length_2d.png + mesh_evaluate.png + mesh_extmeth_face_offset.png + mesh_extmeth_node_offset.png + mesh_extmeth_surf_offset_smooth.png + mesh_extractGroup.png + mesh_extrusion.png + mesh_extrusionpath.png + mesh_face_groups_by_edges.png mesh_find_elem_by_point.png mesh_free_edges.png mesh_free_edges_2d.png + mesh_free_faces.png mesh_free_nodes.png + mesh_group.png + mesh_groups_from_gemetry.png + mesh_hexa.png + mesh_hide.png + mesh_hypo_area.png + mesh_hypo_edit.png + mesh_hypo_layer_distribution.png + mesh_hypo_length.png + mesh_hypo_segment.png + mesh_hypo_source_3d.png + mesh_hypo_source_edge.png + mesh_hypo_source_face.png + mesh_hypo_viscous_layers.png + mesh_hypo_volume.png + mesh_info.png + mesh_init.png + mesh_intersectGroups.png + mesh_length.png + mesh_length_2d.png + mesh_line.png + mesh_line_n.png + mesh_make_group.png mesh_max_element_length_2d.png mesh_max_element_length_3d.png - mesh_multi_edges.png - mesh_multi_edges_2d.png - mesh_line_n.png - mesh_line.png + mesh_measure_area.png + mesh_measure_basic_props.png + mesh_measure_length.png + mesh_measure_volume.png + mesh_merge_elements.png + mesh_merge_nodes.png + mesh_min_dist.png + mesh_minus.png mesh_move_node.png mesh_move_without_node.png + mesh_multi_edges.png + mesh_multi_edges_2d.png + mesh_node_to_point.png mesh_octahedron.png + mesh_offset.png + mesh_order.png mesh_orientation.png - mesh.png + mesh_pattern.png + mesh_pentahedron.png mesh_plugins_meshcut.png + mesh_plus.png + mesh_points.png mesh_polygon.png mesh_polyhedron.png - mesh_pyramid_n.png + mesh_precompute.png mesh_pyramid.png - mesh_quad_n.png + mesh_pyramid_n.png mesh_quad.png + mesh_quad_edge.png + mesh_quad_hexahedron.png + mesh_quad_n.png + mesh_quad_pentahedron.png + mesh_quad_polygon.png + mesh_quad_pyramid.png + mesh_quad_quadrangle.png + mesh_quad_tetrahedron.png + mesh_quad_triangle.png mesh_quadrangle_quadpref.png mesh_quadrangle_quadpref_reversed.png mesh_quadrangle_reduced.png mesh_quadrangle_standard.png mesh_quadrangle_triapref.png + mesh_quality.png mesh_rem_element.png mesh_rem_node.png mesh_rem_orphan_nodes.png + mesh_remove.png + mesh_renumbering_elements.png + mesh_renumbering_nodes.png + mesh_revolution.png + mesh_rotation.png + mesh_sew_bordertoside.png + mesh_sew_conform_freeborders.png + mesh_sew_freeborders.png + mesh_sew_sideelements.png mesh_shading.png + mesh_show.png mesh_shrink.png mesh_skew.png + mesh_smoothing.png + mesh_symmetry_axis.png + mesh_symmetry_plane.png + mesh_symmetry_point.png mesh_taper.png mesh_tetra.png + mesh_translation_points.png + mesh_translation_vector.png + mesh_tree_algo.png + mesh_tree_algo_0D.png + mesh_tree_algo_existing_2D.png mesh_tree_algo_hexa.png mesh_tree_algo_mefisto.png mesh_tree_algo_polygon.png - mesh_tree_algo.png - mesh_tree_algo_0D.png + mesh_tree_algo_prism.png + mesh_tree_algo_projection_2d.png mesh_tree_algo_quad.png + mesh_tree_algo_radial_prism.png + mesh_tree_algo_radial_quadrangle_1D2D.png mesh_tree_algo_regular.png mesh_tree_algo_tetra.png + mesh_tree_group.png + mesh_tree_group_on_filter.png + mesh_tree_hypo.png mesh_tree_hypo_area.png + mesh_tree_hypo_cartesian.png + mesh_tree_hypo_import_source_1d.png + mesh_tree_hypo_import_source_2d.png + mesh_tree_hypo_layers_distribution.png + mesh_tree_hypo_layers_distribution_2d.png mesh_tree_hypo_length.png - mesh_tree_hypo.png + mesh_tree_hypo_projection_2d.png + mesh_tree_hypo_projection_3d.png + mesh_tree_hypo_quadratic.png mesh_tree_hypo_segment.png + mesh_tree_hypo_source_3d_shape.png + mesh_tree_hypo_source_edge.png + mesh_tree_hypo_source_face.png + mesh_tree_hypo_viscous_layers.png mesh_tree_hypo_volume.png - mesh_tree_hypo_cartesian.png - mesh_tree_mesh.png mesh_tree_importedmesh.png + mesh_tree_mesh.png + mesh_tree_mesh_partial.png mesh_tree_mesh_warn.png + mesh_triangle.png mesh_triangle_n.png mesh_triquad_hexahedron.png - mesh_triangle.png + mesh_union2tri.png + mesh_unionGroups.png + mesh_uniontri.png mesh_update.png - mesh_vertex_n.png mesh_vertex.png - mesh_0D_elem.png - mesh_0D_on_all_nodes.png + mesh_vertex_n.png mesh_volume_3d.png - bare_border_volume.png - bare_border_face.png - over_constrained_volume.png - over_constrained_face.png + mesh_whatis.png mesh_wireframe.png - mesh_points.png mesh_wrap.png - mesh_group.png - mesh_tree_group.png - mesh_tree_group_on_filter.png - mesh_edit_group.png - mesh_make_group.png - mesh_groups_from_gemetry.png - mesh_union2tri.png - mesh_uniontri.png - mesh_cutquad.png - mesh_smoothing.png - mesh_renumbering_nodes.png - mesh_renumbering_elements.png - mesh_extrusion.png - mesh_extrusionpath.png - mesh_revolution.png - ModuleMesh.png - mesh_unionGroups.png - mesh_intersectGroups.png - mesh_cutGroups.png - mesh_deleteGroups.png - mesh_translation_vector.png - mesh_translation_points.png - mesh_rotation.png - mesh_symmetry_point.png - mesh_symmetry_axis.png - mesh_symmetry_plane.png - mesh_sew_freeborders.png - mesh_sew_conform_freeborders.png - mesh_sew_bordertoside.png - mesh_sew_sideelements.png - mesh_merge_nodes.png - mesh_merge_elements.png - select1.png open.png - mesh_pattern.png - mesh_pentahedron.png + over_constrained_face.png + over_constrained_volume.png pattern_sample_2d.png pattern_sample_3D.png - mesh_add.png - mesh_remove.png - mesh_quad_edge.png - mesh_quad_triangle.png - mesh_quad_quadrangle.png - mesh_quad_polygon.png - mesh_quad_tetrahedron.png - mesh_quad_pyramid.png - mesh_quad_pentahedron.png - mesh_quad_hexahedron.png - mesh_conv_to_quad.png - mesh_tree_hypo_layers_distribution.png - mesh_tree_algo_radial_prism.png - mesh_tree_algo_radial_quadrangle_1D2D.png - mesh_tree_algo_existing_2D.png - mesh_tree_algo_prism.png - mesh_tree_algo_projection_2d.png - mesh_hypo_source_edge.png - mesh_hypo_source_3d.png - mesh_hypo_layer_distribution.png - mesh_hypo_source_face.png - mesh_tree_hypo_source_face.png - mesh_tree_hypo_source_edge.png - mesh_tree_hypo_source_3d_shape.png - mesh_tree_hypo_projection_3d.png - mesh_tree_hypo_projection_2d.png - mesh_tree_hypo_quadratic.png - mesh_build_compound.png - copy_mesh.png - copy_mesh_with_geom.png - mesh_node_to_point.png - mesh_tree_mesh_partial.png - mesh_extractGroup.png - mesh_precompute.png - mesh_2d_from_3d.png - mesh_free_faces.png + reorient_faces_face.png + reorient_faces_point.png + reorient_faces_volume.png scale.png scale_along_axes.png - split_into_tetra.png + select1.png split_biquad.png - mesh_duplicate_nodes.png - mesh_duplicate_nodes_with_elem.png - mesh_duplicate_elem_only.png - mesh_duplicate_group_boundary.png - mesh_bounding_box.png - mesh_hypo_viscous_layers.png - mesh_tree_hypo_viscous_layers.png - mesh_min_dist.png - reorient_faces_point.png - reorient_faces_face.png - reorient_faces_volume.png - mesh_ball.png - mesh_measure_basic_props.png - mesh_measure_length.png - mesh_measure_area.png - mesh_measure_volume.png - mesh_extmeth_node_offset.png - mesh_extmeth_surf_offset_smooth.png - mesh_extmeth_face_offset.png - mesh_quality.png - mesh_show.png - mesh_hide.png - mesh_deflection.png - mesh_offset.png - mesh_face_groups_by_edges.png - mesh_angle_measure.png + split_into_tetra.png + standard_mesh_info.png ) INSTALL(FILES ${SMESH_RESOURCES_FILES} DESTINATION ${SALOME_SMESH_INSTALL_RES_DATA}) diff --git a/resources/SalomeApp.xml.in b/resources/SalomeApp.xml.in index b78f7a903..4af56219a 100644 --- a/resources/SalomeApp.xml.in +++ b/resources/SalomeApp.xml.in @@ -76,6 +76,7 @@ + diff --git a/resources/StdMeshers.xml.in b/resources/StdMeshers.xml.in index 14ed93a0c..bf2204b86 100644 --- a/resources/StdMeshers.xml.in +++ b/resources/StdMeshers.xml.in @@ -590,22 +590,45 @@ - - - + + - - - + + + + + + diff --git a/resources/mesh_tree_hypo_import_source_1d.png b/resources/mesh_tree_hypo_import_source_1d.png new file mode 100644 index 0000000000000000000000000000000000000000..8db626043cadad3d9a8420164973ba741b815404 GIT binary patch literal 924 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xawj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&pI^OORhnrcd3bmw|y<)6>NbP0 Hl+XkK?5lpe literal 0 HcmV?d00001 diff --git a/resources/mesh_tree_hypo_import_source_2d.png b/resources/mesh_tree_hypo_import_source_2d.png new file mode 100644 index 0000000000000000000000000000000000000000..3d4e1e245e883c7948c399f11f6064eeecce7f5a GIT binary patch literal 924 zcmZuv&ubG=5dJpZ-KJ?`+7v-NC>|0vg3$IP9I*_lh)QR&3cH%FqBvaAD1Bofqd9AuVWg18>`TQ= z>`^$@80_|6ABP^WTCGalYZ!)jyX(4`yu8LH0TA0mo5bJ}^Dxl&R4NrwK$0X;z_KhP zXYZkHD{$-yq!*rn$9f%oAlE#QFK?mItix*VVQqd2(@71rS`B9xUUX9VRQ(f=#}N*P zX^Xk^TibMIX;avfMwxdPFHjUk*ntil=+Z!E?|u-j*tm(U`*X-%e+VhiO9LTx(y|`^B)arPb6 z5z^z`(E=-IYy8>2fTko|ur0h>W?`zff#{{9wFHAqj&e}*|Aoe+RkKMPPU&{Aa^ zOc96%YJ&l+HWT5Wl>ZQ&Fmo92>H#_uVkfFLke>C&@4(GKFyI;>LP*+}yu7@C{sEFu z)kpz=(2uGOceo*i1V{_aEMQ22+y=A#5sRkmTAj}j{Sfc}o3ZN)N8%!xk z8Q532!wsSV-8>K#9u6{1-oD!M< DX&P?O literal 0 HcmV?d00001 diff --git a/src/SMESH/SMESH_Hypothesis.hxx b/src/SMESH/SMESH_Hypothesis.hxx index d1301c452..520e72477 100644 --- a/src/SMESH/SMESH_Hypothesis.hxx +++ b/src/SMESH/SMESH_Hypothesis.hxx @@ -95,11 +95,18 @@ public: */ virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape)=0; + enum InitWay { BY_MESH, BY_GEOM, BY_AVERAGE_LENGTH }; struct TDefaults { + InitWay _way; double _elemLength; int _nbSegments; + bool _quadDominated; + double _diagonal; TopoDS_Shape* _shape; // future shape of the mesh being created + + TDefaults(): + _way(BY_GEOM), _elemLength(0),_nbSegments(0),_quadDominated(false),_diagonal(0),_shape(0) {} }; /*! * \brief Initialize my parameter values by default parameters. diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 82d159350..deb3711c9 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -5211,6 +5211,7 @@ void SMESHGUI::createPreferences() "SMESH", "nb_segments_per_edge" ); setPreferenceProperty( nbSeg, "min", 1 ); setPreferenceProperty( nbSeg, "max", 10000000 ); + addPreference( tr( "PREF_USE_MESHGEMS_HYPOSET" ), segGroup, LightApp_Preferences::Bool, "SMESH", "use-meshgems-hypo-sets" ); int loadGroup = addPreference( tr( "SMESH_PREF_MESH_LOADING" ), genTab ); addPreference( tr( "PREF_FORGET_MESH_AT_HYP_MODIF" ), loadGroup, LightApp_Preferences::Bool, diff --git a/src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.cxx b/src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.cxx index 6a0f17d33..9a939559b 100644 --- a/src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.cxx @@ -206,7 +206,7 @@ LightApp_Dialog* SMESHGUI_GroupOnShapeOp::dlg() const */ //================================================================================ -static SMESH::ElementType elementType(GEOM::GEOM_Object_var geom) +SMESH::ElementType SMESHGUI_GroupOnShapeOp::ElementType(GEOM::GEOM_Object_var geom) { if ( !geom->_is_nil() ) { switch ( geom->GetShapeType() ) { @@ -232,7 +232,7 @@ static SMESH::ElementType elementType(GEOM::GEOM_Object_var geom) GEOM::ListOfLong_var ids = aGroupOp->GetObjects( geom ); if ( ids->length() && !mainShape->_is_nil() && !aShapeOp->_is_nil() ) { GEOM::GEOM_Object_wrap member = aShapeOp->GetSubShape( mainShape, ids[0] ); - return elementType( member ); + return ElementType( member ); } } } @@ -240,7 +240,7 @@ static SMESH::ElementType elementType(GEOM::GEOM_Object_var geom) GEOM::ListOfLong_var ids = aShapeOp->SubShapeAllIDs( geom, GEOM::SHAPE, false ); if ( ids->length() ) { GEOM::GEOM_Object_wrap member = aShapeOp->GetSubShape( geom, ids[0] ); - return elementType( member ); + return ElementType( member ); } } } @@ -335,7 +335,7 @@ bool SMESHGUI_GroupOnShapeOp::onApply() if ( geom->_is_nil() ) continue; // group type - SMESH::ElementType elemType = isNode ? SMESH::NODE : elementType( geom ); + SMESH::ElementType elemType = isNode ? SMESH::NODE : ElementType( geom ); if ( elemType == SMESH::ALL ) continue; diff --git a/src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.h b/src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.h index 63d946b7a..f88e9bef5 100644 --- a/src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.h +++ b/src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.h @@ -49,6 +49,7 @@ public: virtual LightApp_Dialog* dlg() const; static QString GetDefaultName(const QString& theOperation); + static SMESH::ElementType ElementType(GEOM::GEOM_Object_var geom); public slots: diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.cxx b/src/SMESHGUI/SMESHGUI_Hypotheses.cxx index 5522e3144..2c22e5a54 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.cxx +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.cxx @@ -27,10 +27,11 @@ #include "SMESHGUI.h" #include "SMESHGUI_HypothesesUtils.h" -#include "SMESHGUI_Utils.h" #include "SMESHGUI_SpinBox.h" +#include "SMESHGUI_Utils.h" #include "SMESHGUI_VTKUtils.h" #include "SMESH_Actor.h" +#include "SMESH_TypeDefs.hxx" // SALOME KERNEL includes #include @@ -147,10 +148,14 @@ void SMESHGUI_GenericHypothesisCreator::editHypothesis( SMESH::SMESH_Hypothesis_ Dlg->setWindowTitle( caption() ); Dlg->setObjectName( theHypName ); Dlg->setHIcon( icon() ); - Dlg->setType( type() ); + if ( theHypName == HypothesesSet::getCommonHypoSetHypoType() ) + Dlg->setType( tr( HypothesesSet::getCommonHypoSetHypoType()) ); + else + Dlg->setType( type() ); retrieveParams(); - Dlg->show(); + Dlg->show(); // w/o this Dlg blocks selection Dlg->resize( Dlg->minimumSizeHint() ); + Dlg->exec(); // w/o this we cant wait until edition ends when applying a hypo-set } else { emit finished( QDialog::Accepted ); @@ -671,6 +676,14 @@ SMESHGUI_HypothesisDlg::~SMESHGUI_HypothesisDlg() delete myCreator; } +void SMESHGUI_HypothesisDlg::showEvent(QShowEvent *event) +{ + // resize( minimumSizeHint() ); + // adjustSize(); + + QtxDialog::showEvent( event ); +} + void SMESHGUI_HypothesisDlg::setCustomFrame( QFrame* f ) { if( f ) @@ -779,32 +792,44 @@ HypothesisData::HypothesisData( const QString& theTypeName, { } -HypothesesSet::HypothesesSet( const QString& theSetName ) - : myHypoSetName( theSetName ), - myIsAlgo( false ), - myIsCustom( false ) -{ -} - -HypothesesSet::HypothesesSet( const QString& theSetName, - const QStringList& theHypoList, - const QStringList& theAlgoList ) - : myHypoSetName( theSetName ), - myHypoList( theHypoList ), - myAlgoList( theAlgoList ), +// HypothesesSet::HypothesesSet( const QString& theSetName ) +// : myHypoSetName( theSetName ), +// myIsAlgo( false ), +// myIsCustom( false ) +// { +// } + +HypothesesSet::HypothesesSet( const QString& theSetName, + bool useCommonSize, bool isQuadDominated, + const QStringList& mainHypos, const QStringList& mainAlgos, + const QStringList& altHypos, const QStringList& altAlgos, + const QStringList& intHypos, const QStringList& intAlgos ) + : myUseCommonSize( useCommonSize ), + myQuadDominated( isQuadDominated ), + myHypoSetName( theSetName ), + myHypoList({ mainHypos, altHypos, intHypos }), + myAlgoList({ mainAlgos, altAlgos, intAlgos }), myIsAlgo( false ), - myIsCustom( false ) + myIsCustom( false ), + myIndex( 0 ) { + for ( myHypType = MAIN; myHypType < NB_HYP_TYPES; SMESHUtils::Increment( myHypType )) + for ( int isAlgo = myIsAlgo = 0; isAlgo < 2; myIsAlgo = ++isAlgo ) + { + QStringList& hyps = *list(); + for ( int i = 0; i < hyps.count(); ++i ) + hyps[ i ] = hyps[ i ].trimmed(); + } } -QStringList* HypothesesSet::list(bool is_algo) const +QStringList* HypothesesSet::list( bool is_algo, SetType setType) const { - return const_cast( &( is_algo ? myAlgoList : myHypoList ) ); + return const_cast( &( is_algo ? myAlgoList[setType] : myHypoList[setType] )); } QStringList* HypothesesSet::list() const { - return list( myIsAlgo ); + return list( myIsAlgo, myHypType ); } QString HypothesesSet::name() const @@ -812,23 +837,24 @@ QString HypothesesSet::name() const return myHypoSetName; } -void HypothesesSet::set( bool isAlgo, const QStringList& lst ) -{ - *list(isAlgo) = lst; -} +// void HypothesesSet::set( bool isAlgo, const QStringList& lst ) +// { +// *list(isAlgo) = lst; +// } -int HypothesesSet::count( bool isAlgo ) const -{ - return list(isAlgo)->count(); -} +// int HypothesesSet::count( bool isAlgo, SetType setType ) const +// { +// return list(isAlgo,setType)->count(); +// } -bool HypothesesSet::isAlgo() const -{ - return myIsAlgo; -} +// bool HypothesesSet::isAlgo() const +// { +// return myIsAlgo; +// } -void HypothesesSet::init( bool isAlgo ) +void HypothesesSet::init( bool isAlgo, SetType setType ) { + myHypType = setType; myIsAlgo = isAlgo; myIndex = 0; } @@ -858,16 +884,43 @@ bool HypothesesSet::getIsCustom() const return myIsCustom; } +void HypothesesSet::setAlgoAvailable( SetType type, bool isAvailable ) +{ + if ( MAIN <= type && type < NB_HYP_TYPES ) + myIsAlgoAvailable[ type ] = isAvailable; +} + +bool HypothesesSet::getAlgoAvailable( SetType type ) +{ + bool isAva = false; + if ( MAIN <= type && type < NB_HYP_TYPES ) + isAva = myIsAlgoAvailable[ type ]; + return isAva; +} + +HypothesesSet::SetType HypothesesSet::getPreferredHypType() +{ + SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); + int useAltHypos = !resMgr->booleanValue( "SMESH", "use-meshgems-hypo-sets", false ); + return ( HypothesesSet::SetType ) useAltHypos; +} + int HypothesesSet::maxDim() const { HypothesesSet * thisSet = (HypothesesSet*) this; int dim = -1; - for ( int isAlgo = 0; isAlgo < 2; ++isAlgo ) - { - for ( thisSet->init( isAlgo ); thisSet->more(); thisSet->next() ) - if ( HypothesisData* hypData = SMESH::GetHypothesisData( thisSet->current() )) - for ( int i = 0; i < hypData->Dim.count(); ++i ) - dim = qMax( dim, hypData->Dim[i] ); - } + for ( int setType = 0; setType < 2; ++setType ) + for ( int isAlgo = 0; isAlgo < 2; ++isAlgo ) + { + for ( thisSet->init( isAlgo, SetType( setType )); thisSet->more(); thisSet->next() ) + if ( HypothesisData* hypData = SMESH::GetHypothesisData( thisSet->current() )) + for ( int i = 0; i < hypData->Dim.count(); ++i ) + dim = qMax( dim, hypData->Dim[i] ); + } return dim; } + +const char* HypothesesSet::getCommonHypoSetHypoType() +{ + return "AverageLengthForHypoSet"; +} diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.h b/src/SMESHGUI/SMESHGUI_Hypotheses.h index e75b82262..1543af914 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.h +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.h @@ -158,6 +158,7 @@ public: void setHIcon( const QPixmap& ); void setCustomFrame( QFrame* ); void setType( const QString& ); + void showEvent(QShowEvent *event); protected slots: virtual void accept(); @@ -215,32 +216,53 @@ struct HypothesisData class HypothesesSet { public: - HypothesesSet( const QString& ); - HypothesesSet( const QString&, const QStringList&, const QStringList& ); + + enum SetType { MAIN, ALT, INTERN, NB_HYP_TYPES }; //!< hypos/algos type: main, alternative, internal-edges + + //HypothesesSet( const QString& ); + HypothesesSet( const QString& name, + bool useCommonSize, bool isQuadDominated, + const QStringList& mainHypos, const QStringList& mainAlgos, + const QStringList& altHypos, const QStringList& altAlgos, + const QStringList& intHypos, const QStringList& intAlgos ); QString name() const; - void set( bool, const QStringList& ); - int count( bool ) const; + bool toUseCommonSize() const { return myUseCommonSize; } + bool isQuadDominated() const { return myQuadDominated; } + //int count( bool, SetType ) const; + + int maxDim() const; void setIsCustom( bool ); bool getIsCustom() const; - int maxDim() const; - bool isAlgo() const; + void setAlgoAvailable( SetType type, bool isAvailable ); + bool getAlgoAvailable( SetType type ); + + static SetType getPreferredHypType(); + static const char* getCommonHypoSetHypoType(); + + //bool isAlgo() const; // CASCADE-like iteration - void init( bool ); + void init( bool, SetType ); bool more() const; void next(); QString current() const; private: - QStringList* list(bool) const; + QStringList* list(bool,SetType) const; QStringList* list() const; private: + bool myUseCommonSize; // Average size is asked only and used to create default hypotheses + bool myQuadDominated; QString myHypoSetName; - QStringList myHypoList, myAlgoList; + QStringList myHypoList[3], myAlgoList[3]; // per SetType + bool myIsAlgoAvailable[3]; // current state depending on geometry etc + + // iteration + SetType myHypType; bool myIsAlgo, myIsCustom; int myIndex; }; diff --git a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx index eaaad911c..d752566db 100644 --- a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx +++ b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx @@ -329,8 +329,7 @@ namespace SMESH hypoSet != myListOfHypothesesSets.end(); ++hypoSet ) { HypothesesSet* aSet = *hypoSet; - if ( aSet && ( aSet->count( true ) || aSet->count( false )) && - aSet->maxDim() <= maxDim) + if ( aSet && 0 <= aSet->maxDim() && aSet->maxDim() <= maxDim ) { aSetNameList.append( mangledHypoSetName( aSet )); } diff --git a/src/SMESHGUI/SMESHGUI_MeshDlg.cxx b/src/SMESHGUI/SMESHGUI_MeshDlg.cxx index a1ee4ec9f..159343161 100644 --- a/src/SMESHGUI/SMESHGUI_MeshDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_MeshDlg.cxx @@ -34,6 +34,7 @@ #include // Qt includes +#include #include #include #include @@ -572,9 +573,12 @@ SMESHGUI_MeshDlg::SMESHGUI_MeshDlg( const bool theToCreate, const bool theIsMesh // mesh type QLabel* anMeshTypeLbl = new QLabel( tr( "MESH_TYPE" ), this ); myMeshType = new QComboBox( this ); - + // groups + myCreateGroupsCheck = new QCheckBox( tr( "CREATE_ALL_GROUPS" ), this ); + myCreateGroupsCheck->setChecked( true ); + // Create tab widget - + myTabWg = new QTabWidget( mainFrame() ); myTabs[ Dim0D ] = new SMESHGUI_MeshTab( myTabWg ); myTabs[ Dim1D ] = new SMESHGUI_MeshTab( myTabWg ); @@ -608,9 +612,10 @@ SMESHGUI_MeshDlg::SMESHGUI_MeshDlg( const bool theToCreate, const bool theIsMesh aLay->addWidget( objectWg( Geom, Control ), 2, 2 ); aLay->addWidget( anMeshTypeLbl, 3, 0 ); aLay->addWidget( myMeshType, 3, 2 ); - aLay->addWidget( myTabWg, 5, 0, 1, 3 ); - aLay->addWidget( myHypoSetButton, 6, 0, 1, 3 ); - aLay->setRowMinimumHeight( 3, 20 ); + aLay->addWidget( myCreateGroupsCheck, 4, 0, 1, 3 ); + aLay->addWidget( myTabWg, 6, 0, 1, 3 ); + aLay->addWidget( myHypoSetButton, 7, 0, 1, 3 ); + aLay->setRowMinimumHeight( 4, 20 ); myMeshType->clear(); @@ -658,7 +663,7 @@ void SMESHGUI_MeshDlg::setTitile( const bool theToCreate, const bool theIsMesh ) { setWindowTitle( tr( theIsMesh ? "EDIT_MESH" : "EDIT_SUBMESH") ); } - + myCreateGroupsCheck-> setVisible( theToCreate && theIsMesh ); } //================================================================================ @@ -916,3 +921,14 @@ void SMESHGUI_MeshDlg::setCurrentMeshType( const int theIndex ) else myMeshType->setCurrentIndex( 0 ); } + +//================================================================================ +/*! + * \brief Return state of "Create all Groups on Geometry" check-box + */ +//================================================================================ + +bool SMESHGUI_MeshDlg::toCreateAllGroups() +{ + return myCreateGroupsCheck->isChecked(); +} diff --git a/src/SMESHGUI/SMESHGUI_MeshDlg.h b/src/SMESHGUI/SMESHGUI_MeshDlg.h index 3dd5b0697..1cfb8762f 100644 --- a/src/SMESHGUI/SMESHGUI_MeshDlg.h +++ b/src/SMESHGUI/SMESHGUI_MeshDlg.h @@ -37,14 +37,15 @@ #include #include -class SMESHGUI_MeshTab; class QAction; +class QCheckBox; class QComboBox; class QListWidget; class QMenu; class QTabWidget; class QToolButton; class QtxToolButton; +class SMESHGUI_MeshTab; /*! * \brief Dialog for mech creation or editing @@ -84,6 +85,8 @@ public: void setCurrentMeshType( const int ); int currentMeshType(); + bool toCreateAllGroups(); + signals: void hypoSet( const QString& ); void geomSelectionByMesh( bool ); @@ -101,6 +104,7 @@ private slots: QToolButton* myHypoSetButton; QMenu* myGeomPopup; QComboBox* myMeshType; + QCheckBox* myCreateGroupsCheck; }; /*! diff --git a/src/SMESHGUI/SMESHGUI_MeshOp.cxx b/src/SMESHGUI/SMESHGUI_MeshOp.cxx index 443a8a86f..e232e408f 100644 --- a/src/SMESHGUI/SMESHGUI_MeshOp.cxx +++ b/src/SMESHGUI/SMESHGUI_MeshOp.cxx @@ -27,6 +27,7 @@ #include "SMESHGUI.h" #include "SMESHGUI_GEOMGenUtils.h" +#include "SMESHGUI_GroupOnShapeDlg.h" #include "SMESHGUI_Hypotheses.h" #include "SMESHGUI_HypothesesUtils.h" #include "SMESHGUI_MeshDlg.h" @@ -34,26 +35,30 @@ #include "SMESHGUI_ShapeByMeshDlg.h" #include "SMESHGUI_Utils.h" #include "SMESH_NumberFilter.hxx" +#include "SMESH_TypeDefs.hxx" #include "SMESH_TypeFilter.hxx" +#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis) + // SALOME GEOM includes -#include #include -#include -#include #include +#include +#include +#include // SALOME GUI includes -#include -#include #include #include #include +#include +#include #include #include +#include #include -#include -#include +#include +#include // SALOME KERNEL includes #include @@ -62,16 +67,16 @@ #include // Qt includes -#include -#include #include +#include +#include // OCCT includes -#include -#include -#include -#include #include +#include +#include +#include +#include //================================================================================ /*! @@ -183,6 +188,8 @@ bool SMESHGUI_MeshOp::onApply() SUIT_MessageBox::warning( myDlg, tr( "SMESH_ERROR" ), aMess ); } + myHypoSet = 0; + return aResult; } @@ -257,6 +264,7 @@ void SMESHGUI_MeshOp::startOperation() selectionDone(); + myHypoSet = 0; myHasConcurrentSubBefore = false; myObjectToSelect.clear(); } @@ -1022,8 +1030,9 @@ void SMESHGUI_MeshOp::existingHyps( const int theDim, */ //================================================================================ SMESH::SMESH_Hypothesis_var -SMESHGUI_MeshOp::getInitParamsHypothesis( const QString& aHypType, - const QString& aServerLib ) const +SMESHGUI_MeshOp::getInitParamsHypothesis( const QString& aHypType, + const QString& aServerLib, + const SMESH::HypInitParams* aParams ) const { if ( aHypType.isEmpty() || aServerLib.isEmpty() ) return SMESH::SMESH_Hypothesis::_nil(); @@ -1083,18 +1092,42 @@ SMESHGUI_MeshOp::getInitParamsHypothesis( const QString& aHypType, } } + SMESH::HypInitParams initParams; + enum { BY_MESH, BY_GEOM, BY_AVERAGE_LENGTH }; // same as ::SMESH_Hypothesis::InitWay + if ( aParams ) + { + initParams = *aParams; + } + else + { + initParams.way = isSubMesh ? BY_MESH : BY_GEOM; + } + SMESH::SMESH_Hypothesis_var hyp = SMESHGUI::GetSMESHGen()->GetHypothesisParameterValues( aHypType.toUtf8().data(), aServerLib.toUtf8().data(), aMesh, aGeomVar, - /*byMesh = */isSubMesh); - if ( hyp->_is_nil() && isSubMesh ) + initParams ); + if ( hyp->_is_nil() && initParams.way == BY_MESH ) + { + initParams.way = BY_GEOM; + hyp = SMESHGUI::GetSMESHGen()->GetHypothesisParameterValues( aHypType.toLatin1().data(), + aServerLib.toUtf8().data(), + aMesh, + aGeomVar, + initParams ); + } + if ( hyp->_is_nil() && initParams.way == BY_GEOM ) + { + initParams.way = BY_AVERAGE_LENGTH; + initParams.averageLength = 1.; hyp = SMESHGUI::GetSMESHGen()->GetHypothesisParameterValues( aHypType.toLatin1().data(), aServerLib.toUtf8().data(), aMesh, aGeomVar, - /*byMesh = */false); + initParams ); + } return hyp; } @@ -1221,25 +1254,14 @@ namespace //================================================================================ /*! - * Create hypothesis and update dialog. - * \param theDim - dimension of hypothesis to be created - * \param theType - hypothesis category (algorithm, hypothesis, additional hypothesis) - * \param theTypeName - specifies hypothesis to be created + * \brief Return names of all existing hypotheses */ //================================================================================ -void SMESHGUI_MeshOp::createHypothesis(const int theDim, - const int theType, - const QString& theTypeName) -{ - HypothesisData* aData = SMESH::GetHypothesisData(theTypeName); - if (!aData) - return; - - myDim = theDim; - myType = theType; - // get a unique hyp name +QStringList SMESHGUI_MeshOp::getHypoNames() +{ QStringList aHypNames; + TDim2Type2HypList::const_iterator aDimIter = myExistingHyps.begin(); for ( ; aDimIter != myExistingHyps.end(); aDimIter++) { const TType2HypList& aType2HypList = aDimIter.value(); @@ -1254,7 +1276,30 @@ void SMESHGUI_MeshOp::createHypothesis(const int theDim, } } } - QString aHypName = GetUniqueName( aHypNames, aData->Label); + return aHypNames; +} + +//================================================================================ +/*! + * Create hypothesis and update dialog. + * \param theDim - dimension of hypothesis to be created + * \param theType - hypothesis category (algorithm, hypothesis, additional hypothesis) + * \param theTypeName - specifies hypothesis to be created + */ +//================================================================================ +void SMESHGUI_MeshOp::createHypothesis(const int theDim, + const int theType, + const QString& theTypeName) +{ + HypothesisData* aData = SMESH::GetHypothesisData(theTypeName); + if (!aData) + return; + + myDim = theDim; + myType = theType; + + // get a unique hyp name + QString aHypName = GetUniqueName( getHypoNames(), aData->Label); // existing hypos bool dialog = false; @@ -1655,6 +1700,179 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex, return; } +//================================================================================ +/*! + * \brief Create a sub-mesh on internal edges in the case where the global algorithm + * is of type 1D-2D[-3D] so that the internal edges would remain not meshed. + */ +//================================================================================ + +void SMESHGUI_MeshOp::createSubMeshOnInternalEdges( SMESH::SMESH_Mesh_ptr theMesh, + GEOM::GEOM_Object_ptr theMainShape ) +{ + if ( theMesh->_is_nil() || theMainShape->_is_nil() ) + return; + + if ( isAccessibleDim( 1 )) + return; // global 1D algorithm is/can be assigned + + const HypothesesSet::SetType internSet = HypothesesSet::INTERN; + bool toCreate = true; + bool toCreateMandatory = ( myHypoSet && + myAverageSize > 0 && + ( myHypoSet->init( /*algo=*/ true, internSet ), myHypoSet->more()) && + ( myHypoSet->init( /*algo=*/false, internSet ), myHypoSet->more())); + if ( !toCreateMandatory ) // ask the user + toCreate = false; // can't pass both mesh and geometry to Create Submesh operation (so far?) + // toCreate = SUIT_MessageBox::warning( SMESHGUI::desktop(), + // QObject::tr("SMESH_WRN_WARNING"), + // QObject::tr("SMESH_CREATE_SUBMESH_ON_INTERNAL_EDGES"), + // QObject::tr("SMESH_BUT_YES"), + // QObject::tr("SMESH_BUT_NO"), 1, 0); + if ( !toCreate ) + return; + + TopoDS_Shape shape; + if ( !GEOMBase::GetShape( theMainShape, shape )) + return; + + std::vector< TopoDS_Shape > internalEdges; + for ( TopExp_Explorer edge( shape, TopAbs_EDGE, TopAbs_WIRE ); edge.More(); edge.Next() ) + internalEdges.push_back( edge.Current() ); + + if ( internalEdges.empty() ) + return; + + TopTools_IndexedMapOfShape shapeIDs; + TopExp::MapShapes( shape, shapeIDs ); + + std::set< int > intIDSet; + for ( size_t i = 0; i < internalEdges.size(); ++i ) + intIDSet.insert( shapeIDs.FindIndex( internalEdges[ i ])); + + GEOM::GEOM_Gen_var geomGen = SMESH::GetGEOMGen(); + if (geomGen->_is_nil()) return; + + GEOM::GEOM_Object_var edgeGroup; + GEOM::GEOM_IShapesOperations_wrap sOp = geomGen->GetIShapesOperations(); + GEOM::GEOM_IGroupOperations_wrap gOp = geomGen->GetIGroupOperations(); + GEOM::ListOfGO_var geomGroups = sOp->GetExistingSubObjects( theMainShape, + /*groupsOnly=*/true ); + for ( CORBA::ULong i = 0; i < geomGroups->length(); ++i ) + { + GEOM::ListOfLong_var ids = gOp->GetObjects( geomGroups[ i ]); + std::set< int > idSet( & ids[0], & ids[0] + ids->length() ); + if ( idSet == intIDSet ) + { + edgeGroup = geomGroups[ i ]; + break; + } + } + + if ( edgeGroup->_is_nil() ) + { + GEOM::GEOM_Object_var edgeGroup = gOp->CreateGroup( theMainShape, TopAbs_EDGE ); + + GEOM::ListOfLong_var edgeIDs = new GEOM::ListOfLong; + edgeIDs->length( internalEdges.size() ); + std::set< int >::iterator id = intIDSet.begin(); + for ( size_t i = 0; i < intIDSet.size(); ++i, ++id ) + edgeIDs[ i ] = *id; + gOp->UnionIDs( edgeGroup, edgeIDs ); + + SALOMEDS::SObject_wrap so = geomGen->AddInStudy( edgeGroup, "Internal edges", theMainShape ); + } + + if ( !toCreateMandatory ) + { + // show Create Sub-mesh dislog + // _PTR(SObject) aMeshSO = SMESH::FindSObject( theMesh ); + // selectionMgr()->clearFilters(); + // selectObject( pSubmesh ); + // SMESHGUI::GetSMESHGUI()->switchToOperation( SMESHOp::OpEditMeshOrSubMesh ); + return; + } + + // create a sub-mesh using myAverageSize w/o GUI + + SMESH::SMESH_subMesh_var subMesh = theMesh->GetSubMesh( edgeGroup, "" ); + + for ( int isAlgo = 1; isAlgo >= 0; --isAlgo ) + for ( myHypoSet->init( isAlgo, internSet ); myHypoSet->more(); myHypoSet->next() ) + { + QString aHypoTypeName = myHypoSet->current(); + HypothesisData* aHypData = SMESH::GetHypothesisData( aHypoTypeName ); + if ( !aHypData ) + continue; + + myDim = aHypData->Dim[0]; + if ( myDim != 1 ) + continue; + + // create or/and set + SMESH::SMESH_Hypothesis_var newHypo; + if ( isAlgo ) + { + myAvailableHypData[ myDim ][ Algo ].clear(); + myAvailableHypData[ myDim ][ Algo ] << aHypData; + QStringList hypList; hypList << aHypoTypeName; + myDlg->tab( myDim )->setAvailableHyps( Algo, hypList ); + setCurrentHyp( myDim, Algo, 0 ); + newHypo = getAlgo( myDim ); + } + else + { + SMESH::HypInitParams params = { 2, myAverageSize, false }; + newHypo = getInitParamsHypothesis( aHypData->TypeName, aHypData->ServerLibName, & params ); + QString hypName = GetUniqueName( getHypoNames(), aHypData->Label ); + SALOMEDS::SObject_wrap so = + SMESHGUI::GetSMESHGen()->PublishInStudy( SALOMEDS::SObject::_nil(), newHypo, + hypName.toUtf8().data() ); + } + SMESH::AddHypothesisOnSubMesh( subMesh, newHypo ); + } + + return; +} + +//================================================================================ +/*! + * \brief Ask the user to enter an average size which will be used to create + * hypotheses of a hypo-set basing on this size + * \param [out] averageSize - average element size + * \return bool - false if the user canceled the dialog + */ +//================================================================================ + +bool SMESHGUI_MeshOp::getAverageSize( double & averageSize ) +{ + HypothesisData* hypData = SMESH::GetHypothesisData( "MaxLength" ); + if ( !hypData ) + return false; + + SMESH::SMESH_Hypothesis_var hyp = getInitParamsHypothesis( hypData->TypeName, + hypData->ServerLibName ); + if ( hyp->_is_nil() ) + return false; + + SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator( hypData->TypeName ); + if ( !aCreator ) + return false; + + initHypCreator( aCreator ); + myDlg->setEnabled( false ); + + aCreator->edit( hyp.in(), HypothesesSet::getCommonHypoSetHypoType(), + dlg(), this, SLOT( onHypoEdited( int ))); + + StdMeshers::StdMeshers_MaxLength_var lenHyp = StdMeshers::StdMeshers_MaxLength::_narrow( hyp ); + if ( lenHyp->_is_nil() ) + return false; + + averageSize = lenHyp->GetLength(); + return true; +} + //================================================================================ /*! * \brief Creates and selects hypothesis of hypotheses set @@ -1664,6 +1882,7 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex, void SMESHGUI_MeshOp::onHypoSet( const QString& theSetName ) { HypothesesSet* aHypoSet = SMESH::GetHypothesesSet(theSetName); + myHypoSet = aHypoSet; if (!aHypoSet) return; @@ -1676,38 +1895,68 @@ void SMESHGUI_MeshOp::onHypoSet( const QString& theSetName ) onAlgoSelected( -1, dim ); } + HypothesesSet::SetType setType = aHypoSet->getPreferredHypType(); + if ( !aHypoSet->getAlgoAvailable( setType )) + { + setType = setType == HypothesesSet::ALT ? HypothesesSet::MAIN : HypothesesSet::ALT; + if ( !aHypoSet->getAlgoAvailable( setType )) + return; + } + + myAverageSize = -1; + if ( aHypoSet->toUseCommonSize() && !getAverageSize( myAverageSize )) + return; + for ( int isAlgo = 1; isAlgo >= 0; --isAlgo ) - for ( aHypoSet->init( isAlgo ); aHypoSet->more(); aHypoSet->next() ) + for ( aHypoSet->init( isAlgo, setType ); aHypoSet->more(); aHypoSet->next() ) { QString aHypoTypeName = aHypoSet->current(); HypothesisData* aHypData = SMESH::GetHypothesisData( aHypoTypeName ); if (!aHypData) continue; - int aDim = aHypData->Dim[0]; + myDim = aHypData->Dim[0]; // create or/and set if ( isAlgo ) { - int index = myAvailableHypData[aDim][Algo].indexOf( aHypData ); + int index = myAvailableHypData[myDim][Algo].indexOf( aHypData ); if ( index >= 0 ) { - setCurrentHyp( aDim, Algo, index ); - onAlgoSelected( index, aDim ); + setCurrentHyp( myDim, Algo, index ); + onAlgoSelected( index, myDim ); } } else { - bool mainHyp = true; - int index = myAvailableHypData[aDim][MainHyp].indexOf( aHypData ); + myType = MainHyp; + int index = myAvailableHypData[myDim][MainHyp].indexOf( aHypData ); if ( index < 0 ) { - mainHyp = false; - index = myAvailableHypData[aDim][AddHyp].indexOf( aHypData ); + myType = AddHyp; + index = myAvailableHypData[myDim][AddHyp].indexOf( aHypData ); } if ( index >= 0 ) - createHypothesis( aDim, mainHyp ? MainHyp : AddHyp, aHypoTypeName ); + { + if ( myAverageSize > 0 ) + { + SMESH::HypInitParams params = { 2, myAverageSize, aHypoSet->isQuadDominated() }; + SMESH::SMESH_Hypothesis_var hyp = + getInitParamsHypothesis( aHypData->TypeName, aHypData->ServerLibName, & params ); + + QString hypName = GetUniqueName( getHypoNames(), aHypData->Label ); + SALOMEDS::SObject_wrap so = + SMESHGUI::GetSMESHGen()->PublishInStudy( SALOMEDS::SObject::_nil(), hyp, + hypName.toUtf8().data() ); + onHypoCreated(2); + } + else + { + createHypothesis( myDim, myType, aHypoTypeName ); + } + } } } + return; } @@ -1755,7 +2004,7 @@ bool SMESHGUI_MeshOp::createMesh( QString& theMess, QStringList& theEntryList ) namePrefix += "_"; } QStringList::Iterator it = aList.begin(); - for ( int i = 0; it!=aList.end(); it++, ++i ) + for ( int i = 0; it != aList.end(); it++, ++i ) { QString aGeomEntry = *it; _PTR(SObject) pGeom = SMESH::getStudy()->FindObjectID( aGeomEntry.toUtf8().data() ); @@ -1801,7 +2050,34 @@ bool SMESHGUI_MeshOp::createMesh( QString& theMess, QStringList& theEntryList ) if ( !anAlgoVar->_is_nil() ) SMESH::AddHypothesisOnMesh( aMesh, anAlgoVar ); } + + + if ( myDlg->toCreateAllGroups() && !aGeomVar->_is_nil() ) + { + // Create groups on all geom groups + + GEOM::GEOM_Gen_var geomGen = SMESH::GetGEOMGen(); + GEOM::GEOM_IShapesOperations_wrap op = geomGen->GetIShapesOperations(); + GEOM::ListOfGO_var geomGroups = op->GetExistingSubObjects( aGeomVar, + /*groupsOnly=*/true ); + SMESH::SMESH_GroupOnGeom_var meshGroup; + for ( CORBA::ULong iG = 0; iG < geomGroups->length(); ++iG ) + { + SMESH::ElementType elemType = SMESHGUI_GroupOnShapeOp::ElementType( geomGroups[ iG ] ); + if ( elemType == SMESH::ALL ) + continue; + + CORBA::String_var name = geomGroups[ iG ]->GetName(); + meshGroup = aMesh->CreateGroupFromGEOM( elemType, name, geomGroups[ iG ]); + if ( elemType != SMESH::NODE ) + meshGroup = aMesh->CreateGroupFromGEOM( SMESH::NODE, name, geomGroups[ iG ]); + } + } + + createSubMeshOnInternalEdges( aMesh, aGeomVar ); + } + return true; } @@ -2435,6 +2711,12 @@ bool SMESHGUI_MeshOp::editMeshOrSubMesh( QString& theMess ) } } + if ( aSubMeshVar->_is_nil() ) + { + GEOM::GEOM_Object_var mainGeom = aMesh->GetShapeToMesh(); + createSubMeshOnInternalEdges( aMesh, mainGeom ); + } + myHasConcurrentSubBefore = checkSubMeshConcurrency( aMesh, aSubMeshVar, /*askUser=*/!myHasConcurrentSubBefore ); @@ -2635,23 +2917,29 @@ void SMESHGUI_MeshOp::updateHypoSets() for ( ; inHypoSetName != aHypothesesSetsList.end(); ++inHypoSetName ) { HypothesesSet* currentHypoSet = SMESH::GetHypothesesSet( *inHypoSetName ); - bool isAvailable = false; - for ( currentHypoSet->init( true ); currentHypoSet->more(); currentHypoSet->next() ) + HypothesesSet::SetType sType; + for ( sType = HypothesesSet::MAIN; sType <= HypothesesSet::ALT; SMESHUtils::Increment( sType )) { - isAvailable = false; - if ( HypothesisData* algoDataIn = SMESH::GetHypothesisData( currentHypoSet->current() )) { - for (int i = SMESH::DIM_0D; i <= myMaxShapeDim; i++) { - int aCurrentAvailableAlgo = myAvailableHypData[i][Algo].indexOf( algoDataIn ); - if ( aCurrentAvailableAlgo > -1 ) { - isAvailable = true; - break; + bool isAvailable = false; + for ( currentHypoSet->init( true, sType ); currentHypoSet->more(); currentHypoSet->next() ) + { + isAvailable = false; + if ( HypothesisData* algoDataIn = SMESH::GetHypothesisData( currentHypoSet->current() )) { + for ( int dim = SMESH::DIM_0D; dim <= myMaxShapeDim; dim++) { + int aCurrentAvailableAlgo = myAvailableHypData[dim][Algo].indexOf( algoDataIn ); + if ( aCurrentAvailableAlgo > -1 ) { + isAvailable = true; + break; + } } + if ( !isAvailable ) + break; } - if ( !isAvailable ) - break; } + currentHypoSet->setAlgoAvailable( sType, isAvailable ); } - if ( isAvailable ) + if ( currentHypoSet->getAlgoAvailable( HypothesesSet::MAIN ) || + currentHypoSet->getAlgoAvailable( HypothesesSet::ALT )) aFilteredHypothesesSetsList.append( *inHypoSetName ); } myDlg->setHypoSets( aFilteredHypothesesSetsList ); diff --git a/src/SMESHGUI/SMESHGUI_MeshOp.h b/src/SMESHGUI/SMESHGUI_MeshOp.h index d93e4a12e..1a117d53f 100644 --- a/src/SMESHGUI/SMESHGUI_MeshOp.h +++ b/src/SMESHGUI/SMESHGUI_MeshOp.h @@ -121,6 +121,8 @@ private: bool createMesh( QString&, QStringList& ); bool createSubMesh( QString&, QStringList& ); bool editMeshOrSubMesh( QString& ); + void createSubMeshOnInternalEdges( SMESH::SMESH_Mesh_ptr mesh, + GEOM::GEOM_Object_ptr mainShape ); bool checkSubMeshConcurrency( SMESH::SMESH_Mesh_ptr mesh, SMESH::SMESH_subMesh_ptr submesh, bool askUser=false); @@ -137,8 +139,10 @@ private: int find( const SMESH::SMESH_Hypothesis_var&, const THypList& ) const; SMESH::SMESH_Hypothesis_var getInitParamsHypothesis( const QString&, - const QString& ) const; + const QString&, + const SMESH::HypInitParams* prm=0) const; void initHypCreator( SMESHGUI_GenericHypothesisCreator* aCreator ); + bool getAverageSize( double & averageSize ); bool isSubshapeOk() const; char* isSubmeshIgnored() const; _PTR(SObject) getSubmeshByGeom() const; @@ -146,6 +150,7 @@ private: void updateMeshTypeList(); void updateHypoSets(); void setFilteredAlgoData(); + QStringList getHypoNames(); private: @@ -172,6 +177,9 @@ private: bool myIgnoreAlgoSelection; int myDim, myType, myMaxShapeDim; + HypothesesSet* myHypoSet; // applied hypo-set + double myAverageSize; // entered at hypo-set processing + QString myObjectToSelect; }; diff --git a/src/SMESHGUI/SMESHGUI_XmlHandler.cxx b/src/SMESHGUI/SMESHGUI_XmlHandler.cxx index 823032fca..3993633be 100644 --- a/src/SMESHGUI/SMESHGUI_XmlHandler.cxx +++ b/src/SMESHGUI/SMESHGUI_XmlHandler.cxx @@ -201,14 +201,26 @@ bool SMESHGUI_XmlHandler::startElement (const QString&, const QString&, { if (atts.value("name") != "") { - QString hypos = atts.value("hypos").remove( ' ' ); - QString algos = atts.value("algos").remove( ' ' ); + bool useCommonSize = ( atts.value("use-common-size") == "true" ); + bool isQuadDominated = ( atts.value("quad-dominated") == "true" ); + QString hypos = atts.value("hypos"); + QString algos = atts.value("algos"); + QString altHypos = atts.value("alt-hypos"); + QString altAlgos = atts.value("alt-algos"); + QString intHypos = atts.value("intern-edge-hypos"); + QString intAlgos = atts.value("intern-edge-algos"); bool badSet = hypos.contains( BAD_HYP_FLAG ) || algos.contains( BAD_HYP_FLAG ); if ( !badSet ) - myListOfHypothesesSets.append( new HypothesesSet ( atts.value("name"), - hypos.split( ',', QString::SkipEmptyParts ), - algos.split( ',', QString::SkipEmptyParts ) ) ); + myListOfHypothesesSets.append + ( new HypothesesSet ( atts.value("name"), + useCommonSize, isQuadDominated, + hypos.split ( ',', QString::SkipEmptyParts ), + algos.split ( ',', QString::SkipEmptyParts ), + altHypos.split( ',', QString::SkipEmptyParts ), + altAlgos.split( ',', QString::SkipEmptyParts ), + intHypos.split( ',', QString::SkipEmptyParts ), + intAlgos.split( ',', QString::SkipEmptyParts ))); } } else if ( qName == "python-wrap" || diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index 725431f1c..a998e9d1d 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -4659,6 +4659,10 @@ Please, create VTK viewer and try again PREF_NB_SEGMENTS Default Number of Segments + + PREF_USE_MESHGEMS_HYPOSET + Use MeshGems meshers when assigning set of hypotheses + SMESH_PREF_MESH_LOADING Mesh loading @@ -6516,6 +6520,10 @@ Please specify them and try again NAME Name + + CREATE_ALL_GROUPS + Create all Groups on Geometry + SMESHGUI_MeshOp @@ -8480,4 +8488,11 @@ red in the Object Browser. Option value + + SMESHGUI_GenericHypothesisCreator + + AverageLengthForHypoSet + Mean Size + + diff --git a/src/SMESH_I/SMESH_Gen_i.cxx b/src/SMESH_I/SMESH_Gen_i.cxx index aa3564d27..2b0e5d30c 100644 --- a/src/SMESH_I/SMESH_Gen_i.cxx +++ b/src/SMESH_I/SMESH_Gen_i.cxx @@ -764,14 +764,16 @@ SMESH::SMESH_Hypothesis_ptr SMESH_Gen_i::CreateHypothesis( const char* theHypNam //================================================================================ SMESH::SMESH_Hypothesis_ptr -SMESH_Gen_i::GetHypothesisParameterValues (const char* theHypType, - const char* theLibName, - SMESH::SMESH_Mesh_ptr theMesh, - GEOM::GEOM_Object_ptr theGeom, - CORBA::Boolean byMesh) +SMESH_Gen_i::GetHypothesisParameterValues (const char* theHypType, + const char* theLibName, + SMESH::SMESH_Mesh_ptr theMesh, + GEOM::GEOM_Object_ptr theGeom, + const SMESH::HypInitParams& theParams) throw ( SALOME::SALOME_Exception ) { Unexpect aCatch(SALOME_SalomeException); + + const bool byMesh = ( theParams.way == ::SMESH_Hypothesis::BY_MESH ); if ( byMesh && CORBA::is_nil( theMesh ) ) return SMESH::SMESH_Hypothesis::_nil(); if ( byMesh && CORBA::is_nil( theGeom ) ) @@ -826,17 +828,23 @@ SMESH_Gen_i::GetHypothesisParameterValues (const char* theHypType, if ( hyp->SetParametersByMesh( mesh, shape )) return SMESH::SMESH_Hypothesis::_duplicate( tmpHyp ); } - else { - double diagonal = 0; - if ( mesh ) - diagonal = mesh->GetShapeDiagonalSize(); - else - diagonal = ::SMESH_Mesh::GetShapeDiagonalSize( shape ); + else + { ::SMESH_Hypothesis::TDefaults dflts; - dflts._elemLength = diagonal / myGen.GetBoundaryBoxSegmentation(); - dflts._nbSegments = myGen.GetDefaultNbSegments(); - dflts._shape = &shape; - // let the temporary hypothesis initialize it's values + dflts._way = ( ::SMESH_Hypothesis::InitWay) theParams.way; + dflts._nbSegments = myGen.GetDefaultNbSegments(); + dflts._elemLength = theParams.averageLength; + dflts._quadDominated = theParams.quadDominated; + if ( theParams.way == ::SMESH_Hypothesis::BY_GEOM ) + { + if ( mesh ) + dflts._diagonal = mesh->GetShapeDiagonalSize(); + else + dflts._diagonal = ::SMESH_Mesh::GetShapeDiagonalSize( shape ); + dflts._elemLength = dflts._diagonal / myGen.GetBoundaryBoxSegmentation(); + dflts._shape = &shape; + } + // let the hypothesis initialize it's values if ( hyp->SetParametersByDefaults( dflts, mesh )) return SMESH::SMESH_Hypothesis::_duplicate( tmpHyp ); } diff --git a/src/SMESH_I/SMESH_Gen_i.hxx b/src/SMESH_I/SMESH_Gen_i.hxx index 3338b41dc..ec800b965 100644 --- a/src/SMESH_I/SMESH_Gen_i.hxx +++ b/src/SMESH_I/SMESH_Gen_i.hxx @@ -164,11 +164,11 @@ public: throw ( SALOME::SALOME_Exception ); // Return hypothesis of given type holding parameter values of the existing mesh - SMESH::SMESH_Hypothesis_ptr GetHypothesisParameterValues (const char* theHypType, - const char* theLibName, - SMESH::SMESH_Mesh_ptr theMesh, - GEOM::GEOM_Object_ptr theGeom, - CORBA::Boolean byMesh) + SMESH::SMESH_Hypothesis_ptr GetHypothesisParameterValues (const char* theHypType, + const char* theLibName, + SMESH::SMESH_Mesh_ptr theMesh, + GEOM::GEOM_Object_ptr theGeom, + const SMESH::HypInitParams& theWay) throw ( SALOME::SALOME_Exception ); /* diff --git a/src/SMESH_I/SMESH_Gen_i_1.cxx b/src/SMESH_I/SMESH_Gen_i_1.cxx index af7abc3d5..8cf5586ce 100644 --- a/src/SMESH_I/SMESH_Gen_i_1.cxx +++ b/src/SMESH_I/SMESH_Gen_i_1.cxx @@ -839,21 +839,25 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishGroup (SMESH::SMESH_Mesh_ptr theMesh, SetName( aRootSO, aRootNames[aType] ); // Add new group to corresponding sub-tree - int isEmpty = false; + int isEmpty = ( theMesh->NbNodes() == 0 ); std::string pm[2] = { "ICON_SMESH_TREE_GROUP", "ICON_SMESH_TREE_MESH_WARN" }; - if ( SMESH::DownCast< SMESH_GroupOnFilter_i* > ( theGroup )) - { - pm[0] = "ICON_SMESH_TREE_GROUP_ON_FILTER"; - } - else if ( SMESH::DownCast< SMESH_Group_i* > ( theGroup )) + if ( !isEmpty ) { - if ( theGroup->GetType() == SMESH::NODE ) - isEmpty = ( theMesh->NbNodes() == 0 ); - else + if ( SMESH::DownCast< SMESH_GroupOnFilter_i* > ( theGroup )) // on filter { - SMESH::array_of_ElementType_var allElemTypes = theMesh->GetTypes(); - for ( size_t i =0; i < allElemTypes->length() && isEmpty; ++i ) - isEmpty = ( allElemTypes[i] != theGroup->GetType() ); + pm[0] = "ICON_SMESH_TREE_GROUP_ON_FILTER"; + + if ( theGroup->GetType() != SMESH::NODE ) + { + isEmpty = true; + SMESH::array_of_ElementType_var allElemTypes = theMesh->GetTypes(); + for ( size_t i =0; i < allElemTypes->length() && isEmpty; ++i ) + isEmpty = ( allElemTypes[i] != theGroup->GetType() ); + } + } + else // standalone or on geometry + { + isEmpty = ( theGroup->Size() == 0 ); } } aGroupSO = publish ( theGroup, aRootSO, 0, pm[isEmpty].c_str() ); @@ -873,14 +877,14 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishGroup (SMESH::SMESH_Mesh_ptr theMesh, //======================================================================= //function : PublishHypothesis -//purpose : +//purpose : //======================================================================= SALOMEDS::SObject_ptr - SMESH_Gen_i::PublishHypothesis (SMESH::SMESH_Hypothesis_ptr theHyp, - const char* theName) +SMESH_Gen_i::PublishHypothesis (SMESH::SMESH_Hypothesis_ptr theHyp, + const char* theName) { - if(MYDEBUG) MESSAGE("PublishHypothesis") + if(MYDEBUG) MESSAGE("PublishHypothesis"); if ( !myIsEnablePublish ) return SALOMEDS::SObject::_nil(); if (theHyp->_is_nil()) diff --git a/src/SMESH_SWIG/StdMeshersBuilder.py b/src/SMESH_SWIG/StdMeshersBuilder.py index 858820238..0c4241384 100644 --- a/src/SMESH_SWIG/StdMeshersBuilder.py +++ b/src/SMESH_SWIG/StdMeshersBuilder.py @@ -174,10 +174,11 @@ class StdMeshersBuilder_Segment(Mesh_Algorithm): hyp.SetLength(length) if not UseExisting: # set preestimated length + import SMESH gen = self.mesh.smeshpyD initHyp = gen.GetHypothesisParameterValues("MaxLength", "libStdMeshersEngine.so", self.mesh.GetMesh(), self.mesh.GetShape(), - False) # <- byMesh + SMESH.HypInitParams( 1, 1.0, False )) preHyp = initHyp._narrow(StdMeshers.StdMeshers_MaxLength) if preHyp: hyp.SetPreestimatedLength( preHyp.GetPreestimatedLength() ) diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index df65f685f..e843ff168 100644 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -1250,6 +1250,27 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ): return hyp + def GetHypothesisParameterValues( self, hypType, libName, mesh, shape, initParams ): + """ + Create hypothesis initialized according to parameters + + Parameters: + hypType (string): hypothesis type + libName (string): plug-in library name + mesh: optional mesh by which a hypotheses can initialize self + shape: optional geometry by size of which a hypotheses can initialize self + initParams: structure SMESH.HypInitParams defining how to initialize a hypothesis + + Returns: + created hypothesis instance + """ + if isinstance( mesh, Mesh ): + mesh = mesh.GetMesh() + if isinstance( initParams, (bool,int)): + initParams = SMESH.HypInitParams( not initParams, 1.0, not mesh ) + return SMESH._objref_SMESH_Gen.GetHypothesisParameterValues(self, hypType, libName, + mesh, shape, initParams ) + def GetMeshInfo(self, obj): """ Get the mesh statistic. diff --git a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx index dc1f6b19e..d477b2fc6 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx @@ -841,7 +841,7 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const item.myName = tr("SMESH_USE_PREESTIMATED_LENGTH"); p.append( item ); QCheckBox* aQCheckBox = new QCheckBox(dlg()); - if ( !noPreestimatedAtEdition && h->HavePreestimatedLength() ) { + if ( h->HavePreestimatedLength() ) { aQCheckBox->setChecked( h->GetUsePreestimatedLength() ); connect( aQCheckBox, SIGNAL( stateChanged(int) ), this, SLOT( onValueChanged() ) ); } diff --git a/src/StdMeshersGUI/StdMeshers_images.ts b/src/StdMeshersGUI/StdMeshers_images.ts index 36489516b..681bf7bed 100644 --- a/src/StdMeshersGUI/StdMeshers_images.ts +++ b/src/StdMeshersGUI/StdMeshers_images.ts @@ -183,6 +183,14 @@ ICON_SMESH_TREE_HYPO_Geometric1D mesh_tree_hypo_length.png + + ICON_SMESH_TREE_HYPO_ImportSource1D + mesh_tree_hypo_import_source_1d.png + + + ICON_SMESH_TREE_HYPO_ImportSource2D + mesh_tree_hypo_import_source_2d.png + ICON_SMESH_TREE_HYPO_AutomaticLength mesh_tree_hypo_length.png @@ -191,6 +199,10 @@ ICON_SMESH_TREE_HYPO_Deflection1D mesh_tree_hypo_length.png + + ICON_SMESH_TREE_HYPO_FixedPoints1D + mesh_tree_hypo_length.png + ICON_SMESH_TREE_HYPO_Adaptive1D mesh_tree_hypo_length.png @@ -199,6 +211,10 @@ ICON_SMESH_TREE_HYPO_LayerDistribution mesh_tree_hypo_layers_distribution.png + + ICON_SMESH_TREE_HYPO_LayerDistribution2D + mesh_tree_hypo_layers_distribution_2d.png + ICON_SMESH_TREE_HYPO_LengthFromEdges mesh_tree_hypo_area.png @@ -229,7 +245,7 @@ ICON_SMESH_TREE_HYPO_NumberOfLayers2D - mesh_tree_hypo_layers_distribution.png + mesh_tree_hypo_layers_distribution_2d.png ICON_SMESH_TREE_HYPO_NumberOfSegments -- 2.30.2