From aa67cc96d730566d202d1014d97b7f0b3a4d71f4 Mon Sep 17 00:00:00 2001 From: prascle Date: Wed, 26 May 2010 07:13:13 +0000 Subject: [PATCH] PR: merged from V5_1_4rc1 --- Makefile.am | 6 +- SMESH_version.h.in | 3 +- adm_local/Makefile.am | 6 +- adm_local/cmake_files/FindSMESH.cmake | 6 +- adm_local/cmake_files/Makefile.am | 6 +- adm_local/unix/Makefile.am | 6 +- adm_local/unix/config_files/Makefile.am | 10 +- adm_local/unix/config_files/check_Platform.m4 | 3 +- adm_local/unix/config_files/check_SMESH.m4 | 3 +- adm_local/unix/make_common_starter.am | 6 +- bin/Makefile.am | 6 +- bin/smesh_setenv.py | 5 +- build_cmake | 5 +- build_cmake.bat | 20 +- build_configure | 20 +- clean_configure | 6 +- configure.ac | 11 +- doc/Makefile.am | 6 +- doc/salome/Makefile.am | 6 +- doc/salome/gui/Makefile.am | 6 +- doc/salome/gui/SMESH/Makefile.am | 12 +- doc/salome/gui/SMESH/doxyfile.in | 8 +- doc/salome/gui/SMESH/doxyfile_py.in | 8 +- .../SMESH/images/a-createpolyhedralvolume.png | Bin 19771 -> 23126 bytes doc/salome/gui/SMESH/images/add0delement.png | Bin 10523 -> 12584 bytes doc/salome/gui/SMESH/images/addedge.png | Bin 10602 -> 14616 bytes doc/salome/gui/SMESH/images/addhexahedron.png | Bin 12169 -> 16502 bytes doc/salome/gui/SMESH/images/addnode.png | Bin 9245 -> 13464 bytes .../gui/SMESH/images/addnode_notebook.png | Bin 11965 -> 14609 bytes doc/salome/gui/SMESH/images/addpolygon.png | Bin 12475 -> 17023 bytes doc/salome/gui/SMESH/images/addquadrangle.png | Bin 13439 -> 17955 bytes .../gui/SMESH/images/addtetrahedron.png | Bin 11925 -> 15990 bytes doc/salome/gui/SMESH/images/addtriangle.png | Bin 12493 -> 16658 bytes doc/salome/gui/SMESH/images/aqt.png | Bin 20575 -> 25279 bytes doc/salome/gui/SMESH/images/colors_size.png | Bin 0 -> 21537 bytes .../gui/SMESH/images/custom_point_marker.png | Bin 0 -> 8145 bytes doc/salome/gui/SMESH/images/dialog.png | Bin 17037 -> 10631 bytes doc/salome/gui/SMESH/images/findelement1.png | Bin 0 -> 8660 bytes doc/salome/gui/SMESH/images/findelement2.png | Bin 0 -> 13074 bytes doc/salome/gui/SMESH/images/findelement3.png | Bin 0 -> 918 bytes doc/salome/gui/SMESH/images/head.png | Bin 0 -> 78545 bytes .../gui/SMESH/images/hexotic_parameters.png | Bin 0 -> 21710 bytes doc/salome/gui/SMESH/images/mergeelems.png | Bin 25706 -> 29443 bytes .../gui/SMESH/images/mergeelems_auto.png | Bin 0 -> 15116 bytes doc/salome/gui/SMESH/images/mergenodes.png | Bin 31378 -> 36395 bytes .../gui/SMESH/images/mergenodes_auto.png | Bin 0 -> 18806 bytes .../gui/SMESH/images/mesh_order_123.png | Bin 0 -> 5488 bytes .../gui/SMESH/images/mesh_order_123_res.png | Bin 0 -> 29778 bytes .../gui/SMESH/images/mesh_order_213.png | Bin 0 -> 5801 bytes .../gui/SMESH/images/mesh_order_213_res.png | Bin 0 -> 32707 bytes .../gui/SMESH/images/mesh_order_321.png | Bin 0 -> 5948 bytes .../gui/SMESH/images/mesh_order_321_res.png | Bin 0 -> 35243 bytes .../SMESH/images/mesh_order_no_concurrent.png | Bin 0 -> 4435 bytes .../gui/SMESH/images/mesh_order_preview.png | Bin 0 -> 4849 bytes .../gui/SMESH/images/point_marker_widget1.png | Bin 0 -> 4405 bytes .../gui/SMESH/images/point_marker_widget2.png | Bin 0 -> 4322 bytes doc/salome/gui/SMESH/images/scale01.png | Bin 0 -> 19816 bytes doc/salome/gui/SMESH/images/scale02.png | Bin 0 -> 22326 bytes doc/salome/gui/SMESH/images/scale03.png | Bin 0 -> 22827 bytes doc/salome/gui/SMESH/images/scale04.png | Bin 0 -> 20061 bytes doc/salome/gui/SMESH/images/scale06.png | Bin 0 -> 22679 bytes doc/salome/gui/SMESH/images/scale07.png | Bin 0 -> 20034 bytes doc/salome/gui/SMESH/images/scale09.png | Bin 0 -> 30799 bytes doc/salome/gui/SMESH/images/scaleinit01.png | Bin 0 -> 17713 bytes doc/salome/gui/SMESH/images/scaleinit02.png | Bin 0 -> 17482 bytes doc/salome/gui/SMESH/images/scaleres03.png | Bin 0 -> 6098 bytes doc/salome/gui/SMESH/images/scaleres04.png | Bin 0 -> 6096 bytes doc/salome/gui/SMESH/images/scaleres06.png | Bin 0 -> 10446 bytes doc/salome/gui/SMESH/images/scaleres07.png | Bin 0 -> 7782 bytes doc/salome/gui/SMESH/images/scaleres09.png | Bin 0 -> 9768 bytes .../gui/SMESH/images/split_into_tetra.png | Bin 0 -> 24682 bytes .../SMESH/images/split_into_tetra_icon.png | Bin 0 -> 923 bytes .../gui/SMESH/images/std_point_marker.png | Bin 0 -> 8630 bytes .../gui/SMESH/input/2d_meshing_hypo.doc | 13 +- doc/salome/gui/SMESH/input/about_hypo.doc | 1 + .../SMESH/input/adding_nodes_and_elements.doc | 4 + .../SMESH/input/adding_quadratic_elements.doc | 5 + .../gui/SMESH/input/basic_meshing_algos.doc | 9 + doc/salome/gui/SMESH/input/colors_size.doc | 35 + .../gui/SMESH/input/constructing_meshes.doc | 86 +- .../gui/SMESH/input/find_element_by_point.doc | 41 + doc/salome/gui/SMESH/input/ghs3dprl_hypo.doc | 144 +- doc/salome/gui/SMESH/input/hexotic_hypo.doc | 30 + .../gui/SMESH/input/merging_elements.doc | 77 +- doc/salome/gui/SMESH/input/merging_nodes.doc | 28 +- .../gui/SMESH/input/modifying_meshes.doc | 2 + .../gui/SMESH/input/pattern_mapping.doc | 4 +- doc/salome/gui/SMESH/input/point_marker.doc | 53 + .../input/radial_quadrangle_1D2D_algo.doc | 9 +- doc/salome/gui/SMESH/input/rotation.doc | 2 +- doc/salome/gui/SMESH/input/scale.doc | 134 ++ doc/salome/gui/SMESH/input/split_to_tetra.doc | 55 + doc/salome/gui/SMESH/input/symmetry.doc | 3 +- doc/salome/gui/SMESH/input/translation.doc | 1 + .../gui/SMESH/input/tui_creating_meshes.doc | 61 + .../SMESH/input/tui_defining_hypotheses.doc | 69 +- .../SMESH/input/tui_transforming_meshes.doc | 33 +- .../gui/SMESH/input/tui_viewing_meshes.doc | 49 + .../SMESH/input/viewing_meshes_overview.doc | 18 +- doc/salome/gui/SMESH/static/doxygen.css | 303 ++- doc/salome/gui/SMESH/static/footer.html | 5 +- doc/salome/gui/SMESH/static/header.html.in | 10 + doc/salome/tui/Makefile.am | 11 +- doc/salome/tui/doxyfile.in | 15 +- doc/salome/tui/images/head.png | Bin 0 -> 78545 bytes doc/salome/tui/images/smeshscreen.png | Bin 0 -> 61648 bytes doc/salome/tui/input/index.doc | 13 + doc/salome/tui/static/doxygen.css | 337 ++- doc/salome/tui/static/footer.html | 19 +- doc/salome/tui/static/header.html.in | 14 + idl/Makefile.am | 6 +- idl/SMESH_BasicHypothesis.idl | 3 +- idl/SMESH_Filter.idl | 3 +- idl/SMESH_Gen.idl | 15 +- idl/SMESH_Group.idl | 3 +- idl/SMESH_Hypothesis.idl | 3 +- idl/SMESH_Mesh.idl | 49 +- idl/SMESH_MeshEditor.idl | 39 +- idl/SMESH_Pattern.idl | 3 +- resources/Makefile.am | 12 +- resources/SMESHCatalog.xml.in | 4 +- resources/SalomeApp.xml | 19 +- resources/StdMeshers.xml | 3 +- resources/mesh_find_elem_by_point.png | Bin 0 -> 890 bytes resources/scale.png | Bin 0 -> 885 bytes resources/scale_along_axes.png | Bin 0 -> 874 bytes resources/split_into_tetra.png | Bin 0 -> 923 bytes src/Controls/Makefile.am | 6 +- src/Controls/SMESHControls.cxx | 3 +- src/Controls/SMESH_Controls.cxx | 3 +- src/Controls/SMESH_Controls.hxx | 3 +- src/Controls/SMESH_ControlsDef.hxx | 3 +- src/Driver/Driver_Document.cxx | 3 +- src/Driver/Driver_Document.h | 3 +- src/Driver/Driver_Mesh.cxx | 5 +- src/Driver/Driver_Mesh.h | 3 +- src/Driver/Driver_SMDS_Mesh.cxx | 3 +- src/Driver/Driver_SMDS_Mesh.h | 3 +- src/Driver/Driver_SMESHDS_Mesh.cxx | 3 +- src/Driver/Driver_SMESHDS_Mesh.h | 3 +- src/Driver/Makefile.am | 6 +- src/DriverDAT/DAT_Test.cxx | 3 +- src/DriverDAT/DriverDAT_R_SMDS_Mesh.cxx | 49 +- src/DriverDAT/DriverDAT_R_SMDS_Mesh.h | 3 +- .../DriverDAT_R_SMESHDS_Document.cxx | 3 +- src/DriverDAT/DriverDAT_R_SMESHDS_Document.h | 3 +- src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.cxx | 3 +- src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.h | 3 +- src/DriverDAT/DriverDAT_W_SMDS_Mesh.cxx | 7 +- src/DriverDAT/DriverDAT_W_SMDS_Mesh.h | 3 +- .../DriverDAT_W_SMESHDS_Document.cxx | 3 +- src/DriverDAT/DriverDAT_W_SMESHDS_Document.h | 3 +- src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.cxx | 3 +- src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.h | 3 +- src/DriverDAT/Makefile.am | 6 +- src/DriverDAT/SMESH_DriverDAT.hxx | 3 +- src/DriverMED/DriverMED_Family.cxx | 3 +- src/DriverMED/DriverMED_Family.h | 3 +- src/DriverMED/DriverMED_R_SMDS_Mesh.cxx | 3 +- src/DriverMED/DriverMED_R_SMDS_Mesh.h | 3 +- .../DriverMED_R_SMESHDS_Document.cxx | 3 +- src/DriverMED/DriverMED_R_SMESHDS_Document.h | 3 +- src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx | 3 +- src/DriverMED/DriverMED_R_SMESHDS_Mesh.h | 3 +- src/DriverMED/DriverMED_W_SMDS_Mesh.cxx | 3 +- src/DriverMED/DriverMED_W_SMDS_Mesh.h | 3 +- .../DriverMED_W_SMESHDS_Document.cxx | 3 +- src/DriverMED/DriverMED_W_SMESHDS_Document.h | 3 +- src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx | 5 +- src/DriverMED/DriverMED_W_SMESHDS_Mesh.h | 3 +- src/DriverMED/MED_Test.cxx | 3 +- src/DriverMED/Makefile.am | 6 +- src/DriverMED/SMESH_DriverMED.hxx | 3 +- src/DriverSTL/DriverSTL_R_SMDS_Mesh.cxx | 3 +- src/DriverSTL/DriverSTL_R_SMDS_Mesh.h | 3 +- src/DriverSTL/DriverSTL_W_SMDS_Mesh.cxx | 17 +- src/DriverSTL/DriverSTL_W_SMDS_Mesh.h | 3 +- src/DriverSTL/Makefile.am | 6 +- src/DriverSTL/SMESH_DriverSTL.hxx | 3 +- src/DriverSTL/STL_Test.cxx | 3 +- src/DriverUNV/DriverUNV_R_SMDS_Mesh.cxx | 469 ++-- src/DriverUNV/DriverUNV_R_SMDS_Mesh.h | 3 +- .../DriverUNV_R_SMESHDS_Document.cxx | 3 +- src/DriverUNV/DriverUNV_R_SMESHDS_Document.h | 3 +- src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.cxx | 3 +- src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.h | 3 +- src/DriverUNV/DriverUNV_W_SMDS_Mesh.cxx | 355 +-- src/DriverUNV/DriverUNV_W_SMDS_Mesh.h | 3 +- .../DriverUNV_W_SMESHDS_Document.cxx | 3 +- src/DriverUNV/DriverUNV_W_SMESHDS_Document.h | 3 +- src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.cxx | 3 +- src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.h | 3 +- src/DriverUNV/Makefile.am | 6 +- src/DriverUNV/SMESH_DriverUNV.hxx | 3 +- src/DriverUNV/UNV2411_Structure.cxx | 21 +- src/DriverUNV/UNV2411_Structure.hxx | 5 +- src/DriverUNV/UNV2412_Structure.cxx | 11 +- src/DriverUNV/UNV2412_Structure.hxx | 5 +- src/DriverUNV/UNV2417_Structure.cxx | 45 +- src/DriverUNV/UNV2417_Structure.hxx | 7 +- src/DriverUNV/UNV_Test.cxx | 3 +- src/DriverUNV/UNV_Utilities.cxx | 3 +- src/DriverUNV/UNV_Utilities.hxx | 17 +- src/MEFISTO2/Makefile.am | 6 +- src/MEFISTO2/Rn.h | 4 +- src/MEFISTO2/aptrte.cxx | 142 +- src/MEFISTO2/aptrte.h | 74 +- src/Makefile.am | 9 +- src/OBJECT/Makefile.am | 6 +- src/OBJECT/SMESH_Actor.cxx | 135 +- src/OBJECT/SMESH_Actor.h | 21 +- src/OBJECT/SMESH_ActorDef.h | 25 +- src/OBJECT/SMESH_ActorUtils.cxx | 3 +- src/OBJECT/SMESH_ActorUtils.h | 3 +- src/OBJECT/SMESH_DeviceActor.cxx | 105 +- src/OBJECT/SMESH_DeviceActor.h | 24 +- src/OBJECT/SMESH_ExtractGeometry.cxx | 3 +- src/OBJECT/SMESH_ExtractGeometry.h | 3 +- src/OBJECT/SMESH_FaceOrientationFilter.cxx | 19 +- src/OBJECT/SMESH_FaceOrientationFilter.h | 12 +- src/OBJECT/SMESH_Object.cxx | 3 +- src/OBJECT/SMESH_Object.h | 3 +- src/OBJECT/SMESH_ObjectDef.h | 3 +- src/OBJECT/SMESH_PreviewActorsCollection.cxx | 7 +- src/OBJECT/SMESH_PreviewActorsCollection.h | 6 +- src/PluginUtils/GeomSelectionTools.cxx | 301 +++ src/PluginUtils/GeomSelectionTools.h | 83 + src/PluginUtils/Makefile.am | 61 + src/SMDS/Makefile.am | 11 +- src/SMDS/Notes | 1 + src/SMDS/SMDSAbs_ElementType.hxx | 5 +- src/SMDS/SMDS_EdgePosition.cxx | 3 +- src/SMDS/SMDS_EdgePosition.hxx | 15 +- src/SMDS/SMDS_ElemIterator.hxx | 5 +- src/SMDS/SMDS_FaceOfEdges.cxx | 85 +- src/SMDS/SMDS_FaceOfEdges.hxx | 29 +- src/SMDS/SMDS_FaceOfNodes.cxx | 37 +- src/SMDS/SMDS_FaceOfNodes.hxx | 21 +- src/SMDS/SMDS_FacePosition.cxx | 23 +- src/SMDS/SMDS_FacePosition.hxx | 23 +- src/SMDS/SMDS_Iterator.hxx | 25 +- src/SMDS/SMDS_IteratorOfElements.cxx | 101 +- src/SMDS/SMDS_IteratorOfElements.hxx | 29 +- src/SMDS/SMDS_MemoryLimit.cxx | 6 +- src/SMDS/SMDS_Mesh.cxx | 131 +- src/SMDS/SMDS_Mesh.hxx | 14 +- src/SMDS/SMDS_Mesh0DElement.cxx | 10 +- src/SMDS/SMDS_Mesh0DElement.hxx | 8 +- src/SMDS/SMDS_MeshEdge.hxx | 34 +- src/SMDS/SMDS_MeshElement.cxx | 132 +- src/SMDS/SMDS_MeshElement.hxx | 12 +- src/SMDS/SMDS_MeshElementIDFactory.cxx | 3 +- src/SMDS/SMDS_MeshElementIDFactory.hxx | 3 +- src/SMDS/SMDS_MeshFace.cxx | 5 +- src/SMDS/SMDS_MeshFace.hxx | 7 +- src/SMDS/SMDS_MeshGroup.cxx | 73 +- src/SMDS/SMDS_MeshGroup.hxx | 35 +- src/SMDS/SMDS_MeshIDFactory.cxx | 21 +- src/SMDS/SMDS_MeshIDFactory.hxx | 3 +- src/SMDS/SMDS_MeshInfo.hxx | 6 +- src/SMDS/SMDS_MeshNode.cxx | 43 +- src/SMDS/SMDS_MeshNode.hxx | 3 +- src/SMDS/SMDS_MeshObject.cxx | 3 +- src/SMDS/SMDS_MeshObject.hxx | 3 +- src/SMDS/SMDS_MeshVolume.cxx | 5 +- src/SMDS/SMDS_MeshVolume.hxx | 7 +- src/SMDS/SMDS_PolygonalFaceOfNodes.cxx | 3 +- src/SMDS/SMDS_PolygonalFaceOfNodes.hxx | 3 +- src/SMDS/SMDS_PolyhedralVolumeOfNodes.cxx | 3 +- src/SMDS/SMDS_PolyhedralVolumeOfNodes.hxx | 5 +- src/SMDS/SMDS_Position.cxx | 7 +- src/SMDS/SMDS_Position.hxx | 19 +- src/SMDS/SMDS_QuadraticEdge.cxx | 5 +- src/SMDS/SMDS_QuadraticEdge.hxx | 3 +- src/SMDS/SMDS_QuadraticFaceOfNodes.cxx | 3 +- src/SMDS/SMDS_QuadraticFaceOfNodes.hxx | 3 +- src/SMDS/SMDS_QuadraticVolumeOfNodes.cxx | 3 +- src/SMDS/SMDS_QuadraticVolumeOfNodes.hxx | 3 +- src/SMDS/SMDS_SetIterator.hxx | 3 +- src/SMDS/SMDS_SpacePosition.cxx | 3 +- src/SMDS/SMDS_SpacePosition.hxx | 3 +- src/SMDS/SMDS_StdIterator.hxx | 70 + src/SMDS/SMDS_TypeOfPosition.hxx | 13 +- src/SMDS/SMDS_VertexPosition.cxx | 13 +- src/SMDS/SMDS_VertexPosition.hxx | 11 +- src/SMDS/SMDS_VolumeOfFaces.cxx | 57 +- src/SMDS/SMDS_VolumeOfFaces.hxx | 27 +- src/SMDS/SMDS_VolumeOfNodes.cxx | 3 +- src/SMDS/SMDS_VolumeOfNodes.hxx | 77 +- src/SMDS/SMDS_VolumeTool.cxx | 30 +- src/SMDS/SMDS_VolumeTool.hxx | 6 +- src/SMDS/SMESH_SMDS.hxx | 3 +- src/SMESH/Makefile.am | 10 +- src/SMESH/SMESH_0D_Algo.cxx | 3 +- src/SMESH/SMESH_0D_Algo.hxx | 3 +- src/SMESH/SMESH_1D_Algo.cxx | 3 +- src/SMESH/SMESH_1D_Algo.hxx | 3 +- src/SMESH/SMESH_2D_Algo.cxx | 3 +- src/SMESH/SMESH_2D_Algo.hxx | 3 +- src/SMESH/SMESH_3D_Algo.cxx | 3 +- src/SMESH/SMESH_3D_Algo.hxx | 3 +- src/SMESH/SMESH_Algo.cxx | 58 +- src/SMESH/SMESH_Algo.hxx | 32 +- src/SMESH/SMESH_Block.cxx | 19 +- src/SMESH/SMESH_Block.hxx | 3 +- src/SMESH/SMESH_Comment.hxx | 12 +- src/SMESH/SMESH_ComputeError.hxx | 7 +- ...MESH_DataMapOfElemPtrSequenceOfElemPtr.hxx | 3 +- src/SMESH/SMESH_File.cxx | 239 +++ src/SMESH/SMESH_File.hxx | 95 + src/SMESH/SMESH_Gen.cxx | 138 +- src/SMESH/SMESH_Gen.hxx | 6 +- src/SMESH/SMESH_Group.cxx | 3 +- src/SMESH/SMESH_Group.hxx | 3 +- src/SMESH/SMESH_HypoFilter.cxx | 3 +- src/SMESH/SMESH_HypoFilter.hxx | 3 +- src/SMESH/SMESH_Hypothesis.cxx | 3 +- src/SMESH/SMESH_Hypothesis.hxx | 4 +- ...IndexedDataMapOfShapeIndexedMapOfShape.hxx | 3 +- src/SMESH/SMESH_Mesh.cxx | 361 ++-- src/SMESH/SMESH_Mesh.hxx | 32 +- src/SMESH/SMESH_MeshEditor.cxx | 1908 ++++++++++++++--- src/SMESH/SMESH_MeshEditor.hxx | 206 +- src/SMESH/SMESH_MesherHelper.cxx | 1089 +++++----- src/SMESH/SMESH_MesherHelper.hxx | 112 +- src/SMESH/SMESH_Octree.cxx | 6 +- src/SMESH/SMESH_Octree.hxx | 6 +- src/SMESH/SMESH_OctreeNode.cxx | 6 +- src/SMESH/SMESH_OctreeNode.hxx | 8 +- src/SMESH/SMESH_Pattern.cxx | 5 +- src/SMESH/SMESH_Pattern.hxx | 3 +- src/SMESH/SMESH_SMESH.hxx | 3 +- src/SMESH/SMESH_SequenceOfElemPtr.hxx | 3 +- src/SMESH/SMESH_SequenceOfNode.hxx | 3 +- src/SMESH/SMESH_subMesh.cxx | 64 +- src/SMESH/SMESH_subMesh.hxx | 12 +- src/SMESH/SMESH_subMeshEventListener.hxx | 3 +- src/SMESHClient/Makefile.am | 6 +- src/SMESHClient/SMESHClientBin.cxx | 3 +- src/SMESHClient/SMESH_Client.cxx | 309 +-- src/SMESHClient/SMESH_Client.hxx | 7 +- src/SMESHDS/Makefile.am | 6 +- src/SMESHDS/SMESHDS_Command.cxx | 261 +-- src/SMESHDS/SMESHDS_Command.hxx | 65 +- src/SMESHDS/SMESHDS_CommandType.hxx | 3 +- src/SMESHDS/SMESHDS_DataMapOfShape.hxx | 3 +- src/SMESHDS/SMESHDS_Document.cxx | 73 +- src/SMESHDS/SMESHDS_Document.hxx | 45 +- src/SMESHDS/SMESHDS_Group.cxx | 3 +- src/SMESHDS/SMESHDS_Group.hxx | 3 +- src/SMESHDS/SMESHDS_GroupBase.cxx | 3 +- src/SMESHDS/SMESHDS_GroupBase.hxx | 3 +- src/SMESHDS/SMESHDS_GroupOnGeom.cxx | 3 +- src/SMESHDS/SMESHDS_GroupOnGeom.hxx | 3 +- src/SMESHDS/SMESHDS_Hypothesis.cxx | 34 +- src/SMESHDS/SMESHDS_Hypothesis.hxx | 6 +- src/SMESHDS/SMESHDS_Mesh.cxx | 17 +- src/SMESHDS/SMESHDS_Mesh.hxx | 3 +- src/SMESHDS/SMESHDS_Script.cxx | 3 +- src/SMESHDS/SMESHDS_Script.hxx | 59 +- src/SMESHDS/SMESHDS_SubMesh.cxx | 3 +- src/SMESHDS/SMESHDS_SubMesh.hxx | 3 +- src/SMESHDS/SMESH_SMESHDS.hxx | 3 +- src/SMESHFiltersSelection/Makefile.am | 6 +- .../SMESH_LogicalFilter.cxx | 3 +- .../SMESH_LogicalFilter.hxx | 3 +- .../SMESH_NumberFilter.cxx | 3 +- .../SMESH_NumberFilter.hxx | 3 +- src/SMESHFiltersSelection/SMESH_Type.h | 3 +- .../SMESH_TypeFilter.cxx | 133 +- .../SMESH_TypeFilter.hxx | 3 +- src/SMESHGUI/Makefile.am | 24 +- src/SMESHGUI/SMESHGUI.cxx | 655 +++++- src/SMESHGUI/SMESHGUI.h | 10 +- src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx | 131 +- src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h | 13 +- .../SMESHGUI_AddQuadraticElementDlg.cxx | 140 +- .../SMESHGUI_AddQuadraticElementDlg.h | 15 +- src/SMESHGUI/SMESHGUI_BuildCompoundDlg.cxx | 5 +- src/SMESHGUI/SMESHGUI_BuildCompoundDlg.h | 3 +- src/SMESHGUI/SMESHGUI_ClippingDlg.cxx | 41 +- src/SMESHGUI/SMESHGUI_ClippingDlg.h | 3 +- src/SMESHGUI/SMESHGUI_ComputeDlg.cxx | 100 +- src/SMESHGUI/SMESHGUI_ComputeDlg.h | 24 +- src/SMESHGUI/SMESHGUI_ConvToQuadDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_ConvToQuadDlg.h | 3 +- src/SMESHGUI/SMESHGUI_ConvToQuadOp.cxx | 3 +- src/SMESHGUI/SMESHGUI_ConvToQuadOp.h | 3 +- src/SMESHGUI/SMESHGUI_CreatePatternDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_CreatePatternDlg.h | 3 +- .../SMESHGUI_CreatePolyhedralVolumeDlg.cxx | 123 +- .../SMESHGUI_CreatePolyhedralVolumeDlg.h | 13 +- src/SMESHGUI/SMESHGUI_DeleteGroupDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_DeleteGroupDlg.h | 3 +- src/SMESHGUI/SMESHGUI_Dialog.cxx | 3 +- src/SMESHGUI/SMESHGUI_Dialog.h | 3 +- src/SMESHGUI/SMESHGUI_Displayer.cxx | 3 +- src/SMESHGUI/SMESHGUI_Displayer.h | 3 +- src/SMESHGUI/SMESHGUI_EditMeshDlg.cxx | 269 ++- src/SMESHGUI/SMESHGUI_EditMeshDlg.h | 10 +- .../SMESHGUI_ExtrusionAlongPathDlg.cxx | 26 +- src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.h | 3 +- src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx | 17 +- src/SMESHGUI/SMESHGUI_ExtrusionDlg.h | 3 +- src/SMESHGUI/SMESHGUI_FileInfoDlg.cxx | 6 +- src/SMESHGUI/SMESHGUI_FileInfoDlg.h | 6 +- src/SMESHGUI/SMESHGUI_FileValidator.cxx | 74 + src/SMESHGUI/SMESHGUI_FileValidator.h | 46 + src/SMESHGUI/SMESHGUI_Filter.cxx | 3 +- src/SMESHGUI/SMESHGUI_Filter.h | 3 +- src/SMESHGUI/SMESHGUI_FilterDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_FilterDlg.h | 3 +- src/SMESHGUI/SMESHGUI_FilterLibraryDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_FilterLibraryDlg.h | 3 +- src/SMESHGUI/SMESHGUI_FilterUtils.cxx | 3 +- src/SMESHGUI/SMESHGUI_FilterUtils.h | 3 +- src/SMESHGUI/SMESHGUI_FindElemByPointDlg.cxx | 451 ++++ src/SMESHGUI/SMESHGUI_FindElemByPointDlg.h | 111 + src/SMESHGUI/SMESHGUI_GEOMGenUtils.cxx | 3 +- src/SMESHGUI/SMESHGUI_GEOMGenUtils.h | 3 +- src/SMESHGUI/SMESHGUI_GroupDlg.cxx | 32 +- src/SMESHGUI/SMESHGUI_GroupDlg.h | 3 +- src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.cxx | 8 +- src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.h | 6 +- src/SMESHGUI/SMESHGUI_GroupOpDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_GroupOpDlg.h | 3 +- src/SMESHGUI/SMESHGUI_GroupUtils.cxx | 3 +- src/SMESHGUI/SMESHGUI_GroupUtils.h | 3 +- src/SMESHGUI/SMESHGUI_Hypotheses.cxx | 3 +- src/SMESHGUI/SMESHGUI_Hypotheses.h | 3 +- src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx | 5 +- src/SMESHGUI/SMESHGUI_HypothesesUtils.h | 5 +- src/SMESHGUI/SMESHGUI_IdValidator.h | 3 +- src/SMESHGUI/SMESHGUI_Make2DFrom3DOp.cxx | 6 +- src/SMESHGUI/SMESHGUI_Make2DFrom3DOp.h | 6 +- src/SMESHGUI/SMESHGUI_MakeNodeAtPointDlg.cxx | 9 +- src/SMESHGUI/SMESHGUI_MakeNodeAtPointDlg.h | 3 +- src/SMESHGUI/SMESHGUI_MeshDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_MeshDlg.h | 3 +- src/SMESHGUI/SMESHGUI_MeshEditPreview.cxx | 3 +- src/SMESHGUI/SMESHGUI_MeshEditPreview.h | 3 +- src/SMESHGUI/SMESHGUI_MeshInfosBox.cxx | 6 +- src/SMESHGUI/SMESHGUI_MeshInfosBox.h | 6 +- src/SMESHGUI/SMESHGUI_MeshInfosDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_MeshInfosDlg.h | 3 +- src/SMESHGUI/SMESHGUI_MeshOp.cxx | 24 +- src/SMESHGUI/SMESHGUI_MeshOp.h | 3 +- src/SMESHGUI/SMESHGUI_MeshOrderDlg.cxx | 330 +++ src/SMESHGUI/SMESHGUI_MeshOrderDlg.h | 112 + src/SMESHGUI/SMESHGUI_MeshOrderOp.cxx | 322 +++ src/SMESHGUI/SMESHGUI_MeshOrderOp.h | 93 + src/SMESHGUI/SMESHGUI_MeshPatternDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_MeshPatternDlg.h | 3 +- src/SMESHGUI/SMESHGUI_MeshUtils.cxx | 3 +- src/SMESHGUI/SMESHGUI_MeshUtils.h | 3 +- src/SMESHGUI/SMESHGUI_MoveNodesDlg.cxx | 9 +- src/SMESHGUI/SMESHGUI_MoveNodesDlg.h | 3 +- src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx | 182 +- src/SMESHGUI/SMESHGUI_MultiEditDlg.h | 38 +- src/SMESHGUI/SMESHGUI_NodesDlg.cxx | 123 +- src/SMESHGUI/SMESHGUI_NodesDlg.h | 14 +- src/SMESHGUI/SMESHGUI_Operation.cxx | 3 +- src/SMESHGUI/SMESHGUI_Operation.h | 3 +- src/SMESHGUI/SMESHGUI_PatternUtils.cxx | 3 +- src/SMESHGUI/SMESHGUI_PatternUtils.h | 3 +- src/SMESHGUI/SMESHGUI_PatternWidget.cxx | 3 +- src/SMESHGUI/SMESHGUI_PatternWidget.h | 3 +- .../SMESHGUI_Preferences_ColorDlg.cxx | 247 ++- src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.h | 36 +- .../SMESHGUI_Preferences_ScalarBarDlg.cxx | 29 +- .../SMESHGUI_Preferences_ScalarBarDlg.h | 19 +- src/SMESHGUI/SMESHGUI_RemoveElementsDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_RemoveElementsDlg.h | 3 +- src/SMESHGUI/SMESHGUI_RemoveNodesDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_RemoveNodesDlg.h | 3 +- src/SMESHGUI/SMESHGUI_RenumberingDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_RenumberingDlg.h | 3 +- src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx | 21 +- src/SMESHGUI/SMESHGUI_RevolutionDlg.h | 3 +- src/SMESHGUI/SMESHGUI_RotationDlg.cxx | 19 +- src/SMESHGUI/SMESHGUI_RotationDlg.h | 3 +- src/SMESHGUI/SMESHGUI_ScaleDlg.cxx | 1059 +++++++++ src/SMESHGUI/SMESHGUI_ScaleDlg.h | 147 ++ src/SMESHGUI/SMESHGUI_Selection.cxx | 6 +- src/SMESHGUI/SMESHGUI_Selection.h | 5 +- src/SMESHGUI/SMESHGUI_SelectionOp.cxx | 3 +- src/SMESHGUI/SMESHGUI_SelectionOp.h | 3 +- src/SMESHGUI/SMESHGUI_SewingDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_SewingDlg.h | 3 +- src/SMESHGUI/SMESHGUI_ShapeByMeshDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_ShapeByMeshDlg.h | 3 +- src/SMESHGUI/SMESHGUI_SingleEditDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_SingleEditDlg.h | 3 +- src/SMESHGUI/SMESHGUI_SmoothingDlg.cxx | 17 +- src/SMESHGUI/SMESHGUI_SmoothingDlg.h | 3 +- src/SMESHGUI/SMESHGUI_SpinBox.cxx | 35 +- src/SMESHGUI/SMESHGUI_SpinBox.h | 6 +- .../SMESHGUI_StandardMeshInfosDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.h | 3 +- src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx | 17 +- src/SMESHGUI/SMESHGUI_SymmetryDlg.h | 3 +- src/SMESHGUI/SMESHGUI_TranslationDlg.cxx | 20 +- src/SMESHGUI/SMESHGUI_TranslationDlg.h | 3 +- src/SMESHGUI/SMESHGUI_TransparencyDlg.cxx | 3 +- src/SMESHGUI/SMESHGUI_TransparencyDlg.h | 3 +- src/SMESHGUI/SMESHGUI_Utils.cxx | 8 +- src/SMESHGUI/SMESHGUI_Utils.h | 3 +- src/SMESHGUI/SMESHGUI_VTKUtils.cxx | 8 +- src/SMESHGUI/SMESHGUI_VTKUtils.h | 3 +- src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx | 6 +- src/SMESHGUI/SMESHGUI_WhatIsDlg.h | 6 +- src/SMESHGUI/SMESHGUI_XmlHandler.cxx | 3 +- src/SMESHGUI/SMESHGUI_XmlHandler.h | 3 +- src/SMESHGUI/SMESH_SMESHGUI.hxx | 3 +- src/SMESHGUI/SMESH_images.ts | 18 +- src/SMESHGUI/SMESH_msg_en.ts | 333 ++- src/SMESH_I/Makefile.am | 6 +- src/SMESH_I/SMESH.hxx | 3 +- src/SMESH_I/SMESHEngine.cxx | 3 +- src/SMESH_I/SMESH_0D_Algo_i.cxx | 3 +- src/SMESH_I/SMESH_0D_Algo_i.hxx | 3 +- src/SMESH_I/SMESH_1D_Algo_i.cxx | 3 +- src/SMESH_I/SMESH_1D_Algo_i.hxx | 3 +- src/SMESH_I/SMESH_2D_Algo_i.cxx | 3 +- src/SMESH_I/SMESH_2D_Algo_i.hxx | 3 +- src/SMESH_I/SMESH_2smeshpy.cxx | 151 +- src/SMESH_I/SMESH_2smeshpy.hxx | 10 +- src/SMESH_I/SMESH_3D_Algo_i.cxx | 3 +- src/SMESH_I/SMESH_3D_Algo_i.hxx | 3 +- src/SMESH_I/SMESH_Algo_i.cxx | 3 +- src/SMESH_I/SMESH_Algo_i.hxx | 3 +- src/SMESH_I/SMESH_DumpPython.cxx | 33 +- src/SMESH_I/SMESH_Filter_i.cxx | 3 +- src/SMESH_I/SMESH_Filter_i.hxx | 3 +- src/SMESH_I/SMESH_Gen_i.cxx | 149 +- src/SMESH_I/SMESH_Gen_i.hxx | 10 +- src/SMESH_I/SMESH_Gen_i_1.cxx | 3 +- src/SMESH_I/SMESH_Group_i.cxx | 14 +- src/SMESH_I/SMESH_Group_i.hxx | 3 +- src/SMESH_I/SMESH_Hypothesis_i.cxx | 3 +- src/SMESH_I/SMESH_Hypothesis_i.hxx | 3 +- src/SMESH_I/SMESH_MEDFamily_i.cxx | 3 +- src/SMESH_I/SMESH_MEDFamily_i.hxx | 3 +- src/SMESH_I/SMESH_MEDMesh_i.cxx | 3 +- src/SMESH_I/SMESH_MEDMesh_i.hxx | 3 +- src/SMESH_I/SMESH_MEDSupport_i.cxx | 3 +- src/SMESH_I/SMESH_MEDSupport_i.hxx | 3 +- src/SMESH_I/SMESH_MeshEditor_i.cxx | 274 ++- src/SMESH_I/SMESH_MeshEditor_i.hxx | 41 +- src/SMESH_I/SMESH_Mesh_i.cxx | 550 ++++- src/SMESH_I/SMESH_Mesh_i.hxx | 40 +- src/SMESH_I/SMESH_NoteBook.cxx | 60 +- src/SMESH_I/SMESH_NoteBook.hxx | 41 +- src/SMESH_I/SMESH_Pattern_i.cxx | 3 +- src/SMESH_I/SMESH_Pattern_i.hxx | 3 +- src/SMESH_I/SMESH_PythonDump.hxx | 9 +- src/SMESH_I/SMESH_subMesh_i.cxx | 3 +- src/SMESH_I/SMESH_subMesh_i.hxx | 3 +- src/SMESH_I/smeshpy.py | 3 +- src/SMESH_SWIG/Makefile.am | 6 +- src/SMESH_SWIG/PAL_MESH_041_mesh.py | 5 +- src/SMESH_SWIG/PAL_MESH_043_2D.py | 4 +- src/SMESH_SWIG/PAL_MESH_043_3D.py | 4 +- src/SMESH_SWIG/SMESH_AdvancedEditor.py | 7 +- src/SMESH_SWIG/SMESH_BelongToGeom.py | 3 +- src/SMESH_SWIG/SMESH_BuildCompound.py | 9 +- src/SMESH_SWIG/SMESH_GroupFromGeom.py | 3 +- src/SMESH_SWIG/SMESH_GroupFromGeom2.py | 3 +- src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py | 6 +- src/SMESH_SWIG/SMESH_Nut.py | 5 +- src/SMESH_SWIG/SMESH_Partition1_tetra.py | 4 +- src/SMESH_SWIG/SMESH_Sphere.py | 4 +- src/SMESH_SWIG/SMESH_blocks.py | 4 +- src/SMESH_SWIG/SMESH_box.py | 4 +- src/SMESH_SWIG/SMESH_box2_tetra.py | 4 +- src/SMESH_SWIG/SMESH_box3_tetra.py | 5 +- src/SMESH_SWIG/SMESH_box_tetra.py | 4 +- src/SMESH_SWIG/SMESH_controls.py | 3 +- src/SMESH_SWIG/SMESH_demo_hexa2_upd.py | 4 +- src/SMESH_SWIG/SMESH_fixation.py | 3 +- src/SMESH_SWIG/SMESH_fixation_hexa.py | 4 +- src/SMESH_SWIG/SMESH_fixation_netgen.py | 4 +- src/SMESH_SWIG/SMESH_fixation_tetra.py | 4 +- src/SMESH_SWIG/SMESH_flight_skin.py | 4 +- src/SMESH_SWIG/SMESH_freebord.py | 4 +- src/SMESH_SWIG/SMESH_hexaedre.py | 4 +- src/SMESH_SWIG/SMESH_mechanic.py | 4 +- src/SMESH_SWIG/SMESH_mechanic_editor.py | 4 +- src/SMESH_SWIG/SMESH_mechanic_netgen.py | 4 +- src/SMESH_SWIG/SMESH_mechanic_tetra.py | 4 +- src/SMESH_SWIG/SMESH_reg.py | 5 +- src/SMESH_SWIG/SMESH_shared_modules.py | 3 +- src/SMESH_SWIG/SMESH_test.py | 10 +- src/SMESH_SWIG/SMESH_test0.py | 3 +- src/SMESH_SWIG/SMESH_test1.py | 6 +- src/SMESH_SWIG/SMESH_test1_AndDisplay.py | 5 +- src/SMESH_SWIG/SMESH_test2.py | 3 +- src/SMESH_SWIG/SMESH_test3.py | 3 +- src/SMESH_SWIG/SMESH_test4.py | 4 +- src/SMESH_SWIG/SMESH_test5.py | 5 +- src/SMESH_SWIG/batchmode_mefisto.py | 3 +- src/SMESH_SWIG/batchmode_smesh.py | 4 +- src/SMESH_SWIG/ex00_all.py | 3 +- src/SMESH_SWIG/ex01_cube2build.py | 5 +- src/SMESH_SWIG/ex02_cube2primitive.py | 5 +- src/SMESH_SWIG/ex03_cube2partition.py | 5 +- src/SMESH_SWIG/ex04_cube5tetraHexa.py | 5 +- src/SMESH_SWIG/ex05_hole1build.py | 5 +- src/SMESH_SWIG/ex06_hole1boolean.py | 5 +- src/SMESH_SWIG/ex07_hole1partition.py | 5 +- src/SMESH_SWIG/ex08_hole2build.py | 5 +- src/SMESH_SWIG/ex09_grid4build.py | 5 +- src/SMESH_SWIG/ex10_grid4geometry.py | 5 +- src/SMESH_SWIG/ex11_grid3partition.py | 5 +- src/SMESH_SWIG/ex12_grid17partition.py | 5 +- src/SMESH_SWIG/ex13_hole1partial.py | 5 +- src/SMESH_SWIG/ex14_cyl1holed.py | 5 +- src/SMESH_SWIG/ex15_cyl2geometry.py | 7 +- src/SMESH_SWIG/ex16_cyl2complementary.py | 5 +- src/SMESH_SWIG/ex17_dome1.py | 5 +- src/SMESH_SWIG/ex18_dome2.py | 5 +- src/SMESH_SWIG/ex19_sphereINcube.py | 5 +- src/SMESH_SWIG/ex21_lamp.py | 5 +- src/SMESH_SWIG/ex24_cylinder.py | 10 +- src/SMESH_SWIG/ex29_refine.py | 6 +- src/SMESH_SWIG/ex30_groupsOp.py | 20 +- src/SMESH_SWIG/ex30_tepal.py | 24 +- src/SMESH_SWIG/ex31_dimGroup.py | 20 +- src/SMESH_SWIG/smesh.py | 3 +- src/SMESH_SWIG/smeshDC.py | 278 ++- src/SMESH_SWIG_WITHIHM/Makefile.am | 6 +- src/SMESH_SWIG_WITHIHM/libSMESH_Swig.cxx | 248 ++- src/SMESH_SWIG_WITHIHM/libSMESH_Swig.h | 6 +- src/SMESH_SWIG_WITHIHM/libSMESH_Swig.i | 6 +- src/StdMeshers/Makefile.am | 12 +- src/StdMeshers/SMESH_StdMeshers.hxx | 3 +- src/StdMeshers/StdMeshers_Arithmetic1D.cxx | 3 +- src/StdMeshers/StdMeshers_Arithmetic1D.hxx | 3 +- src/StdMeshers/StdMeshers_AutomaticLength.cxx | 3 +- src/StdMeshers/StdMeshers_AutomaticLength.hxx | 5 +- .../StdMeshers_CompositeHexa_3D.cxx | 39 +- .../StdMeshers_CompositeHexa_3D.hxx | 39 +- .../StdMeshers_CompositeSegment_1D.cxx | 31 +- .../StdMeshers_CompositeSegment_1D.hxx | 5 +- src/StdMeshers/StdMeshers_Deflection1D.cxx | 3 +- src/StdMeshers/StdMeshers_Deflection1D.hxx | 4 +- src/StdMeshers/StdMeshers_Distribution.cxx | 9 +- src/StdMeshers/StdMeshers_Distribution.hxx | 15 +- src/StdMeshers/StdMeshers_FaceSide.cxx | 235 +- src/StdMeshers/StdMeshers_FaceSide.hxx | 45 +- src/StdMeshers/StdMeshers_FixedPoints1D.cxx | 13 +- src/StdMeshers/StdMeshers_FixedPoints1D.hxx | 6 +- src/StdMeshers/StdMeshers_HexaFromSkin_3D.cxx | 1071 +++++++++ src/StdMeshers/StdMeshers_HexaFromSkin_3D.hxx | 54 + src/StdMeshers/StdMeshers_Hexa_3D.cxx | 25 +- src/StdMeshers/StdMeshers_Hexa_3D.hxx | 49 +- .../StdMeshers_LayerDistribution.cxx | 3 +- .../StdMeshers_LayerDistribution.hxx | 3 +- .../StdMeshers_LayerDistribution2D.cxx | 6 +- .../StdMeshers_LayerDistribution2D.hxx | 6 +- src/StdMeshers/StdMeshers_LengthFromEdges.cxx | 3 +- src/StdMeshers/StdMeshers_LengthFromEdges.hxx | 4 +- src/StdMeshers/StdMeshers_LocalLength.cxx | 4 +- src/StdMeshers/StdMeshers_LocalLength.hxx | 4 +- src/StdMeshers/StdMeshers_MEFISTO_2D.cxx | 53 +- src/StdMeshers/StdMeshers_MEFISTO_2D.hxx | 19 +- src/StdMeshers/StdMeshers_MaxElementArea.cxx | 4 +- src/StdMeshers/StdMeshers_MaxElementArea.hxx | 3 +- .../StdMeshers_MaxElementVolume.cxx | 3 +- .../StdMeshers_MaxElementVolume.hxx | 5 +- src/StdMeshers/StdMeshers_MaxLength.cxx | 39 +- src/StdMeshers/StdMeshers_MaxLength.hxx | 39 +- .../StdMeshers_NotConformAllowed.cxx | 3 +- .../StdMeshers_NotConformAllowed.hxx | 3 +- src/StdMeshers/StdMeshers_NumberOfLayers.cxx | 3 +- src/StdMeshers/StdMeshers_NumberOfLayers.hxx | 3 +- .../StdMeshers_NumberOfLayers2D.cxx | 7 +- .../StdMeshers_NumberOfLayers2D.hxx | 6 +- .../StdMeshers_NumberOfSegments.cxx | 3 +- .../StdMeshers_NumberOfSegments.hxx | 3 +- src/StdMeshers/StdMeshers_Penta_3D.cxx | 3 +- src/StdMeshers/StdMeshers_Penta_3D.hxx | 37 +- src/StdMeshers/StdMeshers_Prism_3D.cxx | 591 ++++- src/StdMeshers/StdMeshers_Prism_3D.hxx | 45 +- .../StdMeshers_ProjectionSource1D.cxx | 3 +- .../StdMeshers_ProjectionSource1D.hxx | 3 +- .../StdMeshers_ProjectionSource2D.cxx | 5 +- .../StdMeshers_ProjectionSource2D.hxx | 5 +- .../StdMeshers_ProjectionSource3D.cxx | 5 +- .../StdMeshers_ProjectionSource3D.hxx | 5 +- src/StdMeshers/StdMeshers_ProjectionUtils.cxx | 43 +- src/StdMeshers/StdMeshers_ProjectionUtils.hxx | 7 +- src/StdMeshers/StdMeshers_Projection_1D.cxx | 43 +- src/StdMeshers/StdMeshers_Projection_1D.hxx | 3 +- src/StdMeshers/StdMeshers_Projection_2D.cxx | 166 +- src/StdMeshers/StdMeshers_Projection_2D.hxx | 3 +- src/StdMeshers/StdMeshers_Projection_3D.cxx | 27 +- src/StdMeshers/StdMeshers_Projection_3D.hxx | 3 +- src/StdMeshers/StdMeshers_Propagation.cxx | 5 +- src/StdMeshers/StdMeshers_Propagation.hxx | 5 +- .../StdMeshers_QuadToTriaAdaptor.cxx | 846 +++----- .../StdMeshers_QuadToTriaAdaptor.hxx | 35 +- .../StdMeshers_QuadrangleParams.cxx | 12 +- .../StdMeshers_QuadrangleParams.hxx | 14 +- .../StdMeshers_QuadranglePreference.cxx | 5 +- .../StdMeshers_QuadranglePreference.hxx | 5 +- src/StdMeshers/StdMeshers_Quadrangle_2D.cxx | 58 +- src/StdMeshers/StdMeshers_Quadrangle_2D.hxx | 33 +- src/StdMeshers/StdMeshers_QuadraticMesh.cxx | 5 +- src/StdMeshers/StdMeshers_QuadraticMesh.hxx | 5 +- src/StdMeshers/StdMeshers_RadialPrism_3D.cxx | 9 +- src/StdMeshers/StdMeshers_RadialPrism_3D.hxx | 3 +- .../StdMeshers_RadialQuadrangle_1D2D.cxx | 733 ++++--- .../StdMeshers_RadialQuadrangle_1D2D.hxx | 18 +- src/StdMeshers/StdMeshers_Regular_1D.cxx | 101 +- src/StdMeshers/StdMeshers_Regular_1D.hxx | 7 +- .../StdMeshers_SegmentAroundVertex_0D.cxx | 9 +- .../StdMeshers_SegmentAroundVertex_0D.hxx | 3 +- .../StdMeshers_SegmentLengthAroundVertex.cxx | 5 +- .../StdMeshers_SegmentLengthAroundVertex.hxx | 5 +- src/StdMeshers/StdMeshers_StartEndLength.cxx | 5 +- src/StdMeshers/StdMeshers_StartEndLength.hxx | 5 +- .../StdMeshers_TrianglePreference.cxx | 8 +- .../StdMeshers_TrianglePreference.hxx | 8 +- .../StdMeshers_UseExisting_1D2D.cxx | 14 +- .../StdMeshers_UseExisting_1D2D.hxx | 6 +- src/StdMeshersGUI/Makefile.am | 9 +- src/StdMeshersGUI/SMESH_StdMeshersGUI.hxx | 3 +- src/StdMeshersGUI/StdMeshersGUI.cxx | 3 +- .../StdMeshersGUI_DistrPreview.cxx | 29 +- .../StdMeshersGUI_DistrPreview.h | 3 +- .../StdMeshersGUI_DistrTable.cxx | 66 +- src/StdMeshersGUI/StdMeshersGUI_DistrTable.h | 3 +- .../StdMeshersGUI_FixedPointsParamWdg.cxx | 40 +- .../StdMeshersGUI_FixedPointsParamWdg.h | 10 +- ...tdMeshersGUI_LayerDistributionParamWdg.cxx | 5 +- .../StdMeshersGUI_LayerDistributionParamWdg.h | 5 +- .../StdMeshersGUI_NbSegmentsCreator.cxx | 5 +- .../StdMeshersGUI_NbSegmentsCreator.h | 3 +- .../StdMeshersGUI_ObjectReferenceParamWdg.cxx | 3 +- .../StdMeshersGUI_ObjectReferenceParamWdg.h | 3 +- .../StdMeshersGUI_StdHypothesisCreator.cxx | 35 +- .../StdMeshersGUI_StdHypothesisCreator.h | 3 +- .../StdMeshersGUI_SubShapeSelectorWdg.cxx | 147 +- .../StdMeshersGUI_SubShapeSelectorWdg.h | 6 +- src/StdMeshersGUI/StdMeshers_images.ts | 2 +- src/StdMeshersGUI/StdMeshers_msg_en.ts | 2 +- src/StdMeshers_I/Makefile.am | 8 +- src/StdMeshers_I/SMESH_StdMeshers_I.hxx | 3 +- .../StdMeshers_Arithmetic1D_i.cxx | 17 +- .../StdMeshers_Arithmetic1D_i.hxx | 3 +- .../StdMeshers_AutomaticLength_i.cxx | 5 +- .../StdMeshers_AutomaticLength_i.hxx | 3 +- .../StdMeshers_CompositeSegment_1D_i.cxx | 3 +- .../StdMeshers_CompositeSegment_1D_i.hxx | 3 +- .../StdMeshers_Deflection1D_i.cxx | 13 +- .../StdMeshers_Deflection1D_i.hxx | 3 +- .../StdMeshers_FixedPoints1D_i.cxx | 6 +- .../StdMeshers_FixedPoints1D_i.hxx | 6 +- src/StdMeshers_I/StdMeshers_Hexa_3D_i.cxx | 11 +- src/StdMeshers_I/StdMeshers_Hexa_3D_i.hxx | 5 +- .../StdMeshers_LayerDistribution2D_i.cxx | 6 +- .../StdMeshers_LayerDistribution2D_i.hxx | 6 +- .../StdMeshers_LayerDistribution_i.cxx | 3 +- .../StdMeshers_LayerDistribution_i.hxx | 3 +- .../StdMeshers_LengthFromEdges_i.cxx | 13 +- .../StdMeshers_LengthFromEdges_i.hxx | 3 +- src/StdMeshers_I/StdMeshers_LocalLength_i.cxx | 7 +- src/StdMeshers_I/StdMeshers_LocalLength_i.hxx | 3 +- src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.cxx | 11 +- src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.hxx | 5 +- .../StdMeshers_MaxElementArea_i.cxx | 13 +- .../StdMeshers_MaxElementArea_i.hxx | 5 +- .../StdMeshers_MaxElementVolume_i.cxx | 13 +- .../StdMeshers_MaxElementVolume_i.hxx | 3 +- src/StdMeshers_I/StdMeshers_MaxLength_i.cxx | 45 +- src/StdMeshers_I/StdMeshers_MaxLength_i.hxx | 39 +- .../StdMeshers_NotConformAllowed_i.cxx | 3 +- .../StdMeshers_NotConformAllowed_i.hxx | 3 +- .../StdMeshers_NumberOfLayers2D_i.cxx | 6 +- .../StdMeshers_NumberOfLayers2D_i.hxx | 6 +- .../StdMeshers_NumberOfLayers_i.cxx | 3 +- .../StdMeshers_NumberOfLayers_i.hxx | 3 +- .../StdMeshers_NumberOfSegments_i.cxx | 41 +- .../StdMeshers_NumberOfSegments_i.hxx | 5 +- src/StdMeshers_I/StdMeshers_ObjRefUlils.cxx | 3 +- src/StdMeshers_I/StdMeshers_ObjRefUlils.hxx | 3 +- src/StdMeshers_I/StdMeshers_Prism_3D_i.cxx | 15 +- src/StdMeshers_I/StdMeshers_Prism_3D_i.hxx | 3 +- .../StdMeshers_ProjectionSource1D_i.cxx | 3 +- .../StdMeshers_ProjectionSource1D_i.hxx | 3 +- .../StdMeshers_ProjectionSource2D_i.cxx | 3 +- .../StdMeshers_ProjectionSource2D_i.hxx | 3 +- .../StdMeshers_ProjectionSource3D_i.cxx | 3 +- .../StdMeshers_ProjectionSource3D_i.hxx | 3 +- .../StdMeshers_Projection_1D_2D_3D_i.cxx | 15 +- .../StdMeshers_Projection_1D_2D_3D_i.hxx | 3 +- src/StdMeshers_I/StdMeshers_Propagation_i.cxx | 3 +- src/StdMeshers_I/StdMeshers_Propagation_i.hxx | 3 +- .../StdMeshers_QuadrangleParams_i.cxx | 20 +- .../StdMeshers_QuadrangleParams_i.hxx | 10 +- .../StdMeshers_QuadranglePreference_i.cxx | 3 +- .../StdMeshers_QuadranglePreference_i.hxx | 3 +- .../StdMeshers_Quadrangle_2D_i.cxx | 11 +- .../StdMeshers_Quadrangle_2D_i.hxx | 5 +- .../StdMeshers_QuadraticMesh_i.cxx | 3 +- .../StdMeshers_QuadraticMesh_i.hxx | 3 +- .../StdMeshers_RadialQuadrangle_1D2D_i.cxx | 6 +- .../StdMeshers_RadialQuadrangle_1D2D_i.hxx | 6 +- src/StdMeshers_I/StdMeshers_Regular_1D_i.cxx | 3 +- src/StdMeshers_I/StdMeshers_Regular_1D_i.hxx | 5 +- .../StdMeshers_SegmentAroundVertex_0D_i.cxx | 3 +- .../StdMeshers_SegmentAroundVertex_0D_i.hxx | 3 +- ...StdMeshers_SegmentLengthAroundVertex_i.cxx | 3 +- ...StdMeshers_SegmentLengthAroundVertex_i.hxx | 3 +- .../StdMeshers_StartEndLength_i.cxx | 7 +- .../StdMeshers_StartEndLength_i.hxx | 3 +- .../StdMeshers_TrianglePreference_i.cxx | 6 +- .../StdMeshers_TrianglePreference_i.hxx | 6 +- .../StdMeshers_UseExisting_1D2D_i.cxx | 6 +- .../StdMeshers_UseExisting_1D2D_i.hxx | 6 +- src/StdMeshers_I/StdMeshers_i.cxx | 5 +- 822 files changed, 18867 insertions(+), 6517 deletions(-) create mode 100755 doc/salome/gui/SMESH/images/colors_size.png create mode 100755 doc/salome/gui/SMESH/images/custom_point_marker.png create mode 100644 doc/salome/gui/SMESH/images/findelement1.png create mode 100644 doc/salome/gui/SMESH/images/findelement2.png create mode 100644 doc/salome/gui/SMESH/images/findelement3.png create mode 100755 doc/salome/gui/SMESH/images/head.png create mode 100644 doc/salome/gui/SMESH/images/hexotic_parameters.png create mode 100644 doc/salome/gui/SMESH/images/mergeelems_auto.png create mode 100644 doc/salome/gui/SMESH/images/mergenodes_auto.png create mode 100644 doc/salome/gui/SMESH/images/mesh_order_123.png create mode 100644 doc/salome/gui/SMESH/images/mesh_order_123_res.png create mode 100644 doc/salome/gui/SMESH/images/mesh_order_213.png create mode 100644 doc/salome/gui/SMESH/images/mesh_order_213_res.png create mode 100644 doc/salome/gui/SMESH/images/mesh_order_321.png create mode 100644 doc/salome/gui/SMESH/images/mesh_order_321_res.png create mode 100644 doc/salome/gui/SMESH/images/mesh_order_no_concurrent.png create mode 100644 doc/salome/gui/SMESH/images/mesh_order_preview.png create mode 100755 doc/salome/gui/SMESH/images/point_marker_widget1.png create mode 100755 doc/salome/gui/SMESH/images/point_marker_widget2.png create mode 100644 doc/salome/gui/SMESH/images/scale01.png create mode 100644 doc/salome/gui/SMESH/images/scale02.png create mode 100644 doc/salome/gui/SMESH/images/scale03.png create mode 100644 doc/salome/gui/SMESH/images/scale04.png create mode 100644 doc/salome/gui/SMESH/images/scale06.png create mode 100644 doc/salome/gui/SMESH/images/scale07.png create mode 100644 doc/salome/gui/SMESH/images/scale09.png create mode 100644 doc/salome/gui/SMESH/images/scaleinit01.png create mode 100644 doc/salome/gui/SMESH/images/scaleinit02.png create mode 100644 doc/salome/gui/SMESH/images/scaleres03.png create mode 100644 doc/salome/gui/SMESH/images/scaleres04.png create mode 100644 doc/salome/gui/SMESH/images/scaleres06.png create mode 100644 doc/salome/gui/SMESH/images/scaleres07.png create mode 100644 doc/salome/gui/SMESH/images/scaleres09.png create mode 100644 doc/salome/gui/SMESH/images/split_into_tetra.png create mode 100644 doc/salome/gui/SMESH/images/split_into_tetra_icon.png create mode 100755 doc/salome/gui/SMESH/images/std_point_marker.png create mode 100644 doc/salome/gui/SMESH/input/colors_size.doc create mode 100644 doc/salome/gui/SMESH/input/find_element_by_point.doc create mode 100644 doc/salome/gui/SMESH/input/hexotic_hypo.doc create mode 100644 doc/salome/gui/SMESH/input/point_marker.doc create mode 100644 doc/salome/gui/SMESH/input/scale.doc create mode 100644 doc/salome/gui/SMESH/input/split_to_tetra.doc create mode 100755 doc/salome/gui/SMESH/static/header.html.in create mode 100755 doc/salome/tui/images/head.png create mode 100755 doc/salome/tui/images/smeshscreen.png create mode 100644 doc/salome/tui/input/index.doc create mode 100755 doc/salome/tui/static/header.html.in create mode 100644 resources/mesh_find_elem_by_point.png create mode 100644 resources/scale.png create mode 100644 resources/scale_along_axes.png create mode 100644 resources/split_into_tetra.png create mode 100644 src/PluginUtils/GeomSelectionTools.cxx create mode 100644 src/PluginUtils/GeomSelectionTools.h create mode 100644 src/PluginUtils/Makefile.am create mode 100644 src/SMDS/SMDS_StdIterator.hxx create mode 100644 src/SMESH/SMESH_File.cxx create mode 100644 src/SMESH/SMESH_File.hxx create mode 100755 src/SMESHGUI/SMESHGUI_FileValidator.cxx create mode 100755 src/SMESHGUI/SMESHGUI_FileValidator.h create mode 100644 src/SMESHGUI/SMESHGUI_FindElemByPointDlg.cxx create mode 100644 src/SMESHGUI/SMESHGUI_FindElemByPointDlg.h create mode 100644 src/SMESHGUI/SMESHGUI_MeshOrderDlg.cxx create mode 100644 src/SMESHGUI/SMESHGUI_MeshOrderDlg.h create mode 100644 src/SMESHGUI/SMESHGUI_MeshOrderOp.cxx create mode 100644 src/SMESHGUI/SMESHGUI_MeshOrderOp.h create mode 100644 src/SMESHGUI/SMESHGUI_ScaleDlg.cxx create mode 100644 src/SMESHGUI/SMESHGUI_ScaleDlg.h create mode 100644 src/StdMeshers/StdMeshers_HexaFromSkin_3D.cxx create mode 100644 src/StdMeshers/StdMeshers_HexaFromSkin_3D.hxx diff --git a/Makefile.am b/Makefile.am index f6395e9bd..8b479765a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # -* Makefile *- # Author : Patrick GOLDBRONN (CEA) # Date : 28/06/2001 diff --git a/SMESH_version.h.in b/SMESH_version.h.in index d9b835afa..64d31df91 100644 --- a/SMESH_version.h.in +++ b/SMESH_version.h.in @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_version.h // Author : Vadim SANDLER // Module : SALOME diff --git a/adm_local/Makefile.am b/adm_local/Makefile.am index 0b7954458..8c38d3d27 100644 --- a/adm_local/Makefile.am +++ b/adm_local/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + include $(top_srcdir)/adm_local/unix/make_common_starter.am SUBDIRS = unix cmake_files diff --git a/adm_local/cmake_files/FindSMESH.cmake b/adm_local/cmake_files/FindSMESH.cmake index af250a460..cd7b4c55a 100644 --- a/adm_local/cmake_files/FindSMESH.cmake +++ b/adm_local/cmake_files/FindSMESH.cmake @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -22,6 +19,7 @@ SET(SMESH_CXXFLAGS -I${SMESH_ROOT_DIR}/include/salome) +FIND_LIBRARY(GeomSelectionTools GeomSelectionTools ${SMESH_ROOT_DIR}/lib/salome) FIND_LIBRARY(MEFISTO2D MEFISTO2D ${SMESH_ROOT_DIR}/lib/salome) FIND_LIBRARY(MeshDriverDAT MeshDriverDAT ${SMESH_ROOT_DIR}/lib/salome) FIND_LIBRARY(MeshDriverMED MeshDriverMED ${SMESH_ROOT_DIR}/lib/salome) diff --git a/adm_local/cmake_files/Makefile.am b/adm_local/cmake_files/Makefile.am index 95246b897..8d4db5e06 100644 --- a/adm_local/cmake_files/Makefile.am +++ b/adm_local/cmake_files/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + include $(top_srcdir)/adm_local/unix/make_common_starter.am admlocal_cmakedir = $(admlocaldir)/cmake_files diff --git a/adm_local/unix/Makefile.am b/adm_local/unix/Makefile.am index 5f6d5f753..190640454 100644 --- a/adm_local/unix/Makefile.am +++ b/adm_local/unix/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + include $(top_srcdir)/adm_local/unix/make_common_starter.am SUBDIRS = config_files diff --git a/adm_local/unix/config_files/Makefile.am b/adm_local/unix/config_files/Makefile.am index 54f5b3f51..ef0b61dd0 100644 --- a/adm_local/unix/config_files/Makefile.am +++ b/adm_local/unix/config_files/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,10 +16,9 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + include $(top_srcdir)/adm_local/unix/make_common_starter.am dist_admlocalm4_DATA = \ check_SMESH.m4 \ - check_f77.m4 \ - check_Platform.m4 \ - check_qwt.m4 + check_Platform.m4 diff --git a/adm_local/unix/config_files/check_Platform.m4 b/adm_local/unix/config_files/check_Platform.m4 index ff6606562..6262fbfaf 100755 --- a/adm_local/unix/config_files/check_Platform.m4 +++ b/adm_local/unix/config_files/check_Platform.m4 @@ -1,4 +1,4 @@ -dnl Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +dnl Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE dnl dnl Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA dnl dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com dnl + AC_DEFUN([CHECK_PLATFORM],[ AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_CPP])dnl diff --git a/adm_local/unix/config_files/check_SMESH.m4 b/adm_local/unix/config_files/check_SMESH.m4 index 4c0cdb6e4..6a704081e 100644 --- a/adm_local/unix/config_files/check_SMESH.m4 +++ b/adm_local/unix/config_files/check_SMESH.m4 @@ -1,4 +1,4 @@ -dnl Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +dnl Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE dnl dnl Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA dnl dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com dnl + # Check availability of SMesh binary distribution # # Author : Nicolas REJNERI (OPEN CASCADE, 2003) diff --git a/adm_local/unix/make_common_starter.am b/adm_local/unix/make_common_starter.am index cd851519b..782a8154d 100644 --- a/adm_local/unix/make_common_starter.am +++ b/adm_local/unix/make_common_starter.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -24,6 +21,7 @@ # The following is to avoid PACKAGE_... env variable # redefinition compilation warnings # ============================================================ +# AM_CXXFLAGS = @KERNEL_CXXFLAGS@ -include SALOMEconfig.h AM_CPPFLAGS = @KERNEL_CXXFLAGS@ -include SALOMEconfig.h diff --git a/bin/Makefile.am b/bin/Makefile.am index db97f629b..35df158eb 100644 --- a/bin/Makefile.am +++ b/bin/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # -* Makefile *- # Author : Guillaume Boulant (CSSI) # Module : SMESH diff --git a/bin/smesh_setenv.py b/bin/smesh_setenv.py index a25e5180b..6cf6a3233 100644 --- a/bin/smesh_setenv.py +++ b/bin/smesh_setenv.py @@ -1,9 +1,6 @@ #!/usr/bin/env python # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/build_cmake b/build_cmake index c7ead0ce7..a0e084b95 100755 --- a/build_cmake +++ b/build_cmake @@ -1,8 +1,5 @@ #!/bin/sh -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/build_cmake.bat b/build_cmake.bat index c763d56e4..8de3956bf 100644 --- a/build_cmake.bat +++ b/build_cmake.bat @@ -1,2 +1,20 @@ - +@REM Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +@REM +@REM This library is free software; you can redistribute it and/or +@REM modify it under the terms of the GNU Lesser General Public +@REM License as published by the Free Software Foundation; either +@REM version 2.1 of the License. +@REM +@REM This library is distributed in the hope that it will be useful, +@REM but WITHOUT ANY WARRANTY; without even the implied warranty of +@REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +@REM Lesser General Public License for more details. +@REM +@REM You should have received a copy of the GNU Lesser General Public +@REM License along with this library; if not, write to the Free Software +@REM Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +@REM +@REM See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +@REM + %PYTHONBIN% %KERNEL_ROOT_DIR%\salome_adm\cmake_files\am2cmake.py --smesh diff --git a/build_configure b/build_configure index 6c5331b6a..607c2558b 100755 --- a/build_configure +++ b/build_configure @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # Tool for updating list of .in file for the SALOME project # and regenerating configure script # Author : Marc Tajchman - CEA @@ -77,10 +78,19 @@ ABS_CONF_DIR=`pwd` # autom4te.cache (directory) echo "====================================================== aclocal" -aclocal -I adm_local/unix/config_files \ - -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files \ - -I ${MED_ROOT_DIR}/adm_local/unix/config_files \ - -I ${GEOM_ROOT_DIR}/adm_local/unix/config_files || exit 1 +if test -d "${GUI_ROOT_DIR}"; then + aclocal -I adm_local/unix/config_files \ + -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files \ + -I ${GUI_ROOT_DIR}/adm_local/unix/config_files \ + -I ${MED_ROOT_DIR}/adm_local/unix/config_files \ + -I ${GEOM_ROOT_DIR}/adm_local/unix/config_files || exit 1 +else + aclocal -I adm_local/unix/config_files \ + -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files \ + -I ${MED_ROOT_DIR}/adm_local/unix/config_files \ + -I ${GEOM_ROOT_DIR}/adm_local/unix/config_files || exit 1 +fi + # ____________________________________________________________________ # libtoolize creates some configuration files (ltmain.sh, diff --git a/clean_configure b/clean_configure index 423451e2b..be3f7f1af 100755 --- a/clean_configure +++ b/clean_configure @@ -1,8 +1,5 @@ #!/bin/sh -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -20,6 +17,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + rm -rf autom4te.cache aclocal.m4 configure make_config find . -name "*~" -print -exec rm {} \; find . -name "*.pyc" -print -exec rm {} \; diff --git a/configure.ac b/configure.ac index 7f5e389b6..0cfcd12fa 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # Author : Marc Tajchman (CEA) # Date : 28/06/2001 # Modified by : Patrick GOLDBRONN (CEA) @@ -26,7 +24,7 @@ # Modified by : Alexander BORODIN (OCN) - autotools usage # Created from configure.in.base # -AC_INIT([Salome2 Project SMESH module], [5.1.3], [webmaster.salome@opencascade.com], [SalomeSMESH]) +AC_INIT([Salome2 Project SMESH module], [5.1.4], [webmaster.salome@opencascade.com], [SalomeSMESH]) AC_CONFIG_AUX_DIR(adm_local/unix/config_files) AC_CANONICAL_HOST AC_CANONICAL_TARGET @@ -447,8 +445,10 @@ AC_OUTPUT([ \ doc/salome/gui/SMESH/Makefile \ doc/salome/gui/SMESH/doxyfile \ doc/salome/gui/SMESH/doxyfile_py \ + doc/salome/gui/SMESH/static/header.html \ doc/salome/tui/Makefile \ doc/salome/tui/doxyfile \ + doc/salome/tui/static/header.html \ src/Makefile \ src/Controls/Makefile \ src/Driver/Makefile \ @@ -458,6 +458,7 @@ AC_OUTPUT([ \ src/DriverUNV/Makefile \ src/MEFISTO2/Makefile \ src/OBJECT/Makefile \ + src/PluginUtils/Makefile \ src/SMDS/Makefile \ src/SMESH/Makefile \ src/SMESHClient/Makefile \ diff --git a/doc/Makefile.am b/doc/Makefile.am index 1902d9d21..f40fb81a5 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # -* Makefile *- # Author : Patrick GOLDBRONN (CEA) # Date : 30/11/2001 diff --git a/doc/salome/Makefile.am b/doc/salome/Makefile.am index 5a92861e5..4a09173c6 100644 --- a/doc/salome/Makefile.am +++ b/doc/salome/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # -* Makefile *- # Author : Patrick GOLDBRONN (CEA) # Date : 30/11/2001 diff --git a/doc/salome/gui/Makefile.am b/doc/salome/gui/Makefile.am index 0e41ee5ff..f2e7362f1 100644 --- a/doc/salome/gui/Makefile.am +++ b/doc/salome/gui/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : Makefile.in # Author : Vasily Rusyaev (Open Cascade NN) # Modified by : Alexander BORODIN (OCN) - autotools usage diff --git a/doc/salome/gui/SMESH/Makefile.am b/doc/salome/gui/SMESH/Makefile.am index a93b57ccb..187295302 100755 --- a/doc/salome/gui/SMESH/Makefile.am +++ b/doc/salome/gui/SMESH/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : Makefile.in # Author : Vasily Rusyaev (Open Cascade NN) # Modified by : Alexander BORODIN (OCN) - autotools usage @@ -26,7 +24,11 @@ # include $(top_srcdir)/adm_local/unix/make_common_starter.am -EXTRA_DIST += images input static +EXTRA_DIST += images input static/footer.html static/doxygen.css + +guidocdir = $(docdir)/gui/SMESH +guidoc_DATA = images/head.png + usr_docs: doxyfile_py doxyfile echo "===========================================" ; \ diff --git a/doc/salome/gui/SMESH/doxyfile.in b/doc/salome/gui/SMESH/doxyfile.in index b084396ba..ce268972f 100755 --- a/doc/salome/gui/SMESH/doxyfile.in +++ b/doc/salome/gui/SMESH/doxyfile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -22,7 +22,7 @@ #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- -PROJECT_NAME = "Mesh Module Reference Manual v.@VERSION@" +PROJECT_NAME = "SALOME Mesh User's Guide" OUTPUT_DIRECTORY = . CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English @@ -48,9 +48,9 @@ EXAMPLE_PATH = @top_srcdir@/src/SMESH_SWIG #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = . -HTML_HEADER = @srcdir@/static/header.html +HTML_HEADER = @builddir@/static/header.html HTML_FOOTER = @srcdir@/static/footer.html -#HTML_STYLESHEET = @srcdir@/static/doxygen.css +HTML_STYLESHEET = @srcdir@/static/doxygen.css TOC_EXPAND = YES DISABLE_INDEX = NO GENERATE_TREEVIEW = YES diff --git a/doc/salome/gui/SMESH/doxyfile_py.in b/doc/salome/gui/SMESH/doxyfile_py.in index c35d4aaa7..6d45aa6b5 100755 --- a/doc/salome/gui/SMESH/doxyfile_py.in +++ b/doc/salome/gui/SMESH/doxyfile_py.in @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -22,7 +22,7 @@ #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- -PROJECT_NAME = "Mesh Module Reference Manual v.@VERSION@" +PROJECT_NAME = "SALOME Mesh User's Guide" OUTPUT_DIRECTORY = . CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English @@ -109,9 +109,9 @@ EXAMPLE_PATH = @top_srcdir@/src/SMESH_SWIG #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = smeshpy_doc -HTML_HEADER = @srcdir@/static/header.html +HTML_HEADER = @builddir@/static/header.html HTML_FOOTER = @srcdir@/static/footer.html -#HTML_STYLESHEET = @srcdir@/static/doxygen.css +HTML_STYLESHEET = @srcdir@/static/doxygen.css TOC_EXPAND = YES DISABLE_INDEX = YES GENERATE_TREEVIEW = NO diff --git a/doc/salome/gui/SMESH/images/a-createpolyhedralvolume.png b/doc/salome/gui/SMESH/images/a-createpolyhedralvolume.png index 26403226c21097c979d38116cc5b062d5d08db2c..009f71d51a2d392c0d61f56b34b1b881454c35da 100755 GIT binary patch literal 23126 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 QKOk_PDyb`$JT?jZUmhMtYybcN literal 10523 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 diff --git a/doc/salome/gui/SMESH/images/addedge.png b/doc/salome/gui/SMESH/images/addedge.png index f142dffb26b2e0f6427c8e9e5bac557615728ec3..34f4fe07a009a10e8e617d6afd651ef47ba2db32 100755 GIT binary patch literal 14616 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 O33@K~3R)#&9P(dJ))ATj diff --git a/doc/salome/gui/SMESH/images/addhexahedron.png b/doc/salome/gui/SMESH/images/addhexahedron.png index 78ea3b50f98248cf9b49a63ef8e785c7b0bd432e..65d881f86d2b94b1664bb9f0f24d1f91069b9fe0 100755 GIT binary patch literal 16502 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

OYYm2HO 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 CkAyM+ literal 12169 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 WJ;FAa1K&7;ynQ1lUM#Bb_kRGWZy;*` literal 9245 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 O&>MLrxiT5!p#KBg#@A&4 diff --git a/doc/salome/gui/SMESH/images/addnode_notebook.png b/doc/salome/gui/SMESH/images/addnode_notebook.png index 4abab33589ea61a0b79c81146f571f4348eca47f..804f806df5011f49b736e619c55711d05c9d987e 100755 GIT binary patch literal 14609 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�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 D`sclZ diff --git a/doc/salome/gui/SMESH/images/addpolygon.png b/doc/salome/gui/SMESH/images/addpolygon.png index 5d02dd70dab6ebae6c7d4e9716053f9dffc55591..71b81ecca7225e7735c713320b905b01dd6b287d 100755 GIT binary patch literal 17023 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 t{tpPAzFYtR diff --git a/doc/salome/gui/SMESH/images/aqt.png b/doc/salome/gui/SMESH/images/aqt.png index ae8e0d081751435e7c48f3e17d03128a730b6b6f..46ee94dae56e995bb06e2f26bd9265eb3778b3af 100755 GIT binary patch literal 25279 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 literal 20575 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 V;Q5Jg`IPWUrBmSLzX3;5FI@lt literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/custom_point_marker.png b/doc/salome/gui/SMESH/images/custom_point_marker.png new file mode 100755 index 0000000000000000000000000000000000000000..a46e33ed99610ecc67111b6c23bad8f3cb2b4be2 GIT binary patch literal 8145 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/dialog.png b/doc/salome/gui/SMESH/images/dialog.png index 1fa2c42635471fabd424ff507c3283580ff3abbf..2f3bbed31b4b2ff01bc2aead9c634005a0486267 100755 GIT binary patch literal 10631 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 literal 17037 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

See Also sample TUI Scripts of diff --git a/doc/salome/gui/SMESH/input/adding_quadratic_elements.doc b/doc/salome/gui/SMESH/input/adding_quadratic_elements.doc index afe9b77b5..2a587d147 100644 --- a/doc/salome/gui/SMESH/input/adding_quadratic_elements.doc +++ b/doc/salome/gui/SMESH/input/adding_quadratic_elements.doc @@ -18,6 +18,11 @@ one of the following: \image html image152.png +\note All dialogs intended for adding quadratic elements to mesh provide a possibility +to add these elements to the specified group (or to create the group if it doesn't exist). +Add to group box allows to choose an existing group for created element or +to specify a name for new group. + 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 diff --git a/doc/salome/gui/SMESH/input/basic_meshing_algos.doc b/doc/salome/gui/SMESH/input/basic_meshing_algos.doc index a83a64f9f..e957a9713 100644 --- a/doc/salome/gui/SMESH/input/basic_meshing_algos.doc +++ b/doc/salome/gui/SMESH/input/basic_meshing_algos.doc @@ -47,6 +47,15 @@ tetrahedral (pyramidal) elements. \image html image126.gif "Example of a hexahedral 3D mesh" +Some of 3D meshing algorithms also can generate 3D meshes from 2D meshes, working without +geometrical objects. Such algorithms are +
    +
  • Hexahedron meshing algorithm (i,j,k),
  • +
  • Tetrahedron (Netgen and GHS3D) meshing algorithms,
  • +
  • Hexotic.
  • +
+ + \note BLSURF and GHS3D are commercial meshers and require a license to be used within the Mesh module. diff --git a/doc/salome/gui/SMESH/input/colors_size.doc b/doc/salome/gui/SMESH/input/colors_size.doc new file mode 100644 index 000000000..aa244579b --- /dev/null +++ b/doc/salome/gui/SMESH/input/colors_size.doc @@ -0,0 +1,35 @@ +/*! + +\page colors_size_page Colors / Size + +\image html colors_size.png + +Using this dialog you can define the following set of mesh visualization +parameters: +
    +
  • Elements
  • +
      +
    • Fill - color of surface of elements (seen in Shading mode).
    • +
    • Back Face - color of interior surface of elements.
    • +
    • Outline - color of borders of elements.
    • +
    • 0D slements - color of 0D elements.
    • +
    • Size of 0D slements - size of 0D elements.
    • +
    • Width - width of lines (edges and borders of elements).
    • +
    • Shrink coef. - relative space of elements compared to gaps between + them in shrink mode.
    • +
    +
  • Nodes
  • +
      +
    • Color - color of nodes.
    • +
    • Marker - group of options allowing to change the representation of + points (see \subpage point_marker_page "Point Marker" page).
    • +
    +
  • Orientation of faces
  • +
      +
    • Color - color of orientation vertors.
    • +
    • Scale - size of orientation vectors.
    • +
    • 3D vectors - allows to choose between 2D planar and 3D vectors.
    • +
    +
+ +*/ \ No newline at end of file diff --git a/doc/salome/gui/SMESH/input/constructing_meshes.doc b/doc/salome/gui/SMESH/input/constructing_meshes.doc index 625cff3bd..042b66320 100644 --- a/doc/salome/gui/SMESH/input/constructing_meshes.doc +++ b/doc/salome/gui/SMESH/input/constructing_meshes.doc @@ -152,10 +152,92 @@ evaluation will be displayed in the following information box: \image html mesh_evaluation_succeed.png + -Consider trying a sample script for construction of a mesh from our -\ref tui_creating_meshes_page "TUI Scripts" section. + + +\anchor mesh_order_anchor +It is allowed to change submesh priority in mesh computation when +there are concurrent submeshes present. I.e. user can change priority of +applying algorithms on shared subshapes of Mesh shape. +To change submesh priority: +
    +
  1. From the Mesh menu choose the "Change submesh priority" on +selected Mesh item, or invoke from popup menu. The opened dialogue box +shows a list of submeshes in the order of their priority. Algorithm and its +hypotheses of a submesh being upper in the list are applied before those of +a submesh lower in the list. + +There is an example of submesh order modifications of Mesh created on a Box +shape. The main Mesh object: +
      +
    • 3D Tetrahedron (Netgen) with HypothesisMax Element Volume
    • +
    • 2D Triangle (Mefisto) with HypothesisMax Element Area
    • +
    • 1D Wire discretisation with Number of Segments=20
    • +
    +The first submesh object Submesh_1 created on Face_1 +is: +
      +
    • 2D Netgen 1D-2D with Hypothesis Netgen Simple parameters +(Number of Segments = 4)
    • +
    +The second submesh object Submesh_2 created on Face_2 +is: +
      +
    • 2D Netgen 1D-2D with Hypothesis Netgen Simple parameters +(Number of Segments = 8)
    • +
    + +And the last third submesh object Submesh_3 created on Face_3 +is: +
      +
    • 2D Netgen 1D-2D with Hypothesis Netgen Simple parameters +(Number of Segments = 12)
    • +
    +The submeshes can become concurrent if their algorithms leads to mesh shared subshape +with different algorithms (or different algorithms parameters, i.e. hypothesises). +In fact, we have three submeshes with concurrent algorithms, because +they have different hypothesises assigned to them. + +The first mesh computation made with: +\image html mesh_order_123.png +
    "Mesh order SubMesh_1, SubMesh_2, SubMesh_3"
    +\image html mesh_order_123_res.png +
    "Result mesh with order SubMesh_1, SubMesh_2, SubMesh_3 "
    + +The next mesh computation with: +\image html mesh_order_213.png +
    "Mesh order SubMesh_2, SubMesh_1, SubMesh_3"
    +\image html mesh_order_213_res.png +
    "Result mesh with order SubMesh_2, SubMesh_1, SubMesh_3 "
    + +And the last mesh computation with: +\image html mesh_order_321.png +
    "Mesh order SubMesh_3, SubMesh_2, SubMesh_1"
    +\image html mesh_order_321_res.png +
    "Result mesh with order SubMesh_3, SubMesh_2, SubMesh_1 "
    + +As we can see each mesh computation has different number of result +elements and different mesh discretisation on shared edges (edges +that are shared between Face_1, Face_2 and Face_3) + +Additionally, submesh priority (order of algorithms to be applied) can +be modified not only in separate dialog box, but in Preview +also. This helps to preview different mesh results, modifying submesh +order. +\image html mesh_order_preview.png +
    "Preview with submesh priority list box"
    + +If there are no concurrent submeshes under Mesh object, then user will see the +following information dialog box +\image html mesh_order_no_concurrent.png +
    "No concurrent submeshes detected"
    +and no mesh order list box will appear in Preview dialog box. +
+Consider trying a sample script for construction of a mesh from our +\ref tui_creating_meshes_page "TUI Scripts" section. + */ diff --git a/doc/salome/gui/SMESH/input/find_element_by_point.doc b/doc/salome/gui/SMESH/input/find_element_by_point.doc new file mode 100644 index 000000000..34380aed4 --- /dev/null +++ b/doc/salome/gui/SMESH/input/find_element_by_point.doc @@ -0,0 +1,41 @@ +/*! + +\page find_element_by_point_page Find Element by Point + +\n This functionality allows you to find all mesh elements to which +belongs a certain point. + +To find the elements: +
    +
  1. Select the mesh
  2. +
  3. Select from the Mesh menu or from the context menu the Find +Element by Point item. + +\image html findelement3.png +
    "Find Element by Point" button
    + +The following dialog box will appear: + +\image html findelement2.png + +
  4. +
  5. In this dialog box you should select: + +
      +
    • the coordinates of the point;
    • +
    • the type of elements to be found; it is also possible to find elements +of all types related to the reference point. To be exact, type "All" +means to find elements of any type except nodes and 0D elements.
    • +
    + +
  6. +
  7. Click the \b Apply or \b OK button.
  8. +
+ +\image html findelement1.png +
The reference point and the related elements.
+ + +
See Also a sample TUI Script of a \ref tui_find_element_by_point "Find Element by Point" operation. + +*/ diff --git a/doc/salome/gui/SMESH/input/ghs3dprl_hypo.doc b/doc/salome/gui/SMESH/input/ghs3dprl_hypo.doc index dc7985988..a7f69dfc8 100644 --- a/doc/salome/gui/SMESH/input/ghs3dprl_hypo.doc +++ b/doc/salome/gui/SMESH/input/ghs3dprl_hypo.doc @@ -2,20 +2,22 @@ \page ghs3dprl_hypo_page GHS3DPRL Parameters hypothesis -\n GHS3DPRL Parameters hypothesis works only with Tetrahedron (Tepal with TetMesh-GHS3D) algorithm. -\n -\n This algorithm is a commercial software, its use requires a licence (http://www.distene.com/fr/build/offer.html). - -\n Tepal gives the possibility to generate a partitioned +\n GHS3DPRL Parameters hypothesis works only with Tetrahedron (Tepal with TetMesh-GHS3D) algorithm. +This algorithm is a commercial software, its use requires a licence (http://www.distene.com/fr/build/offer.html). +\n Tepal_V1.4 gives the possibility to generate a partitioned mesh with 200 million tetrahedrons on a computer with average memory size -(2Go RAM) in about 50 hours on one CPU (Xeon, 2008). -This is a serious alternative to GHS3D, which requires a much less common +(2Go RAM) in about 50 hours on one CPU (Xeon, 2008). +\n New Tepal_V2.0 gives the possibility to generate a partitioned mesh with (for the moment) no more than 100 million +tetrahedrons on computers using MPI, (Total 16 Go RAM) +in about 900 seconds (!yes! : !seconds!) on 2 octo processors (Xeon, 2009). +The launch of this beta-version is described below. +\n This is a serious alternative to GHS3D, which requires a much less common configuration with 64Go RAM to only try to make a partition of a mesh with 200 million tetrahedrons, no result guaranteed. \n \note The Plugin doesn't load in the Memory the supposedly large resulting meshes. The meshes are saved in MED files and can be imported in the user-defined location via menu File-Import-MED Files. -\n Pay attention, that Salome GUI needs 2Go RAM. to load a MED +\n Pay attention, that Salome GUI needs 2Go RAM to load a MED file with 5 million tetrahedrons. \image html ghs3dprl_parameters_basic.png @@ -89,11 +91,10 @@ example: --verbose=0 --test=yes --menu=no --launchtepal=no \endverbatim - +\n
  • -

    - Advanced tepal Parameters

    +Advanced Tepal_V1.4 Parameters

    \verbatim @@ -142,11 +143,10 @@ With options : Arguments to pass to Tetmesh during cutting process \endverbatim - +\n

  • -

    -Advanced ghs3d Parameters (through tepal's --tetmesh_args) - type "ghs3d -h" in a Terminal.

    +Advanced ghs3d Parameters (through Tepal_V1.4's --tetmesh_args) - type "ghs3d -h" in a Terminal.

    \verbatim myname@myhost > ghs3d -h @@ -231,14 +231,16 @@ DESCRIPTION EMail: support@distene.com ) \endverbatim - +\n

  • Saving user's preferred GHS3DPRL Advanced Parameters


    GHS3DPRL Plugin launches standalone binary executable tepal2med.
    -You may rename tepal2med as tepal2med.exe for example, and replace -tepal2med by a shell script at your convenience to overriding parameters.
    ... or else $PATH modification... .
    Idem for tepal.

    +You may rename file tepal2med as tepal2med.exe for example, and replace +tepal2med by a shell script at your convenience to overriding parameters. +
    ... or else $PATH modification... .
    Idem for file tepal.

  • Advanced tepal2med Parameters - overriding parameter deletegroups

    +You may rename tepal2med as tepal2med.exe for example. \code #!/bin/bash @@ -250,11 +252,11 @@ tepal2med by a shell script at your convenience to overriding parameters.
    ... tepal2med.exe $* --deletegroups="(\bAll_Nodes|\bAll_Faces)" \endcode - +\n

  • -

    -Advanced tepal Parameters - overriding parameter component of ghs3d (to mesh holes).

    +Advanced Tepal_V1.4 Parameters - overriding parameter component of ghs3d (to mesh holes).

    +You may rename tepal as tepal.exe for example. \code #!/bin/bash @@ -269,11 +271,11 @@ SIMULOGD_LICENSE_FILE=29029@is142356 tepal.exe $* --tetmesh_args "-c 0" \endcode - +\n

  • -

    Advanced tepal Parameters - overriding launching tepal on other host.

    +You may rename tepal as tepal.exe for example. \code #!/bin/bash @@ -293,13 +295,107 @@ ssh otherhost "tepal.exe $* > /home/myname/tmp/tepal.log" #ssh otherhost "tepal.exe $* --tetmesh_args \"-c 0\"" > /home/myname/tmp/tepal.log \endcode +\n +

  • + +

    Tepal_V2.0 and MPI use.


    +This all new beta-version needs MPI, (openmpi-1.3.1 was used). To use it you have to proceed +as done in "overriding parameter component of ghs3d". +Advanced ghs3d Parameters (through Tepal_V1.4's --tetmesh_args) are not assumed yet. +It meshes holes. +\n You may rename tepal as tepal64_v2.exe for example, and replace tepal by a shell script like below. + +
  • +example tepal_v2_mpirun.

    + +\code +#!/bin/bash +#script tepal overriding launching Tepal_V2.0 with MPI (tepal run 64 bits only). +#we have renamed binary executable tepal as tepal64_v2.exe. +#typical command to launch tepal v1 : +#tepal -f /tmp/myname/GHS3DPRL -n 16 > /tmp/myname/tepal.log +#this file is an exemple to transform this call for tepal v2.0, +# (beta version using .mesh input file) +#you have to adapt for your convenience. + +#first problem is convert v1 input files GHS3DPRL.faces and GHS3DPRL.points +# to v2 input file GHS3DPRL.mesh. +#second problem is to launch on heterogeneous system linux cluster of +# 2 hosts (64 bits) of 8 nodes (by example) +# with different 2 executables codes linked on 2 different +# openmpi shared library codes. +#third problem is convert tepal v2 output files GHS3DPRL*.mesh +# to v1 input files GHS3DPRL*.faces an GHS3DPRL*.points. + +#you have to work on the same physical disk and same path input and ouput files : $SAME_DIR +#you have to work on different physical disk but same path and name for executable files +# (and shared libraries) : $DIFF_DIR + +echo "parameter 0="$0 +echo "parameter 1="$1 +echo "parameter 2="$2 +echo "parameter 3="$3 +echo "parameter 4="$4 + +export SAME_DIR=/same_physical_disk_and_same path/tmp +export DIFF_DIR=/different_physical_disk_but_same path/myname + +#copy input local files from local current directory (something like /tmp/myname) +#in this case we need /tmp/myname and $SAME_DIR different +cd $SAME_DIR +rm * +cp $2* . + +export IN_FILES=`basename $2` +export IN_DIR=`dirname $2` +#created .mesh from .faces et .points +/through_salome_path/facespoints2mesh.py $IN_FILES + +#there are 2 executable openmpi and library through 2 physical DIFF_DIR +export PATH=$DIFF_DIR/openmpi-1.3.1_install/bin:${PATH} +export LD_LIBRARY_PATH=$DIFF_DIR/openmpi-1.3.1_install/lib:${LD_LIBRARY_PATH} + +#there are 2 executables tepal_v2 through 2 physical DIFF_DIR +export LD_LIBRARY_PATH=$DIFF_DIR/tepal-2.0.0/bin/Linux_64:${LD_LIBRARY_PATH} +export PATH=$DIFF_DIR/tepal-2.0.0/bin/Linux_64:$PATH + +#small test betweeen friends +#rm hostnames.log +#mpirun -n $4 hostname >> hostnames.log + +#there necessary set env licence file for tepal v2 +export DISTENE_LICENSE_FILE="Use global envvar: DLIM8VAR" +export DLIM8VAR="dlim8 1:1:29030@is142356/0016175ef08c::a1ba...9e19" +export SIMULOGD_LICENSE_FILE=29029@is142356 +export LICENSE_FILE=/product/distene/dlim8.var.sh + +#mpirun with necessary set envenvironment +export TMP_ENV="-x PATH -x LD_LIBRARY_PATH -x DISTENE_LICENSE_FILE -x DLIM8VAR \ + -x SIMULOGD_LICENSE_FILE -x LICENSE_FILE" +#mpirun $TMPENV -n $4 which tepal64_v2.exe >> hostnames.log + +#real mpirun uncomment after verify small test +mpirun $TMPENV -n $4 tepal64_v2.exe --in $IN_FILES.mesh --out $IN_FILES.mesh --verbose 100 + +#convert output files tepalv1 format +/through_salome_path/mesh2facespoints.py $IN_FILES + +#copy ouputs files from $SAME_DIR to local current directory (something like /tmp/myname) +cp -f hostnames.log $IN_DIR +cp -f $IN_FILES* $IN_DIR + +#ls -al $SAME_DIR +#cat $SAME_DIR/hostnames.log +#cat /tmp/myname/tepal.log + +\endcode +\n

  • TUI use.


  • -

    example ex30_tepal.py.

    \code @@ -367,7 +463,7 @@ if os.access(results+".xml", os.F_OK): else: print "KO: tepal" \endcode - +\n

  • diff --git a/doc/salome/gui/SMESH/input/hexotic_hypo.doc b/doc/salome/gui/SMESH/input/hexotic_hypo.doc new file mode 100644 index 000000000..902b93ac5 --- /dev/null +++ b/doc/salome/gui/SMESH/input/hexotic_hypo.doc @@ -0,0 +1,30 @@ +/*! + +\page hexotic_hypo_page Hexotic Parameters hypothesis + +\n Hexotic Parameters hypothesis works only with Hexotic +algorithm. This algorithm is a commercial software. + +\image html hexotic_parameters.png + +
      +
    • Name - allows to define the name of the hypothesis (Hexotic +Parameters by default).
    • + +
    • Nb. Hexes Min Level - allows defining the minimal level of recursive partitioning on the initial octree cube.
    • + +
    • Nb. Hexes Max Level - allows defining the maximal level of recursive partitioning on the initial octree cube.
    • + +
    • Salome Quadrangles - not documented.
    • + +
    • Generate smooth meshes no ridges - specifies that the mesher can ignore ridges. A ridge is a geometrical entity (a sharp edge). The resulting meshes will have better quality elements, at the price of "smoothing" out the geometry. +
    • + +
    • Authorize invalid elements - specifies that the mesher must conform as much as possible to the geometry (especially the sharp edges). The resulting meshes may contain invalid elements (but with positive volumes: for example, three vertices of an hexahedron on the same edge), for the benefit of better geometry accuracy. +
    • + +
    • Sharp angle threshold in degrees - specifies the angle between two triangles above which the hex mesher will consider the edge common to these two triangles as being a "ridge". A ridge is a geometrical entity (a sharp edge) which has to be kept as it is in the final hex mesh.The default value is 60 (degrees).
      If you raise this value, the hex mesher will detect less ridges, and the final solid mesh will therefore be smoother. On the other hand, if you reduce this value, more ridges will be detected and the algorithm will face harder situations to conform to. +
    • +
    + +*/ diff --git a/doc/salome/gui/SMESH/input/merging_elements.doc b/doc/salome/gui/SMESH/input/merging_elements.doc index 821f6f9f2..d677e179e 100644 --- a/doc/salome/gui/SMESH/input/merging_elements.doc +++ b/doc/salome/gui/SMESH/input/merging_elements.doc @@ -5,42 +5,59 @@ \n This functionality allows to merge coincident elements of a mesh selectable in the dialog box. - \image html mergeelems_ico.png "Merge elements button" +
      +
    1. From the \b Modification choose \b Transformation and from its +sub-menu select the Merge elements item. The following dialog box +shall appear:
    2. -\image html mergeelems.png +\image html mergeelems_auto.png +
      +
        +
      • \b Name is the name of the mesh whose elements will be merged.
      • +
      • \b Automatic Mode or \b Manual Mode is to switch the dialog +controls type. +
      + +
    3. Automatic mode: +
        +
      • In \b Automatic Mode the elements that were created on the same nodes will be merged.
      • +
      +
    4. + +
    5. If the \b Manual Mode is selected there are additional controls to +manage the elements to be merged in more detail: +\image html mergeelems.png +
      +
        +
      • \b Detect button generates the list of coincident elements for the given \b Tolerance.
      • +
      • Coincident elements is a list of groupes of elements for +merging. All elements of each group will form one after the operation.
          -
        • \b Name is the name of the mesh whose elements will be merged.
        • -
        • \b Tolerance is a maximum distance between elements sufficient for merging. -
            -
          • \b Detect button generates the list of coincident elements for the given \b Tolerance.
          • -
        • -
        • Coincident elements is a list of groupes of elements for - merging. All elements of each group will form one after the operation. -
            -
          • \b Remove button deletes the selected group from the list.
          • -
          • \b Add button adds to the list a group of elements selected in the - viewer with pressed "Shift" key.
          • -
          • Select all checkbox selects all groups.
          • -
        • -
        • Edit selected group list allows editing the selected group: -

          - \image html add.png -
          adds to the group the element selected in the viewer.
          -
          - \image html remove.png -
          removes from the group the selected element.
          -
          - \image html sort.png -
          moves the selected element to the first position in the - group. This means that all other elements will be merged into this - one.
          -
          -
        • -
        • To confirm your choice click \b Apply or Apply and Close button.
        • +
        • \b Remove button deletes the selected group from the list.
        • +
        • \b Add button adds to the list a group of elements selected in the +viewer with pressed "Shift" key.
        • +
        • Select all checkbox selects all groups.
        • +
      • +
      • Edit selected group list allows editing the selected group: +

        +\image html add.png +
        adds to the group the element selected in the viewer.
        +
        +\image html remove.png +
        removes from the group the selected element.
        +
        +\image html sort.png +
        moves the selected element to the first position in the +group. This means that all other elements will be merged into this +one.
        +
        +
      • +
      • To confirm your choice click \b Apply or Apply and Close button.
      +
    In this picture you see a triangle which coincides with one of the elements of the mesh. After we apply Merge Elements functionality, the diff --git a/doc/salome/gui/SMESH/input/merging_nodes.doc b/doc/salome/gui/SMESH/input/merging_nodes.doc index fb88fb89e..d94d6f49d 100644 --- a/doc/salome/gui/SMESH/input/merging_nodes.doc +++ b/doc/salome/gui/SMESH/input/merging_nodes.doc @@ -11,19 +11,30 @@ with desirable tolerance, edit these groups and merge.
    1. From the \b Modification choose \b Transformation and from its sub-menu select the Merge nodes item. The following dialog box -shall appear: - -\image html mergenodes.png +shall appear:
    2. +\image html mergenodes_auto.png +
      • \b Name is the name of the mesh whose nodes will be merged.
      • +
      • \b Automatic Mode or \b Manual Mode is to switch the dialog +controls type.
      • \b Tolerance is a maximum distance between nodes sufficient for -merging. +merging, that is able in both dialog modes.
      • +
      + +
    3. Automatic mode: +
      +
        +
      • In \b Automatic Mode to merge the Nodes, just input the tolerance +value and confirm by \b Apply button.
      • +
      +

    4. +
    5. If the \b Manual Mode is selected there are additional controls to +manage the nodes to be merged in more detail:
      • \b Detect button generates the list of coincident nodes for the given \b Tolerance.
      • -
      -
    6. Coincident nodes is a list of groupes of nodes for merging. All nodes of each group will form one after the operation. @@ -33,6 +44,9 @@ operation. viewer with pressed "Shift" key.
    7. Select all checkbox selects all groups.
    8. + +\image html mergenodes.png +
    9. Edit selected group list allows editing the selected group: @@ -60,4 +74,4 @@ one.

      See Also a sample TUI Script of a \ref tui_merging_nodes "Merge Nodes" operation. -*/ \ No newline at end of file +*/ diff --git a/doc/salome/gui/SMESH/input/modifying_meshes.doc b/doc/salome/gui/SMESH/input/modifying_meshes.doc index cf63ff5f4..afa553f1b 100644 --- a/doc/salome/gui/SMESH/input/modifying_meshes.doc +++ b/doc/salome/gui/SMESH/input/modifying_meshes.doc @@ -18,6 +18,7 @@ elements of the mesh.
    10. its elements.
    11. \subpage rotation_page "Rotate" by the indicated axis and angle the mesh or some of its elements.
    12. +
    13. \subpage scale_page "Scale Transform" the mesh or some of its elements.
    14. Create a \subpage symmetry_page "symmetrical copy" of the mesh through a point or a vector of symmetry.
    15. Unite meshes by \subpage sewing_meshes_page "sewing" free borders, @@ -36,6 +37,7 @@ or created anew.
    16. \subpage changing_orientation_of_elements_page "Change orientation" of the selected elements.
    17. \subpage cutting_quadrangles_page "Cut a quadrangle" into two triangles.
    18. +
    19. \subpage split_to_tetra_page "Split" volumic elements into tetrahedra.
    20. \subpage smoothing_page "Smooth" elements, reducung distortions in them by adjusting the locations of element corners.
    21. Create an \subpage extrusion_page "extrusion" along a vector.
    22. diff --git a/doc/salome/gui/SMESH/input/pattern_mapping.doc b/doc/salome/gui/SMESH/input/pattern_mapping.doc index cf556d51b..db4be4144 100644 --- a/doc/salome/gui/SMESH/input/pattern_mapping.doc +++ b/doc/salome/gui/SMESH/input/pattern_mapping.doc @@ -71,7 +71,7 @@ having a mesh built on it. Mesh nodes lying on face vertices become key-points. Additionally, you may choose the way of getting nodes coordinates by projecting nodes on the face instead of using "positions on face" generated by mesher (if there is any). Faces -having a seam edge can?t be used for automatic pattern creation. +having a seam edge can't be used for automatic pattern creation. When creating a pattern from an existing mesh, there are two possible cases: @@ -132,4 +132,4 @@ isolines.
      See Also a sample TUI Script of a \ref tui_pattern_mapping "Pattern Mapping" operation. -*/ \ No newline at end of file +*/ diff --git a/doc/salome/gui/SMESH/input/point_marker.doc b/doc/salome/gui/SMESH/input/point_marker.doc new file mode 100644 index 000000000..c298893ef --- /dev/null +++ b/doc/salome/gui/SMESH/input/point_marker.doc @@ -0,0 +1,53 @@ +/*! + +\page point_marker_page Point Marker + +\n You can change the representation of points in +the 3D viewer either by selecting one of the predefined +shapes or by loading a custom texture from an external file. + +- Standard point markers + +The Mesh module provides a set of predefined point marker shapes +which can be used to display points in 3D viewer. +Each standard point marker has two attributes: type (defines shape +form) and scale factor (defines shape size). + +\image html point_marker_widget1.png + +
      + +\image html std_point_marker.png "Mesh presentation with standard point markers" + +- Custom point markers + +It is also possible to load a point marker shape from an external file. +This file should provide a description of the point texture as a set +of lines; each line is represented as sequence of "0" and "1" symbols, +where "1" symbol means an opaque pixel and "0" symbol means a +transparent pixel. The width of the texture correspond to the length +of the longest line in the file, expanded to the nearest byte-aligned +value. The height of the texture is equal to the number of non-empty +lines in the file. Note that missing symbols are replaced by "0". + +Here is a texture file sample: + +
      +00111100
      +00111100
      +11111111
      +11111111
      +11111111
      +11111111
      +00111100
      +00111100
      +
      + +\image html point_marker_widget2.png + +
      + +\image html custom_point_marker.png "Mesh presentation with custom point markers" + +*/ + diff --git a/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.doc b/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.doc index 9f54f3eef..0854941ea 100644 --- a/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.doc +++ b/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.doc @@ -8,9 +8,16 @@ following conditions: the face must be a full circle or a part of circle The resulting mesh consists of triangles (near the center point) and quadrangles. -This algorithm requires the hypothesis indicating the number +This algorithm is optionally parametrized by the hypothesis indicating the number of mesh layers along the radius. The distribution of layers can be set with any 1D Hypothesis. +If no own hypothesis of the algorithm is assigned, any local or global hypothesis is used +by the algorithm to discretize edges. Note that if the geometrical face has two radial edges, +they must be meshed with equal number of segments. + +If no 1D hypothesis is assigned to an edge, "Default Number of Segments" preferences parameter +is used to discretize the edge. + \image html hypo_radquad_dlg.png \image html mesh_radquad_01.png "Radial Quadrangle 2D mesh on the top and the bottom faces of a cylinder" diff --git a/doc/salome/gui/SMESH/input/rotation.doc b/doc/salome/gui/SMESH/input/rotation.doc index 79d27d7c1..d93473eda 100644 --- a/doc/salome/gui/SMESH/input/rotation.doc +++ b/doc/salome/gui/SMESH/input/rotation.doc @@ -63,7 +63,7 @@ name in the adjacent box);
    23. Click \b Apply or Apply and Close button to confirm the operation.
    24. - +
    diff --git a/doc/salome/gui/SMESH/input/scale.doc b/doc/salome/gui/SMESH/input/scale.doc new file mode 100644 index 000000000..5b10fb5a5 --- /dev/null +++ b/doc/salome/gui/SMESH/input/scale.doc @@ -0,0 +1,134 @@ +/*! + +\page scale_page Scale + +\n This geometrical operation allows to scale in space your mesh +or some of its elements. + +To scale a mesh: + +
      +
    1. From the \b Modification menu choose \b Transformation -> \b Scale +\b Transform item. + +One of the following dialogs will appear: + +With one scale factor: +\image html scale01.png + +Or with different scale factors for axes: +\image html scale02.png + +
    2. + +
    3. +In the dialog: +
        +
      • specify the IDs of the translated elements: + +
          +
        • Select the whole mesh, submesh or group activating this +checkbox; or
        • +
        • choose mesh elements with the mouse in the 3D Viewer. It is +possible to select a whole area with a mouse frame; or
        • +
        • input the element IDs directly in ID Elements field. The selected elements will be highlighted in the +viewer; or
        • +
        • apply Filters. Set filter button allows to apply a filter to the selection of elements. See more +about filters in the \ref selection_filter_library_page "Selection filter library" page.
        • +
        +
      • + +
      • specify the base point for scale
      • + +
      • specify the scale factor
      • + +
      • specify the conditions of scale: +
          +
        • activate Move elements radio button to create the source +mesh (or elements) at the new location and erase it from the previous location;
        • +
        • activate Copy elements radio button to create the source +mesh (or elements) at the new location, but leave it at the previous +location, the source mesh will be considered one and single mesh with +the result of the scale operation;
        • +
        • activate Create as new mesh radio button to leave the +source mesh (or elements) at its previous location and create a new +mesh at the new location, the new mesh appears in the Object Browser +with the default name MeshName_scaled (it is possible to change this +name in the adjacent box);
        • +
        • activate Copy groups checkbox to copy the groups of elements of the source mesh to the newly created mesh.
        • +
        +
      • + + + +
      • Click \b Apply or Apply and Close button to confirm the operation.
      • +
      +
    + + + +Example of using: + +1. Create quandrangle mesh 3x3 on simple planar face (200x200) + +\image html scaleinit01.png + +and union 3 face (along axis Z) to group "gr_faces" + +\image html scaleinit02.png + + + +2. Perform scale operation for whole mesh with creation of new mesh: + +\image html scale03.png + +result after operation: + +\image html scaleres03.png + + + +3. Perform scale operation for whole mesh with copy of elements: + +\image html scale04.png + +result after operation: + +\image html scaleres04.png + + + +4. Perform scale operation for group of faces with copy of elements: + +\image html scale06.png + +result after operation: + +\image html scaleres06.png + + + +5. Perform scale operation for two edges with moving of elements: + +\image html scale07.png + +result after operation: + +\image html scaleres07.png + + + +6. Perform scale operation for one face with moving of elements: + +\image html scale09.png + +result after operation: + +\image html scaleres09.png + + +
    See Also a sample TUI Script of a \ref tui_scale "Scale" operation. + + +*/ diff --git a/doc/salome/gui/SMESH/input/split_to_tetra.doc b/doc/salome/gui/SMESH/input/split_to_tetra.doc new file mode 100644 index 000000000..57efb37eb --- /dev/null +++ b/doc/salome/gui/SMESH/input/split_to_tetra.doc @@ -0,0 +1,55 @@ +/*! + +\page split_to_tetra_page Splitting volumes into tetrahedra + +\n This operation allows to split volumic elements into tetrahedra. +2D mesh is modified accordingly. + +To split volumes: +
      +
    1. Display a mesh or a submesh in the 3D viewer.
    2. +
    3. In the \b Modification menu select the Split into Tetrahedra item or +click "Split into Tetrahedra" button in the toolbar. + +\image html split_into_tetra_icon.png +
      "Split into Tetrahedra" button
      + +The following dialog box will appear: + +\image html split_into_tetra.png + +\par +
        +
      • The main list contains the list of volumes. You can click on +a volume in the 3D viewer and it will be highlighted (lock Shift +keyboard button to select several volumes). Click \b Add button and +the ID of this volume will be added to the list. To remove a +selected element or elements from the list click \b Remove button. Sort +list button allows to sort the list of IDs. \b Filter button allows to +apply a definite filter to the selection of volumes. +
        Note: If you split not all adjacent non-tetrahedral volumes, your mesh becomes +non-conform.
      • +
      • Apply to all radio button allows to split all +volumes of the currently displayed mesh or submesh.
      • +
      + +
        +
      • \b Split hexahedron + +
          +
        • Into 5 tetrahedra and Into 6 tetrahedra allows to +specify the number of tetrahedra a hexahedron will be split into. If the specified method does +not allow to get a conform mesh, a generic solution is applied: an additional node +is created at gravity center of a hexahedron, serving an apex of tetrahedra, all quadrangle sides of the hexahedron are split into two triangles each serving a base of a new tetrahedron.
        • +
        + +
      • + +
      • Select from set of fields allows to choose a submesh or an +existing group whose elements will be automatically added to the +list.
      • +
      + +
    4. Click the \b Apply or Apply and Close button to confirm the operation.
    5. +
    +*/ diff --git a/doc/salome/gui/SMESH/input/symmetry.doc b/doc/salome/gui/SMESH/input/symmetry.doc index 967fff2c1..9daebe39e 100644 --- a/doc/salome/gui/SMESH/input/symmetry.doc +++ b/doc/salome/gui/SMESH/input/symmetry.doc @@ -5,7 +5,7 @@ \n This geometrical operation allows to perform a symmetrical copy of your mesh or some of its elements. -To create a symmtrical copy of the mesh: +To create a symmetrical copy of the mesh:
    1. From the \b Modification menu choose \b Transformation -> \b Symmetry item or click @@ -76,6 +76,7 @@ name in the adjacent box);
    2. Click \b Apply or Apply and Close button to confirm the operation.
    3. +
    diff --git a/doc/salome/gui/SMESH/input/translation.doc b/doc/salome/gui/SMESH/input/translation.doc index 2f0f0743e..b5e338094 100644 --- a/doc/salome/gui/SMESH/input/translation.doc +++ b/doc/salome/gui/SMESH/input/translation.doc @@ -65,6 +65,7 @@ name in the adjacent box);
  • Click \b Apply or Apply and Close button to confirm the operation.
  • +
    See Also a sample TUI Script of a \ref tui_translation "Translation" operation. diff --git a/doc/salome/gui/SMESH/input/tui_creating_meshes.doc b/doc/salome/gui/SMESH/input/tui_creating_meshes.doc index 87f740e98..359ffd7d5 100644 --- a/doc/salome/gui/SMESH/input/tui_creating_meshes.doc +++ b/doc/salome/gui/SMESH/input/tui_creating_meshes.doc @@ -82,6 +82,67 @@ quadra.Compute() \endcode +
    +

    Change priority of submeshes in Mesh

    + +\code +import salome +import geompy +import smesh +import SMESH + +Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200) +[Face_1,Face_2,Face_3,Face_4,Face_5,Face_6] = geompy.SubShapeAllSorted(Box_1, geompy.ShapeType["FACE"]) + +# create Mesh object on Box shape +Mesh_1 = smesh.Mesh(Box_1) + +# assign mesh algorithms +Regular_1D = Mesh_1.Segment() +Nb_Segments_1 = Regular_1D.NumberOfSegments(20) +Nb_Segments_1.SetDistrType( 0 ) +MEFISTO_2D = Mesh_1.Triangle() +Max_Element_Area_1 = MEFISTO_2D.MaxElementArea(1200) +Tetrahedron_Netgen = Mesh_1.Tetrahedron(algo=smesh.NETGEN) +Max_Element_Volume_1 = Tetrahedron_Netgen.MaxElementVolume(40000) + +# create submesh and assign algorithms on Face_1 +Netgen_1D_2D = Mesh_1.Triangle(algo=smesh.NETGEN,geom=Face_1) +SubMesh_1 = Netgen_1D_2D.GetSubMesh() +NETGEN_2D_Simple_Parameters_1 = Netgen_1D_2D.Parameters(which=smesh.SIMPLE) +NETGEN_2D_Simple_Parameters_1.SetNumberOfSegments( 4 ) +NETGEN_2D_Simple_Parameters_1.LengthFromEdges() + +# create submesh and assign algorithms on Face_2 +Netgen_1D_2D_1 = Mesh_1.Triangle(algo=smesh.NETGEN,geom=Face_2) +SubMesh_2 = Netgen_1D_2D_1.GetSubMesh() +NETGEN_2D_Simple_Parameters_2 = Netgen_1D_2D_1.Parameters(which=smesh.SIMPLE) +NETGEN_2D_Simple_Parameters_2.SetNumberOfSegments( 8 ) +NETGEN_2D_Simple_Parameters_2.LengthFromEdges() +smeshObj_1 = smesh.CreateHypothesis('NETGEN_SimpleParameters_2D', +'NETGENEngine') + +# create submesh and assign algorithms on Face_3 +Netgen_1D_2D_2 = Mesh_1.Triangle(algo=smesh.NETGEN,geom=Face_3) +SubMesh_3 = Netgen_1D_2D_2.GetSubMesh() +NETGEN_2D_Simple_Parameters_3 = Netgen_1D_2D_2.Parameters(which=smesh.SIMPLE) +NETGEN_2D_Simple_Parameters_3.SetNumberOfSegments( 12 ) +NETGEN_2D_Simple_Parameters_3.LengthFromEdges() + +# check exisiting submesh priority order +[ [ SubMesh_1, SubMesh_3, SubMesh_2 ] ] = Mesh_1.GetMeshOrder() +# set new submesh order +isDone = Mesh_1.SetMeshOrder( [ [ SubMesh_1, SubMesh_2, SubMesh_3 ] ]) +# compute mesh +isDone = Mesh_1.Compute() + +# clear mesh result and compute with other submesh order +Mesh_1.Clear() +isDone = Mesh_1.SetMeshOrder( [ [ SubMesh_2, SubMesh_1, SubMesh_3 ] ]) +isDone = Mesh_1.Compute() + +\endcode +
    \anchor tui_editing_mesh

    Editing of a mesh

    diff --git a/doc/salome/gui/SMESH/input/tui_defining_hypotheses.doc b/doc/salome/gui/SMESH/input/tui_defining_hypotheses.doc index 04725fdc6..80944666e 100644 --- a/doc/salome/gui/SMESH/input/tui_defining_hypotheses.doc +++ b/doc/salome/gui/SMESH/input/tui_defining_hypotheses.doc @@ -514,32 +514,69 @@ Mesh_1.Compute() \anchor tui_radial_quadrangle

    Radial Quadrangle 1D2D example

    \code -import salome -import geompy -import smesh -import StdMeshers +from smesh import * + +SetCurrentStudy(salome.myStudy) # Create face from the wire and add to study -WirePath = geompy.MakeSketcher("Sketcher:F 0 0:TT 20 0:R 90:C 20 90:WW", [0, 0, 0, 1, 0, 0, 0, 0, 1]) -Face = geompy.MakeFace(WirePath,1) +Face = geompy.MakeSketcher("Sketcher:F 0 0:TT 20 0:R 90:C 20 90:WF", [0, 0, 0, 1, 0, 0, 0, 0, 1]) geompy.addToStudy(Face,"Face") +edges = geompy.SubShapeAllSorted(Face, geompy.ShapeType["EDGE"]) +circle, radius1, radius2 = edges +geompy.addToStudyInFather(Face, radius1,"radius1") +geompy.addToStudyInFather(Face, radius2,"radius2") +geompy.addToStudyInFather(Face, circle,"circle") -# Define geometry for mesh, and 1D parameters + +# Define geometry for mesh, and Radial Quadrange algorithm mesh = smesh.Mesh(Face) -Wire_discretisation = mesh.Segment() -Nb_Segments = Wire_discretisation.NumberOfSegments(5) -Nb_Segments.SetDistrType( 0 ) +radial_Quad_algo = mesh.Quadrangle(algo=RADIAL_QUAD) -# Define 2D parameters and Radial Quadrange hypothesis -Number_of_Layers = smesh.CreateHypothesis('NumberOfLayers2D') -Number_of_Layers.SetNumberOfLayers( 4 ) -mesh.AddHypothesis(Number_of_Layers) -RadialQuadrangle_1D2D = smesh.CreateHypothesis('RadialQuadrangle_1D2D') -mesh.AddHypothesis(RadialQuadrangle_1D2D) +# The Radial Quadrange algorithm can work without any hypothesis +# In this case it uses "Default Nb of Segments" preferences parameter to discretize edges +mesh.Compute() +# The Radial Quadrange uses global or local 1d hypotheses if no its own hypotheses assigned. +# Define global hypotheses to discretize radial edges and a local one for circular edge +global_Nb_Segments = mesh.Segment().NumberOfSegments(5) +local_Nb_Segments = mesh.Segment(circle).NumberOfSegments(10) +mesh.Compute() + +# Define own parameters of Radial Quadrange algorithm +radial_Quad_algo.NumberOfLayers( 4 ) mesh.Compute() \endcode +\anchor tui_quadrangle_parameters +

    Quadrangle Parameters example

    +\code +import geompy +import smesh +import StdMeshers + +# Get 1/4 part from the disk face. +Box_1 = geompy.MakeBoxDXDYDZ(100, 100, 100) +Disk_1 = geompy.MakeDiskR(100, 1) +Common_1 = geompy.MakeCommon(Disk_1, Box_1) +geompy.addToStudy( Disk_1, "Disk_1" ) +geompy.addToStudy( Box_1, "Box_1" ) +geompy.addToStudy( Common_1, "Common_1" ) + +# Set the Geometry for meshing +Mesh_1 = smesh.Mesh(Common_1) + +# Create Quadrangle parameters and define the Base Vertex. +Quadrangle_Parameters_1 = smesh.CreateHypothesis('QuadrangleParams') +Quadrangle_Parameters_1.SetTriaVertex( 8 ) + +# Define 1D hypothesis and cmpute the mesh +Regular_1D = Mesh_1.Segment() +Nb_Segments_1 = Regular_1D.NumberOfSegments(10) +Nb_Segments_1.SetDistrType( 0 ) +status = Mesh_1.AddHypothesis(Quadrangle_Parameters_1) +Quadrangle_2D = Mesh_1.Quadrangle() +Mesh_1.Compute() +\endcode \n Other meshing algorithms: diff --git a/doc/salome/gui/SMESH/input/tui_transforming_meshes.doc b/doc/salome/gui/SMESH/input/tui_transforming_meshes.doc index 163afe0e4..1658e58c5 100644 --- a/doc/salome/gui/SMESH/input/tui_transforming_meshes.doc +++ b/doc/salome/gui/SMESH/input/tui_transforming_meshes.doc @@ -44,6 +44,37 @@ angle270 = 1.5 * math.pi mesh.Rotate([], axisXYZ, angle270, 1) \endcode +
    +\anchor tui_scale +

    Scale

    + +\code +import geompy +Box = geompy.MakeBoxDXDYDZ(200, 200, 200) +f = geompy.SubShapeAllSorted(Box, geompy.ShapeType["FACE"]) + +import smesh,SMESH +import StdMeshers +Mesh1 = smesh.Mesh(f[0]) +Regular_1D = Mesh1.Segment() +Nb_Segments_1 = Regular_1D.NumberOfSegments(3) +Nb_Segments_1.SetDistrType( 0 ) +Quadrangle_2D = Mesh1.Quadrangle() +isDone = Mesh1.Compute() + +#Perform scale opration for whole mesh with creation of new mesh +newMesh = Mesh1.ScaleMakeMesh(Mesh1,SMESH.PointStruct(100,100,200),[0.5,0.3,0.7],True,"ScaledMesh") + +#Perform scale operation for whole mesh with copy of elements +Mesh1.Scale(Mesh1,SMESH.PointStruct(200,100,100),[0.5,0.5,0.5],True,True) + +#Perform scale opration for two edges with moving of elements +Mesh1.Scale([1,2],SMESH.PointStruct(-100,100,100),[0.8,1.0,0.7],False) + +#Perform scale opration for one face with moving of elements +Mesh1.Scale([21],SMESH.PointStruct(0,200,200),[0.7,0.7,0.7],False) +\endcode +
    \anchor tui_symmetry

    Symmetry

    @@ -319,4 +350,4 @@ mesh.Compute() mesh.SewSideElements([69, 70, 71, 72], [91, 92, 89, 90], 8, 38, 23, 58) \endcode -*/ \ No newline at end of file +*/ diff --git a/doc/salome/gui/SMESH/input/tui_viewing_meshes.doc b/doc/salome/gui/SMESH/input/tui_viewing_meshes.doc index 862cb302e..7b2af8cb9 100644 --- a/doc/salome/gui/SMESH/input/tui_viewing_meshes.doc +++ b/doc/salome/gui/SMESH/input/tui_viewing_meshes.doc @@ -83,4 +83,53 @@ for i in keys: pass \endcode + + +
    +\anchor tui_find_element_by_point +

    Find Element by Point

    + +\code +import geompy +import smesh +import SMESH + +# Create a geometry to mesh +box = geompy.MakeBoxDXDYDZ(100,100,100) + +# Create a mesh +mesh = Mesh(box,"Mesh") +mesh.AutomaticHexahedralization() +mesh.Compute() + +# Create a point +x,y,z = 0, 0, 1 + +# Find all elements (except 0D ones) located at the point +all_elems_except_0D = mesh.FindElementsByPoint(x,y,z) +assert( len(all_elems_except_0D) == 4) + +# Find nodes at the point +nodes = mesh.FindElementsByPoint(x,y,z, SMESH.NODE ) +assert( len(nodes) == 0) +assert( len( mesh.FindElementsByPoint(x,y,0, SMESH.NODE)) == 1) + +# Find an edge at the point +edges = mesh.FindElementsByPoint(x,y,z, SMESH.EDGE ) +assert( len(edges) == 1) + +# Find faces at the point +edges = mesh.FindElementsByPoint(x,y,z, SMESH.FACE ) +assert( len(edges) == 2) + +# Find a volume at the point +vols = mesh.FindElementsByPoint(x,y,z, SMESH.VOLUME ) +assert( len(vols) == 1) + +# Find 0D elements at the point +edges = mesh.FindElementsByPoint(x,y,z, SMESH.ELEM0D ) +assert( len(edges) == 0) + +\endcode + */ diff --git a/doc/salome/gui/SMESH/input/viewing_meshes_overview.doc b/doc/salome/gui/SMESH/input/viewing_meshes_overview.doc index ee4c6dd4a..207c4dda5 100644 --- a/doc/salome/gui/SMESH/input/viewing_meshes_overview.doc +++ b/doc/salome/gui/SMESH/input/viewing_meshes_overview.doc @@ -24,6 +24,9 @@ Object Browser, applying all recent changes. information about the mesh.
  • \ref mesh_element_info_anchor "Mesh Element Info" - provides basic information about the selected element of the mesh.
  • +
  • \subpage find_element_by_point_page "Find Element by Point" - +allows to find all mesh elements, to which belongs a point with the +given coordinates.
  • \subpage numbering_page "Numbering" - allows to display the ID numbers of all meshing elements or nodes composing your mesh in the viewer.
  • @@ -31,9 +34,13 @@ viewer. Wireframe, Shading and Nodes presentation.
  • \subpage display_entity_page "Display Entity" - allows to display Faces, Edges or both.
  • +
  • 2D Quadratic - allows to select between the representation +of quadratic edges as broken lines or as arcs
  • Orientation of faces - shows vectors of orientation of -faces of the selected mesh
  • -
  • Colors / Size - allows to select color and size of +faces of the selected mesh. Vector is shown for each 2D mesh element +and for each free face of 3D mesh element. Vector direction is calculated by +the first three nodes of face as a cross product of vectors n1-n2 and n1-n3.
  • +
  • \subpage colors_size_page "Colors / Size" - allows to select color and size of meshes.
  • \subpage transparency_page "Transparency" - allows to change the transparency of mesh elements.
  • @@ -43,7 +50,12 @@ presents various information about meshes.
  • Hide - allows to hide the selected mesh from the viewer.
  • Show Only -allows to display only the selected mesh, hiding all other from the viewer.
  • Dump view - exports an object from the viewer in bmp, png, jpg or jpeg image format.
  • -
  • Change background - allows to redefine the background color. By default it is black.
  • +
  • Change background - allows to redefine the background +color. By default it is black.
  • +
  • View Operations checkbox - allows to show/hide the +visualization toolbar in the viewer window.
  • +
  • Recording Operations - allows to show/hide the recording +toolbar in the viewer window.
  • */ diff --git a/doc/salome/gui/SMESH/static/doxygen.css b/doc/salome/gui/SMESH/static/doxygen.css index 88e613d23..eb9f3c6a2 100755 --- a/doc/salome/gui/SMESH/static/doxygen.css +++ b/doc/salome/gui/SMESH/static/doxygen.css @@ -1,5 +1,35 @@ -H1 { +body { + font-family: Arial, Helvetica, sans-serif; + background-color: #ffffff; +} + +h1 { text-align: center; + text-decoration: none; + border: none; + line-height: 25px; + text-align: center; +// text-transform:uppercase; + background: #D9f4fd; + font-size: 12pt; + font-weight: bold; + border: 1px solid #CCCCCC; + -moz-border-radius: 8px; + -moz-box-shadow:5px 5px 5px rgba(0, 0, 0, 0.15); +/* background-color: rgb(75, 140, 185); + color: #ffffff; + text-align: center; + height: 25px;*/ + +} + +h2 { + font-size: 12pt; + font-weight: bold; +} + +table { + font-size: 10pt; } CAPTION { @@ -11,16 +41,6 @@ A.qindex {} A.qindexRef {} -/* Link to any cross-referenced Doxygen element */ -A.el { - text-decoration: none; - font-weight: bold -} - -A.elRef { - font-weight: bold -} - /* Link to any cross-referenced Doxygen element inside a code section (ex: header) */ @@ -37,7 +57,49 @@ A.codeRef { A:hover { text-decoration: none; - background-color: lightblue + background-color: lightblue; +} + +div.contents { + font-family: Arial, Helvetica, sans-serif; + font-size: 10pt; +} + +div.navpath { + font-size: 11pt; +} + +div.version { + background-color:#ffffde; + border:1px solid #cccccc; + font-family: Arial, Helvetica, sans-serif; + font-size: 9pt; + text-align: center; + width:100px; + -moz-border-radius: 8px; +// -moz-box-shadow:5px 5px 5px rgba(0, 0, 0, 0.15); +} + +div.header { + background: url("head.png"); + background-color: #175783; + border: 1px solid; + height: 80px; + background-repeat: no-repeat; + margin-bottom: 10px; +} + +div.tabs { + display: none; +} + +div.footer { + background-color: #D9f4fd; + border: 1px solid #AAAAAA; + font-family: Arial, Helvetica, sans-serif; + font-size: 11px; + padding: 10px; + margin-top: 15px; } DL.el { @@ -45,10 +107,8 @@ DL.el { } /* A code fragment (ex: header) */ -DIV.fragment { - width: 100%; +div.fragment { border: none; - background-color: #CCCCCC } /* In the alpha list (coumpound index), style of an alphabetical index letter */ @@ -94,10 +154,6 @@ DIV.groupText { font-size: smaller } -BODY { - background: #FFFFFF; -} - /*div.div-page { background-color: #FFFFFF; margin-left: 1em; @@ -168,3 +224,212 @@ span.comment { color: #800000 } span.preprocessor { color: #806020 } span.stringliteral { color: #002080 } span.charliteral { color: #008080 } + +/* @group Code Colorization */ + +.fragment { + font-family: monospace, fixed; + font-size: 10pt; +} + +pre.fragment { + width: 95%; + border: 1px solid #CCCCCC; + -moz-border-radius: 8px; + -moz-box-shadow:5px 5px 5px rgba(0, 0, 0, 0.15); + background-color:#EEF3F5; + padding: 4px 6px; + margin: 4px 1px 4px 1px; +} + +/* Top Navigation style */ + +div.navigation { + margin-bottom:20px; +} + +/* Left navigation panel style */ + +body.ftvtree { + background-color: #D9f4fd; + margin: 10px; +} + +div.directory { + margin: 0; +} + +div.directory.p { + margin: 0; +} + +h3.swap { + font-size: 10pt; + margin-bottom: 0; +} + +/* Link to any cross-referenced Doxygen element */ +a.el { + text-decoration: none; + font-family: Arial, Helvetica, sans-serif; + font-weight: bold; + font-size: 9pt; + color: #551a8b; +} + +a.el:hover { + background-color: transparent; +} + +a.elRef { + font-weight: normal; +} + + +#MSearchBox { + -moz-border-radius:8px 8px 8px 8px; + background-color:white; + border:1px solid #84B0C7; + margin:0; + padding:0; + white-space:nowrap; +} + +div.directory img { + vertical-align:-30%; +} + +div.directory p { + white-space:nowrap; + margin: 0; +} + +div.directory-alt div { + display: none; + margin: 0px; +} + + +div.directory div { + display: none; + margin: 0px; +} + +div.version { + background-color:#ffffde; + border:1px solid #cccccc; + font-family: Arial, Helvetica, sans-serif; + font-size: 9pt; + text-align: center; + width:100px; + -moz-border-radius: 8px; +// -moz-box-shadow:5px 5px 5px rgba(0, 0, 0, 0.15); +} + +/* @group Member Descriptions */ + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #FAFAFA; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #ccc; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memTemplParams { + color: #606060; + white-space: nowrap; +} + +/* @end */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; + margin-left: 3px; +} + +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.memitem { + padding: 0; + margin-bottom: 10px; +} + +.memname { + white-space: nowrap; + font-weight: bold; +} + +.memproto, .memdoc { + border: 1px solid #84b0c7; +} + +.memproto { + padding: 0; + background-color: #d5e1e8; + font-weight: bold; + -webkit-border-top-left-radius: 8px; + -webkit-border-top-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -moz-border-radius-topleft: 8px; + -moz-border-radius-topright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + +} + + + +.memdoc { + padding: 2px 5px; + background-color: #eef3f5; + border-top-width: 0; + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +/* @end */ diff --git a/doc/salome/gui/SMESH/static/footer.html b/doc/salome/gui/SMESH/static/footer.html index 6eab03cf2..fdfb138ca 100755 --- a/doc/salome/gui/SMESH/static/footer.html +++ b/doc/salome/gui/SMESH/static/footer.html @@ -3,10 +3,11 @@ -
    + diff --git a/doc/salome/gui/SMESH/static/header.html.in b/doc/salome/gui/SMESH/static/header.html.in new file mode 100755 index 000000000..6795e96eb --- /dev/null +++ b/doc/salome/gui/SMESH/static/header.html.in @@ -0,0 +1,10 @@ + + + + + $title + + +
    +
    Version: @VERSION@
    + diff --git a/doc/salome/tui/Makefile.am b/doc/salome/tui/Makefile.am index b8cd5eee5..7cc0f4a8f 100644 --- a/doc/salome/tui/Makefile.am +++ b/doc/salome/tui/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,13 +16,17 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : Makefile.in # Author : Vasily Rusyaev (Open Cascade NN) # Module : doc # include $(top_srcdir)/adm_local/unix/make_common_starter.am -EXTRA_DIST += images static +EXTRA_DIST += images static/doxygen.css static/footer.html + +tuidocdir = $(docdir)/tui/SMESH +tuidoc_DATA = images/head.png images/smeshscreen.png dist_doc_DATA = \ extra/AddNetgenInSalome2.pdf \ diff --git a/doc/salome/tui/doxyfile.in b/doc/salome/tui/doxyfile.in index 787e16464..0eb988674 100755 --- a/doc/salome/tui/doxyfile.in +++ b/doc/salome/tui/doxyfile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -24,7 +24,7 @@ #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- -PROJECT_NAME = "Mesh Module Programming Guide v.@VERSION@" +PROJECT_NAME = "SALOME Mesh Module Developer" PROJECT_NUMBER = OUTPUT_DIRECTORY = SMESH CREATE_SUBDIRS = NO @@ -99,8 +99,9 @@ WARN_LOGFILE = log.txt INPUT = @top_srcdir@/src \ @top_srcdir@/bin \ @top_srcdir@/idl \ - @top_builddir@/bin -FILE_PATTERNS = *.idl *.hxx *.cxx *.h *.c *.hh *.cc @DOXYGEN_PYTHON_EXTENSION@ + @top_builddir@/bin \ + @srcdir@/input +FILE_PATTERNS = *.idl *.hxx *.cxx *.h *.c *.hh *.cc @DOXYGEN_PYTHON_EXTENSION@ *.doc RECURSIVE = YES EXCLUDE = EXCLUDE_SYMLINKS = NO @@ -137,9 +138,9 @@ IGNORE_PREFIX = GENERATE_HTML = YES HTML_OUTPUT = . HTML_FILE_EXTENSION = .html -#HTML_HEADER = @srcdir@/static/myheader.html -#HTML_FOOTER = @srcdir@/static/footer.html -#HTML_STYLESHEET = @srcdir@/static/doxygen.css +HTML_HEADER = @builddir@/static/header.html +HTML_FOOTER = @srcdir@/static/footer.html +HTML_STYLESHEET = @srcdir@/static/doxygen.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = diff --git a/doc/salome/tui/images/head.png b/doc/salome/tui/images/head.png new file mode 100755 index 0000000000000000000000000000000000000000..307d9ef9a4c07f8fba2c8721309a978433bcf63c GIT binary patch literal 78545 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
    eZ_V9+g<-2P3vp5# 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 D4zrO! literal 0 HcmV?d00001 diff --git a/doc/salome/tui/images/smeshscreen.png b/doc/salome/tui/images/smeshscreen.png new file mode 100755 index 0000000000000000000000000000000000000000..638870e5fb2c49febd11e67fb7781615980cd9fd GIT binary patch literal 61648 zcmY&<1yog0w>1(XQVIx23ztp_X;4DCyFt3UOX-da(jAxX?(Qxx-67pw|H1cv?;DTd z5WMbl_CEWpJ=a`wO@d{mMNr@3y@i2+K@}4fl81qT6NiC$W&Gwf@JWJm104(u35=M~ zH$|6}gBIr$#hIm>=hkcK^tt8u+Mif*TtRds-#aL4Gbp}?|0KWVGrP#6h*Je8;7-xY zoS9?=lgHtv&$8i3V7*6>Q^b1p?d$v%Gq>mVpB3WxRC1AeU9lNdK=S@7}<}{(AXVzuKPzT59dB+>Rr%ko*510^e50b*1S05jEcY z8};vVj%gbhR!a0*-2b`qvN26YWcaZ2PPf<0C`gz9* zCi*tQ1xv=XO`;?WT*sWpgB(#(P7Ibp7NAyb!RIqSN;vwv#^eopaL2bOwhm=PZJ(q* z;XnSlJmP!OPmsV48}gv5R?d!MedGfX>f=emIB5^G+~NFi^F()le#KTBCXx5^&%j+9 zH;Rn)QRBg%=7se0GpC#Civ5dMI1f-&sv+3OE`~bF+z#rltj{*8ze?T|m-)}QH_EKw zmsq+$n+O-G^1KFf(C_4H%?uz^mw%Lj8_hn!MN7RrXR)T%oO_an3Odho>Dk|1Roak6 zf8m1WD=!0<;IN1>(=|u+O=?sZLNxEt(zmcCNq8KO+?xG5|jiB!=$3^a%^WLJHY@*ki51cLITj%&`XrJVcbhlv~S-6G67 zw<%`FVODUhpI2fgPiiLK*>pX(B3mKSC0jsuvm1vu_obJw4(BxZFaIDuQgdSpQ^(Ze z(apVtUeU0wON*8kQkz@R;WPfWaa^0qQD+vG@^?}(YAkvoiyd!V`VzeZzqL(l<#j5~ zG$H2iF4tUU{2rlN3&}Q!A#O@?X7hIR9Q7a9GZf3s+6*{@(y@kZKyU!#J#0NL?UdHt4X;{FN zrs#XOHo_H>o~*E}#wl6e#v0GrvbUK+sfQ5qWc=Q9zLRXfXR|aMqw`hUI@xiwtlV;6 ztDHOObIv4BRMWW38~e8(y<^H(HWq8`S8_LV;@s%vzq7BNua&>dUOzw5iPtpb&Fe_Q zbva`sv-1w`#itprpInCJmz$Wpt+-o~x#5wQT(eb);@{oRCt`;TiF79VlUuz3w)tJ& z7qri)agu(HGv$;P8a7-kEyK0155wC>u@ki4j(Hmq?+^Tl+6WLJE-qVmh8A8r+Vplu zU`Jn@udOFKEvs4epLfO`-ecu@sY|PmH9Sx)c z?NhpVhPIXN%_{I0&^&Cx)jMD>o+&SIc2!=D<=Ll7C!5e}w|NYe_MHt__CaSl*FVb= zlxvZ9D8tktX7Vk!4F3a#*06^?^CjXYy`J{-PKaMQW@bJi zXc{sds^d|3#LsKd_G{gW6oyySN8ag#3>lL)c$obB;}%lE2q00%r%}t}_Vo#yb-gR! z=hCRdWu>OENBTZgOyt$E;|2T8q!yby_?sOg_a(8?K4~1W8eXhA@L?@~5!wASo-#39 z`qXF@TjbuG1Eh{1i~DcSEoKYia88YX9!k@ppUZwXt?HyZYVmjZ=@k1kCRo02u%Suu zz{_3z8QxnP`oRh?GHbhwE!Aox8+WcwCzTxl%2lw_;me=jBsa-P- zG&HJdzLq#@w?JzZd7BV=cNQGyr^~$;E~k}w!_k2Zbwhg6Uiy{+x2CFZqh;@1%lJO8 z>AUT*QO6tY9%-UkrRa$Uw7*Zie?s8H;`nqu^n#$uW$j58m`_7j`>|hgq@_fjXf5oec1`N*gRxP26AnX-2uOVAJ~uZ}vi4hz|^!JI6W8OAY7tR&3Lxd%+W3@Jl|PK80BZPFzDxTbaQLc67Q z@@zEwR$#w*SD9-xGtQ8|_<5g&!@07A)l<>93^R$pbGdpA-TYcDM4g@p+!C>Mbp37S zn*YyJ)9*E@jdG6#Ui!j$N6u5Go1E62+vQISNA@L`%q2%qXtR!f+14C>#e#K*sLSE` z)AJoviO_vNZ?pAMxu^9@E`Y3kb%Qa70hqnjTZAfym)|MFeZ4(?K+nxTSoUf3cpH}y z>Kp`mmn^qwx6~+k-$}kCMl+OLVbk3pU@IaIDoS)B4+=#4(%J1Ofgk>UM%R!7yGzTD zNT%sgz-L&vJ|kei1p6zv{C6IMP)aD`)-OhSJ#}i{LwoHvfTawk8OykMw8leNVJz0*PiaYuxE7p9q z`f8}Q?v%BqxH>QrlndzRNw3mb+mX|2My|KiYz8E6Zj&w1Z`wFp4AquAA7DYR{(6A9LKf>JToLWima@`<~je4=!F#4o9SAb=@IfDXiI#6YbxR zu&TnZ2Yj9vOf-(Iv`sW3mP=|^TxZ+}EVizuPs@vPOWNkA6f_)Fh+in2Lrx3x)Q88G zyy_idr4NK>w<1aiJ17f@a!-?o=5$5p(tQ6|9f7F&htEsZb$H&c_Z`1QU`rE`%MQxv z)jii12bdVfT3^+v2q6F?PkJ(E<9ChF{#}If$#Ej$xSC`3I+rZ;5NE;4>Y#}((sT0k z*;fnaW%3L3Oe&-ok~bbMNvb^bT^zaisD|CeBL!0^qfxtDMKcf60FPl3L8^dF0x zMH>2Ha`x3v?5mu!%>NbztODNWQ)eX|%2anHoq^c*kLy}Xl2hHR^dKZG;g6G*uYKc8 zz`&pRUhIXe=@8QpXdv>-)4W`$^L;%S6s-ytWsQLB_E-9iZBTFzNhr5R(hVg*gh6;@ z1!k()xRBt?>KUskwIu8q<(xtUZLnCSR3hVG8Cv2;Ut zn@9iMA;e@GQ15cm_q`;6?sYLR^#?(ACMn;a(4Ojn4P0e)zfyd~8CF^1u#8>oBqOk7 zfnWCLZArqeS-CA>xYI#tCOJWN>8GGl3NUn>x>TLZckfPxLR9I#(P2}v_X%3nrZ)zBueDkc78JzHlzp>QPDR(h z)7^tS+vtfS)$wK^R-8E(ENbRQ`q@BY1B~42pG8F#;sX-PQT%<_R2bZ&^y3tMLeEcKdCA0Ra&CJa5 ztx@DOprV$R^qI2oO6;QD8`FQLWfe3;JQWgz$T$`hjrt*B3)E-~l`0gMei+dp+FzrzZ0e400hA zmY@>`Wnu;wm;_Tv^9pH+QqE$KE>23)sY=lV^@7)s%^-E2%^2^sLlBFk@99QgmEG1Lnjv9W zx$!ZPCIik;Jmc{@e*5iV2X_?EamUfZ^Zm}VoSND|v07CEv*Fvk6uY;{U#$0>z2J6N zGV@n-uSJ|U=Bp*WY=;;VIBZFQ)n->zL>DOJp{a8dh1s^OCLjQ-3W-mC84>`47Qz{R=hW6>kFX*c;K-}8 zqD1xuc8SZWrwGdFp>^m+sqzFs%yA*V^wct3Y+PYoJktYo5VrINyShNf)MwprYhTS{_Ki6RQ)Ef zbMfw8qv5Ww=$^dmY-{MYi}-qL4G5N+~-(QC62FAu!dR?!x zqN%*v(oylhkO2R|`x@+gKlbbFqzm012!WHEjYtJ$<=5>^$E^~UQuLU;GJjRlS}x1< zaF>oMnX&Yp%kQ(BY*B6c4xP*GccdS@?xB$;tn4px1mhJuFULyWue?!0q&wCiqOL?)^17Cux_bYIfS;hp|fh$ zsOfBe9CZJeUhX3G5^&@E4o+52HB`5mrVU~RSSxw_H*eZ2B|9_Ut;xbmv4~QDP1M6= z73dqOqs1w{I=u_+4eHzY+vu}yvu@WEZRoEkE-Y1m8}JK)Z<3^EotBY1?m!sW6}+(V zO+iV%P+Y(IJu+fkpRX0JNdYJzQ$G=Vz%QVXk_iP_4Yp^kySjZkCP$v;=>g+RLS*&Q z_|pIeDmY9~uK%q;bWDuz*uG$#K{*V_#>KW?Qq#&e1w3&B*HE8=#>ytlGa1yiMnN0p zFSwh5=U7dp7WdnBw#k{1oSa;X$lSuh;Pz~5IE^>?Ba4yEylI}ClG04x0}JYL%QcY# zL^89o65MpuNUIfjb*5$8^FfI8eFWDY6*isf_ztr)->pHd!!snLj<)IHMn$dAf`t{oZJFWLe`zqWpDIRA7JkJm3s&PI1Pp9ak zeD?=vkMkOBi*EZRl4(4NYE?#`^?OmQ+8(biDw3^RU*hMp?YfY*_v5A4HI%+?u`|_q zS;yUTsfyT93qpY>l;rn!*T)YK5(Rnc;CU0a*a@0Ycu-Jb8* zKR;eOCtL4~E8wFzd0&7OC^qgO$yTIz;gv3@KWJ!a3yO;YYwiRUC&3@rz#B$4L`eG{6#y2YT!FUS9oWv^S8lAz4nlEQFD`$b0rn6o`bon zM1Jq5s3pXIz#{aQ(`8ATNs%=AU1Q<8!#x$A7f0)&UTpkto7n`p*m&%X(|WOjT5^it z;_pHOg8Y-;u(Q8IVvCUk0T7=97E@H}IXqo+a*Z}Y9RH|ky6xsZ9xaX<>evmC@9IB4 zt~`%Ou`hK4r_z6DYfm1+eN^xJm86~fxVZ}em3z(Bp{@1es?qh#Kq7!Pl19G)fP-Ks z&D|<}zs+V%K)G1;m!Vp*YK0G{{dUf?_eMCoYQ2qK+x(l=m#ZrJh`Ly%v^`FRrMY%< z!nVvzP1kn#pE+q&N;j9BSN^Ta`{`CSPMCwhs5k6mv3gC&OC+X0UF1E2D;gRS8ymSG zl8KX+Nyv=NQRbx$0gn5BJ{yk`lmh4FqT*=tZ=rYB8q-vs%+3h=%4XBbqgCW>ZLOS) zB@@=;M2uu&*nYBABa*P3%YI4SWTt21)=<3t!)f0+kZ7u$4%HbN|B})T{g|sXY`)!2 zF4m}vC@O1BDk^O(TyPpzT<*XlOI=`!sYEwescnR71%~(ud|E%{0P^elMkIf4CEc>e z`3M?+Z*`fVjODa~x3fxHW|9QgSY2M4n_2qy^{8VS5W+7nU?NL+(WVO(jtGY|h{Wd& z=>;zb;oDn2OkN@oHqzXmPaw@-9vI@Uj=u6`i$v;O{GF)h)s~zRf;v-!3JV0yPy?`|)*NOR%IM8Ie^+ffu`@ zyOV64JLbfycGko@fWliLRoJV1U}Iww%APBA+dqjb>t)`L`(Dg7 z&&xV-3>t&%V>cB1_qSs%z`IH0c4jc#GW0Bc{`)ywj3VY>t|{;Xt+LJ3nAQ4q+dZ$b z*S(~C0oI3X+B-U9^Se{b-l^Hy{umkF0RS;h4i>WcFdJaiUcDe_9HY)CG~yo5J~C}c z&OU+^BYgGL<>oF}r>|PlXe6ztRIBN3DgKb38x!UA?LpNT*Tv4qy!2?R4Ir>m%1jeE zQl+K2AFD4ocBxmE=XI&>vMCdp38AS&=Fi?#SnFNr{F}M)I^x7*qXWIwlFB9OJtcKZ z;&gajl@20Z;`jF%w}kKh|uk6cSr{?^!p+VHz47~9`@vU z^qeI_ocT>(_6pkE3s+=E$hAf;f7{ctB#CfA=hkd&1`F~ID4Sl&Ff=-B>>gp)Fgi2c z{nGF2g~;&>fplX1A;>YBDSU{zhUC+%exI*e%=?*84TNFEI(O%He&h+u&R|utGo|^Z^0eU1u%w=URgmnu`hJ2ox zMU_qBQ)&@Mt=I9?3J_UM&0*TI=1yRnhp!nQpS*63)SvYuI0L+&?^mXwP!{hekJ7s} zrRIxC3DfJU*2&g~DH;A$+Om4^{c&5{nBC)juJ`$=2yxZXqvIlQP{VLP``~+fkTJy5 zruKThPn=`qw70jXW}x2Aj^z6>7)#Cjhm6qVemRvu>(UpxFAUCM=o8rSa5wkmf4r6P zEHtKg!IZ=E0RuYcqtK(#SE3*cO`A1@=CeUs$yBc2^cuA%I+PD8b%zNr!nl<8uEbm- zfp5pI#!m!fY@0(i==xQCBEL0XoS__N8JJzUxg%-Dy#Df!MpJA_-IqZFqJ19e06T_V zn$kMgoHBjQm$Do2^-!e^2LTE#Eu^90S4&MzxBQ$-^PFg9{WkTs0R=T0? zaRs0#&k^lMqpU2}EwELT>f5g(oC1Nki8MY{m8(1Eu|f*63y~D*{WHx0ya+>zGi)0g zU}BO&R*)bStL^EBMG@?QU9gma6_zV!ns7vA`%RiC{@$XPe7YR7O+qA^)#-5FA0$?< zWkrC72nMZP-}aA<<#MP?4&!v}kA1V{5;c1rkQo!whg1t6EJRAUdGyz<&RRcUG*gNC zfT8s9`k>eXU@?6qZEZ7GGOYCS16cTc%j1?$y#A$wR;ZkFoCHp@dJp@z-g=4HGQ78n z@yxEg+Q3myD!h~k_*3q%EAMqVq*GzJ@I{*IG>5@(IOho&hhg(-!3s!woT`wPqcz~? zIxWN3v)_$V9kErkUCDs~2QiuxqOp60WqY3%InKC)YBHu9%?tcz_cjqX=2rrp)q&r6;kmZAn^@wvf5t`fwUs zG9kCqNoSk3?lMnP@nFO6MSzTNZf-K!b@x9G9v6hW?H#A>u}|BJso1uRkfrVy@4F$+ z(e5atnP~pY96{r483kM&aU2t%`bPx#hgUg5aKR>+0gxDZC4p#=l2Q%pmq1x1cLjvN zF8=~}n}(KMM}d&3K!{l_+d!o(0UD1sV@R=X;?)DA*ws8~(UND!xPya~AhgC48?->% z!Q_C_1(5Fc#p_B{%8=p=ijCU!oLMWEt8D>Y6Ff7T;H0n^@$PRj;N-22+BCWbQJI*Xjkxv4E}ZXCQ~^xYsy29IXTrd%5s`WErTd`_dmP zd7sUl_%p26ap#Qd+56>zZ@1#l+u_hx?HV{9FQyvy3XAHulgw4ibzgM_q8p#C_k66= z_XbkMMQ#b2!3r$E_l!nU#H6I8+!VmOQ+WznS|g@;seg)uON+*i?waZv(YG`wwKQeU zMR&N2jg8O$Xjq@_>pbJtEsU%@KRN%?2z`8iTH*Trp!SgqkKO8tPnBsWlY`>+k|JwO zF-fNKx?h7kBO&vp&S-gvc?*Fc3DMb7YcSc*!a~(qW#afD!S?iU>~NQQ)itr#3nLPd9&+R)#e3 z$N81|9v)eD49(xqu%lS?(IDF{5mG%`vo3 zPEi`Nut%g0T9nvGKYI5D@HsySs)&(evO>KA`jY+m^I}z51*lXdOj~jC+TO&M!GMsY zq%h1&Nhud36Q7qDrRG)9Dj8t1)?zvAf zo;94}1rL;ndRG(3CczX1mKFoUS&C6Q-k8obW!QE-lMwP|Ka? zHWPy31`15(MC5t<{QgvGUrs1$fT7$=GV%58%8U~2E+{AwW|ss>{y;;Pihm=L6!cvn ze*jk+?2>EoRX~b7*bmQUh$e|0$2y~3TfeAC)y+qgDy&b|qK=b5v{bV&Ip*f!k_wHz zgTfuzDlltxh`s}y0-ubZzgz_;7%m&D6;NsplGk(4BL5h<-V4IE5@7%IF_JX#bt41= z4I%h@7wCsv|7BEApXlz}kSr20W;7k5wVdx$J8X0*{D|>GGquV~tU)3g`PLCX4SywO zk>_Jbd{fZpl?r#n+IHb~`I)m&^2oomG>(^y*A&M8j=lY8kT2GNL)H#Zsh!ZaHDizx zhY=1r6*os?J5u%s2M1?QZzC8r@n8C(@$c2Z{Z}-s(+8gjg4b<0q79Igq~5=s50P)* zZ{K%%A9e^20yIYmUT!leUQ_}z(}qAS?(+o}Q4c8BGhqEKiC6|izWc}f^@=xqhCF0} z=#T2q{0!9;!>BeA zIAdI{ZsTV)pg#*CIyGP6zD*pBJ6sbK@%6x_d8885(>);CO zYp(dAk!`8uk6$csx3;!`ESS;HEFw)Hp|6En1Z|ZN)Q>q-&M&<2w1PN!7F|$Qlvi4c7C7}y+lq*xE;LRTc`fMih&-=Lto@jr04XLuzOOmk zxbm{f65jV4sQu9H(-5AbUXT7F0%2GS=NlbElDF5p5xY5Uk<^Q&D7#TvcfXBxLwoNrE zK1PD)eIGNufiT6pH?p#_K$Sp(5eyLP0>zNdPJs}K5IF+`B&vB1$ZEt}ow?0WQ1KZQRVGHzv4sBzSlZVRnx~S-=gr?Z+?Chv$7y#At?Ci{j zE49B;k~ErxogF8AEZ&O}4BaQErA6+^1X?x_(=1aw7=RX@-%pyys@rma(jyO+qZ9Jm1dlR?Hl@shO+bX-vmyL zD#RHAlTp*qh|`*uI1Z1D^lY5M)Oux8y#)kX(Js&;5qq>~_wxE;<%wGh5T{Y`@qy5t z!*OlGT0|KkU&Q?6|Fp?~!#CcE-@otXeo{GE=}R8-uX*+_QVA5*vj#4l|8INmue{t| zbD)cJ^&RP3cv#z|H)uSruC9nB2fDKLX1?`D2#E1zoi~_{7J}2K?Nhl~u?2==su}P; zU%DO1IBMp5UrXh-(kKT1W2TETerbKwbF)+CVn%QmQlQ<V{ePgV9Qx;FU* zrEB;rH@z9#u7DVf;+EzqEEnr5Us`|F^nH;LVab-HxBcG|y*O{OrYl5*cRP_8yVuHN z7M)i-ck7QPkz3t@K9}>iXt9^ed;*gjh)L6mRMI)$V1-Psvc$IiC89%%6W-N@-pdLC z_iOnatG`;r^dv+mOo;xPmqr|&=L7}@N7Lrp0uq|Y-C zm?#*iXIa^yEFSZ9RCL5uEBNk+zLYxme&O87HiPd@8f-W}xS5fPfq~wo4XeMN8kP|! z$Gsofz+3o9-+cZ>yCM4NnVAZM0Su$DwD5()-Yq-S0XQWYechQtC5z?eh9Uji+gr&b z)?l$13e-l)7TePvfCsF2UN8Bkd0RuJXiX8sqPeLgfdW_zBcyoMhJ#58Q!MT^D+T-) zo$tb8sL<4!k=^-cQARKjaj4qcXbk2au8(Lt@UEi>D98O^K-%I-5 zs>T_zmfO&hrm*yG-I~!`+{udwpZ_ivoo{|Pj2iR4C0R*90n=RD%ilgU@H|<9ap&ed z{$-y5V)XO$g)`Y6(BNkc#oA?0eEC4k@AA6|ve+7D-^^>g(8c5b+{d(LK(wJZ#Nl&Q|Cn0@D7? zcOWortwo8J3^6&ySvt7@_ud>DAGseT3Mwcy$C$361{S=|iB z6rfmym{xi{j$ieB#Vzz&EZ2i$Y`q}`Uh*q?dU{=44ql?x({SsTa@T`z<>%(nWEMz| zzd8*NO6#wd4xX;sS0-&!r=0r$sd7+3hIi)Bc8Li{C_8&aUNG&peT3|*$*q)4ev0*Y z65&4U0$@TC?(v}Yw;Tzs(;l7S=@=o_E7vv*zd*jl8IUYiw!n|<*8~9g-RCf=VpCOi z*CsLH^OvmE5A-aaeLqI8QBf&uZYl^l5cq8X8YtDG4~U+X6a#?!wJc)A9BM_tV$l_05Q83$JT_XIW+C-jlVid)eco zzMqC_T2|+{k$nS0LmSjBFK!kN$Q}hp)%WakJ z*H(pvg@788(sZH8(0cQOLNX;v8Yi@8w#k^$`{_LWUeO2wl`@~Nt_0CiRSMAjCdGO? zF+J_~(moepPRwa-O>1uEdEn#sN`KB!d)JC`VI=4F5ZosQ!T_=iL+ju5FgjVpdz@Cm zflKMPucOPFB4oTzk$Xo{7uHmn6E`<%h%p{+SiXB&Vh2hQ@Pm{m1Mawt#uBC4brx&F zz}<+%%`y@k1IFo=`ojqmaAsW{jXF*}yLsuOYEb@=!iAmIhqIv+n@%J^s)VeZg;cWS z0llA@A{A#>i%vfzi@C~NnOoEz&Ce&N#_#RuyS*f5Ol?PANq&Wm^)#fqZ>9Z-fLmR^ z4U3l{uc8vTa!kxD>_k;oA?W|>&*wzRAGojUc(fKeVs`uT;!%Q|AN9)bPY>%>w*7Im zNvbXJLuqL^^tUA+&=CJ}jjS=rG~bZ2ST%*OJY3bm%{vr`K${SWJ>LC1ALV8w+_7r_ z;N_#zcc`OejMdUulE(T=OXM+}f2()DtY^)pT(`sL)lxOxlz@EmDr>X>Wq-&cH78Rw z$RB|d3n%_(&TJnRBKSZEOep$GK$*{$lDpPYZ_!T-=uBRhSPXS$iq@yTtpwR#&n;_@ z%~ena41LNLt(A`!&jsdvY+VgRCzc*R1Qk;Z*l{&H^nZMKnh^QOX$Jy0*hIF-#--cs zp|$r=5+d<-BX!j&C&7c&qk5YA5$8+m2w*RFiaSRDrcSZC9yRQ6b#oJ-0pJ1ml{9g+ z_5L`!ItMF#Oyt|QS3uo<^HcLI?HPI=R*EYn?SvLA1Y7Q$WUd7MQ>@nIt^J6O<8>_n zl(7F)>)^h0Q6167%omD891l_3*hC~iVW-oqj{adu#5tFT*-q++&yK9k28(?uR+CvDXpuyZSHR`+DX~7-u1VCO;x?s=$&(&ceUfCN z552o1F?Y6rD9v_biEQ}=E<*rQgTo!j}y0BA+PF*s*j4~=@P&JN`+8piI1ogLJ!2!ay;E64A~u7%(7Gla^UFkH4C%y3b#dv4*+R&${3Y6+JzrE7 z;H%9mWj~*)CaHyM;IC7YTB`>qQDmMVxf@GNVqCD5fHVK#A6CDC0VJE*dL&Kn4XH)D zbD2{YUO|TEp-?*Ri5U<$XVs2E6ap67-~Y&G z#;P`__86l_ymGq%(Vkkgb3=+V)x&+QoY(dwtElPM)*MzcA{90=pl@c2gjwr32&mrz zPEKEds~)z}+R6_Ty=~{F=W-lU16;!J1p8Q}_V)Jg6rE&D=`FU7b7G|T-g#fAA8!v5 zYc}ZIDaSYW5qlGW?he6F*_E$AXajwkzX78!lJkc5Q3g6ZA#6A#Ef-{#$7 zfv~O`aifuY%q=%B`U}I4{Adf@f;^Om$A&EaPRAl*AxlpfdsxlT(+J&MX1I zHxgi)k#SJhJGyHJ{{6cL5P2t13Dd{=04SHkLJ$MnG~6G*-g4l4^*XjM(PmCfsWbYBTkYjJ=( zxk8;8mby1$bXJEYWQefX>y;Z|e_22zX?H5x_=R-uzZh9P!2d*@n~UYSLASFB@P=bWDSggX9_Hg(WnMO0=p1+4ZASNuts@IX+%&InQoLW;kKOAm zyBdG7F7ryBlIEu0@CfV{w)nX*)@iVCWeMYPaaxyO^cV!5O#6_lqRq>jYW1h!^+K&R zkXSwo?!dCcLuWtr{k)&(WLmSX(-}G=eu$eXO79^)VIhB)k(1;1lOLuXQ$swc=Leu$ zUJ)*!7fbAuTx{f}dkxx;@da9Uz4l`M0q@2!40ws=Fwqps3MKmo^d!H%0#6~u^yUa~?GdC5-^hktMo zLudo95h01%ezV&2VKr&r^=QsG!Qlq<;N|_SRe^8BBHbuLW zzJ~R{3xA3!+5lm0S6KYZyM-!Wtx}^9oK&d08t=*9triVorvuB*YC4Cdc4oRJbag@g zhV>BIo5O2{b(KCk3WzBk{|_3KGR=W{+YOh!f;`cd>rc;~n+`u3#U)64hMJtCw3Nk3 z-nDOBU6dT8O{&)_?E)-v@mN-d!Id)A1!Iio93`aqVu+j(BRonJ#H9-Nr?o0>zEK_c z8dogQ5H0~^=jFI93l3+-y*f^Rm zmt7BJUTQ{0#8m+Qb~+G=yAPf8abE*|kBwoLG5A&IwnxIU=CikeEc~!5h$6tEuY4RaD)3c79Yo}Q26h7j=YZeHlF2`3-v9 z7i_R4Nggg*G#fAWv2bwmv@qSs6hgt7_C@WrL}!dx@0r?8@DJ?vh_Tv=?809uIN!mdCVpfZ6<>sA z%k6o)D4R!IhiDSNI8L@NO3;@_^$!kaXXIniC;qSp{m@zY1%oQ}ZE#Q|3!h?5HmJcq zaytg~n91YDX3@$y-8%=r_}-BAWzX`oz0i}a-iP*ZocHF9qaaJwF-da&h4|~KK6u@l zI9U)kUvlf@RLZD&z~Vd{Sk`(r5*3@mF|_?QFKdZYGkzlIs=mM6h~zUmNT|@AJN8WU zJUYy8G;IQVU3|`?AJCM;!{aS@-Z<{Xx9+aQCJ`HXv7`WoL`z%x+}vECtaNmAoW_Qp zExRAv9##sQ%u}Y6-}rqhAVzs&bE0A%=ZeFM*Hx1PQku){!~*A93h}DU5qw5zZN%Zk zp@k!(k?Q%Brqi4u!Iym@ZO<(wY({O5c1?9e^*$G#(J2|;k&|%z#BGPOF{xx1BPc_y z2x)(1*uo*uQfHdmSi9PtvgJ-yEx?jEKfAe8kg=T*#`$dirx>UOkLE9}R_u4l(D`B8 zCk-X0Oq;bCPlcLm{v}XDv1)>@+4P%5l1Phfm?+6RzWC(zEUEhhd2%03zGGqIk=b zwkf9JWIDZhdY{v~-sDT1X_h&cQPCGmH8|!^#GV%unF!sQWTE6O}VXM#BZdt+lS3V?i&1R2N@4&~}z@?LpNfDDjD z@=Sj60=yG99(>|M;+&^Bn67I&j6l7dpP!FAewW+u+urq{qHpq<*tYxq5{;R^zdxN$ zYf96zh4smJo>%`x<6M00%%Qa0!O|gJ(cvdHyzq6WrYZDcU{1h!>eE4j7D!g|wPw;x zPrcUSBmdn*q-vuBHDlWYvkc!Y=%pj%_M`r!6Zr*kI8M7UU%6aNh%^8!-W4c*0B_Vk zKMTOzc1MJOn*k@shGTd_gm~n|KE?lhD`VBTOR?;_lRCVx{qBDqq6IbKd#Ic~x) zZP(Y63M&gJW0snnHcnmMd_nvy6(g7ZT~1NafEM_bzD7u%mf*d*br<;r(`#_!AS3~~ zt}I~Nue;Cj7Po%9<~0w?P|!}?1V+UAxFycq*x8_qrFnwm^^rkGH+_oxfeVGqQJX}X zo_c{tdnXtO8YGNa*_5pXpTXsiRifeG$_4C;)inQ@D!a<tTjy30*rb#KDS965xK)o}$pY%NpwMAYu zTsg2P5+%>Zyq~HBlaz%mXUp|coS$4DP9wc@3JYm0Eq7^`wAoXEk{(DsJVbrR*Fa@A zwb7QD`6_)ZP!AV4qkx*rmmUdBkJi>$=atUm`l40yTuv*z*q<#O<+1#MBNy_4*2KhQ zwU7Vl^SIHR0+v6pN!z2TLk&A=L+d@EiGT~serJ?CQ4$D^N%MNZg!poxTceW2tDST4 zxt$KY`ZRv$C_|e<AOjpAxb}Nr={wdPxfJgi=ckU+75aH)mBB>@kq{w&t?h^(*owKJq>M@8yt$&FXBM zaDpzBNS_5gcbpsY;9F)amk&?puDtu{cl=(trXLrF8{>wU=oCk~nL2jH3~xknxcQ$` zf@2`>&=BS-^zp&Pu(C>QC=R}s3$?%s{Kt0i$I)3HTXY!ID*ddr?%#-w2u;zmc99aG zWgk`L{|z8S5fp*S|24xX@7w$eMe~dvTs~clytz^uJG(W;zg1gjOVV)*ZYF*zU)id& zduil54ut=O{EpkuVCM-o{N)af0f~6V#rn%fBA#$Y9)HB#N{L z9O&;td+N6t_hk)`0!eG`Ei`^w>t*6+>{5u0fZj)*t!=QMgPGdop%Lz6db7_J1N-Xg z;eI8yX^GDLLhcJIs{x&Hq z=i01`%av&p^qk&ujux4vj(=nA?!?}Lh(Yp7097gE0;2m0fi6QES>@o6=1z-F^~m_u zM3KrvY1Z`*k%QTB+D@f{kN}FAak1m3Wcn(W^T&!g@=p?#_^`otUSnODPTRvN*Qtpt z_RHt3$DCG?$)cSEb6xD0MIvYNa@CO$A5H(-C_tG}bSJXJzi397trR=gh?~pWx`NPf zxN#R#l=JSOeZMByS$W^LgI(jZX=uQk2$!4ou@5Lb<|M&zca_^Gp8_B?B1(#PAaeWi zLhvO*;GCRt2-&B&P{yQn7BH9b%ddX?kpB_7Llutu8L$Y!l1(2IcpwVP?YX+Pv!Avn zv6+`I9D>NnCo1$st_~LhM~uk$KDD~yWT63ofb{`ePD!gr%Xvw7jEMImr`gs}uKRzy z0H7APOV~YpGoaP-Lb?dKoumFR&{w}rny>=gwLoJ?TUi=7I`7}V2PhFp%%w%Uu&C&B z@(30-w!E@(!1wG-;B1FGZ89_+Fk7|W8olIOw}r=R-HqPxZ@eGy!UK+5?;{o$HN75A zMTme(m&@s(Uq6ypxvW__4|y;8o>!JV)(Y^70NT{~!Ag3`j@a4r^P~hL>Vr2R=mUmf z${U*X@akWcXUxi;*KmYQGqP$)k>9LIY6QQKF{EsngLMBh_WU-Bm%_jl|YP~=$q@dtC;$-n}#QNYLx8l+0Xc6Lf0}m3*npgIe z-zktV-{qih`YGd;EE>VaAH|}qctNY*bg8#rTQYmtI^I00mde>|#fV*$J9k*e=5PRQ zBi0yA?!I%}|19#ma&e1Q3bHe(AJ zS@6uhYh8I1H<1eoT`K-16}_i1H4IBx!pB)`({PIifobkcM*e|aBrB>JVYv>Avw_tT z$KPyygEJ;IvosRHVPf4175wi;oqQ&1zE6I>;G$>yKps1vY;0)GN;348NNl^Q2Nn8` zE3LW9(4~br!T$xF{ut+rs~BvYL*d`z*)vS01~U|6l7*$`_!d>c({AxRF@SmI4I~V7*tqT z6clQ`+$isbcEJA=2#b@|j+`0^!J-Lp9b;s?j#uLUqv|Vws*2inQ9>m}0qJfj=|(`h zQ@RDDyE~-?1Vp+!r8}g%ySq7bbJzL4|G#(cjLtBKhkedod#(3<>dg=i&YUvy$2B{c zDM7o}30SZKZ83nKK$-s*4-ZdVwY0P}x41a`=Een-4@^lz*?D>I@$eS%gOB9A@05r) zE7H@6%lX*Z;{n!t4!D6+z{I4FnF7<(;bMJki|4&T?E2kv1df@KQj$d2PFU-&T%mY8cj5i|KqO)q4<(3&gHhG!;zgS!Gr;3(>LEJb?mt^- zxk+@nMNUCQMJAz0+%#pxte~Ky(D>Q8o>72-pMMuusr^C~u{f>yMA`*?MEMj?eUt7O2AZUWJKA+dp zwH6*4x@ zrwJmIfJfIRe*fN&Mc7{MVf)1&+l$f*Z~DcT=iOHkHLr8~RTm0FB10)@nM2Jq9sO4# z#*%kN%&KD&<3d6ufz$6=XOkuV)UWXTa=;@f#yS(GuV~eY%a*IqmfLJgf#l=I0q4}W zrCoc|6*RnrEADNrsxy71^{^#*SyN^rWfM0YduAtlJ?;~`S~qM*_sL-@mog3dHNVG9 ztEi?{EKms8a8U{~E1%nRbRNrJr8IDJnwSwnJvV>}1zQ!1)1jKqVugPz5pQqW_;~)A zTfv!IUs1tYbBB=I#Zjj(?5mD(u3aP4p7)qIU4w}%Q4~?ZwlX=~ggLpdrSHNt^z%Ah)%@mr1j0Shwn6mmH+O~98~EsLE62Y|L)kp$7u1Kl}^u> z`Hpgr9CN7ITqT(46@9GMk zP@ucU7cV{;&p`svxUXzwpHZgg{guPvY{eMOcO^x|I&hl$9lKvIIoIDGH||XpeL(Pk zArbSN%^VB-T$k}*+dhf}z1juXuqAdAw~HF-a`i)?{uc#W42~5KdwH_&fIEm7@tWy9 zulPQ}_|L?-({j4fT;>M8&A)p-79Z6n$j`)Q-RGP7+@Q`2A`ns$j1P2??1!astRSa1u;%nvd>R zwZEeE+bfBO^%g7I3n(>0ayvpF9tiEk{hs6O;I4{gm911uH`w60oAA&}?e0$6!&Pxz zEJ$>aM5$Y-kS{UOHYPh{?oQhxPahS!WNf&VDYjR>z;UqjA}mnwy7fo(q4gx^A&kSJ z#pY=0)a502$h8dT$^e6QgUyD3SI2RTXLrg=Io*^#-KXXc2@4U2aX*_0jmm=6kyOw7 z`N%kT8mQ(Pzr!bbc26g8NGEm{XvTj_OBz0amq3)>&{R^g?>|Vb)?=d(pflRHl;Zkb z8|!{lRB(HtRLXgcnu%nAfqgX8q6^>(Jbz<;%--O$-luXN_|DXsf@2Rh7nM<;OdoPr zh+A?sVe|Yq-i`vEfXb<*Kma>(;+h6C(D83#bY*qE4(<_|gN zoA<7}$f8vmD{kI}g{1Dyb=quo_$rgLMJ~sTvDko+1Gv5PZzf-`1qXQ0%jQMORD2u2 zf_i1z{vps;D8p1mM$+`rq&Lve(q&TD|KQ*dv!Ad@ygVp5)VW4q3YI~t`dZ?BdPKhL zoTu5NvQoOD_V>&LoA9Aib^*D1g1$_t@q!J z3!*l|GCdu6k@?qm>+d~08*?2>4Jldo75;oO6xE~8$dO7ws0sAXzTuV3h`$^d)A~5$ zo&1*~9JT(NKp4bANBt@I=P*wR|)CmIKM3AG{0#Td9sJH-ar&FyWw859mX!=6%yh=@)a zS4b~2ZF(=_QL(C6+W$Uf&UUB$1wt zH?>Q>q4-QcLA`9s8Uut+!Keh{l9HrAtM>K@gNR5D9JBrb=NA_aE1{D;(W$Aj0J~as z77`NDL-F5`kdoqAgF|r~@qFO&mP_va_^XjC;py>?<8|%8Qu4xP0BQsuQR~rynBp}) z9VEmw)8OVLlmeOXQ%dN#5UtdCNQfLcLj{2frie%F9t&@X?HA``K^67KOM2X*ESjho z?==H&Y!gREHp7Vn5#35sD$9=fBz1}J+arFsK+tD1gnNxdUEmDVu&unxb z*{#~m+DzSuK0V$tadC0!Z*io_5+r3VR}#?wE}OvR{xf8Zp#`?b<=zN`;eW3|v-Y7* zF12Im;fug<{{`CY%=1FL<03F;hUvKdHc2oVElR^i+q-}8w zchKMq#MB5sT3{>kiV*ehTqAxK=eIQu+=OG%XhxkYT6btLN1+O&Z45@NMNiR*%IXdg z%@Wi-a567F)~vBuD?NA`JkoZL#=#Sd=n)S58&rKORxV|g`^~YFMnZb9*JvzCfZ1mC zb20-}CFwnKtuZ-Ma7@;(*x2_>K^P)$Tz>h<;OQiU0i8~^eGQ#z*hv;4X5VVNe>CsA z)~CCVDa<^#yi{%k1vCJ|u1*5|3C(H&1kX%n4?EmuK0>vKf{QEh>G6I77|whIF+c@; zN`3qO5R@lD^K;s=lyeW#xfOdY9FI*Qe-To<0F4D@Gn2fQF~%=e!J~%|8+{|IT~40+ z79CFvQlraR=ZvHhxAhAXpO}OOzVFDO#~N>!$@rxTyjTS#xxtFs5ndn4+O4&P6Ss;A z?B6*RVDp~-$?0*!1oTn^%%ST^`)W|fgGu^?IXI^+In)T+jm8c0V2ei0C`W5`buF%N zEFLP}*O#6ATh^zlh<;aOfBnf3MvL=H=X{9{0w$KBGiSb&soE1!ToVDh@-IsLq1TMh zS*2P!>Rl!I*(R5r?@~IJGqZfrvdGOLE^I!G36n);Yjx&J$!e{sqNG<$(zVEC?Rv&7#CX+RKTi7hdHM>s?8R&O^)dfWYWog}6X!$p*Vk;4d48wVx z_nLLthbiN897)ty3zdHhqQCJLO19E#&enSCs*yotrb>EsjQWHjz$W{+EYiC#u*Wqj zI3)7Cb_S_^>zbYH;mM|{lh~6k=-)BzIY0S5yk(E=kO4>J(zWVADGJYtK9~8x3?l(n zg=_lhvD=TX-t)c2jqpiFeq%vp#it4wWmT2TO!k{4Y^nua7R|xUi@rCL=e=onr>m`= z{>h<-T?dz|w%n(6=4!mw2+)iNE{eouu4V~Y3DjHes@%wSaajrDhX9E0bL~G3>5_u1 z%r@)okmT5!;3m{1@Em>3~DJ7%y;Vqk8c#m+}1#s(9^CQY+j6I4!=Y-nHW^lm1i zH$6}5us>(+RH_^Q(lGqquEh~OhD(dj$l~$uBM21;K_?SqvK{}jtaU|LakQ}Ez$Ibo z4dZW%{djkcB(?L?xH&8&a;s%f534-Kv(IYc_Au(FHw(c-^lK zGm4v#QE&lFrDiR-DSr{E736W?@>{?)8SYI+!vHGEQ4t}q&3Vm&gWARD~s39sCz?G^XsnEvXl1ph z@_n5}X|vepc0tl~k^`(i^wVyl-JtzHm9%myy${%F$opj5-)#Dz#5%xSx0KJ0_lSbf zB5-d}I$IU8ljfb;74{*R!o<*VKnIOI31!L{DPXa{s&*uae1OvkCy$P7N~b7prFiph zZl+dksdC1DX5*~HJ#QXDE2~Aw^XyqlHSMh`pI%~g&`OkJGLouBR-(UDRyE0rA)Q3T^Ob1SVdo7U(cH}*@}SZ&pkKe<2eN= ztY#}b`6i6N%R^S<+V%o42e?N|J$a5Bow?!R;j7GNBHz5HEcaY+Lfx_6*wfx~Fdg0vsEz2ADKVzpq0DT&PG zIM8Hwl!PE*!uPO1Fb^_Bos+qKZ1o#a@AXfsn;WM4J3PE$QckK?Re;?x@?s z17VIzkt&`=3PuoOmA;5F*uOL&B;~6*jxw%jY2=?w0_;{nTO=R zR)W*!b|z`|C_D95pzPSq6n}E$a<@7 zzC%{mRuVbs`2i^lUfC-@Lo609bVq&K^@QRnv}9j#r}*kTit4dWzNxqDzP~nVNdWy& zIFUfhGLPNvXoi;k(3g2foF9rx{)(#G_u~D`;)-p0(FCZ-I*esbC&Oe#s^`NCCpKM} z86z;$YD+9c4?dxxh?9l1lk-j4xa!@M1GDBR6t$VFXwnO{*1Bpl#RUz`F=5)e!#lbw zL!T8bIL+{Xec++~XeXaupto=k1ug%Tl`*)Q?K=v27#X7gH&kJ_B?>AdomT^oOlw zF{z4%x-z`5*Vk8NqCE=2Y1xvGQ5J9*CvSunO83|M`3Y-80Wl%|u*}!Gf4dFWn3ngG zJN0$TjjoZpkiw=92Mq;RVDd6owd*JPeEGK;8a*}QQv3OZv||LXHWXD*l?(B2x^@(Z z1c*~W%MNw)KDnI_frAe+l~!sDu7Ey1X)0ffD#I{192I<2sX(cAwkEdn*P8LSxn(2X zc3Wvl@N7kWOn;~(5K6whP2o3b)~ z2i84I-R8K|%Wvxj8`Ndg*X9%C#$=p)8P%kJA+sKjLnz)qljB^LP?Kv&KWmyiX6KHj zuf~%XI*yTR4zATtn!ifJP`P|mN$=k4*ouC6PvG=QWs3c9N<~?D9^$sav}V62MaUQ` z_~CRrpy8GA)zw*C)NwQJU|=b zvXiEDxzh;S!?v?v&%7e_w@W&2Q1-G$y%>wo>qei@^Fl!!+fPw`^?cWbx2{=7E7Y%f z+7y(HO@)%qVS$ZSjU~%;iZWv^O9^@vYT{)n6@b5=zC4a-o|bQLnJEpLAqh91R$hWR zTBsFMw3xMIpp_(0{xzvr395JwTLQoCf82Yf}uzTO#n{v%wgxI;BD3kZ!IS6wc{$IT zpi|rXnU<-;vU=Jrwvzc%@Z483)I6b{8d0gey7eMVI=~|6w%+rC0+WZ@J3#%{EtXQI%{7q1p)~U> zQ(zK(7`c$jjeVQ;*1_9QoVgd}zKx3RK)~C+lc@jvn)EA?2&CWib;Y^{Ykoe$shRW_ zF%b^33)v{0os;l_Y7%^t=Ccv#)nYz90FG9?pcu8A@PlS83;e@RZ4@jYz8+A7GsjF$D!+T@!2$SmXhCVHKXuEQ5Zf<(*Gsd+aFtw}#?UE9zWMOZglD?@K z%o{q>D)S7C{a#o*^O?XCjF8G`=uSv0{BFFfEmeCD>YgBE0wH5nO2VWF<_LsFI;AY? z$zEnzk#?2)k*q=wc`fOS0Eov`|9Y%f&&@%L$uM8BZfz>;D^wuG@{q!wbc?~S_D3;6 z;bu?zZr`FFG1UwzAFrFWSB11@`K30B3L2f-N&>GZ@xDi7JIh*kM-j=LEH`%+E*Mmg z7CD!>1bhG`LqMYJ@n3g5S*vt5XcwWbS=}EkwKQ&Mwis^IE`j4J#-L zdwD&UD`24D?)dl6c3ZWI!rbE#sge3N$Wox-s%Ph*;kvEzm>CYRHkaBntxy9MU3Pxm zkIc->&V9Tc&#u?Kwjph%d}@s6;XTY`BRd!LLbE85fBEADoEEMsg;`3CYvx^RkS})MF2YR<@hMS~AVh*hzt^6o!=0@sZGvv1ZZ@>| z&R5-#d)uoxyiup{^N5%Lb??l%kj8FdAuZNh*$*l;xIxLD>`QK!T|nJrS5H&sutNp|lQ8 zJz7FsoESWYv3*};WKaOT?=W;M`RyA8*ef0OCqqyPxIxP^w%Jya>ifT1fLpwCYMgKc zx19^oGf8l=VK>W072g;~hlfREY2P~mtPn8hAJmct1it_1GeR76!zx_9t5d#P=1mK@ z2@u_i1nASpk6{4Q+9S=Hc1*uCR6W5p#UC557P z;82*+;R(wly5Y#85^T+Qi>ZRwrviI_-6kjClf|6+>lX%SkA8%NWPn5~s0lV6OXtZv zi%XKob60c6c>cl=$)A#(TwY^430EzP{TQ}sD_--r?eSX+cFkUbU*MPrZi6U_vtZv$ zYBip4gNv5mDidJjlt+%Ux+@v5VE>Y@=c+ncfo3n|Xia;2ZN}U=LB#Ijg<*aE=4eSkeGC z1%4s0JA$fEeniAlw}Q_)gX#Xz;U{hH-yd_JSlOm7@DLR2`LEoSz&+I+2f)WqIDBW83Q z9M{3v_Z_!#0jgOPB>cY1&2AGF!eUh#mgz$xqN48rc5h@vE}He}K|^QDa>&kn5+_D$EQp( zuM9M(4aT?K83XI055R#xeCWvmDNCD>)3dRxhrO$X`sb(nN587qSbw3lJ2PV`bK8#k2?X0c3Z2Jv$H!9;G%uiwhv-tR{?DH3#qb{JCTTCD}FqIk%CrA6O!H!~b^+QNvaU^@*{Y<|1i z=^Z1hOD_FcEc#5H3xM4L1ClIZglL6m{T{-e?k_AG9VDAXLwT8%nSGbu``a0&thg84 zd=<78ze%O_53DLQuvwg-BFb3{b_{ir4t(D!GZbmm^qGT1-fzs);vcPBAe5f>MiW_L zXrN2^A@`%llsQP-+Hi|a0|g=Lg@46U{>A9u;FvKI|Csd{Hxk!&CfsmS$F(gPHW5%} zG+oV`lf(@T52Mx}%P$P&k7Z%Aal7=$*qCu)&hTaL2*bMh6E?5iRM22XsQS}%Y?^x) zYA}k?|FY-!w)#axSYM+e+_^g_6QHeYMw6zH3h5i1kK-0 zH<#t&7L|G9A9pi#($UgbYlLbtC8dXlWFI>c{(fXdjjDqc*2 zw+99NNN4m<@|%&gQH5QXhVSF@X5lrt;h#_4KZDDWsxZGU6&2w0tMLc#V|r8ClaolI{3hG_c1MsX*`EWGj{Hnza%2e_n9~uS5Rb>v<4r!FEvh@86e}r;!;d z&q(b?=RjrEyb1kCCXOOPkPv_0d1T9RzeEZmIa-|qGRWUny^zf%Tetq3m&IZj$@Cr_ z-FIPwf6MU=oZmFqwr}cO`akvuR)7SPVR2k+NztqdwoUN0DY^Bdthj}=Mb_5GB3jtz z>)N@E5!*r=_r+O@nhC{(&%~zMi-fgI@gT(pN2-@FheOBP|9Zuns97gUwP@>#$I1lA z*I|GvlKI;ihS$Sh4?+*1kZpGeoX@5gtl2ch8<&R1o#UDBgI51qV}c*^T66&`JsL>E z;_HE^1Dns-;qL*)YgsCtz6HGn6pqEWRfj-5eGmsOMQ;bZJ-=9}-AP4T#6yc0C@Wl= z*ZIi6mE#LB{{peGj;f_vefPiu4ZtOUv~TSTXv2Ih={mL4B)aN*6iv>P0cz_`v)NX9co|_jtK$@j$~QO87;_{ zCE@2M^pQ>Bh9tB;1bR2$F@o&vAe|GQp^fKzP5@K3nX*>i#C3tALQ!76jqCle{(afP z3u;Ejoi$gqzs@H*z)%A?1gPX3{LIUr-mGc$*CSiKYh(bjV5nPtSz|Hh2Y|D)&A#8^ zl=0pTO)c-LFYmuOPjgC$OTT`&8elpPO|)1nj~-xX4F@!!{YkQWGkE~%g@wiH@hy(uctspAN%cuq0@*NgwZ7E zxY2MdI~Zo&!N+bC7L}Ssqlwp&KZnhi0)P+x=nv1(0o!nv*5B!hczVhRgZ`L>KBY zVKZSPgCi>lg{XT&j(6Da771#!a{;jypRkclS^u=To;01yf;5bw8_32BC>>tsef-#T zJDmix=yY!>oybg4-un%dW56mCPQVgx-TKI${|@Mef;-!RS~vJGj)tE8+j8gmzH5U8 zJ09#E+A2_cywC$?twoj{LIxl&#TwLYdmkmxp84U!C*uq3r_23Ta8VX&t-ih{C`O%k zC{QI7puOUgtm|<=6h=qhhf2$Pc7Q^?w8KRX61_yC4E_w$(a-sjg%y5HV@ZH-$Bp3Y$0SFO2pz~~qr{i*&HAAhzPEB7*;wujpmXlpE%D&wLAo;b_tf!O2EpFflb zQQ_f6AlD8CfD6!TJKYN$tanCTJ&@MnycL20mIP=H!o&H9HL*1Suj;fI0Md4&KZFKs z)(KFq<@-e58pLIHvfzDTA(X7PYJh-|X@p&?g8n!z(`}TOJUXbpZE{Nwnca4=esKb0 zHA{`oufi!#t2e+GVOqJdoBhy!K~b!CIN|Jir~CBZdpuk2W*3UM6|bUf z_b5&nw<~eI<41oSo^4O3qZTY5|5rtcT<20&^*M}RwWqS!Cf_9e!DUR4enzep6OC4( z!-9?Cbz}EO$f+{r%gK=~eLm;#sPvEwOReQ{;YFO$ImgtjjbFc{^}Tnd1esf-W>w_> zs9qa_kM>~=oDo2}PX@pog4W}7lQKgBe_cE8jISp;`YO4Fv>GMx;MqU>HC&oEWtQmG z=fKc-QR$Om#GV9NEfN9&gMY7q*a%NjN)nnPg|_$%1JZ?!Zhox!ly%;Y^$-C~n3J8o zJ&1hfKblxL2P>1kK$p`FY+Cz4?QHQ$n?#`CWp{q40fqO>Ib}g1pbFjuv?KoM*kgg3mR{5yfv-H4MLUK_&dUYke=SwKKtneMCViZ+QGv|wmmzal&;EsEm`$_6$H-k z4A*xHFVWGt`EP8PvBFNyA(vlY)t^UB6>AD)i5y5sv(^?ylMm2xr<65+ueLcK@|2Kf zX1QFK)0D}r@f)%#+EFjOPelitt-w2y%USD|En}!=9Z23^aJpSkkI;DpflOl>`R;?u zv&)&5Kt=)WCmP`(#<_~Md~`kU0ol{L{Uh^!$lSp7Is*$ zZ`jp${IN8-ESxejHbz+bfQKgq3gUx4fY^?y9zvCwd?)HvX%`WZqQtg>vdtM8J%sqt!9i?Ieb#)tEqk2Sh~=}mXfU5cZ+yP}4rcqw5e4Mcvuqxm*Y>d6J-HH{ zUoG&!Iv!kVh(?;pSriwjyFH;7)Toe2yo1<6NJLVg33Gdy+8T{+&wu8Zu}K1#hf?|Q z)Z-JGT@gX$oub+U1nGlwCTRrJ?+FNo8XONmUN#A3R){y_t@EgTGl;U~Jv$`}$KgY0 z7L59O#%#D9?o+!DQictN`RrZJBRD?&371af4dgj)@&|g9-wI@6=%A7NpzAfZ+T_%j z^5(tA-$hpnMj-FvJwIfjn%oN%VYIo{JvMHCfCrMRirp>|Ur(~2sMRa7S{8%N*DEK{ zWYBbMY<>@y^wPPRk*h%B-74%0gjA3HzMmKGU;Ck(acUWEJ={Maw6va|f#!GW9%Zyu z_qokU&;>g}BUkpIqY_NMS``*9U!Z8Y+lN{4^i~(|;Yrb9Xgx&2YGw8v%bJi=D{YwX ze7F^;0JZeLe>c37Dk_99Rt?`NlyV(Fuurnvf_43trt!$I{=*F_u)mL4FY@fTFMF6P zt|mX;QP`h&nn3o>Jb~6ov_U2IrIEgpV!Aw8BCLFTr7rXu$(j27$=lD5<@Md7CjNnow`o+*Esh5>@O;}}7U0)d?2VmE8|>iiPlyKd2F|frspG0x z&Bc5ENOK3FS@)QiJ@%LDA2DJ3@mytPh9l$u9+crIHJaSLLMHsx-S#)8p!BNTQHqAh z+oKqk=)K`Tn10Z7}Ux%z|T=@vF_mgl{AWn)+6{z7LmPX*aP{L%JU&#;wzDa|eSH_;8dJ`4;_ zaK@o;4-*WYkL)m8x_#v(Oq5N@6mH-L!-$ZmOj6}d1ckxj2v8X^cFOqB{?KVGF>oZq zq*XX%N|Xq(#Ss6<*o3%fhzhNO*ykPJd!p6cBx|#=b3{0A)&~-s70+jF@vZ%JYfaMd z;fTXR7%;P1lPteZi5U!WMh)+b!1c?$z#uJ_m~>_7quvMV>in>K+8)ya_Jo9`Ty59v@lMB8T zE}-DightgCsg{{R{`00~b3JdOFf9)+nC(TKQ`K)k2+C|CYk`tl4=%C>79)S~++R5h zIxhToQ&WU?cJKQ7B(hDS;H+9b*~Z31?=Gbb`eJks0++k~VdJ5b7C%|zSi^{bKy2_% z$<9_njosYVoZxwrP_*^GUZ+9teX8!rAsD^UbY-mO^2F9*0{ogtzf*aYxX^yY^^NtA zkjM-m6RZ{ib-bV3nzN0CVo~fFb;xl1XPY~aBcSm&>aun&mMfUpBUk36-!RH@b>G}A zmC2*@6EXsQS<^a8yj6oO1!J?;idy9Yg|Y543TkkGYF>N#%-N<=OH*HhPHJ1SdkYvD z;AFu1J(0Pd#d&cqEkWl`8yQ-e$>8qwC|;EdMIa7KW1!J%Rws)k{G11mSI#Ssy2_YZ z42(;a8?IL;h8@!@QFFy6>)DZX?#^g<-pO-xw=kl})+0w^sw@UZ?qFj*0vl@zGSM=) zlapIFO~vPwp3;K8ut`ImK2O%4%#^uD_*OicpG`q@h^q(}pd0|^res-UWf=`^@diWe zes!?LvmVqQeN}pI7!naq%+BlwY9p?1LP&6aH9fPR4CkudKL9`<0|RSvVWwI0x@~>r zdayniNE>iV5R!(baWfG?RA8j)fu>>KmYx3Ju`w-Pp5yV}yy(&yyh z7D1y8+f3-<67D-rl~rl!HW_jH&t>lwS(#$__+UDg?D5MMvk+LKs>LEvn_ zjKee-rv}&8NRpoc#{^=ACTN0J;lgp*LIHUD<9T6N|G;Y<^W4@G^ z7e8S2vO)XqYx(KZCl4@?A%f84@0?nt(HoFe)l+~4`89!c+ym?|iLBq>&1l)nfKH+i znUME4v`5kJ41(ul5D-WMzAex?FB{JsdC!5Gpa=$fC=T%h5Cg1*j5C4fa{&-`#dJ!5 zI+b)LCh8F@M_@TEuZRKvcWw|&9+?Bfa{yoTB0=AL09+YG3Z@7N;6wrDp1XXNYgAlV zxDF&ot04Cpr9n6Tn*+CYSf4BHcckl$$^iyL5U8!?IHlri2@nO5qA6yV)7AI=v*`ri zh04xBE`de~yQ!za1&D+J8|lmE>zwL46wBLt%9cKQ=x1c4E?PEY55~!ygMRJ|*g)Zp z&YnHD;=ZZ@$ts}Ae*Ad-^mN@C3kQ_R-`Nf1B3utbh?q*tn*)5St|D|YFG|=0zcs;n3)~zG5Tg-k28MILN05}9*rB_w` zvLEIO1_M&`*^}gI|3r*~+r+h#+^PF~_Z5U2$|Nvo!?-|QJBO76@)%nIM_I>@AE~K{ z`N;S-xud-MhX1f3H7{S|-p;f>Va_^bp8Y4ZvZ>jVkVgSN&g~w`c)GxVyZjLv@4sN(8bLPzzyi0c!#-g61+#51K(!>#Lq$J5CNeh4FB!sdk`4NA5W)l*D%FTQsODFPddO1SXvN}&rx0?m&QMs zCLmyQ1YqHt0o|t#u-=A2{$UrGg$2z30nq}mx?Z;wt1N{N-#|+v1&GG?l+vr-Pdnb_ z8YR#HF93#s&l;P}y$G(c6#%^F2WozYPV9K{+3p?jhN)$#oJHUvP-lV<_)SiJF+I2jmu5|{3g#<7@&{a?aG^O1S{&L^y$Xq_5hCB=~ZY8Sxppz3LP5wbQ062h8`W_Uh|>S30ihtT%G76C3_;8(>3G+}2-rR(AG1Q#ma0TLru zux8|nkRR_Zk%}IMQ+Vcp69&jT)Jmp}rxMfB z#Z8GBeCWQ2>XLY9EFgb4dJ9mE<)q|`?SX`_g3rc>rm|%5Q$kzIty5eNQ}#a106Go#~fnZDFivsv9%voXLSsy#y923JoHjl{$dW6Y(jSgf`gvzK1OYrW zq$!#r3eZ_4x7Wq$zpR$}NBGT8g&1q{PU zhnol+pxym;yvW=(r27r^> z&lbTApqinLD&Q%hW(wfqH3Yj5y+&}RWN+cWowDP+++2i&fiCdG{FfC55PduFElb>~ z2g@smSQZ9|*~Z>SrG`uF4jfY5DS-nwGwUgkOcaJ#E=6(;&zki>rv^iS?-Jv*3Y8!*np%@?D?hUfo%-x7Xue?J}Qh>P1AfZ9>4jA-4gftrbhtG zYC&^36S5=%r@H=>Ta^HO$^=pggfDqNbCpMtiM4I4J6=fT*+!HhtlFYHPOWW&>Tf0D-GcyaDvgAdH%D^`OLE_;^Y-CcTP`}#6J zJRB^!ocfB?0SU!ui>LeM)|Oz2s^Q*v4yVg0u|}5i}CXdfcwH` z6;8S084O4gA+JUtupJ|uCi=c0f^_Hy?C&BAp0ytrZIBPfwe z4bUhN{qiM1clxLxhHo=|veDVvVyOYMuP?PWmcB2x&{?zALPT8r^~;wpvy&>>lVmiO zt!g_BDgfCcR5oKcIQvN_?<8bK*PFnP_%nt`zO^T!lVAYxOV!5Lnh(1^+;hM-UL(l97yWIUvqQ21Bz*rDB3)gXy;|m zSC99XJ+&*t{&U5`qTL!lu){%ota*%%de0_67QaY_sk&@WalL)+H zk8_%WoJZ54VX-C)j_v+u5autGp`30Kl?qdeAO`bxVvB3@8KR5No@#-KBfNu5fF0gxznBm~zNmyAidZMg@6>$Pl39LGS2r8Mp}TsUO&)z+_4 zbY8(gAA>JHOh?OK{L+7F<|=m@(%?;3TzmTY_Q8_rGXk;Gnh+3<6T+NsCt1IQnKWaI zB;-Mi5LL?Y>7)Fu|6!;+49kO!0~SzFuTTlwzyL5rm>=HTEzAjFAmbv5&|V>b1QzDu zbOQ~0#ieQFmRdqHzsp7eZn~@o+`EBflZkDa*QltXAQ@ARgOa=I#E0*>Hg6FaOOHev zYmOx8uiJjSvRPY)|M#!^1_PT@AOUl0&Y%J;_3TSGWIyT-<5zI)u3j(U(94lXi=EJo zi$Kwr+8z+{UUG`5koxhgiT$2!55K78QeyUy^b0!E!k5>6)bLX5g8u@Ebb)FlaLK9% zTy-b~5go)T?FN!8UD}WG%fe~la!`y0+>eKfN3;YFkGn)NMJHK29xJ-;$j14v4|QVQ z?Z&ln8tkeBVY;=C8pj8xKWqlw990W=m9P1!3n;fJz`uCjU&sAn_#u>Y@3mc=$S_bx zWC%0cY*L%G!>-_?SC*J1K9jwHPKeHs@=J1i04)Bm*_?flO^{jn%WF{J{*dMSAC9|4 zF1Y$d;0P9e3#UeBoZR};|6JXe zRXm!E{H?f@RA*l-RfWklA)qDNcN}O9S+S#&lEReoUZQ{a8ldYvBqrYLns4~1RcOQt zgZPU(!wWQQbw6Xn@{Cb}iMb<-iGP%by*%{$K?sYmK4Q6WdTWxlu@*d_6I^@9&V%d* z3m&%smc&HPm{`~`Q#cq9{X_O_$B!(5kWZ@e8j3(=_Ij{6g_EbnKpp94xD>W$?s ze(~optV`SN!Ijy+J50D7UPNG8S^LB7`6r86CK#Jv2=_m&8l57MluX#T<$ht3zc{6R zL=(7qE5|=2i5SEF;DY*imuJws8j&A6iKdhr4*P{zdhh1AyQhbYgufj!k2VA5a-f>4 zmWiJ5d!|pBy(q!z?fqQS7htteyHTTQ-35Xr(p8HfAVG!r`Rp4o&NKdIxn~2WH~4F0 zg8lQ8P~!Q}=aM=TMP@99sy0&_k5WcyPb6=FTeL`PiyseO!TRrzZ(0)?+e|Ch@~Ss% z#DrK(Q4(Ij;CO$#`KJ5Y58T5b!xHJB@O4}+3YipcOqic3aS?!v3J45z#UTDQnIZhD z3a1{1VBWb6@V-I71l!Q0N{s=8OD{s4-j23>}Us#=>-TK z3%`+s@E7KP>9b(Z(l4X3)q4~IzB{xqna_O#h=LAqjNr`ZqRhPXv|f)(AnG=^*C}c$ zw1n?51;a$eciD9$J1rdHM4iSU_q4A`87z`f6)^Pw&ZWyq1nboTw&JbBHeNEnBQ6+_ ze8H)9w!<~Ibg?%9enO8q5lFJY+=3X|lCqkD3JS^1eNj$A5CiLS7D5F|OA>VK)w_Z z7)(Y>iPfKv%?lZY9e+?MDcv{}QpuYT#IT^Iu3SH$C!J><7IXVb!LV~MTA)OAxKN9h zn3yIJCI=PTf*v~bHhipl3fihR$q2b1#H8C0fL4C93%`HZz2s=E%fg#V8mRbmu_x5 zT2Rz-B6hr|bBP)s3j=?jAzqHr(H(Eqxz*GCA=>T_bj#~Lnzm~&IKfj854Z@q2M`K} zR5>ib`j9K=b<9V}XW=_JX^e@D?Ge)nLaJ^cktwH&Qv>Kl&i`WgHLyOEiu!tc>EhZW zlat??e{jPxI6pChwDSsX0J_uiA1RRg&e~V0j;tu$xRu$16Qw0-)n)!=CX~Eqw@|lO zL@8Qv^zd3}ev_^>!*JL+g{qhk=0@FxVL+3HoEsS?+QsQt!sWtibT|ywemFH}Rxh7a zjF>1>&$@C26RtW3JKtF4XMf@>a+Oy6EzC>^klo683!8+lzr^(9&CH*e$Z653fX> zg=cQZ4KUslUe?Ls^v2seKf;!ORN&w?AvF1AhoSXxCmT@)i!>CtG%SODWwZ=Y32pD- z!7KthDIDOqkb`9`(T{LyygI{;hkB&yEF>U@2-GVGRCc}$SI4Sscp((qR+obe6YJ7< zE*wJH)-hF>1(}8fB}14=Ex1x7CVZ4$oe^|6u7J|fg)rO;qYQu;aS9e?L`aXEGz_7% z;$lKb7!IKw!^^2}mtMbq-DvtH4PFPuKia&}8-`%DK3^|RbWtI8sX$Md%llb9acDwO z^K^lWcXQyCJB}~$-fv$V-iAax=-oR)xYv)CTz@AC5PNQpBTaHTO5)ioGn(r73YB<+3 zn0IeeWE2&p5>DyN5iK&TqihZJcsNq)CGul%P3J>g&?ED%AA@#}BGx*oMY!Gnuvi-A zXt6&+xVQ2AUe&5g?R4LZe>s_a(E$hjM>%**yw-k~A?(%e!L6|fVi8m%L^VF)X|%3$ zzm~z4de_`TWYQ{^C^@19Mm4)wS6iDOm?kJIza3a|hH;7FcKG=GMI_)Ero*L{h@|uU zbVrrX>d$?>1ArlsVGL6WvED;X_HD%uvs{Wc%E;W!N(psqZKYlcuOP835g}%<>6VLR zu?*oVp`1LkQrvB$z$W9(BZtWd2Y?{^xJ87AiEbt+6RI!;KjWq=t{_c4`7-!_ksYyMZr0i zLc)&t&IdQLDxNPdi(Wf#c1yw5m2Q?3F8(5P$4}%=uN|`(k7S^H5bDygB%hTgLEa~p zTt#_Muxvpa=nPPli)U*k#K*@^H?m+VW)nmB#S$H|qLEq)dN@IMV+ot3u~xfuV?I#4 zHa_8o$X>b_Pta|V5Q5o-hu)Y{jZvziZ@OB;9Cl5OxlwX*@4_h1qJ~~C##=!2++@wq z2mv%`zZ*kJ`5H}|UIkvUduYMpcZ07n{d*8$(VK%R>QE*_e}$-psqYcyX6MhXSV$g? zh>M+QlI*W{eFOds`rg#{-re{?3c&a1nV6s#;?tP$RzOa_7&l!^u5x!jb6C9^b(y8m z38#(*pg4=(tQ+-5`#0jgsO5#~oG#?vvkZH=J^KJ9>0N(0sp2#o&$YJ3Bk~4|4)pBNOHQcV%n6(r&QS^4brH6OMIietcf@j&F4>{Wnsi`kED@xSdA@ zl~ehzTw_w%U1I32s;GBAd%H`C!c0NamRew$DyA^u9X2UjHYpLl>K#c>i{+sH#_8}} zw`7>=RUR*eqQ}&wxICAKV}492h6^}^m^G?P1sCh86eolgC+-TKo$)<+_A~>A{ZlL@(lz#yA^Z{*U+88>e{^+l z)lcc=Z2iaS;LE0VmL9((2wbpG7b#K9D#@?q?CiqXdbINy@86+B^GEX=dfU&#b6-`p z71)~_2jv0hBt+|rm09;6Y0f`aG1}==k z{A5i2L`+dc&!R3nCs9{3a6(6s0P2y8O;**4aeMZw4f~W|&kr%oOG?tQUgrMXI{Mks z5dgS=|M3+H5sG)9uTybwjyTA^n*q@>eUGjmaHY@Qw zuxvN*>~E=VjX$QWEy+T4MMT`YAB=BCqdj#%jjmT}fmWa$+L$H@< z%|;ysDi-NXODzAUt)s7cMOcau2;WJ-cNa5;AW!q&%wUgM|F}%d?bH?!*_e%w7V$i_ zdYtv~9-Z=a?Pr$yPh@YFZw!Wmc9ub0d^~$(`LS&kDG)}Rnq;uOxOlKo1t3HVyT?kW zS89x=H|BUvyFmX1J^8nD3bf@P7 zogQrM0%~?|-s_BFAEUy?af+|YF%#-c?M9n#w*DR*)}E{>Q+qTkAFL9gq;GTYh| z#wHNTYc$F?)XUE+{zMo_6d8;YA!(v+k~{Fh_a*FC9!_G!T7%hs>Z*A#SQO%3M;i zyZ;5-7X$blTJ6s|>hoW<_D*aY7=?I$R$1&5!8G&T8l zVD*^3>Nk~&>TV7?CU-92|SqckrXFF4IIL z&fOEES!YfFgh7d1yc6#T{^C(u2x2fKX7kOI5~BYs zK33HJ-c<`-at!T!Ql=;ct3g{x2>B?p!~X@65X~P(8_IDR)xQM@0m>f)JRbYjz|ke& z+S+Pai+!Tu5o1sz4q4BVx6%P9mRi38F1G_^vM1&6&r>E}?c>MAuH*9YZZ-#-O7zU>{>l*aA1}s+w zP_rw$8yAHtp!X?rsjZJkSsaUyTT%p+a*TiM zUUEI%(so@~)2f6*jADnw=A;zhrr@iJ3*K5y<{NcEk*cDv0E3mu?2*juNrNR?YZ$xz z{QSoEl|PYOfx;8^crc<_>wF;WcI5K@;Nwh?Naiv*S^I9A^TqW*l|t;2mbdQ@+_g(X z8aocC{OB6zGVZ2T@-^SOFWs*g-6kwiwxsvq@rlL6xO16)+sMi5Y zc73?)c~G6l!8F7(Q0rmupYMEfX9`xJ7(Y{6B{fl2^*fYd#U$8@;a5pl!yB{Srt=hH zDTVt2{)_n&osfc1=NTpG+#Ud}t;s@BkRGpU^UA7oTz!X*O89Lz8tTs^`I@ELo7>Zp z7Dsa}S^vFuegFj(ehFRUlM0zfR5zEb`4?dnhlpgst#Wn@)|BziZ=0sNt&!g^P12%K z#Qt3}H+FLCldjF5nJGgf_ql=aEd!v^GpU5WefzpxZDmV%W@cvVphYSB<3gnYM_e4O z(aJV66B7eFyV7z;C!pp}?lf8OeX}ZK;NZZAO-@cuj)jHA_d$-s+h0=)Bd2232aTU~ zOI{vsnoxuV93DTH&%thLl2T)nNmqN#z|D=5fn!modpH-@QarS}IJQv5mc4@WJ~qS7 zQIQxn6dbTuDBG~uYA?xTV8Q^|P zDTa$-LyHQPYyQ>1VKG=t-%FXJAhs$bVh2!aAcv%OcIo%;-|aRhZ!GpcrQhB@4{TCH zrEt*(1PHOPwY}0_IW+jyesW`Ih?$4mYto5!2h7}exQgm*nAKOCA_=A!zhuI3;cRa| zFuiznRtXhw--Nlg_foEhDDMO`}QJS2$m2;b4Pt#C5f;gaMqkiV$ z@SUG@GAQj13GB&b7xVew3607JRRZ6HhP(Y4X`|=0*z*3;6wZDPeI{@6ZKVjKAtu?3 zZU17Q6l$v>phB6>HXoiTYgyqo>*fAaWJGKB!}Y^HbE>yr*bRPDkP29g6mssbjRlpj zQDv_~CJY68$j|UiO{p)$Ja(JA8cy|}89tu)Gn~J+|AgvRogqP{91E99%2^t|fI$hKyY3*7=bIVxc z3i`C>c=>Vft4Ji^J1}1xI6lKXxl<`f5$eyl(D2KqHUCi|9T!*U!bI@OEk)8xD3)$A z$=5o|Wy}CSf2_OHL7;onX9@=Uxk{@Uxcbm^Jsuw;*UG{@xLWh*m}q+r6o9c*2YSXY480@jr1tIqP&_ELm|BqXmP;RXT&IK(L2 zy8ht2(t+RP6qCcNqh$ucd$wl z8IV?c)BEPqKd}(V$yIePaWRUFsQbAs|JiUo+Y{1Sf7(TU{d)K^FH%7CK0DFM9a#sC zRi;Bu_+qz|zoD21od`4et5>fyPVf?x134d;Pp%S3m^xjY;}Bf^;evr>y!bQn(7InS zcYxpMpb1IBz6fsWRvM#yR80zmpjM%7)T`8y)p>motx>&q7Vx}bzO1Z|49v`}E2Y%g z7~ztZ&Fz*twG_UK6cXH!LIXiTFh>1>rHY*fZuYnAAVDL+I0HTr+-rthEDj%XALdBs zYG!~7iXY2l{_&YR%NSAC37{(ybkac$#R%W_(yu0KNC_96g81*mKU!W|HtVZ7$ z%49xwT^Dj(GHLsG>wmcbJ=a8B)?Vv##krqh(#5cO)TEGV)v>d&`Sn=%8keBGe5?C} zXNfLK(E(O==cG&gB{bS4XwIQ#f++KMn%c0u-$jgd^h&{%sj*Aqj3uRps&Td=X^A3ee8~!@pF<{)oz-mps+~tiSA{>}B>O zu5bRx#`*BIr&x+eZ4hv#{6vXuMkMH%a1^~$a)&+jmx80X;0OFVmrt2%SiS($DD)*i zdCI5bbTCFB5qmP8ghzhAO9@K>1^K&ter$nf;rAC6BkF2uzRAf{P&Q*B!TmXBAK&o| zL}nx;B=>JA>`xyLPEAdDTMF1CmE%)YdC#*w4vR7q)c#D(2A4E-KIFUasvVth9|j_t zx1g&Aff`GdX*Jn9oZ{JaV1v$Ku#J{@^CsQH{FXWbacB#CPrqcJds|It`tFwRB2FSi zwAl~tl-rEqT9g$hOGLntpc?0D+aV5-gS8VS82%8JA7WzStUXsHLQEhVpug0_16}t* z8fUj@*SgrEeJB-KXz>w|0!B%)$qFwX2yZOA<%1iWFJI&FIrsc*B!SV9bnptQ zw+~#dLt?-Kt;zgD$-5@MwEmb%52DE{-&a6JIp_sTt%h(@M4a~BQgiMqet&b#C*3Sx z+ZVMuQbRy3>?m2wL<5FAt?x!`TfeI$nd${y#koyWljHs5rucFX#)iZW$L8P18pX3= z5SwHsj8NQ%lYjx^m_ReIFaGmkO?09FJr9vtYnV*vJg28k=5EJhazM}0)L5W{C>GoS zOe`$L7ep^wUOYnGAJcfuL6)oO0qL`r$azcq{34CR2B|*y0-(nz27rwV?2HJY2=bt< zx*dkKL5kLcJV*&3;ZtKF8LW0Y@4S=n_us z^38tM7#G{}l8ihTL?K7xLtFHT0Hjk5T#(HEb|IouZC#S~(y1Z%6O#}~rYmoVHt*0Szr*+Ux;91A=U6ij!py3OD z$ZNt**^k1>Nl%%4PR1%KS2}CBkMIUMspcap8#L84HFR_+__ioZt^0}hZu}|Ih=e@( z?2FBqu;bb=DXkJZQ!@5Wo3OE>d!?xVo`pL!7TpY=02SA@k zEti`nzVf9b!)$iEcl4SxxGJ?Xvx)K1IH>!y@mEWR-b(DRx4ikxq0e>o1CvVP>mqH> zfZ6CLxpoa2>9RVm6w-6)hPD-SIBKnV>YKZLhfW7Jqh;3Du?Vie?S7|bJyB2XzmC(| zb{9^FzggXMu9f#ZC)I2DYdrvKzf%Or0ZVRyo=}hIL#T( z`*L4OBVT*5zlL0|+)6jwW_b=*h{IWA9I)0t`Ec2CjW;4#Q*xssx#E90go8Yo{H$7~+|bnApxL!nMF`#o0F6?|M-Sy@b&9%@B~V$IK~Qazwl zwK&!jx^^`tXnG~aXh!n~>mP+ee=swi1kZ1o^EpqJXk6J=*~}M7Uqu?1fCT5fI*L}M zzus5w-YZrqo!iLUCGH=9_dzzFz9dUhfdo_DWpujVAEUvtmde>u~70^qlg$t6feQr7OBa68Cr*OUsuuSz8S*6;pDF1ww3Mi(kD4eNrQ#d zVkj>=`W&*vY&*>F-@cvh-%!87t;WC*QRQf)C#~#=A2`Y@TV1ng`DH)9#HfXxQNPu- z7;moP0+#?!zFnKM2TFAi#Wg5uZJ=6R83Fojfd;6Nv9W=Tjgm_bY$YX8fb>Gq=;d4+ zspw`SMz}MZ_b1cMm2#u483GB|X>TMX#L?pf+*hcg272Rt1qD_Ij!0lw-ehLR0188y z>XBga1&Vr>um|)3>QJPnVn6=$Ed|fz2AdJ|Mu~pvlwtmeU8{3st%hkY z=CLOW<)d^pmb_@%Y>hXx=M|*>Kv;?MI!=pJ46r@7y&ZnB%PWnJzG<8yTzNt!|7-D9 z9Su7#=viB7^SUGb@+Dj@-bBxmoTh9Gtk2VCqY&jc58o2R?#TO+1}yK#M^m z>Tb5|u9b6;AHk#Tt-!?^v?in2C8OATw&*CV-`StB5zj(GW|iJ=mEK31aly#L!p3H= ziO0LdJ-MZ0QA7d`v5W$JJ+aMkyYi!6SQ!?rwJsz;K_q98{bQ>}3&}Um<*SkNcvmk6 zDrQS-Xb=-$y9Nyy7@cgc5fV;14MRPv@ExPDFlA3q56F;vjdS6mpMhwl&Q%>LWr3FSh6j1&@7h(m5Ef^n=tGwZfO30kG4h#MB|g z%;ozv(n*ypEhE#DCWQeG{ogIPrxgKsf&%NK?IJoJRwDRcqs5)+Z$|}>$lw3U>blP~sZmIPUF&x_UkI{-}U@r|*Yc>v+bl+FRL~g&m95?7?0`F_F|1H#ISBaW0 zn&o;Je+M5}udRg=E>cB(HTC2)fvzgG?P(E|VOZ26PO|yh1zC1C@{Sp)b3>ZJOzw-* zigvPu&v-VUQnp4qWPX6fF2|K7&)N%tyB2t=p`j!dt#BcG=GnAfa)gQ|3CmGp9DJ>0 zjtjoK+k%11ajjTA#{#}9ItGRb&ts_8iJzSE@_D?xX=wQe$LPs3BpAGtplrp<>5D?R?uMx$QGjoIo8?ArJUu@Mr?us}dvB)NbKm-IO#kt> z4_pEmccjJr{4j_pD0~YKa^E>Eh4A@QoM;^`c#306y&kfV3v#@5=eD2?#o_7LYhTa{ zfG={ULKG7WU_v$*YL2^tEEKre=xi~W{?U-;#5uc-e_T5qvoF`O^I02hr5;^IGpuza zQXr?Ec=Z*_vB2@Mm_=rm8k<^?w-_cSmhp7f8&|K+mCDL9Gs{8jgBMQq&gX`|p4|C~ z{=~3CosE@`Pji`%r6)QV2$=v@>Q~ucGJlXNbspn+^A;2RMM!4WWtN`Eket?UstZqC zI*k>s<=7n+T1?*+kbQ@VEP%F^W$Jnr&eSO5&3E}P$`PMD7a;-^-8FWug#imbgh{yT z?zNP07F*B_&A)P2UM@I>-J78}?TTpV0)hdogq%KD5~+B9zF6fZZ9(l%hW?SO0rMF7 zy`L{_?FgC!+hxQQm99Uorc4vo4g;EN>JAYhAqtAj;5-Y_3^o|AGa%e(1h(a)gt;V{ zt0v4fKDzx$+atkwOWXj|DZmcBjpK(3(0|n>ae`T(_u8~~_G$Pl`HQCu9-#7v3`uH2 z-RS6dOWTRJTV2=K?#2KuLZ$kUx%1G&>tJuu1`fE9l9<- zz?dz}d>IEv5}-UkKR?KTHRqh&AX1-Aw`ZMLFN(pv1vGiFQ*hWh1RaEatb_M}m*Rv! zzoIYWnY+^py(F107(`qK9fW_CD@R3}re?;h(ucWp`D6ynrC+~SwoZ)?%>t%e&UI_m<1|3 zbYH|-8n(T5s;!#xfuLCS+569v1EFMTX{;C^ZKty0zH)m(+JIqEy;)k=&AlXfhe5SK zn^EBQKu#?TO|?K)qEx~NtZJ-yUh}I!CMF~$4M3`j;`B67oy_H`N=dzK+j|wl2v=D_ zSbnpdZZR>Lc3rH=*w}Clm%n%neil#FSx7%UE-F-Q*LF&cGjF8E;GPUe0~oj&^3RvE zKZ)?IMloLumrLEh|MRZURmfA-QyyFkDlzYx2Ga1)j$d+P)!|++-Z3@yRtDrjUKLaC ze=siGYJ0TLPoN||FbOUn-8XiF-@cW#8q)-9Aa110Nvn5T`;#b%g46qVv9VYI+g4@M zv%HMC>G#|>BK;o1T^>Sd$MPZ|ALMYn@TO}Dws7gpce^`KR-62n5z9S_F z*ynTtx5>jO`K6zITo9{BRAz$e2RK)^L5lfFGf(5ir)b5eF}75P*Sdabf!ZtUc{+N^ znSF zN8}ASoPQ4+xHJDARVHcwJ@fy5k*5Ef{uDHZYAGJ%;$~1PV$$WWD--ry3Bl-uPgB3L zx^T*)};cX-Iaj{+rh!7uWunos(BKPAO4}RT%WL~fkFwn-JhIUhfFa1 zZ!%QhLoSc3Y#D}#HC@IEa)F45`mOQb1%IOaHy$z)l`t`GGUSo{_cik-ti(iGy#FqM z=J%g;ZOL81!Fkvo$iZe%%4?tA*5+p<>bd*v-w?9mFfVTQeG`muuaM)&jNvd~yKQVr zCntOUga6-C?1CfgZ&2f`-shzw9Fe-~c8U=BY%`IgdWKY4iLf8SV_!=4%t{FD9v#;E>x{r|7bkN?}BB=uB9 zAIiQl+LXk^e($>9u@(3i(uTJ99q%nOGVx=*x%}qm@3vVpPWR8t2W2~)DQCM1$RQjb zu<)v(Blfzf+K5oatUFB#P|7W#hmKyPBqWkK1L<<1Wc}VfUGf{WXcG-ZW7SUIhn=3E z9ohYR`y&w^+kLvIO*GJsc}V@y)V{WP>nAPY+uk|p?V$*i3J{;z9nR9(lXCo(q{jBw&Z1{%Ue83C^66DjL?FEXeQ3q zJB7N`$-g<49dmNK3Tqu&z=CLy#PiIxxR>1sC5>Blj~A z`I+Z#foyKZ#*=6^TsJqjft49#aPJmP+V$5!xcEC>2!r=y*Qe6Nu7-43%QZdunlOmv zCxd9cKkd4`7&nY%>0g&mo6d9Leb(s<)Q@M+=J$^8BU8NJokpupNkyS0{)?H~Cr->s zoJ2)opQ+mRmBzG2y@`9jSo!(?W-bWVtyj;try?;9F|h_C*YVNf<2UbjP7)K}>n$IW zS>f?KTcv=0S+U23$V^ioV&hb|8cd@<-d|zAqyYL($t*Tv$kx>4^0+~;sNquLkN(`J zzXq^zMi!QzGYe&I9{zrQYC4)f;W{1TRK~IZHjY0m%?Zs{)jx4MiVl!v*f!LIb6(35 zZ%+P7CdgW3HJ@t^-&;boFTGip;j8daI{Q6e?HA4jjzC?7Cg?}6`eDF%b+2$=9KCR& z3Cg6ER3qRfC=DWk*pA1*l=|f}cMt>j^5=wTp1aHJB2lSzj|OgRIF*>jdMygN;{gtK zme6H2!@-lcT4h+&PoYaBk-_!W-IQ7r2R{ID%F1KL4qyW7TSSwsakr8D-XJ>vD zN?P(sNh8rmA4HPIu%d=$gI2Xt=@0Owtd&2vc0J$OAGYR)8#4_zW@8o(r}(1LJG>0J zv9p(os<9_Z%n5`Y7u78LscSl}mgG7^t=FUUhTzLI`L5@@a15dS-~Jtgrv8}|q}rct zkY#@MRuOjc*cS)+?0y$({*i`{%P9`YS#2LuLHCHXBD7D7!uGw-gG-k zWDpS<$zLdg4r{VjidJEjiwl_%w-owS*j*fn2_7WP_54LEi-!otv{Xs{?X*waPEQpN&NtdLjzUh zbQY`Gbvyb-7T^*O_$!%Ty*C!K+(|%0bk-iT`n2c2=if7kR>;I==-2&~@*oXQ3gSAf`Vg}SL`$hg|_jas1qMSuN zGK78Vk=_U^LmUTV&cYzz$yt91Bo1Z#74$R({^md$jTxGSm9gX(i9iChYF! z=O`5RKCPsbRFhMIhHG7U9Nf;}#fgm1Rt~h_z?HBAs{SCZotj5=O3KQP2@<@#CEu2w z=JKgQ_F|tfUf>~63+#k7gGZ%+7D@*n!d-9ffo&Szs0;fb%cY3v02xeGgnKz%I8Z$AuOu z=y|{AMmfEo^Tc|Wk~qCzx!)&zn&ZDaI^a0&bK&**)cqD9M^Vw(C$U{ z-aXUx+N#B#I&4I1hzh@7098QHcYXhp`|!(o&0f5OtvJ8+C<;Y!G3u(E%tr)<6V0b? zJ3I?zLaqyAE`(H6`cw9|U~8ij5FkfdhF0BJQ4$6RGM&vI=v3nN6fo<3Gfx^PCns?S z9@(dgArxK#8!8|-UP9?q*iajKPRV(mw=B%fBTFz$$!U%&R)dWtOuVEqENG3e&eKQz zq6^6&p+gI&TiQ+Ni*Y^$JcTXvL5>WNdQD1(5p3nRkC`}tTHVl71-KPh1frWLWUPEP ztg9Y%0#;21)Y4JDDFUv9w8B`h23WcTWfmp-fI_Mpw5i)5t@mqs0e$5 za3EmQ10vdIm=Fl%bcH@r+)Gg7wJvXCECU`ApY_)Q-w9_(gP#a3~=1EoF|{YIn|zZj>JRr^ZBl%2oUSk?yQT5&&}1J zZ20SQfq9!4etrjTQhy+z@(>(-UvLB)i63Fq*nkH4Hli@GFU{;#6?v4^gX11Br>-xK z7l`=z`5TuEbD!2vS&V0Z!b1T$NIWa;02EgHwHZF{>zLbYx0_}bv}JA z`@ebIZT}6L)t#@M6d&1EUOvhT>#aXKIW4#Uw>@Me7Rn#cfK~jzLxyvQEizX#Z@CQ{ zS$>Gr!={K?QUu*Hs<);7y+YHh5>pY#wVw+;ku)8$yQB!49rgd^0sx$mCTafOFwQEo z^d-Ije|dSe9mrQzb1k#cZ=nd~wi3+)|DDfI+P?*l7Y>|aum4Zx+0V4Jv?R_s00N!Q z1{LLh9RFu`(_9h4PT7k?H57Iz`J8THKe=-qmi0W|8yA$V5w!APX$xJ3ACBqL=iRM8 zoW=tu*lF;o=}#erGt5KJ@6em~0R*9HL-)lT_9Id(#ZJk4TyZj7ag0C=B@jQPgBoUS znEIv9?mt?b?$rb4Z+cofGO(N(+`0C6e}JT{!VcjzYJ3m+A$bK?LGQfyXJ85R^$S) zb?k9xKRE>k0hDaektjL8-*qWFPCvG2^$cjw)8!*JGElVDWFzhE>&xFg;!t%vY4vIV zR0tRd5d$6t6-8fX;=t`)WTW;Pa1VkbA`s^vr2@0&U?Pj2j7uMt6Q=E|;ihTs3_{j% z0U68g+5owF-lsbg6>upEyE2KhKY!)`kr*P!0(M#RC-qFx&P{MQiHwSx**YBkCrTr;LtAgta#u3fTj?pt&4{*iL=Fz3OZ#aWD(HypQL z!^QcHg|5_AqzDae6_a2XvA1~U=Z6mNEwtcugk7j#;%DR@jV z!>L8)o`JM1Ot|7az}ZNg*=tJ}83Yc^t5y0(katuaE;~F3@aoaBv#I zTjVA5*`pG6yzef-%#5AH|Kb~CgeW=+(U_r7kWlxI8M+{f0w@Hl!|{R&^E%A>m~oHA z^dN9mez`R*mn>+9UgNUy19VMU2P!bMxb%Y|+?CAl&j8~Hjo}YSlz6r<A8Zoq|C%XvTz z5uGW>LIv%nF+s3_@Vnt9Q@|F40x$^UnjT(EjMoLp*<~MLT$Iy|>CZmPCk)e{cB=iM zL=v-jm1qV>{d!oUlx)Vj;4?>JYOmNQOo`0D#G{%N{#GhHxp#A%dqtACwZpoW<82yC zp((WHMkl^OiCGh1Q=J}gaDd%Vn4W&SUo(?9=g+Ki532MG`xq8}WN4*?9Dte247hKRkslK9db_y^y}g&&a)}kC403Gf ztJwlvuT7r|sGoc6b07l@SZmYBziUcwo9FghAwmc+O zM~Aqww?Gii`1%qywoHCM!b^=8c49*{wzs#>9qE@my8?qV6uG`PZ#piuoQIz+fZ7Iy zGBPqUx#8pE!^h7LvNvJ;gU!vxiHma=Pw4QmxxMXIRCK%k;@kto&8mv(HOxIE-p!Sw^GxyT%dW_^e(!+0jh*}!P(9v#I;4c536 zJ#=wI8AG#@Z(nnAn0?EMOe`%~gK@qGUMU&W&eqUG_(s>v6N9tMEBGQgk++K5)V@8vz*m_qw| z5+Stlx3a2A2%njO1Mn-TVBPcb5`(Vp-3>lIN&YeG(XdOyO#spHm{ld5%e}W0uMF$X z-4y>_LxMru2H=N?9*jC5X1{7iMiITe8nCFMeEZE*fT)?9dpRsDEMxgKTurkG^2fZx z2^T%ftDjvm3V-)omG!$Aq3GDyaG~Pg0;x(Eh()GhxPk9g?!$nucSB?AhRTM6gn04d z?t(iIV)q8gKmafcT&gKb%x8Xt>3lH_c<9ote|-XJUT+3jmW8Dy(fF0;Ha39`4H8gb zMfl@!8zq@wJq0CdxkU+1PR{NnM=0izlw0~pjSUaura2@XA00VC=?hK{Iu_zJ01c1? zVag$68k>M7n6h?wSz`WGKCIEPE6dB1D=VQe7)9_KJdf@`IJb#d+lh;dZ*FZhA?_`R zw>_+f&e#lvu?Y!FyEpL&GCjkGH-ON2Us+ieim!+(8aP8;hg6NAY@NdFEzkbT!D{vC zg%xvwQLD3hlZ5iy5Kz+09_VstdMUhiX^~+1c5GF6&eek_BHO1RVf4D&cIwl+VWQ5wxOH z)`9h!9}Ayi^1X{@^Wpi)1_WMaUka|4+e?L^0ki#a?KKD3kW7x9<)`NB zd+WQP%Yx&w%vf0PyOfj{F2q-!pN+)Kl{lRWS~WoF8x{@d@Hzuw+o#;zFS_Bw!+H=n zx_Wqwa4^Gl`axq<{_)%!qPQ16N=iv#7_sWJGd5&;2fwQ`2y7lRC(?vKM4^tN@r{*axVQwprWW78QFe02PC?2 zu01Z`m9N|K6t8(_C11T5fDuqYhmT$+fvO(MZ&w%4ohT>r{bJAulZBkV%eb>C^6X8H&4BBp-av-C!TUO@;JL2S2*pcH$~n`~e*V+3T8W-FA|PBgDen zT=rLWf$d2rB634=1QT=qV6z#2du@+aKtKTIt|`Q<5ENB9t&kyh12Eh}acSYh5e6O@ z9DXzAhP{0ngu_2Zs~kA7>DZq&QyS7(!dVs zTaC&yCnu+j^Ab^uZo1G3SnknKs$zT5pU#l=uFjSS3igQ5PU7OIi}M?@VS*7Gw&chq zr&bqGDlD08d7L=&H2m>C-nFc(sWF2k)HC&H!ft?qU zlXxKqrt{4p3BfX252_ejaKijlP#_2FtGv8CLJEptuusxUK_8)%KU)A3q1J};l?Ei> zg}aTw72q7nU~PVTbZm?o{7YNF1~E;OZEAfzd~tE{!9zEfGB1?fn(c=|gIrDFlzR3y z^N7rSB~?{<_MMlK*KGpk}6%xA7ANM*0CL9xm-Xm96EQq~cJX=ineC`ge#_{(F z`ByF#^#Q;;a{{-_&9vp2(c6Q6O0pTN%CCNZy z!$%p`zH@qWsc_%zJ@jcYg^-Gci>o}ID)8U;$Y^Vmou1b0KRDSKKc)s6IS~~JenBS= z{5Tb8A5-6g)dIQNur07byv=Y|=&#(DFJBISsd^)^H!Yx)uax@4!H)v0btZfH5>{TG z+>ZmHKA@;HH~)Rb;6(Uofzp<>3MG?U+U(4XKTLgy@3xh?Bi<=9eFv`?$hcp@#K61# zTS-e@{S|N*MIo)>Qi!M`tB7zs0qRr?`y-k*OlFwk6f3ZV&>$)0aJ^s4*p+pgb+UHJ zkt}rrJ({#RDW#EZe{ATW`R$~ST7ib8thDsLieJ@Fn7qKtGf13=Wp)dq&MH2YlIy(B zHsd@L|D>$#WI>iG@9BA(*@=ZLBRAi%&jMHYwLX22K39-*p)dSbzo#4@rJ|z3&40b; zi8XO-et&=Wk`vDAjX_qGxZm!r$T|%-PJ&5P&Gg^j-hR32n%4Z^(?35eZ#Sa^7v!g=qtkVddr17wX@5V^S5ozpM8gO#-Y z=K|vwn5d{mu$px+5n^Rk&pIp8Av;D^R?CdnCmj!t*d-(oGUn#~eqd@UEo_?x{Gj`D|8lSg3e@Uxy?2%=%txXZeHN)Mzq_B1(S+mB&hw3gxSK%JZK}*a+QlpZj z*jf1vBwa_~1jt${Y$qVr|4Nabos~6-tj`c*ruQwqi;jK`Zh|D_Jv0FidHePz zgFVG~u*44}2~J zKpXoSNT_GKITE+Z^f;|cfT(&5*Fh1IicH{iKZJEF7{{g%e@ya`fqEm7k zEp#va6=ex`g@2@x=J{Hmp{l5OidenySLbn2fZJgM3r$Q)x|MoSs>ccOd=CtmB`~N= zS-uPA$-s7#T^T51R#jC!UM=Z@k@N;Rg^`A{8$__VlJ>m5eC=mnUlh_U_u?q^f;B5D zGE&OED!Ejzpv4PiY4r_yR8!E>NpJ$fx3BkJOs-eA_WQW>t?^Nw}#VZf*n+~`&wRc zVR^Z>4u693H~W+4>8q>O!XE1!TH0E~M3EnxB%f+gwl(PAdyl0Ekt?Qep;3d)-S6{w zPj>>UN~SsyqwzW@qw!xD2bY<(UR|DO@QK@*YCCLcX~FabGvI(t@H2T|TU#p|;Iex% zaq$8Cg`ZBj$ZzfJ>|FMhV-|7S&RRs)B5el;UO3C+6{8EQFXN+s?d=jLFK{8ZclcJ*XgtQ3+|_Jj&IaU0;6yv0r9vELrc$Ua9Aiy!owp* z26w=BEdgHR*K6W`{Qnpw2!m6BEAF9^Qm9gw&)pcRG6Bj;UXtA-dq(QvV9d<+DQ(0LIFfgPV&em*S z%s*V-YNs&UkH=O7EoTNWfFr>dCsu_is#yQ=BX$m>I_I(zEM#)7IMT1Sz5If>hbMx^ zd4e*N0=X#|rX#BjfzKgysG3?n1joE3O^KnQAxvL z)K1lmyG9p#Mwq^Ue9Ru2j#b+Eqtxu|zO=YIJYJZc#aRK+Pew6Y<4}y5IS8c&nRAXK zWQg~fqI&xCFHXB;pgS&F8m!uJ&9EBmpJ^zc0?-ipO1E{NlY`?X$`O_=g(F6*8s1xR z?YWS*Ka3YEA8!4eLzCJ`W%Sok)K*(ds|UdGfLFEoojz*^PuHX?v$AA=Rv;(daj_`u zb6!gbuJ8Q}DUcF8)YOb7thb#I2VKgw^^np5>V+a?^+}WRheIMlQHnT!UVIf&vbON) zLPSI@ub|*og7Q5up!-%07qh4F6$WQ7n70#tivZAb_vnk4p22mNq2Y#jAf)vGS}()< z>~~s(_;E16L-G(QY46bO9X@@_BQJb4I{5yduXV59D}BUfW`JVbRQ6LB7Z>=8Nw4qU zzu*)|6%Y#X*%y$&Wo2jUiux>mhRagB`3(;V&%ys-SEt#l0vSlHNG=%M!b8oEged!<*a$vsM2!I87J=;eKHeTpfa~sst?g5jlLECkdr5TJe{B#~ zJ$Tu$4MUa*qzB5Ll!FJR1Y^AT`1ob5o;BZsFXx>2p!ymkp0Klkg0~P2Z=lXBm}d$( zC3N0N6)6gcq9sj)bpupus5VYA>=l}XIb-S8Fe}lH%pMWpae?(2+7M+ zCFFPHM1*CC_xR~-+Y-g{Zx#8RM+LxgSUE$)L5WL`qhew{^!)p%$}kr2G6FQwI0O%B zoUE!?osTS*taf?EBlFreFM3@+KM6rEt}Es-rguD!9;(3jK~>d;l;NyXBGkKg`4Igo z(TKmx!eaGG2MHQjHDyy%(;W1hVkRDFP5}aV%6zU{>RmDX;nW^uHR2gSu13;u3H<+R z6%~uYm0rnzfXy{Kc>vOU0Yt7@U5INTs_GFLl1$hi6CkN>Q zGTcN5sy|^OIRpX6<5lYK*)G)VyuE`1l`9L(z1$D;4jz&ghct`n=2+fD@Lg6#@4KT^ zs$<7nUVCd|fl&qV5u0{TWrBCFydc;lZEfvkea+c+!2~_(CAuDl!D46nTli8e=b@nq zc_8Ve*D|`As33qF+hcK3{m~8Z|3E7&`c~Rml(LlS$ItDFO#nir8(d692}o}NnzF8d z<{D|ZjCz%5En7l{jRP)(yp8Ztz*!XNaj$xLt?x7Ea`$?Refwf^e5WQ(3W{#n{QlxQ za1)&@)+OR&`fP1&Vd-SR%qZ=4C_S?PZygwMHJ}bY66z!38qyv@cC6^4(vGCg5HzW&LWRwn^g6%xYpLCfY3Z)*;J$$bIgCK$+?c+*qJ8s`x0H~E z!K?5yBt3=1xGJ;Md)y^;0DZrNYJfQ4j65J(_0UzJrnt|_?)zG!iUD(7By2LIj?fqV z?ah1qZQvP3`b%jSp9`gKa-u^?xs1C%mnoge;mffvga$Gn6QSsZLt&z+s$jjg5n>7c^ z8e|Z(WN~}BUn}dLct}?$M!;yeb?lH0zk);gC4-TG!=^j$s}sb_(r|61eR+XmVqy=n zvk3vs0A`nQg}LMQ&lDd%*$M!WicP61D){K!=wY!n|GW_W zIFrBuX(=feF^_^9#AP~gpLh8sg6;H1k4Ye7+*^;s(!_q!57LPwClyA0fb8s+FL5Hb zag%`_@2iNr?*}@i#?!kjp2!;q%f7_tTyGgo$Qt=wU456ne!!6H6)VA_Rlb9qBo9-b0Ss7psd>PDK6p+!#U_dz< z+C;>~71OzK$H>w(9I9ftHs0=rI{yhZm!n5lMVcBWZ@ZoZCjW~Dt*=+t*RsPRuYd;y zE9}l4aX(Z@y{FSnF#|(n@nXlDW`_^U0w7q~*-0!e7!R5VKWVJT6-Blf+MbEZ^Q^3_ zM@ZC>Ne^l(}jk)9jTDJLfeW$?tvBseYB>$u(9cGAd!Uh zO$@eJx3|Zk$?UmNDy>+(d|gPFriMlXY+%wbEd;%oWN#Qqt?SYiSnF~pX72eRh}T~s z`KF>^^F~k*|HYsnt8LpZZSM~L9r)-DEg&@|#R8_~7?pH2B;-Es=?uNP>G>PZ)ED{H zt1nDXPZP;iQgU(+qU!o!H&^q~u_ptqHan&xB18n{&Ryl^=7tKJ#qDK2d!yeLKY0>s zyMKQV48`vQHHL4!`#n_xzL0x;k0r;MK=!r+4m!Ebf*SjdOC9&756iQ@<`qzm_brsr zF%Y;|;gl%Hnm&@@OFH3SB^ZH%)nolFx%YO-9qp>R5&=!9zz;0Dp{uK__3qtFYmTWN z#jg1DMdI)5?d?DH^(n5L<dBI=&A5(`7XG7kJPRUjxC= zOY%AOI}&&o!~n$Q)ni-OQQ20INg+K$+bN>W=Q!CMm#X#_P~jxhX@Yt`tLxvTH7P%} zCHn?SE6_!@8GmLU-9LvexmM#JE@)_MqzXv&f3atDUDIoNO8>!@@hpxojpV_tVkg^) z$?&yp$~+QI=dEzQ#?jIqKYVD{E}`>n`K>Q8C4G?&{+l4Ub=)wSH3#t-gCI=csE!PjuCF4wub%b&wB3+)*GBkl){C3&(p zBJF|YUc$lFZt~ayYVr?OtFJ!&{ciaBu}930|DwA3>hB4LeGL(w`TTyPD}!>LH=?5W zK}lupX=SR5QpDR}8)x>4cc?gK0R1ux*uJVW?47_ziV`G6)QOn_d-kjng zxipPQX*k6pIJSn3dAg=>!~a^paMeF_k85j9w>>4)hg%Y!L8r`cG~jT~=(s|)0#UMb zx@$Rgv%dZ;Bxi_s^770?Zt4^JBj28*@;pnly z^<9nEDDyjY3bWp3+53&}c8uo%(Rpd>?Y+gTX(4-;#J{H&^EOnA`q)Umlt{sG`Wq?2 z^xx>j5)rs41hz+GN32$^RV?VQ%>9qe&Z@HsYh(liG%XV?XuZ8Ij{CvHLsY0_Fr+|a z6JFhMT(?Q0ybptlpmAJVsVxj=;WH+aP9uYt%O+=?$5A1TG7-X{2TI1CEZf-u&sOPh zkd-=Puj0$2Z*N4F;^5 z=AAs?%5TJ}wEqS(eV7@TJ0lT=?plGgYY3ivTkq~#rLDcsnxoY#HSuatj_1@{bCYf6 zV9L`&>WJlHGpKGi55t8AQ=QkPb61YL$upPJ$oC|vmUYT_8>4ODO!tBu&R{0&VLGf& z&Qn-$Oib_*3RiyHJiugOd@904VhC!Bic3prUJSprnHkyHvVa;T9z9_~nwY|aVg`WQ zP>d7OHZ?XDDs;fv`5kq(mm2BBg}^&NPE|FJR-UPnDz#*Zz8AY~b#lEiM6MKAmuSV6 z7o5KOlG?J-HiImkgxZbU+SOPFxy&UQrCN8l{zm{0U=a4XK9zz1tbT6fU~m!g%dKC* z=NqS43oo`n07eQ@0zFyC-pWd!^dKpz!tr7>O&J)nNkaF`HPQ_jqbT_KEH5b>QNC0* znepF<(=f&F^IM7EHba0DYT^usQbZ=!-k-KyfAAigv2-9RJY1h72Yl-yDK0L)ZoN`| ze*Qet3c)$S110W>2Qz#_Cf41jv?x-w+rz?y@3tvKn%cOYIN@PKwwz-cGNN4Qf1-yy zmNMZWo%Db3aWVnK{XV20@flDom=2i?g2BWe{*rPyetc{|;hQ{c_Udsyo+xv!sT7o9 z7giC7at?`@w|2ZKGq>e1s?{n^qfE->`0;uuU9b#-Y8{^)W#|5Fc zWo|8UN)jpj<)^%{lS~H%cP`Y&!xqaTO)+`v(}r@>l;230c4uRw2_n<1XZt#e*Pw&x z6aXh537J6_YZwYY(bDSc=Z7O@!;!b}&_TI{Oq7Gtex|#@4&I;E{v-$*A{~BUcb47) z-YF^YubLQSXG-n8$7tlvCjroH2D1i?L?Y(95Gs34+?ok`^KRzjMly0@nWzNf=A(Bk z+7Y*@qobpu#Cw~ym({jI{j68hfQ9;qfABoc9E%~|7XG~{O7)g&msy+|A=iW@iR{XNEa9%n+Upr)Ji^~wuj(d0bpG*cO3 zc?k4xqVxeo=CW2)JIt#EUtfKmZ`M1^o*|GM@*vdRCkb^lG)T9l-FUUTr}Y(8bfQ=J zI~Wl}N?K8ZHxGz!F0Zj5mBQna4p_wFG?`cH^h%j2U9)uRv60I(Dn#yEhU#^#;a5VPaHnG~tWfxz`=T0m zaSD7x>MP~@ex>fb3FGTz0AZvzE6M&Vk&%C$Xmuk(72o;VIo<6hF1$Zww6t0rImSIw z?QuM|8Dsb7P(;V%#6*&V@33JMTlPakJ9Chh8v1Eudk>j-lKCg}_Uwf|uh!O)?6q*M z`zmSgfr4ftdG`Lo-dVSC^xE^<%EPEVQ^zpFU{BWabMVHOlaV1Pd_yB68s315ClP?m z@hxbMFv2S?A|bI;)3r@#yy2F%-}P;@V{zY@jz>%+q1D%uk)2TS$Qn=IP=G)4`4p zxnRPNL5BM@Ft8J>4r&o~fU$++&e+>aE|AcPz*XMB=@BN%b4fiOIu=Z?2r9dcsz|T1 z6&rx~vkR@;V7F-~Dg7H~xH<;njf{;EK&o^=`BF63`Jr!NQ;aro>N7TFayHSGbQ{->*<-8zveNx6PlP#Cpssf^XA5hkq2MuzRQ^L8xgBT^}HVqO+kIg^=#eqp7F4T zGdWdJ=gg3-#2c}$OIB7^T1|1uvn|iw^GN8@ z^C4|>T3)*F?p}o`_V;2bd|S!(sz-C-3|^wXGx&m~sp-}2OODL^FLL8wI3-qjg?)bt zqR!?D<_RRn;^sB4`G2JRdbgC=awp9{a3733`|(X?+f7V*ZmsRs*~!W|McWoN`13N} z!v14KwHxuHIv+3m$m*|oKK-dyi}s!8H=Vh#N)z9rh@V$|@-gv1Fyq`$0o*5PHvepA zg5&S|b>}`#`^07Ve#zx}cj=45bo>*P{`rvDkN_EfqboDlpD@VRFz)jDbp<7r0GVIc z&RrW=wng|CGV$rs5|bGQ{QCZ*xofXR|K~qCc^ta&FA{rz0vL8~?mke|#0}=MKfhj; z)~##0Y*vbbXJh3HPu8)h%FWy8*+d9<5ojge6N)#90;+Ty1C@% u8uuJD2+TKRjy+JT`1ySSY03JBc#EPZw?!9iFRdlvmx-a7LH5=IfBg^B2D5np literal 0 HcmV?d00001 diff --git a/doc/salome/tui/input/index.doc b/doc/salome/tui/input/index.doc new file mode 100644 index 000000000..d0ef8933b --- /dev/null +++ b/doc/salome/tui/input/index.doc @@ -0,0 +1,13 @@ +/*! \mainpage + +\image html smeshscreen.png + +To browse the \b SALOME Mesh module Developer Documentation, follow the links below or use navigation menu at the top of the page: +
      +
    • Modules - documentation of TUI functionality.
    • +
    • Name Spaces - list of TUI packages and scripts.
    • +
    • Data Structures - list of all data structures and classes with brief descriptions.
    • +
    • Files - list of all files with brief descriptions.
    • +
    + +*/ \ No newline at end of file diff --git a/doc/salome/tui/static/doxygen.css b/doc/salome/tui/static/doxygen.css index 389449d87..ad299dd32 100755 --- a/doc/salome/tui/static/doxygen.css +++ b/doc/salome/tui/static/doxygen.css @@ -1,5 +1,32 @@ -H1 { +body { + font-family: Arial, Helvetica, sans-serif; + background-color: #ffffff; +} + +h1 { text-align: center; + text-decoration: none; + border: none; + line-height: 25px; + text-align: center; +// text-transform:uppercase; + background: #D9f4fd; + font-size: 12pt; + font-weight: bold; + border: 1px solid #CCCCCC; + margin-top: 50px; + -moz-border-radius: 8px; + -moz-box-shadow:5px 5px 5px rgba(0, 0, 0, 0.15); +} + +h2 { + font-size: 12pt; + font-weight: bold; +} + +table { + font-size: 10pt; + padding-left: 20px; } CAPTION { @@ -11,16 +38,6 @@ A.qindex {} A.qindexRef {} -/* Link to any cross-referenced Doxygen element */ -A.el { - text-decoration: none; - font-weight: bold -} - -A.elRef { - font-weight: bold -} - /* Link to any cross-referenced Doxygen element inside a code section (ex: header) */ @@ -37,7 +54,53 @@ A.codeRef { A:hover { text-decoration: none; - background-color: lightblue + background-color: lightblue; +} + +div.contents { + font-family: Arial, Helvetica, sans-serif; + font-size: 10pt; + padding: 20px; +} + +div.navpath { + font-size: 11pt; +} + +div.header { + background: url("head.png"); + background-color: #175783; + border: 1px solid; + height: 80px; + background-repeat: no-repeat; + margin-bottom:20px; +} + +div.tabs { + text-align: justify; + margin-left : 2px; + margin-right : 2px; + margin-top : 2px; + margin-bottom : 2px + font-weight: bold; + color: #FFFFFF; +} + +div.footer { + background-color: #D9f4fd; + border: 1px solid #AAAAAA; + font-family: Arial, Helvetica, sans-serif; + font-size: 11px; + padding: 10px; +} + +div.div-footer { + background-color: #D9f4fd; + border: 1px solid #AAAAAA; + font-family: Arial, Helvetica, sans-serif; + font-size: 11px; + padding: 10px; + text-align: center; } DL.el { @@ -45,10 +108,8 @@ DL.el { } /* A code fragment (ex: header) */ -DIV.fragment { - width: 100%; +div.fragment { border: none; - background-color: #CCCCCC } /* In the alpha list (coumpound index), style of an alphabetical index letter */ @@ -94,10 +155,6 @@ DIV.groupText { font-size: smaller } -BODY { - background: #FFFFFF; -} - /*div.div-page { background-color: #FFFFFF; margin-left: 1em; @@ -115,17 +172,19 @@ BODY { border-color: #0D299A; }*/ -DIV.div-footer { - margin-left: 1em; - margin-right: 1em; - margin-bottom: 0.2em; - text-align: right; - font-size: 9pt; +div.tabs { + text-align: justify; + margin-left : 2px; + margin-right : 2px; + margin-top : 2px; + margin-bottom : 2px + font-weight: bold; + color: #FFFFFF; } /* In File List, Coumpound List, etc, 1st column of the index */ TD.indexkey { - background-color: #CCCCCC; + background-color: #DDDDEE; font-weight: bold; padding-right : 10px; padding-top : 2px; @@ -139,7 +198,7 @@ TD.indexkey { /* In File List, Coumpound List, etc, 2nd column of the index */ TD.indexvalue { - background-color: #CCCCCC; + background-color: #EEEEFF; font-style: italic; padding-right : 10px; padding-top : 2px; @@ -158,3 +217,227 @@ span.comment { color: #800000 } span.preprocessor { color: #806020 } span.stringliteral { color: #002080 } span.charliteral { color: #008080 } + +/* @group Code Colorization */ + +.fragment { + font-family: monospace, fixed; + font-size: 10pt; +} + +pre.fragment { + width: 95%; + border: 1px solid #CCCCCC; + -moz-border-radius: 8px; + -moz-box-shadow:5px 5px 5px rgba(0, 0, 0, 0.15); + background-color:#EEF3F5; + padding: 4px 6px; + margin: 20px; +} + +/* Top Navigation style */ + +div.navigation { + margin-bottom:20px; +} + +/* Left navigation panel style */ + +body.ftvtree { + background-color: #D9f4fd; + margin: 10px; +} + +div.directory { + margin: 0; +} + +div.directory.p { + margin: 0; +} + +h3.swap { + font-size: 10pt; + margin-bottom: 0; +} + +/* Link to any cross-referenced Doxygen element */ +a.el { + text-decoration: none; + font-family: Arial, Helvetica, sans-serif; + font-weight: bold; + font-size: 10pt; + color: #551a8b; +} + +a.el:hover { + background-color: transparent; + color: #551acc; +} + +a { +// text-decoration: none; + font-family: Arial, Helvetica, sans-serif; + font-weight: bold; + font-size: 10pt; + color: #551a8b; +} + +a:hover { + background-color: transparent; + color: #551acc; +} + +a.elRef { + font-weight: normal; +} + + +#MSearchBox { + -moz-border-radius:8px 8px 8px 8px; + background-color:white; + border:1px solid #84B0C7; + margin:0; + padding:0; + white-space:nowrap; +} + +div.directory img { + vertical-align:-30%; +} + +div.directory p { + white-space:nowrap; + margin: 0; +} + +div.directory-alt div { + display: none; + margin: 0px; +} + + +div.directory div { + display: none; + margin: 0px; +} + +div.version { + background-color:#ffffde; + border:1px solid #cccccc; + font-family: Arial, Helvetica, sans-serif; + font-size: 9pt; + text-align: center; + width:100px; + -moz-border-radius: 8px; + // -moz-box-shadow:5px 5px 5px rgba(0, 0, 0, 0.15); +} + + +/* @group Member Descriptions */ + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #FAFAFA; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #ccc; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memTemplParams { + color: #606060; + white-space: nowrap; +} + +/* @end */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; + margin-left: 3px; +} + +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.memitem { + padding: 0; + margin-bottom: 10px; +} + +.memname { + white-space: nowrap; + font-weight: bold; +} + +.memproto, .memdoc { + border: 1px solid #84b0c7; +} + +.memproto { + padding: 0; + background-color: #d5e1e8; + font-weight: bold; + -webkit-border-top-left-radius: 8px; + -webkit-border-top-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -moz-border-radius-topleft: 8px; + -moz-border-radius-topright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + +} + + + +.memdoc { + padding: 2px 5px; + background-color: #eef3f5; + border-top-width: 0; + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +/* @end */ diff --git a/doc/salome/tui/static/footer.html b/doc/salome/tui/static/footer.html index cb55f397a..53f5a62fe 100755 --- a/doc/salome/tui/static/footer.html +++ b/doc/salome/tui/static/footer.html @@ -1,5 +1,14 @@ - - - - + + + + + + + + diff --git a/doc/salome/tui/static/header.html.in b/doc/salome/tui/static/header.html.in new file mode 100755 index 000000000..791a37c53 --- /dev/null +++ b/doc/salome/tui/static/header.html.in @@ -0,0 +1,14 @@ + + + + + + $title + + + + +
    +
    Version: @VERSION@
    + + diff --git a/idl/Makefile.am b/idl/Makefile.am index 03486bd07..5a88808b3 100644 --- a/idl/Makefile.am +++ b/idl/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # This Makefile is responsible of generating the client and server # implementation of IDL interfaces for both C++ and python usage. # The building process of the C++ files is in charge of each source diff --git a/idl/SMESH_BasicHypothesis.idl b/idl/SMESH_BasicHypothesis.idl index 59b3a8a2c..871f07714 100644 --- a/idl/SMESH_BasicHypothesis.idl +++ b/idl/SMESH_BasicHypothesis.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_BasicHypothesis.idl // Author : Paul RASCLE, EDF // diff --git a/idl/SMESH_Filter.idl b/idl/SMESH_Filter.idl index 83c1d43d2..56f2cdce2 100644 --- a/idl/SMESH_Filter.idl +++ b/idl/SMESH_Filter.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_Filter.idl // Author : Alexey Petrov, OCC // diff --git a/idl/SMESH_Gen.idl b/idl/SMESH_Gen.idl index 9173c3f86..14527a9b3 100644 --- a/idl/SMESH_Gen.idl +++ b/idl/SMESH_Gen.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,9 +19,10 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_Gen.idl // Author : Paul RASCLE, EDF - +// #ifndef _SMESH_GEN_IDL_ #define _SMESH_GEN_IDL_ @@ -339,6 +340,16 @@ module SMESH * Can be used to check if the object was created in the same container, as this engine. */ long GetObjectId(in Object theObject); + + /*! + * \brief Get MED version of the file by its name. + */ + boolean GetMEDVersion(in string theFileName, out MED_VERSION theVersion); + + /*! + * \brief Get names of meshes defined in file with the specified name. + */ + string_array GetMeshNames(in string theFileName); }; }; diff --git a/idl/SMESH_Group.idl b/idl/SMESH_Group.idl index aa9cee125..c0bb54bc9 100644 --- a/idl/SMESH_Group.idl +++ b/idl/SMESH_Group.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_Group.idl // Author : Sergey ANIKIN, OCC // $Header$ diff --git a/idl/SMESH_Hypothesis.idl b/idl/SMESH_Hypothesis.idl index 56ae48b0c..443f7e75a 100644 --- a/idl/SMESH_Hypothesis.idl +++ b/idl/SMESH_Hypothesis.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_Hypothesis.idl // Author : Paul RASCLE, EDF // $Header$ diff --git a/idl/SMESH_Mesh.idl b/idl/SMESH_Mesh.idl index 8a5c37daa..4f5639fb1 100644 --- a/idl/SMESH_Mesh.idl +++ b/idl/SMESH_Mesh.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,10 +19,10 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_Mesh.idl // Author : Paul RASCLE, EDF // - #ifndef _SMESH_MESH_IDL_ #define _SMESH_MESH_IDL_ @@ -263,6 +263,10 @@ module SMESH interface SMESH_GroupOnGeom; interface SMESH_subMesh; interface SMESH_MeshEditor; + + typedef sequence submesh_array; + typedef sequence submesh_array_array; + interface SMESH_Mesh : SALOME::GenericObj, SMESH_IDSource { /*! @@ -528,13 +532,23 @@ module SMESH * the groups Group_On_All_Nodes, Group_On_All_Faces, ... ; * the typical use is auto_groups=false. * - theVersion : define the version of format of MED file, that will be created + * - overwrite : boolean parameter for overwriting/not overwriting the file, if it exists + */ + void ExportToMEDX( in string file, in boolean auto_groups, in MED_VERSION theVersion, in boolean overwrite ) + raises (SALOME::SALOME_Exception); + + /*! + * Export Mesh to different MED Formats + * Works, just the same as ExportToMEDX, with overwrite parameter equal to true. + * The method is kept in order to support old functionality */ void ExportToMED( in string file, in boolean auto_groups, in MED_VERSION theVersion ) raises (SALOME::SALOME_Exception); /*! * Export Mesh to MED_V2_1 MED format - * Works, just the same as ExportToMED, with MED_VERSION parameter equal to MED_V2_1. + * Works, just the same as ExportToMEDX with MED_VERSION parameter equal to MED_V2_1 + * and overwrite parameter equal to true * The method is kept in order to support old functionality */ void ExportMED( in string file, in boolean auto_groups ) @@ -652,6 +666,9 @@ module SMESH ElementType GetElementType( in long id, in boolean iselem ) raises (SALOME::SALOME_Exception); + EntityType GetElementGeomType( in long id ) + raises (SALOME::SALOME_Exception); + long_array GetSubMeshElementsId(in long ShapeID) raises (SALOME::SALOME_Exception); @@ -661,6 +678,22 @@ module SMESH ElementType GetSubMeshElementType(in long ShapeID) raises (SALOME::SALOME_Exception); + + /*! + * Methods to set meshing order of submeshes + */ + + /*! + * \brief Return submesh objects list in meshing order + */ + submesh_array_array GetMeshOrder(); + + /*! + * \brief Set submesh object order + */ + boolean SetMeshOrder(in submesh_array_array theSubMeshArray); + + /*! * Get mesh description */ @@ -741,6 +774,16 @@ module SMESH */ long ElemNbFaces(in long id); + /*! + * Returns nodes of given face (counted from zero) for given volumic element. + */ + long_array GetElemFaceNodes(in long elemId, in short faceIndex); + + /*! + * Returns an element based on all given nodes. + */ + long FindElementByNodes(in long_array nodes); + /*! * Returns true if given element is polygon */ diff --git a/idl/SMESH_MeshEditor.idl b/idl/SMESH_MeshEditor.idl index 62623567a..983b2f486 100644 --- a/idl/SMESH_MeshEditor.idl +++ b/idl/SMESH_MeshEditor.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,9 +19,9 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_MeshEditor.idl // - #ifndef _SMESH_MESHEDITOR_IDL_ #define _SMESH_MESHEDITOR_IDL_ @@ -35,6 +35,11 @@ module SMESH interface NumericalFunctor; interface SMESH_MeshEditor { + /*! + * \brief Wrap a sequence of ids in a SMESH_IDSource + */ + SMESH_IDSource MakeIDSource(in long_array IDsOfElements); + boolean RemoveElements(in long_array IDsOfElements); boolean RemoveNodes(in long_array IDsOfNodes); @@ -211,6 +216,17 @@ module SMESH long BestSplit (in long IDOfQuad, in NumericalFunctor Criterion); + /*! + * \brief Split volumic elements into tetrahedrons + * \param elems - elements to split + * \param methodFlags - flags passing splitting method: + * 1 - split the hexahedron into 5 tetrahedrons + * 2 - split the hexahedron into 6 tetrahedrons + */ + void SplitVolumesIntoTetra(in SMESH_IDSource elems, in short methodFlags) + raises (SALOME::SALOME_Exception); + + enum Smooth_Method { LAPLACIAN_SMOOTH, CENTROIDAL_SMOOTH }; boolean Smooth(in long_array IDsOfElements, @@ -554,6 +570,19 @@ module SMESH in boolean CopyGroups, in string MeshName); + void Scale (in SMESH_IDSource theObject, + in PointStruct thePoint, + in double_array theScaleFact, + in boolean Copy); + ListOfGroups ScaleMakeGroups (in SMESH_IDSource theObject, + in PointStruct thePoint, + in double_array theScaleFact); + SMESH_Mesh ScaleMakeMesh (in SMESH_IDSource theObject, + in PointStruct thePoint, + in double_array theScaleFact, + in boolean CopyGroups, + in string MeshName); + void Rotate (in long_array IDsOfElements, in AxisStruct Axis, in double AngleInRadians, @@ -626,6 +655,12 @@ module SMESH */ long_array FindElementsByPoint(in double x, in double y, in double z, in ElementType type); + /*! + * Return point state in a closed 2D mesh in terms of TopAbs_State enumeration. + * TopAbs_UNKNOWN state means that either mesh is wrong or the analysis fails. + */ + short GetPointState(in double x, in double y, in double z); + enum Sew_Error { SEW_OK, SEW_BORDER1_NOT_FOUND, diff --git a/idl/SMESH_Pattern.idl b/idl/SMESH_Pattern.idl index 4f0bcfaa6..c00ab3a07 100644 --- a/idl/SMESH_Pattern.idl +++ b/idl/SMESH_Pattern.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_Pattern.idl // Created : Mon Aug 2 10:48:36 2004 // Author : Edward AGAPOV (eap) diff --git a/resources/Makefile.am b/resources/Makefile.am index 3fb97d2ae..ca671b982 100644 --- a/resources/Makefile.am +++ b/resources/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # -* Makefile *- # Author : Patrick GOLDBRONN (CEA) # Date : 28/06/2001 @@ -55,6 +53,7 @@ dist_salomeres_DATA = \ mesh_init.png \ mesh_length.png \ mesh_length_2d.png \ + mesh_find_elem_by_point.png \ mesh_free_edges.png \ mesh_free_edges_2d.png \ mesh_free_nodes.png \ @@ -166,7 +165,10 @@ dist_salomeres_DATA = \ mesh_extractGroup.png \ mesh_precompute.png \ mesh_2d_from_3d.png \ - mesh_free_faces.png + mesh_free_faces.png \ + scale.png \ + scale_along_axes.png \ + split_into_tetra.png # VSR: little trick to avoid putting if SMESHCatalog.xml to the distribution archive nodist_salomeres_SCRIPTS = SMESHCatalog.xml diff --git a/resources/SMESHCatalog.xml.in b/resources/SMESHCatalog.xml.in index 200d23297..5a5a88879 100644 --- a/resources/SMESHCatalog.xml.in +++ b/resources/SMESHCatalog.xml.in @@ -1,6 +1,6 @@ + + + + + + + + +
    + + +
    diff --git a/resources/StdMeshers.xml b/resources/StdMeshers.xml index d6083f4b0..d267ef1f6 100644 --- a/resources/StdMeshers.xml +++ b/resources/StdMeshers.xml @@ -1,7 +1,7 @@ Opaque @@ -2059,6 +2187,10 @@ Consider saving your work before application crash STB_2D_FROM_3D Create 2D mesh from 3D + + STB_MESH_ORDER + Change submesh priority + STB_CREATE_GROUP Create Group @@ -2409,6 +2541,10 @@ Consider saving your work before application crash STB_TRANS Translation + + STB_SCALE + Scale Transform + STB_TRANSP Transparency @@ -2565,6 +2701,10 @@ Consider saving your work before application crash TOP_2D_FROM_3D Create 2D mesh from 3D + + TOP_MESH_ORDER + Change submesh priority + TOP_CREATE_GROUP Create Group @@ -2915,6 +3055,10 @@ Consider saving your work before application crash TOP_TRANS Translation + + TOP_SCALE + Scale Transform + TOP_TRANSP Transparency @@ -3023,6 +3167,40 @@ Consider saving your work before application crash NO_MESH_SELECTED No mesh selected + + SMESH_PREF_def_precision + Default precision + + + SMESH_PREF_length_precision + Length precision + + + SMESH_PREF_angle_precision + Angular precision + + + SMESH_PREF_len_tol_precision + Length tolerance precision + + + SMESH_PREF_parametric_precision + Parametric precision + + + SMESH_PREF_area_precision + Area precision + + + SMESH_PREF_vol_precision + Volume precision + + + SMESH_PRECISION_HINT + +Input value precision can be adjusted using +'%1' parameter in Mesh module preferences. + SMESHGUI @@ -3103,6 +3281,10 @@ Please, create VTK viewer and try again PREF_NOTIFY_MODE Show a computation result notification + + SMESH_PREF_GROUP_PRECISION + Input fields precision + PREF_GROUP_ELEMENTS Elements @@ -3151,6 +3333,10 @@ Please, create VTK viewer and try again PREF_LABELS_COLOR Labels color + + PREF_MARKER_SCALE + Scale of marker + PREF_NODES Nodes @@ -3183,10 +3369,6 @@ Please, create VTK viewer and try again PREF_SHRINK_COEFF Shrink coef. - - PREF_SIZE - Size - PREF_TAB_GENERAL General @@ -3203,6 +3385,10 @@ Please, create VTK viewer and try again PREF_TITLE_COLOR Title color + + PREF_TYPE_OF_MARKER + Type of marker + PREF_COLOR_0D 0D elements @@ -3375,6 +3561,15 @@ Please, create VTK viewer and try again created during preview operation. Do you want to remove all this submeshes? + + SMESH_WRN_NOTHING_PREVIEW + No mesh preview is available + + + SMESH_REJECT_MESH_ORDER + The submesh priority changed during preview operation. +Do you want to restore original submesh priority? + SMESHGUI_ConvToQuadDlg @@ -4264,6 +4459,37 @@ Please specify them and try again Mesh to modify not selected + + SMESHGUI_FindElemByPointDlg + + CAPTION + Find Element by Point + + + CREATE_NEW_METHOD + Create a node + + + MESH_PASS_THROUGH_POINT + Make a node at point + + + METHOD + Method + + + MOVE_EXISTING_METHOD + Move a node + + + NODE_2MOVE + Node to move + + + NODE_2MOVE_ID + ID + + SMESHGUI_MeshDlg @@ -4592,6 +4818,25 @@ It is impossible to read point coordinates from file Use numeric functor + + SMESHGUI_CuttingIntoTetraDlg + + CAPTION + Splitting volumes into tetrahedra + + + SPLIT_METHOD + Split hexahedron + + + SPLIT_HEX_TO_5_TETRA + Into 5 tetrahedra + + + SPLIT_HEX_TO_6_TETRA + Into 6 tetrahedra + + SMESHGUI_PrecisionDlg @@ -4712,6 +4957,7 @@ It is impossible to read point coordinates from file MERGE_EQUAL_ELEMENTS Merge equal elements + NODE1_TO_MERGE Node 1 To Merge @@ -4864,4 +5110,77 @@ It is impossible to read point coordinates from file Create Groups from Geometry + + SMESHGUI_MeshOrderDlg + + SMESH_MESHORDER_TITLE + Order of submesh in meshing process + + + + SMESHGUI_MeshOrderOp + + SMESH_NO_CONCURENT_MESH + No concurent submeshes detected + + + + SMESHGUI_ClippingDlg + + CLIP_PLANES + Clipping planes + + + ROTATION_AROUND_X_Y2Z + Rotation around X (Y to Z): + + + ROTATION_AROUND_Y_X2Z + Rotation around Y (X to Z): + + + ROTATION_AROUND_Z_Y2X + Rotation around Z (Y to X): + + + ROTATION_AROUND_X_Z2Y + Rotation around X (Z to Y): + + + ROTATION_AROUND_Y_Z2X + Rotation around Y (Z to X): + + + ROTATION_AROUND_Z_X2Y + Rotation around Z (X to Y): + + + SHOW_PREVIEW + Show preview + + + AUTO_APPLY + Auto Apply + + + ALONG_XY + || X-Y + + + ALONG_YZ + || Y-Z + + + ALONG_ZX + || Z-X + + + PLANE_NUM + Plane# %1 + + + NO_PLANES + No planes + + diff --git a/src/SMESH_I/Makefile.am b/src/SMESH_I/Makefile.am index a2258d6b4..60cd3b312 100644 --- a/src/SMESH_I/Makefile.am +++ b/src/SMESH_I/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses # File : Makefile.in # Author : Paul RASCLE, EDF diff --git a/src/SMESH_I/SMESH.hxx b/src/SMESH_I/SMESH.hxx index be211311a..3b8072d49 100644 --- a/src/SMESH_I/SMESH.hxx +++ b/src/SMESH_I/SMESH.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : // File : SMESH.hxx // Author : Michael ZORIN diff --git a/src/SMESH_I/SMESHEngine.cxx b/src/SMESH_I/SMESHEngine.cxx index 0c8d3bd60..1e146a128 100644 --- a/src/SMESH_I/SMESHEngine.cxx +++ b/src/SMESH_I/SMESHEngine.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + int main(int argc, char** argv) { return 1; diff --git a/src/SMESH_I/SMESH_0D_Algo_i.cxx b/src/SMESH_I/SMESH_0D_Algo_i.cxx index cd8247ba9..233fbe8fd 100644 --- a/src/SMESH_I/SMESH_0D_Algo_i.cxx +++ b/src/SMESH_I/SMESH_0D_Algo_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_0D_Algo_i.cxx // Author : Paul RASCLE, EDF diff --git a/src/SMESH_I/SMESH_0D_Algo_i.hxx b/src/SMESH_I/SMESH_0D_Algo_i.hxx index 401feed17..d98c84f3e 100644 --- a/src/SMESH_I/SMESH_0D_Algo_i.hxx +++ b/src/SMESH_I/SMESH_0D_Algo_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_0D_Algo_i.hxx // Module : SMESH diff --git a/src/SMESH_I/SMESH_1D_Algo_i.cxx b/src/SMESH_I/SMESH_1D_Algo_i.cxx index e5da53f79..393e5b7d0 100644 --- a/src/SMESH_I/SMESH_1D_Algo_i.cxx +++ b/src/SMESH_I/SMESH_1D_Algo_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_1D_Algo_i.cxx // Author : Paul RASCLE, EDF diff --git a/src/SMESH_I/SMESH_1D_Algo_i.hxx b/src/SMESH_I/SMESH_1D_Algo_i.hxx index 4ae7b0ea5..446d6db9a 100644 --- a/src/SMESH_I/SMESH_1D_Algo_i.hxx +++ b/src/SMESH_I/SMESH_1D_Algo_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_1D_Algo_i.hxx // Author : Paul RASCLE, EDF diff --git a/src/SMESH_I/SMESH_2D_Algo_i.cxx b/src/SMESH_I/SMESH_2D_Algo_i.cxx index 7fcf5a86d..e859366e1 100644 --- a/src/SMESH_I/SMESH_2D_Algo_i.cxx +++ b/src/SMESH_I/SMESH_2D_Algo_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_2D_Algo_i.cxx // Author : Paul RASCLE, EDF diff --git a/src/SMESH_I/SMESH_2D_Algo_i.hxx b/src/SMESH_I/SMESH_2D_Algo_i.hxx index 2579278fb..967db7042 100644 --- a/src/SMESH_I/SMESH_2D_Algo_i.hxx +++ b/src/SMESH_I/SMESH_2D_Algo_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_2D_Algo_i.hxx // Author : Paul RASCLE, EDF diff --git a/src/SMESH_I/SMESH_2smeshpy.cxx b/src/SMESH_I/SMESH_2smeshpy.cxx index 8d3cacc13..640f51191 100644 --- a/src/SMESH_I/SMESH_2smeshpy.cxx +++ b/src/SMESH_I/SMESH_2smeshpy.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,8 +19,8 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses -// // File : SMESH_2smeshpy.cxx // Created : Fri Nov 18 13:20:10 2005 // Author : Edward AGAPOV (eap) @@ -261,6 +261,7 @@ Handle(_pyCommand) _pyGen::AddCommand( const TCollection_AsciiString& theCommand Handle(_pySubMesh) subMesh = new _pySubMesh( aCommand ); myObjects.insert( make_pair( subMeshID, subMesh )); } + id_mesh->second->Process( aCommand ); return aCommand; } @@ -845,7 +846,8 @@ void _pyMesh::Process( const Handle(_pyCommand)& theCommand ) } } // ---------------------------------------------------------------------- - else if ( method == "ExportToMED" ) { // ExportToMED() --> ExportMED() + else if ( method == "ExportToMED" || // ExportToMED() --> ExportMED() + method == "ExportToMEDX" ) { // ExportToMEDX() --> ExportMED() theCommand->SetMethod( "ExportMED" ); } // ---------------------------------------------------------------------- @@ -885,6 +887,34 @@ void _pyMesh::Process( const Handle(_pyCommand)& theCommand ) // remove hyp from myHypos myHypos.remove( hyp ); } + // check for SubMesh order commands + else if ( theCommand->GetMethod() == "GetMeshOrder" || + theCommand->GetMethod() == "SetMeshOrder" ) { + // In fact arguments and result values does not support complex containers + // such as list of list + // So, here we parse it manually + // GetMeshOrder + //for(int ind = 0, n = theCommand->GetNbResultValues();indFindSubMesh( theCommand->GetResultValue(ind) ); + // SetMeshOrder + //for(int ind = 0, n = theCommand->GetNbArgs();indFindSubMesh( theCommand->GetArg(ind) ); + const bool isArg = theCommand->GetMethod() == "SetMeshOrder"; + const TCollection_AsciiString& cmdStr = theCommand->GetString(); + int begPos = (/*isArg ? cmdStr.Search( "(" ) :*/ cmdStr.Search( "[" )) + 1; + int endPos = (isArg ? cmdStr.Search( ")" ) : cmdStr.Search( "=" )) - 1; + if ( begPos != -1 && begPos < endPos && endPos <= cmdStr.Length() ) { + TCollection_AsciiString aSubStr = cmdStr.SubString( begPos, endPos ); + Standard_Integer index = 1; + TCollection_AsciiString anIDStr = aSubStr.Token("\t ,[]", index++); + while ( !anIDStr.IsEmpty() ) { + Handle(_pySubMesh) subMesh = theGen->FindSubMesh( anIDStr ); + if ( !subMesh.IsNull() ) + subMesh->Process( theCommand ); + anIDStr = aSubStr.Token("\t ,[]", index++); + } + } + } // add accessor method if necessary else { @@ -919,7 +949,7 @@ bool _pyMesh::NeedMeshAccess( const Handle(_pyCommand)& theCommand ) "GetNodeInverseElements","GetShapeID","GetShapeIDForElem","GetElemNbNodes", "GetElemNode","IsMediumNode","IsMediumNodeOfAnyElem","ElemNbEdges","ElemNbFaces", "IsPoly","IsQuadratic","BaryCenter","GetHypothesisList", "SetAutoColor", "GetAutoColor", - "Clear", "ConvertToStandalone" + "Clear", "ConvertToStandalone", "GetMeshOrder", "SetMeshOrder" ,"" }; // <- mark of end sameMethods.Insert( names ); } @@ -1276,6 +1306,19 @@ Handle(_pyHypothesis) _pyHypothesis::NewHypothesis( const Handle(_pyCommand)& th else if ( hypType == "TrianglePreference" ) { hyp->SetConvMethodAndType( "TrianglePreference", "Quadrangle_2D"); } + // RadialQuadrangle_1D2D ---------- + else if ( hypType == "RadialQuadrangle_1D2D" ) { + algo->SetConvMethodAndType( "Quadrangle" , hypType.ToCString()); + algo->myArgs.Append( "algo=smesh.RADIAL_QUAD" ); + } + else if ( hypType == "NumberOfLayers2D" ) { + hyp->SetConvMethodAndType( "NumberOfLayers", "RadialQuadrangle_1D2D"); + hyp->AddArgMethod( "SetNumberOfLayers" ); + } + else if ( hypType == "LayerDistribution2D" ) { + hyp = new _pyLayerDistributionHypo( theCreationCmd, "Get2DHypothesis" ); + hyp->SetConvMethodAndType( "LayerDistribution", "RadialQuadrangle_1D2D"); + } // BLSURF ---------- else if ( hypType == "BLSURF" ) { algo->SetConvMethodAndType( "Triangle", hypType.ToCString()); @@ -1375,14 +1418,11 @@ Handle(_pyHypothesis) _pyHypothesis::NewHypothesis( const Handle(_pyCommand)& th hyp->AddArgMethod( "SetNumberOfLayers" ); } else if ( hypType == "LayerDistribution" ) { - hyp = new _pyLayerDistributionHypo( theCreationCmd ); + hyp = new _pyLayerDistributionHypo( theCreationCmd, "Get3DHypothesis" ); hyp->SetConvMethodAndType( "LayerDistribution", "RadialPrism_3D"); } - if ( algo->IsValid() ) { - return algo; - } - return hyp; + return algo->IsValid() ? algo : hyp; } //================================================================================ @@ -1615,46 +1655,10 @@ void _pyLayerDistributionHypo::Process( const Handle(_pyCommand)& theCommand) my1dHyp->ClearAllCommands(); } my1dHyp = hyp1d; - if ( my1dHyp.IsNull() ) - return; // something wrong :( - - // make a new name for 1D hyp = "HypType" + "_Distribution" - if ( my1dHyp->GetCreationCmd()->GetMethod() == "CreateHypothesis" ) { - // not yet converted creation cmd - TCollection_AsciiString hypTypeQuoted = my1dHyp->GetCreationCmd()->GetArg(1); - TCollection_AsciiString hypType = hypTypeQuoted.SubString( 2, hypTypeQuoted.Length() - 1 ); - newName = hypType + "_Distribution"; - my1dHyp->GetCreationCmd()->SetResultValue( newName ); - } - else { - // already converted creation cmd - newName = my1dHyp->GetCreationCmd()->GetResultValue(); - } - // as creation of 1D hyp was written later then it's edition, - // we need to find all it's edition calls and process them - list< Handle(_pyCommand) >& cmds = theGen->GetCommands(); - list< Handle(_pyCommand) >::iterator cmdIt = cmds.begin(); - for ( ; cmdIt != cmds.end(); ++cmdIt ) { - const _pyID& objID = (*cmdIt)->GetObject(); - if ( objID == hyp1dID ) { - my1dHyp->Process( *cmdIt ); - my1dHyp->GetCreationCmd()->AddDependantCmd( *cmdIt ); - ( *cmdIt )->SetObject( newName ); - } - } if ( !myArgCommands.empty() ) myArgCommands.front()->Clear(); - theCommand->SetArg( 1, newName ); myArgCommands.push_back( theCommand ); - // copy hyp1d's creation method and args -// myCreationMethod = hyp1d->GetCreationMethod(); -// myArgs = hyp1d->GetArgs(); -// // make them cleared at conversion -// myArgCommands = hyp1d->GetArgCommands(); - -// // to be cleared at convertion only -// myArgCommands.push_back( theCommand ); } //================================================================================ @@ -1679,20 +1683,23 @@ bool _pyLayerDistributionHypo::Addition2Creation( const Handle(_pyCommand)& theA _pyID geom = theAdditionCmd->GetArg( 1 ); - my1dHyp->SetMesh( theMesh ); - if ( !my1dHyp->Addition2Creation( theAdditionCmd, theMesh )) - return false; + Handle(_pyHypothesis) algo = theGen->FindAlgo( geom, theMesh, this ); + if ( !algo.IsNull() ) + { + my1dHyp->SetMesh( theMesh ); + my1dHyp->SetConvMethodAndType(my1dHyp->GetAlgoCreationMethod().ToCString(), + algo->GetAlgoType().ToCString()); + if ( !my1dHyp->Addition2Creation( theAdditionCmd, theMesh )) + return false; - // clear "SetLayerDistribution()" cmd - myArgCommands.front()->Clear(); + // clear "SetLayerDistribution()" cmd + myArgCommands.back()->Clear(); - // Convert my creation => me = RadialPrismAlgo.Get3DHypothesis() + // Convert my creation => me = RadialPrismAlgo.Get3DHypothesis() - // find RadialPrism algo created on for theMesh - Handle(_pyHypothesis) algo = theGen->FindAlgo( geom, theMesh, this ); - if ( !algo.IsNull() ) { + // find RadialPrism algo created on for theMesh GetCreationCmd()->SetObject( algo->GetID() ); - GetCreationCmd()->SetMethod( "Get3DHypothesis" ); + GetCreationCmd()->SetMethod( myAlgoMethod ); GetCreationCmd()->RemoveArgs(); theAdditionCmd->AddDependantCmd( GetCreationCmd() ); myIsWrapped = true; @@ -1708,8 +1715,38 @@ bool _pyLayerDistributionHypo::Addition2Creation( const Handle(_pyCommand)& theA void _pyLayerDistributionHypo::Flush() { - //my1dHyp.Nullify(); - //_pyHypothesis::Flush(); + // as creation of 1D hyp was written later then it's edition, + // we need to find all it's edition calls and process them + if ( !my1dHyp.IsNull() ) + { + _pyID hyp1dID = my1dHyp->GetCreationCmd()->GetResultValue(); + + // make a new name for 1D hyp = "HypType" + "_Distribution" + _pyID newName; + if ( my1dHyp->IsWrapped() ) { + newName = my1dHyp->GetCreationCmd()->GetMethod(); + } + else { + TCollection_AsciiString hypTypeQuoted = my1dHyp->GetCreationCmd()->GetArg(1); + newName = hypTypeQuoted.SubString( 2, hypTypeQuoted.Length() - 1 ); + } + newName += "_Distribution"; + my1dHyp->GetCreationCmd()->SetResultValue( newName ); + + list< Handle(_pyCommand) >& cmds = theGen->GetCommands(); + list< Handle(_pyCommand) >::iterator cmdIt = cmds.begin(); + for ( ; cmdIt != cmds.end(); ++cmdIt ) { + const _pyID& objID = (*cmdIt)->GetObject(); + if ( objID == hyp1dID ) { + my1dHyp->Process( *cmdIt ); + my1dHyp->GetCreationCmd()->AddDependantCmd( *cmdIt ); + ( *cmdIt )->SetObject( newName ); + } + } + // Set new hyp name to SetLayerDistribution() cmd + if ( !myArgCommands.empty() && !myArgCommands.back()->IsEmpty() ) + myArgCommands.back()->SetArg( 1, newName ); + } } //================================================================================ diff --git a/src/SMESH_I/SMESH_2smeshpy.hxx b/src/SMESH_I/SMESH_2smeshpy.hxx index 16926e54d..c5ad5122a 100644 --- a/src/SMESH_I/SMESH_2smeshpy.hxx +++ b/src/SMESH_I/SMESH_2smeshpy.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_smesh.hxx // Created : Fri Nov 18 12:05:18 2005 // Author : Edward AGAPOV (eap) @@ -113,7 +114,7 @@ public: int GetOrderNb() const { return myOrderNb; } void SetOrderNb( int theNb ) { myOrderNb = theNb; } int Length() { return myString.Length(); } - void Clear() { myString.Clear(); myBegPos.Clear(); } + void Clear() { myString.Clear(); myBegPos.Clear(); myArgs.Clear(); } bool IsEmpty() const { return myString.IsEmpty(); } TCollection_AsciiString GetIndentation(); const TCollection_AsciiString & GetResultValue(); @@ -373,9 +374,10 @@ DEFINE_STANDARD_HANDLE (_pyComplexParamHypo, _pyHypothesis); class _pyLayerDistributionHypo: public _pyHypothesis { Handle(_pyHypothesis) my1dHyp; + TCollection_AsciiString myAlgoMethod; public: - _pyLayerDistributionHypo(const Handle(_pyCommand)& theCreationCmd): - _pyHypothesis(theCreationCmd) {} + _pyLayerDistributionHypo(const Handle(_pyCommand)& theCreationCmd, const char* algoMethod): + _pyHypothesis(theCreationCmd), myAlgoMethod((char*)algoMethod) {} void Process( const Handle(_pyCommand)& theCommand); void Flush(); bool Addition2Creation( const Handle(_pyCommand)& theAdditionCmd, diff --git a/src/SMESH_I/SMESH_3D_Algo_i.cxx b/src/SMESH_I/SMESH_3D_Algo_i.cxx index 8aa242ba6..d72a20fb2 100644 --- a/src/SMESH_I/SMESH_3D_Algo_i.cxx +++ b/src/SMESH_I/SMESH_3D_Algo_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_3D_Algo_i.cxx // Author : Paul RASCLE, EDF diff --git a/src/SMESH_I/SMESH_3D_Algo_i.hxx b/src/SMESH_I/SMESH_3D_Algo_i.hxx index 4352e7296..384a07aa1 100644 --- a/src/SMESH_I/SMESH_3D_Algo_i.hxx +++ b/src/SMESH_I/SMESH_3D_Algo_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_3D_Algo_i.hxx // Author : Paul RASCLE, EDF diff --git a/src/SMESH_I/SMESH_Algo_i.cxx b/src/SMESH_I/SMESH_Algo_i.cxx index e567a15d6..32e580ff9 100644 --- a/src/SMESH_I/SMESH_Algo_i.cxx +++ b/src/SMESH_I/SMESH_Algo_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_Algo_i.cxx // Author : Paul RASCLE, EDF diff --git a/src/SMESH_I/SMESH_Algo_i.hxx b/src/SMESH_I/SMESH_Algo_i.hxx index cfcfc5347..d511c50f9 100644 --- a/src/SMESH_I/SMESH_Algo_i.hxx +++ b/src/SMESH_I/SMESH_Algo_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_Algo_i.hxx // Author : Paul RASCLE, EDF diff --git a/src/SMESH_I/SMESH_DumpPython.cxx b/src/SMESH_I/SMESH_DumpPython.cxx index 5b012b59c..5be4f5de4 100644 --- a/src/SMESH_I/SMESH_DumpPython.cxx +++ b/src/SMESH_I/SMESH_DumpPython.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_Gen_i_DumpPython.cxx // Created : Thu Mar 24 17:17:59 2005 // Author : Julia DOROVSKIKH @@ -208,6 +209,32 @@ namespace SMESH return *this; } + TPythonDump& + TPythonDump:: + operator<<(SMESH::SMESH_Hypothesis_ptr theArg) + { + SALOMEDS::Study_var aStudy = SMESH_Gen_i::GetSMESHGen()->GetCurrentStudy(); + SALOMEDS::SObject_var aSObject = SMESH_Gen_i::ObjectToSObject(aStudy,theArg); + if(aSObject->_is_nil() && !CORBA::is_nil(theArg)) + myStream << "hyp_" << theArg->GetId(); + else + *this << CORBA::Object_ptr( theArg ); + return *this; + } + + TPythonDump& + TPythonDump:: + operator<<(SMESH::SMESH_IDSource_ptr theArg) + { + SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen(); + SALOMEDS::Study_var aStudy = aSMESHGen->GetCurrentStudy(); + SALOMEDS::SObject_var aSObject = SMESH_Gen_i::ObjectToSObject(aStudy,theArg); + if(!aSObject->_is_nil() || CORBA::is_nil( theArg )) + return *this << aSObject; + SMESH::long_array_var anElementsId = theArg->GetIDs(); + return *this << anElementsId; + } + TPythonDump& TPythonDump:: operator<<(SMESH::FilterLibrary_i* theArg) @@ -484,9 +511,7 @@ Engines::TMPFile* SMESH_Gen_i::DumpPython (CORBA::Object_ptr theStudy, TCollection_AsciiString aSavedTrace (oldValue); // Add trace of API methods calls and replace study entries by names - TCollection_AsciiString aScript = - "# -*- coding: iso-8859-1 -*-\n" - "### This file is generated by SALOME automatically by dump python functionality of SMESH component\n\n"; + TCollection_AsciiString aScript; aScript += DumpPython_impl(aStudy, aMap, aMapNames, isPublished, isValidScript, aSavedTrace); diff --git a/src/SMESH_I/SMESH_Filter_i.cxx b/src/SMESH_I/SMESH_Filter_i.cxx index e9370beda..969ffb613 100644 --- a/src/SMESH_I/SMESH_Filter_i.cxx +++ b/src/SMESH_I/SMESH_Filter_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_Filter_i.cxx // Author : Alexey Petrov, OCC diff --git a/src/SMESH_I/SMESH_Filter_i.hxx b/src/SMESH_I/SMESH_Filter_i.hxx index 44cc246bf..057c7693b 100644 --- a/src/SMESH_I/SMESH_Filter_i.hxx +++ b/src/SMESH_I/SMESH_Filter_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_Filter_i.hxx // Author : Alexey Petrov, OCC diff --git a/src/SMESH_I/SMESH_Gen_i.cxx b/src/SMESH_I/SMESH_Gen_i.cxx index b00a7e8a0..6db942604 100644 --- a/src/SMESH_I/SMESH_Gen_i.cxx +++ b/src/SMESH_I/SMESH_Gen_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_Gen_i.cxx // Author : Paul RASCLE, EDF @@ -54,6 +55,7 @@ #ifdef WNT #include + #include #else #include #endif @@ -107,10 +109,12 @@ #include "OpUtil.hxx" #include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog) +#include CORBA_CLIENT_HEADER(SALOME_Session) #include "GEOM_Client.hxx" #include "Utils_ExceptHandlers.hxx" #include "memoire.h" +#include "Basics_Utils.hxx" #include @@ -280,6 +284,28 @@ SMESH_Gen_i::SMESH_Gen_i( CORBA::ORB_ptr orb, // set it in standalone mode only //OSD::SetSignal( true ); + + // 0020605: EDF 1190 SMESH: Display performance. 80 seconds for 52000 cells. + // find out mode (embedded or standalone) here else + // meshes created before calling SMESH_Client::GetSMESHGen(), which calls + // SMESH_Gen_i::SetEmbeddedMode(), have wrong IsEmbeddedMode flag + if ( SALOME_NamingService* ns = GetNS() ) + { + CORBA::Object_var obj = ns->Resolve( "/Kernel/Session" ); + SALOME::Session_var session = SALOME::Session::_narrow( obj ) ; + if ( !session->_is_nil() ) + { + CORBA::String_var s_host = session->getHostname(); + CORBA::Long s_pid = session->getPID(); + string my_host = Kernel_Utils::GetHostname(); +#ifdef WNT + long my_pid = (long)_getpid(); +#else + long my_pid = (long) getpid(); +#endif + SetEmbeddedMode( s_pid == my_pid && my_host == s_host.in() ); + } + } } //============================================================================= @@ -770,7 +796,7 @@ void SMESH_Gen_i::SetBoundaryBoxSegmentation( CORBA::Long theNbSegments ) void SMESH_Gen_i::SetDefaultNbSegments(CORBA::Long theNbSegments) throw ( SALOME::SALOME_Exception ) { - if ( theNbSegments ) + if ( theNbSegments > 0 ) myGen.SetDefaultNbSegments( int(theNbSegments) ); else THROW_SALOME_CORBA_EXCEPTION( "non-positive number of segments", SALOME::BAD_PARAM ); @@ -1666,13 +1692,22 @@ SMESH::long_array* SMESH_Gen_i::Evaluate(SMESH::SMESH_Mesh_ptr theMesh, MapShapeNbElemsItr anIt = aResMap.begin(); for(; anIt!=aResMap.end(); anIt++) { const vector& aVec = (*anIt).second; - for(i = SMESH::Entity_Node; i < SMESH::Entity_Last; i++) { - nbels[i] += aVec[i]; + for(i = SMESH::Entity_Node; i < aVec.size(); i++) { + int nbElem = aVec[i]; + if ( nbElem < 0 ) // algo failed, check that it has reported a message + { + SMESH_subMesh* sm = anIt->first; + SMESH_ComputeErrorPtr& error = sm->GetComputeError(); + const SMESH_Algo* algo = myGen.GetAlgo( myLocMesh, sm->GetSubShape()); + if ( algo && !error.get() || error->IsOK() ) + error.reset( new SMESH_ComputeError( COMPERR_ALGO_FAILED,"Failed to evaluate",algo)); + } + else + { + nbels[i] += aVec[i]; + } } } -#ifdef _DEBUG_ - cout<GetNbMeshes( &anErr ); + if( anErr >= 0 ) { + aResult->length( aNbMeshes ); + for( MED::TInt i = 0; i < aNbMeshes; i++ ) { + MED::PMeshInfo aMeshInfo = aMed->GetPMeshInfo( i+1 ); + aResult[i] = CORBA::string_dup( aMeshInfo->GetName().c_str() ); + } + } + return aResult._retn(); +} + //============================================================================= /*! * SMESH_Gen_i::Save @@ -2726,6 +2804,40 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent, //if ( shapeRefFound ) //myWriter.AddAllSubMeshes(); + // store submesh order if any + const TListOfListOfInt& theOrderIds = myLocMesh.GetMeshOrder(); + if ( theOrderIds.size() ) { + char order_list[ 30 ]; + strcpy( order_list, "Mesh Order" ); + // count number of submesh ids + int nbIDs = 0; + TListOfListOfInt::const_iterator idIt = theOrderIds.begin(); + for ( ; idIt != theOrderIds.end(); idIt++ ) + nbIDs += (*idIt).size(); + // number of values = number of IDs + + // number of lists (for separators) - 1 + int* smIDs = new int [ nbIDs + theOrderIds.size() - 1 ]; + idIt = theOrderIds.begin(); + for ( int i = 0; idIt != theOrderIds.end(); idIt++ ) { + const TListOfInt& idList = *idIt; + if (idIt != theOrderIds.begin()) // not first list + smIDs[ i++ ] = -1/* *idList.size()*/; // separator between lists + // dump submesh ids from current list + TListOfInt::const_iterator id_smId = idList.begin(); + for( ; id_smId != idList.end(); id_smId++ ) + smIDs[ i++ ] = *id_smId; + } + // write HDF group + aSize[ 0 ] = nbIDs + theOrderIds.size() - 1; + + aDataset = new HDFdataset( order_list, aTopGroup, HDF_INT32, aSize, 1 ); + aDataset->CreateOnDisk(); + aDataset->WriteOnDisk( smIDs ); + aDataset->CloseOnDisk(); + // + delete[] smIDs; + } + // groups root sub-branch SALOMEDS::SObject_var myGroupsBranch; for ( int i = GetNodeGroupsTag(); i <= GetVolumeGroupsTag(); i++ ) { @@ -2910,7 +3022,7 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent, aDataset->WriteOnDisk( smIDs ); aDataset->CloseOnDisk(); // - delete smIDs; + delete[] smIDs; } // Store node positions on sub-shapes (SMDS_Position): @@ -2940,6 +3052,8 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent, if ( nbNodes == 0 ) continue; int aShapeID = (*itSubM).first; + if ( aShapeID < 1 || aShapeID > mySMESHDSMesh->MaxShapeIndex() ) + continue; int aShapeType = mySMESHDSMesh->IndexToShape( aShapeID ).ShapeType(); // write only SMDS_FacePosition and SMDS_EdgePosition switch ( aShapeType ) { @@ -3498,7 +3612,6 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent, } } } - } } } @@ -4121,6 +4234,24 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent, aGroup->CloseOnDisk(); } } + // read submeh order if any + if( aTopGroup->ExistInternalObject( "Mesh Order" ) ) { + aDataset = new HDFdataset( "Mesh Order", aTopGroup ); + aDataset->OpenOnDisk(); + size = aDataset->GetSize(); + int* smIDs = new int[ size ]; + aDataset->ReadFromDisk( smIDs ); + aDataset->CloseOnDisk(); + TListOfListOfInt anOrderIds; + anOrderIds.push_back( TListOfInt() ); + for ( int i = 0; i < size; i++ ) + if ( smIDs[ i ] < 0 ) // is separator + anOrderIds.push_back( TListOfInt() ); + else + anOrderIds.back().push_back(smIDs[ i ]); + + myNewMeshImpl->GetImpl().SetMeshOrder( anOrderIds ); + } } // close mesh group if(aTopGroup) diff --git a/src/SMESH_I/SMESH_Gen_i.hxx b/src/SMESH_I/SMESH_Gen_i.hxx index 13bca294a..89cf79ca7 100644 --- a/src/SMESH_I/SMESH_Gen_i.hxx +++ b/src/SMESH_I/SMESH_Gen_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_Gen_i.hxx // Author : Paul RASCLE, EDF @@ -320,6 +321,13 @@ public: CORBA::Double theMergeTolerance) throw ( SALOME::SALOME_Exception ); + // Get MED version of the file by its name + CORBA::Boolean GetMEDVersion(const char* theFileName, + SMESH::MED_VERSION& theVersion); + + // Get names of meshes defined in file with the specified name + SMESH::string_array* GetMeshNames(const char* theFileName); + // **************************************************** // Interface inherited methods (from SALOMEDS::Driver) // **************************************************** diff --git a/src/SMESH_I/SMESH_Gen_i_1.cxx b/src/SMESH_I/SMESH_Gen_i_1.cxx index 2b216fe26..d5161e29f 100644 --- a/src/SMESH_I/SMESH_Gen_i_1.cxx +++ b/src/SMESH_I/SMESH_Gen_i_1.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_Gen_i_1.cxx // Created : Thu Oct 21 17:24:06 2004 diff --git a/src/SMESH_I/SMESH_Group_i.cxx b/src/SMESH_I/SMESH_Group_i.cxx index 7502c5409..c69024ed2 100644 --- a/src/SMESH_I/SMESH_Group_i.cxx +++ b/src/SMESH_I/SMESH_Group_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's classes // File : SMESH_Group_i.cxx // Author : Sergey ANIKIN, OCC @@ -165,11 +166,12 @@ SMESH::ElementType SMESH_GroupBase_i::GetType() SMDSAbs_ElementType aSMDSType = aGroupDS->GetType(); SMESH::ElementType aType; switch (aSMDSType) { - case SMDSAbs_Node: aType = SMESH::NODE; break; - case SMDSAbs_Edge: aType = SMESH::EDGE; break; - case SMDSAbs_Face: aType = SMESH::FACE; break; - case SMDSAbs_Volume: aType = SMESH::VOLUME; break; - default: aType = SMESH::ALL; break; + case SMDSAbs_Node: aType = SMESH::NODE; break; + case SMDSAbs_Edge: aType = SMESH::EDGE; break; + case SMDSAbs_Face: aType = SMESH::FACE; break; + case SMDSAbs_Volume: aType = SMESH::VOLUME; break; + case SMDSAbs_0DElement: aType = SMESH::ELEM0D; break; + default: aType = SMESH::ALL; break; } return aType; } diff --git a/src/SMESH_I/SMESH_Group_i.hxx b/src/SMESH_I/SMESH_Group_i.hxx index 93f8354b9..30ea828c0 100644 --- a/src/SMESH_I/SMESH_Group_i.hxx +++ b/src/SMESH_I/SMESH_Group_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's classes // File : SMESH_Group_i.hxx // Author : Sergey ANIKIN, OCC diff --git a/src/SMESH_I/SMESH_Hypothesis_i.cxx b/src/SMESH_I/SMESH_Hypothesis_i.cxx index b677e647b..19d436ff6 100644 --- a/src/SMESH_I/SMESH_Hypothesis_i.cxx +++ b/src/SMESH_I/SMESH_Hypothesis_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_Hypothesis_i.cxx // Author : Paul RASCLE, EDF diff --git a/src/SMESH_I/SMESH_Hypothesis_i.hxx b/src/SMESH_I/SMESH_Hypothesis_i.hxx index 13bd7742f..24c01d46a 100644 --- a/src/SMESH_I/SMESH_Hypothesis_i.hxx +++ b/src/SMESH_I/SMESH_Hypothesis_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_Hypothesis_i.hxx // Author : Paul RASCLE, EDF diff --git a/src/SMESH_I/SMESH_MEDFamily_i.cxx b/src/SMESH_I/SMESH_MEDFamily_i.cxx index 393e49c42..66d26cc0d 100644 --- a/src/SMESH_I/SMESH_MEDFamily_i.cxx +++ b/src/SMESH_I/SMESH_MEDFamily_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_MEDFamily_i.cxx // Module : SMESH diff --git a/src/SMESH_I/SMESH_MEDFamily_i.hxx b/src/SMESH_I/SMESH_MEDFamily_i.hxx index e6af38067..06a13600d 100644 --- a/src/SMESH_I/SMESH_MEDFamily_i.hxx +++ b/src/SMESH_I/SMESH_MEDFamily_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_MEDFamily_i.hxx // Module : SMESH diff --git a/src/SMESH_I/SMESH_MEDMesh_i.cxx b/src/SMESH_I/SMESH_MEDMesh_i.cxx index f73bf1102..b1b093770 100644 --- a/src/SMESH_I/SMESH_MEDMesh_i.cxx +++ b/src/SMESH_I/SMESH_MEDMesh_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_MEDMesh_i.cxx // Module : SMESH diff --git a/src/SMESH_I/SMESH_MEDMesh_i.hxx b/src/SMESH_I/SMESH_MEDMesh_i.hxx index 72b31032e..68fcc96c3 100644 --- a/src/SMESH_I/SMESH_MEDMesh_i.hxx +++ b/src/SMESH_I/SMESH_MEDMesh_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_MEDMesh_i.hxx // Module : SMESH diff --git a/src/SMESH_I/SMESH_MEDSupport_i.cxx b/src/SMESH_I/SMESH_MEDSupport_i.cxx index 4b1e66ddf..c1a8fe548 100644 --- a/src/SMESH_I/SMESH_MEDSupport_i.cxx +++ b/src/SMESH_I/SMESH_MEDSupport_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_MEDSupport_i.cxx // Module : SMESH diff --git a/src/SMESH_I/SMESH_MEDSupport_i.hxx b/src/SMESH_I/SMESH_MEDSupport_i.hxx index 56c36a881..b30528dad 100644 --- a/src/SMESH_I/SMESH_MEDSupport_i.hxx +++ b/src/SMESH_I/SMESH_MEDSupport_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_MEDSupport_i.hxx // Module : SMESH diff --git a/src/SMESH_I/SMESH_MeshEditor_i.cxx b/src/SMESH_I/SMESH_MeshEditor_i.cxx index a5bc40799..0ccfca681 100644 --- a/src/SMESH_I/SMESH_MeshEditor_i.cxx +++ b/src/SMESH_I/SMESH_MeshEditor_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,11 +19,12 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_MeshEditor_i.cxx // Author : Nicolas REJNERI // Module : SMESH - +// #include "SMESH_MeshEditor_i.hxx" #include "SMDS_Mesh0DElement.hxx" @@ -271,6 +272,27 @@ void SMESH_MeshEditor_i::initData(bool deleteSearchers) } } +//======================================================================= +//function : MakeIDSource +//purpose : Wrap a sequence of ids in a SMESH_IDSource +//======================================================================= + +struct _IDSource : public POA_SMESH::SMESH_IDSource +{ + SMESH::long_array _ids; + SMESH::long_array* GetIDs() { return new SMESH::long_array( _ids ); } + SMESH::long_array* GetMeshInfo() { return 0; } +}; + +SMESH::SMESH_IDSource_ptr SMESH_MeshEditor_i::MakeIDSource(const SMESH::long_array& ids) +{ + _IDSource* anIDSource = new _IDSource; + anIDSource->_ids = ids; + SMESH::SMESH_IDSource_var anIDSourceVar = anIDSource->_this(); + + return anIDSourceVar._retn(); +} + //============================================================================= /*! * @@ -290,9 +312,6 @@ SMESH_MeshEditor_i::RemoveElements(const SMESH::long_array & IDsOfElements) // Update Python script TPythonDump() << "isDone = " << this << ".RemoveElements( " << IDsOfElements << " )"; -#ifdef _DEBUG_ - TPythonDump() << "print 'RemoveElements: ', isDone"; -#endif // Remove Elements return anEditor.Remove( IdList, false ); } @@ -314,9 +333,6 @@ CORBA::Boolean SMESH_MeshEditor_i::RemoveNodes(const SMESH::long_array & IDsOfNo // Update Python script TPythonDump() << "isDone = " << this << ".RemoveNodes( " << IDsOfNodes << " )"; -#ifdef _DEBUG_ - TPythonDump() << "print 'RemoveNodes: ', isDone"; -#endif return anEditor.Remove( IdList, true ); } @@ -468,14 +484,8 @@ CORBA::Long SMESH_MeshEditor_i::AddPolygonalFace (const SMESH::long_array & IDsO // Update Python script TPythonDump() <<"faceID = "<GetID(); - - return 0; + return elem ? elem->GetID() : 0; } //============================================================================= @@ -517,9 +527,6 @@ CORBA::Long SMESH_MeshEditor_i::AddVolume(const SMESH::long_array & IDsOfNodes) // Update Python script TPythonDump() << "volID = " << this << ".AddVolume( " << IDsOfNodes << " )"; -#ifdef _DEBUG_ - TPythonDump() << "print 'AddVolume: ', volID"; -#endif if(elem) return elem->GetID(); @@ -552,14 +559,8 @@ CORBA::Long SMESH_MeshEditor_i::AddPolyhedralVolume (const SMESH::long_array & I // Update Python script TPythonDump() << "volID = " << this << ".AddPolyhedralVolume( " << IDsOfNodes << ", " << Quantities << " )"; -#ifdef _DEBUG_ - TPythonDump() << "print 'AddPolyhedralVolume: ', volID"; -#endif - - if(elem) - return elem->GetID(); - return 0; + return elem ? elem->GetID() : 0; } //============================================================================= @@ -590,14 +591,8 @@ CORBA::Long SMESH_MeshEditor_i::AddPolyhedralVolumeByFaces (const SMESH::long_ar // Update Python script TPythonDump() << "volID = " << this << ".AddPolyhedralVolumeByFaces( " << IdsOfFaces << " )"; -#ifdef _DEBUG_ - TPythonDump() << "print 'AddPolyhedralVolume: ', volID"; -#endif - - if(elem) - return elem->GetID(); - return 0; + return elem ? elem->GetID() : 0; } //============================================================================= @@ -932,9 +927,6 @@ CORBA::Boolean SMESH_MeshEditor_i::TriToQuad (const SMESH::long_array & IDsOfE // Update Python script TPythonDump() << "isDone = " << this << ".TriToQuad( " << IDsOfElements << ", " << aNumericalFunctor << ", " << MaxAngle << " )"; -#ifdef _DEBUG_ - TPythonDump() << "print 'TriToQuad: ', isDone"; -#endif ::SMESH_MeshEditor anEditor( myMesh ); @@ -963,9 +955,6 @@ CORBA::Boolean SMESH_MeshEditor_i::TriToQuadObject (SMESH::SMESH_IDSource_ptr // Clear python line(s), created by TriToQuad() SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen(); aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID()); -#ifdef _DEBUG_ - aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID()); -#endif SMESH::NumericalFunctor_i* aNumericalFunctor = SMESH::DownCast( Criterion ); @@ -973,9 +962,6 @@ CORBA::Boolean SMESH_MeshEditor_i::TriToQuadObject (SMESH::SMESH_IDSource_ptr // Update Python script TPythonDump() << "isDone = " << this << ".TriToQuadObject(" << theObject << ", " << aNumericalFunctor << ", " << MaxAngle << " )"; -#ifdef _DEBUG_ - TPythonDump() << "print 'TriToQuadObject: ', isDone"; -#endif return isDone; } @@ -1006,9 +992,6 @@ CORBA::Boolean SMESH_MeshEditor_i::QuadToTri (const SMESH::long_array & IDsOfE // Update Python script TPythonDump() << "isDone = " << this << ".QuadToTri( " << IDsOfElements << ", " << aNumericalFunctor << " )"; -#ifdef _DEBUG_ - TPythonDump() << "print 'QuadToTri: ', isDone"; -#endif ::SMESH_MeshEditor anEditor( myMesh ); CORBA::Boolean stat = anEditor.QuadToTri( faces, aCrit ); @@ -1035,18 +1018,12 @@ CORBA::Boolean SMESH_MeshEditor_i::QuadToTriObject (SMESH::SMESH_IDSource_ptr // Clear python line(s), created by QuadToTri() SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen(); aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID()); -#ifdef _DEBUG_ - aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID()); -#endif SMESH::NumericalFunctor_i* aNumericalFunctor = SMESH::DownCast( Criterion ); // Update Python script TPythonDump() << "isDone = " << this << ".QuadToTriObject( " << theObject << ", " << aNumericalFunctor << " )"; -#ifdef _DEBUG_ - TPythonDump() << "print 'QuadToTriObject: ', isDone"; -#endif return isDone; } @@ -1069,9 +1046,6 @@ CORBA::Boolean SMESH_MeshEditor_i::SplitQuad (const SMESH::long_array & IDsOfEle // Update Python script TPythonDump() << "isDone = " << this << ".SplitQuad( " << IDsOfElements << ", " << Diag13 << " )"; -#ifdef _DEBUG_ - TPythonDump() << "print 'SplitQuad: ', isDone"; -#endif ::SMESH_MeshEditor anEditor( myMesh ); CORBA::Boolean stat = anEditor.QuadToTri( faces, Diag13 ); @@ -1098,16 +1072,10 @@ CORBA::Boolean SMESH_MeshEditor_i::SplitQuadObject (SMESH::SMESH_IDSource_ptr th // Clear python line(s), created by SplitQuad() SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen(); aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID()); -#ifdef _DEBUG_ - aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID()); -#endif // Update Python script TPythonDump() << "isDone = " << this << ".SplitQuadObject( " << theObject << ", " << Diag13 << " )"; -#ifdef _DEBUG_ - TPythonDump() << "print 'SplitQuadObject: ', isDone"; -#endif return isDone; } @@ -1138,6 +1106,28 @@ CORBA::Long SMESH_MeshEditor_i::BestSplit (CORBA::Long IDOfQuad, return -1; } +//================================================================================ +/*! + * \brief Split volumic elements into tetrahedrons + */ +//================================================================================ + +void SMESH_MeshEditor_i::SplitVolumesIntoTetra (SMESH::SMESH_IDSource_ptr elems, + CORBA::Short methodFlags) + throw (SALOME::SALOME_Exception) +{ + Unexpect aCatch(SALOME_SalomeException); + + SMESH::long_array_var anElementsId = elems->GetIDs(); + TIDSortedElemSet elemSet; + arrayToSet( anElementsId, GetMeshDS(), elemSet, SMDSAbs_Volume ); + + ::SMESH_MeshEditor anEditor (myMesh); + anEditor.SplitVolumesIntoTetra( elemSet, int( methodFlags )); + + TPythonDump() << this << ".SplitVolumesIntoTetra( " + << elems << ", " << methodFlags << " )"; +} //======================================================================= //function : Smooth @@ -1253,9 +1243,6 @@ SMESH_MeshEditor_i::smooth(const SMESH::long_array & IDsOfElements, << "SMESH.SMESH_MeshEditor." << ( Method == SMESH::SMESH_MeshEditor::CENTROIDAL_SMOOTH ? "CENTROIDAL_SMOOTH )" : "LAPLACIAN_SMOOTH )"); -#ifdef _DEBUG_ - TPythonDump() << "print 'Smooth: ', isDone"; -#endif return true; } @@ -1284,9 +1271,6 @@ SMESH_MeshEditor_i::smoothObject(SMESH::SMESH_IDSource_ptr theObjec // Clear python line(s), created by Smooth() SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen(); aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID()); -#ifdef _DEBUG_ - aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID()); -#endif // Update Python script TPythonDump() << "isDone = " << this << "." @@ -1296,9 +1280,6 @@ SMESH_MeshEditor_i::smoothObject(SMESH::SMESH_IDSource_ptr theObjec << "SMESH.SMESH_MeshEditor." << ( Method == SMESH::SMESH_MeshEditor::CENTROIDAL_SMOOTH ? "CENTROIDAL_SMOOTH )" : "LAPLACIAN_SMOOTH )"); -#ifdef _DEBUG_ - TPythonDump() << "print 'SmoothObject: ', isDone"; -#endif return isDone; } @@ -3346,6 +3327,140 @@ SMESH_MeshEditor_i::RotateObjectMakeMesh(SMESH::SMESH_IDSource_ptr theObject, return mesh._retn(); } + +//======================================================================= +//function : scale +//purpose : +//======================================================================= + +SMESH::ListOfGroups* +SMESH_MeshEditor_i::scale(const SMESH::long_array & theIDsOfElements, + const SMESH::PointStruct& thePoint, + const SMESH::double_array& theScaleFact, + CORBA::Boolean theCopy, + const bool theMakeGroups, + ::SMESH_Mesh* theTargetMesh) +{ + initData(); + + TIDSortedElemSet elements; + arrayToSet(theIDsOfElements, GetMeshDS(), elements); + + gp_Pnt aPnt( thePoint.x, thePoint.y, thePoint.z ); + list aScaleFact; + for (int i = 0; i < theScaleFact.length(); i++) { + aScaleFact.push_back( theScaleFact[i] ); + } + + ::SMESH_MeshEditor anEditor( myMesh ); + ::SMESH_MeshEditor::PGroupIDs groupIds = + anEditor.Scale (elements, aPnt, aScaleFact, theCopy, + theMakeGroups, theTargetMesh); + + if(theCopy) + storeResult(anEditor); + + return theMakeGroups ? getGroups(groupIds.get()) : 0; +} + + +//======================================================================= +//function : Scale +//purpose : +//======================================================================= + +void SMESH_MeshEditor_i::Scale(SMESH::SMESH_IDSource_ptr theObject, + const SMESH::PointStruct& thePoint, + const SMESH::double_array& theScaleFact, + CORBA::Boolean theCopy) +{ + if ( !myPreviewMode ) { + TPythonDump() << this << ".Scale( " + << theObject << ", " + << "SMESH.PointStruct( " << thePoint.x << ", " + << thePoint.y << ", " << thePoint.z << " ) ," + << theScaleFact << ", " + << theCopy << " )"; + } + SMESH::long_array_var anElementsId = theObject->GetIDs(); + scale(anElementsId, thePoint, theScaleFact, theCopy, false); +} + + +//======================================================================= +//function : ScaleMakeGroups +//purpose : +//======================================================================= + +SMESH::ListOfGroups* +SMESH_MeshEditor_i::ScaleMakeGroups(SMESH::SMESH_IDSource_ptr theObject, + const SMESH::PointStruct& thePoint, + const SMESH::double_array& theScaleFact) +{ + SMESH::long_array_var anElementsId = theObject->GetIDs(); + SMESH::ListOfGroups * aGroups = + scale(anElementsId, thePoint, theScaleFact, true, true); + + if ( !myPreviewMode ) { + + TPythonDump aPythonDump; + DumpGroupsList(aPythonDump,aGroups); + aPythonDump << this << ".Scale(" + << theObject << "," + << "SMESH.PointStruct(" <( mesh ); + + if ( mesh_i ) { + SMESH::long_array_var anElementsId = theObject->GetIDs(); + scale(anElementsId, thePoint, theScaleFact, + false, theCopyGroups, & mesh_i->GetImpl()); + mesh_i->CreateGroupServants(); + } + if ( !myPreviewMode ) { + pydump << mesh << " = " << this << ".ScaleMakeMesh( " + << theObject << ", " + << "SMESH.PointStruct( " << thePoint.x << ", " + << thePoint.y << ", " << thePoint.z << " ) ," + << theScaleFact << ", " + << theCopyGroups << ", '" + << theMeshName << "' )"; + } + } + + //dump "GetGroups" + if(!myPreviewMode && mesh_i) + mesh_i->GetGroups(); + + return mesh._retn(); +} + + //======================================================================= //function : FindCoincidentNodes //purpose : @@ -3731,6 +3846,24 @@ SMESH::long_array* SMESH_MeshEditor_i::FindElementsByPoint(CORBA::Double x, return res._retn(); } +//======================================================================= +//function : GetPointState +//purpose : Return point state in a closed 2D mesh in terms of TopAbs_State enumeration. +// TopAbs_UNKNOWN state means that either mesh is wrong or the analysis fails. +//======================================================================= + +CORBA::Short SMESH_MeshEditor_i::GetPointState(CORBA::Double x, + CORBA::Double y, + CORBA::Double z) +{ + theSearchersDeleter.Set( myMesh ); + if ( !theElementSearcher ) { + ::SMESH_MeshEditor anEditor( myMesh ); + theElementSearcher = anEditor.GetElementSearcher(); + } + return CORBA::Short( theElementSearcher->GetPointState( gp_Pnt( x,y,z ))); +} + //======================================================================= //function : convError //purpose : @@ -4017,9 +4150,6 @@ CORBA::Boolean SMESH_MeshEditor_i::ChangeElemNodes(CORBA::Long ide, } TPythonDump() << "isDone = " << this << ".ChangeElemNodes( " << ide << ", " << newIDs << " )"; -#ifdef _DEBUG_ - TPythonDump() << "print 'ChangeElemNodes: ', isDone"; -#endif return GetMeshDS()->ChangeElementNodes( elem, & aNodes[0], nbn1+1 ); } @@ -4573,7 +4703,7 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElemGroups( storeResult( aMeshEditor) ; // Update Python script - TPythonDump() << "isDone = " << this << ".DoubleNodeGroups( " << &theElems << ", " + TPythonDump() << "isDone = " << this << ".DoubleNodeElemGroups( " << &theElems << ", " << &theNodesNot << ", " << &theAffectedElems << " )"; return aResult; } diff --git a/src/SMESH_I/SMESH_MeshEditor_i.hxx b/src/SMESH_I/SMESH_MeshEditor_i.hxx index 5c4dd85ca..046573b17 100644 --- a/src/SMESH_I/SMESH_MeshEditor_i.hxx +++ b/src/SMESH_I/SMESH_MeshEditor_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_MeshEditor_i.hxx // Author : Nicolas REJNERI @@ -41,12 +42,18 @@ class SMESH_Mesh_i; class SMESH_MeshEditor_i: public POA_SMESH::SMESH_MeshEditor { - public: +public: SMESH_MeshEditor_i(SMESH_Mesh_i * theMesh, bool isPreview); virtual ~ SMESH_MeshEditor_i(); // --- CORBA + + /*! + * \brief Wrap a sequence of ids in a SMESH_IDSource + */ + SMESH::SMESH_IDSource_ptr MakeIDSource(const SMESH::long_array& IDsOfElements); + CORBA::Boolean RemoveElements(const SMESH::long_array & IDsOfElements); CORBA::Boolean RemoveNodes(const SMESH::long_array & IDsOfNodes); @@ -131,6 +138,8 @@ class SMESH_MeshEditor_i: public POA_SMESH::SMESH_MeshEditor CORBA::Boolean Diag13); CORBA::Long BestSplit (CORBA::Long IDOfQuad, SMESH::NumericalFunctor_ptr Criterion); + void SplitVolumesIntoTetra (SMESH::SMESH_IDSource_ptr elems, + CORBA::Short methodFlags) throw (SALOME::SALOME_Exception); CORBA::Boolean Smooth(const SMESH::long_array & IDsOfElements, const SMESH::long_array & IDsOfFixedNodes, @@ -420,6 +429,21 @@ class SMESH_MeshEditor_i: public POA_SMESH::SMESH_MeshEditor CORBA::Boolean CopyGroups, const char* MeshName); + void Scale(SMESH::SMESH_IDSource_ptr theObject, + const SMESH::PointStruct& thePoint, + const SMESH::double_array& theScaleFact, + CORBA::Boolean theCopy); + + SMESH::ListOfGroups* ScaleMakeGroups(SMESH::SMESH_IDSource_ptr theObject, + const SMESH::PointStruct& thePoint, + const SMESH::double_array& theScaleFact); + + SMESH::SMESH_Mesh_ptr ScaleMakeMesh(SMESH::SMESH_IDSource_ptr Object, + const SMESH::PointStruct& Point, + const SMESH::double_array& theScaleFact, + CORBA::Boolean CopyGroups, + const char* MeshName); + void FindCoincidentNodes (CORBA::Double Tolerance, SMESH::array_of_long_array_out GroupsOfNodes); void FindCoincidentNodesOnPart(SMESH::SMESH_IDSource_ptr Object, @@ -442,7 +466,6 @@ class SMESH_MeshEditor_i: public POA_SMESH::SMESH_MeshEditor CORBA::Double z); /*! * Return elements of given type where the given point is IN or ON. - * * 'ALL' type means elements of any type excluding nodes */ SMESH::long_array* FindElementsByPoint(CORBA::Double x, @@ -450,6 +473,11 @@ class SMESH_MeshEditor_i: public POA_SMESH::SMESH_MeshEditor CORBA::Double z, SMESH::ElementType type); + /*! + * Return point state in a closed 2D mesh in terms of TopAbs_State enumeration. + * TopAbs_UNKNOWN state means that either mesh is wrong or the analysis fails. + */ + CORBA::Short GetPointState(CORBA::Double x, CORBA::Double y, CORBA::Double z); SMESH::SMESH_MeshEditor::Sew_Error SewFreeBorders(CORBA::Long FirstNodeID1, @@ -696,6 +724,13 @@ class SMESH_MeshEditor_i: public POA_SMESH::SMESH_MeshEditor const bool MakeGroups, ::SMESH_Mesh* TargetMesh=0); + SMESH::ListOfGroups* scale(const SMESH::long_array & theIDsOfElements, + const SMESH::PointStruct& thePoint, + const SMESH::double_array& theScaleFact, + CORBA::Boolean theCopy, + const bool theMakeGroups, + ::SMESH_Mesh* theTargetMesh=0); + SMESH::SMESH_Mesh_ptr makeMesh(const char* theMeshName); void DumpGroupsList(SMESH::TPythonDump & theDumpPython, diff --git a/src/SMESH_I/SMESH_Mesh_i.cxx b/src/SMESH_I/SMESH_Mesh_i.cxx index 3f5ccd718..9f0101a9a 100644 --- a/src/SMESH_I/SMESH_Mesh_i.cxx +++ b/src/SMESH_I/SMESH_Mesh_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_Mesh_i.cxx // Author : Paul RASCLE, EDF @@ -68,8 +69,11 @@ #include #include #include +#include +#include // STL Includes +#include #include #include #include @@ -312,7 +316,7 @@ SMESH_Mesh_i::ImportMEDFile( const char* theFileName, const char* theMeshName ) char* SMESH_Mesh_i::GetVersionString(SMESH::MED_VERSION version, CORBA::Short nbDigits) { - std::string ver = DriverMED_W_SMESHDS_Mesh::GetVersionString(MED::EVersion(version), + string ver = DriverMED_W_SMESHDS_Mesh::GetVersionString(MED::EVersion(version), nbDigits); return CORBA::string_dup( ver.c_str() ); } @@ -1861,7 +1865,6 @@ void SMESH_Mesh_i::CheckGeomGroupModif() //============================================================================= /*! * \brief Create standalone group instead if group on geometry - * */ //============================================================================= @@ -1918,8 +1921,8 @@ SMESH::SMESH_Group_ptr SMESH_Mesh_i::ConvertToStandalone( SMESH::SMESH_GroupOnGe _mapGroups[anId] = SMESH::SMESH_GroupBase::_duplicate( aGroup ); // register CORBA object for persistence - //int nextId = _gen_i->RegisterObject( aGroup ); - //if(MYDEBUG) MESSAGE( "Add group to map with id = "<< nextId); + /*int nextId =*/ _gen_i->RegisterObject( aGroup ); + builder->SetIOR( aGroupSO, _gen_i->GetORB()->object_to_string( aGroup ) ); return aGroup._retn(); @@ -2264,7 +2267,7 @@ CORBA::Boolean SMESH_Mesh_i::HasDuplicatedGroupNamesMED() return _impl->HasDuplicatedGroupNamesMED(); } -void SMESH_Mesh_i::PrepareForWriting (const char* file) +void SMESH_Mesh_i::PrepareForWriting (const char* file, bool overwrite) { TCollection_AsciiString aFullName ((char*)file); OSD_Path aPath (aFullName); @@ -2273,8 +2276,10 @@ void SMESH_Mesh_i::PrepareForWriting (const char* file) // existing filesystem node if (aFile.KindOfFile() == OSD_FILE) { if (aFile.IsWriteable()) { - aFile.Reset(); - aFile.Remove(); + if (overwrite) { + aFile.Reset(); + aFile.Remove(); + } if (aFile.Failed()) { TCollection_AsciiString msg ("File "); msg += aFullName + " cannot be replaced."; @@ -2305,15 +2310,16 @@ void SMESH_Mesh_i::PrepareForWriting (const char* file) } } -void SMESH_Mesh_i::ExportToMED (const char* file, - CORBA::Boolean auto_groups, - SMESH::MED_VERSION theVersion) +void SMESH_Mesh_i::ExportToMEDX (const char* file, + CORBA::Boolean auto_groups, + SMESH::MED_VERSION theVersion, + CORBA::Boolean overwrite) throw(SALOME::SALOME_Exception) { Unexpect aCatch(SALOME_SalomeException); // Perform Export - PrepareForWriting(file); + PrepareForWriting(file, overwrite); const char* aMeshName = "Mesh"; SALOMEDS::Study_ptr aStudy = _gen_i->GetCurrentStudy(); if ( !aStudy->_is_nil() ) { @@ -2345,17 +2351,25 @@ void SMESH_Mesh_i::ExportToMED (const char* file, // check names of groups checkGroupNames(); - TPythonDump() << _this() << ".ExportToMED( '" - << file << "', " << auto_groups << ", " << theVersion << " )"; + TPythonDump() << _this() << ".ExportToMEDX( '" + << file << "', " << auto_groups << ", " << theVersion << ", " << overwrite << " )"; _impl->ExportMED( file, aMeshName, auto_groups, theVersion ); } +void SMESH_Mesh_i::ExportToMED (const char* file, + CORBA::Boolean auto_groups, + SMESH::MED_VERSION theVersion) + throw(SALOME::SALOME_Exception) +{ + ExportToMEDX(file,auto_groups,theVersion,true); +} + void SMESH_Mesh_i::ExportMED (const char* file, CORBA::Boolean auto_groups) throw(SALOME::SALOME_Exception) { - ExportToMED(file,auto_groups,SMESH::MED_V2_1); + ExportToMEDX(file,auto_groups,SMESH::MED_V2_1,true); } void SMESH_Mesh_i::ExportDAT (const char *file) @@ -2612,7 +2626,7 @@ CORBA::Long SMESH_Mesh_i::NbSubMesh()throw(SALOME::SALOME_Exception) //============================================================================= char* SMESH_Mesh_i::Dump() { - std::ostringstream os; + ostringstream os; _impl->Dump( os ); return CORBA::string_dup( os.str().c_str() ); } @@ -2745,6 +2759,21 @@ SMESH::ElementType SMESH_Mesh_i::GetElementType( const CORBA::Long id, const boo return ( SMESH::ElementType )_impl->GetElementType( id, iselem ); } +//============================================================================= +/*! + * + */ +//============================================================================= + +SMESH::EntityType SMESH_Mesh_i::GetElementGeomType( const CORBA::Long id ) + throw (SALOME::SALOME_Exception) +{ + const SMDS_MeshElement* e = _impl->GetMeshDS()->FindElement(id); + if ( !e ) + THROW_SALOME_CORBA_EXCEPTION( "invalid element id", SALOME::BAD_PARAM ); + + return ( SMESH::EntityType ) e->GetEntityType(); +} //============================================================================= /*! @@ -3170,6 +3199,57 @@ CORBA::Long SMESH_Mesh_i::ElemNbFaces(const CORBA::Long id) return elem->NbFaces(); } +//======================================================================= +//function : GetElemFaceNodes +//purpose : Returns nodes of given face (counted from zero) for given element. +//======================================================================= + +SMESH::long_array* SMESH_Mesh_i::GetElemFaceNodes(CORBA::Long elemId, + CORBA::Short faceIndex) +{ + SMESH::long_array_var aResult = new SMESH::long_array(); + if ( SMESHDS_Mesh* aSMESHDS_Mesh = _impl->GetMeshDS() ) + { + if ( const SMDS_MeshElement* elem = aSMESHDS_Mesh->FindElement(elemId) ) + { + SMDS_VolumeTool vtool( elem ); + if ( faceIndex < vtool.NbFaces() ) + { + aResult->length( vtool.NbFaceNodes( faceIndex )); + const SMDS_MeshNode** nn = vtool.GetFaceNodes( faceIndex ); + for ( int i = 0; i < aResult->length(); ++i ) + aResult[ i ] = nn[ i ]->GetID(); + } + } + } + return aResult._retn(); +} + +//======================================================================= +//function : FindElementByNodes +//purpose : Returns an element based on all given nodes. +//======================================================================= + +CORBA::Long SMESH_Mesh_i::FindElementByNodes(const SMESH::long_array& nodes) +{ + CORBA::Long elemID(0); + if ( SMESHDS_Mesh* mesh = _impl->GetMeshDS() ) + { + vector< const SMDS_MeshNode * > nn( nodes.length() ); + for ( int i = 0; i < nodes.length(); ++i ) + if ( !( nn[i] = mesh->FindNode( nodes[i] ))) + return elemID; + + const SMDS_MeshElement* elem = mesh->FindElement( nn ); + if ( !elem && ( _impl->NbEdges( ORDER_QUADRATIC ) || + _impl->NbFaces( ORDER_QUADRATIC ) || + _impl->NbVolumes( ORDER_QUADRATIC ))) + elem = mesh->FindElement( nn, SMDSAbs_All, /*noMedium=*/true ); + + if ( elem ) elemID = CORBA::Long( elem->GetID() ); + } + return elemID; +} //============================================================================= /*! @@ -3461,3 +3541,441 @@ void SMESH_Mesh_i::CollectMeshInfo(const SMDS_ElemIteratorPtr theItr, while (theItr->more()) theInfo[ theItr->next()->GetEntityType() ]++; } + +//============================================================================= +/*! + * \brief mapping of mesh dimension into shape type + */ +//============================================================================= +static TopAbs_ShapeEnum shapeTypeByDim(const int theDim) +{ + TopAbs_ShapeEnum aType = TopAbs_SOLID; + switch ( theDim ) { + case 0: aType = TopAbs_VERTEX; break; + case 1: aType = TopAbs_EDGE; break; + case 2: aType = TopAbs_FACE; break; + case 3: + default:aType = TopAbs_SOLID; break; + } + return aType; +} + +//============================================================================= +/*! + * \brief Internal structure used to find concurent submeshes + * + * It represents a pair < submesh, concurent dimension >, where + * 'concurrent dimension' is dimension of shape where the submesh can concurent + * with another submesh. In other words, it is dimension of a hypothesis assigned + * to submesh. + */ +//============================================================================= + +class SMESH_DimHyp +{ + public: + //! fileds + int _dim; //!< a dimension the algo can build (concurrent dimension) + int _ownDim; //!< dimension of shape of _subMesh (>=_dim) + TopTools_MapOfShape _shapeMap; + SMESH_subMesh* _subMesh; + list _hypothesises; //!< algo is first, then its parameters + + //! Constructors + SMESH_DimHyp(const SMESH_subMesh* theSubMesh, + const int theDim, + const TopoDS_Shape& theShape) + { + _subMesh = (SMESH_subMesh*)theSubMesh; + SetShape( theDim, theShape ); + } + + //! set shape + void SetShape(const int theDim, + const TopoDS_Shape& theShape) + { + _dim = theDim; + _ownDim = (int)SMESH_Gen::GetShapeDim(theShape); + if (_dim >= _ownDim) + _shapeMap.Add( theShape ); + else { + TopExp_Explorer anExp( theShape, shapeTypeByDim(theDim) ); + for( ; anExp.More(); anExp.Next() ) + _shapeMap.Add( anExp.Current() ); + } + } + + //! Check sharing of sub shapes + static bool isShareSubShapes(const TopTools_MapOfShape& theToCheck, + const TopTools_MapOfShape& theToFind, + const TopAbs_ShapeEnum theType) + { + bool isShared = false; + TopTools_MapIteratorOfMapOfShape anItr( theToCheck ); + for (; !isShared && anItr.More(); anItr.Next() ) { + const TopoDS_Shape aSubSh = anItr.Key(); + // check for case when concurrent dimensions are same + isShared = theToFind.Contains( aSubSh ); + // check for subshape with concurrent dimension + TopExp_Explorer anExp( aSubSh, theType ); + for ( ; !isShared && anExp.More(); anExp.Next() ) + isShared = theToFind.Contains( anExp.Current() ); + } + return isShared; + } + + //! check algorithms + static bool checkAlgo(const SMESHDS_Hypothesis* theA1, + const SMESHDS_Hypothesis* theA2) + { + if ( theA1->GetType() == SMESHDS_Hypothesis::PARAM_ALGO || + theA2->GetType() == SMESHDS_Hypothesis::PARAM_ALGO ) + return false; // one of the hypothesis is not algorithm + // check algorithm names (should be equal) + return strcmp( theA1->GetName(), theA2->GetName() ) == 0; + } + + + //! Check if subshape hypotheses are concurrent + bool IsConcurrent(const SMESH_DimHyp* theOther) const + { + if ( _subMesh == theOther->_subMesh ) + return false; // same subshape - should not be + + // if ( == && + // any of the two submeshes is not on COMPOUND shape ) + // -> no concurrency + bool meIsCompound = (_subMesh->GetSubMeshDS() && _subMesh->GetSubMeshDS()->IsComplexSubmesh()); + bool otherIsCompound = (theOther->_subMesh->GetSubMeshDS() && theOther->_subMesh->GetSubMeshDS()->IsComplexSubmesh()); + if ( (_ownDim == _dim || theOther->_ownDim == _dim ) && (!meIsCompound || !otherIsCompound)) + return false; + +// bool checkSubShape = ( _dim >= theOther->_dim ) +// ? isShareSubShapes( _shapeMap, theOther->_shapeMap, shapeTypeByDim(theOther->_dim) ) +// : isShareSubShapes( theOther->_shapeMap, _shapeMap, shapeTypeByDim(_dim) ) ; + bool checkSubShape = isShareSubShapes( _shapeMap, theOther->_shapeMap, shapeTypeByDim(_dim)); + if ( !checkSubShape ) + return false; + + // check algorithms to be same + if (!checkAlgo( _hypothesises.front(), theOther->_hypothesises.front() )) + return true; // different algorithms + + // check hypothesises for concurrence (skip first as algorithm) + int nbSame = 0; + // pointers should be same, becase it is referenes from mesh hypothesis partition + list ::const_iterator hypIt = _hypothesises.begin(); + list ::const_iterator otheEndIt = theOther->_hypothesises.end(); + for ( hypIt++ /*skip first as algo*/; hypIt != _hypothesises.end(); hypIt++ ) + if ( find( theOther->_hypothesises.begin(), otheEndIt, *hypIt ) != otheEndIt ) + nbSame++; + // the submeshes are concurrent if their algorithms has different parameters + return nbSame != theOther->_hypothesises.size() - 1; + } + +}; // end of SMESH_DimHyp + +typedef list TDimHypList; + +static void addDimHypInstance(const int theDim, + const TopoDS_Shape& theShape, + const SMESH_Algo* theAlgo, + const SMESH_subMesh* theSubMesh, + const list & theHypList, + TDimHypList* theDimHypListArr ) +{ + TDimHypList& listOfdimHyp = theDimHypListArr[theDim]; + if ( listOfdimHyp.empty() || listOfdimHyp.back()->_subMesh != theSubMesh ) { + SMESH_DimHyp* dimHyp = new SMESH_DimHyp( theSubMesh, theDim, theShape ); + listOfdimHyp.push_back( dimHyp ); + } + + SMESH_DimHyp* dimHyp = listOfdimHyp.back(); + dimHyp->_hypothesises.push_front(theAlgo); + list ::const_iterator hypIt = theHypList.begin(); + for( ; hypIt != theHypList.end(); hypIt++ ) + dimHyp->_hypothesises.push_back( *hypIt ); +} + +static void findConcurrents(const SMESH_DimHyp* theDimHyp, + const TDimHypList& theListOfDimHyp, + TListOfInt& theListOfConcurr ) +{ + TDimHypList::const_reverse_iterator rIt = theListOfDimHyp.rbegin(); + for ( ; rIt != theListOfDimHyp.rend(); rIt++ ) { + const SMESH_DimHyp* curDimHyp = *rIt; + if ( curDimHyp == theDimHyp ) + break; // meet own dimHyp pointer in same dimension + else if ( theDimHyp->IsConcurrent( curDimHyp ) ) + if ( find( theListOfConcurr.begin(), + theListOfConcurr.end(), + curDimHyp->_subMesh->GetId() ) == theListOfConcurr.end() ) + theListOfConcurr.push_back( curDimHyp->_subMesh->GetId() ); + } +} + +static void unionLists(TListOfInt& theListOfId, + TListOfListOfInt& theListOfListOfId, + const int theIndx ) +{ + TListOfListOfInt::iterator it = theListOfListOfId.begin(); + for ( int i = 0; it != theListOfListOfId.end(); it++, i++ ) { + if ( i < theIndx ) + continue; //skip already treated lists + // check if other list has any same submesh object + TListOfInt& otherListOfId = *it; + if ( find_first_of( theListOfId.begin(), theListOfId.end(), + otherListOfId.begin(), otherListOfId.end() ) == theListOfId.end() ) + continue; + + // union two lists (from source into target) + TListOfInt::iterator it2 = otherListOfId.begin(); + for ( ; it2 != otherListOfId.end(); it2++ ) { + if ( find( theListOfId.begin(), theListOfId.end(), (*it2) ) == theListOfId.end() ) + theListOfId.push_back(*it2); + } + // clear source list + otherListOfId.clear(); + } +} + +//! free memory allocated for dimension-hypothesis objects +static void removeDimHyps( TDimHypList* theArrOfList ) +{ + for (int i = 0; i < 4; i++ ) { + TDimHypList& listOfdimHyp = theArrOfList[i]; + TDimHypList::const_iterator it = listOfdimHyp.begin(); + for ( ; it != listOfdimHyp.end(); it++ ) + delete (*it); + } +} + +//============================================================================= +/*! + * \brief Return submesh objects list in meshing order + */ +//============================================================================= + +SMESH::submesh_array_array* SMESH_Mesh_i::GetMeshOrder() +{ + SMESH::submesh_array_array_var aResult = new SMESH::submesh_array_array(); + + SMESHDS_Mesh* aMeshDS = _impl->GetMeshDS(); + if ( !aMeshDS ) + return aResult._retn(); + + ::SMESH_Mesh& mesh = GetImpl(); + TListOfListOfInt anOrder = mesh.GetMeshOrder(); // is there already defined order? + if ( !anOrder.size() ) { + + // collect submeshes detecting concurrent algorithms and hypothesises + TDimHypList dimHypListArr[4]; // dimHyp list for each shape dimension + + map::iterator i_sm = _mapSubMesh.begin(); + for ( ; i_sm != _mapSubMesh.end(); i_sm++ ) { + ::SMESH_subMesh* sm = (*i_sm).second; + // shape of submesh + const TopoDS_Shape& aSubMeshShape = sm->GetSubShape(); + + // list of assigned hypothesises + const list & hypList = mesh.GetHypothesisList(aSubMeshShape); + // Find out dimensions where the submesh can be concurrent. + // We define the dimensions by algo of each of hypotheses in hypList + list ::const_iterator hypIt = hypList.begin(); + for( ; hypIt != hypList.end(); hypIt++ ) { + SMESH_Algo* anAlgo = 0; + const SMESH_Hypothesis* hyp = dynamic_cast(*hypIt); + if ( hyp->GetType() != SMESHDS_Hypothesis::PARAM_ALGO ) + // hyp it-self is algo + anAlgo = (SMESH_Algo*)dynamic_cast(hyp); + else { + // try to find algorithm with help of subshapes + TopExp_Explorer anExp( aSubMeshShape, shapeTypeByDim(hyp->GetDim()) ); + for ( ; !anAlgo && anExp.More(); anExp.Next() ) + anAlgo = mesh.GetGen()->GetAlgo( mesh, anExp.Current() ); + } + if (!anAlgo) + continue; // no assigned algorithm to current submesh + + int dim = anAlgo->GetDim(); // top concurrent dimension (see comment to SMESH_DimHyp) + // the submesh can concurrent at (or lower dims if !anAlgo->NeedDescretBoundary()) + + // create instance of dimension-hypothesis for found concurrent dimension(s) and algorithm + for ( int j = anAlgo->NeedDescretBoundary() ? dim : 1, jn = dim; j <= jn; j++ ) + addDimHypInstance( j, aSubMeshShape, anAlgo, sm, hypList, dimHypListArr ); + } + } // end iterations on submesh + + // iterate on created dimension-hypotheses and check for concurrents + for ( int i = 0; i < 4; i++ ) { + const list& listOfDimHyp = dimHypListArr[i]; + // check for concurrents in own and other dimensions (step-by-step) + TDimHypList::const_iterator dhIt = listOfDimHyp.begin(); + for ( ; dhIt != listOfDimHyp.end(); dhIt++ ) { + const SMESH_DimHyp* dimHyp = *dhIt; + TListOfInt listOfConcurr; + // looking for concurrents and collect into own list + for ( int j = i; j < 4; j++ ) + findConcurrents( dimHyp, dimHypListArr[j], listOfConcurr ); + // check if any concurrents found + if ( listOfConcurr.size() > 0 ) { + // add own submesh to list of concurrent + listOfConcurr.push_front( dimHyp->_subMesh->GetId() ); + anOrder.push_back( listOfConcurr ); + } + } + } + + removeDimHyps(dimHypListArr); + + // now, minimise the number of concurrent groups + // Here we assume that lists of submhes can has same submesh + // in case of multi-dimension algorithms, as result + // list with common submesh have to be union into one list + int listIndx = 0; + TListOfListOfInt::iterator listIt = anOrder.begin(); + for(; listIt != anOrder.end(); listIt++, listIndx++ ) + unionLists( *listIt, anOrder, listIndx + 1 ); + } + // convert submesh ids into interface instances + // and dump command into python + convertMeshOrder( anOrder, aResult, true ); + + return aResult._retn(); +} + +//============================================================================= +/*! + * \brief find common submeshes with given submesh + * \param theSubMeshList list of already collected submesh to check + * \param theSubMesh given submesh to intersect with other + * \param theCommonSubMeshes collected common submeshes + */ +//============================================================================= + +static void findCommonSubMesh + (list& theSubMeshList, + const SMESH_subMesh* theSubMesh, + set& theCommon ) +{ + if ( !theSubMesh ) + return; + list::const_iterator it = theSubMeshList.begin(); + for ( ; it != theSubMeshList.end(); it++ ) + theSubMesh->FindIntersection( *it, theCommon ); + theSubMeshList.push_back( theSubMesh ); + //theCommon.insert( theSubMesh ); +} + +//============================================================================= +/*! + * \brief Set submesh object order + * \param theSubMeshArray submesh array order + */ +//============================================================================= + +::CORBA::Boolean SMESH_Mesh_i::SetMeshOrder(const SMESH::submesh_array_array& theSubMeshArray) +{ + bool res = false; + ::SMESH_Mesh& mesh = GetImpl(); + + TPythonDump aPythonDump; // prevent dump of called methods + aPythonDump << "isDone = " << _this() << ".SetMeshOrder( [ "; + + TListOfListOfInt subMeshOrder; + for ( int i = 0, n = theSubMeshArray.length(); i < n; i++ ) + { + const SMESH::submesh_array& aSMArray = theSubMeshArray[i]; + TListOfInt subMeshIds; + aPythonDump << "[ "; + // Collect subMeshes which should be clear + // do it list-by-list, because modification of submesh order + // take effect between concurrent submeshes only + set subMeshToClear; + list subMeshList; + for ( int j = 0, jn = aSMArray.length(); j < jn; j++ ) + { + const SMESH::SMESH_subMesh_var subMesh = SMESH::SMESH_subMesh::_duplicate(aSMArray[j]); + if ( j > 0 ) + aPythonDump << ", "; + aPythonDump << subMesh; + subMeshIds.push_back( subMesh->GetId() ); + // detect common parts of submeshes + if ( _mapSubMesh.find(subMesh->GetId()) != _mapSubMesh.end() ) + findCommonSubMesh( subMeshList, _mapSubMesh[ subMesh->GetId() ], subMeshToClear ); + } + aPythonDump << " ]"; + subMeshOrder.push_back( subMeshIds ); + + // clear collected submeshes + set::iterator clrIt = subMeshToClear.begin(); + for ( ; clrIt != subMeshToClear.end(); clrIt++ ) { + SMESH_subMesh* sm = (SMESH_subMesh*)*clrIt; + if ( sm ) + sm->ComputeStateEngine( SMESH_subMesh::CLEAN ); + // ClearSubMesh( *clrIt ); + } + } + aPythonDump << " ])"; + + mesh.SetMeshOrder( subMeshOrder ); + res = true; + + return res; +} + +//============================================================================= +/*! + * \brief Convert submesh ids into submesh interfaces + */ +//============================================================================= + +void SMESH_Mesh_i::convertMeshOrder +(const TListOfListOfInt& theIdsOrder, + SMESH::submesh_array_array& theResOrder, + const bool theIsDump) +{ + int nbSet = theIdsOrder.size(); + TPythonDump aPythonDump; // prevent dump of called methods + if ( theIsDump ) + aPythonDump << "[ "; + theResOrder.length(nbSet); + TListOfListOfInt::const_iterator it = theIdsOrder.begin(); + int listIndx = 0; + for( ; it != theIdsOrder.end(); it++ ) { + // translate submesh identificators into submesh objects + // takeing into account real number of concurrent lists + const TListOfInt& aSubOrder = (*it); + if (!aSubOrder.size()) + continue; + if ( theIsDump ) + aPythonDump << "[ "; + // convert shape indeces into interfaces + SMESH::submesh_array_var aResSubSet = new SMESH::submesh_array(); + aResSubSet->length(aSubOrder.size()); + TListOfInt::const_iterator subIt = aSubOrder.begin(); + for( int j = 0; subIt != aSubOrder.end(); subIt++ ) { + if ( _mapSubMeshIor.find(*subIt) == _mapSubMeshIor.end() ) + continue; + SMESH::SMESH_subMesh_var subMesh = + SMESH::SMESH_subMesh::_duplicate( _mapSubMeshIor[*subIt] ); + if ( theIsDump ) { + if ( j > 0 ) + aPythonDump << ", "; + aPythonDump << subMesh; + } + aResSubSet[ j++ ] = subMesh; + } + if ( theIsDump ) + aPythonDump << " ]"; + theResOrder[ listIndx++ ] = aResSubSet; + } + // correct number of lists + theResOrder.length( listIndx ); + + if ( theIsDump ) { + // finilise python dump + aPythonDump << " ]"; + aPythonDump << " = " << _this() << ".GetMeshOrder()"; + } +} diff --git a/src/SMESH_I/SMESH_Mesh_i.hxx b/src/SMESH_I/SMESH_Mesh_i.hxx index e8598de34..bed9819da 100644 --- a/src/SMESH_I/SMESH_Mesh_i.hxx +++ b/src/SMESH_I/SMESH_Mesh_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_Mesh_i.hxx // Author : Paul RASCLE, EDF @@ -58,7 +59,7 @@ class SMESH_I_EXPORT SMESH_Mesh_i: public: SMESH_Mesh_i( PortableServer::POA_ptr thePOA, SMESH_Gen_i* myGen_i, - CORBA::Long studyId ); + CORBA::Long studyId ); virtual ~SMESH_Mesh_i(); @@ -206,6 +207,8 @@ public: */ char* GetVersionString(SMESH::MED_VERSION version, CORBA::Short nbDigits); + void ExportToMEDX( const char* file, CORBA::Boolean auto_groups, SMESH::MED_VERSION theVersion, CORBA::Boolean overwrite ) + throw (SALOME::SALOME_Exception); void ExportToMED( const char* file, CORBA::Boolean auto_groups, SMESH::MED_VERSION theVersion ) throw (SALOME::SALOME_Exception); void ExportMED( const char* file, CORBA::Boolean auto_groups ) @@ -305,6 +308,9 @@ public: SMESH::ElementType GetElementType( CORBA::Long id, bool iselem ) throw (SALOME::SALOME_Exception); + SMESH::EntityType GetElementGeomType( CORBA::Long id ) + throw (SALOME::SALOME_Exception); + /*! * Returns ID of elements for given submesh */ @@ -338,7 +344,7 @@ public: static SMESH::Hypothesis_Status ConvertHypothesisStatus (SMESH_Hypothesis::Hypothesis_Status theStatus); - static void PrepareForWriting (const char* file); + static void PrepareForWriting (const char* file, bool overwrite = true); //int importMEDFile( const char* theFileName, const char* theMeshName ); @@ -450,7 +456,16 @@ public: * Returns number of faces for given element */ CORBA::Long ElemNbFaces(CORBA::Long id); - + /*! + * Returns nodes of given face (counted from zero) for given element. + */ + SMESH::long_array* GetElemFaceNodes(CORBA::Long elemId, CORBA::Short faceIndex); + + /*! + * Returns an element based on all given nodes. + */ + CORBA::Long FindElementByNodes(const SMESH::long_array& nodes); + /*! * Returns true if given element is polygon */ @@ -500,6 +515,16 @@ public: static void CollectMeshInfo(const SMDS_ElemIteratorPtr theItr, SMESH::long_array& theInfo); + + /*! + * \brief Return submesh objects list in meshing order + */ + virtual SMESH::submesh_array_array* GetMeshOrder(); + /*! + * \brief Set submesh object order + */ + virtual ::CORBA::Boolean SetMeshOrder(const SMESH::submesh_array_array& theSubMeshArray); + std::map _mapSubMesh_i; //NRI std::map _mapSubMesh; //NRI @@ -510,6 +535,13 @@ private: */ void checkGroupNames(); + /*! + * Convert submesh ids into submesh interfaces + */ + void convertMeshOrder(const TListOfListOfInt& theIdsOrder, + SMESH::submesh_array_array& theSubMeshOrder, + const bool theIsDump); + private: static int myIdGenerator; diff --git a/src/SMESH_I/SMESH_NoteBook.cxx b/src/SMESH_I/SMESH_NoteBook.cxx index 2345a4279..df42dd4f9 100644 --- a/src/SMESH_I/SMESH_NoteBook.cxx +++ b/src/SMESH_I/SMESH_NoteBook.cxx @@ -1,25 +1,25 @@ -// Copyright (C) 2008 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. +// This library is free software; you can redistribute it and/or +// modify it 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. +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_NoteBook.cxx // Author : Roman NIKOLAEV - +// #include "SMESH_2smeshpy.hxx" #include "SMESH_NoteBook.hxx" #include "SMESH_Gen_i.hxx" @@ -41,14 +41,14 @@ static int MYDEBUG = 0; using namespace std; -void SetVariable(Handle(_pyCommand) theCommand,const ObjectStates* theStates, int position, int theArgNb); +void SetVariable(Handle(_pyCommand) theCommand,const SMESH_ObjectStates* theStates, int position, int theArgNb); //================================================================================ /*! * \brief Constructor */ //================================================================================ -ObjectStates::ObjectStates(TCollection_AsciiString theType) +SMESH_ObjectStates::SMESH_ObjectStates(TCollection_AsciiString theType) { _type = theType; _dumpstate = 0; @@ -59,7 +59,7 @@ ObjectStates::ObjectStates(TCollection_AsciiString theType) * \brief Destructor */ //================================================================================ -ObjectStates::~ObjectStates() +SMESH_ObjectStates::~SMESH_ObjectStates() { } @@ -69,7 +69,7 @@ ObjectStates::~ObjectStates() * \param theState - Object state (vector of notebook variable) */ //================================================================================ -void ObjectStates::AddState(const TState &theState) +void SMESH_ObjectStates::AddState(const TState &theState) { _states.push_back(theState); } @@ -80,7 +80,7 @@ void ObjectStates::AddState(const TState &theState) * \\retval state - Object state (vector of notebook variable) */ //================================================================================ -TState ObjectStates::GetCurrectState() const +TState SMESH_ObjectStates::GetCurrectState() const { if(_states.size() > _dumpstate) return _states[_dumpstate]; @@ -94,7 +94,7 @@ TState ObjectStates::GetCurrectState() const * */ //================================================================================ -TAllStates ObjectStates::GetAllStates() const +TAllStates SMESH_ObjectStates::GetAllStates() const { return _states; } @@ -104,7 +104,7 @@ TAllStates ObjectStates::GetAllStates() const * */ //================================================================================ -void ObjectStates::IncrementState() +void SMESH_ObjectStates::IncrementState() { _dumpstate++; } @@ -114,7 +114,7 @@ void ObjectStates::IncrementState() * */ //================================================================================ -TCollection_AsciiString ObjectStates::GetObjectType() const{ +TCollection_AsciiString SMESH_ObjectStates::GetObjectType() const{ return _type; } @@ -125,7 +125,7 @@ TCollection_AsciiString ObjectStates::GetObjectType() const{ */ //================================================================================ LayerDistributionStates::LayerDistributionStates(): - ObjectStates("LayerDistribution") + SMESH_ObjectStates("LayerDistribution") { } //================================================================================ @@ -252,7 +252,7 @@ void SMESH_NoteBook::ReplaceVariables() if(it != _objectMap.end()) { if(MYDEBUG) cout << "Found object : " << (*it).first << endl; - ObjectStates *aStates = (*it).second; + SMESH_ObjectStates *aStates = (*it).second; // Case for LocalLength hypothesis if(aStates->GetObjectType().IsEqual("LocalLength") && aStates->GetCurrectState().size() >= 2) { if(aMethod.IsEqual("SetLength")) { @@ -674,12 +674,12 @@ void SMESH_NoteBook::InitObjectMap() } if(MYDEBUG) cout<<"The object Type : "<length(); i++) { TState aVars; @@ -697,7 +697,7 @@ void SMESH_NoteBook::InitObjectMap() } aState->AddState(aVars); } - _objectMap.insert(pair(TCollection_AsciiString(aSObject->GetID()),aState)); + _objectMap.insert(pair(TCollection_AsciiString(aSObject->GetID()),aState)); } } } @@ -850,10 +850,10 @@ bool SMESH_NoteBook::GetReal(const TCollection_AsciiString& theVarName, double& /*! - * Set variable of the ObjectStates from position to the _pyCommand + * Set variable of the SMESH_ObjectStates from position to the _pyCommand * method as nbArg argument */ -void SetVariable(Handle(_pyCommand) theCommand, const ObjectStates* theStates, int position, int theArgNb) +void SetVariable(Handle(_pyCommand) theCommand, const SMESH_ObjectStates* theStates, int position, int theArgNb) { if(theStates->GetCurrectState().size() > position) if(!theStates->GetCurrectState().at(position).IsEmpty()) diff --git a/src/SMESH_I/SMESH_NoteBook.hxx b/src/SMESH_I/SMESH_NoteBook.hxx index dfeb3b50a..94e348ecd 100644 --- a/src/SMESH_I/SMESH_NoteBook.hxx +++ b/src/SMESH_I/SMESH_NoteBook.hxx @@ -1,26 +1,25 @@ -// Copyright (C) 2008 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. +// This library is free software; you can redistribute it and/or +// modify it 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. +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_NoteBook.hxx // Author : Roman NIKOLAEV () - - +// #ifndef SMESH_NoteBook_HeaderFile #define SMESH_NoteBook_HeaderFile @@ -36,12 +35,12 @@ typedef std::vector TState; typedef std::vector TAllStates; typedef TCollection_AsciiString _pyID; -class ObjectStates{ +class SMESH_ObjectStates{ public: - ObjectStates(TCollection_AsciiString theType); - virtual ~ObjectStates(); + SMESH_ObjectStates(TCollection_AsciiString theType); + virtual ~SMESH_ObjectStates(); void AddState(const TState &theState); @@ -58,7 +57,7 @@ private: int _dumpstate; }; -class LayerDistributionStates : public ObjectStates +class LayerDistributionStates : public SMESH_ObjectStates { public: typedef std::map TDistributionMap; @@ -81,7 +80,7 @@ private: class SMESH_NoteBook { public: - typedef std::map TVariablesMap; + typedef std::map TVariablesMap; typedef std::map TMeshEditorMap; SMESH_NoteBook(); ~SMESH_NoteBook(); diff --git a/src/SMESH_I/SMESH_Pattern_i.cxx b/src/SMESH_I/SMESH_Pattern_i.cxx index f3f1fcfbc..3d725b8fb 100644 --- a/src/SMESH_I/SMESH_Pattern_i.cxx +++ b/src/SMESH_I/SMESH_Pattern_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_Pattern_i.cxx // Created : Fri Aug 20 16:15:49 2004 diff --git a/src/SMESH_I/SMESH_Pattern_i.hxx b/src/SMESH_I/SMESH_Pattern_i.hxx index 8526ef9ad..5d5003ab8 100644 --- a/src/SMESH_I/SMESH_Pattern_i.hxx +++ b/src/SMESH_I/SMESH_Pattern_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_Pattern_i.hxx // Created : Fri Aug 20 16:03:15 2004 diff --git a/src/SMESH_I/SMESH_PythonDump.hxx b/src/SMESH_I/SMESH_PythonDump.hxx index 10d6dd85c..afcd15ddb 100644 --- a/src/SMESH_I/SMESH_PythonDump.hxx +++ b/src/SMESH_I/SMESH_PythonDump.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + #ifndef _SMESH_PYTHONDUMP_HXX_ #define _SMESH_PYTHONDUMP_HXX_ @@ -117,6 +118,12 @@ namespace SMESH TPythonDump& operator<<(const SMESH::double_array& theArg); + TPythonDump& + operator<<(SMESH::SMESH_Hypothesis_ptr theArg); + + TPythonDump& + operator<<(SMESH::SMESH_IDSource_ptr theArg); + TPythonDump& operator<<(SALOMEDS::SObject_ptr theArg); diff --git a/src/SMESH_I/SMESH_subMesh_i.cxx b/src/SMESH_I/SMESH_subMesh_i.cxx index 2720de2c7..301f1a972 100644 --- a/src/SMESH_I/SMESH_subMesh_i.cxx +++ b/src/SMESH_I/SMESH_subMesh_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_subMesh_i.cxx // Author : Paul RASCLE, EDF diff --git a/src/SMESH_I/SMESH_subMesh_i.hxx b/src/SMESH_I/SMESH_subMesh_i.hxx index 5a6eb8bd8..bd53171ae 100644 --- a/src/SMESH_I/SMESH_subMesh_i.hxx +++ b/src/SMESH_I/SMESH_subMesh_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses // File : SMESH_subMesh_i.hxx // Author : Paul RASCLE, EDF diff --git a/src/SMESH_I/smeshpy.py b/src/SMESH_I/smeshpy.py index 5b820f22f..48a483688 100644 --- a/src/SMESH_I/smeshpy.py +++ b/src/SMESH_I/smeshpy.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses # File : smeshpy.py # Module : SMESH diff --git a/src/SMESH_SWIG/Makefile.am b/src/SMESH_SWIG/Makefile.am index 7b6ef9fe4..5a616b918 100644 --- a/src/SMESH_SWIG/Makefile.am +++ b/src/SMESH_SWIG/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : Makefile.in # Author : Nicolas REJNERI, Paul RASCLE # Modified by : Alexander BORODIN (OCN) - autotools usage diff --git a/src/SMESH_SWIG/PAL_MESH_041_mesh.py b/src/SMESH_SWIG/PAL_MESH_041_mesh.py index 523429d2b..db62e40ce 100755 --- a/src/SMESH_SWIG/PAL_MESH_041_mesh.py +++ b/src/SMESH_SWIG/PAL_MESH_041_mesh.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + import salome import geompy import smesh @@ -54,7 +55,7 @@ Id_face1 = geompy.addToStudy(face1,"Face1") #-----------------------------SMESH------------------------------------------- - +smesh.SetCurrentStudy(salome.myStudy) # -- Init mesh -- plane_mesh = salome.IDToObject( Id_face1) diff --git a/src/SMESH_SWIG/PAL_MESH_043_2D.py b/src/SMESH_SWIG/PAL_MESH_043_2D.py index 35bd54cda..bdf8ba02e 100755 --- a/src/SMESH_SWIG/PAL_MESH_043_2D.py +++ b/src/SMESH_SWIG/PAL_MESH_043_2D.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_testExtrusion2D.py # Module : SMESH # Description : Create meshes to test extrusion of mesh elements along path @@ -52,6 +53,7 @@ id_ellipse2 = geompy.addToStudy(ellipse2, "Ellips 2") #---------------------------------SMESH +smesh.SetCurrentStudy(salome.myStudy) # create the path mesh mesh1 = smesh.Mesh(ellipse1, "Path Mesh") diff --git a/src/SMESH_SWIG/PAL_MESH_043_3D.py b/src/SMESH_SWIG/PAL_MESH_043_3D.py index bc4e115f0..156a86dc9 100755 --- a/src/SMESH_SWIG/PAL_MESH_043_3D.py +++ b/src/SMESH_SWIG/PAL_MESH_043_3D.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_testExtrusion3D.py # Module : SMESH # Description : Create meshes to test extrusion of mesh elements along path @@ -50,6 +51,7 @@ idcircle = geompy.addToStudy(circle, "Circle") idface = geompy.addToStudy(face, "Circular face") +smesh.SetCurrentStudy(salome.myStudy) # init a Mesh with the circular face mesh1 = smesh.Mesh(face, "Mesh on circular face") diff --git a/src/SMESH_SWIG/SMESH_AdvancedEditor.py b/src/SMESH_SWIG/SMESH_AdvancedEditor.py index a480d029f..2e5ae0bfc 100644 --- a/src/SMESH_SWIG/SMESH_AdvancedEditor.py +++ b/src/SMESH_SWIG/SMESH_AdvancedEditor.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,8 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + +import salome import smesh import math @@ -51,7 +53,8 @@ def GetNewNodes(mesh,Elems,OldNodes): pass return newnodes - +smesh.SetCurrentStudy(salome.myStudy) + # create empty mesh mesh = smesh.Mesh() diff --git a/src/SMESH_SWIG/SMESH_BelongToGeom.py b/src/SMESH_SWIG/SMESH_BelongToGeom.py index 0ba648118..02047a1cf 100644 --- a/src/SMESH_SWIG/SMESH_BelongToGeom.py +++ b/src/SMESH_SWIG/SMESH_BelongToGeom.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + from SMESH_test1 import * ## Old style diff --git a/src/SMESH_SWIG/SMESH_BuildCompound.py b/src/SMESH_SWIG/SMESH_BuildCompound.py index e82abfa40..2ed6eb0e8 100644 --- a/src/SMESH_SWIG/SMESH_BuildCompound.py +++ b/src/SMESH_SWIG/SMESH_BuildCompound.py @@ -1,8 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -20,6 +17,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_BuildCompound.py # Author : Alexander KOVALEV # Module : SMESH @@ -29,6 +27,7 @@ # ! as some sequences of symbols from this example are used during # ! documentation generation to identify certain places of this file # +import salome import geompy import smesh @@ -61,6 +60,8 @@ geompy.addToStudy(Box_sup, "Box_sup") geompy.addToStudyInFather(Box_sup, Fsup2, "Fsup") geompy.addToStudyInFather(Box_sup, Finf2, "Finf") +smesh.SetCurrentStudy(salome.myStudy) + ## create a bottom mesh Mesh_inf = smesh.Mesh(Box_inf, "Mesh_inf") algo1D_1=Mesh_inf.Segment() diff --git a/src/SMESH_SWIG/SMESH_GroupFromGeom.py b/src/SMESH_SWIG/SMESH_GroupFromGeom.py index e4763c0b0..a91a7c29e 100644 --- a/src/SMESH_SWIG/SMESH_GroupFromGeom.py +++ b/src/SMESH_SWIG/SMESH_GroupFromGeom.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_GroupFromGeom.py # Module : SMESH # diff --git a/src/SMESH_SWIG/SMESH_GroupFromGeom2.py b/src/SMESH_SWIG/SMESH_GroupFromGeom2.py index 85dbd4056..d7643bfdf 100755 --- a/src/SMESH_SWIG/SMESH_GroupFromGeom2.py +++ b/src/SMESH_SWIG/SMESH_GroupFromGeom2.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + #============================================================================== # Info. # Bug (from script, bug) : SMESH_GroupFromGeom.py, PAL6945 diff --git a/src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py b/src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py index 816dede85..e0cbb6404 100644 --- a/src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py +++ b/src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,8 +20,12 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + +import salome import smesh +smesh.SetCurrentStudy(salome.myStudy) + def BuildGroupLyingOn(theMesh, theElemType, theName, theShape): aFilterMgr = smesh.smesh.CreateFilterManager() aFilter = aFilterMgr.CreateFilter() diff --git a/src/SMESH_SWIG/SMESH_Nut.py b/src/SMESH_SWIG/SMESH_Nut.py index 11428f8c5..801e554f1 100755 --- a/src/SMESH_SWIG/SMESH_Nut.py +++ b/src/SMESH_SWIG/SMESH_Nut.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + ##################################################################### #Created :17/02/2005 #Auhtor :MASLOV Eugeny, KOVALTCHUK Alexey @@ -97,6 +98,8 @@ Cut_1_ID = geompy.addToStudy(Cut_1, "Cut_1") #Mesh creation +smesh.SetCurrentStudy(salome.myStudy) + # -- Init -- shape_mesh = salome.IDToObject( Cut_1_ID ) diff --git a/src/SMESH_SWIG/SMESH_Partition1_tetra.py b/src/SMESH_SWIG/SMESH_Partition1_tetra.py index e3af5d2d1..1fef52a73 100644 --- a/src/SMESH_SWIG/SMESH_Partition1_tetra.py +++ b/src/SMESH_SWIG/SMESH_Partition1_tetra.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # Tetrahedrization of the geometry generated by the Python script GEOM_Partition1.py # Hypothesis and algorithms for the mesh generation are global # -- Rayon de la bariere @@ -119,6 +120,7 @@ status = geompy.CheckShape(alveole) print " check status ", status # ---- launch SMESH +smesh.SetCurrentStudy(salome.myStudy) # ---- init a Mesh with the alveole shape_mesh = salome.IDToObject( idalveole ) diff --git a/src/SMESH_SWIG/SMESH_Sphere.py b/src/SMESH_SWIG/SMESH_Sphere.py index 3b1ca2e79..63d746418 100644 --- a/src/SMESH_SWIG/SMESH_Sphere.py +++ b/src/SMESH_SWIG/SMESH_Sphere.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # GEOM GEOM_SWIG : binding of C++ omplementaion with Python # File : GEOM_Sphere.py # Author : Damien COQUERET, Open CASCADE @@ -103,6 +104,7 @@ Id_Result = addToStudy(Result, "Result") #----------------------------------------------------------------------- #Meshing +smesh.SetCurrentStudy(salome.myStudy) my_hexa = smesh.Mesh(Result, "Sphere_Mesh") algo = my_hexa.Segment() algo.NumberOfSegments(NbSeg) diff --git a/src/SMESH_SWIG/SMESH_blocks.py b/src/SMESH_SWIG/SMESH_blocks.py index d3e744d5f..ddbc7d5e7 100644 --- a/src/SMESH_SWIG/SMESH_blocks.py +++ b/src/SMESH_SWIG/SMESH_blocks.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # SMESH SMESH_SWIG : binding of C++ implementaion with Python # File : SMESH_blocks.py # Author : Julia DOROVSKIKH @@ -36,6 +37,7 @@ import GEOM_Spanner isBlocksTest = 0 # False isMeshTest = 1 # True +smesh.SetCurrentStudy(salome.myStudy) GEOM_Spanner.MakeSpanner(geompy, math, isBlocksTest, isMeshTest, smesh) diff --git a/src/SMESH_SWIG/SMESH_box.py b/src/SMESH_SWIG/SMESH_box.py index 8a1b39cac..c8df0179d 100755 --- a/src/SMESH_SWIG/SMESH_box.py +++ b/src/SMESH_SWIG/SMESH_box.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + #============================================================================== # Info. # Bug (from script, bug) : box.py, PAL5223 @@ -47,6 +48,7 @@ box = geompy.MakeBox(0.,0.,0.,1.,1.,1.) boxId = geompy.addToStudy(box,"box") # ---- SMESH +smesh.SetCurrentStudy(salome.myStudy) # ---- init a Mesh diff --git a/src/SMESH_SWIG/SMESH_box2_tetra.py b/src/SMESH_SWIG/SMESH_box2_tetra.py index 79cf3b536..365d64d94 100644 --- a/src/SMESH_SWIG/SMESH_box2_tetra.py +++ b/src/SMESH_SWIG/SMESH_box2_tetra.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # Tetrahedrization of the geometry union of 2 boxes having a face in common # Hypothesis and algorithms for the mesh generation are global # @@ -73,6 +74,7 @@ print "number of Edges in shell : ", len(subEdgeList) ### ---------------------------- SMESH -------------------------------------- +smesh.SetCurrentStudy(salome.myStudy) # ---- init a Mesh with the shell diff --git a/src/SMESH_SWIG/SMESH_box3_tetra.py b/src/SMESH_SWIG/SMESH_box3_tetra.py index fd1b3ef62..19eb230da 100644 --- a/src/SMESH_SWIG/SMESH_box3_tetra.py +++ b/src/SMESH_SWIG/SMESH_box3_tetra.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # Tetrahedrization of the geometry union of 3 boxes aligned where the middle # one has a race in common with the two others. # Hypothesis and algorithms for the mesh generation are global @@ -84,7 +85,7 @@ print "number of Edges in shell : ", len(subEdgeList) ### ---------------------------- SMESH -------------------------------------- - +smesh.SetCurrentStudy(salome.myStudy) # ---- init a Mesh with the shell diff --git a/src/SMESH_SWIG/SMESH_box_tetra.py b/src/SMESH_SWIG/SMESH_box_tetra.py index 279ae11ab..42bc55336 100644 --- a/src/SMESH_SWIG/SMESH_box_tetra.py +++ b/src/SMESH_SWIG/SMESH_box_tetra.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # Tetrahedrization of a simple box. Hypothesis and algorithms for # the mesh generation are global # @@ -45,6 +46,7 @@ print "number of Edges in box : ", len(subEdgeList) ### ---------------------------- SMESH -------------------------------------- +smesh.SetCurrentStudy(salome.myStudy) # ---- init a Mesh with the boxe diff --git a/src/SMESH_SWIG/SMESH_controls.py b/src/SMESH_SWIG/SMESH_controls.py index 41e561329..43c1b5874 100644 --- a/src/SMESH_SWIG/SMESH_controls.py +++ b/src/SMESH_SWIG/SMESH_controls.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_control.py # Author : Sergey LITONIN # Module : SMESH diff --git a/src/SMESH_SWIG/SMESH_demo_hexa2_upd.py b/src/SMESH_SWIG/SMESH_demo_hexa2_upd.py index f5f6d65e5..232f4efa9 100755 --- a/src/SMESH_SWIG/SMESH_demo_hexa2_upd.py +++ b/src/SMESH_SWIG/SMESH_demo_hexa2_upd.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + #============================================================================== # Info. # Bug (from script, bug) : SMESH_demo_hexa2_upd.py, PAL6781 @@ -124,6 +125,7 @@ for i in range(8): idEdgeZ.append(geompy.addToStudyInFather(vol,edgeZ[i],"EdgeZ"+str(i+1))) ### ---------------------------- SMESH -------------------------------------- +smesh.SetCurrentStudy(salome.myStudy) # ---- init a Mesh with the volume diff --git a/src/SMESH_SWIG/SMESH_fixation.py b/src/SMESH_SWIG/SMESH_fixation.py index bb406f035..ee6ae836a 100644 --- a/src/SMESH_SWIG/SMESH_fixation.py +++ b/src/SMESH_SWIG/SMESH_fixation.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_fix_volute.py # Author : Paul RASCLE, EDF # Module : SMESH diff --git a/src/SMESH_SWIG/SMESH_fixation_hexa.py b/src/SMESH_SWIG/SMESH_fixation_hexa.py index 6a73b38b8..e67021c5d 100644 --- a/src/SMESH_SWIG/SMESH_fixation_hexa.py +++ b/src/SMESH_SWIG/SMESH_fixation_hexa.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # Hexahedrization of the geometry generated by the Python script # SMESH_fixation.py # Hypothesis and algorithms for the mesh generation are global @@ -45,6 +46,7 @@ status = geompy.CheckShape(compshell) print " check status ", status ### ---------------------------- SMESH -------------------------------------- +smesh.SetCurrentStudy(salome.myStudy) # ---- init a Mesh with the compshell shape_mesh = salome.IDToObject( idcomp ) diff --git a/src/SMESH_SWIG/SMESH_fixation_netgen.py b/src/SMESH_SWIG/SMESH_fixation_netgen.py index 16295a5e5..789c90ebc 100644 --- a/src/SMESH_SWIG/SMESH_fixation_netgen.py +++ b/src/SMESH_SWIG/SMESH_fixation_netgen.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # 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 @@ -45,6 +46,7 @@ status = geompy.CheckShape(compshell) print " check status ", status ### ---------------------------- SMESH -------------------------------------- +smesh.SetCurrentStudy(salome.myStudy) print "-------------------------- create Mesh, algorithm, hypothesis" diff --git a/src/SMESH_SWIG/SMESH_fixation_tetra.py b/src/SMESH_SWIG/SMESH_fixation_tetra.py index 483cd666d..fa63ce0cb 100644 --- a/src/SMESH_SWIG/SMESH_fixation_tetra.py +++ b/src/SMESH_SWIG/SMESH_fixation_tetra.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # Tetrahedrization of the geometry generated by the Python script # SMESH_fixation.py # Hypothesis and algorithms for the mesh generation are global @@ -45,6 +46,7 @@ status = geompy.CheckShape(compshell) print " check status ", status ### ---------------------------- SMESH -------------------------------------- +smesh.SetCurrentStudy(salome.myStudy) # ---- init a Mesh with the compshell diff --git a/src/SMESH_SWIG/SMESH_flight_skin.py b/src/SMESH_SWIG/SMESH_flight_skin.py index 534bed16c..7ab3583b5 100644 --- a/src/SMESH_SWIG/SMESH_flight_skin.py +++ b/src/SMESH_SWIG/SMESH_flight_skin.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # Triangulation of the skin of the geometry from a Brep representing a plane # Hypothesis and algorithms for the mesh generation are global # @@ -55,6 +56,7 @@ print "number of Edges in flight : ", len(subEdgeList) ### ---------------------------- SMESH -------------------------------------- +smesh.SetCurrentStudy(salome.myStudy) # ---- init a Mesh with the shell shape_mesh = salome.IDToObject( idShape ) diff --git a/src/SMESH_SWIG/SMESH_freebord.py b/src/SMESH_SWIG/SMESH_freebord.py index 4c5fc646d..cc864aab8 100644 --- a/src/SMESH_SWIG/SMESH_freebord.py +++ b/src/SMESH_SWIG/SMESH_freebord.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + import salome import geompy import smesh @@ -41,6 +42,7 @@ idbox = geompy.addToStudy( aBox, "box" ) aBox = salome.IDToObject( idbox ) # Create mesh +smesh.SetCurrentStudy(salome.myStudy) mesh = smesh.Mesh(aBox, "Mesh_freebord") diff --git a/src/SMESH_SWIG/SMESH_hexaedre.py b/src/SMESH_SWIG/SMESH_hexaedre.py index 4345b08b8..6c1abaa26 100755 --- a/src/SMESH_SWIG/SMESH_hexaedre.py +++ b/src/SMESH_SWIG/SMESH_hexaedre.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + #============================================================================== # Info. # Bug (from script, bug) : hexaedre_modified.py, PAL6194, PAL7153 @@ -95,6 +96,7 @@ salome.sg.updateObjBrowser(1) # ----------------------------------------------------------------------------- print "-------------------------- mesh" +smesh.SetCurrentStudy(salome.myStudy) # ---- init a Mesh with the geom shape shape_mesh = blob diff --git a/src/SMESH_SWIG/SMESH_mechanic.py b/src/SMESH_SWIG/SMESH_mechanic.py index 46032383c..6b84327cc 100644 --- a/src/SMESH_SWIG/SMESH_mechanic.py +++ b/src/SMESH_SWIG/SMESH_mechanic.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_withHole.py # Author : Lucien PIGNOLONI # Module : SMESH @@ -120,6 +121,7 @@ name = geompy.SubShapeName( sub_face4, mechanic ) Id_SubFace4 = geompy.addToStudyInFather( mechanic, sub_face4, name ) # ---------------------------- SMESH -------------------------------------- +smesh.SetCurrentStudy(salome.myStudy) # -- Init -- shape_mesh = salome.IDToObject( Id_mechanic ) diff --git a/src/SMESH_SWIG/SMESH_mechanic_editor.py b/src/SMESH_SWIG/SMESH_mechanic_editor.py index 9ff002704..94c0719ff 100644 --- a/src/SMESH_SWIG/SMESH_mechanic_editor.py +++ b/src/SMESH_SWIG/SMESH_mechanic_editor.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_withHole.py # Author : Lucien PIGNOLONI # Module : SMESH @@ -118,6 +119,7 @@ name = geompy.SubShapeName( sub_face4, mechanic ) Id_SubFace4 = geompy.addToStudyInFather( mechanic, sub_face4, name ) # ---------------------------- SMESH -------------------------------------- +smesh.SetCurrentStudy(salome.myStudy) # -- Init -- shape_mesh = salome.IDToObject( Id_mechanic ) diff --git a/src/SMESH_SWIG/SMESH_mechanic_netgen.py b/src/SMESH_SWIG/SMESH_mechanic_netgen.py index 038e64e0b..21f787040 100644 --- a/src/SMESH_SWIG/SMESH_mechanic_netgen.py +++ b/src/SMESH_SWIG/SMESH_mechanic_netgen.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # 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 @@ -104,6 +105,7 @@ print "number of Faces in mechanic : ",len(subFaceList) print "number of Edges in mechanic : ",len(subEdgeList) ### ---------------------------- SMESH -------------------------------------- +smesh.SetCurrentStudy(salome.myStudy) print "-------------------------- create Mesh, algorithm, hypothesis" diff --git a/src/SMESH_SWIG/SMESH_mechanic_tetra.py b/src/SMESH_SWIG/SMESH_mechanic_tetra.py index 1307067df..c72428bff 100644 --- a/src/SMESH_SWIG/SMESH_mechanic_tetra.py +++ b/src/SMESH_SWIG/SMESH_mechanic_tetra.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_withHole.py # Author : Lucien PIGNOLONI # Module : SMESH @@ -104,6 +105,7 @@ print "number of Faces in mechanic : ",len(subFaceList) print "number of Edges in mechanic : ",len(subEdgeList) ### ---------------------------- SMESH -------------------------------------- +smesh.SetCurrentStudy(salome.myStudy) shape_mesh = salome.IDToObject( Id_mechanic ) diff --git a/src/SMESH_SWIG/SMESH_reg.py b/src/SMESH_SWIG/SMESH_reg.py index 92005898d..06dd5706c 100644 --- a/src/SMESH_SWIG/SMESH_reg.py +++ b/src/SMESH_SWIG/SMESH_reg.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_reg.py # Module : SMESH # @@ -58,7 +59,7 @@ salome.sg.updateObjBrowser(1); # ---- launch SMESH smeshgui = salome.ImportComponentGUI("SMESH") smeshgui.Init(salome.myStudyId) - +smesh.SetCurrentStudy(salome.myStudy) # ---- Creating meshes diff --git a/src/SMESH_SWIG/SMESH_shared_modules.py b/src/SMESH_SWIG/SMESH_shared_modules.py index 594832b32..9db144125 100644 --- a/src/SMESH_SWIG/SMESH_shared_modules.py +++ b/src/SMESH_SWIG/SMESH_shared_modules.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + """ """ diff --git a/src/SMESH_SWIG/SMESH_test.py b/src/SMESH_SWIG/SMESH_test.py index da4eda843..a80121aa4 100644 --- a/src/SMESH_SWIG/SMESH_test.py +++ b/src/SMESH_SWIG/SMESH_test.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses # File : SMESH_test.py # Module : SMESH @@ -56,6 +57,7 @@ ide = geompy.addToStudyInFather(face, edge, name) # ---- SMESH +smesh.SetCurrentStudy(salome.myStudy) box = salome.IDToObject(idb) mesh = smesh.Mesh(box, "Meshbox") @@ -124,11 +126,17 @@ for a in log: elif comType == 2: for i in range(a.number): ind = a.indexes[ii] + print ind ii = ii+1 + print ii i1 = a.indexes[ii] ii = ii+1 i2 = a.indexes[ii] + print i2 ii = ii+1 + print "ii", ii i3 = a.indexes[ii] + print i3 + #ii = ii+1 ii = ii+1 print "AddTriangle %i - %i %i %i" % (ind, i1, i2, i3) diff --git a/src/SMESH_SWIG/SMESH_test0.py b/src/SMESH_SWIG/SMESH_test0.py index 407d25ead..3a0f73c23 100644 --- a/src/SMESH_SWIG/SMESH_test0.py +++ b/src/SMESH_SWIG/SMESH_test0.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_test0.py # Module : SMESH # diff --git a/src/SMESH_SWIG/SMESH_test1.py b/src/SMESH_SWIG/SMESH_test1.py index cd68018d2..e5f964768 100644 --- a/src/SMESH_SWIG/SMESH_test1.py +++ b/src/SMESH_SWIG/SMESH_test1.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_test1.py # Module : SMESH # @@ -27,7 +28,6 @@ import salome import geompy import smesh - # ---- define a box box = geompy.MakeBox(0., 0., 0., 100., 200., 300.) @@ -60,6 +60,8 @@ idedge = geompy.addToStudyInFather(face, edge, name) # ---- SMESH +smesh.SetCurrentStudy(salome.myStudy) + # ---- Init a Mesh with the box mesh = smesh.Mesh(box, "Meshbox") diff --git a/src/SMESH_SWIG/SMESH_test1_AndDisplay.py b/src/SMESH_SWIG/SMESH_test1_AndDisplay.py index c87694894..cedeabc92 100644 --- a/src/SMESH_SWIG/SMESH_test1_AndDisplay.py +++ b/src/SMESH_SWIG/SMESH_test1_AndDisplay.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_test1.py # Module : SMESH # @@ -60,6 +61,8 @@ idedge = geompy.addToStudyInFather(face, edge, name) # ---- SMESH +smesh.SetCurrentStudy(salome.myStudy) + # ---- Init a Mesh with the box mesh = smesh.Mesh(box, "Meshbox") diff --git a/src/SMESH_SWIG/SMESH_test2.py b/src/SMESH_SWIG/SMESH_test2.py index 01c912973..cc3d1a2e8 100644 --- a/src/SMESH_SWIG/SMESH_test2.py +++ b/src/SMESH_SWIG/SMESH_test2.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_test2.py # Module : SMESH # diff --git a/src/SMESH_SWIG/SMESH_test3.py b/src/SMESH_SWIG/SMESH_test3.py index a2c771b80..1a02159ed 100644 --- a/src/SMESH_SWIG/SMESH_test3.py +++ b/src/SMESH_SWIG/SMESH_test3.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_test3.py # Module : SMESH #import salome diff --git a/src/SMESH_SWIG/SMESH_test4.py b/src/SMESH_SWIG/SMESH_test4.py index 181833934..f5357c5e7 100755 --- a/src/SMESH_SWIG/SMESH_test4.py +++ b/src/SMESH_SWIG/SMESH_test4.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + import salome import geompy import smesh @@ -40,6 +41,7 @@ face = salome.IDToObject(idface) # ---- SMESH +smesh.SetCurrentStudy(salome.myStudy) mesh = smesh.Mesh(box, "Meshbox") # Set 1D algorithm/hypotheses to mesh diff --git a/src/SMESH_SWIG/SMESH_test5.py b/src/SMESH_SWIG/SMESH_test5.py index 616f0e39d..844c91511 100644 --- a/src/SMESH_SWIG/SMESH_test5.py +++ b/src/SMESH_SWIG/SMESH_test5.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : SMESH_test5.py # Module : SMESH # @@ -30,6 +31,8 @@ import CORBA import os import os.path +smesh.SetCurrentStudy(salome.myStudy) + def SetSObjName(theSObj,theName) : ok, anAttr = theSObj.FindAttribute("AttributeName") if ok: diff --git a/src/SMESH_SWIG/batchmode_mefisto.py b/src/SMESH_SWIG/batchmode_mefisto.py index 0e768a4d1..a4bc7ecf5 100644 --- a/src/SMESH_SWIG/batchmode_mefisto.py +++ b/src/SMESH_SWIG/batchmode_mefisto.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + import os import re diff --git a/src/SMESH_SWIG/batchmode_smesh.py b/src/SMESH_SWIG/batchmode_smesh.py index eb2c4e1fe..2b3e64bc4 100644 --- a/src/SMESH_SWIG/batchmode_smesh.py +++ b/src/SMESH_SWIG/batchmode_smesh.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : batchmode_smesh.py # Author : Oksana TCHEBANOVA # Module : SMESH @@ -33,6 +34,7 @@ import SMESH modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog") smesh = lcc.FindOrLoadComponent("FactoryServer", "SMESH") +smesh.SetCurrentStudy(myStudy) myStudyBuilder = myStudy.NewBuilder() if myStudyBuilder is None: diff --git a/src/SMESH_SWIG/ex00_all.py b/src/SMESH_SWIG/ex00_all.py index 0ef515b9c..0977fa202 100644 --- a/src/SMESH_SWIG/ex00_all.py +++ b/src/SMESH_SWIG/ex00_all.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ================================== # Load all examples # ----------------- diff --git a/src/SMESH_SWIG/ex01_cube2build.py b/src/SMESH_SWIG/ex01_cube2build.py index 34bb6e39d..888a70642 100644 --- a/src/SMESH_SWIG/ex01_cube2build.py +++ b/src/SMESH_SWIG/ex01_cube2build.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -287,6 +288,8 @@ piece_id = addToStudy(piece, "ex01_cube2build") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create hexahedrical mesh on piece # --------------------------------- diff --git a/src/SMESH_SWIG/ex02_cube2primitive.py b/src/SMESH_SWIG/ex02_cube2primitive.py index 885d8722a..3890e97d4 100644 --- a/src/SMESH_SWIG/ex02_cube2primitive.py +++ b/src/SMESH_SWIG/ex02_cube2primitive.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -98,6 +99,8 @@ piece_id = addToStudy(piece, "ex02_cube2primitive") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create hexahedrical mesh on piece # --------------------------------- diff --git a/src/SMESH_SWIG/ex03_cube2partition.py b/src/SMESH_SWIG/ex03_cube2partition.py index d620a6411..6ca0bd7a3 100644 --- a/src/SMESH_SWIG/ex03_cube2partition.py +++ b/src/SMESH_SWIG/ex03_cube2partition.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -85,6 +86,8 @@ piece_id = addToStudy(piece, "ex03_cube2partition") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create hexahedrical mesh on piece # --------------------------------- diff --git a/src/SMESH_SWIG/ex04_cube5tetraHexa.py b/src/SMESH_SWIG/ex04_cube5tetraHexa.py index 02f6f2c87..ae3ca45f5 100644 --- a/src/SMESH_SWIG/ex04_cube5tetraHexa.py +++ b/src/SMESH_SWIG/ex04_cube5tetraHexa.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -66,6 +67,8 @@ piece_id = addToStudy(piece, "ex04_cube5tetraHexa") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create a hexahedral mesh # ------------------------ diff --git a/src/SMESH_SWIG/ex05_hole1build.py b/src/SMESH_SWIG/ex05_hole1build.py index 31793da2e..4b3c77581 100644 --- a/src/SMESH_SWIG/ex05_hole1build.py +++ b/src/SMESH_SWIG/ex05_hole1build.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -124,6 +125,8 @@ piece_id = addToStudy(piece, "ex05_hole1build") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create a hexahedral mesh # ------------------------ diff --git a/src/SMESH_SWIG/ex06_hole1boolean.py b/src/SMESH_SWIG/ex06_hole1boolean.py index acdc7f5e9..3c5054590 100644 --- a/src/SMESH_SWIG/ex06_hole1boolean.py +++ b/src/SMESH_SWIG/ex06_hole1boolean.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -118,6 +119,8 @@ piece_id = addToStudy(piece, "ex06_hole1boolean") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create a hexahedral mesh # ------------------------ diff --git a/src/SMESH_SWIG/ex07_hole1partition.py b/src/SMESH_SWIG/ex07_hole1partition.py index 4ca5c481d..6ef4f6c3d 100644 --- a/src/SMESH_SWIG/ex07_hole1partition.py +++ b/src/SMESH_SWIG/ex07_hole1partition.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -82,6 +83,8 @@ piece_id = addToStudy(piece, "ex07_hole1partition") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create a hexahedral mesh # ------------------------ diff --git a/src/SMESH_SWIG/ex08_hole2build.py b/src/SMESH_SWIG/ex08_hole2build.py index cb417562e..3e6e01b99 100644 --- a/src/SMESH_SWIG/ex08_hole2build.py +++ b/src/SMESH_SWIG/ex08_hole2build.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -115,6 +116,8 @@ piece_id = addToStudy(piece, "ex08_hole2build") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create a hexahedral mesh # ------------------------ diff --git a/src/SMESH_SWIG/ex09_grid4build.py b/src/SMESH_SWIG/ex09_grid4build.py index 4fd9c6db2..be1c47d3d 100644 --- a/src/SMESH_SWIG/ex09_grid4build.py +++ b/src/SMESH_SWIG/ex09_grid4build.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -118,6 +119,8 @@ piece_id = addToStudy(piece, "ex09_grid4build") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create a hexahedral mesh # ------------------------ diff --git a/src/SMESH_SWIG/ex10_grid4geometry.py b/src/SMESH_SWIG/ex10_grid4geometry.py index f9a8c399b..3c0d92706 100644 --- a/src/SMESH_SWIG/ex10_grid4geometry.py +++ b/src/SMESH_SWIG/ex10_grid4geometry.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -80,6 +81,8 @@ piece_id = addToStudy(piece, "ex10_grid4geometry") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create a hexahedral mesh # ------------------------ diff --git a/src/SMESH_SWIG/ex11_grid3partition.py b/src/SMESH_SWIG/ex11_grid3partition.py index 1ed38c03b..6b2407af9 100644 --- a/src/SMESH_SWIG/ex11_grid3partition.py +++ b/src/SMESH_SWIG/ex11_grid3partition.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -101,6 +102,8 @@ piece_id = addToStudy(piece, "ex11_grid3partition") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create a hexahedral mesh # ------------------------ diff --git a/src/SMESH_SWIG/ex12_grid17partition.py b/src/SMESH_SWIG/ex12_grid17partition.py index 3499a3e0b..d4ecdc1d3 100644 --- a/src/SMESH_SWIG/ex12_grid17partition.py +++ b/src/SMESH_SWIG/ex12_grid17partition.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -116,6 +117,8 @@ piece_id = addToStudy(piece, "ex12_grid17partition") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create a hexahedral mesh # ------------------------ diff --git a/src/SMESH_SWIG/ex13_hole1partial.py b/src/SMESH_SWIG/ex13_hole1partial.py index 609f48052..c11080657 100644 --- a/src/SMESH_SWIG/ex13_hole1partial.py +++ b/src/SMESH_SWIG/ex13_hole1partial.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ================================== # from geompy import * @@ -214,6 +215,8 @@ piece_id = addToStudy(piece, "ex13_hole1partial") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create a mesh # ------------- diff --git a/src/SMESH_SWIG/ex14_cyl1holed.py b/src/SMESH_SWIG/ex14_cyl1holed.py index 1c89971fc..7f1b1592f 100644 --- a/src/SMESH_SWIG/ex14_cyl1holed.py +++ b/src/SMESH_SWIG/ex14_cyl1holed.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -99,6 +100,8 @@ piece_id = addToStudy(piece, "ex14_cyl1holed") # Maillage # ======== +smesh.SetCurrentStudy(salome.myStudy) + # Creer un maillage hexahedrique # ------------------------------ diff --git a/src/SMESH_SWIG/ex15_cyl2geometry.py b/src/SMESH_SWIG/ex15_cyl2geometry.py index 72a0a4b92..8231b0490 100644 --- a/src/SMESH_SWIG/ex15_cyl2geometry.py +++ b/src/SMESH_SWIG/ex15_cyl2geometry.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -168,7 +169,7 @@ cpd = cpd + r_element # Compound # -------- -piece = RemoveExtraEdges(MakeCompound(cpd), 0) +piece = RemoveExtraEdges(MakeCompound(cpd), True) # Ajouter la piece dans l'etude # ----------------------------- @@ -178,6 +179,8 @@ piece_id = addToStudy(piece, "ex15_cyl2geometry") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create a hexahedral mesh # ------------------------ diff --git a/src/SMESH_SWIG/ex16_cyl2complementary.py b/src/SMESH_SWIG/ex16_cyl2complementary.py index 4a3adf337..b46d11241 100644 --- a/src/SMESH_SWIG/ex16_cyl2complementary.py +++ b/src/SMESH_SWIG/ex16_cyl2complementary.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -108,6 +109,8 @@ piece_id = addToStudy(piece, "ex16_cyl2complementary") # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create a hexahedral mesh # ------------------------ diff --git a/src/SMESH_SWIG/ex17_dome1.py b/src/SMESH_SWIG/ex17_dome1.py index c94136b20..911fdce17 100644 --- a/src/SMESH_SWIG/ex17_dome1.py +++ b/src/SMESH_SWIG/ex17_dome1.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -81,6 +82,8 @@ piece_id = addToStudy(piece, "ex17_dome1") # Maillage # ======== +smesh.SetCurrentStudy(salome.myStudy) + # Maillage hexahedrique # --------------------- diff --git a/src/SMESH_SWIG/ex18_dome2.py b/src/SMESH_SWIG/ex18_dome2.py index fc78722d7..6a614064d 100644 --- a/src/SMESH_SWIG/ex18_dome2.py +++ b/src/SMESH_SWIG/ex18_dome2.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # from geompy import * @@ -118,6 +119,8 @@ piece_id = addToStudy(piece, "ex18_dome2") # Maillage # ======== +smesh.SetCurrentStudy(salome.myStudy) + # Maillage hexahedrique # --------------------- diff --git a/src/SMESH_SWIG/ex19_sphereINcube.py b/src/SMESH_SWIG/ex19_sphereINcube.py index 53b6e2ae6..043a2e312 100644 --- a/src/SMESH_SWIG/ex19_sphereINcube.py +++ b/src/SMESH_SWIG/ex19_sphereINcube.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ================================== # from geompy import * @@ -168,6 +169,8 @@ UnionList(groupe, groupe_sphere) # Meshing # ======= +smesh.SetCurrentStudy(salome.myStudy) + # Create a hexahedral mesh # ------------------------ diff --git a/src/SMESH_SWIG/ex21_lamp.py b/src/SMESH_SWIG/ex21_lamp.py index b7a511d4d..3bb7272f3 100644 --- a/src/SMESH_SWIG/ex21_lamp.py +++ b/src/SMESH_SWIG/ex21_lamp.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ================================== # from geompy import * @@ -93,6 +94,8 @@ UnionIDs(group, faces) # Create a mesh # ============= +smesh.SetCurrentStudy(salome.myStudy) + # Define a mesh on a geometry # --------------------------- diff --git a/src/SMESH_SWIG/ex24_cylinder.py b/src/SMESH_SWIG/ex24_cylinder.py index 2e7b52d82..6dd999cf5 100644 --- a/src/SMESH_SWIG/ex24_cylinder.py +++ b/src/SMESH_SWIG/ex24_cylinder.py @@ -1,8 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -20,13 +17,14 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ================================== # import math import geompy import smesh - +import salome geo = geompy # Parameters @@ -98,6 +96,8 @@ geo.DifferenceList(group_1, [group_1_box]) # Mesh the blocks with hexahedral # ------------------------------- +smesh.SetCurrentStudy(salome.myStudy) + def discretize(x, y, z, n, s=blocks): p = geo.MakeVertex(x, y, z) e = geo.GetEdgeNearPoint(s, p) diff --git a/src/SMESH_SWIG/ex29_refine.py b/src/SMESH_SWIG/ex29_refine.py index 2f378a1b1..ad6425781 100644 --- a/src/SMESH_SWIG/ex29_refine.py +++ b/src/SMESH_SWIG/ex29_refine.py @@ -1,8 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -20,6 +17,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ======================================= # Procedure that take a triangulation and split all triangles in 4 others triangles # diff --git a/src/SMESH_SWIG/ex30_groupsOp.py b/src/SMESH_SWIG/ex30_groupsOp.py index f1a857d9a..4dfff9ffe 100755 --- a/src/SMESH_SWIG/ex30_groupsOp.py +++ b/src/SMESH_SWIG/ex30_groupsOp.py @@ -1,4 +1,22 @@ # -*- coding: iso-8859-1 -*- +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# 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 sys import salome @@ -16,7 +34,7 @@ global Face_1 Face_1 = geompy.MakeFaceHW(100, 100, 1) geompy.addToStudy( Face_1, "Face_1" ) -#smesh.smesh.SetCurrentStudy(aStudyId) +smesh.SetCurrentStudy(salome.myStudy) import StdMeshers pattern = smesh.GetPattern() Mesh_1 = smesh.Mesh(Face_1) diff --git a/src/SMESH_SWIG/ex30_tepal.py b/src/SMESH_SWIG/ex30_tepal.py index 61a035022..5972e7f2d 100644 --- a/src/SMESH_SWIG/ex30_tepal.py +++ b/src/SMESH_SWIG/ex30_tepal.py @@ -1,7 +1,25 @@ # -*- coding: iso-8859-1 -*- -# CEA/LGLS 2008, Christian Van Wambeke (CEA/LGLS), Francis KLOSS (OCC) -# ==================================================================== +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# ==================================================================== +# import os import geompy @@ -28,6 +46,8 @@ geompy.addToStudy(cylinder, "Cylinder") # Define a mesh on a geometry # --------------------------- +smesh.SetCurrentStudy(salome.myStudy) + m = smesh.Mesh(cylinder) # 2D mesh with BLSURF diff --git a/src/SMESH_SWIG/ex31_dimGroup.py b/src/SMESH_SWIG/ex31_dimGroup.py index 7f4600d3f..56d74c6ce 100755 --- a/src/SMESH_SWIG/ex31_dimGroup.py +++ b/src/SMESH_SWIG/ex31_dimGroup.py @@ -1,4 +1,22 @@ # -*- coding: iso-8859-1 -*- +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# 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 sys import salome @@ -18,7 +36,7 @@ global Box_1 Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200) geompy.addToStudy( Box_1, "Box_1" ) -#smesh.smesh.SetCurrentStudy(theStudy) +smesh.SetCurrentStudy(salome.myStudy) import StdMeshers Mesh_1 = smesh.Mesh(Box_1) Regular_1D = Mesh_1.Segment() diff --git a/src/SMESH_SWIG/smesh.py b/src/SMESH_SWIG/smesh.py index 217439fa5..a3188f96e 100644 --- a/src/SMESH_SWIG/smesh.py +++ b/src/SMESH_SWIG/smesh.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : smesh.py # Author : Francis KLOSS, OCC # Module : SMESH diff --git a/src/SMESH_SWIG/smeshDC.py b/src/SMESH_SWIG/smeshDC.py index 4789415c9..4cde48b12 100644 --- a/src/SMESH_SWIG/smeshDC.py +++ b/src/SMESH_SWIG/smeshDC.py @@ -1,8 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -20,6 +17,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # File : smesh.py # Author : Francis KLOSS, OCC # Module : SMESH @@ -99,6 +97,7 @@ from SMESH import * import StdMeshers import SALOME +import SALOMEDS # import NETGENPlugin module if possible noNETGENPlugin = 0 @@ -162,6 +161,8 @@ Hexa = 8 Hexotic = 9 BLSURF = 10 GHS3DPRL = 11 +QUADRANGLE = 0 +RADIAL_QUAD = 1 # MirrorType enumeration POINT = SMESH_MeshEditor.POINT @@ -194,6 +195,10 @@ DefaultSize, DefaultGeom, Custom = 0,0,1 PrecisionConfusion = 1e-07 +# TopAbs_State enumeration +[TopAbs_IN, TopAbs_OUT, TopAbs_ON, TopAbs_UNKNOWN] = range(4) + + ## Converts an angle from degrees to radians def DegreesToRadians(AngleInDegrees): from math import pi @@ -391,13 +396,33 @@ NO_NAME = "NoName" ## Gets object name def GetName(obj): - ior = salome.orb.object_to_string(obj) - sobj = salome.myStudy.FindObjectIOR(ior) - if sobj is None: - return NO_NAME - else: - attr = sobj.FindAttribute("AttributeName")[1] - return attr.Value() + if obj: + # object not null + if isinstance(obj, SALOMEDS._objref_SObject): + # study object + return obj.GetName() + ior = salome.orb.object_to_string(obj) + if ior: + # CORBA object + studies = salome.myStudyManager.GetOpenStudies() + for sname in studies: + s = salome.myStudyManager.GetStudyByName(sname) + if not s: continue + sobj = s.FindObjectIOR(ior) + if not sobj: continue + return sobj.GetName() + if hasattr(obj, "GetName"): + # unknown CORBA object, having GetName() method + return obj.GetName() + else: + # unknown CORBA object, no GetName() method + return NO_NAME + pass + if hasattr(obj, "GetName"): + # unknown non-CORBA object, having GetName() method + return obj.GetName() + pass + raise RuntimeError, "Null or invalid object" ## Prints error message if a hypothesis was not assigned. def TreatHypoStatus(status, hypName, geomName, isAlgo): @@ -432,10 +457,12 @@ def TreatHypoStatus(status, hypName, geomName, isAlgo): return hypName = '"' + hypName + '"' geomName= '"' + geomName+ '"' - if status < HYP_UNKNOWN_FATAL: + if status < HYP_UNKNOWN_FATAL and not geomName =='""': print hypName, "was assigned to", geomName,"but", reason - else: + elif not geomName == '""': print hypName, "was not assigned to",geomName,":", reason + else: + print hypName, "was not assigned:", reason pass ## Check meshing plugin availability @@ -1031,17 +1058,20 @@ class Mesh: if (isinstance(algo, geompyDC.GEOM._objref_GEOM_Object)): geom = algo algo = MEFISTO - return Mesh_Triangle(self, algo, geom) ## Creates a quadrangle 2D algorithm for faces. # If the optional \a geom parameter is not set, this algorithm is global. # \n Otherwise, this algorithm defines a submesh based on \a geom subshape. # @param geom If defined, the subshape to be meshed (GEOM_Object) + # @param algo values are: smesh.QUADRANGLE || smesh.RADIAL_QUAD # @return an instance of Mesh_Quadrangle algorithm # @ingroup l3_algos_basic - def Quadrangle(self, geom=0): - return Mesh_Quadrangle(self, geom) + def Quadrangle(self, geom=0, algo=QUADRANGLE): + if algo==RADIAL_QUAD: + return Mesh_RadialQuadrangle1D2D(self,geom) + else: + return Mesh_Quadrangle(self, geom) ## Creates a tetrahedron 3D algorithm for solids. # The parameter \a algo permits to choose the algorithm: NETGEN or GHS3D @@ -1153,8 +1183,62 @@ class Mesh: print "Mesh computation failed, exception caught:" traceback.print_exc() if True:#not ok: - errors = self.smeshpyD.GetAlgoState( self.mesh, geom ) allReasons = "" + + # Treat compute errors + computeErrors = self.smeshpyD.GetComputeErrors( self.mesh, geom ) + for err in computeErrors: + shapeText = "" + if self.mesh.HasShapeToMesh(): + try: + mainIOR = salome.orb.object_to_string(geom) + for sname in salome.myStudyManager.GetOpenStudies(): + s = salome.myStudyManager.GetStudyByName(sname) + if not s: continue + mainSO = s.FindObjectIOR(mainIOR) + if not mainSO: continue + subIt = s.NewChildIterator(mainSO) + while subIt.More(): + subSO = subIt.Value() + subIt.Next() + obj = subSO.GetObject() + if not obj: continue + go = obj._narrow( geompyDC.GEOM._objref_GEOM_Object ) + if not go: continue + ids = go.GetSubShapeIndices() + if len(ids) == 1 and ids[0] == err.subShapeID: + shapeText = ' on "%s"' % subSO.GetName() + break + if not shapeText: + shape = self.geompyD.GetSubShape( geom, [err.subShapeID]) + if shape: + shapeText = " on %s #%s" % (shape.GetShapeType(), err.subShapeID) + else: + shapeText = " on subshape #%s" % (err.subShapeID) + except: + shapeText = " on subshape #%s" % (err.subShapeID) + errText = "" + stdErrors = ["OK", #COMPERR_OK + "Invalid input mesh", #COMPERR_BAD_INPUT_MESH + "std::exception", #COMPERR_STD_EXCEPTION + "OCC exception", #COMPERR_OCC_EXCEPTION + "SALOME exception", #COMPERR_SLM_EXCEPTION + "Unknown exception", #COMPERR_EXCEPTION + "Memory allocation problem", #COMPERR_MEMORY_PB + "Algorithm failed", #COMPERR_ALGO_FAILED + "Unexpected geometry"]#COMPERR_BAD_SHAPE + if err.code > 0: + if err.code < len(stdErrors): errText = stdErrors[err.code] + else: + errText = "code %s" % -err.code + if errText: errText += ". " + errText += err.comment + if allReasons != "":allReasons += "\n" + allReasons += '"%s" failed%s. Error: %s' %(err.algoName, shapeText, errText) + pass + + # Treat hyp errors + errors = self.smeshpyD.GetAlgoState( self.mesh, geom ) for err in errors: if err.isGlobalAlgo: glob = "global" @@ -1180,9 +1264,7 @@ class Mesh: reason = "For unknown reason."+\ " Revise Mesh.Compute() implementation in smeshDC.py!" pass - if allReasons != "": - allReasons += "\n" - pass + if allReasons != "":allReasons += "\n" allReasons += reason pass if allReasons != "": @@ -1201,6 +1283,18 @@ class Mesh: pass return ok + ## Return submesh objects list in meshing order + # @return list of list of submesh objects + # @ingroup l2_construct + def GetMeshOrder(self): + return self.mesh.GetMeshOrder() + + ## Return submesh objects list in meshing order + # @return list of list of submesh objects + # @ingroup l2_construct + def SetMeshOrder(self, submeshes): + return self.mesh.SetMeshOrder(submeshes) + ## Removes all nodes and elements # @ingroup l2_construct def Clear(self): @@ -1271,7 +1365,11 @@ class Mesh: pass status = self.mesh.AddHypothesis(geom, hyp) isAlgo = hyp._narrow( SMESH_Algo ) - TreatHypoStatus( status, GetName( hyp ), GetName( geom ), isAlgo ) + hyp_name = GetName( hyp ) + geom_name = "" + if geom: + geom_name = GetName( geom ) + TreatHypoStatus( status, hyp_name, geom_name, isAlgo ) return status ## Unassigns a hypothesis @@ -1876,6 +1974,12 @@ class Mesh: def GetElementType(self, id, iselem): return self.mesh.GetElementType(id, iselem) + ## Returns the geometric type of mesh element + # @return the value from SMESH::EntityType enumeration + # @ingroup l1_meshinfo + def GetElementGeomType(self, id): + return self.mesh.GetElementGeomType(id) + ## Returns the list of submesh elements IDs # @param Shape a geom object(subshape) IOR # Shape must be the subshape of a ShapeToMesh() @@ -1999,6 +2103,16 @@ class Mesh: def ElemNbFaces(self, id): return self.mesh.ElemNbFaces(id) + ## Returns nodes of given face (counted from zero) for given volumic element. + # @ingroup l1_meshinfo + def GetElemFaceNodes(self,elemId, faceIndex): + return self.mesh.GetElemFaceNodes(elemId, faceIndex) + + ## Returns an element based on all given nodes. + # @ingroup l1_meshinfo + def FindElementByNodes(self,nodes): + return self.mesh.FindElementByNodes(nodes) + ## Returns true if the given element is a polygon # @ingroup l1_meshinfo def IsPoly(self, id): @@ -2241,6 +2355,11 @@ class Mesh: def FindElementsByPoint(self, x, y, z, elementType = SMESH.ALL): return self.editor.FindElementsByPoint(x, y, z, elementType) + # Return point state in a closed 2D mesh in terms of TopAbs_State enumeration. + # TopAbs_UNKNOWN state means that either mesh is wrong or the analysis fails. + + def GetPointState(self, x, y, z): + return self.editor.GetPointState(x, y, z) ## Finds the node closest to a point and moves it to a point location # @param x the X coordinate of a point @@ -2373,6 +2492,17 @@ class Mesh: def BestSplit (self, IDOfQuad, theCriterion): return self.editor.BestSplit(IDOfQuad, self.smeshpyD.GetFunctor(theCriterion)) + ## Splits volumic elements into tetrahedrons + # @param elemIDs either list of elements or mesh or group or submesh + # @param method flags passing splitting method: + # 1 - split the hexahedron into 5 tetrahedrons + # 2 - split the hexahedron into 6 tetrahedrons + # @ingroup l2_modif_cutquadr + def SplitVolumesIntoTetra(self, elemIDs, method=1 ): + if isinstance( elemIDs, Mesh ): + elemIDs = elemIDs.GetMesh() + self.editor.SplitVolumesIntoTetra(elemIDs, method) + ## Splits quadrangle faces near triangular facets of volumes # # @ingroup l1_auxiliary @@ -3227,6 +3357,51 @@ class Mesh: mesh.SetParameters(Parameters) return Mesh( self.smeshpyD, self.geompyD, mesh ) + + + ## Scales the object + # @param theObject - the object to translate (mesh, submesh, or group) + # @param thePoint - base point for scale + # @param theScaleFact - scale factors for axises + # @param Copy - allows copying the translated elements + # @param MakeGroups - forces the generation of new groups from existing + # ones (if Copy) + # @return list of created groups (SMESH_GroupBase) if MakeGroups=True, + # empty list otherwise + def Scale(self, theObject, thePoint, theScaleFact, Copy, MakeGroups=False): + if ( isinstance( theObject, Mesh )): + theObject = theObject.GetMesh() + if ( isinstance( theObject, list )): + theObject = self.editor.MakeIDSource(theObject) + + thePoint, Parameters = ParsePointStruct(thePoint) + self.mesh.SetParameters(Parameters) + + if Copy and MakeGroups: + return self.editor.ScaleMakeGroups(theObject, thePoint, theScaleFact) + self.editor.Scale(theObject, thePoint, theScaleFact, Copy) + return [] + + ## Creates a new mesh from the translated object + # @param theObject - the object to translate (mesh, submesh, or group) + # @param thePoint - base point for scale + # @param theScaleFact - scale factors for axises + # @param MakeGroups - forces the generation of new groups from existing ones + # @param NewMeshName - the name of the newly created mesh + # @return instance of Mesh class + def ScaleMakeMesh(self, theObject, thePoint, theScaleFact, MakeGroups=False, NewMeshName=""): + if (isinstance(theObject, Mesh)): + theObject = theObject.GetMesh() + if ( isinstance( theObject, list )): + theObject = self.editor.MakeIDSource(theObject) + + mesh = self.editor.ScaleMakeMesh(theObject, thePoint, theScaleFact, + MakeGroups, NewMeshName) + #mesh.SetParameters(Parameters) + return Mesh( self.smeshpyD, self.geompyD, mesh ) + + + ## Rotates the elements # @param IDsOfElements list of elements ids # @param Axis the axis of rotation (AxisStruct or geom line) @@ -3451,7 +3626,7 @@ class Mesh: ## Creates a hole in a mesh by doubling the nodes of some particular elements # This method provided for convenience works as DoubleNodes() described above. - # @param theNodes identifiers of node to be doubled + # @param theNodeId identifiers of node to be doubled # @param theModifiedElems identifiers of elements to be updated # @return TRUE if operation has been completed successfully, FALSE otherwise # @ingroup l2_modif_edit @@ -3518,7 +3693,7 @@ class Mesh: # The replicated nodes should be associated to affected elements. # @ingroup l2_modif_edit def DoubleNodeElemGroupInRegion(self, theElems, theNodesNot, theShape): - return self.editor.DoubleNodeElemGroup(theElems, theNodesNot, theShape) + return self.editor.DoubleNodeElemGroupInRegion(theElems, theNodesNot, theShape) ## Creates a hole in a mesh by doubling the nodes of some particular elements # This method provided for convenience works as DoubleNodes() described above. @@ -3685,19 +3860,23 @@ class Mesh_Algorithm: raise RuntimeError, "Attemp to create " + algo + " algoritm on None shape" self.mesh = mesh piece = mesh.geom + name = "" if not geom: self.geom = piece else: self.geom = geom - name = GetName(geom) - if name==NO_NAME: + try: + name = GetName(geom) + pass + except: name = mesh.geompyD.SubShapeName(geom, piece) mesh.geompyD.addToStudyInFather(piece, geom, name) + pass self.subm = mesh.mesh.GetSubMesh(geom, algo.GetName()) self.algo = algo status = mesh.mesh.AddHypothesis(self.geom, self.algo) - TreatHypoStatus( status, algo.GetName(), GetName(self.geom), True ) + TreatHypoStatus( status, algo.GetName(), name, True ) def CompareHyp (self, hyp, args): print "CompareHyp is not implemented for ", self.__class__.__name__, ":", hyp.GetName() @@ -3902,10 +4081,13 @@ class Mesh_Segment(Mesh_Algorithm): def FixedPoints1D(self, points, nbSegs=[1], reversedEdges=[], UseExisting=0): if not isinstance(reversedEdges,list): #old version script, before adding reversedEdges reversedEdges, UseExisting = [], reversedEdges + if reversedEdges and isinstance( reversedEdges[0], geompyDC.GEOM._objref_GEOM_Object ): + for i in range( len( reversedEdges )): + reversedEdges[i] = self.mesh.geompyD.GetSubShapeID(self.mesh.geom, reversedEdges[i] ) entry = self.MainShapeEntry() hyp = self.Hypothesis("FixedPoints1D", [points, nbSegs, reversedEdges, entry], UseExisting=UseExisting, - CompareMethod=self.CompareArithmetic1D) + CompareMethod=self.CompareFixedPoints1D) hyp.SetPoints(points) hyp.SetNbSegments(nbSegs) hyp.SetReversedEdges(reversedEdges) @@ -4014,11 +4196,14 @@ class Mesh_Segment(Mesh_Algorithm): ### 0D algorithm if self.geom is None: raise RuntimeError, "Attemp to create SegmentAroundVertex_0D algoritm on None shape" - name = GetName(self.geom) - if name == NO_NAME: + try: + name = GetName(self.geom) + pass + except: piece = self.mesh.geom name = self.mesh.geompyD.SubShapeName(self.geom, piece) self.mesh.geompyD.addToStudyInFather(piece, self.geom, name) + pass algo = self.FindAlgorithm("SegmentAroundVertex_0D", self.mesh.smeshpyD) if algo is None: algo = self.mesh.smeshpyD.CreateHypothesis("SegmentAroundVertex_0D", "libStdMeshersEngine.so") @@ -4415,6 +4600,25 @@ class Mesh_Quadrangle(Mesh_Algorithm): CompareMethod=self.CompareEqualHyp) return hyp + ## Defines "QuadrangleParams" hypothesis + # @param vertex: vertex of a trilateral geometrical face, around which triangles + # will be created while other elements will be quadrangles. + # Vertex can be either a GEOM_Object or a vertex ID within the + # shape to mesh + # @param UseExisting: if ==true - searches for the existing hypothesis created with + # the same parameters, else (default) - creates a new one + # + # @ingroup l3_hypos_additi + def TriangleVertex(self, vertex, UseExisting=0): + vertexID = vertex + if isinstance( vertexID, geompyDC.GEOM._objref_GEOM_Object ): + vertexID = self.mesh.geompyD.GetSubShapeID( self.mesh.geom, vertex ) + hyp = self.Hypothesis("QuadrangleParams", [vertexID], UseExisting = UseExisting, + CompareMethod=lambda hyp,args: hyp.GetTriaVertex()==args[0]) + hyp.SetTriaVertex( vertexID ) + return hyp + + # Public class: Mesh_Tetrahedron # ------------------------------ @@ -4912,6 +5116,7 @@ class Mesh_RadialPrism3D(Mesh_Algorithm): self.mesh.GetMesh().RemoveHypothesis( self.geom, self.nbLayers ) self.mesh.GetMesh().AddHypothesis( self.geom, self.distribHyp ) study = self.mesh.smeshpyD.GetCurrentStudy() # prevents publishing own 1D hypothesis + self.mesh.smeshpyD.SetCurrentStudy( None ) hyp = self.mesh.smeshpyD.CreateHypothesis(hypType, so) self.mesh.smeshpyD.SetCurrentStudy( study ) # enables publishing self.distribHyp.SetLayerDistribution( hyp ) @@ -4998,7 +5203,7 @@ class Mesh_RadialQuadrangle1D2D(Mesh_Algorithm): Mesh_Algorithm.__init__(self) self.Create(mesh, geom, "RadialQuadrangle_1D2D") - self.distribHyp = self.Hypothesis("LayerDistribution2D", UseExisting=0) + self.distribHyp = None #self.Hypothesis("LayerDistribution2D", UseExisting=0) self.nbLayers = None ## Return 2D hypothesis holding the 1D one @@ -5009,21 +5214,26 @@ class Mesh_RadialQuadrangle1D2D(Mesh_Algorithm): # hypothesis. Returns the created hypothesis def OwnHypothesis(self, hypType, args=[], so="libStdMeshersEngine.so"): #print "OwnHypothesis",hypType - if not self.nbLayers is None: + if self.nbLayers: self.mesh.GetMesh().RemoveHypothesis( self.geom, self.nbLayers ) + if self.distribHyp is None: + self.distribHyp = self.Hypothesis("LayerDistribution2D", UseExisting=0) + else: self.mesh.GetMesh().AddHypothesis( self.geom, self.distribHyp ) study = self.mesh.smeshpyD.GetCurrentStudy() # prevents publishing own 1D hypothesis + self.mesh.smeshpyD.SetCurrentStudy( None ) hyp = self.mesh.smeshpyD.CreateHypothesis(hypType, so) self.mesh.smeshpyD.SetCurrentStudy( study ) # enables publishing self.distribHyp.SetLayerDistribution( hyp ) return hyp - ## Defines "NumberOfLayers2D" hypothesis, specifying the number of layers + ## Defines "NumberOfLayers" hypothesis, specifying the number of layers # @param n number of layers # @param UseExisting if ==true - searches for the existing hypothesis created with # the same parameters, else (default) - creates a new one - def NumberOfLayers2D(self, n, UseExisting=0): - self.mesh.GetMesh().RemoveHypothesis( self.geom, self.distribHyp ) + def NumberOfLayers(self, n, UseExisting=0): + if self.distribHyp: + self.mesh.GetMesh().RemoveHypothesis( self.geom, self.distribHyp ) self.nbLayers = self.Hypothesis("NumberOfLayers2D", [n], UseExisting=UseExisting, CompareMethod=self.CompareNumberOfLayers) self.nbLayers.SetNumberOfLayers( n ) diff --git a/src/SMESH_SWIG_WITHIHM/Makefile.am b/src/SMESH_SWIG_WITHIHM/Makefile.am index 5370d7f3e..fc6d37ea1 100644 --- a/src/SMESH_SWIG_WITHIHM/Makefile.am +++ b/src/SMESH_SWIG_WITHIHM/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # SMESH SMESHGUI : GUI for SMESH component # File : Makefile.am # Author : Alexander BORODIN, Open CASCADE S.A.S. diff --git a/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.cxx b/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.cxx index 4766864a2..05e44fb94 100644 --- a/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.cxx +++ b/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.cxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : GUI for SMESH component // File : libSMESH_Swig.cxx // Author : Nicolas REJNERI, Open CASCADE S.A.S. @@ -71,10 +69,10 @@ namespace inline SALOMEDS::SObject_var GetDomainRoot(const SALOMEDS::SComponent_var& theSComponentMesh, - const SALOMEDS::StudyBuilder_var& theStudyBuilder, - CORBA::Long theDomainRootTag, - const QString& theName, - const QString& thePixmap) + const SALOMEDS::StudyBuilder_var& theStudyBuilder, + CORBA::Long theDomainRootTag, + const QString& theName, + const QString& thePixmap) { SALOMEDS::SObject_var aDomainRoot; if (!theSComponentMesh->FindSubObject(theDomainRootTag,aDomainRoot)) { @@ -98,13 +96,13 @@ namespace inline SALOMEDS::SObject_var GetHypothesisRoot(const SALOMEDS::SComponent_var& theSComponentMesh, - const SALOMEDS::StudyBuilder_var& theStudyBuilder) + const SALOMEDS::StudyBuilder_var& theStudyBuilder) { return GetDomainRoot(theSComponentMesh, - theStudyBuilder, - SMESH::Tag_HypothesisRoot, - QObject::tr("SMESH_MEN_HYPOTHESIS"), - "ICON_SMESH_TREE_HYPO"); + theStudyBuilder, + SMESH::Tag_HypothesisRoot, + QObject::tr("SMESH_MEN_HYPOTHESIS"), + "ICON_SMESH_TREE_HYPO"); } @@ -112,13 +110,13 @@ namespace inline SALOMEDS::SObject_var GetAlgorithmsRoot(const SALOMEDS::SComponent_var& theSComponentMesh, - const SALOMEDS::StudyBuilder_var& theStudyBuilder) + const SALOMEDS::StudyBuilder_var& theStudyBuilder) { return GetDomainRoot(theSComponentMesh, - theStudyBuilder, - SMESH::Tag_AlgorithmsRoot, - QObject::tr("SMESH_MEN_ALGORITHMS"), - "ICON_SMESH_TREE_ALGO"); + theStudyBuilder, + SMESH::Tag_AlgorithmsRoot, + QObject::tr("SMESH_MEN_ALGORITHMS"), + "ICON_SMESH_TREE_ALGO"); } @@ -126,17 +124,17 @@ namespace inline SALOMEDS::SObject_var AddToDomain(const std::string& theIOR, - const SALOMEDS::SComponent_var& theSComponentMesh, - const SALOMEDS::StudyBuilder_var& theStudyBuilder, - CORBA::Long theDomainRootTag, - const QString& theDomainName, - const QString& theDomainPixmap) + const SALOMEDS::SComponent_var& theSComponentMesh, + const SALOMEDS::StudyBuilder_var& theStudyBuilder, + CORBA::Long theDomainRootTag, + const QString& theDomainName, + const QString& theDomainPixmap) { SALOMEDS::SObject_var aDomain = GetDomainRoot(theSComponentMesh, - theStudyBuilder, - SMESH::Tag_AlgorithmsRoot, - theDomainName, - theDomainPixmap); + theStudyBuilder, + SMESH::Tag_AlgorithmsRoot, + theDomainName, + theDomainPixmap); // Add New Hypothesis SALOMEDS::SObject_var aSObject = theStudyBuilder->NewObject(aDomain); SALOMEDS::GenericAttribute_var anAttr = theStudyBuilder->FindOrCreateAttribute(aSObject,"AttributePixMap"); @@ -157,42 +155,42 @@ namespace //--------------------------------------------------------------- SALOMEDS::SObject_var AddHypothesis(const std::string& theIOR, - const SALOMEDS::SComponent_var& theSComponentMesh, - const SALOMEDS::StudyBuilder_var& theStudyBuilder) + const SALOMEDS::SComponent_var& theSComponentMesh, + const SALOMEDS::StudyBuilder_var& theStudyBuilder) { return AddToDomain(theIOR, - theSComponentMesh, - theStudyBuilder, - SMESH::Tag_HypothesisRoot, - QObject::tr("SMESH_MEN_HYPOTHESIS"), - "ICON_SMESH_TREE_HYPO"); + theSComponentMesh, + theStudyBuilder, + SMESH::Tag_HypothesisRoot, + QObject::tr("SMESH_MEN_HYPOTHESIS"), + "ICON_SMESH_TREE_HYPO"); } //--------------------------------------------------------------- SALOMEDS::SObject_var AddAlgorithms(const std::string& theIOR, - const SALOMEDS::SComponent_var& theSComponentMesh, - const SALOMEDS::StudyBuilder_var& theStudyBuilder) + const SALOMEDS::SComponent_var& theSComponentMesh, + const SALOMEDS::StudyBuilder_var& theStudyBuilder) { return AddToDomain(theIOR, - theSComponentMesh, - theStudyBuilder, - SMESH::Tag_AlgorithmsRoot, - QObject::tr("SMESH_MEN_ALGORITHMS"), - "ICON_SMESH_TREE_ALGO"); + theSComponentMesh, + theStudyBuilder, + SMESH::Tag_AlgorithmsRoot, + QObject::tr("SMESH_MEN_ALGORITHMS"), + "ICON_SMESH_TREE_ALGO"); } //--------------------------------------------------------------- void SetDomain(const char* theMeshOrSubMeshEntry, - const char* theDomainEntry, - const SALOMEDS::Study_var& theStudy, - const SALOMEDS::StudyBuilder_var& theStudyBuilder, - long theRefOnAppliedDomainTag, - const QString& theAppliedDomainMEN, - const QString& theAppliedDomainICON) + const char* theDomainEntry, + const SALOMEDS::Study_var& theStudy, + const SALOMEDS::StudyBuilder_var& theStudyBuilder, + long theRefOnAppliedDomainTag, + const QString& theAppliedDomainMEN, + const QString& theAppliedDomainICON) { SALOMEDS::SObject_var aMeshOrSubMeshSO = theStudy->FindObjectID(theMeshOrSubMeshEntry); SALOMEDS::SObject_var aHypothesisSO = theStudy->FindObjectID(theDomainEntry); @@ -201,17 +199,17 @@ namespace //Find or Create Applied Hypothesis root SALOMEDS::SObject_var anAppliedDomainSO; if(!aMeshOrSubMeshSO->FindSubObject(theRefOnAppliedDomainTag,anAppliedDomainSO)){ - anAppliedDomainSO = theStudyBuilder->NewObjectToTag(aMeshOrSubMeshSO,theRefOnAppliedDomainTag); - SALOMEDS::GenericAttribute_var anAttr = - theStudyBuilder->FindOrCreateAttribute(anAppliedDomainSO,"AttributeName"); - SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(anAttr); - aName->SetValue(theAppliedDomainMEN.toLatin1().data()); - anAttr = theStudyBuilder->FindOrCreateAttribute(anAppliedDomainSO,"AttributeSelectable"); - SALOMEDS::AttributeSelectable_var aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr); - aSelAttr->SetSelectable(false); - anAttr = theStudyBuilder->FindOrCreateAttribute(anAppliedDomainSO,"AttributePixMap"); - SALOMEDS::AttributePixMap_var aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); - aPixmap->SetPixMap(theAppliedDomainICON.toLatin1().data()); + anAppliedDomainSO = theStudyBuilder->NewObjectToTag(aMeshOrSubMeshSO,theRefOnAppliedDomainTag); + SALOMEDS::GenericAttribute_var anAttr = + theStudyBuilder->FindOrCreateAttribute(anAppliedDomainSO,"AttributeName"); + SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(anAttr); + aName->SetValue(theAppliedDomainMEN.toLatin1().data()); + anAttr = theStudyBuilder->FindOrCreateAttribute(anAppliedDomainSO,"AttributeSelectable"); + SALOMEDS::AttributeSelectable_var aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr); + aSelAttr->SetSelectable(false); + anAttr = theStudyBuilder->FindOrCreateAttribute(anAppliedDomainSO,"AttributePixMap"); + SALOMEDS::AttributePixMap_var aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); + aPixmap->SetPixMap(theAppliedDomainICON.toLatin1().data()); } SALOMEDS::SObject_var aSObject = theStudyBuilder->NewObject(anAppliedDomainSO); theStudyBuilder->Addreference(aSObject,aHypothesisSO); @@ -222,34 +220,34 @@ namespace //--------------------------------------------------------------- void SetHypothesis(const char* theMeshOrSubMeshEntry, - const char* theDomainEntry, - const SALOMEDS::Study_var& theStudy, - const SALOMEDS::StudyBuilder_var& theStudyBuilder) + const char* theDomainEntry, + const SALOMEDS::Study_var& theStudy, + const SALOMEDS::StudyBuilder_var& theStudyBuilder) { SetDomain(theMeshOrSubMeshEntry, - theDomainEntry, - theStudy, - theStudyBuilder, - SMESH::Tag_RefOnAppliedHypothesis, - QObject::tr("SMESH_MEN_APPLIED_HYPOTHESIS"), - "ICON_SMESH_TREE_HYPO"); + theDomainEntry, + theStudy, + theStudyBuilder, + SMESH::Tag_RefOnAppliedHypothesis, + QObject::tr("SMESH_MEN_APPLIED_HYPOTHESIS"), + "ICON_SMESH_TREE_HYPO"); } //--------------------------------------------------------------- void SetAlgorithms(const char* theMeshOrSubMeshEntry, - const char* theDomainEntry, - const SALOMEDS::Study_var& theStudy, - const SALOMEDS::StudyBuilder_var& theStudyBuilder) + const char* theDomainEntry, + const SALOMEDS::Study_var& theStudy, + const SALOMEDS::StudyBuilder_var& theStudyBuilder) { SetDomain(theMeshOrSubMeshEntry, - theDomainEntry, - theStudy, - theStudyBuilder, - SMESH::Tag_RefOnAppliedAlgorithms, - QObject::tr("SMESH_MEN_APPLIED_ALGORIHTMS"), - "ICON_SMESH_TREE_ALGO"); + theDomainEntry, + theStudy, + theStudyBuilder, + SMESH::Tag_RefOnAppliedAlgorithms, + QObject::tr("SMESH_MEN_APPLIED_ALGORIHTMS"), + "ICON_SMESH_TREE_ALGO"); } } @@ -271,11 +269,11 @@ SMESH_Swig::SMESH_Swig() Execute() { try { - ORB_INIT &anORBInit = *SINGLETON_::Instance(); - ASSERT(SINGLETON_::IsAlreadyExisting()); - myORB = anORBInit( 0, 0 ); + ORB_INIT &anORBInit = *SINGLETON_::Instance(); + ASSERT(SINGLETON_::IsAlreadyExisting()); + myORB = anORBInit( 0, 0 ); } catch (...) { - INFOS("internal error : orb not found"); + INFOS("internal error : orb not found"); } } }; @@ -301,9 +299,9 @@ SMESH_Swig::Init(int theStudyID) SALOMEDS::SComponent_var& mySComponentMesh; public: TEvent(int theStudyID, - SALOMEDS::Study_var& theStudy, - SALOMEDS::StudyBuilder_var& theStudyBuilder, - SALOMEDS::SComponent_var& theSComponentMesh): + SALOMEDS::Study_var& theStudy, + SALOMEDS::StudyBuilder_var& theStudyBuilder, + SALOMEDS::SComponent_var& theSComponentMesh): myStudyID(theStudyID), myStudy(theStudy), myStudyBuilder(theStudyBuilder), @@ -334,28 +332,28 @@ SMESH_Swig::Init(int theStudyID) SALOMEDS::SComponent_var aSComponent = myStudy->FindComponent("SMESH"); if(aSComponent->_is_nil()){ - bool aLocked = myStudy->GetProperties()->IsLocked(); - if (aLocked) - myStudy->GetProperties()->SetLocked(false); - - aSComponent = myStudyBuilder->NewComponent("SMESH"); - anAttr = myStudyBuilder->FindOrCreateAttribute(aSComponent,"AttributeName"); - aName = SALOMEDS::AttributeName::_narrow(anAttr); - - SMESHGUI* aSMESHGUI = SMESHGUI::GetSMESHGUI(); //SRN: BugID IPAL9186, load a SMESH gui if it hasn't been loaded - if (!aSMESHGUI){ - CAM_Module* aModule = anApp->module("Mesh"); - if(!aModule) - aModule = anApp->loadModule("Mesh"); - aSMESHGUI = dynamic_cast(aModule); - } //SRN: BugID IPAL9186: end of a fix - aName->SetValue(aSMESHGUI->moduleName().toLatin1().data()); - anAttr = myStudyBuilder->FindOrCreateAttribute(aSComponent,"AttributePixMap"); - aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); - aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" ); - myStudyBuilder->DefineComponentInstance(aSComponent,aSMESHGen); - if (aLocked) - myStudy->GetProperties()->SetLocked(true); + bool aLocked = myStudy->GetProperties()->IsLocked(); + if (aLocked) + myStudy->GetProperties()->SetLocked(false); + + aSComponent = myStudyBuilder->NewComponent("SMESH"); + anAttr = myStudyBuilder->FindOrCreateAttribute(aSComponent,"AttributeName"); + aName = SALOMEDS::AttributeName::_narrow(anAttr); + + SMESHGUI* aSMESHGUI = SMESHGUI::GetSMESHGUI(); //SRN: BugID IPAL9186, load a SMESH gui if it hasn't been loaded + if (!aSMESHGUI){ + CAM_Module* aModule = anApp->module("Mesh"); + if(!aModule) + aModule = anApp->loadModule("Mesh"); + aSMESHGUI = dynamic_cast(aModule); + } //SRN: BugID IPAL9186: end of a fix + aName->SetValue(aSMESHGUI->moduleName().toLatin1().data()); + anAttr = myStudyBuilder->FindOrCreateAttribute(aSComponent,"AttributePixMap"); + aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); + aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" ); + myStudyBuilder->DefineComponentInstance(aSComponent,aSMESHGen); + if (aLocked) + myStudy->GetProperties()->SetLocked(true); } mySComponentMesh = SALOMEDS::SComponent::_narrow(aSComponent); @@ -367,9 +365,9 @@ SMESH_Swig::Init(int theStudyID) MESSAGE("Init"); ProcessVoidEvent(new TEvent(theStudyID, - myStudy, - myStudyBuilder, - mySComponentMesh)); + myStudy, + myStudyBuilder, + mySComponentMesh)); } @@ -414,8 +412,8 @@ const char* SMESH_Swig::AddNewHypothesis(const char* theIOR) MESSAGE("AddNewHypothesis"); SALOMEDS::SObject_var aSObject = ::AddHypothesis(theIOR, - mySComponentMesh, - myStudyBuilder); + mySComponentMesh, + myStudyBuilder); CORBA::String_var anEntry = aSObject->GetID(); return anEntry._retn(); } @@ -427,8 +425,8 @@ const char* SMESH_Swig::AddNewAlgorithms(const char* theIOR) MESSAGE("AddNewAlgorithms"); SALOMEDS::SObject_var aSObject = ::AddAlgorithms(theIOR, - mySComponentMesh, - myStudyBuilder); + mySComponentMesh, + myStudyBuilder); CORBA::String_var anEntry = aSObject->GetID(); return anEntry._retn(); } @@ -453,9 +451,9 @@ void SMESH_Swig::SetHypothesis(const char* theMeshOrSubMeshEntry, const char* theDomainEntry) { ::SetHypothesis(theMeshOrSubMeshEntry, - theDomainEntry, - myStudy, - myStudyBuilder); + theDomainEntry, + myStudy, + myStudyBuilder); } @@ -464,9 +462,9 @@ void SMESH_Swig::SetAlgorithms(const char* theMeshOrSubMeshEntry, const char* theDomainEntry) { ::SetAlgorithms(theMeshOrSubMeshEntry, - theDomainEntry, - myStudy, - myStudyBuilder); + theDomainEntry, + myStudy, + myStudyBuilder); } @@ -599,7 +597,7 @@ void SMESH_Swig::SetName(const char* theEntry, //================================================================================ void SMESH_Swig::SetMeshIcon(const char* theMeshEntry, - const bool theIsComputed, + const bool theIsComputed, const bool isEmpty) { class TEvent: public SALOME_Event @@ -609,8 +607,8 @@ void SMESH_Swig::SetMeshIcon(const char* theMeshEntry, bool myIsComputed, myIsEmpty; public: TEvent(const SALOMEDS::Study_var& theStudy, - const std::string& theMeshEntry, - const bool theIsComputed, + const std::string& theMeshEntry, + const bool theIsComputed, const bool isEmpty): myStudy(theStudy), myMeshEntry(theMeshEntry), @@ -624,13 +622,13 @@ void SMESH_Swig::SetMeshIcon(const char* theMeshEntry, { SALOMEDS::SObject_var aMeshSO = myStudy->FindObjectID(myMeshEntry.c_str()); if(!aMeshSO->_is_nil()) - if(_PTR(SObject) aMesh = ClientFactory::SObject(aMeshSO)) - SMESH::ModifiedMesh(aMesh,myIsComputed,myIsEmpty); + if(_PTR(SObject) aMesh = ClientFactory::SObject(aMeshSO)) + SMESH::ModifiedMesh(aMesh,myIsComputed,myIsEmpty); } }; ProcessVoidEvent(new TEvent(myStudy, - theMeshEntry, - theIsComputed, + theMeshEntry, + theIsComputed, isEmpty)); } diff --git a/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.h b/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.h index bf60f35ff..7e7f1c600 100644 --- a/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.h +++ b/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.h @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : GUI for SMESH component // File : libSMESH_Swig.h // Author : Nicolas REJNERI, Open CASCADE S.A.S. diff --git a/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.i b/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.i index a865a8e95..bd795139c 100644 --- a/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.i +++ b/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.i @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESHGUI : GUI for SMESH component // File : libSMESH_Swig.i // Author : Nicolas REJNERI, Open CASCADE S.A.S. diff --git a/src/StdMeshers/Makefile.am b/src/StdMeshers/Makefile.am index 1b51b3afb..ca9794c84 100644 --- a/src/StdMeshers/Makefile.am +++ b/src/StdMeshers/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # SMESH StdMeshers : implementaion of SMESH idl descriptions # File : Makefile.in # Author : Julia DOROVSKIKH @@ -73,7 +71,8 @@ salomeinclude_HEADERS = \ StdMeshers_CompositeHexa_3D.hxx \ StdMeshers_MaxLength.hxx \ StdMeshers_QuadrangleParams.hxx \ - StdMeshers_RadialQuadrangle_1D2D.hxx + StdMeshers_RadialQuadrangle_1D2D.hxx \ + StdMeshers_HexaFromSkin_3D.hxx # Libraries targets @@ -123,7 +122,8 @@ dist_libStdMeshers_la_SOURCES = \ StdMeshers_CompositeHexa_3D.cxx \ StdMeshers_MaxLength.cxx \ StdMeshers_QuadrangleParams.cxx \ - StdMeshers_RadialQuadrangle_1D2D.cxx + StdMeshers_RadialQuadrangle_1D2D.cxx \ + StdMeshers_HexaFromSkin_3D.cxx # additionnal information to compil and link file diff --git a/src/StdMeshers/SMESH_StdMeshers.hxx b/src/StdMeshers/SMESH_StdMeshers.hxx index aeee7480d..d65e082fb 100755 --- a/src/StdMeshers/SMESH_StdMeshers.hxx +++ b/src/StdMeshers/SMESH_StdMeshers.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_StdMeshers.hxx // Author : Alexander BORODIN // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_Arithmetic1D.cxx b/src/StdMeshers/StdMeshers_Arithmetic1D.cxx index a24909a0c..9752bc6c4 100644 --- a/src/StdMeshers/StdMeshers_Arithmetic1D.cxx +++ b/src/StdMeshers/StdMeshers_Arithmetic1D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Arithmetic1D.cxx // Author : Damien COQUERET, OCC diff --git a/src/StdMeshers/StdMeshers_Arithmetic1D.hxx b/src/StdMeshers/StdMeshers_Arithmetic1D.hxx index e3f3c37a8..c65e17b67 100644 --- a/src/StdMeshers/StdMeshers_Arithmetic1D.hxx +++ b/src/StdMeshers/StdMeshers_Arithmetic1D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Arithmetic1D.hxx // Author : Damien COQUERET, OCC diff --git a/src/StdMeshers/StdMeshers_AutomaticLength.cxx b/src/StdMeshers/StdMeshers_AutomaticLength.cxx index 95710c94e..e7bd4e993 100644 --- a/src/StdMeshers/StdMeshers_AutomaticLength.cxx +++ b/src/StdMeshers/StdMeshers_AutomaticLength.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_AutomaticLength.cxx // Author : Edward AGAPOV, OCC diff --git a/src/StdMeshers/StdMeshers_AutomaticLength.hxx b/src/StdMeshers/StdMeshers_AutomaticLength.hxx index 627003aa6..0bf8aa25c 100644 --- a/src/StdMeshers/StdMeshers_AutomaticLength.hxx +++ b/src/StdMeshers/StdMeshers_AutomaticLength.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,11 +19,12 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_AutomaticLength.hxx // Author : Edward AGAPOV, OCC // Module : SMESH - +// #ifndef _SMESH_AutomaticLength_HXX_ #define _SMESH_AutomaticLength_HXX_ diff --git a/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx b/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx index 38bbdeaf3..d55c17513 100644 --- a/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx +++ b/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx @@ -1,29 +1,28 @@ -// SMESH SMESH : implementaion of SMESH idl descriptions +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + +// SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_CompositeHexa_3D.cxx // Module : SMESH // Created : Tue Nov 25 11:04:59 2008 // Author : Edward AGAPOV (eap) - +// #include "StdMeshers_CompositeHexa_3D.hxx" #include "SMDS_Mesh.hxx" diff --git a/src/StdMeshers/StdMeshers_CompositeHexa_3D.hxx b/src/StdMeshers/StdMeshers_CompositeHexa_3D.hxx index 8fd14ba06..01b373d86 100644 --- a/src/StdMeshers/StdMeshers_CompositeHexa_3D.hxx +++ b/src/StdMeshers/StdMeshers_CompositeHexa_3D.hxx @@ -1,29 +1,26 @@ -// SMESH SMESH : implementaion of SMESH idl descriptions +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. // -// 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 +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + +// SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_CompositeBlock_3D.hxx // Module : SMESH - +// #ifndef _SMESH_CompositeSegment_1D_HXX_ #define _SMESH_CompositeSegment_1D_HXX_ @@ -48,7 +45,7 @@ public: //virtual ~StdMeshers_CompositeHexa_3D(); virtual bool Compute(SMESH_Mesh& aMesh, - const TopoDS_Shape& aShape); + const TopoDS_Shape& aShape); virtual bool Evaluate(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape, MapShapeNbElems& aResMap); diff --git a/src/StdMeshers/StdMeshers_CompositeSegment_1D.cxx b/src/StdMeshers/StdMeshers_CompositeSegment_1D.cxx index eee3ef012..17161d9ef 100644 --- a/src/StdMeshers/StdMeshers_CompositeSegment_1D.cxx +++ b/src/StdMeshers/StdMeshers_CompositeSegment_1D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Regular_1D.cxx // Moved here from SMESH_Regular_1D.cxx @@ -73,15 +74,16 @@ namespace { */ //================================================================================ - TopoDS_Edge nextC1Edge(const TopoDS_Edge& edge, - SMESH_Mesh & aMesh, - const bool forward) + TopoDS_Edge nextC1Edge(TopoDS_Edge edge, + SMESH_Mesh & aMesh, + const bool forward) { + if (edge.Orientation() > TopAbs_REVERSED) // INTERNAL + edge.Orientation( TopAbs_FORWARD ); TopoDS_Edge eNext; TopTools_MapOfShape edgeCounter; edgeCounter.Add( edge ); - TopoDS_Vertex v; - v = forward ? TopExp::LastVertex( edge,1 ) : TopExp::FirstVertex( edge,1 ); + TopoDS_Vertex v = forward ? TopExp::LastVertex(edge,true) : TopExp::FirstVertex(edge,true); TopTools_ListIteratorOfListOfShape ancestIt = aMesh.GetAncestors( v ); for ( ; ancestIt.More(); ancestIt.Next() ) { @@ -92,11 +94,11 @@ namespace { if ( edgeCounter.Extent() < 3 && !eNext.IsNull() ) { if ( SMESH_Algo::IsContinuous( edge, eNext )) { // care of orientation - bool reverse; - if ( forward ) - reverse = ( !v.IsSame( TopExp::FirstVertex( eNext, true ))); - else - reverse = ( !v.IsSame( TopExp::LastVertex( eNext, true ))); + if (eNext.Orientation() > TopAbs_REVERSED) // INTERNAL + eNext.Orientation( TopAbs_FORWARD ); + TopoDS_Vertex vn = + forward ? TopExp::FirstVertex(eNext,true) : TopExp::LastVertex(eNext,true); + bool reverse = (!v.IsSame(vn)); if ( reverse ) eNext.Reverse(); return eNext; @@ -297,14 +299,17 @@ StdMeshers_CompositeSegment_1D::GetFaceSide(SMESH_Mesh& aMesh, const bool ignoreMeshed) { list< TopoDS_Edge > edges; - edges.push_back( anEdge ); + if ( anEdge.Orientation() <= TopAbs_REVERSED ) + edges.push_back( anEdge ); + else + edges.push_back( TopoDS::Edge( anEdge.Oriented( TopAbs_FORWARD ))); // PAL21718 list hypList; SMESH_Algo* theAlgo = aMesh.GetGen()->GetAlgo( aMesh, anEdge ); if ( theAlgo ) hypList = theAlgo->GetUsedHypothesis(aMesh, anEdge, false); for ( int forward = 0; forward < 2; ++forward ) { - TopoDS_Edge eNext = nextC1Edge( anEdge, aMesh, forward ); + TopoDS_Edge eNext = nextC1Edge( edges.back(), aMesh, forward ); while ( !eNext.IsNull() ) { if ( ignoreMeshed ) { // eNext must not have computed mesh diff --git a/src/StdMeshers/StdMeshers_CompositeSegment_1D.hxx b/src/StdMeshers/StdMeshers_CompositeSegment_1D.hxx index 1ec160335..7f003f4ae 100644 --- a/src/StdMeshers/StdMeshers_CompositeSegment_1D.hxx +++ b/src/StdMeshers/StdMeshers_CompositeSegment_1D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_CompositeSegment_1D.hxx // Module : SMESH @@ -43,7 +44,7 @@ public: virtual ~StdMeshers_CompositeSegment_1D(); virtual bool Compute(SMESH_Mesh& aMesh, - const TopoDS_Shape& aShape); + const TopoDS_Shape& aShape); /*! * \brief Sets event listener to submeshes if necessary * \param subMesh - submesh where algo is set diff --git a/src/StdMeshers/StdMeshers_Deflection1D.cxx b/src/StdMeshers/StdMeshers_Deflection1D.cxx index 42ad9219a..7a8650601 100644 --- a/src/StdMeshers/StdMeshers_Deflection1D.cxx +++ b/src/StdMeshers/StdMeshers_Deflection1D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers_Deflection1D : implementaion of SMESH idl descriptions // File : StdMeshers_Deflection1D.cxx // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_Deflection1D.hxx b/src/StdMeshers/StdMeshers_Deflection1D.hxx index a3cf19b70..8a92b037c 100644 --- a/src/StdMeshers/StdMeshers_Deflection1D.hxx +++ b/src/StdMeshers/StdMeshers_Deflection1D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,11 +19,11 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers : implementaion of SMESH idl descriptions // File : StdMeshers_Deflection1D.hxx // Module : SMESH // - #ifndef _StdMeshers_Deflection1D_HXX_ #define _StdMeshers_Deflection1D_HXX_ diff --git a/src/StdMeshers/StdMeshers_Distribution.cxx b/src/StdMeshers/StdMeshers_Distribution.cxx index f2e591f34..974c7ffa7 100644 --- a/src/StdMeshers/StdMeshers_Distribution.cxx +++ b/src/StdMeshers/StdMeshers_Distribution.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers : implementaion of point distribution algorithm // File : StdMeshers_Distribution.cxx // Author : Alexandre SOLOVYOV @@ -303,21 +304,21 @@ double dihotomySolve( Function& f, const double val, const double _start, const } bool buildDistribution( const TCollection_AsciiString& f, const int conv, const double start, const double end, - const int nbSeg, vector& data, const double eps ) + const int nbSeg, vector& data, const double eps ) { FunctionExpr F( f.ToCString(), conv ); return buildDistribution( F, start, end, nbSeg, data, eps ); } bool buildDistribution( const std::vector& f, const int conv, const double start, const double end, - const int nbSeg, vector& data, const double eps ) + const int nbSeg, vector& data, const double eps ) { FunctionTable F( f, conv ); return buildDistribution( F, start, end, nbSeg, data, eps ); } bool buildDistribution( const Function& func, const double start, const double end, const int nbSeg, - vector& data, const double eps ) + vector& data, const double eps ) { if( nbSeg<=0 ) return false; diff --git a/src/StdMeshers/StdMeshers_Distribution.hxx b/src/StdMeshers/StdMeshers_Distribution.hxx index 373305b63..2f5214a2b 100644 --- a/src/StdMeshers/StdMeshers_Distribution.hxx +++ b/src/StdMeshers/StdMeshers_Distribution.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers : implementaion of point distribution algorithm // File : StdMeshers_Distribution.hxx // Author : Alexandre SOLOVYOV @@ -102,16 +103,16 @@ private: STDMESHERS_EXPORT bool buildDistribution( const Function& f, - const double start, const double end, - const int nbSeg, - std::vector& data, - const double eps ); + const double start, const double end, + const int nbSeg, + std::vector& data, + const double eps ); STDMESHERS_EXPORT bool buildDistribution( const TCollection_AsciiString& f, const int conv, const double start, const double end, - const int nbSeg, std::vector& data, const double eps ); + const int nbSeg, std::vector& data, const double eps ); STDMESHERS_EXPORT bool buildDistribution( const std::vector& f, const int conv, const double start, const double end, - const int nbSeg, std::vector& data, const double eps ); + const int nbSeg, std::vector& data, const double eps ); #endif diff --git a/src/StdMeshers/StdMeshers_FaceSide.cxx b/src/StdMeshers/StdMeshers_FaceSide.cxx index f34def734..3a8d36530 100644 --- a/src/StdMeshers/StdMeshers_FaceSide.cxx +++ b/src/StdMeshers/StdMeshers_FaceSide.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_FaceSide.hxx // Created : Wed Jan 31 18:41:25 2007 @@ -31,7 +32,7 @@ #include "SMDS_MeshNode.hxx" #include "SMESHDS_Mesh.hxx" #include "SMESHDS_SubMesh.hxx" -//#include "SMESH_Algo.hxx" +#include "SMESH_Algo.hxx" #include "SMESH_Mesh.hxx" #include "SMESH_MesherHelper.hxx" #include "SMESH_ComputeError.hxx" @@ -44,10 +45,14 @@ #include #include #include +#include #include #include #include +#include +#include + #include #include "utilities.h" @@ -87,9 +92,12 @@ StdMeshers_FaceSide::StdMeshers_FaceSide(const TopoDS_Face& theFace, int nbEdges = theEdges.size(); myEdge.resize( nbEdges ); myC2d.resize( nbEdges ); + myC3dAdaptor.resize( nbEdges ); myFirst.resize( nbEdges ); myLast.resize( nbEdges ); myNormPar.resize( nbEdges ); + myEdgeLength.resize( nbEdges ); + myIsUniform.resize( nbEdges, true ); myLength = 0; myNbPonits = myNbSegments = 0; myMesh = theMesh; @@ -99,16 +107,16 @@ StdMeshers_FaceSide::StdMeshers_FaceSide(const TopoDS_Face& theFace, if ( nbEdges == 0 ) return; SMESHDS_Mesh* meshDS = theMesh->GetMeshDS(); - vector len( nbEdges ); int nbDegen = 0; list::iterator edge = theEdges.begin(); + TopoDS_Iterator vExp; for ( int index = 0; edge != theEdges.end(); ++index, ++edge ) { int i = theIsForward ? index : nbEdges - index - 1; - len[i] = SMESH_Algo::EdgeLength( *edge ); - if ( len[i] < DBL_MIN ) nbDegen++; - myLength += len[i]; + myEdgeLength[i] = SMESH_Algo::EdgeLength( *edge ); + if ( myEdgeLength[i] < DBL_MIN ) nbDegen++; + myLength += myEdgeLength[i]; myEdge[i] = *edge; if ( !theIsForward ) myEdge[i].Reverse(); @@ -129,16 +137,41 @@ StdMeshers_FaceSide::StdMeshers_FaceSide(const TopoDS_Face& theFace, myNbPonits += nbN; myNbSegments += sm->NbElements(); } - if ( SMESH_Algo::VertexNode( TopExp::FirstVertex( *edge, 1), meshDS )) + // TopExp::FirstVertex() and TopExp::LastVertex() return NULL from INTERNAL edge + vExp.Initialize( *edge ); + if ( vExp.Value().Orientation() == TopAbs_REVERSED ) vExp.Next(); + if ( SMESH_Algo::VertexNode( TopoDS::Vertex( vExp.Value()), meshDS )) myNbPonits += 1; // for the first end else myMissingVertexNodes = true; - } - if ( SMESH_Algo::VertexNode( TopExp::LastVertex( theEdges.back(), 1), meshDS )) - myNbPonits++; // for the last end - else - myMissingVertexNodes = true; + // check if edge has non-uniform parametrization (issue 0020705) + if ( !myC2d[i].IsNull() && myEdgeLength[i] > DBL_MIN) + { + Geom2dAdaptor_Curve A2dC( myC2d[i] ); + double p2 = myFirst[i]+(myLast[i]-myFirst[i])/2., p4 = myFirst[i]+(myLast[i]-myFirst[i])/4.; + double d2 = GCPnts_AbscissaPoint::Length( A2dC, myFirst[i], p2 ); + double d4 = GCPnts_AbscissaPoint::Length( A2dC, myFirst[i], p4 ); + //cout<<"len = "<GetNodes(); + if ( u2nodeVec.empty() ) + while ( nItr->more() ) + { + const SMDS_MeshNode* node = nItr->next(); + if ( myIgnoreMediumNodes && SMESH_MeshEditor::IsMedium( node, SMDSAbs_Edge )) + continue; + double u = helper.GetNodeU( myEdge[i], node, 0, ¶mOK ); + + // paramSize is signed so orientation is taken into account + double normPar = prevNormPar + r * ( u - myFirst[i] ) / paramSize; + u2nodeVec.push_back( make_pair( normPar, node )); + } + u2node.insert( u2nodeVec.begin(), u2nodeVec.end() ); + + // Put 2nd vertex node for a last edge if ( i+1 == myEdge.size() ) { - node = SMESH_Algo::VertexNode( VLast, meshDS ); + node = SMESH_Algo::VertexNode( VV[1], meshDS ); if ( !node ) { MESSAGE(" NO NODE on VERTEX" ); return myPoints; } u2node.insert( make_pair( 1., node )); } - - // put internal nodes - SMESHDS_SubMesh* sm = meshDS->MeshElements( myEdge[i] ); - if ( !sm ) continue; - SMDS_NodeIteratorPtr nItr = sm->GetNodes(); - double paramSize = myLast[i] - myFirst[i], r = myNormPar[i] - prevNormPar; - while ( nItr->more() ) { - const SMDS_MeshNode* node = nItr->next(); - if ( myIgnoreMediumNodes && SMESH_MeshEditor::IsMedium( node, SMDSAbs_Edge )) - continue; - const SMDS_EdgePosition* epos = - static_cast(node->GetPosition()); - double u = epos->GetUParameter(); - // paramSize is signed so orientation is taken into account - double normPar = prevNormPar + r * ( u - myFirst[i] ) / paramSize; -#ifdef _DEBUG_ - if ( normPar > 1 || normPar < 0) { - dump("DEBUG"); - MESSAGE ( "WRONG normPar: "< 1 ) { reverse( myEdge ); reverse( myC2d ); + reverse( myC3dAdaptor ); reverse( myFirst ); reverse( myLast ); reverse( myNormPar ); + reverse( myEdgeLength ); + reverse( myIsUniform ); } myNormPar[nbEdges-1]=1.; myPoints.clear(); @@ -483,6 +539,7 @@ BRepAdaptor_CompCurve* StdMeshers_FaceSide::GetCurve3d() const return new BRepAdaptor_CompCurve( aWire ); } + //================================================================================ /*! * \brief Return 2D point by normalized parameter @@ -497,9 +554,22 @@ gp_Pnt2d StdMeshers_FaceSide::Value2d(double U) const int i = EdgeIndex( U ); double prevU = i ? myNormPar[ i-1 ] : 0; double r = ( U - prevU )/ ( myNormPar[ i ] - prevU ); - return myC2d[ i ]->Value( myFirst[i] * ( 1 - r ) + myLast[i] * r ); + + double par = myFirst[i] * ( 1 - r ) + myLast[i] * r; + + // check parametrization of curve + if( !myIsUniform[i] ) + { + double aLen3dU = r * myEdgeLength[i] * ( myFirst[i]>myLast[i] ? -1. : 1.); + GCPnts_AbscissaPoint AbPnt + ( const_cast( myC3dAdaptor[i]), aLen3dU, myFirst[i] ); + if( AbPnt.IsDone() ) { + par = AbPnt.Parameter(); + } + } + return myC2d[ i ]->Value(par); + } - //return gp_Pnt2d( 1e+100, 1e+100 ); return myDefaultPnt2d; } @@ -527,20 +597,28 @@ TSideVector StdMeshers_FaceSide::GetFaceWires(const TopoDS_Face& theFace, for ( int iW = 0; iW < nbWires; ++iW ) { std::advance( to, *nbE++ ); + if ( *nbE == 0 ) // Issue 0020676 + { + --nbWires; + --iW; + wires.resize( nbWires ); + continue; + } list< TopoDS_Edge > wireEdges( from, to ); // assure that there is a node on the first vertex // as StdMeshers_FaceSide::GetUVPtStruct() requires - while ( !SMESH_Algo::VertexNode( TopExp::FirstVertex( wireEdges.front(), true), - theMesh.GetMeshDS())) - { - wireEdges.splice(wireEdges.end(), wireEdges, - wireEdges.begin(), ++wireEdges.begin()); - if ( from->IsSame( wireEdges.front() )) { - theError = TError - ( new SMESH_ComputeError(COMPERR_BAD_INPUT_MESH,"No nodes on vertices")); - return TSideVector(0); + if ( wireEdges.front().Orientation() != TopAbs_INTERNAL ) // Issue 0020676 + while ( !SMESH_Algo::VertexNode( TopExp::FirstVertex( wireEdges.front(), true), + theMesh.GetMeshDS())) + { + wireEdges.splice(wireEdges.end(), wireEdges, + wireEdges.begin(), ++wireEdges.begin()); + if ( from->IsSame( wireEdges.front() )) { + theError = TError + ( new SMESH_ComputeError(COMPERR_BAD_INPUT_MESH,"No nodes on vertices")); + return TSideVector(0); + } } - } const bool isForward = true; StdMeshers_FaceSide* wire = new StdMeshers_FaceSide( theFace, wireEdges, &theMesh, isForward, theIgnoreMediumNodes); @@ -550,3 +628,42 @@ TSideVector StdMeshers_FaceSide::GetFaceWires(const TopoDS_Face& theFace, return wires; } +//================================================================================ +/*! + * \brief Return 1st vertex of the i-the edge + */ +//================================================================================ + +TopoDS_Vertex StdMeshers_FaceSide::FirstVertex(int i) const +{ + TopoDS_Vertex v; + if ( i < NbEdges() ) + { + v = myEdge[i].Orientation() <= TopAbs_REVERSED ? // FORWARD || REVERSED + TopExp::FirstVertex( myEdge[i], 1 ) : + TopoDS::Vertex( TopoDS_Iterator( myEdge[i] ).Value() ); + } + return v; +} + +//================================================================================ +/*! + * \brief Return last vertex of the i-the edge + */ +//================================================================================ + +TopoDS_Vertex StdMeshers_FaceSide::LastVertex(int i) const +{ + TopoDS_Vertex v; + if ( i < NbEdges() ) + { + const TopoDS_Edge& edge = i<0 ? myEdge[ NbEdges() + i ] : myEdge[i]; + if ( edge.Orientation() <= TopAbs_REVERSED ) // FORWARD || REVERSED + v = TopExp::LastVertex( edge, 1 ); + else + for ( TopoDS_Iterator vIt( edge ); vIt.More(); vIt.Next() ) + v = TopoDS::Vertex( vIt.Value() ); + } + return v; +} + diff --git a/src/StdMeshers/StdMeshers_FaceSide.hxx b/src/StdMeshers/StdMeshers_FaceSide.hxx index 8382a8fbd..69d3f87a8 100644 --- a/src/StdMeshers/StdMeshers_FaceSide.hxx +++ b/src/StdMeshers/StdMeshers_FaceSide.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_FaceSide.hxx // Created : Wed Jan 31 18:41:25 2007 @@ -28,14 +29,13 @@ #ifndef StdMeshers_FaceSide_HeaderFile #define StdMeshers_FaceSide_HeaderFile -#include +#include +#include #include #include -#include -#include +#include #include "SMESH_StdMeshers.hxx" -#include "SMESH_Algo.hxx" #include #include @@ -47,7 +47,7 @@ class Adaptor2d_Curve2d; class Adaptor3d_Curve; class BRepAdaptor_CompCurve; class TopoDS_Face; -class SMESH_ComputeError; +struct SMESH_ComputeError; typedef struct uvPtStruct { @@ -124,7 +124,7 @@ public: */ SMESH_Mesh* GetMesh() const { return myMesh; } /*! - * \brief Return true if there vertices without nodes + * \brief Return true if there are vertices without nodes */ bool MissVertexNode() const { return myMissingVertexNodes; } /*! @@ -170,11 +170,11 @@ public: /*! * \brief Return 1st vertex of the i-the edge (count starts from zero) */ - inline TopoDS_Vertex FirstVertex(int i=0) const; + TopoDS_Vertex FirstVertex(int i=0) const; /*! * \brief Return last vertex of the i-the edge (count starts from zero) */ - inline TopoDS_Vertex LastVertex(int i=-1) const; + TopoDS_Vertex LastVertex(int i=-1) const; /*! * \brief Return first normalized parameter of the i-the edge (count starts from zero) */ @@ -198,11 +198,16 @@ public: protected: + + // DON't FORGET tO update Reverse() when adding one more vector! std::vector myPoints, myFalsePoints; std::vector myEdge; std::vector myC2d; + std::vector myC3dAdaptor; std::vector myFirst, myLast; std::vector myNormPar; + std::vector myEdgeLength; + std::vector myIsUniform; double myLength; int myNbPonits, myNbSegments; SMESH_Mesh* myMesh; @@ -243,28 +248,6 @@ inline double StdMeshers_FaceSide::Parameter(double U, TopoDS_Edge & edge) const return myFirst[i] * ( 1 - r ) + myLast[i] * r; } -//================================================================================ -/*! - * \brief Return 1st vertex of the i-the edge - */ -//================================================================================ - -inline TopoDS_Vertex StdMeshers_FaceSide::FirstVertex(int i) const -{ - return i < myEdge.size() ? TopExp::FirstVertex( myEdge[i], 1 ) : TopoDS_Vertex(); -} - -//================================================================================ -/*! - * \brief Return last vertex of the i-the edge - */ -//================================================================================ - -inline TopoDS_Vertex StdMeshers_FaceSide::LastVertex(int i) const -{ - return i<0 ? TopExp::LastVertex( myEdge.back(), 1) : i 0 ) { for ( int i = 0; i < listSize; i++) save << " " << _nbsegs[i]; } listSize = _edgeIDs.size(); - save << listSize; + save << " " << listSize; if ( listSize > 0 ) { for ( int i = 0; i < listSize; i++) save << " " << _edgeIDs[i]; @@ -154,6 +152,7 @@ istream & StdMeshers_FixedPoints1D::LoadFrom(istream & load) isOK = (load >> intVal); if (isOK && intVal > 0) { + _params.clear(); _params.reserve( intVal ); for (int i = 0; i < _params.capacity() && isOK; i++) { isOK = (load >> dblVal); @@ -163,6 +162,7 @@ istream & StdMeshers_FixedPoints1D::LoadFrom(istream & load) isOK = (load >> intVal); if (isOK && intVal > 0) { + _nbsegs.clear(); _nbsegs.reserve( intVal ); for (int i = 0; i < _nbsegs.capacity() && isOK; i++) { isOK = (load >> intVal); @@ -172,6 +172,7 @@ istream & StdMeshers_FixedPoints1D::LoadFrom(istream & load) isOK = (load >> intVal); if (isOK && intVal > 0) { + _edgeIDs.clear(); _edgeIDs.reserve( intVal ); for (int i = 0; i < _edgeIDs.capacity() && isOK; i++) { isOK = (load >> intVal); diff --git a/src/StdMeshers/StdMeshers_FixedPoints1D.hxx b/src/StdMeshers/StdMeshers_FixedPoints1D.hxx index b5126e1c3..4d203e31d 100644 --- a/src/StdMeshers/StdMeshers_FixedPoints1D.hxx +++ b/src/StdMeshers/StdMeshers_FixedPoints1D.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_FixedPoints1D.hxx // Author : Damien COQUERET, OCC diff --git a/src/StdMeshers/StdMeshers_HexaFromSkin_3D.cxx b/src/StdMeshers/StdMeshers_HexaFromSkin_3D.cxx new file mode 100644 index 000000000..28b628c5c --- /dev/null +++ b/src/StdMeshers/StdMeshers_HexaFromSkin_3D.cxx @@ -0,0 +1,1071 @@ +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// 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_HexaFromSkin_3D.cxx +// Created : Wed Jan 27 12:28:07 2010 +// Author : Edward AGAPOV (eap) +// +#include "StdMeshers_HexaFromSkin_3D.hxx" + +#include "SMDS_VolumeOfNodes.hxx" +#include "SMDS_VolumeTool.hxx" +#include "SMESH_Block.hxx" +#include "SMESH_MesherHelper.hxx" + +#include + +//#include "utilities.h" + +// Define error message +#ifdef _DEBUG_ +#define BAD_MESH_ERR \ + error(SMESH_Comment("Can't detect block-wise structure of the input 2D mesh.\n" \ + __FILE__ ":" )<<__LINE__) +#else +#define BAD_MESH_ERR \ + error(SMESH_Comment("Can't detect block-wise structure of the input 2D mesh")) +#endif + +// Debug output +#define _DUMP_(msg) //cout << msg << endl + + + +namespace +{ + enum EBoxSides //!< sides of the block + { + B_BOTTOM=0, B_RIGHT, B_TOP, B_LEFT, B_FRONT, B_BACK, B_UNDEFINED + }; + const char* SBoxSides[] = //!< names of block sides + { + "BOTTOM", "RIGHT", "TOP", "LEFT", "FRONT", "BACK", "UNDEFINED" + }; + enum EQuadEdge //!< edges of quadrangle side + { + Q_BOTTOM, Q_RIGHT, Q_TOP, Q_LEFT, Q_UNDEFINED + }; + + + //================================================================================ + /*! + * \brief return logical coordinates (i.e. min or max) of ends of edge + */ + //================================================================================ + + bool getEdgeEnds(EQuadEdge edge, bool& xMax1, bool& yMax1, bool& xMax2, bool& yMax2 ) + { + xMax1=0, yMax1=0, xMax2=1, yMax2=1; + switch( edge ) + { + case Q_BOTTOM: yMax2 = 0; break; + case Q_RIGHT: xMax1 = 1; break; + case Q_TOP: yMax1 = 1; break; + case Q_LEFT: xMax2 = 0; break; + default: + return false; + } + return true; + } + + //================================================================================ + /*! + * \brief return true if a node is at block corner + */ + //================================================================================ + + bool isCornerNode( const SMDS_MeshNode* n ) + { + return n && n->NbInverseElements( SMDSAbs_Face ) % 2; + } + + //================================================================================ + /*! + * \brief check element type + */ + //================================================================================ + + bool isQuadrangle(const SMDS_MeshElement* e) + { + return ( e && e->NbNodes() == ( e->IsQuadratic() ? 8 : 4 )); + } + + //================================================================================ + /*! + * \brief return opposite node of a quadrangle face + */ + //================================================================================ + + const SMDS_MeshNode* oppositeNode(const SMDS_MeshElement* quad, int iNode) + { + return quad->GetNode( (iNode+2) % 4 ); + } + + //================================================================================ + /*! + * \brief Convertor of a pair of integers to a sole index + */ + struct _Indexer + { + int _xSize, _ySize; + _Indexer( int xSize=0, int ySize=0 ): _xSize(xSize), _ySize(ySize) {} + int size() const { return _xSize * _ySize; } + int operator()(int x, int y) const { return y * _xSize + x; } + }; + //================================================================================ + /*! + * \brief Oriented convertor of a pair of integers to a sole index + */ + class _OrientedIndexer : public _Indexer + { + public: + enum OriFlags //!< types of block side orientation + { + REV_X = 1, REV_Y = 2, SWAP_XY = 4, MAX_ORI = REV_X|REV_Y|SWAP_XY + }; + _OrientedIndexer( const _Indexer& indexer, const int oriFlags ): + _Indexer( indexer._xSize, indexer._ySize ), + _xSize (indexer._xSize), _ySize(indexer._ySize), + _xRevFun((oriFlags & REV_X) ? & reverse : & lazy), + _yRevFun((oriFlags & REV_Y) ? & reverse : & lazy), + _swapFun((oriFlags & SWAP_XY ) ? & swap : & lazy) + { + (*_swapFun)( _xSize, _ySize ); + } + //!< Return index by XY + int operator()(int x, int y) const + { + (*_xRevFun)( x, const_cast( _xSize )); + (*_yRevFun)( y, const_cast( _ySize )); + (*_swapFun)( x, y ); + return _Indexer::operator()(x,y); + } + //!< Return index for a corner + int corner(bool xMax, bool yMax) const + { + int x = xMax, y = yMax, size = 2; + (*_xRevFun)( x, size ); + (*_yRevFun)( y, size ); + (*_swapFun)( x, y ); + return _Indexer::operator()(x ? _Indexer::_xSize-1 : 0 , y ? _Indexer::_ySize-1 : 0); + } + int xSize() const { return _xSize; } + int ySize() const { return _ySize; } + private: + _Indexer _indexer; + int _xSize, _ySize; + + typedef void (*TFun)(int& x, int& y); + TFun _xRevFun, _yRevFun, _swapFun; + + static void lazy(int&, int&) {} + static void reverse(int& x, int& size) { x = size - x - 1; } + static void swap(int& x, int& y) { std::swap(x,y); } + }; + //================================================================================ + /*! + * \brief Structure corresponding to the meshed side of block + */ + struct _BlockSide + { + vector _grid; + _Indexer _index; + int _nbBlocksExpected; + int _nbBlocksFound; + +#ifdef _DEBUG_ +#define _grid_access_(args) _grid.at( args ) +#else +#define _grid_access_(args) _grid[ args ] +#endif + //!< Return node at XY + const SMDS_MeshNode* getNode(int x, int y) const { return _grid_access_( _index( x, y )); } + //!< Set node at XY + void setNode(int x, int y, const SMDS_MeshNode* n) { _grid_access_( _index( x, y )) = n; } + //!< Return an edge + SMESH_OrientedLink getEdge(EQuadEdge edge) const + { + bool x1, y1, x2, y2; getEdgeEnds( edge, x1, y1, x2, y2 ); + return SMESH_OrientedLink( getCornerNode ( x1, y1 ), getCornerNode( x2, y2 )); + } + //!< Return a corner node + const SMDS_MeshNode* getCornerNode(bool isXMax, bool isYMax) const + { + return getNode( isXMax ? _index._xSize-1 : 0 , isYMax ? _index._ySize-1 : 0 ); + } + const SMDS_MeshElement* getCornerFace(const SMDS_MeshNode* cornerNode) const; + //!< True if all blocks this side belongs to have beem found + bool isBound() const { return _nbBlocksExpected <= _nbBlocksFound; } + //!< Return coordinates of node at XY + gp_XYZ getXYZ(int x, int y) const { return SMESH_MeshEditor::TNodeXYZ( getNode( x, y )); } + //!< Return gravity center of the four corners and the middle node + gp_XYZ getGC() const + { + gp_XYZ xyz = + getXYZ( 0, 0 ) + + getXYZ( _index._xSize-1, 0 ) + + getXYZ( 0, _index._ySize-1 ) + + getXYZ( _index._xSize-1, _index._ySize-1 ) + + getXYZ( _index._xSize/2, _index._ySize/2 ); + return xyz / 5; + } + //!< Return number of mesh faces + int getNbFaces() const { return (_index._xSize-1) * (_index._ySize-1); } + }; + //================================================================================ + /*! + * \brief _BlockSide with changed orientation + */ + struct _OrientedBlockSide + { + _BlockSide* _side; + _OrientedIndexer _index; + + _OrientedBlockSide( _BlockSide* side=0, const int oriFlags=0 ): + _side(side), _index(side ? side->_index : _Indexer(), oriFlags ) {} + //!< return coordinates by XY + gp_XYZ xyz(int x, int y) const + { + return SMESH_MeshEditor::TNodeXYZ( _side->_grid_access_( _index( x, y )) ); + } + //!< safely return a node by XY + const SMDS_MeshNode* node(int x, int y) const + { + int i = _index( x, y ); + return ( i < 0 || i >= _side->_grid.size()) ? 0 : _side->_grid[i]; + } + //!< Return an edge + SMESH_OrientedLink edge(EQuadEdge edge) const + { + bool x1, y1, x2, y2; getEdgeEnds( edge, x1, y1, x2, y2 ); + return SMESH_OrientedLink( cornerNode ( x1, y1 ), cornerNode( x2, y2 )); + } + //!< Return a corner node + const SMDS_MeshNode* cornerNode(bool isXMax, bool isYMax) const + { + return _side->_grid_access_( _index.corner( isXMax, isYMax )); + } + //!< return its size in nodes + int getHoriSize() const { return _index.xSize(); } + int getVertSize() const { return _index.ySize(); } + //!< True if _side has been initialized + operator bool() const { return _side; } + //! Direct access to _side + const _BlockSide* operator->() const { return _side; } + _BlockSide* operator->() { return _side; } + }; + //================================================================================ + /*! + * \brief Meshed skin of block + */ + struct _Block + { + _OrientedBlockSide _side[6]; // 6 sides of a sub-block + + const _OrientedBlockSide& getSide(int i) const { return _side[i]; } + bool hasSide( const _OrientedBlockSide& s) const + { + if ( s ) for (int i=0;i<6;++i) if ( _side[i] && _side[i]._side == s._side ) return true; + return false; + } + }; + //================================================================================ + /*! + * \brief Skin mesh possibly containing several meshed blocks + */ + class _Skin + { + public: + + int findBlocks(SMESH_Mesh& mesh); + //!< return i-th block + const _Block& getBlock(int i) const { return _blocks[i]; } + //!< return error description + const SMESH_Comment& error() const { return _error; } + + private: + bool fillSide( _BlockSide& side, const SMDS_MeshElement* cornerQuad); + bool fillRowsUntilCorner(const SMDS_MeshElement* quad, + const SMDS_MeshNode* n1, + const SMDS_MeshNode* n2, + vector& verRow1, + vector& verRow2, + bool alongN1N2 ); + _OrientedBlockSide findBlockSide( EBoxSides startBlockSide, + EQuadEdge sharedSideEdge1, + EQuadEdge sharedSideEdge2); + //!< update own data and data of the side bound to block + void setSideBoundToBlock( _BlockSide& side ) + { + side._nbBlocksFound++; + if ( side.isBound() ) + { + for ( int e = 0; e < int(Q_UNDEFINED); ++e ) + _edge2sides[ side.getEdge( (EQuadEdge) e ) ].erase( &side ); + } + } + //!< store reason of error + int error(const SMESH_Comment& reason) { _error = reason; return 0; } + + SMESH_Comment _error; + + list< _BlockSide > _allSides; + vector< _Block > _blocks; + + //map< const SMDS_MeshNode*, set< _BlockSide* > > _corner2sides; + map< SMESH_OrientedLink, set< _BlockSide* > > _edge2sides; + }; + + //================================================================================ + /*! + * \brief Find and return number of submeshes corresponding to blocks + */ + //================================================================================ + + int _Skin::findBlocks(SMESH_Mesh& mesh) + { + SMESHDS_Mesh* meshDS = mesh.GetMeshDS(); + + // Find a node at any block corner + + SMDS_NodeIteratorPtr nIt = meshDS->nodesIterator(/*idInceasingOrder=*/true); + if ( !nIt->more() ) return error("Empty mesh"); + + const SMDS_MeshNode* nCorner = 0; + while ( nIt->more() ) + { + nCorner = nIt->next(); + if ( isCornerNode( nCorner )) + break; + else + nCorner = 0; + } + if ( !nCorner ) + return BAD_MESH_ERR; + + // -------------------------------------------------------------------- + // Find all block sides starting from mesh faces sharing the corner node + // -------------------------------------------------------------------- + + int nbFacesOnSides = 0; + TIDSortedElemSet cornerFaces; // corner faces of found _BlockSide's + list< const SMDS_MeshNode* > corners( 1, nCorner ); + list< const SMDS_MeshNode* >::iterator corner = corners.begin(); + while ( corner != corners.end() ) + { + SMDS_ElemIteratorPtr faceIt = (*corner)->GetInverseElementIterator( SMDSAbs_Face ); + while ( faceIt->more() ) + { + const SMDS_MeshElement* face = faceIt->next(); + if ( !cornerFaces.insert( face ).second ) + continue; // already loaded block side + + if ( !isQuadrangle( face )) + return error("Non-quadrangle elements in the input mesh"); + + if ( _allSides.empty() || !_allSides.back()._grid.empty() ) + _allSides.push_back( _BlockSide() ); + + _BlockSide& side = _allSides.back(); + if ( !fillSide( side, face ) ) + { + if ( !_error.empty() ) + return false; + } + else + { + for ( int isXMax = 0; isXMax < 2; ++isXMax ) + for ( int isYMax = 0; isYMax < 2; ++isYMax ) + { + const SMDS_MeshNode* nCorner = side.getCornerNode(isXMax,isYMax ); + if ( !isCornerNode( nCorner )) + return BAD_MESH_ERR; + //_corner2sides[ nCorner ].insert( &side ); + corners.push_back( nCorner ); + cornerFaces.insert( side.getCornerFace( nCorner )); + } + for ( int e = 0; e < int(Q_UNDEFINED); ++e ) + _edge2sides[ side.getEdge( (EQuadEdge) e ) ].insert( &side ); + + nbFacesOnSides += side.getNbFaces(); + } + } + ++corner; + + // find block sides of other domains if any + if ( corner == corners.end() && nbFacesOnSides < mesh.NbQuadrangles() ) + { + while ( nIt->more() ) + { + nCorner = nIt->next(); + if ( isCornerNode( nCorner )) + corner = corners.insert( corner, nCorner ); + } + nbFacesOnSides = mesh.NbQuadrangles(); + } + } + + if ( _allSides.empty() ) + return BAD_MESH_ERR; + if ( _allSides.back()._grid.empty() ) + _allSides.pop_back(); + + // --------------------------- + // Organize sides into blocks + // --------------------------- + + // analyse sharing of sides by blocks + int nbBlockSides = 0; // nb of block sides taking into account their sharing + list < _BlockSide >::iterator sideIt = _allSides.begin(); + for ( ; sideIt != _allSides.end(); ++sideIt ) + { + _BlockSide& side = *sideIt; + bool isSharedSide = true; + for ( int e = 0; e < int(Q_UNDEFINED) && isSharedSide; ++e ) + isSharedSide = _edge2sides[ side.getEdge( (EQuadEdge) e ) ].size() > 2; + side._nbBlocksFound = 0; + side._nbBlocksExpected = isSharedSide ? 2 : 1; + nbBlockSides += side._nbBlocksExpected; + } + + // find sides of each block + int nbBlocks = 0; + while ( nbBlockSides >= 6 ) + { + // get any side not bound to all blocks it belongs to + sideIt = _allSides.begin(); + while ( sideIt != _allSides.end() && sideIt->isBound()) + ++sideIt; + + // start searching for block sides from the got side + bool ok = true; + if ( _blocks.empty() || _blocks.back()._side[B_FRONT] ) + _blocks.resize( _blocks.size() + 1 ); + + _Block& block = _blocks.back(); + block._side[B_FRONT] = &(*sideIt); + setSideBoundToBlock( *sideIt ); + nbBlockSides--; + + // edges of neighbour sides of B_FRONT corresponding to front's edges + EQuadEdge edgeOfFront[4] = { Q_BOTTOM, Q_RIGHT, Q_TOP, Q_LEFT }; + EQuadEdge edgeToFind [4] = { Q_BOTTOM, Q_LEFT, Q_BOTTOM, Q_LEFT }; + for ( int i = Q_BOTTOM; ok && i <= Q_LEFT; ++i ) + ok = ( block._side[i] = findBlockSide( B_FRONT, edgeOfFront[i], edgeToFind[i])); + if ( ok ) + ok = ( block._side[B_BACK] = findBlockSide( B_TOP, Q_TOP, Q_TOP )); + + if ( ok ) + { + // check if just found block is same as one of previously found + bool isSame = false; + for ( int i = 1; i < _blocks.size() && !isSame; ++i ) + { + _Block& prevBlock = _blocks[i-1]; + isSame = true; + for ( int j = 0; j < 6 && isSame; ++j ) + isSame = prevBlock.hasSide( block._side[ j ]); + } + ok = !isSame; + } + + // count the found sides + _DUMP_(endl); + for (int i = 0; i < B_UNDEFINED; ++i ) + { + _DUMP_("** Block side "<< SBoxSides[i] <<" "<< block._side[ i ]._side); + if ( block._side[ i ] ) + { + if ( ok && i != B_FRONT) + { + setSideBoundToBlock( *block._side[ i ]._side ); + nbBlockSides--; + } + _DUMP_("Corner 0,0 "<< block._side[ i ].cornerNode(0,0)); + _DUMP_("Corner 1,0 "<< block._side[ i ].cornerNode(1,0)); + _DUMP_("Corner 1,1 "<< block._side[ i ].cornerNode(1,1)); + _DUMP_("Corner 0,1 "<< block._side[ i ].cornerNode(0,1)); + } + else + { + _DUMP_("Not found"<GetNode(i))) + nCorner = firstQuad->GetNode(i); + if ( !nCorner ) return false; + + // get a node on block edge + int iCorner = firstQuad->GetNodeIndex( nCorner ); + const SMDS_MeshNode* nOnEdge = firstQuad->GetNode( (iCorner+1) % 4); + + // find out size of block side + vector horRow1, horRow2, verRow1, verRow2; + if ( !fillRowsUntilCorner( firstQuad, nCorner, nOnEdge, horRow1, horRow2, true ) || + !fillRowsUntilCorner( firstQuad, nCorner, nOnEdge, verRow1, verRow2, false )) + return false; + nbX = horRow1.size(), nbY = verRow1.size(); + + // store found nodes + side._index._xSize = horRow1.size(); + side._index._ySize = verRow1.size(); + side._grid.resize( side._index.size(), NULL ); + + for ( x = 0; x < horRow1.size(); ++x ) + { + side.setNode( x, 0, horRow1[x] ); + side.setNode( x, 1, horRow2[x] ); + } + for ( y = 0; y < verRow1.size(); ++y ) + { + side.setNode( 0, y, verRow1[y] ); + side.setNode( 1, y, verRow2[y] ); + } + } + // Find the rest nodes + + y = 1; // y of the row to fill + TIDSortedElemSet emptySet, avoidSet; + while ( ++y < nbY ) + { + // get next firstQuad in the next row of quadrangles + // + // n2up + // o---o <- y row + // | | + // o---o o o o o <- found nodes + //n1down n2down + // + int i1down, i2down, i2up; + const SMDS_MeshNode* n1down = side.getNode( 0, y-1 ); + const SMDS_MeshNode* n2down = side.getNode( 1, y-1 ); + avoidSet.clear(); avoidSet.insert( firstQuad ); + firstQuad = SMESH_MeshEditor::FindFaceInSet( n1down, n2down, emptySet, avoidSet, + &i1down, &i2down); + if ( !isQuadrangle( firstQuad )) + return BAD_MESH_ERR; + + const SMDS_MeshNode* n2up = oppositeNode( firstQuad, i1down ); + avoidSet.clear(); avoidSet.insert( firstQuad ); + + // find the rest nodes in the y-th row by faces in the row + + x = 1; + while ( ++x < nbX ) + { + const SMDS_MeshElement* quad = SMESH_MeshEditor::FindFaceInSet( n2up, n2down, emptySet, + avoidSet, &i2up, &i2down); + if ( !isQuadrangle( quad )) + return BAD_MESH_ERR; + + n2up = oppositeNode( quad, i2down ); + n2down = oppositeNode( quad, i2up ); + avoidSet.clear(); avoidSet.insert( quad ); + + side.setNode( x, y, n2up ); + } + } + + return true; + } + + //================================================================================ + /*! + * \brief Try to find a block side adjacent to the given side by given edge + */ + //================================================================================ + + _OrientedBlockSide _Skin::findBlockSide( EBoxSides startBlockSide, + EQuadEdge sharedSideEdge1, + EQuadEdge sharedSideEdge2) + { + _Block& block = _blocks.back(); + _OrientedBlockSide& side1 = block._side[ startBlockSide ]; + + // get corner nodes of the given block edge + SMESH_OrientedLink edge = side1.edge( sharedSideEdge1 ); + const SMDS_MeshNode* n1 = edge.node1(); + const SMDS_MeshNode* n2 = edge.node2(); + if ( edge._reversed ) swap( n1, n2 ); + + // find all sides sharing both nodes n1 and n2 + set< _BlockSide* > sidesOnEdge = _edge2sides[ edge ]; // copy a set + + // exclude loaded sides of block from sidesOnEdge + int nbLoadedSides = 0; + for (int i = 0; i < B_UNDEFINED; ++i ) + { + if ( block._side[ i ] ) + { + nbLoadedSides++; + sidesOnEdge.erase( block._side[ i ]._side ); + } + } + int nbSidesOnEdge = sidesOnEdge.size(); + _DUMP_("nbSidesOnEdge "<< nbSidesOnEdge << " " << n1->GetID() << "-" << n2->GetID() ); + if ( nbSidesOnEdge == 0 ) + return 0; + + _BlockSide* foundSide = 0; + if ( nbSidesOnEdge == 1 /*|| nbSidesOnEdge == 2 && nbLoadedSides == 1 */) + { + foundSide = *sidesOnEdge.begin(); + } + else + { + // Select one of found sides most close to startBlockSide + + // gravity center of already loaded block sides + gp_XYZ gc(0,0,0); + for (int i = 0; i < B_UNDEFINED; ++i ) + if ( block._side[ i ] ) + gc += block._side[ i ]._side->getGC(); + gc /= nbLoadedSides; + + gp_XYZ p1 ( n1->X(),n1->Y(),n1->Z()), p2 (n2->X(),n2->Y(),n2->Z()); + gp_Vec p1p2( p1, p2 ); + + const SMDS_MeshElement* face1 = side1->getCornerFace( n1 ); + gp_XYZ p1Op = SMESH_MeshEditor::TNodeXYZ( oppositeNode( face1, face1->GetNodeIndex(n1))); + gp_Vec side1Dir( p1, p1Op ); + gp_Ax2 pln( p1, p1p2, side1Dir ); // plane with normal p1p2 and X dir side1Dir + _DUMP_(" Select adjacent for "<< side1._side << " - side dir (" + << side1Dir.X() << ", " << side1Dir.Y() << ", " << side1Dir.Z() << ")" ); + + map < double , _BlockSide* > angleOfSide; + set< _BlockSide* >::iterator sideIt = sidesOnEdge.begin(); + for (; sideIt != sidesOnEdge.end(); ++sideIt ) + { + _BlockSide* sideI = *sideIt; + const SMDS_MeshElement* faceI = sideI->getCornerFace( n1 ); + gp_XYZ p1Op = SMESH_MeshEditor::TNodeXYZ( oppositeNode( faceI, faceI->GetNodeIndex(n1))); + gp_Vec sideIDir( p1, p1Op ); + // compute angle of (sideIDir projection to pln) and (X dir of pln) + gp_Vec2d sideIDirProj( sideIDir * pln.XDirection(), sideIDir * pln.YDirection()); + double angle = sideIDirProj.Angle( gp::DX2d() ); + if ( angle < 0 ) angle += 2 * PI; + angleOfSide.insert( make_pair( angle, sideI )); + _DUMP_(" "<< sideI << " - side dir (" + << sideIDir.X() << ", " << sideIDir.Y() << ", " << sideIDir.Z() << ")" + << " angle " << angle); + } + gp_Vec gcDir( p1, gc ); + gp_Vec2d gcDirProj( gcDir * pln.XDirection(), gcDir * pln.YDirection()); + double gcAngle = gcDirProj.Angle( gp::DX2d() ); + foundSide = gcAngle < 0 ? angleOfSide.rbegin()->second : angleOfSide.begin()->second; + _DUMP_(" selected "<< foundSide ); + } + + // Orient the found side correctly + + // corners of found side corresponding to nodes n1 and n2 + bool xMax1, yMax1, xMax2, yMax2; + if ( !getEdgeEnds( sharedSideEdge2, xMax1, yMax1, xMax2, yMax2 )) + return error(SMESH_Comment("Internal error at ")<<__FILE__<<":"<<__LINE__), + _OrientedBlockSide(0); + + for ( int ori = 0; ori < _OrientedIndexer::MAX_ORI+1; ++ori ) + { + _OrientedBlockSide orientedSide( foundSide, ori ); + const SMDS_MeshNode* n12 = orientedSide.cornerNode( xMax1, yMax1); + const SMDS_MeshNode* n22 = orientedSide.cornerNode( xMax2, yMax2); + if ( n1 == n12 && n2 == n22 ) + return orientedSide; + } + error(SMESH_Comment("Failed to orient a block side found by edge ")<& row1, + vector& row2, + const bool alongN1N2 ) + { + const SMDS_MeshNode* corner1 = n1; + + // Store nodes of quad in the rows and find new n1 and n2 to get + // the next face so that new n2 is on block edge + int i1 = quad->GetNodeIndex( n1 ); + int i2 = quad->GetNodeIndex( n2 ); + row1.clear(); row2.clear(); + row1.push_back( n1 ); + if ( alongN1N2 ) + { + row1.push_back( n2 ); + row2.push_back( oppositeNode( quad, i2 )); + row2.push_back( n1 = oppositeNode( quad, i1 )); + } + else + { + row2.push_back( n2 ); + row1.push_back( n2 = oppositeNode( quad, i2 )); + row2.push_back( n1 = oppositeNode( quad, i1 )); + } + + // Find the rest nodes + TIDSortedElemSet emptySet, avoidSet; + while ( !isCornerNode( n2 )) + { + avoidSet.clear(); avoidSet.insert( quad ); + quad = SMESH_MeshEditor::FindFaceInSet( n1, n2, emptySet, avoidSet, &i1, &i2 ); + if ( !isQuadrangle( quad )) + return BAD_MESH_ERR; + + row1.push_back( n2 = oppositeNode( quad, i1 )); + row2.push_back( n1 = oppositeNode( quad, i2 )); + } + return n1 != corner1; + } + + //================================================================================ + /*! + * \brief Return a corner face by a corner node + */ + //================================================================================ + + const SMDS_MeshElement* _BlockSide::getCornerFace(const SMDS_MeshNode* cornerNode) const + { + int x, y, isXMax, isYMax, found = 0; + for ( isXMax = 0; isXMax < 2; ++isXMax ) + { + for ( isYMax = 0; isYMax < 2; ++isYMax ) + { + x = isXMax ? _index._xSize-1 : 0; + y = isYMax ? _index._ySize-1 : 0; + found = ( getNode(x,y) == cornerNode ); + if ( found ) break; + } + if ( found ) break; + } + if ( !found ) return 0; + int dx = isXMax ? -1 : +1; + int dy = isYMax ? -1 : +1; + const SMDS_MeshNode* n1 = getNode(x,y); + const SMDS_MeshNode* n2 = getNode(x+dx,y); + const SMDS_MeshNode* n3 = getNode(x,y+dy); + const SMDS_MeshNode* n4 = getNode(x+dx,y+dy); + return SMDS_Mesh::FindFace(n1, n2, n3, n4 ); + } + +} + +//======================================================================= +//function : StdMeshers_HexaFromSkin_3D +//purpose : +//======================================================================= + +StdMeshers_HexaFromSkin_3D::StdMeshers_HexaFromSkin_3D(int hypId, int studyId, SMESH_Gen* gen) + :SMESH_3D_Algo(hypId, studyId, gen) +{ + MESSAGE("StdMeshers_HexaFromSkin_3D::StdMeshers_HexaFromSkin_3D"); + _name = "HexaFromSkin_3D"; +} + +StdMeshers_HexaFromSkin_3D::~StdMeshers_HexaFromSkin_3D() +{ + MESSAGE("StdMeshers_HexaFromSkin_3D::~StdMeshers_HexaFromSkin_3D"); +} + +//================================================================================ +/*! + * \brief Main method, which generates hexaheda + */ +//================================================================================ + +bool StdMeshers_HexaFromSkin_3D::Compute(SMESH_Mesh & aMesh, SMESH_MesherHelper* aHelper) +{ + _Skin skin; + int nbBlocks = skin.findBlocks(aMesh); + if ( nbBlocks == 0 ) + return error( skin.error()); + + vector< vector< const SMDS_MeshNode* > > columns; + int x, xSize, y, ySize, z, zSize; + _Indexer colIndex; + + for ( int i = 0; i < nbBlocks; ++i ) + { + const _Block& block = skin.getBlock( i ); + + // ------------------------------------------ + // Fill columns of nodes with existing nodes + // ------------------------------------------ + + xSize = block.getSide(B_BOTTOM).getHoriSize(); + ySize = block.getSide(B_BOTTOM).getVertSize(); + zSize = block.getSide(B_FRONT ).getVertSize(); + int X = xSize - 1, Y = ySize - 1, Z = zSize - 1; + colIndex = _Indexer( xSize, ySize ); + columns.resize( colIndex.size() ); + + // fill node columns by front and back box sides + for ( x = 0; x < xSize; ++x ) { + vector< const SMDS_MeshNode* >& column0 = columns[ colIndex( x, 0 )]; + vector< const SMDS_MeshNode* >& column1 = columns[ colIndex( x, Y )]; + column0.resize( zSize ); + column1.resize( zSize ); + for ( z = 0; z < zSize; ++z ) { + column0[ z ] = block.getSide(B_FRONT).node( x, z ); + column1[ z ] = block.getSide(B_BACK) .node( x, z ); + } + } + // fill node columns by left and right box sides + for ( y = 1; y < ySize-1; ++y ) { + vector< const SMDS_MeshNode* >& column0 = columns[ colIndex( 0, y )]; + vector< const SMDS_MeshNode* >& column1 = columns[ colIndex( X, y )]; + column0.resize( zSize ); + column1.resize( zSize ); + for ( z = 0; z < zSize; ++z ) { + column0[ z ] = block.getSide(B_LEFT) .node( y, z ); + column1[ z ] = block.getSide(B_RIGHT).node( y, z ); + } + } + // get nodes from top and bottom box sides + for ( x = 1; x < xSize-1; ++x ) { + for ( y = 1; y < ySize-1; ++y ) { + vector< const SMDS_MeshNode* >& column = columns[ colIndex( x, y )]; + column.resize( zSize ); + column.front() = block.getSide(B_BOTTOM).node( x, y ); + column.back() = block.getSide(B_TOP) .node( x, y ); + } + } + + // ---------------------------- + // Add internal nodes of a box + // ---------------------------- + // projection points of internal nodes on box subshapes by which + // coordinates of internal nodes are computed + vector pointOnShape( SMESH_Block::ID_Shell ); + + // projections on vertices are constant + pointOnShape[ SMESH_Block::ID_V000 ] = block.getSide(B_BOTTOM).xyz( 0, 0 ); + pointOnShape[ SMESH_Block::ID_V100 ] = block.getSide(B_BOTTOM).xyz( X, 0 ); + pointOnShape[ SMESH_Block::ID_V010 ] = block.getSide(B_BOTTOM).xyz( 0, Y ); + pointOnShape[ SMESH_Block::ID_V110 ] = block.getSide(B_BOTTOM).xyz( X, Y ); + pointOnShape[ SMESH_Block::ID_V001 ] = block.getSide(B_TOP).xyz( 0, 0 ); + pointOnShape[ SMESH_Block::ID_V101 ] = block.getSide(B_TOP).xyz( X, 0 ); + pointOnShape[ SMESH_Block::ID_V011 ] = block.getSide(B_TOP).xyz( 0, Y ); + pointOnShape[ SMESH_Block::ID_V111 ] = block.getSide(B_TOP).xyz( X, Y ); + + for ( x = 1; x < xSize-1; ++x ) + { + gp_XYZ params; // normalized parameters of internal node within a unit box + params.SetCoord( 1, x / double(X) ); + for ( y = 1; y < ySize-1; ++y ) + { + params.SetCoord( 2, y / double(Y) ); + // column to fill during z loop + vector< const SMDS_MeshNode* >& column = columns[ colIndex( x, y )]; + // projections on horizontal edges + pointOnShape[ SMESH_Block::ID_Ex00 ] = block.getSide(B_BOTTOM).xyz( x, 0 ); + pointOnShape[ SMESH_Block::ID_Ex10 ] = block.getSide(B_BOTTOM).xyz( x, Y ); + pointOnShape[ SMESH_Block::ID_E0y0 ] = block.getSide(B_BOTTOM).xyz( 0, y ); + pointOnShape[ SMESH_Block::ID_E1y0 ] = block.getSide(B_BOTTOM).xyz( X, y ); + pointOnShape[ SMESH_Block::ID_Ex01 ] = block.getSide(B_TOP).xyz( x, 0 ); + pointOnShape[ SMESH_Block::ID_Ex11 ] = block.getSide(B_TOP).xyz( x, Y ); + pointOnShape[ SMESH_Block::ID_E0y1 ] = block.getSide(B_TOP).xyz( 0, y ); + pointOnShape[ SMESH_Block::ID_E1y1 ] = block.getSide(B_TOP).xyz( X, y ); + // projections on horizontal sides + pointOnShape[ SMESH_Block::ID_Fxy0 ] = block.getSide(B_BOTTOM).xyz( x, y ); + pointOnShape[ SMESH_Block::ID_Fxy1 ] = block.getSide(B_TOP) .xyz( x, y ); + for ( z = 1; z < zSize-1; ++z ) // z loop + { + params.SetCoord( 3, z / double(Z) ); + // projections on vertical edges + pointOnShape[ SMESH_Block::ID_E00z ] = block.getSide(B_FRONT).xyz( 0, z ); + pointOnShape[ SMESH_Block::ID_E10z ] = block.getSide(B_FRONT).xyz( X, z ); + pointOnShape[ SMESH_Block::ID_E01z ] = block.getSide(B_BACK).xyz( 0, z ); + pointOnShape[ SMESH_Block::ID_E11z ] = block.getSide(B_BACK).xyz( X, z ); + // projections on vertical sides + pointOnShape[ SMESH_Block::ID_Fx0z ] = block.getSide(B_FRONT).xyz( x, z ); + pointOnShape[ SMESH_Block::ID_Fx1z ] = block.getSide(B_BACK) .xyz( x, z ); + pointOnShape[ SMESH_Block::ID_F0yz ] = block.getSide(B_LEFT) .xyz( y, z ); + pointOnShape[ SMESH_Block::ID_F1yz ] = block.getSide(B_RIGHT).xyz( y, z ); + + // compute internal node coordinates + gp_XYZ coords; + SMESH_Block::ShellPoint( params, pointOnShape, coords ); + column[ z ] = aHelper->AddNode( coords.X(), coords.Y(), coords.Z() ); + +#ifdef DEB_GRID + // debug + //cout << "----------------------------------------------------------------------"<& col00 = columns[ colIndex( x, y )]; + vector< const SMDS_MeshNode* >& col10 = columns[ colIndex( x+1, y )]; + vector< const SMDS_MeshNode* >& col01 = columns[ colIndex( x, y+1 )]; + vector< const SMDS_MeshNode* >& col11 = columns[ colIndex( x+1, y+1 )]; + // bottom face normal of a hexa mush point outside the volume + if ( isForw ) + for ( z = 0; z < zSize-1; ++z ) + aHelper->AddVolume(col00[z], col01[z], col11[z], col10[z], + col00[z+1], col01[z+1], col11[z+1], col10[z+1]); + else + for ( z = 0; z < zSize-1; ++z ) + aHelper->AddVolume(col00[z], col10[z], col11[z], col01[z], + col00[z+1], col10[z+1], col11[z+1], col01[z+1]); + } + } + } // loop on blocks + + return true; +} + +//================================================================================ +/*! + * \brief Evaluate nb of hexa + */ +//================================================================================ + +bool StdMeshers_HexaFromSkin_3D::Evaluate(SMESH_Mesh & aMesh, + const TopoDS_Shape & aShape, + MapShapeNbElems& aResMap) +{ + _Skin skin; + int nbBlocks = skin.findBlocks(aMesh); + if ( nbBlocks == 0 ) + return error( skin.error()); + + bool secondOrder = aMesh.NbFaces( ORDER_QUADRATIC ); + + int entity = secondOrder ? SMDSEntity_Quad_Hexa : SMDSEntity_Hexa; + vector& nbByType = aResMap[ aMesh.GetSubMesh( aShape )]; + if ( entity >= nbByType.size() ) + nbByType.resize( SMDSEntity_Last, 0 ); + + for ( int i = 0; i < nbBlocks; ++i ) + { + const _Block& block = skin.getBlock( i ); + + int nbX = block.getSide(B_BOTTOM).getHoriSize(); + int nbY = block.getSide(B_BOTTOM).getVertSize(); + int nbZ = block.getSide(B_FRONT ).getVertSize(); + + int nbHexa = (nbX-1) * (nbY-1) * (nbZ-1); + int nbNodes = (nbX-2) * (nbY-2) * (nbZ-2); + if ( secondOrder ) + nbNodes += + (nbX-2) * (nbY-2) * (nbZ-1) + + (nbX-2) * (nbY-1) * (nbZ-2) + + (nbX-1) * (nbY-2) * (nbZ-2); + + + nbByType[ entity ] += nbHexa; + nbByType[ SMDSEntity_Node ] += nbNodes; + } + + return true; +} + +//================================================================================ +/*! + * \brief Abstract method must be defined but does nothing + */ +//================================================================================ + +bool StdMeshers_HexaFromSkin_3D::CheckHypothesis(SMESH_Mesh&, const TopoDS_Shape&, + Hypothesis_Status& aStatus) +{ + aStatus = SMESH_Hypothesis::HYP_OK; + return true; +} + +//================================================================================ +/*! + * \brief Abstract method must be defined but just reports an error as this + * algo is not intended to work with shapes + */ +//================================================================================ + +bool StdMeshers_HexaFromSkin_3D::Compute(SMESH_Mesh&, const TopoDS_Shape&) +{ + return error("Algorithm can't work with geometrical shapes"); +} + diff --git a/src/StdMeshers/StdMeshers_HexaFromSkin_3D.hxx b/src/StdMeshers/StdMeshers_HexaFromSkin_3D.hxx new file mode 100644 index 000000000..a2d811fee --- /dev/null +++ b/src/StdMeshers/StdMeshers_HexaFromSkin_3D.hxx @@ -0,0 +1,54 @@ +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// 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_HexaFromSkin_3D.hxx +// Created : Wed Jan 27 12:23:21 2010 +// Author : Edward AGAPOV (eap) +// +#ifndef __StdMeshers_HexaFromSkin_3D_HXX__ +#define __StdMeshers_HexaFromSkin_3D_HXX__ + +#include "SMESH_StdMeshers.hxx" +#include "SMESH_3D_Algo.hxx" + +/*! + * \brief Alorithm generating hexahedral mesh from 2D skin of block + */ + +class STDMESHERS_EXPORT StdMeshers_HexaFromSkin_3D : public SMESH_3D_Algo +{ +public: + StdMeshers_HexaFromSkin_3D(int hypId, int studyId, SMESH_Gen* gen); + virtual ~StdMeshers_HexaFromSkin_3D(); + + virtual bool Compute(SMESH_Mesh & aMesh, SMESH_MesherHelper* aHelper); + + virtual bool CheckHypothesis(SMESH_Mesh& aMesh, + const TopoDS_Shape& aShape, + Hypothesis_Status& aStatus); + + virtual bool Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape); + + virtual bool Evaluate(SMESH_Mesh & aMesh, + const TopoDS_Shape & aShape, + MapShapeNbElems& aResMap); + +}; + +#endif diff --git a/src/StdMeshers/StdMeshers_Hexa_3D.cxx b/src/StdMeshers/StdMeshers_Hexa_3D.cxx index 7e1c49a35..4701c050d 100644 --- a/src/StdMeshers/StdMeshers_Hexa_3D.cxx +++ b/src/StdMeshers/StdMeshers_Hexa_3D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Hexa_3D.cxx // Moved here from SMESH_Hexa_3D.cxx @@ -26,8 +27,10 @@ // Module : SMESH // #include "StdMeshers_Hexa_3D.hxx" + #include "StdMeshers_CompositeHexa_3D.hxx" #include "StdMeshers_FaceSide.hxx" +#include "StdMeshers_HexaFromSkin_3D.hxx" #include "StdMeshers_Penta_3D.hxx" #include "StdMeshers_Prism_3D.hxx" #include "StdMeshers_Quadrangle_2D.hxx" @@ -78,6 +81,7 @@ StdMeshers_Hexa_3D::StdMeshers_Hexa_3D(int hypId, int studyId, SMESH_Gen * gen) MESSAGE("StdMeshers_Hexa_3D::StdMeshers_Hexa_3D"); _name = "Hexa_3D"; _shapeType = (1 << TopAbs_SHELL) | (1 << TopAbs_SOLID); // 1 bit /shape type + _requireShape = false; } //============================================================================= @@ -865,10 +869,27 @@ bool StdMeshers_Hexa_3D::Evaluate(SMESH_Mesh & aMesh, return true; } +//================================================================================ +/*! + * \brief Computes hexahedral mesh from 2D mesh of block + */ +//================================================================================ + +bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh & aMesh, SMESH_MesherHelper* aHelper) +{ + static StdMeshers_HexaFromSkin_3D * algo = 0; + if ( !algo ) { + SMESH_Gen* gen = aMesh.GetGen(); + algo = new StdMeshers_HexaFromSkin_3D( gen->GetANewId(), 0, gen ); + } + algo->InitComputeError(); + algo->Compute( aMesh, aHelper ); + return error( algo->GetComputeError()); +} //============================================================================= /*! - * + * */ //============================================================================= diff --git a/src/StdMeshers/StdMeshers_Hexa_3D.hxx b/src/StdMeshers/StdMeshers_Hexa_3D.hxx index d34d812dd..f4608a79a 100644 --- a/src/StdMeshers/StdMeshers_Hexa_3D.hxx +++ b/src/StdMeshers/StdMeshers_Hexa_3D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Hexa_3D.hxx // Moved here from SMESH_Hexa_3D.hxx @@ -73,9 +74,9 @@ public: const TopoDS_Shape& aShape, SMESH_Hypothesis::Hypothesis_Status& aStatus); - virtual bool Compute(SMESH_Mesh& aMesh, - const TopoDS_Shape& aShape) - /*throw (SALOME_Exception)*/; + virtual bool Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape); + + virtual bool Compute(SMESH_Mesh & aMesh, SMESH_MesherHelper* aHelper); virtual bool Evaluate(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape, MapShapeNbElems& aResMap); @@ -87,32 +88,32 @@ public: protected: TopoDS_Edge EdgeNotInFace(SMESH_Mesh& aMesh, - const TopoDS_Shape& aShape, - const TopoDS_Face& aFace, - const TopoDS_Vertex& aVertex, - const TopTools_IndexedDataMapOfShapeListOfShape& MS); + const TopoDS_Shape& aShape, + const TopoDS_Face& aFace, + const TopoDS_Vertex& aVertex, + const TopTools_IndexedDataMapOfShapeListOfShape& MS); int GetFaceIndex(SMESH_Mesh& aMesh, - const TopoDS_Shape& aShape, - const std::vector& meshFaces, - const TopoDS_Vertex& V0, - const TopoDS_Vertex& V1, - const TopoDS_Vertex& V2, - const TopoDS_Vertex& V3); + const TopoDS_Shape& aShape, + const std::vector& meshFaces, + const TopoDS_Vertex& V0, + const TopoDS_Vertex& V1, + const TopoDS_Vertex& V2, + const TopoDS_Vertex& V3); void GetConv2DCoefs(const faceQuadStruct& quad, - const TopoDS_Shape& aShape, - const TopoDS_Vertex& V0, - const TopoDS_Vertex& V1, - const TopoDS_Vertex& V2, - const TopoDS_Vertex& V3, - Conv2DStruct& conv); + const TopoDS_Shape& aShape, + const TopoDS_Vertex& V0, + const TopoDS_Vertex& V1, + const TopoDS_Vertex& V2, + const TopoDS_Vertex& V3, + Conv2DStruct& conv); void GetPoint(Pt3 p, - int i, int j, int k, - int nbx, int nby, int nbz, - Point3DStruct *np, - const SMESHDS_Mesh* meshDS); + int i, int j, int k, + int nbx, int nby, int nbz, + Point3DStruct *np, + const SMESHDS_Mesh* meshDS); bool ClearAndReturn(FaceQuadStruct* theQuads[6], const bool res); }; diff --git a/src/StdMeshers/StdMeshers_LayerDistribution.cxx b/src/StdMeshers/StdMeshers_LayerDistribution.cxx index 8e5987e6b..56cbf7492 100644 --- a/src/StdMeshers/StdMeshers_LayerDistribution.cxx +++ b/src/StdMeshers/StdMeshers_LayerDistribution.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's classes // File : StdMeshers_LayerDistribution.cxx // Author : Edward AGAPOV diff --git a/src/StdMeshers/StdMeshers_LayerDistribution.hxx b/src/StdMeshers/StdMeshers_LayerDistribution.hxx index aca054d4f..0f780cd22 100644 --- a/src/StdMeshers/StdMeshers_LayerDistribution.hxx +++ b/src/StdMeshers/StdMeshers_LayerDistribution.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's calsses // File : StdMeshers_LayerDistribution.hxx // Author : Edward AGAPOV diff --git a/src/StdMeshers/StdMeshers_LayerDistribution2D.cxx b/src/StdMeshers/StdMeshers_LayerDistribution2D.cxx index 23d039bee..279466dcc 100644 --- a/src/StdMeshers/StdMeshers_LayerDistribution2D.cxx +++ b/src/StdMeshers/StdMeshers_LayerDistribution2D.cxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's classes // File : StdMeshers_LayerDistribution2D.cxx // Author : Edward AGAPOV diff --git a/src/StdMeshers/StdMeshers_LayerDistribution2D.hxx b/src/StdMeshers/StdMeshers_LayerDistribution2D.hxx index d06b6ead2..267003ab0 100644 --- a/src/StdMeshers/StdMeshers_LayerDistribution2D.hxx +++ b/src/StdMeshers/StdMeshers_LayerDistribution2D.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's calsses // File : StdMeshers_LayerDistribution2D.hxx // Author : Edward AGAPOV diff --git a/src/StdMeshers/StdMeshers_LengthFromEdges.cxx b/src/StdMeshers/StdMeshers_LengthFromEdges.cxx index cad6e9186..9a8395f30 100644 --- a/src/StdMeshers/StdMeshers_LengthFromEdges.cxx +++ b/src/StdMeshers/StdMeshers_LengthFromEdges.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_LengthFromEdges.cxx // Moved here from SMESH_LengthFromEdges.cxx diff --git a/src/StdMeshers/StdMeshers_LengthFromEdges.hxx b/src/StdMeshers/StdMeshers_LengthFromEdges.hxx index cb52638e5..b0dd703b1 100644 --- a/src/StdMeshers/StdMeshers_LengthFromEdges.hxx +++ b/src/StdMeshers/StdMeshers_LengthFromEdges.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,13 +19,13 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_LengthFromEdges.hxx // Moved here from SMESH_LengthFromEdges.hxx // Author : Paul RASCLE, EDF // Module : SMESH // - #ifndef _SMESH_LENGTHFROMEDGES_HXX_ #define _SMESH_LENGTHFROMEDGES_HXX_ diff --git a/src/StdMeshers/StdMeshers_LocalLength.cxx b/src/StdMeshers/StdMeshers_LocalLength.cxx index d52d2de54..2c8646bd6 100644 --- a/src/StdMeshers/StdMeshers_LocalLength.cxx +++ b/src/StdMeshers/StdMeshers_LocalLength.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,13 +19,13 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_LocalLength.cxx // Moved here from SMESH_LocalLength.cxx // Author : Paul RASCLE, EDF // Module : SMESH // - #include "StdMeshers_LocalLength.hxx" #include "SMESH_Mesh.hxx" diff --git a/src/StdMeshers/StdMeshers_LocalLength.hxx b/src/StdMeshers/StdMeshers_LocalLength.hxx index 1c8d72b27..3dabbbaef 100644 --- a/src/StdMeshers/StdMeshers_LocalLength.hxx +++ b/src/StdMeshers/StdMeshers_LocalLength.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,13 +19,13 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_LocalLength.hxx // Moved here from SMESH_LocalLength.hxx // Author : Paul RASCLE, EDF // Module : SMESH // - #ifndef _SMESH_LOCALLENGTH_HXX_ #define _SMESH_LOCALLENGTH_HXX_ diff --git a/src/StdMeshers/StdMeshers_MEFISTO_2D.cxx b/src/StdMeshers/StdMeshers_MEFISTO_2D.cxx index f4ef0198d..e8516d311 100644 --- a/src/StdMeshers/StdMeshers_MEFISTO_2D.cxx +++ b/src/StdMeshers/StdMeshers_MEFISTO_2D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_MEFISTO_2D.cxx // Moved here from SMESH_MEFISTO_2D.cxx @@ -296,8 +297,8 @@ bool StdMeshers_MEFISTO_2D::Compute(SMESH_Mesh & aMesh, const TopoDS_Shape & aSh //============================================================================= bool StdMeshers_MEFISTO_2D::Evaluate(SMESH_Mesh & aMesh, - const TopoDS_Shape & aShape, - MapShapeNbElems& aResMap) + const TopoDS_Shape & aShape, + MapShapeNbElems& aResMap) { MESSAGE("StdMeshers_MEFISTO_2D::Evaluate"); @@ -604,8 +605,31 @@ bool StdMeshers_MEFISTO_2D::LoadPoints(TWireVector & wires, // set UV uvslf[m].x = uvPt->u * scalex; uvslf[m].y = uvPt->v * scaley; - if ( uvPt->node->GetPosition()->GetTypeOfPosition() == SMDS_TOP_VERTEX ) + switch ( uvPt->node->GetPosition()->GetTypeOfPosition()) + { + case SMDS_TOP_VERTEX: mOnVertex.push_back( m ); + break; + case SMDS_TOP_EDGE: + // In order to detect degenerated faces easily, we replace + // nodes on a degenerated edge by node on the vertex of that edge + if ( myTool->IsDegenShape( uvPt->node->GetPosition()->GetShapeId() )) + { + int edgeID = uvPt->node->GetPosition()->GetShapeId(); + SMESH_subMesh* edgeSM = myTool->GetMesh()->GetSubMeshContaining( edgeID ); + SMESH_subMeshIteratorPtr smIt = edgeSM->getDependsOnIterator( /*includeSelf=*/0, + /*complexShapeFirst=*/0); + if ( smIt->more() ) + { + SMESH_subMesh* vertexSM = smIt->next(); + SMDS_NodeIteratorPtr nIt = vertexSM->GetSubMeshDS()->GetNodes(); + if ( nIt->more() ) + mefistoToDS[m] = nIt->next(); + } + } + break; + default:; + } m++; } @@ -632,6 +656,9 @@ bool StdMeshers_MEFISTO_2D::LoadPoints(TWireVector & wires, fixOverlappedLinkUV (uvslf[ mB ], uvslf[ m ], uvslf[ mA ]); } } +// cout << "MEFISTO INPUT************" << endl; +// for ( int i =0; i < m; ++i ) +// cout << i << ": \t" << uvslf[i].x << ", " << uvslf[i].y << " Node " << mefistoToDS[i]->GetID()<< endl; return true; } @@ -778,13 +805,17 @@ void StdMeshers_MEFISTO_2D::StoreResult(Z nbst, R2 * uvst, Z nbt, Z * nust, const SMDS_MeshNode * n2 = mefistoToDS[ nust[m++] - 1 ]; const SMDS_MeshNode * n3 = mefistoToDS[ nust[m++] - 1 ]; - SMDS_MeshElement * elt; - if (triangleIsWellOriented) - elt = myTool->AddFace(n1, n2, n3); - else - elt = myTool->AddFace(n1, n3, n2); - - meshDS->SetMeshElementOnShape(elt, faceID); + // avoid creating degenetrated faces + bool isDegen = ( myTool->HasDegeneratedEdges() && ( n1 == n2 || n1 == n3 || n2 == n3 )); + if ( !isDegen ) + { + SMDS_MeshElement * elt; + if (triangleIsWellOriented) + elt = myTool->AddFace(n1, n2, n3); + else + elt = myTool->AddFace(n1, n3, n2); + meshDS->SetMeshElementOnShape(elt, faceID); + } m++; } diff --git a/src/StdMeshers/StdMeshers_MEFISTO_2D.hxx b/src/StdMeshers/StdMeshers_MEFISTO_2D.hxx index 73075dc07..36f916262 100644 --- a/src/StdMeshers/StdMeshers_MEFISTO_2D.hxx +++ b/src/StdMeshers/StdMeshers_MEFISTO_2D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_MEFISTO_2D.hxx // Moved here from SMESH_MEFISTO_2D.hxx @@ -55,7 +56,7 @@ public: SMESH_Hypothesis::Hypothesis_Status& aStatus); virtual bool Compute(SMESH_Mesh& aMesh, - const TopoDS_Shape& aShape); + const TopoDS_Shape& aShape); virtual bool Evaluate(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape, MapShapeNbElems& aResMap); @@ -64,19 +65,19 @@ public: typedef std::vector< StdMeshers_FaceSidePtr > TWireVector; bool LoadPoints(TWireVector & wires, - R2* uvslf, - std::vector< const SMDS_MeshNode*>& mefistoToDS, + R2* uvslf, + std::vector< const SMDS_MeshNode*>& mefistoToDS, double scalex, double scaley); void ComputeScaleOnFace(SMESH_Mesh& aMesh, - const TopoDS_Face& aFace, - double& scalex, - double& scaley); + const TopoDS_Face& aFace, + double& scalex, + double& scaley); void StoreResult (Z nbst, R2* uvst, Z nbt, Z* nust, - std::vector< const SMDS_MeshNode*>& mefistoToDS, + std::vector< const SMDS_MeshNode*>& mefistoToDS, double scalex, double scaley); - + protected: double _edgeLength; double _maxElementArea; diff --git a/src/StdMeshers/StdMeshers_MaxElementArea.cxx b/src/StdMeshers/StdMeshers_MaxElementArea.cxx index 1dce3de1f..75df5eefd 100644 --- a/src/StdMeshers/StdMeshers_MaxElementArea.cxx +++ b/src/StdMeshers/StdMeshers_MaxElementArea.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,13 +19,13 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_MaxElementArea.cxx // Moved here from SMESH_MaxElementArea.cxx // Author : Paul RASCLE, EDF // Module : SMESH // - #include "StdMeshers_MaxElementArea.hxx" #include "SMESH_ControlsDef.hxx" diff --git a/src/StdMeshers/StdMeshers_MaxElementArea.hxx b/src/StdMeshers/StdMeshers_MaxElementArea.hxx index 095067363..f1783ee53 100644 --- a/src/StdMeshers/StdMeshers_MaxElementArea.hxx +++ b/src/StdMeshers/StdMeshers_MaxElementArea.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_MaxElementArea.hxx // Moved here from SMESH_MaxElementArea.hxx diff --git a/src/StdMeshers/StdMeshers_MaxElementVolume.cxx b/src/StdMeshers/StdMeshers_MaxElementVolume.cxx index 79be9d6bc..b76924f04 100644 --- a/src/StdMeshers/StdMeshers_MaxElementVolume.cxx +++ b/src/StdMeshers/StdMeshers_MaxElementVolume.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_MaxElementVolume.cxx // Moved here from SMESH_MaxElementVolume.cxx diff --git a/src/StdMeshers/StdMeshers_MaxElementVolume.hxx b/src/StdMeshers/StdMeshers_MaxElementVolume.hxx index 6395fd419..a290332ab 100644 --- a/src/StdMeshers/StdMeshers_MaxElementVolume.hxx +++ b/src/StdMeshers/StdMeshers_MaxElementVolume.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,12 +19,13 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_MaxElementVolume.hxx // Moved here from SMESH_MaxElementVolume.hxx // Author : Paul RASCLE, EDF // Module : SMESH - +// #ifndef _SMESH_MAXELEMENTVOLUME_HXX_ #define _SMESH_MAXELEMENTVOLUME_HXX_ diff --git a/src/StdMeshers/StdMeshers_MaxLength.cxx b/src/StdMeshers/StdMeshers_MaxLength.cxx index 918fe6c78..8d14ce192 100644 --- a/src/StdMeshers/StdMeshers_MaxLength.cxx +++ b/src/StdMeshers/StdMeshers_MaxLength.cxx @@ -1,27 +1,26 @@ -// SMESH SMESH : implementaion of SMESH idl descriptions +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + +// SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_MaxLength.cxx // Module : SMESH - +// #include "StdMeshers_MaxLength.hxx" #include "SMESH_Mesh.hxx" diff --git a/src/StdMeshers/StdMeshers_MaxLength.hxx b/src/StdMeshers/StdMeshers_MaxLength.hxx index 23d94a9f2..b05b42cad 100644 --- a/src/StdMeshers/StdMeshers_MaxLength.hxx +++ b/src/StdMeshers/StdMeshers_MaxLength.hxx @@ -1,27 +1,26 @@ -// SMESH SMESH : implementaion of SMESH idl descriptions +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// 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 +// SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_MaxLength.hxx // Module : SMESH - +// #ifndef _SMESH_MaxLength_HXX_ #define _SMESH_MaxLength_HXX_ diff --git a/src/StdMeshers/StdMeshers_NotConformAllowed.cxx b/src/StdMeshers/StdMeshers_NotConformAllowed.cxx index 66c58f13c..0d69fbb6d 100644 --- a/src/StdMeshers/StdMeshers_NotConformAllowed.cxx +++ b/src/StdMeshers/StdMeshers_NotConformAllowed.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers : implementaion of SMESH idl descriptions // File : StdMeshers_NotConformAllowed.cxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_NotConformAllowed.hxx b/src/StdMeshers/StdMeshers_NotConformAllowed.hxx index ddcfcb445..e573039c1 100644 --- a/src/StdMeshers/StdMeshers_NotConformAllowed.hxx +++ b/src/StdMeshers/StdMeshers_NotConformAllowed.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers : implementaion of SMESH idl descriptions // File : StdMeshers_NotConformAllowed.hxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_NumberOfLayers.cxx b/src/StdMeshers/StdMeshers_NumberOfLayers.cxx index 8abb02c63..5aa1b9c43 100644 --- a/src/StdMeshers/StdMeshers_NumberOfLayers.cxx +++ b/src/StdMeshers/StdMeshers_NumberOfLayers.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's classes // File : StdMeshers_NumberOfLayers.cxx // Author : Edward AGAPOV diff --git a/src/StdMeshers/StdMeshers_NumberOfLayers.hxx b/src/StdMeshers/StdMeshers_NumberOfLayers.hxx index ebaae84a9..98f5a4a14 100644 --- a/src/StdMeshers/StdMeshers_NumberOfLayers.hxx +++ b/src/StdMeshers/StdMeshers_NumberOfLayers.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's calsses // File : StdMeshers_NumberOfLayers.hxx // Author : Edward AGAPOV diff --git a/src/StdMeshers/StdMeshers_NumberOfLayers2D.cxx b/src/StdMeshers/StdMeshers_NumberOfLayers2D.cxx index af2f04dab..da3ee6ccb 100644 --- a/src/StdMeshers/StdMeshers_NumberOfLayers2D.cxx +++ b/src/StdMeshers/StdMeshers_NumberOfLayers2D.cxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,12 +16,12 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's classes // File : StdMeshers_NumberOfLayers2D.cxx // Author : Edward AGAPOV // Module : SMESH // - #include "StdMeshers_NumberOfLayers2D.hxx" #include "utilities.h" diff --git a/src/StdMeshers/StdMeshers_NumberOfLayers2D.hxx b/src/StdMeshers/StdMeshers_NumberOfLayers2D.hxx index 42690f0e5..fef7cfb60 100644 --- a/src/StdMeshers/StdMeshers_NumberOfLayers2D.hxx +++ b/src/StdMeshers/StdMeshers_NumberOfLayers2D.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's calsses // File : StdMeshers_NumberOfLayers2D.hxx // Author : Edward AGAPOV diff --git a/src/StdMeshers/StdMeshers_NumberOfSegments.cxx b/src/StdMeshers/StdMeshers_NumberOfSegments.cxx index ce4876ee3..2a9fd2c1a 100644 --- a/src/StdMeshers/StdMeshers_NumberOfSegments.cxx +++ b/src/StdMeshers/StdMeshers_NumberOfSegments.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_NumberOfSegments.cxx // Moved here from SMESH_NumberOfSegments.cxx diff --git a/src/StdMeshers/StdMeshers_NumberOfSegments.hxx b/src/StdMeshers/StdMeshers_NumberOfSegments.hxx index 985d192b2..1ca99dfe8 100644 --- a/src/StdMeshers/StdMeshers_NumberOfSegments.hxx +++ b/src/StdMeshers/StdMeshers_NumberOfSegments.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_NumberOfSegments.hxx // Moved here from SMESH_NumberOfSegments.hxx diff --git a/src/StdMeshers/StdMeshers_Penta_3D.cxx b/src/StdMeshers/StdMeshers_Penta_3D.cxx index a12a3f088..7e21e3113 100644 --- a/src/StdMeshers/StdMeshers_Penta_3D.cxx +++ b/src/StdMeshers/StdMeshers_Penta_3D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers_Penta_3D implementaion of SMESH idl descriptions // File : StdMeshers_Penta_3D.cxx // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_Penta_3D.hxx b/src/StdMeshers/StdMeshers_Penta_3D.hxx index 882c3b4f3..0ef1037bf 100644 --- a/src/StdMeshers/StdMeshers_Penta_3D.hxx +++ b/src/StdMeshers/StdMeshers_Penta_3D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers : implementaion of SMESH idl descriptions // File : StdMeshers_Penta_3D.hxx // Module : SMESH @@ -58,26 +59,26 @@ public: void Load (const TopoDS_Shell& theShell); void Load (const TopoDS_Shell& theShell, - const TopoDS_Vertex& theV000, - const TopoDS_Vertex& theV001); + const TopoDS_Vertex& theV000, + const TopoDS_Vertex& theV001); void ComputeParameters(const gp_Pnt& thePnt, - gp_XYZ& theXYZ); + gp_XYZ& theXYZ); void ComputeParameters(const gp_Pnt& thePnt, - const TopoDS_Shape& theShape, - gp_XYZ& theXYZ); + const TopoDS_Shape& theShape, + gp_XYZ& theXYZ); void ComputeParameters(const double& theU, - const TopoDS_Shape& theShape, - gp_XYZ& theXYZ); + const TopoDS_Shape& theShape, + gp_XYZ& theXYZ); void Point(const gp_XYZ& theParams, - gp_Pnt& thePnt); + gp_Pnt& thePnt); void Point(const gp_XYZ& theParams, - const TopoDS_Shape& theShape, - gp_Pnt& thePnt); + const TopoDS_Shape& theShape, + gp_Pnt& thePnt); int ShapeID(const TopoDS_Shape& theShape); @@ -206,7 +207,7 @@ class STDMESHERS_EXPORT StdMeshers_Penta_3D { // 0-the node on theBaseEdge. bool Evaluate(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape, - MapShapeNbElems& aResMap); + MapShapeNbElems& aResMap); protected: // methods @@ -223,17 +224,17 @@ class STDMESHERS_EXPORT StdMeshers_Penta_3D { std::vector*& aCol2); void ShapeSupportID(const bool theIsUpperLayer, - const SMESH_Block::TShapeID theBNSSID, - SMESH_Block::TShapeID& theSSID); + const SMESH_Block::TShapeID theBNSSID, + SMESH_Block::TShapeID& theSSID); void FindNodeOnShape(const TopoDS_Shape& aS, - const gp_XYZ& aParams, + const gp_XYZ& aParams, const int z, - StdMeshers_TNode& aTN); + StdMeshers_TNode& aTN); void CreateNode(const bool theIsUpperLayer, - const gp_XYZ& aParams, - StdMeshers_TNode& aTN); + const gp_XYZ& aParams, + StdMeshers_TNode& aTN); void ClearMeshOnFxy1(); diff --git a/src/StdMeshers/StdMeshers_Prism_3D.cxx b/src/StdMeshers/StdMeshers_Prism_3D.cxx index 009b0a7f4..c7bf42004 100644 --- a/src/StdMeshers/StdMeshers_Prism_3D.cxx +++ b/src/StdMeshers/StdMeshers_Prism_3D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Prism_3D.cxx // Module : SMESH @@ -37,14 +38,18 @@ #include "utilities.h" #include +#include #include #include +#include #include #include #include -#include #include +#include #include +#include +#include using namespace std; @@ -151,6 +156,152 @@ namespace { } params.push_back( parLast ); // 1. } + + //================================================================================ + /*! + * \brief Return coordinate system for z-th layer of nodes + */ + //================================================================================ + + gp_Ax2 getLayerCoordSys(const int z, + const vector< const TNodeColumn* >& columns, + int& xColumn) + { + // gravity center of a layer + gp_XYZ O(0,0,0); + int vertexCol = -1; + for ( int i = 0; i < columns.size(); ++i ) + { + O += gpXYZ( (*columns[ i ])[ z ]); + if ( vertexCol < 0 && + columns[ i ]->front()->GetPosition()->GetTypeOfPosition() == SMDS_TOP_VERTEX ) + vertexCol = i; + } + O /= columns.size(); + + // Z axis + gp_Vec Z(0,0,0); + int iPrev = columns.size()-1; + for ( int i = 0; i < columns.size(); ++i ) + { + gp_Vec v1( O, gpXYZ( (*columns[ iPrev ])[ z ])); + gp_Vec v2( O, gpXYZ( (*columns[ i ] )[ z ])); + Z += v1 ^ v2; + iPrev = i; + } + + if ( vertexCol >= 0 ) + { + O = gpXYZ( (*columns[ vertexCol ])[ z ]); + } + if ( xColumn < 0 || xColumn >= columns.size() ) + { + // select a column for X dir + double maxDist = 0; + for ( int i = 0; i < columns.size(); ++i ) + { + double dist = ( O - gpXYZ((*columns[ i ])[ z ])).SquareModulus(); + if ( dist > maxDist ) + { + xColumn = i; + maxDist = dist; + } + } + } + + // X axis + gp_Vec X( O, gpXYZ( (*columns[ xColumn ])[ z ])); + + return gp_Ax2( O, Z, X); + } + + //================================================================================ + /*! + * \brief Removes submeshes meshed with regular grid from given list + * \retval int - nb of removed submeshes + */ + //================================================================================ + + int removeQuasiQuads(list< SMESH_subMesh* >& notQuadSubMesh) + { + int oldNbSM = notQuadSubMesh.size(); + SMESHDS_Mesh* mesh = notQuadSubMesh.front()->GetFather()->GetMeshDS(); + list< SMESH_subMesh* >::iterator smIt = notQuadSubMesh.begin(); +#define __NEXT_SM { ++smIt; continue; } + while ( smIt != notQuadSubMesh.end() ) + { + SMESH_subMesh* faceSm = *smIt; + SMESHDS_SubMesh* faceSmDS = faceSm->GetSubMeshDS(); + int nbQuads = faceSmDS->NbElements(); + if ( nbQuads == 0 ) __NEXT_SM; + + // get oredered edges + list< TopoDS_Edge > orderedEdges; + list< int > nbEdgesInWires; + TopoDS_Vertex V000; + int nbWires = SMESH_Block::GetOrderedEdges( TopoDS::Face( faceSm->GetSubShape() ), + V000, orderedEdges, nbEdgesInWires ); + if ( nbWires != 1 || nbEdgesInWires.front() <= 4 ) + __NEXT_SM; + + // get nb of segements on edges + list nbSegOnEdge; + list< TopoDS_Edge >::iterator edge = orderedEdges.begin(); + for ( ; edge != orderedEdges.end(); ++edge ) + { + if ( SMESHDS_SubMesh* edgeSmDS = mesh->MeshElements( *edge )) + nbSegOnEdge.push_back( edgeSmDS->NbElements() ); + else + nbSegOnEdge.push_back(0); + } + + // unite nbSegOnEdge of continues edges + int nbEdges = nbEdgesInWires.front(); + list::iterator nbSegIt = nbSegOnEdge.begin(); + for ( edge = orderedEdges.begin(); edge != orderedEdges.end(); ) + { + const TopoDS_Edge& e1 = *edge++; + const TopoDS_Edge& e2 = ( edge == orderedEdges.end() ? orderedEdges.front() : *edge ); + if ( SMESH_Algo::IsContinuous( e1, e2 )) + { + // common vertex of continues edges must be shared by two 2D mesh elems of geom face + TopoDS_Vertex vCommon = TopExp::LastVertex( e1, true ); + const SMDS_MeshNode* vNode = SMESH_Algo::VertexNode( vCommon, mesh ); + int nbF = 0; + if ( vNode ) + { + SMDS_ElemIteratorPtr fIt = vNode->GetInverseElementIterator(SMDSAbs_Face); + while ( fIt->more() ) + nbF += faceSmDS->Contains( fIt->next() ); + } + list::iterator nbSegIt1 = nbSegIt++; + if ( !vNode || nbF == 2 ) // !vNode - two edges can be meshed as one + { + // unite + if ( nbSegIt == nbSegOnEdge.end() ) nbSegIt = nbSegOnEdge.begin(); + *nbSegIt += *nbSegIt1; + nbSegOnEdge.erase( nbSegIt1 ); + --nbEdges; + } + } + else + { + ++nbSegIt; + } + } + vector nbSegVec( nbSegOnEdge.begin(), nbSegOnEdge.end()); + if ( nbSegVec.size() == 4 && + nbSegVec[0] == nbSegVec[2] && + nbSegVec[1] == nbSegVec[3] && + nbSegVec[0] * nbSegVec[1] == nbQuads + ) + smIt = notQuadSubMesh.erase( smIt ); + else + __NEXT_SM; + } + + return oldNbSM - notQuadSubMesh.size(); + } } //======================================================================= @@ -162,7 +313,7 @@ StdMeshers_Prism_3D::StdMeshers_Prism_3D(int hypId, int studyId, SMESH_Gen* gen) :SMESH_3D_Algo(hypId, studyId, gen) { _name = "Prism_3D"; - _shapeType = (1 << TopAbs_SHELL) | (1 << TopAbs_SOLID); // 1 bit per shape type + _shapeType = (1 << TopAbs_SHELL) | (1 << TopAbs_SOLID); // 1 bit per shape type myProjectTriangles = false; } @@ -257,75 +408,115 @@ bool StdMeshers_Prism_3D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape& theSh // Projections on the top and bottom faces are taken from nodes existing // on these faces; find correspondence between bottom and top nodes myBotToColumnMap.clear(); - if ( !assocOrProjBottom2Top() ) // it also fill myBotToColumnMap + if ( !assocOrProjBottom2Top() ) // it also fills myBotToColumnMap return false; // Create nodes inside the block - // loop on nodes inside the bottom face - TNode2ColumnMap::iterator bot_column = myBotToColumnMap.begin(); - for ( ; bot_column != myBotToColumnMap.end(); ++bot_column ) + // try to use transformation (issue 0020680) + vector trsf; + if ( myBlock.GetLayersTransformation(trsf)) { - const TNode& tBotNode = bot_column->first; // bottom TNode - if ( tBotNode.GetPositionType() != SMDS_TOP_FACE ) - continue; // node is not inside face - - // column nodes; middle part of the column are zero pointers - TNodeColumn& column = bot_column->second; - - // bottom node parameters and coords - myShapeXYZ[ ID_BOT_FACE ] = tBotNode.GetCoords(); - gp_XYZ botParams = tBotNode.GetParams(); - - // compute top node parameters - myShapeXYZ[ ID_TOP_FACE ] = gpXYZ( column.back() ); - gp_XYZ topParams = botParams; - topParams.SetZ( 1 ); - if ( column.size() > 2 ) { - gp_Pnt topCoords = myShapeXYZ[ ID_TOP_FACE ]; - if ( !myBlock.ComputeParameters( topCoords, topParams, ID_TOP_FACE, topParams )) - return error(TCom("Can't compute normalized parameters ") - << "for node " << column.back()->GetID() - << " on the face #"<< column.back()->GetPosition()->GetShapeId() ); - } + // loop on nodes inside the bottom face + TNode2ColumnMap::iterator bot_column = myBotToColumnMap.begin(); + for ( ; bot_column != myBotToColumnMap.end(); ++bot_column ) + { + const TNode& tBotNode = bot_column->first; // bottom TNode + if ( tBotNode.GetPositionType() != SMDS_TOP_FACE ) + continue; // node is not inside face + + // column nodes; middle part of the column are zero pointers + TNodeColumn& column = bot_column->second; + TNodeColumn::iterator columnNodes = column.begin(); + for ( int z = 0; columnNodes != column.end(); ++columnNodes, ++z) + { + const SMDS_MeshNode* & node = *columnNodes; + if ( node ) continue; // skip bottom or top node - // vertical loop - TNodeColumn::iterator columnNodes = column.begin(); - for ( int z = 0; columnNodes != column.end(); ++columnNodes, ++z) + gp_XYZ coords = tBotNode.GetCoords(); + trsf[z-1].Transforms( coords ); + node = meshDS->AddNode( coords.X(), coords.Y(), coords.Z() ); + meshDS->SetNodeInVolume( node, volumeID ); + } + } // loop on bottom nodes + } + else // use block approach + { + // loop on nodes inside the bottom face + TNode prevBNode; + TNode2ColumnMap::iterator bot_column = myBotToColumnMap.begin(); + for ( ; bot_column != myBotToColumnMap.end(); ++bot_column ) { - const SMDS_MeshNode* & node = *columnNodes; - if ( node ) continue; // skip bottom or top node - - // params of a node to create - double rz = (double) z / (double) ( column.size() - 1 ); - gp_XYZ params = botParams * ( 1 - rz ) + topParams * rz; - - // set coords on all faces and nodes - const int nbSideFaces = 4; - int sideFaceIDs[nbSideFaces] = { SMESH_Block::ID_Fx0z, - SMESH_Block::ID_Fx1z, - SMESH_Block::ID_F0yz, - SMESH_Block::ID_F1yz }; - for ( int iF = 0; iF < nbSideFaces; ++iF ) - if ( !setFaceAndEdgesXYZ( sideFaceIDs[ iF ], params, z )) - return false; - - // compute coords for a new node - gp_XYZ coords; - if ( !SMESH_Block::ShellPoint( params, myShapeXYZ, coords )) - return error("Can't compute coordinates by normalized parameters"); - - SHOWYXZ("TOPFacePoint ",myShapeXYZ[ ID_TOP_FACE]); - SHOWYXZ("BOT Node "<< tBotNode.myNode->GetID(),gpXYZ(tBotNode.myNode)); - SHOWYXZ("ShellPoint ",coords); - - // create a node - node = meshDS->AddNode( coords.X(), coords.Y(), coords.Z() ); - meshDS->SetNodeInVolume( node, volumeID ); - } - } // loop on bottom nodes + const TNode& tBotNode = bot_column->first; // bottom TNode + if ( tBotNode.GetPositionType() != SMDS_TOP_FACE ) + continue; // node is not inside face + // column nodes; middle part of the column are zero pointers + TNodeColumn& column = bot_column->second; + + // compute bottom node parameters + gp_XYZ paramHint(-1,-1,-1); + if ( prevBNode.IsNeighbor( tBotNode )) + paramHint = prevBNode.GetParams(); + if ( !myBlock.ComputeParameters( tBotNode.GetCoords(), tBotNode.ChangeParams(), + ID_BOT_FACE, paramHint )) + return error(TCom("Can't compute normalized parameters for node ") + << tBotNode.myNode->GetID() << " on the face #" + << myBlock.SubMesh( ID_BOT_FACE )->GetId() ); + prevBNode = tBotNode; + + myShapeXYZ[ ID_BOT_FACE ] = tBotNode.GetCoords(); + gp_XYZ botParams = tBotNode.GetParams(); + + // compute top node parameters + myShapeXYZ[ ID_TOP_FACE ] = gpXYZ( column.back() ); + gp_XYZ topParams = botParams; + topParams.SetZ( 1 ); + if ( column.size() > 2 ) { + gp_Pnt topCoords = myShapeXYZ[ ID_TOP_FACE ]; + if ( !myBlock.ComputeParameters( topCoords, topParams, ID_TOP_FACE, topParams )) + return error(TCom("Can't compute normalized parameters ") + << "for node " << column.back()->GetID() + << " on the face #"<< column.back()->GetPosition()->GetShapeId() ); + } + + // vertical loop + TNodeColumn::iterator columnNodes = column.begin(); + for ( int z = 0; columnNodes != column.end(); ++columnNodes, ++z) + { + const SMDS_MeshNode* & node = *columnNodes; + if ( node ) continue; // skip bottom or top node + + // params of a node to create + double rz = (double) z / (double) ( column.size() - 1 ); + gp_XYZ params = botParams * ( 1 - rz ) + topParams * rz; + + // set coords on all faces and nodes + const int nbSideFaces = 4; + int sideFaceIDs[nbSideFaces] = { SMESH_Block::ID_Fx0z, + SMESH_Block::ID_Fx1z, + SMESH_Block::ID_F0yz, + SMESH_Block::ID_F1yz }; + for ( int iF = 0; iF < nbSideFaces; ++iF ) + if ( !setFaceAndEdgesXYZ( sideFaceIDs[ iF ], params, z )) + return false; + + // compute coords for a new node + gp_XYZ coords; + if ( !SMESH_Block::ShellPoint( params, myShapeXYZ, coords )) + return error("Can't compute coordinates by normalized parameters"); + + SHOWYXZ("TOPFacePoint ",myShapeXYZ[ ID_TOP_FACE]); + SHOWYXZ("BOT Node "<< tBotNode.myNode->GetID(),gpXYZ(tBotNode.myNode)); + SHOWYXZ("ShellPoint ",coords); + + // create a node + node = meshDS->AddNode( coords.X(), coords.Y(), coords.Z() ); + meshDS->SetNodeInVolume( node, volumeID ); + } + } // loop on bottom nodes + } // Create volumes @@ -349,7 +540,7 @@ bool StdMeshers_Prism_3D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape& theSh { const SMDS_MeshNode* n = face->GetNode( i ); if ( n->GetPosition()->GetTypeOfPosition() == SMDS_TOP_FACE ) { - bot_column = myBotToColumnMap.find( n ); + TNode2ColumnMap::iterator bot_column = myBotToColumnMap.find( n ); if ( bot_column == myBotToColumnMap.end() ) return error(TCom("No nodes found above node ") << n->GetID() ); columns[ i ] = & bot_column->second; @@ -375,8 +566,8 @@ bool StdMeshers_Prism_3D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape& theSh //======================================================================= bool StdMeshers_Prism_3D::Evaluate(SMESH_Mesh& theMesh, - const TopoDS_Shape& theShape, - MapShapeNbElems& aResMap) + const TopoDS_Shape& theShape, + MapShapeNbElems& aResMap) { // find face contains only triangles vector < SMESH_subMesh * >meshFaces; @@ -436,8 +627,8 @@ bool StdMeshers_Prism_3D::Evaluate(SMESH_Mesh& theMesh, bool IsOpposite = true; for(TopExp_Explorer exp(aFaces.Value(i), TopAbs_EDGE); exp.More(); exp.Next()) { if( Edges1.Contains(exp.Current()) ) { - IsOpposite = false; - break; + IsOpposite = false; + break; } } if(IsOpposite) { @@ -652,7 +843,7 @@ bool StdMeshers_Prism_3D::assocOrProjBottom2Top() // Fill myBotToColumnMap int zSize = myBlock.VerticalSize(); - TNode prevTNode; + //TNode prevTNode; TNodeNodeMap::iterator bN_tN = n2nMap.begin(); for ( ; bN_tN != n2nMap.end(); ++bN_tN ) { @@ -660,19 +851,8 @@ bool StdMeshers_Prism_3D::assocOrProjBottom2Top() const SMDS_MeshNode* topNode = bN_tN->second; if ( botNode->GetPosition()->GetTypeOfPosition() != SMDS_TOP_FACE ) continue; // wall columns are contained in myBlock - // compute bottom node params - TNode bN( botNode ); - if ( zSize > 2 ) { - gp_XYZ paramHint(-1,-1,-1); - if ( prevTNode.IsNeighbor( bN )) - paramHint = prevTNode.GetParams(); - if ( !myBlock.ComputeParameters( bN.GetCoords(), bN.ChangeParams(), - ID_BOT_FACE, paramHint )) - return error(TCom("Can't compute normalized parameters for node ") - << botNode->GetID() << " on the face #"<< botSM->GetId() ); - prevTNode = bN; - } // create node column + TNode bN( botNode ); TNode2ColumnMap::iterator bN_col = myBotToColumnMap.insert( make_pair ( bN, TNodeColumn() )).first; TNodeColumn & column = bN_col->second; @@ -813,10 +993,10 @@ bool StdMeshers_Prism_3D::setFaceAndEdgesXYZ( const int faceID, const gp_XYZ& pa SMESH_Block::GetFaceEdgesIDs( faceID, edgeVec ); myBlock.EdgePoint( edgeVec[ BASE ], params, myShapeXYZ[ edgeVec[ BASE ]]); - myBlock.EdgePoint( edgeVec[ TOP ], params, myShapeXYZ[ edgeVec[ TOP ]]); + myBlock.EdgePoint( edgeVec[ TOP ], params, myShapeXYZ[ edgeVec[ TOP ]]); SHOWYXZ("\nparams ", params); - SHOWYXZ("TOP is "< 0 && nbNotQuad != 2 ) - return error(COMPERR_BAD_SHAPE, - TCom("More than 2 not quadrilateral faces: ") - < 2 ) + { return error(COMPERR_BAD_INPUT_MESH, TCom("More than 2 faces with not quadrangle elements: ") < 0 && nbNotQuad != 2 ) + { + // Issue 0020843 - one of side faces is quasi-quadrilateral. + // Remove from notQuadGeomSubMesh faces meshed with regular grid + nbQuasiQuads = removeQuasiQuads( notQuadGeomSubMesh ); + nbNotQuad -= nbQuasiQuads; + if ( nbNotQuad > 0 && nbNotQuad != 2 ) + return error(COMPERR_BAD_SHAPE, + TCom("More than 2 not quadrilateral faces: ") + <dumpNodes( 4 ); // debug } // horizontal faces geometry { @@ -1432,6 +1623,87 @@ const TNodeColumn* StdMeshers_PrismAsBlock::GetNodeColumn(const SMDS_MeshNode* n return 0; } +//======================================================================= +//function : GetLayersTransformation +//purpose : Return transformations to get coordinates of nodes of each layer +// by nodes of the bottom. Layer is a set of nodes at a certain step +// from bottom to top. +//======================================================================= + +bool StdMeshers_PrismAsBlock::GetLayersTransformation(vector & trsf) const +{ + const int zSize = VerticalSize(); + if ( zSize < 3 ) return true; + trsf.resize( zSize - 2 ); + + // Select some node columns by which we will define coordinate system of layers + + vector< const TNodeColumn* > columns; + { + const TopoDS_Shape& baseFace = Shape(ID_BOT_FACE); + list< TopoDS_Edge > orderedEdges; + list< int > nbEdgesInWires; + GetOrderedEdges( TopoDS::Face( baseFace ), TopoDS_Vertex(), orderedEdges, nbEdgesInWires ); + bool isReverse; + list< TopoDS_Edge >::iterator edgeIt = orderedEdges.begin(); + for ( int iE = 0; iE < nbEdgesInWires.front(); ++iE, ++edgeIt ) + { + const TParam2ColumnMap& u2colMap = + GetParam2ColumnMap( myHelper->GetMeshDS()->ShapeToIndex( *edgeIt ), isReverse ); + isReverse = ( edgeIt->Orientation() == TopAbs_REVERSED ); + double f = u2colMap.begin()->first, l = u2colMap.rbegin()->first; + if ( isReverse ) swap ( f, l ); + const int nbCol = 5; + for ( int i = 0; i < nbCol; ++i ) + { + double u = f + i/double(nbCol) * ( l - f ); + const TNodeColumn* col = & getColumn( & u2colMap, u )->second; + if ( columns.empty() || col != columns.back() ) + columns.push_back( col ); + } + } + } + + // Find tolerance to check transformations + + double tol2; + { + Bnd_B3d bndBox; + for ( int i = 0; i < columns.size(); ++i ) + bndBox.Add( gpXYZ( columns[i]->front() )); + tol2 = bndBox.SquareExtent() * 4 * 1e-4; + } + + // Compute transformations + + int xCol = -1; + gp_Trsf fromCsZ, toCs0; + gp_Ax3 cs0 = getLayerCoordSys(0, columns, xCol ); + //double dist0 = cs0.Location().Distance( gpXYZ( (*columns[0])[0])); + toCs0.SetTransformation( cs0 ); + for ( int z = 1; z < zSize-1; ++z ) + { + gp_Ax3 csZ = getLayerCoordSys(z, columns, xCol ); + //double distZ = csZ.Location().Distance( gpXYZ( (*columns[0])[z])); + fromCsZ.SetTransformation( csZ ); + fromCsZ.Invert(); + gp_Trsf& t = trsf[ z-1 ]; + t = fromCsZ * toCs0; + //t.SetScaleFactor( distZ/dist0 ); - it does not work properly, wrong base point + + // check a transformation + for ( int i = 0; i < columns.size(); ++i ) + { + gp_Pnt p0 = gpXYZ( (*columns[i])[0] ); + gp_Pnt pz = gpXYZ( (*columns[i])[z] ); + t.Transforms( p0.ChangeCoord() ); + if ( p0.SquareDistance( pz ) > tol2 ) + return false; + } + } + return true; +} + //================================================================================ /*! * \brief Check curve orientation of a bootom edge @@ -1467,14 +1739,14 @@ bool StdMeshers_PrismAsBlock::IsForwardEdge(SMESHDS_Mesh* meshDS, } //================================================================================ - /*! - * \brief Find wall faces by bottom edges - * \param mesh - the mesh - * \param mainShape - the prism - * \param bottomFace - the bottom face - * \param bottomEdges - edges bounding the bottom face - * \param wallFaces - faces list to fill in - */ +/*! + * \brief Find wall faces by bottom edges + * \param mesh - the mesh + * \param mainShape - the prism + * \param bottomFace - the bottom face + * \param bottomEdges - edges bounding the bottom face + * \param wallFaces - faces list to fill in + */ //================================================================================ bool StdMeshers_PrismAsBlock::GetWallFaces( SMESH_Mesh* mesh, @@ -1727,8 +1999,6 @@ double StdMeshers_PrismAsBlock::TSideFace::GetColumns(const double U, r = 0.5; } else { -// if ( !myIsForward ) -// std::swap( col1, col2 ); double uf = col1->first; double ul = col2->first; r = ( u - uf ) / ( ul - uf ); @@ -1748,8 +2018,8 @@ double StdMeshers_PrismAsBlock::TSideFace::GetColumns(const double U, gp_Pnt StdMeshers_PrismAsBlock::TSideFace::Value(const Standard_Real U, const Standard_Real V) const { - double u; if ( !myComponents.empty() ) { + double u; TSideFace * comp = GetComponent(U,u); return comp->Value( u, V ); } @@ -1761,7 +2031,41 @@ gp_Pnt StdMeshers_PrismAsBlock::TSideFace::Value(const Standard_Real U, const SMDS_MeshNode* n2 = 0; const SMDS_MeshNode* n3 = 0; const SMDS_MeshNode* n4 = 0; - gp_XYZ pnt; + + // BEGIN issue 0020680: EDF 1252 SMESH: Bad cell created by Radial prism in center of torus + // Workaround for a wrongly located point returned by mySurface.Value() for + // UV located near boundary of BSpline surface. + // To bypass the problem, we take point from 3D curve of edge. + // It solves pb of the bloc_fiss_new.py + const double tol = 1e-3; + if ( V < tol || V+tol >= 1. ) + { + n1 = V < tol ? u_col1->second.front() : u_col1->second.back(); + n3 = V < tol ? u_col2->second.front() : u_col2->second.back(); + TopoDS_Edge edge; + if ( V < tol ) + { + edge = myBaseEdge; + } + else + { + TopoDS_Shape s = myHelper->GetSubShapeByNode( n1, myHelper->GetMeshDS() ); + if ( s.ShapeType() != TopAbs_EDGE ) + s = myHelper->GetSubShapeByNode( n3, myHelper->GetMeshDS() ); + if ( s.ShapeType() == TopAbs_EDGE ) + edge = TopoDS::Edge( s ); + } + if ( !edge.IsNull() ) + { + double u1 = myHelper->GetNodeU( edge, n1 ); + double u3 = myHelper->GetNodeU( edge, n3 ); + double u = u1 * ( 1 - hR ) + u3 * hR; + TopLoc_Location loc; double f,l; + Handle(Geom_Curve) curve = BRep_Tool::Curve( edge,loc,f,l ); + return curve->Value( u ).Transformed( loc ); + } + } + // END issue 0020680: EDF 1252 SMESH: Bad cell created by Radial prism in center of torus vR = getRAndNodes( & u_col1->second, V, n1, n2 ); vR = getRAndNodes( & u_col2->second, V, n3, n4 ); @@ -1775,8 +2079,9 @@ gp_Pnt StdMeshers_PrismAsBlock::TSideFace::Value(const Standard_Real U, gp_XY uv34 = uv3 * ( 1 - vR ) + uv4 * vR; gp_XY uv = uv12 * ( 1 - hR ) + uv34 * hR; - - return mySurface.Value( uv.X(), uv.Y() ); + + gp_Pnt p = mySurface.Value( uv.X(), uv.Y() ); + return p; } @@ -1954,6 +2259,28 @@ int StdMeshers_PrismAsBlock::TSideFace::InsertSubShapes(TBlockShapes& shapeMap) return nbInserted; } +//================================================================================ +/*! + * \brief Dump ids of nodes of sides + */ +//================================================================================ + +void StdMeshers_PrismAsBlock::TSideFace::dumpNodes(int nbNodes) const +{ +#ifdef _DEBUG_ + cout << endl << "NODES OF FACE "; SMESH_Block::DumpShapeID( myID, cout ) << endl; + THorizontalEdgeAdaptor* hSize0 = (THorizontalEdgeAdaptor*) HorizCurve(0); + cout << "Horiz side 0: "; hSize0->dumpNodes(nbNodes); cout << endl; + THorizontalEdgeAdaptor* hSize1 = (THorizontalEdgeAdaptor*) HorizCurve(1); + cout << "Horiz side 1: "; hSize1->dumpNodes(nbNodes); cout << endl; + TVerticalEdgeAdaptor* vSide0 = (TVerticalEdgeAdaptor*) VertiCurve(0); + cout << "Verti side 0: "; vSide0->dumpNodes(nbNodes); cout << endl; + TVerticalEdgeAdaptor* vSide1 = (TVerticalEdgeAdaptor*) VertiCurve(1); + cout << "Verti side 1: "; vSide1->dumpNodes(nbNodes); cout << endl; + delete hSize0; delete hSize1; delete vSide0; delete vSide1; +#endif +} + //================================================================================ /*! * \brief Creates TVerticalEdgeAdaptor @@ -1984,6 +2311,22 @@ gp_Pnt StdMeshers_PrismAsBlock::TVerticalEdgeAdaptor::Value(const Standard_Real return gpXYZ(n1) * ( 1 - r ) + gpXYZ(n2) * r; } +//================================================================================ +/*! + * \brief Dump ids of nodes + */ +//================================================================================ + +void StdMeshers_PrismAsBlock::TVerticalEdgeAdaptor::dumpNodes(int nbNodes) const +{ +#ifdef _DEBUG_ + for ( int i = 0; i < nbNodes && i < myNodeColumn->size(); ++i ) + cout << (*myNodeColumn)[i]->GetID() << " "; + if ( nbNodes < myNodeColumn->size() ) + cout << myNodeColumn->back()->GetID(); +#endif +} + //================================================================================ /*! * \brief Return coordinates for the given normalized parameter @@ -1997,6 +2340,50 @@ gp_Pnt StdMeshers_PrismAsBlock::THorizontalEdgeAdaptor::Value(const Standard_Rea return mySide->TSideFace::Value( U, myV ); } +//================================================================================ +/*! + * \brief Dump ids of first nodes and the last one + */ +//================================================================================ + +void StdMeshers_PrismAsBlock::THorizontalEdgeAdaptor::dumpNodes(int nbNodes) const +{ +#ifdef _DEBUG_ + // Not bedugged code. Last node is sometimes incorrect + const TSideFace* side = mySide; + double u = 0; + if ( mySide->IsComplex() ) + side = mySide->GetComponent(0,u); + + TParam2ColumnIt col, col2; + TParam2ColumnMap* u2cols = side->GetColumns(); + side->GetColumns( u , col, col2 ); + + int j, i = myV ? mySide->ColumnHeight()-1 : 0; + + const SMDS_MeshNode* n = 0; + const SMDS_MeshNode* lastN + = side->IsForward() ? u2cols->rbegin()->second[ i ] : u2cols->begin()->second[ i ]; + for ( j = 0; j < nbNodes && n != lastN; ++j ) + { + n = col->second[ i ]; + cout << n->GetID() << " "; + if ( side->IsForward() ) + ++col; + else + --col; + } + + // last node + u = 1; + if ( mySide->IsComplex() ) + side = mySide->GetComponent(1,u); + + side->GetColumns( u , col, col2 ); + if ( n != col->second[ i ] ) + cout << col->second[ i ]->GetID(); +#endif +} //================================================================================ /*! * \brief Return UV on pcurve for the given normalized parameter diff --git a/src/StdMeshers/StdMeshers_Prism_3D.hxx b/src/StdMeshers/StdMeshers_Prism_3D.hxx index d258bb432..d7278e813 100644 --- a/src/StdMeshers/StdMeshers_Prism_3D.hxx +++ b/src/StdMeshers/StdMeshers_Prism_3D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Prism_3D.hxx // Module : SMESH @@ -46,6 +47,7 @@ #include #include #include +#include class SMESHDS_SubMesh; @@ -58,7 +60,7 @@ typedef std::vector TNodeColumn; // map of bottom nodes to the column of nodes above them // (the column includes the bottom nodes) -typedef std::map< TNode, TNodeColumn > TNode2ColumnMap; +typedef std::map< TNode, TNodeColumn > TNode2ColumnMap; typedef std::map< double, TNodeColumn > TParam2ColumnMap; typedef std::map< double, TNodeColumn >::const_iterator TParam2ColumnIt; @@ -73,11 +75,11 @@ typedef TopTools_IndexedMapOfOrientedShape TBlockShapes; struct TNode { const SMDS_MeshNode* myNode; - gp_XYZ myParams; + mutable gp_XYZ myParams; gp_XYZ GetCoords() const { return gp_XYZ( myNode->X(), myNode->Y(), myNode->Z() ); } gp_XYZ GetParams() const { return myParams; } - gp_XYZ& ChangeParams() { return myParams; } + gp_XYZ& ChangeParams() const { return myParams; } bool HasParams() const { return myParams.X() >= 0.0; } SMDS_TypeOfPosition GetPositionType() const { return myNode ? myNode->GetPosition()->GetTypeOfPosition() : SMDS_TOP_UNSPEC; } @@ -144,13 +146,20 @@ public: * \retval const TParam2ColumnMap& - map */ const TParam2ColumnMap& GetParam2ColumnMap(const int baseEdgeID, - bool & isReverse) + bool & isReverse) const { - std::pair< TParam2ColumnMap*, bool > & col_frw = - myShapeIndex2ColumnMap[ baseEdgeID ]; + std::pair< TParam2ColumnMap*, bool > col_frw = + myShapeIndex2ColumnMap.find( baseEdgeID )->second; isReverse = !col_frw.second; return * col_frw.first; } + + /*! + * \brief Return transformations to get coordinates of nodes of each internal layer + * by nodes of the bottom. Layer is a set of nodes at a certain step + * from bottom to top. + */ + bool GetLayersTransformation(std::vector & trsf) const; /*! * \brief Return pointer to mesh @@ -284,6 +293,8 @@ private: int InsertSubShapes( TBlockShapes& shapeMap ) const; // redefine Adaptor methods gp_Pnt Value(const Standard_Real U,const Standard_Real V) const; + // debug + void dumpNodes(int nbNodes) const; }; // -------------------------------------------------------------------- @@ -299,6 +310,8 @@ private: gp_Pnt Value(const Standard_Real U) const; Standard_Real FirstParameter() const { return 0; } Standard_Real LastParameter() const { return 1; } + // debug + void dumpNodes(int nbNodes) const; }; // -------------------------------------------------------------------- @@ -316,6 +329,8 @@ private: gp_Pnt Value(const Standard_Real U) const; Standard_Real FirstParameter() const { return 0; } Standard_Real LastParameter() const { return 1; } + // debug + void dumpNodes(int nbNodes) const; }; // -------------------------------------------------------------------- @@ -337,20 +352,19 @@ private: Standard_Real FirstParameter() const { return 0; } Standard_Real LastParameter() const { return 1; } }; - // -------------------------------------------------------------------- - bool myNotQuadOnTop; - SMESH_MesherHelper* myHelper; - TBlockShapes myShapeIDMap; + bool myNotQuadOnTop; + SMESH_MesherHelper* myHelper; + TBlockShapes myShapeIDMap; + SMESH_ComputeErrorPtr myError; // container of 4 side faces - TSideFace* mySide; + TSideFace* mySide; // node columns for each base edge - std::vector< TParam2ColumnMap > myParam2ColumnMaps; + std::vector< TParam2ColumnMap > myParam2ColumnMaps; // to find a column for a node by edge SMESHDS Index std::map< int, std::pair< TParam2ColumnMap*, bool > > myShapeIndex2ColumnMap; - SMESH_ComputeErrorPtr myError; /*! * \brief store error and comment and then return ( error == COMPERR_OK ) */ @@ -358,7 +372,6 @@ private: myError = SMESH_ComputeError::New(error,comment); return myError->IsOK(); } - //std::vector< SMESH_subMesh* > mySubMeshesVec; // submesh by in-block id }; // ============================================= @@ -432,7 +445,7 @@ private: StdMeshers_PrismAsBlock myBlock; SMESH_MesherHelper* myHelper; - std::vector myShapeXYZ; // point on each sub-shape + std::vector myShapeXYZ; // point on each sub-shape of the block // map of bottom nodes to the column of nodes above them // (the column includes the bottom node) diff --git a/src/StdMeshers/StdMeshers_ProjectionSource1D.cxx b/src/StdMeshers/StdMeshers_ProjectionSource1D.cxx index 9be958436..2fe95fa57 100644 --- a/src/StdMeshers/StdMeshers_ProjectionSource1D.cxx +++ b/src/StdMeshers/StdMeshers_ProjectionSource1D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's classes // File : StdMeshers_ProjectionSource1D.cxx // Author : Edward AGAPOV diff --git a/src/StdMeshers/StdMeshers_ProjectionSource1D.hxx b/src/StdMeshers/StdMeshers_ProjectionSource1D.hxx index 301dedf30..0f0549a8d 100644 --- a/src/StdMeshers/StdMeshers_ProjectionSource1D.hxx +++ b/src/StdMeshers/StdMeshers_ProjectionSource1D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's calsses // File : StdMeshers_ProjectionSource1D.hxx // Author : Edward AGAPOV diff --git a/src/StdMeshers/StdMeshers_ProjectionSource2D.cxx b/src/StdMeshers/StdMeshers_ProjectionSource2D.cxx index be0d809eb..068346f52 100644 --- a/src/StdMeshers/StdMeshers_ProjectionSource2D.cxx +++ b/src/StdMeshers/StdMeshers_ProjectionSource2D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,11 +19,12 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's classes // File : StdMeshers_ProjectionSource2D.cxx // Author : Edward AGAPOV // Module : SMESH - +// #include "StdMeshers_ProjectionSource2D.hxx" #include "SMESH_Mesh.hxx" diff --git a/src/StdMeshers/StdMeshers_ProjectionSource2D.hxx b/src/StdMeshers/StdMeshers_ProjectionSource2D.hxx index a23d4c494..5f973bcaa 100644 --- a/src/StdMeshers/StdMeshers_ProjectionSource2D.hxx +++ b/src/StdMeshers/StdMeshers_ProjectionSource2D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,11 +19,12 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's calsses // File : StdMeshers_ProjectionSource2D.hxx // Author : Edward AGAPOV // Module : SMESH - +// #ifndef _SMESH_ProjectionSource2D_HXX_ #define _SMESH_ProjectionSource2D_HXX_ diff --git a/src/StdMeshers/StdMeshers_ProjectionSource3D.cxx b/src/StdMeshers/StdMeshers_ProjectionSource3D.cxx index 4a8aa1086..c7b404d14 100644 --- a/src/StdMeshers/StdMeshers_ProjectionSource3D.cxx +++ b/src/StdMeshers/StdMeshers_ProjectionSource3D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,11 +19,12 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's classes // File : StdMeshers_ProjectionSource3D.cxx // Author : Edward AGAPOV // Module : SMESH - +// #include "StdMeshers_ProjectionSource3D.hxx" #include "utilities.h" diff --git a/src/StdMeshers/StdMeshers_ProjectionSource3D.hxx b/src/StdMeshers/StdMeshers_ProjectionSource3D.hxx index fd6848aec..ce37bac82 100644 --- a/src/StdMeshers/StdMeshers_ProjectionSource3D.hxx +++ b/src/StdMeshers/StdMeshers_ProjectionSource3D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,11 +19,12 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's calsses // File : StdMeshers_ProjectionSource3D.hxx // Author : Edward AGAPOV // Module : SMESH - +// #ifndef _SMESH_ProjectionSource3D_HXX_ #define _SMESH_ProjectionSource3D_HXX_ diff --git a/src/StdMeshers/StdMeshers_ProjectionUtils.cxx b/src/StdMeshers/StdMeshers_ProjectionUtils.cxx index a964b99c9..c2dcb0c29 100644 --- a/src/StdMeshers/StdMeshers_ProjectionUtils.cxx +++ b/src/StdMeshers/StdMeshers_ProjectionUtils.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's calsses // File : StdMeshers_ProjectionUtils.cxx // Created : Fri Oct 27 10:24:28 2006 @@ -1283,44 +1284,6 @@ bool StdMeshers_ProjectionUtils::InsertAssociation( const TopoDS_Shape& theShape return false; } -//======================================================================= -//function : IsSubShape -//purpose : -//======================================================================= - -bool StdMeshers_ProjectionUtils::IsSubShape( const TopoDS_Shape& shape, - SMESH_Mesh* aMesh ) -{ - if ( shape.IsNull() || !aMesh ) - return false; - return - aMesh->GetMeshDS()->ShapeToIndex( shape ) || - // PAL16202 - shape.ShapeType() == TopAbs_COMPOUND && aMesh->GetMeshDS()->IsGroupOfSubShapes( shape ); -} - -//======================================================================= -//function : IsSubShape -//purpose : -//======================================================================= - -bool StdMeshers_ProjectionUtils::IsSubShape( const TopoDS_Shape& shape, - const TopoDS_Shape& mainShape ) -{ - if ( !shape.IsNull() && !mainShape.IsNull() ) - { - for ( TopExp_Explorer exp( mainShape, shape.ShapeType()); - exp.More(); - exp.Next() ) - if ( shape.IsSame( exp.Current() )) - return true; - } - SCRUTE((shape.IsNull())); - SCRUTE((mainShape.IsNull())); - return false; -} - - //======================================================================= /*! * \brief Finds an edge by its vertices in a main shape of the mesh @@ -1536,7 +1499,7 @@ FindMatchingNodesOnFaces( const TopoDS_Face& face1, if ( !assocMap.IsBound( e2 )) RETURN_BAD_RESULT("Association not found for edge " << meshDS2->ShapeToIndex( e2 )); TopoDS_Edge e1 = TopoDS::Edge( assocMap( e2 )); - if ( !IsSubShape( e1, face1 )) + if ( !helper1.IsSubShape( e1, face1 )) RETURN_BAD_RESULT("Wrong association, edge " << meshDS1->ShapeToIndex( e1 ) << " isn't a subshape of face " << meshDS1->ShapeToIndex( face1 )); // check that there are nodes on edges diff --git a/src/StdMeshers/StdMeshers_ProjectionUtils.hxx b/src/StdMeshers/StdMeshers_ProjectionUtils.hxx index dab575503..6a657e55d 100644 --- a/src/StdMeshers/StdMeshers_ProjectionUtils.hxx +++ b/src/StdMeshers/StdMeshers_ProjectionUtils.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : idl implementation based on 'SMESH' unit's calsses // File : StdMeshers_ProjectionUtils.hxx // Created : Thu Oct 26 15:37:24 2006 @@ -111,10 +112,6 @@ class StdMeshers_ProjectionUtils TShapeShapeMap & theAssociationMap, const bool theBidirectional=true); - static bool IsSubShape( const TopoDS_Shape& shape, SMESH_Mesh* aMesh ); - - static bool IsSubShape( const TopoDS_Shape& shape, const TopoDS_Shape& mainShape ); - /*! * \brief Finds an edge by its vertices in a main shape of the mesh */ diff --git a/src/StdMeshers/StdMeshers_Projection_1D.cxx b/src/StdMeshers/StdMeshers_Projection_1D.cxx index df55fc267..1a2b67fcd 100644 --- a/src/StdMeshers/StdMeshers_Projection_1D.cxx +++ b/src/StdMeshers/StdMeshers_Projection_1D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Projection_1D.cxx // Module : SMESH @@ -67,7 +68,7 @@ StdMeshers_Projection_1D::StdMeshers_Projection_1D(int hypId, int studyId, SMESH :SMESH_1D_Algo(hypId, studyId, gen) { _name = "Projection_1D"; - _shapeType = (1 << TopAbs_EDGE); // 1 bit per shape type + _shapeType = (1 << TopAbs_EDGE); // 1 bit per shape type _compatibleHypothesis.push_back("ProjectionSource1D"); _sourceHypo = 0; @@ -128,25 +129,25 @@ bool StdMeshers_Projection_1D::CheckHypothesis(SMESH_Mesh& if ( _sourceHypo->HasVertexAssociation() ) { // source and target vertices - if ( !TAssocTool::IsSubShape( _sourceHypo->GetSourceVertex(), srcMesh ) || - !TAssocTool::IsSubShape( _sourceHypo->GetTargetVertex(), tgtMesh ) || - !TAssocTool::IsSubShape( _sourceHypo->GetSourceVertex(), - _sourceHypo->GetSourceEdge() )) + if ( !SMESH_MesherHelper::IsSubShape( _sourceHypo->GetSourceVertex(), srcMesh ) || + !SMESH_MesherHelper::IsSubShape( _sourceHypo->GetTargetVertex(), tgtMesh ) || + !SMESH_MesherHelper::IsSubShape( _sourceHypo->GetSourceVertex(), + _sourceHypo->GetSourceEdge() )) { aStatus = HYP_BAD_PARAMETER; - SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetSourceVertex(), srcMesh ))); - SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetTargetVertex(), tgtMesh ))); - SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetSourceVertex(), - _sourceHypo->GetSourceEdge() ))); + SCRUTE((SMESH_MesherHelper::IsSubShape( _sourceHypo->GetSourceVertex(), srcMesh ))); + SCRUTE((SMESH_MesherHelper::IsSubShape( _sourceHypo->GetTargetVertex(), tgtMesh ))); + SCRUTE((SMESH_MesherHelper::IsSubShape( _sourceHypo->GetSourceVertex(), + _sourceHypo->GetSourceEdge() ))); } // PAL16202 - else + else { - bool isSub = TAssocTool::IsSubShape( _sourceHypo->GetTargetVertex(), aShape ); + bool isSub = SMESH_MesherHelper::IsSubShape( _sourceHypo->GetTargetVertex(), aShape ); if ( !_sourceHypo->IsCompoundSource() ) { if ( !isSub ) { aStatus = HYP_BAD_PARAMETER; - SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetTargetVertex(), aShape))); + SCRUTE((SMESH_MesherHelper::IsSubShape( _sourceHypo->GetTargetVertex(), aShape))); } } else if ( isSub ) { @@ -159,7 +160,7 @@ bool StdMeshers_Projection_1D::CheckHypothesis(SMESH_Mesh& { const TopoDS_Shape& ancestor = ancestIt.Value(); if ( ancestor.ShapeType() == TopAbs_EDGE && - TAssocTool::IsSubShape( ancestor, _sourceHypo->GetSourceEdge() )) + SMESH_MesherHelper::IsSubShape( ancestor, _sourceHypo->GetSourceEdge() )) { if ( sharingEdge.IsNull() || ancestor.IsSame( sharingEdge )) sharingEdge = ancestor; @@ -175,11 +176,11 @@ bool StdMeshers_Projection_1D::CheckHypothesis(SMESH_Mesh& } } // check source edge - if ( !TAssocTool::IsSubShape( _sourceHypo->GetSourceEdge(), srcMesh ) || + if ( !SMESH_MesherHelper::IsSubShape( _sourceHypo->GetSourceEdge(), srcMesh ) || ( srcMesh == tgtMesh && aShape == _sourceHypo->GetSourceEdge() )) { aStatus = HYP_BAD_PARAMETER; - SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetSourceEdge(), srcMesh ))); + SCRUTE((SMESH_MesherHelper::IsSubShape( _sourceHypo->GetSourceEdge(), srcMesh ))); SCRUTE((srcMesh == tgtMesh)); SCRUTE(( aShape == _sourceHypo->GetSourceEdge() )); } @@ -379,8 +380,8 @@ bool StdMeshers_Projection_1D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape& //======================================================================= bool StdMeshers_Projection_1D::Evaluate(SMESH_Mesh& theMesh, - const TopoDS_Shape& theShape, - MapShapeNbElems& aResMap) + const TopoDS_Shape& theShape, + MapShapeNbElems& aResMap) { if ( !_sourceHypo ) return false; @@ -390,7 +391,7 @@ bool StdMeshers_Projection_1D::Evaluate(SMESH_Mesh& theMesh, if ( !srcMesh ) srcMesh = tgtMesh; - SMESHDS_Mesh * meshDS = theMesh.GetMeshDS(); + //SMESHDS_Mesh * meshDS = theMesh.GetMeshDS(); // --------------------------- // Make subshapes association @@ -433,8 +434,8 @@ bool StdMeshers_Projection_1D::Evaluate(SMESH_Mesh& theMesh, // Find out nodes distribution on the source edge // ----------------------------------------------- - double srcLength = EdgeLength( srcEdge ); - double tgtLength = EdgeLength( tgtEdge ); + //double srcLength = EdgeLength( srcEdge ); + //double tgtLength = EdgeLength( tgtEdge ); vector< double > params; // sorted parameters of nodes on the source edge if ( !SMESH_Algo::GetNodeParamOnEdge( srcMesh->GetMeshDS(), srcEdge, params )) diff --git a/src/StdMeshers/StdMeshers_Projection_1D.hxx b/src/StdMeshers/StdMeshers_Projection_1D.hxx index be003ed7b..e188bf227 100644 --- a/src/StdMeshers/StdMeshers_Projection_1D.hxx +++ b/src/StdMeshers/StdMeshers_Projection_1D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Projection_1D.hxx // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_Projection_2D.cxx b/src/StdMeshers/StdMeshers_Projection_2D.cxx index 63b843d32..7af5ee189 100644 --- a/src/StdMeshers/StdMeshers_Projection_2D.cxx +++ b/src/StdMeshers/StdMeshers_Projection_2D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Projection_2D.cxx // Module : SMESH @@ -50,6 +51,8 @@ #include #include #include +#include +#include using namespace std; @@ -67,7 +70,7 @@ StdMeshers_Projection_2D::StdMeshers_Projection_2D(int hypId, int studyId, SMESH :SMESH_2D_Algo(hypId, studyId, gen) { _name = "Projection_2D"; - _shapeType = (1 << TopAbs_FACE); // 1 bit per shape type + _shapeType = (1 << TopAbs_FACE); // 1 bit per shape type _compatibleHypothesis.push_back("ProjectionSource2D"); _sourceHypo = 0; @@ -130,40 +133,40 @@ bool StdMeshers_Projection_2D::CheckHypothesis(SMESH_Mesh& TopoDS_Shape edge = TAssocTool::GetEdgeByVertices ( srcMesh, _sourceHypo->GetSourceVertex(1), _sourceHypo->GetSourceVertex(2) ); if ( edge.IsNull() || - !TAssocTool::IsSubShape( edge, srcMesh ) || - !TAssocTool::IsSubShape( edge, _sourceHypo->GetSourceFace() )) + !SMESH_MesherHelper::IsSubShape( edge, srcMesh ) || + !SMESH_MesherHelper::IsSubShape( edge, _sourceHypo->GetSourceFace() )) { theStatus = HYP_BAD_PARAMETER; SCRUTE((edge.IsNull())); - SCRUTE((TAssocTool::IsSubShape( edge, srcMesh ))); - SCRUTE((TAssocTool::IsSubShape( edge, _sourceHypo->GetSourceFace() ))); + SCRUTE((SMESH_MesherHelper::IsSubShape( edge, srcMesh ))); + SCRUTE((SMESH_MesherHelper::IsSubShape( edge, _sourceHypo->GetSourceFace() ))); } else { // target vertices edge = TAssocTool::GetEdgeByVertices ( tgtMesh, _sourceHypo->GetTargetVertex(1), _sourceHypo->GetTargetVertex(2) ); - if ( edge.IsNull() || !TAssocTool::IsSubShape( edge, tgtMesh )) + if ( edge.IsNull() || !SMESH_MesherHelper::IsSubShape( edge, tgtMesh )) { theStatus = HYP_BAD_PARAMETER; SCRUTE((edge.IsNull())); - SCRUTE((TAssocTool::IsSubShape( edge, tgtMesh ))); + SCRUTE((SMESH_MesherHelper::IsSubShape( edge, tgtMesh ))); } // PAL16203 else if ( !_sourceHypo->IsCompoundSource() && - !TAssocTool::IsSubShape( edge, theShape )) + !SMESH_MesherHelper::IsSubShape( edge, theShape )) { theStatus = HYP_BAD_PARAMETER; - SCRUTE((TAssocTool::IsSubShape( edge, theShape ))); + SCRUTE((SMESH_MesherHelper::IsSubShape( edge, theShape ))); } } } // check a source face - if ( !TAssocTool::IsSubShape( _sourceHypo->GetSourceFace(), srcMesh ) || + if ( !SMESH_MesherHelper::IsSubShape( _sourceHypo->GetSourceFace(), srcMesh ) || ( srcMesh == tgtMesh && theShape == _sourceHypo->GetSourceFace() )) { theStatus = HYP_BAD_PARAMETER; - SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetSourceFace(), srcMesh ))); + SCRUTE((SMESH_MesherHelper::IsSubShape( _sourceHypo->GetSourceFace(), srcMesh ))); SCRUTE((srcMesh == tgtMesh)); SCRUTE(( theShape == _sourceHypo->GetSourceFace() )); } @@ -177,12 +180,11 @@ bool StdMeshers_Projection_2D::CheckHypothesis(SMESH_Mesh& namespace { - //================================================================================ /*! * \brief define if a node is new or old - * \param node - node to check - * \retval bool - true if the node existed before Compute() is called + * \param node - node to check + * \retval bool - true if the node existed before Compute() is called */ //================================================================================ @@ -356,7 +358,8 @@ namespace { //================================================================================ /*! - * \brief Preform projection in case if tgtFace.IsPartner( srcFace ) + * \brief Preform projection in case if tgtFace.IsPartner( srcFace ) and in case + * if projection by transformation is possible * \param tgtFace - target face * \param srcFace - source face * \param tgtMesh - target mesh @@ -371,8 +374,96 @@ namespace { SMESH_Mesh * srcMesh, const TAssocTool::TShapeShapeMap& shape2ShapeMap) { - if ( !tgtFace.IsPartner( srcFace )) - return false; + const double tol = 1e-6; + + gp_Trsf trsf; // transformation to get location of target nodes from source ones + if ( tgtFace.IsPartner( srcFace )) + { + gp_Trsf srcTrsf = srcFace.Location(); + gp_Trsf tgtTrsf = tgtFace.Location(); + trsf = srcTrsf.Inverted() * tgtTrsf; + } + else + { + // Try to find the transformation + + // make any local coord systems of src and tgt faces + vector srcPP, tgtPP; // 3 points on face boundaries to make axes of CS + SMESH_subMesh * srcSM = srcMesh->GetSubMesh( srcFace ); + SMESH_subMeshIteratorPtr smIt = srcSM->getDependsOnIterator(/*includeSelf=*/false,false); + srcSM = smIt->next(); // sm of a vertex + while ( smIt->more() && srcPP.size() < 3 ) + { + srcSM = smIt->next(); + SMESHDS_SubMesh* srcSmds = srcSM->GetSubMeshDS(); + if ( !srcSmds ) continue; + SMDS_NodeIteratorPtr nIt = srcSmds->GetNodes(); + while ( nIt->more() ) + { + SMESH_MeshEditor::TNodeXYZ p ( nIt->next()); + bool pOK = false; + switch ( srcPP.size() ) + { + case 0: pOK = true; break; + + case 1: pOK = ( srcPP[0].SquareDistance( p ) > tol ); break; + + case 2: + { + gp_Vec p0p1( srcPP[0], srcPP[1] ), p0p( srcPP[0], p ); + pOK = !p0p1.IsParallel( p0p, tol ); + break; + } + } + if ( !pOK ) + continue; + + // find corresponding point on target shape + pOK = false; + gp_Pnt tgtP; + const TopoDS_Shape& tgtShape = shape2ShapeMap( srcSM->GetSubShape() ); + if ( tgtShape.ShapeType() == TopAbs_VERTEX ) + { + tgtP = BRep_Tool::Pnt( TopoDS::Vertex( tgtShape )); + pOK = true; + //cout << "V - nS " << p._node->GetID() << " - nT " << SMESH_Algo::VertexNode(TopoDS::Vertex( tgtShape),tgtMesh->GetMeshDS())->GetID() << endl; + } + else if ( tgtPP.size() > 0 ) + { + if ( SMESHDS_SubMesh* tgtSmds = tgtMesh->GetMeshDS()->MeshElements( tgtShape )) + { + double srcDist = srcPP[0].Distance( p ); + double eTol = BRep_Tool::Tolerance( TopoDS::Edge( tgtShape )); + SMDS_NodeIteratorPtr nItT = tgtSmds->GetNodes(); + while ( nItT->more() && !pOK ) + { + const SMDS_MeshNode* n = nItT->next(); + tgtP = SMESH_MeshEditor::TNodeXYZ( n ); + pOK = ( fabs( srcDist - tgtPP[0].Distance( tgtP )) < 2*eTol ); + //cout << "E - nS " << p._node->GetID() << " - nT " << n->GetID()<< " OK - " << pOK<< " " << fabs( srcDist - tgtPP[0].Distance( tgtP ))<< " tol " << eTol<< endl; + } + } + } + if ( !pOK ) + continue; + + srcPP.push_back( p ); + tgtPP.push_back( tgtP ); + } + } + if ( srcPP.size() != 3 ) + return false; + + // make transformation + gp_Trsf fromTgtCS, toSrcCS; // from/to global CS + gp_Ax2 srcCS( srcPP[0], gp_Vec( srcPP[0], srcPP[1] ), gp_Vec( srcPP[0], srcPP[2])); + gp_Ax2 tgtCS( tgtPP[0], gp_Vec( tgtPP[0], tgtPP[1] ), gp_Vec( tgtPP[0], tgtPP[2])); + toSrcCS .SetTransformation( gp_Ax3( srcCS )); + fromTgtCS.SetTransformation( gp_Ax3( tgtCS )); + fromTgtCS.Invert(); + + trsf = fromTgtCS * toSrcCS; + } // Fill map of src to tgt nodes with nodes on edges @@ -382,8 +473,6 @@ namespace { for ( TopExp_Explorer srcEdge( srcFace, TopAbs_EDGE); srcEdge.More(); srcEdge.Next() ) { const TopoDS_Shape& tgtEdge = shape2ShapeMap( srcEdge.Current() ); - if ( !tgtEdge.IsPartner( srcEdge.Current() )) - return false; map< double, const SMDS_MeshNode* > srcNodes, tgtNodes; if ( !SMESH_Algo::GetSortedNodesOnEdge( srcMesh->GetMeshDS(), @@ -399,6 +488,30 @@ namespace { srcNodes.size() != tgtNodes.size()) return false; + if ( !tgtEdge.IsPartner( srcEdge.Current() )) + { + // check that transormation is OK by three nodes + gp_Pnt p0S = SMESH_MeshEditor::TNodeXYZ( (srcNodes.begin()) ->second); + gp_Pnt p1S = SMESH_MeshEditor::TNodeXYZ( (srcNodes.rbegin()) ->second); + gp_Pnt p2S = SMESH_MeshEditor::TNodeXYZ( (++srcNodes.begin())->second); + + gp_Pnt p0T = SMESH_MeshEditor::TNodeXYZ( (tgtNodes.begin()) ->second); + gp_Pnt p1T = SMESH_MeshEditor::TNodeXYZ( (tgtNodes.rbegin()) ->second); + gp_Pnt p2T = SMESH_MeshEditor::TNodeXYZ( (++tgtNodes.begin())->second); + + // transform source points, they must coinside with target ones + if ( p0T.SquareDistance( p0S.Transformed( trsf )) > tol || + p1T.SquareDistance( p1S.Transformed( trsf )) > tol || + p2T.SquareDistance( p2S.Transformed( trsf )) > tol ) + { + //cout << "KO trsf, 3 dist: " + //<< p0T.SquareDistance( p0S.Transformed( trsf ))<< ", " + //<< p1T.SquareDistance( p1S.Transformed( trsf ))<< ", " + //<< p2T.SquareDistance( p2S.Transformed( trsf ))<< ", "<::iterator u_tn = tgtNodes.begin(); map< double, const SMDS_MeshNode* >::iterator u_sn = srcNodes.begin(); for ( ; u_tn != tgtNodes.end(); ++u_tn, ++u_sn) @@ -407,11 +520,6 @@ namespace { // Make new faces - // transformation to get location of target nodes from source ones - gp_Trsf srcTrsf = srcFace.Location(); - gp_Trsf tgtTrsf = tgtFace.Location(); - gp_Trsf trsf = srcTrsf.Inverted() * tgtTrsf; - // prepare the helper adding quadratic elements if necessary SMESH_MesherHelper helper( *tgtMesh ); helper.IsQuadraticSubMesh( tgtFace ); @@ -545,9 +653,9 @@ bool StdMeshers_Projection_2D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape& RETURN_BAD_RESULT("Not associated vertices, srcV1 " << srcV1.TShape().operator->() ); TopoDS_Vertex tgtV1 = TopoDS::Vertex( shape2ShapeMap( srcV1 )); - if ( !TAssocTool::IsSubShape( srcV1, srcFace )) + if ( !SMESH_MesherHelper::IsSubShape( srcV1, srcFace )) RETURN_BAD_RESULT("Wrong srcV1 " << srcV1.TShape().operator->()); - if ( !TAssocTool::IsSubShape( tgtV1, tgtFace )) + if ( !SMESH_MesherHelper::IsSubShape( tgtV1, tgtFace )) RETURN_BAD_RESULT("Wrong tgtV1 " << tgtV1.TShape().operator->()); // try to find out orientation by order of edges @@ -748,8 +856,8 @@ bool StdMeshers_Projection_2D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape& //======================================================================= bool StdMeshers_Projection_2D::Evaluate(SMESH_Mesh& theMesh, - const TopoDS_Shape& theShape, - MapShapeNbElems& aResMap) + const TopoDS_Shape& theShape, + MapShapeNbElems& aResMap) { if ( !_sourceHypo ) return false; diff --git a/src/StdMeshers/StdMeshers_Projection_2D.hxx b/src/StdMeshers/StdMeshers_Projection_2D.hxx index 26506e81a..01eb80b9d 100644 --- a/src/StdMeshers/StdMeshers_Projection_2D.hxx +++ b/src/StdMeshers/StdMeshers_Projection_2D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Projection_2D.hxx // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_Projection_3D.cxx b/src/StdMeshers/StdMeshers_Projection_3D.cxx index d8939fead..e30980e32 100644 --- a/src/StdMeshers/StdMeshers_Projection_3D.cxx +++ b/src/StdMeshers/StdMeshers_Projection_3D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Projection_3D.cxx // Module : SMESH @@ -141,12 +142,12 @@ bool StdMeshers_Projection_3D::CheckHypothesis(SMESH_Mesh& TopoDS_Shape edge = TAssocTool::GetEdgeByVertices ( srcMesh, _sourceHypo->GetSourceVertex(1), _sourceHypo->GetSourceVertex(2) ); if ( edge.IsNull() || - !TAssocTool::IsSubShape( edge, srcMesh ) || - !TAssocTool::IsSubShape( edge, _sourceHypo->GetSource3DShape() )) + !SMESH_MesherHelper::IsSubShape( edge, srcMesh ) || + !SMESH_MesherHelper::IsSubShape( edge, _sourceHypo->GetSource3DShape() )) { SCRUTE((edge.IsNull())); - SCRUTE((TAssocTool::IsSubShape( edge, srcMesh ))); - SCRUTE((TAssocTool::IsSubShape( edge, _sourceHypo->GetSource3DShape() ))); + SCRUTE((SMESH_MesherHelper::IsSubShape( edge, srcMesh ))); + SCRUTE((SMESH_MesherHelper::IsSubShape( edge, _sourceHypo->GetSource3DShape() ))); aStatus = SMESH_Hypothesis::HYP_BAD_PARAMETER; } else @@ -155,21 +156,21 @@ bool StdMeshers_Projection_3D::CheckHypothesis(SMESH_Mesh& edge = TAssocTool::GetEdgeByVertices ( tgtMesh, _sourceHypo->GetTargetVertex(1), _sourceHypo->GetTargetVertex(2) ); if ( edge.IsNull() || - !TAssocTool::IsSubShape( edge, tgtMesh ) || - !TAssocTool::IsSubShape( edge, aShape )) + !SMESH_MesherHelper::IsSubShape( edge, tgtMesh ) || + !SMESH_MesherHelper::IsSubShape( edge, aShape )) { SCRUTE((edge.IsNull())); - SCRUTE((TAssocTool::IsSubShape( edge, tgtMesh ))); - SCRUTE((TAssocTool::IsSubShape( edge, aShape ))); + SCRUTE((SMESH_MesherHelper::IsSubShape( edge, tgtMesh ))); + SCRUTE((SMESH_MesherHelper::IsSubShape( edge, aShape ))); aStatus = SMESH_Hypothesis::HYP_BAD_PARAMETER; } } } // check a source shape - if ( !TAssocTool::IsSubShape( _sourceHypo->GetSource3DShape(), srcMesh ) || + if ( !SMESH_MesherHelper::IsSubShape( _sourceHypo->GetSource3DShape(), srcMesh ) || ( srcMesh == tgtMesh && aShape == _sourceHypo->GetSource3DShape())) { - SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetSource3DShape(), srcMesh))); + SCRUTE((SMESH_MesherHelper::IsSubShape( _sourceHypo->GetSource3DShape(), srcMesh))); SCRUTE((srcMesh == tgtMesh)); SCRUTE((aShape == _sourceHypo->GetSource3DShape())); aStatus = SMESH_Hypothesis::HYP_BAD_PARAMETER; @@ -266,8 +267,8 @@ bool StdMeshers_Projection_3D::Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& aS return error("Association of subshapes failed" ); srcV000 = TopoDS::Vertex( shape2ShapeMap( tgtV000 )); srcV100 = TopoDS::Vertex( shape2ShapeMap( tgtV100 )); - if ( !TAssocTool::IsSubShape( srcV000, srcShell ) || - !TAssocTool::IsSubShape( srcV100, srcShell )) + if ( !SMESH_MesherHelper::IsSubShape( srcV000, srcShell ) || + !SMESH_MesherHelper::IsSubShape( srcV100, srcShell )) return error("Incorrect association of subshapes" ); } diff --git a/src/StdMeshers/StdMeshers_Projection_3D.hxx b/src/StdMeshers/StdMeshers_Projection_3D.hxx index 8f9554509..68aed3780 100644 --- a/src/StdMeshers/StdMeshers_Projection_3D.hxx +++ b/src/StdMeshers/StdMeshers_Projection_3D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Projection_3D.hxx // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_Propagation.cxx b/src/StdMeshers/StdMeshers_Propagation.cxx index c6b9b015f..8b88ce99a 100644 --- a/src/StdMeshers/StdMeshers_Propagation.cxx +++ b/src/StdMeshers/StdMeshers_Propagation.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,10 +19,11 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Propagation.cxx // Module : SMESH - +// #include "StdMeshers_Propagation.hxx" #include "utilities.h" diff --git a/src/StdMeshers/StdMeshers_Propagation.hxx b/src/StdMeshers/StdMeshers_Propagation.hxx index b02f9aebe..c2689d27c 100644 --- a/src/StdMeshers/StdMeshers_Propagation.hxx +++ b/src/StdMeshers/StdMeshers_Propagation.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,10 +19,11 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Propagation.hxx // Module : SMESH - +// #ifndef _SMESH_PROPAGATION_HXX_ #define _SMESH_PROPAGATION_HXX_ diff --git a/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cxx b/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cxx index fcd7afd08..1ca7e5b12 100644 --- a/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cxx +++ b/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_QuadToTriaAdaptor.cxx // Module : SMESH @@ -27,32 +25,27 @@ // #include "StdMeshers_QuadToTriaAdaptor.hxx" -#include #include #include #include #include -#include +#include +#include #include #include #include #include #include -#include -typedef NCollection_Array1 StdMeshers_Array1OfSequenceOfInteger; - +#include -//======================================================================= -//function : StdMeshers_QuadToTriaAdaptor -//purpose : -//======================================================================= +using namespace std; -StdMeshers_QuadToTriaAdaptor::StdMeshers_QuadToTriaAdaptor() -{ -} +enum EQuadNature { NOT_QUAD, QUAD, DEGEN_QUAD }; + // sdt-like iterator used to get coordinates of nodes of mesh element +typedef SMDS_StdIterator< SMESH_MeshEditor::TNodeXYZ, SMDS_ElemIteratorPtr > TXyzIterator; //================================================================================ /*! @@ -63,26 +56,26 @@ StdMeshers_QuadToTriaAdaptor::StdMeshers_QuadToTriaAdaptor() StdMeshers_QuadToTriaAdaptor::~StdMeshers_QuadToTriaAdaptor() { // delete temporary faces - map< const SMDS_MeshElement*, list >::iterator - f_f = myResMap.begin(), ffEnd = myResMap.end(); + TQuad2Trias::iterator f_f = myResMap.begin(), ffEnd = myResMap.end(); for ( ; f_f != ffEnd; ++f_f ) { - list& fList = f_f->second; - list::iterator f = fList.begin(), fEnd = fList.end(); + TTriaList& fList = f_f->second; + TTriaList::iterator f = fList.begin(), fEnd = fList.end(); for ( ; f != fEnd; ++f ) delete *f; } myResMap.clear(); -// TF2PyramMap::iterator itp = myMapFPyram.begin(); -// for(; itp!=myMapFPyram.end(); itp++) +// TF2PyramMap::iterator itp = myPyram2Trias.begin(); +// for(; itp!=myPyram2Trias.end(); itp++) // cout << itp->second << endl; } //======================================================================= //function : FindBestPoint -//purpose : Auxilare for Compute() +//purpose : Return a point P laying on the line (PC,V) so that triangle +// (P, P1, P2) to be equilateral as much as possible // V - normal to (P1,P2,PC) //======================================================================= static gp_Pnt FindBestPoint(const gp_Pnt& P1, const gp_Pnt& P2, @@ -94,11 +87,10 @@ static gp_Pnt FindBestPoint(const gp_Pnt& P1, const gp_Pnt& P2, if( a < (b+c)/2 ) return PC; else { - // find shift along V in order to a became equal to (b+c)/2 + // find shift along V in order a to became equal to (b+c)/2 double shift = sqrt( a*a + (b*b-c*c)*(b*b-c*c)/16/a/a - (b*b+c*c)/2 ); gp_Dir aDir(V); - gp_Pnt Pbest( PC.X() + aDir.X()*shift, PC.Y() + aDir.Y()*shift, - PC.Z() + aDir.Z()*shift ); + gp_Pnt Pbest = PC.XYZ() + aDir.XYZ() * shift; return Pbest; } } @@ -183,6 +175,7 @@ static bool HasIntersection3(const gp_Pnt& P, const gp_Pnt& PC, gp_Pnt& Pint, //function : HasIntersection //purpose : Auxilare for CheckIntersection() //======================================================================= + static bool HasIntersection(const gp_Pnt& P, const gp_Pnt& PC, gp_Pnt& Pint, Handle(TColgp_HSequenceOfPnt)& aContour) { @@ -262,78 +255,53 @@ bool StdMeshers_QuadToTriaAdaptor::CheckIntersection //======================================================================= -//function : CompareTrias +//function : EqualTriangles //purpose : Auxilare for Compute() //======================================================================= -static bool CompareTrias(const SMDS_MeshElement* F1,const SMDS_MeshElement* F2) +static bool EqualTriangles(const SMDS_MeshElement* F1,const SMDS_MeshElement* F2) { return ( F1->GetNode(1)==F2->GetNode(2) && F1->GetNode(2)==F2->GetNode(1) ) || ( F1->GetNode(1)==F2->GetNode(1) && F1->GetNode(2)==F2->GetNode(2) ); } +//================================================================================ +/*! + * \brief Prepare data for the given face + * \param PN - coordinates of face nodes + * \param VN - cross products of vectors (PC-PN(i)) ^ (PC-PN(i+1)) + * \param FNodes - face nodes + * \param PC - gravity center of nodes + * \param VNorm - face normal (sum of VN) + * \param volumes - two volumes sharing the given face, the first is in VNorm direction + * \retval int - 0 if given face is not quad, + * 1 if given face is quad, + * 2 if given face is degenerate quad (two nodes are coincided) + */ +//================================================================================ -//======================================================================= -//function : IsDegenarate -//purpose : Auxilare for Preparation() -//======================================================================= -// static int IsDegenarate(const Handle(TColgp_HArray1OfPnt)& PN) -// { -// int i = 1; -// for(; i<4; i++) { -// int j = i+1; -// for(; j<=4; j++) { -// if( PN->Value(i).Distance(PN->Value(j)) < 1.e-6 ) -// return j; -// } -// } -// return 0; -// } - - -//======================================================================= -//function : Preparation -//purpose : Auxilare for Compute() -// : Return 0 if given face is not quad, -// 1 if given face is quad, -// 2 if given face is degenerate quad (two nodes are coincided) -//======================================================================= -int StdMeshers_QuadToTriaAdaptor::Preparation(const SMDS_MeshElement* face, - Handle(TColgp_HArray1OfPnt)& PN, - Handle(TColgp_HArray1OfVec)& VN, - std::vector& FNodes, - gp_Pnt& PC, gp_Vec& VNorm) +int StdMeshers_QuadToTriaAdaptor::Preparation(const SMDS_MeshElement* face, + Handle(TColgp_HArray1OfPnt)& PN, + Handle(TColgp_HArray1OfVec)& VN, + vector& FNodes, + gp_Pnt& PC, + gp_Vec& VNorm, + const SMDS_MeshElement** volumes) { - int i = 0; - double xc=0., yc=0., zc=0.; - SMDS_ElemIteratorPtr nodeIt = face->nodesIterator(); - if( !face->IsQuadratic() ) { + if( face->NbNodes() != ( face->IsQuadratic() ? 8 : 4 )) if( face->NbNodes() != 4 ) - return 0; - while ( nodeIt->more() ) { - i++; - const SMDS_MeshNode* node = static_cast( nodeIt->next() ); - FNodes[i-1] = node; - PN->SetValue( i, gp_Pnt(node->X(), node->Y(), node->Z()) ); - xc += node->X(); - yc += node->Y(); - zc += node->Z(); - } - } - else { - if( face->NbNodes() != 8) - return 0; - while ( nodeIt->more() ) { - i++; - const SMDS_MeshNode* node = static_cast( nodeIt->next() ); - FNodes[i-1] = node; - PN->SetValue( i, gp_Pnt(node->X(), node->Y(), node->Z()) ); - xc += node->X(); - yc += node->Y(); - zc += node->Z(); - if(i==4) break; - } + return NOT_QUAD; + + int i = 0; + gp_XYZ xyzC(0., 0., 0.); + for ( i = 0; i < 4; ++i ) + { + gp_XYZ p = SMESH_MeshEditor::TNodeXYZ( FNodes[i] = face->GetNode(i) ); + PN->SetValue( i+1, p ); + xyzC += p; } + PC = xyzC/4; + //cout<<" PC("<Value(i); - std::list< const SMDS_MeshNode* >::iterator itdg = myDegNodes.begin(); + list< const SMDS_MeshNode* >::iterator itdg = myDegNodes.begin(); const SMDS_MeshNode* DegNode = 0; for(; itdg!=myDegNodes.end(); itdg++) { const SMDS_MeshNode* N = (*itdg); @@ -377,24 +345,15 @@ int StdMeshers_QuadToTriaAdaptor::Preparation(const SMDS_MeshElement* face, FNodes[i-1] = FNodes[i]; } nbp = 3; - //PC = gp_Pnt( PN->Value(1).X() + PN.Value } - PC = gp_Pnt(xc/4., yc/4., zc/4.); - //cout<<" PC("<SetValue(5,PN->Value(1)); PN->SetValue(nbp+1,PN->Value(1)); - //FNodes[4] = FNodes[0]; FNodes[nbp] = FNodes[0]; // find normal direction - //gp_Vec V1(PC,PN->Value(4)); gp_Vec V1(PC,PN->Value(nbp)); gp_Vec V2(PC,PN->Value(1)); VNorm = V1.Crossed(V2); - //VN->SetValue(4,VNorm); VN->SetValue(nbp,VNorm); - //for(i=1; i<4; i++) { for(i=1; iValue(i)); V2 = gp_Vec(PC,PN->Value(i+1)); @@ -402,9 +361,37 @@ int StdMeshers_QuadToTriaAdaptor::Preparation(const SMDS_MeshElement* face, VN->SetValue(i,Vtmp); VNorm += Vtmp; } + + // find volumes sharing the face + if ( volumes ) + { + volumes[0] = volumes[1] = 0; + SMDS_ElemIteratorPtr vIt = FNodes[0]->GetInverseElementIterator( SMDSAbs_Volume ); + while ( vIt->more() ) + { + const SMDS_MeshElement* vol = vIt->next(); + bool volSharesAllNodes = true; + for ( int i = 1; i < face->NbNodes() && volSharesAllNodes; ++i ) + volSharesAllNodes = ( vol->GetNodeIndex( FNodes[i] ) >= 0 ); + if ( volSharesAllNodes ) + volumes[ volumes[0] ? 1 : 0 ] = vol; + // we could additionally check that vol has all FNodes in its one face using SMDS_VolumeTool + } + // define volume position relating to the face normal + if ( volumes[0] ) + { + // get volume gc + SMDS_ElemIteratorPtr nodeIt = volumes[0]->nodesIterator(); + gp_XYZ volGC(0,0,0); + volGC = accumulate( TXyzIterator(nodeIt), TXyzIterator(), volGC ) / volumes[0]->NbNodes(); + + if ( VNorm * gp_Vec( PC, volGC ) < 0 ) + swap( volumes[0], volumes[1] ); + } + } + //cout<<" VNorm("< FNodes(5); + vector FNodes(5); gp_Pnt PC; gp_Vec VNorm; int stat = Preparation(face, PN, VN, FNodes, PC, VNorm); @@ -446,13 +433,12 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh, const TopoDS_Shape if(stat==2) { // degenerate face // add triangles to result map - std::list aList; SMDS_FaceOfNodes* NewFace; if(!isRev) NewFace = new SMDS_FaceOfNodes( FNodes[0], FNodes[1], FNodes[2] ); else NewFace = new SMDS_FaceOfNodes( FNodes[0], FNodes[2], FNodes[1] ); - aList.push_back(NewFace); + TTriaList aList( 1, NewFace ); myResMap.insert(make_pair(face,aList)); continue; } @@ -504,18 +490,18 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh, const TopoDS_Shape } // create node for PCbest SMDS_MeshNode* NewNode = helper.AddNode( PCbest.X(), PCbest.Y(), PCbest.Z() ); + // add triangles to result map - std::list aList; - for(i=0; i<4; i++) { - SMDS_FaceOfNodes* NewFace = new SMDS_FaceOfNodes( NewNode, FNodes[i], FNodes[i+1] ); - aList.push_back(NewFace); - } - myResMap.insert(make_pair(face,aList)); + TTriaList& triaList = myResMap.insert( make_pair( face, TTriaList() ))->second; + for(i=0; i<4; i++) + triaList.push_back( new SMDS_FaceOfNodes( NewNode, FNodes[i], FNodes[i+1] )); + // create pyramid + if ( isRev ) swap( FNodes[1], FNodes[3]); SMDS_MeshVolume* aPyram = helper.AddVolume( FNodes[0], FNodes[1], FNodes[2], FNodes[3], NewNode ); - myMapFPyram.insert(make_pair(face,aPyram)); - } // end loop on elements on a face + myPyram2Trias.insert(make_pair(aPyram, & triaList)); + } // end loop on elements on a face submesh } } // end for(TopExp_Explorer exp(aShape,TopAbs_FACE);exp.More();exp.Next()) { @@ -531,7 +517,7 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh, const TopoDS_Shape bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh) { myResMap.clear(); - myMapFPyram.clear(); + myPyram2Trias.clear(); SMESH_MesherHelper helper(aMesh); helper.IsQuadraticSubMesh(aMesh.GetShapeToMesh()); helper.SetElementsOnShape( true ); @@ -548,26 +534,29 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh) const SMDS_MeshElement* face = *itFace; if ( !face ) continue; //cout<GetID() = "<GetID()< FNodes(5); + vector FNodes(5); gp_Pnt PC; gp_Vec VNorm; - - int stat = Preparation(face, PN, VN, FNodes, PC, VNorm); - if(stat==0) + const SMDS_MeshElement* volumes[2]; + int what = Preparation(face, PN, VN, FNodes, PC, VNorm, volumes); + if ( what == NOT_QUAD ) continue; + if ( volumes[0] && volumes[1] ) + continue; // face is shared by two volumes - no space for a pyramid - if(stat==2) { + if ( what == DEGEN_QUAD ) + { // degenerate face // add triangles to result map - std::list aList; + TTriaList aList; SMDS_FaceOfNodes* NewFace; // check orientation - double tmp = PN->Value(1).Distance(PN->Value(2)) + - PN->Value(2).Distance(PN->Value(3)); + double tmp = PN->Value(1).Distance(PN->Value(2)) + PN->Value(2).Distance(PN->Value(3)); + // far points in VNorm direction gp_Pnt Ptmp1 = PC.XYZ() + VNorm.XYZ() * tmp * 1.e6; gp_Pnt Ptmp2 = PC.XYZ() - VNorm.XYZ() * tmp * 1.e6; // check intersection for Ptmp1 and Ptmp2 @@ -581,24 +570,10 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh) const SMDS_MeshElement* F = *itF; if(F==face) continue; Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt; - SMDS_ElemIteratorPtr nodeIt = F->nodesIterator(); - if( !F->IsQuadratic() ) { - while ( nodeIt->more() ) { - const SMDS_MeshNode* node = static_cast( nodeIt->next() ); - aContour->Append(gp_Pnt(node->X(), node->Y(), node->Z())); - } - } - else { - int nn = 0; - while ( nodeIt->more() ) { - nn++; - const SMDS_MeshNode* node = static_cast( nodeIt->next() ); - aContour->Append(gp_Pnt(node->X(), node->Y(), node->Z())); - if(nn==face->NbNodes()/2) break; - } - } + for ( int i = 0; i < 4; ++i ) + aContour->Append( SMESH_MeshEditor::TNodeXYZ( F->GetNode(i) )); gp_Pnt PPP; - if( HasIntersection(Ptmp1, PC, PPP, aContour) ) { + if( !volumes[0] && HasIntersection(Ptmp1, PC, PPP, aContour) ) { IsOK1 = true; double tmp = PC.Distance(PPP); if(tmpValue(i), PN->Value(i+1), PC, VN->Value(i)); - xc += Pbest.X(); - yc += Pbest.Y(); - zc += Pbest.Z(); + PCbest += Pbest.XYZ(); } - gp_Pnt PCbest(xc/4., yc/4., zc/4.); - double height = PCbest.Distance(PC); + PCbest /= 4; + + double height = PC.Distance(PCbest); // pyramid height to precise if(height<1.e-6) { // create new PCbest using a bit shift along VNorm PCbest = PC.XYZ() + VNorm.XYZ() * 0.001; - height = PCbest.Distance(PC); + height = PC.Distance(PCbest); } //cout<<" PCbest("<Value(1).Distance(PN->Value(3)) + - PN->Value(2).Distance(PN->Value(4)); - gp_Dir tmpDir(V1); - gp_Pnt Ptmp1 = PC.XYZ() + tmpDir.XYZ() * tmp * 1.e6; - gp_Pnt Ptmp2 = PC.XYZ() - tmpDir.XYZ() * tmp * 1.e6; - // check intersection for Ptmp1 and Ptmp2 - bool IsRev = false; - bool IsOK1 = false; - bool IsOK2 = false; - double dist1 = RealLast(); - double dist2 = RealLast(); - gp_Pnt Pres1,Pres2; - for (TIDSortedElemSet::iterator itF = sortedFaces.begin(); itF != fEnd; ++itF ) { + // Restrict pyramid height by intersection with other faces + gp_Vec tmpDir(PC,PCbest); tmpDir.Normalize(); + double tmp = PN->Value(1).Distance(PN->Value(3)) + PN->Value(2).Distance(PN->Value(4)); + // far points: in (PC, PCbest) direction and vice-versa + gp_Pnt farPnt[2] = { PC.XYZ() + tmpDir.XYZ() * tmp * 1.e6, + PC.XYZ() - tmpDir.XYZ() * tmp * 1.e6 }; + // check intersection for farPnt1 and farPnt2 + bool intersected[2] = { false, false }; + double dist [2] = { RealLast(), RealLast() }; + gp_Pnt intPnt[2]; + for (TIDSortedElemSet::iterator itF = sortedFaces.begin(); itF != fEnd; ++itF ) + { const SMDS_MeshElement* F = *itF; if(F==face) continue; Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt; - SMDS_ElemIteratorPtr nodeIt = F->nodesIterator(); - if( !F->IsQuadratic() ) { - while ( nodeIt->more() ) { - const SMDS_MeshNode* node = static_cast( nodeIt->next() ); - aContour->Append(gp_Pnt(node->X(), node->Y(), node->Z())); - } - } - else { - int nn = 0; - while ( nodeIt->more() ) { - nn++; - const SMDS_MeshNode* node = static_cast( nodeIt->next() ); - aContour->Append(gp_Pnt(node->X(), node->Y(), node->Z())); - if(nn==face->NbNodes()/2) break; - } - } - gp_Pnt PPP; - if( HasIntersection(Ptmp1, PC, PPP, aContour) ) { - IsOK1 = true; - double tmp = PC.Distance(PPP); - if(tmpNbNodes() / ( F->IsQuadratic() ? 2 : 1 ); + for ( i = 0; i < nbN; ++i ) + aContour->Append( SMESH_MeshEditor::TNodeXYZ( F->GetNode(i) )); + gp_Pnt intP; + for ( int isRev = 0; isRev < 2; ++isRev ) + { + if( !volumes[isRev] && HasIntersection(farPnt[isRev], PC, intP, aContour) ) { + intersected[isRev] = true; + double d = PC.Distance( intP ); + if( d < dist[isRev] ) + { + intPnt[isRev] = intP; + dist [isRev] = d; + } } } } - if( IsOK1 && !IsOK2 ) { - // using existed direction - double tmp = PC.Distance(Pres1)/3.; - if( height > tmp ) { - height = tmp; - PCbest = PC.XYZ() + tmpDir.XYZ() * height; - } - } - else if( !IsOK1 && IsOK2 ) { - // using opposite direction - IsRev = true; - double tmp = PC.Distance(Pres2)/3.; - if( height > tmp ) height = tmp; - PCbest = PC.XYZ() - tmpDir.XYZ() * height; - } - else { // IsOK1 && IsOK2 - double tmp1 = PC.Distance(Pres1)/3.; - double tmp2 = PC.Distance(Pres2)/3.; - if(tmp1 tmp1 ) { - height = tmp1; - PCbest = PC.XYZ() + tmpDir.XYZ() * height; - } - } - else { - // using opposite direction - IsRev = true; - if( height > tmp2 ) height = tmp2; - PCbest = PC.XYZ() - tmpDir.XYZ() * height; - } - } + // Create one or two pyramids - // create node for PCbest - SMDS_MeshNode* NewNode = helper.AddNode( PCbest.X(), PCbest.Y(), PCbest.Z() ); - // add triangles to result map - std::list aList; - for(i=0; i<4; i++) { - SMDS_FaceOfNodes* NewFace; - if(IsRev) - NewFace = new SMDS_FaceOfNodes( NewNode, FNodes[i], FNodes[i+1] ); + for ( int isRev = 0; isRev < 2; ++isRev ) + { + if( !intersected[isRev] ) continue; + double pyramidH = Min( height, PC.Distance(intPnt[isRev])/3.); + PCbest = PC.XYZ() + tmpDir.XYZ() * (isRev ? -pyramidH : pyramidH); + + // create node for PCbest + SMDS_MeshNode* NewNode = helper.AddNode( PCbest.X(), PCbest.Y(), PCbest.Z() ); + + // add triangles to result map + TTriaList& aList = myResMap.insert( make_pair( face, TTriaList()))->second; + for(i=0; i<4; i++) { + SMDS_FaceOfNodes* NewFace; + if(isRev) + NewFace = new SMDS_FaceOfNodes( NewNode, FNodes[i], FNodes[i+1] ); + else + NewFace = new SMDS_FaceOfNodes( NewNode, FNodes[i+1], FNodes[i] ); + aList.push_back(NewFace); + } + // create a pyramid + SMDS_MeshVolume* aPyram; + if(isRev) + aPyram = helper.AddVolume( FNodes[0], FNodes[1], FNodes[2], FNodes[3], NewNode ); else - NewFace = new SMDS_FaceOfNodes( NewNode, FNodes[i+1], FNodes[i] ); - aList.push_back(NewFace); + aPyram = helper.AddVolume( FNodes[0], FNodes[3], FNodes[2], FNodes[1], NewNode ); + myPyram2Trias.insert(make_pair(aPyram, & aList)); } - myResMap.insert(make_pair(face,aList)); - // create pyramid - SMDS_MeshVolume* aPyram; - if(IsRev) - aPyram = helper.AddVolume( FNodes[0], FNodes[1], FNodes[2], FNodes[3], NewNode ); - else - aPyram = helper.AddVolume( FNodes[0], FNodes[3], FNodes[2], FNodes[1], NewNode ); - myMapFPyram.insert(make_pair(face,aPyram)); - } // end loop on elements on a face + } // end loop on all faces return Compute2ndPart(aMesh); } - //======================================================================= //function : Compute2ndPart -//purpose : +//purpose : Update created pyramids and faces to avoid their intersection //======================================================================= bool StdMeshers_QuadToTriaAdaptor::Compute2ndPart(SMESH_Mesh& aMesh) @@ -781,254 +713,180 @@ bool StdMeshers_QuadToTriaAdaptor::Compute2ndPart(SMESH_Mesh& aMesh) SMESHDS_Mesh * meshDS = aMesh.GetMeshDS(); // check intersections between created pyramids - int NbPyram = myMapFPyram.size(); - //cout<<"NbPyram = "< Pyrams(NbPyram); - vector< const SMDS_MeshElement* > Faces(NbPyram); - TF2PyramMap::iterator itp = myMapFPyram.begin(); - int i = 0; - for(; itp!=myMapFPyram.end(); itp++, i++) { - Faces[i] = (*itp).first; - Pyrams[i] = (*itp).second; - } - StdMeshers_Array1OfSequenceOfInteger MergesInfo(0,NbPyram-1); - for(i=0; inodesIterator(); - std::vector Ps1( Prm1->NbNodes() ); - vector< const SMDS_MeshNode* > Ns1( Prm1->NbNodes() ); - int k = 0; - for ( ; k < Ns1.size(); ++k ) { - const SMDS_MeshNode* node = static_cast( nIt->next() ); - Ns1[k] = node; - Ps1[k] = gp_Pnt(node->X(), node->Y(), node->Z()); - } + int k = 0; + + // for each pyramid store list of merged pyramids with their faces + typedef map< const SMDS_MeshElement*, list< TPyram2Trias::iterator > > TPyram2Merged; + TPyram2Merged MergesInfo; + + // iterate on all pyramids + TPyram2Trias::iterator itPi = myPyram2Trias.begin(), itPEnd = myPyram2Trias.end(); + for ( ; itPi != itPEnd; ++itPi ) + { + const SMDS_MeshElement* PrmI = itPi->first; + TPyram2Merged::iterator pMergesI = MergesInfo.find( PrmI ); + + TXyzIterator xyzIt( PrmI->nodesIterator() ); + vector PsI( xyzIt, TXyzIterator() ); + + // compare PrmI with all the rest pyramids bool NeedMove = false; - for(int j=i+1; jChangeElementNodes(Prm2, &Ns2[0], Ns2.size()); - // update pyramids for J - for(k=2; k<=nbJ; k++) { - const SMDS_MeshElement* tmpPrm = Pyrams[aMergesJ.Value(k)]; - SMDS_ElemIteratorPtr tmpIt = tmpPrm->nodesIterator(); - vector< const SMDS_MeshNode* > Ns( tmpPrm->NbNodes() ); - for ( int m = 0; m < Ns.size(); ++m ) - Ns[m] = static_cast( tmpIt->next() ); - Ns[4] = CommonNode; - meshDS->ChangeElementNodes(tmpPrm, &Ns[0], Ns.size()); - } - // update MergesInfo - for(k=1; k<=nbI; k++) { - int num = aMergesI.Value(k); - TColStd_SequenceOfInteger& aSeq = MergesInfo.ChangeValue(num); - for(int m=1; m<=nbJ; m++) - aSeq.Append(aMergesJ.Value(m)); + if ( nbc == 4 ) + continue; // pyrams have a common base face + + if(nbc>0) + { + // Merge the two pyramids and others already merged with them + + // initialize merge info of pyramids + if ( pMergesI == MergesInfo.end() ) // first merge of PrmI + { + pMergesI = MergesInfo.insert( make_pair( PrmI, list())).first; + pMergesI->second.push_back( itPi ); } - for(k=1; k<=nbJ; k++) { - int num = aMergesJ.Value(k); - TColStd_SequenceOfInteger& aSeq = MergesInfo.ChangeValue(num); - for(int m=1; m<=nbI; m++) - aSeq.Append(aMergesI.Value(m)); + if ( pMergesJ == MergesInfo.end() ) // first merge of PrmJ + { + pMergesJ = MergesInfo.insert( make_pair( PrmJ, list())).first; + pMergesJ->second.push_back( itPj ); } + int nbI = pMergesI->second.size(), nbJ = pMergesJ->second.size(); - // update triangles for aMergesJ - for(k=1; k<=nbJ; k++) { - list< list< const SMDS_MeshNode* > > aFNodes; - list< const SMDS_MeshElement* > aFFaces; - int num = aMergesJ.Value(k); - map< const SMDS_MeshElement*, - list >::iterator itrm = myResMap.find(Faces[num]); - list& trias = itrm->second; - list::iterator itt = trias.begin(); - for(; itt!=trias.end(); itt++) { - SMDS_ElemIteratorPtr nodeIt = (*itt)->nodesIterator(); - const SMDS_MeshNode* NF[3]; - int nn = 0; - while ( nodeIt->more() ) - NF[nn++] = static_cast( nodeIt->next() ); - NF[0] = CommonNode; - SMDS_FaceOfNodes* Ftria = const_cast< SMDS_FaceOfNodes*>( (*itt) ); - Ftria->ChangeNodes(NF, 3); + // an apex node to make common to all merged pyramids + SMDS_MeshNode* CommonNode = const_cast(PrmI->GetNode(4)); + CommonNode->setXYZ( ( nbI*PsI[4].X() + nbJ*PsJ[4].X() ) / (nbI+nbJ), + ( nbI*PsI[4].Y() + nbJ*PsJ[4].Y() ) / (nbI+nbJ), + ( nbI*PsI[4].Z() + nbJ*PsJ[4].Z() ) / (nbI+nbJ) ); + NeedMove = true; + const SMDS_MeshNode* Nrem = PrmJ->GetNode(4); // node to remove + + list< TPyram2Trias::iterator >& aMergesI = pMergesI->second; + list< TPyram2Trias::iterator >& aMergesJ = pMergesJ->second; + + // find and remove coincided faces of merged pyramids + list< TPyram2Trias::iterator >::iterator itPttI, itPttJ; + TTriaList::iterator trI, trJ; + for ( itPttI = aMergesI.begin(); itPttI != aMergesI.end(); ++itPttI ) + { + TTriaList* triaListI = (*itPttI)->second; + for ( trI = triaListI->begin(); trI != triaListI->end(); ) + { + const SMDS_FaceOfNodes* FI = *trI; + + for ( itPttJ = aMergesJ.begin(); itPttJ != aMergesJ.end() && FI; ++itPttJ ) + { + TTriaList* triaListJ = (*itPttJ)->second; + for ( trJ = triaListJ->begin(); trJ != triaListJ->end(); ) + { + const SMDS_FaceOfNodes* FJ = *trJ; + + if( EqualTriangles(FI,FJ) ) + { + delete FI; + delete FJ; + FI = FJ = 0; + trI = triaListI->erase( trI ); + trJ = triaListJ->erase( trJ ); + break; // only one triangle of a pyramid can coincide with another pyramid + } + ++trJ; + } + } + if ( FI ) ++trI; // increament if triangle not deleted } } - // check and remove coincided faces - //TColStd_SequenceOfInteger IdRemovedTrias; - int i1 = 1; - for(; i1<=nbI; i1++) { - int numI = aMergesI.Value(i1); - map< const SMDS_MeshElement*, - list >::iterator itrmI = myResMap.find(Faces[numI]); - list& triasI = (*itrmI).second; - list::iterator ittI = triasI.begin(); - int nbfI = triasI.size(); - vector FsI(nbfI); - k = 0; - for(; ittI!=triasI.end(); ittI++) { - FsI[k] = (*ittI); - k++; + // set the common apex node to pyramids and triangles merged with J + for ( itPttJ = aMergesJ.begin(); itPttJ != aMergesJ.end(); ++itPttJ ) + { + const SMDS_MeshElement* Prm = (*itPttJ)->first; + TTriaList* triaList = (*itPttJ)->second; + + vector< const SMDS_MeshNode* > nodes( Prm->begin_nodes(), Prm->end_nodes() ); + nodes[4] = CommonNode; + meshDS->ChangeElementNodes( Prm, &nodes[0], nodes.size()); + + for ( TTriaList::iterator trIt = triaList->begin(); trIt != triaList->end(); ++trIt ) + { + SMDS_FaceOfNodes* Ftria = const_cast< SMDS_FaceOfNodes*>( *trIt ); + const SMDS_MeshNode* NF[3] = { CommonNode, Ftria->GetNode(1), Ftria->GetNode(2)}; + Ftria->ChangeNodes(NF, 3); } - int i2 = 0; - for(; i2 >::iterator itrmJ = myResMap.find(Faces[numJ]); - list& triasJ = (*itrmJ).second; - list::iterator ittJ = triasJ.begin(); - int nbfJ = triasJ.size(); - vector FsJ(nbfJ); - k = 0; - for(; ittJ!=triasJ.end(); ittJ++) { - FsJ[k] = (*ittJ); - k++; - } - int j2 = 0; - for(; j2GetID() ); - //IdRemovedTrias.Append( FJ->GetID() ); - FsI[i2] = 0; - FsJ[j2] = 0; - list new_triasI; - for(k=0; k new_triasJ; - for(k=0; kfirst; + list< TPyram2Trias::iterator >& merges = MergesInfo[ PrmI ]; + merges.insert( merges.end(), aMergesJ.begin(), aMergesJ.end() ); + } + for ( k = 0, itPttJ = aMergesJ.begin(); k < nbJ; ++itPttJ, ++k ) + { + const SMDS_MeshElement* PrmJ = (*itPttJ)->first; + list< TPyram2Trias::iterator >& merges = MergesInfo[ PrmJ ]; + merges.insert( merges.end(), aMergesI.begin(), aMergesI.end() ); + } + // removing node meshDS->RemoveNode(Nrem); } else { // nbc==0 - //cout<<"decrease height of pyramids"<(Ns1[4]); VN1.Scale(coef1); - aNode1->setXYZ( PC1.X()+VN1.X(), PC1.Y()+VN1.Y(), PC1.Z()+VN1.Z() ); - SMDS_MeshNode* aNode2 = const_cast(Ns2[4]); VN2.Scale(coef2); + SMDS_MeshNode* aNode1 = const_cast(PrmI->GetNode(4)); + aNode1->setXYZ( PC1.X()+VN1.X(), PC1.Y()+VN1.Y(), PC1.Z()+VN1.Z() ); + SMDS_MeshNode* aNode2 = const_cast(PrmJ->GetNode(4)); aNode2->setXYZ( PC2.X()+VN2.X(), PC2.Y()+VN2.Y(), PC2.Z()+VN2.Z() ); NeedMove = true; } } // end if(hasInt) - else { - //cout<<" no intersec for i="< -#include -#include +#include "SMDS_FaceOfNodes.hxx" + +class SMESH_Mesh; +class SMDS_MeshElement; +class SMDS_MeshNode; +class Handle(TColgp_HArray1OfPnt); +class Handle(TColgp_HArray1OfVec); +class TopoDS_Shape; +class gp_Pnt; +class gp_Vec; + #include #include @@ -40,8 +45,6 @@ class STDMESHERS_EXPORT StdMeshers_QuadToTriaAdaptor { public: - StdMeshers_QuadToTriaAdaptor(); - ~StdMeshers_QuadToTriaAdaptor(); bool Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape); @@ -58,7 +61,8 @@ protected: Handle(TColgp_HArray1OfPnt)& PN, Handle(TColgp_HArray1OfVec)& VN, std::vector& FNodes, - gp_Pnt& PC, gp_Vec& VNorm); + gp_Pnt& PC, gp_Vec& VNorm, + const SMDS_MeshElement** volumes=0); bool CheckIntersection(const gp_Pnt& P, const gp_Pnt& PC, gp_Pnt& Pint, SMESH_Mesh& aMesh, @@ -67,10 +71,13 @@ protected: bool Compute2ndPart(SMESH_Mesh& aMesh); - typedef std::map< const SMDS_MeshElement*, const SMDS_MeshElement*, TIDCompare > TF2PyramMap; + typedef std::list TTriaList; + typedef std::multimap TQuad2Trias; + typedef std::map TPyram2Trias; + + TQuad2Trias myResMap; + TPyram2Trias myPyram2Trias; - std::map< const SMDS_MeshElement*, std::list > myResMap; - TF2PyramMap myMapFPyram; std::list< const SMDS_MeshNode* > myDegNodes; }; diff --git a/src/StdMeshers/StdMeshers_QuadrangleParams.cxx b/src/StdMeshers/StdMeshers_QuadrangleParams.cxx index ad3fee841..07cd7f649 100644 --- a/src/StdMeshers/StdMeshers_QuadrangleParams.cxx +++ b/src/StdMeshers/StdMeshers_QuadrangleParams.cxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_QuadrangleParams.cxx // Author : Sergey KUUL, OCC @@ -48,7 +46,7 @@ using namespace std; //============================================================================= StdMeshers_QuadrangleParams::StdMeshers_QuadrangleParams(int hypId, int studyId, - SMESH_Gen * gen) + SMESH_Gen * gen) :SMESH_Hypothesis(hypId, studyId, gen) { _name = "QuadrangleParams"; @@ -142,7 +140,7 @@ istream & operator >>(istream & load, StdMeshers_QuadrangleParams & hyp) //================================================================================ bool StdMeshers_QuadrangleParams::SetParametersByMesh(const SMESH_Mesh* theMesh, - const TopoDS_Shape& theShape) + const TopoDS_Shape& theShape) { if ( !theMesh || theShape.IsNull() ) return false; @@ -158,7 +156,7 @@ bool StdMeshers_QuadrangleParams::SetParametersByMesh(const SMESH_Mesh* theMesh, //================================================================================ bool StdMeshers_QuadrangleParams::SetParametersByDefaults(const TDefaults& dflts, - const SMESH_Mesh* /*mesh*/) + const SMESH_Mesh* /*mesh*/) { return true; } diff --git a/src/StdMeshers/StdMeshers_QuadrangleParams.hxx b/src/StdMeshers/StdMeshers_QuadrangleParams.hxx index ab1c56fab..da37f0755 100644 --- a/src/StdMeshers/StdMeshers_QuadrangleParams.hxx +++ b/src/StdMeshers/StdMeshers_QuadrangleParams.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_QuadrangleParams.hxx // Author : Sergey KUUL, OCC @@ -52,9 +50,9 @@ public: virtual std::ostream & SaveTo(std::ostream & save); virtual std::istream & LoadFrom(std::istream & load); friend std::ostream& operator << (std::ostream & save, - StdMeshers_QuadrangleParams & hyp); + StdMeshers_QuadrangleParams & hyp); friend std::istream& operator >> (std::istream & load, - StdMeshers_QuadrangleParams & hyp); + StdMeshers_QuadrangleParams & hyp); /*! * \brief Initialize start and end length by the mesh built on the geometry @@ -63,14 +61,14 @@ public: * \retval bool - true if parameter values have been successfully defined */ virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, - const TopoDS_Shape& theShape); + const TopoDS_Shape& theShape); /*! * \brief Initialize my parameter values by default parameters. * \retval bool - true if parameter values have been successfully defined */ virtual bool SetParametersByDefaults(const TDefaults& dflts, - const SMESH_Mesh* theMesh=0); + const SMESH_Mesh* theMesh=0); protected: int _triaVertexID; diff --git a/src/StdMeshers/StdMeshers_QuadranglePreference.cxx b/src/StdMeshers/StdMeshers_QuadranglePreference.cxx index cf3986e38..81a2601a4 100644 --- a/src/StdMeshers/StdMeshers_QuadranglePreference.cxx +++ b/src/StdMeshers/StdMeshers_QuadranglePreference.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,10 +19,11 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers_QuadranglePreference : implementaion of SMESH idl descriptions // File : StdMeshers_QuadranglePreference.cxx // Module : SMESH - +// #include "StdMeshers_QuadranglePreference.hxx" #include "utilities.h" diff --git a/src/StdMeshers/StdMeshers_QuadranglePreference.hxx b/src/StdMeshers/StdMeshers_QuadranglePreference.hxx index ec641d15a..24dcb7e5e 100644 --- a/src/StdMeshers/StdMeshers_QuadranglePreference.hxx +++ b/src/StdMeshers/StdMeshers_QuadranglePreference.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,10 +19,11 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers : implementaion of SMESH idl descriptions // File : StdMeshers_QuadranglePreference.hxx // Module : SMESH - +// #ifndef _StdMeshers_QuadranglePreference_HXX_ #define _StdMeshers_QuadranglePreference_HXX_ diff --git a/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx b/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx index 501915676..5e2031c23 100644 --- a/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx +++ b/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Quadrangle_2D.cxx // Moved here from SMESH_Quadrangle_2D.cxx @@ -43,7 +44,6 @@ #include "SMDS_EdgePosition.hxx" #include "SMDS_FacePosition.hxx" -#include #include #include #include @@ -51,7 +51,9 @@ #include #include #include +#include #include +#include #include #include "utilities.h" @@ -773,14 +775,21 @@ FaceQuadStruct* StdMeshers_Quadrangle_2D::CheckNbEdges(SMESH_Mesh & aMes int nbSides = 0; list< TopoDS_Edge >::iterator edgeIt = edges.begin(); - if ( nbEdgesInWire.front() == 3 ) { // exactly 3 edges - if(myTriaVertexID>0) { - SMESHDS_Mesh* meshDS = aMesh.GetMeshDS(); + if ( nbEdgesInWire.front() == 3 ) // exactly 3 edges + { + SMESH_Comment comment; + SMESHDS_Mesh* meshDS = aMesh.GetMeshDS(); + if ( myTriaVertexID == -1) + { + comment << "No Base vertex parameter provided for a trilateral geometrical face"; + } + else + { TopoDS_Vertex V = TopoDS::Vertex(meshDS->IndexToShape(myTriaVertexID)); - if(!V.IsNull()) { + if ( !V.IsNull() ) { TopoDS_Edge E1,E2,E3; for(; edgeIt != edges.end(); ++edgeIt) { - TopoDS_Edge E = TopoDS::Edge(*edgeIt); + TopoDS_Edge E = *edgeIt; TopoDS_Vertex VF, VL; TopExp::Vertices(E, VF, VL, true); if( VF.IsSame(V) ) @@ -790,22 +799,29 @@ FaceQuadStruct* StdMeshers_Quadrangle_2D::CheckNbEdges(SMESH_Mesh & aMes else E2 = E; } - quad->side.reserve(4); - quad->side.push_back( new StdMeshers_FaceSide(F, E1, &aMesh, true, ignoreMediumNodes)); - quad->side.push_back( new StdMeshers_FaceSide(F, E2, &aMesh, true, ignoreMediumNodes)); - quad->side.push_back( new StdMeshers_FaceSide(F, E3, &aMesh, false, ignoreMediumNodes)); - std::vector UVPSleft = quad->side[0]->GetUVPtStruct(true,0); - std::vector UVPStop = quad->side[1]->GetUVPtStruct(false,1); - std::vector UVPSright = quad->side[2]->GetUVPtStruct(true,1); - const SMDS_MeshNode* aNode = UVPSleft[0].node; - gp_Pnt2d aPnt2d( UVPSleft[0].u, UVPSleft[0].v ); - StdMeshers_FaceSide* VertFS = - new StdMeshers_FaceSide(aNode, aPnt2d, quad->side[1]); - quad->side.push_back(VertFS); - return quad; + if ( !E1.IsNull() && !E2.IsNull() && !E3.IsNull() ) + { + quad->side.push_back( new StdMeshers_FaceSide(F, E1, &aMesh, true, ignoreMediumNodes)); + quad->side.push_back( new StdMeshers_FaceSide(F, E2, &aMesh, true, ignoreMediumNodes)); + quad->side.push_back( new StdMeshers_FaceSide(F, E3, &aMesh, false,ignoreMediumNodes)); + const vector& UVPSleft = quad->side[0]->GetUVPtStruct(true,0); + /* vector& UVPStop = */quad->side[1]->GetUVPtStruct(false,1); + /* vector& UVPSright = */quad->side[2]->GetUVPtStruct(true,1); + const SMDS_MeshNode* aNode = UVPSleft[0].node; + gp_Pnt2d aPnt2d( UVPSleft[0].u, UVPSleft[0].v ); + quad->side.push_back( new StdMeshers_FaceSide(aNode, aPnt2d, quad->side[1])); + return quad; + } } + comment << "Invalid Base vertex parameter: " << myTriaVertexID << " is not among ["; + TopTools_MapOfShape vMap; + for ( TopExp_Explorer v( aShape, TopAbs_VERTEX ); v.More(); v.Next()) + if ( vMap.Add( v.Current() )) + comment << meshDS->ShapeToIndex( v.Current() ) << ( vMap.Extent()==3 ? "]" : ", "); } - return 0; + error( comment ); + delete quad; + return quad = 0; } else if ( nbEdgesInWire.front() == 4 ) { // exactly 4 edges for ( ; edgeIt != edges.end(); ++edgeIt, nbSides++ ) diff --git a/src/StdMeshers/StdMeshers_Quadrangle_2D.hxx b/src/StdMeshers/StdMeshers_Quadrangle_2D.hxx index 25083af32..74c64f6f0 100644 --- a/src/StdMeshers/StdMeshers_Quadrangle_2D.hxx +++ b/src/StdMeshers/StdMeshers_Quadrangle_2D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Quadrangle_2D.hxx // Moved here from SMESH_Quadrangle_2D.hxx @@ -63,13 +64,13 @@ public: SMESH_Hypothesis::Hypothesis_Status& aStatus); virtual bool Compute(SMESH_Mesh& aMesh, - const TopoDS_Shape& aShape); + const TopoDS_Shape& aShape); virtual bool Evaluate(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape, MapShapeNbElems& aResMap); FaceQuadStruct* CheckAnd2Dcompute(SMESH_Mesh& aMesh, - const TopoDS_Shape& aShape, + const TopoDS_Shape& aShape, const bool CreateQuadratic); protected: @@ -78,14 +79,14 @@ protected: const TopoDS_Shape& aShape); bool CheckNbEdgesForEvaluate(SMESH_Mesh& aMesh, - const TopoDS_Shape & aShape, - MapShapeNbElems& aResMap, - std::vector& aNbNodes, + const TopoDS_Shape & aShape, + MapShapeNbElems& aResMap, + std::vector& aNbNodes, bool& IsQuadratic); bool SetNormalizedGrid(SMESH_Mesh& aMesh, - const TopoDS_Shape& aShape, - FaceQuadStruct*& quad); + const TopoDS_Shape& aShape, + FaceQuadStruct*& quad); void SplitQuad(SMESHDS_Mesh *theMeshDS, const int theFaceID, @@ -102,22 +103,22 @@ protected: FaceQuadStruct* quad); bool EvaluateQuadPref(SMESH_Mesh& aMesh, - const TopoDS_Shape& aShape, - std::vector& aNbNodes, - MapShapeNbElems& aResMap, + const TopoDS_Shape& aShape, + std::vector& aNbNodes, + MapShapeNbElems& aResMap, bool IsQuadratic); UVPtStruct* LoadEdgePoints2(SMESH_Mesh& aMesh, - const TopoDS_Face& F, const TopoDS_Edge& E, + const TopoDS_Face& F, const TopoDS_Edge& E, bool IsReverse); UVPtStruct* LoadEdgePoints(SMESH_Mesh& aMesh, - const TopoDS_Face& F, const TopoDS_Edge& E, - double first, double last); + const TopoDS_Face& F, const TopoDS_Edge& E, + double first, double last); UVPtStruct* MakeEdgePoints(SMESH_Mesh& aMesh, - const TopoDS_Face& F, const TopoDS_Edge& E, - double first, double last, int nb_segm); + const TopoDS_Face& F, const TopoDS_Edge& E, + double first, double last, int nb_segm); // true if QuadranglePreference hypothesis is assigned that forces // construction of quadrangles if the number of nodes on opposite edges diff --git a/src/StdMeshers/StdMeshers_QuadraticMesh.cxx b/src/StdMeshers/StdMeshers_QuadraticMesh.cxx index 4764356f2..de6fe8652 100644 --- a/src/StdMeshers/StdMeshers_QuadraticMesh.cxx +++ b/src/StdMeshers/StdMeshers_QuadraticMesh.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,10 +19,11 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers_QuadraticMesh : implementaion of SMESH idl descriptions // File : StdMeshers_QuadraticMesh.cxx // Module : SMESH - +// #include "StdMeshers_QuadraticMesh.hxx" #include "utilities.h" diff --git a/src/StdMeshers/StdMeshers_QuadraticMesh.hxx b/src/StdMeshers/StdMeshers_QuadraticMesh.hxx index 9972469c0..ec43466b4 100644 --- a/src/StdMeshers/StdMeshers_QuadraticMesh.hxx +++ b/src/StdMeshers/StdMeshers_QuadraticMesh.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,10 +19,11 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers : implementaion of SMESH idl descriptions // File : StdMeshers_QuadraticMesh.hxx // Module : SMESH - +// #ifndef _StdMeshers_QuadraticMesh_HXX_ #define _StdMeshers_QuadraticMesh_HXX_ diff --git a/src/StdMeshers/StdMeshers_RadialPrism_3D.cxx b/src/StdMeshers/StdMeshers_RadialPrism_3D.cxx index fb6cc94e1..c08c6b31e 100644 --- a/src/StdMeshers/StdMeshers_RadialPrism_3D.cxx +++ b/src/StdMeshers/StdMeshers_RadialPrism_3D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_RadialPrism_3D.cxx // Module : SMESH @@ -71,7 +72,7 @@ StdMeshers_RadialPrism_3D::StdMeshers_RadialPrism_3D(int hypId, int studyId, SME :SMESH_3D_Algo(hypId, studyId, gen) { _name = "RadialPrism_3D"; - _shapeType = (1 << TopAbs_SOLID); // 1 bit per shape type + _shapeType = (1 << TopAbs_SOLID); // 1 bit per shape type _compatibleHypothesis.push_back("LayerDistribution"); _compatibleHypothesis.push_back("NumberOfLayers"); @@ -396,8 +397,8 @@ bool StdMeshers_RadialPrism_3D::computeLayerPositions(const gp_Pnt& pIn, //======================================================================= bool StdMeshers_RadialPrism_3D::Evaluate(SMESH_Mesh& aMesh, - const TopoDS_Shape& aShape, - MapShapeNbElems& aResMap) + const TopoDS_Shape& aShape, + MapShapeNbElems& aResMap) { // get 2 shells TopoDS_Solid solid = TopoDS::Solid( aShape ); diff --git a/src/StdMeshers/StdMeshers_RadialPrism_3D.hxx b/src/StdMeshers/StdMeshers_RadialPrism_3D.hxx index 21d8f8362..1d0b59375 100644 --- a/src/StdMeshers/StdMeshers_RadialPrism_3D.hxx +++ b/src/StdMeshers/StdMeshers_RadialPrism_3D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_RadialPrism_3D.hxx // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cxx b/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cxx index 8d21195db..d03470fb3 100644 --- a/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cxx +++ b/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_RadialQuadrangle_1D2D.cxx // Module : SMESH @@ -27,15 +25,15 @@ // #include "StdMeshers_RadialQuadrangle_1D2D.hxx" -//#include "StdMeshers_ProjectionUtils.hxx" #include "StdMeshers_NumberOfLayers.hxx" #include "StdMeshers_LayerDistribution.hxx" -//#include "StdMeshers_Prism_3D.hxx" #include "StdMeshers_Regular_1D.hxx" +#include "StdMeshers_NumberOfSegments.hxx" #include "SMDS_MeshNode.hxx" #include "SMESHDS_SubMesh.hxx" #include "SMESH_Gen.hxx" +#include "SMESH_HypoFilter.hxx" #include "SMESH_Mesh.hxx" #include "SMESH_MesherHelper.hxx" #include "SMESH_subMesh.hxx" @@ -53,6 +51,7 @@ #include #include #include +#include #include @@ -61,8 +60,6 @@ using namespace std; #define RETURN_BAD_RESULT(msg) { MESSAGE(")-: Error: " << msg); return false; } #define gpXYZ(n) gp_XYZ(n->X(),n->Y(),n->Z()) -//typedef StdMeshers_ProjectionUtils TAssocTool; - //======================================================================= //function : StdMeshers_RadialQuadrangle_1D2D @@ -82,6 +79,7 @@ StdMeshers_RadialQuadrangle_1D2D::StdMeshers_RadialQuadrangle_1D2D(int hypId, myNbLayerHypo = 0; myDistributionHypo = 0; _requireDescretBoundary = false; + _supportSubmeshes = true; } @@ -113,8 +111,8 @@ bool StdMeshers_RadialQuadrangle_1D2D::CheckHypothesis const list &hyps = GetUsedHypothesis(aMesh, aShape); if ( hyps.size() == 0 ) { - aStatus = SMESH_Hypothesis::HYP_MISSING; - return false; // can't work with no hypothesis + aStatus = SMESH_Hypothesis::HYP_OK; + return true; // can work with no hypothesis } if ( hyps.size() > 1 ) { @@ -146,27 +144,42 @@ namespace /*! * \brief Listener used to mark edges meshed by StdMeshers_RadialQuadrangle_1D2D */ - class TLinEdgeMarker : public SMESH_subMeshEventListener + class TEdgeMarker : public SMESH_subMeshEventListener { - TLinEdgeMarker(): SMESH_subMeshEventListener(/*isDeletable=*/false) {} + TEdgeMarker(): SMESH_subMeshEventListener(/*isDeletable=*/false) {} public: + //!< Return static listener static SMESH_subMeshEventListener* getListener() { - static TLinEdgeMarker theEdgeMarker; + static TEdgeMarker theEdgeMarker; return &theEdgeMarker; } + //! Clear face sumbesh if something happens on edges + void ProcessEvent(const int event, + const int eventType, + SMESH_subMesh* edgeSubMesh, + EventListenerData* data, + const SMESH_Hypothesis* /*hyp*/) + { + if ( data && !data->mySubMeshes.empty() && eventType == SMESH_subMesh::ALGO_EVENT) + { + ASSERT( data->mySubMeshes.front() != edgeSubMesh ); + SMESH_subMesh* faceSubMesh = data->mySubMeshes.front(); + faceSubMesh->ComputeStateEngine( SMESH_subMesh::CLEAN ); + } + } }; - + // ------------------------------------------------------------------------------ /*! * \brief Mark an edge as computed by StdMeshers_RadialQuadrangle_1D2D */ - void markLinEdgeAsComputedByMe(const TopoDS_Edge& edge, SMESH_subMesh* faceSubMesh) + void markEdgeAsComputedByMe(const TopoDS_Edge& edge, SMESH_subMesh* faceSubMesh) { if ( SMESH_subMesh* edgeSM = faceSubMesh->GetFather()->GetSubMeshContaining( edge )) { - if ( !edgeSM->GetEventListenerData( TLinEdgeMarker::getListener() )) - faceSubMesh->SetEventListener( TLinEdgeMarker::getListener(), + if ( !edgeSM->GetEventListenerData( TEdgeMarker::getListener() )) + faceSubMesh->SetEventListener( TEdgeMarker::getListener(), SMESH_subMeshEventListenerData::MakeData(faceSubMesh), edgeSM); } @@ -176,38 +189,30 @@ namespace * \brief Return true if a radial edge was meshed with StdMeshers_RadialQuadrangle_1D2D with * the same radial distribution */ - bool isEdgeCompitaballyMeshed(const TopoDS_Edge& edge, SMESH_subMesh* faceSubMesh) - { - if ( SMESH_subMesh* edgeSM = faceSubMesh->GetFather()->GetSubMeshContaining( edge )) - { - if ( SMESH_subMeshEventListenerData* otherFaceData = - edgeSM->GetEventListenerData( TLinEdgeMarker::getListener() )) - { - // compare hypothesis aplied to two disk faces sharing radial edges - SMESH_Mesh& mesh = *faceSubMesh->GetFather(); - SMESH_Algo* radialQuadAlgo = mesh.GetGen()->GetAlgo(mesh, faceSubMesh->GetSubShape() ); - SMESH_subMesh* otherFaceSubMesh = otherFaceData->mySubMeshes.front(); - const list & hyps1 = - radialQuadAlgo->GetUsedHypothesis( mesh, faceSubMesh->GetSubShape()); - const list & hyps2 = - radialQuadAlgo->GetUsedHypothesis( mesh, otherFaceSubMesh->GetSubShape()); - if( hyps1.empty() && hyps2.empty() ) - return true; // defaul hyps - if ( hyps1.size() != hyps2.size() || - strcmp( hyps1.front()->GetName(), hyps2.front()->GetName() )) - return false; - ostringstream hypDump1, hypDump2; - list ::const_iterator hyp1 = hyps1.begin(); - for ( ; hyp1 != hyps1.end(); ++hyp1 ) - const_cast(*hyp1)->SaveTo( hypDump1 ); - list ::const_iterator hyp2 = hyps2.begin(); - for ( ; hyp2 != hyps2.end(); ++hyp2 ) - const_cast(*hyp2)->SaveTo( hypDump2 ); - return hypDump1.str() == hypDump2.str(); - } - } - return false; - } +// bool isEdgeCompatiballyMeshed(const TopoDS_Edge& edge, SMESH_subMesh* faceSubMesh) +// { +// if ( SMESH_subMesh* edgeSM = faceSubMesh->GetFather()->GetSubMeshContaining( edge )) +// { +// if ( SMESH_subMeshEventListenerData* otherFaceData = +// edgeSM->GetEventListenerData( TEdgeMarker::getListener() )) +// { +// // compare hypothesis aplied to two disk faces sharing radial edges +// SMESH_Mesh& mesh = *faceSubMesh->GetFather(); +// SMESH_Algo* radialQuadAlgo = mesh.GetGen()->GetAlgo(mesh, faceSubMesh->GetSubShape() ); +// SMESH_subMesh* otherFaceSubMesh = otherFaceData->mySubMeshes.front(); +// list hyps1 = +// radialQuadAlgo->GetUsedHypothesis( mesh, faceSubMesh->GetSubShape()); +// list hyps2 = +// radialQuadAlgo->GetUsedHypothesis( mesh, otherFaceSubMesh->GetSubShape()); +// if( hyps1.empty() && hyps2.empty() ) +// return true; // defaul hyps +// if ( hyps1.size() != hyps2.size() ) +// return false; +// return *hyps1.front() == *hyps2.front(); +// } +// } +// return false; +// } //================================================================================ /*! @@ -273,6 +278,123 @@ namespace } return nbe; } + +//================================================================================ +//================================================================================ +/*! + * \brief Class computing layers distribution using data of + * StdMeshers_LayerDistribution hypothesis + */ +//================================================================================ +//================================================================================ + +class TNodeDistributor: public StdMeshers_Regular_1D +{ + list myUsedHyps; +public: + // ----------------------------------------------------------------------------- + static TNodeDistributor* GetDistributor(SMESH_Mesh& aMesh) + { + const int myID = -1000; + map < int, SMESH_1D_Algo * > & algoMap = aMesh.GetGen()->_map1D_Algo; + map < int, SMESH_1D_Algo * >::iterator id_algo = algoMap.find( myID ); + if ( id_algo == algoMap.end() ) + return new TNodeDistributor( myID, 0, aMesh.GetGen() ); + return static_cast< TNodeDistributor* >( id_algo->second ); + } + // ----------------------------------------------------------------------------- + //! Computes distribution of nodes on a straight line ending at pIn and pOut + bool Compute( vector< double > & positions, + gp_Pnt pIn, + gp_Pnt pOut, + SMESH_Mesh& aMesh, + const SMESH_Hypothesis* hyp1d) + { + if ( !hyp1d ) return error( "Invalid LayerDistribution hypothesis"); + + double len = pIn.Distance( pOut ); + if ( len <= DBL_MIN ) return error("Too close points of inner and outer shells"); + + myUsedHyps.clear(); + myUsedHyps.push_back( hyp1d ); + + TopoDS_Edge edge = BRepBuilderAPI_MakeEdge( pIn, pOut ); + SMESH_Hypothesis::Hypothesis_Status aStatus; + if ( !StdMeshers_Regular_1D::CheckHypothesis( aMesh, edge, aStatus )) + return error( "StdMeshers_Regular_1D::CheckHypothesis() failed " + "with LayerDistribution hypothesis"); + + BRepAdaptor_Curve C3D(edge); + double f = C3D.FirstParameter(), l = C3D.LastParameter(); + list< double > params; + if ( !StdMeshers_Regular_1D::computeInternalParameters( aMesh, C3D, len, f, l, params, false )) + return error("StdMeshers_Regular_1D failed to compute layers distribution"); + + positions.clear(); + positions.reserve( params.size() ); + for (list::iterator itU = params.begin(); itU != params.end(); itU++) + positions.push_back( *itU / len ); + return true; + } + // ----------------------------------------------------------------------------- + //! Make mesh on an adge using assigned 1d hyp or defaut nb of segments + bool ComputeCircularEdge(SMESH_Mesh& aMesh, + const TopoDS_Edge& anEdge) + { + _gen->Compute( aMesh, anEdge); + SMESH_subMesh *sm = aMesh.GetSubMesh(anEdge); + if ( sm->GetComputeState() != SMESH_subMesh::COMPUTE_OK) + { + // find any 1d hyp assigned (there can be a hyp w/o algo) + myUsedHyps = SMESH_Algo::GetUsedHypothesis(aMesh, anEdge, /*ignoreAux=*/true); + Hypothesis_Status aStatus; + if ( !StdMeshers_Regular_1D::CheckHypothesis( aMesh, anEdge, aStatus )) + { + // no valid 1d hyp assigned, use default nb of segments + _hypType = NB_SEGMENTS; + _ivalue[ DISTR_TYPE_IND ] = StdMeshers_NumberOfSegments::DT_Regular; + _ivalue[ NB_SEGMENTS_IND ] = _gen->GetDefaultNbSegments(); + } + return StdMeshers_Regular_1D::Compute( aMesh, anEdge ); + } + return true; + } + // ----------------------------------------------------------------------------- + //! Make mesh on an adge using assigned 1d hyp or defaut nb of segments + bool EvaluateCircularEdge(SMESH_Mesh& aMesh, + const TopoDS_Edge& anEdge, + MapShapeNbElems& aResMap) + { + _gen->Evaluate( aMesh, anEdge, aResMap ); + if ( aResMap.count( aMesh.GetSubMesh( anEdge ))) + return true; + + // find any 1d hyp assigned + myUsedHyps = SMESH_Algo::GetUsedHypothesis(aMesh, anEdge, /*ignoreAux=*/true); + Hypothesis_Status aStatus; + if ( !StdMeshers_Regular_1D::CheckHypothesis( aMesh, anEdge, aStatus )) + { + // no valid 1d hyp assigned, use default nb of segments + _hypType = NB_SEGMENTS; + _ivalue[ DISTR_TYPE_IND ] = StdMeshers_NumberOfSegments::DT_Regular; + _ivalue[ NB_SEGMENTS_IND ] = _gen->GetDefaultNbSegments(); + } + return StdMeshers_Regular_1D::Evaluate( aMesh, anEdge, aResMap ); + } +protected: + // ----------------------------------------------------------------------------- + TNodeDistributor( int hypId, int studyId, SMESH_Gen* gen) + : StdMeshers_Regular_1D( hypId, studyId, gen) + { + } + // ----------------------------------------------------------------------------- + virtual const list & + GetUsedHypothesis(SMESH_Mesh &, const TopoDS_Shape &, const bool) + { + return myUsedHyps; + } + // ----------------------------------------------------------------------------- +}; } //======================================================================= @@ -280,7 +402,7 @@ namespace * \brief Allow algo to do something after persistent restoration * \param subMesh - restored submesh * - * call markLinEdgeAsComputedByMe() + * call markEdgeAsComputedByMe() */ //======================================================================= @@ -290,8 +412,9 @@ void StdMeshers_RadialQuadrangle_1D2D::SubmeshRestored(SMESH_subMesh* faceSubMes { TopoDS_Edge CircEdge, LinEdge1, LinEdge2; analyseFace( faceSubMesh->GetSubShape(), CircEdge, LinEdge1, LinEdge2 ); - if ( !LinEdge1.IsNull() ) markLinEdgeAsComputedByMe( LinEdge1, faceSubMesh ); - if ( !LinEdge2.IsNull() ) markLinEdgeAsComputedByMe( LinEdge2, faceSubMesh ); + if ( !CircEdge.IsNull() ) markEdgeAsComputedByMe( CircEdge, faceSubMesh ); + if ( !LinEdge1.IsNull() ) markEdgeAsComputedByMe( LinEdge1, faceSubMesh ); + if ( !LinEdge2.IsNull() ) markEdgeAsComputedByMe( LinEdge2, faceSubMesh ); } } @@ -311,14 +434,15 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, // to delete helper at exit from Compute() auto_ptr helperDeleter( myHelper ); - myLayerPositions.clear(); + TNodeDistributor* algo1d = TNodeDistributor::GetDistributor(aMesh); TopoDS_Edge CircEdge, LinEdge1, LinEdge2; int nbe = analyseFace( aShape, CircEdge, LinEdge1, LinEdge2 ); - if( nbe>3 || nbe < 1 || CircEdge.IsNull() ) - return error(COMPERR_BAD_SHAPE); + Handle(Geom_Circle) aCirc = Handle(Geom_Circle)::DownCast( getCurve( CircEdge )); + if( nbe>3 || nbe < 1 || aCirc.IsNull() ) + return error("The face must be a full circle or a part of circle (i.e. the number of edges is less or equal to 3 and one of them is a circle curve)"); - gp_Pnt P0,P1; + gp_Pnt P0, P1; // points for rotation TColgp_SequenceOfPnt Points; // angles for rotation @@ -335,15 +459,14 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, TopoDS_Face F = TopoDS::Face(aShape); Handle(Geom_Surface) S = BRep_Tool::Surface(F); + if(nbe==1) { - Handle(Geom_Circle) aCirc = Handle(Geom_Circle)::DownCast( getCurve( CircEdge )); - - bool ok = _gen->Compute( aMesh, CircEdge ); - if( !ok ) return false; + if (!algo1d->ComputeCircularEdge( aMesh, CircEdge )) + return error( algo1d->GetComputeError() ); map< double, const SMDS_MeshNode* > theNodes; - ok = GetSortedNodesOnEdge(aMesh.GetMeshDS(),CircEdge,true,theNodes); - if( !ok ) return false; + if ( !GetSortedNodesOnEdge(aMesh.GetMeshDS(),CircEdge,true,theNodes)) + return error("Circular edge is incorrectly meshed"); CNodes.clear(); map< double, const SMDS_MeshNode* >::iterator itn = theNodes.begin(); @@ -363,8 +486,8 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, P1 = gp_Pnt( NF->X(), NF->Y(), NF->Z() ); P0 = aCirc->Location(); - myLayerPositions.clear(); - computeLayerPositions(P0,P1); + if ( !computeLayerPositions(P0,P1)) + return false; exp.Init( CircEdge, TopAbs_VERTEX ); TopoDS_Vertex V1 = TopoDS::Vertex( exp.Current() ); @@ -413,22 +536,16 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, // other curve not line return error(COMPERR_BAD_SHAPE); } - bool linEdgeComputed = false; - if( SMESH_subMesh* sm1 = aMesh.GetSubMesh(LinEdge1) ) { - if( !sm1->IsEmpty() ) - if( isEdgeCompitaballyMeshed( LinEdge1, aMesh.GetSubMesh(F) )) - linEdgeComputed = true; - else - return error("Invalid set of hypotheses"); - } - bool ok = _gen->Compute( aMesh, CircEdge ); - if( !ok ) return false; + if ( !algo1d->ComputeCircularEdge( aMesh, CircEdge )) + return error( algo1d->GetComputeError() ); map< double, const SMDS_MeshNode* > theNodes; - GetSortedNodesOnEdge(aMesh.GetMeshDS(),CircEdge,true,theNodes); + if ( !GetSortedNodesOnEdge(aMesh.GetMeshDS(),CircEdge,true,theNodes) ) + return error("Circular edge is incorrectly meshed"); - CNodes.clear(); map< double, const SMDS_MeshNode* >::iterator itn = theNodes.begin(); + CNodes.clear(); + CNodes.push_back( itn->second ); double fang = (*itn).first; itn++; for(; itn != theNodes.end(); itn++ ) { @@ -440,13 +557,13 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, } const SMDS_MeshNode* NF = theNodes.begin()->second; const SMDS_MeshNode* NL = theNodes.rbegin()->second; - CNodes.push_back( NF ); P1 = gp_Pnt( NF->X(), NF->Y(), NF->Z() ); gp_Pnt P2( NL->X(), NL->Y(), NL->Z() ); P0 = aCirc->Location(); - myLayerPositions.clear(); - computeLayerPositions(P0,P1); + bool linEdgeComputed; + if ( !computeLayerPositions(P0,P1,LinEdge1,&linEdgeComputed)) + return false; if ( linEdgeComputed ) { @@ -537,7 +654,7 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, SMDS_MeshEdge* ME = myHelper->AddEdge( tmpNodes[i-1], tmpNodes[i] ); if(ME) meshDS->SetMeshElementOnShape(ME, edgeID); } - markLinEdgeAsComputedByMe( LinEdge1, aMesh.GetSubMesh( F )); + markEdgeAsComputedByMe( LinEdge1, aMesh.GetSubMesh( F )); } } else // nbe==3 or ( nbe==2 && linEdge is INTERNAL ) @@ -549,33 +666,16 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, // segments of line double fp, lp; Handle(Geom_Circle) aCirc = Handle(Geom_Circle)::DownCast( getCurve( CircEdge )); - Handle(Geom_Line) aLine1 = Handle(Geom_Line)::DownCast( getCurve( LinEdge1 )); - Handle(Geom_Line) aLine2 = Handle(Geom_Line)::DownCast( getCurve( LinEdge2 )); - if( aLine1.IsNull() || aLine2.IsNull() ) { - // other curve not line + Handle(Geom_Line) aLine1 = Handle(Geom_Line)::DownCast( getCurve( LinEdge1 )); + Handle(Geom_Line) aLine2 = Handle(Geom_Line)::DownCast( getCurve( LinEdge2 )); + if( aCirc.IsNull() || aLine1.IsNull() || aLine2.IsNull() ) return error(COMPERR_BAD_SHAPE); - } - - bool linEdge1Computed = false; - if ( SMESH_subMesh* sm1 = aMesh.GetSubMesh(LinEdge1)) - if( !sm1->IsEmpty() ) - if( isEdgeCompitaballyMeshed( LinEdge1, aMesh.GetSubMesh(F) )) - linEdge1Computed = true; - else - return error("Invalid set of hypotheses"); - - bool linEdge2Computed = false; - if ( SMESH_subMesh* sm2 = aMesh.GetSubMesh(LinEdge2)) - if( !sm2->IsEmpty() ) - if( isEdgeCompitaballyMeshed( LinEdge2, aMesh.GetSubMesh(F) )) - linEdge2Computed = true; - else - return error("Invalid set of hypotheses"); - bool ok = _gen->Compute( aMesh, CircEdge ); - if( !ok ) return false; + if ( !algo1d->ComputeCircularEdge( aMesh, CircEdge )) + return error( algo1d->GetComputeError() ); map< double, const SMDS_MeshNode* > theNodes; - GetSortedNodesOnEdge(aMesh.GetMeshDS(),CircEdge,true,theNodes); + if ( !GetSortedNodesOnEdge(aMesh.GetMeshDS(),CircEdge,true,theNodes)) + return error("Circular edge is incorrectly meshed"); const SMDS_MeshNode* NF = theNodes.begin()->second; const SMDS_MeshNode* NL = theNodes.rbegin()->second; @@ -595,12 +695,19 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, gp_Pnt P2( NL->X(), NL->Y(), NL->Z() ); P0 = aCirc->Location(); - myLayerPositions.clear(); - computeLayerPositions(P0,P1); + bool linEdge1Computed, linEdge2Computed; + if ( !computeLayerPositions(P0,P1,LinEdge1,&linEdge1Computed)) + return false; Nodes1.resize( myLayerPositions.size()+1 ); Nodes2.resize( myLayerPositions.size()+1 ); + // check that both linear edges have same hypotheses + if ( !computeLayerPositions(P0,P1,LinEdge2, &linEdge2Computed)) + return false; + if ( Nodes1.size() != myLayerPositions.size()+1 ) + return error("Different hypotheses apply to radial edges"); + exp.Init( LinEdge1, TopAbs_VERTEX ); TopoDS_Vertex V1 = TopoDS::Vertex( exp.Current() ); exp.Next(); @@ -701,7 +808,7 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, if (nbe==2 && LinEdge1.Orientation() == TopAbs_INTERNAL ) Nodes2 = Nodes1; } - markLinEdgeAsComputedByMe( LinEdge1, aMesh.GetSubMesh( F )); + markEdgeAsComputedByMe( LinEdge1, aMesh.GetSubMesh( F )); // LinEdge2 if ( linEdge2Computed ) @@ -765,8 +872,9 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, if(ME) meshDS->SetMeshElementOnShape(ME, edgeID); } } - markLinEdgeAsComputedByMe( LinEdge2, aMesh.GetSubMesh( F )); + markEdgeAsComputedByMe( LinEdge2, aMesh.GetSubMesh( F )); } + markEdgeAsComputedByMe( CircEdge, aMesh.GetSubMesh( F )); // orientation bool IsForward = ( CircEdge.Orientation()==TopAbs_FORWARD ); @@ -850,106 +958,103 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, return true; } - -//================================================================================ //================================================================================ /*! - * \brief Class computing layers distribution using data of - * StdMeshers_LayerDistribution hypothesis + * \brief Compute positions of nodes on the radial edge + * \retval bool - is a success */ //================================================================================ -//================================================================================ -class TNodeDistributor: public StdMeshers_Regular_1D +bool StdMeshers_RadialQuadrangle_1D2D::computeLayerPositions(const gp_Pnt& p1, + const gp_Pnt& p2, + const TopoDS_Edge& linEdge, + bool* linEdgeComputed) { - list myUsedHyps; -public: - // ----------------------------------------------------------------------------- - static TNodeDistributor* GetDistributor(SMESH_Mesh& aMesh) - { - const int myID = -1000; - map < int, SMESH_1D_Algo * > & algoMap = aMesh.GetGen()->_map1D_Algo; - map < int, SMESH_1D_Algo * >::iterator id_algo = algoMap.find( myID ); - if ( id_algo == algoMap.end() ) - return new TNodeDistributor( myID, 0, aMesh.GetGen() ); - return static_cast< TNodeDistributor* >( id_algo->second ); - } - // ----------------------------------------------------------------------------- - bool Compute( vector< double > & positions, - gp_Pnt pIn, - gp_Pnt pOut, - SMESH_Mesh& aMesh, - const StdMeshers_LayerDistribution* hyp) - { - double len = pIn.Distance( pOut ); - if ( len <= DBL_MIN ) return error("Too close points of inner and outer shells"); + // First, try to compute positions of layers - if ( !hyp || !hyp->GetLayerDistribution() ) - return error( "Invalid LayerDistribution hypothesis"); - myUsedHyps.clear(); - myUsedHyps.push_back( hyp->GetLayerDistribution() ); + myLayerPositions.clear(); - TopoDS_Edge edge = BRepBuilderAPI_MakeEdge( pIn, pOut ); - SMESH_Hypothesis::Hypothesis_Status aStatus; - if ( !StdMeshers_Regular_1D::CheckHypothesis( aMesh, edge, aStatus )) - return error( "StdMeshers_Regular_1D::CheckHypothesis() failed " - "with LayerDistribution hypothesis"); + SMESH_Mesh * mesh = myHelper->GetMesh(); - BRepAdaptor_Curve C3D(edge); - double f = C3D.FirstParameter(), l = C3D.LastParameter(); - list< double > params; - if ( !StdMeshers_Regular_1D::computeInternalParameters( aMesh, C3D, len, f, l, params, false )) - return error("StdMeshers_Regular_1D failed to compute layers distribution"); + const SMESH_Hypothesis* hyp1D = myDistributionHypo ? myDistributionHypo->GetLayerDistribution() : 0; + int nbLayers = myNbLayerHypo ? myNbLayerHypo->GetNumberOfLayers() : 0; - positions.clear(); - positions.reserve( params.size() ); - for (list::iterator itU = params.begin(); itU != params.end(); itU++) - positions.push_back( *itU / len ); - return true; + if ( !hyp1D && !nbLayers ) + { + // No own algo hypotheses assigned, so first try to find any 1D hypothesis. + // We need some edge + TopoDS_Shape edge = linEdge; + if ( edge.IsNull() && !myHelper->GetSubShape().IsNull()) + for ( TopExp_Explorer e(myHelper->GetSubShape(), TopAbs_EDGE); e.More(); e.Next()) + edge = e.Current(); + if ( !edge.IsNull() ) + { + // find a hyp usable by TNodeDistributor + SMESH_HypoFilter hypKind; + TNodeDistributor::GetDistributor(*mesh)->InitCompatibleHypoFilter(hypKind,/*ignoreAux=*/1); + hyp1D = mesh->GetHypothesis( edge, hypKind, /*fromAncestors=*/true); + } } -protected: - // ----------------------------------------------------------------------------- - TNodeDistributor( int hypId, int studyId, SMESH_Gen* gen) - : StdMeshers_Regular_1D( hypId, studyId, gen) + if ( hyp1D ) // try to compute with hyp1D { + if ( !TNodeDistributor::GetDistributor(*mesh)->Compute( myLayerPositions,p1,p2,*mesh,hyp1D )) + if ( myDistributionHypo ) { // bad hyp assigned + return error( TNodeDistributor::GetDistributor(*mesh)->GetComputeError() ); + } + else { + // bad hyp found, its Ok, lets try with default nb of segnents + } } - // ----------------------------------------------------------------------------- - virtual const list & - GetUsedHypothesis(SMESH_Mesh &, const TopoDS_Shape &, const bool) + + if ( myLayerPositions.empty() ) // try to use nb of layers { - return myUsedHyps; + if ( !nbLayers ) + nbLayers = _gen->GetDefaultNbSegments(); + + if ( nbLayers ) + { + myLayerPositions.resize( nbLayers - 1 ); + for ( int z = 1; z < nbLayers; ++z ) + myLayerPositions[ z - 1 ] = double( z )/ double( nbLayers ); + } } - // ----------------------------------------------------------------------------- -}; -//================================================================================ -/*! - * \brief Compute positions of nodes between the internal and the external surfaces - * \retval bool - is a success - */ -//================================================================================ + // Second, check presence of a mesh built by other algo on linEdge + // and mesh conformity to my hypothesis -bool StdMeshers_RadialQuadrangle_1D2D::computeLayerPositions(const gp_Pnt& pIn, - const gp_Pnt& pOut) -{ - if ( myNbLayerHypo ) + bool meshComputed = (!linEdge.IsNull() && !mesh->GetSubMesh(linEdge)->IsEmpty() ); + if ( linEdgeComputed ) *linEdgeComputed = meshComputed; + + if ( meshComputed ) { - int nbSegments = myNbLayerHypo->GetNumberOfLayers(); - myLayerPositions.resize( nbSegments - 1 ); - for ( int z = 1; z < nbSegments; ++z ) - myLayerPositions[ z - 1 ] = double( z )/ double( nbSegments ); - return true; - } - if ( myDistributionHypo ) { - SMESH_Mesh * mesh = myHelper->GetMesh(); - if ( !TNodeDistributor::GetDistributor(*mesh)->Compute( myLayerPositions, pIn, pOut, - *mesh, myDistributionHypo )) + vector< double > nodeParams; + GetNodeParamOnEdge( mesh->GetMeshDS(), linEdge, nodeParams ); + + if ( myLayerPositions.empty() ) { - error( TNodeDistributor::GetDistributor(*mesh)->GetComputeError() ); - return false; + myLayerPositions.resize( nodeParams.size() - 2 ); + } + else if ( myDistributionHypo || myNbLayerHypo ) + { + // linEdge is computed by other algo. Check if there is a meshed face + // using nodes on linEdge + bool nodesAreUsed = false; + TopTools_ListIteratorOfListOfShape ancestIt = mesh->GetAncestors( linEdge ); + for ( ; ancestIt.More() && !nodesAreUsed; ancestIt.Next() ) + if ( ancestIt.Value().ShapeType() == TopAbs_FACE ) + nodesAreUsed = (!mesh->GetSubMesh( ancestIt.Value() )->IsEmpty()); + if ( !nodesAreUsed ) { + // rebuild them + mesh->GetSubMesh( linEdge )->ComputeStateEngine( SMESH_subMesh::CLEAN ); + if ( linEdgeComputed ) *linEdgeComputed = false; + } + else if ( myLayerPositions.size() != nodeParams.size()-2 ) { + return error("Radial edge is meshed by other algorithm"); + } } } - RETURN_BAD_RESULT("Bad hypothesis"); + + return !myLayerPositions.empty(); } @@ -965,113 +1070,82 @@ bool StdMeshers_RadialQuadrangle_1D2D::Evaluate(SMESH_Mesh& aMesh, if( aShape.ShapeType() != TopAbs_FACE ) { return false; } - SMESH_subMesh * smf = aMesh.GetSubMesh(aShape); - MapShapeNbElemsItr anIt = aResMap.find(smf); - if( anIt != aResMap.end() ) { + SMESH_subMesh * sm = aMesh.GetSubMesh(aShape); + if( aResMap.count(sm) ) return false; - } - myLayerPositions.clear(); - gp_Pnt P0(0,0,0); - gp_Pnt P1(100,0,0); - computeLayerPositions(P0,P1); - - TopoDS_Edge E1,E2,E3; - Handle(Geom_Curve) C1,C2,C3; - double f1,l1,f2,l2,f3,l3; - int nbe = 0; - TopExp_Explorer exp; - for ( exp.Init( aShape, TopAbs_EDGE ); exp.More(); exp.Next() ) { - nbe++; - TopoDS_Edge E = TopoDS::Edge( exp.Current() ); - if(nbe==1) { - E1 = E; - C1 = BRep_Tool::Curve(E,f1,l1); - } - else if(nbe==2) { - E2 = E; - C2 = BRep_Tool::Curve(E,f2,l2); - } - else if(nbe==3) { - E3 = E; - C3 = BRep_Tool::Curve(E,f3,l3); - } - } + vector& aResVec = + aResMap.insert( make_pair(sm, vector(SMDSEntity_Last,0))).first->second; + + myHelper = new SMESH_MesherHelper( aMesh ); + myHelper->SetSubShape( aShape ); + auto_ptr helperDeleter( myHelper ); + + TNodeDistributor* algo1d = TNodeDistributor::GetDistributor(aMesh); TopoDS_Edge CircEdge, LinEdge1, LinEdge2; + int nbe = analyseFace( aShape, CircEdge, LinEdge1, LinEdge2 ); + if( nbe>3 || nbe < 1 || CircEdge.IsNull() ) + return false; + + Handle(Geom_Circle) aCirc = Handle(Geom_Circle)::DownCast( getCurve( CircEdge )); + if( aCirc.IsNull() ) + return error(COMPERR_BAD_SHAPE); + + gp_Pnt P0 = aCirc->Location(); + gp_Pnt P1 = aCirc->Value(0.); + computeLayerPositions( P0, P1, LinEdge1 ); + int nb0d=0, nb2d_tria=0, nb2d_quad=0; - bool isQuadratic = false; - if(nbe==1) { + bool isQuadratic = false, ok = true; + if(nbe==1) + { // C1 must be a circle - Handle(Geom_Circle) aCirc = Handle(Geom_Circle)::DownCast(C1); - if( !aCirc.IsNull() ) { - bool ok = _gen->Evaluate( aMesh, CircEdge, aResMap ); - if(ok) { - SMESH_subMesh * sm = aMesh.GetSubMesh(CircEdge); - MapShapeNbElemsItr anIt = aResMap.find(sm); - vector aVec = (*anIt).second; - isQuadratic = aVec[SMDSEntity_Quad_Edge]>aVec[SMDSEntity_Edge]; - if(isQuadratic) { - // main nodes - nb0d = (aVec[SMDSEntity_Node]+1) * myLayerPositions.size(); - // radial medium nodes - nb0d += (aVec[SMDSEntity_Node]+1) * (myLayerPositions.size()+1); - // other medium nodes - nb0d += (aVec[SMDSEntity_Node]+1) * myLayerPositions.size(); - } - else { - nb0d = (aVec[SMDSEntity_Node]+1) * myLayerPositions.size(); - } - nb2d_tria = aVec[SMDSEntity_Node] + 1; - nb2d_quad = nb0d; + ok = algo1d->EvaluateCircularEdge( aMesh, CircEdge, aResMap ); + if(ok) { + const vector& aVec = aResMap[aMesh.GetSubMesh(CircEdge)]; + isQuadratic = aVec[SMDSEntity_Quad_Edge]>aVec[SMDSEntity_Edge]; + if(isQuadratic) { + // main nodes + nb0d = (aVec[SMDSEntity_Node]+1) * myLayerPositions.size(); + // radial medium nodes + nb0d += (aVec[SMDSEntity_Node]+1) * (myLayerPositions.size()+1); + // other medium nodes + nb0d += (aVec[SMDSEntity_Node]+1) * myLayerPositions.size(); } + else { + nb0d = (aVec[SMDSEntity_Node]+1) * myLayerPositions.size(); + } + nb2d_tria = aVec[SMDSEntity_Node] + 1; + nb2d_quad = nb0d; } } - else if(nbe==2) { + else if(nbe==2 && LinEdge1.Orientation() != TopAbs_INTERNAL) + { // one curve must be a half of circle and other curve must be // a segment of line - Handle(Geom_TrimmedCurve) tc = Handle(Geom_TrimmedCurve)::DownCast(C1); - while( !tc.IsNull() ) { - C1 = tc->BasisCurve(); - tc = Handle(Geom_TrimmedCurve)::DownCast(C1); - } - tc = Handle(Geom_TrimmedCurve)::DownCast(C2); - while( !tc.IsNull() ) { - C2 = tc->BasisCurve(); - tc = Handle(Geom_TrimmedCurve)::DownCast(C2); - } - Handle(Geom_Circle) aCirc = Handle(Geom_Circle)::DownCast(C1); - Handle(Geom_Line) aLine = Handle(Geom_Line)::DownCast(C2); - CircEdge = E1; - LinEdge1 = E2; - double fp = f1; - double lp = l1; - if( aCirc.IsNull() ) { - aCirc = Handle(Geom_Circle)::DownCast(C2); - CircEdge = E2; - LinEdge1 = E1; - fp = f2; - lp = l2; - aLine = Handle(Geom_Line)::DownCast(C3); - } - bool ok = !aCirc.IsNull() && !aLine.IsNull(); + double fp, lp; + Handle(Geom_Circle) aCirc = Handle(Geom_Circle)::DownCast( getCurve( CircEdge, &fp, &lp )); if( fabs(fabs(lp-fp)-PI) > Precision::Confusion() ) { // not half of circle - ok = false; + return error(COMPERR_BAD_SHAPE); + } + Handle(Geom_Line) aLine = Handle(Geom_Line)::DownCast( getCurve( LinEdge1 )); + if( aLine.IsNull() ) { + // other curve not line + return error(COMPERR_BAD_SHAPE); } - SMESH_subMesh* sm1 = aMesh.GetSubMesh(LinEdge1); - MapShapeNbElemsItr anIt = aResMap.find(sm1); - if( anIt!=aResMap.end() ) { - ok = false; + ok = !aResMap.count( aMesh.GetSubMesh(LinEdge1) ); + if ( !ok ) { + const vector& aVec = aResMap[ aMesh.GetSubMesh(LinEdge1) ]; + ok = ( aVec[SMDSEntity_Node] == myLayerPositions.size() ); } if(ok) { - ok = _gen->Evaluate( aMesh, CircEdge, aResMap ); + ok = algo1d->EvaluateCircularEdge( aMesh, CircEdge, aResMap ); } if(ok) { - SMESH_subMesh * sm = aMesh.GetSubMesh(CircEdge); - MapShapeNbElemsItr anIt = aResMap.find(sm); - vector aVec = (*anIt).second; - isQuadratic = aVec[SMDSEntity_Quad_Edge]>aVec[SMDSEntity_Edge]; + const vector& aVec = aResMap[ aMesh.GetSubMesh(CircEdge) ]; + isQuadratic = aVec[SMDSEntity_Quad_Edge] > aVec[SMDSEntity_Edge]; if(isQuadratic) { // main nodes nb0d = aVec[SMDSEntity_Node] * myLayerPositions.size(); @@ -1086,8 +1160,7 @@ bool StdMeshers_RadialQuadrangle_1D2D::Evaluate(SMESH_Mesh& aMesh, nb2d_tria = aVec[SMDSEntity_Node] + 1; nb2d_quad = nb2d_tria * myLayerPositions.size(); // add evaluation for edges - vector aResVec(SMDSEntity_Last); - for(int i=SMDSEntity_Node; i aResVec(SMDSEntity_Last,0); if(isQuadratic) { aResVec[SMDSEntity_Node] = 4*myLayerPositions.size() + 3; aResVec[SMDSEntity_Quad_Edge] = 2*myLayerPositions.size() + 2; @@ -1096,74 +1169,49 @@ bool StdMeshers_RadialQuadrangle_1D2D::Evaluate(SMESH_Mesh& aMesh, aResVec[SMDSEntity_Node] = 2*myLayerPositions.size() + 1; aResVec[SMDSEntity_Edge] = 2*myLayerPositions.size() + 2; } - sm = aMesh.GetSubMesh(LinEdge1); - aResMap.insert(make_pair(sm,aResVec)); + aResMap[ aMesh.GetSubMesh(LinEdge1) ] = aResVec; } } - else { // nbe==3 + else // nbe==3 or ( nbe==2 && linEdge is INTERNAL ) + { + if (nbe==2 && LinEdge1.Orientation() == TopAbs_INTERNAL ) + LinEdge2 = LinEdge1; + // one curve must be a part of circle and other curves must be // segments of line - Handle(Geom_TrimmedCurve) tc = Handle(Geom_TrimmedCurve)::DownCast(C1); - while( !tc.IsNull() ) { - C1 = tc->BasisCurve(); - tc = Handle(Geom_TrimmedCurve)::DownCast(C1); - } - tc = Handle(Geom_TrimmedCurve)::DownCast(C2); - while( !tc.IsNull() ) { - C2 = tc->BasisCurve(); - tc = Handle(Geom_TrimmedCurve)::DownCast(C2); - } - tc = Handle(Geom_TrimmedCurve)::DownCast(C3); - while( !tc.IsNull() ) { - C3 = tc->BasisCurve(); - tc = Handle(Geom_TrimmedCurve)::DownCast(C3); + Handle(Geom_Line) aLine1 = Handle(Geom_Line)::DownCast( getCurve( LinEdge1 )); + Handle(Geom_Line) aLine2 = Handle(Geom_Line)::DownCast( getCurve( LinEdge2 )); + if( aLine1.IsNull() || aLine2.IsNull() ) { + // other curve not line + return error(COMPERR_BAD_SHAPE); } - Handle(Geom_Circle) aCirc = Handle(Geom_Circle)::DownCast(C1); - Handle(Geom_Line) aLine1 = Handle(Geom_Line)::DownCast(C2); - Handle(Geom_Line) aLine2 = Handle(Geom_Line)::DownCast(C3); - CircEdge = E1; - LinEdge1 = E2; - LinEdge2 = E3; - double fp = f1; - double lp = l1; - if( aCirc.IsNull() ) { - aCirc = Handle(Geom_Circle)::DownCast(C2); - CircEdge = E2; - LinEdge1 = E3; - LinEdge2 = E1; - fp = f2; - lp = l2; - aLine1 = Handle(Geom_Line)::DownCast(C3); - aLine2 = Handle(Geom_Line)::DownCast(C1); - if( aCirc.IsNull() ) { - aCirc = Handle(Geom_Circle)::DownCast(C3); - CircEdge = E3; - LinEdge1 = E1; - LinEdge2 = E2; - fp = f3; - lp = l3; - aLine1 = Handle(Geom_Line)::DownCast(C1); - aLine2 = Handle(Geom_Line)::DownCast(C2); + int nbLayers = myLayerPositions.size(); + computeLayerPositions( P0, P1, LinEdge2 ); + if ( nbLayers != myLayerPositions.size() ) + return error("Different hypotheses apply to radial edges"); + + bool ok = !aResMap.count( aMesh.GetSubMesh(LinEdge1)); + if ( !ok ) { + if ( myDistributionHypo || myNbLayerHypo ) + ok = true; // override other 1d hyps + else { + const vector& aVec = aResMap[ aMesh.GetSubMesh(LinEdge1) ]; + ok = ( aVec[SMDSEntity_Node] == myLayerPositions.size() ); } } - bool ok = !aCirc.IsNull() && !aLine1.IsNull() && !aLine1.IsNull(); - SMESH_subMesh* sm = aMesh.GetSubMesh(LinEdge1); - MapShapeNbElemsItr anIt = aResMap.find(sm); - if( anIt!=aResMap.end() ) { - ok = false; - } - sm = aMesh.GetSubMesh(LinEdge2); - anIt = aResMap.find(sm); - if( anIt!=aResMap.end() ) { - ok = false; + if( ok && aResMap.count( aMesh.GetSubMesh(LinEdge2) )) { + if ( myDistributionHypo || myNbLayerHypo ) + ok = true; // override other 1d hyps + else { + const vector& aVec = aResMap[ aMesh.GetSubMesh(LinEdge2) ]; + ok = ( aVec[SMDSEntity_Node] == myLayerPositions.size() ); + } } if(ok) { - ok = _gen->Evaluate( aMesh, CircEdge, aResMap ); + ok = algo1d->EvaluateCircularEdge( aMesh, CircEdge, aResMap ); } if(ok) { - SMESH_subMesh * sm = aMesh.GetSubMesh(CircEdge); - MapShapeNbElemsItr anIt = aResMap.find(sm); - vector aVec = (*anIt).second; + const vector& aVec = aResMap[ aMesh.GetSubMesh(CircEdge) ]; isQuadratic = aVec[SMDSEntity_Quad_Edge]>aVec[SMDSEntity_Edge]; if(isQuadratic) { // main nodes @@ -1179,8 +1227,7 @@ bool StdMeshers_RadialQuadrangle_1D2D::Evaluate(SMESH_Mesh& aMesh, nb2d_tria = aVec[SMDSEntity_Node] + 1; nb2d_quad = nb2d_tria * myLayerPositions.size(); // add evaluation for edges - vector aResVec(SMDSEntity_Last); - for(int i=SMDSEntity_Node; i aResVec(SMDSEntity_Last, 0); if(isQuadratic) { aResVec[SMDSEntity_Node] = 2*myLayerPositions.size() + 1; aResVec[SMDSEntity_Quad_Edge] = myLayerPositions.size() + 1; @@ -1190,17 +1237,12 @@ bool StdMeshers_RadialQuadrangle_1D2D::Evaluate(SMESH_Mesh& aMesh, aResVec[SMDSEntity_Edge] = myLayerPositions.size() + 1; } sm = aMesh.GetSubMesh(LinEdge1); - aResMap.insert(make_pair(sm,aResVec)); + aResMap[sm] = aResVec; sm = aMesh.GetSubMesh(LinEdge2); - aResMap.insert(make_pair(sm,aResVec)); + aResMap[sm] = aResVec; } } - vector aResVec(SMDSEntity_Last); - for(int i=SMDSEntity_Node; i -//#include +#include + +#include class StdMeshers_NumberOfLayers; class StdMeshers_LayerDistribution; @@ -63,8 +61,10 @@ public: protected: - bool computeLayerPositions(const gp_Pnt& pIn, - const gp_Pnt& pOut); + bool computeLayerPositions(const gp_Pnt& p1, + const gp_Pnt& p2, + const TopoDS_Edge& linEdge=TopoDS_Edge(), + bool* linEdgeComputed = 0); const StdMeshers_NumberOfLayers* myNbLayerHypo; diff --git a/src/StdMeshers/StdMeshers_Regular_1D.cxx b/src/StdMeshers/StdMeshers_Regular_1D.cxx index c3e86a98d..391bd38c3 100644 --- a/src/StdMeshers/StdMeshers_Regular_1D.cxx +++ b/src/StdMeshers/StdMeshers_Regular_1D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,12 +19,13 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Regular_1D.cxx // Moved here from SMESH_Regular_1D.cxx // Author : Paul RASCLE, EDF // Module : SMESH - +// #include "StdMeshers_Regular_1D.hxx" #include "StdMeshers_Distribution.hxx" @@ -325,6 +326,8 @@ static bool computeParamByFunc(Adaptor3d_Curve& C3d, double first, double last, return false; prevU = U; } + if ( theReverse ) + theParams.reverse(); return true; } @@ -804,38 +807,83 @@ bool StdMeshers_Regular_1D::computeInternalParameters(SMESH_Mesh & theMesh, } if(!IsExist) Params.InsertBefore(j,aPnts[i]); } - double pf, pl, par2, par1, psize; - if (theReverse) { - pf = l; - pl = f; + double par2, par1, lp; + par1 = f; + lp = l; + double sign = 1.0; + if(theReverse) { + par1 = l; + lp = f; + sign = -1.0; } - else { - pf = f; - pl = l; - } - psize = pl - pf; - par1 = pf; - //cout<<"aPnts.size() = "< tmpParams; + for(int i=2; i::iterator itP = tmpParams.begin(); + for(; itP != tmpParams.end(); itP++) { + theParams.push_back( *(itP) ); } + theParams.push_back( par2 ); + par1 = par2; } // add for last int nbseg = ( nbsegs.size() > Params.Length() ) ? nbsegs[Params.Length()] : nbsegs[0]; - double dp = (pl-par1)/nbseg; - int j = 1; - for(; j tmpParams; + for(int i=2; i::iterator itP = tmpParams.begin(); + for(; itP != tmpParams.end(); itP++) { + theParams.push_back( *(itP) ); + } + if (theReverse) { theParams.reverse(); // NPAL18025 } @@ -1048,8 +1096,7 @@ bool StdMeshers_Regular_1D::Evaluate(SMESH_Mesh & theMesh, ASSERT(!VFirst.IsNull()); ASSERT(!VLast.IsNull()); - std::vector aVec(SMDSEntity_Last); - for(int i=SMDSEntity_Node; i aVec(SMDSEntity_Last,0); if (!Curve.IsNull()) { list< double > params; diff --git a/src/StdMeshers/StdMeshers_Regular_1D.hxx b/src/StdMeshers/StdMeshers_Regular_1D.hxx index 86a573c54..c0217343b 100644 --- a/src/StdMeshers/StdMeshers_Regular_1D.hxx +++ b/src/StdMeshers/StdMeshers_Regular_1D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,12 +19,13 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_Regular_1D.hxx // Moved here from SMESH_Regular_1D.hxx // Author : Paul RASCLE, EDF // Module : SMESH - +// #ifndef _SMESH_REGULAR_1D_HXX_ #define _SMESH_REGULAR_1D_HXX_ @@ -49,7 +50,7 @@ public: SMESH_Hypothesis::Hypothesis_Status& aStatus); virtual bool Compute(SMESH_Mesh& aMesh, - const TopoDS_Shape& aShape); + const TopoDS_Shape& aShape); virtual bool Evaluate(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape, MapShapeNbElems& aResMap); diff --git a/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.cxx b/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.cxx index 204909320..d2bb42baa 100644 --- a/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.cxx +++ b/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_SegmentAroundVertex_0D.cxx // Module : SMESH @@ -38,7 +39,7 @@ StdMeshers_SegmentAroundVertex_0D::StdMeshers_SegmentAroundVertex_0D { _name = "SegmentAroundVertex_0D"; // it is assigned to vertices but influence a state of EDGE submeshes - _shapeType = (1 << TopAbs_VERTEX); // 1 bit per shape type + _shapeType = (1 << TopAbs_VERTEX); // 1 bit per shape type _compatibleHypothesis.push_back("SegmentLengthAroundVertex"); } @@ -100,8 +101,8 @@ bool StdMeshers_SegmentAroundVertex_0D::Compute(SMESH_Mesh&, const TopoDS_Shape& //======================================================================= bool StdMeshers_SegmentAroundVertex_0D::Evaluate(SMESH_Mesh&, - const TopoDS_Shape&, - MapShapeNbElems&) + const TopoDS_Shape&, + MapShapeNbElems&) { // This algorithm exists in order just to enable assignation of // StdMeshers_SegmentLengthAroundVertex hypothesis diff --git a/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.hxx b/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.hxx index a2f1bd579..72371496d 100644 --- a/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.hxx +++ b/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_SegmentAroundVertex_0D.hxx // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.cxx b/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.cxx index 599690c6a..70898baca 100644 --- a/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.cxx +++ b/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,10 +19,11 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_SegmentLengthAroundVertex.cxx // Module : SMESH - +// #include "StdMeshers_SegmentLengthAroundVertex.hxx" #include "SMESH_Mesh.hxx" diff --git a/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.hxx b/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.hxx index c7c54bbf6..48e366b66 100644 --- a/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.hxx +++ b/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,11 +19,12 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_SegmentLengthAroundVertex.hxx // Author : Paul RASCLE, EDF // Module : SMESH - +// #ifndef _SMESH_SegmentLengthAroundVertex_HXX_ #define _SMESH_SegmentLengthAroundVertex_HXX_ diff --git a/src/StdMeshers/StdMeshers_StartEndLength.cxx b/src/StdMeshers/StdMeshers_StartEndLength.cxx index 46e9a7cc3..e4043dd7d 100644 --- a/src/StdMeshers/StdMeshers_StartEndLength.cxx +++ b/src/StdMeshers/StdMeshers_StartEndLength.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,10 +19,11 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers_StartEndLength : implementaion of SMESH idl descriptions // File : StdMeshers_StartEndLength.cxx // Module : SMESH - +// #include "StdMeshers_StartEndLength.hxx" #include "SMESH_Algo.hxx" diff --git a/src/StdMeshers/StdMeshers_StartEndLength.hxx b/src/StdMeshers/StdMeshers_StartEndLength.hxx index 35ae4e0c4..feb477a53 100644 --- a/src/StdMeshers/StdMeshers_StartEndLength.hxx +++ b/src/StdMeshers/StdMeshers_StartEndLength.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,10 +19,11 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers : implementaion of SMESH idl descriptions // File : StdMeshers_StartEndLength.hxx // Module : SMESH - +// #ifndef _STDMESHERS_STARTENDLENGTH_HXX_ #define _STDMESHERS_STARTENDLENGTH_HXX_ diff --git a/src/StdMeshers/StdMeshers_TrianglePreference.cxx b/src/StdMeshers/StdMeshers_TrianglePreference.cxx index 331cd0d1c..dac3ca289 100644 --- a/src/StdMeshers/StdMeshers_TrianglePreference.cxx +++ b/src/StdMeshers/StdMeshers_TrianglePreference.cxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,10 +16,11 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers_TrianglePreference // File : StdMeshers_TrianglePreference.cxx // Module : SMESH - +// #include "StdMeshers_TrianglePreference.hxx" #include "utilities.h" diff --git a/src/StdMeshers/StdMeshers_TrianglePreference.hxx b/src/StdMeshers/StdMeshers_TrianglePreference.hxx index 34ec364a1..c4fb0d7c3 100644 --- a/src/StdMeshers/StdMeshers_TrianglePreference.hxx +++ b/src/StdMeshers/StdMeshers_TrianglePreference.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,10 +16,11 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH StdMeshers : implementaion of SMESH idl descriptions // File : StdMeshers_TrianglePreference.hxx // Module : SMESH - +// #ifndef _StdMeshers_TrianglePreference_HXX_ #define _StdMeshers_TrianglePreference_HXX_ diff --git a/src/StdMeshers/StdMeshers_UseExisting_1D2D.cxx b/src/StdMeshers/StdMeshers_UseExisting_1D2D.cxx index 3638498e1..7a35a1b97 100644 --- a/src/StdMeshers/StdMeshers_UseExisting_1D2D.cxx +++ b/src/StdMeshers/StdMeshers_UseExisting_1D2D.cxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_UseExisting_1D2D.cxx // Module : SMESH @@ -72,8 +70,8 @@ bool StdMeshers_UseExisting_1D::Compute(SMESH_Mesh&, const TopoDS_Shape&) //======================================================================= bool StdMeshers_UseExisting_1D::Evaluate(SMESH_Mesh&, - const TopoDS_Shape&, - MapShapeNbElems&) + const TopoDS_Shape&, + MapShapeNbElems&) { // This algorithm exists to allow mesh generation by mesh // edition functions in TUI mode @@ -126,8 +124,8 @@ bool StdMeshers_UseExisting_2D::Compute(SMESH_Mesh&, const TopoDS_Shape&) //======================================================================= bool StdMeshers_UseExisting_2D::Evaluate(SMESH_Mesh&, - const TopoDS_Shape&, - MapShapeNbElems&) + const TopoDS_Shape&, + MapShapeNbElems&) { // This algorithm exists to allow mesh generation by mesh edition // functions in TUI mode diff --git a/src/StdMeshers/StdMeshers_UseExisting_1D2D.hxx b/src/StdMeshers/StdMeshers_UseExisting_1D2D.hxx index 961fb4ba9..220cac842 100644 --- a/src/StdMeshers/StdMeshers_UseExisting_1D2D.hxx +++ b/src/StdMeshers/StdMeshers_UseExisting_1D2D.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SMESH SMESH : implementaion of SMESH idl descriptions // File : StdMeshers_UseExisting_1D2D.hxx // Module : SMESH diff --git a/src/StdMeshersGUI/Makefile.am b/src/StdMeshersGUI/Makefile.am index e8a194771..7e76cbe67 100644 --- a/src/StdMeshersGUI/Makefile.am +++ b/src/StdMeshersGUI/Makefile.am @@ -1,7 +1,4 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # SMESH StdMeshersGUI : GUI for StdMeshers plugin # File : Makefile.in # Author : Julia DOROVSKIKH @@ -96,7 +94,8 @@ libStdMeshersGUI_la_LDFLAGS = \ ../SMESHGUI/libSMESH.la \ ../OBJECT/libSMESHObject.la \ $(GUI_LDFLAGS) -lSalomeApp \ - $(CAS_LDPATH) -lTKernel -lTKBO -lTKAdvTools + $(CAS_LDPATH) -lTKernel -lTKBO -lTKAdvTools \ + $(QWT_LIBS) # resources files nodist_salomeres_DATA= \ diff --git a/src/StdMeshersGUI/SMESH_StdMeshersGUI.hxx b/src/StdMeshersGUI/SMESH_StdMeshersGUI.hxx index 78982bec9..5bd4940b7 100755 --- a/src/StdMeshersGUI/SMESH_StdMeshersGUI.hxx +++ b/src/StdMeshersGUI/SMESH_StdMeshersGUI.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_StdMeshersGUI.hxx // Author : Alexander BORODIN, Open CASCADE S.A.S. // diff --git a/src/StdMeshersGUI/StdMeshersGUI.cxx b/src/StdMeshersGUI/StdMeshersGUI.cxx index f3e400e82..eb744f72a 100644 --- a/src/StdMeshersGUI/StdMeshersGUI.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI.cxx // Author : Alexander SOLOVYOV, Open CASCADE S.A.S. // SMESH includes diff --git a/src/StdMeshersGUI/StdMeshersGUI_DistrPreview.cxx b/src/StdMeshersGUI/StdMeshersGUI_DistrPreview.cxx index e26ffd7e1..b3b101afb 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_DistrPreview.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_DistrPreview.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_DistrPreview.cxx // Author : Open CASCADE S.A.S. // SMESH includes @@ -222,13 +223,13 @@ void StdMeshersGUI_DistrPreview::update() { SMESH::double_array* arr = 0; if( isTableFunc() ) - arr = h->BuildDistributionTab( myTableFunc, myNbSeg, ( int )myConv ); + arr = h->BuildDistributionTab( myTableFunc, myNbSeg, ( int )myConv ); else - arr = h->BuildDistributionExpr( myFunction.toLatin1().data(), myNbSeg, ( int )myConv ); + arr = h->BuildDistributionExpr( myFunction.toLatin1().data(), myNbSeg, ( int )myConv ); if( arr ) { - distr = *arr; - delete arr; + distr = *arr; + delete arr; } } } @@ -337,7 +338,7 @@ bool isCorrectArg( const Handle( Expr_GeneralExpression )& expr ) if( !name.IsNull() ) { if( name->GetName()!="t" ) - res = false; + res = false; } else res = isCorrectArg( sub ); @@ -421,15 +422,15 @@ bool StdMeshersGUI_DistrPreview::convert( double& v ) const #ifdef NO_CAS_CATCH OCC_CATCH_SIGNALS; #endif - // in StdMeshers_NumberOfSegments.cc - // const double PRECISION = 1e-7; - // - if(v < -7) v = -7.0; - v = pow( 10.0, v ); + // in StdMeshers_NumberOfSegments.cc + // const double PRECISION = 1e-7; + // + if(v < -7) v = -7.0; + v = pow( 10.0, v ); } catch(Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - v = 0.0; - ok = false; + Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + v = 0.0; + ok = false; } } break; diff --git a/src/StdMeshersGUI/StdMeshersGUI_DistrPreview.h b/src/StdMeshersGUI/StdMeshersGUI_DistrPreview.h index 87a9eb86e..76af1d743 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_DistrPreview.h +++ b/src/StdMeshersGUI/StdMeshersGUI_DistrPreview.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_DistrPreview.h // Author : Open CASCADE S.A.S. // diff --git a/src/StdMeshersGUI/StdMeshersGUI_DistrTable.cxx b/src/StdMeshersGUI/StdMeshersGUI_DistrTable.cxx index cc718ed66..7963dbe36 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_DistrTable.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_DistrTable.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,16 +19,18 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_DistrTable.cxx // Author : Open CASCADE S.A.S. // SMESH includes // #include "StdMeshersGUI_DistrTable.h" +#include + // Qt incldues #include #include -#include #include #include #include @@ -84,14 +86,14 @@ public: ~SpinBoxDelegate(); QWidget* createEditor( QWidget*, - const QStyleOptionViewItem&, - const QModelIndex& ) const; + const QStyleOptionViewItem&, + const QModelIndex& ) const; void setEditorData( QWidget*, const QModelIndex&) const; void setModelData( QWidget*, QAbstractItemModel*, - const QModelIndex& ) const; + const QModelIndex& ) const; void updateEditorGeometry( QWidget*, - const QStyleOptionViewItem&, - const QModelIndex& ) const; + const QStyleOptionViewItem&, + const QModelIndex& ) const; private: StdMeshersGUI_DistrTableFrame::Table* myTable; @@ -109,7 +111,7 @@ private: struct EditorData { int r, c; - QDoubleSpinBox* sb; + SMESHGUI_SpinBox* sb; EditorData() { reset(); } void reset() { r = -1; c = -1; sb = 0; } }; @@ -138,7 +140,7 @@ public: void addRow(); void deleteRow(); - void setEditor( int, int, QDoubleSpinBox* ); + void setEditor( int, int, SMESHGUI_SpinBox* ); protected: void closeEditor( QWidget*, QAbstractItemDelegate::EndEditHint ); @@ -173,21 +175,25 @@ StdMeshersGUI_DistrTableFrame::SpinBoxDelegate:: QWidget* StdMeshersGUI_DistrTableFrame::SpinBoxDelegate:: createEditor( QWidget* parent, - const QStyleOptionViewItem& /*option*/, - const QModelIndex& index ) const + const QStyleOptionViewItem& /*option*/, + const QModelIndex& index ) const { - QDoubleSpinBox* sb = new QDoubleSpinBox( parent ); + SMESHGUI_SpinBox* sb = new SMESHGUI_SpinBox( parent ); + + sb->setAcceptNames(false); // No Notebook variables allowed + double aMin = index.column() == StdMeshersGUI_DistrTableFrame::ArgColumn ? + myTable->argMinimum( index.row() ) : + myTable->funcMinimum( index.row() ); + double aMax = index.column() == StdMeshersGUI_DistrTableFrame::ArgColumn ? + myTable->argMaximum( index.row() ) : + myTable->funcMaximum( index.row() ); + double aStep = index.column() == StdMeshersGUI_DistrTableFrame::ArgColumn ? + myTable->argStep( index.row() ) : + myTable->funcStep( index.row() ); + sb->RangeStepAndValidator( aMin, aMax, aStep, "parametric_precision" ); sb->setFrame(false); - sb->setMinimum( index.column() == StdMeshersGUI_DistrTableFrame::ArgColumn ? - myTable->argMinimum( index.row() ) : - myTable->funcMinimum( index.row() ) ); - sb->setMaximum( index.column() == StdMeshersGUI_DistrTableFrame::ArgColumn ? - myTable->argMaximum( index.row() ) : - myTable->funcMaximum( index.row() ) ); - sb->setSingleStep( index.column() == StdMeshersGUI_DistrTableFrame::ArgColumn ? - myTable->argStep( index.row() ) : - myTable->funcStep( index.row() ) ); - myTable->setEditor( index.row(), index.column(), sb ); + + myTable->setEditor( index.row(), index.column(), sb ); return sb; } @@ -196,7 +202,7 @@ StdMeshersGUI_DistrTableFrame::SpinBoxDelegate:: setEditorData( QWidget* editor, const QModelIndex& index ) const { QString value = index.model()->data(index, Qt::DisplayRole).toString(); - QDoubleSpinBox* sb = static_cast(editor); + SMESHGUI_SpinBox* sb = static_cast(editor); bool bOk = false; double v = value.toDouble( &bOk ); @@ -208,17 +214,17 @@ setEditorData( QWidget* editor, const QModelIndex& index ) const void StdMeshersGUI_DistrTableFrame::SpinBoxDelegate:: setModelData( QWidget* editor, QAbstractItemModel* model, - const QModelIndex& index ) const + const QModelIndex& index ) const { - QDoubleSpinBox* sb = static_cast(editor); + SMESHGUI_SpinBox* sb = static_cast(editor); model->setData( index, QString::number( sb->value() ), Qt::DisplayRole ); } void StdMeshersGUI_DistrTableFrame::SpinBoxDelegate:: updateEditorGeometry( QWidget* editor, - const QStyleOptionViewItem& option, - const QModelIndex& /*index*/ ) const + const QStyleOptionViewItem& option, + const QModelIndex& /*index*/ ) const { editor->setGeometry( option.rect ); } @@ -247,7 +253,7 @@ Table( QWidget* parent, int rows ) void StdMeshersGUI_DistrTableFrame::Table:: -setEditor( int r, int c, QDoubleSpinBox* sb ) +setEditor( int r, int c, SMESHGUI_SpinBox* sb ) { myEditorData.r = r; myEditorData.c = c; @@ -530,9 +536,9 @@ StdMeshersGUI_DistrTableFrame( QWidget* parent ) connect( myButtons[ InsertRowBtn ], SIGNAL( clicked() ), this, SLOT( onInsert() ) ); connect( myButtons[ RemoveRowBtn ], SIGNAL( clicked() ), this, SLOT( onRemove() ) ); connect( myTable, SIGNAL( currentCellChanged( int, int, int, int ) ), - this, SIGNAL( currentChanged( int, int ) ) ); + this, SIGNAL( currentChanged( int, int ) ) ); connect( myTable, SIGNAL( cellChanged( int, int ) ), - this, SIGNAL( valueChanged( int, int ) ) ); + this, SIGNAL( valueChanged( int, int ) ) ); } StdMeshersGUI_DistrTableFrame:: diff --git a/src/StdMeshersGUI/StdMeshersGUI_DistrTable.h b/src/StdMeshersGUI/StdMeshersGUI_DistrTable.h index 11a4ab333..af68869b9 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_DistrTable.h +++ b/src/StdMeshersGUI/StdMeshersGUI_DistrTable.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_DistrTable.h // Author : Open CASCADE S.A.S. // diff --git a/src/StdMeshersGUI/StdMeshersGUI_FixedPointsParamWdg.cxx b/src/StdMeshersGUI/StdMeshersGUI_FixedPointsParamWdg.cxx index c5c228bc7..8b503af3d 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_FixedPointsParamWdg.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_FixedPointsParamWdg.cxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,14 +16,16 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_FixedPointsParamWdg.cxx // Author : Open CASCADE S.A.S. // SMESH includes // #include "StdMeshersGUI_FixedPointsParamWdg.h" -#include -#include +#include + +#include // Qt includes #include @@ -76,12 +75,13 @@ StdMeshersGUI_FixedPointsParamWdg::LineDelegate::LineDelegate( QTreeWidget* pare } QWidget* StdMeshersGUI_FixedPointsParamWdg::LineDelegate::createEditor( QWidget* parent, - const QStyleOptionViewItem& option, - const QModelIndex& index ) const + const QStyleOptionViewItem& option, + const QModelIndex& index ) const { QWidget* w = 0; if ( (index.column() == 1 ) ) { - QtxIntSpinBox* sb = new QtxIntSpinBox( parent ); + SalomeApp_IntSpinBox* sb = new SalomeApp_IntSpinBox( parent ); + sb->setAcceptNames( false ); // No Notebook variables allowed sb->setFrame( false ); sb->setRange( 1, 999); w = sb; @@ -91,11 +91,11 @@ QWidget* StdMeshersGUI_FixedPointsParamWdg::LineDelegate::createEditor( QWidget* } void StdMeshersGUI_FixedPointsParamWdg::LineDelegate::setModelData( QWidget* editor, - QAbstractItemModel* model, - const QModelIndex& index ) const + QAbstractItemModel* model, + const QModelIndex& index ) const { - model->setData( index, qobject_cast( editor )->value(), Qt::EditRole ); - model->setData( index, qobject_cast( editor )->value(), Qt::UserRole ); + model->setData( index, qobject_cast( editor )->value(), Qt::EditRole ); + model->setData( index, qobject_cast( editor )->value(), Qt::UserRole ); } //================================================================================ @@ -114,7 +114,7 @@ StdMeshersGUI_FixedPointsParamWdg myListWidget = new QListWidget( this ); myTreeWidget = new QTreeWidget( this ); - mySpinBox = new QtxDoubleSpinBox( this ); + mySpinBox = new SMESHGUI_SpinBox( this ); myAddButton = new QPushButton( tr( "SMESH_BUT_ADD" ), this ); myRemoveButton = new QPushButton( tr( "SMESH_BUT_REMOVE" ), this ); mySameValues = new QCheckBox( tr("SMESH_SAME_NB_SEGMENTS"), this); @@ -141,10 +141,8 @@ StdMeshersGUI_FixedPointsParamWdg myListWidget->setMinimumWidth( 80 ); myTreeWidget->setMinimumWidth( 200 ); - mySpinBox->setRange( 0, 1 ); - mySpinBox->setSingleStep( 0.1 ); - mySpinBox->setDecimals( 4 ); - mySpinBox->setPrecision( 4 ); + mySpinBox->setAcceptNames( false ); // No Notebook variables allowed + mySpinBox->RangeStepAndValidator( 0., 1., .1, "parametric_precision" ); myListWidget->setMinimumWidth( 70 ); connect( myAddButton, SIGNAL( clicked() ), SLOT( onAdd() ) ); @@ -205,7 +203,7 @@ void StdMeshersGUI_FixedPointsParamWdg::onAdd() { addPoint( mySpinBox->value() ); } - + //================================================================================= // function : onRemove() // purpose : Called when Remove Button Clicked @@ -264,7 +262,7 @@ void StdMeshersGUI_FixedPointsParamWdg::addPoint( double v) double lv = point( i ); if ( EQUAL_DBL(lv, v) ) { toInsert = false; break; } else if ( GT_DBL(lv, v) ) { - idx = i; break; + idx = i; break; } } if ( toInsert ) { @@ -292,7 +290,7 @@ void StdMeshersGUI_FixedPointsParamWdg::removePoints() delete myTreeWidget->topLevelItem( idx ); delete item; myTreeWidget->topLevelItem( idx )->setText( 0, treeItemText( idx == 0 ? 0 : point( idx-1 ), - idx > myListWidget->count()-1 ? 1 : point( idx ) ) ); + idx > myListWidget->count()-1 ? 1 : point( idx ) ) ); } onCheckBoxChanged(); updateState(); diff --git a/src/StdMeshersGUI/StdMeshersGUI_FixedPointsParamWdg.h b/src/StdMeshersGUI/StdMeshersGUI_FixedPointsParamWdg.h index 273781d34..0e421fe44 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_FixedPointsParamWdg.h +++ b/src/StdMeshersGUI/StdMeshersGUI_FixedPointsParamWdg.h @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_FixedPointsParamWdg.h // Author : Open CASCADE S.A.S. (dmv) // @@ -34,7 +32,7 @@ #include class SMESHGUI; -class QtxDoubleSpinBox; +class SMESHGUI_SpinBox; class QPushButton; class QLineEdit; class QCheckBox; @@ -84,7 +82,7 @@ private: private: QListWidget* myListWidget; QTreeWidget* myTreeWidget; - QtxDoubleSpinBox* mySpinBox; + SMESHGUI_SpinBox* mySpinBox; QPushButton* myAddButton; QPushButton* myRemoveButton; QCheckBox* mySameValues; diff --git a/src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.cxx b/src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.cxx index 5d187b6d0..b1ef69a5e 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_LayerDistributionParamWdg.cxx // Author : Open CASCADE S.A.S. // SMESH includes @@ -50,7 +51,7 @@ StdMeshersGUI_LayerDistributionParamWdg ::StdMeshersGUI_LayerDistributionParamWdg(SMESH::SMESH_Hypothesis_ptr hyp, - const QString& theName, + const QString& theName, QDialog* dlg): QWidget(), myName(theName), myDlg( dlg ) { diff --git a/src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.h b/src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.h index b47b122b1..c7e62c88a 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.h +++ b/src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_LayerDistributionParamWdg.h // Author : Open CASCADE S.A.S. // @@ -51,7 +52,7 @@ class STDMESHERSGUI_EXPORT StdMeshersGUI_LayerDistributionParamWdg : public QWid public: StdMeshersGUI_LayerDistributionParamWdg(SMESH::SMESH_Hypothesis_ptr, - const QString&, + const QString&, QDialog*); ~StdMeshersGUI_LayerDistributionParamWdg(); diff --git a/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.cxx b/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.cxx index 2ee5473af..9fce3fe98 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_NbSegmentsCreator.cxx // Author : Open CASCADE S.A.S. // SMESH includes @@ -149,7 +150,7 @@ QFrame* StdMeshersGUI_NbSegmentsCreator::buildFrame() // 3) scale myGroupLayout->addWidget( myLScale = new QLabel( tr( "SMESH_NB_SEGMENTS_SCALE_PARAM" ), GroupC1 ), row, 0 ); myScale = new SMESHGUI_SpinBox( GroupC1 ); - myScale->RangeStepAndValidator( 1E-5, 1E+5, 0.1, 6 ); + myScale->RangeStepAndValidator( 1E-5, 1E+5, 0.1, "parametric_precision" ); myGroupLayout->addWidget( myScale, row, 1 ); row++; diff --git a/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.h b/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.h index 6053e8d34..f50b19433 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.h +++ b/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_NbSegmentsCreator.h // Author : Open CASCADE S.A.S. // diff --git a/src/StdMeshersGUI/StdMeshersGUI_ObjectReferenceParamWdg.cxx b/src/StdMeshersGUI/StdMeshersGUI_ObjectReferenceParamWdg.cxx index 37a3ce7ee..06f2431ec 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_ObjectReferenceParamWdg.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_ObjectReferenceParamWdg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_ObjectReferenceParamWdg.cxx // Author : Open CASCADE S.A.S. // SMESH includes diff --git a/src/StdMeshersGUI/StdMeshersGUI_ObjectReferenceParamWdg.h b/src/StdMeshersGUI/StdMeshersGUI_ObjectReferenceParamWdg.h index 62e5096af..c5fabc25e 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_ObjectReferenceParamWdg.h +++ b/src/StdMeshersGUI/StdMeshersGUI_ObjectReferenceParamWdg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_ObjectReferenceParamWdg.h // Author : Open CASCADE S.A.S. // diff --git a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx index 0d72900dc..8fd24f351 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_StdHypothesisCreator.cxx // Author : Alexander SOLOVYOV, Open CASCADE S.A.S. // SMESH includes @@ -999,13 +1000,15 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const anEntry = h->GetObjectEntry(); aDirectionWidget->SetGeomShapeEntry( anEntry ); aDirectionWidget->SetMainShapeEntry( aMainEntry ); - SMESH::long_array_var aVec = new SMESH::long_array; - int vertID = h->GetTriaVertex(); - if(vertID>0) { - aVec->length(1); - aVec[0] = vertID; + if ( !isCreation() ) { + SMESH::long_array_var aVec = new SMESH::long_array; + int vertID = h->GetTriaVertex(); + if(vertID>0) { + aVec->length(1); + aVec[0] = vertID; + aDirectionWidget->SetListOfIDs( aVec ); + } } - aDirectionWidget->SetListOfIDs( aVec ); aDirectionWidget->showPreview( true ); customWidgets()->append ( aDirectionWidget ); } @@ -1028,38 +1031,38 @@ void StdMeshersGUI_StdHypothesisCreator::attuneStdWidget (QWidget* w, const int) if( hypType()=="LocalLength" && sb ) { if (sb->objectName() == tr("SMESH_LOCAL_LENGTH_PARAM")) - sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, 6 ); + sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "length_precision" ); else if (sb->objectName() == tr("SMESH_LOCAL_LENGTH_PRECISION")) - sb->RangeStepAndValidator( 0.0, 1.0, 0.05, 7 ); + sb->RangeStepAndValidator( 0.0, 1.0, 0.05, "len_tol_precision" ); } else if( hypType()=="Arithmetic1D" && sb ) { - sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, 6 ); + sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "parametric_precision" ); } else if( hypType()=="MaxLength" && sb ) { - sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, 6 ); + sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "length_precision" ); sb->setEnabled( !widget< QCheckBox >( 1 )->isChecked() ); } else if( hypType()=="MaxElementArea" && sb ) { - sb->RangeStepAndValidator( VALUE_SMALL_2, VALUE_MAX_2, 1.0, 6 ); + sb->RangeStepAndValidator( VALUE_SMALL_2, VALUE_MAX_2, 1.0, "area_precision" ); } else if( hypType()=="MaxElementVolume" && sb ) { - sb->RangeStepAndValidator( VALUE_SMALL_3, VALUE_MAX_3, 1.0, 6 ); + sb->RangeStepAndValidator( VALUE_SMALL_3, VALUE_MAX_3, 1.0, "vol_precision" ); } else if( hypType()=="StartEndLength" && sb ) { - sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, 6 ); + sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "length_precision" ); } else if( hypType()=="Deflection1D" && sb ) { - sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, 6 ); + sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "parametric_precision" ); } else if ( sb ) // default validator for possible ancestors { - sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, 6 ); + sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "length_precision" ); } } diff --git a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.h b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.h index 0973c5c03..1f693be44 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.h +++ b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_StdHypothesisCreator.h // Author : Alexander SOLOVYOV, Open CASCADE S.A.S. // diff --git a/src/StdMeshersGUI/StdMeshersGUI_SubShapeSelectorWdg.cxx b/src/StdMeshersGUI/StdMeshersGUI_SubShapeSelectorWdg.cxx index 65b99514e..4bc2b7549 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_SubShapeSelectorWdg.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_SubShapeSelectorWdg.cxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,11 +16,11 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_SubShapeSelectorWdg.cxx // Author : Open CASCADE S.A.S. (dmv) // SMESH includes // - #include "StdMeshersGUI_SubShapeSelectorWdg.h" // SMESH Includes @@ -83,7 +80,7 @@ StdMeshersGUI_SubShapeSelectorWdg ::StdMeshersGUI_SubShapeSelectorWdg( QWidget * parent ): QWidget( parent ), myPreviewActor( 0 ), - myMaxSize( 0 ) + myMaxSize( -1 ) { QPixmap image0( SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap( "SMESH", tr( "ICON_SELECT" ) ) ); @@ -146,6 +143,9 @@ void StdMeshersGUI_SubShapeSelectorWdg::init() myListOfIDs.clear(); mySelectedIDs.clear(); + myAddButton->setEnabled( false ); + myRemoveButton->setEnabled( false ); + mySMESHGUI = SMESHGUI::GetSMESHGUI(); mySelectionMgr = SMESH::GetSelectionMgr( mySMESHGUI ); mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector(); @@ -199,63 +199,76 @@ void StdMeshersGUI_SubShapeSelectorWdg::SelectionIntoArgument() mySelectionMgr->selectedObjects( aList ); int nbSel = aList.Extent(); - if (nbSel < 1) - return; - - SALOME_ListIteratorOfListIO anIt (aList); + if (nbSel > 0) { + SALOME_ListIteratorOfListIO anIt (aList); - for ( ; anIt.More(); anIt.Next()) { // Loop on selected objects - Handle(SALOME_InteractiveObject) IO = anIt.Value(); - - GEOM::GEOM_Object_var aGeomObj = GetGeomObjectByEntry( IO->getEntry() ); - if ( !CORBA::is_nil( aGeomObj ) ) { // Selected Object From Study - GEOM::GEOM_Object_ptr aGeomFatherObj = aGeomObj->GetMainShape(); - QString aFatherEntry = ""; - QString aMainFatherEntry = ""; - TopoDS_Shape shape; - if ( !CORBA::is_nil( aGeomFatherObj ) ) { - // Get Main Shape - GEOM::GEOM_Object_var aGeomMain = GetGeomObjectByEntry( myEntry ); - if ( !CORBA::is_nil( aGeomMain ) && aGeomMain->GetType() == 37 ) { // Main Shape is a Group - GEOM::GEOM_Object_ptr aMainFatherObj = aGeomMain->GetMainShape(); - if ( !CORBA::is_nil( aMainFatherObj ) ) - aMainFatherEntry = aMainFatherObj->GetStudyEntry(); - } - aFatherEntry = aGeomFatherObj->GetStudyEntry(); - } + for ( ; anIt.More(); anIt.Next()) { // Loop on selected objects + Handle(SALOME_InteractiveObject) IO = anIt.Value(); - if ( aFatherEntry != "" && ( aFatherEntry == myEntry || aFatherEntry == aMainFatherEntry ) ) { - if ( aGeomObj->GetType() == 37 /*GEOM_GROUP*/ ) { // Selected Group that belongs the main object - GEOMBase::GetShape(aGeomObj, shape); - if ( !shape.IsNull() ) { - TopExp_Explorer exp( shape, mySubShType ); - for ( ; exp.More(); exp.Next() ) { - int index = myPreviewActor->GetIndexByShape( exp.Current() ); - if ( index ) { - mySelectedIDs.append( index ); - myPreviewActor->HighlightID( index ); - } - } - } - } else if ( aGeomObj->GetType() == 28 /*GEOM_SUBSHAPE*/ ) { - GEOMBase::GetShape(aGeomObj, shape); - if ( !shape.IsNull() && shape.ShapeType() == mySubShType ) { - int index = myPreviewActor->GetIndexByShape( shape ); - if ( index ) { - mySelectedIDs.append( index ); - myPreviewActor->HighlightID( index ); - } - } - } + GEOM::GEOM_Object_var aGeomObj = GetGeomObjectByEntry( IO->getEntry() ); + if ( !CORBA::is_nil( aGeomObj ) ) { // Selected Object From Study + GEOM::GEOM_Object_ptr aGeomFatherObj = aGeomObj->GetMainShape(); + QString aFatherEntry = ""; + QString aMainFatherEntry = ""; + TopoDS_Shape shape; + if ( !CORBA::is_nil( aGeomFatherObj ) ) { + // Get Main Shape + GEOM::GEOM_Object_var aGeomMain = GetGeomObjectByEntry( myEntry ); + if ( !CORBA::is_nil( aGeomMain ) && aGeomMain->GetType() == 37 ) { // Main Shape is a Group + GEOM::GEOM_Object_ptr aMainFatherObj = aGeomMain->GetMainShape(); + if ( !CORBA::is_nil( aMainFatherObj ) ) + aMainFatherEntry = aMainFatherObj->GetStudyEntry(); + } + aFatherEntry = aGeomFatherObj->GetStudyEntry(); + } + + if ( aFatherEntry != "" && ( aFatherEntry == myEntry || aFatherEntry == aMainFatherEntry ) ) { + if ( aGeomObj->GetType() == 37 /*GEOM_GROUP*/ ) { // Selected Group that belongs the main object + GEOMBase::GetShape(aGeomObj, shape); + if ( !shape.IsNull() ) { + TopExp_Explorer exp( shape, mySubShType ); + for ( ; exp.More(); exp.Next() ) { + int index = myPreviewActor->GetIndexByShape( exp.Current() ); + if ( index ) { + mySelectedIDs.append( index ); + myPreviewActor->HighlightID( index ); + } + } + } + } else if ( aGeomObj->GetType() == 28 /*GEOM_SUBSHAPE*/ ) { + GEOMBase::GetShape(aGeomObj, shape); + if ( !shape.IsNull() && shape.ShapeType() == mySubShType ) { + int index = myPreviewActor->GetIndexByShape( shape ); + if ( index ) { + mySelectedIDs.append( index ); + myPreviewActor->HighlightID( index ); + } + } + } + } + } else { // Selected Actor from Actor Collection + QString anEntry = IO->getEntry(); + QString str = "_"; + int index = anEntry.lastIndexOf( str ); + anEntry.remove(0, index+1); + int ind = anEntry.toInt(); + if ( ind ) + mySelectedIDs.append( ind ); } - } else { // Selected Actor from Actor Collection - QString anEntry = IO->getEntry(); - QString str = "_"; - int index = anEntry.lastIndexOf( str ); - anEntry.remove(0, index+1); - int ind = anEntry.toInt(); - if ( ind ) - mySelectedIDs.append( ind ); + } + } + // update add button + myAddButton->setEnabled( myListWidget->count() < myMaxSize && mySelectedIDs.size() > 0 && ( mySelectedIDs.size() <= myMaxSize || myMaxSize == -1 ) ); + + //Connect Selected Ids in viewer and dialog's Ids list + myListWidget->clearSelection(); + if ( mySelectedIDs.size() > 0 ) { + for (int i = 0; i < mySelectedIDs.size(); i++) { + QString anID = QString(" %1").arg( mySelectedIDs.at(i) ); + QList anItems = myListWidget->findItems ( anID, Qt::MatchExactly ); + QListWidgetItem* item; + foreach(item, anItems) + item->setSelected(true); } } } @@ -270,7 +283,7 @@ void StdMeshersGUI_SubShapeSelectorWdg::onAdd() return; myListWidget->blockSignals( true ); - for (int i = 0; i < mySelectedIDs.size() && (myMaxSize < 1 || myListOfIDs.size() < myMaxSize); i++) { + for (int i = 0; i < mySelectedIDs.size() && (myMaxSize == -1 || myListOfIDs.size() < myMaxSize); i++) { if ( myListOfIDs.indexOf( mySelectedIDs.at(i) ) == -1 ) { QString anID = QString(" %1").arg( mySelectedIDs.at(i) ); @@ -282,9 +295,9 @@ void StdMeshersGUI_SubShapeSelectorWdg::onAdd() } onListSelectionChanged(); myListWidget->blockSignals( false ); - myAddButton->setEnabled( myListOfIDs.size() < myMaxSize ); + myAddButton->setEnabled( myMaxSize == -1 || myListOfIDs.size() < myMaxSize ); } - + //================================================================================= // function : onRemove() // purpose : Called when Remove Button Clicked @@ -327,6 +340,9 @@ void StdMeshersGUI_SubShapeSelectorWdg::onListSelectionChanged() QListWidgetItem* anItem; foreach(anItem, selItems) myPreviewActor->HighlightID( anItem->text().toInt() ); + + // update remove button + myRemoveButton->setEnabled( selItems.size() > 0 ); } //================================================================================= @@ -355,8 +371,7 @@ void StdMeshersGUI_SubShapeSelectorWdg::updateState() state = true; myListWidget->setEnabled( state ); - myAddButton->setEnabled( state ); - myRemoveButton->setEnabled( state ); + myAddButton->setEnabled( mySelectedIDs.size() > 0 ); if (state) { myPreviewActor = new SMESH_PreviewActorsCollection(); @@ -421,7 +436,7 @@ SMESH::long_array_var StdMeshersGUI_SubShapeSelectorWdg::GetListOfIDs() anArray->length( size ); if ( size ) { for (int i = 0; i < size; i++) { - anArray[i] = myListOfIDs.at(i); + anArray[i] = myListOfIDs.at(i); } } return anArray; diff --git a/src/StdMeshersGUI/StdMeshersGUI_SubShapeSelectorWdg.h b/src/StdMeshersGUI/StdMeshersGUI_SubShapeSelectorWdg.h index 49e49e82a..b29840bdf 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_SubShapeSelectorWdg.h +++ b/src/StdMeshersGUI/StdMeshersGUI_SubShapeSelectorWdg.h @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : StdMeshersGUI_SubShapeSelectorWdg.h // Author : Open CASCADE S.A.S. (dmv) // diff --git a/src/StdMeshersGUI/StdMeshers_images.ts b/src/StdMeshersGUI/StdMeshers_images.ts index 7438aa85e..fa4ca5767 100644 --- a/src/StdMeshersGUI/StdMeshers_images.ts +++ b/src/StdMeshersGUI/StdMeshers_images.ts @@ -1,6 +1,6 @@
      ~{1@*}(t+&X<>UA; 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/findelement2.png b/doc/salome/gui/SMESH/images/findelement2.png new file mode 100644 index 0000000000000000000000000000000000000000..b351b32ec92972f0e12c983c6ebcd2a33bd2f181 GIT binary patch literal 13074 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/head.png b/doc/salome/gui/SMESH/images/head.png new file mode 100755 index 0000000000000000000000000000000000000000..307d9ef9a4c07f8fba2c8721309a978433bcf63c GIT binary patch literal 78545 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 D4zrO! literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/hexotic_parameters.png b/doc/salome/gui/SMESH/images/hexotic_parameters.png new file mode 100644 index 0000000000000000000000000000000000000000..c06ff3bb2ecb0a5ee2f3ed61570aa8a481d7d9de GIT binary patch literal 21710 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/mergeelems.png b/doc/salome/gui/SMESH/images/mergeelems.png index c5e160884b73adf5f09b59d80c3e6b4b16eb7fba..eaa5a9323dacc7abaa6eeb652288355bcffe0161 100755 GIT binary patch literal 29443 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 literal 25706 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 AZ~y=R diff --git a/doc/salome/gui/SMESH/images/mergeelems_auto.png b/doc/salome/gui/SMESH/images/mergeelems_auto.png new file mode 100644 index 0000000000000000000000000000000000000000..f8ef74f1393eebe1196552a8f1ee73e53709bf27 GIT binary patch literal 15116 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 T?gzksxk98R6vQh;4FdiLcfR&) literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/mergenodes.png b/doc/salome/gui/SMESH/images/mergenodes.png index d14620101081839b2a35097703b160574acd66c3..024bc22e85cb1695b57f221f137c7c921952af37 100755 GIT binary patch literal 36395 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

      QjtXcFFS-mSs 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/mesh_order_123.png b/doc/salome/gui/SMESH/images/mesh_order_123.png new file mode 100644 index 0000000000000000000000000000000000000000..952f207960af886f0ce867c80752dfc7468f6f9a GIT binary patch literal 5488 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

      Y} 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 PlL~mCtq(50V;k`g1N6Ho literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/mesh_order_123_res.png b/doc/salome/gui/SMESH/images/mesh_order_123_res.png new file mode 100644 index 0000000000000000000000000000000000000000..7b7588c632deae8d2b07bb719268ca4e43d0fbb6 GIT binary patch literal 29778 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

      iijM6taHeEeS5oZRv$ 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 UrYU^_s}-X7R8_VdYWDhn0okm2l>h($ literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/scaleinit01.png b/doc/salome/gui/SMESH/images/scaleinit01.png new file mode 100644 index 0000000000000000000000000000000000000000..97990a86809e90acff9a9ab4413d27dab6ec4bd1 GIT binary patch literal 17713 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 D#oX#w literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/scaleinit02.png b/doc/salome/gui/SMESH/images/scaleinit02.png new file mode 100644 index 0000000000000000000000000000000000000000..008d2e3217c1116effd939ba6534e19976e551be GIT binary patch literal 17482 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 CUC9Xm literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/scaleres03.png b/doc/salome/gui/SMESH/images/scaleres03.png new file mode 100644 index 0000000000000000000000000000000000000000..99b65d72a9af47b16bd351cd30cbb245b34a7b5d GIT binary patch literal 6098 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 Zx@hi{2dGZPc@ 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 Y>K&9u`xkv9Y0d)DVN*iBp+m%f0jFPmX#fBK literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/scaleres06.png b/doc/salome/gui/SMESH/images/scaleres06.png new file mode 100644 index 0000000000000000000000000000000000000000..059fa97f41d69b25df1f3a936ed1798213fe49fa GIT binary patch literal 10446 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 I)b-~70PINKIRF3v literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/scaleres07.png b/doc/salome/gui/SMESH/images/scaleres07.png new file mode 100644 index 0000000000000000000000000000000000000000..b75f83c3ca52a4dae498f64a1c355a654bd9cbd4 GIT binary patch literal 7782 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 XMIaN?1ttR>O^d+nA5%`9xRpo3KWB2H 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/input/2d_meshing_hypo.doc b/doc/salome/gui/SMESH/input/2d_meshing_hypo.doc index dd42e9962..8e789536f 100644 --- a/doc/salome/gui/SMESH/input/2d_meshing_hypo.doc +++ b/doc/salome/gui/SMESH/input/2d_meshing_hypo.doc @@ -66,18 +66,25 @@ shows the good (left) and the bad (right) results of meshing. \image html hypo_quad_params_res_2.png "The resulting meshes" -
      +See Also a sample TUI Script of a +\ref tui_quadrangle_parameters "Quadrangle Parameters" hypothesis. + \anchor quadrangle_preference_anchor

      Quadrangle Preference

      -This algorithm can be used only together with Quadrangle (Mapping) -algorithm. It allows to build quadrangular meshes even if the number +This algorithm can be used together with Quadrangle (Mapping) and Netgen 2D +algorithms. + +It allows Netgen 2D to build quadrangular meshes at any conditions. + +It allows Quadrangle (Mapping) to build quadrangular meshes even if the number of nodes at the opposite edges of a meshed face is not equal, otherwise this mesh will contain some triangular elements.
      This hypothesis has one restriction on its work: the total quantity of segments on all four sides of the face must be even (divisible by 2). +
      \anchor triangle_preference_anchor

      Triangle Preference

      diff --git a/doc/salome/gui/SMESH/input/about_hypo.doc b/doc/salome/gui/SMESH/input/about_hypo.doc index cc8f5fd52..9d9db7b32 100644 --- a/doc/salome/gui/SMESH/input/about_hypo.doc +++ b/doc/salome/gui/SMESH/input/about_hypo.doc @@ -45,6 +45,7 @@ meshers and thus, work only with definite algorithms.
    1. \subpage ghs3d_hypo_page
    2. - works with GHS3D algorithm.
    3. \subpage ghs3dprl_hypo_page
    4. - works with GHS3DPRL (tepal) algorithm.
    5. \subpage blsurf_hypo_page
    6. - works with BLSURF algorithm. +
    7. \subpage hexotic_hypo_page
    8. - works with Hexotic algorithm. There also exist diff --git a/doc/salome/gui/SMESH/input/adding_nodes_and_elements.doc b/doc/salome/gui/SMESH/input/adding_nodes_and_elements.doc index 5cb3b1548..451823b74 100644 --- a/doc/salome/gui/SMESH/input/adding_nodes_and_elements.doc +++ b/doc/salome/gui/SMESH/input/adding_nodes_and_elements.doc @@ -26,6 +26,10 @@ following associated submenu will appear: \image html image146.png From this submenu select the type of element which you would like to add to your mesh. +\note All dialogs intended for adding nodes or elements to mesh (except dialog for adding +0D elements) provide a possibility to add these nodes/elements to the specified group +(or to create the group if it doesn't exist). Add to group box allows to choose +an existing group for created node or element or to specify a name for new group.

      n$6wXGAdp4NW-7x8~b-GCJNQ=0XwllKo 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�iSP}c7E+v~?3~t8UX)n-* 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 T7Ow{II7mreU9L>VIN<*P?RbL+ literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/mesh_order_321.png b/doc/salome/gui/SMESH/images/mesh_order_321.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad61fabdc205a5d83bc9ef0719d77472d4da329 GIT binary patch literal 5948 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/mesh_order_321_res.png b/doc/salome/gui/SMESH/images/mesh_order_321_res.png new file mode 100644 index 0000000000000000000000000000000000000000..051447093abdfddf198b673117113294d10bb6b9 GIT binary patch literal 35243 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 L{an^LB{Ts5LVa;p literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/mesh_order_no_concurrent.png b/doc/salome/gui/SMESH/images/mesh_order_no_concurrent.png new file mode 100644 index 0000000000000000000000000000000000000000..6df59a1f15734f3c773f30e3336cf9e8a7b37501 GIT binary patch literal 4435 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 D>9mWV literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/point_marker_widget2.png b/doc/salome/gui/SMESH/images/point_marker_widget2.png new file mode 100755 index 0000000000000000000000000000000000000000..dbb81b40e5c958d24445a250c540fc82b959a277 GIT binary patch literal 4322 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 C25de6 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/scale01.png b/doc/salome/gui/SMESH/images/scale01.png new file mode 100644 index 0000000000000000000000000000000000000000..72ae775ff212eb6f8a33403fee1acb7efc6b0e35 GIT binary patch literal 19816 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 XB!!Z4l!1p5xO@P_MH2&po&)ZmZvOWk literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/scale07.png b/doc/salome/gui/SMESH/images/scale07.png new file mode 100644 index 0000000000000000000000000000000000000000..8ee0923bd9e6ef60b684167bad0cbfb57b63b7d6 GIT binary patch literal 20034 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 Ky20)IwSNQCLb*x+ literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/scale09.png b/doc/salome/gui/SMESH/images/scale09.png new file mode 100644 index 0000000000000000000000000000000000000000..2816bac4b6469593fd10a3e278959e0b9c8f3be3 GIT binary patch literal 30799 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