From 9357f5c87098aff2b95b754d69f66c76d2df9c24 Mon Sep 17 00:00:00 2001 From: vsr Date: Fri, 14 May 2010 15:32:37 +0000 Subject: [PATCH] Merge from V5_1_main 14/05/2010 --- 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 | 6 +- 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 | 3 +- clean_configure | 6 +- configure.ac | 10 +- 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 +- 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/head.png | Bin 0 -> 78545 bytes .../gui/SMESH/images/hexotic_parameters.png | Bin 0 -> 21710 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 | 4 +- doc/salome/gui/SMESH/input/about_hypo.doc | 1 + .../gui/SMESH/input/basic_meshing_algos.doc | 9 + doc/salome/gui/SMESH/input/colors_size.doc | 35 + .../gui/SMESH/input/constructing_meshes.doc | 12 +- doc/salome/gui/SMESH/input/hexotic_hypo.doc | 30 + .../gui/SMESH/input/merging_elements.doc | 1 + .../gui/SMESH/input/modifying_meshes.doc | 2 + .../gui/SMESH/input/pattern_mapping.doc | 4 +- doc/salome/gui/SMESH/input/point_marker.doc | 53 + 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 + .../SMESH/input/tui_defining_hypotheses.doc | 30 + .../SMESH/input/tui_transforming_meshes.doc | 33 +- .../SMESH/input/viewing_meshes_overview.doc | 6 +- 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 | 11 +- 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 | 5 +- idl/SMESH_Group.idl | 3 +- idl/SMESH_Hypothesis.idl | 3 +- idl/SMESH_Mesh.idl | 24 +- idl/SMESH_MeshEditor.idl | 39 +- idl/SMESH_Pattern.idl | 3 +- resources/Makefile.am | 11 +- resources/SMESHCatalog.xml.in | 4 +- resources/SalomeApp.xml | 13 +- resources/StdMeshers.xml | 3 +- 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 | 3 +- 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 | 3 +- 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 | 3 +- 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 | 3 +- 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 | 3 +- 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 | 3 +- 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 | 3 +- 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 | 3 +- src/DriverUNV/UNV2411_Structure.hxx | 3 +- src/DriverUNV/UNV2412_Structure.cxx | 3 +- src/DriverUNV/UNV2412_Structure.hxx | 3 +- src/DriverUNV/UNV2417_Structure.cxx | 3 +- src/DriverUNV/UNV2417_Structure.hxx | 3 +- src/DriverUNV/UNV_Test.cxx | 3 +- src/DriverUNV/UNV_Utilities.cxx | 3 +- src/DriverUNV/UNV_Utilities.hxx | 3 +- src/MEFISTO2/Makefile.am | 6 +- src/Makefile.am | 6 +- src/OBJECT/Makefile.am | 6 +- src/OBJECT/SMESH_Actor.cxx | 87 +- src/OBJECT/SMESH_Actor.h | 8 +- src/OBJECT/SMESH_ActorDef.h | 12 +- src/OBJECT/SMESH_ActorUtils.cxx | 3 +- src/OBJECT/SMESH_ActorUtils.h | 3 +- src/OBJECT/SMESH_DeviceActor.cxx | 63 +- src/OBJECT/SMESH_DeviceActor.h | 15 +- src/OBJECT/SMESH_ExtractGeometry.cxx | 3 +- src/OBJECT/SMESH_ExtractGeometry.h | 3 +- src/OBJECT/SMESH_FaceOrientationFilter.cxx | 6 +- src/OBJECT/SMESH_FaceOrientationFilter.h | 6 +- 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 | 5 +- src/PluginUtils/GeomSelectionTools.h | 7 +- src/PluginUtils/Makefile.am | 5 +- src/SMDS/Makefile.am | 6 +- src/SMDS/SMDSAbs_ElementType.hxx | 5 +- src/SMDS/SMDS_EdgePosition.cxx | 3 +- src/SMDS/SMDS_EdgePosition.hxx | 3 +- src/SMDS/SMDS_ElemIterator.hxx | 5 +- src/SMDS/SMDS_FaceOfEdges.cxx | 3 +- src/SMDS/SMDS_FaceOfEdges.hxx | 3 +- src/SMDS/SMDS_FaceOfNodes.cxx | 3 +- src/SMDS/SMDS_FaceOfNodes.hxx | 3 +- src/SMDS/SMDS_FacePosition.cxx | 3 +- src/SMDS/SMDS_FacePosition.hxx | 3 +- src/SMDS/SMDS_Iterator.hxx | 3 +- src/SMDS/SMDS_IteratorOfElements.cxx | 3 +- src/SMDS/SMDS_IteratorOfElements.hxx | 3 +- src/SMDS/SMDS_MemoryLimit.cxx | 6 +- src/SMDS/SMDS_Mesh.cxx | 80 +- src/SMDS/SMDS_Mesh.hxx | 12 +- src/SMDS/SMDS_Mesh0DElement.cxx | 8 +- src/SMDS/SMDS_Mesh0DElement.hxx | 8 +- src/SMDS/SMDS_MeshEdge.cxx | 3 +- src/SMDS/SMDS_MeshEdge.hxx | 3 +- src/SMDS/SMDS_MeshElement.cxx | 14 +- src/SMDS/SMDS_MeshElement.hxx | 4 +- src/SMDS/SMDS_MeshElementIDFactory.cxx | 3 +- src/SMDS/SMDS_MeshElementIDFactory.hxx | 3 +- src/SMDS/SMDS_MeshFace.cxx | 3 +- src/SMDS/SMDS_MeshFace.hxx | 3 +- src/SMDS/SMDS_MeshGroup.cxx | 3 +- src/SMDS/SMDS_MeshGroup.hxx | 3 +- src/SMDS/SMDS_MeshIDFactory.cxx | 3 +- src/SMDS/SMDS_MeshIDFactory.hxx | 3 +- src/SMDS/SMDS_MeshInfo.hxx | 6 +- src/SMDS/SMDS_MeshNode.cxx | 3 +- src/SMDS/SMDS_MeshNode.hxx | 3 +- src/SMDS/SMDS_MeshObject.cxx | 3 +- src/SMDS/SMDS_MeshObject.hxx | 3 +- src/SMDS/SMDS_MeshVolume.cxx | 3 +- src/SMDS/SMDS_MeshVolume.hxx | 3 +- src/SMDS/SMDS_PolygonalFaceOfNodes.cxx | 3 +- src/SMDS/SMDS_PolygonalFaceOfNodes.hxx | 3 +- src/SMDS/SMDS_PolyhedralVolumeOfNodes.cxx | 3 +- src/SMDS/SMDS_PolyhedralVolumeOfNodes.hxx | 3 +- src/SMDS/SMDS_Position.cxx | 3 +- src/SMDS/SMDS_Position.hxx | 3 +- src/SMDS/SMDS_QuadraticEdge.cxx | 3 +- 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 | 10 +- src/SMDS/SMDS_TypeOfPosition.hxx | 3 +- src/SMDS/SMDS_VertexPosition.cxx | 3 +- src/SMDS/SMDS_VertexPosition.hxx | 3 +- src/SMDS/SMDS_VolumeOfFaces.cxx | 3 +- src/SMDS/SMDS_VolumeOfFaces.hxx | 3 +- src/SMDS/SMDS_VolumeOfNodes.cxx | 3 +- src/SMDS/SMDS_VolumeOfNodes.hxx | 3 +- 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 | 56 +- src/SMESH/SMESH_Algo.hxx | 32 +- src/SMESH/SMESH_Block.cxx | 14 +- src/SMESH/SMESH_Block.hxx | 3 +- src/SMESH/SMESH_Comment.hxx | 12 +- src/SMESH/SMESH_ComputeError.hxx | 6 +- ...MESH_DataMapOfElemPtrSequenceOfElemPtr.hxx | 3 +- src/SMESH/SMESH_File.cxx | 239 +++ src/SMESH/SMESH_File.hxx | 95 ++ src/SMESH/SMESH_Gen.cxx | 5 +- src/SMESH/SMESH_Gen.hxx | 4 +- 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 | 104 +- src/SMESH/SMESH_Mesh.hxx | 24 +- src/SMESH/SMESH_MeshEditor.cxx | 1477 +++++++++++++++-- src/SMESH/SMESH_MeshEditor.hxx | 49 +- src/SMESH/SMESH_MesherHelper.cxx | 683 ++++---- src/SMESH/SMESH_MesherHelper.hxx | 75 +- 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 | 5 +- src/SMESH/SMESH_subMesh.hxx | 3 +- src/SMESH/SMESH_subMeshEventListener.hxx | 3 +- src/SMESHClient/Makefile.am | 6 +- src/SMESHClient/SMESHClientBin.cxx | 3 +- src/SMESHClient/SMESH_Client.cxx | 3 +- src/SMESHClient/SMESH_Client.hxx | 3 +- src/SMESHDS/Makefile.am | 6 +- src/SMESHDS/SMESHDS_Command.cxx | 3 +- src/SMESHDS/SMESHDS_Command.hxx | 3 +- src/SMESHDS/SMESHDS_CommandType.hxx | 3 +- src/SMESHDS/SMESHDS_DataMapOfShape.hxx | 3 +- src/SMESHDS/SMESHDS_Document.cxx | 3 +- src/SMESHDS/SMESHDS_Document.hxx | 3 +- 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 | 3 +- src/SMESHDS/SMESHDS_Hypothesis.hxx | 3 +- src/SMESHDS/SMESHDS_Mesh.cxx | 3 +- src/SMESHDS/SMESHDS_Mesh.hxx | 3 +- src/SMESHDS/SMESHDS_Script.cxx | 3 +- src/SMESHDS/SMESHDS_Script.hxx | 3 +- 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 | 3 +- .../SMESH_TypeFilter.hxx | 3 +- src/SMESHGUI/Makefile.am | 11 +- src/SMESHGUI/SMESHGUI.cxx | 302 +++- src/SMESHGUI/SMESHGUI.h | 8 +- src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx | 90 +- src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h | 6 +- .../SMESHGUI_AddQuadraticElementDlg.cxx | 87 +- .../SMESHGUI_AddQuadraticElementDlg.h | 6 +- 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 | 13 +- src/SMESHGUI/SMESHGUI_ComputeDlg.h | 6 +- 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 | 89 +- .../SMESHGUI_CreatePolyhedralVolumeDlg.h | 6 +- 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 | 6 +- src/SMESHGUI/SMESHGUI_EditMeshDlg.h | 3 +- .../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 | 6 +- src/SMESHGUI/SMESHGUI_FileValidator.h | 6 +- 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 | 12 +- src/SMESHGUI/SMESHGUI_FindElemByPointDlg.h | 6 +- src/SMESHGUI/SMESHGUI_GEOMGenUtils.cxx | 3 +- src/SMESHGUI/SMESHGUI_GEOMGenUtils.h | 3 +- src/SMESHGUI/SMESHGUI_GroupDlg.cxx | 8 +- 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 | 6 +- src/SMESHGUI/SMESHGUI_MeshOrderDlg.h | 6 +- src/SMESHGUI/SMESHGUI_MeshOrderOp.cxx | 7 +- src/SMESHGUI/SMESHGUI_MeshOrderOp.h | 7 +- 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 | 92 +- src/SMESHGUI/SMESHGUI_NodesDlg.h | 8 +- 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 | 122 +- src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.h | 31 +- .../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 | 3 +- src/SMESHGUI/SMESHGUI_Selection.h | 3 +- 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 | 14 +- src/SMESHGUI/SMESH_msg_en.ts | 199 ++- 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 | 4 +- src/SMESH_I/SMESH_2smeshpy.hxx | 3 +- 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 | 16 +- src/SMESH_I/SMESH_Filter_i.cxx | 3 +- src/SMESH_I/SMESH_Filter_i.hxx | 3 +- src/SMESH_I/SMESH_Gen_i.cxx | 26 +- src/SMESH_I/SMESH_Gen_i.hxx | 3 +- 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 | 490 ++++-- src/SMESH_I/SMESH_MeshEditor_i.hxx | 41 +- src/SMESH_I/SMESH_Mesh_i.cxx | 87 +- src/SMESH_I/SMESH_Mesh_i.hxx | 19 +- 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 | 6 +- 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 | 3 +- src/SMESH_SWIG/PAL_MESH_043_2D.py | 3 +- src/SMESH_SWIG/PAL_MESH_043_3D.py | 3 +- src/SMESH_SWIG/SMESH_AdvancedEditor.py | 3 +- src/SMESH_SWIG/SMESH_BelongToGeom.py | 3 +- src/SMESH_SWIG/SMESH_BuildCompound.py | 6 +- src/SMESH_SWIG/SMESH_GroupFromGeom.py | 3 +- src/SMESH_SWIG/SMESH_GroupFromGeom2.py | 3 +- src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py | 3 +- src/SMESH_SWIG/SMESH_Nut.py | 3 +- src/SMESH_SWIG/SMESH_Partition1_tetra.py | 3 +- src/SMESH_SWIG/SMESH_Sphere.py | 3 +- src/SMESH_SWIG/SMESH_blocks.py | 3 +- src/SMESH_SWIG/SMESH_box.py | 3 +- src/SMESH_SWIG/SMESH_box2_tetra.py | 3 +- src/SMESH_SWIG/SMESH_box3_tetra.py | 3 +- src/SMESH_SWIG/SMESH_box_tetra.py | 3 +- src/SMESH_SWIG/SMESH_controls.py | 3 +- src/SMESH_SWIG/SMESH_demo_hexa2_upd.py | 3 +- src/SMESH_SWIG/SMESH_fixation.py | 3 +- src/SMESH_SWIG/SMESH_fixation_hexa.py | 3 +- src/SMESH_SWIG/SMESH_fixation_netgen.py | 3 +- src/SMESH_SWIG/SMESH_fixation_tetra.py | 3 +- src/SMESH_SWIG/SMESH_flight_skin.py | 3 +- src/SMESH_SWIG/SMESH_freebord.py | 3 +- src/SMESH_SWIG/SMESH_hexaedre.py | 3 +- src/SMESH_SWIG/SMESH_mechanic.py | 3 +- src/SMESH_SWIG/SMESH_mechanic_editor.py | 3 +- src/SMESH_SWIG/SMESH_mechanic_netgen.py | 3 +- src/SMESH_SWIG/SMESH_mechanic_tetra.py | 3 +- src/SMESH_SWIG/SMESH_reg.py | 3 +- src/SMESH_SWIG/SMESH_shared_modules.py | 3 +- src/SMESH_SWIG/SMESH_test.py | 3 +- src/SMESH_SWIG/SMESH_test0.py | 3 +- src/SMESH_SWIG/SMESH_test1.py | 3 +- src/SMESH_SWIG/SMESH_test1_AndDisplay.py | 3 +- src/SMESH_SWIG/SMESH_test2.py | 3 +- src/SMESH_SWIG/SMESH_test3.py | 3 +- src/SMESH_SWIG/SMESH_test4.py | 3 +- src/SMESH_SWIG/SMESH_test5.py | 3 +- src/SMESH_SWIG/batchmode_mefisto.py | 3 +- src/SMESH_SWIG/batchmode_smesh.py | 3 +- src/SMESH_SWIG/ex00_all.py | 3 +- src/SMESH_SWIG/ex01_cube2build.py | 3 +- src/SMESH_SWIG/ex02_cube2primitive.py | 3 +- src/SMESH_SWIG/ex03_cube2partition.py | 3 +- src/SMESH_SWIG/ex04_cube5tetraHexa.py | 3 +- src/SMESH_SWIG/ex05_hole1build.py | 3 +- src/SMESH_SWIG/ex06_hole1boolean.py | 3 +- src/SMESH_SWIG/ex07_hole1partition.py | 3 +- src/SMESH_SWIG/ex08_hole2build.py | 3 +- src/SMESH_SWIG/ex09_grid4build.py | 3 +- src/SMESH_SWIG/ex10_grid4geometry.py | 3 +- src/SMESH_SWIG/ex11_grid3partition.py | 3 +- src/SMESH_SWIG/ex12_grid17partition.py | 3 +- src/SMESH_SWIG/ex13_hole1partial.py | 3 +- src/SMESH_SWIG/ex14_cyl1holed.py | 3 +- src/SMESH_SWIG/ex15_cyl2geometry.py | 5 +- src/SMESH_SWIG/ex16_cyl2complementary.py | 3 +- src/SMESH_SWIG/ex17_dome1.py | 3 +- src/SMESH_SWIG/ex18_dome2.py | 3 +- src/SMESH_SWIG/ex19_sphereINcube.py | 3 +- src/SMESH_SWIG/ex21_lamp.py | 3 +- src/SMESH_SWIG/ex24_cylinder.py | 6 +- src/SMESH_SWIG/ex29_refine.py | 6 +- src/SMESH_SWIG/ex30_groupsOp.py | 18 + src/SMESH_SWIG/ex30_tepal.py | 22 +- src/SMESH_SWIG/ex31_dimGroup.py | 18 + src/SMESH_SWIG/smesh.py | 3 +- src/SMESH_SWIG/smeshDC.py | 167 +- src/SMESH_SWIG_WITHIHM/Makefile.am | 6 +- src/SMESH_SWIG_WITHIHM/libSMESH_Swig.cxx | 6 +- 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 | 37 +- .../StdMeshers_CompositeSegment_1D.cxx | 31 +- .../StdMeshers_CompositeSegment_1D.hxx | 3 +- src/StdMeshers/StdMeshers_Deflection1D.cxx | 3 +- src/StdMeshers/StdMeshers_Deflection1D.hxx | 4 +- src/StdMeshers/StdMeshers_Distribution.cxx | 3 +- src/StdMeshers/StdMeshers_Distribution.hxx | 3 +- src/StdMeshers/StdMeshers_FaceSide.cxx | 142 +- src/StdMeshers/StdMeshers_FaceSide.hxx | 17 +- src/StdMeshers/StdMeshers_FixedPoints1D.cxx | 6 +- 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 | 9 +- .../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 | 6 +- src/StdMeshers/StdMeshers_MEFISTO_2D.hxx | 3 +- 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 | 3 +- src/StdMeshers/StdMeshers_Prism_3D.cxx | 126 +- src/StdMeshers/StdMeshers_Prism_3D.hxx | 3 +- .../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 | 31 +- src/StdMeshers/StdMeshers_Projection_1D.hxx | 3 +- src/StdMeshers/StdMeshers_Projection_2D.cxx | 160 +- 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 | 31 +- .../StdMeshers_QuadToTriaAdaptor.hxx | 6 +- .../StdMeshers_QuadrangleParams.cxx | 6 +- .../StdMeshers_QuadrangleParams.hxx | 6 +- .../StdMeshers_QuadranglePreference.cxx | 5 +- .../StdMeshers_QuadranglePreference.hxx | 5 +- src/StdMeshers/StdMeshers_Quadrangle_2D.cxx | 3 +- src/StdMeshers/StdMeshers_Quadrangle_2D.hxx | 3 +- src/StdMeshers/StdMeshers_QuadraticMesh.cxx | 5 +- src/StdMeshers/StdMeshers_QuadraticMesh.hxx | 5 +- src/StdMeshers/StdMeshers_RadialPrism_3D.cxx | 3 +- src/StdMeshers/StdMeshers_RadialPrism_3D.hxx | 3 +- .../StdMeshers_RadialQuadrangle_1D2D.cxx | 6 +- .../StdMeshers_RadialQuadrangle_1D2D.hxx | 6 +- src/StdMeshers/StdMeshers_Regular_1D.cxx | 7 +- src/StdMeshers/StdMeshers_Regular_1D.hxx | 5 +- .../StdMeshers_SegmentAroundVertex_0D.cxx | 3 +- .../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 | 6 +- .../StdMeshers_UseExisting_1D2D.hxx | 6 +- src/StdMeshersGUI/Makefile.am | 9 +- src/StdMeshersGUI/SMESH_StdMeshersGUI.hxx | 3 +- src/StdMeshersGUI/StdMeshersGUI.cxx | 3 +- .../StdMeshersGUI_DistrPreview.cxx | 3 +- .../StdMeshersGUI_DistrPreview.h | 3 +- .../StdMeshersGUI_DistrTable.cxx | 38 +- src/StdMeshersGUI/StdMeshersGUI_DistrTable.h | 3 +- .../StdMeshersGUI_FixedPointsParamWdg.cxx | 26 +- .../StdMeshersGUI_FixedPointsParamWdg.h | 10 +- ...tdMeshersGUI_LayerDistributionParamWdg.cxx | 3 +- .../StdMeshersGUI_LayerDistributionParamWdg.h | 3 +- .../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 | 129 +- .../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 | 3 +- .../StdMeshers_Arithmetic1D_i.hxx | 3 +- .../StdMeshers_AutomaticLength_i.cxx | 3 +- .../StdMeshers_AutomaticLength_i.hxx | 3 +- .../StdMeshers_CompositeSegment_1D_i.cxx | 3 +- .../StdMeshers_CompositeSegment_1D_i.hxx | 3 +- .../StdMeshers_Deflection1D_i.cxx | 3 +- .../StdMeshers_Deflection1D_i.hxx | 3 +- .../StdMeshers_FixedPoints1D_i.cxx | 6 +- .../StdMeshers_FixedPoints1D_i.hxx | 6 +- src/StdMeshers_I/StdMeshers_Hexa_3D_i.cxx | 3 +- src/StdMeshers_I/StdMeshers_Hexa_3D_i.hxx | 3 +- .../StdMeshers_LayerDistribution2D_i.cxx | 6 +- .../StdMeshers_LayerDistribution2D_i.hxx | 6 +- .../StdMeshers_LayerDistribution_i.cxx | 3 +- .../StdMeshers_LayerDistribution_i.hxx | 3 +- .../StdMeshers_LengthFromEdges_i.cxx | 3 +- .../StdMeshers_LengthFromEdges_i.hxx | 3 +- src/StdMeshers_I/StdMeshers_LocalLength_i.cxx | 3 +- src/StdMeshers_I/StdMeshers_LocalLength_i.hxx | 3 +- src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.cxx | 3 +- src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.hxx | 3 +- .../StdMeshers_MaxElementArea_i.cxx | 3 +- .../StdMeshers_MaxElementArea_i.hxx | 3 +- .../StdMeshers_MaxElementVolume_i.cxx | 3 +- .../StdMeshers_MaxElementVolume_i.hxx | 3 +- src/StdMeshers_I/StdMeshers_MaxLength_i.cxx | 39 +- 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 | 3 +- .../StdMeshers_NumberOfSegments_i.hxx | 3 +- src/StdMeshers_I/StdMeshers_ObjRefUlils.cxx | 3 +- src/StdMeshers_I/StdMeshers_ObjRefUlils.hxx | 3 +- src/StdMeshers_I/StdMeshers_Prism_3D_i.cxx | 3 +- 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 | 3 +- .../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 | 6 +- .../StdMeshers_QuadrangleParams_i.hxx | 6 +- .../StdMeshers_QuadranglePreference_i.cxx | 3 +- .../StdMeshers_QuadranglePreference_i.hxx | 3 +- .../StdMeshers_Quadrangle_2D_i.cxx | 3 +- .../StdMeshers_Quadrangle_2D_i.hxx | 3 +- .../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 | 3 +- .../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 | 3 +- .../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 +- 783 files changed, 10101 insertions(+), 2776 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 100755 doc/salome/gui/SMESH/images/head.png create mode 100644 doc/salome/gui/SMESH/images/hexotic_parameters.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/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/scale.png create mode 100644 resources/scale_along_axes.png create mode 100644 resources/split_into_tetra.png create mode 100644 src/SMESH/SMESH_File.cxx create mode 100644 src/SMESH/SMESH_File.hxx 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 71a28582a..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,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 dist_admlocalm4_DATA = \ 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 b8ae5440a..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 diff --git a/clean_configure b/clean_configure index f57f7b3bf..366520874 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 a1b23e273..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 \ 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/colors_size.png b/doc/salome/gui/SMESH/images/colors_size.png new file mode 100755 index 0000000000000000000000000000000000000000..58210c0bc7456dbd7555b34dfc34fd6376e70a34 GIT binary patch literal 21537 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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/head.png b/doc/salome/gui/SMESH/images/head.png new file mode 100755 index 0000000000000000000000000000000000000000..307d9ef9a4c07f8fba2c8721309a978433bcf63c GIT binary patch literal 78545 zcmV(=K-s^EP)KLZ*U+9)Gc>Uwq5=^`M4BQav zC@~mCR4i{s){CyJy!Z0*`{S%{?X&l}`|Q2XS{DG4r!SY621@~u$`kN|Je=tfkx_K) z0Du7=V1OwAOjbs^U$A=!5XsBUg`OdD0$&6H@OoIh0&vsNGk{J9|DU8;>3o6cm;e!* zvpE?o5f_L!B}hR1Px(02E1V7jRgKA~q2*i60W=BI4x$ z;7AEyaokrd;A9KLmvTu<&*5_u5(RV}mM-1Y+L}T4YB~8euXQVS(9J=A3hxi`{{&gM(L7aFFpTiSHgo&n% z%S#Zoo5$t~xM@5(m-nBV_z%PWq{X=wiPHEHP-BdM)O9LAe(eV+3K1aD`^8=Vqi??W zFd%+;;VP4hbN}x*{b#|Y;w6Kd@Hx&UD1^=u@-r9r#Lp6-0Rcz?Dv$@tKpp4+LtqB1 zfGuzYZonJ(gAfo2Rs$AD1gU@zvOpf#1PVbh*a`N4YETCnK{IFt$3Z7J13Xv3lIchAu>dPU)xk0{A5EKc;LJ1HL5<+>_t9A*$Rj+w(^vGQ1b ztR2=L%ft$>h1e?WQS4dl5OxCl21mrH;LLFDxF{SCmyfH!9l@Q!4dEtn3wSBKCf)|` zk7wg^@TK@hd^i3&egeNhkS1so>_C83pYk??@5*JW(Ig>h2k8*$9O*9UC7DdtB0G|!$O7^Xax?h?`4Rbz1VzF~!b^fJ zu|c9nqC;Xx;<+SVQd81Nay<4KR#Ayj<$@V3!ONN%r%Pp02 zl;g-1$+gMdmU|~pmv@s-mft1cDgRIbrJ$z}sF0L~^(u2np!*snOJq^#tjl&(~zbU|rGnWpThoTOZ?d`5X%g`#4w!c{3(Iji!NE=zZ! zr_d|uz4TdCMO9B#p=!PAfa-#pwpyrKzFM2wLv?~WLp@%-T)jtqRzpR@Pa{vGMdO|( zUX!7jsJU0OPjg;NTPs{^t5&Dhl(w9*gyjC_sqjXI5<8*3Ox z8SgUgGyZ5|VUl9fXma0F#?;$1-?ZEGcQZXRmRXJ2EpxKDyZHw5F7p@5^p|m#?O%4s zf@0xkvDKo-;)A7?CEv2ua@tD6D%PsjYJ@>$1Tab%m#xv(&ej{OPg%dUv9uA`9Jl$+ z*3dTD_K5A&a_!}u<&De7?bPg;cJ+3n_H_GL`vdl)4yq1JhX#koj_QtV$0o-~Ctar` zr=w2KolTti&h5_gE;cUfT+X>7t{$#Mt^;l|ZlP|~Zjap6+!Nee+-E&3Jl1-g^F(|4 zc<%BX@lx_)c{O{@dRuv~^X~N_`2_n^`#kp5^X2D$*}0K=CJv2 z*YL9N(Fo&+brIJh6(YHjT~XMmu&Ab}xs`4!_pF?Vwuml_9$uxrDtpzH)e5UqR-cZM zjA6!{h(*VS#~z7&&-7UTb~$^RW5+4uOvc;Am&H#d*d^>v zm`-#^tVo>Ux^SzxFOocy>XPP@{gV$Re@Y2YX-mbW#-^U+$?%eSy=ls6*=d96`ssz~ zqibx|>{&C*_u)5XKpCqtx&&0w&s4uqN4P~emT8|^lldkqEbBzJbT%)$KSwWTd(LF8 zd+xVuQEORid-7ECHsy`2b6Quw9$Fu_zGs8_hJpTWll-#$SDV8( zcNZuXY%Cbx;<2TrP@<4uII`7tYuz@~Htx28?dIF7wtp;Q7hNqjDXu7fU&1Q6`iQBE%}Du1;nX3v$1WfgUM344Wm zM=O0RyQ(y*c2>QwPOQFN<6P5Lt600ec77jw-_U-?{jGIMb;Wh>4sZ|LsrRVwXwYh? zIEXozdGJYNSYzL}jBlHp6q<^gJ{;m58a*6zxVPD=x%r6Vk*;`ZQh=^oC;Q|`XFmw9jD{>BIB2SpF19#%Y3 zeAMu>?$2$bmZPV~T*vw!2S2_)&KiIAOU5tnCkmdBpHxh$Og2xMO`V!{pT6;Q<CYBs3V)UUwf4Er^B;b5{H=dBVs_#M|HY@@OJ2&qJoIYWtDd=lxks;4UoXrTy^()& z_$}jY-@EX4lM7kzvF|HC=zi$_==1Txr_@iM{sjY=^Zb#(TH62s00d`2O+f$vv5tKE zQIh}w03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-DC;~}D zK~#9!oK{Vb+(Z!Vs%qO~?+jX2$toOJgplBnQx5P$_@&&qA>}7T;v)(YryN3v5M(#D z$L+47x_hSMv1f)&tQpJhkLp*iUR4?Flkb_?7y}@B7ZCt3y9?q^r$EQe;U$wrAA02@ zmS$&bomTHE{SxQ z>2m=xnvy+JhpIlKg!$miwW)5?^Lr?JHfEujZOM=hVuP4DISP1r?sDq9FH^u%$z{y< zWMjHg;*|{^)4+*zm~1?iK~rG&%VP7t$$0;`XADG?(H@n=Q6r~fbpG{}M|e2C19R5d znRsBqXV#edlIs5q{4`bbbB#X}6YpiMQu6Zaj7S@L0$pAA*DEKMxtc_3K`9O-%i!cR|i$IxHY)*%uA@!g@ zbVf=`X3IJtTq1dt@T7}LK)$`XdbBBmU!l)|XR1s2@%f)^j}}Mmw#++%Aao^Ng+9eZ_V9+g<-2P3vp5# zBDw+Mfl)TsD|5548fAUefWGYb=QsZCmTy~m*Nfu0sLk~nY61zlB~2-tN`;GC=T!_P zK~)gO@TZ8Vr|SO*NGfb~2e=#fuJ`};{;typr(8ft4QL0~_T0BlsdZanuigY`ZuHvW zSGBF0GPHVQEZLw{bwEic4L*PQY5mP*Q(Jr6yA{&iR&6xkjmmUgQ762qt*MHl zDOYv5F3oSZ{#n~KB`Ljr^zXXC4D8i8%11eqJTL5@5gCEC{)0&;SlyeDs3^|QHN-6{l_PNNB_LO?O`^<{< z0;6I9B6xMp!|ZG3u<1zBJkfswuwurmZNoqqmt;F#o20a1l#PwC!C){Ld;eG1AA69| zmXdWzn%H;y?j$R+<-}>Jaj9!d?&cXi`oa%mAgl@$7Xbx zXY!znjzE8&!x6R)Id*XTsGN8~fjVW1FSz;5!MVpBnBMFO*HPOBa_?k`5=42TnNu4M zDX63)x?VVXGA5lR%}G5*U8LTxB9lNpXXbi1cUP(+(j@d2dy+;^mJ|c@%2B?%n$Ez$ z0&nJgQvCSx{`<#kk4h78m1ST0T#}zh5;FB+yc5>!1j;ylL!@MFS?JTm@wO*id9K?k zPP(|OQ4YWzuAr*0Zx^%KMLD7B=cfe_xZ<`;cRHZW?et9oL_lpF=We`Q8gXx%vIL;{ z=5n&Qs5Uh@p~cepN{eR#NEi@{y743(*Q0#gMhE8lX$IH_B>?1e-#%P^y_pwPX%HDf z4l7GmRj}HU(hEqb@YZd~e7>48K~n+B>M z>(d^PY#0~Q^|;&5tLZ_#UcE-^GTXV)Zx5f!7kbi)YY``j^{qWcS;t*^-j zo4V`!0SGV8olL2gh1IVwH>CyFYOY#D+TPw=J-^t#zx}oUdoErH&gjs?bc+ z`=joO_{htox{3)H*d#vI`F(7bbRHnX3dQ=8p??rM&F8OwuFiJeH_q8cwfn;ZNgc(l z-pukr!1lQOGKM3iJrp>P5+E%!143XVbgt}iQN-hKRbsB6OEsH5&pCo-n<2=aN< zOQAS>VJzVT!;xX*iEf(f^WFAE`Rc-cxI29LT|;R^LZZj-_s5&7O3^}uu)?T!+lve6a9HFZ{9okA6wDoeqArf{@X77DFfa15Z4qVkB3xte8iS-3cGLqQGQ!3L{8a-;cF;vgXTpm<(R|ALZYGn@AiIJHNy$j_MN=lj zj~dS`zC15W+cJc2oyEHLl`izwZ%VVTkIy!yak{E>rTxaLpU39YzTH{Vdh!G0I#ft# zG(3x@2=N(9VTL#8u;n^}+7@?5)TL>TprjK+%@NJUibb>zF;d?qylfbq=LBFI9sd$R zbBG!&i*7)%NMX9L+nX%hX@5GJF31X7MMT21l1(u3#$tNf<=N^~I|FjB6?(9O8KgsST0+{eGm(ny$QseRtPabxQ zpXJHSp9k~kjr3ewC+Xq8i48q5De@WMK7_$*KTaa9U~8ppI;jI7wp#Y6^u$5?%(6pv zT?Eh>7(D|J$E{5Qv@Yzo86R_1Zt6%Y{ zPR!T`Kv=xoZUZ=PI$+aUAsBS#&E@(<{p#b_pC7J&7~AS0>5r3YWe^;}```D?ZtZ+e!(|aVEYXa~s{C=M49S`pvPoiwN5K%jSWgiT#1@Nvxw@$8 z3PqB?+HF4B#%sIcJ_4igp@%L2l|_tzINjY=mK=YwQn72ubv{oem0k@IylZ=MZKbT2 z21vYDJfl4Vt5r4SUkJCz-K9Td=FnN&G!Cdx0ZAV*116U|{>#2qBzTB`=L!Dl(lh6g zS7ssuXcZF?aiCb*deD9FURfuokV;YtyofWwL3~10d=1%)YpHyzAo*BODH)~tody!8 zm1p?(@RfU%f57;zK>7-7Q-d1nRS{PyHfC3V^X4gf!uG!?5)_60%dckb!ghsFt`8n> z+P3XBjzTg{g>U<=X?mj^&iS?(H&=;4W)#k(tQn(D_GSL4&U!5CoMUisX?ZUjm>k0=NySw& z$ygq)4s3>okgh4fE)w2)klDz zHwfJA$L}}Szul^7oDLmHextxTK?vY&JPVDom?v?7RHcE{D8P-<>40)IV!NFpXsCn`7_PGWum zUC4CKs0*0$VUhUoZr|;(-T@?y4Wv}2Tb_L2Ap%4dH#hd#_x5|TRp3pJKO=T$2M4=l zIg5ckP&kN&fujRt7e;6n2nKEXIKCEOPC*tQ646s~_!^aPAMi8%stl21NZy14W|auE z$tMFXQ6c4Y1fMj3#92s?7Szvo6kD|g>~bmr_XFMSl;&&$mZ-zGyZeP+ez;t0y~A~7 zn4eKDLSx(3TV>AA6#M6~0QdE}b4DX8LlV*k$)8hXpTaje=M8NBx=-5&zjy6=_1>tr zR=>Px*SbAZ-Wt-~iHA21*DSke`nB0xe4|^4H@8S?#G$|!wsx^zuF_V+4dgbp9KNtd z6V)U7HLUwM&e#MSsh5+nV|NX4s*WB3NsJNFMjTh-Qy_#$9meQ}1A@DKgu&*{sdB6T zCjc$iw%jxf1$89b&86i528RFt9)5racw>ez(CH%7F?50e4OX@V1CD~_p z&u*&RgB1oH{`qnFukco92^e?-?EW@N?XcKuiqC~oy9mzSkNO<{%gQrSUN6;9rwSPq zIt#EeYP>~FQlJ#%rEw?@l;+_#hRI@>%>zX5Boq5ArWOY|hzH|poqMmt%(@UVpVBBm zmif{`x><@U-3&wLrzn7UE=Vwz$-^Zbq&&O1?yFhqP85~(iPI*1Cc(1F80Iu!0>$PK zyvRBxFD766qW5Wn8!k-57D(*E(bsk%CXlp9BlFzwi_M3804u$kbzOYUnu<1+B{;j( z>PfUA$Dlc$&d-vs?8^RJ+8Alx^8J}Z*!lRE8UjTGJPE3f?!+i>5{kou`+mRuaNUqF z2A135h?acCaWzUF>+t>8ecSfCrgD_d1C`Kch7Lu-Pgj(?C{!k^hgGAX49&9&&Y;C> z@r`qFk53l@T=?2?Uf&%aPKSr5Q`c>)nxt!4KZvR?L;_I0dH7o$#Eej>G{Ed$Bc~2N z^P%l6{(FUBTc9X}RPqAl2AG)XXy<;OgW-7|&GkxRdepl`5RT;LPwU^E;b!B0+#gLa zWRqsM1OsN@+5XtOPjJ<9))v3sz(yOlHTrijb@YCOlmIUHxQ1KDunSqz#*Um7JRh6` z##1?P4W(kuZD)}tQTmXvJmESB#~y)obd$JfZKeZahn6zxJkGqM>gXeGRF;Fnz%fb1 zhWIde&$WamrOZ`KB@AyfZ}6@6q9iNA*6f{$oQQonWL5#>oH(Fb8}BXf$0(mmE`1_M zLUIJP%hpYo17hn@ss=4)5HgdSkZ7Mpcb=ryfaxYbd^~@0``g&LZ;OsxLo}-)#8&aZeYZLqnYnrbeDR z9vm#iAy&IObWZib9q!KO>!+Ox`>O9BJ7_jd4Q;JlM+>7_YKOstEVPe(EFK2Z7&ZC8 zU8jU>Y3d9s_5=4L3sNlZb!A%XXo(E}-7?~bxQ@d1B4Yq{jya-LWafMp0PMlaHS?cNT8MVsbQJ^OHi*;8??+Nn=_qPx|RC%~=+Skp$!1E4kTWCU-8?H5 zM4f>?jvLMD&bk}Wba;%d&|!_T%AbCu?^V5}?3f$>Jy%3j`T{j`UW%B?1SM`Brw%t# zNzgRE!1rP=Jcm160hkOm_}uiE&XoppOwlA2?#2|o(Ts!6A8|EIC6s4MtJ@YF^Eh?J z;d9ZXUiI{tBIyb)x67=;sWY8$E`r+D0e>U-t^nvoOlPTpMpb2xo}+OJnjWmuKFHK_>+W#4uo;7#cv zgMBq?3wejpd#A;kMaXAu4m9ck$-M|WuGX>vaiypUxQIyWD1@qCb~ZwA0Chk>qeget z`z>}Ruk}lc6cwc=&@s&hNn7ol?fm+f$`}hb3qIcpvJ?tfH^P+3WOFtPxvqZzYq5-u zK?BP!oDNChIdD4gLQfDE!uE0ZWB2;?;qK>4AMowY$_b^fsH z-SgqNKZU8i2p09kP*9%n{5dO^sAt-%r<@=UBf zfMJ6$hYCZXXOPcgh9#>8AunfiOvS{Kzly_$om;2JXR|A7+Mv1!uEgl~$la(T+r<|W~<+~+)d;GQief;pS8QjVE6{&y_qYa-rtI9<&m3~#;oMT2ccsjX_EP8W@ zK!4NGx{DcuY7!{cW2C?aDBW3c1tip-(o2~O){1dP1%kMPur^7?Aopu>4n|QLharVy zDQEVYO~eNoG629b7iK-iLaP_B9ogVd5)au|B7#rY$Yv1DDx;(nmq!UYcN&aefCnjz zz)ZQ|nPyxCTKyG(nQPf?8wP^AOUX8xA}x^r|D_)K0X?JziXNJvMiIplA0>B5iHt~D zbuaZPuq8*PNO5L%cDgl`sjJZFS_TaGzh4Dvhq>st#>N|Oa*Yj>J;X8lY@==GqP?&^ zIF!b9uTG!2Wa^&Lig_RvVyaM|PoX95lb0$;%V`FpS8!p$zWIkXb#k?CK@~K&NXkkn zubzl)#Pb)vsT?7cf6T2-`7yUl_d4GLjJ%88M> zM0uTxTEQ|auuMU~wOSX)0q3r}rEBgy=ucnI9#gS?Yy`eb;bC<2YnU$62%x|Hyga`Q zkI%0jCw8Pssc2PRHZHW$x}C2zj@S%%4YUc0Hq#Rkv|<~s2~sIK5z`!LOT%bhCj4;1 zkKmb-4iKMh`A!y#(-<>yFt^514l2-P18M>0Jc^VfDwNF5sY+t30SOqA8UatjkiQdh zR+gTDaH2M{yM}R!jj9wGm{^B$C5dYx(h3oNsUZ&D1QUEgG$O~xB)58aFVCy9;&U^*|SQccL#(=g*Jl zyZc^i!)AS}IuD}*%tg*UjQXcsi>KB!`F}J{{yt2`=)ON5d)0M#IQpwlDjZ-@lPpqJ zyxnY`h^qs|^dA-1Xk2mg%I5jao*A)`S!NDF{O8v82{n@~W_m746_LWFT<>tMjq!G| zM>(xwSsDqNBc%@F0+bcoHzb=rl-=srUw;H(?%Z|bhJh$b&TwTQsf-l)faL$b!9S2X zK#(GUZNPZ(B5+lUPj>J?8}erA9{q26 zou-<2rNF9`q<>Hya+X-7(DgMV%{1=mjNWM91-a-PLp5L0t#KgD(wUY1xqo~w3Nr-O zsXty>Sn_RQ`V8X_T!}Bw78Ub108j}wUfVfT2E^a}w?+~zGbELN&rHF~y1X?)tzH># zQL(q6do|&WRr=mvtwZ*AvDM>P$)394$k)tE*)!0W^)w_PD$V;-7k@rHef|9D`UAF{KE6^TG^>cL z2af0S_uEJ9)4?<;i_Tc=V6MFrXT znvpTHUNGW)>1~)9Z%BBvPMyL`7PXxbBH{~DCs?%EyA@u(H#%AI=z&P(&|&$IqUjH} z&4$216O@#379Nbrb_efXy7=w>cZ%J^bH~_`fK8U*jD05@qng%3>qjay4a*5p!hHByT5vxvC%Q#O*3HQX6 z8BLL;NsVF=d?1Ex68q04ODS%q7raKO1=?;wbds367RHnI^2)Q5om_7QBKq>01 zT+XqJT@#rLpS6ByFf@mjbLgEV2tbJIBlO0ItEunUmcWYWZ#iJ8;>frmNXvo9aWDeD zz#Q`sxDZn-*d6(z>u)chLP~g^JO`SYw~ASGV7B1~T> zZuuG4(@MAVswvT_niJ3%ug4riaO@+cuSgg4sKt-?nh-!nYN#WB)uB~`G(f6qi&l+ zxt{dj%{wsIc}=LEQPlY5`|rnn_;7!B|L#r3FySO9(MgpZfBSj(bL3Gr@(99xW-i%W zwyAx}S=#`|!;HKH8H1NDJ~jPVJM^`x6{rj`y87sw$jAA~tEJvFSQ+&v7a($V}s}LO}n>U(f*jV{S?^D?*uhxmFtzmGbJam!>SvptK4&;jEkN&cX z&j$suQuJpNAY}&`ihX@JaN3XKRw;GV*ow%hxdsCxP|c9}LYg@vw&;B37^CWx2a}o3 zaFqmiB!($)PsukziUA%&%=mXZ4A$XC5+6kpgQR(uietqBCKZp0BjI*DiG zBRkT3;7NQ~@RSGX@CA2Epx(g>E1Vi}%Fsd%yAq$M+G`59|McVUTeo|^+wAC-Bq?G> z>fz((hhO_}_u8Xk7w+om6r*^cOCf1dkHB;onDV@Uc7Ahx) zj6<4E9s|-6XNcPpi8&4w7?i4%8d?{2t?u^;WhNAP0_Y-l$tz;HqW=?sw=33d8wR2} zl8%86MLTwFr~LnCbnO_RONRn&QNU?Yz!rJoyE}@atVoI+G|ps*PAnd&yT|w5h2n6e z_PcJSy$I9)B&_d%##cBqwCT!OB%d}sD4Wb?r8=O2aIzhDqcv$kjfv-t8jAh@SWTMK&7E&uTDv9HAj*@uX4pONn6 z_U+rNh#Mzy-#5CY3G0o2ec#3DWwx~i(kP_xZcdLxS3P=GQGcEU-l#TM=psBDLaF7@ zN3m)da`#54-h%EEfotfZZS+6Zr+#5miyu*D;0;0H>U7|9_23iWBO5u1R~H&nvpYCNc#OM9+% z>L&t+K{zlXd-Z}nW700%9Xq-UJ*PXEvH&~vsmN^Swjh0`h?_~h8(!iZAhMXn48842 zD|g&uB^$pB0@M;%5j z_wSDfam0Lcq|Xn(znvc6VnvH9PvZW3iFx_uI$5lA#7iF>59zsuHS2Uj@X4IZ7;FJa zVDnrw9D@rrt#(3g5kgb)U4>Iw1p_qVJMid4QEFm`<>`{jev{(SN`B9w;|@Mt0HH&Q zFfqI}Wn&n^Ev2|(Mmt;P)lQE4QrQ0P0 z^wkDcgnz-dC50kbo0Um>c3p|^iM?}O_*c9oYd#HDXO^CI_pd205#GsYd0 z$Xh5ScbU5Dmf-dh?uy#%{Lx(}3Ez}A?cX^6f?G10?=JU6_0`%PNqHVD(UDIJ?_$hU z#^1!i>!FVQA9 z8p*aw9I<4n)T8xGmaSwlR79cg2Bqopy%X@exP_L31t&a_CRp0qtV(YLx?6D_bt2hJ zVUMIUj2>ggf!KE*Sj}Xf9N}ni9-GN19*Sc1k|K+FXx(nHoP>mdc;1PT-Z~i~6qIWr z3V%$mz}`%Ts8RWZJ0PPXSedEOgd8goIm;5|hP_kOt6Uw%;++F@b067k#rYBU}Sbqlm{p7x40JcA4%q^ zj^t&GQut|>xyiwnb9rkfYQde;)HhL*kIv^GuYbS%ehnTze+plJ9-j}#U;@p&iBlXW z6m80LQ8s0xqVZAa`Duy~6;M4<-(h}Fn#R$LJi}@J;aq7CL-5|KpP2Bu8)*yWi#Lr- zB!UzbZx-K$(m{vg2YGVwTZ5!608Zq99`j^6rsHKFv)~GOAy)}+JOBEAfL)(-sJZJn(4 zbm%v?Pevad7nQ`xo5uQrsa;x&Lc*bopoY!(6W2C~aBYHN>yiNy(Xx zjOAmaO<<*0N~8O+i@~3^DcxuOtgv_P5>MJIWv(QF>R{6d0q0hvbz`#JaeE$~Jko8C zqw_SqJw`IM?aCgGijT_4Pkcl4?cwR?ynK9f`{DKB{^2<;vkO4rRoz)CiEJP`?zpaN zlnC}EOeogPm0n$b;nEw$tCs|jQMyXb=g=i69xrj6_MB$zZ-E0zJXJhXRjcKw4VbQ1 zRt2B3@~~ISmd-@xQIaJ@$(M>$>ASup2Ki3j-5nl({h5#aTUyzN9H|7Yhk{8E0D;3Q z1?VnF)%h-BQrd@j`sTQQDq27fjUjMYZtE9+tE-FzYo^}~n$0+YT*KX~>HY1?FFD*h zE;;Z+=*xn-<{@x4M-v^8D`GvUyv<$p)FvhTguc!9rB*u1CsMPS+LtP*A0YaiLanA2 zgSf(yBmS5ZJ7Ekf83fa;!(k?)Xn0in4>+6DkeQ1Mdh@lZF}t4rg5gqYnF^(VEY#51 zNEjo(mdLFXFB2WW4+jXZfvMU@ef{Be zuX5tb32qdt8xJxL<+|vsyNKcxplibBB^EI}=iptKN>gylwGY?f=Ed|pO-L`O*kvl@ z-Vxif3i5iHl-JY}nj+R!?;mBlPe}?au+qUyYNkJ-k&?Dgjrl1YsoI*S)^SpkTPclr z!TZGwGC#*fnEje`;SN(#oi_G;EtDEbPqT1rCx9h73=Ey^N%vO((ypdAY8VRo*-2Ii zD1sY;8xnW^|BvXMLoWzHC0gjVRY~I5_`R_muan*GE`K0#zMOgU=FK#Iw#}Bo9gjf= zxAN~rPADBkx12;QmCM@qCx%i_rZZ5W60lTiM`aPdPJO6sR!h0FnY3tYbp5VY+xwge zM`dJ1SzsJav`K^IGQ_@gQbYPff$7${{^GHvf_|k={Dqu&S&^0j=4uz#F9C-?k9uE)XvchI`z9C92rGRyWAzM{eRUb9THpLn$l5V? z{?riJr3$Eg^H$O=XvgbLt&UhcmkPWr;rtP+rQP$EIJml6bpXd7j^@pu<-)v)7NV4W zUA`4d%`)PiX8AV$q4{($50Gtcni#B@yZhnt>H62U|8e)H(-3Yrr{-E^d3K%X6&2OP z;%&`l*x~#3^H!PC)`tA1TcF?UBLqQKKl>ph8u9B1%mJ`T` zDy9BCTTbIvIHFm*3?fIv_Cxs3xMFa?QAi$D0st(D&Sw*3qmBLWy8ZI;;(GgZb<>CA z+}{74WSp}#0el6>6mab{$xep+O&@t#R&~hOfPc}Mhu*ckenf|2S}##KF@`4F?8g0( z!4@McM*vupdKe_ih+6T?7jXzkB%c}!QkzuUX2DK{0*Px97|l!Mk;aBri9zIVxWlWi`=iG6OXBw~{h zu}J5mgh|2ANP0mU56#F3D&H3b!*cz`_Al^-;itvsj6&B9HZprMOrWER3?ppp^r&Uj z5>7W!|;w%A3cHeH=T(u8xd~braxTr$=jb>wJ&=PwNI)L81qt zv!M!m7n+pe=nzkZl%sICa9x|WyZrvU?^$FMqpes3Wda5_;d>d8UWI4sU>$1Hhb?oo zoZkfFOBYIwP|=N6ltr}Jbh>PRH&U>$@urV)syH^mIZ5lZ1*Q+plrQN2|4ci5=wpEC5MZG3 zMN+-HT3L?cq=EDim;{gQk&e!uiyf|siP6=<0Z)SI$t1*my6RJTuRV)(+yppF$*ZBv zE$5;4;;{S*srRG{EO#1~q8EJMdNGL1ffE^76$|s1yA3xO8b}QxCdl z_IJvD`(enyuGEjVcMXov+oY-9B(D#bd#)kpp0n4(he4*ho!_5_%fzg@G}a^)qjp%KiBuXF%af03LH2#T{-w-D>!jV zaF$zl#OyS}(Bq5yN7Kcrt+e^a2LFP9SDMQvn-NE>V{ir8!CJ3=-rjfHt;N0Dd70r( zJqQVF&mtfRCG}%BNqb}j-vN-TW%=ckZ5_0LZIQobg$q>yu)3T-SN>sJAyA?0bmlq` zDO;itH(t}e=L3+v7E ziw`&V+s(F~appDJ8EfY`a!~Ak*dv7Y#*godZ>x*%>!+K?sxZXrV>(R6gK**p2hV4F za^%e@=*F6MvsJ(Uyx1t&4s){?R5Ua2}y-FB=f+s7Nm@l#alI%dmm`uowuM+vF(&Hg> zsopnn)w%xK&`cvlsXGaTnBb4Qypm8LCeV^7raNcE-c<-%ruVEFM@smeQ3WN>G!9D8 z*UM1C{6|~gRbht5zB-^drS(ABBxdGacYy4Ws3AHWzu(dMMFNHR21Sb}!v-f==oaC7 z)8TE4kDgTDtmE*Qe1bueR5eBUi}>24$dBX*q|p$?=3|VGa~L5Rh^oh#nO<0f4alZt zUxJ|NRQM{|ji4m>2t?x*7?M-F6s-jW>^&)>l%ohvyn85+ ztNh$8BL&Ly@m_T&X~)J1-}fSiaU12(SO}8WJ;lO=A$~HnxH&#n1N;?$xNF&Q8VG`( zp78^r1hhiS9`Xl#0RR6NT;KwN)e4Ca?PkHAna15cGq&T{nazbultW_qIqs^it}=rN zB@8?3L67Bwt?MW`8PAGxUbOUI_j~SWh%2W^ulN>7x{DZ*HJ)%DYM7S4 z{O(k&Oj)YPF!l5@-dpjt2V+KEB~eN^V^c-M80ySU0z`ry14b-P1gYnC8K(9E7+90k zr;TO$*nD!TNSTBTim-l!Mus-%*qUG>KR6d)d9`oMl`w2!2l8vF%%>(j-A?!trTcHgG^p?aqFnaM#F^{P#@HJabceI1m;#>(X2&DTxDV)knNwP zP45CXgq^dkGuRO$?Rf64f3-GRf7so8x_{a~x4;@?AlOj7+t#(hZ~LRA(M+n23sBQU z_u*h7`^lOUk*|RC`VpdwnV(s6hF*lyO;b_XV_f%#Qad*#yuN!|mL7K7FF%hze%pt` zqb2=@At#eUM7m5ilNM8X=Qnlre%o{%e%(LUnw?>UZ6??emuN4>@{SoC7|kf4n5=jb zXDjjAZxr0#)ceP_{fhy*1h&XWLQN;sB-_^-98t!4_olhs)UA8^zHh4@Kcv`EmV9t6 z9y_J!{iQGkYAH!D;=YT4A|-q~JHQZ*xmBripQcoCc9#fi4p2-fE5NZ+ll1XfPUC|Q z5k!xYw9z;~i;_`Gg%0^1#R+P$E985Q&a)N^_S7yDi4F%l)lj@LbVK!jKGNwh+sc2u zgU<*1%h~$_QQqW{ubNV|U15dx=TDNckarE6$qc}Q9sgsU%_x&CZxoNR_DHD&Z>62V zS5g!xJk09}F$u0Hv!3d9*B8?~DqyHW)&@)oogAi*3W%WI zmS>S_|Ky({AxLoykuQX(hsd1YqajNf-6LzZ=^@-w_#Wr4z2Z)DLQ;OI&amIKz@BaiAu6(0~6Y0BP6O+cXS?ZO2Ji zX+bIj2?^N#|Nr0}UiPvV9?&EzgxDx*X<{F8E_R$Wbs~6KrEO{)<>K?5^IdFgv;uP| zP;%@{%6o*Fu*3f!VNVA2O>9d{T33-9DDicY^`KMt``mt+;JWX!f zBWtTg(|jFij-)ncJ0l-{$y@#yE2PbU=wT1sbzu9HMDml3k?*xnV0ydZFvJlAz#qZx ztRJ%{1L&ASn(nV!Cq~7gPBOD4b)E%#&Rn1ThS};QYxM5*z`e%<=-Ks5GWgF~7D;11 z*Ne^5*3;5(6vmb@eP2?8{+s*FaxeV+LE}l~>-clO@Qh#3=pPnFRt?O*7IY#~Y@Aw) zT!zhI4m$AC9t^WmjX{qA=0K@lK*~~cw*6_RKqt_A@~wVpUzjwB&pamQyWq?VA6s&+ zP%-!!pIV3M@ywD)Y<|zUq~pbiYR|Km9w0kgdivQBZTTc}F?Zo7KBF5hg*PhZuqV*pD) zw7-kZS?<8mtCgZiyb3SY#DJ2=#Ryuudfm`Gn6ZLks}kfcV0EZ4o)aX6zHc*enxug! z`xLXAkT#B>f#~dPAHv>15d175M&}BY5a&h^92Z#ZTC+JhQpj=9P6;dtJvHuThlz=2 z8)iN&QcUwUk5p_;9Fl^heazH?!WvfAYHcxo#}qtIa0XCmN{6aT%sa&zw7Uffjnqo* zPH_8Dziw9_R`B`T{^`&(wk?3ckO&>6vCOB2`pc-r6p+B#OeD}n+ekExp{8oLP?63u z{E!NxE5VVp(*4!dP_T`T4|8z2;2y6eUPtig2HCaVn)|ItY_vnIrL56c=^R-~v@!m7)}~jURYsY-gW|#W7N{yIEV~ zd3+Bogv!_;XagkTZDhtNb0S!nzV|VgW%=>3oS^L$l(3K;Pbx3kz9f^iOYu{cpCZHl ztK&eCf%0WNvk9C=5{`^>TN!syYdYD}6wl*P7USYTlR@fSzuO?%00*ku5s~LqE9?Q>kq!$RTFroGi(y9iC{1lNULGg#b9-SS+vcrhJR0 zEHevRp;PVW(K`;wzQ=Jp8iuH@ClYQ5B-em>r98|vsoL>UPe-?N9E5g&j24ws)R6yheE zBB4kkGS8FUp@GDMaY|7mx!>+U)Sxz->S|qI)@rV2;lgj8SKsfqD8%AuG}1Ev#sdqr z)jL~`PFMSP?|(I>F_!yM9x|jvARt;LBav*Q6yX_6Bu#5hYvEAah7u#KGjoCbn>&9AeMrUl6H>e7lCDmtWARyq+A%TO1NxdJbZW~ z#<{spmZtP76sw*@5Ixr*fK(2F^oqHJwE_cvCj8FGmGciyJQzDycKf7i?dk=*d%gTN z^B=COo92(=?lhs=Bj*;;+f?w8S^Pn{iO(a+nmFNH!_k;FVIJ|dmg?Du&x>+J=0%qZtw0Jv|dt@1UVgozWBe2tc86j z6gYZAG%JW{6+~GMtCWm_{CNP-Jt_PEmywN%`^R@nDTJfkKLJR)n%<~kDCpk-n^N4rrOn!11r%wBx9%e(xRa%3|?AerPA6DSk-)9iQeqV;5 z|9QINRP&N1DgjiC6Nq~R=371~y=YJy)EpJx=$vEPUd zwzx_{OC3@)9qN$Gl}@Y3SSYl`w4!5hXSPNFWCQNhp<85c>>awRIA(EnQZ*rRt%3_{ zEPf^nE4A3-@z>#00T)l;+UMrilV&&{1Ewo(yJ9BFuN{A$W$l{dttvI$N&#O7kg17Z z6I3x6W?EM)Fd${X%T&3MkC{c5)#;Temg@oa-xvRc0_M1G>bhvYT)4$5Wzq+jZ8tdp z4XT?^dnT`Cr6NcmIK;972EZY;3nnpBGrc~)QoS~3PQQJ5_37KshXIHv_C_J=sfkA) z2mjb3@`xM2V?XZv*l3TGykc|@jEkW)tBKr~a)kZs{ECku_RHzfu*SVSL3;Jtuq^IyA58Go6cT$?k)oN zq!K}dKT=pVf=Tj%iXpY(*)lw5hELBYn*rx-3unv&aR|Yf#=O2XZ!XSWT(p)Ru>p}W zY};7QhzOa*|C&SzzSvF5hl`NCegE~B`R@DY#%T1)4l3o@knGwtyeI0A;|-}B!s&RD zb;HRXsa=n)7!-f#l-!WWHz}-he@0=_r%5`9uos>3#~`WbG{ckx=yI8)H7$LJoRbPz zWdMz?&uNErJIO>Ss($WecA@L<4Zru3)7fzhGaD!7n4j?UC#C|2V@jQDHXR}F>=%JUUo3-QE zZ)V=SXZoA0Yj!h6SFt_DXR?(4!v}3MaNOgYo8*m^?9mB?I*bOB&N01O=BGzbzom zXO;IW9~Dv@&k%QWpgAZ~Jo*+cHwtoT;J%HpS@l)qU8mizA@ktbv6EeUYdjj;Yp?7N zq2a^yf>n8dZjTc=QvBL+v11CB_E~D zv@_6*Y@AUu@Yiwv*wL(ip8?f8p!|JIS3248@Iix+YLGfll*)SUeV3M+0VPU9g!gkc zoxXo|`ucjY-BtGw+xz8uQ$vP=pq2P?^UK_>0C0#%9gsO0KRJ;^07Y!}6s6EVSARZz zw;x_!T+WKGx657aK%}8GwgNc7mz63xmV(O~B?-VCS5cosDo_t3;?d)W6ph05 z-WYLS6alhZIEs>pun_07$ysSm3;JvLS?=7~%&4efPf%o{Z0!w*H_%{L$yeLBL7qJsL0F#OUWw%A4f|d43gbDJ`FLoZq9w zYgCVMstz~VRKoA+GeW>)!xBKA7yh+!Tf3_A#Z=oUok+YH^qo3L#AwCVKMF%3Bu3E; z<+h^%lZ8c;K$1B5Sy?F2Bb%vN;e`SlB&J0Y(F8LC9Sqcwi9|KcT=*;$F$5GS1&eih zqjY2(IcPddAKO74I8cr`FoMMe0SVwNCV=*}inRi56W5NKC!p`BPY6uXl>t;6A#0#n z;#$_>Kj;pmO5}W!K7?feRW67wgB9(fGeUe+v`V7~Zn#pX01K5QXDheg?X4@7 zp_o($SY4LHlrhGV#(Qe$z;Pdyep0_Gz`Ir;$vo_+=Xp^UlSx41`s17H@G_n)imUl7 zJpD;&!td~I{$6iG@VDF6(1nWZUyA~ocCuoUO9DtP3V(+6V<`HDeJ#yRExFl}o(}dC zPGz^7(Y$x5;mR%U)B7r6$@x}}P z|CJ~B1xN_-fF_V8Shuz;iEVr?Nu0#(`oJE$O0AtVKHoXt#b!?ld=&cLPd*$T?fKYX zx{D1{iPUv^Y-g#Ee6fS505nxHt$}-h-39eX>bOTY2Es-fre5{C`M)eORIiEJ(F`74 z<30j=+yEP$yCJ_sfv{S4l&B7??B6eWbPnCz!n7QO(SfQ$7_n#|MOH~{IAl%AvkZh0 z-6AbnlGA!ra7*m47@JKx-_ue!c_k#E*|+^KB(uy++ghqf3g#XzZ?Pc@oC%d{QxHtQtINb6j{q&S6 zabV|o*LR*accAvrawwr+vV<`&4S1hes+;0Vc@qroOljwC}m{6D6n)pF3r5q7mMSo%O{_| z-~7J+OTqHc)M)SE(S@)nH6^1%f+|(tuX=I5yj^cUe);+OVt##F8QW1I*qkM(Hm0<9 zqQKvzrJ5=JzYeJLR9z}iZ}-6rYw868T7wrSrLmSh;0=c6U|~`OVa{29MRdBi~Z+nnXA^v(CJ;aV?q{3fZiZL#_)<&mX69$bazC& zW7#y*(eI43p7?1lcmwPVNws@dpP*Bx5U0^l(=}M*Gbm!livYgRS_8M5XeIvftP4|; zc`5`T=no5QC^Kz~W2rn0){Zvrf#jd!%R!N0h7-JkmuvxU6ml7)3#6SuEK6?#ECJRu z4X-0e(e+trer?^{LeuzD6K>XV-C#=uf+!b2f(K%o2q5Z+h@fQFPTbdmYg5xIridYe zekve7Elk#MGR5GuO9U#O$pQ) zlZp9D#jG%;Y2v~vm7LLZn^E7;(Mz~r@hYq4!`qkjgMWW@c31gl%f;fP*lerCv8@`I z7v}nIeR?vx-#pAp`{!=^?$!CHukmZf8a^QUae;QWp-|v;}f#E+Fq^4#hxUkbv6w#~7qLXh(<_0#cnRhk8j%%L^k6p)SYh?> z`;5l<0;7FtI7O{WK=uSz+lOB6I#MvX1Vb+&4Zc+Wz>4>C3Mz5by)?tj`+>QCxiQA} zMxq1b@qF>QCn5)yd$zQ8nB`%>_Gi4|Gck%bj+#D+bZV zQ_9HkD)W2Lu2vJX#u<*!H)UZFtqmp=a9=E7mFrbm=c~i9J++`y)3)c`@ofL$mk-T$ zUADAGs-yV_v?(RR=-NuZeJ#YOv5dM7}-MHWQ&=p*_+{V_v zqo9zF$xIgNmeNPcv)O`5%V5DuP&dtVYPtwm{u6+@E7)-w2BIE2ag(;&Who#*r4>Tl zkoEv4{{MScix7pjaXfft9M?(HHswZDt*TV(CU#=KH-7U*UjPFWq7YS;&C5w>ExH$U;i_X?F6QTSMuk5zN3yWGW%NB=6#;x=rN9~X^ zyX3)sy!nQW4CsXFOK>%I^BSHMVognD8_hS|LZeV)VidN236N_F#2!8gR!7Al1FV_X zHap>#TIPsU+~oXr#Q^U@CLEX2(|VL!_L1)B7@h5e(Lgx%#(~+OhO3fdb$cCy%+kc4 zD(tT|H6?%j+#pWRK%LT!Q`8z)NuWA``Tx+vQ_isWm|PS`1doxLDIuWDsw!jXBmDn%-!v@-C%Yq#G6{{Oz)?TJADE7P=R*dv-c|H zQHa8Ye}U}+1Ng`^JI^m-gY6 zrPJ|(q?t%SbVcNr!|D6`W%aaq{bln|*Rz)GUr>+ae&ih+5aW-%|FdhTL6QI%QJe(W zRu^VzC7Cr-cP3G-Zn^ps7XTuJ2em0azg>LWEWUrd`?R(*-PN6CC6uEKPeOZbv{mOw zJHWhP`8fNyQvoNc0?Xn5Zjn?tSdZg^n8KpI6WO!7A!aqzDB5R~*fa7-=(1DBc~nW~ zA5~AuZ!Pc^rW=3~O&2ICk@Q3zRlwFUg3DqX)@(2o(wILQASF8&S~*ZF16xOX4B@lY z><@#=D&H8=b={SE+q$iDVJ4WD>ZKvO^Oyjju}~$lnu?OHc^gSlCI-ctO=wa;v0Q40 zS2gQXBw;#c1{|Yjo^cvViUhJF3U!_%(j?|Pr1>f2uAte;yS6zv*EkVa1h#6cl1yK0 zNy87(uzs-evW5vrLIi$Kev;(WzDErA_OdEl*ZkbWa#pngx3dmqJ~M{~>#8^${Qb;s z-JwuiwwSlZL4F{PSn?qdjHS5>Y-gVjZtJNeTRPf37rl5q(4|%nK5zj94>f}LlpuufusgxS zKl}GB5j;l7a)cXZDba~vSO|?uFvp^!#fWM$Ic$QlXTtv$2?QUI)Ta{F1We5HG|ouw z>=X+Cv%Y@Adf1d0BfE7-*)n3WU>ONTE)lZFrI{1g&S0`&N<33mpK19emWb!$+9~UL ziKz1z_;OYeaZdQ_d@X#zdvRoWv_$Ed5~9utPn}Neh#56|D|SQD{KA_oPCFN!COw|G z7o~QVQ%=_ssphobRG5=wOHYNTQNa~7F-x7dzSxXpZx7DZx7}-P>g)C8w#52eZ3t~J zB|uoku}b8B5xH=#mxu9S0q(8}EHGMlc-&Vl*~$fw2Qe7~b&W1;+0ki$%9H*v#u<-b zB<0$;kwTY)gqVHN>UZ0Vk2m@IO>ysGiz=Km{`q&8MVZ4#&Mzn>>zTB)f>&yfF6*e|9rP?glg~wh8 zB2zP9K+GxQZYF6S?KaQ0ncfRi3zH$W!IFv+ho(B^EBk{4s<31GMTjwvA)`GU3NaTG ze;H)(HjHNKv{_2x^LF%-UdnyfLdS@Q2hM-TJ0NAXpw8XZ>&fD z7lnMOstmzBTHsW*{cyW^`n4}hy?brmu2%$Z{3To*8@};Lh-*i@#F*?vxV0slAQ$yl zw35m)*Cp`Uf!hzxi75z)R_49(Eq00K?I6>g?Y97&o$F2;F%X44_IeYNh^9zXYJcw_8|9%pWI0io+iVM zDy#W+fjr5^9bA0qhnEw-A6|ElxW1~dS8%)iuzPy3;ik?5gIM_?1QH^*MV(76l4O(c zQuOEZepRZgve;F7re{!2k!jN$Y7IiUk37iK>7zN74x8 zqRB{6n!=Su;U!vCyMK-KLd}0JwJNIGEEjB-N6TPsduYfQue?|SQI`7K=gs%K=a!?D zBGJvG#2|%bo5s8}P#eSf$W*BJ^ytwnsMu-d80Mct`}M{Ed(F9tP9_Zh|7qYrXQ4!E zn19WpmXA+NM3TZ&pVsAeRgjZH$d)?Rs41pNSbb(B(B+GM!3sRsjs3&5(i=?%nU7FZ z#u!R;DlRla=bGgz9Yj{oF4%CX_l!O37rPUP`{58>BFv1DA!-YOXvj!Nh>V@oYmBF$ zW7u3ogL4wq$>fj6#4y2bRD7JV69_z|WrI5h49HVMnNF_Vh|0<5nUo6tww7op#>rP>o+!sD6py7sr&`r0ELz4WZnXNcT5PoNr`)gV z?Z@kzBBY{?%j9hUCBuivhIV_j>06pdN~<*l*C!5SkUqqHr*Ao zOd$4ULkn8s%o5^apgfg^0&ym`vq1{heFiCTQqj;H6i2_A*!eGl_8;yZGY9sHD!}Q z+Zu{=JB+;wZx-&hc4s1FHn0rFpUx6w6Gb40Z0T^!o#(y0v4rhU+yBE1{w*wy{%#Z} z!wMnBq5a6qc#8bydl-WVhVyC4aysi^RIM>AZKsg)6gHT5*c{b^&I5q6vfbXk9p3iP zwR2RcI#f9LF*Mc1`NL<*_AbHx9jEDHcgSCJ|Fk(ctdJrmp zkT+jSg^mtD2l=g2z7Bpz=1 zhprd*?4gi+*kwQd#P{3%Ws+Pc>dQL4yGcuHOC*YTt;kDKs=bBU2~E){|H*#3O7A`& zf8Osx@Dq76GEX4#71UQ*;lKU*i!LHnsUu9MMVA@0e4#W=AserNz}{pNJtecO1dwnM z8>qQsBz4H=ta#j3zc>4Mp`3L{XXcbC?Dp4giwdy~EW~SBU1RDH{)-V*WiB?ZWvnBw0`tGQ(dJfUF zSWRkOeNus14fPT0x}+y9 zl$}g4YcqxG>(@|uJWm6b?wBT~w$Xt@!SO_;-FHjp=F()O zQ=cr_+-p_z4qn_&keM}1BV6s^{oOA*ve&W#-b_G&B3JHeir$)0o@4SU}We-jsR^M;*lr>QAi z_ru|oXr8agdYKm`UNInpL_0N>yJ|tF4$9FZI~Lg z@#{v2v4s#-O*TxNmusGca>7Ju)a93i51<(dFK?o-FQJ*}iWeKyb1Z zVVs!NqzVJa)`y#&#?YAqaiVilrP=QpV}PiEl7rNsNf8v02V6Yj6NAzPw}7D_A7~yK z6Aew^L$YdOO*|Xa61U!MJF!yWfB!g{=3%?K26v}G1%9l$J4^`_I_6q>^}vWi{&7VkNSZ6x@}uWNW1E z*RS7Gc?1&`sc#WcoSDEN+f|SRsi)b*A==Z$Zk*UxsFrtjD_)7Ka_U8VJ6Evz-0b60 z&!m?%%&)f;4T2G~o}2;`uZL)?!_$-^R)H_!D;SV)f$&UUh@rxh2;@%_arAQluy@&I z0!HWoK1XxIL=Sa)AyS?)O@|rW`L0SDglLk2-*ac*6N+8;ZtUMGV{D|~@%GP09+#VB zjnRnD_aRT3M+VhSOizVke9%CijcAY$zE8#=n-7Dt{*_DYncu|N@BW{?sp#@g@%J@| z{06+8f#`h_l`D@XBl-Wmiu@x206(v6T$~zwyo7bZs=AVG4#wrfJ)P$VV7}W2&8o(V zU3v3pN_ihl;ZonR)D=9YG~%4x?+*D$tr;ZW=Srq-i9W*#?m3BSRe-npd!Y~0DI}xv zeb(9RY;3SKlq%4M=)N-8JsN+m3X(}7FHX!5m<>R`yj^^HzgZ&hyH!wZ){E`3ezlPo zI(`HT2`I3;sRYRWm{_g{pap! z-zZNePCuga6~S361h{#J1ebtY5$?@=e3P6u4uT;qJ;vHy**xxxAHVm%j&Nw&0$l5< z6H3R6Lr`C!i6WF-Qf!3xSk(X_@i;97sQ+k}ypY&CX)_y}v0x7+k}Fh!@+wGLIB2ty z`onb65M93m8_o&`3Zwoz;ck(O55mC{k%BFV<15{vz| zlyn4bATQ_WeT`fk$Ehj8=P9^UUuG zA6_c4lrR(c7wq1uNX~FB;ibl}Rdexi#-Fe?m8}Z-?N}L`O(^sEq4>I8b~YiCxNU9X zwotm(HWRUduc-`dXT?+=kj+RS+K$DAc3@5@=Z<-y zV!~Ija2=h1pr|3_L}BkK%5<7mo9={!886XexAjC$XY;bCF=gOUOOUG3;Ho^{6ju{< z$S%)LbS98bW#?AdUDTOfW8SUjkAKQSh}l%>PVA~?y;wdU_a_YpZRge^zAw0T68+8} zIC1k0)HQJYd)C(^9mJCaM~S=#q^zqnxWYlCvy^y+ULeak4f3x5tesnK+b|GC#i8U! z8lw#gBp>}Q+Wl{%3+MuZ28mHLu@O7ggJd}mQj{e+Hd=rP93zosN}}$J?wo;K0Tyit zPTpYR#7!9}g*3zcn<>)f>%c03z~WL$Mm2ZrxShlo!?_M@?o^lyn z>#{lEDWZZCEF)kqf_x@823S**sj}aT*A2tn8FE9P;66LA>*X_ zeeSbISus7%%n5$U^8QF+Lny>h?wDeck}KmF1Q@QjLJki1glcy=+H`Rle#_kiLk& z9*yxfPqSqvt3isB6rh+3KgU0LT#gw(G(t?z@birKc6_V{oxEI{geN*A#{(QQguIF* zh?R)2i77(OqAe<5OymOP=LYd4Q}8S$^)*uTmI}V#efoC$aiK~BP@+g{uPXR@d+oJp zM_nnkG|({O$fP@+7j-43c&*pQcdO-x`OLpxDcCjYd0YDr@k;AyyJPRq7)Sy`T;r4zW)=}BKqaJLKe`TELg|N1^W*-{uNRbvXedT# zOs6@aNiCD`{)UQLEI;g0A!-lCI<3@aYVx+D-koD^m?}OAc+z3+-2Z`TvBRrZ^Jdeb z97E1{XZB5pxNT=JGp?i)?C=1AYnwi;zj9%s?S(B&84%23lfd-GA=ljjD0co zw=JF;^uN41bZuXku&z~Aq08&bLf`K?uVq)IULV?xF>}9Doj=~HvHlqO2}6da|E339 z%)nryD0HQiH&un@z*Kk3vXhp9-j~4{bLu5W4@3Y|fch)aEK+N2u)07|ya#lN%}}qS zT2x+NV*rE?7TUUP+K!99D?h*fv|p5ZrlF)_0xegq6RpZ#69T+ADN}yf)~#)!EZ^#4 zzVtuM=hbZe{C0D-tdY&65B1)^^SIevSBu6XskEcZ2+dz$W4b0Sba5fg&X`EK@cCgK zHOvYtP+W})Rb+7#l7)B2sJ zT2(?2K>~@rm+oBFUK7WmNIW1##Ia*MXJ*dD9Ls%F&Ki}GJS}^m6rpA^(ac~;22?7q z$+ANX<4hQ=sf)U!U{V4*hjE99;bHs-!_--wMJ*@Gk2-6JG4Vz8bmK|LuAp>*>6tSy zf#&&|=X(bFY-Pdoxj&_)RMur?8BELr4}|NUvg`CHMr2TW_l@!7)sEQ|RYgqO>s_ViPlbg{JSrhn^zvh+&O5)aEsJ(LSgt_VBDF>alhi=BPMWcs=A+m~Fdy zp)GCT@*PEj`I#GaW-WEPe>=(Qo_Z-3e3e*&=@|jy2Z$&|lB=5E!WCEXEcN5K*@l9f z2t%-y`j2t==%6BGk0nc7-am#xVU2St*8Hj77IQu*>RpCjXHok{dy>(n<21z!-p7o8 z(|E*puR$b}RiAI(MujKGyUz3C&c1Ytz4K<6G8w{Jh6g)laEE4`nB+~qBk2IRvDekkb^8!5)1O4YZs6v6@$llF+O8pMOQMbh-?;=p z>#DZc5#b|!>*9~c?dN5UxRWxRNO{@?8I6sSiA5#AF`0+}k-?uXb?n7lvY8(Pme@sa5-(&6; zgAmUYe!zW7N7vk79<0(Ag0HRpvuW?v&EKcjTeDcNjF6Qgroa*z#*Z3m zCD@0Z__J|a&sS&Vu_&X(byxnCbsx?%AWsFQW}S|B#3PWpoA)jBJo_gAW!JXcGz>%~ zS#~aMX-i>%;Q`)w;{QK`2Y!K}FhdK4wux<7LT7iSD7KTrG!L1iu@hZZdpUc~jE}!l zq>pn`Sq8YJoNA$Xq;v6BA2_h`5*tzq69hjX{`XGN146<@QnM`6&pMO>|K}K#b(JMu zN*D1d*<7G4=IBSpEFWVD5^f^g7g!n5J5ZP`ae5ApOm;s?L77zAFbVg<=MK&5uq&60 zWPLc!g0-MQi^CP1cRjFM-kG>Jp+(jQ8o=a=v(BA|-;d4XcyK)R6_p8QX=KLXGE7~} zl!RuFM~EW}4Fbigl>z1-NHlcLxE_z(aH02je8m(_&v*(fgoMcGtR%HVf(i%D$ZOAN zOY>xd#BA1WLbDBJ2sOm9jlp^AU5n>F{-O>)ieA?+eJ)6OK~1TU=7l-c)2NjhcV}{` z{KKaN@H^=9{wkejF^`lT<`R>7lFSaeAf^@NEy^PmrGSbPMn^@^IAwwSx02QC6BzP| zUhuhZ&UuftSuk<9X5cIcSq3O34$k)-;?F=cxJ%3*^M-Z75=E>h&~fsMK@{vYAVyeL`hJU}dhOPYem{u>qYJ-GVfJAKd1f6MB_>x;(1ZSa5=!pTW{7N`W^iG3G``|7N@ zT3b|VNqOGF8?(P2w|ASK8)`%EK7HBTZM%49N5nXKuv{@D&OV4-O6nc39BPInpBm5g zf{K5^2=^m*>x_NCV5q*CwJ`t7NH(Ev}sv^C*=5Oc9~ zE(2adlA2;1K!IXlATl*Srox-NMkF(uEBl%dAv9PtLFf~RYbgX4EhT~@r>8>i_FQ6p@ z&eJ56OAQ24xL3JmKye=}a}2zML+IsTUTHoM2oYZs2a_f~OX^-#edo}_>jqKquAmCr zENn&6xMHDcOxb<(LW>cEcd|-|sdr z&sGoH_RaJ4#nO^&D$q5R+R->>Mu1STReRGLXTNo*q~5O8UjZ09m)$suC=A!>OQt;;dq$Q`z!6GVV8J36vSI--tk^)Z$R;a4 z2WuXI4UfPQ@c>9BL2MvSFiPx5Bq$Ih56HwGyXVrED(ak5RbB1r8Iw&mGw$iGnyGX7 z|L@c^?#l2}SyN=7kYM<3!qv7bc|MKborMm$zW&y&jT_h2FZUMPe2qtY&v%|a|Mt5d z506t5D{`wO2yDl{ibnji#6!N|T5o=O^U@ouuH62`S6>T<;zhSdC~VTN)Qp2|8WUkd zL@?hJ3-g!>9tP)H6W(OI>DPyjRaC{}?jtGRV!CnT-J9>dBV3tKxVAp-n4{x#>!-)R zJpEmeqeao+h|907Y<{-k60-Z-yIT()Q|Z_gEzsY=sy*RxzQLD~OP4H@nhO{HqwDMU zws)-|gM&i6-sUIo-~Qlgx3j<>?E8m%_qO-89zHQ?9!<(9i8%$r)3hr?Avsk%t7d?E z08zf%z*$>2pwH}|=(LN72Qk@>`#(^8wG1y?i7{-R!XZ8R-R2b9zJQRUBWFfGuAoO2%7 zbcWQe#=7ymP+|sGzJc{#AJuv0j9%s4tTXtYayp-WCQTOGS#6>@c3Wp&`u`3nF+DU* zTG_h$$yTarx!Uar{@$>)m}(tSwE;8`zM%LOxEzV(ID{g`R0AgoHyE8E$F9P*RLKYk z`v)g$OGzt^3Lvlz$`??I+lt~i3et?u8lW;^zyfTYw!%_7y3mdPIx1gZT8P3(5^sgX z4dgNu;xH|fs2FDI*}-uCaM(g=Z^u@E{#h$+TPK&-Y!A;n-K`ZC~IOH2g} zZLhMFRYu68p{R&ovVJCD#v^URqGV`4Rc3KvQGp!dLIl!Olz=EJQf~>pfyxlm!5ry^ z;wV!GVSO_Qx~LetT3ygwMPcG~GE z*9ie?no1Q#D$5JKND)3Um=yVi-on4f+4)uy#xl}>dCYTSLE2e2#%xd$jk1Ff0zpAFX$CF)v2P5Bz*?`0p3^fG=Ax@AR?#?!UkOasBT7VZC!`WF7~~ z4;B}C!*FvOVio-`hCB2V+p%%gFGqF{ZCqX2e$aGV7gX$Tp<6{B}+f-nJK9*f896%MSN1DLy8aJkF?Jf>Pr>2%*Kh$)($-u*2ia>zli> z&50on6Xn|ZBo`n=!Cto;s-wdcmvq(xRw2m)o!}!+3zUpr?gwr6R{dJ?>A+9lZP~wV z-NEzMM#kzmG=sHNH!9an0Q5I!G=Er+fhmbK0j7hMzC$}V9R7CGpSK@8dNv|);6~}b zt!uwov(%l##T$3A2d|4+j-3JnDs$Ck8?NRSM$!T{j3Ah*h?bLHX!3wY#j@&SfiY5i z+{fgsAXwdyGqc6>(Ak53dTT^>fCOgEI`CgknDu{8soN1`cj*Ayo!$Gv&*#QM90dEI zohU5vkceunJT(7x~I$0gO8wtk1G-l$ia$bIW#A2a~Oot=tK2I?!07#mfdcL zUuJ--FlGpOA15Vs^{5Cmqf}@)9KhdG@-9(1sJa$Brlx;|xf-hWN$-@X$M@2U8i~iLHRnB&eT!{(BT$QM(UAF(&;bfg!B6Nt5)*5B~&E_ zGY_?S%UH$%$pD%!NEXAY(TYA+Dv}aIj;+v>dd`i1xG=&lD!JE|MM!Ee`Ke+0n$U_= zBkV@vu$3FAr=*_PhDy$92$p70HpFSFM+2k;1T;O?2-QshcP(wZoaj4|8pi}iEnGzX zUK+64CzZ99_2?;3@QiOy=pAH%%S`^v{(a_VNNcks#%6|YI1(ZNT0TKul z3P4dp65(^4aJFxE<_-IP%>K%qtz6;C_U`S>zWLsJ-}}C7Fom|x+Y*dx)Z^v0EV!87 zu`auNwt4Qyy<7FqbwP8sx$(u#PaYjU`Rd#6wWi7iQ|S*eE64Vzt38mh>JUP1h(|QZ zaZVEsjB@g71uCi{tT;2P)F5Oj)^N{ulhT-jE03i`s8Cp**k%ovScG^b%FsN}Cn9CPl{Pg-e zA0%iViOUo;)&aip+A9OpE}uW|KB$8_Wd-O|HjCQ@Oqo#npkz@>tm?ZprCMy;%&{0# zWed~NCqHY+@G&%S7?NNie<>KEc7B^!{rH*1zb{?b-uvvv-q+vVxb-E;vescOMpY^2 zxGPPt#B0)ApFyW1aW2kbqP!HmF`Cpj>;e6y3W50sHOPT9fC`jAE;(WhNOzU1blxPI;Ghu5xdO$#342#nbOIIN%#h~xdOwGywxvm@zKuyUg}0%w8gm2IEX$3oUpZHM-VHg`? zy{t>>bF!(htzwPs;;ZLpm$tWl_~ZUb6`V_~W&l+{s=qnx9hjuzu3B@1H;s?(-u!5{ zM$i+2Rt`tE9~}O2_h6h8al%vR@knJtk}`TfVo=Qm(uJS{7zj4x_f zAI-$N-wzhI_y5bB&8#HGmg>0-1uZJjDvI%yi(9V9a*S7Yr$66WP)wwf4hx&G7CZu# zZL`RX4Ynh)qL-`+BZ64zoH)Yp+r7p9iFbnXJ40NSlk<=cQ>(;GoQ?BIo_Q9WS(Y$A zF`FZJ>AB)u=8r%c|0KFNo7!=nIW7mHI?saG=!guuslnQs!#1#ZH#80Rm}*WO-W{7d zdDJ>x;CrKQs>3M%IckY-@^`E8$jI%T$x) zkyk;qYCs8%5u?=}L_0#jGCiQgWf|oms*FTVx*&mX7Op{lsGgl4<4*^EXBwU_?4y&C z<5!&tmi3mYbGG9u_z5$Uctp62CI>rW(t_0~$u&A3#l`2>l1qC0qLQT@!-b`lZoX_(;&LhcK>|KQs{P`(KYn@X%5-n?=4&rc z_jl9t=iWQ}*%#l42YfO)kgPi&Yfv9Sh$IWp8@BPXyK|PAOuFa>G*M_6%SRQ*wK{4u z3;V-ZB@Eotkio}on4FAZ&8Gi`Du^yBS3u14=GB{llsu-^{}Yqr*64$?ufO&Fxfs{I z$sd*=XC%2NUE8EMMzdq^2kkg2;7G#{#Bk8lJ~CDd3|3EYV37yFYO<067eB zqO#;&r9$ydG5m3-+%tqWxN#8A(>M}j5d+>9~s*!ZO>Go1L<1|x~;j{e`_ZOo`GQv`sV4E-OFGQ#{g07uK5q!-_JH$4_o5eK|Wpt$TLL> z*0?G6jqKm75}uB|!pI{k1AThjZ9w~ib{boy8{{`XtW ziOF8?)a76Px_PG^k9a%labqWlR|!b(3>n^3$n6a`th?2^W@aDWZ~M?Hpbpge%FdVm z@20OU7mHobyh>v2AmLfpp2!kUAKiUqFBBiT^>A!@WPaPtmff-^{56!O=mCf;GDWTH zku^u}zwi3uu)!f1@e3(z$LKyZ79PP=_-)aK`mbj0AA6CZi-*j>NZ}U;9b}_||zedwn; zTqVN~cJn~rI6%9_N~tE4-=1mWX13}cuc}pRoLbd-jGEH$IqL8-5>T}7N5)N*UQ%Zl z&PsRUQfW+_l=22-*asExS97H1>&dLt`8d3_wDlM{af3~bs&rl3R;}25$MwE%5&y3| z&a7;O7qbm@J!*{6vj>Dt#F#fQ_QM`CoTwT;#j5F)YxZ_VZ4Zmpa%@JIuFbB`?uP5BoM;7TtJkYg02j0fl>LS5#pO3ruV86Y(S#sD)p}bj9ocvR8bVZ+hk@EO^BjFMFVQU6fTICieM|) z+G=etR)QA(080z8&`K@D!p1@bD-i?>3wJOEO+wT-Gro5h?^*7BZ)UP}GrU>fa^H8( z`4&UAtch^HN@I`iK#qH3HKI*Lv6q?96Ca;HbF$9sID7F5bYz3Sb@##hXZNel@t&z; zvj^Y2`@r=_5E-o0tlS*iGUk4gOr|mY15#!xOCr`WTLbRajuPl9<*US~T>hM-^Gl#7 zeNLZ~ck8WK% zdgwsjbo#_$s-wjqa1R`#OiM4d3_MC{ShJzBO;DX@vPw^y1;n(6^u$=JzVZ6)hp{A+ zfks1;hZ`IgonUjaoxuu9p#TN6nBSEH1%lVM1U%s`|H4CIt7+(x9BtWR`EQ&kSjXRG~-(-Z+ z{0m7_RAmvfg&C%tczmPJ9Rm6mPy*4Ih1C?ECVQS|N+R@m<3N8K5+9XfHkU}}T)*eZ zhB?7&Ikya3pswSHvLR$&-?&}YhgV`SOm7v#mh@NG|5DrWqd-N(kfvKZ*&?8 zWlVX(`U%>J-xgQ4jmq~6z3+btw9zowz*U&Oqwz$wD0>6O^9bZC0Zm1L{xD)^H@DpT zvb3^uYkRz@BOaUY7M%#wNb-wOoS+s(H~0umTqq;ZnVA}$8rR?w4l(wiBc0u|rL^kP z!rzZeJ$P<}5qh*COY6IZZH~0|Z{IqzqunX&&)@cAgwpZ1c!0$Q4cEbhzJb5k!9wC` z)JFM9iXW(4{0PVo8gCmAng$bh>ilvq?$LddWAVR?woTW+Len_=qMFnSR41{{k>}tualVVfb8n3e-{{I0dQ{FifC~ zf?`mo)XRj8n;{G{-2_FKEOT43s4>g78d}W6n^QzXF-#|;;AJ|mpj^i0 zfC?5AF9j;l_FVQ|&N&p(DnCfu^Yxt5?|eOd-sgSZ=T(r1l*OIiNMT$*5fr_Ptl&gv zu8HOt_^DWmDsjWcISCDa-2fxHdivIV@x4wvRrVK=;W2n)P=LB%`CB=QQzF8q=)$IW z684RMckDiV(rSAkkg|)R@La+Nhv(p+g}G^9SH|RcyrHSRqyFmcJ>^whw);|E0xq!~ zo7WmDY;2u zz!a$QFUVe$ZA_N+_u!lx+dIsbD`jTOSd2j->`us>B_)AQ>P1{u*S-72r9W5hHhG3U zFZ808WO3k&n>t%xn6(7pe&ehddAqf@zwsZdx#3#bsRlg#h1te}%v3}4bkE(??lZx9 z;`Yu%X3Nga>pU+COqhKBfqf|VP_?DZ{0C+hQfI{$W~PDz=|Y0R0J~$j;bwdFxf_RT zE{Y05D2SpHW`yndWQDw+O{FIiqe4qIyc?)i-TJqC)1F_?H{D5iJ-lQ?zT9bQb7`gB z;rMEGM$Q65fLb-+7&c#M{I=|rweJylTC!n9&Vs}Mwcmha#C)-7%iaq6;8W567v^sj zs8uzlbZLC6o(LX(Idkd!^=5EC+kWum$1C31{^?2&&CKM5NwMc|wu+IYKx_PztJ3FX z%+tRaABD%Y#89HAdfyWO#9RcHiyWD)V z_KG0W?E?MH`keTvFgZBPGwml(WlnsQws>8(OygD5Hy*9K2F|v)C`%s|hQVfYSMRoi zHTjDS>oe!;Bf(CHmQLG&>I+~bc>H#Xe&c(~q}O|Q9;-clxkYR`M2C^Y`+e4`<4 zcJ$oXaD1LU{dTaEGgn$G>aG)_^A8M!OlvaYB0}(awp#m&%TA{yN9Uy`rq78*?|M>U zxv}e5EnbWINbT0OS<_w%@|^IkYqAC$OTd8qExQC{8>|hPT$H^qE+Q;WH&vq&qr}0d zqpjB7vsc@W*IyrkGDJvb9WfPY#)px4#-xDNLZE(zfJf0?Umt8Hid6fv{84iA;;jeeiJ>gYe@1->MnFNU7@#Fg( zSwDj8sBI905xQWt0@`-){yxfJmC|M(p~o7MVk26~v_cfH@vzhohUDxp%Utbx#Il4E z+}ucHhecq95vs8vG809K97>Txf|3y^H`Jda4@H5$``Fd<#2FK+nXIC1kDUOk`7k)x zU~nZMF4g1-4uH|{KtHX&T7bSePMdgB$Y1%kQspZw!u+1&#HYD$bYvn~Ojp}kK9MOYm z=zcUx1d)M$Fr09*FiSS%bgO7#kaZG*5`Y*dN8NWobp$}u45?6H=7GZ5XJipCc26R) zvjc?>FWm7jXd{ zkrw$uky}A(d}7R)4~a!MypoU}g+~e&9=F=XgcXOnmf}i&N({3(sVS6P<;e5c;0Mk+ zY~YHzlpv}NRo$XuSagn@O98cnF4(76AclB_(?v{DLAevl6RuIV-^GGBq}ws#b`yRy z4lN)kC#AksG;|K-Xfa_xN%BaHC&$<=)UE)2NRH(gs3?-?WD0B@nyI{ba_V}p$bTbqz-0=C3NO|Yr)l^7*a)0nh>EYSr2G^R~_MbaX# zh1s1u-gEBE?Ch+NZtjoW**m+lckax7=brETj%);fJP#djNNh2B6s&$In`-$PE(FUL z1GvvzJhQO0{Qb4rAFki{?)vQ1m9L3laS_KSzWm&oi*MMVp{ZwOt-Gzcxo2p0?j{~e zV&2v$0ZN3LiU(#cy=i0EGa$~|vqwVjd~oHtGwlJ2(M*6o+izSR5j*wm-rnDqApO?4Bm_1nI;7=sY@nJgY?9~|XgI;fpS z4x=brf{=~>9r4#CY6i3oL{Xxiv(-k9b)Gujnb?P&9o9m@osG5Sy|0eLmYglY9ToPG zH%8_&&$ZyrO53|NWj@Ra{LHVEiC6l%_cg}xc~ae>UA3%@91T4+e2#?*z#E~|>v9BZ zVyv43^_3$%`}p(i+lp9ZMQOzAPHudt%ViD7j9l0E5aZD1Xq8J(OS?YC@q zb?ph%++WZ-_!gUTK(v&wa-OJHnbNozS7!w#isN((gYnDX_8r{46~hnyc(k_s>Q8fA zgHc_Y|M}QS@YS(As!I!4JKh##*!{%|(+1rO{(m}JcAS2Czb#+kO>yn5uV(F7Xjf?H z{NljJZEC2BZU6C?o4CNNR{CGXKhcN|KMY_y`xi$t6?5v z__t;UO!X(5X-8UmpJ=e`m2u)wbK!kyC(nP(UV5Bzz+Yk;Z$E|*I?03xt%2&XfsV8k zm#rH+9=0!QEGjsB>fNPqm=N}9K3liK>_)< z6d@55y~$WsgA+sGvlf=ulEBzmb~(6x69DI>uzKV6-8`>jF&vd8tbz(-A3>CiAO+05 z#Vx6>((Dxc24I)-TxzyA+3SKe=JFiRwoLV_U*~_D2XB-#wF*Uq(S*4_!z9;}=aCh3xBP2q?bbp>U#}+-6*)uHfCiWmwWvOk6VGii(bP~h%s+`y zjoh$Ru&CcOqjo*df1*2#18gQmA(hP^5%@4sB#lHV7t;w5RST;;+bbay2av}T{h)f1 zL^Co+Yj|TJMNb%rgqRlTKsZr(F;0FODEf#(X@BgC1yFeEys5#lpa>|&kfSJIpaWD{4^>t>< z^T2wfE=@qLC}*_lf>l-HUi7F86uIY-2$^OcpF)3!C`CohA<2rMQ2ZBV=Z&HE2vyxs zf=Oi4RF=ggcap;)tz*^~sJAh#8P&CKddXq95S=jjpp+R!2tX0w^L$Q}2uV0@5@;g8 z{YHXHx&q2kL3a%pKT3#kQKNx1YH}$xbwV1ak_tw|g6AD2Q@YYzpq%{_zZ#;6F=aGf z=@xUy7;#$^?Fn0s-TxDSvFi(s;t1nAvnM8kRxxOx8o>m#AyzO3{8Kb-1*Iw)XeoVp8h?F9eCyv^vJp{O2_j(@o57@tO?flP<)M1uIbe!wgR^GgLb{1W1>!F5| zEnhjPG!JY(jI(`Xjg8vPNVYZGsNMeDBx`QlP<{26_B>|){hlH0?(6d7+OHkZuN4ga z?4wl9qPkc(uUJ=Kx4!joL$bX&k41B@hiDIMX5WXfx`?6nhyM(9b@yo_PBohL);I0h zuJ|x>FtV71-g@D5OANK=*9m1ee(zYauvE=m`YfL^VNiQGI&XD9O}#Xb*NmT@O)MPcmrqkr>oc~ymk9d=#S%Fg7E zG1P94?+<+1cIXS>R47mJU3F`IYi*37c6-#UUh&ttR&6~Lk84s)4k3WZA>v>S6bSa3 z*;2FGM(q))>AMCSwVQF~+x@6NmVRzib;X~@589~xPVd0*=(zcJb4}%ij;6@4-&!!$ ztCriS-HgW1>ONe$C{W(&{;VBSbz@_wedN`|-M+yQIKD7I|J0Ga(pMMozV$e>cs;yn z)vL;{oQ$J(dwjF|lOGyC2gbabrrjX;sA8Fo+RgZ~zBZg@_~iiqgdf23(hfh;Zi1L3 zJ=>XouAG+qNy-RGu$V-(Sf|-w*_b_LJaVCUgT^qyvl5*P8}#;7MN(x%$$;`)+^dn)EBxng zGAax{;Xa?r^rt4mHKP({P_x6J9S!Ex2<8~+^8x)!l=3mq-+_^ZOBqnazjTDj8Us8N zJRX00XK?K9;P|cn*S*6NLt|;-DQ2@Tg5g*1ya34Y#(4r8)snJIrn9-JcRt#_py$it z(s|1lhUJF*U_qj?th9W|g4z{}OXjhR=MRjgQ*Wlj3!d`)7ip2ritrk;IZvTjtjZjd z<^+;E#g_=TW!F(Am4Zc1Pvj+r7AzcW`NBdW>xq&7yx!EbFL;9SbWZe*zI~a_g>%VC z=TR!dm4FmocU^D^l%z2w{Zqu936P5i1p@gVkhd2LC=y)iH>@V0BN-I$4o(5_qN^mE zT){jjLf~Zsq#TsJg)q+Ln75+deZny2p@AA;UmpP(U@kJcAY~LhckOe_e8Gr)%QS03 zH?$d#Tycmt8PNK6QHh||lt7Ig1X}okdEr3Em_Z%k`QpKg>F#IgC*zsaWOmZam8$l> zIw=rH-EbR+w}RL^GtgbEab~;a+1zfm+m@4kRVLbOVxcD0Z1kU3+Ex=yH)0 zf!b4juI-XI_)wOVxbx>HSRw%`GHioD-VR09KyVPlLw2CJf@I5;B>W1?0gTY**rgB9 zJyjrA9$fy>5miO2a$CO03|i)zXia|nVCYWX{w}2$3^&pErBCMxxUP_=?eDlHZzkf;>2O4AF1ng?rX)i&B7mRQ;< z4Y3x)+MrOXv8XRC77RY9P_UvFw0TItu0pJ?*=>@V%ckzS-KNdfWUtL!JpcLsIeT_y zL&-3N2L8RBm+e@|M;IR`u-}lW+in8>M-L21!p8gWhFp+25 zw=BL<0m{h8#Qjgb+Pr;V%#zpwZB`@$6Y@U0#Cy2R1*U9X$39H<6cSi_3?KSw51d)s?Q z8(-SLcE`b{7d!RqS2sQ&<}jH|_YFjKOfPMZm}nH8T%FB}&+*h$r5Ojxz5(rC-Eer%Rz@0@mVc%FXNM+JQ=fcwN@ZqwE)d=J|1s?U z;eVq2?2!1YH$L95+;Jtn+%$1pJstD>>*^{w{6ae8i5?*J!3R4x>!!jFXa0J2Z};nm zzR)Mox$S947Lu9YU9VM;d!7mpwsah6+1vf&FA)v9FWs_!m5eZQpKs5gJLVH`kx10? zKM2wB#6RgP{^do-65_0MX4eU`LB6uB?p>Qz`%JF5;mso(-~Q~;?FYU&{hN;6pKpE` zGidd35$?yvldzg@qY2Fnz%(Aw7#0Q+V=L?LJ~#2N`sze~Wc99( zw;cHVvGzlWOBsCvup8RuuhCKcdI0*DGNLg&`1fqSXlN=?x|dWeQ&@?*aq{!P&-hBRnOs3N?%A{socHp29r+>L7vr9rNP0S7|Hw-0Un)Q;)L#9$UQl3kVJ37X$&4TM zsuu3$1@dBL<)Eori>ZfU{kVKS<*kKP%2vykxh`L%S4Yox6ZDOH}C1u#K{el-hZzFb<#w;dC-G zP=f%3a7@6ZkK6wRC3eO5|eh z{8S;6a~27hZ6lMqtR-Yni-N`sNKjc$T}@!gt+g^chRE_{V3ge3VyXc)Cm@%A_W?dv z0{$|XXOOe}H7hn%m@e4y={X2Z*+4`Beo`=I0%SQeM6d>O@KGJ3%w8wZsVm)J8nKI` zG)6Bf4|FtlDA1FO@k}ekAYG2yvQR7w6aXO1XGo%Q zbk}0(n8j^M(BLxvA7MVD5>d$uTI-1!51?)GY#XW~4UYWfF7cUq-Gmhe$ab>`ZR4Hlu<@G=m(M zeL%6VGmE5>po{^cr>J&?p*+}MxSryGSq^xwG0%-E1|1jKJIru=3|HFwQPnxP?ha!< zl@ImP{{`Uf>SL-Z!}vY#dk#_})4L_>szEgih9(=Up=rkMj5b!WVanFJxr}MW+5~m0 zxjSGgn_@B2!dgqPvKW03>e%u!uvsm;OQ>79$dA%6H&YfRet|*YoF@a=VkagkG&@^=W>Ias|sJ;B9dbR*3 zt?$7yW%o8`SE%ff`U7oVnz{as_hH;LBdv{zhx)3#3IyMgwpZox%*+h7uIziWAri15 zb!Vji=Rr>KRyVYSB)0zX;v#gf=QbV0ezhkXNYA*nc1A#1u3%P*QZL`mo~MUC?>Tg| z7y8>#_2I%L(3J_LJE78*32{_lKAT2s=ZUtio)d5Hk|i<0&2=ItpeVsjwc*VbvSED9 zYwz`)hI7}kFCh{LzOV~D=FOAQ*sq^8=h&jDQ0c1YcD|+XL`UMb=Ea6Dqd$rUO=#jl z6q7JLFxDR_z`*dwx}6UibbT63(7Yc>fR39de2M2gAi(a+{o6Mz-9gI$ zRClWXZ0Eij29bX_e|hxgzp;ydp>E2%1ji?aOAV0+JZvEP2@WPG@#W1Ym-mlQ2+|Kc0(+Ouh0B~4m>1wZfJe@AkoqkRm;CK zaOvtWTLy-(*A(W;ID6rIKiW(w>t23+`Lf)Pc0TXy>gbI&9XW2I1CQOWAW3d!<>ds5 zmfS6)_Dy@*;B+8|w6|)#OQILw-}GU(C<~Uhk9(tAn~$*Z@W!%dA6xB=&v9}E4o7R} z5`F*6mQ;%=KmZ{rvAb7VL#8%MO?uiVaYbHCKNUJp?r%Di&_89Js27f>{EW9J+SCzF zVlxAtiN1(<^E3l#ieUt@+dbp(eXhzFnx2$Vu|D2q3< z#`He=X0X@GwXunde{1=HIcz%fW^1!RSOXkr+)!p|uu^l=)kXe{bJuTzSqYl_LGMzc zULB5KxiQXwjs|A#fT1Q$MI*v-5uqgNn5miVzjd)c?aa{V;I*+duuNpg+~B?|$j&Ng zE5_CbOLYmGp^ExpP>GDkfgxs~iKs9uXk~@e7)tydixnV(O)e&J99?g)yd$jS zJ14ks#dT!!ar;>3jH^Cwp8(J1jC5d#($L(TL%#|1Vqp^*pESVDUP1V1+I%<`DY};x zj|>RqZiCKC2+ashbk!%e?KZI^WxHSzwe_gUF_2$2T|(C6Di*BR7mP3aS(iop+;$QP zdoTgjdCMd;eZVdNaBxGPgm8jg3X=vVKSWgHwj#tgpq3KE_#Lcze8SY2 zCs=sEz-@UT5;A#zU-Sm$sR#r%f;zV>p}!W98*xAxKx9gFc4eW|N=aQ*=y);{+pz%F zUAGMkZGE?uvL43ny5Jfy+gD=h_80um{}X_&f6doy#$tAb5J3IU4&HLVS|B2c|mvMb4e@$2n|E}-hNMB(npWS@+cy~UV zq3ET^>*Co{Ba<_9U#NQ`)6(3%dwWM)YiC<);^%7vT3rm+})w_C;v&E9cLUJ!i!JCZF5N?C1xZ zKwX~T^~2{cclw`Ry>(CPzdDf5UgvCoK5Kve-oON!$&k$sKY95E7K^!Dq;V+Kz7u(JTYSjeAAC-e z#CUPe2IvY{b9{D0+NqGJr>n#MC)-*#TsnP}2$_h-l!ExCe6H&CU}%aSH;*S~ZQ!m= zgk%u!1J~Qoc$>g^fMU>XnT>mMnRCaQa$DB7Z)r{*s7d2hhYXUbmWYm3a--_nQN;ob zOuY)XWu8pV+Q41md!&V8-5j2#H|p~?aOdQQgEpYdc-yg9EQU0GA^!oXTN?31PCX)X z7e=+hVhOm$%-2-LknLtnOS8^w`0PE z;N7S1USq>j%i8ph-=&6hx;`ZoME3lkKE*u`%o!IJm%z(Jb04r7z@(p65FgsgUP-nz z)~#Dz_wMV@MZ$yttkIiQI87^4o7OlAdTnoBRiAR+fBWUhvP05gWM_q-v>ovM!;|S? zHLK9!7hL>a0?u2_ttoJ#2Q_<{kdk@Y1|~UNm~bnDu%)mA7K~*beK*-Eqj#fY`1sJi zSl#W?MV}n75h<(13HPZ}5=Lg$MLNe`7=LPX5XM+l1#(7s%oJHqd|cFg94Ip8HXNs(u5cK0JB}@ z2C@V|Kfs7l4%;xWb%CoMl*d!yFal!oL8LTl44frTUo5QvnKhTj=ndI9cba}C( zqgMhQO={;ennWL}D`n(^kA|2I(-0r(fpv~|S*uP=Wo8g9up#ixjf*i{F~KVG^swlq z=8VU+h{z-e1lIDbYG%_xU6TJ1fU|4oi6V&OGqZckouGIsibMzrg(ebBEQ~}eW2`h* zRyJ0e*qCTxEVQ@KFW{%KQCsj43@4oU0K!A`a=_i~&ba@_F0;F{XuJ~cX7_F$`+xi% zzL6PVZSv9l0jN?fY2m@Mmx$?y#Wg+K{I%5)zAwCrB=$LQJp5t|N;&b9yEpIOx}HP) zH-D^-yV@Y`hcJ18Ir`p$9BAW3ZjawwUXzwsXAZ&Q3^r%xzS5%SF-gKN+eTPi*>F^& zVf<~$dVjhAoc0J~EHlK7Qk4vb3)7>|m`i6eqV?|@i}C*lv((A>uF?Q9zLR2Hox21e zSO^Fx6RagXH+?c#O(4;Qx?@QpR51EBcZm&S9KUmGtApjA!eEkxXYIdDO-@WrPBoOFQPu-YNZ zY=R_WU1~XWOohQDceC(-P7m>)~f% zE2U)%Y7<7Cc=tU@>6W)xerk#`_Iv*t?(Xp4d|`8}S*H$9j=Y--^o#E)t|NYgmzdG! zP8d^2r6^7zT}PkdQ9+h-aljN-BtaD*o~u`Do&p-HV)0XH0cN6z8t~-EE~%1BbBFRH z2J6cpo(H=E!eFdcVr&3sD|ubUqm9;UQE2AZ+d!-2zCYXd8VX==UuhA}Ew=}%!2uyw zTRX?=HRE-9_$;d2g3tHuNT%@ovw%C ze(}4iN{k)uulimWHno3pXn(t_zioC5nQ^dgipFp`)EGj-twMYY8YEa*)p5KYU#A`f z=SG4f{lU!A_F{V*2(QIWxU238+AM}7mF)@Ec*00VgK#*Hq*;vYxS>aLp#ftg<8j)d zS#C%B0&hS-&ft3@3=#BW#AZ*S7cI~-!3YG<+!6a{Xp?Z%$eopC!WB(4es^Fb!zXZ# zJ@B>Ca0W(7s>Ig@iSX#UWLN+abF!ourYLpnB`gMf`VdJP@h66LX%L|knJ#7q6sN;H z;yg)2p_73aA8{&?u#BKBfXJ$Ny`hAghYU`W6rMG^++ZoF7hyU;l|aVA_~3RA%M&Qd z6<*q?D`e* zR8z*mij9ikHX1VujZ)0eDFF%z2-py-SXlHsnQFPv@&Nc2w8}h8w!ncgVW!zfkacuO zA#~w^MgM0+67IiTq1+Hk>W=`FT|G|}Q51de&CKdTR>UB|fI@Pp$9-rY}uizY=R^%2S|IS8}IPnFhhPdT{qvUN-Y` z`d%`dY5M7lXRqGBo&7R7ezkma{7}B#`ZL(y7g@`9mr6$=Gc|(bHdJT(Jw3vAYxOiT zUSIyTW;RHk;0aj_*>!;_SpEg6f&qqfX$DbIh%XFxJLH!NB%eTj+J-jD6W7WUv2c0m z_r}!2nKvI7K7al0&ppW^p7_b11_vrC;#!bfY5XwM*JGM`aCBFGN;tO{F0XB}81!MD z0&qYgcbkMM9y6c6qqC>8?~h_MWCqH#3y3jy`r`1w*yS{E|MrvTQ17`jJ?xXd*xb0P zMc;guWHb2K4UZb=?OxfevM78?Dce!H?id;F&q!#LvWSk17lNhAq6TKZZ4w?(tv6EW ze|>ueRPrjyZcHW^=nhPFeN9#6Ru{_Z-x@LQ2q{NL&fmX%BgX4{jmNL&p3lyIm|uK! zXCnM-8ok-jIZu+AN5J4{L=%~;=iO`~THF4gl4bO@qB+?-<+%se|B~%Vca%eMJhM5g zSfw(V!b7DqL9IbiZNf@hInP+nn2A!dif!_`6zfH`T9&n)NsX|t_5HNh;c!FNYL2wE z6h|MQu=a?k$B&)DD_kwZHJlG+vA**@O~6Lf{?L{a|sm za%u2H^}sLG8mCLeeJM9K>+cr-EUZ?G1=Qyw)a2S9T_YP2u+HP+WYL2smIDs)FoqkV zPyzCmzOF(q*uqfRchK;iMiV9(DSAWd9s;Er5oiHhOhzW=NMN|a4Y>4_7#-{w8|rXb zVQG8M-(`M?a>0-ZF({adpt@b?m@s8vj=uXcQkdvTR0?ea;N&5sj0tX7PMVs4i0Det ztn51-P2UYqSQH+%9HbAHG75!0O{JwS;OxlB4o0W;NX@3xc>{8*LB*&EQKrmSQbwVm zoJ?(~v>;#}p0_D|r4{Z;FIl7W$CfM2mjb}&Qg81j<_13wtW22HN#|tJ4j3I8J3-(h zRj*t}&smZuJKP@F)O>Wr@g1GkA}Ku-YB?#n8CJzaUbwHIy`kt)WRHyL5*B}8Is?H@ zU}aBzp8y;rQLe9CEQTX0Fciy}twuET>fyP!S5hNra38n^=n6{{ev zSJ^1yE?ajJaG?tkT;v6`glHtCCMATFXo8KXr40n738DFU!TGz+Ip@xupF0n_eLuYS zX5O6n&Ue1^eKL!TQE7r0y&^3&Mw8De1A^8=i|$&c#;yNxKVQEl#zzypuA?F?(I=%Z zUA;JxN9`X?eewBMGqiYjwn(=tRCTM0u{%_Y#!t(id@zyG`D4Rh&;Ce@iQ{7z3et;( zWs@0MiQ~DAZ?sbnw4uxf!d5o{O+GRHMjo{fUY|^Qr{r6mOW}Um zI{x~gZkC>VYM}Sr`qtl=IvHPm?d7ZqIchGh{my7Ry^Mmm(mbx-;%8humTIJGaA9ug zStJ-2C3Tv8ukAnIgSin=|M|0%?_VoD`~A(ew_hFjW^S35)US*bWLh_t z)|0Dpqqwa3)`k9W=Wm0kn)A+6?Tx7q3Cb`1_SeR}osXv*Ho$#zxbMa8dRdPzZxpt!=T6j!R1u7l05Z01Gwmxf;Y?&np? zAH4iZUr|M~nJG^#$&Ec5qgV}cO<=j1otew?qW@zn`|}bjBPd(LR{}tFI(bvHc}&hTeRolD(s)gke=7 zwVC3aM%(#>TH9Qbw%p3f93&=5FJs^P3h_K(AMCw%0GtK0i`AD*1@TofV4W}bkC zh+#^;v#xfpE(Md$!`+jnAG?xrpJBY(ecG!F`5(A`fXrp*ApGYj^c?=elWiwKe1Gp4 zEG#)?&?~()N*-;>@r(jo8w*ZAIl}02nzhq=XjZ0DCM5g~$3#37+n03hm#|c*^&K%{Z9fD_v`_b;Ev+j6}6$1HEhL5{BL- zMsQDO2azx$_DJb26f-Wd1&KKQ_6Sc~6p*E2(t3nS)o{~S2SO2EC)p7yL>vsd49Ucl zlUPOPF~WIOxlktJn4@|YV0v0Eb$BO_>MfUNKEq!;tOz=y2}JTR0wg$`|zAFDQw z>BA1I$(k>Hx6W&I&p&FSG%3@k1|dYgzlyl8-t)tP(}D%0MlhIH4%U-a@8lm<|$(kf+^ z$>{Tc0reR0FaHux|y$a0IX+_<5bp39y8>oR5}5$FW{?9l5+ zzWHwZZRwBRc%cznpKi+18ps%v6l@?8+N5|obul}izXmcG{Tdq{Ix=};YIaV|+Su^! z(Y?FXn+l~>1!vD+%qdv!Zha56x73W9$FFfn;*f&OfoSK{%1h$UZ1wIPp1mfudcah7 z=lHt^B2y<#FnbhPz4q**Q?pq$8$bP-p)v1#s2}PO)`@RVIpD5dUmZShX#DHH7p}ef z%p==9N&V!h-z`FEZb|ML_A{o+d5k@1fW z-aGNmi=Q4laZ_jV;B$}n+P>An{=Q$P=d=kfWf95E#GCt1PhaZYmg@DIT-}{dn=s$Z zB=t4%4AI5NCcv8UOm6YY(!aeHB9A;gaP;IKnXH1&WZ%%Pk)d56CaGlR^A~c93f9vY z{)c6YqkDN=vqZ7CtMRL!dgwm2huPebIR4v=-x_Pm32=hm-oG~j+=+QEM$^jn+`sco zCfjpM_m|(FX$I@H)P8pUp9{IX^N-&%u=B%LMvk65*R!?zt>>Tc->rs39G4k+4nV_M z^rnOHNI$$A?pSI)pUDlKULtg_`#Ul;P3(6)9+x&6oj7ewQ`_>0Cc6QTdW>>}cX$89 z=l&zO**_3h@%L?8e4e`%#U6J8^x=vqB~ltdj?!sBxB{?#xr;3FtR|*i&XCu!!AZ z#<+p@(z2?WHx)^yiDBLNQYR~w8no|mt>PdXyCaEE58#)UJu{MDE_Veqy}9Gum13zz z=9kMI&{=2+W66vWJ+ao0>X=BWT3cGFZRsRSs}+p0$9zxK=Gy1!pM!w<2Rp_^O|q+WFmE+tl#RE|gcR>q~1vVKuyZy`E$| zvC+>!P{D(-H`a;ORsvD&jyo|}YU|)V0uT@5V@-%E*ttl+&0HE?vJI_=9#?H^saZ{0 zm9$bPl~5GcF-1uTBdZsdd=RLDKpRFuC3A!;R1?5+odX^d?qWtC7wkNj&eMi-GARyg+fCwo?WQmNYnO; zQA>uuM_eO}1Qc5dw6qtm&k!?}Ku@j?p&XKSxqfS+J=Ml<4uVBmURJoh4qeHdW4f%m zFyy*c;R|6@U+R-Vz!Pmj&=wHf`+zjdYhn5Glmh3L=hrJG~yBjLGdEEAbLOsK`B$yC_W)ZibCPrd3Ix$WXr^|ltRrO47qr)5$(%qS< z?yi3I-uM3BaKy#3#a4K%I=Gph^0EPl-HF~!)n`srmi?3YZfJRX=^9jXR0B@I^yHH=FCpheH&Il zJ)y2?PT5YsO20Iyzxky8^qr@x7D%z0qQaraE7rJqn9pA~A3U$gP{zYS>jo82k@@Cc zK%5}002N1$byV(&qp){epqraIeg8upxLz;be5^Wi3mWRN&vJeBg`0cV+pzocxznt- zYnO^6S3i8|A{wf^`uyqb>CqqnT|lD0(qdaPKuBWV-3Vd8Ukt6L*-?vII&+Hkh6`r#=EnE!nR+i5D_1wQwvQ~3o=UED z8ihkO&5lU}1llXtXi68-CtQOCzu0p4+Jzl!ZKaweGp8)U&ye}rb?P?Y?!UCin4GTS?KW0ti0*diiw4{GiKk4?B^{P1&t zgQ*Uxoe6bVDhQCIBsk%ObUwZ?9tra=Kay`deuih2m}91IhlLlHt~3Ak@^^)0OBi9u^%nIED=X{iBD(>Ob|+-G=ci zMp$4v#jOM68N6t4P9(&0L;A$wM(yWBQ&(Ry`KLY6mmf1U>DpxblEvnkw~UyQ3A*4?yBKh4cZi;n3x&GFy!Np@mA$DrnMFjmsdZ zN%4|0A+pUTNUF#hWbnep6KVzPG^cSn2rN^G4=rX**%(ICC8sL^o#7b?$>2kQR$QhE zq$$ZQs8N;|qFu$7CRT0h$ z>p8k^#pBSKD$rO_Dg~(=1UAr;1{dJ!ri zj#~9_z5%?4-W86uN4zyS5s;v!z^n_~hs#qPb zhZ|eFcg91*V_#}7-voZPuD^OaHm)d+BgQ>0PCNGWCXgf;z8^dng8uU(EkB{-cZ_k;U zqa3xP{`zFjq=yc|G?PN9_KyDd(M$f2IK_gzb1Dig=-lje_u4xKM&fKf{(bhst>)DY z6xa?a#z;)bnCK?AjID)p|G+P>h7u(76LDM%N$X(Ru7Rnpd^aT7<3G2@J%i_NG*KwK zX27l|CT5n-*SD?tN#W{tzq9X2?~sP0k^kh)*te@KJKYNtKjyAAJzE3yad_MfjHbR$ z{|1d6B6J>m20e!05x z0QUm#IKN!ayU$VcIEMN>LBK7{lA2q-bhjhD8SB30=Y#EiBm5+czc-9TTsLVzgB2&( zFg|r1N2z2MIWeF)ES920sgFl;z9ZmZ6c{BQG0)SJaU9~8jEv-qdpa|5^_3!bD}-bt z3lhaORp1rdany_2u3bFghA>BehjLMVG%q6iG%PVMSTW&br$`<5m|oC0ceq9%kqo7< zi7a^E8k?Ey^ukKUG<9k(u4Fc?EQStEx2c+MwSC7dXZ62Asm@j^DlYxWOwMmiEu`18 z83$`w_ zgl(AG;yOrA0`U%RdMK63ubIc#>R)qeF+H=g^=r*cB=pT}7KFPA|6`@aMo9s6M9mYB zNs!=$w=_YW@?FN>B9QXlGOh9=dbqTJId(G1b{8ZC|2S7FRRj=-6nP9pEfGjDBBWfM zT#6EA__{76ZXP|(%25eiGNvFi0ne)m%n168mQbvsX4acCc!FY*_AW=epbBA4qV z8TNS(cv%_21TV~tbwrsdR1j|?l0L4J9l#jz?5>`$er9c{ui;20?UTSR2SC9_6 zfr}EvBf3bSjOq?(Nk%k(EeJP2>WaZz!ZbQlwaIKLp+-VDPfGIV9-Wc#KjlFIPWUGP zVOJXyM-hg1W_J%t3njIf*0vVYAPs)e+7F^eLd1$`Yh%*H)>Pw1G|>ouH8IB6A2rdK znD|3YOq8M)WBgGXY*I87s9=F01&%vfggeS{SKwOigL22+?l|+#$1U6u`E~4VW_Nby zW}bQ9=XqYkIgT+Bg;bTk1reE6g5P=?ROXy??_lk$o<1mWr|`Z0L|tY11I{Qfql>uHwR=|b0_U(@wUOw{b(Hidi?w^_M=pQ-#%{hPIR&i0GV!9U>kTIl(~HtBE4)rG-Ez6N@j^S>PVkiju)d@P zBWVT1dcfKrP|k*AaLfmA6UsruW`k%Z=0Qifme6~k*Hv^!f9N(sCLJOzU4ymnoT)$g z+_9%07n`L4&)L?lrq+(?y%kPhz0&Pl{WJ6Qc`43VCm$-6_eXqdqlt#FkR@ZV^yue!JrCy%Bu9?qF5L&Wii* zm3Tcd>I+`#8~wF?fPNM`WUP-)&BEgq$vuW~!Sy_ru>SV=kz{ZM!g2bQjPl@9pPu{h z)UyY7?TU=+FU^~kg*+_UsE7lFpnbtsBrl=5qq9`ME z&^U_3K!6QImMF$HVQNl;03Y+0uL+d}B6Pr;1$p?m$G2q1r#E4r2LO7H5MYmbw#K79ZT`QW5Beryrg_u1ZNtA6~ z@6z#|mwzuU^IDsHaWWtz*%fo;LL#Ec`r1CgF#X{Y>V$&^@lU$pMBq<2<^o_`<5J$mdA>spLOzvI)$p!wqw_y)u zVObHF9$eMw6MVNu9>puY)JC_~Di6{(L zmF?K>OVXJ}pqXBv=>-zfY*@iV%p=T8@)Rs#fzYgAgQii25hUrh9lI{nIe%S}bOK}< zC3ak?>pB1b9a(+*4r&_|Cs0D3%VzR%jIHmKvM|8sAdK;BqO{>=+-(Dh#@d90KeX~d zN2bzhBcdA2Id?8wi)da#mS)i>;?PnBDHHNtZaGBca7Vk5 zj9iWw{(+?!&&AO`(Gc_thk^_YO|nU^%)hzFS*3(CfXXFx zWg4nju}oe(AYqs6_z<(4AGS6sb?FKv6CtxBmYG#7{G*8~xFjQx*U&~Pf$*^dPB}iz z$ta-!0YfnUL~bCtYQj3@r$TE`(L|&Q9S&!A88+^G)Z};Ia$>ohW&aP&)2P>jmZOBQ zMdTHE6{HJ8K_w$1(@=s58-fI!!B9yrvnF#fkQjl+Rf@QClMa3p%+!E6V?= zSvvfYN9$VDrsl8g#ZOP(n+Jf2Q2n~9#%WZj*%Z-cR@gn3syyqF2)?^$XycP>D3;Dv zNCzx97A%Sn8iDFYXw0xuq2sApRlI%k^7U=gwlu?jSP$R-wED1_>QV%=Bm(;J<=^uk zy#L~Ye5=;fs`&9?(~lPPc?S#$SBPRE3+sysdhUmz@>}BTnfmU2xgPZUKen4rV~}x$ z1_r}(aKaxpzIk==`MjN2o;@pz`xlkJ(eK;whhLvodieUwt3_K&GcDTcvMeS?=1IQ} z%O-nqvB6}-nXXyz3IcXiKK!I-3kFFc_ z)`)JO0m0Hn6c%|(k6L{dP{pqC*|O}^Jq!gUh4 z8a7aZ0tb|E5k9wZnJ{)6=70*6;Pyp|tEyu$-a=ttw1a#?H$DyFl1Adk)zYZ@gP2N~ z|KjO&8&>D|+_H0#%b~mN$G)i&_id6mbd?n%|50&eiDiQ$a%ZUR@CV83nxE5kkrOm- z1}TK<$l!9_@GytM!(-ndtK7zzoaX2~W=M?qzit8@T_f%5=%7tYQQx40sX+!#tiIfq zG-^aM358)nPaDCE-%eZT_X;*Odu|H!u5Q9*5JwDYJ*g{2-mzy=aA`p`9DSVf9<0_5 z?^|6Uqv3f={gF_IDd(c?s=T+22Y>lJ~@{W*6jDoNO_q3QY?GeCXnL-on1Xg#ol z4PNng)E#!a26SWp2Ivs4*GtvOh+@9mvt;R|u`4bxj^@4%B(U8+L*%dt*`8yuc z44V-eA6bg(8kNXY7^7O5ObgSN#J~L)qv4SdQ@f{PM$@GMW_rRv5Kz=LAkE#DDD?ak zr&;mdb_XZxlPv5W$>s$04msb&0~MBHiAPyVTw1o2q;5U2GB@%pClz|OGIKHnp}c?% zgtR?Cun;$$+BgR`XF(m8kW-;?%G@YxTRj0a>EaVn&b4nh(GHTF@&3ExCJ6G?WullE zvy@DTU>C=pFZRd_18EwJk83sy7`smS{n#p+gRR_FR#`{&>*t60^=%DvoQ_k@r*`2^ z#_U^8r*&CE!_sZt&FLYPQ@h`v^26idG#~$_kCg#dN+>IIkKqOIvKq5Jp}p+EFx!KY z?;#03r58Ezvuc`RUIIw_wpg#YYiJ6K?1-7jHRJ^uUTkf}5x$$w44|*= zH`cMn8_|AEzVq@=0LrdpIcgw=w$wHxoZ!TT6Mw<~e*ss{q^Js2DMBSAJDLs$q(lv!JHWLeIy^6; zYO4LC?!Uw0M7x7R@d@}c6iodOjeZ^LFPxJx^}&b+xh=yM&M}sJxV0xo$`rZSCQpn8 z2D1c4bMHOpWgqLfUlv0!ayyH0XH7z3V(kVl^Uj zBBnP$iq_@cq{Xz!#?ER#XcI+VjS1x`hC!{(5y^7wC8*t@w~OJv8=OFr0C)3L2p5!*lyqsJu^Rp3Ec+7~xnqbOG9^;-Tr4X`80e7V zN7oltZ6F1yqhx4%V+q0N_jzgNlg#hHX*tV-KjPONRsBWKd3LBwyCCN$a-EO*S_*!Y zyT9!$T#ihe{&RR!G}T*kte#Say*^v;pjb$+dkd~LD5gW}dzC{c<4zQZFQ`dB-7sF! zHuP7pqm%U(kU0vT@|2-v` zxiX1vFDGhN8zj*}OSS!8a}8V<$C3fjEkwyT!151fjfc(k700W))ApXmgvJpE>rvFK zX@v4H(f41cZ(s7et@%%QGnGF#_djpvd0D@H{P5{=xZT=}tkvJV;&l8`Bpym99b^F! zMYj!dDUZt$tuh=0BzpX*3tI4^*3aJt794keO#sF z>y$-$eWundq)?!`8di2EiAa@qd`ys0yA-j5=<2r=wR zf{?lWtTCixkc; zNH=>&PiWasT>4w5u2aNB)gA8Uz*L*uO~<2a+w!webclN^;GEi12iBgbw_QNxiPD3L zVFZD>i&mNO$xEF%FX)jk$^1KG5?X5rgpg2*AdrWec+SOD^Xy9us(OwgP?NQ)LfPn* zyiGH(P2BH7T#YWe%3&^sQdfgd=8q|u0&c?84LkLu0u0|prHgi@Eo|vzSVjT7^T=(; z7LsD;PNoZN!;BO3<}t>vnzj5`1k6p*)!ku)E6HU6-POZ8kVgGifR-rr+YGvGEO=(F z6gP;><~bYtMl?C#vUdbh23E;j0exe8H359gr1-Qw`J}mFB%a%7JAzE$^gqpsT*9Jx(S9=Uf5(A= zr9kf^aO%{0$BY<+11zDqx82!_ZU^pMMUT(LER(2*ozux%=!kIzvN5?3Z}qze!_6TC zXd3H=j{me0?*c%}U?_N84WAj6rB=_;nS(S!U*nKTzp=EKEn)G7Om9<<(^^VH(Pm^5 zeFdoN&#`eBmQJ8bWp8>j7?pIrwFbH*y|Hv5YoOuiuAO^SuyFUGsjA(4+qK?0X{I2# z9jm)13M7{z zu)9_409qcDp6Ai%7F@|P(^|vR`@o=3u8uP};cluc=v<-O-x>q|-RfV3s*JY>xC6x( zp?qR|8vpweu+>444C)^e@D~WS zgj+v^MzHC^FqBkoBYQak`r%-1lBVnm zykv!;C3w&a2~R0TZ2Lklw<$qIoWuw^hgFtzpf1gt1O$4As39JaRWh#5yaScLMm!Z$ zd{M?^DK;uIfdV^v8TfV1rubHxM@GkHj3kJS3X}b=N2j648+aF{eFc8``})({XSnhJ zgd?F%uxm7Th$-rpUjtDoPg<4eE+6&i+cdj*p60i9UM9yNH#c@^K#r2Tc&yF%2qSW` zfaSc~3`u2e2S{oa6AcE-Gla|{Y#h-9ha5fu>Afh!b1tuqTBbPHA=#|*GgLdVG^>K) zwG~e(NU(h)?0^3gfVXqoNgxKoa1RS4zW>vCYmCtw5)B%6>5QF2yFIZ$G!o;DfWXpr z4&VRJRMtlj(F{q9UP@)NHdZ}#)>2u9E%?XFVl9NRCAA8D5%?c(I4tY`?v~5vS86cT z#+@vcYAiwU88Zeq^)rPgVXCTt#+LD40^G|jAM0(p__{Q_O;v&G-H5NYu$wclsc&7f zwQkS*3lq`HQer)yEajYQn3%4)DD10UebnpEtU^p$?MrP#D({6Y0w?FfK6_R+?>0&4N| z#=UVHG{3DJeqV}m*M082XPc0Z*PX3Q6big!w5TBwslHjrPNyJg*b<*`ZM_Td{PFqv_zA%u9I*I|_4WQ)CAw^&f!IPiI*q>KGX%w~U1xS;!5-bNEc5y0<2K zL>k2GR>bh0Kp&2YQ!;+0VM4~95j1!MhG=SOw#u9HORiRy*t7>zFefEyX=MZkS?UsJ zr4jt`|-~4QOgp@P)81Nnomcj zkh_Qd{xDfGF z5?S-1mnCl&IrJ1D$R>(yS;OIQW}Ds}k6zTwCF)kYIqHkUH8CsbjN0fOZ(+_ZZ45;t z!QH9(|51BYhWNPVCCb6~sIgHJ&_m!wqkVBn%`6tM7amXt4qFN)^TZ*wNe54sZ|8b< z;%XZX`9yZMY+$Rn!uUUj+A!_A`Sl5*BCou%hbteC-F)F?%lm}Rp$lDqp8uO!|3(G_ z);CPiG8$9jG2mC)0O;ENe3CjiYBzIaC%&^96i#>@r+at8<;(ch<<>ZH%nve3m*>ZU|`A>`5=w5iel|a_p8LHrN-vMVTPZ0URp>~3Bhc25tkYihxnCFciJgo0+tyV zstPgN2t;7x^H@PW1gD0N-~a7X{PF$ko%WpR?asem@1&HV+D^OwHV@jf>eX%94r6nS(q-A*N&TmN~0>HU>8I(aiqTK410=49=9M)OJ2lSo~t%%jGDW0oSI zTEUsWZ#7gD);b0F{Ad50;r6m^>}$ZgEELS#+C47(Qn8q$Wd1Ey@#fbfCIX=P22hKe zqsB0YFoi4S-g!Exfmxl{m)Jm3#}Z;qZ3@n$VcXYw!W{P{5mgC0bPtVumLqf%RYk?8 zT6JM@HG$DZq9qYZai>&H(aks{qZ4)AIJhm5f_|}?U~4Uqfr?P9L{&aPje!s9$#(1% zaRSt-TG7!%Tb~AalFwh60i&?&$Jc#NR_lRBCU8Mm);xq@dk| z;(`QX(yrMial;(rPLK{%t}ZR;$r(tAZ<_%A+n1MkyM_1`F`AsH=x<%WV2U6IpX81+ zI__C0cNg7qRNa)=;W2Ew5?O6@wM-Pjz4QQ5@@iA#W3$unmJenRD0&x1PWhyN6suu? zC1;`S`9^i~Wq(gg{Z!l0$6fs=0A=Tr6Gse$VcY!}MMwxKi-=85kozA4DF;Ya*<}Hd zvIsMF8P~&h+1>8xNGuREX6R|`zpDQFYCd^VnWmPvZ0M30!Od_YyZ zIrJ?4Z}#G3+N1Fd;NG3H71U$i<^M9O-6$sR6p@3>S?_KJsUT7xF;QOws-mTb-u1TcnY&dji*N&T=T*ugyF~rUKUn3gAqCp~O^2xRS4QZgufS z4Zuw6Rv-Cpb*R$~wBL&CA&q-a-(kc%BL)VU|RNZ9G-%ceKBgsDT1 zgj!_R$9A~i4IOYpoL{F$wS#CRjZT3g`A(ZGGLtv17>3H1sS|$`59Q7 zLuOQHFfk^E4YP@@$=Gemtut-e$pI-AT+}_zAk^j>;px-*{BZg4`X16@7|>P^WGUg9 zsS|=xQux4l7QA`4Xp#cNzZN%Ns0Qw|AZGltg^xK3c+Ap3RD_Ad%%GF|#Tt?#8>Ekr z2SmJsq`U#G&Xhr??2D~GBM%2Ll%1G|sjLtvbI;UTU==H|7t!$ne@g+vWx6LB^%(#R zYQAZPG~gDBGyvhn6-qEzCa#kv^|xS4J0Q`@>03h$}RNPQVT&OjARObum#j&nq5K(3z;YA+ek2fnf--GJj;TXqJlg9Hc4_vE;Z!x~}45&b9fB>^Ko$1YHQNv;Oq ztv6Ltyzn6aZP&8XFbo9kjaym}MMy|UNSycr{{J)J$`vFo6;gX45956}ar{WqR#ZK; zRq7;;y|X(zW7H)tEmmwcN3a(N+;K+h>6Cm-5G$+#GroK*NO z5o{(X9HrYA#guB9f_2K_39{4OKx?*nigQ>QXMxDV-HBoNgb?-g_-8M|Y%o+}2A5dB z6Hxr*1Zpmqe|g?~NxYs<$1bN51)V4P!Kc8WuyRJNOiRw%1{r;8M?~g{d$f?m5>;$U zB)8eorb3Vt;9-_rm;GhwsfpS@vJ|f@syUA#GhQ)9a7)0vj-9jevpw2kDo)RGCmf0_ z>~`Ci$Gi8>pZd4P_yyfC(WM637Wu+xlwl=Oimu)OZ&>}7!U(DViXI{9M5=Jr!swK| z?pw}oE91UD)^>kvZ#L%j`PPMi--r6`YY)Noj_?eNZ3|2i>W1ihfL92yfx#pV-QI6E zPj{<_>-A=(KK6&Iqd-WjD?<%pLQkiCsAJ6<=)BH@P}6<$Wv_2z)8{crS&o(ZFtj7; zwu=HQ4!7}`OtPlGY?{W9+kDs8XL{8K9jkVEiVhvNmzH8F2yfwul%w(f*;{gXf4aVZ&QpzQ%}?V%T5fcJj} z9sy=JG3`KU8&?w6?&{B$WfyWua!4ZE^5omy@8`dOyEoq?n8Lkb8wPnQ@Df};BUDvv zsj5L6o8-&QhgCt1QTA3thHcP`zRe7tUC7gmN_oCDT1C|==LSpPefiLCBOC?s_Ti) zp|PXmwo!ZCdECAJUd~_JvWnQ77EYx|~Id!LMpWkjMK-t9DH}x$G8>no#%KEECPCyx= z57ZNW#E%zmt}l+~U4J~oZ$JNhe?Ikkn9!s4LQb!~p=1p^ni0_9OtlSy;}c;9h+sWy zG`Yf=N)d&cNYrdhM#u@(-NV!46MVUTe{*@fdpO-czxYT|f+SGcaxRYMgl553(u5w< zv2zkOxp7ZVpFbV1&WE8xqHf^rhj(9p{O*0SpZ6f4Frw6FvN4x~aSvs1jN!n2@7D1N z2;iG(_)G|~9KG$m;E5JN#D1x@Y&;uQ5Tnlg#XzexWnnZVxKun(IG#mC5?}JZ3}K&9 zcg1LwjPs`&hvPgo2CfuR?!9rMdA0cnn&}@xx3N%EAykTGrgh10jZPb92>6d{VE;-w zCX0yx#;hL8;j+`(Gy(<-XR>rND7LvM5rt-S_Q1wLimNrl;F!o!#Hse_cD?}eFFHR- zQf@RaCo_&lc0GBJ_Dbua?*@H%d+2`krqhPBrL=59<;j3dQ{&U-_h6by=KLlpsBDzv za3W?$n-L+108zqmXbd9^9T6}X=N(D~();80TgOK`6|57s6tro;oXh|hJP9Q(pW*Fa z0Z2QS-L_#MigL(UhJm8p_y0exn*u>mps5}+)x7vHX<2cz@g{L(SrTW4_ulh*;ZD{) zB#0J&S~U+AUkKq0dirb~aB}Vrd`}kIZKIv2XDU#l-3MW6Fg}2sV3n2W2#v=zKWeEY zo&(X@#opI;SHiheg*QmQ?efz;%|Bov7s=7T2xigr(xY|)6s?3M^E2H6= zJlxIb#af?`B-ILpgBkWy1;R+1{<;dedslEeO}&Fb&x&n$sZcNP0Ms2@iE|HOr-cY*y6*vXDQv;VyM91@2)gxGo7f_x8b3r>QQ*&ff406^`-CkYTZ{q z5wE2z`Ex-FJV(T*Ys!D@UzL2u$G_ZF|5i0PpUF&WO;mQj_thS7?(k8mJX%+My`{ZC zn78=-+wI4%Kd`QpE*s(mraj?lA!CDg*RH%x6+yg^&@p5 zidK+~rh7>_rNpq9kmdz`{{DFX_&YCKRDfQ#?f6F%$$V@CW}w1sw}={eTgySi*Y7W1 z;^mg&A_|6t;dPXNx&Ww&h@h@yPi zwTmXmCLhrM|Cw&PF3?4b0$C&u44Y&%Pf`@cNLgeNz=%qas;s zr7$(7$4O}Sp+<2Eh?L1F%V_fYmxyg9SsIW~OZUnaRoHf%2H)FnsFH94qpEhN1~Ph0 z>J6&3RWZ>k)tdd=Y`{)04zK%`k3Q*A5gGOR#7P??3r-CVl|z*$6lUC>Vrs~1RmzHc z+istq9zQr+I`rK;FqU-V!<->k+sa2-ng0_^r(5XQE}N?9Cz_4$D!Z5huZ(J~qhKJX z^;BFQ+4#A8-ubWXu|icP`fRkK>&IB~;5+Qh9ua8cMUCl=yV^SI!{|KavTVA4wv62E zwi<#_v$l;i-b=@<$0da6Vc$qvThB41uW#{s&Hgy8w%h42iR+Nv&7({`939fJ;m!WM zT#nXrJ}|gP1oqxsICY3AATTj!iBW$gqhie}8`bcD6tNUeeuNQvC7jCI1GM z2HM(cC%3+|)U-=vAW2yQrXsQ8BMj=!-%|c}y*_@0W-Q65hf{buyZ0F2S#y~rR?68d zxF{t{2BeFX?Ctt!bauoo3n^9ioq-`3$dkE24j=rsYRs_2NF_ju(n|F$viz`{eQ2_9 z(ilgkXKGGXq@zc$tW#T zPKTok9)AGBN;Fz0BpIcq7hvv3j8@kzN>1<3bOFqjUDv0^@0pwN6dAH%fbgNw-hhr5IwZu(QvVvO*3FrQc1l(v|lP|bV# z77qcavVaio$eRLE^Z}_8XY6J|Krat46bGDkCX(Cx-5t zS)#A`F92s(yVEcX17jzffJwanTOxsgjjjo`9Xn~8WFLP(LTKySEIFTjcaH#flXt0M zLmhp_8g4Yi07w|nqj?Y|} z)yo|S*3|e8gqU?JwpFgLbpMvov;N>XxZ-=7kOudArv9lpr}20NI0!J>_t{2vnJr07 z&&Pet3-tcdEI;nAM#k8^(I)|1JC;JB1Cw)Ijeg@>P~RJ#0MH2!2Oqybm-PP59Map# zpH2&umpzC4#U~0dB^)sk)wv*?U`RP*P1M+qY`uZj?#iM;1f43d8dAtC!k0vJ(~IKo zc{<>-2Zl37q<3AQ|K##`NwUCK1Iy(wbxKgL`YpwjFlujLd7;lU=?!NHo;X_nlG5uD zzP{7Z;q@xnk7c!&ndj`h$Z|y*9HA38=CHggaby}jqY;C`E>kdv0B}q>>5%P5P-^l@ zp1}05lZ24S#^KCfXQM{S5_hEQG~DRrkqUTbQnywyifG^!Ag`Bl}!A6ktg$! zpH@sc1D8<@!GAe5BgL%>E(La_m;M4TQo4r=kS5ofgBK;To80^tFZ295M`SOXDL|O; zcnEL^Vfhup#OekrEWJg3C2rtwz-$D==z2)ttW#0-go51=W#5H?=h#u|07wXNrFi0M zw#;|rFk$7@saHd8{Jl0@LuRIf7bVTJ+Q?8wrbsg7nWQiglzVC2zs!|E6cDk&->7W>Z4WT<+~De&>MxM; zm3FZ+*7*>t*lS{(q_@u!czsf>U52F+q%8;izk{prde7EdwHaqNXxeVYKRs*oKz2JF z_qs$TAygf1w~7+hs~F!EY`1P&|1Hkg*<{{~^=~q}SN9dSF`GNJ&(HJ+|4Uoywl{A5 zt@37uYXx0cUIGtu+x^Jgz^CjiCu2sM`i(krHbFDb^*?UzRU={d7O_2n#3jMjNJy`C+6FCE1+$AMw$ltzx ze4m#eFR#<^@cC(&m*stlnIa!rC^ZFC=?(geS{D?wAW`F^Dd7sE;yJ0wSPSDS_&TR~ zfoUp-1Iep@di1~FQo!Im6*kN6!xxiUN^=Wlv_JWPIc~!y2-XU8(wZa0ev6&q*FW>!6T; zWmZl-Q8#g9Z@_r+XgD0s^qYB>6I#1Sw@G5` z>&$n4q)>@53ihA{pw<8D3H#l4Fe%S%76HMv`|PCQzC&~v_T!#>S*yunw9rQ`n6o-n za#l8-dnJ=O)XWsq+*nx3JL7Iyut{Ylnur`iC+_ZU=zV z&RLS&t-!dJ=ibQ#@8IbPY4#y3I^3;z2)1^6Q%I^j4ea2xW}_B=Vc^i$$kQJI@|QHz=jCm-7pMtpmG zJKx`ZJ6*=7pTA!|&R{+xN_aUDozJ3Tw>@_RJJ2zXU1>O-ox!zd>haLimz&|w`v=8e z6mQ33&yafF!o^R}_|RE_`{DQ+3kN!l^zilY{c-s9-u-xf<%@`$xi?pfm-KkoSRS=& z?<_KlBz)Qnx2Xp{gYAg_pcQ8y8*>@^x4-^==q24ILOcI(H#{F>tq^~{5#)|)!SRQ} z27em)sRy?vn0S-^0K95Q9Wbv0As!+SOvOQ9Ahz>B{Xm2=11bSZYWogUiUY#KNYFc# zKp?S_&B95BS#9BhILVSrD+k@XzG?Orm$;CS9V`&E1kH|D{LFXLfldZq?2JrkqD3I& zvBPUgNq+%|lZSP^`o(*lGIbblKn_uH@SpSPeVZS(vd${|aMannMDvN({mhJ@jS$L-6PBdf~0a%6puPNt}VyTPmq zKMoFl$E#|Uj@9l;I#?{3I$^DBcuw?i`3NYn%0B^UyOQOoVIZo-9+DIxRUETm+g zT_$dyQ=K&BtGXkT3U68r^32n@u%VGrcJ8O~?#T-47BTCkDA;aOTj}C?c#qDxof}2D z%DH9inma#L_M5X!bp~4fWdW`+QO;iUyDd@oulP5*Pyb|@GKr@t9Dr|Y2zgL}p*Wz# zT&q3nG58kyG>3ad1x6|4_R~IPUDwqF*+^1wY!?A>Qk0XLTcx%|7P&9q-uixL7T2EX z^zD|TgZJ2)+y9L1N8OyUh38i6hAFw-3GX%hL~BaWR<#ODwo4|ZoYPt;>O|3&uiuY9 zAI!I3j~JgzSaEf2(K-f$N2**Cyn`zJ3;EnTgol_g_^%i0!}ay;8*Tk^_t_a|3mvu3^`D@uXEL6G|k{?XiJC@l@#^=DHX} zMF*}zy`T3eO|qdfeOA&HAL%*sWTMD!H}_pDJv*V2MT(^@4{bsZxLOCf9W1-QlvSA$54l4ZIuU%;)S)cB}nAgjt(-G`W2$NFiSD4Z3-Fb zkA+Z2_$i0pRhfn?xLZOk6yg(9=o1D{@m*zT0=uV+Jf15yx@VRtbOGQn#sWh+vh-XE z>Em$mM*!BYWI1XWh^i&ot^^1noPjF-|6BMCP83D4#G6{EyCq9rG-EQ%A%~eZ+!af z0aa!}ZPJ6PxVp!))8Rg4Uz#tq$Ik(#lZ zD#DU#{GZGC;AQ3HnypQVoWw{})H#skDy#I`-6THa=)Y!axt%^0^1P_`i`kuqjA<_BF;!~q?9bFq1V*!~Y6E|f^If*&Yhtn04>25y3rY7|ZKAg9m zR8$h7o=mjMlj-3Cn;w_Hs#v%(OaOjOp7FcF1nf+r(o-tWEwF?x9}@02@5^Pq$A!zj z@Q<7D)LYJRu56q4_=Z0S?cO-A)kJ_Xtd7$AHFW zbPsR34{uv*_2+kYUw)16U)xU)0Y^bULu-as>xq>*oE!ht>Cu^idI}t&M32?6#7%Ndll213wO4*)=$#Ai(4^?P=S=i^9h2pH-B|~{S(;1>VGmqStjKP$Fn|zZZ^*szE z8RmnQ=f=lgu@1g8Ere;-nC8J%)=IB1l+b*fX@Q1*)twnR6?@ z`6~cv*RtF;3V6Wfs;8C)zD zyIm%Bj)lWF;Q9smD9f0Sn#Iu&`) z?yy#1{S5Y)O(eP&WQ=;_eh)$2jkduOeT zu3AP-r4~&>x%U&9n}$Ed?N_xE3x&^#A|g3nqbWo&*zj>GsGUU|xMBcRRX0nqY zoXDY)r;6~Dd{M|T9TEtDAz=~*LE4%VyM8vP39=20N>xLohfcmyDq~G$}@;@4;;S`?AsYw2Yg^-_m6=GHc zaPNJy=9_}DBJuPFMU@vFcZhVhw2KW^>QS^PC03uK(1Dac5z5;{#qhgM_Lwnf98wSJ zudwrP*@Yc&vf8BiKuK%L3};raQV*{barz|vD*$olvK%!GL{X__c?L*jD6$G0{{M6M z0N7D1SOAr(RAO5#+z++o=L~E}WtEz7Y|mKg$L({+%v@V?wsiSCRU0{-$dk2 zx!|DuPnMO{<)xB^pw*G*3P7|GJ@@~AvR`i9ez7%~p|$VQA|9==M}7-|4fF8_a7g zS3EY1-1jZQgJ7k$M7Z6-^dBZ%uU69+ar`ae9ph`=T;=i?h5o4-QUz9fbz+UVbT4*m z)yVDr5J}$aX3u0RvjWc438bavHS%n;gK>KoWzD~|6n8WEgZ&WS??>myO`E+(Z10gj zXx+F&Y5Q?!c-4D2s5FV*SXl|vhU+G?hx+`@bw|m*f*r5-->ECa3lDJE!PQ%~dl~;l zq;5V*q8rrmJq0IBAqit_?^vQRhH@#Bbl~IVd>`Y0xpzGQ{=94b>2f!G|CI~beAW&p zj(ZcwcZb&Bx9+7&U!GonKlg83c<%D&Z%;p7ULW6`F6T(p7piIpDa$e?nII^3JvNUh z)0g7bO4lHO8FNZ3!3O^(s)17Z#C56r`jc)+>lON2aBx(5U+j$@6Pck0GkppHUx@r@Kz8HeIj1>-gFwOeVv6kt|J zAXEdH@5IC&q&ejhkV&RSqJJWwD|v_F+muoWOhI6nOt9TElf$Qu5!jbJE4W>(nrLts z0#C{H6r@qPIPmeQn2kw^XGk1H6r%u=yMTJEN^I@0&jrKEsbCT&dH_=x=|e>0rv%(5 z3Maok(&2{W8)CUDt|4J)33k-`BpfEmx5f)^BJ@L_Qy>Y~K&qJ*qo?5ogeJt0+f&oL z4Zs$vzUwW;CI45RoV5pECIf*r%8(T!RN#x_wFATQmBPt)4MGT%lt}Z0&TISwbqPv5 z<|ixkQr1?FYDr0~lh`K%wk3*|$lcl58NCKo*neO3u$-f%ved4Q zS}ZV;5E#1;=!`$^^t#*84u>cFQrswN8_CK~unSmSwpFU>wBbM@fTDC*O04OI%%`~= zCf0QsOV7UYeqc?C0`0U%wez-B)^{5z=-uxOP-JVswA<5mBbob%0lzCXvl|4b0>jt$ ztNuvYnQPt6t){}xGTe9P0Y4P!T0P1SVDLPIFt~fSPsHtvi?PA&drK$=HQ6!c9sHzY z+_l~Ofj{-bwZ*q&vmsRp+I)Rj3v$D{j5BH^YPI^QOQ2jdw}V2eaxzpk1xDdB&K(b`A`?`Tp@R8=`u z>{cN%Wy@BfqEqE5rSTm(EixR9j;4ye#Hfr98L#f&al{a zbU(indMV+i>#my6#F)=|cK+eV<#L|>z9i;NFV}=mFL8F$??3VJ*VFSgYE>Dvvm1MT~{&Kb+(w0jHJx!vQ)aa&oWhHtLHP8MFL}tS+K5 zISvm~2s6zv^%yTKFGGJaCNZ83lqcj24bI=bZ7ht<;SEywjc6U5^5}^DstH&tK{z4yi-1~n{rH?>}xl%awB%M%D&WP+rp-q znyu61H%OvKDs}6;L+eJhy4cHO*@)2^At+PPR)+B&-ws&fbHcfa}Enq}`P(__1L zt^-WAzl^`68gC5L_us{FSZ@u@y>Ftl&_8c+(6@b3*WYK^4f_L9ihghvJlr~IUO=h* z#hK@B?ot-$+$g>4nt})u%ey(CSC;Y6qd(PBjAdA^XPILz(_)>|igVh#YHntaeOg}+ z$M=wZ$6S^7WrfYC?)#kfh)9MLRyjW6hEenHm$^F({_}@-=kfGHQ<|YP(~sZ${qZM) z>d|KjK66&80U1D}RjXzLbtZ5P9JgA@%qc}l8?}AWP*RBruPVyhgKGU?~`R$YLL`rKVTOm#dZ2yw4N({E;hn1?g zz3gHC|2zAE?rlJ^0_%`8w#1pFDA|%7r+wK= z5wu2=$QSXD=i;l$tG?YnO^l3RgYvrwr8I{T(DGXz`=-vJF8ynzUm zqn&23YQyV#ExUJznX`IwTOf2r+t8NUt73y2@4lAo^y;wQmkh)-Q=zG|ZC0=@PF_v1 zZ%HFtzgaZR=c_6*w`6rUyIj;0z9iELPlm_Eh_D4|_U4vLA!)RRu{Oj>|XZsvn zXflL0 z{`t>&u*?J}J4edOjGT|;*a8PT7ozdns#2qFgF}c z8R4j4)hh+1xKu(gX?rpAn}BOMu~<=EDkX`+a~Le2hN!{!5Yr<*2g(%tMly3rt!4G2 zVYMxhdNA2K!|Zsz3u3z1qLfuJ>P$d#V8u=|(O~F5^PWQM=fvn)@qZxx290HMi;p^C zR=IsC+EbWKqD5A+Ixe0r+%qyp1?Z#n{wO9_dJ&#<(7FT4W}SXAo||3)4?tOxN5HhQv`Zep-o+=smH6aEZinKlXon>Y^ii%Wy=NaO)SH zRsit<)kJAZ3LtPrQK`L3iCtk8evN+YlD@Wz=x{$DZk1sD?}XAwV+YF~70 z%l_;eSM-)d(7(&M4e}0HW84G3!f=LEl)sgENS8UZixOI;K@GTCk&5w8)I$x;9&{Cf zDDq_**3N6-O}@OXUCd&KSyjvpa29IEG70Fdw|?`x#Tivka4sWIvj$<+gnnHans%wX zc`mR_2;anwUN4>s)pLE|WO zzPg}{+Biy;MuUI8Zp9dSdpcr+Bib4S-}E>tPQM`i-s`xESrm_{z2cT@O>pF+9-jSl zOrnDnBs;s1_o1jeTg%Wb{Ti_r`YTP{kVp=a5`oH>4*J6we*Zbjz@1_4+z?8Q*L!zR z_p;)edsaB+X$(K_AAj6ElJFoJT!2jvS@#FCQ3v%>6;T*dC8u*6-0t>s|NZNyZ`WsE zh8@>0;qrXvClyDw*qo)q#yFGA8!TSz?bW%vxg0>8`Pi|zlgUaBZU1}pmRN27@HGB9 zvZEiTW@=ejEV+|ZB7x-vVP{kawP!8oBRflZrh)@CH^DWF5L@wgWlVDGi zY0AbUR;qHsMku0zD@&f_9QoMCQ5!>$K&IJVFG|X9>11@ii@X+MB!sjk4Ox<# zCc{KVFfF@Ud4W_i2&b%g%(9v0n{DmwQzon7`P8_zBiddGBooAT9XWi7irucK83ulD zSUYVE594_B({oGmo=_QXAvxoQzTfxGIqQ0={Ugd`L&rxP4oq{2nE9b-$Si|U2~80< zAn}(&lXV?+P&GiM=oQj~6@hg$HiP9TkbpCobUa=JAnsar{$qPenc$8CWEJ{j2cL$X8;hchw!sTfu> z2*!ZZqTz~I#{b@f+b1{kb1XZ7RR#}HAM7)_y>Skfee;G{w9nfA0w_Ag~ z9oE~h8l78c9*ceuyd&B3%TeWoYd&I7ykxBV(!OHV_2BS|kISSjfy^ zO@$!m21}(g79oHI7-bcOsUQG*b<=m^*A~3We%?jboGxGW-T@>%s>(Y)pmwveb1CWdegE|)UV%9>lFB-eL#*_$?}}=flmB9M zat5x&)RNj=Sqm?L8rbJp<~XF zj&&VlB61=5L*4dx^XcQ^%lZE6`Tp^AOj!(Pr6OQ`AnEy%pI*|_&;Hww%k#^HK>8q} zsu`^$2Bn_Ks@~;ej2@RIuOc&Tg=^Zl8mV#;fL1_N^jxAn-peH(3=9!xR`Y>kln74W z1X;tQ3&kvHw3sjHUvvamqg6|pfPz=);RJB$qUy*AXvlU)#Wd7u#px}nX*XKU7EEB; z*t5Vq_|a=D_+>zScR73MZdiLwZwLHWtX8ya8JpRgH1*m7nmD5o4cWk!T9Ior#6cfk z&G2;)j|Ip#HQ`(020MbjZ^PX%NysmkIPr)5?s$y5y%@=JVi!H>G&s*YdIr+7Pug8D z?&)D-NkJq-;mIgp*VNsmU!jRZfpFYSBS2mU8Bv+Nn$Py*qTYr-`C914Dca z?ACsCe9rBK9?dkEC>l3Ph;fZ3`jPd%Ywq944qR-lYE=%dz~rL8S^Y5PNlpQz_7s<; zW#sKTaMx%oBDnYW=(6`@24KWNWBpq81U|^vGus;DDQsHam-c|T}=S;r6 zY+p;+S9L|l!&dhU_BM|ClGpS}?PpIK^T&60YNr_Wv%__CzS>~~21)v}7xgaiaCWiu zWs{=+Ya^dVo9poAQ4`BI5*S%djNa) z)EYj7o8R1TEV#s%N|H%~$wMdBkucIgZO?rv-3KhIg$G#ccXatZ3}nVQelE+1t&}QZ z4D!lFSd0`}o!-%`mjT58Z+CXO9M(RQOZ8W)U*T3M-SB1}Ks8SMI~#Fbyy`eGUH(17 z8doR#n92`Tmf+g5|2_i_@b_~!vjtf7Hl-x@pX_#6WT@=+f*8mWK6P`$9ibVdX zkO?$}bq@2X#?sgnP4P6rL!O?d>D%GU;W39#kaw9!sj}Rs*LFtK=9L&kvh*n9>x*i> z*)7T=sEpauI|9kmK&M!r14#DI)2!`}i}1?>zd$Jyf+#2;M!3wvVp)^Iy9g1V5BM(t zaaXbq{SR>BLB+lJMDb^HWvl_;K>aynG_sNK+Bg8KT0~1*WJ9zy1a2syZFa~BJj~G0&g`mQP z^^YKOgn1SVDvn`&4966PTp(5oGZ=i%H}~%=4%d;9A$er<<(}r&J4MKjpkvPoP=G|-RftkHW~Nk z3BMn?h0`6_8cE2SVoCxf=Sb`h$TO3_ zIl-Z1;4=fx#S7{R#JF;jYlASwR_(t$21}lOFtMvB`&=~^GQ|&L5=AT{Hf`)jEq!uA zU?=dc?orm$rwPjQeW8y4FXuN4V3_iR67~g5ne{6ENaCG*l+$=a0(p5uaZ8heUIBAA zgosI`mN5O+8vTm`iYQM;Qt9LA=DjZ=qPE47R));e7&J?d{jPM4<9!aq)~Dmi(Q;>g z{gVlkAN+i4P8SES568Ecznr$ES}8#ZkC|F7W-V8gBppwK*QOL$(^*pYKu)@c)4k9pp?H<@Iv zG2D%%>cEs>V#BUKdD*aD}9$Dd(Z} z(ySuaQ9>(s3ImbTq16wZjn-=qLf_BHJS>!w^jR`Ckx}0M7mFB_Z={5wj+@cJ&Ki;{ zrISB8P_@vlpytU3b(XGFb8mxpcFt}vCo@k=(=n?cnXTT6_$9P>`tFPzY!SDGn}N1f zq}cqS2;{nwK~>UQKfD=R2Uq}voek3IcjtUWckdsEvO!XLQh8N@4nT zRn4Q!XlSWWLJSTTwAxK4ptqiN@plbgnUysSa`PXz-e^T*#M9~Y_1pRQ@u6e=_>|(`%aG8h*cE|| z=C=GgFF=}eR;F}|8sRxkIu0Dd|}}ylZZc+|ZC}D_ zh{Y5j&~Pxcz(VPddP-5&KC_b`vKJ|Fi=rn%i~1q(@GB)n%=<2}FK-n$2vtit(-6h< ztkWW1mCBA<6GT14)I#EgP(m5*#_}sF6HXBfx(xsbj=q2qSq3J9pHB5K3?8}39yUtH zVA`Ki(jj7C5joS669b0ScV-?1CSH4*yG;R88i%33mdBL7eCR&E+aKOfzAyIY@fyoH zL)Uc=huw7_W4FtF?<9(A=FjYp7289+G7wUXm)s-zL2uU3qrqj;56(*1fqAZUQclGE z9KN5N0^~UtmlMHPz>yNdu70y?9t5*)33v73#4#&D()4d|@NWC*^PW-1JC@_J)qf>We(WrxqwE~MLSKSLd0rU)^v8`u|AE(A96VMJpSz`;$BRTM z-GH*^FuDj>+j9;?|4v2KyHbuU`0);E^m-aQPkQZWOhF#6bYl@KHi{Yqx;Ct&TzIl> z3*pXGN7I(C76C9SWvJa1_9O&*$N6>x9gs|x=M9IwzF&v}W-r1i7O@j)b19c{zdTj^ zQyQYQ=3@Bpof`=jD3Kb)qaGPHZAbODO7PiogCA@w^1g zScrnb_Oz3JqlGsAQ+LnS*o|hmi#HX5C*L1xodMljU^dQB2+f?S162@zp z!|gi1AbdH;3CPxz8Z*c;G)w_MpHJV<>G!Ekr8ZqCdFR|^3- z&g{JKc*bH4spR9FGaKg19&OGRM9`;9rv^avihA8>YkvsfHSr22L++Q~Nql|QNP^}8 zFb(NH0a&}19jRd;*zSpwVFgHB_O}23P5i>b1=xYvP0}X)@FTVp5aO~LX{DLOagyrl z>Z&1Sqoo!wXb41!%pjKoCF4zU36oz~@)ioIe2Bi`8FfIYhA;EChLmm$t=zmLcz4i( z^$sOmS!2bd1C_G1Hhi6jz8Ixy0iw42A=M+j$uJrEL)8!JRiV-qGlPIMPUE^GlEr%{ z)@Oj#8=a!Z)*d>$I4x78X+zl2PMO>@CMQIrF}K&ElsmF&G?!7D^|V8ydWYUfJ{QRxS>3~5aDab1F(TLhcm{?g=im89L4kUCjwM zWgjYra9GT8>HS-6rw;5+#CwY)mEuRJECIUt1}DQRvD;0;DaMH0*kINV+URQ@3sr^F zslbU2Js*!8V`J1J9ov+_#Y@f5u({4fx!0Z`I{HfXRyndj0=xhjfJguV$ZBrY#^8&;X_6B+Jy2=@&+ zEOfo-?}_c9yv8V6u9b4Z#GX1d4jUX6;jet&3k#hGp-{u)$A{-1tIc+&XcEq_5cM^} zZN_i+`SHWZR28yOb#U{B!=64(&$m~`#i|Q&%R>J1m)qAn%_|SCdgnJ7|ISY%_?P=U zTs9<#!o%izy?57?xM{G$J*lT(W$2MLSNz_hWxs7 zq=6B8F;*{I%?9@1lfpo8o2FM8*HAg_M9Neko8>Ggd@Py0RJ8K=?{5KEyPDmoVIb_8 zxLbrkz^xp5DNoS%e;uy9AR%pOY?Jx3$957{71CZRHM@!9IG<;}AJZb3*!pD2+vlas z{aMsJPT}D@F_w(OvTMavTbLBpHV8W~E0EPV zOd|%i@YmYgP?Sx|T*VOJq&D20MDDms#$hZw5h`jYRe2VGh=YQ#9_IE`V}8n!lkxBh zIg+2c?@>3pDFqgeVpeat<1@8=7a7mvv&)D*hkZvs@eYE=-XWdQO}0{5ALA({1E{mO zXJ-|##0`I-&-aF~PlI{KE!fAG2OgmRm#uzc5^^(PrdEzC(9HEC3SO@S5@~=bev|iF zDbUi2P2^p~U95opv&u#7eZ{aoV40hccsTf!5*h3R+_%*~_dFzTxru&agwBCf({?n{ zQ2eB&jbp{_Q}a+q^jDLLf1lO7!4R74Twfpd$>G2Oc36{l?Q1G%tNV)aoDk+U^K38$ z{haEsJ4tI_g0O%f_SVQ+Y9TU%7<_~>OC9>P8UY4&B8rcn%$720#!Bn0GjfbTJ^jS4 z--%3R?ua;BR>3nzeNiXDt{TIj4K1c=Y^eRm!>8x(pC7-F&!d027Y>ByVky;MUw*GB zXPq#H^@8!5(#v(_#GpjssBGcz8p_XKZ+{3DlO_2ZU0!_px;#I8`1bKWF&`(dK=4o4 zEVyXO3{C3nT}7A}j|)z(1Lguj-L9Keyf~|hNRg@J#R8JSTKkni43!xrm2OzW3N#yxA; z@N2QktYnUI=^+|Is0yEF=oU2DIE@Bgz^?71t2EX&D!w@M# zl`fEGM+w*0Z4Rt~vyZlsz=g;o5$?7xiT7~1Y`-40=ABiD-0&_m`yg4PKsg03^j*dAFT`F?TF5I7yD zc~fe*=9z8Ef@&;WM}mdlVfg#GRg;yNFDubo9cMc;NP6UPp z>srCK*$f3Y12b->n>UzYC4i?T~_>vU%qp5LqWP7*qg@=flR3-3znY!XiHW<0&I z0zPt6X=4TT$KQmiCatBss|IP#zP+cJJ3N5ehkvOC?wB31+CTE0Y?}9VLI3F>c{klj z3G3%yw+DQ(D2Fx5bWQB$6T_QihFtfM{ac@f=wQE8yhNIem$jZJA1Oo59!^~nHPtk) z=l5<6C>iPt6lXh4jW<(Xf&Oe*YTjJxxz%G6xN8pYPZExrqa54!s$aw&?R*P{W0(5& zIB@v@F;Gu^5@N@-C2j&PFR0iXdXkLzmP>%Gsi6%{s zs5#3;jO?Qa;Eu$^JMZH11zZO4xHrb|^tr!gxFW3}+h{W6`z~z(D*Z4>>G`shV!7*K z2<|%PU(c66FSple_Em%v7~}?zwBg8`U53ZrfBVu6o&WLuX}OJV zobXZtna>BOR%9WEzO#HomDoMr_UE<4!OT)a_|wijpzaXkb2cu^CGfwU>~Bm{4!XFL+qATYg|hH*KvHgO%G}Aa6rE-20usa(_(-DV0ail z^uy@m4P%u!TvbD(fzzpygud777wbzAkKu&|s9{}V#IL{|`WY?Ftz$S6Q5I>eaIGe- z`{glFUllNViXVZ+)e&lds(*EqsK9%Q{TS~v{{$ESbfgFNEIv=v00000NkvXXu0mjf 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/point_marker_widget1.png b/doc/salome/gui/SMESH/images/point_marker_widget1.png new file mode 100755 index 0000000000000000000000000000000000000000..13b8e6dab33764fef3c125991f07fe5234819bc7 GIT binary patch literal 4405 zcmbVQXHb(}o2G*xhH3ysKoCVrq)1T=y$J$>fMOs>GZeufRUk-j@=_9dZvrAkCG;4I z(vd3F0MZfZEkFYM$n5OSd^7va?*4enkGst|=eq9eK9Pp{TFi_*j1&|U%sSfYMidm3 z9>9Mb0~PT0e&);re9pbpe)5Wff{Fd_LrIaA!9_vAvZSM~^2j@5Ez{rmk=>W}r$-5c zbh+Y*)v{Q_2P%d-V-s=357b0S1H;t;k1^4#ff&rH+@%tj-tvwmf5KBE7fg6x)z3+-U8PfD9 z{EkAO^w9n}B+Q*fHG(IEhIF1mpyuW-lYqMTGFUajydM(6f~|GHHx>sn5KnmozFu-^ zfiTA~*H&+Fy)5QZ4We=-TSJ}NOk&zs*xA^m$iaq^AqYNKa?olWE}z$N?BQqXOKis{ z^`MyTq)Tp}$%#4E3wpSA0HPl6Cbpk^l~=1f1iv#TwdJ>h8Ez& zmc&M`~A3YUt>L1<%DS|2_CMI(7^72Zt=H}*ZBFB)o4@z56@Mqtwo#R&JjH6BL5acLGC=EA!Tb((RRO)_ge)&)FYG0YHDiv`T1ao<*>Go5B_liPs6keqWXNq=~gOS zU8l3u(a(>xz0hq|4tw&&uWr!tMN&11mtYinz7Z*M`E|5W(}SFi%cOJb!cHh6tq zw`RYwva$l(Hg;Tu(;F%aj3v*Sn@k6s;=)^kjAhN7t34*@!s(Rcw^a1?zt2w&L7F>< zyJm*37cKUtd;KAP%>5-`gZ@}h5aLjOdou=}@&5h?YSH( zl0p%ZsSiZW%HBpsHs7MZ@LPUbVDBe6yTRDV=w-$=-J}eKSDIC=ro{uP($9s3gdVw8 z>@Uh!toz+oP*4yP>uFt|f7hif0q(Qg9P4VInmA5!YFK5=ww_z|)smKyigPbO_3<6Z z|NPO@G}C14l$Cay)oJ8Iv+)YQiHXVQ=Y5)P)8xs9u`KE57ph}V$=*$;)UNmZ7Qxr+ zB3Mj935kqOoKBx5vVnQZA2A@aa(<|Y_q#{veTPpNTh8w{K_HB;9z z%hbrIU3IxDh!-{e(DW?+tJY^eLX`u0_(f|QGtM99+PJ0Z?p{?TUgo6d7tu$$YLfU9 zlJ{Pb!!*6{#U8p;Qnt;9gA@EjEUB}`>`Osz0+Hxla%s`j$k*Guc1&MSPlhMP`l)Mw z!@aa2BtQg%x>JAjVe!dzqBN0Z%jFxCz`Y0OB~Oi?1!a*%z9ao?d#a zEq6=a3j3tSdHkyXo1meV6w}{f$CJ5Upl2*jQt6CWAho&huIzLY1?`aQA^nZBJb6ak zex$AT6hXezV`R}r>=o~sz_P@rl4wq)cK&O#TP^LY_;RhKR;>%VXjoC&c$EWto4gTQ zcUKqe)dPHS3?$%-%b~hF;gcfB(vUBuQe9K?d)jSL2&8Y!mSYWqBN^%Gy~S+T*Vk87 z$^7g!GB);FoAOY@D?ctCC@wCpd$rVsr`SGQOV<=t?l*#3u|I2w(DPP9i$yv%sYCD# z%TKoFwnKgTohtCc*Q`%Z$SW%=2sl8yySP~6-VVG{OBm@`aOJ@Y7`sK@pchNlXgc)~ zGORow5saVKW_Sqte{hoDTr!yZeA^mWPA0gIv@IIkT$|Z4jXFoPddo5^_uqZ|-%;C^ z=$*DQuKO$R;1O^YaakD|8Cluid#{6=tz>x8)6(>W(c{k0ZU#eskyE*t&C15}WK~j^ zE6TyS|I#j9es1TmEz}7*=~rEdE$kh%S9q>4iu#AhC$tdmKtoooqPk!Aa2nw(mDVGi zQiv_%GTAzqY4 zm!WRNHELHpARop&C+S&fQ0I_fN<3FY-(fFA*yfe4^gD72`*_2eKiOZcRn6v~kGgZo zZKt>ONuY%7vWBMHH|Dn|Rx6%OzTi`5Audd)lq5do!MLGIN&vRW&!--`+7lTT7IyhU zJD>@?ru`45|E8wGHv~mL>?j16ucqBz%h z*Lauiy1BV^Ws8D&Z`PPVx0eNLukFK@MMOlN)VO4l4AqSp@K$a@bP!+#lO-%#Iu^qD zP_?4hdXoe0#QgH$7a>!V%V!wb+(bl0TdOCb{6vzqRC)p$E$P<0KY?{}nl9&raK~s4 zJaFy5E-W0ihQVMee&g9DD-BdtgZ{?%-t30pNwcTA(Oat_aEV<@7I}ZVoAcW}(tYw+ zU9!sNAuR_72k8(JaE15M0|Ns-uFEWtXE%i`d9QF^0D-`hV+?2VCdUAQKr~fc&7&db zH7gta`4ndm9Rkbpo{a?BY0s4$wnj%hG-wc#O&)y?f)Zzx^iSqGi?T4539)cM`h1nu zypwX7meeIMrHn`1isLBly{QFtLncHU8?azdl=2(Xb|?A=@%pbt z+W*zJMW+odIE~V7G##~$!ld7bcIE zHZlhFL5SBwLqpdlaNQ-6Gs*O+!axW$lF>2d926h-l=Cd(aDau9-7+|j^Q`*qg;Yop zfaWTyv({R*J|qoLS2j*f23siJ(qNhpGrcQkuMsNO+LVA!cGnrN|2WhLjwdg=az*>vOUfJ1g#p-E5;=wL*oVuh6UtFLEPRb z6m&{VN=iyv`g3`?3*&+=9&wrQ^=L>NT}ZeJ58#1V%pMI*7*aScpU-8cO&U;$r{j0&H$>9_}oenV9$=uhrZ@mMif#DONaLG-(m;5h@Lk$gOz=i#;ZA;fQd3 zX#o8F=Ti0(1^=VnR*(|R)ReAnb3>Q*R$MYPl*Os+*TWLEmqdV|tB*Q=>@4=S9&>Vn zbwuffu3cMUehs>7O%;pm0>b^E{~OK?&yN%o6f`a6wBbIwRvFkhV=De@mr~K?m%jM+ z_vT;Va~#u0%&XGU(%*(ED=UA+KP!U%*MuT|f*nj7N`Thhz{(=`qI>PrZ#!KivyCZR z-l+gdinrJ?)qOaOy&b9%3QTg{*GE*{eskNRC;_DfNM7s7H6m>c7K`0?IZm%tq>f~OVa6W>M z=gLGSvK0`?w{!zMmP+$JmX`yQBQrW@czD>N!K>~lG}_3Cee^K?vC^BfYJ0_dUE-4> zOn$RmMhVnV??%f~`$&q=&(HocIRemeq>(Owf;c<=ZHfJmiSq=Rq=-TQlR5Az?vC!% zfUH!WU8Vs>z)ejq=9=}&8DRKK(UQH5XAu0~%{MI-sAsphYMv51At)mEbGqQ%=FMUwghEF{U%gz_D(F7| 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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

Quadrangle 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.
  • \subpage ghs3d_hypo_page
  • - works with GHS3D algorithm.
  • \subpage ghs3dprl_hypo_page
  • - works with GHS3DPRL (tepal) algorithm.
  • \subpage blsurf_hypo_page
  • - works with BLSURF algorithm. +
  • \subpage hexotic_hypo_page
  • - works with Hexotic algorithm. There also exist 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 bd57d80f0..042b66320 100644 --- a/doc/salome/gui/SMESH/input/constructing_meshes.doc +++ b/doc/salome/gui/SMESH/input/constructing_meshes.doc @@ -197,8 +197,8 @@ is: 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, becase -they has different hypothesises assigned to them. +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 @@ -219,8 +219,8 @@ And the last mesh computation with:
    "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 descretisation on shared edges (edges, -that shared between Face_1, Face_2 and Face_3) +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 @@ -229,11 +229,11 @@ order. \image html mesh_order_preview.png
    "Preview with submesh priority list box"
    -If no concurrent submeshes under Mesh object user will see the +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 appear in Preview dialog box. +and no mesh order list box will appear in Preview dialog box. 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 9efb6ff39..d677e179e 100644 --- a/doc/salome/gui/SMESH/input/merging_elements.doc +++ b/doc/salome/gui/SMESH/input/merging_elements.doc @@ -56,6 +56,7 @@ 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 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. its elements.
  • \subpage rotation_page "Rotate" by the indicated axis and angle the mesh or some of its elements.
  • +
  • \subpage scale_page "Scale Transform" the mesh or some of its elements.
  • Create a \subpage symmetry_page "symmetrical copy" of the mesh through a point or a vector of symmetry.
  • Unite meshes by \subpage sewing_meshes_page "sewing" free borders, @@ -36,6 +37,7 @@ or created anew.
  • \subpage changing_orientation_of_elements_page "Change orientation" of the selected elements.
  • \subpage cutting_quadrangles_page "Cut a quadrangle" into two triangles.
  • +
  • \subpage split_to_tetra_page "Split" volumic elements into tetrahedra.
  • \subpage smoothing_page "Smooth" elements, reducung distortions in them by adjusting the locations of element corners.
  • Create an \subpage extrusion_page "extrusion" along a vector.
  • 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/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);
  • Click \b Apply or Apply and Close button to confirm the operation.
  • - + 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_defining_hypotheses.doc b/doc/salome/gui/SMESH/input/tui_defining_hypotheses.doc index 3780cd8d2..80944666e 100644 --- a/doc/salome/gui/SMESH/input/tui_defining_hypotheses.doc +++ b/doc/salome/gui/SMESH/input/tui_defining_hypotheses.doc @@ -547,6 +547,36 @@ 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/viewing_meshes_overview.doc b/doc/salome/gui/SMESH/input/viewing_meshes_overview.doc index 8c7145787..207c4dda5 100644 --- a/doc/salome/gui/SMESH/input/viewing_meshes_overview.doc +++ b/doc/salome/gui/SMESH/input/viewing_meshes_overview.doc @@ -37,8 +37,10 @@ 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.
  • 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 bd927280e..2279c3fc5 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 = 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,7 +138,7 @@ IGNORE_PREFIX = GENERATE_HTML = YES HTML_OUTPUT = . HTML_FILE_EXTENSION = .html -HTML_HEADER = @srcdir@/static/myheader.html +HTML_HEADER = @builddir@/static/header.html HTML_FOOTER = @srcdir@/static/footer.html HTML_STYLESHEET = @srcdir@/static/doxygen.css HTML_ALIGN_MEMBERS = YES 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# zBDw+Mfl)TsD|5548fAUefWGYb=QsZCmTy~m*Nfu0sLk~nY61zlB~2-tN`;GC=T!_P zK~)gO@TZ8Vr|SO*NGfb~2e=#fuJ`};{;typr(8ft4QL0~_T0BlsdZanuigY`ZuHvW zSGBF0GPHVQEZLw{bwEic4L*PQY5mP*Q(Jr6yA{&iR&6xkjmmUgQ762qt*MHl zDOYv5F3oSZ{#n~KB`Ljr^zXXC4D8i8%11eqJTL5@5gCEC{)0&;SlyeDs3^|QHN-6{l_PNNB_LO?O`^<{< z0;6I9B6xMp!|ZG3u<1zBJkfswuwurmZNoqqmt;F#o20a1l#PwC!C){Ld;eG1AA69| zmXdWzn%H;y?j$R+<-}>Jaj9!d?&cXi`oa%mAgl@$7Xbx zXY!znjzE8&!x6R)Id*XTsGN8~fjVW1FSz;5!MVpBnBMFO*HPOBa_?k`5=42TnNu4M zDX63)x?VVXGA5lR%}G5*U8LTxB9lNpXXbi1cUP(+(j@d2dy+;^mJ|c@%2B?%n$Ez$ z0&nJgQvCSx{`<#kk4h78m1ST0T#}zh5;FB+yc5>!1j;ylL!@MFS?JTm@wO*id9K?k zPP(|OQ4YWzuAr*0Zx^%KMLD7B=cfe_xZ<`;cRHZW?et9oL_lpF=We`Q8gXx%vIL;{ z=5n&Qs5Uh@p~cepN{eR#NEi@{y743(*Q0#gMhE8lX$IH_B>?1e-#%P^y_pwPX%HDf z4l7GmRj}HU(hEqb@YZd~e7>48K~n+B>M z>(d^PY#0~Q^|;&5tLZ_#UcE-^GTXV)Zx5f!7kbi)YY``j^{qWcS;t*^-j zo4V`!0SGV8olL2gh1IVwH>CyFYOY#D+TPw=J-^t#zx}oUdoErH&gjs?bc+ z`=joO_{htox{3)H*d#vI`F(7bbRHnX3dQ=8p??rM&F8OwuFiJeH_q8cwfn;ZNgc(l z-pukr!1lQOGKM3iJrp>P5+E%!143XVbgt}iQN-hKRbsB6OEsH5&pCo-n<2=aN< zOQAS>VJzVT!;xX*iEf(f^WFAE`Rc-cxI29LT|;R^LZZj-_s5&7O3^}uu)?T!+lve6a9HFZ{9okA6wDoeqArf{@X77DFfa15Z4qVkB3xte8iS-3cGLqQGQ!3L{8a-;cF;vgXTpm<(R|ALZYGn@AiIJHNy$j_MN=lj zj~dS`zC15W+cJc2oyEHLl`izwZ%VVTkIy!yak{E>rTxaLpU39YzTH{Vdh!G0I#ft# zG(3x@2=N(9VTL#8u;n^}+7@?5)TL>TprjK+%@NJUibb>zF;d?qylfbq=LBFI9sd$R zbBG!&i*7)%NMX9L+nX%hX@5GJF31X7MMT21l1(u3#$tNf<=N^~I|FjB6?(9O8KgsST0+{eGm(ny$QseRtPabxQ zpXJHSp9k~kjr3ewC+Xq8i48q5De@WMK7_$*KTaa9U~8ppI;jI7wp#Y6^u$5?%(6pv zT?Eh>7(D|J$E{5Qv@Yzo86R_1Zt6%Y{ zPR!T`Kv=xoZUZ=PI$+aUAsBS#&E@(<{p#b_pC7J&7~AS0>5r3YWe^;}```D?ZtZ+e!(|aVEYXa~s{C=M49S`pvPoiwN5K%jSWgiT#1@Nvxw@$8 z3PqB?+HF4B#%sIcJ_4igp@%L2l|_tzINjY=mK=YwQn72ubv{oem0k@IylZ=MZKbT2 z21vYDJfl4Vt5r4SUkJCz-K9Td=FnN&G!Cdx0ZAV*116U|{>#2qBzTB`=L!Dl(lh6g zS7ssuXcZF?aiCb*deD9FURfuokV;YtyofWwL3~10d=1%)YpHyzAo*BODH)~tody!8 zm1p?(@RfU%f57;zK>7-7Q-d1nRS{PyHfC3V^X4gf!uG!?5)_60%dckb!ghsFt`8n> z+P3XBjzTg{g>U<=X?mj^&iS?(H&=;4W)#k(tQn(D_GSL4&U!5CoMUisX?ZUjm>k0=NySw& z$ygq)4s3>okgh4fE)w2)klDz zHwfJA$L}}Szul^7oDLmHextxTK?vY&JPVDom?v?7RHcE{D8P-<>40)IV!NFpXsCn`7_PGWum zUC4CKs0*0$VUhUoZr|;(-T@?y4Wv}2Tb_L2Ap%4dH#hd#_x5|TRp3pJKO=T$2M4=l zIg5ckP&kN&fujRt7e;6n2nKEXIKCEOPC*tQ646s~_!^aPAMi8%stl21NZy14W|auE z$tMFXQ6c4Y1fMj3#92s?7Szvo6kD|g>~bmr_XFMSl;&&$mZ-zGyZeP+ez;t0y~A~7 zn4eKDLSx(3TV>AA6#M6~0QdE}b4DX8LlV*k$)8hXpTaje=M8NBx=-5&zjy6=_1>tr zR=>Px*SbAZ-Wt-~iHA21*DSke`nB0xe4|^4H@8S?#G$|!wsx^zuF_V+4dgbp9KNtd z6V)U7HLUwM&e#MSsh5+nV|NX4s*WB3NsJNFMjTh-Qy_#$9meQ}1A@DKgu&*{sdB6T zCjc$iw%jxf1$89b&86i528RFt9)5racw>ez(CH%7F?50e4OX@V1CD~_p z&u*&RgB1oH{`qnFukco92^e?-?EW@N?XcKuiqC~oy9mzSkNO<{%gQrSUN6;9rwSPq zIt#EeYP>~FQlJ#%rEw?@l;+_#hRI@>%>zX5Boq5ArWOY|hzH|poqMmt%(@UVpVBBm zmif{`x><@U-3&wLrzn7UE=Vwz$-^Zbq&&O1?yFhqP85~(iPI*1Cc(1F80Iu!0>$PK zyvRBxFD766qW5Wn8!k-57D(*E(bsk%CXlp9BlFzwi_M3804u$kbzOYUnu<1+B{;j( z>PfUA$Dlc$&d-vs?8^RJ+8Alx^8J}Z*!lRE8UjTGJPE3f?!+i>5{kou`+mRuaNUqF z2A135h?acCaWzUF>+t>8ecSfCrgD_d1C`Kch7Lu-Pgj(?C{!k^hgGAX49&9&&Y;C> z@r`qFk53l@T=?2?Uf&%aPKSr5Q`c>)nxt!4KZvR?L;_I0dH7o$#Eej>G{Ed$Bc~2N z^P%l6{(FUBTc9X}RPqAl2AG)XXy<;OgW-7|&GkxRdepl`5RT;LPwU^E;b!B0+#gLa zWRqsM1OsN@+5XtOPjJ<9))v3sz(yOlHTrijb@YCOlmIUHxQ1KDunSqz#*Um7JRh6` z##1?P4W(kuZD)}tQTmXvJmESB#~y)obd$JfZKeZahn6zxJkGqM>gXeGRF;Fnz%fb1 zhWIde&$WamrOZ`KB@AyfZ}6@6q9iNA*6f{$oQQonWL5#>oH(Fb8}BXf$0(mmE`1_M zLUIJP%hpYo17hn@ss=4)5HgdSkZ7Mpcb=ryfaxYbd^~@0``g&LZ;OsxLo}-)#8&aZeYZLqnYnrbeDR z9vm#iAy&IObWZib9q!KO>!+Ox`>O9BJ7_jd4Q;JlM+>7_YKOstEVPe(EFK2Z7&ZC8 zU8jU>Y3d9s_5=4L3sNlZb!A%XXo(E}-7?~bxQ@d1B4Yq{jya-LWafMp0PMlaHS?cNT8MVsbQJ^OHi*;8??+Nn=_qPx|RC%~=+Skp$!1E4kTWCU-8?H5 zM4f>?jvLMD&bk}Wba;%d&|!_T%AbCu?^V5}?3f$>Jy%3j`T{j`UW%B?1SM`Brw%t# zNzgRE!1rP=Jcm160hkOm_}uiE&XoppOwlA2?#2|o(Ts!6A8|EIC6s4MtJ@YF^Eh?J z;d9ZXUiI{tBIyb)x67=;sWY8$E`r+D0e>U-t^nvoOlPTpMpb2xo}+OJnjWmuKFHK_>+W#4uo;7#cv zgMBq?3wejpd#A;kMaXAu4m9ck$-M|WuGX>vaiypUxQIyWD1@qCb~ZwA0Chk>qeget z`z>}Ruk}lc6cwc=&@s&hNn7ol?fm+f$`}hb3qIcpvJ?tfH^P+3WOFtPxvqZzYq5-u zK?BP!oDNChIdD4gLQfDE!uE0ZWB2;?;qK>4AMowY$_b^fsH z-SgqNKZU8i2p09kP*9%n{5dO^sAt-%r<@=UBf zfMJ6$hYCZXXOPcgh9#>8AunfiOvS{Kzly_$om;2JXR|A7+Mv1!uEgl~$la(T+r<|W~<+~+)d;GQief;pS8QjVE6{&y_qYa-rtI9<&m3~#;oMT2ccsjX_EP8W@ zK!4NGx{DcuY7!{cW2C?aDBW3c1tip-(o2~O){1dP1%kMPur^7?Aopu>4n|QLharVy zDQEVYO~eNoG629b7iK-iLaP_B9ogVd5)au|B7#rY$Yv1DDx;(nmq!UYcN&aefCnjz zz)ZQ|nPyxCTKyG(nQPf?8wP^AOUX8xA}x^r|D_)K0X?JziXNJvMiIplA0>B5iHt~D zbuaZPuq8*PNO5L%cDgl`sjJZFS_TaGzh4Dvhq>st#>N|Oa*Yj>J;X8lY@==GqP?&^ zIF!b9uTG!2Wa^&Lig_RvVyaM|PoX95lb0$;%V`FpS8!p$zWIkXb#k?CK@~K&NXkkn zubzl)#Pb)vsT?7cf6T2-`7yUl_d4GLjJ%88M> zM0uTxTEQ|auuMU~wOSX)0q3r}rEBgy=ucnI9#gS?Yy`eb;bC<2YnU$62%x|Hyga`Q zkI%0jCw8Pssc2PRHZHW$x}C2zj@S%%4YUc0Hq#Rkv|<~s2~sIK5z`!LOT%bhCj4;1 zkKmb-4iKMh`A!y#(-<>yFt^514l2-P18M>0Jc^VfDwNF5sY+t30SOqA8UatjkiQdh zR+gTDaH2M{yM}R!jj9wGm{^B$C5dYx(h3oNsUZ&D1QUEgG$O~xB)58aFVCy9;&U^*|SQccL#(=g*Jl zyZc^i!)AS}IuD}*%tg*UjQXcsi>KB!`F}J{{yt2`=)ON5d)0M#IQpwlDjZ-@lPpqJ zyxnY`h^qs|^dA-1Xk2mg%I5jao*A)`S!NDF{O8v82{n@~W_m746_LWFT<>tMjq!G| zM>(xwSsDqNBc%@F0+bcoHzb=rl-=srUw;H(?%Z|bhJh$b&TwTQsf-l)faL$b!9S2X zK#(GUZNPZ(B5+lUPj>J?8}erA9{q26 zou-<2rNF9`q<>Hya+X-7(DgMV%{1=mjNWM91-a-PLp5L0t#KgD(wUY1xqo~w3Nr-O zsXty>Sn_RQ`V8X_T!}Bw78Ub108j}wUfVfT2E^a}w?+~zGbELN&rHF~y1X?)tzH># zQL(q6do|&WRr=mvtwZ*AvDM>P$)394$k)tE*)!0W^)w_PD$V;-7k@rHef|9D`UAF{KE6^TG^>cL z2af0S_uEJ9)4?<;i_Tc=V6MFrXT znvpTHUNGW)>1~)9Z%BBvPMyL`7PXxbBH{~DCs?%EyA@u(H#%AI=z&P(&|&$IqUjH} z&4$216O@#379Nbrb_efXy7=w>cZ%J^bH~_`fK8U*jD05@qng%3>qjay4a*5p!hHByT5vxvC%Q#O*3HQX6 z8BLL;NsVF=d?1Ex68q04ODS%q7raKO1=?;wbds367RHnI^2)Q5om_7QBKq>01 zT+XqJT@#rLpS6ByFf@mjbLgEV2tbJIBlO0ItEunUmcWYWZ#iJ8;>frmNXvo9aWDeD zz#Q`sxDZn-*d6(z>u)chLP~g^JO`SYw~ASGV7B1~T> zZuuG4(@MAVswvT_niJ3%ug4riaO@+cuSgg4sKt-?nh-!nYN#WB)uB~`G(f6qi&l+ zxt{dj%{wsIc}=LEQPlY5`|rnn_;7!B|L#r3FySO9(MgpZfBSj(bL3Gr@(99xW-i%W zwyAx}S=#`|!;HKH8H1NDJ~jPVJM^`x6{rj`y87sw$jAA~tEJvFSQ+&v7a($V}s}LO}n>U(f*jV{S?^D?*uhxmFtzmGbJam!>SvptK4&;jEkN&cX z&j$suQuJpNAY}&`ihX@JaN3XKRw;GV*ow%hxdsCxP|c9}LYg@vw&;B37^CWx2a}o3 zaFqmiB!($)PsukziUA%&%=mXZ4A$XC5+6kpgQR(uietqBCKZp0BjI*DiG zBRkT3;7NQ~@RSGX@CA2Epx(g>E1Vi}%Fsd%yAq$M+G`59|McVUTeo|^+wAC-Bq?G> z>fz((hhO_}_u8Xk7w+om6r*^cOCf1dkHB;onDV@Uc7Ahx) zj6<4E9s|-6XNcPpi8&4w7?i4%8d?{2t?u^;WhNAP0_Y-l$tz;HqW=?sw=33d8wR2} zl8%86MLTwFr~LnCbnO_RONRn&QNU?Yz!rJoyE}@atVoI+G|ps*PAnd&yT|w5h2n6e z_PcJSy$I9)B&_d%##cBqwCT!OB%d}sD4Wb?r8=O2aIzhDqcv$kjfv-t8jAh@SWTMK&7E&uTDv9HAj*@uX4pONn6 z_U+rNh#Mzy-#5CY3G0o2ec#3DWwx~i(kP_xZcdLxS3P=GQGcEU-l#TM=psBDLaF7@ zN3m)da`#54-h%EEfotfZZS+6Zr+#5miyu*D;0;0H>U7|9_23iWBO5u1R~H&nvpYCNc#OM9+% z>L&t+K{zlXd-Z}nW700%9Xq-UJ*PXEvH&~vsmN^Swjh0`h?_~h8(!iZAhMXn48842 zD|g&uB^$pB0@M;%5j z_wSDfam0Lcq|Xn(znvc6VnvH9PvZW3iFx_uI$5lA#7iF>59zsuHS2Uj@X4IZ7;FJa zVDnrw9D@rrt#(3g5kgb)U4>Iw1p_qVJMid4QEFm`<>`{jev{(SN`B9w;|@Mt0HH&Q zFfqI}Wn&n^Ev2|(Mmt;P)lQE4QrQ0P0 z^wkDcgnz-dC50kbo0Um>c3p|^iM?}O_*c9oYd#HDXO^CI_pd205#GsYd0 z$Xh5ScbU5Dmf-dh?uy#%{Lx(}3Ez}A?cX^6f?G10?=JU6_0`%PNqHVD(UDIJ?_$hU z#^1!i>!FVQA9 z8p*aw9I<4n)T8xGmaSwlR79cg2Bqopy%X@exP_L31t&a_CRp0qtV(YLx?6D_bt2hJ zVUMIUj2>ggf!KE*Sj}Xf9N}ni9-GN19*Sc1k|K+FXx(nHoP>mdc;1PT-Z~i~6qIWr z3V%$mz}`%Ts8RWZJ0PPXSedEOgd8goIm;5|hP_kOt6Uw%;++F@b067k#rYBU}Sbqlm{p7x40JcA4%q^ zj^t&GQut|>xyiwnb9rkfYQde;)HhL*kIv^GuYbS%ehnTze+plJ9-j}#U;@p&iBlXW z6m80LQ8s0xqVZAa`Duy~6;M4<-(h}Fn#R$LJi}@J;aq7CL-5|KpP2Bu8)*yWi#Lr- zB!UzbZx-K$(m{vg2YGVwTZ5!608Zq99`j^6rsHKFv)~GOAy)}+JOBEAfL)(-sJZJn(4 zbm%v?Pevad7nQ`xo5uQrsa;x&Lc*bopoY!(6W2C~aBYHN>yiNy(Xx zjOAmaO<<*0N~8O+i@~3^DcxuOtgv_P5>MJIWv(QF>R{6d0q0hvbz`#JaeE$~Jko8C zqw_SqJw`IM?aCgGijT_4Pkcl4?cwR?ynK9f`{DKB{^2<;vkO4rRoz)CiEJP`?zpaN zlnC}EOeogPm0n$b;nEw$tCs|jQMyXb=g=i69xrj6_MB$zZ-E0zJXJhXRjcKw4VbQ1 zRt2B3@~~ISmd-@xQIaJ@$(M>$>ASup2Ki3j-5nl({h5#aTUyzN9H|7Yhk{8E0D;3Q z1?VnF)%h-BQrd@j`sTQQDq27fjUjMYZtE9+tE-FzYo^}~n$0+YT*KX~>HY1?FFD*h zE;;Z+=*xn-<{@x4M-v^8D`GvUyv<$p)FvhTguc!9rB*u1CsMPS+LtP*A0YaiLanA2 zgSf(yBmS5ZJ7Ekf83fa;!(k?)Xn0in4>+6DkeQ1Mdh@lZF}t4rg5gqYnF^(VEY#51 zNEjo(mdLFXFB2WW4+jXZfvMU@ef{Be zuX5tb32qdt8xJxL<+|vsyNKcxplibBB^EI}=iptKN>gylwGY?f=Ed|pO-L`O*kvl@ z-Vxif3i5iHl-JY}nj+R!?;mBlPe}?au+qUyYNkJ-k&?Dgjrl1YsoI*S)^SpkTPclr z!TZGwGC#*fnEje`;SN(#oi_G;EtDEbPqT1rCx9h73=Ey^N%vO((ypdAY8VRo*-2Ii zD1sY;8xnW^|BvXMLoWzHC0gjVRY~I5_`R_muan*GE`K0#zMOgU=FK#Iw#}Bo9gjf= zxAN~rPADBkx12;QmCM@qCx%i_rZZ5W60lTiM`aPdPJO6sR!h0FnY3tYbp5VY+xwge zM`dJ1SzsJav`K^IGQ_@gQbYPff$7${{^GHvf_|k={Dqu&S&^0j=4uz#F9C-?k9uE)XvchI`z9C92rGRyWAzM{eRUb9THpLn$l5V? z{?riJr3$Eg^H$O=XvgbLt&UhcmkPWr;rtP+rQP$EIJml6bpXd7j^@pu<-)v)7NV4W zUA`4d%`)PiX8AV$q4{($50Gtcni#B@yZhnt>H62U|8e)H(-3Yrr{-E^d3K%X6&2OP z;%&`l*x~#3^H!PC)`tA1TcF?UBLqQKKl>ph8u9B1%mJ`T` zDy9BCTTbIvIHFm*3?fIv_Cxs3xMFa?QAi$D0st(D&Sw*3qmBLWy8ZI;;(GgZb<>CA z+}{74WSp}#0el6>6mab{$xep+O&@t#R&~hOfPc}Mhu*ckenf|2S}##KF@`4F?8g0( z!4@McM*vupdKe_ih+6T?7jXzkB%c}!QkzuUX2DK{0*Px97|l!Mk;aBri9zIVxWlWi`=iG6OXBw~{h zu}J5mgh|2ANP0mU56#F3D&H3b!*cz`_Al^-;itvsj6&B9HZprMOrWER3?ppp^r&Uj z5>7W!|;w%A3cHeH=T(u8xd~braxTr$=jb>wJ&=PwNI)L81qt zv!M!m7n+pe=nzkZl%sICa9x|WyZrvU?^$FMqpes3Wda5_;d>d8UWI4sU>$1Hhb?oo zoZkfFOBYIwP|=N6ltr}Jbh>PRH&U>$@urV)syH^mIZ5lZ1*Q+plrQN2|4ci5=wpEC5MZG3 zMN+-HT3L?cq=EDim;{gQk&e!uiyf|siP6=<0Z)SI$t1*my6RJTuRV)(+yppF$*ZBv zE$5;4;;{S*srRG{EO#1~q8EJMdNGL1ffE^76$|s1yA3xO8b}QxCdl z_IJvD`(enyuGEjVcMXov+oY-9B(D#bd#)kpp0n4(he4*ho!_5_%fzg@G}a^)qjp%KiBuXF%af03LH2#T{-w-D>!jV zaF$zl#OyS}(Bq5yN7Kcrt+e^a2LFP9SDMQvn-NE>V{ir8!CJ3=-rjfHt;N0Dd70r( zJqQVF&mtfRCG}%BNqb}j-vN-TW%=ckZ5_0LZIQobg$q>yu)3T-SN>sJAyA?0bmlq` zDO;itH(t}e=L3+v7E ziw`&V+s(F~appDJ8EfY`a!~Ak*dv7Y#*godZ>x*%>!+K?sxZXrV>(R6gK**p2hV4F za^%e@=*F6MvsJ(Uyx1t&4s){?R5Ua2}y-FB=f+s7Nm@l#alI%dmm`uowuM+vF(&Hg> zsopnn)w%xK&`cvlsXGaTnBb4Qypm8LCeV^7raNcE-c<-%ruVEFM@smeQ3WN>G!9D8 z*UM1C{6|~gRbht5zB-^drS(ABBxdGacYy4Ws3AHWzu(dMMFNHR21Sb}!v-f==oaC7 z)8TE4kDgTDtmE*Qe1bueR5eBUi}>24$dBX*q|p$?=3|VGa~L5Rh^oh#nO<0f4alZt zUxJ|NRQM{|ji4m>2t?x*7?M-F6s-jW>^&)>l%ohvyn85+ ztNh$8BL&Ly@m_T&X~)J1-}fSiaU12(SO}8WJ;lO=A$~HnxH&#n1N;?$xNF&Q8VG`( zp78^r1hhiS9`Xl#0RR6NT;KwN)e4Ca?PkHAna15cGq&T{nazbultW_qIqs^it}=rN zB@8?3L67Bwt?MW`8PAGxUbOUI_j~SWh%2W^ulN>7x{DZ*HJ)%DYM7S4 z{O(k&Oj)YPF!l5@-dpjt2V+KEB~eN^V^c-M80ySU0z`ry14b-P1gYnC8K(9E7+90k zr;TO$*nD!TNSTBTim-l!Mus-%*qUG>KR6d)d9`oMl`w2!2l8vF%%>(j-A?!trTcHgG^p?aqFnaM#F^{P#@HJabceI1m;#>(X2&DTxDV)knNwP zP45CXgq^dkGuRO$?Rf64f3-GRf7so8x_{a~x4;@?AlOj7+t#(hZ~LRA(M+n23sBQU z_u*h7`^lOUk*|RC`VpdwnV(s6hF*lyO;b_XV_f%#Qad*#yuN!|mL7K7FF%hze%pt` zqb2=@At#eUM7m5ilNM8X=Qnlre%o{%e%(LUnw?>UZ6??emuN4>@{SoC7|kf4n5=jb zXDjjAZxr0#)ceP_{fhy*1h&XWLQN;sB-_^-98t!4_olhs)UA8^zHh4@Kcv`EmV9t6 z9y_J!{iQGkYAH!D;=YT4A|-q~JHQZ*xmBripQcoCc9#fi4p2-fE5NZ+ll1XfPUC|Q z5k!xYw9z;~i;_`Gg%0^1#R+P$E985Q&a)N^_S7yDi4F%l)lj@LbVK!jKGNwh+sc2u zgU<*1%h~$_QQqW{ubNV|U15dx=TDNckarE6$qc}Q9sgsU%_x&CZxoNR_DHD&Z>62V zS5g!xJk09}F$u0Hv!3d9*B8?~DqyHW)&@)oogAi*3W%WI zmS>S_|Ky({AxLoykuQX(hsd1YqajNf-6LzZ=^@-w_#Wr4z2Z)DLQ;OI&amIKz@BaiAu6(0~6Y0BP6O+cXS?ZO2Ji zX+bIj2?^N#|Nr0}UiPvV9?&EzgxDx*X<{F8E_R$Wbs~6KrEO{)<>K?5^IdFgv;uP| zP;%@{%6o*Fu*3f!VNVA2O>9d{T33-9DDicY^`KMt``mt+;JWX!f zBWtTg(|jFij-)ncJ0l-{$y@#yE2PbU=wT1sbzu9HMDml3k?*xnV0ydZFvJlAz#qZx ztRJ%{1L&ASn(nV!Cq~7gPBOD4b)E%#&Rn1ThS};QYxM5*z`e%<=-Ks5GWgF~7D;11 z*Ne^5*3;5(6vmb@eP2?8{+s*FaxeV+LE}l~>-clO@Qh#3=pPnFRt?O*7IY#~Y@Aw) zT!zhI4m$AC9t^WmjX{qA=0K@lK*~~cw*6_RKqt_A@~wVpUzjwB&pamQyWq?VA6s&+ zP%-!!pIV3M@ywD)Y<|zUq~pbiYR|Km9w0kgdivQBZTTc}F?Zo7KBF5hg*PhZuqV*pD) zw7-kZS?<8mtCgZiyb3SY#DJ2=#Ryuudfm`Gn6ZLks}kfcV0EZ4o)aX6zHc*enxug! z`xLXAkT#B>f#~dPAHv>15d175M&}BY5a&h^92Z#ZTC+JhQpj=9P6;dtJvHuThlz=2 z8)iN&QcUwUk5p_;9Fl^heazH?!WvfAYHcxo#}qtIa0XCmN{6aT%sa&zw7Uffjnqo* zPH_8Dziw9_R`B`T{^`&(wk?3ckO&>6vCOB2`pc-r6p+B#OeD}n+ekExp{8oLP?63u z{E!NxE5VVp(*4!dP_T`T4|8z2;2y6eUPtig2HCaVn)|ItY_vnIrL56c=^R-~v@!m7)}~jURYsY-gW|#W7N{yIEV~ zd3+Bogv!_;XagkTZDhtNb0S!nzV|VgW%=>3oS^L$l(3K;Pbx3kz9f^iOYu{cpCZHl ztK&eCf%0WNvk9C=5{`^>TN!syYdYD}6wl*P7USYTlR@fSzuO?%00*ku5s~LqE9?Q>kq!$RTFroGi(y9iC{1lNULGg#b9-SS+vcrhJR0 zEHevRp;PVW(K`;wzQ=Jp8iuH@ClYQ5B-em>r98|vsoL>UPe-?N9E5g&j24ws)R6yheE zBB4kkGS8FUp@GDMaY|7mx!>+U)Sxz->S|qI)@rV2;lgj8SKsfqD8%AuG}1Ev#sdqr z)jL~`PFMSP?|(I>F_!yM9x|jvARt;LBav*Q6yX_6Bu#5hYvEAah7u#KGjoCbn>&9AeMrUl6H>e7lCDmtWARyq+A%TO1NxdJbZW~ z#<{spmZtP76sw*@5Ixr*fK(2F^oqHJwE_cvCj8FGmGciyJQzDycKf7i?dk=*d%gTN z^B=COo92(=?lhs=Bj*;;+f?w8S^Pn{iO(a+nmFNH!_k;FVIJ|dmg?Du&x>+J=0%qZtw0Jv|dt@1UVgozWBe2tc86j z6gYZAG%JW{6+~GMtCWm_{CNP-Jt_PEmywN%`^R@nDTJfkKLJR)n%<~kDCpk-n^N4rrOn!11r%wBx9%e(xRa%3|?AerPA6DSk-)9iQeqV;5 z|9QINRP&N1DgjiC6Nq~R=371~y=YJy)EpJx=$vEPUd zwzx_{OC3@)9qN$Gl}@Y3SSYl`w4!5hXSPNFWCQNhp<85c>>awRIA(EnQZ*rRt%3_{ zEPf^nE4A3-@z>#00T)l;+UMrilV&&{1Ewo(yJ9BFuN{A$W$l{dttvI$N&#O7kg17Z z6I3x6W?EM)Fd${X%T&3MkC{c5)#;Temg@oa-xvRc0_M1G>bhvYT)4$5Wzq+jZ8tdp z4XT?^dnT`Cr6NcmIK;972EZY;3nnpBGrc~)QoS~3PQQJ5_37KshXIHv_C_J=sfkA) z2mjb3@`xM2V?XZv*l3TGykc|@jEkW)tBKr~a)kZs{ECku_RHzfu*SVSL3;Jtuq^IyA58Go6cT$?k)oN zq!K}dKT=pVf=Tj%iXpY(*)lw5hELBYn*rx-3unv&aR|Yf#=O2XZ!XSWT(p)Ru>p}W zY};7QhzOa*|C&SzzSvF5hl`NCegE~B`R@DY#%T1)4l3o@knGwtyeI0A;|-}B!s&RD zb;HRXsa=n)7!-f#l-!WWHz}-he@0=_r%5`9uos>3#~`WbG{ckx=yI8)H7$LJoRbPz zWdMz?&uNErJIO>Ss($WecA@L<4Zru3)7fzhGaD!7n4j?UC#C|2V@jQDHXR}F>=%JUUo3-QE zZ)V=SXZoA0Yj!h6SFt_DXR?(4!v}3MaNOgYo8*m^?9mB?I*bOB&N01O=BGzbzom zXO;IW9~Dv@&k%QWpgAZ~Jo*+cHwtoT;J%HpS@l)qU8mizA@ktbv6EeUYdjj;Yp?7N zq2a^yf>n8dZjTc=QvBL+v11CB_E~D zv@_6*Y@AUu@Yiwv*wL(ip8?f8p!|JIS3248@Iix+YLGfll*)SUeV3M+0VPU9g!gkc zoxXo|`ucjY-BtGw+xz8uQ$vP=pq2P?^UK_>0C0#%9gsO0KRJ;^07Y!}6s6EVSARZz zw;x_!T+WKGx657aK%}8GwgNc7mz63xmV(O~B?-VCS5cosDo_t3;?d)W6ph05 z-WYLS6alhZIEs>pun_07$ysSm3;JvLS?=7~%&4efPf%o{Z0!w*H_%{L$yeLBL7qJsL0F#OUWw%A4f|d43gbDJ`FLoZq9w zYgCVMstz~VRKoA+GeW>)!xBKA7yh+!Tf3_A#Z=oUok+YH^qo3L#AwCVKMF%3Bu3E; z<+h^%lZ8c;K$1B5Sy?F2Bb%vN;e`SlB&J0Y(F8LC9Sqcwi9|KcT=*;$F$5GS1&eih zqjY2(IcPddAKO74I8cr`FoMMe0SVwNCV=*}inRi56W5NKC!p`BPY6uXl>t;6A#0#n z;#$_>Kj;pmO5}W!K7?feRW67wgB9(fGeUe+v`V7~Zn#pX01K5QXDheg?X4@7 zp_o($SY4LHlrhGV#(Qe$z;Pdyep0_Gz`Ir;$vo_+=Xp^UlSx41`s17H@G_n)imUl7 zJpD;&!td~I{$6iG@VDF6(1nWZUyA~ocCuoUO9DtP3V(+6V<`HDeJ#yRExFl}o(}dC zPGz^7(Y$x5;mR%U)B7r6$@x}}P z|CJ~B1xN_-fF_V8Shuz;iEVr?Nu0#(`oJE$O0AtVKHoXt#b!?ld=&cLPd*$T?fKYX zx{D1{iPUv^Y-g#Ee6fS505nxHt$}-h-39eX>bOTY2Es-fre5{C`M)eORIiEJ(F`74 z<30j=+yEP$yCJ_sfv{S4l&B7??B6eWbPnCz!n7QO(SfQ$7_n#|MOH~{IAl%AvkZh0 z-6AbnlGA!ra7*m47@JKx-_ue!c_k#E*|+^KB(uy++ghqf3g#XzZ?Pc@oC%d{QxHtQtINb6j{q&S6 zabV|o*LR*accAvrawwr+vV<`&4S1hes+;0Vc@qroOljwC}m{6D6n)pF3r5q7mMSo%O{_| z-~7J+OTqHc)M)SE(S@)nH6^1%f+|(tuX=I5yj^cUe);+OVt##F8QW1I*qkM(Hm0<9 zqQKvzrJ5=JzYeJLR9z}iZ}-6rYw868T7wrSrLmSh;0=c6U|~`OVa{29MRdBi~Z+nnXA^v(CJ;aV?q{3fZiZL#_)<&mX69$bazC& zW7#y*(eI43p7?1lcmwPVNws@dpP*Bx5U0^l(=}M*Gbm!livYgRS_8M5XeIvftP4|; zc`5`T=no5QC^Kz~W2rn0){Zvrf#jd!%R!N0h7-JkmuvxU6ml7)3#6SuEK6?#ECJRu z4X-0e(e+trer?^{LeuzD6K>XV-C#=uf+!b2f(K%o2q5Z+h@fQFPTbdmYg5xIridYe zekve7Elk#MGR5GuO9U#O$pQ) zlZp9D#jG%;Y2v~vm7LLZn^E7;(Mz~r@hYq4!`qkjgMWW@c31gl%f;fP*lerCv8@`I z7v}nIeR?vx-#pAp`{!=^?$!CHukmZf8a^QUae;QWp-|v;}f#E+Fq^4#hxUkbv6w#~7qLXh(<_0#cnRhk8j%%L^k6p)SYh?> z`;5l<0;7FtI7O{WK=uSz+lOB6I#MvX1Vb+&4Zc+Wz>4>C3Mz5by)?tj`+>QCxiQA} zMxq1b@qF>QCn5)yd$zQ8nB`%>_Gi4|Gck%bj+#D+bZV zQ_9HkD)W2Lu2vJX#u<*!H)UZFtqmp=a9=E7mFrbm=c~i9J++`y)3)c`@ofL$mk-T$ zUADAGs-yV_v?(RR=-NuZeJ#YOv5dM7}-MHWQ&=p*_+{V_v zqo9zF$xIgNmeNPcv)O`5%V5DuP&dtVYPtwm{u6+@E7)-w2BIE2ag(;&Who#*r4>Tl zkoEv4{{MScix7pjaXfft9M?(HHswZDt*TV(CU#=KH-7U*UjPFWq7YS;&C5w>ExH$U;i_X?F6QTSMuk5zN3yWGW%NB=6#;x=rN9~X^ zyX3)sy!nQW4CsXFOK>%I^BSHMVognD8_hS|LZeV)VidN236N_F#2!8gR!7Al1FV_X zHap>#TIPsU+~oXr#Q^U@CLEX2(|VL!_L1)B7@h5e(Lgx%#(~+OhO3fdb$cCy%+kc4 zD(tT|H6?%j+#pWRK%LT!Q`8z)NuWA``Tx+vQ_isWm|PS`1doxLDIuWDsw!jXBmDn%-!v@-C%Yq#G6{{Oz)?TJADE7P=R*dv-c|H zQHa8Ye}U}+1Ng`^JI^m-gY6 zrPJ|(q?t%SbVcNr!|D6`W%aaq{bln|*Rz)GUr>+ae&ih+5aW-%|FdhTL6QI%QJe(W zRu^VzC7Cr-cP3G-Zn^ps7XTuJ2em0azg>LWEWUrd`?R(*-PN6CC6uEKPeOZbv{mOw zJHWhP`8fNyQvoNc0?Xn5Zjn?tSdZg^n8KpI6WO!7A!aqzDB5R~*fa7-=(1DBc~nW~ zA5~AuZ!Pc^rW=3~O&2ICk@Q3zRlwFUg3DqX)@(2o(wILQASF8&S~*ZF16xOX4B@lY z><@#=D&H8=b={SE+q$iDVJ4WD>ZKvO^Oyjju}~$lnu?OHc^gSlCI-ctO=wa;v0Q40 zS2gQXBw;#c1{|Yjo^cvViUhJF3U!_%(j?|Pr1>f2uAte;yS6zv*EkVa1h#6cl1yK0 zNy87(uzs-evW5vrLIi$Kev;(WzDErA_OdEl*ZkbWa#pngx3dmqJ~M{~>#8^${Qb;s z-JwuiwwSlZL4F{PSn?qdjHS5>Y-gVjZtJNeTRPf37rl5q(4|%nK5zj94>f}LlpuufusgxS zKl}GB5j;l7a)cXZDba~vSO|?uFvp^!#fWM$Ic$QlXTtv$2?QUI)Ta{F1We5HG|ouw z>=X+Cv%Y@Adf1d0BfE7-*)n3WU>ONTE)lZFrI{1g&S0`&N<33mpK19emWb!$+9~UL ziKz1z_;OYeaZdQ_d@X#zdvRoWv_$Ed5~9utPn}Neh#56|D|SQD{KA_oPCFN!COw|G z7o~QVQ%=_ssphobRG5=wOHYNTQNa~7F-x7dzSxXpZx7DZx7}-P>g)C8w#52eZ3t~J zB|uoku}b8B5xH=#mxu9S0q(8}EHGMlc-&Vl*~$fw2Qe7~b&W1;+0ki$%9H*v#u<-b zB<0$;kwTY)gqVHN>UZ0Vk2m@IO>ysGiz=Km{`q&8MVZ4#&Mzn>>zTB)f>&yfF6*e|9rP?glg~wh8 zB2zP9K+GxQZYF6S?KaQ0ncfRi3zH$W!IFv+ho(B^EBk{4s<31GMTjwvA)`GU3NaTG ze;H)(HjHNKv{_2x^LF%-UdnyfLdS@Q2hM-TJ0NAXpw8XZ>&fD z7lnMOstmzBTHsW*{cyW^`n4}hy?brmu2%$Z{3To*8@};Lh-*i@#F*?vxV0slAQ$yl zw35m)*Cp`Uf!hzxi75z)R_49(Eq00K?I6>g?Y97&o$F2;F%X44_IeYNh^9zXYJcw_8|9%pWI0io+iVM zDy#W+fjr5^9bA0qhnEw-A6|ElxW1~dS8%)iuzPy3;ik?5gIM_?1QH^*MV(76l4O(c zQuOEZepRZgve;F7re{!2k!jN$Y7IiUk37iK>7zN74x8 zqRB{6n!=Su;U!vCyMK-KLd}0JwJNIGEEjB-N6TPsduYfQue?|SQI`7K=gs%K=a!?D zBGJvG#2|%bo5s8}P#eSf$W*BJ^ytwnsMu-d80Mct`}M{Ed(F9tP9_Zh|7qYrXQ4!E zn19WpmXA+NM3TZ&pVsAeRgjZH$d)?Rs41pNSbb(B(B+GM!3sRsjs3&5(i=?%nU7FZ z#u!R;DlRla=bGgz9Yj{oF4%CX_l!O37rPUP`{58>BFv1DA!-YOXvj!Nh>V@oYmBF$ zW7u3ogL4wq$>fj6#4y2bRD7JV69_z|WrI5h49HVMnNF_Vh|0<5nUo6tww7op#>rP>o+!sD6py7sr&`r0ELz4WZnXNcT5PoNr`)gV z?Z@kzBBY{?%j9hUCBuivhIV_j>06pdN~<*l*C!5SkUqqHr*Ao zOd$4ULkn8s%o5^apgfg^0&ym`vq1{heFiCTQqj;H6i2_A*!eGl_8;yZGY9sHD!}Q z+Zu{=JB+;wZx-&hc4s1FHn0rFpUx6w6Gb40Z0T^!o#(y0v4rhU+yBE1{w*wy{%#Z} z!wMnBq5a6qc#8bydl-WVhVyC4aysi^RIM>AZKsg)6gHT5*c{b^&I5q6vfbXk9p3iP zwR2RcI#f9LF*Mc1`NL<*_AbHx9jEDHcgSCJ|Fk(ctdJrmp zkT+jSg^mtD2l=g2z7Bpz=1 zhprd*?4gi+*kwQd#P{3%Ws+Pc>dQL4yGcuHOC*YTt;kDKs=bBU2~E){|H*#3O7A`& zf8Osx@Dq76GEX4#71UQ*;lKU*i!LHnsUu9MMVA@0e4#W=AserNz}{pNJtecO1dwnM z8>qQsBz4H=ta#j3zc>4Mp`3L{XXcbC?Dp4giwdy~EW~SBU1RDH{)-V*WiB?ZWvnBw0`tGQ(dJfUF zSWRkOeNus14fPT0x}+y9 zl$}g4YcqxG>(@|uJWm6b?wBT~w$Xt@!SO_;-FHjp=F()O zQ=cr_+-p_z4qn_&keM}1BV6s^{oOA*ve&W#-b_G&B3JHeir$)0o@4SU}We-jsR^M;*lr>QAi z_ru|oXr8agdYKm`UNInpL_0N>yJ|tF4$9FZI~Lg z@#{v2v4s#-O*TxNmusGca>7Ju)a93i51<(dFK?o-FQJ*}iWeKyb1Z zVVs!NqzVJa)`y#&#?YAqaiVilrP=QpV}PiEl7rNsNf8v02V6Yj6NAzPw}7D_A7~yK z6Aew^L$YdOO*|Xa61U!MJF!yWfB!g{=3%?K26v}G1%9l$J4^`_I_6q>^}vWi{&7VkNSZ6x@}uWNW1E z*RS7Gc?1&`sc#WcoSDEN+f|SRsi)b*A==Z$Zk*UxsFrtjD_)7Ka_U8VJ6Evz-0b60 z&!m?%%&)f;4T2G~o}2;`uZL)?!_$-^R)H_!D;SV)f$&UUh@rxh2;@%_arAQluy@&I z0!HWoK1XxIL=Sa)AyS?)O@|rW`L0SDglLk2-*ac*6N+8;ZtUMGV{D|~@%GP09+#VB zjnRnD_aRT3M+VhSOizVke9%CijcAY$zE8#=n-7Dt{*_DYncu|N@BW{?sp#@g@%J@| z{06+8f#`h_l`D@XBl-Wmiu@x206(v6T$~zwyo7bZs=AVG4#wrfJ)P$VV7}W2&8o(V zU3v3pN_ihl;ZonR)D=9YG~%4x?+*D$tr;ZW=Srq-i9W*#?m3BSRe-npd!Y~0DI}xv zeb(9RY;3SKlq%4M=)N-8JsN+m3X(}7FHX!5m<>R`yj^^HzgZ&hyH!wZ){E`3ezlPo zI(`HT2`I3;sRYRWm{_g{pap! z-zZNePCuga6~S361h{#J1ebtY5$?@=e3P6u4uT;qJ;vHy**xxxAHVm%j&Nw&0$l5< z6H3R6Lr`C!i6WF-Qf!3xSk(X_@i;97sQ+k}ypY&CX)_y}v0x7+k}Fh!@+wGLIB2ty z`onb65M93m8_o&`3Zwoz;ck(O55mC{k%BFV<15{vz| zlyn4bATQ_WeT`fk$Ehj8=P9^UUuG zA6_c4lrR(c7wq1uNX~FB;ibl}Rdexi#-Fe?m8}Z-?N}L`O(^sEq4>I8b~YiCxNU9X zwotm(HWRUduc-`dXT?+=kj+RS+K$DAc3@5@=Z<-y zV!~Ija2=h1pr|3_L}BkK%5<7mo9={!886XexAjC$XY;bCF=gOUOOUG3;Ho^{6ju{< z$S%)LbS98bW#?AdUDTOfW8SUjkAKQSh}l%>PVA~?y;wdU_a_YpZRge^zAw0T68+8} zIC1k0)HQJYd)C(^9mJCaM~S=#q^zqnxWYlCvy^y+ULeak4f3x5tesnK+b|GC#i8U! z8lw#gBp>}Q+Wl{%3+MuZ28mHLu@O7ggJd}mQj{e+Hd=rP93zosN}}$J?wo;K0Tyit zPTpYR#7!9}g*3zcn<>)f>%c03z~WL$Mm2ZrxShlo!?_M@?o^lyn z>#{lEDWZZCEF)kqf_x@823S**sj}aT*A2tn8FE9P;66LA>*X_ zeeSbISus7%%n5$U^8QF+Lny>h?wDeck}KmF1Q@QjLJki1glcy=+H`Rle#_kiLk& z9*yxfPqSqvt3isB6rh+3KgU0LT#gw(G(t?z@birKc6_V{oxEI{geN*A#{(QQguIF* zh?R)2i77(OqAe<5OymOP=LYd4Q}8S$^)*uTmI}V#efoC$aiK~BP@+g{uPXR@d+oJp zM_nnkG|({O$fP@+7j-43c&*pQcdO-x`OLpxDcCjYd0YDr@k;AyyJPRq7)Sy`T;r4zW)=}BKqaJLKe`TELg|N1^W*-{uNRbvXedT# zOs6@aNiCD`{)UQLEI;g0A!-lCI<3@aYVx+D-koD^m?}OAc+z3+-2Z`TvBRrZ^Jdeb z97E1{XZB5pxNT=JGp?i)?C=1AYnwi;zj9%s?S(B&84%23lfd-GA=ljjD0co zw=JF;^uN41bZuXku&z~Aq08&bLf`K?uVq)IULV?xF>}9Doj=~HvHlqO2}6da|E339 z%)nryD0HQiH&un@z*Kk3vXhp9-j~4{bLu5W4@3Y|fch)aEK+N2u)07|ya#lN%}}qS zT2x+NV*rE?7TUUP+K!99D?h*fv|p5ZrlF)_0xegq6RpZ#69T+ADN}yf)~#)!EZ^#4 zzVtuM=hbZe{C0D-tdY&65B1)^^SIevSBu6XskEcZ2+dz$W4b0Sba5fg&X`EK@cCgK zHOvYtP+W})Rb+7#l7)B2sJ zT2(?2K>~@rm+oBFUK7WmNIW1##Ia*MXJ*dD9Ls%F&Ki}GJS}^m6rpA^(ac~;22?7q z$+ANX<4hQ=sf)U!U{V4*hjE99;bHs-!_--wMJ*@Gk2-6JG4Vz8bmK|LuAp>*>6tSy zf#&&|=X(bFY-Pdoxj&_)RMur?8BELr4}|NUvg`CHMr2TW_l@!7)sEQ|RYgqO>s_ViPlbg{JSrhn^zvh+&O5)aEsJ(LSgt_VBDF>alhi=BPMWcs=A+m~Fdy zp)GCT@*PEj`I#GaW-WEPe>=(Qo_Z-3e3e*&=@|jy2Z$&|lB=5E!WCEXEcN5K*@l9f z2t%-y`j2t==%6BGk0nc7-am#xVU2St*8Hj77IQu*>RpCjXHok{dy>(n<21z!-p7o8 z(|E*puR$b}RiAI(MujKGyUz3C&c1Ytz4K<6G8w{Jh6g)laEE4`nB+~qBk2IRvDekkb^8!5)1O4YZs6v6@$llF+O8pMOQMbh-?;=p z>#DZc5#b|!>*9~c?dN5UxRWxRNO{@?8I6sSiA5#AF`0+}k-?uXb?n7lvY8(Pme@sa5-(&6; zgAmUYe!zW7N7vk79<0(Ag0HRpvuW?v&EKcjTeDcNjF6Qgroa*z#*Z3m zCD@0Z__J|a&sS&Vu_&X(byxnCbsx?%AWsFQW}S|B#3PWpoA)jBJo_gAW!JXcGz>%~ zS#~aMX-i>%;Q`)w;{QK`2Y!K}FhdK4wux<7LT7iSD7KTrG!L1iu@hZZdpUc~jE}!l zq>pn`Sq8YJoNA$Xq;v6BA2_h`5*tzq69hjX{`XGN146<@QnM`6&pMO>|K}K#b(JMu zN*D1d*<7G4=IBSpEFWVD5^f^g7g!n5J5ZP`ae5ApOm;s?L77zAFbVg<=MK&5uq&60 zWPLc!g0-MQi^CP1cRjFM-kG>Jp+(jQ8o=a=v(BA|-;d4XcyK)R6_p8QX=KLXGE7~} zl!RuFM~EW}4Fbigl>z1-NHlcLxE_z(aH02je8m(_&v*(fgoMcGtR%HVf(i%D$ZOAN zOY>xd#BA1WLbDBJ2sOm9jlp^AU5n>F{-O>)ieA?+eJ)6OK~1TU=7l-c)2NjhcV}{` z{KKaN@H^=9{wkejF^`lT<`R>7lFSaeAf^@NEy^PmrGSbPMn^@^IAwwSx02QC6BzP| zUhuhZ&UuftSuk<9X5cIcSq3O34$k)-;?F=cxJ%3*^M-Z75=E>h&~fsMK@{vYAVyeL`hJU}dhOPYem{u>qYJ-GVfJAKd1f6MB_>x;(1ZSa5=!pTW{7N`W^iG3G``|7N@ zT3b|VNqOGF8?(P2w|ASK8)`%EK7HBTZM%49N5nXKuv{@D&OV4-O6nc39BPInpBm5g zf{K5^2=^m*>x_NCV5q*CwJ`t7NH(Ev}sv^C*=5Oc9~ zE(2adlA2;1K!IXlATl*Srox-NMkF(uEBl%dAv9PtLFf~RYbgX4EhT~@r>8>i_FQ6p@ z&eJ56OAQ24xL3JmKye=}a}2zML+IsTUTHoM2oYZs2a_f~OX^-#edo}_>jqKquAmCr zENn&6xMHDcOxb<(LW>cEcd|-|sdr z&sGoH_RaJ4#nO^&D$q5R+R->>Mu1STReRGLXTNo*q~5O8UjZ09m)$suC=A!>OQt;;dq$Q`z!6GVV8J36vSI--tk^)Z$R;a4 z2WuXI4UfPQ@c>9BL2MvSFiPx5Bq$Ih56HwGyXVrED(ak5RbB1r8Iw&mGw$iGnyGX7 z|L@c^?#l2}SyN=7kYM<3!qv7bc|MKborMm$zW&y&jT_h2FZUMPe2qtY&v%|a|Mt5d z506t5D{`wO2yDl{ibnji#6!N|T5o=O^U@ouuH62`S6>T<;zhSdC~VTN)Qp2|8WUkd zL@?hJ3-g!>9tP)H6W(OI>DPyjRaC{}?jtGRV!CnT-J9>dBV3tKxVAp-n4{x#>!-)R zJpEmeqeao+h|907Y<{-k60-Z-yIT()Q|Z_gEzsY=sy*RxzQLD~OP4H@nhO{HqwDMU zws)-|gM&i6-sUIo-~Qlgx3j<>?E8m%_qO-89zHQ?9!<(9i8%$r)3hr?Avsk%t7d?E z08zf%z*$>2pwH}|=(LN72Qk@>`#(^8wG1y?i7{-R!XZ8R-R2b9zJQRUBWFfGuAoO2%7 zbcWQe#=7ymP+|sGzJc{#AJuv0j9%s4tTXtYayp-WCQTOGS#6>@c3Wp&`u`3nF+DU* zTG_h$$yTarx!Uar{@$>)m}(tSwE;8`zM%LOxEzV(ID{g`R0AgoHyE8E$F9P*RLKYk z`v)g$OGzt^3Lvlz$`??I+lt~i3et?u8lW;^zyfTYw!%_7y3mdPIx1gZT8P3(5^sgX z4dgNu;xH|fs2FDI*}-uCaM(g=Z^u@E{#h$+TPK&-Y!A;n-K`ZC~IOH2g} zZLhMFRYu68p{R&ovVJCD#v^URqGV`4Rc3KvQGp!dLIl!Olz=EJQf~>pfyxlm!5ry^ z;wV!GVSO_Qx~LetT3ygwMPcG~GE z*9ie?no1Q#D$5JKND)3Um=yVi-on4f+4)uy#xl}>dCYTSLE2e2#%xd$jk1Ff0zpAFX$CF)v2P5Bz*?`0p3^fG=Ax@AR?#?!UkOasBT7VZC!`WF7~~ z4;B}C!*FvOVio-`hCB2V+p%%gFGqF{ZCqX2e$aGV7gX$Tp<6{B}+f-nJK9*f896%MSN1DLy8aJkF?Jf>Pr>2%*Kh$)($-u*2ia>zli> z&50on6Xn|ZBo`n=!Cto;s-wdcmvq(xRw2m)o!}!+3zUpr?gwr6R{dJ?>A+9lZP~wV z-NEzMM#kzmG=sHNH!9an0Q5I!G=Er+fhmbK0j7hMzC$}V9R7CGpSK@8dNv|);6~}b zt!uwov(%l##T$3A2d|4+j-3JnDs$Ck8?NRSM$!T{j3Ah*h?bLHX!3wY#j@&SfiY5i z+{fgsAXwdyGqc6>(Ak53dTT^>fCOgEI`CgknDu{8soN1`cj*Ayo!$Gv&*#QM90dEI zohU5vkceunJT(7x~I$0gO8wtk1G-l$ia$bIW#A2a~Oot=tK2I?!07#mfdcL zUuJ--FlGpOA15Vs^{5Cmqf}@)9KhdG@-9(1sJa$Brlx;|xf-hWN$-@X$M@2U8i~iLHRnB&eT!{(BT$QM(UAF(&;bfg!B6Nt5)*5B~&E_ zGY_?S%UH$%$pD%!NEXAY(TYA+Dv}aIj;+v>dd`i1xG=&lD!JE|MM!Ee`Ke+0n$U_= zBkV@vu$3FAr=*_PhDy$92$p70HpFSFM+2k;1T;O?2-QshcP(wZoaj4|8pi}iEnGzX zUK+64CzZ99_2?;3@QiOy=pAH%%S`^v{(a_VNNcks#%6|YI1(ZNT0TKul z3P4dp65(^4aJFxE<_-IP%>K%qtz6;C_U`S>zWLsJ-}}C7Fom|x+Y*dx)Z^v0EV!87 zu`auNwt4Qyy<7FqbwP8sx$(u#PaYjU`Rd#6wWi7iQ|S*eE64Vzt38mh>JUP1h(|QZ zaZVEsjB@g71uCi{tT;2P)F5Oj)^N{ulhT-jE03i`s8Cp**k%ovScG^b%FsN}Cn9CPl{Pg-e zA0%iViOUo;)&aip+A9OpE}uW|KB$8_Wd-O|HjCQ@Oqo#npkz@>tm?ZprCMy;%&{0# zWed~NCqHY+@G&%S7?NNie<>KEc7B^!{rH*1zb{?b-uvvv-q+vVxb-E;vescOMpY^2 zxGPPt#B0)ApFyW1aW2kbqP!HmF`Cpj>;e6y3W50sHOPT9fC`jAE;(WhNOzU1blxPI;Ghu5xdO$#342#nbOIIN%#h~xdOwGywxvm@zKuyUg}0%w8gm2IEX$3oUpZHM-VHg`? zy{t>>bF!(htzwPs;;ZLpm$tWl_~ZUb6`V_~W&l+{s=qnx9hjuzu3B@1H;s?(-u!5{ zM$i+2Rt`tE9~}O2_h6h8al%vR@knJtk}`TfVo=Qm(uJS{7zj4x_f zAI-$N-wzhI_y5bB&8#HGmg>0-1uZJjDvI%yi(9V9a*S7Yr$66WP)wwf4hx&G7CZu# zZL`RX4Ynh)qL-`+BZ64zoH)Yp+r7p9iFbnXJ40NSlk<=cQ>(;GoQ?BIo_Q9WS(Y$A zF`FZJ>AB)u=8r%c|0KFNo7!=nIW7mHI?saG=!guuslnQs!#1#ZH#80Rm}*WO-W{7d zdDJ>x;CrKQs>3M%IckY-@^`E8$jI%T$x) zkyk;qYCs8%5u?=}L_0#jGCiQgWf|oms*FTVx*&mX7Op{lsGgl4<4*^EXBwU_?4y&C z<5!&tmi3mYbGG9u_z5$Uctp62CI>rW(t_0~$u&A3#l`2>l1qC0qLQT@!-b`lZoX_(;&LhcK>|KQs{P`(KYn@X%5-n?=4&rc z_jl9t=iWQ}*%#l42YfO)kgPi&Yfv9Sh$IWp8@BPXyK|PAOuFa>G*M_6%SRQ*wK{4u z3;V-ZB@Eotkio}on4FAZ&8Gi`Du^yBS3u14=GB{llsu-^{}Yqr*64$?ufO&Fxfs{I z$sd*=XC%2NUE8EMMzdq^2kkg2;7G#{#Bk8lJ~CDd3|3EYV37yFYO<067eB zqO#;&r9$ydG5m3-+%tqWxN#8A(>M}j5d+>9~s*!ZO>Go1L<1|x~;j{e`_ZOo`GQv`sV4E-OFGQ#{g07uK5q!-_JH$4_o5eK|Wpt$TLL> z*0?G6jqKm75}uB|!pI{k1AThjZ9w~ib{boy8{{`XtW ziOF8?)a76Px_PG^k9a%labqWlR|!b(3>n^3$n6a`th?2^W@aDWZ~M?Hpbpge%FdVm z@20OU7mHobyh>v2AmLfpp2!kUAKiUqFBBiT^>A!@WPaPtmff-^{56!O=mCf;GDWTH zku^u}zwi3uu)!f1@e3(z$LKyZ79PP=_-)aK`mbj0AA6CZi-*j>NZ}U;9b}_||zedwn; zTqVN~cJn~rI6%9_N~tE4-=1mWX13}cuc}pRoLbd-jGEH$IqL8-5>T}7N5)N*UQ%Zl z&PsRUQfW+_l=22-*asExS97H1>&dLt`8d3_wDlM{af3~bs&rl3R;}25$MwE%5&y3| z&a7;O7qbm@J!*{6vj>Dt#F#fQ_QM`CoTwT;#j5F)YxZ_VZ4Zmpa%@JIuFbB`?uP5BoM;7TtJkYg02j0fl>LS5#pO3ruV86Y(S#sD)p}bj9ocvR8bVZ+hk@EO^BjFMFVQU6fTICieM|) z+G=etR)QA(080z8&`K@D!p1@bD-i?>3wJOEO+wT-Gro5h?^*7BZ)UP}GrU>fa^H8( z`4&UAtch^HN@I`iK#qH3HKI*Lv6q?96Ca;HbF$9sID7F5bYz3Sb@##hXZNel@t&z; zvj^Y2`@r=_5E-o0tlS*iGUk4gOr|mY15#!xOCr`WTLbRajuPl9<*US~T>hM-^Gl#7 zeNLZ~ck8WK% zdgwsjbo#_$s-wjqa1R`#OiM4d3_MC{ShJzBO;DX@vPw^y1;n(6^u$=JzVZ6)hp{A+ zfks1;hZ`IgonUjaoxuu9p#TN6nBSEH1%lVM1U%s`|H4CIt7+(x9BtWR`EQ&kSjXRG~-(-Z+ z{0m7_RAmvfg&C%tczmPJ9Rm6mPy*4Ih1C?ECVQS|N+R@m<3N8K5+9XfHkU}}T)*eZ zhB?7&Ikya3pswSHvLR$&-?&}YhgV`SOm7v#mh@NG|5DrWqd-N(kfvKZ*&?8 zWlVX(`U%>J-xgQ4jmq~6z3+btw9zowz*U&Oqwz$wD0>6O^9bZC0Zm1L{xD)^H@DpT zvb3^uYkRz@BOaUY7M%#wNb-wOoS+s(H~0umTqq;ZnVA}$8rR?w4l(wiBc0u|rL^kP z!rzZeJ$P<}5qh*COY6IZZH~0|Z{IqzqunX&&)@cAgwpZ1c!0$Q4cEbhzJb5k!9wC` z)JFM9iXW(4{0PVo8gCmAng$bh>ilvq?$LddWAVR?woTW+Len_=qMFnSR41{{k>}tualVVfb8n3e-{{I0dQ{FifC~ zf?`mo)XRj8n;{G{-2_FKEOT43s4>g78d}W6n^QzXF-#|;;AJ|mpj^i0 zfC?5AF9j;l_FVQ|&N&p(DnCfu^Yxt5?|eOd-sgSZ=T(r1l*OIiNMT$*5fr_Ptl&gv zu8HOt_^DWmDsjWcISCDa-2fxHdivIV@x4wvRrVK=;W2n)P=LB%`CB=QQzF8q=)$IW z684RMckDiV(rSAkkg|)R@La+Nhv(p+g}G^9SH|RcyrHSRqyFmcJ>^whw);|E0xq!~ zo7WmDY;2u zz!a$QFUVe$ZA_N+_u!lx+dIsbD`jTOSd2j->`us>B_)AQ>P1{u*S-72r9W5hHhG3U zFZ808WO3k&n>t%xn6(7pe&ehddAqf@zwsZdx#3#bsRlg#h1te}%v3}4bkE(??lZx9 z;`Yu%X3Nga>pU+COqhKBfqf|VP_?DZ{0C+hQfI{$W~PDz=|Y0R0J~$j;bwdFxf_RT zE{Y05D2SpHW`yndWQDw+O{FIiqe4qIyc?)i-TJqC)1F_?H{D5iJ-lQ?zT9bQb7`gB z;rMEGM$Q65fLb-+7&c#M{I=|rweJylTC!n9&Vs}Mwcmha#C)-7%iaq6;8W567v^sj zs8uzlbZLC6o(LX(Idkd!^=5EC+kWum$1C31{^?2&&CKM5NwMc|wu+IYKx_PztJ3FX z%+tRaABD%Y#89HAdfyWO#9RcHiyWD)V z_KG0W?E?MH`keTvFgZBPGwml(WlnsQws>8(OygD5Hy*9K2F|v)C`%s|hQVfYSMRoi zHTjDS>oe!;Bf(CHmQLG&>I+~bc>H#Xe&c(~q}O|Q9;-clxkYR`M2C^Y`+e4`<4 zcJ$oXaD1LU{dTaEGgn$G>aG)_^A8M!OlvaYB0}(awp#m&%TA{yN9Uy`rq78*?|M>U zxv}e5EnbWINbT0OS<_w%@|^IkYqAC$OTd8qExQC{8>|hPT$H^qE+Q;WH&vq&qr}0d zqpjB7vsc@W*IyrkGDJvb9WfPY#)px4#-xDNLZE(zfJf0?Umt8Hid6fv{84iA;;jeeiJ>gYe@1->MnFNU7@#Fg( zSwDj8sBI905xQWt0@`-){yxfJmC|M(p~o7MVk26~v_cfH@vzhohUDxp%Utbx#Il4E z+}ucHhecq95vs8vG809K97>Txf|3y^H`Jda4@H5$``Fd<#2FK+nXIC1kDUOk`7k)x zU~nZMF4g1-4uH|{KtHX&T7bSePMdgB$Y1%kQspZw!u+1&#HYD$bYvn~Ojp}kK9MOYm z=zcUx1d)M$Fr09*FiSS%bgO7#kaZG*5`Y*dN8NWobp$}u45?6H=7GZ5XJipCc26R) zvjc?>FWm7jXd{ zkrw$uky}A(d}7R)4~a!MypoU}g+~e&9=F=XgcXOnmf}i&N({3(sVS6P<;e5c;0Mk+ zY~YHzlpv}NRo$XuSagn@O98cnF4(76AclB_(?v{DLAevl6RuIV-^GGBq}ws#b`yRy z4lN)kC#AksG;|K-Xfa_xN%BaHC&$<=)UE)2NRH(gs3?-?WD0B@nyI{ba_V}p$bTbqz-0=C3NO|Yr)l^7*a)0nh>EYSr2G^R~_MbaX# zh1s1u-gEBE?Ch+NZtjoW**m+lckax7=brETj%);fJP#djNNh2B6s&$In`-$PE(FUL z1GvvzJhQO0{Qb4rAFki{?)vQ1m9L3laS_KSzWm&oi*MMVp{ZwOt-Gzcxo2p0?j{~e zV&2v$0ZN3LiU(#cy=i0EGa$~|vqwVjd~oHtGwlJ2(M*6o+izSR5j*wm-rnDqApO?4Bm_1nI;7=sY@nJgY?9~|XgI;fpS z4x=brf{=~>9r4#CY6i3oL{Xxiv(-k9b)Gujnb?P&9o9m@osG5Sy|0eLmYglY9ToPG zH%8_&&$ZyrO53|NWj@Ra{LHVEiC6l%_cg}xc~ae>UA3%@91T4+e2#?*z#E~|>v9BZ zVyv43^_3$%`}p(i+lp9ZMQOzAPHudt%ViD7j9l0E5aZD1Xq8J(OS?YC@q zb?ph%++WZ-_!gUTK(v&wa-OJHnbNozS7!w#isN((gYnDX_8r{46~hnyc(k_s>Q8fA zgHc_Y|M}QS@YS(As!I!4JKh##*!{%|(+1rO{(m}JcAS2Czb#+kO>yn5uV(F7Xjf?H z{NljJZEC2BZU6C?o4CNNR{CGXKhcN|KMY_y`xi$t6?5v z__t;UO!X(5X-8UmpJ=e`m2u)wbK!kyC(nP(UV5Bzz+Yk;Z$E|*I?03xt%2&XfsV8k zm#rH+9=0!QEGjsB>fNPqm=N}9K3liK>_)< z6d@55y~$WsgA+sGvlf=ulEBzmb~(6x69DI>uzKV6-8`>jF&vd8tbz(-A3>CiAO+05 z#Vx6>((Dxc24I)-TxzyA+3SKe=JFiRwoLV_U*~_D2XB-#wF*Uq(S*4_!z9;}=aCh3xBP2q?bbp>U#}+-6*)uHfCiWmwWvOk6VGii(bP~h%s+`y zjoh$Ru&CcOqjo*df1*2#18gQmA(hP^5%@4sB#lHV7t;w5RST;;+bbay2av}T{h)f1 zL^Co+Yj|TJMNb%rgqRlTKsZr(F;0FODEf#(X@BgC1yFeEys5#lpa>|&kfSJIpaWD{4^>t>< z^T2wfE=@qLC}*_lf>l-HUi7F86uIY-2$^OcpF)3!C`CohA<2rMQ2ZBV=Z&HE2vyxs zf=Oi4RF=ggcap;)tz*^~sJAh#8P&CKddXq95S=jjpp+R!2tX0w^L$Q}2uV0@5@;g8 z{YHXHx&q2kL3a%pKT3#kQKNx1YH}$xbwV1ak_tw|g6AD2Q@YYzpq%{_zZ#;6F=aGf z=@xUy7;#$^?Fn0s-TxDSvFi(s;t1nAvnM8kRxxOx8o>m#AyzO3{8Kb-1*Iw)XeoVp8h?F9eCyv^vJp{O2_j(@o57@tO?flP<)M1uIbe!wgR^GgLb{1W1>!F5| zEnhjPG!JY(jI(`Xjg8vPNVYZGsNMeDBx`QlP<{26_B>|){hlH0?(6d7+OHkZuN4ga z?4wl9qPkc(uUJ=Kx4!joL$bX&k41B@hiDIMX5WXfx`?6nhyM(9b@yo_PBohL);I0h zuJ|x>FtV71-g@D5OANK=*9m1ee(zYauvE=m`YfL^VNiQGI&XD9O}#Xb*NmT@O)MPcmrqkr>oc~ymk9d=#S%Fg7E zG1P94?+<+1cIXS>R47mJU3F`IYi*37c6-#UUh&ttR&6~Lk84s)4k3WZA>v>S6bSa3 z*;2FGM(q))>AMCSwVQF~+x@6NmVRzib;X~@589~xPVd0*=(zcJb4}%ij;6@4-&!!$ ztCriS-HgW1>ONe$C{W(&{;VBSbz@_wedN`|-M+yQIKD7I|J0Ga(pMMozV$e>cs;yn z)vL;{oQ$J(dwjF|lOGyC2gbabrrjX;sA8Fo+RgZ~zBZg@_~iiqgdf23(hfh;Zi1L3 zJ=>XouAG+qNy-RGu$V-(Sf|-w*_b_LJaVCUgT^qyvl5*P8}#;7MN(x%$$;`)+^dn)EBxng zGAax{;Xa?r^rt4mHKP({P_x6J9S!Ex2<8~+^8x)!l=3mq-+_^ZOBqnazjTDj8Us8N zJRX00XK?K9;P|cn*S*6NLt|;-DQ2@Tg5g*1ya34Y#(4r8)snJIrn9-JcRt#_py$it z(s|1lhUJF*U_qj?th9W|g4z{}OXjhR=MRjgQ*Wlj3!d`)7ip2ritrk;IZvTjtjZjd z<^+;E#g_=TW!F(Am4Zc1Pvj+r7AzcW`NBdW>xq&7yx!EbFL;9SbWZe*zI~a_g>%VC z=TR!dm4FmocU^D^l%z2w{Zqu936P5i1p@gVkhd2LC=y)iH>@V0BN-I$4o(5_qN^mE zT){jjLf~Zsq#TsJg)q+Ln75+deZny2p@AA;UmpP(U@kJcAY~LhckOe_e8Gr)%QS03 zH?$d#Tycmt8PNK6QHh||lt7Ig1X}okdEr3Em_Z%k`QpKg>F#IgC*zsaWOmZam8$l> zIw=rH-EbR+w}RL^GtgbEab~;a+1zfm+m@4kRVLbOVxcD0Z1kU3+Ex=yH)0 zf!b4juI-XI_)wOVxbx>HSRw%`GHioD-VR09KyVPlLw2CJf@I5;B>W1?0gTY**rgB9 zJyjrA9$fy>5miO2a$CO03|i)zXia|nVCYWX{w}2$3^&pErBCMxxUP_=?eDlHZzkf;>2O4AF1ng?rX)i&B7mRQ;< z4Y3x)+MrOXv8XRC77RY9P_UvFw0TItu0pJ?*=>@V%ckzS-KNdfWUtL!JpcLsIeT_y zL&-3N2L8RBm+e@|M;IR`u-}lW+in8>M-L21!p8gWhFp+25 zw=BL<0m{h8#Qjgb+Pr;V%#zpwZB`@$6Y@U0#Cy2R1*U9X$39H<6cSi_3?KSw51d)s?Q z8(-SLcE`b{7d!RqS2sQ&<}jH|_YFjKOfPMZm}nH8T%FB}&+*h$r5Ojxz5(rC-Eer%Rz@0@mVc%FXNM+JQ=fcwN@ZqwE)d=J|1s?U z;eVq2?2!1YH$L95+;Jtn+%$1pJstD>>*^{w{6ae8i5?*J!3R4x>!!jFXa0J2Z};nm zzR)Mox$S947Lu9YU9VM;d!7mpwsah6+1vf&FA)v9FWs_!m5eZQpKs5gJLVH`kx10? zKM2wB#6RgP{^do-65_0MX4eU`LB6uB?p>Qz`%JF5;mso(-~Q~;?FYU&{hN;6pKpE` zGidd35$?yvldzg@qY2Fnz%(Aw7#0Q+V=L?LJ~#2N`sze~Wc99( zw;cHVvGzlWOBsCvup8RuuhCKcdI0*DGNLg&`1fqSXlN=?x|dWeQ&@?*aq{!P&-hBRnOs3N?%A{socHp29r+>L7vr9rNP0S7|Hw-0Un)Q;)L#9$UQl3kVJ37X$&4TM zsuu3$1@dBL<)Eori>ZfU{kVKS<*kKP%2vykxh`L%S4Yox6ZDOH}C1u#K{el-hZzFb<#w;dC-G zP=f%3a7@6ZkK6wRC3eO5|eh z{8S;6a~27hZ6lMqtR-Yni-N`sNKjc$T}@!gt+g^chRE_{V3ge3VyXc)Cm@%A_W?dv z0{$|XXOOe}H7hn%m@e4y={X2Z*+4`Beo`=I0%SQeM6d>O@KGJ3%w8wZsVm)J8nKI` zG)6Bf4|FtlDA1FO@k}ekAYG2yvQR7w6aXO1XGo%Q zbk}0(n8j^M(BLxvA7MVD5>d$uTI-1!51?)GY#XW~4UYWfF7cUq-Gmhe$ab>`ZR4Hlu<@G=m(M zeL%6VGmE5>po{^cr>J&?p*+}MxSryGSq^xwG0%-E1|1jKJIru=3|HFwQPnxP?ha!< zl@ImP{{`Uf>SL-Z!}vY#dk#_})4L_>szEgih9(=Up=rkMj5b!WVanFJxr}MW+5~m0 zxjSGgn_@B2!dgqPvKW03>e%u!uvsm;OQ>79$dA%6H&YfRet|*YoF@a=VkagkG&@^=W>Ias|sJ;B9dbR*3 zt?$7yW%o8`SE%ff`U7oVnz{as_hH;LBdv{zhx)3#3IyMgwpZox%*+h7uIziWAri15 zb!Vji=Rr>KRyVYSB)0zX;v#gf=QbV0ezhkXNYA*nc1A#1u3%P*QZL`mo~MUC?>Tg| z7y8>#_2I%L(3J_LJE78*32{_lKAT2s=ZUtio)d5Hk|i<0&2=ItpeVsjwc*VbvSED9 zYwz`)hI7}kFCh{LzOV~D=FOAQ*sq^8=h&jDQ0c1YcD|+XL`UMb=Ea6Dqd$rUO=#jl z6q7JLFxDR_z`*dwx}6UibbT63(7Yc>fR39de2M2gAi(a+{o6Mz-9gI$ zRClWXZ0Eij29bX_e|hxgzp;ydp>E2%1ji?aOAV0+JZvEP2@WPG@#W1Ym-mlQ2+|Kc0(+Ouh0B~4m>1wZfJe@AkoqkRm;CK zaOvtWTLy-(*A(W;ID6rIKiW(w>t23+`Lf)Pc0TXy>gbI&9XW2I1CQOWAW3d!<>ds5 zmfS6)_Dy@*;B+8|w6|)#OQILw-}GU(C<~Uhk9(tAn~$*Z@W!%dA6xB=&v9}E4o7R} z5`F*6mQ;%=KmZ{rvAb7VL#8%MO?uiVaYbHCKNUJp?r%Di&_89Js27f>{EW9J+SCzF zVlxAtiN1(<^E3l#ieUt@+dbp(eXhzFnx2$Vu|D2q3< z#`He=X0X@GwXunde{1=HIcz%fW^1!RSOXkr+)!p|uu^l=)kXe{bJuTzSqYl_LGMzc zULB5KxiQXwjs|A#fT1Q$MI*v-5uqgNn5miVzjd)c?aa{V;I*+duuNpg+~B?|$j&Ng zE5_CbOLYmGp^ExpP>GDkfgxs~iKs9uXk~@e7)tydixnV(O)e&J99?g)yd$jS zJ14ks#dT!!ar;>3jH^Cwp8(J1jC5d#($L(TL%#|1Vqp^*pESVDUP1V1+I%<`DY};x zj|>RqZiCKC2+ashbk!%e?KZI^WxHSzwe_gUF_2$2T|(C6Di*BR7mP3aS(iop+;$QP zdoTgjdCMd;eZVdNaBxGPgm8jg3X=vVKSWgHwj#tgpq3KE_#Lcze8SY2 zCs=sEz-@UT5;A#zU-Sm$sR#r%f;zV>p}!W98*xAxKx9gFc4eW|N=aQ*=y);{+pz%F zUAGMkZGE?uvL43ny5Jfy+gD=h_80um{}X_&f6doy#$tAb5J3IU4&HLVS|B2c|mvMb4e@$2n|E}-hNMB(npWS@+cy~UV zq3ET^>*Co{Ba<_9U#NQ`)6(3%dwWM)YiC<);^%7vT3rm+})w_C;v&E9cLUJ!i!JCZF5N?C1xZ zKwX~T^~2{cclw`Ry>(CPzdDf5UgvCoK5Kve-oON!$&k$sKY95E7K^!Dq;V+Kz7u(JTYSjeAAC-e z#CUPe2IvY{b9{D0+NqGJr>n#MC)-*#TsnP}2$_h-l!ExCe6H&CU}%aSH;*S~ZQ!m= zgk%u!1J~Qoc$>g^fMU>XnT>mMnRCaQa$DB7Z)r{*s7d2hhYXUbmWYm3a--_nQN;ob zOuY)XWu8pV+Q41md!&V8-5j2#H|p~?aOdQQgEpYdc-yg9EQU0GA^!oXTN?31PCX)X z7e=+hVhOm$%-2-LknLtnOS8^w`0PE z;N7S1USq>j%i8ph-=&6hx;`ZoME3lkKE*u`%o!IJm%z(Jb04r7z@(p65FgsgUP-nz z)~#Dz_wMV@MZ$yttkIiQI87^4o7OlAdTnoBRiAR+fBWUhvP05gWM_q-v>ovM!;|S? zHLK9!7hL>a0?u2_ttoJ#2Q_<{kdk@Y1|~UNm~bnDu%)mA7K~*beK*-Eqj#fY`1sJi zSl#W?MV}n75h<(13HPZ}5=Lg$MLNe`7=LPX5XM+l1#(7s%oJHqd|cFg94Ip8HXNs(u5cK0JB}@ z2C@V|Kfs7l4%;xWb%CoMl*d!yFal!oL8LTl44frTUo5QvnKhTj=ndI9cba}C( zqgMhQO={;ennWL}D`n(^kA|2I(-0r(fpv~|S*uP=Wo8g9up#ixjf*i{F~KVG^swlq z=8VU+h{z-e1lIDbYG%_xU6TJ1fU|4oi6V&OGqZckouGIsibMzrg(ebBEQ~}eW2`h* zRyJ0e*qCTxEVQ@KFW{%KQCsj43@4oU0K!A`a=_i~&ba@_F0;F{XuJ~cX7_F$`+xi% zzL6PVZSv9l0jN?fY2m@Mmx$?y#Wg+K{I%5)zAwCrB=$LQJp5t|N;&b9yEpIOx}HP) zH-D^-yV@Y`hcJ18Ir`p$9BAW3ZjawwUXzwsXAZ&Q3^r%xzS5%SF-gKN+eTPi*>F^& zVf<~$dVjhAoc0J~EHlK7Qk4vb3)7>|m`i6eqV?|@i}C*lv((A>uF?Q9zLR2Hox21e zSO^Fx6RagXH+?c#O(4;Qx?@QpR51EBcZm&S9KUmGtApjA!eEkxXYIdDO-@WrPBoOFQPu-YNZ zY=R_WU1~XWOohQDceC(-P7m>)~f% zE2U)%Y7<7Cc=tU@>6W)xerk#`_Iv*t?(Xp4d|`8}S*H$9j=Y--^o#E)t|NYgmzdG! zP8d^2r6^7zT}PkdQ9+h-aljN-BtaD*o~u`Do&p-HV)0XH0cN6z8t~-EE~%1BbBFRH z2J6cpo(H=E!eFdcVr&3sD|ubUqm9;UQE2AZ+d!-2zCYXd8VX==UuhA}Ew=}%!2uyw zTRX?=HRE-9_$;d2g3tHuNT%@ovw%C ze(}4iN{k)uulimWHno3pXn(t_zioC5nQ^dgipFp`)EGj-twMYY8YEa*)p5KYU#A`f z=SG4f{lU!A_F{V*2(QIWxU238+AM}7mF)@Ec*00VgK#*Hq*;vYxS>aLp#ftg<8j)d zS#C%B0&hS-&ft3@3=#BW#AZ*S7cI~-!3YG<+!6a{Xp?Z%$eopC!WB(4es^Fb!zXZ# zJ@B>Ca0W(7s>Ig@iSX#UWLN+abF!ourYLpnB`gMf`VdJP@h66LX%L|knJ#7q6sN;H z;yg)2p_73aA8{&?u#BKBfXJ$Ny`hAghYU`W6rMG^++ZoF7hyU;l|aVA_~3RA%M&Qd z6<*q?D`e* zR8z*mij9ikHX1VujZ)0eDFF%z2-py-SXlHsnQFPv@&Nc2w8}h8w!ncgVW!zfkacuO zA#~w^MgM0+67IiTq1+Hk>W=`FT|G|}Q51de&CKdTR>UB|fI@Pp$9-rY}uizY=R^%2S|IS8}IPnFhhPdT{qvUN-Y` z`d%`dY5M7lXRqGBo&7R7ezkma{7}B#`ZL(y7g@`9mr6$=Gc|(bHdJT(Jw3vAYxOiT zUSIyTW;RHk;0aj_*>!;_SpEg6f&qqfX$DbIh%XFxJLH!NB%eTj+J-jD6W7WUv2c0m z_r}!2nKvI7K7al0&ppW^p7_b11_vrC;#!bfY5XwM*JGM`aCBFGN;tO{F0XB}81!MD z0&qYgcbkMM9y6c6qqC>8?~h_MWCqH#3y3jy`r`1w*yS{E|MrvTQ17`jJ?xXd*xb0P zMc;guWHb2K4UZb=?OxfevM78?Dce!H?id;F&q!#LvWSk17lNhAq6TKZZ4w?(tv6EW ze|>ueRPrjyZcHW^=nhPFeN9#6Ru{_Z-x@LQ2q{NL&fmX%BgX4{jmNL&p3lyIm|uK! zXCnM-8ok-jIZu+AN5J4{L=%~;=iO`~THF4gl4bO@qB+?-<+%se|B~%Vca%eMJhM5g zSfw(V!b7DqL9IbiZNf@hInP+nn2A!dif!_`6zfH`T9&n)NsX|t_5HNh;c!FNYL2wE z6h|MQu=a?k$B&)DD_kwZHJlG+vA**@O~6Lf{?L{a|sm za%u2H^}sLG8mCLeeJM9K>+cr-EUZ?G1=Qyw)a2S9T_YP2u+HP+WYL2smIDs)FoqkV zPyzCmzOF(q*uqfRchK;iMiV9(DSAWd9s;Er5oiHhOhzW=NMN|a4Y>4_7#-{w8|rXb zVQG8M-(`M?a>0-ZF({adpt@b?m@s8vj=uXcQkdvTR0?ea;N&5sj0tX7PMVs4i0Det ztn51-P2UYqSQH+%9HbAHG75!0O{JwS;OxlB4o0W;NX@3xc>{8*LB*&EQKrmSQbwVm zoJ?(~v>;#}p0_D|r4{Z;FIl7W$CfM2mjb}&Qg81j<_13wtW22HN#|tJ4j3I8J3-(h zRj*t}&smZuJKP@F)O>Wr@g1GkA}Ku-YB?#n8CJzaUbwHIy`kt)WRHyL5*B}8Is?H@ zU}aBzp8y;rQLe9CEQTX0Fciy}twuET>fyP!S5hNra38n^=n6{{ev zSJ^1yE?ajJaG?tkT;v6`glHtCCMATFXo8KXr40n738DFU!TGz+Ip@xupF0n_eLuYS zX5O6n&Ue1^eKL!TQE7r0y&^3&Mw8De1A^8=i|$&c#;yNxKVQEl#zzypuA?F?(I=%Z zUA;JxN9`X?eewBMGqiYjwn(=tRCTM0u{%_Y#!t(id@zyG`D4Rh&;Ce@iQ{7z3et;( zWs@0MiQ~DAZ?sbnw4uxf!d5o{O+GRHMjo{fUY|^Qr{r6mOW}Um zI{x~gZkC>VYM}Sr`qtl=IvHPm?d7ZqIchGh{my7Ry^Mmm(mbx-;%8humTIJGaA9ug zStJ-2C3Tv8ukAnIgSin=|M|0%?_VoD`~A(ew_hFjW^S35)US*bWLh_t z)|0Dpqqwa3)`k9W=Wm0kn)A+6?Tx7q3Cb`1_SeR}osXv*Ho$#zxbMa8dRdPzZxpt!=T6j!R1u7l05Z01Gwmxf;Y?&np? zAH4iZUr|M~nJG^#$&Ec5qgV}cO<=j1otew?qW@zn`|}bjBPd(LR{}tFI(bvHc}&hTeRolD(s)gke=7 zwVC3aM%(#>TH9Qbw%p3f93&=5FJs^P3h_K(AMCw%0GtK0i`AD*1@TofV4W}bkC zh+#^;v#xfpE(Md$!`+jnAG?xrpJBY(ecG!F`5(A`fXrp*ApGYj^c?=elWiwKe1Gp4 zEG#)?&?~()N*-;>@r(jo8w*ZAIl}02nzhq=XjZ0DCM5g~$3#37+n03hm#|c*^&K%{Z9fD_v`_b;Ev+j6}6$1HEhL5{BL- zMsQDO2azx$_DJb26f-Wd1&KKQ_6Sc~6p*E2(t3nS)o{~S2SO2EC)p7yL>vsd49Ucl zlUPOPF~WIOxlktJn4@|YV0v0Eb$BO_>MfUNKEq!;tOz=y2}JTR0wg$`|zAFDQw z>BA1I$(k>Hx6W&I&p&FSG%3@k1|dYgzlyl8-t)tP(}D%0MlhIH4%U-a@8lm<|$(kf+^ z$>{Tc0reR0FaHux|y$a0IX+_<5bp39y8>oR5}5$FW{?9l5+ zzWHwZZRwBRc%cznpKi+18ps%v6l@?8+N5|obul}izXmcG{Tdq{Ix=};YIaV|+Su^! z(Y?FXn+l~>1!vD+%qdv!Zha56x73W9$FFfn;*f&OfoSK{%1h$UZ1wIPp1mfudcah7 z=lHt^B2y<#FnbhPz4q**Q?pq$8$bP-p)v1#s2}PO)`@RVIpD5dUmZShX#DHH7p}ef z%p==9N&V!h-z`FEZb|ML_A{o+d5k@1fW z-aGNmi=Q4laZ_jV;B$}n+P>An{=Q$P=d=kfWf95E#GCt1PhaZYmg@DIT-}{dn=s$Z zB=t4%4AI5NCcv8UOm6YY(!aeHB9A;gaP;IKnXH1&WZ%%Pk)d56CaGlR^A~c93f9vY z{)c6YqkDN=vqZ7CtMRL!dgwm2huPebIR4v=-x_Pm32=hm-oG~j+=+QEM$^jn+`sco zCfjpM_m|(FX$I@H)P8pUp9{IX^N-&%u=B%LMvk65*R!?zt>>Tc->rs39G4k+4nV_M z^rnOHNI$$A?pSI)pUDlKULtg_`#Ul;P3(6)9+x&6oj7ewQ`_>0Cc6QTdW>>}cX$89 z=l&zO**_3h@%L?8e4e`%#U6J8^x=vqB~ltdj?!sBxB{?#xr;3FtR|*i&XCu!!AZ z#<+p@(z2?WHx)^yiDBLNQYR~w8no|mt>PdXyCaEE58#)UJu{MDE_Veqy}9Gum13zz z=9kMI&{=2+W66vWJ+ao0>X=BWT3cGFZRsRSs}+p0$9zxK=Gy1!pM!w<2Rp_^O|q+WFmE+tl#RE|gcR>q~1vVKuyZy`E$| zvC+>!P{D(-H`a;ORsvD&jyo|}YU|)V0uT@5V@-%E*ttl+&0HE?vJI_=9#?H^saZ{0 zm9$bPl~5GcF-1uTBdZsdd=RLDKpRFuC3A!;R1?5+odX^d?qWtC7wkNj&eMi-GARyg+fCwo?WQmNYnO; zQA>uuM_eO}1Qc5dw6qtm&k!?}Ku@j?p&XKSxqfS+J=Ml<4uVBmURJoh4qeHdW4f%m zFyy*c;R|6@U+R-Vz!Pmj&=wHf`+zjdYhn5Glmh3L=hrJG~yBjLGdEEAbLOsK`B$yC_W)ZibCPrd3Ix$WXr^|ltRrO47qr)5$(%qS< z?yi3I-uM3BaKy#3#a4K%I=Gph^0EPl-HF~!)n`srmi?3YZfJRX=^9jXR0B@I^yHH=FCpheH&Il zJ)y2?PT5YsO20Iyzxky8^qr@x7D%z0qQaraE7rJqn9pA~A3U$gP{zYS>jo82k@@Cc zK%5}002N1$byV(&qp){epqraIeg8upxLz;be5^Wi3mWRN&vJeBg`0cV+pzocxznt- zYnO^6S3i8|A{wf^`uyqb>CqqnT|lD0(qdaPKuBWV-3Vd8Ukt6L*-?vII&+Hkh6`r#=EnE!nR+i5D_1wQwvQ~3o=UED z8ihkO&5lU}1llXtXi68-CtQOCzu0p4+Jzl!ZKaweGp8)U&ye}rb?P?Y?!UCin4GTS?KW0ti0*diiw4{GiKk4?B^{P1&t zgQ*Uxoe6bVDhQCIBsk%ObUwZ?9tra=Kay`deuih2m}91IhlLlHt~3Ak@^^)0OBi9u^%nIED=X{iBD(>Ob|+-G=ci zMp$4v#jOM68N6t4P9(&0L;A$wM(yWBQ&(Ry`KLY6mmf1U>DpxblEvnkw~UyQ3A*4?yBKh4cZi;n3x&GFy!Np@mA$DrnMFjmsdZ zN%4|0A+pUTNUF#hWbnep6KVzPG^cSn2rN^G4=rX**%(ICC8sL^o#7b?$>2kQR$QhE zq$$ZQs8N;|qFu$7CRT0h$ z>p8k^#pBSKD$rO_Dg~(=1UAr;1{dJ!ri zj#~9_z5%?4-W86uN4zyS5s;v!z^n_~hs#qPb zhZ|eFcg91*V_#}7-voZPuD^OaHm)d+BgQ>0PCNGWCXgf;z8^dng8uU(EkB{-cZ_k;U zqa3xP{`zFjq=yc|G?PN9_KyDd(M$f2IK_gzb1Dig=-lje_u4xKM&fKf{(bhst>)DY z6xa?a#z;)bnCK?AjID)p|G+P>h7u(76LDM%N$X(Ru7Rnpd^aT7<3G2@J%i_NG*KwK zX27l|CT5n-*SD?tN#W{tzq9X2?~sP0k^kh)*te@KJKYNtKjyAAJzE3yad_MfjHbR$ z{|1d6B6J>m20e!05x z0QUm#IKN!ayU$VcIEMN>LBK7{lA2q-bhjhD8SB30=Y#EiBm5+czc-9TTsLVzgB2&( zFg|r1N2z2MIWeF)ES920sgFl;z9ZmZ6c{BQG0)SJaU9~8jEv-qdpa|5^_3!bD}-bt z3lhaORp1rdany_2u3bFghA>BehjLMVG%q6iG%PVMSTW&br$`<5m|oC0ceq9%kqo7< zi7a^E8k?Ey^ukKUG<9k(u4Fc?EQStEx2c+MwSC7dXZ62Asm@j^DlYxWOwMmiEu`18 z83$`w_ zgl(AG;yOrA0`U%RdMK63ubIc#>R)qeF+H=g^=r*cB=pT}7KFPA|6`@aMo9s6M9mYB zNs!=$w=_YW@?FN>B9QXlGOh9=dbqTJId(G1b{8ZC|2S7FRRj=-6nP9pEfGjDBBWfM zT#6EA__{76ZXP|(%25eiGNvFi0ne)m%n168mQbvsX4acCc!FY*_AW=epbBA4qV z8TNS(cv%_21TV~tbwrsdR1j|?l0L4J9l#jz?5>`$er9c{ui;20?UTSR2SC9_6 zfr}EvBf3bSjOq?(Nk%k(EeJP2>WaZz!ZbQlwaIKLp+-VDPfGIV9-Wc#KjlFIPWUGP zVOJXyM-hg1W_J%t3njIf*0vVYAPs)e+7F^eLd1$`Yh%*H)>Pw1G|>ouH8IB6A2rdK znD|3YOq8M)WBgGXY*I87s9=F01&%vfggeS{SKwOigL22+?l|+#$1U6u`E~4VW_Nby zW}bQ9=XqYkIgT+Bg;bTk1reE6g5P=?ROXy??_lk$o<1mWr|`Z0L|tY11I{Qfql>uHwR=|b0_U(@wUOw{b(Hidi?w^_M=pQ-#%{hPIR&i0GV!9U>kTIl(~HtBE4)rG-Ez6N@j^S>PVkiju)d@P zBWVT1dcfKrP|k*AaLfmA6UsruW`k%Z=0Qifme6~k*Hv^!f9N(sCLJOzU4ymnoT)$g z+_9%07n`L4&)L?lrq+(?y%kPhz0&Pl{WJ6Qc`43VCm$-6_eXqdqlt#FkR@ZV^yue!JrCy%Bu9?qF5L&Wii* zm3Tcd>I+`#8~wF?fPNM`WUP-)&BEgq$vuW~!Sy_ru>SV=kz{ZM!g2bQjPl@9pPu{h z)UyY7?TU=+FU^~kg*+_UsE7lFpnbtsBrl=5qq9`ME z&^U_3K!6QImMF$HVQNl;03Y+0uL+d}B6Pr;1$p?m$G2q1r#E4r2LO7H5MYmbw#K79ZT`QW5Beryrg_u1ZNtA6~ z@6z#|mwzuU^IDsHaWWtz*%fo;LL#Ec`r1CgF#X{Y>V$&^@lU$pMBq<2<^o_`<5J$mdA>spLOzvI)$p!wqw_y)u zVObHF9$eMw6MVNu9>puY)JC_~Di6{(L zmF?K>OVXJ}pqXBv=>-zfY*@iV%p=T8@)Rs#fzYgAgQii25hUrh9lI{nIe%S}bOK}< zC3ak?>pB1b9a(+*4r&_|Cs0D3%VzR%jIHmKvM|8sAdK;BqO{>=+-(Dh#@d90KeX~d zN2bzhBcdA2Id?8wi)da#mS)i>;?PnBDHHNtZaGBca7Vk5 zj9iWw{(+?!&&AO`(Gc_thk^_YO|nU^%)hzFS*3(CfXXFx zWg4nju}oe(AYqs6_z<(4AGS6sb?FKv6CtxBmYG#7{G*8~xFjQx*U&~Pf$*^dPB}iz z$ta-!0YfnUL~bCtYQj3@r$TE`(L|&Q9S&!A88+^G)Z};Ia$>ohW&aP&)2P>jmZOBQ zMdTHE6{HJ8K_w$1(@=s58-fI!!B9yrvnF#fkQjl+Rf@QClMa3p%+!E6V?= zSvvfYN9$VDrsl8g#ZOP(n+Jf2Q2n~9#%WZj*%Z-cR@gn3syyqF2)?^$XycP>D3;Dv zNCzx97A%Sn8iDFYXw0xuq2sApRlI%k^7U=gwlu?jSP$R-wED1_>QV%=Bm(;J<=^uk zy#L~Ye5=;fs`&9?(~lPPc?S#$SBPRE3+sysdhUmz@>}BTnfmU2xgPZUKen4rV~}x$ z1_r}(aKaxpzIk==`MjN2o;@pz`xlkJ(eK;whhLvodieUwt3_K&GcDTcvMeS?=1IQ} z%O-nqvB6}-nXXyz3IcXiKK!I-3kFFc_ z)`)JO0m0Hn6c%|(k6L{dP{pqC*|O}^Jq!gUh4 z8a7aZ0tb|E5k9wZnJ{)6=70*6;Pyp|tEyu$-a=ttw1a#?H$DyFl1Adk)zYZ@gP2N~ z|KjO&8&>D|+_H0#%b~mN$G)i&_id6mbd?n%|50&eiDiQ$a%ZUR@CV83nxE5kkrOm- z1}TK<$l!9_@GytM!(-ndtK7zzoaX2~W=M?qzit8@T_f%5=%7tYQQx40sX+!#tiIfq zG-^aM358)nPaDCE-%eZT_X;*Odu|H!u5Q9*5JwDYJ*g{2-mzy=aA`p`9DSVf9<0_5 z?^|6Uqv3f={gF_IDd(c?s=T+22Y>lJ~@{W*6jDoNO_q3QY?GeCXnL-on1Xg#ol z4PNng)E#!a26SWp2Ivs4*GtvOh+@9mvt;R|u`4bxj^@4%B(U8+L*%dt*`8yuc z44V-eA6bg(8kNXY7^7O5ObgSN#J~L)qv4SdQ@f{PM$@GMW_rRv5Kz=LAkE#DDD?ak zr&;mdb_XZxlPv5W$>s$04msb&0~MBHiAPyVTw1o2q;5U2GB@%pClz|OGIKHnp}c?% zgtR?Cun;$$+BgR`XF(m8kW-;?%G@YxTRj0a>EaVn&b4nh(GHTF@&3ExCJ6G?WullE zvy@DTU>C=pFZRd_18EwJk83sy7`smS{n#p+gRR_FR#`{&>*t60^=%DvoQ_k@r*`2^ z#_U^8r*&CE!_sZt&FLYPQ@h`v^26idG#~$_kCg#dN+>IIkKqOIvKq5Jp}p+EFx!KY z?;#03r58Ezvuc`RUIIw_wpg#YYiJ6K?1-7jHRJ^uUTkf}5x$$w44|*= zH`cMn8_|AEzVq@=0LrdpIcgw=w$wHxoZ!TT6Mw<~e*ss{q^Js2DMBSAJDLs$q(lv!JHWLeIy^6; zYO4LC?!Uw0M7x7R@d@}c6iodOjeZ^LFPxJx^}&b+xh=yM&M}sJxV0xo$`rZSCQpn8 z2D1c4bMHOpWgqLfUlv0!ayyH0XH7z3V(kVl^Uj zBBnP$iq_@cq{Xz!#?ER#XcI+VjS1x`hC!{(5y^7wC8*t@w~OJv8=OFr0C)3L2p5!*lyqsJu^Rp3Ec+7~xnqbOG9^;-Tr4X`80e7V zN7oltZ6F1yqhx4%V+q0N_jzgNlg#hHX*tV-KjPONRsBWKd3LBwyCCN$a-EO*S_*!Y zyT9!$T#ihe{&RR!G}T*kte#Say*^v;pjb$+dkd~LD5gW}dzC{c<4zQZFQ`dB-7sF! zHuP7pqm%U(kU0vT@|2-v` zxiX1vFDGhN8zj*}OSS!8a}8V<$C3fjEkwyT!151fjfc(k700W))ApXmgvJpE>rvFK zX@v4H(f41cZ(s7et@%%QGnGF#_djpvd0D@H{P5{=xZT=}tkvJV;&l8`Bpym99b^F! zMYj!dDUZt$tuh=0BzpX*3tI4^*3aJt794keO#sF z>y$-$eWundq)?!`8di2EiAa@qd`ys0yA-j5=<2r=wR zf{?lWtTCixkc; zNH=>&PiWasT>4w5u2aNB)gA8Uz*L*uO~<2a+w!webclN^;GEi12iBgbw_QNxiPD3L zVFZD>i&mNO$xEF%FX)jk$^1KG5?X5rgpg2*AdrWec+SOD^Xy9us(OwgP?NQ)LfPn* zyiGH(P2BH7T#YWe%3&^sQdfgd=8q|u0&c?84LkLu0u0|prHgi@Eo|vzSVjT7^T=(; z7LsD;PNoZN!;BO3<}t>vnzj5`1k6p*)!ku)E6HU6-POZ8kVgGifR-rr+YGvGEO=(F z6gP;><~bYtMl?C#vUdbh23E;j0exe8H359gr1-Qw`J}mFB%a%7JAzE$^gqpsT*9Jx(S9=Uf5(A= zr9kf^aO%{0$BY<+11zDqx82!_ZU^pMMUT(LER(2*ozux%=!kIzvN5?3Z}qze!_6TC zXd3H=j{me0?*c%}U?_N84WAj6rB=_;nS(S!U*nKTzp=EKEn)G7Om9<<(^^VH(Pm^5 zeFdoN&#`eBmQJ8bWp8>j7?pIrwFbH*y|Hv5YoOuiuAO^SuyFUGsjA(4+qK?0X{I2# z9jm)13M7{z zu)9_409qcDp6Ai%7F@|P(^|vR`@o=3u8uP};cluc=v<-O-x>q|-RfV3s*JY>xC6x( zp?qR|8vpweu+>444C)^e@D~WS zgj+v^MzHC^FqBkoBYQak`r%-1lBVnm zykv!;C3w&a2~R0TZ2Lklw<$qIoWuw^hgFtzpf1gt1O$4As39JaRWh#5yaScLMm!Z$ zd{M?^DK;uIfdV^v8TfV1rubHxM@GkHj3kJS3X}b=N2j648+aF{eFc8``})({XSnhJ zgd?F%uxm7Th$-rpUjtDoPg<4eE+6&i+cdj*p60i9UM9yNH#c@^K#r2Tc&yF%2qSW` zfaSc~3`u2e2S{oa6AcE-Gla|{Y#h-9ha5fu>Afh!b1tuqTBbPHA=#|*GgLdVG^>K) zwG~e(NU(h)?0^3gfVXqoNgxKoa1RS4zW>vCYmCtw5)B%6>5QF2yFIZ$G!o;DfWXpr z4&VRJRMtlj(F{q9UP@)NHdZ}#)>2u9E%?XFVl9NRCAA8D5%?c(I4tY`?v~5vS86cT z#+@vcYAiwU88Zeq^)rPgVXCTt#+LD40^G|jAM0(p__{Q_O;v&G-H5NYu$wclsc&7f zwQkS*3lq`HQer)yEajYQn3%4)DD10UebnpEtU^p$?MrP#D({6Y0w?FfK6_R+?>0&4N| z#=UVHG{3DJeqV}m*M082XPc0Z*PX3Q6big!w5TBwslHjrPNyJg*b<*`ZM_Td{PFqv_zA%u9I*I|_4WQ)CAw^&f!IPiI*q>KGX%w~U1xS;!5-bNEc5y0<2K zL>k2GR>bh0Kp&2YQ!;+0VM4~95j1!MhG=SOw#u9HORiRy*t7>zFefEyX=MZkS?UsJ zr4jt`|-~4QOgp@P)81Nnomcj zkh_Qd{xDfGF z5?S-1mnCl&IrJ1D$R>(yS;OIQW}Ds}k6zTwCF)kYIqHkUH8CsbjN0fOZ(+_ZZ45;t z!QH9(|51BYhWNPVCCb6~sIgHJ&_m!wqkVBn%`6tM7amXt4qFN)^TZ*wNe54sZ|8b< z;%XZX`9yZMY+$Rn!uUUj+A!_A`Sl5*BCou%hbteC-F)F?%lm}Rp$lDqp8uO!|3(G_ z);CPiG8$9jG2mC)0O;ENe3CjiYBzIaC%&^96i#>@r+at8<;(ch<<>ZH%nve3m*>ZU|`A>`5=w5iel|a_p8LHrN-vMVTPZ0URp>~3Bhc25tkYihxnCFciJgo0+tyV zstPgN2t;7x^H@PW1gD0N-~a7X{PF$ko%WpR?asem@1&HV+D^OwHV@jf>eX%94r6nS(q-A*N&TmN~0>HU>8I(aiqTK410=49=9M)OJ2lSo~t%%jGDW0oSI zTEUsWZ#7gD);b0F{Ad50;r6m^>}$ZgEELS#+C47(Qn8q$Wd1Ey@#fbfCIX=P22hKe zqsB0YFoi4S-g!Exfmxl{m)Jm3#}Z;qZ3@n$VcXYw!W{P{5mgC0bPtVumLqf%RYk?8 zT6JM@HG$DZq9qYZai>&H(aks{qZ4)AIJhm5f_|}?U~4Uqfr?P9L{&aPje!s9$#(1% zaRSt-TG7!%Tb~AalFwh60i&?&$Jc#NR_lRBCU8Mm);xq@dk| z;(`QX(yrMial;(rPLK{%t}ZR;$r(tAZ<_%A+n1MkyM_1`F`AsH=x<%WV2U6IpX81+ zI__C0cNg7qRNa)=;W2Ew5?O6@wM-Pjz4QQ5@@iA#W3$unmJenRD0&x1PWhyN6suu? zC1;`S`9^i~Wq(gg{Z!l0$6fs=0A=Tr6Gse$VcY!}MMwxKi-=85kozA4DF;Ya*<}Hd zvIsMF8P~&h+1>8xNGuREX6R|`zpDQFYCd^VnWmPvZ0M30!Od_YyZ zIrJ?4Z}#G3+N1Fd;NG3H71U$i<^M9O-6$sR6p@3>S?_KJsUT7xF;QOws-mTb-u1TcnY&dji*N&T=T*ugyF~rUKUn3gAqCp~O^2xRS4QZgufS z4Zuw6Rv-Cpb*R$~wBL&CA&q-a-(kc%BL)VU|RNZ9G-%ceKBgsDT1 zgj!_R$9A~i4IOYpoL{F$wS#CRjZT3g`A(ZGGLtv17>3H1sS|$`59Q7 zLuOQHFfk^E4YP@@$=Gemtut-e$pI-AT+}_zAk^j>;px-*{BZg4`X16@7|>P^WGUg9 zsS|=xQux4l7QA`4Xp#cNzZN%Ns0Qw|AZGltg^xK3c+Ap3RD_Ad%%GF|#Tt?#8>Ekr z2SmJsq`U#G&Xhr??2D~GBM%2Ll%1G|sjLtvbI;UTU==H|7t!$ne@g+vWx6LB^%(#R zYQAZPG~gDBGyvhn6-qEzCa#kv^|xS4J0Q`@>03h$}RNPQVT&OjARObum#j&nq5K(3z;YA+ek2fnf--GJj;TXqJlg9Hc4_vE;Z!x~}45&b9fB>^Ko$1YHQNv;Oq ztv6Ltyzn6aZP&8XFbo9kjaym}MMy|UNSycr{{J)J$`vFo6;gX45956}ar{WqR#ZK; zRq7;;y|X(zW7H)tEmmwcN3a(N+;K+h>6Cm-5G$+#GroK*NO z5o{(X9HrYA#guB9f_2K_39{4OKx?*nigQ>QXMxDV-HBoNgb?-g_-8M|Y%o+}2A5dB z6Hxr*1Zpmqe|g?~NxYs<$1bN51)V4P!Kc8WuyRJNOiRw%1{r;8M?~g{d$f?m5>;$U zB)8eorb3Vt;9-_rm;GhwsfpS@vJ|f@syUA#GhQ)9a7)0vj-9jevpw2kDo)RGCmf0_ z>~`Ci$Gi8>pZd4P_yyfC(WM637Wu+xlwl=Oimu)OZ&>}7!U(DViXI{9M5=Jr!swK| z?pw}oE91UD)^>kvZ#L%j`PPMi--r6`YY)Noj_?eNZ3|2i>W1ihfL92yfx#pV-QI6E zPj{<_>-A=(KK6&Iqd-WjD?<%pLQkiCsAJ6<=)BH@P}6<$Wv_2z)8{crS&o(ZFtj7; zwu=HQ4!7}`OtPlGY?{W9+kDs8XL{8K9jkVEiVhvNmzH8F2yfwul%w(f*;{gXf4aVZ&QpzQ%}?V%T5fcJj} z9sy=JG3`KU8&?w6?&{B$WfyWua!4ZE^5omy@8`dOyEoq?n8Lkb8wPnQ@Df};BUDvv zsj5L6o8-&QhgCt1QTA3thHcP`zRe7tUC7gmN_oCDT1C|==LSpPefiLCBOC?s_Ti) zp|PXmwo!ZCdECAJUd~_JvWnQ77EYx|~Id!LMpWkjMK-t9DH}x$G8>no#%KEECPCyx= z57ZNW#E%zmt}l+~U4J~oZ$JNhe?Ikkn9!s4LQb!~p=1p^ni0_9OtlSy;}c;9h+sWy zG`Yf=N)d&cNYrdhM#u@(-NV!46MVUTe{*@fdpO-czxYT|f+SGcaxRYMgl553(u5w< zv2zkOxp7ZVpFbV1&WE8xqHf^rhj(9p{O*0SpZ6f4Frw6FvN4x~aSvs1jN!n2@7D1N z2;iG(_)G|~9KG$m;E5JN#D1x@Y&;uQ5Tnlg#XzexWnnZVxKun(IG#mC5?}JZ3}K&9 zcg1LwjPs`&hvPgo2CfuR?!9rMdA0cnn&}@xx3N%EAykTGrgh10jZPb92>6d{VE;-w zCX0yx#;hL8;j+`(Gy(<-XR>rND7LvM5rt-S_Q1wLimNrl;F!o!#Hse_cD?}eFFHR- zQf@RaCo_&lc0GBJ_Dbua?*@H%d+2`krqhPBrL=59<;j3dQ{&U-_h6by=KLlpsBDzv za3W?$n-L+108zqmXbd9^9T6}X=N(D~();80TgOK`6|57s6tro;oXh|hJP9Q(pW*Fa z0Z2QS-L_#MigL(UhJm8p_y0exn*u>mps5}+)x7vHX<2cz@g{L(SrTW4_ulh*;ZD{) zB#0J&S~U+AUkKq0dirb~aB}Vrd`}kIZKIv2XDU#l-3MW6Fg}2sV3n2W2#v=zKWeEY zo&(X@#opI;SHiheg*QmQ?efz;%|Bov7s=7T2xigr(xY|)6s?3M^E2H6= zJlxIb#af?`B-ILpgBkWy1;R+1{<;dedslEeO}&Fb&x&n$sZcNP0Ms2@iE|HOr-cY*y6*vXDQv;VyM91@2)gxGo7f_x8b3r>QQ*&ff406^`-CkYTZ{q z5wE2z`Ex-FJV(T*Ys!D@UzL2u$G_ZF|5i0PpUF&WO;mQj_thS7?(k8mJX%+My`{ZC zn78=-+wI4%Kd`QpE*s(mraj?lA!CDg*RH%x6+yg^&@p5 zidK+~rh7>_rNpq9kmdz`{{DFX_&YCKRDfQ#?f6F%$$V@CW}w1sw}={eTgySi*Y7W1 z;^mg&A_|6t;dPXNx&Ww&h@h@yPi zwTmXmCLhrM|Cw&PF3?4b0$C&u44Y&%Pf`@cNLgeNz=%qas;s zr7$(7$4O}Sp+<2Eh?L1F%V_fYmxyg9SsIW~OZUnaRoHf%2H)FnsFH94qpEhN1~Ph0 z>J6&3RWZ>k)tdd=Y`{)04zK%`k3Q*A5gGOR#7P??3r-CVl|z*$6lUC>Vrs~1RmzHc z+istq9zQr+I`rK;FqU-V!<->k+sa2-ng0_^r(5XQE}N?9Cz_4$D!Z5huZ(J~qhKJX z^;BFQ+4#A8-ubWXu|icP`fRkK>&IB~;5+Qh9ua8cMUCl=yV^SI!{|KavTVA4wv62E zwi<#_v$l;i-b=@<$0da6Vc$qvThB41uW#{s&Hgy8w%h42iR+Nv&7({`939fJ;m!WM zT#nXrJ}|gP1oqxsICY3AATTj!iBW$gqhie}8`bcD6tNUeeuNQvC7jCI1GM z2HM(cC%3+|)U-=vAW2yQrXsQ8BMj=!-%|c}y*_@0W-Q65hf{buyZ0F2S#y~rR?68d zxF{t{2BeFX?Ctt!bauoo3n^9ioq-`3$dkE24j=rsYRs_2NF_ju(n|F$viz`{eQ2_9 z(ilgkXKGGXq@zc$tW#T zPKTok9)AGBN;Fz0BpIcq7hvv3j8@kzN>1<3bOFqjUDv0^@0pwN6dAH%fbgNw-hhr5IwZu(QvVvO*3FrQc1l(v|lP|bV# z77qcavVaio$eRLE^Z}_8XY6J|Krat46bGDkCX(Cx-5t zS)#A`F92s(yVEcX17jzffJwanTOxsgjjjo`9Xn~8WFLP(LTKySEIFTjcaH#flXt0M zLmhp_8g4Yi07w|nqj?Y|} z)yo|S*3|e8gqU?JwpFgLbpMvov;N>XxZ-=7kOudArv9lpr}20NI0!J>_t{2vnJr07 z&&Pet3-tcdEI;nAM#k8^(I)|1JC;JB1Cw)Ijeg@>P~RJ#0MH2!2Oqybm-PP59Map# zpH2&umpzC4#U~0dB^)sk)wv*?U`RP*P1M+qY`uZj?#iM;1f43d8dAtC!k0vJ(~IKo zc{<>-2Zl37q<3AQ|K##`NwUCK1Iy(wbxKgL`YpwjFlujLd7;lU=?!NHo;X_nlG5uD zzP{7Z;q@xnk7c!&ndj`h$Z|y*9HA38=CHggaby}jqY;C`E>kdv0B}q>>5%P5P-^l@ zp1}05lZ24S#^KCfXQM{S5_hEQG~DRrkqUTbQnywyifG^!Ag`Bl}!A6ktg$! zpH@sc1D8<@!GAe5BgL%>E(La_m;M4TQo4r=kS5ofgBK;To80^tFZ295M`SOXDL|O; zcnEL^Vfhup#OekrEWJg3C2rtwz-$D==z2)ttW#0-go51=W#5H?=h#u|07wXNrFi0M zw#;|rFk$7@saHd8{Jl0@LuRIf7bVTJ+Q?8wrbsg7nWQiglzVC2zs!|E6cDk&->7W>Z4WT<+~De&>MxM; zm3FZ+*7*>t*lS{(q_@u!czsf>U52F+q%8;izk{prde7EdwHaqNXxeVYKRs*oKz2JF z_qs$TAygf1w~7+hs~F!EY`1P&|1Hkg*<{{~^=~q}SN9dSF`GNJ&(HJ+|4Uoywl{A5 zt@37uYXx0cUIGtu+x^Jgz^CjiCu2sM`i(krHbFDb^*?UzRU={d7O_2n#3jMjNJy`C+6FCE1+$AMw$ltzx ze4m#eFR#<^@cC(&m*stlnIa!rC^ZFC=?(geS{D?wAW`F^Dd7sE;yJ0wSPSDS_&TR~ zfoUp-1Iep@di1~FQo!Im6*kN6!xxiUN^=Wlv_JWPIc~!y2-XU8(wZa0ev6&q*FW>!6T; zWmZl-Q8#g9Z@_r+XgD0s^qYB>6I#1Sw@G5` z>&$n4q)>@53ihA{pw<8D3H#l4Fe%S%76HMv`|PCQzC&~v_T!#>S*yunw9rQ`n6o-n za#l8-dnJ=O)XWsq+*nx3JL7Iyut{Ylnur`iC+_ZU=zV z&RLS&t-!dJ=ibQ#@8IbPY4#y3I^3;z2)1^6Q%I^j4ea2xW}_B=Vc^i$$kQJI@|QHz=jCm-7pMtpmG zJKx`ZJ6*=7pTA!|&R{+xN_aUDozJ3Tw>@_RJJ2zXU1>O-ox!zd>haLimz&|w`v=8e z6mQ33&yafF!o^R}_|RE_`{DQ+3kN!l^zilY{c-s9-u-xf<%@`$xi?pfm-KkoSRS=& z?<_KlBz)Qnx2Xp{gYAg_pcQ8y8*>@^x4-^==q24ILOcI(H#{F>tq^~{5#)|)!SRQ} z27em)sRy?vn0S-^0K95Q9Wbv0As!+SOvOQ9Ahz>B{Xm2=11bSZYWogUiUY#KNYFc# zKp?S_&B95BS#9BhILVSrD+k@XzG?Orm$;CS9V`&E1kH|D{LFXLfldZq?2JrkqD3I& zvBPUgNq+%|lZSP^`o(*lGIbblKn_uH@SpSPeVZS(vd${|aMannMDvN({mhJ@jS$L-6PBdf~0a%6puPNt}VyTPmq zKMoFl$E#|Uj@9l;I#?{3I$^DBcuw?i`3NYn%0B^UyOQOoVIZo-9+DIxRUETm+g zT_$dyQ=K&BtGXkT3U68r^32n@u%VGrcJ8O~?#T-47BTCkDA;aOTj}C?c#qDxof}2D z%DH9inma#L_M5X!bp~4fWdW`+QO;iUyDd@oulP5*Pyb|@GKr@t9Dr|Y2zgL}p*Wz# zT&q3nG58kyG>3ad1x6|4_R~IPUDwqF*+^1wY!?A>Qk0XLTcx%|7P&9q-uixL7T2EX z^zD|TgZJ2)+y9L1N8OyUh38i6hAFw-3GX%hL~BaWR<#ODwo4|ZoYPt;>O|3&uiuY9 zAI!I3j~JgzSaEf2(K-f$N2**Cyn`zJ3;EnTgol_g_^%i0!}ay;8*Tk^_t_a|3mvu3^`D@uXEL6G|k{?XiJC@l@#^=DHX} zMF*}zy`T3eO|qdfeOA&HAL%*sWTMD!H}_pDJv*V2MT(^@4{bsZxLOCf9W1-QlvSA$54l4ZIuU%;)S)cB}nAgjt(-G`W2$NFiSD4Z3-Fb zkA+Z2_$i0pRhfn?xLZOk6yg(9=o1D{@m*zT0=uV+Jf15yx@VRtbOGQn#sWh+vh-XE z>Em$mM*!BYWI1XWh^i&ot^^1noPjF-|6BMCP83D4#G6{EyCq9rG-EQ%A%~eZ+!af z0aa!}ZPJ6PxVp!))8Rg4Uz#tq$Ik(#lZ zD#DU#{GZGC;AQ3HnypQVoWw{})H#skDy#I`-6THa=)Y!axt%^0^1P_`i`kuqjA<_BF;!~q?9bFq1V*!~Y6E|f^If*&Yhtn04>25y3rY7|ZKAg9m zR8$h7o=mjMlj-3Cn;w_Hs#v%(OaOjOp7FcF1nf+r(o-tWEwF?x9}@02@5^Pq$A!zj z@Q<7D)LYJRu56q4_=Z0S?cO-A)kJ_Xtd7$AHFW zbPsR34{uv*_2+kYUw)16U)xU)0Y^bULu-as>xq>*oE!ht>Cu^idI}t&M32?6#7%Ndll213wO4*)=$#Ai(4^?P=S=i^9h2pH-B|~{S(;1>VGmqStjKP$Fn|zZZ^*szE z8RmnQ=f=lgu@1g8Ere;-nC8J%)=IB1l+b*fX@Q1*)twnR6?@ z`6~cv*RtF;3V6Wfs;8C)zD zyIm%Bj)lWF;Q9smD9f0Sn#Iu&`) z?yy#1{S5Y)O(eP&WQ=;_eh)$2jkduOeT zu3AP-r4~&>x%U&9n}$Ed?N_xE3x&^#A|g3nqbWo&*zj>GsGUU|xMBcRRX0nqY zoXDY)r;6~Dd{M|T9TEtDAz=~*LE4%VyM8vP39=20N>xLohfcmyDq~G$}@;@4;;S`?AsYw2Yg^-_m6=GHc zaPNJy=9_}DBJuPFMU@vFcZhVhw2KW^>QS^PC03uK(1Dac5z5;{#qhgM_Lwnf98wSJ zudwrP*@Yc&vf8BiKuK%L3};raQV*{barz|vD*$olvK%!GL{X__c?L*jD6$G0{{M6M z0N7D1SOAr(RAO5#+z++o=L~E}WtEz7Y|mKg$L({+%v@V?wsiSCRU0{-$dk2 zx!|DuPnMO{<)xB^pw*G*3P7|GJ@@~AvR`i9ez7%~p|$VQA|9==M}7-|4fF8_a7g zS3EY1-1jZQgJ7k$M7Z6-^dBZ%uU69+ar`ae9ph`=T;=i?h5o4-QUz9fbz+UVbT4*m z)yVDr5J}$aX3u0RvjWc438bavHS%n;gK>KoWzD~|6n8WEgZ&WS??>myO`E+(Z10gj zXx+F&Y5Q?!c-4D2s5FV*SXl|vhU+G?hx+`@bw|m*f*r5-->ECa3lDJE!PQ%~dl~;l zq;5V*q8rrmJq0IBAqit_?^vQRhH@#Bbl~IVd>`Y0xpzGQ{=94b>2f!G|CI~beAW&p zj(ZcwcZb&Bx9+7&U!GonKlg83c<%D&Z%;p7ULW6`F6T(p7piIpDa$e?nII^3JvNUh z)0g7bO4lHO8FNZ3!3O^(s)17Z#C56r`jc)+>lON2aBx(5U+j$@6Pck0GkppHUx@r@Kz8HeIj1>-gFwOeVv6kt|J zAXEdH@5IC&q&ejhkV&RSqJJWwD|v_F+muoWOhI6nOt9TElf$Qu5!jbJE4W>(nrLts z0#C{H6r@qPIPmeQn2kw^XGk1H6r%u=yMTJEN^I@0&jrKEsbCT&dH_=x=|e>0rv%(5 z3Maok(&2{W8)CUDt|4J)33k-`BpfEmx5f)^BJ@L_Qy>Y~K&qJ*qo?5ogeJt0+f&oL z4Zs$vzUwW;CI45RoV5pECIf*r%8(T!RN#x_wFATQmBPt)4MGT%lt}Z0&TISwbqPv5 z<|ixkQr1?FYDr0~lh`K%wk3*|$lcl58NCKo*neO3u$-f%ved4Q zS}ZV;5E#1;=!`$^^t#*84u>cFQrswN8_CK~unSmSwpFU>wBbM@fTDC*O04OI%%`~= zCf0QsOV7UYeqc?C0`0U%wez-B)^{5z=-uxOP-JVswA<5mBbob%0lzCXvl|4b0>jt$ ztNuvYnQPt6t){}xGTe9P0Y4P!T0P1SVDLPIFt~fSPsHtvi?PA&drK$=HQ6!c9sHzY z+_l~Ofj{-bwZ*q&vmsRp+I)Rj3v$D{j5BH^YPI^QOQ2jdw}V2eaxzpk1xDdB&K(b`A`?`Tp@R8=`u z>{cN%Wy@BfqEqE5rSTm(EixR9j;4ye#Hfr98L#f&al{a zbU(indMV+i>#my6#F)=|cK+eV<#L|>z9i;NFV}=mFL8F$??3VJ*VFSgYE>Dvvm1MT~{&Kb+(w0jHJx!vQ)aa&oWhHtLHP8MFL}tS+K5 zISvm~2s6zv^%yTKFGGJaCNZ83lqcj24bI=bZ7ht<;SEywjc6U5^5}^DstH&tK{z4yi-1~n{rH?>}xl%awB%M%D&WP+rp-q znyu61H%OvKDs}6;L+eJhy4cHO*@)2^At+PPR)+B&-ws&fbHcfa}Enq}`P(__1L zt^-WAzl^`68gC5L_us{FSZ@u@y>Ftl&_8c+(6@b3*WYK^4f_L9ihghvJlr~IUO=h* z#hK@B?ot-$+$g>4nt})u%ey(CSC;Y6qd(PBjAdA^XPILz(_)>|igVh#YHntaeOg}+ z$M=wZ$6S^7WrfYC?)#kfh)9MLRyjW6hEenHm$^F({_}@-=kfGHQ<|YP(~sZ${qZM) z>d|KjK66&80U1D}RjXzLbtZ5P9JgA@%qc}l8?}AWP*RBruPVyhgKGU?~`R$YLL`rKVTOm#dZ2yw4N({E;hn1?g zz3gHC|2zAE?rlJ^0_%`8w#1pFDA|%7r+wK= z5wu2=$QSXD=i;l$tG?YnO^l3RgYvrwr8I{T(DGXz`=-vJF8ynzUm zqn&23YQyV#ExUJznX`IwTOf2r+t8NUt73y2@4lAo^y;wQmkh)-Q=zG|ZC0=@PF_v1 zZ%HFtzgaZR=c_6*w`6rUyIj;0z9iELPlm_Eh_D4|_U4vLA!)RRu{Oj>|XZsvn zXflL0 z{`t>&u*?J}J4edOjGT|;*a8PT7ozdns#2qFgF}c z8R4j4)hh+1xKu(gX?rpAn}BOMu~<=EDkX`+a~Le2hN!{!5Yr<*2g(%tMly3rt!4G2 zVYMxhdNA2K!|Zsz3u3z1qLfuJ>P$d#V8u=|(O~F5^PWQM=fvn)@qZxx290HMi;p^C zR=IsC+EbWKqD5A+Ixe0r+%qyp1?Z#n{wO9_dJ&#<(7FT4W}SXAo||3)4?tOxN5HhQv`Zep-o+=smH6aEZinKlXon>Y^ii%Wy=NaO)SH zRsit<)kJAZ3LtPrQK`L3iCtk8evN+YlD@Wz=x{$DZk1sD?}XAwV+YF~70 z%l_;eSM-)d(7(&M4e}0HW84G3!f=LEl)sgENS8UZixOI;K@GTCk&5w8)I$x;9&{Cf zDDq_**3N6-O}@OXUCd&KSyjvpa29IEG70Fdw|?`x#Tivka4sWIvj$<+gnnHans%wX zc`mR_2;anwUN4>s)pLE|WO zzPg}{+Biy;MuUI8Zp9dSdpcr+Bib4S-}E>tPQM`i-s`xESrm_{z2cT@O>pF+9-jSl zOrnDnBs;s1_o1jeTg%Wb{Ti_r`YTP{kVp=a5`oH>4*J6we*Zbjz@1_4+z?8Q*L!zR z_p;)edsaB+X$(K_AAj6ElJFoJT!2jvS@#FCQ3v%>6;T*dC8u*6-0t>s|NZNyZ`WsE zh8@>0;qrXvClyDw*qo)q#yFGA8!TSz?bW%vxg0>8`Pi|zlgUaBZU1}pmRN27@HGB9 zvZEiTW@=ejEV+|ZB7x-vVP{kawP!8oBRflZrh)@CH^DWF5L@wgWlVDGi zY0AbUR;qHsMku0zD@&f_9QoMCQ5!>$K&IJVFG|X9>11@ii@X+MB!sjk4Ox<# zCc{KVFfF@Ud4W_i2&b%g%(9v0n{DmwQzon7`P8_zBiddGBooAT9XWi7irucK83ulD zSUYVE594_B({oGmo=_QXAvxoQzTfxGIqQ0={Ugd`L&rxP4oq{2nE9b-$Si|U2~80< zAn}(&lXV?+P&GiM=oQj~6@hg$HiP9TkbpCobUa=JAnsar{$qPenc$8CWEJ{j2cL$X8;hchw!sTfu> z2*!ZZqTz~I#{b@f+b1{kb1XZ7RR#}HAM7)_y>Skfee;G{w9nfA0w_Ag~ z9oE~h8l78c9*ceuyd&B3%TeWoYd&I7ykxBV(!OHV_2BS|kISSjfy^ zO@$!m21}(g79oHI7-bcOsUQG*b<=m^*A~3We%?jboGxGW-T@>%s>(Y)pmwveb1CWdegE|)UV%9>lFB-eL#*_$?}}=flmB9M zat5x&)RNj=Sqm?L8rbJp<~XF zj&&VlB61=5L*4dx^XcQ^%lZE6`Tp^AOj!(Pr6OQ`AnEy%pI*|_&;Hww%k#^HK>8q} zsu`^$2Bn_Ks@~;ej2@RIuOc&Tg=^Zl8mV#;fL1_N^jxAn-peH(3=9!xR`Y>kln74W z1X;tQ3&kvHw3sjHUvvamqg6|pfPz=);RJB$qUy*AXvlU)#Wd7u#px}nX*XKU7EEB; z*t5Vq_|a=D_+>zScR73MZdiLwZwLHWtX8ya8JpRgH1*m7nmD5o4cWk!T9Ior#6cfk z&G2;)j|Ip#HQ`(020MbjZ^PX%NysmkIPr)5?s$y5y%@=JVi!H>G&s*YdIr+7Pug8D z?&)D-NkJq-;mIgp*VNsmU!jRZfpFYSBS2mU8Bv+Nn$Py*qTYr-`C914Dca z?ACsCe9rBK9?dkEC>l3Ph;fZ3`jPd%Ywq944qR-lYE=%dz~rL8S^Y5PNlpQz_7s<; zW#sKTaMx%oBDnYW=(6`@24KWNWBpq81U|^vGus;DDQsHam-c|T}=S;r6 zY+p;+S9L|l!&dhU_BM|ClGpS}?PpIK^T&60YNr_Wv%__CzS>~~21)v}7xgaiaCWiu zWs{=+Ya^dVo9poAQ4`BI5*S%djNa) z)EYj7o8R1TEV#s%N|H%~$wMdBkucIgZO?rv-3KhIg$G#ccXatZ3}nVQelE+1t&}QZ z4D!lFSd0`}o!-%`mjT58Z+CXO9M(RQOZ8W)U*T3M-SB1}Ks8SMI~#Fbyy`eGUH(17 z8doR#n92`Tmf+g5|2_i_@b_~!vjtf7Hl-x@pX_#6WT@=+f*8mWK6P`$9ibVdX zkO?$}bq@2X#?sgnP4P6rL!O?d>D%GU;W39#kaw9!sj}Rs*LFtK=9L&kvh*n9>x*i> z*)7T=sEpauI|9kmK&M!r14#DI)2!`}i}1?>zd$Jyf+#2;M!3wvVp)^Iy9g1V5BM(t zaaXbq{SR>BLB+lJMDb^HWvl_;K>aynG_sNK+Bg8KT0~1*WJ9zy1a2syZFa~BJj~G0&g`mQP z^^YKOgn1SVDvn`&4966PTp(5oGZ=i%H}~%=4%d;9A$er<<(}r&J4MKjpkvPoP=G|-RftkHW~Nk z3BMn?h0`6_8cE2SVoCxf=Sb`h$TO3_ zIl-Z1;4=fx#S7{R#JF;jYlASwR_(t$21}lOFtMvB`&=~^GQ|&L5=AT{Hf`)jEq!uA zU?=dc?orm$rwPjQeW8y4FXuN4V3_iR67~g5ne{6ENaCG*l+$=a0(p5uaZ8heUIBAA zgosI`mN5O+8vTm`iYQM;Qt9LA=DjZ=qPE47R));e7&J?d{jPM4<9!aq)~Dmi(Q;>g z{gVlkAN+i4P8SES568Ecznr$ES}8#ZkC|F7W-V8gBppwK*QOL$(^*pYKu)@c)4k9pp?H<@Iv zG2D%%>cEs>V#BUKdD*aD}9$Dd(Z} z(ySuaQ9>(s3ImbTq16wZjn-=qLf_BHJS>!w^jR`Ckx}0M7mFB_Z={5wj+@cJ&Ki;{ zrISB8P_@vlpytU3b(XGFb8mxpcFt}vCo@k=(=n?cnXTT6_$9P>`tFPzY!SDGn}N1f zq}cqS2;{nwK~>UQKfD=R2Uq}voek3IcjtUWckdsEvO!XLQh8N@4nT zRn4Q!XlSWWLJSTTwAxK4ptqiN@plbgnUysSa`PXz-e^T*#M9~Y_1pRQ@u6e=_>|(`%aG8h*cE|| z=C=GgFF=}eR;F}|8sRxkIu0Dd|}}ylZZc+|ZC}D_ zh{Y5j&~Pxcz(VPddP-5&KC_b`vKJ|Fi=rn%i~1q(@GB)n%=<2}FK-n$2vtit(-6h< ztkWW1mCBA<6GT14)I#EgP(m5*#_}sF6HXBfx(xsbj=q2qSq3J9pHB5K3?8}39yUtH zVA`Ki(jj7C5joS669b0ScV-?1CSH4*yG;R88i%33mdBL7eCR&E+aKOfzAyIY@fyoH zL)Uc=huw7_W4FtF?<9(A=FjYp7289+G7wUXm)s-zL2uU3qrqj;56(*1fqAZUQclGE z9KN5N0^~UtmlMHPz>yNdu70y?9t5*)33v73#4#&D()4d|@NWC*^PW-1JC@_J)qf>We(WrxqwE~MLSKSLd0rU)^v8`u|AE(A96VMJpSz`;$BRTM z-GH*^FuDj>+j9;?|4v2KyHbuU`0);E^m-aQPkQZWOhF#6bYl@KHi{Yqx;Ct&TzIl> z3*pXGN7I(C76C9SWvJa1_9O&*$N6>x9gs|x=M9IwzF&v}W-r1i7O@j)b19c{zdTj^ zQyQYQ=3@Bpof`=jD3Kb)qaGPHZAbODO7PiogCA@w^1g zScrnb_Oz3JqlGsAQ+LnS*o|hmi#HX5C*L1xodMljU^dQB2+f?S162@zp z!|gi1AbdH;3CPxz8Z*c;G)w_MpHJV<>G!Ekr8ZqCdFR|^3- z&g{JKc*bH4spR9FGaKg19&OGRM9`;9rv^avihA8>YkvsfHSr22L++Q~Nql|QNP^}8 zFb(NH0a&}19jRd;*zSpwVFgHB_O}23P5i>b1=xYvP0}X)@FTVp5aO~LX{DLOagyrl z>Z&1Sqoo!wXb41!%pjKoCF4zU36oz~@)ioIe2Bi`8FfIYhA;EChLmm$t=zmLcz4i( z^$sOmS!2bd1C_G1Hhi6jz8Ixy0iw42A=M+j$uJrEL)8!JRiV-qGlPIMPUE^GlEr%{ z)@Oj#8=a!Z)*d>$I4x78X+zl2PMO>@CMQIrF}K&ElsmF&G?!7D^|V8ydWYUfJ{QRxS>3~5aDab1F(TLhcm{?g=im89L4kUCjwM zWgjYra9GT8>HS-6rw;5+#CwY)mEuRJECIUt1}DQRvD;0;DaMH0*kINV+URQ@3sr^F zslbU2Js*!8V`J1J9ov+_#Y@f5u({4fx!0Z`I{HfXRyndj0=xhjfJguV$ZBrY#^8&;X_6B+Jy2=@&+ zEOfo-?}_c9yv8V6u9b4Z#GX1d4jUX6;jet&3k#hGp-{u)$A{-1tIc+&XcEq_5cM^} zZN_i+`SHWZR28yOb#U{B!=64(&$m~`#i|Q&%R>J1m)qAn%_|SCdgnJ7|ISY%_?P=U zTs9<#!o%izy?57?xM{G$J*lT(W$2MLSNz_hWxs7 zq=6B8F;*{I%?9@1lfpo8o2FM8*HAg_M9Neko8>Ggd@Py0RJ8K=?{5KEyPDmoVIb_8 zxLbrkz^xp5DNoS%e;uy9AR%pOY?Jx3$957{71CZRHM@!9IG<;}AJZb3*!pD2+vlas z{aMsJPT}D@F_w(OvTMavTbLBpHV8W~E0EPV zOd|%i@YmYgP?Sx|T*VOJq&D20MDDms#$hZw5h`jYRe2VGh=YQ#9_IE`V}8n!lkxBh zIg+2c?@>3pDFqgeVpeat<1@8=7a7mvv&)D*hkZvs@eYE=-XWdQO}0{5ALA({1E{mO zXJ-|##0`I-&-aF~PlI{KE!fAG2OgmRm#uzc5^^(PrdEzC(9HEC3SO@S5@~=bev|iF zDbUi2P2^p~U95opv&u#7eZ{aoV40hccsTf!5*h3R+_%*~_dFzTxru&agwBCf({?n{ zQ2eB&jbp{_Q}a+q^jDLLf1lO7!4R74Twfpd$>G2Oc36{l?Q1G%tNV)aoDk+U^K38$ z{haEsJ4tI_g0O%f_SVQ+Y9TU%7<_~>OC9>P8UY4&B8rcn%$720#!Bn0GjfbTJ^jS4 z--%3R?ua;BR>3nzeNiXDt{TIj4K1c=Y^eRm!>8x(pC7-F&!d027Y>ByVky;MUw*GB zXPq#H^@8!5(#v(_#GpjssBGcz8p_XKZ+{3DlO_2ZU0!_px;#I8`1bKWF&`(dK=4o4 zEVyXO3{C3nT}7A}j|)z(1Lguj-L9Keyf~|hNRg@J#R8JSTKkni43!xrm2OzW3N#yxA; z@N2QktYnUI=^+|Is0yEF=oU2DIE@Bgz^?71t2EX&D!w@M# zl`fEGM+w*0Z4Rt~vyZlsz=g;o5$?7xiT7~1Y`-40=ABiD-0&_m`yg4PKsg03^j*dAFT`F?TF5I7yD zc~fe*=9z8Ef@&;WM}mdlVfg#GRg;yNFDubo9cMc;NP6UPp z>srCK*$f3Y12b->n>UzYC4i?T~_>vU%qp5LqWP7*qg@=flR3-3znY!XiHW<0&I z0zPt6X=4TT$KQmiCatBss|IP#zP+cJJ3N5ehkvOC?wB31+CTE0Y?}9VLI3F>c{klj z3G3%yw+DQ(D2Fx5bWQB$6T_QihFtfM{ac@f=wQE8yhNIem$jZJA1Oo59!^~nHPtk) z=l5<6C>iPt6lXh4jW<(Xf&Oe*YTjJxxz%G6xN8pYPZExrqa54!s$aw&?R*P{W0(5& zIB@v@F;Gu^5@N@-C2j&PFR0iXdXkLzmP>%Gsi6%{s zs5#3;jO?Qa;Eu$^JMZH11zZO4xHrb|^tr!gxFW3}+h{W6`z~z(D*Z4>>G`shV!7*K z2<|%PU(c66FSple_Em%v7~}?zwBg8`U53ZrfBVu6o&WLuX}OJV zobXZtna>BOR%9WEzO#HomDoMr_UE<4!OT)a_|wijpzaXkb2cu^CGfwU>~Bm{4!XFL+qATYg|hH*KvHgO%G}Aa6rE-20usa(_(-DV0ail z^uy@m4P%u!TvbD(fzzpygud777wbzAkKu&|s9{}V#IL{|`WY?Ftz$S6Q5I>eaIGe- z`{glFUllNViXVZ+)e&lds(*EqsK9%Q{TS~v{{$ESbfgFNEIv=v00000NkvXXu0mjf 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 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 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 4bec6e9d8..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_ 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 8d55cd0db..a06e663d5 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_ @@ -520,6 +520,13 @@ module SMESH SMESH_MeshEditor GetMeshEditPreviewer() raises (SALOME::SALOME_Exception); + /*! + * Return true if the mesh has been edited since a total re-compute + * and those modifications may prevent successful partial re-compute + */ + boolean HasModificationsToDiscard() + raises (SALOME::SALOME_Exception); + /*! Check group names for duplications. * Consider maximum group name length stored in MED file. */ @@ -666,6 +673,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); @@ -771,6 +781,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 0b8807d71..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 @@ -167,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 @@ -2492,6 +2541,10 @@ Consider saving your work before application crash STB_TRANS Translation + + STB_SCALE + Scale Transform + STB_TRANSP Transparency @@ -3002,6 +3055,10 @@ Consider saving your work before application crash TOP_TRANS Translation + + TOP_SCALE + Scale Transform + TOP_TRANSP Transparency @@ -3110,6 +3167,48 @@ 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 + + + FULL_RECOMPUTE_QUESTION + +The mesh has been edited since a last total re-compute +that may prevent successful computation. +Do you wish to re-compute the mesh totally to discard the modifications? + + + + SMESH_PREF_vol_precision + Volume precision + + + SMESH_PRECISION_HINT + +Input value precision can be adjusted using +'%1' parameter in Mesh module preferences. + SMESHGUI @@ -3190,6 +3289,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 @@ -3238,6 +3341,10 @@ Please, create VTK viewer and try again PREF_LABELS_COLOR Labels color + + PREF_MARKER_SCALE + Scale of marker + PREF_NODES Nodes @@ -3270,10 +3377,6 @@ Please, create VTK viewer and try again PREF_SHRINK_COEFF Shrink coef. - - PREF_SIZE - Size - PREF_TAB_GENERAL General @@ -3290,6 +3393,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 @@ -4719,6 +4826,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 @@ -5006,4 +5132,63 @@ It is impossible to read point coordinates from file 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 b9282322d..9a2a3c6a4 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 ee137822c..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) diff --git a/src/SMESH_I/SMESH_2smeshpy.hxx b/src/SMESH_I/SMESH_2smeshpy.hxx index fc0adb941..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) 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 5cc57fa79..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 @@ -221,6 +222,19 @@ namespace SMESH 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) 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 f5de7bd50..49ec45fad 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 @@ -2516,6 +2518,14 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent, aDataset->WriteOnDisk( anAutoColor ); aDataset->CloseOnDisk(); + // issue 0020693. Store _isModified flag + int isModified = myImpl->GetImpl().GetIsModified(); + aSize[ 0 ] = 1; + aDataset = new HDFdataset( "_isModified", aTopGroup, HDF_INT32, aSize, 1 ); + aDataset->CreateOnDisk(); + aDataset->WriteOnDisk( &isModified ); + aDataset->CloseOnDisk(); + // write reference on a shape if exists SALOMEDS::SObject_var myRef; bool shapeRefFound = false; @@ -3046,6 +3056,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 ) { @@ -3604,6 +3616,18 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent, } } } + + // issue 0020693. Restore _isModified flag + if( aTopGroup->ExistInternalObject( "_isModified" ) ) + { + aDataset = new HDFdataset( "_isModified", aTopGroup ); + aDataset->OpenOnDisk(); + size = aDataset->GetSize(); + int* isModified = new int[ size ]; + aDataset->ReadFromDisk( isModified ); + aDataset->CloseOnDisk(); + myNewMeshImpl->GetImpl().SetIsModified( bool(*isModified)); + } } } } diff --git a/src/SMESH_I/SMESH_Gen_i.hxx b/src/SMESH_I/SMESH_Gen_i.hxx index 174b1b2eb..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 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 000bc95e8..6887ed0a1 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,10 @@ SMESH_MeshEditor_i::RemoveElements(const SMESH::long_array & IDsOfElements) // Update Python script TPythonDump() << "isDone = " << this << ".RemoveElements( " << IDsOfElements << " )"; -#ifdef _DEBUG_ - TPythonDump() << "print 'RemoveElements: ', isDone"; -#endif + + if ( IDsOfElements.length() ) + myMesh->SetIsModified( true ); // issue 0020693 + // Remove Elements return anEditor.Remove( IdList, false ); } @@ -314,9 +337,9 @@ 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 + + if ( IDsOfNodes.length() ) + myMesh->SetIsModified( true ); // issue 0020693 return anEditor.Remove( IdList, true ); } @@ -338,6 +361,8 @@ CORBA::Long SMESH_MeshEditor_i::AddNode(CORBA::Double x, TPythonDump() << "nodeID = " << this << ".AddNode( " << x << ", " << y << ", " << z << " )"; + myMesh->SetIsModified( true ); // issue 0020693 + return N->GetID(); } @@ -356,6 +381,8 @@ CORBA::Long SMESH_MeshEditor_i::Add0DElement(CORBA::Long IDOfNode) // Update Python script TPythonDump() << "elem0d = " << this << ".Add0DElement( " << IDOfNode <<" )"; + myMesh->SetIsModified( true ); // issue 0020693 + if (elem) return elem->GetID(); @@ -397,7 +424,7 @@ CORBA::Long SMESH_MeshEditor_i::AddEdge(const SMESH::long_array & IDsOfNodes) } if(elem) - return elem->GetID(); + return myMesh->SetIsModified( true ), elem->GetID(); return 0; } @@ -445,7 +472,7 @@ CORBA::Long SMESH_MeshEditor_i::AddFace(const SMESH::long_array & IDsOfNodes) TPythonDump() << "faceID = " << this << ".AddFace( " << IDsOfNodes << " )"; if(elem) - return elem->GetID(); + return myMesh->SetIsModified( true ), elem->GetID(); return 0; } @@ -468,14 +495,8 @@ CORBA::Long SMESH_MeshEditor_i::AddPolygonalFace (const SMESH::long_array & IDsO // Update Python script TPythonDump() <<"faceID = "<GetID(); - return 0; + return elem ? ( myMesh->SetIsModified( true ), elem->GetID()) : 0; } //============================================================================= @@ -517,12 +538,9 @@ 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(); + return myMesh->SetIsModified( true ), elem->GetID(); return 0; } @@ -552,14 +570,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 ? ( myMesh->SetIsModified( true ), elem->GetID()) : 0; } //============================================================================= @@ -590,14 +602,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 ? ( myMesh->SetIsModified( true ), elem->GetID()) : 0; } //============================================================================= @@ -627,6 +633,8 @@ void SMESH_MeshEditor_i::SetNodeOnVertex(CORBA::Long NodeID, CORBA::Long VertexI THROW_SALOME_CORBA_EXCEPTION("Invalid VertexID", SALOME::BAD_PARAM); mesh->SetNodeOnVertex( node, VertexID ); + + myMesh->SetIsModified( true ); } //============================================================================= @@ -663,6 +671,8 @@ void SMESH_MeshEditor_i::SetNodeOnEdge(CORBA::Long NodeID, CORBA::Long EdgeID, THROW_SALOME_CORBA_EXCEPTION("Invalid paramOnEdge", SALOME::BAD_PARAM); mesh->SetNodeOnEdge( node, EdgeID, paramOnEdge ); + + myMesh->SetIsModified( true ); } //============================================================================= @@ -712,6 +722,8 @@ void SMESH_MeshEditor_i::SetNodeOnFace(CORBA::Long NodeID, CORBA::Long FaceID, } mesh->SetNodeOnFace( node, FaceID, u, v ); + + myMesh->SetIsModified( true ); } //============================================================================= @@ -742,6 +754,8 @@ void SMESH_MeshEditor_i::SetNodeInVolume(CORBA::Long NodeID, CORBA::Long SolidID THROW_SALOME_CORBA_EXCEPTION("Invalid SolidID", SALOME::BAD_PARAM); mesh->SetNodeInVolume( node, SolidID ); + + // myMesh->SetIsModified( true ); - SetNodeInVolume() can't prevent re-compute, I believe } //============================================================================= @@ -775,6 +789,8 @@ void SMESH_MeshEditor_i::SetMeshElementOnShape(CORBA::Long ElementID, THROW_SALOME_CORBA_EXCEPTION("Invalid shape type", SALOME::BAD_PARAM); mesh->SetMeshElementOnShape( elem, ShapeID ); + + myMesh->SetIsModified( true ); } //============================================================================= @@ -797,6 +813,8 @@ CORBA::Boolean SMESH_MeshEditor_i::InverseDiag(CORBA::Long NodeID1, TPythonDump() << "isDone = " << this << ".InverseDiag( " << NodeID1 << ", " << NodeID2 << " )"; + myMesh->SetIsModified( true ); + ::SMESH_MeshEditor aMeshEditor( myMesh ); return aMeshEditor.InverseDiag ( n1, n2 ); } @@ -825,6 +843,9 @@ CORBA::Boolean SMESH_MeshEditor_i::DeleteDiag(CORBA::Long NodeID1, bool stat = aMeshEditor.DeleteDiag ( n1, n2 ); + if ( stat ) + myMesh->SetIsModified( true ); // issue 0020693 + storeResult(aMeshEditor); return stat; @@ -851,6 +872,9 @@ CORBA::Boolean SMESH_MeshEditor_i::Reorient(const SMESH::long_array & IDsOfEleme // Update Python script TPythonDump() << "isDone = " << this << ".Reorient( " << IDsOfElements << " )"; + if ( IDsOfElements.length() ) + myMesh->SetIsModified( true ); // issue 0020693 + return true; } @@ -865,15 +889,13 @@ CORBA::Boolean SMESH_MeshEditor_i::ReorientObject(SMESH::SMESH_IDSource_ptr theO { initData(); + TPythonDump aTPythonDump; // suppress dump in Reorient() + SMESH::long_array_var anElementsId = theObject->GetIDs(); CORBA::Boolean isDone = Reorient(anElementsId); - // Clear python line, created by Reorient() - SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen(); - aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID()); - // Update Python script - TPythonDump() << "isDone = " << this << ".ReorientObject( " << theObject << " )"; + aTPythonDump << "isDone = " << this << ".ReorientObject( " << theObject << " )"; return isDone; } @@ -932,13 +954,12 @@ 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 ); bool stat = anEditor.TriToQuad( faces, aCrit, MaxAngle ); + if ( stat ) + myMesh->SetIsModified( true ); // issue 0020693 storeResult(anEditor); @@ -957,25 +978,16 @@ CORBA::Boolean SMESH_MeshEditor_i::TriToQuadObject (SMESH::SMESH_IDSource_ptr { initData(); + TPythonDump aTPythonDump; // suppress dump in TriToQuad() SMESH::long_array_var anElementsId = theObject->GetIDs(); CORBA::Boolean isDone = TriToQuad(anElementsId, Criterion, MaxAngle); - // 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 ); // Update Python script - TPythonDump() << "isDone = " << this << ".TriToQuadObject(" - << theObject << ", " << aNumericalFunctor << ", " << MaxAngle << " )"; -#ifdef _DEBUG_ - TPythonDump() << "print 'TriToQuadObject: ', isDone"; -#endif + aTPythonDump << "isDone = " << this << ".TriToQuadObject(" + << theObject << ", " << aNumericalFunctor << ", " << MaxAngle << " )"; return isDone; } @@ -1006,12 +1018,11 @@ 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 ); + if ( stat ) + myMesh->SetIsModified( true ); // issue 0020693 storeResult(anEditor); @@ -1029,24 +1040,16 @@ CORBA::Boolean SMESH_MeshEditor_i::QuadToTriObject (SMESH::SMESH_IDSource_ptr { initData(); + TPythonDump aTPythonDump; // suppress dump in QuadToTri() + SMESH::long_array_var anElementsId = theObject->GetIDs(); CORBA::Boolean isDone = QuadToTri(anElementsId, Criterion); - // 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 + aTPythonDump << "isDone = " << this << ".QuadToTriObject( " << theObject << ", " << aNumericalFunctor << " )"; return isDone; } @@ -1069,12 +1072,12 @@ 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 ); + if ( stat ) + myMesh->SetIsModified( true ); // issue 0020693 + storeResult(anEditor); @@ -1092,22 +1095,14 @@ CORBA::Boolean SMESH_MeshEditor_i::SplitQuadObject (SMESH::SMESH_IDSource_ptr th { initData(); + TPythonDump aTPythonDump; // suppress dump in SplitQuad() + SMESH::long_array_var anElementsId = theObject->GetIDs(); CORBA::Boolean isDone = SplitQuad(anElementsId, Diag13); - // 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 + aTPythonDump << "isDone = " << this << ".SplitQuadObject( " + << theObject << ", " << Diag13 << " )"; return isDone; } @@ -1138,6 +1133,33 @@ 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 )); + + storeResult(anEditor); + +// if ( myLastCreatedElems.length() ) - it does not influence Compute() +// myMesh->SetIsModified( true ); // issue 0020693 + + TPythonDump() << this << ".SplitVolumesIntoTetra( " + << elems << ", " << methodFlags << " )"; +} //======================================================================= //function : Smooth @@ -1243,6 +1265,8 @@ SMESH_MeshEditor_i::smooth(const SMESH::long_array & IDsOfElements, anEditor.Smooth(elements, fixedNodes, method, MaxNbOfIterations, MaxAspectRatio, IsParametric ); + myMesh->SetIsModified( true ); // issue 0020693 + storeResult(anEditor); // Update Python script @@ -1253,9 +1277,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; } @@ -1277,28 +1298,20 @@ SMESH_MeshEditor_i::smoothObject(SMESH::SMESH_IDSource_ptr theObjec { initData(); + TPythonDump aTPythonDump; // suppress dump in smooth() + SMESH::long_array_var anElementsId = theObject->GetIDs(); CORBA::Boolean isDone = smooth (anElementsId, IDsOfFixedNodes, MaxNbOfIterations, MaxAspectRatio, Method, IsParametric); - // 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 << "." - << (IsParametric ? "SmoothParametricObject( " : "SmoothObject( ") - << theObject << ", " << IDsOfFixedNodes << ", " - << MaxNbOfIterations << ", " << MaxAspectRatio << ", " - << "SMESH.SMESH_MeshEditor." - << ( Method == SMESH::SMESH_MeshEditor::CENTROIDAL_SMOOTH ? - "CENTROIDAL_SMOOTH )" : "LAPLACIAN_SMOOTH )"); -#ifdef _DEBUG_ - TPythonDump() << "print 'SmoothObject: ', isDone"; -#endif + aTPythonDump << "isDone = " << this << "." + << (IsParametric ? "SmoothParametricObject( " : "SmoothObject( ") + << theObject << ", " << IDsOfFixedNodes << ", " + << MaxNbOfIterations << ", " << MaxAspectRatio << ", " + << "SMESH.SMESH_MeshEditor." + << ( Method == SMESH::SMESH_MeshEditor::CENTROIDAL_SMOOTH ? + "CENTROIDAL_SMOOTH )" : "LAPLACIAN_SMOOTH )"); return isDone; } @@ -1392,6 +1405,8 @@ SMESH_MeshEditor_i::rotationSweep(const SMESH::long_array & theIDsOfElements, theNbOfSteps, theTolerance, theMakeGroups, makeWalls); storeResult(anEditor); + // myMesh->SetIsModified( true ); -- it does not influence Compute() + return theMakeGroups ? getGroups(groupIds.get()) : 0; } @@ -2742,9 +2757,11 @@ SMESH_MeshEditor_i::mirror(const SMESH::long_array & theIDsOfElements, ::SMESH_MeshEditor::PGroupIDs groupIds = anEditor.Transform (elements, aTrsf, theCopy, theMakeGroups, theTargetMesh); - if(theCopy) { + if(theCopy) storeResult(anEditor); - } + else + myMesh->SetIsModified( true ); + return theMakeGroups ? getGroups(groupIds.get()) : 0; } @@ -2951,6 +2968,8 @@ SMESH_MeshEditor_i::translate(const SMESH::long_array & theIDsOfElements, if(theCopy) storeResult(anEditor); + else + myMesh->SetIsModified( true ); return theMakeGroups ? getGroups(groupIds.get()) : 0; } @@ -3155,9 +3174,11 @@ SMESH_MeshEditor_i::rotate(const SMESH::long_array & theIDsOfElements, ::SMESH_MeshEditor::PGroupIDs groupIds = anEditor.Transform (elements, aTrsf, theCopy, theMakeGroups, theTargetMesh); - if(theCopy) { + if(theCopy) storeResult(anEditor); - } + else + myMesh->SetIsModified( true ); + return theMakeGroups ? getGroups(groupIds.get()) : 0; } @@ -3346,6 +3367,142 @@ 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); + else + myMesh->SetIsModified( true ); + + 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 : @@ -3390,8 +3547,9 @@ void SMESH_MeshEditor_i::FindCoincidentNodesOnPart(SMESH::SMESH_IDSource_ptr SMESHDS_Mesh* aMesh = GetMeshDS(); set nodes; - if ( !CORBA::is_nil(SMESH::SMESH_GroupBase::_narrow(theObject)) && - SMESH::SMESH_GroupBase::_narrow(theObject)->GetType() == SMESH::NODE) { + SMESH::SMESH_GroupBase_var group = SMESH::SMESH_GroupBase::_narrow(theObject); + if ( !group->_is_nil() && group->GetType() == SMESH::NODE) + { for(int i = 0; i < aElementsId->length(); i++) { CORBA::Long ind = aElementsId[i]; const SMDS_MeshNode * elem = aMesh->FindNode(ind); @@ -3469,6 +3627,8 @@ void SMESH_MeshEditor_i::MergeNodes (const SMESH::array_of_long_array& GroupsOfN anEditor.MergeNodes( aListOfListOfNodes ); aTPythonDump << "])"; + + myMesh->SetIsModified( true ); } //======================================================================= @@ -3479,8 +3639,10 @@ void SMESH_MeshEditor_i::FindEqualElements(SMESH::SMESH_IDSource_ptr theObj SMESH::array_of_long_array_out GroupsOfElementsID) { initData(); - if ( !(!CORBA::is_nil(SMESH::SMESH_GroupBase::_narrow(theObject)) && - SMESH::SMESH_GroupBase::_narrow(theObject)->GetType() == SMESH::NODE) ) { + + SMESH::SMESH_GroupBase_var group = SMESH::SMESH_GroupBase::_narrow(theObject); + if ( !(!group->_is_nil() && group->GetType() == SMESH::NODE) ) + { typedef list TListOfIDs; set elems; SMESH::long_array_var aElementsId = theObject->GetIDs(); @@ -3548,6 +3710,8 @@ void SMESH_MeshEditor_i::MergeElements(const SMESH::array_of_long_array& GroupsO ::SMESH_MeshEditor anEditor( myMesh ); anEditor.MergeElements(aListOfListOfElementsID); + myMesh->SetIsModified( true ); + aTPythonDump << "] )"; } @@ -3595,6 +3759,8 @@ CORBA::Boolean SMESH_MeshEditor_i::MoveNode(CORBA::Long NodeID, TPythonDump() << "isDone = " << this << ".MoveNode( " << NodeID << ", " << x << ", " << y << ", " << z << " )"; + myMesh->SetIsModified( true ); + return true; } @@ -3684,10 +3850,13 @@ CORBA::Long SMESH_MeshEditor_i::MoveClosestNodeToPoint(CORBA::Double x, } } - if ( !myPreviewMode ) { + if ( !myPreviewMode ) + { TPythonDump() << "nodeID = " << this << ".MoveClosestNodeToPoint( "<< x << ", " << y << ", " << z << ", " << nodeID << " )"; + + myMesh->SetIsModified( true ); } return nodeID; @@ -3731,6 +3900,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 : @@ -3814,6 +4001,8 @@ SMESH_MeshEditor_i::SewFreeBorders(CORBA::Long FirstNodeID1, storeResult(anEditor); + myMesh->SetIsModified( true ); + return error; } @@ -3869,6 +4058,8 @@ SMESH_MeshEditor_i::SewConformFreeBorders(CORBA::Long FirstNodeID1, storeResult(anEditor); + myMesh->SetIsModified( true ); + return error; } @@ -3929,6 +4120,8 @@ SMESH_MeshEditor_i::SewBorderToSide(CORBA::Long FirstNodeIDOnFreeBorder, storeResult(anEditor); + myMesh->SetIsModified( true ); + return error; } @@ -3984,6 +4177,8 @@ SMESH_MeshEditor_i::SewSideElements(const SMESH::long_array& IDsOfSide1Elements, storeResult(anEditor); + myMesh->SetIsModified( true ); + return error; } @@ -4017,11 +4212,13 @@ 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 ); + bool res = GetMeshDS()->ChangeElementNodes( elem, & aNodes[0], nbn1+1 ); + + if ( res ) + myMesh->SetIsModified( true ); + + return res; } //================================================================================ @@ -4169,6 +4366,7 @@ void SMESH_MeshEditor_i::ConvertToQuadratic(CORBA::Boolean theForce3d) ::SMESH_MeshEditor anEditor( myMesh ); anEditor.ConvertToQuadratic(theForce3d); TPythonDump() << this << ".ConvertToQuadratic( " << theForce3d << " )"; + myMesh->SetIsModified( true ); } //======================================================================= @@ -4181,6 +4379,8 @@ CORBA::Boolean SMESH_MeshEditor_i::ConvertFromQuadratic() ::SMESH_MeshEditor anEditor( myMesh ); CORBA::Boolean isDone = anEditor.ConvertFromQuadratic(); TPythonDump() << this << ".ConvertFromQuadratic()"; + if ( isDone ) + myMesh->SetIsModified( true ); return isDone; } @@ -4244,6 +4444,8 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodes( const SMESH::long_array& theNode bool aResult = aMeshEditor.DoubleNodes( aListOfNodes, aListOfElems ); storeResult( aMeshEditor) ; + if ( aResult ) + myMesh->SetIsModified( true ); return aResult; } @@ -4265,7 +4467,10 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNode( CORBA::Long theNodeI SMESH::long_array_var aNodes = new SMESH::long_array; aNodes->length( 1 ); aNodes[ 0 ] = theNodeId; - return DoubleNodes( aNodes, theModifiedElems ); + bool done = DoubleNodes( aNodes, theModifiedElems ); + if ( done ) + myMesh->SetIsModified( true ); + return done; } //================================================================================ @@ -4296,7 +4501,12 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeGroup( aModifiedElems->length( 0 ); } - return DoubleNodes( aNodes, aModifiedElems ); + bool done = DoubleNodes( aNodes, aModifiedElems ); + + if ( done ) + myMesh->SetIsModified( true ); + + return done; } //================================================================================ @@ -4347,6 +4557,9 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeGroups( storeResult( aMeshEditor) ; + if ( aResult ) + myMesh->SetIsModified( true ); + return aResult; } @@ -4382,6 +4595,9 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElem( const SMESH::long_array& theE storeResult( aMeshEditor) ; + if ( aResult ) + myMesh->SetIsModified( true ); + // Update Python script TPythonDump() << "isDone = " << this << ".DoubleNodes( " << theElems << ", " << theNodesNot << ", " << theAffectedElems << " )"; @@ -4422,6 +4638,9 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElemInRegion storeResult( aMeshEditor) ; + if ( aResult ) + myMesh->SetIsModified( true ); + // Update Python script TPythonDump() << "isDone = " << this << ".DoubleNodesInRegion( " << theElems << ", " << theNodesNot << ", " << theShape << " )"; @@ -4452,11 +4671,9 @@ static void groupToSet(SMESH::SMESH_GroupBase_ptr theGrp, arrayToSet( anIDs, theMeshDS, theElemSet, theType); } -CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElemGroup( - SMESH::SMESH_GroupBase_ptr theElems, +CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElemGroup(SMESH::SMESH_GroupBase_ptr theElems, SMESH::SMESH_GroupBase_ptr theNodesNot, - SMESH::SMESH_GroupBase_ptr theAffectedElems ) - + SMESH::SMESH_GroupBase_ptr theAffectedElems) { if ( CORBA::is_nil( theElems ) && theElems->GetType() == SMESH::NODE ) return false; @@ -4475,6 +4692,9 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElemGroup( storeResult( aMeshEditor) ; + if ( aResult ) + myMesh->SetIsModified( true ); + // Update Python script TPythonDump() << "isDone = " << this << ".DoubleNodeGroup( " << theElems << ", " << theNodesNot << ", " << theAffectedElems << " )"; @@ -4517,6 +4737,9 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElemGroupInRegion( storeResult( aMeshEditor) ; + if ( aResult ) + myMesh->SetIsModified( true ); + // Update Python script TPythonDump() << "isDone = " << this << ".DoubleNodeGroupInRegion( " << theElems << ", " << theNodesNot << ", " << theShape << " )"; @@ -4553,10 +4776,9 @@ static void listOfGroupToSet(const SMESH::ListOfGroups& theGrpList, } } -CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElemGroups( - const SMESH::ListOfGroups& theElems, +CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElemGroups(const SMESH::ListOfGroups& theElems, const SMESH::ListOfGroups& theNodesNot, - const SMESH::ListOfGroups& theAffectedElems ) + const SMESH::ListOfGroups& theAffectedElems) { initData(); @@ -4572,8 +4794,11 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElemGroups( storeResult( aMeshEditor) ; + if ( aResult ) + myMesh->SetIsModified( true ); + // Update Python script - TPythonDump() << "isDone = " << this << ".DoubleNodeGroups( " << &theElems << ", " + TPythonDump() << "isDone = " << this << ".DoubleNodeElemGroups( " << &theElems << ", " << &theNodesNot << ", " << &theAffectedElems << " )"; return aResult; } @@ -4592,10 +4817,10 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElemGroups( */ //================================================================================ -CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElemGroupsInRegion( - const SMESH::ListOfGroups& theElems, - const SMESH::ListOfGroups& theNodesNot, - GEOM::GEOM_Object_ptr theShape ) +CORBA::Boolean +SMESH_MeshEditor_i::DoubleNodeElemGroupsInRegion(const SMESH::ListOfGroups& theElems, + const SMESH::ListOfGroups& theNodesNot, + GEOM::GEOM_Object_ptr theShape ) { initData(); @@ -4611,6 +4836,9 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElemGroupsInRegion( storeResult( aMeshEditor) ; + if ( aResult ) + myMesh->SetIsModified( true ); + // Update Python script TPythonDump() << "isDone = " << this << ".DoubleNodeGroupsInRegion( " << &theElems << ", " << &theNodesNot << ", " << theShape << " )"; 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 9c44e29d2..a21535af8 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 @@ -1860,7 +1861,6 @@ void SMESH_Mesh_i::CheckGeomGroupModif() //============================================================================= /*! * \brief Create standalone group instead if group on geometry - * */ //============================================================================= @@ -1917,8 +1917,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(); @@ -2229,6 +2229,19 @@ SMESH::SMESH_MeshEditor_ptr SMESH_Mesh_i::GetMeshEditPreviewer() return aMesh._retn(); } +//================================================================================ +/*! + * \brief Return true if the mesh has been edited since a last total re-compute + * and those modifications may prevent successful partial re-compute + */ +//================================================================================ + +CORBA::Boolean SMESH_Mesh_i::HasModificationsToDiscard() throw(SALOME::SALOME_Exception) +{ + Unexpect aCatch(SALOME_SalomeException); + return _impl->HasModificationsToDiscard(); +} + //============================================================================= /*! * @@ -2755,6 +2768,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(); +} //============================================================================= /*! @@ -3180,6 +3208,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; +} //============================================================================= /*! diff --git a/src/SMESH_I/SMESH_Mesh_i.hxx b/src/SMESH_I/SMESH_Mesh_i.hxx index ab8abdabf..521633e51 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 @@ -161,6 +162,8 @@ public: SMESH::SMESH_MeshEditor_ptr GetMeshEditPreviewer(); + CORBA::Boolean HasModificationsToDiscard() throw (SALOME::SALOME_Exception); + void ClearLog() throw (SALOME::SALOME_Exception); @@ -307,6 +310,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 */ @@ -452,7 +458,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 */ 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 bde5ae9f7..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_ @@ -120,6 +121,9 @@ namespace SMESH 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 66252f223..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 diff --git a/src/SMESH_SWIG/PAL_MESH_043_2D.py b/src/SMESH_SWIG/PAL_MESH_043_2D.py index 85fa92589..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 diff --git a/src/SMESH_SWIG/PAL_MESH_043_3D.py b/src/SMESH_SWIG/PAL_MESH_043_3D.py index 009ca3991..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 diff --git a/src/SMESH_SWIG/SMESH_AdvancedEditor.py b/src/SMESH_SWIG/SMESH_AdvancedEditor.py index 3eeae8e74..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,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + import salome import smesh import math 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 2ef1446fc..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 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 6cd724bce..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,6 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + import salome import smesh diff --git a/src/SMESH_SWIG/SMESH_Nut.py b/src/SMESH_SWIG/SMESH_Nut.py index ff0df1683..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 diff --git a/src/SMESH_SWIG/SMESH_Partition1_tetra.py b/src/SMESH_SWIG/SMESH_Partition1_tetra.py index 5c2825846..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 diff --git a/src/SMESH_SWIG/SMESH_Sphere.py b/src/SMESH_SWIG/SMESH_Sphere.py index e79f5eaf6..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 diff --git a/src/SMESH_SWIG/SMESH_blocks.py b/src/SMESH_SWIG/SMESH_blocks.py index fce550fb5..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 diff --git a/src/SMESH_SWIG/SMESH_box.py b/src/SMESH_SWIG/SMESH_box.py index 6e034aca0..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 diff --git a/src/SMESH_SWIG/SMESH_box2_tetra.py b/src/SMESH_SWIG/SMESH_box2_tetra.py index ab189a361..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 # diff --git a/src/SMESH_SWIG/SMESH_box3_tetra.py b/src/SMESH_SWIG/SMESH_box3_tetra.py index 5e750101a..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 diff --git a/src/SMESH_SWIG/SMESH_box_tetra.py b/src/SMESH_SWIG/SMESH_box_tetra.py index e02f74718..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 # 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 ba48f57f6..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 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 d556ffd23..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 diff --git a/src/SMESH_SWIG/SMESH_fixation_netgen.py b/src/SMESH_SWIG/SMESH_fixation_netgen.py index aad14b6cd..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 diff --git a/src/SMESH_SWIG/SMESH_fixation_tetra.py b/src/SMESH_SWIG/SMESH_fixation_tetra.py index 7af18468f..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 diff --git a/src/SMESH_SWIG/SMESH_flight_skin.py b/src/SMESH_SWIG/SMESH_flight_skin.py index dcd788a52..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 # diff --git a/src/SMESH_SWIG/SMESH_freebord.py b/src/SMESH_SWIG/SMESH_freebord.py index 539451150..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 diff --git a/src/SMESH_SWIG/SMESH_hexaedre.py b/src/SMESH_SWIG/SMESH_hexaedre.py index abec53438..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 diff --git a/src/SMESH_SWIG/SMESH_mechanic.py b/src/SMESH_SWIG/SMESH_mechanic.py index 134e8ee7e..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 diff --git a/src/SMESH_SWIG/SMESH_mechanic_editor.py b/src/SMESH_SWIG/SMESH_mechanic_editor.py index 630b308b5..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 diff --git a/src/SMESH_SWIG/SMESH_mechanic_netgen.py b/src/SMESH_SWIG/SMESH_mechanic_netgen.py index 8fa15f583..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 diff --git a/src/SMESH_SWIG/SMESH_mechanic_tetra.py b/src/SMESH_SWIG/SMESH_mechanic_tetra.py index 42f5bf896..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 diff --git a/src/SMESH_SWIG/SMESH_reg.py b/src/SMESH_SWIG/SMESH_reg.py index 85f81731a..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 # 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 dc968e3b8..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 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 bc8278027..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 # diff --git a/src/SMESH_SWIG/SMESH_test1_AndDisplay.py b/src/SMESH_SWIG/SMESH_test1_AndDisplay.py index 96e502821..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 # 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 c2ac4c480..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 diff --git a/src/SMESH_SWIG/SMESH_test5.py b/src/SMESH_SWIG/SMESH_test5.py index f80dffc4c..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 # 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 04091bdc6..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 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 3c1da5aab..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 * diff --git a/src/SMESH_SWIG/ex02_cube2primitive.py b/src/SMESH_SWIG/ex02_cube2primitive.py index 277dfbc8a..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 * diff --git a/src/SMESH_SWIG/ex03_cube2partition.py b/src/SMESH_SWIG/ex03_cube2partition.py index a9d1cc975..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 * diff --git a/src/SMESH_SWIG/ex04_cube5tetraHexa.py b/src/SMESH_SWIG/ex04_cube5tetraHexa.py index 57edb88c8..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 * diff --git a/src/SMESH_SWIG/ex05_hole1build.py b/src/SMESH_SWIG/ex05_hole1build.py index 5b3cb4ab7..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 * diff --git a/src/SMESH_SWIG/ex06_hole1boolean.py b/src/SMESH_SWIG/ex06_hole1boolean.py index ee62820fb..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 * diff --git a/src/SMESH_SWIG/ex07_hole1partition.py b/src/SMESH_SWIG/ex07_hole1partition.py index ab55f37ee..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 * diff --git a/src/SMESH_SWIG/ex08_hole2build.py b/src/SMESH_SWIG/ex08_hole2build.py index af46cb575..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 * diff --git a/src/SMESH_SWIG/ex09_grid4build.py b/src/SMESH_SWIG/ex09_grid4build.py index 9d51821f6..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 * diff --git a/src/SMESH_SWIG/ex10_grid4geometry.py b/src/SMESH_SWIG/ex10_grid4geometry.py index 2e244e7c4..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 * diff --git a/src/SMESH_SWIG/ex11_grid3partition.py b/src/SMESH_SWIG/ex11_grid3partition.py index 71e88a7ed..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 * diff --git a/src/SMESH_SWIG/ex12_grid17partition.py b/src/SMESH_SWIG/ex12_grid17partition.py index ca95b25de..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 * diff --git a/src/SMESH_SWIG/ex13_hole1partial.py b/src/SMESH_SWIG/ex13_hole1partial.py index 24c12090d..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 * diff --git a/src/SMESH_SWIG/ex14_cyl1holed.py b/src/SMESH_SWIG/ex14_cyl1holed.py index e01d6ac1a..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 * diff --git a/src/SMESH_SWIG/ex15_cyl2geometry.py b/src/SMESH_SWIG/ex15_cyl2geometry.py index 418b1cb1e..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 # ----------------------------- diff --git a/src/SMESH_SWIG/ex16_cyl2complementary.py b/src/SMESH_SWIG/ex16_cyl2complementary.py index c67af2395..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 * diff --git a/src/SMESH_SWIG/ex17_dome1.py b/src/SMESH_SWIG/ex17_dome1.py index efa10ae09..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 * diff --git a/src/SMESH_SWIG/ex18_dome2.py b/src/SMESH_SWIG/ex18_dome2.py index 85df8ffe4..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 * diff --git a/src/SMESH_SWIG/ex19_sphereINcube.py b/src/SMESH_SWIG/ex19_sphereINcube.py index 9aa839289..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 * diff --git a/src/SMESH_SWIG/ex21_lamp.py b/src/SMESH_SWIG/ex21_lamp.py index c92b77eb1..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 * diff --git a/src/SMESH_SWIG/ex24_cylinder.py b/src/SMESH_SWIG/ex24_cylinder.py index e66603762..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,6 +17,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # + # ================================== # import math 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 9842e0b97..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 diff --git a/src/SMESH_SWIG/ex30_tepal.py b/src/SMESH_SWIG/ex30_tepal.py index 1a3d7755e..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 diff --git a/src/SMESH_SWIG/ex31_dimGroup.py b/src/SMESH_SWIG/ex31_dimGroup.py index 149271fc0..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 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 c4f773d6c..c12d93ef2 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 @@ -163,7 +161,7 @@ Hexa = 8 Hexotic = 9 BLSURF = 10 GHS3DPRL = 11 -QUARDANGLE = 0 +QUADRANGLE = 0 RADIAL_QUAD = 1 # MirrorType enumeration @@ -197,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 @@ -436,6 +438,7 @@ def TreatHypoStatus(status, hypName, geomName, isAlgo): elif status == HYP_NOTCONFORM : reason = "a non-conform mesh would be built" elif status == HYP_ALREADY_EXIST : + if isAlgo: return # it does not influence anything reason = hypType + " of the same dimension is already assigned to this shape" elif status == HYP_BAD_DIM : reason = hypType + " mismatches the shape" @@ -1062,10 +1065,10 @@ class Mesh: # 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.QUARDANGLE || smesh.RADIAL_QUAD + # @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, algo=QUARDANGLE): + def Quadrangle(self, geom=0, algo=QUADRANGLE): if algo==RADIAL_QUAD: return Mesh_RadialQuadrangle1D2D(self,geom) else: @@ -1162,9 +1165,12 @@ class Mesh: ## Computes the mesh and returns the status of the computation + # @param discardModifs if True and the mesh has been edited since + # a last total re-compute and that may prevent successful partial re-compute, + # then the mesh is cleaned before Compute() # @return True or False # @ingroup l2_construct - def Compute(self, geom=0): + def Compute(self, geom=0, discardModifs=False): if geom == 0 or not isinstance(geom, geompyDC.GEOM._objref_GEOM_Object): if self.geom == 0: geom = self.mesh.GetShapeToMesh() @@ -1172,6 +1178,8 @@ class Mesh: geom = self.geom ok = False try: + if discardModifs and self.mesh.HasModificationsToDiscard(): # issue 0020693 + self.mesh.Clear() ok = self.smeshpyD.Compute(self.mesh, geom) except SALOME.SALOME_Exception, ex: print "Mesh computation failed, exception caught:" @@ -1181,8 +1189,64 @@ 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 + if err.subShapeID == 1: + shapeText = ' on "%s"' % mainSO.GetName() + 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" @@ -1208,9 +1272,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 != "": @@ -1920,6 +1982,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() @@ -2043,6 +2111,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): @@ -2285,6 +2363,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 @@ -2417,6 +2500,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 @@ -3271,6 +3365,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) @@ -3495,7 +3634,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 @@ -4474,6 +4613,8 @@ class Mesh_Quadrangle(Mesh_Algorithm): # 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): 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 463d1fd27..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. 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 c10d17e66..0312e1f78 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 97a3c4b7a..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_ 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 569b05451..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 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 a3b2707aa..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 diff --git a/src/StdMeshers/StdMeshers_Distribution.hxx b/src/StdMeshers/StdMeshers_Distribution.hxx index 5d31a9128..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 diff --git a/src/StdMeshers/StdMeshers_FaceSide.cxx b/src/StdMeshers/StdMeshers_FaceSide.cxx index 55ff0aa3b..c0cef600d 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" @@ -49,6 +50,9 @@ #include #include +#include +#include + #include #include "utilities.h" @@ -88,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; @@ -100,7 +107,6 @@ 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(); @@ -108,9 +114,9 @@ StdMeshers_FaceSide::StdMeshers_FaceSide(const TopoDS_Face& theFace, 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(); @@ -131,13 +137,34 @@ StdMeshers_FaceSide::StdMeshers_FaceSide(const TopoDS_Face& theFace, myNbPonits += nbN; myNbSegments += sm->NbElements(); } + // 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; + + // 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, ¶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( VV[1], meshDS ); if ( !node ) { @@ -235,31 +305,6 @@ const vector& StdMeshers_FaceSide::GetUVPtStruct(bool isXConst, } 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().get()); - 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(); @@ -491,6 +539,7 @@ BRepAdaptor_CompCurve* StdMeshers_FaceSide::GetCurve3d() const return new BRepAdaptor_CompCurve( aWire ); } + //================================================================================ /*! * \brief Return 2D point by normalized parameter @@ -505,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; } diff --git a/src/StdMeshers/StdMeshers_FaceSide.hxx b/src/StdMeshers/StdMeshers_FaceSide.hxx index be410cf4f..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 { @@ -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; diff --git a/src/StdMeshers/StdMeshers_FixedPoints1D.cxx b/src/StdMeshers/StdMeshers_FixedPoints1D.cxx index c3d60f4c4..2d5586c0d 100644 --- a/src/StdMeshers/StdMeshers_FixedPoints1D.cxx +++ b/src/StdMeshers/StdMeshers_FixedPoints1D.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_FixedPoints1D.cxx // Author : Damien COQUERET, OCC 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 42b5488ec..7745eee72 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; } //============================================================================= @@ -862,10 +866,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 c892ac729..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); 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 b10f3902c..46f7b9e39 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 @@ -655,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; } diff --git a/src/StdMeshers/StdMeshers_MEFISTO_2D.hxx b/src/StdMeshers/StdMeshers_MEFISTO_2D.hxx index ba200048d..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 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 7ae2e3a54..bdab94ece 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 e764b00b3..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 diff --git a/src/StdMeshers/StdMeshers_Prism_3D.cxx b/src/StdMeshers/StdMeshers_Prism_3D.cxx index ef99f7586..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 @@ -213,6 +214,94 @@ namespace { 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(); + } } //======================================================================= @@ -319,7 +408,7 @@ 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; @@ -762,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; @@ -1077,7 +1155,7 @@ bool StdMeshers_PrismAsBlock::Init(SMESH_MesherHelper* helper, } // ---------------------------------------------------------------------- - // Analyse faces mesh and topology: choose the bottom submesh. + // Analyse mesh and topology of faces: choose the bottom submesh. // If there are not quadrangle geom faces, they are top and bottom ones. // Not quadrangle geom faces must be only on top and bottom. // ---------------------------------------------------------------------- @@ -1090,14 +1168,24 @@ bool StdMeshers_PrismAsBlock::Init(SMESH_MesherHelper* helper, bool hasNotQuad = ( nbNotQuad || nbNotQuadMeshed ); // detect bad cases - if ( nbNotQuad > 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: ") + <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 40568111a..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 @@ -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() )); } 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 05a11f7d7..e234d0a91 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; @@ -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 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 d0441576d..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 @@ -40,10 +38,15 @@ #include #include +#include + using namespace std; 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; + //================================================================================ /*! * \brief Destructor @@ -84,7 +87,7 @@ 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.XYZ() + aDir.XYZ() * shift; @@ -378,11 +381,9 @@ int StdMeshers_QuadToTriaAdaptor::Preparation(const SMDS_MeshElement* face if ( volumes[0] ) { // get volume gc - gp_XYZ volGC(0,0,0); SMDS_ElemIteratorPtr nodeIt = volumes[0]->nodesIterator(); - while ( nodeIt->more() ) - volGC += SMESH_MeshEditor::TNodeXYZ( nodeIt->next() ); - volGC /= volumes[0]->NbNodes(); + 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] ); @@ -496,6 +497,7 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh, const TopoDS_Shape 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 ); myPyram2Trias.insert(make_pair(aPyram, & triaList)); @@ -649,7 +651,8 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh) const SMDS_MeshElement* F = *itF; if(F==face) continue; Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt; - for ( i = 0; i < 4; ++i ) + int nbN = F->NbNodes() / ( 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 ) @@ -714,10 +717,6 @@ bool StdMeshers_QuadToTriaAdaptor::Compute2ndPart(SMESH_Mesh& aMesh) if(myPyram2Trias.empty()) return true; - // sdt-like iterator used to get coordinates of nodes of mesh element - typedef SMDS_StdIterator< SMESH_MeshEditor::TNodeXYZ, SMDS_ElemIteratorPtr > TXyzIterator; - TXyzIterator xyzEnd; - int k = 0; // for each pyramid store list of merged pyramids with their faces @@ -732,7 +731,7 @@ bool StdMeshers_QuadToTriaAdaptor::Compute2ndPart(SMESH_Mesh& aMesh) TPyram2Merged::iterator pMergesI = MergesInfo.find( PrmI ); TXyzIterator xyzIt( PrmI->nodesIterator() ); - vector PsI( xyzIt, xyzEnd ); + vector PsI( xyzIt, TXyzIterator() ); // compare PrmI with all the rest pyramids bool NeedMove = false; @@ -748,7 +747,7 @@ bool StdMeshers_QuadToTriaAdaptor::Compute2ndPart(SMESH_Mesh& aMesh) continue; // already merged xyzIt = TXyzIterator( PrmJ->nodesIterator() ); - vector PsJ( xyzIt, xyzEnd ); + vector PsJ( xyzIt, TXyzIterator() ); bool hasInt = false; gp_Pnt Pint; diff --git a/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.hxx b/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.hxx index 841c3b625..79017c20d 100644 --- a/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.hxx +++ b/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.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_QuadToTriaAdaptor.hxx // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_QuadrangleParams.cxx b/src/StdMeshers/StdMeshers_QuadrangleParams.cxx index 0169fc354..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 diff --git a/src/StdMeshers/StdMeshers_QuadrangleParams.hxx b/src/StdMeshers/StdMeshers_QuadrangleParams.hxx index 47cfc7468..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 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 1c8899d60..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 diff --git a/src/StdMeshers/StdMeshers_Quadrangle_2D.hxx b/src/StdMeshers/StdMeshers_Quadrangle_2D.hxx index b4257bb40..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 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 f2e32397f..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 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 6911ee752..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 diff --git a/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.hxx b/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.hxx index 419ef52ef..3764c746b 100644 --- a/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.hxx +++ b/src/StdMeshers/StdMeshers_RadialQuadrangle_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_RadialQuadrangle_1D2D.hxx // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_Regular_1D.cxx b/src/StdMeshers/StdMeshers_Regular_1D.cxx index f4fa4a18e..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; } diff --git a/src/StdMeshers/StdMeshers_Regular_1D.hxx b/src/StdMeshers/StdMeshers_Regular_1D.hxx index 9934620c3..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_ diff --git a/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.cxx b/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.cxx index 3d86aaaad..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 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 060afd2e1..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 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 a45ccbd1f..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 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 18659e787..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 @@ -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 ); @@ -176,18 +178,22 @@ createEditor( QWidget* parent, const QStyleOptionViewItem& /*option*/, const QModelIndex& index ) const { - QDoubleSpinBox* sb = new QDoubleSpinBox( parent ); - sb->setFrame(false); - sb->setMinimum( index.column() == StdMeshersGUI_DistrTableFrame::ArgColumn ? + 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() ) ); - sb->setMaximum( index.column() == StdMeshersGUI_DistrTableFrame::ArgColumn ? + myTable->funcMinimum( index.row() ); + double aMax = index.column() == StdMeshersGUI_DistrTableFrame::ArgColumn ? myTable->argMaximum( index.row() ) : - myTable->funcMaximum( index.row() ) ); - sb->setSingleStep( index.column() == StdMeshersGUI_DistrTableFrame::ArgColumn ? + myTable->funcMaximum( index.row() ); + double aStep = index.column() == StdMeshersGUI_DistrTableFrame::ArgColumn ? myTable->argStep( index.row() ) : - myTable->funcStep( index.row() ) ); - myTable->setEditor( index.row(), index.column(), sb ); + myTable->funcStep( index.row() ); + sb->RangeStepAndValidator( aMin, aMax, aStep, "parametric_precision" ); + sb->setFrame(false); + + 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 ); @@ -210,7 +216,7 @@ StdMeshersGUI_DistrTableFrame::SpinBoxDelegate:: setModelData( QWidget* editor, QAbstractItemModel* model, const QModelIndex& index ) const { - QDoubleSpinBox* sb = static_cast(editor); + SMESHGUI_SpinBox* sb = static_cast(editor); model->setData( index, QString::number( sb->value() ), Qt::DisplayRole ); } @@ -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; 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 2ff99486f..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 @@ -81,7 +80,8 @@ QWidget* StdMeshersGUI_FixedPointsParamWdg::LineDelegate::createEditor( QWidget* { 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; @@ -94,8 +94,8 @@ void StdMeshersGUI_FixedPointsParamWdg::LineDelegate::setModelData( QWidget* edi 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() ) ); 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 7265cc88f..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 diff --git a/src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.h b/src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.h index 0ca0de360..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. // 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 fd9413046..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,12 +1000,14 @@ 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; - aDirectionWidget->SetListOfIDs( aVec ); + 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->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 26527d85b..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() ); + 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 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,7 +295,7 @@ void StdMeshersGUI_SubShapeSelectorWdg::onAdd() } onListSelectionChanged(); myListWidget->blockSignals( false ); - myAddButton->setEnabled( myListOfIDs.size() < myMaxSize ); + myAddButton->setEnabled( myMaxSize == -1 || myListOfIDs.size() < myMaxSize ); } //================================================================================= @@ -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(); 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 @@

    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 38ef6b327..8e789536f 100644 --- a/doc/salome/gui/SMESH/input/2d_meshing_hypo.doc +++ b/doc/salome/gui/SMESH/input/2d_meshing_hypo.doc @@ -66,7 +66,9 @@ 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